Обновить

Все потоки

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

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

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

Дисплеи с парящим изображением существуют уже множество лет; они используются, например, для управления лифтами без касаний. Также их можно встретить на ресепшенах, в банкоматах и других местах. Узкая область видимости идеально подходит для безопасного ввода данных, например, PIN-кодов. А со времён пандемии такие концепции обратили на себя большое внимание, поскольку они обеспечивают максимальную гигиену. Принцип, лежащий в основе этого дисплея, не так уж сложен, поэтому я решил изготовить его самостоятельно.

Читать далее

Новости

The Elder Scrolls II: Daggerfall (1996/2023). Симулятор фэнтезийного средневековья

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

«Существует разница между тем, чтобы быть успешным и быть популярным… Если ты любишь своё дело… то есть шансы, что ты будешь успешным… Если ты хочешь быть популярным, то ты, скорее всего, провалишься…» — (с) Джулиан Лефей, «отец» серии The Elder Scrolls

30 лет назад свет увидела игра The Elder Scrolls II: Daggerfall — продолжение «Арены», вышедшей в 1994 году. Два года назад я уже делал детальный обзор «The Elder Scrolls: Arena», а сейчас хочу подробно рассказать про вторую часть франшизы.

В конце 2023-го года у Daggerfall вышел ремейк на Unity (версия 1.0). И ремейк получился на удивление хорошим. О нём я расскажу в конце статьи.

«Приготовьтесь погрузиться в вашу новую обсессию» — говорилось на оригинальном боксе с игрой. Эта игра действительно стала для меня чем-то вроде обсессии. Ниже я объясню, чем же она так захватывает.

Читать далее

Подробно об ABI для работы с C++

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

Двоичный интерфейс приложений, чаще именуемый просто ABI — это концепция, которая кажется знакомой и незнакомой одновременно. В каком смысле знакомой? Об ABI часто говорят в контексте устранения неисправностей, упоминают в статьях. Иногда даже приходится решать проблемы с совместимостью, которые провоцирует этот интерфейс. А в каком смысле незнакомый? Дело в том, что, если кто-то попросит вас описать, что такое ABI — то вы обнаружите, что понимаете, о чём речь, но чётко сформулировать ответ на этот вопрос сложновато. В конце концов, можно ограничиться формулировкой, указанной в Википедии: «набор соглашений для доступа приложения к операционной системе и другим низкоуровневым сервисам, спроектированный для переносимости исполняемого кода между машинами, имеющими совместимые ABI». Возникает ли проблема с такой формулировкой? Нет, в качестве общего описания этого вполне достаточно. Но оно может казаться немного поверхностным.

На самом деле, в информатике такая ситуация встречается нередко. Информатика — это дисциплина, не стремящаяся к абсолютной строгости. У многих концепций нет чёткого определения, зачастую бывает достаточно, чтобы описываемый феномен был общепонятным. Итак, чтобы не увязнуть в определениях, давайте рассмотрим, что именно представляют собой такие двоичные интерфейсы, и какие факторы влияют на их стабильность.

Читать далее

Как я собрал базу визовых требований, где каждая ячейка ссылается на официальный источник

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

Привет, сообщество. Где-то два месяца назад мне пришла в голову идея, очень простая по своей сути, но ой как обширная, если начать в ней копаться более подробно.

Читать далее

Мы вас видим

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

Есть такая забавная категория людей в разработке, давайте назовём их IT-волки. Это те самые ребята, у которых в 26 лет уже 12 лет опыта, в 27 два проекта и архитектура уровня «я тут всё с нуля поднял», а в 28 управление двумя командами под миллион MAU.

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

Читать далее

Как мы сделали простой мониторинг загрузки станков через Zigbee-сеть: open source стек без кабелей и вендорлок

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

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

Читать далее

Уникальный смартфон из 2002'ого с процессором m68k и GPU: инженерное чудо Palm i710

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

Мы все с вами привыкли, что начиная с 2000 года, на рынке мобильных процессоров доминирует ARM. Сегодня устройства на базе данной архитектуры окружают нас везде: смартфоны, колонки, вейпы, часы и многие другие устройства. Однако раньше всё было не так и когда-то основным конкурентом ARM была легендарная компания Motorola...

