Just code IT (@justcodeit_channel)の最新投稿

Just code IT のテレグラム投稿

Just code IT
Верим в everything-as-code. Обсуждаем, как писать чище, ревьюить объективнее, деплоить быстрее.
1,693 人の購読者
49 枚の写真
134 本の動画
最終更新日 12.03.2025 17:48

類似チャンネル

opennet.ru
13,019 人の購読者
Книжный куб
9,528 人の購読者
JavaCamp
4,791 人の購読者

Just code IT によってTelegramで共有された最新のコンテンツ

Just code IT

08 Feb, 16:33

1,563

Baremetal игра на C#

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

Благодаря возможности ahead of time компиляции в нативный код, что не так давно существует в .NET, стало возможным писать C# код, выполняющийся без рантайма или с его минимальной заменой.
Михал Стреховский (Michal Strehovsky), инженер из команды рантайма .NET, разработал интересный пример, демонстрирующий прототип игры, основанной на рейкастере и загружаемый без операционной системы. Игра написана на C# и компилируется в бинарник без рантайма, который может быть запущен на любом современной x86-совместимом компьютере с UEFI boot.

У автора также есть реализация аналогичной игры на C# без внешних зависимостей, которая работает в Windows и занимает меньше 2 килобайт.

Если хотите попробовать любительский osdev, а выбор C или Rust покажется заурядным, — почему не обратить внимание на C#?

#fun
Just code IT

24 Jan, 16:37

1,497

Самый маленький PNG в мире

Мы, авторы канала, работаем с кодом системного уровня, и нам периодически приходится ковыряться с hex-дампами в поисках той или иной проблемы. Большинству из нас это ещё и нравится 🙂

Нашим читателям сегодня предлагаем погрузиться в побайтовый разбор однопиксельной картинки в формате PNG, длиной всего 67 байт.

#literature
Just code IT

11 Jan, 16:39

1,743

Бесплатные книги и статьи по безопасной разработке

В рейтинге TIOBE небезопасные языки программирования C и C++ традиционно занимают вторую и третью позиции, уступая только Python.

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

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

Продолжение 👉 по ссылке 

#digest
Just code IT

27 Dec, 16:57

1,694

Маленькие Unix-системы

Еще недавно мы писали про Tilck, учебное ядро ОС, частично совместимое с Linux, а также вспоминали про xv6, столь хорошо известную в кругах хоббийного osdev. А теперь решили порекомендовать еще парочку минималистичных Unix-систем, которые способны запускать под собой вполне взрослое программное обеспечение, например bash, gcc и make.

Fiwix — небольшая учебная POSIX-совместимая система для i386. Да, она не поддерживает SMP, ее ядро невытесняемо, да и устроено оно довольно примитивно. Тем не менее, эта маленькая система может запускать вполне привычное для нас GNU-окружение, более того, она частично совместима с ABI старых версий Linux.

Sortix — еще один интересный проект self-hosted операционной системы. Эта Unix-подобная ОС позволяет запускать под собой довольно много GNU-программ, например binutils, gcc, nasm, python, bison, и многие другие. В первую очередь автор фокусируется именно на возможности разрабатывать и собирать Sortix на нем же самом. Другие фичи, например поддержку сети или SMP, откладываются на более поздние релизы.

А знаете ли вы какие-нибудь Unix-системы с компактной и обозримой реализацией?

#digest
Just code IT

18 Dec, 16:43

1,608

Бесплатные книги по архитектуре программных систем

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

В первую очередь, это два тома книги «The Architecture of Open Source Applications», где описываются красивые архитектурные решения, найденные в известном открытом ПО, например в LLVM, Sendmail, PyPy, Git и других.

Еще одна книга из серии посвящается вопросам производительности программных систем. В ней на примерах известных open source программ разбираются хорошие практики, которые могут помочь и в ваших собственных проектах.

Отличное дополнение к уже названным книгам — брошюра «500 Lines or Less», демонстрирующая компактные реализации решений для нетривиальных задач: создание MVP программы трехмерного моделирования, объектной модели, табличного редактора, или интерпретатора байт-кода Python.

#literature
Just code IT

13 Dec, 08:54

1,543

Кажется, вы больше не должны давать тестовые задания кандидатам на дом

