Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Как победить в игре «Быки и коровы» с помощью теории информации

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

Я поступил в институт в 1978 году, когда игра «Быки и коровы» была на пике популярности. В серии игр никто не мог меня победить, а все благодаря относительно несложному алгоритму, разработанному мною на основе теории информации. Изучив современные источники, я не нашел среди них чего-то похожего на мой подход. Поэтому я решил поделиться своей стратегией в блоге ЛАНИТ, чтобы обсудить его с техническим сообществом.

Читать далее

Как In.Plan помог нам с планом

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

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

Объёмный план затрагивает весь производственный цикл: от закупки сырья и управления запасами до отгрузки продукции клиентам и, конечно, включает производство. Все должно быть согласованно, четко подогнано одно к другому и работать как часы. Без крутой ИТ-системы здесь не обойтись.

С 2016 года мы пользовались зарубежным софтом, но система устарела, а обновления стали недоступны. Нам предстояли муки выбора российского решения, инженерные компромиссы и кастомизация. И тут мы первыми в России рискнули сделать ставку на систему объемного планирования In.Plan. Только вот нюанс: решение было облачным, а нам был нужен крепкий on-premise прямо в нашей промышленной инфраструктуре, ну и других требований к кастомизации было миллион.

Читать далее

Что должно быть на каждой PCB с STM32

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

С моей точки зрения большинство разрабатываемых электронных плат работают под управлением микроконтроллера STM32. Если обобщить их схемотехнику, то можно кое-что вынести за скобки. Вот об этом сейчас и поговорим. Что должно быть заложено в каждую электронную плату на основе МК STM32? Само собой надо добавить квадратные первые пины на вилках, шелкографию, тест пады, симметричные отверстия 3мм по краям для крепления платы, удобный USB для питания и т.п. Но есть кое-что еще. Некоторые особенности проектирования PCB применимы только для STM32. Но обо всём по порядку.

Читать далее

Итоги «заблокированного» 2025 года

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

Привет! Это команда AmneziaVPN, и нам есть о чём вспомнить вместе с вами в уходящем 2025 году. Он стал временем непрерывной борьбы VPN-сервисов с цензорами, что привело к технической эволюции с обеих сторон.

За этот год мы прошли через блокировки, шатдауны и новые вызовы. Каждый месяц приносил новые испытания, и они сделали нас сильнее. Практически весь год регуляторы сразу нескольких стран предпринимали разные действия для блокировки наших серверов, сигнатур протоколов, DNS-адресов, сайтов, приложений и т. д. Со своей стороны мы отвечали теми решениями, которые были необходимы пользователям в конкретный момент, делимся нашим обзором событий, а к итогам вернёмся ближе к концу статьи.

Читать далее

Как писать нативные игры с OpenGL ES для игровой ретро-консоли Anbernic на C#

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

В этой статье я расскажу, как писать игры для консоли Anbernic средствами OpenGL ES на C# .NET8. Для примера напишу примитивный клон Майнкрафта.

Рендерить

Google убивает открытый веб

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

Несколько месяцев назад я писал о прокси-войне, которую Google ведёт против открытого веба при помощи XSLT. Совершенно неудивительно, что Google продолжает продвигать отказ от него, по-прежнему не давая никаких весомых причин, за исключением «мы наживались на FLOSS-библиотеке, в которой наконец нашли достаточное количество багов безопасности, чтобы это служило оправданием». Компания не объяснила, почему решила не устранять проблемы в самой библиотеке или использовать более современную библиотеку, написанную на безопасном языке, воспользовавшись возможностью проапгрейдить поддержку XSLT до более свежей, мощной и простой версии стандарта.

Вместо этого она решила предоставить «полифил» на JavaScript, который, предположительно, можно использовать для вытеснения функциональности. Однако любопытно, что компания не планирует выпускать эту альтернативу в браузере, что позволило бы выполнить прозрачный переход вообще без обсуждения XSLT. Нет, она осознанно отказалась это делать, потребовав от всех, кто использует XSLT, заменить вызов XSLT нестандартным вызовом полифила JavaScript, который должен его заменить.

