Últimas publicaciones de Just code IT (@justcodeit_channel) en Telegram

Publicaciones de Telegram de Just code IT

Just code IT
Верим в everything-as-code. Обсуждаем, как писать чище, ревьюить объективнее, деплоить быстрее.
1,693 Suscriptores
49 Fotos
134 Videos
Última Actualización 12.03.2025 17:48

El contenido más reciente compartido por Just code IT en Telegram

Just code IT

01 Aug, 15:23

1,005

3D ландшафт в 256 байт

Существуют разные виды intro — небольших динамических сцен, генерируемых программно в реальном времени. Мы уже писали про классику жанра, intro размером в 64 килобайта; но существуют и более компактные варианты — например, с исполняемым файлом, размер которого не превышает 512 или даже 256 байт.

Казалось бы, что можно уместить в 256 байт? Но авторы 256b intro умудряются упаковать в них достаточно нетривиальный видеоряд. Например, на демопати Revision 2024 в номинации 256b intro победила команда ALCATRAZ с их шедевром Remnants. Программа запускается в DOS и написана на языке ассемблера. Разобраться в тонкостях реализации реймаршера, что создает столь реалистичную для такого небольшого бинарника картинку, можно, скачав исходный код программы, любезно предоставленный авторами.

#digest
Just code IT

17 Jul, 16:14

1,216

Практическое погружение в метакомпиляторы

Практически у каждого из наших читателей с образованием в ИТ был курс теории трансляции или компиляторов. Помните, как в рамках этого курса у доски расписывали порождение строк формальными грамматиками, заданными в EBNF? Как изучали нисходящий и восходящий разборы, упражнялись с генераторами парсеров вроде YACC (BISON)?

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

Еще более удивительно, что META II или его ближайшие потомки могут быть полезны нам и сегодня — например, для прототипирования или быстрой разработки предметно-ориентированных языков. В статье «Tutorial: Metacompilers Part 1» можно в интерактивной форме познакомиться с META II и его внутренним устройством. К концу прочтения материала читатель разработает компилятор META II с расширениями на нём самом.

Несмотря на свою простоту, эта компактная система — чудо инженерной мысли. Код метакомпилятора, записанный на специализированном низкоуровневом языке, невероятно компактен и переносим между системами, но позволяет строить довольно нетривиальные трансляторы за минуты!

Идеи META, конечно, никуда не пропали. Например, они живы в OMeta, современном объектно-ориентированном метакомпиляторе.

#digest
Just code IT

03 Jul, 16:58

1,232

Как создаются 64 intro

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

Разработать хорошую demo, достойную презентации на demoparty, непросто. Но куда более интересно уместить такую нетривиальную программу в ограниченный по объему бинарник — например, в 64 или даже 4 килобайта.

Шедевральных примеров таких 64k и 4k intro существует немало, и хорошо, что их авторы пробуют делиться тем, как они добиваются таких удивительных результатов.

Занимательна статья о создании 64k intro с названием Guberniya, которая была презентована на demoparty Revision 2017. Авторы делятся, как выглядел процесс разработки этого чуда, занявший примерно 4 месяца.

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

Время творить, особенно учитывая скорую демопати, проходящую в Санкт-Петербурге! 🙂

#digest
Just code IT

14 Jun, 16:48

1,264

Создание программы 3D моделирования за неделю

Недавно обнаружили на просторах сети занимательную статью одного из постоянных резидентов Handmade Network Дэниэла Хупера (Daniel Hooper). Дэниэл решил разработать минималистичный 3D-редактор, в котором можно было бы создавать достаточно нетривиальные объекты.

Дэниэл потратил примерно одну неделю, а редактор получился действительно компактным. Основной функционал удалось утрамбовать в 2024 строки на языке C и 250 строк шейдерного кода на GLSL. Программа использует минималистичную raylib для создания окна с рабочим OpenGL контекстом.

Текст сопровождается видеороликами с объяснениями по отдельным темам, а весь код выложен на GitHub.

#literature
Just code IT

28 May, 16:48

1,360

VPN, созданный по принципам Secure-by-design

Много кто пишет про подход SbD (Secure-by-design), но в традиционном мире Unix встречается не так много программ, следующих базовым принципам этого подхода.

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

#digest
Just code IT

24 Apr, 16:48

1,433

Наследие Никлауса Вирта

Как известно, 1 января 2024 года не стало Никлауса Вирта (Niklaus Wirth), ученого из Швейцарии, лауреата премии Тьюринга, известного большинству благодаря своему детищу — языку программирования Pascal.

Никлаус повлиял на многие языки программирования и технологии, известные нам сегодня. Немногие знают, но из под его пера вышло и несколько хороших книг по computer science, большинство из которых можно скачать абсолютно бесплатно. Ниже мы решили собрать самые, на наш взгляд, интересные.

Первая книга называется “Algorithms and Data Structures” и является неплохим введением в предмет «Алгоритмы и структуры данных». В книге разобраны алгоритмы сортировки, рекурсия, списки, бинарные деревья поиска, B-деревья и хеширование. Книга хорошо иллюстрирована. Примеры программ приведены на языке Oberon, разработанном Никлаусом Виртом. Этот язык будет понятен большинству студентов, знакомых хотя бы с одним императивным языком программирования.

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

