All streams
Search
Write a publication
Pull to refresh
504
198.1
Дмитрий Брайт @Bright_Translate

Переводчик

Send message

От React всё так же веет безумием, но все об этом молчат

Level of difficultyEasy
Reading time11 min
Views49K

Недавно работал над хобби-проектом, который описал в другой своей статье. В процессе его реализации у меня возникло желание чиркануть пару абзацев о том, почему React — отстой, но в итоге я не смог удержаться и решил высказаться по полной…

Так что вот она полноценная статья, ещё больше той, из которой она родилась. Здесь я подробно опишу все проблемы React и поясню, почему это может не быть виной разработчиков.

Читать далее

Программирование как разработка теорий: почему senior-разработчики стали ценны как никогда?

Level of difficultyEasy
Reading time6 min
Views43K

В 1985 году учёный Питер Нур будто зрил в будущее, написав свою работу под названием «Programming as Theory Building», которая сегодня стала весьма актуальной. Мы всё чаще видим, как начинающие разработчики бездумно принимают сгенерированный ИИ код, который толком не понимают, а кодовые базы разрастаются лишёнными теоретических основ реализациями. В свете всего этого чётко вырисовывается основная идея Нура: «программа – это не её исходный код».

Читать далее

Как я обнаружил древнюю пасхалку в Power Mac G3

Reading time5 min
Views5.1K

Недавно залез в ROM оригинального Power Macintosh G3 и случайно обнаружил там пасхалку, о которой до этого ещё нигде не писали.

Началось с того, что одним воскресным утром я решил заглянуть в файл-шаблон ROM для Mac с помощью программы HEX Fiend Эрика Хармана. Меня интересовало, какие ресурсы хранятся в постоянной памяти Power Mac G3. Эта ROM использовалась в моделях Beige, Mini Tower и всех G3, выпускавшихся с 1997 по 1999 годы.

Пишу я эту статью в середине 2025, и мне не верится, что сегодня Power Mac G3 уже больше 27 лет. Невероятно!

Читать далее

Вычисляем коэффициент популярности крейтов Rust для работы и для хобби-проектов

Reading time5 min
Views2.5K

Твит, который подтолкнул меня к реализации описанного в статье мини-проекта.

Взявшись за эту задачу, я около двух часов ваял небольшой скрипт, который будет скрейпить данные из базы крейтов Rust crates.io и анализировать их для выяснения, какие пакеты чаще скачиваются для работы (то есть в будние дни), а какие для развлечения (то есть в выходные).

Читать далее

Простой механизм поиска с нуля

Reading time14 min
Views5.5K

Мы с Крисом недавно «с нуля» буквально за пару часов создали механизм поиска для моего блога. Основную часть проделал именно Крис, так как до этого с word2vec я был знаком лишь отдалённо.

Разработанный нами поисковик основывается на векторных представлениях (эмбеддингах) слов. Принцип здесь следующий. Функция получает слово и отображает его в N-мерное пространство (в данном случае N=300), где каждое измерение отражает определённый оттенок смысла. Вот хорошая статья (англ.) о том, как обучить собственную модель word2vec, и её внутреннем устройстве.

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

Уравнение ниже может показаться пугающим, но в нём говорится, что косинусное сходство, представляющее косинус угла между двух векторов cos(theta), определяется в виде скалярного произведения, поделённого на произведение величин каждого вектора. Разберём всё это подробнее.

Читать далее

Трудности обслуживания приложений под Android

Reading time6 min
Views3.7K

Недавно наткнулся на новость о том, что количество приложений в Google Play Store сократилось на 47%.

Я сам энтузиаст разработки под Android и последние 5 лет работал над альтернативой для Google Play Music и Podcast под названием MusicSync. Так что, будучи близким к теме человеком, мне захотелось поделиться своим опытом обслуживания приложений и заодно пояснить, почему меня эта новость нисколько не удивила.

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

Если же говорить о приложении Android, то обслуживать его в качестве хобби-проекта гораздо хлопотнее. Вот некоторые из проблем, с которыми мне приходилось сталкиваться.

Читать далее

Не стоит пугаться машинного кода

Reading time7 min
Views13K

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

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

Машинный код вовсе не страшен. Если вы можете обеспечить, чтобы документ JSON соответствовал схеме JSON, то без проблем сможете писать машинный код.

Читать далее

Интернет на раскладушке, или Веб-сёрфинг с помощью оригинального Opera Mini

Level of difficultyMedium
Reading time8 min
Views6K

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

Opera Mini до сих пор существует для iPhone и Android — только теперь это слегка скорректированная версия стандартного мобильного браузера Opera, а эти браузеры использовать не рекомендуется. Тем не менее изначальная его версия на базе Java ME по-прежнему функциональна, и её можно установить даже на современный ПК.
Читать дальше →

Как я «случайно» получил root-доступ к платёжному терминалу

Level of difficultyMedium
Reading time8 min
Views11K

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

Абсурдно усложнённая схема регистров в Intel 80386

Reading time16 min
Views18K
Фото кристалла i386 с обозначенным блоком регистров (полномасштабная версия фото доступна в оригинале статьи)

