Рубрика «ruvds_перевод»

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


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

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

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

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

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

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

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


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

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

Датчик линейного положения, работающий по принципу электронного штангенциркуля - 1


Вы когда-нибудь мечтали о 500-герцовой системе датчиков линейного положения? Тогда вам повезло — для этого достаточно печатной платы, простого микроконтроллера и немного математики!

См. также полный исходный код и журнал моих исследований по этому проекту.Читать полностью »

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


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

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

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


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

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

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

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


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

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

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


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

Анализ задачи с собеседования в Google: конь и телефонные кнопки - 1


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

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

  • Её легко сформулировать и понять.
  • У неё есть множество решений, каждое из которых требует разной степени знаний алгоритмов и структур данных. Кроме того, здесь важны логические рассуждения.
  • Каждое решение можно реализовать в относительно малом объёме кода, поэтому она идеальна для ограниченных по времени собеседований.

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

Сгенерированный ИИ код сделает вас плохим программистом - 1


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

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

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


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

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

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js