
Ненормальное программирование *
Извращения с кодом
Некоторые малоизвестные фичи, фокусы и причуды языка C
В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).
Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.
ВНИМАНИЕ: сам факт попадания тех или иных вещей в эту подборку не означает автоматически, что я рекомендую или, наоборот, не рекомендую ими пользоваться! Некоторые из приведённых примеров никогда не должны просачиваться за пределы списков наподобие этого, тогда как другие примеры невероятно полезны! Уверен, что могу положиться на ваш здравый смысл, дорогие читатели.
Интересные ИТ-новости за сентябрь, которые вы могли пропустить

«Мир изменился. Я чувствую это в воде, чувствую в земле, ощущаю в воздухе…». А что именно такого случилось в сентябре, расскажу я — Андрей Аврамчук из МТС Диджитал.
Мы живем в мире новостей, но иногда интереснее попробовать понять, что находится за ними. Для этого я разбил новости на несколько групп. Под катом узнаете, что там с освоением космоса частными компаниями, как ИИ распознает пение китов и насколько быстро (нет) Linux работает на базе процессора Intel 4004, выпущенного в 1971 году. Поехали!
Ruby и встраиваемые системы

Казалось бы, какое отношение «хипстерские скрипты для веб» могут иметь к жестоким реалиям embedded‑разработки, со всей их низкоуровневой работой и ограниченными ресурсами? Но реальность в очередной раз оказалась куда интересней предубеждений, так появилась на свет эта статья.
Автоматизируем подключение Сisco AnyConnect на Mac OS

Так сложилось, что у меня на работе используется Cisco AnyConnect Secure Mobility Client. Периодически приходится подключаться к рабочему VPN используя эту программу. Мне, как человеку постоянно работающему в терминале, захотелось иметь под рукой консольную утилиту, которая сама введет пароль и TOTP, после чего инициирует подключение.
О том как я генератор Brainfuck кода писал

Разбираемся в Brainfuck, Пишем для него генератор кода и интерпретатор
Или рассказ о том, как я решал легкую C задачку
Однако я решил что решать эту задачу привычным методом будет скучно и я решил слегка усложнить себе задачу, чтобы поинтереснее было. Так и появилась идея написать этот код на brainfuck, а на C интерпретатор для него.
Естественно делать это голыми руками будет больно и не приятно, поэтому я решил написать генератор brainfuck кода на Java.
Программист-4chan'овец

Мы используем Go для создания Dolt, первая в мире БД SQL с контролем версий. Как и большинство кодовых баз, основанных Go, мы используем каналы и горутины(от переводчика, автора этой статьи на Хабре: у меня есть хорошая статья на тему параллелизма в Go) для реализации параллелизма. Как правило мы используем эти конструкции очень скучным и обычным путем, ведь параллелизм и так сложен без всяких выдумок. Но в одном месте мы все-таки взяли маленький кусочек кода из другого open-source проекта, который использует каналы очень интересным способом...
«Голая Java» или разработка без всего

Рассказываю что можно сделать на одном только голом JDK. Это старое и ныне почти забытое искусство разработки без внешних библиотек и фреймворков. Работать будем «как в былинные времена» — киркой и лопатой голыми руками и немного мозгом.
Основы Whitespace: невидимого языка программирования

Привет, Хабр! Сегодня я расскажу про whitespace.
Whitespace — это уникальный язык программирования, который использует в качестве своего алфавита только непечатные символы: пробелы, табуляцию и новые строки. Этот эзотерический язык был создан Эдвином Брэди и Крисом Моррисом в 2003 и, разумеется, не предназначен для практического применения, существуя как определенный вызов для программистов — мол, попробуй отладить невидимый код.
В Whitespace команды определяются исключительно расположением и комбинацией непечатных символов, что в очередной раз напоминает нам о том, что написание кода может быть сведено к его наиболее фундаментальным компонентам.
И в этой статье мы рассмотрим базовые принципы этого безумного языка.
Как GPT-4o помог мне создать плагин для After Effects: экономим часы на нейминге слоев

В индустрии анимации и визуальных эффектов время — бесценный ресурс. Работая над проектами, содержащими сотни или даже тысячи слоев, переименование каждого слоя вручную превращается в изнурительную задачу, способную занять часы. Это не просто утомляет — это выбивает из творческого потока и негативно сказывается на качестве работы. Время, которое могло быть потрачено на создание анимации, уходит на приведение проекта в состояние, когда с ним «хоть как‑то можно начать работать».
Насколько нейросеть — хороший калькулятор?

