Обновить
2
0
Садовников Антон Петрович@Siddthartha

Developer

Отправить сообщение

Делаем вебсокеты на PHP с нуля

Время на прочтение18 мин
Охват и читатели320K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →

Алгоритм, сделавший ChatGPT таким «человечным» — Reinforcement Learning from Human Feedback

Время на прочтение8 мин
Охват и читатели23K

ChatGPT генерирует разнообразный и привлекательный для человека текст. Но что делает текст «хорошим»? Это субъективно и зависит от контекста. Например, если вы попросите сочинить историю, нужен творческий подход. Если вы запрашиваете информацию, то хотите, чтобы она была правдивой. А если вы просите написать код, то ожидаете, что он будет исполняемым.

Вы наверняка слышали о том, что OpenAI привлекали сотрудников из Африки для помощи в разметке токсичности их ассистента. Менее известен факт найма реальных разработчиков, чтобы подготовить данные с пояснениями к коду на человечском языке.

Именно данные с фидбеком от людей позволили дообучить их языковую модель и сделать продукт таким «человечным».

Разберем алгоритм, который позволяет согласовать модель машинного обучения со сложными человеческими ценностями.

Читать далее

Docker и сети

Время на прочтение5 мин
Охват и читатели97K

Сейчас без преувеличения можно сказать, что контейнеризация прочно вошла в нашу жизнь. Контейнеры используются в различных программных продуктах, начиная от микросервисов и заканчивая решениями ИБ, такими как песочницы. Однако, контейнеры не были бы столь удобным инструментом построения распределенной архитектуры, если бы они не могли взаимодействовать между собой, а также обмениваться данными с внешними сетевыми ресурсами. В этой статье мы подробно рассмотрим механизмы, позволяющие контейнерам работать с сетями.  

Читать далее

Воссоздание существующего фрагмента улицы в 3D

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели8.7K

Мне нужен был проект-визитка. Такой, чтоб в полной мере показал мои навыки как 3д художника. И я выбрал воссоздать фрагмент старейшей улицы Бремена полностью своими силами.

Меня зовут Максим и сейчас я опишу, как это сделал.

Для начала я нашел старый план города и обрисовал нужную мне часть в векторе.

Читать далее

Лю Цысинь и малая форма

Время на прочтение4 мин
Охват и читатели8.1K

Почти всем поклонникам современной фантастики так или иначе известно имя Лю Цысиня, китайского писателя, автора трилогии «Воспоминания о прошлом Земли» (которую еще иногда по названию первой книги именуют «Задача трех тел»). Но сегодня речь пойдет не о том, чем примечательна та самая трилогия и какую популярность она принесла автору. Вместо хотелось бы поговорить о двух сборниках малой формы Лю Цысиня, вышедших на русском языке: «Блуждающая Земля» и «Удержать небо». Есть впечатление, что в свои рассказы и повести Лю Цысинь закладывает идеи, которых другим авторам хватило бы на целый роман (как минимум). При этом в них есть все необходимые элементы структуры, взлеты и падения, тот самый поворот, после которого ничего не будет прежним. И, разумеется, большой интерес к точным наукам, философии и поиску с помощью этих инструментов места человека во Вселенной.

Читать далее

Segment Anything: создание первой базисной модели для сегментации изображений

Время на прочтение9 мин
Охват и читатели7.8K

Сегментация, то есть распознавание пикселей изображения, принадлежащих объекту — базовая задача компьютерного зрения, используемая в широком спектре применений, от анализа научных снимков до редактирования фотографий. Однако для создания точной модели сегментации под конкретные задачи обычно требуется высокоспециализированный труд технических экспертов, имеющих доступ к инфраструктуре обучения ИИ и большим объёмам тщательно аннотированных данных, относящихся к предметной области.

