Как стать автором
Обновить
4
0
Nikita @DCNick3

Student

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

STM32CubeMonitor стоит попробовать

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

Введение


STM32CubeMonitor — утилита для удобного отображения данных с контроллеров семейства STM32. Причем не требуется никакого дополнительного оборудования, только плата с контроллером и программатор (я пробовал и китайский свисток и оригинальный st-link\v2). Слово «Cube» в название не означает привязку к CubeMx\HAL, от вас требуется всего лишь прошивка в формате "*.elf", что не может не радовать. Данная утилита позволяет чрезвычайно быстро и просто выводить данные с контроллера в реальном времени в виде графика, а так же осуществлять постобработку(присутствуют наборы основных математических и тригонометрических функций).
Читать дальше →
Всего голосов 15: ↑13 и ↓2+19
Комментарии13

Необычные системные вызовы на Linux

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

ls /usr/share/man/man2/


Что видит программист, начиная работать с языком C? Он видит fopen, printf, scanf и ещё много других функций. Видит он и всякие open и mmap — казалось бы, зачем их выделять? Но, в отличие от первой группы, эти две функции при выполнении на ядре Linux являются системными вызовами (на самом деле нет, почти никогда системный вызов нельзя просто вызвать как функцию, и поэтому libc содержит обёртки, перепаковывающие аргументы и иногда, как в случае с тем же open, заменяющие старые системные вызовы более общими новыми). Вообще, в отличие от тысяч библиотечных функций, доступных на типичной GNU/Linux системе, интерфейс ядра имеет довольно ограниченное количество точек входа — порядка нескольких сотен, зато то, что для user space — crash (например, обращение к отсутствующей странице), для ядра — default mode of operation.


В этой статье я расскажу некоторые интересные на мой взгляд факты. В ней не будет futex-ов и прочих скучных (наверное) деталей реализации. Будет преимущественно то, что вызывало у меня реакцию «А что, так можно было?!?».

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

System.IO.Pipelines: высокоэффективный IO в .NET

Время на прочтение12 мин
Количество просмотров27K
System.IO.Pipelines — это новая библиотека, упрощающая организацию кода в .NET. Трудно обеспечить высокую производительность и точность, если приходится иметь дело со сложным кодом. Задача System.IO.Pipelines — упростить код. Подробнее под катом!

Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Дискретная производная или Коротко о том, как суммировать ряды

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

Вступление


Бывало когда-нибудь такое, что вы хотите просуммировать какой-то бесконечный ряд, но не можете подобрать частичную сумму ряда? Вы все ещё не пользовались дискретной производной? Тогда мы идём к вам!

Определение


Дискретной производной последовательности $a_n$ назовем такую последовательность $\Delta a_n$, что для любых натуральных $n>1$ выполняется:

$\Delta a_n = a_n - a_{n-1}$



Рассмотрим примеры:

  • $a_n = 1\\ \Delta a_n = a_n - a_{n-1} = 1 - 1 = 0$

  • $a_n = n\\ \Delta a_n = a_n - a_{n-1} = n - (n - 1) = 1$

  • $a_n = n^2\\ a_n = n^2 - (n - 1)^2 = n^2 - (n^2 - 2n + 1) = 2n-1$

  • $a_n = n^3\\ \Delta{a_n} = n^3 - (n - 1)^3 = 3n^2 - 3n + 1$

  • $a_n = k^n\\ \Delta{a_n} = k^n - k^{n-1} = k^{n-1}(k-1)$


Ну, суть вы поняли. Чем-то напоминает производную функции, правда? Мы поняли как вычислять дискретные производные «простейших» последовательностей. Кхм, но что делать с суммой, разностью, произведением и частным последовательностей? У «обычной» производной есть некоторые правила дифференцирования. Давайте-ка придумаем для дискретной!
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии6

DNS rebinding в 2k19, или как по-настоящему вспотеть, посетив порносайт

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


Всем привет! Сегодня мы бы хотели рассказать об одной старой и почти всеми забытой атаке под названием DNS rebinding. Первые разговоры о ней начались еще в 2007 году, однако тогда эксперты из области практической информационной безопасности не уделяли ей должного внимания в связи с особенностями эксплуатации этой атаки, а также мало ощутимыми, как тогда казалось, последствиями. Сегодня мы попробуем убедить в обратном их и вас, в частности, продемонстрировав, что в современном мире эта атака обрела второе дыхание и более не кажется такой безобидной.

Читать дальше →
Всего голосов 146: ↑143 и ↓3+140
Комментарии163

Минималистический четырёхголосный MIDI-проигрыватель

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


Предлагаемый проигрыватель не требует карты памяти, он хранит MIDI-файл длиной до 6000 байт непосредственно в микроконтроллере ATtiny85 (в отличие от этой классической конструкции, которая проигрывает WAV-файлы, и карту памяти, естественно, требует). Четырёхголосное проигрывание с затуханием при помощи ШИМ реализовано программно. Пример звучания — по ссылке.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии10

Изготовление печатных плат ЛУТ'ом от А до Я

