Обновить
95.86
Рейтинг

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

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

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

Скриптинг без скриптинга

Ненормальное программирование *Python *Программирование *Компиляторы *
Перевод

Уже давно считается, что многие (если не все) игры или приложения можно улучшить, добавив в них поддержку скриптов.

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

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

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 2.3K
Комментарии 12

Новости

Какие задачи не решаются bat-файлами?

Блог компании Auriga Ненормальное программирование *Программирование *Оболочки *Разработка под Windows *

Бат-файлы ведут свою историю со времен MS-DOS. Новые фичи добавлялись с сохранением обратной совместимости. Из-за этого многое в языке bat-файлов, как мы увидим далее, нелогично и неудобно.

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

В этой статье мы постараемся дать обзор основных элементов языка командного интерпретатора Windows, с помощью которых можно реализовать любой алгоритм.

Читать далее
Всего голосов 31: ↑29 и ↓2 +27
Просмотры 7.6K
Комментарии 50

Ловля жуков в чемодане

Блог компании RUVDS.com Ненормальное программирование *Assembler *Старое железо

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

На этапе пока я не научился шить ПЗУ, заготовки демки были реализованы ещё в оперативной памяти. И казалось бы, смени адреса, залей в ПЗУ и будет счастье. Но при попытке прошить это в постоянную память, ничего не работало. Попробовал проверить свою программу в эмуляторе и она без проблем выполнила всё именно так, как я от неё ожидал. Код даже работал при записи его частями в УМК, но целиком, со всеми прелестями, вылетал с ошибкой.

И всё никак в толк не мог взять: это лыжи не едут, либо у меня проблемы с ассемблером.

Пробегался по каждой инструкции, стал сам линкером, уже как процессор начал всё исполнять, но ошибку в коде никак не мог найти. И вот тут начинается квест жёсткого аппаратного дебага и трёх недель бессонных ночей.
Читать дальше →
Всего голосов 70: ↑69 и ↓1 +68
Просмотры 7K
Комментарии 52

PostgreSQL Antipatterns: рекурсивные грабли на ровном месте, или Сказка о потерянном времени

Блог компании Тензор Ненормальное программирование *PostgreSQL *SQL *Администрирование баз данных *

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

Но иногда обнаруживаются очень странные вещи в поведении этой, безусловно, отличной СУБД.

Все началось с запроса, который мне показали с диагнозом "необъяснимо тормозит"...

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 5.5K
Комментарии 7

Минуточку внимания

Рисуем генеративные грибы на javascript

Ненормальное программирование *JavaScript *Работа с 3D-графикой *Графический дизайн *Криптовалюты
Tutorial

Продолжаю делиться своим опытом погружения в мир генарта и nft, на этот раз при помощи генеративных грибов. Для тех кто не совсем в теме хотя бы одного из этих слов, предлагаю сначала посмотреть мою предыдущую публикацию, а в этой статье я постараюсь больше сосредоточиться не на философии того, что вообще происходит, а на технической реализации процедурной 3д графики в three js.

Читать далее
Всего голосов 89: ↑86 и ↓3 +83
Просмотры 14K
Комментарии 12

SQL HowTo: «простое» прогнозирование

Блог компании Тензор Ненормальное программирование *PostgreSQL *SQL *ERP-системы *

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 6.1K
Комментарии 5

Добавляем дополнительные особенности реализации на C++ с помощью «умных» оберток

Ненормальное программирование *C++ *
Из песочницы

Представляю сообществу библиотеку feature из состава, разрабатываемых мной библиотек под общим названием ScL. Сам набор библиотенк ScL систематизирует достаточно скромный набор реализаций и подходов, которые на мой взгляд могут упростить процесс разработки программного обеспечения на С++.

Инструменты библиотеки feature позволяют наделить экземпляры объектов любого типа свойствами, которых у них изначально не существует. К таким свойствам можно отнести, например, ленивые вычисления (implicit shared и другое), потокобезопасность, выбор способа размещения объекта "по месту" или в "куче" и т.д.

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

Хотите узнать как? Прошу под кат.
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 5K
Комментарии 19

«IBM Selectric»: цифровой механический компьютер для аналоговой секретарши

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

