Как стать автором
Обновить
32
1.3
Cherniaev Andrei @DungeonLords

Пользователь

Отправить сообщение

К вопросу об точности

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

Но есть нюанс ...

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии11

Вы неправильно пишете животных

Время на прочтение5 мин
Количество просмотров358K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Всего голосов 442: ↑438 и ↓4+434
Комментарии351

Самые дикие налоговые проблемы, с которыми столкнулись эмигранты из РФ в 2022–2023

Время на прочтение12 мин
Количество просмотров37K

Попытка налоговой взыскать в совокупности 51% от цены проданной квартиры, налог 88 млн руб. с полученной прибыли меньше 10 млн руб. «благодаря» автообмену с зарубежным банком, а также арест заграничных счетов в ОАЭ – в этой статье мы собрали самые жуткие истории из жизни, с которыми налоговые юристы сталкивались на практике.

Читать далее
Всего голосов 126: ↑116 и ↓10+106
Комментарии85

А в чем проблема работать с файлами?

Уровень сложностиСредний
Время на прочтение53 мин
Количество просмотров27K

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

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Всего голосов 171: ↑170 и ↓1+169
Комментарии23

Как мы сделали Embedded Controller для ПЛК на Linux

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

Мы уже рассказывали о том, как приручили робота-пайщика, как делаем устройства и тестируем их. Теперь хотим поделиться опытом разработки полноценного Embedded Controller для ПЛК на Linux — какие задачи решает, как устроен и что у него под капотом в прошивке.

Читать далее
Всего голосов 45: ↑44.5 и ↓0.5+44
Комментарии36

Тайные знания: библиотеки для С++

Время на прочтение5 мин
Количество просмотров29K

Рун не должен резать
Тот, кто в них не смыслит.
В непонятных знаках
Всякий может сбиться.
Десять знаков тайных
Я прочел и знаю...(Сага об Эгиле)

Многие начинающие программисты, уже освоив синтаксис C++, обнаруживают, что нет простого способа, как подключить библиотеку, так и собрать программу для другой ОС, или чего хуже, под другим компьютером с той же ОС. Эта проблема отчасти порождается спорной практикой обучения, когда код учат писать и запускать лишь средствами IDE, таких как Visual Studio, Code::Blocks, и других.
Поначалу такой подход работает, но лишь до первой реальной задачи сделать что-то, что запустится не только на вашей машине. Тут-то новички и сталкиваются с отсутствием стандартной системы сборки и менеджера зависимостей. После осознания этой сложности, большинство студентов, как правило, переходят на другие языки, попутно тиражируя в индустрии миф о том, что C++ де не кроссплатформенный язык, а вот мой Python/Java/C# - да.
Между тем нас окружает множество замечательных кроссплатформенных программ написанных на C++. Если вы обучаетесь C++ и хотите понять как создавать такое ПО, то эта статья для вас.

Узнать заклинания кроссплатформености
Всего голосов 11: ↑6 и ↓5+1
Комментарии34

Упорядочиваем закладки

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

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

Пример закладок @alizar: 800+ статей.

Упорядочить!
Всего голосов 15: ↑15 и ↓0+15
Комментарии7

Грубая сила. Брутим RDP, SSH, VNC, Instagram и стандартные формы веб-аутентификации

Время на прочтение4 мин
Количество просмотров10K

Приветствую всех читателей наших статей, с сегодняшнего дня хочу объявить ещё одну новую рубрику: "Грубая сила". В серии таких статей мы будем обозревать различные инструменты, методы, вспомогательные инструменты для атак методом "грубой силы" откуда и название, или под более привычным для нас названием брутфорса.

Читать далее
Всего голосов 13: ↑8 и ↓5+3
Комментарии6

Серьги из матрицы светодиодов

Время на прочтение7 мин
Количество просмотров9.7K

Изначально я представлял LED Industrial Piercing [перевод на Хабре] как проект, специально рассчитанный на использование светодиодов 0201. В конечном итоге они оказались совершенно не нужны. Светодиоды 0201 слишком малы! Очевидно, я должен был двинуться глубже, поэтому целью нового проекта стало размещение как можно большего их количества на поверхности серёжки-гвоздика.

Читать далее
Всего голосов 95: ↑94 и ↓1+93
Комментарии21

Архитектура, планирование и реализация DMA в микроконтроллерах Synergy

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

Здесь мы продолжаем развитие платформы нашего ПЛК под названием PLCS7 на базе модуля с микроконтроллером семейства Synergy S7FS2. В этом ПЛК ввод-вывод в основном выполняется через микросхемы расширители IO с последовательными каналами связи. Программный байтовый обмен с такими микросхемами может отбирать значительные ресурсы процессора. Но в микроконтроллерах Synergy есть модули DMA Controller (DMAC ) и Data Transfer Controller (DTC).