В 90-х годах, Motorola m68k был знаковым процессором. Он использовался во десятках легендарных устройств: компьютерах Mac, телефонах StarTAC и КПК от компании Palm. И в 2002 году, Palm представила свой первый коммуникатор — i710, который сочетал в себе классический процессор из 90-х и современный радиомодуль. Сегодня мы с вами разберем это чудо инженерной мысли, изучим его схемотехнику и компонентную базу, и узнаем, на что был способен этот красавец на практике. Если любите настоящие технарские статьи — жду вас под катом :)

Читать далее

Путь к миллиону точек: как я переписывал плоттер три раза, прежде чем он перестал лагать

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

Или: как embedded-разработчик случайно написал визуализатор временных рядов

Это моя первая статья и сразу на тему в которой я разбираюсь примерно никак. Ее можно воспринимать как условный "дневник разработчика".

Статья написана не без помощи LLM, от нее по большей части редактура. Прошу камнями не кидаться

Приятного чтения!

С чего всё началось

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

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

Но иногда появляется потребность в визуализации. Пока речь идет о низкочастотных датчиках и малом количестве данных - все довольно просто, но как только данных становится больше, а частоты выше - всплывает множество нюансов. При 70 кГц через 10 секунд работы датчика у меня уже 700 000 точек. Через минуту – 4.2 миллиона. А пользователь при этом хочет масштабировать/панорамировать оси, выделять области, нажимать кнопки – и всё это должно отзываться мгновенно. Стандартный подход «передать всё в библиотеку» ломается очень быстро.

Читать далее

Главный в бизнесе — клиент, да? В Парагвае всё ровно наоборот

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

Статья написана на основе интервью с В. Савиным, основателем мебельной мастерской в Парагвае.

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

Прошло семь с лишним лет, и теперь у меня в Парагвае целое производство. Делаю развивающую мебель Монтессори, детские кровати, столы, комоды. И отдельно деревянный спортинвентарь, проще говоря шведские стенки, кубы для кроссфита, уличные городки, по которым дети лазят. Сорок девять наименований серий.

И знаете, при всём при этом всерьёз меня мучает, по сути, только одно. И совсем не то, о чём вы сейчас подумали.

Читать далее

Путеводитель по чужим STL

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

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

EA, Facebook, Google, Adobe, LLVM и рядок компаний поменьше тратят человеко-десятилетия в поисках ответа на главый вопрос жизни, Вселенной и всего такого «почему std:: это медленно, непредсказуемо и жрёт память». По аналогии с прошлой статьей вам не потребуется знать стандарт наизусть, а будет достаточно понимать, что такое указатель, чем вектор отличается от дерева и почему промах в кеше это дорого, а дальше я пройдусь по разным стандартным библиотекам и про каждую немного расскажу, что это, зачем оно появилось и где об него можно больно удариться, потому что про вот этот последний пункт обычно забывают "продаваны" и прочие студийные еванглелисты, когда расказывают какое там всё красивое, легкое и с++двадцатое.

Читать далее

Инженер попросил нейросеть помочь с кодом…

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

Я инженер - технолог. Время от времени мне бывает нужно что то посчитать,  обычно хватает excel. Недавно возникла довольно интересная задача (можно сказать вызов) для которой возможностей excel, либо моих навыков в нём оказалось недостаточно. Нужно было откалибровать стенд введя в его математику 4 калибровочных коэффициента подобрав их значения так, чтобы десяток протоколов измерений сошелся к общему знаменателю. Десять разных значений для каждого коэффициента давало 10000 комбинаций помноженное на 10 протоколов которые нужно было пересчитать....

Читать далее

Как я в 14 лет написал свой аналог LeetCode с котиками за месяц (и немного поехал башкой)

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

Привет, Хабр! Мне 14 лет, и пока мои ровесники ругаются в cs2, а нормальные люди спят по 8 часов, я решил, что мне катастрофически не хватает стресса в жизни. Поэтому за последний месяц я написал собственную платформу для решения алгоритмических задач - с изолированным выполнением кода, микросервисами и котиками.

Встречайте - ЛитКот. Проект уже крутится в проде на leetcot.ru, а в этой статье я расскажу, как организовать архитектуру такого сервиса, не задохнуться в монорепе и защитить сервер от мамкиных хакеров (вроде меня самого).

