Обновить

Технотекст

Классификация изображений в облачной системе Google Colab

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

Нейронку можно обучить не только понимать, где на картинке собака, а где кошка. Можно шагнуть дальше, чтобы обучить ее распознавать данные графиков зрачковых реакций на свет и выдавать результат: норма или отклонение.

Эта статья про сверточные нейронные сети, классификацию изображений с помощью моделей глубокого обучения, а также применение Google Colab для написания кода на Python.

Читать далее

Enum в Swift: Перечисления Возможных Сценариев

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

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

Листаем дальше

Symfony под капотом: Symfony Messenger и механизм повторной обработки сообщений при ошибках

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

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

В этой статье я расскажу о том, как в Messenger-компоненте Symfony устроен механизм повторной обработки сообщений при ошибках (или по-простому – механизм ретраев), а также поделюсь опытом его использования и некоторыми важными нюансами его работы.

Читать далее

9 реальных причин дефицита персонала в России

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

Со всех сторон интернета слышу: персонала нет на рынке труда, людей в целом мало — не рождаются, умирают, мол, демографическая яма, работать некому, и всё в таком духе. Кадровый голод в промышленности достиг нового рекорда. Дефицит кадров испытывают 42% предприятий, показал июльский опрос Института Гайдара. На момент предыдущего опроса в апреле о нехватке работников заявляли 35% компаний.А теперь главный вопрос — это физически людей не хватает или просто на ту зарплату, что предлагают, никто не хочет идти?

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

Читать далее

Библиотека Scout — быстрый и безопасный DI на Kotlin

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

Привет! Меня зовут Александр Миронычев. Я занимаюсь инфраструктурой приложения Яндекс Маркет под Android. Около двух лет назад при работе над модульностью у меня появилось желание написать собственную библиотеку для внедрения зависимостей, которая позволила бы ускорить сборку приложения и упростить процесс модуляризации. Так появился Scout. Сегодня его код мы выложили в открытый доступ.

Эта статья — рассказ о том, как пройти путь от безумной идеи до конкурентоспособного опенсорс-фреймворка. Статья будет полезна тем, кто ищет замену DI-фреймворку в своем проекте, а также тем, кто мечтает написать свою библиотеку, но никак не может начать.

Читать далее

Истории должны умереть

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

Привет, меня зовут Андрей Осягин, я Product Owner в Домклике и отвечаю за продукт «Кабинет участника сделки». Он нужен для подготовки к ипотечной сделке с момента первичного одобрения заявки и до самой выдачи кредита. MAU Домклик сейчас превышает 16 млн пользователей.

Я расскажу вам, как мы реализовали проект «Истории»: опишу вдохновение, разочарования, запуск и метрики, и отвечу на вопрос — должны ли истории умереть. Эта информация может пригодится тем, кто планирует запускать такой или похожий проект в своём продукте, или думает о том, как решить похожие задачи.

Читать далее

Kandinsky 2.1, или Когда +0,1 значит очень много

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

В ноябре 2022 года мы выпустили свою первую диффузионную модель для синтеза изображений по текстовым описаниям Kandinsky 2.0, которая собрала как позитивные, так и отрицательные отклики. Её ключевой особенностью была мультиязычность и использование двойного текстового энкодера на входе сети: XLMR-clip и mT5-small. Рефлексия после релиза подтолкнула нас к перестройке планов по развитию архитектуры и к сильному стремлению получить буст в качестве генераций, чтобы выйти на уровень аналогичных решений, названия которых слишком хорошо известны, чтобы их называть. В то же время мы могли наблюдать за появлением новых генеративных моделей и их файнтюнов, таких как ControlNet, GigaGAN, GLIGEN, Instruct Pix2Pix и др. В этих работах представлены и новые взгляды на генерацию, и новые возможности использования латентного пространства для внесения контролируемых изменений через текстовые промты, а также для смешивания изображений — возможности использования генеративных моделей расширяются постоянно. Бурное развитие прикладных кейсов привело к интенсивно нарастающему числу различных привлекательных для пользователей реализаций этих функций — визуализация городов, изображения известных личностей в нетипичных ситуациях и многие другие.

