Исправление старого кода
источник https://t.me/itumor/11566
источник https://t.me/itumor/11566
В этом посте мы обсудим несколько увлекательных моментов, которые я узнал в процессе своей работы.
1. Как используется встраивание (embedding) в Go?
В Go директива //go:embed используется для встраивания файлов и папок в бинарный файл Go на этапе компиляции. Эта функция улучшает безопасность, производительность и простоту кода за счёт возможности прямого импорта файлов без использования функций операционной системы.
Пример:
Эта директива указывает компилятору Go встроить содержимое каталога frontend/dist в бинарный файл. Префикс all: используется для включения не только файлов из каталога, но и всех вложенных каталогов и их файлов рекурсивно.
var assets embed.FS Это объявляет переменную с именем assets типа embed.FS, который является интерфейсом файловой системы, предоставляемым пакетом embed. Эта переменная будет предоставлять доступ к встроенным файлам во время выполнения.
Преимущество заключается в том, что импортирование определённых файлов напрямую и использование embed вместо функций операционной системы повышает безопасность, производительность и простоту использования.
Можно попробовать использовать это для создания настольного приложения и загрузить все данные, связанные с интерфейсом, в сервер Go.
2. Какая польза от оператора Select в Go?
Оператор select позволяет горутине ожидать выполнения нескольких операций взаимодействия.
Ну, это что-то, что вы могли бы увидеть на https://go.dev/tour/concurrency/5, но в чём здесь польза?
Давайте рассмотрим пример, где мы записываем данные в конечное соединение. В случае закрытия приложения вы не хотите писать в закрытое конечное соединение.
Код не обязательно “останавливается” на ctx.Done(). Оператор select ожидает, когда один из случаев станет готовым. Если контекст отменен (или его срок действия истекает), до того как будет получена ошибка или до того как операция записи будет подтверждена как успешная, тогда случай ctx.Done() будет выполняться первым, что приведет к закрытию destConn и раннему завершению функции и её возврату.
Если контекст не завершён и произошла ошибка, то выполнится случай err = <-errChan1, который залогирует ошибку и вернёт её.
Если контекст не завершён и ошибка не произошла, а операция записи выполнилась успешно первой, то выполнится последний случай, позволяя функции продолжить выполнение за пределами оператора select.
3. Как реализовать интерфейсы в Go?
В Go интерфейс представляет собой тип, который определяет набор сигнатур методов (названия методов, параметры и типы возвращаемых значений), но не реализует сами методы. Это способ определения поведения как набора действий. Тип реализует интерфейс, реализуя все методы, объявленные в интерфейсе.
Реализуйте следующий интерфейс:
Приведенный выше фрагмент кода демонстрирует контракт для получения данных о студенте. Любой тип, который реализует этот интерфейс, может предоставлять данные о студенте, что позволяет легко заменять различные источники данных или реализации без изменения остального кода. Это может быть особенно полезно при работе с различными системами баз данных и внешними службами или при создании заглушек данных для тестирования.
Какова практическая польза от этого? Абстракция, полиморфизм, гибкость и еще много чего.
4. Как init работает в Go?
В Go функция init является специальной функцией, которая автоматически выполняется при инициализации пакета. В каждом пакете может быть одна или несколько функций init, и они выполняются в порядке их появления в файле. Функция init используется для выполнения задач настройки, которые необходимо выполнить перед использованием пакета, таких как инициализация переменных или выполнение другой инициализационной логики.
Какова выгода от этого? Вам не нужно инициализировать функцию init вручную; вам просто нужно импортировать функцию, и значения будут извлечены и назначены.
5. Как работают несколько отложенных вызовов (deferrals)?
Отложенные вызовы работают как стек, что означает “первым вошел, последним вышел” (LIFO). Так что, если кто-то напишет что-то вроде этого:
Таким образом, когда эта функция завершится, сначала будет выполнена функция printCon, затем cleanCon, и, наконец, closeCon.
6. Как использовать слушатель событий в Go?
В приведенном ниже фрагменте кода на Go мы имеем мощный шаблон обработки событий, который облегчает создание отзывчивых приложений.
Регистрация события: runtime.EventsOn – это вызов функции, который регистрирует слушатель событий для события с именем “event:check:health”. Когда это событие срабатывает, вызывается функция (замыкание), предоставленная вторым аргументом.
Излучение события: затем используется runtime.EventsEmit для отправки события с именем responseEventName. Вместе с именем в качестве данных события передается карта, содержащая статус успешности и текущую версию приложения (полученную через config.GetConfig().Version).
В заключение, данный фрагмент кода устанавливает слушатель событий, который при срабатывании события “event:check:health” отвечает другим событием, указывающим на успешность и версию приложения. Это элегантный пример того, как Go может кратко обрабатывать сложные событийно-ориентированные рабочие процессы.
Взято из репозитория Slashbase.
7. Как обрабатывать панику в Go?
В Go паника (panic) – это встроенная функция, которая прекращает обычный поток управления и начинает паниковать. Когда вызывается функция panic, выполнение текущей функции немедленно останавливается, и управление начинает разворачивать стек, выполняя при этом все отложенные функции.
Если паника достигает вершины стека вызовов горутины без восстановления, программа завершается с ненулевым кодом статуса и, как правило, выводит сообщение о панике и стек вызовов в стандартный поток ошибок.
Для обработки паники в Go предоставляется функция recover, которая может остановить последовательность паники и вернуть значение, переданное функции panic. Она полезна только внутри операторов defer, потому что после начала паники это единственный способ вернуть контроль над программой.
Вы когда-нибудь задумывались, что скрывается за впечатляющими возможностями современных нейросетей? Как ИИ учится понимать человеческую речь, распознавать объекты на изображениях и даже генерировать уникальный контент? Ключ к этим достижениям лежит в работе с данными. Именно качественные и правильно подготовленные данные позволяют нейросетям творить чудеса. Но какими навыками нужно обладать, чтобы приручить этого «высокотехнологичного зверя»? Давайте разбираться вместе!
Фундамент любой нейросети – это математика и статистика. Чтобы понимать, как работают алгоритмы машинного обучения, необходимо освоить линейную алгебру, теорию вероятностей и математический анализ. Эти знания помогут вам разобраться в структуре нейронных сетей, функциях активации и методах оптимизации.
Не стоит пугаться, если в школе у вас были сложные отношения с «царицей наук». Сегодня существует множество онлайн-курсов и учебников, которые помогут заполнить пробелы и подтянуть математические навыки до нужного уровня.
Следующий важный навык – умение программировать. Нейросети создаются с помощью специальных фреймворков и библиотек, написанных на таких языках, как Python, R или Java. Чтобы эффективно работать с ними, нужно освоить хотя бы один из этих языков.
Python – безусловный фаворит в мире анализа данных и машинного обучения. Он отличается простым синтаксисом, богатой экосистемой библиотек и активным сообществом разработчиков. Начать изучение Python можно с официальной документации или бесплатных онлайн-курсов.
Машинное обучение – это область ИИ, которая позволяет компьютерам учиться на данных без явного программирования. Существует три основных типа машинного обучения: обучение с учителем, без учителя и с подкреплением. Каждый из них применяется для решения разных задач: классификации, регрессии, кластеризации, генерации и т. д.
Чтобы стать специалистом по машинному обучению, нужно разобраться в теории и получить практический опыт. Онлайн-курсы от ведущих университетов и платформ – отличный способ получить структурированные знания и выполнить реальные проекты для портфолио.
Работа с нейросетями немыслима без использования специальных фреймворков и библиотек. Они предоставляют готовые блоки для построения и обучения моделей, упрощая и ускоряя разработку. Самые популярные из них – TensorFlow, PyTorch и Keras.
Чтобы освоить эти инструменты, не нужно изобретать велосипед. Достаточно пройти tutorials, почитать документацию и поэкспериментировать с примерами кода. А затем – практиковаться, практиковаться и еще раз практиковаться!
Создание нейросетей – это настоящее искусство. Недостаточно просто взять готовую модель и обучить ее на данных. Нужно проявить креативность, чтобы придумать архитектуру сети, подобрать гиперпараметры и сделать тысячу других важных вещей.
Кроме того, важны аналитические способности, чтобы оценивать качество моделей, выявлять проблемы и находить способы их решения. Приходится ставить эксперименты, сравнивать результаты и делать выводы. Здесь пригодится умение мыслить критически и системно.
Рассмотрим далее, как именно программисты работают с данными, какие понадобятся практические навыки и теоретическая база.
Чтобы обучить нейросеть, нужны данные – много качественных данных. Поэтому первый навык, который необходим для работы с ИИ – это умение собирать, очищать и подготавливать данные. Это включает в себя:
Сбор данных из различных источников (веб-скрапинг, API, базы данных);
Очистку данных от шумов, пропусков и аномалий;
Разметку данных для обучения с учителем;
Отбор информативных признаков и удаление лишних;
Масштабирование и нормализацию данных;
Разбиение данных на обучающую, валидационную и тестовую выборки.
Вселенная ИИ немыслима без мощных инструментов и библиотек, которые упрощают создание и обучение нейросетей:
Python – самый популярный язык программирования для анализа данных и машинного обучения. Он славится простым синтаксисом и богатой экосистемой библиотек.
Библиотеки NumPy, Pandas, Matplotlib и Scikit-learn – незаменимые помощники для работы с данными, их визуализации и применения базовых алгоритмов машинного обучения.
Фреймворки TensorFlow, PyTorch и Keras содержат готовые блоки для построения и обучения нейронных сетей.
Облачные сервисы вроде Google Colab и Amazon Web Services предоставляют вычислительные ресурсы для работы с большими моделями и массивами данных.
Практика невозможна без теории. Чтобы стать настоящим мастером нейросетей, недостаточно просто натаскать модель на данных. Нужно понимать математические основы их работы:
Линейная алгебра – основа матричных вычислений, на которых строятся нейросети
Математический анализ – ключ к пониманию градиентного спуска и методов оптимизации
Теория вероятностей и статистика – фундамент машинного обучения
Алгоритмы машинного обучения – классификация, регрессия, кластеризация и другие
Архитектуры нейронных сетей – многослойный перцептрон, сверточные сети, рекуррентные сети, трансформеры и прочие
Мир машинного обучения огромен и увлекателен. Чтобы покорить его вершины, можно пойти разными путями:
Онлайн-курсы от ведущих университетов и образовательных платформ – структурированные знания, практические задания, проекты для портфолио.
Книги и научные статьи – источник глубоких теоретических знаний и передовых идей.
Соревнования на платформах Kaggle и DrivenData – возможность попрактиковаться на реальных данных и сравнить свои результаты с другими участниками.
Личные проекты – лучший способ закрепить знания и создать что-то свое, уникальное.
Хотите окунуться в мир ИИ без лишней головной боли? Обратите внимание на онлайн-сервис Creator Project. Это уникальная платформа, которая открывает доступ к передовым моделям нейросетей прямо из браузера:
Чат с легендарной GPT 4 Turbo – мощной языковой моделью, которая генерирует осмысленные тексты на любые темы
Создание потрясающих изображений с помощью DALL-E 3 – нейросети, которая превращает текстовые описания в картинки
Автоматическая транскрипция аудио в текст – удобный инструмент для работы с записями лекций, интервью и подкастов
Коллекция готовых шаблонов для решения популярных задач с помощью ИИ – от генерации идей до анализа данных.
Креатор Проджект – это возможность прикоснуться к магии нейросетей без углубления в дебри математики и программирования. Достаточно зарегистрироваться, выбрать нужный инструмент и начать творить!
Работа с данными в нейросетях требует сочетания разных навыков: математики, программирования, машинного обучения и инженерии данных. Это увлекательная, но сложная область, которая постоянно развивается. Чтобы стать настоящим профессионалом, нужно непрерывно учиться, экспериментировать и создавать собственные проекты. Но даже новичку под силу прикоснуться к магии ИИ благодаря таким сервисам, как Creator Project. Главное – начать этот путь и не останавливаться на достигнутом!
Представьте, что у вас в руках оказалась волшебная палочка, способная исполнить любое ваше желание. Хотите создать уникальную картину или написать гениальную симфонию? А может, снять голливудский блокбастер или сочинить бестселлер? Звучит фантастически, не правда ли? Но что, если я скажу вам, что эта магия стала реальностью благодаря нейросетям?
Фото: freepik.com
ИИ уже давно перестал быть чем-то из области фантастики. Сегодня нейронные сети активно используются в самых разных сферах нашей жизни, помогая людям решать сложные задачи и воплощать в жизнь самые смелые идеи.
Благодаря машинному обучению, нейросети способны анализировать огромные массивы данных, находить закономерности и генерировать контент, который порой сложно отличить от созданного человеком. Это открывает невероятные возможности для творчества, бизнеса, науки и образования.
В этой статье рассмотрим лучшие нейросети, благодаря которым можно генерировать текст, изображения, писать песни и генерировать видео.
Естественно начать с самой известной нейросети – ChatGPT. Изначально она создавалась только для работы с текстом. С ее помощью можно писать связные и грамотные тексты на заданную тему, отвечать на вопросы, переводить, суммаризировать текст, делать глубокий рерайт и т. д. Благодаря стараниям разработчиков она стала мультимодальной: можно загрузить картинку, и нейросеть опишет, что изображено на картинке. Можно задать текстовый промпт и интегрированная в ChatGPT DALL-E 3 нарисует для вас изображение. «Чат ГПТ» функционирует в двух версиях – бесплатной GPT 3.5 и платной GPT 4 Turbo. В платной версии много разных плагинов, которые обогащают функционал ChatGPT. Эти плагины позволяют искать информацию в интернете, обрабатывать pdf-файлы, конкретные ссылки в интернете и т. д. Стоимость платной версии – 20 долларов в месяц.
Claude.Ai – еще один мощный инструмент для создания текстового контента. Эта нейросеть отличается высокой скоростью работы и способностью генерировать тексты в разных стилях и тональностях. Качество текстов выходит намного лучше, чем в ChatGPT. На момент написания статьи нейросетью все еще можно пользоваться бесплатно – вам предоставят в пользование модель Claude Sonnet. За пользование моделью более высокого уровня – Claude Opus взымается плата – 20 долларов в месяц. Еще одна модель, Claude Haiku – на подходе.
Notion.AI – это нейросеть, интегрированная в популярную систему для управления знаниями Notion. С ее помощью можно создавать статьи, описания продуктов, письма и многое другое прямо внутри приложения. Бесплатно вам будет доступно ограниченное количество запросов, затем нужно будет заплатить 9,50 евро в месяц.
Yandex.GPT – нейросеть от российского IT-гиганта Яндекс. Она умеет генерировать тексты на русском языке, отвечать на вопросы и даже вести диалог с пользователем. Абсолютно бесплатная, доступна на «главной» Яндекса, интегрирована в «Алису» и «Яндекс Браузер».
Perplexity – это онлайн сервис, который использует собственную ИИ для поиска информации и генерации текстов. За 20 долларов в месяц вы получите доступ к GPT 4 Turbo, Claude Opus/Sonnet и Mistral. Сервис часто позиционируется как альтернативный поисковик. Генерированный текст будет иметь ссылки-источники, перейдя по которым можно проверить информацию.
Перейдем теперь к обзору нейросетей, предназначенных для генерации картинок. Рассмотрим самые популярные – Midjourney и Stable Diffusion.
Midjourney – одна из самых впечатляющих нейросетей для создания изображений по текстовому описанию. С ее помощью можно генерировать невероятно реалистичные и детализированные картины в разных стилях – от фотореализма до сюрреализма. Midjourney предлагает самые разные тарифные планы, от 10 до 120 долларов.
Stable Diffusion – еще один мощный инструмент для работы с графикой. Эта нейросеть способна не только создавать изображения с нуля, но и модифицировать существующие картинки, добавляя или удаляя объекты, меняя стиль и цветовую гамму. Для генерации картинок нужны кредиты. Стоимость 1000 кредитов – 10 долларов.
Хотите почувствовать себя композитором или аранжировщиком? Тогда вам стоит обратить внимание на нейросеть Suno. Достаточно описать желаемый трек текстом или даже напеть мелодию, и ИИ сгенерирует полноценную песню в заданном стиле – от классики до хип-хопа. В бесплатной версии можно генерировать 10 песен в день, оплатив 8 долларов в месяц, вы сможете сгенерировать 500 песен в месяц, а за 24 доллара у вас появляется возможность генерации 2000 песен.
Haiper – это революционная разработка, которая позволяет создавать видео по текстовому описанию. Просто опишите сюжет, персонажей, локации – и нейросеть сгенерирует полноценный видеоролик с графикой кинематографического качества.
В окончании статьи поговорим о Creator Project – это сервис, который объединяет в себе возможности нейросетей по генерации текста и графики. Здесь можно создавать тексты, изображения, используя единый интерфейс и подписку.
Одна из главных фишек Creator Project – это доступ к самым мощным языковым моделям от OpenAI, включая легендарную GPT-4. Помимо работы с текстом, Creator Project позволяет создавать уникальные изображения с помощью нейросети DALL-E 3. Достаточно описать желаемую картинку словами – и нейросеть нарисует ее за считанные секунды в фотореалистичном качестве.
Сгенерированные изображения можно использовать для иллюстрирования статей и постов в соцсетях, создания обложек, баннеров, презентаций и любой другой графики. Причем делать это можно абсолютно легально, ведь все права на созданный контент будут принадлежать вам.
Еще одна полезная функция Creator Project – это автоматическая транскрибация аудио. Нейросеть способна распознавать речь на русском и английском языках с точностью, сопоставимой с человеческой, и конвертировать ее в текст.
Сервисом могут пользоваться и программисты – для автоматизации некоторых рутинных стоящих перед ними задач. Вот программная реализация известного алгоритма – Решето Эратосфена.
Главное преимущество Creator Project перед другими сервисами на базе ИИ – это огромная библиотека готовых шаблонов и специализированных ботов для решения конкретных задач. На платформе можно найти более сотни заготовок для создания SEO-текстов, сценариев продаж, резюме, бизнес-планов и многого другого.
Кроме того, Creator Project предлагает доступ к узкоспециализированным ботам, которые прошли дополнительное обучение в таких областях, как маркетинг, финансы, юриспруденция и IT.
Можно например, попросить свой гороскоп на день, и нейросеть предоставит его.
Пообщавшись с такими ботами, можно получить профессиональную консультацию по интересующему вопросу без необходимости платить за услуги экспертов.
Сервис отлично подойдет тем, кто хочет получить максимум возможностей на одной площадке.
Нейросети открывают перед нами невероятные перспективы для творчества и самовыражения. Теперь каждый может стать писателем, художником, композитором или режиссером, не обладая специальными навыками и дорогостоящим оборудованием. Достаточно лишь немного фантазии и желания экспериментировать. Конечно, ИИ пока не может полностью заменить человека, но он определенно способен стать незаменимым помощником и вдохновителем для всех, кто хочет создавать что-то новое и удивительное.
Восстановление «Вояджера-1» продолжается
Находящийся в межзвездном пространстве аппарат «Вояджер-1» продемонстрировал некоторые признаки «выздоровления». Об этом сообщила руководитель проекта Сюзанна Додд.
Проблемы с «Вояджером-1» начались в ноябре 2023 года, когда вместо собираемых данных он начал передавать на Землю повторяющийся шаблон из единиц и нулей, словно его заклинило. Специалисты миссии пришли к выводу, что все дело в сбое работы системы полетных данных (FDS). Они перезагрузили компьютер аппарата, но это не помогло.
По всей видимости, все дело в повреждении битовой структуры в компьютере FDS. Проблема заключается в том, что специалисты не знаю, где именно искать это повреждение.
Ситуация дополнительно усугублена возрастом аппарата. «Вояджер-1» был запущен в 1977 году. Тогда это была флагманская миссия NASA, над которой на полную ставку работали 950 сотрудников Лаборатории реактивного движения. По прошествии 46 лет штат миссии сократился до 12 человек. В своей работе им фактически приходится выполнять роль техноархеологов. Они обращаются к документам полувековой давности, написанными людьми, большинство из которых уже умерло, а остальные давно находятся на пенсии и пытаются понять логику, которой те руководствовались, когда писали программный код.
На протяжении нескольких месяцев специалисты миссии не могли похвастаться особым прогрессом в деле спасения аппарата. Но недавно «Вояджер-1» начал демонстрировать признаки «выздоровления». Зонд наконец-то стал передавать знакомые последовательности из единиц и нулей. По словам Сюзанн Додд они не совсем такие, как ожидалось. Но, по крайней мере, это показывает, что FDS хотя бы частично работает.
Но даже если команда и находится на верном пути, ремонт займет еще очень много времени. Расстояние является еще одним весьма существенным фактором. Отправляемым с Земли командам требуется 22,5 часа, чтобы достичь «Вояджера-1». Еще столько же требуется на получение ответа. В настоящее время команда отправляет команды «Вояджеру-1» примерно раз в неделю, что еще больше замедляет ее работу. Но специалисты надеются, что все же сумеют решить проблему и вернуть межзвездного путешественника в строй.