Читать далее
Всего голосов 12: ↑10 и ↓2+8
Комментарии0

STM32. Процесс компиляции и сборки прошивки

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров20K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии67

Не пора ли валить с gnu libc на что‑то другое?

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

Пользуюсь открытым ПО значительное время. Сижу на Линуксе.

Но в последнее время настолько часто сталкиваюсь с различными багами, что думается иногда, а как оно вообще в принципе работает?

Последний эпизод коснулся совсем уж системного кода - стандартной библиотеки libc от GNU. Системнее может быть только ядро.

История такая. Собрал Хромиум (не быстро). Когда наконец сборка завершилась с попутным решением проблем, думал: ну вот наконец щас запущу, посмотрю как работают интересующие меня вещи. И тут произошёл облом. Хром падал почти в самом начале запуска с ошибкой доступа к памяти. Довольно быстро удалось выяснить, что падение происходит из-за ошибки обращения по нулевому указателю. И происходит оно в динамическом загрузчике, то бишь в libdl, при загрузке библиотеки через dlopen. libdl.so является одной из компонент пакета стандартной библиотеки и понятно, самой системной библиотекой в ОС. Подробности всей ситуации я описал в вопросе на stackoverflow.

Вкратце: при загрузке библиотеки libXcursor.so подтягиваются непонятно откуда взявшиеся зависимости, не имеющие никакого отношения к упомянутой библиотеке. И зависимости эти не инициализированы корректно. Откуда и происходит обращение по нулевому указателю. Впоследствии выяснилось, что проблема начинается с несовпадающих версий библиотек libQt5Core, в результате чего libdl делает полный отбой с попыткой отката всех изменений.

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

Читать далее
Всего голосов 57: ↑44 и ↓13+31
Комментарии162

Устройство GPIO-драйверов в Linux

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров5.3K

Рассмотрим, как устроены GPIO-драйверы в Linux, и почему это сделано именно так. Поймем, почему для простого мигания светодиодом в этой операционной системе надо пройти через N слоев абстракции.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Разбираемся с Bluetooth Low Energy на примере превращения USB-клавиатуры в беспроводную

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


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

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

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

Данная статья ставит целью на примере разработки собственной Bluetooth-клавиатуры помочь разобраться в базовых понятиях Bluetooth, так как чтение скучных спецификаций и статей с введением в технологию даёт мало пользы.
Читать дальше →
Всего голосов 76: ↑74 и ↓2+72
Комментарии76

DIY-программатор ST-Link V2.1

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров18K

Привет, Хабр!

Предлагаю вашему вниманию самодельный программатор ST-Link V2.1.

Особенности: интерфейс SWD, функция виртуального COM-порта, поддержка SWO, функция MSC (mass storage class), низкая цена.

Перейти к статье
Всего голосов 33: ↑33 и ↓0+33
Комментарии47

Qt Creator* ищет ошибки в Qt Creator

Время на прочтение19 мин
Количество просмотров4.1K

Как-то так странно получилось, что у нас уже почти год как существует и поддерживается плагин PVS-Studio для Qt Creator. И при этом мы до сих пор не выпустили хорошей статьи с проверкой самой IDE. Исправляем сие недоразумение и предлагаем вам посмотреть, чем живёт недавно переродившаяся среда для разработки.

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии21

Зачем Программисту Микроконтроллеров Численные Методы?

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

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

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

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

Читать далее
Всего голосов 24: ↑22 и ↓2+20
Комментарии33

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров15K
image

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

В этой статье я предлагаю вместе разобраться, на каких принципах работает осциллограф. Для этого мы смоделируем электрическую схему простого осциллографа с индикацией на светодиодной матрице из дискретных компонентов в моем любимом симуляторе ISIS Proteus.
Читать дальше →
Всего голосов 75: ↑75 и ↓0+75
Комментарии64

Как я клавиатуру изобретал

Время на прочтение12 мин
Количество просмотров16K

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

Читать далее
Всего голосов 95: ↑95 и ↓0+95
Комментарии61

Сжатие целых чисел

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров13K

Цель статьи осветить state of the art методы сжатия целых чисел, чтобы сэкономить в будущем время исследования алгоритмов и терминологии. При этом описание части алгоритмов может быть упрощено для понимания. Сравнение алгоритмов тоже находится вне рамках этой статьи. Подробнее можно почитать в ссылках.

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

Читать далее
Всего голосов 42: ↑37 и ↓5+32
Комментарии22
1
23 ...

Информация

В рейтинге
1 229-й
Зарегистрирован
Активность