23 июля 2021 года на «Хабре» прошло как-то спокойно, никто даже и не вспомнил, что в этот день во всем мире отмечали шестидесятилетие пишущей машинки «IBM Selectric І». Вдумчивый читатель спросит: а что, теперь надо отмечать юбилей каждой модели пишущей машинки, которая была выпущена за всю историю человечества? Сразу же отвечу: нет, всех не надо. А вот особо выдающихся — надо. Тем более, что «IBM Selectric І» — это не просто очередная пишущая машинка, а целый компьютер, который смогли создать и запустить в массовое производство в конце 1950-ых годов.

Читать далее
Всего голосов 42: ↑42 и ↓0 +42
Просмотры 3.8K
Комментарии 32

Как подключиться к базе данных с помощью CSS

Блог компании SkillFactory Ненормальное программирование *CSS *SQL *SQLite *
Перевод

К старту курса по Fullstack-разработке на Python делимся материалом о том, как при помощи современных возможностей CSS и JS — ворклетов и API Houdini — подключиться к базе данных и выполнять запросы к ней. За подробностями приглашаем под кат.

Читать далее
Всего голосов 20: ↑13 и ↓7 +6
Просмотры 25K
Комментарии 8

Простые числа это… просто?

Ненормальное программирование *Программирование *Алгоритмы *
Обнаружил очень нехитрый итерационный процесс, который плодит простые числа в большом количестве. За 15 итераций добрались до 1-го квинтиллиона, дальше считать стало сложно.



Код, графики, попытка анализа — все под катом.
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Просмотры 8K
Комментарии 13

Bad Apple на телефоне Siemens CX75

Ненормальное программирование *Программирование *Демосцена DIY или Сделай сам
Увидел я, значит, пост про Bad Apple на MSX и подумал — а чем я хуже? Телефоны Siemens одно время были достаточно популярны на территории бывшего СССР, особенно среди моего поколения. А их прошивки были достаточно хакабельными. Патчи были всякие разные: от замены графики до добавления новой функциональности. И самый апогей патчестроения: т.н. эльфпак или эльфлоадер, он же загрузчик нативных приложений в формате ELF, превращающий обычный кнопочный телефон в, по сути, смартфон.

В этом посте я расскажу о том, как я в 2022 году смог написать и скомпилировать эльф на macOS на М1, и покажу, что из этого получилось.

Читать дальше →
Всего голосов 104: ↑103 и ↓1 +102
Просмотры 17K
Комментарии 87

[Окончание] Новогодний детектив: странный хайзенбаг в «питоньих» часах

Ненормальное программирование *Python *Программирование **nix *Виртуализация *


Здесь лежит окончание "расследования" Новогодний детектив: странный хайзенбаг в «питоньих» часах.
Изначально хотел просто обновить статью и написать соответствующий комментарий, но понял что апдейт выходит чуть не длиннее самой статьи.


Напомню краткое содержание предыдущей части: python, как впрочем и всё на нем написанное, временами прыгает в будущее, а конкретно в 2023-й год в локальной временной зоне, и по некоторым данным в 2024-й в UTC/GMT (но это не точно) и побыв там некоторое время возвращается обратно в настоящее.


Во время прыжка оно ведет себя довольно стабильно (т.е. считает нано-, микро- и миллисекунды, а то и секунды, как будто время идет как ни в чём не бывало) в 2023-м т.е. локально, при том что в результате повторных прыжков время вновь продолжается как будто по возвращению оно (время) течет в какой-то параллельной вселенной. Однако странное его "отражение" в UTC/GMT, ну то что как будто бы в 2024-м, выглядит менее стабильно, ибо для него наблюдается странные дрейфы дополнительно к смещению прыжка.


Хотя куда уж страннее.

Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Просмотры 3.2K
Комментарии 9

Пишем NFT модульный синтезатор на javascript 🤦

Ненормальное программирование *JavaScript *Криптовалюты Звук Будущее здесь
Tutorial


В новый год всегда хочется чего-то нового. А даже если не хочется, то сознание, ещё не остывшее от работы, всё равно само возьмёт и подкинет какую-нибудь офигительную идею. И если в прошлом году накануне праздников я генерил нейросетью панельные дома, то в этом году меня занесло в совершенно неожиданную комбинацию технологий — NFT, модульные синтезаторы и javascript. Казалось бы, какая между ними связь? Обо всём понемногу читайте под катом.