Зачем нужен ещё один тренажёр?

LeetCode - это классика, но давайте честно: решать сухие задачи про инверсию бинарного дерева бывает невероятно скучно. Особенно когда на реальном собеседовании тебя попросят просто отцентрировать div или переложить JSON из одной апишки в другую. Мне захотелось добавить геймификации, сюжета и немного (а точнее, нездорово много) безумия.

Например, в моём курсе «Щёлкаем алгоритмы как рыбку» нет унылой задачи «Поиск элемента в отсортированном массиве». Зато есть «Прятки с сосиской»! Пользователю нужно написать алгоритм бинарного поиска за O(log n), чтобы помочь коту найти сосиску в контейнерах. Согласитесь, ради виртуальной сосиски писать код как-то приятнее, чем ради мифического оффера в бигтех.

Читать про котиков и алгоритмы

Смартфон на АА-батарейках: как я собрал автономный медиакомбайн, живущий в среднем 10 дней от одного заряда

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

Смартфон на АА-батарейках: как я собрал автономный медиакомбайн, живущий в среднем 10 дней от одного заряда

Я всегда мечтал про умный гаджет, работающий от надежного источника питания АА. Но современный рынок, так и не смог мне ничего предложить...Поэтому сделал сам)

Хотел поделиться результатами, и узнать ваше мнение.

Читать далее

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

Что нового в C++29: итоги июньской встречи в Брно

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

13 июня закончилась встреча комитета по стандартизации C++ (также известного как WG21) в Брно (Чехия), на которой комитет работал над будущим стандартом C++, C++29. В этой статье кратко пересказаны все принятые в него нововведения с примерами их использования и ссылками на оригинальные пропозалы для тех, кто захочет познакомиться с ними детально.

Читать далее

Я не хотел писать ORM для Kotlin/Native. Мне просто нужен был PostgreSQL

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

Всё началось с архитектурного тупика. Я занимался бэкенд-частью low-code платформы, на базе которой автоматизировались внутренние процессы крупных компаний. У нашей платформы была жесткая специфика — обязательный и хардкорный оффлайн-режим. Наши пользователи — это прорабы на удаленных строительных объектах и геологи в тайге, где связь пропадает не на пару минут, а на целые дни.

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

Поскольку платформа мультитенантная, микросервисная и крутится в Kubernetes, мы быстро упёрлись в проблему неэффективного использования ресурсов. Тенант отдельной компании может «спать» часами или даже днями, не создавая вообще никакого трафика, а потом пачка юзеров одновременно выходит из оффлайна, и нагрузка на сервис взлетает по экспоненте. Держать под каждый тенант постоянно запущенные и простаивающие поды — безумно дорого.

Логичное решение — поднимать сервисы по требованию ближе к моменту реальной нагрузки (Scale-to-zero). Но тут мы упираемся в Cold Start. Пока сервис просыпается, нагрузка уже успевает накрыть инфраструктуру. Так время запуска из абстрактной технической метрики превратилось для нас в инструмент экономии бюджета.

Читать далее

Браузерные расширения от А до П, где П — публикация в Google Store

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

Всем привет! Меня зовут Александр, я продуктовый инженер в KTS.

Недавно мы разрабатывали AI-копайлот для сервис-деска в виде расширения на Chrome. Копайлот подсказывал оператору ответы для клиента на основе контекста диалога, истории обращений и базы знаний компании. Уже на старте стало понятно, что разработка расширений сильно отличается от привычной фронтенд-разработки.

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

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

Сразу задам фрейм: в статье речь пойдет именно о расширениях для Chrome (Manifest V3), хотя многие подходы будут применимы и к другим браузерам на базе Chromium.

Читать далее

Вы уверены, что знаете, что такое «human-in-the-loop»? Я тоже был уверен. Пока не полез проверять

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

Термин стал попадаться на глаза слишком часто. Для обычного базворда — явный перебор. Я полез разбираться. И наткнулся на кое-что, от чего у меня реально похолодело.

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

В 2019 году антрополог Madeleine Clare Elish из Data & Society взяла эту метафору и вывернула её наизнанку. Она ввела термин «moral crumple zone»: человек в сложной автоматизированной системе может стать таким же компонентом-поглотителем — только в отличие от автомобиля, здесь сминаемая зона защищает не человека, а систему. Ценой человека.

