Pull to refresh
128K+
201
Евгений@interpres

User

244,2
Rating
80
Subscribers
Send message

Синхронизация часов — это кошмар

Level of difficultyMedium
Reading time14 min
Reach and readers16K

Кажется, что время — это просто. Но мы, инженеры, теряем сон из-за такой простой задачи, как синхронизация часов.

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

Синхронизация часов становится основой самых сложных задач в распределённых системах, она влияет на всё, от согласованности баз данных и отладки до финансовых транзакций.

Читать далее

Ножом и термофеном: реверс-инжиниринг USB-устройства

Level of difficultyMedium
Reading time12 min
Reach and readers18K

В 2024 году bjiru выложил видео о портативном устройстве ME2 — выпущенной примерно в 2008 игрушке, способной при помощи USB синхронизировать очки и драгоценности между устройством и онлайн-миром. Игра была крайне нишевой, поэтому никто не архивировал её ПО, драйверы и ресурсы; по крайней мере, до тех пор, пока bjiru не создал онлайн-клиент игры.

Я руководитель Miuchiz Reborn — созданного в 2015 году проекта по реверс-инжинирингу, эмуляции и поддержке доступности похожей игры, состоящей из онлайн-части и портативного устройства, соединяемых через USB. ME2 тоже была старой игрой подобного типа, поэтому моя группа Miuchiz рассказала мне о ней ещё в 2018 году; она считала (ошибочно), что они могут быть архитектурно схожи. Несмотря на то, что я уже несколько лет знал о существовании устройства, именно видео bjiru подтолкнуло меня начать его исследование.

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

Читать далее

Морковка «пассивного дохода» отравила целое поколение предпринимателей

Level of difficultyEasy
Reading time8 min
Reach and readers32K

В прошлом году я пил кофе с одним знакомым (не буду называть его настоящего имени), сказавшим мне, что он «строит бизнес». Я спросил, чем он занимается. Он ответил, что дропшиппингом нефритовых массажёров для лица.

Я попросил повторить.

Нефритовые массажёры для лица.

Он нашёл их на Alibaba по $1,20 за штуку и начал продавать через Shopify за $29,99. Сам он ни разу таким не пользовался. Он даже не знал, для чего они — что-то типа лимфатического дренажа? Снижения отёчности? Он произнёс слово «лимфатический», как будто только читал его и никогда не слышал.

Какой-то чувак с YouTube сказал, что нефритовые массажёры «в тренде», а прибыль по расчётам казалась безумной, поэтому мой знакомый «создал» веб-сайт со стоковыми фотографиями женщин, катающих по увлажнённой коже щёк зеленоватые ролики, и запустил на Facebook рекламную кампанию по $50 в день. Заказчики писали ему на электронную почту, спрашивая, где их товар (отправляется из Гуанчжоу, прибывает через три-шесть недель, иногда намного позже), а он копипастил им ответы, найденные в сабреддите о дропшиппинге. У него был документ Google с готовыми ответами службы поддержки.

Клянусь, он не поговорил ни с одним заказчиком.

Спустя пять месяцев он оказался в минусе на $800.

Он рассказывал мне всё это с таким энтузиазмом, как будто изобрёл колесо.

Я купил ему ещё один кофе, потому что искренне не понимал, что тут ещё можно поделать.

Знакомый с нефритовыми массажёрами стал моим наглядным примером того, насколько ужасно исказилось восприятие работы и денег у целого поколения людей, желающих стать предпринимателями. Идеология, которую я называю «мозгом пассивного дохода», захватила огромную долю людей, которые по темпераменту и способностям, скорее всего, начали бы реальный бизнес; она совершенно испортила их приоритеты.

Читать далее

Электроинструмент становится хуже, и это делается намеренно

Level of difficultyEasy
Reading time11 min
Reach and readers64K

В 2005 году гонконгский конгломерат купил за $626 миллионов компанию Milwaukee и вложил в неё деньги. В 2017 году американский конгломерат купил за $900 миллионов Craftsman и построил фабрику, которая оказалась неспособна даже штамповать собственное название на инструменте.

Один и тот же учебник. Противоположные результаты. Это история о том, что произошло со всеми марками инструментов, лежащих на полках магазинов.

Читать далее

Как приглашение на вакансию мечты превращается в атаку

Level of difficultyMedium
Reading time16 min
Reach and readers21K