Наша лаборатория Meta AI* стремится сделать сегментацию более доступной, основав проект Segment Anything: новую задачу, датасет и модель для сегментации изображений (подробности см. в нашей исследовательской статье). Мы публикуем нашу Segment Anything Model (SAM) и датасет масок Segment Anything 1-Billion mask dataset (SA-1B) (крупнейший в мире датасет сегментации), чтобы их можно было использовать во множестве разных областей и стимулировать дальнейшие исследования базисных моделей компьютерного зрения. Мы открываем доступ к датасету SA-1B, позволяя использовать его в исследовательских целях; модель Segment Anything Model доступна по открытой лицензии (Apache 2.0). Вы можете протестировать демо SAM со своими собственными изображениями.

* Принадлежит корпорации Meta Platforms, которая признана экстремистской организацией, её деятельность в России запрещена.
Читать дальше →

Создаём REST-сервис на Rust. Часть 4: переходим к REST API

Время на прочтение9 мин
Охват и читатели31K
В прошлый раз мы реализовали обновление БД.

Осталось сделать только REST-интерфейс. Давайте займёмся этим.

Введение


Эта часть будет, пожалуй, самой сложной — мы близко узнаем типажи Send и Sync, а также тонкости работы замыканий и времён жизни. По-другому я бы озаглавил её «зануда исследует, почему обязательно нужно клонировать данные». Она полезна тем, что затрагивает тонкие места Rust и показывает причины некоторых неочевидных ошибок. Так что если хотите разобраться досконально — добро пожаловать.

Также хочу отметить: если вам что-то непонятно относительно приведённого кода или сами объяснения кажутся недостаточно ясными, не стесняйтесь писать об этом в комментариях. Автор потратил не минуту и не полчаса, пытаясь понять, почему код работает именно в том виде, в котором он написан, и вынужден был не раз сходить в IRC и на форум за разъяснениями.
Читать дальше →

Пишем нейросеть для сегментации снимков со спутника

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели12K

Прочитав несколько известных статей по сегментации спутниковых снимков земли, я решил попробовать создать и обучить свою модель нейросети для этой задачи. И конечно, в процессе возникало много вопросов, своими ответами на которые я решил поделиться в рамках этого туториала. Поделиться так подробно и просто, как это было бы понятно таким новичкам, как я.

Читать далее

Перевод предобученной модели Keras на матричные вычисления

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.9K

По заказу одного из проектов мне потребовалось сделать агрегатор новостей в Телеграм. После долгих поисков реализации (о них ниже в статье) была создана нейронная сеть на базе Keras, которая имела высокое качество, но оказалось, что Keras нельзя было установить на инфраструктуре (просто не было соответствующей сборки) и мне пришлось решать вопрос, как перевести обученную модель в Keras на реализацию, которая не требует установленного Keras.

Эта статья о том, как я переписал обученную в Keras сеть на работу с матричными операциями в Numpy. Заодно это помогло мне "заглянуть под капот" нейронной сети.

Читать далее

Две беды: дороги и полнота данных. Считаем протяженность дорог родины по данным OpenStreetMap

Уровень сложностиСредний
Время на прочтение127 мин
Охват и читатели2.9K

Зачем же обычному человеку информация из прошлой публикации "Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap"? Если надоело в пятницу читать мемасики и лайкать фотографии котиков в соцсетях, то можно задаться глобальными проблемами аналитики и посчитать протяженность дорог России. Ведь не за горами времена автомобилей с автопилотами... Это конечно не 42, как ответ на главный вопрос жизни, вселенной и всего такого, но результаты будут тоже достаточно лаконичными.

Для этого нам понадобится ноутбук или обычный десктоп, несколько десятков гигабайт свободного места, установленный docker, JVM 11+, maven и мой проект openstreetmap_h3. Анализировать геоданные мы будем с помощью PostgreSQL 15.1, PostGIS 3.3.2, H3 4.1.1. Исходные данные из проекта OpenStreetMap, запросы к БД не претендуют на правильность и качество исходных данных в масштабе страны нам не известно! Данная публикация является грубой интерпретацией данных OSM в первом приближении и не претендует на истинность и неопровержимость. Так же как не стоит верить оценке Хабра на чтение статьи в 127 минут, что сильно превышает реальные 5 минут, которые вы потратите на ознакомление с публикацией.

Читать далее

Революция генеративного ИИ началась — как мы к этому пришли?

Время на прочтение18 мин
Охват и читатели17K

Сегодня только и разговоров, что о ChatGPT, Midjourney и прочих DALL-E. Почему именно сейчас нейросети стали такими крутыми и развиваются семимильными шагами? Прорыв стал возможен благодаря новому классу невероятно мощных моделей искусственного интеллекта. Рассказываем, с чего всё началось и как мы здесь оказались.

Читать далее

Полная история создания игры Elite (1984). Часть 2

Время на прочтение29 мин
Охват и читатели23K
Elite — компьютерная игра, которую выпустила Acornsoft в 1984 году для компьютеров BBC Micro. Ее создали два 19-летних студента — Дэвид Брабен и Йен Белл.

Это прорывной для своего времени космический симулятор с открытым миром и элементами экономической стратегии, который удалось уместить в 22К памяти!

Перед вами вторая часть истории о том, как создавалась игра, почему она стала хитом, и какие предпосылки послужили к ее появлению.

В первой части читайте о том, как из старой машины с 16КБ памяти получилось «выжать» трехмерную графику. В комментариях к первой части – ссылка на сайт Йена Белла с материалами Elite.


Читать дальше →

Минимальный геном как операционная система

Время на прочтение8 мин
Охват и читатели5.7K

Как знают мои постоянные читатели, кроме основного блога я веду на Хабре ещё один, где публикую переводы с английского, посвящённые строгим IT-темам. 21 января я вывесил там материал об игре «Жизнь» Джона Конвея, рассказывающий о создании минимальной жизнеспособной единицы по правилам этой игры. Активное обсуждение статьи, в котором поучаствовал даже уважаемый Павел Гранковский @Pavgran, коммиттер игры, упоминаемый в посте, вернуло меня к мыслям о сборке минимально жизнеспособного биологического генома. Очевидно, что современные возможности секвенирования ДНК и амплификации генов переводят такую задачу в разряд решаемых. На пути к созданию полностью синтетических организмов следовало бы освоить создание полусинтетических, основой для которых мог бы послужить именно такой минимальный геном. Ниже я расскажу о перепрограммировании геномов, искусственном и естественном редуцировании геномов, а также о перспективах таких исследований.

Читать далее

Как стартап находит ground truth данные в сельском хозяйстве

Время на прочтение4 мин
Охват и читатели3.4K

Компания OneSoil разрабатывает бесплатные приложения для фермеров, которыми пользуются более чем в 180 странах мира. В своей работе мы используем большие данные и машинное обучение, и отдельный квест для нас — найти ground truth данные. Рассказываем, как мы решаем эту нетривиальную задачу.

Читать далее

Бесперебойный деплой микрофронтендов с Kubernetes: как настроить

Время на прочтение13 мин
Охват и читатели6.3K

Фронтенд-разработка может жить без независимого деплоя, пока у нее не больше 7 микрофронтендов. Но, чем выше число, тем сильнее страдают процессы. Наша команда в Mindbox прошла через это с Octopus, когда деплоила в Yandex Cloud S3. Причем на все обновления был один свободный бакет. Заливаешь код в мастер, а в это время то же самое делают еще пять разработчиков. Скапливается очередь, код еле ползет, а через час деплой вообще обваливается — Octopus не справился с нагрузкой. Пока чинишь это, оказывается, что твои обновления уже попали в продакшен заодно с чужими. 

Когда число проектов возросло до 14, все это повторялось с каждым разработчиком по несколько раз в день. Поэтому мы решили вслед за коллегами-бэкендерами перейти на независимый деплой в Kubernetes.

В этой статье собран опыт платформы автоматизации маркетинга Mindbox по реформированию фронтенда:

Kubernetes вместо Yandex Cloud S3: деплоим микрофронтенды без сбоев

Автоматизированный вывод метаданных: экономим ресурсы разработки

Постепенный переход: меняем деплой без вреда для пользователей