Наткнулись на интересную статью, где через призму AI рассматриваются тестовые задания, которые компании нынче дают кандидатам.

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

#digest
Just code IT

07 Dec, 11:42

1,649

Исходный код Elite с комментариями

Elite — известная серия космических симуляторов с открытым миром, которая зародилась в далеких 80-х. Творение Дэвида Брэбена и Яна Белла стало мегапопулярным, поскольку в те годы игра позволяла путешествовать по трехмерному, хотя и довольно примитивному, случайно сгенерированному миру, сражаться с космическими пиратами, торговать, пристыковываться к заправочным станциям, апгрейдить корабль на заработанные кредиты. И все это на домашних восьмибитных компьютерах вроде BBC Micro!

Была реализация Elite и для Nintendo Entertainment System, известной в СНГ в основном благодаря китайским клонам этой приставки. Мы не встречали ее на китайских пиратских картриджах, но у обеспеченных обладателей настоящей Nintendo такую игру можно было встретить.

Как же разработчики уместили столь продвинутые игровые механики в программе для такой примитивной игровой системы?
Естественно, чтение исходников столь продвинутого проекта может натолкнуть на интересные мысли, научить оптимизировать код, выжимать из примитивного железа все возможное. И сегодня это возможно, конечно, если вы не боитесь ассемблера MOS 6502.

Исходный код, выложенный на Github, прокомментирован невероятно подробно — уверены, что опытному программисту будет легко справиться с чтением, даже если вы плохо знакомы с архитектурой NES. А туториал для освоения ассемблера 6502 мы уже рекомендовали ранее.

Приятного погружения!

#digest
Just code IT

23 Nov, 09:12

1,428

Еще один lowtech шифр

Мы уже описывали один занятный криптографический алгоритм, который можно применять без использования компьютера, он назывался ElsieFour(LC4). Напомним, что относительно других «ручных» шифров, этот предоставлял довольно серьезные гарантии.

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

#digest
Just code IT

17 Nov, 10:14

1,565

Microsoft Open Source and Rust

То, что Microsoft много вкладывается в Open Source, уже ни для кого не секрет: компания выложила в свободный доступ множество своих продуктов, регулярно контрибьютит в исходный код ядра Linux и вообще всячески поддерживает независимых разработчиков.

С недавних пор компания также активно вкладывается в развитие Rust на своей платформе, так как хорошо понимает выгоды от перевода своих системных компонентов на memory- и type-safe язык.

Ну а совсем недавно Microsoft анонсировала следующий шаг — публикацию инструментария для разработки драйверов Windows на Rust. Теперь WDM/WDF-интерфейсы, привычные для системного разработчика, доступны хоть и в ржавом, но безопасном и современном языке! 🙂

#digest
Just code IT

02 Nov, 16:29

1,540

Низкоуровневый бутстрап языков программирования

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

Но как быть с доверием к компилятору? Кен Томпсон в статье "Reflections on Trusting Trust" упоминал, что компилятор, которому мы доверяем, может быть "зараженным" и продуцировать зараженный код. Есть ли способ получить доверенный компилятор сразу?

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

Примерно так устроен проект Картика Агарама (Kartik Agaram) Mu. В рамках этого проекта автор разработал несколько языков программирования, каждый из которых может исполняться на платформе x86 и собирать компилятор языка более высокого уровня, пока не получится компилятор ЯВУ наподобие C.

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

Не менее интересны и проекты, пытающиеся создать минимальный интерпретатор языка Forth.

StoneKnifeForth представляет собой примитивный Forth, все слова которого записываются одним ASCII символом. Компилятор для такого языка написать несложно даже без ассемблера под рукой. Для упрощения бутстрапа автор использует примитивный интерпретатор, разработанный на языке Python. Первая рабочая копия компилятора, полученная благодаря бутстрапу, уже является исполняемым файлом ELF и позволяет расширять набор конструкций языка привычными словами Forth.

Не менее интересен проект PlanckForth, реализацию которого скрупулезно написали в машинных кодах (уж точно никто кроме авторов не оставит закладки). Файл с HEX-дампом достаточно пропустить через утилиту xxd и на выходе получится исполняемый файл компилятора минималистичного Forth. Этот примитивный язык может быть расширен уже своими внутренними средствами до приемлемого уровня, позволяющего написать что-то более сложное.

#digest