Шесть лет назад это была гипотеза одного антрополога. Сегодня — судя по тому, что я нашёл, когда три дня не вылезал из исследований, опросов разработчиков и полувековой психологии внимания, — это уже не гипотеза. Это диагноз.

Sonar опросил 1100+ разработчиков в январе 2026-го. Результат: 96% не уверены в функциональной корректности кода, который написал AI. Но вот в чём штука — проверяют его перед каждым коммитом меньше половины. AWS CTO Вернер Фогельс назвал это «verification debt»: AI ускоряет написание кода и одновременно замедляет его понимание, потому что генерировать стало проще, чем разбираться, что именно нагенерировали.

Один из участников свежего исследования (Baltes et al., март 2026) сформулировал это без дипломатии: «они буквально используют тебя, чтобы ты критически оценил их AI-слоп и дал ему следующий промпт».

Читать далее

«Мучаем кубик»: параметрическое проектирование и анализ нагруженности 3D модели (для FDM 3D печати) во FreeCAD

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

В одной из прошлых статей мы рассмотрели такой интересную тему, как анализ нагруженности 3d модели, производимый с помощью open source программы PrePoMax, где для себя отметили, что подобный подход, с использованием внешних модулей, в значительной степени развязывает руки, позволяя производить моделирование в любом удобном инженерном CAD-е, даже том, в котором не реализован анализ нагруженности. 

Таким образом, с одной стороны, это может быть довольно удобно, с той точки зрения, что можно делать модель в абсолютно любой среде, после чего произвести её анализ;

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

Для чего всё это вообще может быть нужно: основной целью всего этого является прикидка — а выдержит ли 3d модель ту нагрузку, которая будет к ней прилагаться в дальнейшем? 

Далее мы рассмотрим самый простой и доступный в понимании подход, который, на мой взгляд, имеет смысл с точки зрения его применения при анализе моделей для 3d печати, в домашнем техническом хобби творчестве…

Читать далее

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

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

Представьте: пользователь добавляет одного сотрудника в группу где‑то в глубине иерархии — и сидит, смотрит на крутящийся лоадер почти минуту. А запрос «покажи всех участников этой группы» отрабатывает так долго, что проще сходить за кофе. Стоит иерархии стать чуть глубже — база и вовсе падает по тайм‑ауту. Именно так вела себя наша старая схема хранения оргструктуры, когда бизнес пришёл с новыми аппетитами: сотни тысяч человек в одной группе и вложенность втрое больше, чем та, на которую всё проектировалось.

Так выглядела наша точка отсчёта. Речь о Директории — компоненте B2B‑платформы Яндекс 360, который отвечает за жизненный цикл организаций и служит единым источником истины об их оргструктуре для других сервисов: Календаря, Почты, Мессенджера, Диска. Когда вы ставите встречу на целый отдел или отправляете общую рассылку для бухгалтерии, под капотом к Директории прилетает запрос «Дай мне всех пользователей этой группы с учётом всей вложенности». Это наш самый горячий запрос, и старая архитектура с ним перестала справляться.

Привет! Меня зовут Малик, я занимаюсь развитием B2B‑платформы в Яндекс 360. В этой статье я расскажу, зачем нам вообще понадобился граф при хранении оргструктур, почему мы решили засунуть этот граф именно в PostgreSQL и как мы это реализовали. А ещё — как нам удалось выкатить такое масштабное архитектурное изменение в продакшен без даунтаймов и что мы получили в итоге.

Читать далее

Как оптимизировать LLM-инференс в 2026 году

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

Если вы в 2026 году запускаете LLM в продакшене, то почти наверняка больше всего денег тратите на инференс. Одна неоптимизированная модель размером 70B может сжигать десятки долларов в час на нескольких A100, тогда как грамотно оптимизированный стек дает сопоставимый результат за сравнительно меньшую сумму. При активном продакшене это выливается в тысячи долларов в месяц разницы только за счет настройки инференса.

Но как это сделать?

Недавно я наткнулся на подробный гайд по оптимизации инференса на JobsByCulture. Внутри — перевод статьи + мои наблюдения и мысли поверх.

Читать далее
1
23 ...