Хот-тестинг: ускоряем обновление фронтенда

Советы: как улучшить деплой без микрофронтендов и Kubernetes

Читать далее

Разработка гибридных PHP/Go приложений с использованием RoadRunner

Время на прочтение18 мин
Охват и читатели27K
Классическое PHP-приложение — однопоточность, тяжелая загрузка (если вы, конечно, не пишите на микрофреймворках) и неизбежная смерть процесса после каждого запроса… Такое приложение тяжелое и медленное, но мы можем дать ему вторую жизнь гибридизацией. Чтобы ускорить — демонизируем и оптимизируем утечки памяти, чтобы добиться большей производительности — внедрим собственный сервер РНР-приложений RoadRunner на Golang, чтобы добавить гибкости — упростим PHP-код, расширим стек и разделим ответственность между сервером и приложением. По сути, заставим наше приложение работать, как если бы мы писали его на Java или другом языке.

Благодаря гибридизации ранее медленное приложение перестало страдать 502 ошибками под нагрузками, уменьшилось среднее время ответа на запросы, производительность увеличилась, а деплой и сборка стали проще за счет унификации приложения и избавления от лишней обвязки в виде nginx + php-fpm.


Антон Титов (Lachezis) — технический директор и соучредитель SpiralScout LLC с опытом активной коммерческой разработки на PHP в 12 лет. Последние несколько лет активно внедряет Golang в стек разработки компании. Об одном из примеров Антон рассказал на PHP Russia 2019.

Hydrosphere — управляем ML как сервисом

Время на прочтение7 мин
Охват и читатели2.4K

Подобно тому, как в мире разработки многокомпонентных систем применяются подходы для управления и мониторинга микросервисами на основе инструментов DevOps (для запуска и восстановления сервисов, передачи данных, наблюдения за распределенными операциями, выполнение замеров и получение операционных метрик), так же и для моделей машинного обучения становится важным обеспечить возможность их развертывания, обновления и наблюдения за метриками (точность модели, время выполнения прямого прохождения нейронной сети и другими). В обобщенном виде такие решения получили названия MLOps и в этой статье мы рассмотрим возможности платформы Hydrosphere 3.0.

Читать далее

PHP на стероидах: Swoole in production

Время на прочтение6 мин
Охват и читатели31K

Представьте себе ситуацию, большой маркетплейс, 60 тыс. посетителей в сутки (600 тыс. просмотров) и это только веб, а с мобильного приложения, плюс еще 100 тыс уникальных посетителей. С точки зрения HTTP API запросов к PHP бекенду - это порядка 13 млн. запросов (в пиковых нагрузках ~300-400 RPS). И это всё (PHP only) обрабатывает сервер с 8 vCPU (ядрами) и 32 Gb RAM и самое главное, что сервер практически не напрягается (см. КДПВ).

Как это возможно?

Встраиваем Lua в PHP через FFI

Время на прочтение24 мин
Охват и читатели5.9K

Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.


Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.


Читать дальше →

Почему оценка задач сломала Agile

Время на прочтение7 мин
Охват и читатели18K

Трудно утверждать, что методология Agile неэффективна. Практически все команды разработки программного обеспечения стараются ей следовать. Простой способ начать внедрять гибкую методологию — это добавить пару ее компонентов в рабочий процесс. Одним из самых популярных и при этом важных компонентов считается оценка в Story Points. Однако сколько команд оценивали ее реальное влияние? На самом ли деле оценка времени, затраченного на каждую задачу, приносит пользу? По моему опыту, это не так.

Чтобы оставаться гибкими, нам следует знать преимущества и риски используемых инструментов, в частности плюсы и минусы оценки в Story Points. В этой статье мы рассмотрим, возможно ли точное планирование итераций и гибкость без оценки времени каждой отдельной задачи.

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Луганск, Луганская обл., Украина
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Ведущий
От 10 800 $
PHP
ООП
Docker
Rust
Linux
Асинхронное программирование
MQTT
Геоинформационные системы
Машинное обучение
Computer Science