Как стать автором
Обновить
10
0

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

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

Знакомство с p-адическими числами. Часть 1

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

Иллюстрация сложения в p-адической топологии (E. Harriss and R. Nelson)
Изображение с сайта Mathematical Art Galleries


В этой серии из двух статей я приглашаю вас заглянуть в один любопытный и не самый популярный уголок математики, в котором обитают необычные создания — p-адические числа, а попутно хочу рассказать о написанной мной Haskell-библиотеке для работы с ними, а также о двух классных инструментах: о типах-литералах (type literals) и семействах типов (type families), приближающих нас к заветным зависимым типам.


Я люблю язык Haskell и, начиная с какого-то времени, мне стало комфортно думать на нём, особенно, на математические темы. Когда понадобилось освоить новый инструмент, — p-адические числа, оказалось, что в репозитории hackage, основном для Haskell-сообщества, нет инструментов для работы с ними, даже в таких серьёзных теоретико-числовых библиотеках, как arithmetic, arithmoi или factory. В конце концов, я написал и опубликовал свой модуль padic, и во второй части этой серии расскажу о некоторых деталях его реализации. А сейчас речь пойдёт о самих p-адических числах.

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

О шаблонах в С++, чуть сложнее

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

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

Потрогать здесь
Всего голосов 50: ↑50 и ↓0+50
Комментарии30

SCP: почему сеттинг тайного агентства по исследованию артефактов стал так популярен?

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

Если вы активно обитаете в сети и любите интернет-фольклор — скорее всего, вы знаете, что такое SCP.

Если не знаете — то и славно. А за теми, кто знает, уже выехали. Шутка.

SCP — один из самых необычных феноменов коллективного интернет-творчества. Своего рода фэндом без исходного произведения. Точнее, исходник есть – но представляет собой крошечный текст из бездн имиджборд.
Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии39

