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

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

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

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

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

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

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

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

Читать далее
Всего голосов 99: ↑98 и ↓1 +97
Просмотры 11K
Комментарии 24

Новости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Калькулятор на типах TypeScript

Ненормальное программирование *Разработка веб-сайтов *JavaScript *TypeScript *
Из песочницы

В последнее время TS стал де-факто стандартом во фронтенд-разработке. Его достаточно просто начать использовать, и он приносит неоценимую пользу в любых web-приложениях. Но используя его, мы часто даже не задумываемся, насколько на самом деле это мощный инструмент. В большинстве ситуаций нам хватает базовых возможностей TS-а. Но иногда нам случается определить узкий и нестандартный тип. В этом случае можно либо ослабить типы с помощью any или unknown, либо попробовать решить непростую порой головоломку. В этой статье мы решим несколько интересных головоломок с типами.

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

Пару слов о стилизации React компонентов

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


Стилизация. Довольно насущный для меня момент. Несмотря на годы работы с React, стартуя новый проект, я каждый раз задумываюсь о стилизации. Я перепробовал многие её способы, больше и дольше всего я работал с css-modules и styled-components. Сегодня я хочу предложить вам рассмотреть еще один не менее интересный вариант.

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

Подключаем к Экселю GPU и ускоряем Эксель в 300 раз

Ненормальное программирование *C# *Параллельное программирование *Visual Basic for Applications *

Попалась мне задачка оптимизации, а так как я большой фанат Экселя, то и выбор инструмента был скорым. Единственная пакость: Эксель дико медленный. Так, на одну итерацию уходило как минимум 35 минут, а таких итераций планировалось сделать 1275 (как минимум)!

Цель этого небольшого проектика – ускорить исполнение VBA скриптов задействуя все доступные мне железяки: GPU и CPU. Ну и до кучи, так как библиотека моя, была реализована многозадачность.

О, да, я хочу на это посмотреть!
Всего голосов 44: ↑43 и ↓1 +42
Просмотры 19K
Комментарии 26

Все на дно. Смоляная яма Тьюринга

Блог компании Timeweb Cloud Ненормальное программирование *Программирование *Читальный зал
image
Машина Тьюринга во всей своей красе.

Какой язык программирования лучше всего выбрать? Само собой, очень часто выбор языка зависит от того, для чего пишется та или иная программа, да и просто от личных пристрастий программиста. Выбор, как правило, идёт среди более-менее известных языков, начиная от различных вариаций C и заканчиваться может где угодно. Хотя, безусловно, ту или иную вещь на том или ином языке будет гораздо сложнее написать, чем на другом. Но как насчёт таких языков, где трудно написать в принципе любую вещь, поскольку, например, синтаксис состоит из восьми команд? Такие языки называются «Эзотерическими языками программирования», или, по-простому, «Смоляной ямой Тьюринга». Предлагаю тут же и посмотреть, какие черти водятся в этом тихом омуте.
Читать дальше →
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 14K
Комментарии 6

Пишем тетрис в bat-файле

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

В комментарии к моей предыдущей статье, «Какие задачи не решаются bat-файлами?», предположили, что на bat-файлах не получится написать Doom. Насчет Дума я пока не уверен, а вот тетрис у меня получился.

Играть в тетрис бесплатно
Всего голосов 94: ↑94 и ↓0 +94
Просмотры 15K
Комментарии 39

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

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

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

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

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

Читать далее
Всего голосов 11: ↑8 и ↓3 +5
Просмотры 4.5K
Комментарии 12

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

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

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

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

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

Читать далее
Всего голосов 36: ↑34 и ↓2 +32
Просмотры 11K
Комментарии 53

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 91: ↑88 и ↓3 +85
Просмотры 15K
Комментарии 12

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

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

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

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

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

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