Читать далее

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

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

Я — системный аналитик. Но долгое время я не применяла системное мышление к себе, я проектировала архитектуры, создавала диаграммы, детализировала процессы и уточняла требования... Но когда речь заходила о моей собственной карьере, я ощущала растерянность. Меня мучил вопрос: «К кому мне подойти, чтобы расти профессионально?»

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

Читать далее

Москву сжали до 93 МБ. Новый формат данных OpenStreetMap

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

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

В октябре 2025 года разработчики представили новый формат хранения данных GOB («Geo-Object Bundle», пакет геообъектов). Это вспомогательный формат для библиотеки GOL (Geo-Object Library), которая была раньше. В новом формате реализовано сжатие zlib и другие оптимизации, что позволило существенно уменьшить размер файлов, скорость загрузки и обработки карт. Работа с нашей Землёй стала гораздо быстрее, если можно так сказать.

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

Читать далее

Китай украл и развернул технологию литографа, способного производить 2-нм чипы

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

Но пока потенциально: разбираем журналистское расследование от Reuters о секретном проекте КНР. Второй материал из цикла торговой войны между США и Китаем.

Читать далее

Игрушка на елку к Новому году

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

Приветствую, Хабр!

Перед Новым годом для поднятия настроения до праздничного, захотелось сделать что-то необычное и новое. Все мы украшаем елку, ставим на вершину звезду, вешаем на ветки игрушки и ждем Деда Мороза. Женя, 41 годик.

Читать далее

Разбираемся с новой мощной платой Orange Pi 6 Plus на базе Armv9 Cix P1 CD8160

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

Компания Shenzhen Xunlong Software выпустила новую open-source плату на базе 12-ядерного высокопроизводительного процессора Armv9 Cix P1 CD8160. Плата предыдущего поколения Orange PI 5 построена на Rockchip RK3588. Новый процессор Cix P1 состоит из 8 ядер Cortex‑A720 и 4-х Cortex‑A520, и обещает прирост производительности на 300% по сравнению с последним Rockchip RK3588. Ядро Cortex‑A720 было впервые представлено публике в 2023 году и через два года уже готова плата на новых процессорных ядрах. Из коробки работает UEFI/TianoCore EDK II (ED2) с запуском Debian, Android, Windows 11. Под катом разберемся с новой архитектурой Armv9, рассмотрим процессор Cix P1, оценим производительность новой платы и сравним с предыдущим поколением, платой Orange PI 5 Plus.

Читать далее

Архитектурный квиз: костыль или элегантное решение?

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

Отказоустойчивый и масштабируемый энтерпрайз невозможно спроектировать по книжкам. Одно и то же решение может фигурировать и в best, и в bad practice — и, что забавно, иногда переходит из одного списка в другой. Ещё недавно монолиты считались злом, а теперь снова в моде.

Хотите посмотреть, как знакомые паттерны ведут себя в реальном контексте?

Чтобы показать это на практике, я собрала три инженерных кейса. Каждый оформлен в формате детективного квиза: роль, фабула, вопросы на размышление, разбор и выводы. Попробуйте разобраться в проблеме, пройти тест и определить: где костыль, где инженерный компромисс, а где — настоящая best practice.

Читать далее

Под капотом платежей: чем отличаются ПС «Мир» и СБП

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

В этой статье расскажем, чем отличаются ПС «Мир» и СБП и почему именно вместе эти системы делают безналичные расчёты удобными, надёжными и доступными каждому.

Читать далее

Ближайшие события

Всё, что нужно знать про аллокаторы в Rust (и как написать свой)

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

Мне в Rust всегда заходила одна штука. Он довольно быстро приучает не держать в голове мусор из серии «а я точно это освободил??». Большая часть рутины с памятью уезжает в автоматизм языка, и ты можно прям выдохнуть и думать про данные и инварианты, а не про то, где у тебя очередной free потерялся.

