Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.
Рубрика «ненормальное программирование» - 9
Коллекционирую вредные советы для С++ программистов
2022-01-03 в 20:07, admin, рубрики: C, c++, Блог компании PVS-Studio, вредные советы, КодоБред, ненормальное программирование, ошибки в коде, СиНовогодний детектив, или странный хайзенбаг в «питоньих» часах
2021-12-30 в 19:30, admin, рубрики: heisenbug, magic happens here, python, time jumps, ненормальное программирование, Программирование
Давненько я не писал на Хабр, да и тема интересная появилась, так что пора поправить это постыдное упущение.
Далее собственно детектив как оно есть, "расследование" которого ещё не окончено, можно присоединиться кстати… Пост будет обновляться, по окончанию (я надеюсь что баг таки найдётся) пост изменит название получив префикс "[SOLVED]"...
Постучался тут человечек на GH, с ошибкой типа "Fail2ban ведет себя как-будто он временами в будущем". Первой мыслью было — что опять! ну снова кто-то во временных зонах потерялся.
Но нет, всё оказалось несколько хуже — иногда, редко, Fail2ban пишет в логи дату из 2023-го года.
И не только пишет, а по всей видимости действительно начинает считать что он где-то в 2023-м, со всеми вытекающими — снятием бана для блокированных адресов по истечению срока действия и т.д. и т.п.
Причем делает это для всех потоков, а чуть позже возвращается в 2021-й, чтобы позднее снова на короткое время прыгнуть в 2023-й и так снова и снова.
Волшебный чемодан
2021-12-30 в 9:00, admin, рубрики: i8080, ruvds_статьи, Блог компании RUVDS.com, ненормальное программирование, старое железо, УМК-80
В старшие школьные годы, в библиотеке мне попалась книга «Простейшая микро-ЭВМ», где для школьников подробно объяснялось, как спаять свою вычислительную машину на микропроцессоре КР580ИК80А. Помню, что книгу зачитал просто до дыр, и в целом она определила мою судьбу в области электроники и программирования. Но тогда я понимал, что у меня не хватит пороха и возможностей сделать эту вычислительную машину, так как не было ни средств, ни опыта, ни подходящего наставника. Книгу я вернул обратно в библиотеку, отксерив некоторые листы.
В конце этого года spiritus_sancti обмолвился, что у него есть лишний УМК — Учебный Микропроцессорный Комплект. И тут я понял, вот она — мечта моего детства, она есть в железе и она реальна! И тут же начал просить мне его прислать. И с этого момента начинаются увлекательные предновогодние приключения.Читать полностью »
Пишем самомодифицирующуюся программу вычисления факториала под x86
2021-12-24 в 13:00, admin, рубрики: nasm, ruvds_перевод, x86, Блог компании RUVDS.com, ненормальное программирование, обфускацияСамомодифицирующиеся программы воспринимаются как нечто магическое, но при этом они весьма просты, и чтобы это продемонстрировать, я напишу такую программу под x86 архитектуру в NASM.Читать полностью »
Заговор против IE6
2021-12-10 в 18:56, admin, рубрики: ie6, YouTube, браузеры, ненормальное программирование, Разработка веб-сайтовУ невероятного роста Youtube есть одно последствие, радостное и грустное одновременно - множество историй потеряются под слоями новой краски. Именно поэтому я хочу рассказать одну из них - историю того, как 10 лет назад маленькая команда веб-разработчиков задумала убить IE6 с помощью Youtube и даже не получила за это по шапке.
Задачка о функции-обертке, принимающей аргументы в произвольном порядке, и ее решение на C++17
2021-12-04 в 16:45, admin, рубрики: c++, c++17, ненормальное программированиеНедавно на Хабре проскакивала новость о Magnit Tech++ Meet Up, и в ней упоминалась задачка, которая меня заинтересовала. В оригинале задачка формулируется так:
Определена функция с сигнатурой:
void do_something(bool a, int b, std::string_view c)
Определить функцию, принимающую в произвольном порядке аргументы типов
bool
,int
,std::string_view
и вызывающую функциюdo_something
с переданными параметрами в качестве аргументов.
Компьютер на логических микросхемах: исполнение инструкций
2021-11-26 в 8:15, admin, рубрики: diy или сделай сам, diy-компьютер, diy-проекты, ассемблер, ненормальное программирование, Производство и разработка электроники, процессор, схемотехникаВ голосовании к прошлой статье с небольшим отрывом победила видеокарта, но так как у нас тут не демократия, а конституционная монархия, про видеокарту будет следующая статья, а эта – про кодирование инструкций и их исполнение.
Флаги
Как хранить данные в png, не привлекая внимания санитаров
2021-11-21 в 13:19, admin, рубрики: ненормальное программированиеВсё началось с мема, который вы видите выше.
Сначала я посмеялся. А потом задумался: может ли быть так, что скриншот базы равноценен её снэпшоту?
Intel 4004 — процессор, изменивший мир
2021-11-15 в 6:25, admin, рубрики: 4004, intel, Компьютерное железо, ненормальное программирование, Производство и разработка электроники, схемотехника50 лет назад, 15 ноября 1971 года компания Intel представила процессор 4004. Трудно переоценить значимость этого события, именно с этой даты началась эра архитектуры x86, которую мы знаем и сегодня.
Поздравляю компанию Intel с этой знаменательной датой!
Далее будет немного истории, много теории, ещё больше практики и оригинальных фот.
MCS-4 MICRO COMPUTER SET
Особенности (из руководства пользователей)
-
4-битный ЦПУ с 45ю инструкциями
Доказательство Тьюринг-полноты однострочников на Python
2021-11-13 в 9:51, admin, рубрики: python, доказательство, написание кода, ненормальное программирование, плохой код, развлечения, тьюринг-полнотаНаписание однострочников в Python всегда было довольно интересным для меня, и однажды я заинтересовался - а любой ли алгоритм возможно реализовать всего в одну строчку Python кода ?
Оказалось - да!
Немного теории
Исполнитель называется Тьюринг-полным, если на нём можно реализовать любую вычислимую функцию, и наоборот. То есть, чтобы доказать что в одну строку на Python можно написать какой угодно код, необходимо доказать Тьюринг-полноту однострочных программ на python. Как это сделать ?