#prog #c #article #abnormalprogramming
Серия из трёх (на текущий момент) статей о странностях C
Weekend projects: getting silly with C
Getting silly with C, part (void*)2
Getting silly with C, part ~(~1<<1)
Наверное, мои самый любимые примеры кода из статей — это многострочный комментарий:
и абьюз type punning-а на сигнатуре
Серия из трёх (на текущий момент) статей о странностях C
Weekend projects: getting silly with C
Getting silly with C, part (void*)2
Getting silly with C, part ~(~1<<1)
Наверное, мои самый любимые примеры кода из статей — это многострочный комментарий:
#include <stdio.h>
int main() {
puts("Hello world");
asm("/*");
/* Nested comment */
for (int i = 0; i < 10; i++) puts("I LIKE PANCAKES!");
asm("*/");
puts("Goodbye world");
}
и абьюз type punning-а на сигнатуре
main для доставания "Главного ответа о вселенной, смысле жизни и всего такого" из воздуха:#include <stdio.h>
int main(int i) {
do do do do "baby shark!";
while (++i % 2);
while (i == 2);
while (i % 3);
while (i % 7);
printf("The answer is %d.\n", i);
}
😁12👍2🤯2🍌1
Блог*
#prog #c #article #abnormalprogramming Серия из трёх (на текущий момент) статей о странностях C Weekend projects: getting silly with C Getting silly with C, part (void*)2 Getting silly with C, part ~(~1<<1) Наверное, мои самый любимые примеры кода из статей…
Для интересующихся, как это работает:
Форматирование кода скрывает тот факт, что в программе содержатся четыре вложенных друг в друга do-while цикла (это можно проявить, если отформатировать код). Для того, чтобы циклы завершились, нужно, чтобы после выхода из циклов
* кратно 2
* не равно 2
* кратно 3
* кратно 7
Так как 2 не кратно ни 3, ни 7, условие "не равно 2" избыточно. И действительно, если убрать один из
Тот факт, что в
main, вообще говоря, в C либо не принимает аргументов, либо принимает два: argc и argv. GCC даже указывает на это при компиляции с -Wall. В данной программе main имеет некорректную сигнатуру, но в силу того, как распределяются регистры для целевого ABI, первый аргумент для int main(int, char**) и int main(int) попадают в один и тот же регистр. Иными словами, при запуске этой программы в i попадает значение argc, и так как на godbolt по умолчанию программе никаких аргументов не прокидывается, i имеет значение 1 (первым аргументом OS передаёт название программы — так, например, работает busybox, который в одном бинарнике скрывает несколько программ и по этому аргументу выбирает, какую звать).Форматирование кода скрывает тот факт, что в программе содержатся четыре вложенных друг в друга do-while цикла (это можно проявить, если отформатировать код). Для того, чтобы циклы завершились, нужно, чтобы после выхода из циклов
i было:* кратно 2
* не равно 2
* кратно 3
* кратно 7
i начинает с 1 (точнее, 2 из-за преинкремента на первой итерации), наименьшим общим кратным 2, 3 и 7 является число 42, поэтому именно это значение принимает i и оно в итоге выходит на печать.Так как 2 не кратно ни 3, ни 7, условие "не равно 2" избыточно. И действительно, если убрать один из
do и второй while, то результат будет тот же.Тот факт, что в
i попадает именно значение argc, можно подтвердить, если добавить на gobolt окно с исполнением и докинуть аргументов командной строки для программы. Если туда вписать 41 значение, то argc будет равно 42, на первой итерации i станет равным 43 и потому программа выдаст следующее число, кратное 2, 3 и 7: The answer is 84.🤩6❤1🙏1
Ну и срань
Хабр в плюсе, Яндекс в плюсе, а вот читатели получают здоровенный неотключаемый баннер к каждому сниппету кода, который ещё и требует логина в аккаунт Яндекса и (по отзывам) работает крайне паршиво.
Если используете uBlock, то в комментариях подсказали фильтр для того, чтобы убрать:
Хабр в плюсе, Яндекс в плюсе, а вот читатели получают здоровенный неотключаемый баннер к каждому сниппету кода, который ещё и требует логина в аккаунт Яндекса и (по отзывам) работает крайне паршиво.
Если используете uBlock, то в комментариях подсказали фильтр для того, чтобы убрать:
habr.com##.code-explainer
Хабр
Теперь Хабр может объяснить, что это за код
TL; DR Мы встроили SourceCraft во все кодовые сниппеты в публикациях на Хабре. Он объяснит, что делает код. Как это работает, кому нужно и как использовать — читайте ниже. Хабр — площадка для...
😭14👍1👎1😁1💩1🤡1
Forwarded from Kedr to Earth | Земля, я Кедр (✅ Yuri Ammosov)
РИА Новости накануне зимней сессии предупреждает: ДУМАТЬ ВРЕДНО !
https://ria.ru/20251209/vrach-2060710660.html
Длительная умственная нагрузка может привести к развитию гипертонии, аритмии и ишемии сердца.
Как пояснил врач, когнитивное переутомление - это не просто усталость мозга, оно отражается на вегетативной регуляции сердца. Так, уже после нескольких часов напряженной умственной деятельности учащается пульс, повышается давление, растет уровень кортизола.
После четырех-пяти часов сложной умственной работы меняется обмен в префронтальной коре и повышается уровень глутамата - медиатора, связанного с утомлением и стрессом.
Врач порекомендовал ограничивать интенсивную интеллектуальную работу тремя- четырьмя часами в день, а также делать паузы каждые 60–90 минут.
https://ria.ru/20251209/vrach-2060710660.html
РИА Новости
Врач рассказал об опасности длительной умственной нагрузки
Длительная умственная нагрузка может привести к развитию гипертонии, аритмии и ишемии сердца, рассказал РИА Новости главный кардиолог кардиологического центра... РИА Новости, 09.12.2025
💯5🤩4🥴3
shitposting 3.0 [+ dragons]
Photo
That is awesome.
Does everyone know the story of Lot?
Angels come to check out the town because omni-present God wants a report and can't get it by simply being everywhere at once. So the town goes to rape the angels and Lot offers his two daughters to the rape gang instead.
The gang refuses, so Lot goes to his future sons-in-law and tries to get them out of town with his daughters (after offering them up to a rape gang... seriously). The sons-in-law don't go.
The angels tell Lot and his wife and two daughters to leave and don't look back. Lot gets a pass for being the one good guy in town... (in spite of offering his daughters to a rape gang... seriously)
After they head out of town, Lot, who has received a pass for offering his daughters to a rape gang, notices that his wife is incinerated into a pillar of salt on the spot for the great sin of LOOKING BACK.
(too bad she didn't commit a minor sin like offering her own kids to a rape gang instead, then she'd be alive)
After Lot and his daughters get to the caves, his daughters are sad that their husbands to be aren't around to impregnate them, providing the only possible value to women (having children). So the daughters get their father rip roaring drunk, and even though he's super old, Lot has sex with both his daughters and impregnates both of them.
Note that the ONE PERSON IN THE STORY who didn't do something abominable... Lot's wife... is the one who was crisped to a pillar of salt.
What a great guy... that Lot... and his great daughters...
Source
👍4🥴2😁1🙏1🤷1
#prog #article
Afternoon project: JPEG DCT text lossifizer
Чел сделал штуку (веб-приложение), которая применяет к тексту процесс, аналогичный сжатию с потерями в JPEG: разбирает текст как семпл на частоты, огрубляет их и собирает обратно.
Пара моментов:
В JPEG квантизация в основном огрубляет (и отбрасывает) высокие частоты. В случае же с текстом это приводило к слишком большой деградации, поэтому программа сначала отбрасывает низкие частоты.
Первоначальная реализация использовала ASCII-коды напрямую, но комментатор предложил другую кодировку, в которой символы со схожим написанием/звучанием имели близкие коды, и это положительно сказалось на читаемости сжатого текста даже с весьма большим огрублением.
Afternoon project: JPEG DCT text lossifizer
Чел сделал штуку (веб-приложение), которая применяет к тексту процесс, аналогичный сжатию с потерями в JPEG: разбирает текст как семпл на частоты, огрубляет их и собирает обратно.
Пара моментов:
В JPEG квантизация в основном огрубляет (и отбрасывает) высокие частоты. В случае же с текстом это приводило к слишком большой деградации, поэтому программа сначала отбрасывает низкие частоты.
Первоначальная реализация использовала ASCII-коды напрямую, но комментатор предложил другую кодировку, в которой символы со схожим написанием/звучанием имели близкие коды, и это положительно сказалось на читаемости сжатого текста даже с весьма большим огрублением.
🤯7❤4