Дисклеймер: я рассматриваю NFT не как способ заработка, а как способ обмена некоторыми приколюхами за некоторые ништяки, причём и те и другие существуют и имеют ценность только внутри отдельно взятой криптоплатформы. Все пересчёты на фиатные деньги нерепрезентативны и не несут смысла :)

Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Просмотры 8K
Комментарии 6

Эту кнопку нажали 5453 раза…

Ненормальное программирование *CRM-системы *Читальный зал

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

Эту кнопку нажали 5454 раза…
Всего голосов 26: ↑21 и ↓5 +16
Просмотры 8.6K
Комментарии 28

«Сапёр» на движке Doom

Ненормальное программирование *Разработка игр *Игры и игровые консоли

В этой заметке я расскажу как создать игру «Сапёр» на движке первых частей Doom (id Tech 1), а точнее — на модифицированной для порта GZDoom версии движка.

Читать далее
Всего голосов 56: ↑56 и ↓0 +56
Просмотры 10K
Комментарии 22

Игры прямо в Jupyter Notebook

Блог компании SkillFactory Ненормальное программирование *Python *Игры и игровые консоли Логические игры
Перевод

Практика в Jupyter Notebook — это основа нашего курса по Data Science. Но интерактивный блокнот можно использовать не только для работы. За подробностями из блога разработчиков Jupyter Notebook приглашаем под кат.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 3.9K
Комментарии 1

Аутентичный фрактальный город или программируем вид за окном

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

Экспериментируя с фрактальными функциями, я визуализировал 2д изображение, которое внешне мне очень напоминало мне обычный спальный район или строительные леса. Для glsl это будет примерно такая функция:

Читать далее
Всего голосов 27: ↑20 и ↓7 +13
Просмотры 3.5K
Комментарии 2

Распознаем фигуры по массиву точек: эллипсы и не выпуклые фигуры

Ненормальное программирование *Java *Алгоритмы *

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 3.2K
Комментарии 6

Музыка на Commodore PET — Faulty Robots

Ненормальное программирование *Assembler *Демосцена Старое железо Звук

После выпуска System Beeps, музыкального альбома для PC Speaker, я не планировал возвращаться к псевдомногоголосой одноканальной музыке в формате подобных крупных самостоятельных релизов, считая тему достаточно раскрытой. Это, конечно, не означало отказа от более утилитарного применения подобных наработок при подходящем случае, например, в ретро-игровых или демосценовых проектах для старых компьютеров. Осенью прошлого года на горизонте появился очередной проект подобного плана от автора популярного Youtube-канала The 8-bit Guy, Дэвида Мюррея — игра Attack of the PETSCII Robots для линейки 8-битных компьютеров Commodore, включая PET, VIC-20 и C64. Я уже сотрудничал с Дэвидом на его предыдущем проекте, игре Planet X3 для MS-DOS. Новая затея как нельзя лучше соответствовала моему интересу к персоналкам до-графической эпохи и большому опыту как в области минималистичного компьютерного звука, так и программировании на ассемблере для процессора 6502, поэтому я срочно вписался в работу над проектом, надеясь на этот раз помимо написания звукового кода поучаствовать и в сочинении музыки.

В рабочем процессе возникали разнообразные проблемы, плавно перетёкшие в небольшой производственный ад (скандалы, интриги и расследования можно найти в серии постов в моём Patreon), в результате чего мой код и звуки были использованы только в версии для VIC-20, а музыку к остальным версиям игры написали другие композиторы. Но у меня оставались наработки в виде рабочего кода для PET и набросков композиций. Было жалко отправлять их в стол, ведь релизы для этой платформы — явление крайне редкое, и нового шанса задействовать то, что уже было сделано, пришлось бы ждать долго. Поэтому, с одобрения Дэвида, я принял решение дописать наброски до полноценных треков и выпустить свой альтернативный саундтрек в виде небольшого альбома под названием Faulty Robots, как в виде аудио, так и в формате самостоятельной программы для PET.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1.2K
Комментарии 4

Коллекционирую вредные советы для С++ программистов

Блог компании PVS-Studio Ненормальное программирование *C++ *Кодобред C *

Помогите, у меня лапки
Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.

Читать дальше →
Всего голосов 58: ↑48 и ↓10 +38
Просмотры 21K
Комментарии 169

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