Время на прочтение8 мин
Количество просмотров136K
Доброго времени суток! Среди моих знакомых бытует мнение, что самостоятельно изготавливать печатные платы (ПП) бесполезно. Учитывая, что современные компоненты далеко ушли от DIP корпусов, то кустарно травить платы под них даже и не стоит пытаться. Тем не менее необходимость в быстрой оценке того или иного компонента всегда есть, и ждать несколько суток заказанной платы времени нет. И это учитывая, что заказ за «несколько суток» дорог, для одноразовой задачи.

В данной статье я хочу изложить порядок действий, которые позволят быстро изготавливать ПП под компоненты в корпусах подобных TQFP-100, то есть с ногами 0,2мм и таким же зазором, и при этом сводить брак к минимуму.

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

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

Под катом подробности и трафик.
Подробности
Всего голосов 88: ↑86 и ↓2+84
Комментарии86

Конференция Lua in Moscow 2019

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


В первое воскресенье марта в офисе Mail.ru Group пройдёт третья международная конференция Lua in Moscow 2019. Вас ждут выступления автора языка Роберто Иерусалимского и лучших зарубежных и отечественных экспертов по Lua и LuaJIT.

Lua — уникальный язык программирования, который используется далеко не только в индустрии компьютерных игр, но и как встроенный язык расширений в таких инструментах web-программирования, как Redis, nginx, Tarantool, OpenResty. Lua также применяется для анализа больших данных и научных вычислений, используется во многих роутерах, принтерах и других подобных устройствах.

Даже если вы ещё не пишете на Lua, приходите! Наверняка эта конференция откроет вам глаза на что-то новое и интересное!
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии4

RAM-машина

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

Часть I
Часть II
Часть III
Часть IV
Часть V


На данном ресурсе уже была опубликована статья, посвящённая RAM-машине
Wikipedia также содержит статью об этой вычислительной модели

RAM-машина, которая упоминается в книге «Построение и анализ вычислительных алгоритмов» (авторы: Ахо, Хопкрофт, Ульман) имеет ограниченный набор арифметических команд (сложение, вычитание, умножение, деление), команду безусловного перехода, две команды условных переходов. Здесь же из арифметических команд присутствуют только сложение и вычитание, команды ветвления (переходов) будут идентичными командам, приведённым в книге

LIttle Man Computer ссылка обладает схожим набором команд
Online симулятор LMC находится здесь

Схема АЛУ представлена ниже.
Шина соединяет память данных с сумматором (обозначен плюсом), вычитателем (обозначен минусом) и мультиплексором MUX.
Переключение между сумматором и вычитателем производится мультиплексором.
Также в мультиплексор загружаются числовые данные из устройства ввода data_input (в физическом воплощении — это набор переключателей).

Флаги состояния Acc>=0 и Acc=0, а также устройство вывода подключены к выводу аккумулятора
image

Отличием LIttle Man Computer от RAM-машины является механизм, обеспечивающий косвенную адресацию (возможность работать с числом, хранящемся в памяти, как с адресом).

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


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

Инъекции MSIL кода в стороннюю сборку при помощи Mono.Cecil. Реализация принципов АОП в NET

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

Введение


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

Многие .NET разработчики знают, что для доступа к объектам чужой сборки можно использовать Reflection. С помощью типов из System.Reflection мы можем получить доступ ко многим объектам .NET сборки, просмотреть их метаданные, и даже использовать те объекты, доступ к которым ограничен (например, private методы чужого класса). Но использование Reflection имеет свои ограничения и главная причина этому — данные, с котороми вы работаете через Reflection, все еще считаются кодом. Таким образом, вы, к примеру, можете получить CodeAccessSecurity exception, если сборка, к которой вы пытаетесь применить Reflection, запрещает это. По этой же причине Reflection работает довольно медленно. Но наиболее важным для данной статьи является то, что стандартный Reflection не позволяет изменять существующие сборки, только генерировать и сохранять новые.

Mono.Cecil


Качественно иной подход предлагает бесплатная библиотека с открытым исходным кодом Mono.Cecil. Главное отличие подхода Mono.Cecil от подхода Reflection в том, что данная библиотка работает с NET сборкой как с потоком байт. При загрузке сборки, Mono.Cecil разбирает PE заголовок, CLR заголовок, MSIL код классов и методов и т.д. работая напрямую с потоком байтов, представляющим сборку. Таким образом, с помощью данной библиотеки можно как угодно (в пределах предусмотренного) изменять имеющуюся сборку.
Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии14

Steam CEG от Valve и с чем его едят. Все сложное — просто

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

Добрый час, %USERNAME%! В моей предыдущей статье "Steam CEG от Valve и с чем его едят. Введение" было дано лишь абстрактное понимание и принципы работы технологии CEG. В этой статье будет по абсолютному минимуму теории и преобладающее большинство практики. Сегодня и сейчас мы рассмотрим, можно ли «отучить» от этой защиты заветный исполняемый файл.
Читать дальше
Всего голосов 35: ↑33 и ↓2+31
Комментарии14

Информация

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