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

Переводчик

Send message

Реализация подобия Apple Vision Pro

Level of difficultyMedium
Reading time8 min
Views4.3K
Не так давно я был свидетелем запуска Apple Vision Pro. Презентация оказалась очень интересной, но больше всего моё внимание зацепила одна деталь — дистанционное управление вводом с помощью пальцев. Выглядит очень интуитивно — использовать перемещение и сведение пальцев для управления курсором на экране. Меня этот механизм заинтриговал, и я решил воссоздать его сам.
Читать дальше →

Разгон Raspberry Pi 5 до 3 600 МГц и охлаждение жидким азотом

Level of difficultyMedium
Reading time6 min
Views7.5K

Мы испробовали всё, чтобы сделать наш Raspberry Pi самым быстрым в мире — меняли ОС, использовали для охлаждения жидкий азот, апгрейдили схему питания и даже поменяли тактовый генератор. В этой статье я поделюсь некоторыми интересными выводами, которые мне удалось сделать за несколько недель хакинга малинки в сотрудничестве с ElmorLabs.
Читать дальше →

Сложности с отображением иконок рабочего стола

Level of difficultyEasy
Reading time5 min
Views7.9K

Последние три недели я работал над рефакторингом и исправлением легаси-кода (самые старые части которого были написаны в 2013 году), отвечающего за позиционирование иконок в KDE Plasma, а также сохранение и загрузку этих данных.

Вот мой запрос на внесение изменений: plasma-desktop: Refactor icon positioner saving and loading.

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

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

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

В итоге периодически кому-то нужно разгребать такую запутанную базу кода и подчищать её.
Читать дальше →

Небезопасный Rust сложнее C

Level of difficultyMedium
Reading time19 min
Views23K

Для некоторых из вас содержание этой статьи окажется знакомым, особенно, если вы писали встраиваемый или unsafe код на Rust. Но я этого не делал, поэтому решил, что будет полезным задокументировать свой опыт максимально подробно. Так что предлагаю сразу перейти к делу.

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

Почему программное обеспечение движется только вперёд

Level of difficultyEasy
Reading time6 min
Views8.8K

В случае масштабных систем не происходит ни откатов, ни запланированных переходов (cut-over) — ваше ПО движется только вперёд.

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

Австралия, Лорд-Хау — самый странный часовой пояс

Level of difficultyMedium
Reading time14 min
Views14K

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

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

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

Как я одержал победу над создателем чита для MMO-игры

Level of difficultyMedium
Reading time6 min
Views18K

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

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

Охота за (не)аутентифицированным удалённым доступом в роутерах Asus

Level of difficultyMedium
Reading time9 min
Views6.6K

Почитав в сети подробности о нескольких обнародованных критических CVE, связанных с маршрутизаторами Asus, мы решили проанализировать уязвимую прошивку этих устройств и, быть может, написать подходящий эксплойт «n-day». В итоге в процессе поиска уязвимой части программы и написания эксплойта для получения возможности удалённого выполнения кода мы также обнаружили, что в реальных устройствах приписываемое названным уязвимостям свойство «Unauthenticated Remote» в зависимости от конфигурации устройства может не действовать.
Читать дальше →

Нейронные сети (инференс MNIST) на «3-центовом» микроконтроллере

Reading time5 min
Views12K

Вдохновившись на удивление высокой производительностью нейронных сетей и обучением с учётом квантования на микроконтроллере CH32V003, я захотел выяснить, как далеко эту идею можно развить. Насколько можно сжать нейронную сеть с сохранением высокой точности тестов на датасете MNIST? Когда речь идёт о крайне дешёвых микроконтроллерах, сложно предположить что-то более подходящее, чем 8-битные Padauk.

Эти устройства оптимизированы под простейшие и самые дешёвые приложения из доступных. Самая мелкая модель серии, PMS150C, оснащена однократно программируемой памятью в 1024 13-битных слова и 64 байтами RAM — на порядок меньше, чем в CH32V003. Кроме того, эта модель в противоположность намного более мощному набору инструкций RISC-V содержит коммерческий регистр-аккумулятор на основе 8-битной архитектуры.

Возможно ли реализовать механизм инференса MNIST, способный классифицировать рукописные числа, также и на PMS150C?
Читать дальше →

Почему я скептично отношусь к переписыванию JS-инструментов на «быстрых» языках

Level of difficultyMedium
Reading time6 min
Views19K

Я написал много JS-кода, и мне нравится JavaScript. Самое же главное, я выработал необходимые навыки для понимания, оптимизации и отладки этого кода, от которых не хочу отказываться.

Поэтому у меня вполне естественно возникает беспокойство по поводу охватившей сферу разработки одержимости переписывать каждый инструмент Node.js на быстрых языках вроде Rust, Zig, Go и прочих. Причём ценность этих языков я нисколько не преуменьшаю. Я даже принимал некоторое участие в разработке Servo, да и на столе прямо сейчас передо мной лежит книга по Rust. Но в целом основную часть своей карьеры я вложил в освоение всех нюансов JavaScript, и на данный момент этот язык для меня самый удобный.

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

Так ли важен возраст в IT?

Level of difficultyEasy
Reading time4 min
Views49K