Но. Как только начинаешь копать чуть глубже, выясняется, что у Rust есть вполне конкретная рука, которая раздаёт память под все эти Box::new(42), Vec::push и растущие String. Имя этой руке простое: аллокатор. Он отвечает за то, что происходит в куче, и именно через него проходят почти все интересные истории про производительность и поведение памяти.

Читать далее

Раз, два, три — ёлочка, ГОРИ

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

«А давайте вы сделаете какой-нибудь новогодний рисёч?» — примерно такую задачу поставили нашей Positive Labs этим летом. Поскольку мы любим изучать разнообразные железки, первым делом подумали про умные устройства. А что у нас с Новым Годом обычно ассоциируется? Правильно — новогодняя ёлка. Быстрый поиск в сети показал, что smart-ёлки существуют, и даже не от дядюшки Ляо, а вполне себе серьезной компании. На том и порешили — берем Twinkly Light Tree и смотрим, что там с безопасностью.

Так что же там с безопасностью?

Эпоха «белых списков»: почему ваши конфиги в декабре 2025 года начали превращаться в тыкву, и что нас ждет…

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

Всем привет, декабрь 2025-го принес нам не только предновогоднюю суету, но и явное ощущение того, что гайки закручиваются на новый уровень. Если раньше блокировки напоминали стрельбу по площадям, то сейчас мы видим признаки внедрения концепции Default Deny (запрещено всё, что не разрешено). Пока это не тотальный «белый список» на всю страну, но в отдельных регионах и на мобильных сетях тенденция налицо: если твой трафик не похож на типичный поход за хлебом в Яндекс или ВК, то с большой вероятностью он будет придушен

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

Картина вырисовывается интересная и местами печальная:

Читать далее

JavaScript: заметка об Invoker Commands API

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

Привет, друзья!

В этой небольшой статье я хочу рассказать вам о новом Web API - Invoker Commands.

Invoker Commands API позволяет декларативно управлять поведением некоторых интерактивных элементов с помощью кнопок. "Декларативно" означает, что управления элементами осуществляется только с помощью HTML, без JavaScript.

На сегодняшний день этот API поддерживается всеми основными браузерами (в Safari пока только в качестве экспериментальной возможности).

Читать далее

SMS — это дыра, а мессенджеры — шпионы. Переходим на TOTP и повышаем безопасность за 5 минут

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

Беглым поиском по Хабру я с удивлением обнаружил, что мы часто обсуждаем сложные архитектуры безопасности, но игнорируем базу, которой пользуемся каждый день. В свете последних событий в РФ, утечек баз операторов и навязывания экосистемных мессенджеров, пора расставить точки над i.

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

узнаем подробности

Разбираем схемотехнику Macbook Pro 15'' ч.1

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

Регулярно в процессе разработки электроникивозникают вопросы: «А как правильно? А так можно? Будет ли это работать?». В связи с этим предлагаю посмотреть: а как же проектируют свои устройства передовые технологические компании? Где они ошибаются, а что делают превосходно.

Читать далее

В топку Live Coding. Он измеряет уровень стресса, а не навыки программирования

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

Некоторым людям нравятся собеседования с написанием кода. Я к их числу не отношусь.

Недавно мне на LinkedIn попался пост такого содержания:

"Мы задаём каждому соискателю тривиальную задачу на программирование. Что-нибудь вроде: «Дан список чисел, нужно вернуть сумму чётных из них». И такая задача не предполагается как сложная или заумная, и её цель не в том, чтобы кого-то отсеять, теоретически.

Это лишь базовая проверка. Разработчик или SRE с опытом от 6 до 10 лет должен решать такие во сне, согласитесь?

Оказывается, нет.

Где-то 75% кандидатов не справляются. И не только джуниоры. Я говорю о людях с приставкой «Senior» в их квалификации. О людях, которые заявляют, что учат новичков. О тех, кто говорит, что имеет за плечами годы опыта в продакшене.

Для меня это загадка".

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

Читать далее