Авторству Вирта принадлежит и одна из наиболее часто рекомендуемых вводных книг по конструированию компиляторов — “Compiler Construction” (часть 1, часть 2). Книга повествует о разработке простого компилятора для подмножества Oberon, которое транслируется в код минималистичного RISC-процессора, реализация эмулятора которого занимает всего страницу печатного текста! Иллюстрации и упражнения значительно упрощают погружение в тему.

Вообще, школа Вирта — отдельный маленький мир со своими языками программирования, операционными системами и даже аппаратными архитектурами. Да, в ETHZ (Швейцарская высшая техническая школа в Цюрихе) создали много самобытных технологий, и Никлаус повлиял на многие из них, выступая автором и вдохновителем большинства проектов. Существует книга, описывающая внутреннее устройство Oberon-технологий, от ОС до железа. Самая свежая книга была многократно упрощена Виртом для обучения студентов. Чтобы сохранить это наследие, энтузиасты перенабрали текст книги в TeX, что позволит исправлять в ней ошибки, а также генерировать удобочитаемые документы — например, в PDF. Даже если вы не планируете разбираться в довольно ограниченной по возможностям учебной системе, чтение этой книги может навести на интересные мысли, а также мотивировать читателя разрабатывать минималистичное программное обеспечение, экономно использующее ресурсы машины.

К виртовской школе можно отнести и другие публикации, например книгу Ханспетера (Hanspeter Mössenböck) Мёссенбока “Object Oriented Programming in Oberon-2”. Эта книга не о языке, а о парадигме программирования. Сам автор пишет, что язык не важен, и все то же самое можно написать на любом другом, если хорошо понять базовые концепции. Книга учит мыслить в ООП-парадигме и проектировать модульное и легко поддерживаемое программное обеспечение. В книге много реалистичных рабочих примеров условно полезных систем, притом, что объем книги весьма небольшой.

#literature
Just code IT

11 Apr, 12:43

1,243

«Моим основным страхом было непонимание, в каком сервисе мою ошибку простят, а в каком будет все печально. И в итоге — боязнь что-либо случайно сломать.»

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

Если рядом с вами есть стажер или студент, обязательно покажите ему эту статью: помогите с пониманием, что страх — это нормально, и он не один.

#literature
Just code IT

21 Mar, 13:49

1,450

Literate Style Unix

Вероятно, некоторые читатели слышали про так называемое «Грамотное программирование» (Literate programming), активно пропагандируемое Дональдом Кнутом. Смысл этого подхода в том, что программа не пишется линейно, как мы привыкли, а создается в порядке размышлений автора. При этом код перемежается с прозой, объясняющей, как этот код работает. Это не то же самое, что хорошо прокомментированный код, ведь «грамотная» программа может использовать довольно высокие уровни абстракции за счет использования механизмов подстановки и сбора кода из отдельных кусочков, раскиданных по всему документу.

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

Чего только не найдешь на просторах сети. Например, мы нашли книгу о устройстве учебной Unix-подобной ОС Ulix, которая является еще и полной имплементацией этой системы, ведь она написана в literate style. Это очень подробная и качественно иллюстрированная книга, которая может быть отличным введением в любительскую разработку операционных систем.

Только представьте, если бы большинство современных open source программ писались в таком стиле! Идеальная документация всегда под рукой 🙂

#digest
Just code IT

05 Mar, 16:24

1,587

Минималистичная библиотека с абстракцией «фреймбуфера»

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

Существует множество библиотек, позволяющих сделать что-то подобное, и наиболее популярная среди них — SDL 2 (Simple DirectMedia Layer). Эта библиотека очень неплоха, но для многих задач она может показаться слишком универсальной и довольно тяжелой.

На выручку может прийти ультракомпактная библиотека TIGR (Tiny GRaphics Library), предоставляющая примитивы для рисования, вывода текста и обработки ввода. Программы, разработанные с использованием этой библиотеки, можно запускать на Windows, MacOS, Linux, iOS и Android — очень неплохой список доступных платформ.

На наш взгляд, библиотека хорошо подойдет для любительского инди-геймдева, например для прохождения game jams на itch.io.

#digest
Just code IT

21 Feb, 05:20

1,473

Учебный компилятор подмножества Cи с оптимизациями

В полку небольших компиляторов языка Cи, пригодных для обучения, прибыло. Встречайте shecc. В отличие от других миниатюрных учебных компиляторов, shecc использует промежуточное представление на основе SSA, умеет выполнять регистровую аллокацию, поддерживает сразу два бекенда для популярных платформ (ARMv7-A и RV32IM), выполняет peephole-оптимизации, а также легко бутстрапится при наличии в системе стандартного компилятора Cи.

Подмножество языка, поддерживаемое компилятором, позволяет писать серьезные программы. Работают даже некоторые конструкции препроцессора! Самое время поковыряться и добавить поддержку x86, не так ли?

#digest