Читать далее

Конструктор для взрослых…

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

...и не только!

Это история о том, как я создал конструктор для решения повседневных проблем. Для меня он стал незаменимым помощником по жизни. Возможно, и вам придется по вкусу (древесины:))

В этой статье я познакомлю вас с этим простым, но очень функциональным изобретением.

Читать далее

«Горячая» оценка интерфейсов с помощью тепловых карт и AI

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

Расскажу свой путь тестирования прототипа с плагином для Figma.

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

Читать далее

Проектный менеджмент: развитие soft skills

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

Софт-скиллы — это навыки, связанные с межличностным общением, эмоциональным интеллектом, управлением временем и другими нематериальными аспектами работы. Важно развивать эти навыки, поскольку они позволяют эффективно взаимодействовать с коллегами, клиентами и заинтересованными сторонами, а также управлять проектом в целом. International Journal of Managing Projects in Business опубликовал исследование, в котором прослеживается, что основные сложности в работе над проектом создаёт именно человеческий фактор.

Какие софт-скиллы стоит развивать в первую очередь, как это осуществить самостоятельно, что может помочь в этом развитии?

Читать далее

Tarantella — распределённое key-value хранилище в рекламных технологиях VK

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

Привет, Хабр! Меня зовут Виктор Лучиц, я руководитель группы backend-разработки в департаменте рекламных технологий VK. В этой статье я расскажу вам про Tarantella — наше key-value хранилище, которое мы используем в рекламных технологиях. 

Из материала вы узнаете о том, как устроен этот «секретный ингредиент», без которого наша реклама не была бы такой эффективной.

Читать далее

Кто победит: средненагруженный Kubernetes или простой list-запрос?

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

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

Читать далее

Гибридный Kubernetes-кластер из bare metal и динамически подключаемых облачных виртуальных машин

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

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

Мы решили сделать гибридный кластер Kubernetes на базе существующего bare-metal-кластера, чтобы на лету заказывать узлы у облачного провайдера, когда в основном кластере заканчиваются ресурсы; разворачивать на этих узлах нужные окружения для тестов; сворачивать окружения после выхода изменений в production и отключать узлы. Для этого мы воспользовались модулем cloud-provider-openstack, который входит в состав Kubernetes-платформы Deckhouse.

Читать далее

ESLint | Shareable config настройка и что это такое?

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

Приветствую! В ходе своей профессиональной деятельности, каждый фронтенд-разработчик сталкивается с неотъемлемой частью разработки - инструментом ESLint.

Сегодня мы поговорим, о настройке shareable config. Мы рассмотрим, как это может помочь продуктовым командам или фрилансеру разработчику, а далее перейдем к настройке этой конфигурации.

Читать далее

Обзор периферийной библиотеки FIL для микроконтроллеров STM32

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

Приветствую всех читателей моей первой статьи. Меня зовут Назаров Александр, я программист и резидент Ресурсного центра робототехники - структурного подразделения Донского государственного технического университета. Наши проекты направлены, в основном на мобильную робототехнику и его составляющие: изготовление механических узлов и их сборка, проектирование электрических схем и программирование микроконтроллеров.

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

Читать далее

Большая перемена: как за 3 года мы пересмотрели управление проектами во «Фланте»

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

Всем привет. Мы давно не писали на тему менеджмента команд и проектов. Начнем с краткой вводной. Помимо продуктовой разработки, которой мы занялись около 5 лет назад, основным направлением деятельности «Фланта» остается DaaS (DevOps as a Service). Мы помогаем клиентам с обслуживанием инфраструктуры. И эта деятельность накладывает большой отпечаток на наш внутренний процесс управления проектами, так как у нас много специфичных процессов и практик: у команды может быть несколько разноплановых проектов, ей необходимо обеспечить SLA по каждому из них. Важно и то, что наши команды на 100% удаленные. 

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