Начиналось всё с уведомления, радостного для каждого разработчика:

«Вы попали в шорт-лист на вакансию разработчика ИИ».

Компания кажется потрясающей — DLMind, «лаборатория инноваций ИИ». Рекрутер выглядит вполне правдоподобным — Tim Morenc, CEDS, с качественным профилем на LinkedIn, профессиональными интонациями в переписке и историей взаимных связей.

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

Читать далее

Как я взломал аппаратный криптокошелёк и вернул два миллиона долларов

Level of difficultyMedium
Reading time8 min
Reach and readers28K

Представьте, что у вас есть два миллиона долларов, хранящихся на куске кремния размером с почтовую марку, а пароль от них вы забыли.

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

Однажды со мной связались неизвестные мне люди. У них был аппаратный кошелёк Trezor, на котором хранилась пара миллионов долларов. Они спросили меня, смогу ли я взломать кошелёк и получить доступ к информации, чтобы они могли доказать, что деньги принадлежат им.

Меня зовут Джо Гранд, я хакер оборудования. Взлом подобного продукта — потрясающая задача, похожая на решение головоломки, и у нас есть только один шанс сделать всё правильно.

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

Читать далее

Превращаем сканер в тачскрин монитора

Level of difficultyMedium
Reading time7 min
Reach and readers19K

Что можно сделать со сканером из дешёвого многофункционального устройства? Я решил, что превращу его в сенсорный экран с мультитачем, добавив всего несколько дополнительных компонентов и немного программирования.

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

Читать далее

Как выбирают свой путь призраки в Pac-Man

Level of difficultyEasy
Reading time15 min
Reach and readers14K

Pac-Man — полностью детерминированная игра. Как я объяснял в своём видео об этой игре, все движения призраков зависят от того, где на текущий момент находится Pac-Man. Следовательно, обладая этими знаниями, можно точно спрогнозировать, куда будут двигаться призраки в любой момент времени. Но так ли это? Когда Pac-Man съедает большой шарик («энерджайзер»), призраки пугаются и начинают двигаться по паттерну, который кажется случайным и непредсказуемым. Это единственный момент, когда в игре используется генератор случайных чисел (RNG): для определения того, в каком направлении повернёт испуганный призрак на перекрёстке лабиринта. Хоть это решение тоже детерминировано, это единственный непредсказуемый элемент Pac-Man.  

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

Читать далее

Как Microsoft «исправляет» Windows 11: цветы после побоев

Level of difficultyEasy
Reading time7 min
Reach and readers16K

Недавно Microsoft объявила о плане из семи пунктов по исправлению Windows 11, и технологическая пресса восприняла его, как акт искупления. Президент Windows Паван Давулури в январе 2026 признал, что «Windows 11 сошла с рельс», и сообщил, что Microsoft переходит в режим «роения»: разработчиков будут переводить с реализации новых фич на устранение существующих проблем.

Когда я увидел этот заголовок, то сразу подумал, что это похоже на участие в абьюзивных отношениях. Партнёр тебя бьёт, а потом приходит с цветами и говорит, что изменился. А все окружающие говорят: «Видишь, он стал лучше». Но синяки не прошли, а извиняется он только за те побои, которые заметили люди.

Я хочу пройтись по всему тому, что Microsoft делала с Windows 11 на протяжении последних четырёх лет, потому что понять, как относиться к объявлению об «улучшениях», можно только в контексте всего ущерба; при этом мы осознаём, что самое худшее в план исправлений не попало.

Читать далее

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

Level of difficultyMedium
Reading time12 min
Reach and readers14K

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

Мой выбор остановился на Äike T. Не потому, что он оказался лучше других самокатов: на самом деле, его цена была даже выше других, и в этом ценовом сегменте рынка явно имелись скутеры с более высокими параметрами.

Однако я выбрал Äike, потому что его производили в моей стране, а мне нравится по возможности поддерживать местные компании. Äike («молния» на эстонском) был спроектирован и изготавливался в Эстонии, прямо в Таллине. Насколько я могу судить, разработчики использовали не так много стандартных компонентов. Конструкция была разработана с нуля, модуль IoT и аккумуляторные блоки тоже производили локально, и так далее. Нельзя сказать, что это однозначно лучше, ведь при этом усложняется обслуживание самоката, но сам продукт мне показался амбициозным.

