Еще немного о наших любимых играх на NES. Точнее, о двоичном трансляторе, который умеет транслировать ROM-файлы, содержащие игру для приставки, в исполняемые файлы x86_64.
#literature
#literature
👍5
Ментальный инструментарий
Наверняка многие из читателей сталкивались с такими штуками, как «шесть шляп мышления» или «матрица важных и срочных дел Эйзенхауэра». Подобных инструментов создано невероятно много, и они действительно помогают справляться с непростыми задачами. Множество ментальных инструментов для эффективного принятия решений, системного мышления и решения трудных задач были сведены Адамом Амраном (Adam Amran) в перечень и доступны на его сайте untools.co.
#digest
Наверняка многие из читателей сталкивались с такими штуками, как «шесть шляп мышления» или «матрица важных и срочных дел Эйзенхауэра». Подобных инструментов создано невероятно много, и они действительно помогают справляться с непростыми задачами. Множество ментальных инструментов для эффективного принятия решений, системного мышления и решения трудных задач были сведены Адамом Амраном (Adam Amran) в перечень и доступны на его сайте untools.co.
#digest
👍8
«Компиляция Фортрана-66, предписанная богом»
Наткнулись на настоящую капсулу времени – чудный текст из 1990-х «про настоящих программистов».
Чего стоит один только этот пассаж:
«Из собственного опыта, я думаю, можно смело сказать, что будущее прекрасно для настоящих программистов. Ни OS/370, ни Фортран не высказывают ни каких признаков отмирания, несмотря на усилия программистов на Паскале. Даже такие изощренные уловки, как добавление конструкций структурного программирования в Фортран, провалились. Да, конечно, некоторые изготовители ЭВМ выпустили компиляторы Фортрана-77, но каждый из них оставил возможность перейти в режим компилятора Фортрана-66 с помощью удаления одной перфокарты - чтобы компилировать циклы DO как предписано богом».
Полная версия – по ссылке.
Если вдруг вы тоже натыкались на статьи N-летней давности а-ля «Python обречен» или «С++ мертв» – дайте огня в комментариях :)
#fun
Наткнулись на настоящую капсулу времени – чудный текст из 1990-х «про настоящих программистов».
Чего стоит один только этот пассаж:
«Из собственного опыта, я думаю, можно смело сказать, что будущее прекрасно для настоящих программистов. Ни OS/370, ни Фортран не высказывают ни каких признаков отмирания, несмотря на усилия программистов на Паскале. Даже такие изощренные уловки, как добавление конструкций структурного программирования в Фортран, провалились. Да, конечно, некоторые изготовители ЭВМ выпустили компиляторы Фортрана-77, но каждый из них оставил возможность перейти в режим компилятора Фортрана-66 с помощью удаления одной перфокарты - чтобы компилировать циклы DO как предписано богом».
Полная версия – по ссылке.
Если вдруг вы тоже натыкались на статьи N-летней давности а-ля «Python обречен» или «С++ мертв» – дайте огня в комментариях :)
#fun
👍13
Генерируем видео-демонстрации на языке C
В своем блоге Крис Веллонс опубликовал заметку, где рассказал о методе, который он использует для генерации видео-демонстраций.
Подход покупает своим минимализмом: в программе на языке C Крис создает кадры будущего видео в форме Netpbm изображений, а звук генерирует в формате WAV. Оба этих формата достаточно просты для ручной генерации и не требуют внешних зависимостей. Далее отдельные кадры и звук склеиваются при помощи ffmpeg.
Обратите внимание, насколько качественные видеоролики можно получить с таким простым подходом:
Демонстрация алгоритмов сортировки
Демонстрация рейтрейсера
Демонстрация физического движка и рейтрейсера
Такой метод не будет работать без установленной в системе ffmpeg, но эта утилита, как и одноименная библиотека, доступна во всех современных Unix-системах. Можно ли обойтись без нее? Возможно, ведь существуют достаточно простые видеоформаты, например MPEG-1, спецификации которого открыты. Но, конечно, для достижения аналогичного результата придется потрудиться.
#digest
В своем блоге Крис Веллонс опубликовал заметку, где рассказал о методе, который он использует для генерации видео-демонстраций.
Подход покупает своим минимализмом: в программе на языке C Крис создает кадры будущего видео в форме Netpbm изображений, а звук генерирует в формате WAV. Оба этих формата достаточно просты для ручной генерации и не требуют внешних зависимостей. Далее отдельные кадры и звук склеиваются при помощи ffmpeg.
Обратите внимание, насколько качественные видеоролики можно получить с таким простым подходом:
Демонстрация алгоритмов сортировки
Демонстрация рейтрейсера
Демонстрация физического движка и рейтрейсера
Такой метод не будет работать без установленной в системе ffmpeg, но эта утилита, как и одноименная библиотека, доступна во всех современных Unix-системах. Можно ли обойтись без нее? Возможно, ведь существуют достаточно простые видеоформаты, например MPEG-1, спецификации которого открыты. Но, конечно, для достижения аналогичного результата придется потрудиться.
#digest
👍10
Вы определенно знаете WSL, подсистему Windows Subsystem for Linux. А вот этот проект творит нечто совершенно невероятное – он реализует своего рода подсистему DOS для Linux. Вы можете запустить сеанс Linux из командной оболочки DOS, а затем вернуться к DOS. Детали реализации впечатляют :)
#digest
#digest
👍2
Метапрограммирование в стандартном C
Препроцессор языка C, конечно, не полон по Тьюрингу, но позволяет выполнять достаточно сложные вычисления, пользуясь моделями, основанными на CPS (continuation passing style). Количество подстановок макросов, доступных для программиста, лимитировано, но достаточно для большинства практических нужд, например для реализации кодогенераторов.
Известны случаи, когда на основе препроцессора создавали интерпретаторы LISP-подобных языков. Но в большинстве случаев это были не законченные инструменты для задач метапрограммирования, а скорее упражнения в написании незаурядного кода, достигающего лимитов языка программирования.
Бывают и практичные исключения, например Metalang99, который позволяет выполнять несложные вычисления и операции со списками на стадии препроцессирования. У Metalang99 есть вполне прагматичное применение: на его основе реализована библиотека Datatype99, привносящая в C99 полноценные алгебраические типы данных с привычным деконструирующим оператором match, совсем как в OCaml и Haskell.
#digest
Препроцессор языка C, конечно, не полон по Тьюрингу, но позволяет выполнять достаточно сложные вычисления, пользуясь моделями, основанными на CPS (continuation passing style). Количество подстановок макросов, доступных для программиста, лимитировано, но достаточно для большинства практических нужд, например для реализации кодогенераторов.
Известны случаи, когда на основе препроцессора создавали интерпретаторы LISP-подобных языков. Но в большинстве случаев это были не законченные инструменты для задач метапрограммирования, а скорее упражнения в написании незаурядного кода, достигающего лимитов языка программирования.
Бывают и практичные исключения, например Metalang99, который позволяет выполнять несложные вычисления и операции со списками на стадии препроцессирования. У Metalang99 есть вполне прагматичное применение: на его основе реализована библиотека Datatype99, привносящая в C99 полноценные алгебраические типы данных с привычным деконструирующим оператором match, совсем как в OCaml и Haskell.
#digest
👍3
Краткий гайд по анонимному ведению блога, который может быть полезен даже профессиональным журналистам, не говоря уже о простых технических энтузиастах. Да, и мы кое-какими приемами оттуда тоже пользуемся :)
Существуют и более продвинутые гайды по анонимности, например этот. А совсем увлечённым рекомендуем поискать The Hitchhiker’s Guide to Online Anonymity – невероятно подробный, постоянно обновляемый учебник по практически полной анонимности в сети.
#literature
Существуют и более продвинутые гайды по анонимности, например этот. А совсем увлечённым рекомендуем поискать The Hitchhiker’s Guide to Online Anonymity – невероятно подробный, постоянно обновляемый учебник по практически полной анонимности в сети.
#literature
👍5👎1
Поддержка микроядер в железе
Так уж сложилось, что большинство популярных операционных систем работают поверх монолитных ядер. Все современное оборудование создавалось и оптимизировалось под монолитную архитектуру ОС и не учитывает нужды альтернативных архитектур вроде микро и экзоядер.
Таким образом, разработчикам микроядерных систем приходится «есть, что дают»: решение максимально оптимизируется под железо, которое ориентируется на запуск ОС с монолитным ядром. Поэтому, микроядерные ОС часто проигрывают в производительности своим монолитным собратьям.
Но прогресс не стоит на месте, микроядерные ОС набирают популярность, а значит, пришло время для того, чтобы оборудование начало предоставлять возможности, необходимые таким системам.
На конференции FOSDEM 2019 сотрудник Huawei Мартин Деки (Martin Děcký) поделился со зрителями видением, какие технологии, реализованные в железе, улучшат производительность и безопасность решений на основе микроядер в будущем.
#digest
Так уж сложилось, что большинство популярных операционных систем работают поверх монолитных ядер. Все современное оборудование создавалось и оптимизировалось под монолитную архитектуру ОС и не учитывает нужды альтернативных архитектур вроде микро и экзоядер.
Таким образом, разработчикам микроядерных систем приходится «есть, что дают»: решение максимально оптимизируется под железо, которое ориентируется на запуск ОС с монолитным ядром. Поэтому, микроядерные ОС часто проигрывают в производительности своим монолитным собратьям.
Но прогресс не стоит на месте, микроядерные ОС набирают популярность, а значит, пришло время для того, чтобы оборудование начало предоставлять возможности, необходимые таким системам.
На конференции FOSDEM 2019 сотрудник Huawei Мартин Деки (Martin Děcký) поделился со зрителями видением, какие технологии, реализованные в железе, улучшат производительность и безопасность решений на основе микроядер в будущем.
#digest
YouTube
Hardware/Software Co-Design for Efficient Microkernel Execution
by Martin Děcký
At: FOSDEM 2019
https://video.fosdem.org/2019/AW1.121/hardware_software_co_design.webm
While the performance overhead of IPC in microkernel multiserver operating systems is no longer considered a blocker for their practical deployment (thanks…
At: FOSDEM 2019
https://video.fosdem.org/2019/AW1.121/hardware_software_co_design.webm
While the performance overhead of IPC in microkernel multiserver operating systems is no longer considered a blocker for their practical deployment (thanks…
👍4
Хороший гайд по нонфикшн
Эксперт по развитию Джулиан Шапиро (Julian Shapiro) создал Writing Well – короткий гайд про то, как писать полезные и понятные тексты.
Из него читатель узнает, как правильно выбрать тему для статьи, как подготовить первый черновик, как редактировать и улучшать текст, как добавить в текст немного своего стиля, а также как взяться за работу, когда ничего не клеится.
#literature
Эксперт по развитию Джулиан Шапиро (Julian Shapiro) создал Writing Well – короткий гайд про то, как писать полезные и понятные тексты.
Из него читатель узнает, как правильно выбрать тему для статьи, как подготовить первый черновик, как редактировать и улучшать текст, как добавить в текст немного своего стиля, а также как взяться за работу, когда ничего не клеится.
#literature
Julian
Writing Well Handbook by Julian Shapiro
Learn how to write well. Topics include figuring out what to write about, how to write an introduction, the writing process, writing style, and copyediting.
👍4
Угадай DDI
Вопрос с подвохом: какой видеовывод на картинке?
Кажется, что это VGA. Но с точки зрения программирования контроллера дисплея, можно даже не пытаться угадать. К примеру, на одном из устройств на Gemini Lake от Intel есть VGA вывод. Это сразу вызывает подозрение, поскольку всем известно, что начиная с поколения Haswell, контроллеры дисплея в графическом устройстве идут только с поддержкой DDI — digital display interface...
👉 Продолжение
#digest
Вопрос с подвохом: какой видеовывод на картинке?
Кажется, что это VGA. Но с точки зрения программирования контроллера дисплея, можно даже не пытаться угадать. К примеру, на одном из устройств на Gemini Lake от Intel есть VGA вывод. Это сразу вызывает подозрение, поскольку всем известно, что начиная с поколения Haswell, контроллеры дисплея в графическом устройстве идут только с поддержкой DDI — digital display interface...
👉 Продолжение
#digest
👍14👎1
SATA передает ваши ключи по радио
Когда кто-то говорит о информационной безопасности, мы часто вспоминаем угрозы, характерные для программного обеспечения: бинарные уязвимости вроде переполнения буфера на стеке, SQL-иньекции, XSS-атаки. Кто-то, вероятно, знаком с теоретическими основами ИБ и может припомнить различные модели дискреционного и мандатного контроля доступа, модели контроля целостности, широко применяемые в современных операционных системах.
Также существуют и угрозы аппаратного уровня, или на стыке между аппаратурой и программным обеспечением. К ним можно отнести уязвимости разного рода в механизмах безопасности, предоставляемых центральным процессором или другими устройствами.
Но есть особый мир угроз, которые в англоязычной литературе называются TEMPEST. Этот род угроз связан с путями утечки конфиденциальных данных через каналы связи, организованные непредусмотренным в системе образом.
Наиболее известный пример атаки такого рода — system bus radio. Это программа, которую можно запустить на макбуке и она начнет вещать песню «У Мэри был барашек» на частоте 1580 kHz (AM). Программа не использует какой-либо предусмотренный производителем канал связи, вместо этого она просто исполняет определенные паттерны инструкций со специально подобранной частотой. Процессор и другие юниты, сидящие на системной шине, работают как антенна, излучая электромагнитные волны. Перехватить такой сигнал можно при помощи SDR-приемника.
Другой пример демонстрирует перехват приватных ключей RSA через наблюдение за электромагнитным излучением ноутбука, выполняющего расшифровку сообщения. Это возможно сделать при помощи достаточно компактного устройства, расположенного в радиусе полуметра от компьютера.
Свежая публикация исследователей демонстрирует, как SATA кабели могут быть использованы для организации утечки через ЭМ-излучение. Правда, в этом варианте злоумышленнику все же приходится произвести проникновение в систему заранее, чтобы запустить злонамеренный код, инициирующий передачу данных.
Долгое время атаки такого рода волновали только спецслужбы и военных, но кажется приходит время, когда и мы с вами можем стать жертвами хорошо подготовленных хакеров.
#digest
Когда кто-то говорит о информационной безопасности, мы часто вспоминаем угрозы, характерные для программного обеспечения: бинарные уязвимости вроде переполнения буфера на стеке, SQL-иньекции, XSS-атаки. Кто-то, вероятно, знаком с теоретическими основами ИБ и может припомнить различные модели дискреционного и мандатного контроля доступа, модели контроля целостности, широко применяемые в современных операционных системах.
Также существуют и угрозы аппаратного уровня, или на стыке между аппаратурой и программным обеспечением. К ним можно отнести уязвимости разного рода в механизмах безопасности, предоставляемых центральным процессором или другими устройствами.
Но есть особый мир угроз, которые в англоязычной литературе называются TEMPEST. Этот род угроз связан с путями утечки конфиденциальных данных через каналы связи, организованные непредусмотренным в системе образом.
Наиболее известный пример атаки такого рода — system bus radio. Это программа, которую можно запустить на макбуке и она начнет вещать песню «У Мэри был барашек» на частоте 1580 kHz (AM). Программа не использует какой-либо предусмотренный производителем канал связи, вместо этого она просто исполняет определенные паттерны инструкций со специально подобранной частотой. Процессор и другие юниты, сидящие на системной шине, работают как антенна, излучая электромагнитные волны. Перехватить такой сигнал можно при помощи SDR-приемника.
Другой пример демонстрирует перехват приватных ключей RSA через наблюдение за электромагнитным излучением ноутбука, выполняющего расшифровку сообщения. Это возможно сделать при помощи достаточно компактного устройства, расположенного в радиусе полуметра от компьютера.
Свежая публикация исследователей демонстрирует, как SATA кабели могут быть использованы для организации утечки через ЭМ-излучение. Правда, в этом варианте злоумышленнику все же приходится произвести проникновение в систему заранее, чтобы запустить злонамеренный код, инициирующий передачу данных.
Долгое время атаки такого рода волновали только спецслужбы и военных, но кажется приходит время, когда и мы с вами можем стать жертвами хорошо подготовленных хакеров.
#digest
👍15
От разработчика до руководителя: путь менеджера
Камиль Фурнье (Camille Fournier) — опытная руководительница, которая в своей карьере сталкивалась с разработкой программных продуктов разного масштаба — написала The Manager's Path.
В своей книге она делится с начинающими и будущими менеджерами, чем придется заниматься в новой для них роли, и как побороть проблемы, возникающие на пути. В том числе психологические. Она постепенно рассказывает про каждую руководящую IT-роль, существующую в любой компании: от тимлида до технического директора.
Всё бы ничего, но книга плохо переведена на русский; да так, что местами вообще непонятно, о чем идет речь. Особенно когда Камиль упоминает технические стороны проекта. Явно переводчик не разбирался в этой терминологии. Тем не менее, книга помогает очертить границы, понять, чего от вас ждут как от менеджера, и какие ошибки совершают бывшие технари на позиции руководителя любого уровня.
#literature
Камиль Фурнье (Camille Fournier) — опытная руководительница, которая в своей карьере сталкивалась с разработкой программных продуктов разного масштаба — написала The Manager's Path.
В своей книге она делится с начинающими и будущими менеджерами, чем придется заниматься в новой для них роли, и как побороть проблемы, возникающие на пути. В том числе психологические. Она постепенно рассказывает про каждую руководящую IT-роль, существующую в любой компании: от тимлида до технического директора.
Всё бы ничего, но книга плохо переведена на русский; да так, что местами вообще непонятно, о чем идет речь. Особенно когда Камиль упоминает технические стороны проекта. Явно переводчик не разбирался в этой терминологии. Тем не менее, книга помогает очертить границы, понять, чего от вас ждут как от менеджера, и какие ошибки совершают бывшие технари на позиции руководителя любого уровня.
#literature
👍7
Как обезопасить что угодно
Многие привыкли думать, что сферы физической и информационной безопасности — два ортогональных, непохожих мира. Что может быть общего у охранника на входе в офисное здание и модели ролевого контроля доступа? Разве можно сравнивать пункт досмотра пассажиров крупного аэропорта и модуль ядра современного антивирусного пакета?
Репозиторий how-to-secure-anything на гитхабе содержит хорошо организованный дайджест материалов на тему безопасности. Здесь можно отыскать информацию про базовые понятия информационной безопасности, моделирование угроз, концепцию secure by design, методы поиска уязвимостей, популярные методы защиты информации и даже документы, описывающие стандартны проектирования тюрем! По каждой теме есть краткие заметки от автора, упрощающие погружение в эту интересную и непростую область.
Если задуматься, то многие достижения в ИБ проистекают из докомпьютерной эпохи, правил документооборота в организациях, обрабатывающих грифованную информацию, военных ведомств, и т.п. Поэтому архитектура современной безопасной информационной системы вполне может напоминать устройство хорошо спроектированной атомной электростанции или крупной организации с четкой иерархией ролей и прав.
#digest
Многие привыкли думать, что сферы физической и информационной безопасности — два ортогональных, непохожих мира. Что может быть общего у охранника на входе в офисное здание и модели ролевого контроля доступа? Разве можно сравнивать пункт досмотра пассажиров крупного аэропорта и модуль ядра современного антивирусного пакета?
Репозиторий how-to-secure-anything на гитхабе содержит хорошо организованный дайджест материалов на тему безопасности. Здесь можно отыскать информацию про базовые понятия информационной безопасности, моделирование угроз, концепцию secure by design, методы поиска уязвимостей, популярные методы защиты информации и даже документы, описывающие стандартны проектирования тюрем! По каждой теме есть краткие заметки от автора, упрощающие погружение в эту интересную и непростую область.
Если задуматься, то многие достижения в ИБ проистекают из докомпьютерной эпохи, правил документооборота в организациях, обрабатывающих грифованную информацию, военных ведомств, и т.п. Поэтому архитектура современной безопасной информационной системы вполне может напоминать устройство хорошо спроектированной атомной электростанции или крупной организации с четкой иерархией ролей и прав.
#digest
GitHub
GitHub - veeral-patel/how-to-secure-anything: How to systematically secure anything: a repository about security engineering
How to systematically secure anything: a repository about security engineering - veeral-patel/how-to-secure-anything
👍11
Забытое наследие TempleOS
Среди разработчиков операционных систем есть свои люди-легенды: Линус Торвальс, Тео де Раадт, Эндрю Таненбаум, Дейв Катлер… Все они известны благодаря своему видению и вкладу в разработку знаковых ОС, которыми пользуются миллионы людей.
В то же время мы уверены: в мире любительской разработки ОС есть персоны, которых мы запомним ничуть не меньше, чем того же Торвальдса. Отчасти благодаря их экспрессивному поведению, отчасти за смелые идеи, далекие от статуса-кво. Один из таких людей — Терри Девис, разработчик TempleOS.
👉 Продолжение
#digest
Среди разработчиков операционных систем есть свои люди-легенды: Линус Торвальс, Тео де Раадт, Эндрю Таненбаум, Дейв Катлер… Все они известны благодаря своему видению и вкладу в разработку знаковых ОС, которыми пользуются миллионы людей.
В то же время мы уверены: в мире любительской разработки ОС есть персоны, которых мы запомним ничуть не меньше, чем того же Торвальдса. Отчасти благодаря их экспрессивному поведению, отчасти за смелые идеи, далекие от статуса-кво. Один из таких людей — Терри Девис, разработчик TempleOS.
👉 Продолжение
#digest
👍9
Казалось бы, в наше время ручное шифрование годится разве что для музеев, поскольку такие шифры, как правило, очень просты и легко поддаются взлому. Однако существует алгоритм LC4 (ElsieFour) – lowtech потоковый шифр, который достаточно трудно взломать.
Он позволяет шифровать и расшифровывать сообщения без какого-либо вычислительного устройства, используя только ручку и бумагу. Более того, LC4 можно использовать не только для шифрования сообщения, но и для аутентификации отправителя.
Упростить шифрование и дешифрование можно при помощи специального набора фишек, которые легко изготовить из обычной фанеры. Подробности смотрите в статье по ссылке выше.
#digest
Он позволяет шифровать и расшифровывать сообщения без какого-либо вычислительного устройства, используя только ручку и бумагу. Более того, LC4 можно использовать не только для шифрования сообщения, но и для аутентификации отправителя.
Упростить шифрование и дешифрование можно при помощи специального набора фишек, которые легко изготовить из обычной фанеры. Подробности смотрите в статье по ссылке выше.
#digest
👍7
А давненько ничего не было про наши любимые ретро-игры :)
Вот интересная статья о реконструкции старой неопубликованной NES-игры под названием Days of Thunder. Её исходный код годами хранился на…дискетах!
Демо игрушки доступно по этой ссылке.
А если вы тоже хотите покопаться в коде, то исходники лежат здесь.
#fun
Вот интересная статья о реконструкции старой неопубликованной NES-игры под названием Days of Thunder. Её исходный код годами хранился на…дискетах!
Демо игрушки доступно по этой ссылке.
А если вы тоже хотите покопаться в коде, то исходники лежат здесь.
#fun
👍5
Рохус Келлер (Rochus Keller) — программист, создающий свои собственные среды разработки для олдскульных языков программирования. У него много проектов на GitHub, большинство из которых имеют три общие черты:
1. Они используют байт-код LuaJIT в качестве целевого языка
2. Они включают в себя не только компиляторы, но и полнофункциональные IDE с отладчиками
3. Они написаны на C++ с использованием Qt.
Рохус создал такие среды разработки для Smalltalk-80, Simula, Som, Algol-60 и Oberon+. Последний представляет собой язык программирования, подобный Oberon, совместимый с Oberon, Oberon II, Oberon 07, и расширенный некоторыми новыми возможностями, такими как UTF-8, generics и FFI.
Также, в компиляторе Oberon+ Рохус реализовал бэкенд для Mono и рекомендует использовать его по умолчанию вместо LuaJIT.
#digest
1. Они используют байт-код LuaJIT в качестве целевого языка
2. Они включают в себя не только компиляторы, но и полнофункциональные IDE с отладчиками
3. Они написаны на C++ с использованием Qt.
Рохус создал такие среды разработки для Smalltalk-80, Simula, Som, Algol-60 и Oberon+. Последний представляет собой язык программирования, подобный Oberon, совместимый с Oberon, Oberon II, Oberon 07, и расширенный некоторыми новыми возможностями, такими как UTF-8, generics и FFI.
Также, в компиляторе Oberon+ Рохус реализовал бэкенд для Mono и рекомендует использовать его по умолчанию вместо LuaJIT.
#digest
GitHub
rochus-keller - Overview
see http://rochus-keller.ch. rochus-keller has 76 repositories available. Follow their code on GitHub.
👍9
Генерируем видео-демонстрации на языке C (часть 2)
Недавно мы рассказывали о простом способе генерации видео, который Крис Веллонс (Chris Wellons) использует для демонстрации различных алгоритмов — например, сортировки.
Вот еще несколько классных роликов, сгенерированных простыми программами на C:
* Сортировка пикселей случайных цветов (код, видео)
* Генерация лабиринта и поиск пути в нем (код, видео)
* Решение задачи о скользящих ладьях (код, видео)
* Имитация пламени (код, видео)
* Построение случайных путей в трехмерном пространстве (код, видео)
* Построение аттрактора Лоренца (код, видео)
Что еще можно было бы визуализировать подобным образом? Наглядно показать переключение состояний конечного автомата? Изобразить трассу выполнения программы?
Пишите свои варианты в комментариях 👇
Недавно мы рассказывали о простом способе генерации видео, который Крис Веллонс (Chris Wellons) использует для демонстрации различных алгоритмов — например, сортировки.
Вот еще несколько классных роликов, сгенерированных простыми программами на C:
* Сортировка пикселей случайных цветов (код, видео)
* Генерация лабиринта и поиск пути в нем (код, видео)
* Решение задачи о скользящих ладьях (код, видео)
* Имитация пламени (код, видео)
* Построение случайных путей в трехмерном пространстве (код, видео)
* Построение аттрактора Лоренца (код, видео)
Что еще можно было бы визуализировать подобным образом? Наглядно показать переключение состояний конечного автомата? Изобразить трассу выполнения программы?
Пишите свои варианты в комментариях 👇
👍8
Угадай DDI-2
ПсевдоVGA вы уже видели. В этот раз вам может показаться, что перед вами DisplayPort коннектор. А это значит, что общаться с монитором вы будете с использованием DP AUX канала, через который получите доступ к DPCD (DisplayPort Configuration Data). Но что делать, если вы подключили монитор, а DP AUX никак вам не отвечает?
👉Продолжение
#digest
ПсевдоVGA вы уже видели. В этот раз вам может показаться, что перед вами DisplayPort коннектор. А это значит, что общаться с монитором вы будете с использованием DP AUX канала, через который получите доступ к DPCD (DisplayPort Configuration Data). Но что делать, если вы подключили монитор, а DP AUX никак вам не отвечает?
👉Продолжение
#digest
👍4
ОС для OISC-процессоров
Совершенно точно наши читатели слышали акроним RISC (Reduced Instruction Set Computer). Традиционно к RISC относят процессоры, основанные на семействе архитектур ARM, процессоры на базе PowerPC, SPARC, MIPS и RISC-V. Современные x86-совместимые процессоры тоже не совсем честно называть CISC (Complex Instruction Set Computer), поскольку все верхнеуровневые их опкоды обеспечиваются уровнем микрокода, а ниже ядро вполне можно считать RISC-подобным.
Упрощение набора инструкций — естественный путь, который преодолели многие производители. Возникает вопрос, насколько простым может быть набор инструкций процессора? Ответ на него необходимо искать в мире эзотерического программирования.
Существуют архитектуры и языки программирования, которые создают для того, чтобы проверить некоторую концепцию, ну или просто ради прикола. Их часто называют эзотерическими. Наиболее простыми из эзотерических архитектур оказываются те, что основаны на одном из вариантов URISC (Ultra Reduced Instruction Set Computer) или OISC (One Instruction Set Computer). Они примитивно устроены, но при этом полны по Тьюрингу и позволяют реализовать любой алгоритм. Мы уже писали об одном OISC-процессоре Qibec, собранном вручную на транзисторах.
Казалось бы, кому может быть интересно писать что-либо сложное для OISC-процессора? Насколько продвинутую программу можно написать, используя только одну инструкцию, и как быстро программист будет готов сдаться, воюя с непривычным низкоуровневым окружением? Удивительно, но для одной из таких архитектур была разработана целая операционная система с графическим интерфейсом и достаточно богатым набором приложений — DawnOS!
#digest
Совершенно точно наши читатели слышали акроним RISC (Reduced Instruction Set Computer). Традиционно к RISC относят процессоры, основанные на семействе архитектур ARM, процессоры на базе PowerPC, SPARC, MIPS и RISC-V. Современные x86-совместимые процессоры тоже не совсем честно называть CISC (Complex Instruction Set Computer), поскольку все верхнеуровневые их опкоды обеспечиваются уровнем микрокода, а ниже ядро вполне можно считать RISC-подобным.
Упрощение набора инструкций — естественный путь, который преодолели многие производители. Возникает вопрос, насколько простым может быть набор инструкций процессора? Ответ на него необходимо искать в мире эзотерического программирования.
Существуют архитектуры и языки программирования, которые создают для того, чтобы проверить некоторую концепцию, ну или просто ради прикола. Их часто называют эзотерическими. Наиболее простыми из эзотерических архитектур оказываются те, что основаны на одном из вариантов URISC (Ultra Reduced Instruction Set Computer) или OISC (One Instruction Set Computer). Они примитивно устроены, но при этом полны по Тьюрингу и позволяют реализовать любой алгоритм. Мы уже писали об одном OISC-процессоре Qibec, собранном вручную на транзисторах.
Казалось бы, кому может быть интересно писать что-либо сложное для OISC-процессора? Насколько продвинутую программу можно написать, используя только одну инструкцию, и как быстро программист будет готов сдаться, воюя с непривычным низкоуровневым окружением? Удивительно, но для одной из таких архитектур была разработана целая операционная система с графическим интерфейсом и достаточно богатым набором приложений — DawnOS!
#digest
👍11
Анимированные эллиптические кривые
Современный интернет невозможен без TLS: мы передаем множество чувствительных данных, начиная от паролей, заканчивая номерами банковских карт. Мы надеемся, что эти данные будут защищены от хищения и подмены.
Важная часть TLS-протокола — обмен ключами. Последняя версия стандарта использует для этого криптографию на основе эллиптических кривых. Но хорошо ли вы понимаете, что это такое и как работает?
Если вы не торопитесь погружаться в детали работы алгоритма, а просто хотите в целом понять, что там происходит, — можем посоветовать анимированную демонстрацию базовых операций на эллиптических кривых. Там же можно увидеть, как происходит непосредственно обмен ключевой информацией.
#digest
Современный интернет невозможен без TLS: мы передаем множество чувствительных данных, начиная от паролей, заканчивая номерами банковских карт. Мы надеемся, что эти данные будут защищены от хищения и подмены.
Важная часть TLS-протокола — обмен ключами. Последняя версия стандарта использует для этого криптографию на основе эллиптических кривых. Но хорошо ли вы понимаете, что это такое и как работает?
Если вы не торопитесь погружаться в детали работы алгоритма, а просто хотите в целом понять, что там происходит, — можем посоветовать анимированную демонстрацию базовых операций на эллиптических кривых. Там же можно увидеть, как происходит непосредственно обмен ключевой информацией.
#digest
curves.xargs.org
The Animated Elliptic Curve
Visualize elliptic curve cryptography with animated examples
👍11😁1