История проведения фестивалей компьютерного искусства, также известных как демопати, насчитывает в нашей стране уже четверть века. Люди со всех концов страны собираются, чтобы показать свои упражнения в извлечении невозможного из старых или современных компьютеров и сверхмалых объёмов кода. В первую пятилетку одним из главных демопати страны стал CAFe (внезапно, Computer Art Festival), проводившийся в Казани с 1999 по 2003 годы. Позже он надолго исчез с радаров, отдав пальму первенства более известным ныне Chaos Constructions и DiHalt, и только в этом году произошло довольно триумфальное его возвращение — если не по масштабу мероприятия, то по количеству разнообразных работ, показ которых затянулся до шести утра. Среди них была и моя, о создании которой пойдёт речь в этой статье.
Рубрика «ненормальное программирование» - 26
Разработка демо для NES — HEOHdemo
2019-11-08 в 2:10, admin, рубрики: 6502, cc65, dendy, Famicom, Nes, ассемблер (ностальгически), Демосцена, Игры и игровые приставки, ненормальное программирование, старое железоНа что способен мозг студента, познающего компьютерный мир
2019-11-04 в 15:24, admin, рубрики: bash-скриптинг, expect, openssl, ненормальное программирование, стихи, Учебный процесс в ITДоброго времени суток.
Закончив писать очередной скрипт на Bash, понял, что всё должно быть совершенно иначе, однако всё работало. Хочу вам показать, какие непотребства и костыли написал я, дабы решить задачу, но пока не имея вагона знаний. Иначе говоря, каррикатура на программирование.
Читать полностью »
Собираем Perl прямиком из 1987 года
2019-10-26 в 16:23, admin, рубрики: C, perl, perl 5, некромантия, некрофилия, ненормальное программирование, цифровая археологияПрочитав новость "Код интерпретатора Perl официально перенесён на GitHub" на ресурсе LINUX.ORG.RU я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub’е.
Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (попали в Issues), патчи (попали в PRs), релизы и ветки. Надпись "32 years ago" рядом с файлами вызывает невольную улыбку.
Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все уличные дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с последней версией GCC 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?

Демонстрация работы twm, одного из первых оконных менеджеров для X Window System, на современном дистрибутиве Arch Linux.
Чтобы было совсем уж аутентичненько и некромантненько, я развернул виртуальную машину с голыми иксами и оконным менеджером twm, который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив — Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились. Итак, поехали!
Читать полностью »
Как выглядит zip-архив и что мы с этим можем сделать. Часть 2 — Data Descriptor и сжатие
2019-10-25 в 19:17, admin, рубрики: php, zip, извращения, ненормальное программированиеПродолжение статьи Как выглядит zip-архив и что мы с этим можем сделать.
Предисловие
Доброго времени суток.
И снова в эфире у нас нетрадиционное программирование на PHP.
В прошлой статье уважаемых читателей заинтересовала тема сжатия в ZIP и сохранение потоков в zip. Попробуем сегодня хоть немного раскрыть эту тему.
Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT
2019-10-24 в 17:24, admin, рубрики: api, diffie-hellman, mtproto, perl, telegram api, Анализ и проектирование систем, костыли и велосипеды, ненормальное программирование, сериализация, Сетевые технологииВ последнее время на Хабре стали чаще появляться посты о том, как хорош Telegram, как гениальны и опытны братья Дуровы в построении сетевых систем, и т.п. В то же время, очень мало кто действительно погружался в техническое устройство — как максимум, используют достаточно простой (и весьма отличающийся от MTProto) Bot API на базе JSON, а обычно просто принимают на веру все те дифирамбы и пиар, что крутятся вокруг мессенджера. Почти полтора года назад мой коллега по НПО "Эшелон" Василий (к сожалению, его учетку на Хабре стёрли вместе с черновиком) начал писать свой собственный клиент Telegram с нуля на Perl, позже присоединился и автор этих строк. Почему на Perl, немедленно спросят некоторые? На самом деле, суть не в этом, мог быть любой другой язык, где еще нет готовой библиотеки, и соответственно автор должен пройти весь путь с нуля. Тем более, криптография дело такое — доверяй, но проверяй. С продуктом, нацеленным на безопасность, вы не можете просто взять и положиться на готовую библиотеку от производителя, слепо ему поверив (впрочем, это тема более для второй части). На данный момент библиотека вполне работает на "среднем" уровне (позволяет делать любые API-запросы).Потому что на других языках такие проекты уже есть
Тем не менее, в данной серии постов будет не так много криптографии и математики. Зато будет много других технических подробностей и архитектурных костылей (пригодится и тем, кто не будет писать с нуля, а будет пользоваться библиотекой на любом языке). Итак, главной целью было — попытаться реализовать клиент с нуля по официальной документации. То есть, предположим, что исходный код официальных клиентов закрыт (опять же во второй части подробнее раскроем тему того, что это и правда бывает так), но, как в старые времена, например, есть стандарт по типу RFC — возможно ли написать клиент по одной лишь спецификации, "не подглядывая" в исходники, хоть официальных (Telegram Desktop, мобильных), хоть неофициальных Telethon?
Как в Arduino создавать программы для Windows
2019-10-24 в 16:30, admin, рубрики: arduino, nanonyam, виртуализация, виртуальная машина, ненормальное программирование, Программирование, Разработка под Arduino, разработка под windows
Однажды мне в голову пришла бредовая идея свести 500 лазерных указок в одно место. Я потратил много времени и сделал это. Получилось зрелищно и бесполезно, но мне понравилось. Полгода назад мне пришла другая бредовая идея. На этот раз совсем не зрелищная, но гораздо полезнее. Я также потратил на неё много времени. И в этой статье я представляю бета версию своей второй бредовой идеи.
Читать полностью »
63 ядра заблокированы семью инструкциями
2019-10-22 в 11:49, admin, рубрики: Coda, ETW, ninja, WPA, WriteFile, блокировка, многопточность, ненормальное программирование, отладка, поток, Программирование, разработка под windows, системное программирование, Тестирование IT-системКажется, у меня появилась привычка писать о мощных машинах, где множество ядер простаивают из-за неправильных блокировок. Так что… Да. Опять про это.
Эта история особенно впечатляет. В самом деле, как часто у вас один поток несколько секунд крутится в цикле из семи команд, удерживая блокировку, которая останавливает работу 63 других процессора? Это просто восхитительно, в каком-то ужасном смысле.
Вопреки распространённому мнению, у меня на самом деле нет машины с 64 логическими процессорами, и я никогда не видел этой конкретной проблемы. Но с ней столкнулся мой друг, этот ботан зацепил меня он попросил о помощи, и я решил, что проблема достаточно интересная. Он выслал трассировку ETW с достаточным количеством информации, чтобы коллективный разум в твиттере быстро решил проблему.
Читать полностью »
Реверс-инжиниринг малошумящих операционных усилителей из аналогового компьютера 1969 года
2019-10-14 в 7:00, admin, рубрики: аналоговые компьютеры, ненормальное программирование, старое железоСтатья из блога Кена Ширрифа из Музея компьютерной истории
Мы восстанавливаем винтажный (1969 года, судя по маркировке чипов) компьютер, недавно найденный одним из наших сотрудников. Аналоговые компьютеры когда-то были популярны для быстрых научных расчётов, но практически вымерли в 1970-х. Интересны они совершенно отличной от цифровых компьютеров парадигмой. В данной записи я сфокусируюсь на операционных усилителях (ОУ), использовавшихся в этом аналоговом компьютере, Model 240 от Simulators Inc.

Аналоговый компьютер Model 240 от Simulators Inc. – «высокоточный настольный аналоговый компьютер общего назначения», содержащий до 24 ОУ (в данной модели их 20).
Читать полностью »
Как выглядит zip-архив и что мы с этим можем сделать
2019-10-11 в 1:08, admin, рубрики: php, zip, извращения, ненормальное программированиеДоброго времени суток, уважаемый Хабр!
За последние пол года кривая дорожка моих пет-проектов завела меня в такие дебри, откуда до сих пор выбраться не представляется возможным. И начиналось то все безобидно — сайт с картинками, но чувство перфекционизма, погоня за халявой, а так же некоторые особенности моего склада ума превратили эту, как изначально планировалось, маленькую прогулку, в настоящее длинное путешествие. Ну и ладно, как говорил один довольно картавый революционер: «Учиться, учиться и еще раз учиться», а мне, волей-неволей, приходится этому напутствию следовать.
Ой, что-то мы отвлеклись от основной темы. Не буду больше вас утомлять пространными речами, а перейду к делу.
Читать полностью »
Как я делал desktop-приложение на Flutter (+ bonus)
2019-10-07 в 6:18, admin, рубрики: dart, flutter, ненормальное программированиеНедавно попалась на глаза новость, что вышел очередной релиз Flutter (1.9), который обещает разные вкусности и, в том числе, раннюю поддержку веб-приложений.
На работе я занимаюсь разработкой мобильных приложений на React Native, но с любопытством поглядываю на Flutter. Для тех, кто не в курсе: на Flutter уже сейчас можно создавать приложения для Android и iOS, готовится к релизу поддержка веб-приложений, а ещё в планах поддержка десктопа.
Такое вот «одно кольцо, чтобы править всеми».
Покрутив пару дней в голове мысли о том, какое приложение можно попробовать сделать, я решил выбрать задачу со звёздочкой — что нам эти проторенные дорожки? Замахнёмся на десктоп и будем героически преодолевать трудности! Забегая вперёд, скажу, что трудностей почти не возникло.
Под катом — рассказ о том как я решал привычные для React Native программиста задачи средствами Flutter, плюс общее впечатление от технологии.