Ещё одной причиной покупки стало то, что у производителя была сестринская компания Tuul («ветер» на эстонском), занимавшаяся прокатом электросамокатов. Это тоже были скутеры Äike, и из всех конкурентов мне больше всего нравились Tuul/Äike, поэтому я по возможности пользовался их прокатом.

В прошлом году компания Äike обанкротилась. В будущем это не предвещало ничего хорошего: станет всё сложнее находить запчасти, ведь они были нестандартными. Но возникли у меня и более актуальные опасения, связанные с возможностью пользоваться самокатом. У него нет ручной функции включения/отключения. Для включения и выключения, открывания аккумуляторного отсека, переключения в режим транспорта и так далее необходимо было приложение.

Читать далее

Страница на 49 мегабайт

Level of difficultyEasy
Reading time11 min
Reach and readers25K

Если бы активное отвлечение читателей веб-сайта было олимпийской дисциплиной, то первые места в ней всегда бы занимали новостные источники.

Я зашёл на сайт New York Times, чтобы просмотреть четыре заголовка, но меня встретили 422 сетевых запроса и 49 мегабайт данных. Для полной загрузки страницы понадобилось две минуты. И потом они удивляются, что все мало-мальски владеющие технологиями люди с головой на плечах ставят блокировщики рекламы на компьютеры своих знакомых и родственников.

Эта история повторяется у всех популярных новостных изданий.

Чтобы осознать феномен веб-страницы весом 49 мегабайт, давайте вернёмся в прошлое на несколько десятков лет. Объём этой страницы превышает размер Windows 95 (28 дискет). Операционная система, когда-то управлявшая всем миром, с запасом уместится в современной странице. В 2006 году на пике популярности были iPod и цифровая музыка. Стандартная композиция в MP3 с высоким качеством и битрейтом 192 кбит/с весила примерно 4-5 МБ. Одна страница сегодня эквивалентна 10-12 песням. По сути, чтобы прочитать несколько параграфов текста, я скачал целый альбом. Согласно сведениям International Telecommunication Union, среднемировая скорость Интернета в те времена была примерно равна 1,5 Мбит/с. Пока браузер загружал бы этого бегемота, пользователь вполне бы мог успеть заварить себе чашечку кофе.

За последние двадцать лет оборудование совершило большой шаг вперёд; неужели современный стек фреймворков/рекламных технологий полностью обнулил этот прогресс «благодаря» абстрагированию и плохой архитектуре?

Читать далее

Temporal: долгий процесс решения проблемы времени в JavaScript

Level of difficultyEasy
Reading time15 min
Reach and readers8.6K

Как меняется JavaScript?

JavaScript уникален тем, что работает во всех браузерах. У него нет какого-то одного «владельца», поэтому нельзя внести изолированное изменение и ждать, что оно будет применено везде. Эволюция происходит через TC39 — Технический комитет, отвечающий за ECMAScript.

Предложения должны пройти последовательность этапов развития:

• Этап 0: идея.

• Этап 1: принято пространство задач.

• Этап 2: выбрана архитектура драфта, но работа продолжится.

• Этап 2.7: предложение одобрено в принципе; ожидает тестирования и обратной связи.

• Этап 3: реализация и обратная связь.

• Этап 4: предложение стандартизовано.

В 2018 году, когда я впервые изучал Temporal, он находился на Этапе 1. Комитет TC39 был убеждён, что проблема реальна. Это было радикальное предложение по добавлению в JavaScript новой библиотеки дат и времени. Она должна была:

• Стать заменой Date.

• Добавить новые типы DateTime (вместо единого API).

• Стать неизменяемой.

• Добавить поддержку часовых поясов и календаря.

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

Читать далее

Анализ плутония из советского датчика дыма

Level of difficultyEasy
Reading time9 min
Reach and readers23K

