Обновить
0
0
Владимир Савин @WowaBBS

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

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

Какие запросы и куда отправляет MAX

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

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

Читать далее

О формализме матриц Паули и геометрической алгебры в нерелятивистской квантовой механике

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров4.3K

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

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

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

Читать далее

Питон, смещение тона и Пианопьютер

Время на прочтение4 мин
Количество просмотров18K
От переводчика:

Статья, которую я предлагаю вам почитать, не нова — она опубликована аж 29 марта. Но на Реддите ее запостили всего несколько дней назад, да и актуальности своей она точно не потеряла. Интересность ее в том, что автор на простом и коротком примере демонстрирует практическое применение трех больших и популярных библиотек: numpy, scipy и pygame. Про первые две многие слышали, но все больше в контексте научных работ, так что интересно посмотреть на их применение в «обычной» жизни. В конце статьи прекрасная видео-демонстрация результата, хотя бы ее точно стоит посмотреть.

Авторский код сохранен без изменений, несмотря на то, что он оформлен не по PEP-8 и за его валидность я не ручаюсь. Настоящий рабочий код так или иначе есть на ГитХабе, ссылку вы найдете в конце статьи.

Запишите звук, измените тон 50 раз и сопоставьте каждому новому звуку клавишу на клавиатуре компьютера. Получится Пианопьютер!

Читать дальше →

Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

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


Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


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


Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

Читать дальше →

О контроллере батареи ИБП (часть 2)

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

О сколько нам открытий чудных
...

Судя по результатам голосования и комментариям к предыдущей статье, к вопросу контроля АКБ у самых простых ИБП есть некоторый интерес. Данная статья - продолжение данной темы.

Сейчас прототип собран на макетной плате (токовый шунт к которому подключено два АПЦ). Измеритель напряжения и тока INA3221, как рекомендовали в комментариях, я решил не использовать, так как дискретность его измерения 8мВ сравнима с дискретностью 12-ти битного АПЦ в обычном микроконтроллере (для ESP32 получается точность измерения около 6мВ).

Читать далее

Динамическая инструментация — не просто, а тривиально*: пишем yet another инструментацию для American Fuzzy Lop

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

(*) На самом деле, не совсем.
Наверное, многие слышали про Valgrind — отладчик, который может сказать, где в вашей нативной программе утечка памяти, где ветвление зависит от неинициализированной переменной и многое другое (а ведь кроме memcheck, у него есть и другие режимы работы). Внутри себя эта чудо-программа перемалывает нативный код в некий промежуточный байткод, инструментирует его и генерирует новый машинный код — уже с run-time проверками. Но есть проблема: Valgrind не умеет работать под Windows. Когда мне это понадобилось, поиски привели меня к аналогичной утилите под названием DrMemory, также с ней в комплекте был аналог strace. Но речь не столько о них, сколько о библиотеке динамической инструментации, на базе которой они построены, DynamoRIO. В какой-то момент я заинтересовался этой библиотекой с точки зрения написания собственной инструментации, начал искать документацию, набрёл на большое количество примеров и был поражён тем, что простенькую, но законченную инструментацию вроде подсчёта инструкций вызова можно написать буквально в 237 строк сишного кода, 32 из которых — лицензия, а 8 — описание. Нет, это, конечно не "пишем убийцу Valgrind в 30 строк кода на JavaScript", но сильно проще, чем то, что можно представить для подобной задачи.


В качестве примера давайте напишем уже четвёртую реализацию инструментации для фаззера American Fuzzy Lop, о котором недавно уже писали на Хабре.

Читать дальше →

Пишем стек TCP/IP с нуля: основы TCP и Handshake

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

Первая часть: Ethernet, ARP, IPv4 и ICMPv4

Пока наш стек TCP/IP пользовательского пространства содержит минимальные реализации Ethernet и IPv4. Настало время заняться пугающим Transmission Control Protocol (TCP).

TCP, работающий на четвёртом (транспортном) сетевом слое OSI1, отвечает за починку ошибочных подключений и сбоев в доставке пакетов. TCP — «рабочая лошадка» Интернета, обеспечивающая надёжную связь практически во всех компьютерных сетях.

TCP — не особо новый протокол, первая его спецификация вышла в 1974 году2. С тех пор многое поменялось, TCP дополнился множеством расширений и исправлений3.

В этом посте мы изучим базовую теорию TCP, а также рассмотрим заголовок TCP и поговорим об установке соединения (TCP handshaking). Под конец мы продемонстрируем первую функциональность TCP в нашем сетевом стеке.

Читать далее

NTFS Reparse Points

Время на прочтение9 мин
Количество просмотров6.4K
Привет, Хабр. Представляю вам гайд по NTFS Reparse points (далее RP), точкам повторной обработки. Это статья для тех, кто только начинает изучать тонкости разработки ядра Windows и его окружения. В начале объясню теорию с примерами, потом дам интересную задачку.