Насколько опасно умножать числа с помощью ChatGPT и OpenAI o1-preview, насколько можно доверять вычисленным ей константам? Стоит ли тратить деньги на o1-preview, если есть mini (в контексте умножения чисел)? Мини-исследование под катом.
Путешествие Embox на AMUR

Всем привет. Embox продолжает своё путешествие по отечественным микропроцессорам. В этой серии мы опишем путешествие на AMUR (MIK32). Кто не знает, это — полностью отечественный микроконтроллер К1948ВК018 на архитектуре RISC‑V, который производится в РФ на мощностях компании МИКРОН, входящей в ГК «Элемент».
Ближайшие события
SQL HowTo: загадка Эйнштейна, или снова Джиндош

Пару дней назад был опубликован пост с решением на MySQL загадки Джиндоша (она же загадка Эйнштейна).
Предложенное решение показалось мне "неспортивным" - помимо необходимости жестко учитывать в структуре запроса количество исходных элементов ("джойнить" нужные таблицы нужное количество раз), так еще и условия в запросе приходилось многократно дублировать.
Поэтому я попробовал решить эту задачу "в общем виде", используя возможности PostgreSQL, и вот что из этого получилось.
Space Invaders в 2 строчки кода (c#)

В честь дня программиста, решил сдуть пыль со старой рубрики коротких программ.
Игра представляет собой вольный ремейк культовой игры, выпущенной в 1978 году.
Несмотря на небольшой размер, игра поддерживает анимацию и звуковое сопровождение.
Как говорится:
Везет программистам, захотел поиграть - написал игру.
Друзья, в статье есть тег - Юмор, не стоит использовать такое в продакшене.
Update1: Добавил описание методик, используемых для сжатия кода.
Ещё слово о процедурной графике

Не так давно я публиковал здесь небольшой обзор по работам в жанре процедурной графики и, в частности, призывал поучаствовать в конкурсе. Упомянутый мной конкурс на фестивале Chaos Constructions состоялся - было представлено семь работ размером до 1кб, о которых, особенно о двух собственного изготовления, я и хочу рассказать.
Первая работа называется Way и написана для платформы Sony Playstation 1 (PSX) на ассемблере MIPS R3000.
Решаем загадку Джиндоша из Dishonored 2 на SQL перебором с возвратом

SQL — язык сверхвысокого уровня, а SQL-движки очень высоко оптимизированы. И поэтому во многих случаях с помощью него можно просто и быстро решать сложные задачи. Вы удивитесь, но даже существует шахматный движок на SQL.
Сегодня мы рассмотрим решение непростой загадки Джиндоша из замечательной игры Dishonored 2 с помощью SQL.
Почему важен процесс а не результат?

Инициализация переменных -- они же понятия, которые и так всем очевидны, но о которых никто договориться не может. Нет, я не трачу время и не задерживаю тут всех подряд, и не умничаю, хотя казалось бы… просто чтобы увидеть то что вижу я, нужно как минимум стоять вот здесь и смотреть вот сюда, через вот эту щёлочку. Если вы будете смотреть в другом месте и в другую щёлочку (потому что вы лучше знаете как нужно смотреть в щёлочки), то конечно вы вряд ли увидите тоже самое, что вижу я. Для вас будет ответ совсем скоро.
Почти все уверены, что код нужно писать так, чтобы его можно было легко читать, как открытую книгу. Ну давайте попробуем написать хотя бы статью в таком стиле, раз это так просто и легко должно быть.
Однострочные комментарии будут двойными слешами.
WebP — формат сжатия веб-страниц
Я хочу, чтобы посетители моего сайта наслаждались им, так что я забочусь об accessibility и проверяю, что даже без JavaScript тут есть, на что смотреть. Я забочусь о том, насколько быстро грузятся страницы, ведь на некоторых из них есть большие иллюстрации, поэтому я минифицирую HTML.
Вот только есть один нюанс, который ставит мне палки в колёса и не даёт сделать блог лёгким как пёрышко.
Профессиональная разработка на Brainfuck

Хотите довести до дурки любимого преподавателя компьютерных наук или навсегда прослыть «особенным» среди коллег сразу после (немедленного) увольнения?
Читайте про патентованный метод.