Плутоний — это вещество, имеющее широкий спектр применений, от устроения ядерного армагеддона до повседневной защиты от пожаров. Этот химический элемент массово производился в ядерных реакторах со Второй мировой войны, в отработанном ядерном топливе он встречается в различных изотопных составах, по которым можно определить такие параметры конструкции реактора, как выгорание топлива, исходная степень обогащения урана и спектральные характеристики нейтронов. Советский Союз изготовил больше плутония, чем любая другая страна. Основная его часть предназначалась для благородной цели сдерживания капиталистического империализма, однако малая доля досталась и ионизационным датчикам дыма наподобие КИ-1, РИД-1 и РИД-6М. (Буржуазные поджигатели войны предпочитали и по-прежнему предпочитают использовать для этого америций-241.) Время от времени жители бывшего СССР пытаются продавать плутоний из старых датчиков дыма на чёрном рынке ядерных технологий, считая, что их товар привлечёт бешеные деньги террористов, стремящимся развязать ядерную войну. Чуть ниже мы подробнее рассмотрим вероятность этого.

Мне были любопытны технические характеристики плутония из советских датчиков дыма, поэтому я нашёл старый датчик КИ-1 и извлёк из него источник. Конструкция источника во многом походит на конструкцию источников детектирующих камер в виде тюбика помады из первых датчиков Pyrotronics, производившихся в США. Советский выполнен из латуни и немного шире, чем аналогичный Pyrotronics. На внутренней осевой резьбе закрепляется крышкообразная защита от альфа-частиц, закрывающая полосу, которая содержит активный осадок; таким образом регулируется степень ионизации, производимой источником в камере, а также чувствительность датчика. Ниже я опишу свой анализ гамма- и альфа-излучения этого источника, а также поделюсь своими выводами о возрасте, активности, способе производства и пригодности этого плутония для ведения ядерной войны.

Читать далее

Одна формула, позволяющая понять 3D-графику

Level of difficultyEasy
Reading time9 min
Reach and readers31K

Учась в школе, я обнаружил очень простую математическую формулу, о которой не перестаю думать и сегодня. Смысл её в следующем: представьте, что у вас есть 3D-точка в воображаемом 3D-пространстве за экраном. Для проецирования этой 3D-точки на экран нужно взять её координату X, поделённую на Z, и аналогично её Y / Z. И в результате вы получите проекцию точки на экран: x'=\frac{x}{z} и y'=\frac{y}{z}. А если у вас есть множество точек в этом 3D-пространстве за экраном, и вы начнёте их анимировать и вращать их, а потом воспользуетесь этой формулой для рендеринга всех точек на экране, то это будет выглядеть, как 3D-сцена или 3D-объект. Давайте попробуем эту формулу в деле.

Читать далее

Запускаем Doom на старом офисном телефоне

Level of difficultyMedium
Reading time32 min
Reach and readers19K

Когда-то давно мне подарили кучу VoIP-телефонов, которые списали на моей старой работе. Среди них были два Snom 360 Business, выпущенные в 2005 году. Изначально я хотел настроить АТС на основе Asterisk для всех доставшихся мне телефонов, но в процессе обновления прошивки на одном из аппаратов Snom 360 мне пришла в голову идея получше. У телефона есть экран и клавиатура... получится ли на нём запустить Doom?

Читать далее

Разбитое сердце, или Ускорение в 100 раз из-за одной дурацкой строки

Level of difficultyMedium
Reading time6 min
Reach and readers12K

Ты понимаешь, что баг хорош, если первым делом думаешь: «Как это вообще может происходить?»

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

Разумеется, сначала я обвинил в этом React.

Да, конечно, в современном веб-приложении может быть множество потенциальных причин проблем с производительностью: сторонний JavaScript, перегруженные серверы, раздутые ресурсы, отсутствующие индексы базы данных; список можно продолжать очень долго. Но опыт десятков лет разработки для веба подсказывал мне, что это была проблема фронтенда. Я просто чувствовал это. При загрузке страница дёргалась. И несмотря на то, что экосистема React сегодня — наименее плохой выбор для веб-фронтенда, она по разным причинам может оказаться хаотичной и тормозной.

Чтобы подтвердить свою теорию, я рассказал Claude1, что загрузка дэшборда тормозит и что проблемы наверняка в React, попросив проанализировать их и ранжировать по степени серьёзности. Конечно же, Claude обнаружил в React кучу подозрительных аспектов — ненужный повторный рендеринг, отсутствующие мемоизации и так далее. К тому же он подсказал, что мы всё ещё не используем React Compiler. Я попросил Claude выполнить первый проход решения самых простых и самых серьёзных проблем React, но…

Практически ничего не поменялось. Возможно, дело всё-таки не в React.

Итак, я закатал рукава и начал тщательное расследование.

Читать далее

Почему небо синее?

Level of difficultyEasy
Reading time13 min
Reach and readers23K

Обычно в Интернете на вопрос «почему небо синее?» отвечают «из-за рэлеевского рассеяния». Это правильный, но не особо полезный ответ. Знание терминологии сильно отличается от понимания явления. Но если понимание заключается не в знании терминов... то в чём? Я отвечаю на это так: в существовании модели, позволяющей нам создавать прогнозы. Если мы надёжным образом можем прогнозировать что-то, то, вероятно, понимаем это. В этой статье я исследую, почему небо синее; но мы настолько углубимся в эту тему, что после прочтения вы сможете прогнозировать, какой цвет неба будет на других планетах.

Давайте для начала зададимся вопросом: какого цвета ДОЛЖНО быть небо?

Читать далее

Мои двадцать лет в разработке ПО

Level of difficultyEasy
Reading time13 min
Reach and readers17K

В прошлом году я отметил юбилей: двадцать лет в профессии разработчика ПО. Я хотел написать по этому поводу пост, но тогда у меня не нашлось времени. На самом деле, разработкой ПО я занимаюсь чуть дольше двадцати лет. Хотя первый опыт программирования компьютеров я получил ещё в детстве, серьёзно разработкой я занялся только примерно 25 лет назад, когда поступил в университет. Поэтому начинать свои истории я буду именно от этого момента. Эти истории не столько о ПО, сколько о людях. В отличие от множества подобных постов, в нём не будет ни мудрости, ни уроков. Это просто коллекция историй. Надеюсь, вам понравятся хотя бы некоторые из них.

Читать далее

Как работало АЛУ процессора Intel 8086

Level of difficultyEasy
Reading time12 min
Reach and readers17K

В 1978 году Intel представила процессор 8086 — революционный чип, приведший к созданию современной архитектуры x86. Однако в отличие от современных 64-битных процессоров, 8086 был 16-битным. Его арифметически-логическое устройство (АЛУ, ALU) работает с 16-битными значениями, выполняя арифметические операции (например, сложение и вычитание), а также логические операции, включающие побитовые AND, OR и XOR. АЛУ процессора 8086 — сложная часть чипа, выполняющая 28 операций1.

В этом посте я расскажу об управляющих АЛУ схемах, генерирующих сигналы управления конкретных операций. Этот процесс сложнее, чем можно было бы ожидать. Во-первых, команда машинного кода приводит к исполнению множества команд микрокода. Использование АЛУ — это двухэтапный процесс: одна команда микрокода (микрокоманда) конфигурирует АЛУ под нужную операцию, а вторая микрокоманда получает результаты из АЛУ. Кроме того, на основании микрокоманды и команды машинного кода схема управления отправляет в АЛУ сигналы управления, переконфигурируя его под нужную операцию. Таким образом, эта схема становится источником «клея» между микрокомандами и АЛУ.

На фотографии показан процессор 8086 под микроскопом. Я разметил основные функциональные блоки. Архитектурно чип разделён на блок интерфейса шины (Bus Interface Unit, BIU) в верхней части и блок исполнения (Execution Unit, EU) внизу. BIU занимается действиями с шиной и памятью, а также упреждающей выборкой команд, а EU исполняет команды. В правом нижнем углу находится ROM микрокода, хранящее микрокоманды. АЛУ (ALU) находится в левом нижнем углу; биты 7-0 расположены сверху, биты 15-8 — снизу, а между ними расположена схема флагов состояний. Темой этой статьи станет схема управления АЛУ, выделенная внизу красным цветом.

Читать далее

Навайбкодился и спит: дыры в социальной сети для ИИ Moltbook

Level of difficultyEasy
Reading time10 min
Reach and readers13K

Что такое Moltbook, и почему она привлекла наше внимание?

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

Мы выявили принадлежащую Moltbook неправильно сконфигурированную базу данных Supabase, обеспечивающую полный доступ на чтение и запись ко всем данным платформы. Дыра позволила обнаружить 1,5 миллиона токенов аутентификации API, 35 тысяч почтовых адресов и личную переписку между агентами. Мы немедленно сообщили о находке команде Moltbook, которая с нашей помощью закрыла её в течение считаных часов, а все данные, доступ к которым был получен в процессе поиска и проверки исправления, удалены.

Читать далее

Information

Rating
16-th
Works in
Registered
Activity

Specialization

Системный администратор