Pull to refresh
10
0
Send message

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

Reading time19 min
Views20K

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


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


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

Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments14

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

Reading time40 min
Views34K

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

Потрогать здесь
Total votes 50: ↑50 and ↓0+50
Comments30

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

Reading time8 min
Views26K

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

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

SCP — один из самых необычных феноменов коллективного интернет-творчества. Своего рода фэндом без исходного произведения. Точнее, исходник есть – но представляет собой крошечный текст из бездн имиджборд.
Читать дальше →
Total votes 55: ↑52 and ↓3+71
Comments39

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

Reading time9 min
Views46K

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

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

Ну давайте взглянем
Total votes 65: ↑55 and ↓10+57
Comments42

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

Level of difficultyMedium
Reading time10 min
Views48K

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

Читать далее
Total votes 100: ↑100 and ↓0+100
Comments77

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

Reading time5 min
Views8.2K

В субботу 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 или еще что-нибудь другое.

Читать далее
Total votes 14: ↑12 and ↓2+14
Comments49

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

Reading time7 min
Views2.5K

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

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

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

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

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments0

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

Reading time5 min
Views29K

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

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments32

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

Reading time15 min
Views12K

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



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

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

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

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

Reading time12 min
Views9.5K

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments1

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

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

Читать дальше →
Total votes 21: ↑15 and ↓6+9
Comments4

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

Reading time13 min
Views20K

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

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

Читать далее
Total votes 25: ↑24 and ↓1+36
Comments48

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

Reading time12 min
Views7.7K


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

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

Приятного чтения!
Total votes 18: ↑18 and ↓0+18
Comments12

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

Reading time13 min
Views30K
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), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments85

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

Reading time7 min
Views355K

Содержание


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


Введение



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



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



Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments89

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

Reading time13 min
Views66K


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


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


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

Total votes 161: ↑144 and ↓17+171
Comments352

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

Reading time11 min
Views7.7K

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

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments8

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

Reading time6 min
Views27K

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

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

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

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

Читать далее
Total votes 36: ↑33 and ↓3+45
Comments454

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

Reading time11 min
Views4K

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

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

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

Читать далее
Total votes 18: ↑17 and ↓1+24
Comments12
1

Information

Rating
Does not participate
Registered
Activity