Революционный Intel 80386 (1985 год) стал первым 32-битным процессором с архитектурой x86. Как и большинство процессоров, он содержит огромное число регистров, которые являются ключевой составляющей, обеспечивая сверхбыструю обработку данных в сравнении с основной памятью. К ним относятся регистры общего назначения, регистры индекса и селекторы сегментов, а также специальные регистры для управления памятью и разработки операционной системы. В этой статье я буду говорить о кремниевом кристалле i386 и объясню, как в нём организованы основные регистры.
Читать дальше →

Собираем умные часы: выбор микросхемы

Level of difficultyMedium
Reading time6 min
Views8.5K
image

Полный видеоролик по этой статье есть на моём YouTube-канале.

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

Сервер, которому не суждено было жить

Level of difficultyEasy
Reading time7 min
Views11K

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

Это история о доверии, технологиях… и задачах, которые не всегда можно решить.

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

Если в двух словах, то дело было в том, что один наш знакомый предприниматель — администратор и владелец нескольких компаний — внезапно скончался. Это был человек, который рулил всеми процессами, и его уход поставил жену с детьми в затруднительное положение.
Читать дальше →

Издержки микросервисов, которые ваш стартап может не потянуть

Level of difficultyMedium
Reading time15 min
Views14K

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

Google Maps не знают, как работает адресация улиц

Level of difficultyEasy
Reading time5 min
Views13K

Как-то я катался по Вернону в Британской Колумбии и попросил Google Maps построить маршрут до 3207 30th Ave, на что приложение с уверенностью сказало мне, куда ехать. Благо мой пассажир заметил, что по факту карта направила меня на 3207 34th Ave, то есть четырьмя кварталами севернее. Довольно странно.

Спустя несколько дней, мой кузен попросил меня (как бывшего сотрудника Google и самого головастого члена семьи) помочь ему разобраться с проблемой в Google Maps. Заключалась же проблема в том, что адрес 138 W 6th Ave в Ванкувере отображался в точку, находящуюся в 2,4 км (1,5 милях или 12 фарлонгах) от его фактического расположения.
Читать дальше →

Как одна строка кода могла окирпичить ваш iPhone

Level of difficultyMedium
Reading time8 min
Views9.9K

Это история о том, как я недавно обнаружил в iOS уязвимость, которая стала одной из моих любимых. Почему любимых? Потому что реализовать для неё эксплойт оказалось очень легко. Кроме того, она использовала публичный легаси API, на который до сих пор опираются многие компоненты ОС Apple, и о котором многие разработчики даже не слышали.
Читать дальше →

История AMP, или Почему электронной почте не нужна интерактивность

Reading time7 min
Views4.5K

«Система Email оставалась практически неизменной в то время, как окружающая веб-среда стремительно развивалась». — написал продакт-менеджер Google Аакаш Шейни в 2019 году.

Но в Google решили «Хватит», и разработали фреймворк для электронной почты под названием AMP (accelerated mobile pages), обещающий «сохранение актуальности информации в ваших письмах» и «удобную возможность совершать действия прямо из сообщений».
Читать дальше →

Evertop: ультра-экономичный ПК на солнечной батарее

Reading time5 min
Views6.9K

Evertop — это портативный ПК, эмулирующий IBM XT с процессором 80186 и 1МБ RAM. На нём можно запускать DOS, Minix и некоторые другие ОС из 80-х. Можно запустить и Windows до версии 3.0. Благодаря мощному и при этом экономичному микроконтроллеру, E-Ink дисплею, батареям на 10 000 мАч и реализации исключительных мер энергосбережения, он может работать на одном заряде до сотен и даже тысяч часов. Прибавьте сюда встроенную солнечную батарею и вы сможете использовать его бесконечно в условиях отсутствия сети, не беспокоясь о подзарядке.
Внутри много фото

Ох уж эти скрытные ботнеты

Level of difficultyMedium
Reading time6 min
Views10K

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

IP-адреса, с которых происходят попытки использовать мой сервер для отправки спама

IP-адреса, с которых совершаются попытки подобрать имя пользователя/пароль для авторизации на моём почтовом сервере и рассылки спама
Читать дальше →

Какие они — лучшие программисты?

Level of difficultyMedium
Reading time7 min
Views28K

За свою жизнь я повстречал немало разработчиков и недавно задался вопросом: «А что делает разработчика одним из лучших? Что у таких людей есть общего?»

В надежде, что эти мои рассуждения послужат для кого-то вдохновением, я описал черты, которые встречал у большинства исключительных людей в нашей сфере. Лично я бы хотел, чтобы у меня был такой список, когда я только начинал. Следуя этому пути, я бы сэкономил уйму времени.
Читать дальше →

Декодируем 90-ые: реверс-инжиниринг и криптография на заре разработки ПО

Reading time10 min
Views5.4K

В августе 2020 года к нам обратился клиент с кэшем из заблокированных документов QText из середины 90-х, пароль для которых он утерял.

QText — это редактор из времён DOS, использовавшийся для обработки иврита и английского текста. Написан он на Pascal и был выпущен где-то за 15 лет до того, как мы с @Elisha занялись обратной разработкой.

В этой статье мы опишем весь процесс анализа тех зашифрованных документов и выполним реверс-инжиниринг программы DOS.

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

Information

Rating
27-th
Location
Россия
Works in
Date of birth
Registered
Activity