Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Docker и сети

Reading time5 min
Views67K

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

Читать далее

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

Level of difficultyMedium
Reading time2 min
Views8.3K

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

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

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

Читать далее

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

Reading time4 min
Views7.8K

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

Читать далее

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

Reading time9 min
Views6.1K

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

Наша лаборатория 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

Reading time9 min
Views28K
В прошлый раз мы реализовали обновление БД.

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

Введение


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

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

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

Level of difficultyEasy
Reading time16 min
Views9.1K

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Views7.6K

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

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

Читать далее

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

Level of difficultyMedium
Reading time127 min
Views2.6K

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

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

Читать далее

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

Reading time18 min
Views16K

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

Читать далее

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

Reading time29 min
Views21K
Elite — компьютерная игра, которую выпустила Acornsoft в 1984 году для компьютеров BBC Micro. Ее создали два 19-летних студента — Дэвид Брабен и Йен Белл.

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

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

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


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

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

Reading time8 min
Views5.3K

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

Читать далее

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

Reading time4 min
Views3.2K

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

Читать далее

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

Reading time13 min
Views5.3K

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

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

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

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

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

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

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

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

Читать далее

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

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

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


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

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

Reading time7 min
Views2.3K

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

Читать далее

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

Reading time6 min
Views27K

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

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

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

Reading time24 min
Views5.4K

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


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


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

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

Reading time7 min
Views17K

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

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

Читать далее

3D Life — в поисках планеров

Reading time5 min
Views19K


Многим известна игра «Жизнь», изобретенная Дж.Конвеем еще в 1970 г. Еще шире известен один из объектов этой игры – планер (или глайдер) – движуееся образование из 5 клеток:

.

В 1987 г. Были найдены первые планеры в трехмерных версиях «жизни» ( www.complex-systems.com/pdf/16-4-7.pdf ). К сожалению, из случайных конфигураций они возникают очень редко (в отличие от двумерной версии). Я решил поискать правила игры, в которых планеров было бы побольше.
Много видеороликов

Как мы обновили старый кластер Elasticsearch на 3 ПБ без простоев. Часть 3 — поиск и подстановочные знаки

Reading time10 min
Views2K

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

Это третья часть серии статей об обновлении кластера Elasticsearch без простоев и с минимальным воздействием на пользователей. В рамках проекта по обновлению Elasticsearch было необходимо определить, насколько улучшилась производительность поиска в новой версии по сравнению со старой. Использование старой версии Elasticsearch было сопряжено со множеством проблем с производительностью, и была надежда, что переход на новую версию поможет с ними разобраться.

Читать далее

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science