Когда к нам пришел докер и — как тот муж из анекдота — перее^W научил нас отказоустойчивости на свой манер, я написал бесчисленное количество костылей, чтобы действительно отказоустойчивый (а главное, долгоживущий) код продолжал нормально работать в условиях, где сброс горячего кэша из-за внезапного перезапуска контейнера, вызванного близостью Андромеды к Меркурию, — норма.
Потом какому-то гению из соседнего отдела пришла в голову блистательная мысль использовать consul в качестве единого конфигурационного хранилища, некоторые ошметки локальных конфигов по-прежнему валялись в редисе, каждый микросервис выдумывал свою систему легкой раскатки и предпочитал автономно управлять конфигурацией из локальных переменных среды, и в этом зоопарке, разумеется, начали возникать конфликты на почве видово́й борьбы за выживание (ласково именуемой в народе «кто первый встал — того и тапки»).
С этим надо было что-то делать, и я написал библиотеку на обоих используемых тогда в компании языках (руби и эликсире), позволяющую поддерживать общую конфигурацию приложения из нескольких источников, обновлять её в режиме реального времени через изменение этих самых источников (поменял значение в консуле/редисе/локальном джейсоне — и оно автоматически обновилось в конфиге, а уведомления разослались всем заинтересованным).
Вот как это былоВ этой статье мы поговорим о том, как разные типы обуви могут влиять на разработку игр, и покажем примеры того, как разработчики игр решают эти проблемы на практике.
Читать далееВведение
В мире разработки программного обеспечения надёжность и качество кода напрямую зависят от эффективности тестирования. Unit-тесты призваны проверять поведение отдельных компонентов без влияния внешних факторов. Традиционно в них используют синтетические (искусственно сгенерированные) данные, однако на практике всё чаще оказывается, что такие тестовые наборы не отражают реальных сценариев и приводят к ложному ощущению «зелёного» покрытия. В этой статье мы разберём, почему использование реальных данных при написании unit-тестов значительно повышает их ценность, и объясним, какие недостатки несут синтетические данные.
Читать далееДаже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.
Когда говорят «отладка», в 2025 году чаще всего имеют в виду жмяк на F5 в Visual Studio Code или лог с CI/CD. Но в embedded-мире, особенно если ты копаешься в системах с 8-битным контроллером 2006 года выпуска, это слово может означать кое-что пострашнее. Например — «прошивка вылетает на 4-й секунде, данных в UART нет, отладочного интерфейса нет, документации почти нет, а заказчик просит сделать "как раньше работало"». И вот тут начинается старый добрый reverse engineering.
Читать далееВнимание: данная статья может вызвать противоречивые чувства особенно у религиозных и этически чувствительных читателей. Просьба воспринимать материал с учётом его исследовательского и проектного характера.
Современный мир столкнулся с устойчивым падением рождаемости. Это явление наблюдается практически во всех развитых странах и постепенно охватывает развивающиеся. Несмотря на тревожные демографические показатели, до сих пор нет ясного общественного или политического консенсуса: является ли это падение реальной проблемой, требующей системного ответа.
Пока одни говорят о «кризисе семьи» или «сдвиге культурных ценностей», другие предлагают меры, сводящиеся по сути к ограничению свобод — особенно женщин. Среди таких инициатив:
- запрет абортов;
- усложнение бракоразводных процедур;
Я «нанял» ChatGPT в кофаундеры — делюсь результатами, промптом, пятью масками и чек‑листом рисков, которые внедряются за вечер
Читать далееWarp — это современный терминал для macOS, Linux и Windows, который переосмысливает работу с командной строкой. Позиционируясь как "терминал для 21-го века", работает на базе искусственного интеллекта. В этой статье я расскажу, почему я решил попробовать Warp, какие функции меня впечатлили, и как он может помочь разработчикам повысить продуктивность.
Читать далееМногие разработчики мечтают о проектах, в которых можно совместить любовь к программированию и нарративу. В этой статье рассказывается о создании собственного DSL (domain-specific language) для интерактивных историй — от формализации сценарных структур до реализации интерпретатора на Python. Много кода, много боли, немного магии.
Читать далееXionix – это проект, посвященный заработка на криптовалюте. Платформа предлагает получать прибыль на бирже с помощью торговых ботов, которых здесь можно создавать самостоятельно, либо копировать. Площадка якобы может похвастаться официальным партнерством с некоторыми известными ресурсами. Клиенты же, заплатив за подписку, получают оперативную поддержку, подробные гайды по использованию и, главное, возможность зарабатывать даже с депозитом от 100$. Все это звучит довольно заманчиво, учитывая, что стоимость не самая большая. Однако все же возникают некоторые сомнения насчет реальной эффективности сервиса. В обзоре разберемся в работе проекта Ксионикс и расскажем, стоит ли вообще к нему присматриваться.
В этом обзоре я постараюсь максимально объективно разобрать платформу Xionix, выделив как её сильные стороны, так и спорные моменты. Здесь вы не найдете рекламных ссылок — цель статьи помочь вам взвесить все «за» и «против». Однако если после прочтения у вас возникнет желание глубже изучить функционал сервиса, в моём профиле есть отдельный материал с практическими инструкциями, промокодами и лайфхаками для старта. Перейти к нему можно в конце обзора или тут.
Привет, Хабр!
Google, без преувеличения, изменил мир IT, подарив нам Kubernetes – систему, ставшую де-факто стандартом оркестрации контейнеров. И когда выбираешь управляемый Kubernetes от его же создателей, такой как Google Kubernetes Engine (GKE), ожидания, естественно, высоки. Уж кто-кто, а "первоисточник" должен уметь "готовить" свое детище идеально, предоставляя не только удобство, но и прозрачные, глубоко интегрированные и безопасные решения "из коробки". Особенно когда речь заходит о такой фундаментальной вещи, как сетевое взаимодействие и его безопасность.
GKE предлагает два режима работы кластеров: routes-based и VPC-native. Именно VPC-native кластеры позиционируются Google как обеспечивающие более тесную интеграцию с сетью VPC. Как утверждает Google, одно из преимуществ таких кластеров заключается в том, что IP-адреса подов (pods) нативно маршрутизируемы внутри сети VPC кластера и других сетей VPC, подключенных к ней через VPC Network Peering (подробнее см. документацию GKE по IP-алиасам и VPC-native кластерам). Это вселяет уверенность, что возможности VPC, включая мощный механизм GCP Firewall, будут доступны и для наших подов так же легко и нативно, как для обычных виртуальных машин.
Однако, погружаясь в детали настройки контроля сетевого доступа для подов к ресурсам внутри VPC, но внешним по отношению к самому Kubernetes (например, к базам данных Cloud SQL или другим бэкендам), начинаешь сталкиваться с нюансами. Нюансами, которые заставляют усомниться в "бесшовности" этой интеграции. Эта статья – не попытка принизить достижения Google или GKE. Скорее, это повод для всех нас, инженеров, задуматься о тех важных деталях реализации, которые часто остаются "под капотом". Повод погрузиться глубже, понять, как все устроено на самом деле, и какие компромиссы или сложности скрываются за маркетинговыми лозунгами. Ведь чем сложнее архитектура безопасности, тем выше вероятность ошибки конфигурации, особенно если ее компоненты и их взаимодействие не до конца понятны. Если даже у такого гиганта, как Google, в его флагманском продукте для Kubernetes есть подобные неочевидные моменты, то нам, инженерам, работающим с этими системами ежедневно, тем более важно понимать все тонкости для обеспечения надежности и безопасности наших собственных окружений.
Читать далееПриветствую! Данная небольшая статья будет полезна тем, кому надоело копаться в обычном терминале, кто хочет умный терминал, включающий:
- автодополнение;
- AI-подсказки;
- приятный UI.
Статья из моих архивов
Недавно видел на хабре спор по поводу того, что нам не нужны никакие скриптовые языки, кроме javascript. Утверждение, конечно, спорное, но меня заинтересовала возможность применения javascript на сервере.Поиски привели меня сюда. Из всех представленных там решений, я почему-то (просто оно с первого раза встало и заработало) выбрал библиотеку Node для google v8.
Установка достаточно проста: сначала устанавливаем v8. Его либо можно скачать отсюда, либо, если у вас ubuntu (у меня 9.04, не знаю, что там с другими версиями и дистрибутивами), то можно установить libv8 из репозиториев. Сам Node берем здесь.
Читать далееВы, вероятно, уже слышали, что Google выпустил Firebase Studio как полноценную среду для AI-разработки, основанную на мощной модели Gemini.
Очевидно, гигант не захотел отставать и тоже запрыгнул в поезд хайпа AI-продуктов. Но способен ли он составить реальную конкуренцию популярному Cursor?
Сегодня мы погрузимся в мир двух популярных AI-инструментов для разработки: облачной платформы Firebase Studio от Google и интегрированного AI-редактора Cursor от Anysphere.
Читать далееВот вам маленькая задачка на программирование: реализуйте такой макрос, который принимает в качестве аргумента числовое выражение (числа могут быть целыми или с плавающей точкой) и:
Читать далееНа хабре и в остальном интернете хватает статей с критикой ООП. Кто-то ругает эту концепцию за излишнюю многословность, кто-то рассуждает о плохих аспектах ООП, кто-то сравнивает реализации ООП в разных языках.
После прочтения большинства этих статей и нескольких лет кодинга на C# я заявляю: «ООП - это один большой обман. Никто не понимает, что это такое. Люди просто говорят какие-то умные термины, их собеседники с умным видом кивают, хотя на деле трактуют эти же термины совершенно по-разному».
И вот почему.
Читать далееeBPF vs BitDive: Сравнение решений для системного и прикладного профилирования
Разбираем разницу между eBPF и BitDive: системное профилирование против глубокого анализа Java-приложений. Что выбрать для продакшена?
Читать далееЯ так уже устал оправдываться, почему я снова и снова меняю концепцию, начинаю делать новые прототипы, и так уже полтора года. И буквально в феврале я рассказывал, что всё, я вернулся к истокам и буду делать симулятор. И вот сейчас статья посвящается тому, что симулятора не будет, а я возвращаюсь к разработке замороженного проекта PANGIT.
Давайте попробуем разобраться в основной причине почему так происходит, есть ли положительные моменты в этом или все так плохо и игры никогда не будет...
Многие из вас помнят, какими были IT-школы 10 лет назад. Это были просто сайты с полезными курсами по различным языкам программирования. Не было агрессивного маркетинга и обещаний звездных зарплат. Можно было с гордостью говорить о том, что ты прошёл какие-то курсы. Но главное — эти курсы действительно работали: после них удавалось устроиться на работу. Сейчас всё стало значительно хуже по всем направлениям. Перенасыщенный рынок, конкуренция между школами, вынужденная смена бизнес-модели, появление AI — всё это превратило IT-образование в то, каким мы видим его сегодня: в большой, неповоротливый и неэффективный организм с утраченной репутацией. Давайте разберёмся, как так получилось, и главное — что с этим делать.
Читать далееБольшие языковые модели (Large Language Model, LLM) используют в разных областях: с их помощью генерируют программный код, ищут информацию, озвучивают реплики чат-ботов. А вот при работе с реляционными данными языковые модели часто ошибаются.
Чтобы справиться с этими ошибками, в мы разработали три пайплайна для работы с базами данных. Эти пайплайны представляют собой цепочку связанных между собой языковых моделей: каждая из них генерирует свой ответ, и следующая модель работает с ответом предыдущей. Таким образом мы получаем дополнительный контекст, и запрос к базе данных становится точнее.
Читать далееЯ давний пользователь GitHub. Можно сказать, что на моих глазах он вырос из самобытного GIT-хостинга до внушительной экосистемы для разработчиков под патронажем само́й Microsoft, и по факту стал индустриальным стандартом.
Со временем я стал задаваться вопросом — можем ли мы в своей стране своими силами создать аналогичную экосистему? В которой нет проблем с платежами, не удаляют репозитории и аккаунты из-за поездки в Крым, где российские компании заказчики не опасаются хостить свои коммерческие проекты. В 2023 году я попробовал GitFlic, но не смог им пользоваться из-за нестабильной работы репозиториев. В 2025 году я решил попробовать GitVerse. Проекту уже больше года, и, скорее всего, он созрел для реального применения. В первую очередь меня интересует, есть ли у GitVerse потенциал стать не просто надёжным хостингом для GIT-репозиториев, а развиться в мощную экосистему, не просто повторить функционал GitHub в масштабе 1:43, а реализовать новое поколение индустриальных стандартов для совместного творчества разработчиков и других IT-специалистов.
Читать далее