Как известно, в Кремниевой долине предпочтение отдаётся молодым специалистам. Амбициозный настрой «двигаться быстро и всё ломать» зачастую подразумевает, что компании заинтересованы в более молодых и легко адаптируемых сотрудниках.

Я пишу эту статью в 30 лет, успев побывать на собеседованиях по обе стороны стола. В течение последнего года я проводил технические интервью и видел как моложавых выпускников, едва достигших возраста, позволяющего арендовать авто, так и бывалых специалистов, проработавших в IT больше лет, чем мне отроду. И этот опыт прекрасно прояснил для меня общую картину.
Читать дальше →

Кто стоит за убийством Google Search?

Level of difficultyMedium
Reading time14 min
Views41K

Это история о том, как умер Google Search, и о причастных к его смерти людях.

Начинается она 5 февраля 2019 года, когда Бен Гомес, глава Google Search, столкнулся с проблемой. Джерри Дишлер, на тот момент вице-президент и главный управляющий Google Ads, вместе с Шивой Венкатараманом, тогда вице-президентом по разработке систем Google Search и Ads, объявили «код жёлтый» в отношении доходности Google Search. Причиной такого шага стало, цитирую: «Стабильно низкие ежедневные показатели», а также вероятность того, что к концу квартала доходность этого сегмента окажется в значительном упадке.
Читать дальше →

Пишем одностраничное приложение с помощью htmx

Level of difficultyMedium
Reading time11 min
Views19K

JS-библиотеку htmx воспринимают как средство, которое спасает интернет от одностраничных приложений. Всё дело в том, что React поглотил разработчиков своей сложностью (так говорят), а htmx предлагает столь желанное спасение.
Читать дальше →

Учимся читать QR-коды без компьютера

Level of difficultyMedium
Reading time4 min
Views58K

Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.

Прочитав статью, вы узнаете:

  • Из чего состоят QR-коды.
  • Как декодировать QR-коды вручную (используя нашу шпаргалку).
Читать дальше →

Как хакеры «красной команды» в роли злоумышленников проникают в здания и системы

Level of difficultyEasy
Reading time6 min
Views8.3K

ИНТЕРВЬЮ. В среду утром девушка-хакер без пропусков и ключей проникла в здание «очень крупного города» с целью украсть чувствительные данные, «взломав» вход не только в физическое пространство, но и корпоративную сеть Wi-Fi.

Как в итоге оказалось, ей вообще не потребовалось ничего взламывать.
Читать дальше →

Почему мои ZFS-диски так шумят?

Level of difficultyMedium
Reading time11 min
Views19K
У Джонни Кэша есть песня «One piece at a time» 1976 года. В ней рассказывается история об автомеханике, собирающем собственный Cadillac из деталей, которые он в течение 25 лет по одной тырил с производственного конвейера General Motors.

Некоторое время назад пользователь Practical ZFS задал обманчиво простой вопрос:

«У меня есть пул Proxmox из трёх RAIDz1 vdev (virtual device, виртуальное устройство) по 4 диска. Проблема в том, что во время работы VM все двенадцать дисков минимум раз в секунду издают громкий звук, причём в течение всего дня. Что может быть причиной, и как это устранить?»
Читать дальше →

Как использовать YouTube для кражи файлов

Level of difficultyMedium
Reading time11 min
Views15K

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

Как на фабриках полупроводников вычисляют выход годных кристаллов

Reading time8 min
Views14K

В Intel отказались от выпуска микросхем на базе узла 20A, решив перейти сразу к 18А.

И было очень много разговоров на тему, почему компания так поступила. Некоторые говорят, что Intel для исправления проблем с 18A требуется весь инженерный ресурс. Другие считают, что этот ход фактически сэкономит компании деньги, которые она сможет вложить в разработку узла 14А.
Читать дальше →

Почему Scrum так изматывает

Level of difficultyEasy
Reading time6 min
Views37K

В современном мире программирование связано с высокой стрессовой нагрузкой — намного большей, чем на моей памяти было в 90-х и начале 2000-х, когда я только начинал свой путь в этой сфере. В те времена безумие начиналось в преддверии дедлайнов, но в остальное время всё шло более-менее размеренно. Сегодня же психологическая нагрузка и давление уже являются неотъемлемыми спутниками разработки ПО.

Поэтому, естественно, в целях сохранения здоровья и повышения продуктивности мне хочется с этим давлением как-то разобраться. В итоге я немного поразмышлял, почему в последние пару десятилетий всё стало настолько печально (по крайней мере, для меня).
Читать дальше →

Портируем декодер AV1 с С на Rust для повышения быстродействия и безопасности

Level of difficultyMedium
Reading time11 min
Views9K

AV1 становится всё более значимым видеоформатом, которому требуется безопасный и производительный декодер. Исходя из этой идеи, мы в тандеме с командой из Immutant создали rav1d, портировав на Rust написанный на С декодер dav1d. Перед вами первая из двух статей, посвящённых решению этой задачи.

— Джош Аас, глава проекта Prossimo организации ISRG
Читать дальше →

Information

Rating
23-rd
Location
Россия
Works in
Date of birth
Registered
Activity