Читать далее

Как настроить миграцию etcd между облачными кластерами Kubernetes и избежать простоев

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

Допустим, вам нужно перенести хранилище данных из одного кластера в другой. А выключать его нельзя, потому что это может вызвать незначительный (или значительный) коллапс сервисов, которые с ним работают. В статье мы расскажем о не самом очевидном и популярном способе переноса etcd из одного облачного кластера Kubernetes в другой. Такой способ поможет избежать простоя и связанных с ним последствий. Согласно стартовым условиям, оба кластера находятся в облаке, а потому нам предстоит столкнуться с некоторыми ограничениями и трудностями — им мы уделим особое внимание.

Примечание: Сразу оговорим, что речь идет про миграцию не того etcd, в котором Kubernetes хранит все состояние кластера. В статье описана миграция отдельной инсталляции etcd, которая используется сторонними приложениями и находится внутри кластера k8s.

Читать далее

Наш опыт интеграции внешних DevOps-команд в команды клиента: этапы, процессы, трудности, неочевидные нюансы

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

В этой статье я расскажу, как DevOps-инженеры «Фланта» интегрируются в команду клиента и по каким правилам мы работаем, чтобы сотрудничество было комфортным для всех. Мы пройдемся по каждому этапу внедрения и разберем основные принципы, проблемы и риски при интеграции сторонних DevOps-команд.

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

Читать далее

KeyDB и Redis: в поисках серебряной пули — in-memory replicated DB (Replicated IMDB)

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

На кластерах клиентов, которые мы обслуживаем, есть как «одноголовые» инсталляции Redis (обычно для кэшей, которые не страшно потерять), так и более отказоустойчивые решения — Redis Sentinel или Redis Cluster. По нашему опыту, во всех трех вариантах можно безболезненно переключиться с Redis на KeyDB и получить прирост производительности. Точнее, избавиться от бутылочного горлышка Redis в одно ядро. Хотя в новых версиях Redis(r) появилась обработка I/O в отдельных тредах, иногда этого бывает недостаточно.

В то же время, если мы хотим использовать отказоустойчивые решениями вроде Sentinel и Cluster, нам понадобится поддержка этих технологий на уровне библиотеки, которую приложение использует для подключения в Redis. Причем лишь немногие библиотеки умеют читать из реплик Redis — в обоих вариантах (Sentinel и Cluster) чтение, как правило, происходит с мастеров. И запись, естественно, тоже происходит в мастеры. 

В итоге у нас есть несколько реплик довольно дорогого in-memory-хранилища, а в рабочем процессе используется только часть из них. Остальные — на подхвате. Хотя в большинстве кейсов операции с in-memory NoSQL DB — это именно операции чтения.

Однако если посмотреть в сторону KeyDB, то можно увидеть, что там есть киллер-фича — и даже две: я говорю о режимах Active Replica и Multi-Master. Использование этих режимов позволяет получить распределенный отказоустойчивый KeyDB, совместимый с Redis, писать в любую ноду, читать из любой ноды. И все это с точки зрения приложения выглядит как один экземпляр Redis без всяких Sentinel — то есть в коде приложения ничего менять не придется. 

Звучит как фантастика?

Читать далее

Atlas — инструмент управления схемами миграций БД с открытым исходным кодом: наш опыт и ошибки создателей

Уровень сложностиСложный
Время на прочтение31 мин
Охват и читатели8K

Привет! На связи Василий Мармер, DevOps-тимлид компании «Флант». Сегодня мы поговорим об Atlas — еще одной утилите, которая делает работу DevOps-инженера более комфортной. Atlas увидел мир в ноябре 2021 года, а сейчас у него более 3,3 тысячи звёзд на GitHub. Язык программирования — Go.

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

Читать далее