Читать дальше →

Windows и case-sensitive filesystem

Время на прочтение4 мин
Количество просмотров24K
Давным-давно, на заре своего рождения Windows использовала файловую систему FAT. Потом ей на смену Microsoft и IBM разработали NTFS. В те давние времена возникло два противоположных подхода к файловой системе. В Linux используется case-sensitive файловая система, а в Microsoft — case-insensitive.

Суть в том, что в case-sensitive файловой системе считается, что имена, написанные в разных регистрах (например, FILE.txt и file.txt) — это разные имена. А для Windows между ними нет разницы.



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

Четыре вида метаданных NTFS

Время на прочтение4 мин
Количество просмотров19K
Object IdВ данной теме я рассмотрю четыре вида метаданных, которые могут быть прикреплены к файлу или каталогу средствами файловой системы NTFS. Я опишу, в каких целях можно использовать тот или иной тип метаданных, приведу пример его применения в какой-либо технологии Microsoft или стороннем программном обеспечении.

Речь пойдёт о точках повторной обработки (reparse points), идентификаторах объектов (object id) и о других типах данных, которые может содержать файл помимо своего основного содержимого.
Читать дальше →

Как я писал свою первую игру для Dendy

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

Что такое Dendy? Что так любит детвора? Это электронная игра! Ооо, дендиии...

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

Погрузиться в мир Dendy

Глубина кроличьей норы: бинарная граница и ABI C++

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

Вопрос ABI (Application Binary Interface), бинарной границы и бинарной совместимости в C++, раскрыт на просторах интернета не так хорошо как хотелось бы. Особенно сложно в его изучении приходится новичкам, потому что эта тема связана со множеством деталей нарочно скрытой от глаз программиста имплементации языка.

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

Подробнее о статье:

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

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

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

В рамках всей статьи будут рассмотрены темы: системный стек, системные регистры, динамическая память, детали механизма виртуальных функций, стандарт С++ и реальная имплементация, детали механизма исключений, copy elision при линковке библиотек, шаблоны, POD-типы и ODR violation.

Break -in- ABI

Опыт создания UI библиотеки на C++

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

Началось все почти два года назад в декабре, практически перед новым годом.

Наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...

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

В течении шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.

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

В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да...

wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulcan на современных машинах.

В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost. 

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 6

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

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

Читать далее

Вальяжной походкой по HTTP-заголовкам

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

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

Разбора конфигов Web‑сервера не будет, будут только заголовки, их директивы и пояснения с примерами.

Давайте разбираться

Kornia — библиотека компьютерного зрения

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

Kornia это open source библиотека для решения задач компьютерного зрения. Она использует PyTorch в качестве основного бэкенда и состоит из набора дифференцируемых процедур и модулей. Создатели библиотеки вдохновлялись OpenCV, и поэтому Kornia является его аналогом, но при этом в некоторых моментах превосходит. Главным преимуществом Kornia по сравнению с тем же OpenCV, scikit-image или с Albumentations является возможность обрабатывать изображения батчами, а не по одному изображению и возможность обрабатывать данные на GPU.

Читать далее

Macromedia Flash: Взлет и закат технологии

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

Если никто не подведёт итог под историей Macromedia Flash, она рискует затеряться в хламе IT-подвала. Напомню, что “волшебный” плагин Flash player стоял практически на всех компьютерах мира. И в какой-то момент именно эта технология была лучшей для анимации, игр и мультимедиа. В этой статье я расскажу историю технологии и добавлю историю от лица разработчика: что мы создавали, как работали,  плюсы минусы самой платформы и ключевые события. Ну и главное, почему Flash взлетела до массового распространения, а потом потерпела поражение и осталась в прошлом. И ответить на вечный вопрос “Кто виноват?” Иная версия вопроса: Зачем Стив Джобс убил Flash? Спойлер, Джобс не виноват.

Читать далее

Компьютерные решения больше не запатентовать

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

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

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

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

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

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

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

Читать далее

Поиск с помощью регулярных выражений: подход с Виртуальной Машиной

Уровень сложностиСложный
Время на прочтение28 мин
Количество просмотров3.4K

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

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

Так же в статье приведена любопытнейшая историческая справка и особенности реализации POSIX.

Об ошибка, опечатках и неточностях большая просьба сообщать.

Заблудиться в тёмном лесу

Детские шалости: как Roblox стала одной из самых дорогих игровых компаний современности

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

Убыточная детская платформа для создания компьютерных игр Roblox с третьей попытки вышла на биржу, и её рыночная оценка тут же побила все самые смелые прогнозы. Сейчас она стоит больше, чем Take-Two (издатель Grand Theft Auto) и Ubisoft (разработчик серии Assaisin’s Creed) вместе взятые. Под катом — о том, как стартап, который часто называют «новым Minecraft», смог добиться такого результата.

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Самара, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность