
Это гиф!
https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Color_Cycling_Animation_600px_3.gif
600 × 600 пкс, размер файла: 58,54 МБ, MIME-тип: image/gif, закольцованный
Извращения с кодом
Продолжая цикл статей [N1,N2,N3] о демосцене и демосценерских конкурсах, в преддверии Chaos Constructions'2025 хочу рассказать о конкурсе с самыми, пожалуй, свободными правилами — Wild demo. Возможно, узнав о таком конкурсе, кто‑то захочет в нём поучаствовать.
Изначально демо писались почти исключительно под популярные компьютеры, поскольку это позволяло работам широко распространяться и быть увиденными максимальным количеством людей. Однако, с ростом доступности сетей этот критерий стал менее значим. Особенно этому поспособствовала возможность распространять видео — ведь работу, созданную даже для очень экзотического устройства, таким образом может увидеть множество людей, это устройство даже не имеющих.
Описанные изменения привели к тому, что стали появляться демо буквально «для всего» — от редких компьютеров до калькуляторов и даже принтеров. Постепенно стало общепринятым, что на конкурс Wild demo выставляются работы, которые не проходят по правилам на другие конкурсы.
Годами люди писали программу «Hello world!» на языке Unary, но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.
Рассказываю, как с помощью Google Stitch за 30 секунд получил готовый дизайн приложения, а потом с Gemini за пару часов превратил его в работающий сервис с голосовым вводом.
Устал от багов нейросети. Решил разобраться в алгоритмах ИИ-галлюцинаций, как они влияют на работу, и в конце оставил гайд с рекомендациями по написанию промптов для генерации кода, текста и изображений.
Осторожно: помните ли вы, как в вашем телефоне Siemens, Motorola и Sony поселились маленькие программы — «эльфы»? В рамках этой статьи мы во всех деталях исследуем прошивку бюджетного кнопочника, разберемся в её архитектуре, хакнем и напишем загрузчик тех самых эльфов с MicroSD-флэшки. При этом я постараюсь объяснить всё максимально простым и доступным языком!
Недавно я познакомился с легендой форума allsiemens.ru — Ilya_ZX, который известен своим огромным вкладом в тему реверса и моддинга телефонов на платформе E-Gold и S-Gold. Илья поведал мне интересную историю о том, как в начале нулевых, будучи студентом, поспорил с одногруппником, сможет ли он добавить «змейку» в свой Siemens A60. И спор он этот выиграл, путем бессонных ночей ковыряния прошивки в IDA Pro! Я подумал — «а чем я хуже?». Взял в руки кнопочный телефон на платформе Spreadtrum, сдампил прошивку и загрузил в дизассемблер...
Если вам интересен подробный процесс реверса различных модулей прошивки, как они взаимодействуют между собой, как я написал программу для применения патчей к фуллфлэшу и, собственно, бинлоадер с первой программой — жду вас под катом!
Двое мужчин на КДПВ искренне удивляются чувству вайб-кодинга без применения искуственного интелекта.
Что такое квалификаторы и для чего они нужны? Как это связано с машинами состояний? Откуда берётся магия в .NET?
Всё это органично сочетается во фреймворке EmptyBox.
Внутри рассматриваются квалифицированные машины состояний, расширения для них, и как это вообще программируется.
puts "ПЛИС-культ привет, FPGA / RTL / Verification ХАБ!"
Последние несколько месяцев я плотно сижу в Vivado и Tcl и вот решил с вами поделиться своими "открытиями" в области отладки Tcl скриптов, которые вероятно не многие из вас вообще пишут или используют в своей работе.
Несмотря на свою архаичность, Tool Command Language все же остается самым востребованным языком управления средой проектирования для ПЛИС и ASIC. ЕМНИП все эти инструменты управляются через Tcl, Vivado так уж точно, поэтому было бы не плохо научиться или хотя бы посмотреть какие инструменты отладки этих самых пресловутых Tcl-сценариев вообще существуют или существуют ли они вообще, кроме православного puts
В этой заметке, я постараюсь вам показать, что advanced tcl debugging - это не миф, а вполне реальная сущность, которая была создана еще на заре двухтысячных и не то что бы эта сущность как-то изменилась за эти 20 с небольшим лет.
В серии чёрного зеркала (7 сезон 4 серия) в основе сюжета как программист сделал симулятор в котором развивались виртуальные существа (Тронглеты). Решил от части повторить, что бы существом управлял агент ИИ.
Сделал симулятор, где в рандом сгенерированном мире появляется агент. У него есть показатели:
- голод
- жажда
- комфорт
- его цель
- мысли
- глобальная цель.
Он может взаимодействовать с миром, находить предметы, крафтить любые предметы, придумывать, что нашел. Даже если в разработке я не закладывал какие-то предметы, объекты или механики он может всё равно их «найти». Например, нашел тростник который в будущем использовал для создания тетивы для лука. Он сам подбирает эмодзи, название предмета, придумывает механику и кладет себе в инвентарь. Для упрощения сделал пошаговую симуляцию.
Начало промта выглядит вот так (полный промт больше в 10 раз):
Про механику мира и разработку. Скриптом создаем карту 20х20 клеток. На нее случайно раскидываем эмодзи 🍓🌳🦌⛰🕳. Агенту отправляется видимость клеток на 3 вокруг нет. Он может ходить только на одну клетку заход. Ещё агенту задаются состояния:
Что у него есть голод 0/100
Комфорт
Жажда
Инвентарь
Взаимодействовать с миром он может, убрать объект логически, добавить объект логически, добавить и убрать предмет в инвентарь. По сути больше ничего, дальше он сам должен существовать в этом мире. Нет ни рецептов крафта, не сколько съеденная ягода восстанавливает голода. Но много про то "где" он находится и как "выживать" в этом мире (без подсказок)
Начало промта выглядит так:
В данной статье рассматриваются метод создания объектов без использования конструктора по умолчанию с использованием возможностей стандарта C++17 , который предоставляет гибкие инструменты управления памятью и типобезопасностью. Мы рассмотрим техники, которые позволяют работать с такими объектами напрямую, сохраняя контроль над процессом инициализации и временем жизни объектов.
Все кто пишет “В 2к25 не знать английский” - напишите комент и проходите мимо. Для нормальных, рассказываю, как я перепробовал несколько инструментов, что бы перевести игру.
Задача:
1. Перевести большое количество текста (224 тысячи символов или 40 тысяч слов) для инди игры mudborne через нейросеть.
2. Нейросеть должна держать контекст на протяжении всего перевода.
3. Все имена встречающиеся в игре должны переводиться всегда одинаково.
4. Это должен быть полуавтоматический процесс, который переведет игру “за один присест”.
5. На входе должна быть csv таблица, где в первой колонке комментарий разработчика, во второй текст на английском, в третьей должен быть текст на русском
6. Ну и основное просто пройти этот путь, получить опыт.
Какие инструменты я протестировал:
ChatGPT
Claude
Google Colab
Cursor
Smartcat
DeepSeek API
Gemini
Yandex Переводчик документов
Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.
В C++ инкапсуляция — один из ключевых принципов ООП, и приватные (private
) члены класса защищены от прямого доступа извне. Однако иногда возникают ситуации, когда такой доступ необходим (например, при тестировании, сериализации или отладке). Обычно для этого используют friend
-функции или геттеры/сеттеры, но есть и более экзотический способ — использование шаблонов и указателей на члены класса.
В этой статье мы разберём, как можно получить доступ к приватным полям, не нарушая строгих правил компилятора напрямую, но используя особенности инстанцирования шаблонов.
В этой части нас ждёт погружение в один из способов организации мультипоточности на базе единственного ядра процессора. Мы научимся принудительно переключать выполнение между полностью зацикленными участками кода, ничего не "знающими" о каком-то другом коде, конкурирующем за процессорное внимание. По ходу повествования будут даны все необходимые пояснения и читателю не придётся обращаться к другим источникам, кроме первой части статьи.
Во время разработки одного из своих проектов я обнаружил, что мне нужен контейнер, способный менять свой размер по мере необходимости. Так как я большую часть времени разрабатываю на С++, а не на С, я очень хотел получить что-то похожее на std::vector<T> из С++. Я начал искать в интернете реализации, но они мне не подходили по разным причинам. Тогда я решил разработать свой вариант.
Здравствуйте. Меня зовут Валерий и я — кодоголиклюблю писать программы. И иногда в процессе написания программ сами собой возникают интересные истории. Об одной такой история я и хочу рассказать в этой статье.
За десять с лишним лет, прошедших с момента изобретения конструкции async/await, она стала привычной и широко используемой. В наше время мало у кого вызывает затруднение написать самому или же понять смысл написанного кем-то другим выражения типа await stream.ReadAsync(buffer,async, count)
— ясно, что это — чтение из потока в некий буфер, и что программа тут отдает управление на то время, пока это чтение выполняется, чтобы по завершении чтения получить управление продолжить свое выполнение дальше.
Но что вы скажете, увидев в коде вот такое выражение: await this
в одном из методов класса, совершенно не похожего на Task/ValueTask или ещё что-то, что привычно видеть после await? Не правда ли это вас смутит и уж, тем более, вы вряд ли напишете такое сами? А я однажды такое написал в здравом уме и трезвой памяти. И если вам интересно, зачем это было так написано и что за магия тут творитсякак это работает, и как вообще определить свой класс, чтобы ссылку на него можно было указать после await — читайте статью.
Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие фичи. Между тем временем и нынешним днём — целый пласт инструментов для автоматизации, бутстрапинга и шаблонизации разработки. Приходилось и хрюкать, и глотать. То, что всё это, мягко говоря, так себе — уже отдельная история. Местами стало даже хуже. Хуже, чем когда вы неделю возились с конфигом Webpack.
В этой статье мы рассмотрим вайбкодинг. В чистом виде так сказать.
🔰 ЦЕЛЬ: Создать разработчика, который является архитектором и оптимизатором сложных систем, способным эффективно использовать ИИ как мощный инструмент, но не зависящим от него для критических инженерных решений.
Здравствуйте. Я учусь на последнем курсе бакалавриата и уже через месяц с небольшим буду защищать свою выпускную квалификационную работу (или же дипломную). Мне захотелось рассказать про неё здесь, чем я сейчас и займусь.
Меня давно интересуют инструменты для обеспечения работы языков программирования - лексеры, парсеры, интерпретаторы, компиляторы и всякое такое. Настолько интересуют, что уже в конце первого курса я решила, что в конце обучения буду защищать свой маленький язык программирования. Увы, создание собственного языка оказалось делом довольно сложным, из-за чего пришлось искать новую тему. Примерно на третьем курсе мы изучали в университете Kotlin, который быстро запал мне в душу и стал моим любимцем (после Lua). Мне захотелось написать дипломную именно на нём, поэтому я стала думать, что бы такое написать. Так как меня интересовал геймдев, я подумала: "Почему бы не создать свой движок для текстовых квестов как альтернативу Ren'Py?". Подумала и написала простой движок. Увы, в нём не было научной новизны, да и писать под него было неудобно, ну хоть получила опыт создания язычков, когда дала жизнь своему Av, про который писала в прошлой статье.
В университете мне сказали, что подобная тема совершенно не подходит для защиты, после чего я снова задумалась, что бы написать. Вспомнила, что довольно неплохо знакома с ANTLR, и решила написать DSL, который позволит превращать классы, которые сгенерировал ANTLR, в AST Kotlin. Эта мысль возникла довольно внезапно, но мне быстро стало интересно, во что она может превратиться. Как писать такой DSL, а главное, зачем? Как я объясняла нашей завкафедрой, подобный инструмент позволит автоматически переводить кодовые базы с разных языков на один - мой любимый Котлин. Кроме того, это поможет поддержать авторов новых языков программирования, поскольку он позволяет не писать свой рантайм, а положиться на уже существующий JVM, ведь Котлин исполняется на нём.