В далеком 2010 году я решил вступить в партию GameDev ибо на рынке было глухо средь космических стратегий. Знаменитый СтарКвейк на стратегию никак не тянул, в сети главенствовал Огейм и его бесчисленные клоны. Но три ископаемых и достаточно простенький вариант развития колоний давил на меня отсутствием реалистичности. Немного пройдясь по гитхабам было решено писать с нуля.
Вариантов на тот момент особо не было, фронт на Flash бэк на PHP + MySQL - классика того времени. Писалось в одно лицо с привлечением художника и дизайнера, за что им бесконечное спасибо! Проект сначала жил на моем ноутбуке, затем на скромном VPS и под конец перебрался на качественный дедик в хецнере (да, были времена : ) с кучей ядер, памяти и диска. В период расцвета онлайн был 100-150 игроков. Но, как обычно, донат начал снижаться, и когда проект перестал оплачивать сервер я подождал пару лет и понял что "лошадь умерла, можно с нее слезать"
Параллельно проект ушел в 2019 на гитхаб, где был доступен абсолютно всем вплоть до недавнего времени. Единственная проблема - бэкап БД не уцелел, точнее уцелела версия 2012 года, в которой много чего не хватало.
Примерно месяц назад мне закралась мысль, а почему бы не использовать курсор для реанимации БД, ну он же может пройти по коду и все вернуть как надо? Оказалось может...
И тут все понеслось... Сначала мы разобрали исходники Flash и перепилили фронт, потом добили в БД то, чего не хватало, затем обработал напильником все картинки и "мультики", стараясь не уничтожить геймплей. Переработали ископаемые и элементы, все же 60 ископаемых оказались оверкилом. Поправили баланс кораблей и колоний...
Читать далееЕсть довольно соблазнительная идея: если одна из причин низкой рождаемости — жилищная теснота и неуверенность в будущем, почему бы не решить проблему радикально? Не выдавать ещё один сертификат, который неизбежно растворится в стоимости квартиры, а дать семье настоящий дом. С участком. За городом. Лучше сразу с двумя машинами. Глава семьи работает удалённо, жена может заниматься детьми, места хватает на троих или четверых, ипотека не висит над головой. Перед глазами немедленно возникает знакомая по американским фильмам и фотографиям блогеров картинка: белый заборчик, зелёный газон, одинаковые аккуратные домики, школьный автобус, соседи жарят мясо на заднем дворе. «В этом районе живут простые учителя и служащие». Америка вообще в массовом представлении — не столько страна небоскрёбов, сколько страна бесконечных пригородов.
Читать далееТри независимые попытки сделать для PostgreSQL быстрый точный десятичный тип расширением заглохли. Но не потому, что не получилось ускорить арифметику, — арифметику как раз каждое из них ускоряло. Тогда в чём же дело? Здесь я разбираю технические решения в устройстве numeric, которые приводят к высокой стоимости использования этого типа данных. Изучение провожу в сравнении с устройством типа decimal в DuckDB - будучи OLAP СУБД, он свободен от некоторых ограничений PostgreSQL, и гонясь за производительностью, выбирал другой путь развития.
Копнуть матчастьЯ, как и многие, пользуюсь величайшим облачным хранилищем — перепиской с самим собой. Туда улетают интересные посты, статьи, лайфхаки, мемы и фильмы, которые «посмотрю потом». Увидел я как-то этот мем и задумался, что нужно бы забэкапить это дело.
Привет! Меня зовут Игорь. В статье рассказываю про инструмент для бэкапа сообщений из VK с сохранением вложений.
Читать далееКвест пройден! Я установил на смартфон линукс, живя в России, в августе 2026 года, без VPN, и теперь у меня Ubuntu Touch 24.04-1 на борту старого доброго Poco X3 NFC. Конечно, в других условиях места или времени можно было бы сделать всё гораздо проще, но… Это был вызов, и я его принял. Не спрашивайте меня, зачем я это сделал – хотел поразвлечься, получить девайс с линуксом, который можно брать с собой куда угодно. Возможно, когда-нибудь я поделюсь и опытом использования подобных девайсов... Но сейчас, когда квест по установке Ubuntu Touch на смартфон, которому средняя цена на авито пять тысяч рублей, пройден, я хочу поделиться своим опытом его прохождения (возможно, чтобы помочь кому-то, кто в будущем решит пройти этот квест самостоятельно). И это не просто “подождать неделю, нажать кнопочку в программе – и она всё сама сделает”, у меня установка заняла приличное время, не всё оказалось так просто (точнее даже так: всё оказалось совсем не просто). Собрав, пожалуй, все грабли, какие только могут быть встречены простым пользователем (за исключением полного окирпичивания), я готов описать их, а самое главное – поделиться найденными мной способами решения каждой проблемы.
Статья называется “путь к ubuntu touch и обратно” потому, что в ней я опишу не только, как установить на Poco X3 NFC линукс, но и как вернуться с него обратно на андроид, возможно – даже на лучшую версию, чем у вас была раньше. Если вы (вдруг) решите проделать этот путь вместе со мной, сначала прочитайте всё, от первого до последнего слова, хорошенько взвесьте своё решение – потянете ли, и… возможно, вы тоже захотите попасть в клуб владельцев “линуксофонов”, который насчитывает от 150 до 250 тысяч активных пользователей (в мире линукс нет скрытой телеметрии, но когда телефон проверяет наличие обновлений, сервер фиксирует уникальный запрос). Итак, пристегните ремни – и… В любом случае сразу хочу предупредить, что все действия со своим смартфоном вы выполняете на свой страх и риск, я здесь ни при чём, я описал свой опыт, если у вас что-то может пойти не так, оно и пойдёт не так! В общем, если мне не удалось вас испугать – вперёд, поехали!
Читать далееЯ не программист, не девопс и не системный администратор. По диплому — недоучившийся инженер-энергетик, программировать учился сам по учебникам, команды никогда не было. При этом у меня выросли два сервера, полсотни виртуалок и десяток микросервисов. В ночь на четвёртое июня всё это едва не закончилось: кто-то зашёл на резервный сервер и снёс двадцать две виртуальные машины вместе с дисками примерно за десять минут. Разбираю по шагам, где именно я оставил дверь открытой.
Читать далееВ этой статье мы решим классическую задачу из курса гидродинамики [4]: сделаем симуляцию плоского течения в канале. Для этого мы напишем на Python код, численно решающий систему дифференциальных уравнений в частых производных, описывающих поведение несжимаемой жидкости:
Читать далееКаждый день я изучаю что-то новое. Просматривая очередной курс на компьютерную тематику на Степике я задался вопросом. Насколько мне сегодня нужны эти знания? Не просто для изучения ради изучения, общей эрудиции или тренировки для ума. А именно как полезные практические знания? Или может и не нужны вовсе?
Ответ на этот вопрос сильно зависит от целей. Зачем я учусь и чего хочу этим добиться? Многие приходят к программированию, и вообще в IT, с желанием получить работу (и бабки, бабки, с*ка, бабки!). У меня такой цели никогда не было. Это и плюс, и минус. И причина своеобразного взгляда на мир компьютерных наук, в самом широком смысле термина. Для меня это не прагматика, а прежде всего средство для творчества и самовыражения.
Читать далееПочти в каждой достаточно большой IT-команде рано или поздно появляется человек, про которого коллеги думают примерно одно и то же: с ним тяжело.
Самое интересное, что сам он совершенно не обязательно считает себя сложным человеком. Наоборот: он прямой, принципиальный, требовательный, профессиональный и просто переживает за результат.
Если перевести эгосинтонность на язык IT, получается довольно точная формула: окружающие уже видят баг, а внутри собственной системы человека он всё ещё зарегистрирован как фича.
Читать далееВсё началось с желания организовать и автоматизировать работу с Terraform, впоследствии с Terragrunt, выстроить управляемый процесс, централизовать, настроить понятный RBAC, в общем, сделать так, «чтобы было красиво». Было сделано несколько подходов, и были рассмотрены разные варианты. Отправной точкой стало структурирование кода, его декомпозиция и рефакторинг, и постепенно дошло до автоматизации самого процесса применения (или просто plan/apply). К этому моменту основная часть кода сконцентрировалась в монорепозитории в self-hosted GitLab, общая и повторяемая логика отделилась во внутренние приватные модули, а сам код вырос в объёмах: более 4 000 .tf файлов, не учитывая внешних и внутренних модулей, более 900 проектов (каталогов), более 30 000 ресурсов, более 30 уникальных провайдеров Terraform. Конечно, все эти условия в той или иной степени повлияли на конечный выбор.
В этой статье расскажу, как мы перешли от ручного управления Terraform и Terragrunt к автоматизированному процессу на базе Atlantis, какие альтернативы рассматривали, почему выбрали именно Atlantis и с какими неочевидными особенностями столкнулись при его эксплуатации.
Читать далееАлиса уже умеет за один диалог понять, какой пылесос нужен покупателю, подобрать модели, показать цены и привести к покупке. Следующий шаг очевиден: агент человека сам запросит цены, остатки и доставку у агентов магазинов, выберет предложение и оформит заказ. MCP, A2A, UCP, AP2, ACP и YCP постепенно собирают техническую основу такой торговли. Разбираю, что из этого уже работает в России и США, что изменилось всего за последний месяц и насколько реально, что через 1–2 года человеку станет все реже нужен сайт интернет‑магазина.
Читать далееБывает так, что нужно быстро вытащить статью с Хабра, сдернуть с нее чистый текст, разметку и картинки. И желательно сделать это без разворачивания огромных парсеров и сложных сетапов. Мне нужен был простой инструмент, который делает ровно одну задачу: берет ID статьи, забирает весь контент, скачивает медиа и при желании сохраняет все в аккуратный Markdown. Так появился habraloader.
Читать далееПривет, Хабр! Однажды я подумал, что вот не умеют разработчики жить. В каждом из языков есть свои напасти (от которых, в принципе, спасаются разве что разработчики-полиглоты). Возьмем хотя бы C++ — даже без его шаблонов, исключений, и т.д., там все еще много мраков. Возьмем хотя бы iostream — он, блин, весит 2 МБ в последней версии GCC при компиляции под Windows! Или, вот, std::string — динамическая строка. Звучит интересно на бумаге, учитывая, что язык не из добрейших, но на практике...
Читать далееГибкие печатные платы ценятся за способность изгибаться и принимать нужную форму внутри корпуса устройства. Но эта же гибкость становится недостатком в тех местах, где плата должна оставаться жёсткой — например, в зоне установки компонентов или подключения разъёма. Для решения этой задачи применяются платы жесткости (stiffener).
В этой статье разберём, что такое stiffener, зачем он нужен, из каких материалов изготавливается и как крепится к гибкой плате.
Читать далееПривет, Хабр! Меня зовут Денис Корбаков, я технический директор «Смарт-Софт». Мы разрабатываем NGFW и регулярно разбираем, какие сетевые события можно использовать для независимого контроля автоматизированных систем. Последний год эта задача резко усложнилась. В инфраструктуре массово появился новый операционный тип машинного субъекта: автономный агент, который сам выбирает инструменты, меняет контекст и делегирует полномочия.
Zero Trust никогда не ограничивался только людьми. NIST SP 800-207 прямо включает в модель non-person entities: сервисы, приложения, автоматизированное ПО, и обсуждает их ещё с версии 2020 года. Субъект как класс не новый, новыми являются масштаб, автономность и модель поведения. Большинство корпоративных реализаций IAM на практике заточены либо под человека с интерактивной сессией, либо под стабильный сервисный аккаунт, который работает годами с предсказуемым поведением. ИИ-агент находится между этими моделями: не человек, способный самостоятельно оценить допустимый объём своих полномочий, и не полностью статичный сервис с неизменным поведением. Как отмечает исследование Cloud Security Alliance, проведённое при поддержке Aembit, существующие подходы к IAM испытывают нагрузку, на которую изначально не проектировались.
Читать далееЧеловек уже решил записать еду. Но вместо ввода приложение предлагает поиск, штрихкод, фото, AI, рецепт, избранное — и ещё несколько дверей. Я сравнил девять трекеров и проверил на моём обеде, где появляется лишнее состояние.
Читать далееПрограммисты 1C не любят типовые конфигурации.
Объясню на одном примере и станет понятно, что 1C не заботится о тех, кто использует ее код в своих решениях.
Читать далееПагинация ломается не только внутри запроса к базе. Это цепочка: бэкенд определяет порядок и границу страницы, фронт хранит курсор и объединяет ответы, а пользователь меняет фильтры, повторяет запросы и возвращается на экран. Разберём шесть ситуаций, в которых локальные проверки зелёные, а список целиком работает неправильно.
Проверить пагинациюВ июле OpenAI выпустила новую линейку моделей, в конце месяца дважды поменяла цены, а на осень назначила отключение Assistants API, Videos API и всего поколения GPT-4. Мы переподключали под эти изменения свои сервисы и по ходу сверяли каждый шаг с документацией. Заодно посмотрели, сколько русскоязычных руководств успело устареть — оказалось, почти все, включая августовские.
Читать далееВводное.
Открываешь статью с многообещающим заголовком. Читаешь пять минут. Потом десять. И вдруг осознаешь, что потратил время впустую: перед тобой либо пересказ Википедии, либо философские размышления автора на тему «как же тяжело жить», либо кривой перевод чьей-то субъективной заметки с Medium, в которой нет ни строчки кода, ни одной метрики, ни архитектурной схемы.
Соотношение сигнала и шума на Хабре неуклонно падает. Инженеры приходят сюда за опытом, паттернами и разбором полетов, а получают информационный фастфуд.
Недавно в ленте мелькнул перевод заметки от именитых вице-президентов Microsoft о том, что «ИИ убивает карьеру джунов». Потратив время на чтение, я обнаружил, что это классическое управленческое эссе. В нем ноль фундаментальных механизмов, ноль алгоритмов, ноль метрик производительности и ноль конфигураций. Это просто мнение, замаскированное под техническую аналитику.
Когда автор берет такой «мусор», решает, что он полезен, и тащит его на Хабр, он не делится опытом. Он крадет время тысяч инженеров.
Теоретические статьи и исторические экскурсы имеют право на существование. Но они должны содержать оригинальное исследование, глубокий анализ или систематизацию фактов. Если статья просто пересказывает общеизвестные факты без новой аналитики — это перепост Википедии, которому место в личном блоге, а не в профильных хабах.
Всё началось с анализа статей для другого разбора, в итоге вылилось в решение автоматизации.
а конкретно, спасибо вот этой статье.