Обновить
143.77

Ненормальное программирование *

Извращения с кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Эмуляция «тетриса» Apollo из 90-х и запуск кода на оригинальном железе

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

В этой статье я расскажу о микроконтроллерах Sunplus с ядром 6502 которые использовались в популярных в 90-е «тетрисах» Apollo, а также об их эмуляции. Отдельно опишу способ запуска своего кода на этих играх и в частности проигрыватель «Bad Apple!!», крупнопиксельный кадр из которого показан на КПДВ.

Читать далее

Новости

Делаем мыши Asus ROG полезными

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

Итак, вы потратили много денег на красивую, удобную игровую мышь. Мышь действительно хорошо сидит в руке, приятно светится, имеет целых 6 дополнительных кнопок, гибко настраивается... Стоп, гибко? Вы хотели забиндить на одну из них, скажем, F13? Разработчики ASUS против такого! Но мы не сдаёмся просто так!

Погружайтесь под кат, нам предстоит узнать все ужасы софта для игровых девайсов, познакомиться с HID сканкодами, узнать сколько на самом деле у клавиатуры клавиш и написать драйвер на python.

Читать далее

Давайте писать на Rust для DOS

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров3.5K

В этой статье я покажу как получить работающую под DOS программу, написанную на Rust.

Начинаем с установки Rust. Даже если он есть системный из пакетов, его недостаточно, так как мы будем (вынужденно) использовать nightly версию. Итак, идём на https://rustup.rs/, копируем предлагаемую строку и запускаем её в терминале. Чтобы команда заработала возможно потребуется доустановить curl. Имеет смысл выбрать в качестве ветки по-умолчанию nightly. Если вы выбрали не nightly, то нужно будет доустановить nightly тулчейн:

Читать далее

С go на C++ за две недели. Переписываю эмулятор ZX Spectrum

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

В общем-то и целом, мой предыдущий эмулятор ZX Spectrum, написанный на go, работал. Показывал нужное (или очень близко к нужному) и давал чувство приближенности к программистам. Однако у него были очень фундаментальные проблемы, связанные исключительно с языком разработки. Ну по крайней мере я сейчас так думаю.

Другим движущим фактором все-таки была бесплатность БЯМок от cloud.ru (не реклама, да и бесплатности больше нет). Ну где еще можно на халяву пожечь сотни миллионов токенов и получить хоть что-то работающее?

В общем, я принял волевое решение переписать все на С++. Под катом дневник "переписчика", в котором я последовательно описываю все боли и страдания начинающего писателя эмуляторов. Желающим сразу посмотреть на конечный результат можно сходить на https://github.com/kiltum/zxcpp

Читать далее

Хакаем самую дешёвую консоль с Ozon

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

Помните статью про самую дешёвую консоль с Ozon — Sup GameBox? Тогда я рассказал вам о том, что у этого чуда инженерной мысли находится «под капотом» и почему эта консоль не так проста, как кажется на первый взгляд.

После статьи я решил написать письмо производителю процессора этой консоли. И что самое интересно — мне ответили! Даже Спустя 40 лет после релиза оригинальной NES, тайваньская компания V.R.T продолжает развивать архитектуру оригинальной NES. Мне больше ничего не оставалось, кроме как включить фен, достать программатор и хакнуть этот девайс...

Читать далее

Как «жыбий рыр» кейс делал

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров749

В этой статье я расскажу вам, как наша команда — «жыбий рыр» участвовала в хакатоне от DDOS‑GUARD

Рассмотрим, какой кейс мы выбрали, покажу, к какой реализации пришли и покажу наше решение, а в конце подведем итоги.

Читать далее

С появлением ИИ работа опытного программиста стала намного сложнее

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров27K

Взгляд на интеграцию ИИ в программирование от опытного программиста (миллион строк кода я, наверное, написал за всю жизнь). Текст писал я сам, это не мусор от GPT, ИИ здесь только исправил ошибки.
Если дать этот текст ИИ на фактчек, то он может как полностью подтвердить мою статью кучей проверенных фактов, так и полностью опровергнуть, и тоже с кучей фактов, т.е. по сути будет заниматься черри-пикингом - всё зависит от формулировки вопроса. И где же тогда правда? Правда, я думаю, у тех, кто в этой среде годами работает и получает много опыта как разработки с ИИ, так и без него. Т.е. имеет хоть какие-то экспертные знания. В этой статье мнение одного из таких людей. Мнения одного человека, конечно, мало, нужно обобщать опыт сотен людей из разных сфер программирования. Я вношу в это обобщение свой небольшой вклад.

Читать далее

Еще один самодельный компьютер. Coolsystem — Часть 1

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

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

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

Читать далее

Команда «жыбий рыр»: Войти в IT через хакатоны

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.3K

Всем привет! Меня зовут Михаил — я студент и backend‑разработчик из Ростова‑на‑Дону. С 2021 года я хожу на хакатоны и уже принял участие в 16-ти, многие из которых были выиграны нашей командой. Этой статьей я хочу на собственном примере показать почему хакатоны — это классно и зачем в них участвовать начинающим специалистам.

Читать далее

Эксперимент: генерация веб-форм для 1С по текстовому описанию

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров2.7K

Привет, хабр! В прошлой статье мы говорили о применении языков разметки для описания графических артефактов, идее языка разметки для аналитиков и приложении для генерации макетов UI и BPMN схем.

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

Читать далее

Хакатоны: не пора ли их переизобрести?

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

Дорогие читатели, сегодня — статья о хакатонах. Нет — не о том, что их нужно проводить в поездах. Хотя, полюбуйтесь: сотрудники Авито не смогли найти другого места для хакатона, чем поезд дальнего следования. И забронировали для этого целый вагон! Одно слово — хипстеры!

Но эта статья — о том, как хакатоны можно изменить и переосмыслить. Нужно, конечно, оставить всё веселье. Также, нужно добавить свободы участникам: когда хакатоны проводят компании, они обычно делают это со своими конкретными целями. И третье — нужно сделать их более длительными. Я предлагаю делать хакатоны длительностью где‑то в спринт (2 недели), но так, чтобы время активной работы было по‑прежнему около нескольких суток. Другими словами, нужен хакатон, доступный работающему и, возможно, семейному человеку. Возможно ли это? Нужно ваше мнение.

Читать далее

Как я с помощью LLM писал эмулятор ZX Spectrum

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.1K

... или может ли ИИ заменить программиста? Сейчас со всех сторон долбят про то, как ИИ помогает в жизни и вообще, если ты не используешь ИИ, то ты в отстающих и лузер. Я к этому отношусь спокойно, ибо мои занятия совершенно не допускают использование ИИ из-за очень большой цены ошибки, но долбежка все-таки делает свое дело. Плюс как-то внезапно обнаружил, что у (не реклама) cloud.ru доступны Foundation Models (они же БЯМ, они же LLM) без оплаты. Понятное дело, тестовый период и прочее, но использовать можно. Но просто мучать модельки вопросами уровня «сколько цифр в слове» смысла мало, поэтому решил попробовать сделать что-то хоть капельку полезного и получить собственный ответ на вопрос пригодности БЯМ. Результат для нетерпеливых тут https://github.com/kiltum/zxgo

Далее несколько абзацев истории, чтобы просто было понятно, каким путем я шел до результата. Скажу честно, выбор места приложения сил БЯМки был сделан довольно быстро: напиши мне много кода. Раз пока все бесплатно, выбрал самый большой Qwen и предложил ему написать эмулятор КР580ВМ80А (он же Intel 8080), причем на питоне. И внезапно, он с первой попытки сгенерил что-то очень похожее на правду. Хмыкнув, я нашел образ ПЗУ от Радио-86 и зарядил еще пару десятков запросов. Вскоре я с глубоким удовлетворением увидел в окошке заветное «РАДИО 86-РК» и следом «-->». 

Немного порадовавшись результату, я преисполнился энтузиазма и решил поднять ставки. Z80 и ZX Spectrum! Культовая машина, все нюансы которой разложены по полочкам и по которой документации на порядки больше, чем для «радио»,«микроши» и «специалиста» вместе взятых. А чтобы было совсем хардкорно, основным языком я выбрал С++.

Читать далее

Вперёд к мечте! От JCUKEN к QWERTY на Специалисте

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

Когда в 19-летнем возрасте я покупал свой первый компьютер, то я очень сильно хотел купить БК-0010-01. Однако обстоятельства сложились так, что к моменту, когда у меня появилась необходимая сумма, в магазинах БК‑шек не осталось, и вообще ничего не осталось. На полке в «Электронике» лежало только невзрачное нечто с нарисованной клавиатурой и названием «ЛИК».

Читать далее

Ближайшие события

Хороший, плохой, цветной и быстрый

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров7.2K

Давным-давно, когда с ездовым котом приключилась "записка шестая", а знания об аллокаторах и опыт их применения ограничивался линейным и системным, перебросили мою команду в помощь другой команде, которая занималась системами навигации больших судов. Ездовые коты, особенно нестарые - это такие создания, которые редко изучают документацию детально, а чаще бегло читают там про интерфейсы систем в проекте, malloc, new, системные аллокаторы и думают, что теперь-то точно понятно, как всё устроено. А потом приходит работа и такая: “Забудь всё, что ты знал. Ты не дочитал до страницы восемьсот что-то там РД, тут есть свой аллокатор - и он реально плохой”.

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

А вот почему нужны и важны ненормальные - объяснений почти нет, как и самих реализаций в открытом доступе. В этой статье я расскажу, какие повстречал ненормальные алгоритмы распределения памяти, чем они живут, кого едят, и почему иногда malloc делает вид, что он не при делах и таки да, malloc может возвращать null и ту проверку мы убрали зря.

Читать далее

По итогам Chaos Constructions'2025

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

Тридцать лет назад, в 1995 году, мы провели первую в России и бывшем СССР demo party (или, говоря более понятным языком, компьютерный фестиваль) - ENLiGHT. С тех пор мы делали это почти ежегодно, с 1999 года по нынешнее время - под именем "Chaos Constructions". В этой статье я хочу немного рассказать о Chaos Constructions'2025, прошедшем 23 и 24 августа этого года.

Читать далее

Сам себе breakpoint

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров11K

Когда отлаживаешь программу, речь идет про использование отладчика в студии или другой IDE, то почти всегда имеешь дело с точками останова (breakpoint, бряками) — механизмом, когда выполнение программы приостанавливается, чтобы можно было заглянуть внутрь и понять, что происходит. Точек останова есть всего два основных типа, программные и аппаратные, а остальные все сделаны на их основе. Эти два базовых типа могут вести себя похоже, но устроены по-разному.

Программные точки останова — это то, с чем сталкивается каждый разработчик, когда вы ставите красную точку в среде разработки (в основном я использую большую студию) или используете команду bp под WinDbg. В этом случае отладчик просто подменяет один байт машинного кода в нужной инструкции на команду int 3. Это специальная инструкция для вызова прерывания отладки (Debug Interrupt), имеет машинный код 0xCC и говорит процессору: “Остановись, я хочу передать управление отладчику”, соответственно когда выполнение доходит до этой инструкции, срабатывает прерывание, и управление передаётся в отладчик. Отладчик "просыпается" и видит, что программа остановилась из-за исключения EXCEPTION_BREAKPOINT , возникшего по конкретному адресу, проверяет свой внутренний список точек останова и находит ту, которая была установлена по этому адресу.

Читать далее

Whisper X без докера- простой GUI на Windows

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров5.1K

Тут вот человек написал навороченную статью про установку под Докер этой штуки,
но так как я программист не настоящий ( а всё через нейросети), и Linux-ом баловался только лет 20 назад, то решил всё же под Windows всё это сделать, ибо полезно:

1) телефонные звонки можно иногда расшифровать
2) делать интервью для написания книги ( в ролях)
3) как там уже писали про всякие деловые разговоры..
4) ну и так далее и так далее..потом этот текст засунуть в нейросеть и сделать выводы.

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

При других настройках все гораздо лучше- как на скрине.

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

Потом борьба с ошибками и пожалуйста..

Это я к тому, что на Reddit-е пока все это делал наткнулся на жалобы, вот мол, а почему под Windows нет сборки? Типа всё на линуксе да на линуксе, а сделать такое оказывается делов на пол-дня не программисту.

Читать далее

[Пятничное] Я сломал русский язык. Теперь ваша очередь

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.2K

Все вокруг стараются сделать мир лучше, пишут редакторы, используют нейросети. Скука! Я решил пойти другим путём и создал "Лабораторию Абсурда" — которая намеренно и с особым цинизмом превращает любой осмысленный текст в лингвистический бред.

Не спорю, существуют и другие генераторы бреда, но я дарю вам 50 (или что-то около того) разных способов издевательства над текстом и здравым смыслом! Никаких рекламных баннеров, только ванильный JS и словари на тысячи слов, только хардкор!

Читать далее

Движок для Arcanum: Ретро-кодинг на ПК 1995 года как акт цифровой археологии. Глава 01 — Синопсис

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.1K

Недавно сообщество фанатов классической RPG Arcanum: Of Steamworks and Magick Obscura потрясла новость: разработчик по имени Alex завершил титанический труд по реверс-инжинирингу оригинального движка игры. Теперь у нас есть его полнофункциональные исходные коды, которые можно компилировать под Windows, Linux и macOS с использованием современной библиотеки SDL3.

Это осуществление мечты. Теперь игру можно улучшать, исправлять многолетние баги, добавлять новый контент. И я, как и многие, планирую поучаствовать в этом процессе. Но этот прорыв заставил меня задуматься: а как создавалась такая магия тогда, в середине 90-х? Каково это — строить подобный движок внутри той самой эпохи, с её железом, софтом и мировоззрением?

Так родился этот личный эксперимент. Я не буду переделывать готовый движок. Я попытаюсь с нуля написать свой движок для Arcanum так, как если бы на дворе был 1995 год.

Егог

Обезьяны напишут шедевр, если мы наложим ограничения и добавим тесты

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.7K

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

Узнать тайну эволюции
1
23 ...

Вклад авторов