Лекция 2. Breakout. — CS50`s Introduction to Game Development с русскими субтитрами

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

Привет! Перевод третьей лекции о создании Breakout готов.

Читать далее
Рейтинг0
Комментарии0

Шо там по MTProto в Telegram-то?

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

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

Интересное заявление, не правда ли. Дак давайте посмотрим на протокол шифрования тележки MTProto с криптографической точки зрения.

Ну давайте взглянем
Всего голосов 77: ↑67 и ↓10+57
Комментарии42

Применение биполярных транзисторов с микроконтроллерами

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

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

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

Разработчик российского RISC-V ядра будет учить школьников и студентов ассемблеру RISC-V в субботу

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

В субботу 13 ноября с 12.00 по Москве пройдет следующая сессия Сколковской школы синтеза цифровых схем, в режиме онлайн. По плану на ней должны были быть упражнения на FPGA плате с последовательностной логикой. Однако мы решили изменить план и переставить на эту дату занятие по архитектуре RISC-V. Это занятие было изначально запланировано 11 декабря. Занятие по последовательностной логике будет передвинуто на 20 ноября. Почему мы решили так сделать - см. обьяснение через три абзаца.

Занятие по RISC-V проведет проектировщик российского микропроцессорного ядра Никита Поляков из компании Syntacore. В Syntacore Никита перешел из компании МЦСТ где он проектировал процессор Эльбрус. 

Занятие будет состоять из лекции с одновременными упражнениями на симуляторе RARS. RARS моделирует процессор на уровне архитектуры (системы команд, видимых программисту), в отличие от симулятора Icarus Verilog, который мы обсуждали в предыдущей заметке и который моделирует на уровне регистровых передач / микроархитектуры (внутреннего устройства схемы процессора). Разработчику процессора нужно уметь пользоваться симуляторами обеих типов.

У RARS есть три кнопки - запустить, ассемблировать и выполнить шаг. В конце занятия вы будете уметь программировать на ассемблере, даже если раньше этого никогда не делали. В этой заметке мы расскажем, как установить симулятор и запустить простую программу на ассемблере. Потом в следующей заметке я напишу, что такого особенного есть в архитектуре RISC-V и почему мы выбрали для семинара именно ее, а не ARM, x86/64, MIPS, AVR, SPARC,  Эльбрус, Z80, 6502, PDP-11 или еще что-нибудь другое.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии49

RAD для софт-процессоров и немного «сферических коней в вакууме»

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

Разработка или выбор управляющего контроллера для встраиваемой системы на ПЛИС –актуальная и не всегда тривиальная задача. Часто выбор падает в пользу широкораспространенных IP-ядер, обладающих развитой программно-аппаратной структурой – поддержка высокопроизводительных шин, периферийный устройств, прикладное программное обеспечение и, в ряде случаев, операционных систем (в основном Linux, Free-RTOS).  Одними из причин данного выбора являются желание обеспечить достаточную производительность и иметь под рукой готовый инструментарий для разработки программного обеспечения.

В том случае, если применяемая в проекте ПЛИС не содержит аппаратных процессорных ядер, реализация полноценного процессорного ядра может быть избыточной, или вести к усложнению программного его обеспечения, а следовательно приведет к увеличению затрат на его разработку. Кроме того, универсальное софт-ядро будет, так или иначе, занимать дефицитные ресурсы программируемой логики. Специализированный софт-процессор будет более оптимальным решением в свете экономии ресурсов логики – за счет адаптированной системы команд, небольшого количества регистров, разрядности данных (вплоть до некратной 8битам). Согласование с периферийными устройствами – проблема в основном согласования шин и протоколов. Заменой сложной системы обработки прерываний может служить многопоточная архитектура процессора.

Стековые софт-процессоры и контекст потока

Обычно многопоточные процессоры имеют одно АЛУ и несколько наборов регистров (иногда называемых «теневыми» регистрами) для хранения контекста потока, следовательно, чем больше требуется потоков, тем будут больше накладные расходы логики и памяти. Среди разнообразия архитектур софт-процессорных ядер следует выделить стековую архитектуру. Такие процессоры часто называют еще Форт-процессорами, так как чаще всего их ассемблер естественным образом поддерживает подмножество команд языка Форт.

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

О том, как правильно понимать определитель матрицы

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

Помните байку про интеграл, который пригодился в жизни? Так вот, у определителя тоже есть замечательное применение - пугать детей формулой Лейбница. А давайте даже перепишем ее куда-нибудь в середину, чтобы всем было хорошо видно.

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

Скандальная история последней роторной шифровальной машины

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

И какую роль этот гаджет сыграл в шпионской операции «Рубикон»



Кликабельно: шифровальная машина HX-63 – электромеханическая роторная система, спроектированная и созданная компанией Crypto AG. Машина использует девять роторов (справа от центра) для шифрования сообщений. Слева вверху – двойной принтер для печати на ленте.

Я рос в Нью-Йорке и всю жизнь мечтал быть шпионом. Но когда в январе 1968 года я закончил колледж, бушевали Холодная и Вьетнамская войны, и быть шпионом казалось довольно рискованно. Поэтому я стал инженером-электронщиком, и работал у подрядчика минобороны США над анализаторами спектра реального времени.

В 1976 году при посещении Музея польской армии в Варшаве я увидел "Энигму" – знаменитую немецкую шифровальную машину времён Второй мировой войны. Я был поражён. Через несколько лет мне повезло попасть в огромную штаб-квартиру компании-разработчика шифровальных машин Crypto AG (CAG), расположенную в швейцарской коммуне Штайнхаузен. Там я подружился с криптографом, занимающим довольно высокую должность. И мой друг выдал мне внутреннюю историю компании, написанную её основателем, Борисом Хагелиным. В ней упоминалась шифровальная машина 1963 года выпуска HX-63.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии5

Как распаковать вредоносное ПО с помощью x64dbg

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

Эта статья представляет собой руководство по x64dbg, в котором объясняется и демонстрируется методика реверс-инжиниринга вредоносных программ. Она является продолжением нашей серии публикаций, посвященных x64dbg:

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

REST сервис на C++: POCO+Angular TODO

Время на прочтение8 мин
Количество просмотров31K
POCO — кроссплатформенная open-source библиотека на С++ под Boost Software License: ru.wikipedia.org/wiki/POCO.
POCO имеет в своем составе средства для создания веб-сервисов c RESTful API.
В данной статье рассмотрено создание такого сервиса на примере TODO.

Читать дальше →
Всего голосов 21: ↑15 и ↓6+9
Комментарии4

Внешняя алгебра, которую мы заслужили. Часть 1 — симплексы и границы

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

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

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

Читать далее
Всего голосов 38: ↑37 и ↓1+36
Комментарии48

Как распознать рукописный текст с помощью ИИ на микроконтроллерах

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


Распознавание рукописных цифр с помощью TensorFlow и MNIST стало довольно распространённым введением в искусственный интеллект (ИИ) и ML. «MNIST» — это база данных, которая содержит 70 000 примеров рукописных цифр. Она широко используется как источник изображений для обучения систем обработки изображений и программного обеспечения для машинного обучения.

Хотя учебные пособия по ML с использованием TensorFlow и MNIST стали привычными, до недавнего времени они обычно демонстрировались в полнофункциональных средах обработки с архитектурой x86 и графическими процессорами класса рабочих станций. Однако сегодня можно создать полнофункциональное приложение для распознавания рукописного ввода MNIST даже на 8-разрядном микроконтроллере. Чтобы продемонстрировать это, мы собираемся создать полнофункциональное приложение для распознавания рукописного ввода MNIST, используя TensorFlow Lite для получения результатов ИИ на маломощном микроконтроллере STMicroelectronics на базе процессора ARM Cortex M7.

Приятного чтения!
Всего голосов 18: ↑18 и ↓0+18
Комментарии12

Давайте уберём кватернионы из всех 3D-движков

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

Для записи трёхмерных поворотов программисты графики используют кватернионы. Однако в кватернионах сложно разобраться, потому что изучают их поверхностно. Мы просто принимаем на веру странные таблицы умножения и другие загадочные определения, и используем их как «чёрные ящики», поворачивающие векторы так, как нам нужно. Почему $\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=-1$ и $\mathbf{i} \mathbf{j} = \mathbf{k}$? Почему мы берём вектор и превращаем его в «мнимый» вектор, чтобы преобразовать его, например $\mathbf{q} (x\mathbf{i} + y\mathbf{j} + z \mathbf{k}) \mathbf{q}^{*}$? Да кому это интересно, если всё работает, правда?

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

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

Кроме того, для визуализации и понимания трёхмерных роторов не нужно использовать четвёртое пространственное измерение.

Было бы здорово, если бы начали вытеснять использование и изучение кватернионов, заменяя их роторами. Заменить их очень просто, а код останется почти таким же. Всё, что можно делать с кватернионами, например, интерполяцию и устранение блокировки осей (Gimbal lock), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии85

Магия тензорной алгебры: Часть 1 — что такое тензор и для чего он нужен?

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

Содержание


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова


Введение



Это было очень давно, когда я учился классе в десятом. Среди довольно скудного в научном плане фонда районной библиотеки мне попалась книга — Угаров В. А. «Специальная теория относительности». Эта тема интересовала меня в то время, но информации школьных учебников и справочников было явно недостаточно.



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



Читать дальше →
Всего голосов 60: ↑58 и ↓2+56
Комментарии89

О театре или почему всем плевать

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


На волне хайпа про РЖД я заметил, что много людей, даже из тех, кто "в теме", имеют странное представление о ситуации.


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


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

Всего голосов 205: ↑188 и ↓17+171
Комментарии352

Перехват и обработка событий в файловой системе Linux

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

В предыдущей статье мы рассмотрели сборку и установку пакета на Linux системах, в которой упомянули про Linux Kernel Module (LKM) и обещали раскрыть позднее подробности о пути к нему и его создании. Ну что ж, настало его время. LKM – мы выбираем тебя.

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

Аксиома выбора и принципиальные ограничения человеческого разума

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

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

На мой взгляд, у философии должен быть конкретный объект рассмотрения: бесконечности в теории множеств, трансфинитные числа, теории и доказуемость, гипотеза математической вселенной Макса Тегмарка. И тогда есть реальный прогресс (например, теорема Геделя), а слова просто облегают каркас, задаваемый конкретикой. Иначе получается попытка построить конструкцию из жидкой манной каши, какой-то интеллектуальный онанизм.

Георг Кантор, положивший начало теории множеств и открывший разницу типов мощностей (по-английски cardinalities), на мой взгляд, куда больший философ, чем Кант и Гегель. Вы можете не вынимать ложечку из чашки кофе, когда пьете его и съедать яблоко с огрызком, но знать отличие счетного множества от континуума обязаны, если вы связаны с IT или любой технической сферой.

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

Читать далее
Всего голосов 51: ↑48 и ↓3+45
Комментарии454

Особенности структурной обработки исключений в Win64

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

В процессе перевода своих средств программирования на платформу x86-64 потребовалось перевести и встроенный интерактивный отладчик. В отличие от подключаемых отладчиков данный отладчик находится, так сказать, непосредственно «на борту» каждой исполняемой программы. При этом он имеет сравнительно небольшие размеры (около 44 Кбайт, большую часть которых занимает дизассемблер). Я так привык к этому отладчику, что уже совершенно не могу без него обходиться, и поэтому перевод в 64-разрядную среду стал настоятельно необходимым.

Однако формальный перевод с Win32 в Win64 дал такие странные результаты, что пришлось потратить много сил и времени, чтобы разобраться, почему то, что ранее работало в Windows-XP, перестало нормально работать в Windows 7. Виной всему оказалась структурная обработка исключений, практически не задействованная ранее в среде Win32.

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность