Как стать автором
Обновить
100.65
Рейтинг

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

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

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

Пасхалки в ПО

Блог компании Cloud4Y Ненормальное программирование *Интерфейсы *Разработка под Linux *IT-компании

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

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

Создание демки специально для HABR — Часть 3

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial
Наконец-то мы подобрались к финальной части большой саги о создании демки для ПЭВМ «Микроша». В предыдущих первой и второй части я реализовал заходник, само видео вращения, и понял, как сделать звук. Теперь осталось всё свести воедино, исправить некоторые недочёты и добавить нормальную музыку. Но, как обычно, дьявол кроется в мелочах.
Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры 3K
Комментарии 23

Прокачиваем kotlin: используем AST лямбд в рантайме

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

История о том, как сделать свой LINQ для kotlin, и как сделать так, чтобы кода вида

data.filter { it.age > 30}.map { it.name }.toList()

мог и выполняться для данных в памяти, и превращаться в SQL запрос для базы данных.

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

Создание демки специально для HABR — Часть 2

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

В предыдущей части мы только начали входить во вкус создания демки, как статья неожиданно закончилась на самом интересном месте. Не буду сильно томить и продолжу описывать свой квест по созданию этой интересной программы. Борьба за размеры памяти, задержки, звук, всё в этой серии.
Читать дальше →
Всего голосов 76: ↑75 и ↓1 +74
Просмотры 4.3K
Комментарии 33

Как я разогнал fail2ban* в тысячу раз с помощью SIMD

Высокая производительность *Ненормальное программирование *Nginx *Rust *

Fail2ban — утилита чрезвычайно полезная во многих случаях. Думаю, многие используют её для того, чтобы в автоматическом режиме блокировать особенно назойливых «посетителей». К сожалению, если входящий поток становится слишком большим, fail2ban теряет все свои полезные свойства, потому что разбор лога безнадёжно отстаёт от реальности.

Лог nginx из 100 тысяч строчек fail2ban при самых простых настройках разбирает порядка 45 секунд. Нехитрыми манипуляциями его можно ускорить раз в 6, но этого оказалось недостаточно. Наивная реализация на аналогичного фильтра на Rust уже обеспечила требуемую производительность, но если уж взялся за оптимизацию, то остановиться трудно.

* только необходимую часть функционала

Читать далее
Всего голосов 121: ↑119 и ↓2 +117
Просмотры 17K
Комментарии 76

Создание демки специально для HABR — Часть 1

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

Многие из нас любят интеллектуальные игры, всякие головоломки, квесты, стратегии и многое другое. Но что, если игрой является само железо, а сценарий создаёте вы сами? В результате этого рождается невероятно интересная головоломка, которая невероятно меня увлекла на несколько месяцев.

Здесь я хочу поделиться «прохождением» этой «игры», под названием Демка для ПЭВМ «Микроша». В процессе чтения статьи может показаться, что всё просто и очевидно. Это всё так, когда есть документация и описание всех подводных камней. Когда каждый подводный камень ищешь сам, то это всё превращается в невероятно сложный квест.
Читать дальше →
Всего голосов 107: ↑106 и ↓1 +105
Просмотры 6.5K
Комментарии 24

Общего между фракталами и голографией

Ненормальное программирование *JavaScript *Алгоритмы *Canvas *Математика *
Продолжим тему бильярдных фракталов.



В статье присутствуют Gif (трафик!) и контрастные картинки. У эпилептиков может случиться эпилептический припадок.
Читать дальше →
Всего голосов 37: ↑36 и ↓1 +35
Просмотры 5.5K
Комментарии 15

HDMI OLED-дисплей в стиле стимпанк

Блог компании RUVDS.com Ненормальное программирование *CAD/CAM *DIY или Сделай сам
Перевод

Чёрт возьми! Я не мог оставить без внимания тот факт, что мой предыдущий дурацкий проект получил настолько живой отклик. Вряд ли мне когда-либо удастся превзойти такое соотношение приложенных усилий и полученных за них «интернет-очков». Дурацкий, глупый и бесцельный — похоже, это мои дежурные слова. А что станет наиглупейшим апгрейдом для глупейшего дисплея, как ни придание ему вида а-ля стимпанк? Но в моём представлении это никак не цепляние к шляпе покрашенных в золото шестерёнок. Если я говорю стимпанк, то подразумеваю фрезерованную латунь и накатку.
Читать дальше →
Всего голосов 65: ↑63 и ↓2 +61
Просмотры 9.1K
Комментарии 11

Мой опыт с резиновым мужиком. Github Copilot

Ненормальное программирование *Python *Программирование *GitHub *Машинное обучение *

Первая моя ассоциация с Github Copilot - это резиновый мужик-автопилот из фильма "Аэроплан". Помню, в детстве я увидел этот фильм и потом реально думал, что так автопилоты и выглядят: какая-то смешная резиновая кукла надувается и начинает управлять самолётом. И вот, через столько лет меня не покидает ощущение, что передо мной надувается какая-то кукла и пытается писать за меня код.

Короче, нежданно-негаданно мне пришёл инвайт в GitHub copilot. Я и забыл про то, что когда-то запрашивал доступ - ажиотаж давно уже спал, вроде мир не захвачен машинами, а значит, не такой уж он и крутой, да? С другой стороны, недавно к нам на позицию senior python постучал чел и сказал, что большую часть нашего тестового задания он запилил при помощи copilot, так что определённо кто-то "пилотом" пользуется. В общем, непонятно: хорошо оно или плохо? Стану ли я теперь более продуктивным? Есть только один способ проверить: в бою.

Поехали
Всего голосов 92: ↑89 и ↓3 +86
Просмотры 23K
Комментарии 37

С++ без классов?

Ненормальное программирование *Программирование *C++ *ООП *Функциональное программирование *

(на картинке изображён С++ среди других функциональных языков)

Классы - это скорее всего первое, что добавил Страуструп в далёких 1980х, ознаменовав рождение С++. Если представить, что мы археологи древних плюсов, то косвенным подтверждением этого факта для нас будет this, который по прежнему в С++ является указателем, а значит, скорее всего, он был добавлен до "изобретения" ссылок!

Но речь не про это, пора окинуть взглядом пройденный с тех пор путь, изменение и языка и парадигм, естественный отбор лучших практик, внезапные "великие открытия" и понять к чему это всё привело язык, который когда то вполне официально назывался С с классами (ныне мем).

В конце(СПОЙЛЕР) мы попытаемся превратить С++ в функциональный язык за несколько простых действий.

Для начала рассмотрим базовое применение классов:

Начать погружение
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 17K
Комментарии 45

Как написать калькулятор на HTML и CSS без JavaScript

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

Материалом о разработке калькулятора на CSS и HTML, без файла JS, тега script и обработчиков событий в HTML делимся к старту курса по Fullstack-разработке на Python. За подробностями приглашаем под кат.

Читать далее
Всего голосов 33: ↑29 и ↓4 +25
Просмотры 15K
Комментарии 9

Вычисляем π на первом процессоре от Intel — 4004

Ненормальное программирование *Assembler *Математика *Программирование микроконтроллеров *
Перевод

Как-то мне пришла в голову мысль о том, насколько же быстрее современные процессоры по сравнению с ранними экземплярами. Да, можно размышлять об этом эмпирически - зная тактовую частоту и особенности микроархитектуры (как устроен конвейер, сколько есть ALU, и т.д.), можно прикинуть производительность Intel 4004. Пусть и не в FLOPS'ах, ибо нативная поддержка чисел с плавающей запятой появилась позже. Но это будет весьма грубая прикидка, так как у этого процессора есть несколько интересных черт: разрядность только 4 бита (а не 64, как у большинства современных машин), очень скудный набор инструкций (нет даже AND'a и XOR'a!) и ограничения переферии (в частности памяти не так уж и много).

Поэтому я решил исследовать вопрос на практике. В качестве бенчмарка выбор пал на вычисления числа π. В конце-то концов, даже ENIAC в дремучем 1949 году справился с этой задачей! [2]

Читать далее
Всего голосов 109: ↑108 и ↓1 +107
Просмотры 14K
Комментарии 25

Подключаем старую венгерскую клавиатуру Videoton по USB

Ненормальное программирование *Старое железо

Не знаю откуда она у меня взялась и зачем, но при очередной уборке на даче и спотыкания об эту доску который раз встал вопрос — выкинуть ее нафиг, или все-таки запустить зверушку и потом выкинуть?

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

Прямое подключение крохотного OLED-дисплея по HDMI

Блог компании RUVDS.com Ненормальное программирование *Python *Разработка под Linux *DIY или Сделай сам
Перевод
Tutorial

Есть у меня склонность к реализации глупых и бессмысленных проектов. Перед вами один из них, который появился в результате беседы, закончившейся словами: «Слушай, а ведь технически возможно…», — не вопрос, давай сделаем.
Читать дальше →
Всего голосов 136: ↑135 и ↓1 +134
Просмотры 18K
Комментарии 28

Копия по мотивам «ячейки звукового синтеза Агат» для IBM PC/XT — «музыкальная ячейка»

Ненормальное программирование *Старое железо

ЯЗС - Ячейка Звукового Синтеза - дополнительная плата расширения для компьютера "Агат", нечто вроде примитивной звуковой карты, имеющая пять тональных и два ударных канала. Подробнее про нее можно почитать здесь: http://agatcomp.ru/agat/Hardware/SoundNCL/jzs52.shtml. Когда-то давно мне очень понравилась видео-демонстрация работы ЯЗС, и особенно понравился звук, издаваемый этим устройством. Так, как ПЭВМ Агат у меня нет, и никогда не было, а побаловаться с извлечением звуков и таймером КР580ВИ53 хотелось, появилась мысль повторить устройство, только на более доступную для меня (да наверное, и не только для меня) шину ISA-8 от компьютеров IBM PC - благо на барахолках купить любую плату с ISA шиной пока еще представляется возможным. 

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

Пет-проекты, которые зашли слишком далеко

Блог компании JUG Ru Group Ненормальное программирование *Разработка мобильных приложений *Разработка игр *

Обычно пет-проект — это что-то такое для души, на несколько вечеров в свободное от работы время. Зачастую никому, кроме его создателя, не нужное. Но бывают случаи, когда всё заходит куда дальше, неожиданно для самого разработчика. Подобные пет-проекты могут стать коммерчески успешными, а могут культовыми, но не приносящими денег. А еще они могут кардинально изменить жизнь своего автора.

Elasticsearch вырос из простого приложения для рецептов, которое сделал для своей жены Шей Бэнон. Сейчас это флагманский продукт всемирно известной компании. Когда в 1991-м году Линус Торвальдс известил мир о появлении Linux, то написал: «just a hobby, won't be big and professional». Что в итоге получилось, мы все знаем.

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

В этой подборке расскажем о самых разных пет-проектах — странных и полезных — и об их создателях. 

Поехали!
Всего голосов 37: ↑37 и ↓0 +37
Просмотры 22K
Комментарии 14

Настоящая* перегрузка операторов в JavaScript

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

Одна из активно реквестируемых фич в JavaScript и TypeScript — перегрузка операторов. Без инфиксной записи, к примеру, получаются очень громоздкими вычисления с векторами или множествами. Тем не менее, используя сильное колдунство некоторые знания о том, как сейчас работают операторы в JavaScript, мы можем реализовать все самостоятельно.

Проникнуться черной магией
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 4.7K
Комментарии 5

Чем хороший программист отличается от плохого, или почему нужно выходить за рамки

Информационная безопасность *Ненормальное программирование *Разработка веб-сайтов *Habr Программирование *

Это будет моя самая короткая статья.

Когда-то я был молод и зелен и решал проблемы именно так, как их решают джуны. Алгоритм такой:

1. Узнать о проблеме
2. Локализовать проблему
3. Загуглить проблему и решение
4. Пофиксить проблему

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

Или другой пример: не отработал скрипт из-за ошибки в коде. Чиню ошибку, скрипт начинает работать.

Прошло 10 лет...

Читать далее
Всего голосов 74: ↑65 и ↓9 +56
Просмотры 60K
Комментарии 42

Футбольный симулятор в 30 строк кода

Ненормальное программирование *Разработка игр *WebGL *
Tutorial

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

Читать далее
Всего голосов 15: ↑5 и ↓10 -5
Просмотры 4.1K
Комментарии 15

Как я опять Хабр сломал

Информационная безопасность *Ненормальное программирование *Разработка веб-сайтов *Habr Программирование *

Всегда хотел взломать Хабр. Мечта такая, но как-то руки не доходили. И вот, вдохновившись статьей о праведном взломе через iframe src , я, как и автор поста @Maxchagin, решил исследовать функционал Хабра на предмет уязвимостей.

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

Читать далее
Всего голосов 203: ↑201 и ↓2 +199
Просмотры 38K
Комментарии 19

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