Долгое время мне казалось, что сильное дизайн‑решение должно говорить само за себя. Если сценарий логичный, интерфейс понятный, состояния продуманы, а решение опирается на исследования — зачем дополнительно его «продавать»? Но когда я оказалась в продуктовой команде, а не на проектах фриланса, оказалось, что качество самого макета — только часть задачи.
Вторая часть — объяснить команде, почему решение выглядит именно так, какую проблему оно решает и что произойдёт, если сделать иначе.
И для меня здесь есть несколько важных выводов.
Читать далееК сожалению, история нашего вида наполнена множеством трагических событий глобального масштаба: войны, природные катаклизмы, пандемии. Одним из таких событий является пандемия чумы, названная «Черная смерть», забравшая жизни десятков миллионов людей в Европе в период с 1346 по 1353 год. Однако, эти несколько лет являются лишь пиком распространения чумы. Повторные вспышки продолжались вплоть до XIX века. Ученые из Эстонского научного агентства провели масштабное исследование древних ДНК, в ходе которого была установлена хронология распространения, мутации и всплесков чумы протяженностью в 400 лет. Какие данные были использованы в анализе, что именно они показали, и как полученные сведения могут помочь в современной эпидемиологии? Ответы на эти вопросы мы найдем в докладе ученых.
Читать далееif roc_auc < 0.85: exit 1 — примерно так выглядит quality gate почти в каждом ML-пайплайне, который мне попадался. В обычном CI то же самое — количество проблем в Sonar и код выхода тестов.
Я видел, как приложение проходило весь пайплайн, выкатывалось в прод, и через 2 часа бизнес срочно требовал отката из-за неработоспособности важного функционала.
Зелёная галочка не значит «модель хорошая» — это знают, в общем-то, все. Только пайплайны почему-то до сих пор собирают так, будто никто об этом не слышал. Гейт в таком виде похож на суд, который выносит оправдательный приговор по показаниям одного свидетеля. И никто не спрашивает, откуда свидетель взял свою цифру.
Дальше семь способов, которыми гейт пропускает брак в прод. Там будет и утечка между train и test, и старый добрый || true в .gitlab-ci.yml. По каждому посмотрим реальный кейс с цифрами.
Читать далееПоговорим о процессе, когда разработкой полностью занимается ИИ. Постараемся разобраться как перемещается ограничение системы при полной автоматизации конкретных этапов. Мы не будем разбираться как лучше, мы попробуем рассмотреть разные варианты использования агентных систем, не углубляясь в детали самой разработки. Только процессы. Только ограничения. Только разработка.
Читать далееВсем привет!
Меня зовут Шатохин Дмитрий, я работаю в компании SM Lab старшим программистом 1С.
Выносим полнотекстовый поиск за пределы кластера 1С. Нечеткое соответствие, учет опечаток и регистра без нагрузки на сервер и СУБД основной базы.
Sku-search: кроссплатформенный сервис полнотекстового поиска для 1С — находит все по наименованию, артикулу, штрихкоду и любым реквизитам
Когда стандартный поиск 1С сдается, а Elasticsearch кажется пушкой по воробьям.
Знакомая боль?
Оператор в вашей 1С создает новую номенклатуру и вбивает «Болт М16 оцинк.». Система молчит. Он сохраняет — и в базе появляется дубль, потому что «Болт М16х60 оцинкованный ГОСТ 7798-70» уже существовал три года.
Или другой случай. Приходит прайс поставщика. В нем артикул ART-000002, в вашей 1С — тот же, но записан как Art-000002. На первый взгляд безобидно: строки в 1С по умолчанию сравниваются без учета регистра, и «в лоб» эти значения не отличить друг от друга. А для акцизных марок, марок Честного ЗНАКА, серийных номеров и артикулов, где регистр различает модификации, это ловушка: 1С выдает кучу ложных совпадений, а поиск «с учетом регистра» из стандартного запроса не настроить.
Читать далееПочему для понимания товара недостаточно одной фотографии? Проследим, как модели электронной коммерции эволюционировали от визуального поиска и CLIP к мультимодальным представлениям, объединяющим изображения, текстовые описания и атрибуты товаров. Также рассмотрим e-CLIP, MOON, MOON2.0, AFMRL и MOON3.0.
Читать далееЯ решил 1.5 года делать игру и хочу ей поделиться.
Основной сюжет моей игры, ее механика и над чем работаю сейчас.
Читать далееЕсли у вас несколько фронтенд-сервисов с одинаковыми компонентами (например, сайдбаром), вы либо уже страдаете, либо скоро начнете. Мы начали страдать на шестом.
Добавить новый пункт меню сайдбара. Казалось бы, пять минут. У нас это было как шесть кругов ада: шесть pull-request’ов, шесть ревью, шесть деплоев и бесчисленное количество запущенных CI-пайплайнов ради одной строчки в навигации.
Начали искать решение. Смотрели разные варианты, остановились на Module Federation. Написали прототип, попробовали пару плагинов, словили пару багов, починили, перенесли в код production-сервисов. С тех пор общий UI-каркас живет и деплоится отдельно от всех сервисов уже два года без каких-либо проблем.
В статье рассматриваем два плагина для подключения Module Federation ретроспективно: на каком этапе развития они были два года назад и что с ними сейчас, как выглядит конфиг настройки на Vite для обоих плагинов и пристально вглядываемся в технические детали и ограничения — местами будет сложно, но вы можете в навигации по статье найти интересующий вас раздел или сразу перейти к практическому примеру.
Читать далееМожно ли из тестирования перейти в разработку да еще и стать лидом? Можно. Но в моем случае все началось не с решения сменить профессию или получить новую должность. Сначала появилось новое направление, в развитии которого мне захотелось участвовать. Затем — возможность влиять на решения и брать на себя всё больше ответственности. А уже вместе с ней постепенно выросла и моя роль.
Привет, Хабр! Меня зовут Алина Сычёва, я около трех лет работаю в МТС Линк. В компанию я пришла на позицию middle QA, а сейчас руковожу одной из команд разработки. В этой статье я расскажу, как работа с релизами локальной версии продукта оказалась для меня школой лидерства, какие навыки из тестирования пригодились в новой роли и чему пришлось учиться после перехода.
Читать далееРаньше я начинал учить английские слова и постоянно бросал это дело.
Находил новый способ, занимался какое-то время — а потом появлялись дела, работа, не хватало времени, и я снова всё забрасывал.
Но полтора года назад всё изменилось: с того момента я выучил 623 слова почти не тратя на это время. Без силы воли, дисциплины и изменения привычного образа жизни.
В этой статье расскажу, как я к этому пришёл и как повторить мои результаты.
Читать далееМолока в кофе можно налить по-разному, но в одном случае получится 3в1, а в другом — капучино. Точно так же с внедрением ИИ, который сейчас пытаются пришить к каждой кофемолке. Мы попробовали вставить ИИ в платёжный терминал не ради хайпа, а чтобы он начал реально слышать клиента в условиях ревущей кофемашины и бесконечного гула торгового зала. И, кажется, получился вообще не капучино. Раф, как минимум!
Разбираю реальный случай контрибьюции в DKMS (Dynamic Kernel Module Support) — инструмент, который пересобирает сторонние модули ядра вроде nvidia, VirtualBox, ZFS при обновлении ядра. Столкнулся с неинформативным сообщением об ошибке «Manual intervention is required!», разобрался, почему путь к сломанному модулю не попадает в вывод, хотя DKMS его знает, и почему это не то же самое, что путь из побочного сообщения find. Отправил патч из трёх атомарных коммитов в апстрим, PR смержен. В статье — разбор кода, поиск похожих issue и PR перед началом работы, возня с тестовым окружением (root, kernel headers, симлинки /lib vs /usr/lib, конфликт с системным dkms) и выводы о том, что делает патч приемлемым для мейнтейнеров.
Читать далееКак работает поиск в SaaS Kiva, где у каждого клиента своя база данных
Как Kiva использует Manticore Search в SaaS, где у каждого клиента своя база данных и своя схема: сочетает периодически перестраиваемую и RT-таблицы, обрабатывает изменения в реальном времени и обходится без отдельных серверов для поиска.
Читать далееЕсть классическая проблема: изолированные процессы — хорошо для надёжности, но хочется иногда вызвать функцию из другого процесса, как будто она лежала в той же библиотеке. Стандартные IPC — это всегда протокол: описал интерфейс, сгенерировал стабы, поднял сервер, прописал адреса. Simplerpc предлагает путь короче: пишешь обычную функцию на Си, линкуешь библиотеку — и она автоматически становится RPC-методом, доступным другим процессам на той же машине.
Читать далееЯ проверил популярные DDNS-клиенты и почти не нашёл в них поддержки российских DNS-хостингов. Поэтому запись для домашнего сервера обычно обновляют самописным скриптом на curl, а такой скрипт ломается молча. Я разобрал API нескольких хостингов и написал на Go свой DDNS-демон, который учитывает их особенности.
В статье рассказываю, почему совет перенести зону в Cloudflare подходит российской аудитории с оговорками и что умеют готовые клиенты. Затем разбираю подводные камни API REG.RU, Selectel и Yandex Cloud, о которые спотыкаются самописные скрипты. В конце показываю, как устроен dnspatch и как запустить его в Docker за пару минут.
Читать далееЯ собрал больше 32 тысяч объявлений с Krisha и данные БНС по зарплатам, ценам, тарифам и переездам. Потом посчитал, сколько остаётся от зарплаты после аренды, еды и коммуналки, и сравнил это с тем, куда на самом деле переезжают люди.
Как живут в Казахстане...«Мы вообще пользуемся этими штуками?» Этот вопрос прозвучал на разборе расходов на GPU — самой крупной статьи инфраструктурного счёта, и никто не смог на него ответить. Загрузку карт записывали каждую секунду, но метрики попадали в центральный Prometheus, куда тенанты не имеют доступа. Когда данные наконец проверили, обнаружили GPU, который одиннадцать дней подряд простаивал с нулевой загрузкой.
Команда VK Tech перевела статью с разбором о том, как дать каждой команде доступ только к своим метрикам, и шестью PromQL-запросов для поиска простаивающих карт.
Читать далееАгент пишет патч, пишет для него тесты, выполняет их и сообщает об успехе. Дифф выглядит здраво. Итак, у нас есть реализация, файл с тестом, и проверка пройдена (зелёная).
Реализация может согласовываться с тестами, поскольку там содержатся одинаковые ошибки. Если агент недопонял требования, когда писал код, то такое непонимание может сохраниться и на этапе чтения кода в стремлении получить ожидаемый результат. Чем больше тестовый набор, тем сложнее будет устранить такую ошибку. Позже вы исправите реализацию, и тесты начнут ругаться.
Читать далееМиграция с устаревшей системы на новую часто выглядит просто на архитектурной схеме: выключить старое, включить новое и продолжить работу. На практике такой переход затрагивает данные, интеграции и процессы, поэтому один неучтённый сценарий может привести к проблемам уже после выхода в прод. В статье разбирается подход Big Bang migration, его особенности и вопросы, которые важно учитывать при подготовке такого перехода.
Читать далееSerilog - популярная система логирования для ASP.Net Core (MVC) приложений, которая легко подключается и имеет гибкие настройки. При запуске в Docker (и далее в Kubernetes) важно, чтобы система логирования записывала вывод в stdout, чтобы к ним имели доступ стандартные команды, напр.
docker logs {container_name}
Хорошая новость - при использовании обычного ConsoleSink (вывод в консоль), логи автоматически становятся доступными для docker logs. Не очень хорошая новость - если вы также используете FileSink (вывод в файлы) и хотите хранить эти файлы на хосте,чтобы после перезапуска контейнера они не потерялись, то придется повозиться. Точнее, возможно придется - если вы следуете рекомендациям по безопасности и запускаете процесс внутри контейнера не под root-ом. Но обо всем по порядку.
Читать далее