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

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

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

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

Как нарисовать очень грустную девочку, если вы программист

Ненормальное программирование *Python *Программирование *Обработка изображений *

Вообще как художник я бездарность.

Объясняется это принципом RPG: вы либо качаете воина, либо мага, либо бесполезное существо (полувоин-полумаг, который бесполезен и как маг, и как воин). И я вкачал всё в программирование, поэтому с рисованием у меня примерно на уровне четвёртого класса.

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

А может, всё не так однозначно?
Всего голосов 24: ↑14 и ↓10 +4
Просмотры 4.9K
Комментарии 11

Новости

Абстракции и наследование в Си — стреляем по ногам красиво

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

Иногда нет-нет да и хочется что-нибудь абстрагировать и обобщить в коде на Си. К примеру, хочешь ты принтануть содержимое структуры несколько раз, пишешь везде, как дурак, printf("%s %d %f\n", foo->bar, foo->baz, foo->boom), и интуитивно кажется, что есть способ сделать foo->print(foo), и так вообще со всеми структурами, не только с foo.

Возьмем пример: есть некий чувак с именем и фамилией, и есть птица, у которой есть имя и владелец.

Читать далее
Всего голосов 31: ↑28 и ↓3 +25
Просмотры 8.5K
Комментарии 36

Я уеду жить в Лейнвуд. Создаем новые слова при помощи GPT

Ненормальное программирование *Python *Машинное обучение *Искусственный интеллект Natural Language Processing *
Tutorial

Предлагаю немного поразвлечься и научиться придумывать новые слова, которые звучат совсем как настоящие (прям как товары в Икее). Для начала вот вам десяток несуществующих городов:

Лумберг, Сеф, Хирнов, Бинли, Лусский, Ноловорск, Сант-Гумит, Хойден, Голтон и Оголенда

И женских имен:

Инела, Каисья, Ганнора, Целия, Тарисана, Лелена, Феомина, Олиcc, Нулина и Рослиба

Для запуска генерации нам не понадобится технических навыков, хотя технология, стоящая за ней, сейчас является очень перспективной и многофункциональной. Это генеративная нейронная сеть, способная решать множество задач по обработке естествнного языка (NLP). Это такие задачи как суммаризация (сделать из большого текста его резюме), понимание текста (NLU), вопросно-ответные системы, генерация (статей, кода или даже стихов) и другие. Тема эта очень глубокая, поэтому далее я дам пару ссылок для любителей копнуть поглубже. А те, кто хочет "только спросить", может сразу приступить к созданию слов.

Генерировать будем скриптом makemore от Андрея Карпати (недавно писал про скрипт в канале градиент обреченный), который он выложил пару недель назад. Андрей является известным исследователем в мире ИИ и периодически радует народ такими вот игрушками, можно полазить по его репозиторию, там еще много интересного.

Запустим скрипт.

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

Holy C++

Ненормальное программирование *Совершенный код *C++ *

В этой статье постараюсь затронуть все вещи, которые можно без зазрения совести выкинуть из С++ не потеряв ничего(кроме боли), уменьшить стандарт, нагрузку на создателей компиляторов, студентов изучающих язык и мемосоздавательный потенциал громадности С++

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

1 - union - сумм тип из 70х, в С идея хранения одного типа из нескольких в одном участке памяти выглядит неплохо и сейчас, ведь там все типы это набор байт с заданным размером.

В С++ же использование union это автоматическое undefined behavior, например:

Читать далее!
Всего голосов 90: ↑63 и ↓27 +36
Просмотры 20K
Комментарии 357

Пасхалки в ПО

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 120: ↑118 и ↓2 +116
Просмотры 16K
Комментарии 76

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 33: ↑29 и ↓4 +25
Просмотры 14K
Комментарии 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.2K
Комментарии 15

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

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

Есть у меня склонность к реализации глупых и бессмысленных проектов. Перед вами один из них, который появился в результате беседы, закончившейся словами: «Слушай, а ведь технически возможно…», — не вопрос, давай сделаем.
Читать дальше →
Всего голосов 136: ↑135 и ↓1 +134
Просмотры 17K
Комментарии 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
Просмотры 21K
Комментарии 14

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