Миша пишет код

Description
Раз в день пишу о том, что узнал или сделал. Люблю делать бесполезную но запарную ерунду.

https://t.me/misha_writes_code?boost
Advertising
We recommend to visit
HAYZON
HAYZON
6.065.658 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 Wochen her

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 Wochen, 1 Tag her

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 Monat her

1 month, 2 weeks ago
Пропустил, что вчера было ровно 33 …

Пропустил, что вчера было ровно 33 года с первого релиза vim.

В честь этого 3+3 прикола в лучшем текстовом редакторе Microsoft Word:

  1. :smile - нарисовать смайл (🤯). nvim, кстати, на это выдает NOPE и рисует grumpy cat.
  2. :TOhtml - сохранить текущий файл в виде HTML с подсветкой синтаксиса (скриншот по-дедовски)
  3. vim \-y - запустить вим в детском режиме. Копировать/вставить/отменить на ctrl+c/ctrl+v/ctrl+z, включена мышь и все такое. Из insert режима выйти становится невозможно. Из вима, кстати, тоже.
  4. ggg?G - закодировать весь файл в rot13. Полезно, когда пишешь на php и в комнату резко заходит мама.
  5. vim <url> - редактировать файл по урлу, который вим сам скачает.
  6. :earlier 3m - откатить файл к состоянию, которое было 3 минуты назад. Также есть :later. Пришел на работу, набрал :later 8h и идешь пить кофе.
3 months, 2 weeks ago
Пытался тут на досуге перемапить видео …

Пытался тут на досуге перемапить видео из полноценного rgb в 16 цветов (даже не спрашивайте).

Решил, что я самый умный и не буду это делать через серый цвет, а буду для каждого исходного пикселя искать наиболее близкий цвет из 16 по метрике Евклида:

```

l = (r1 - r2)² + (g1 - g2)² + (b1 - b2)²

```

Оказалось, что такой подход работает плохо и человеческое ощущение близости цветов может сильно отличаться от "компьютерного", особенно, когда нужно выбрать похожий всего из 16.

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

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

Прикладываю мою js поделку. Там есть 3 пресета, на которых можно наглядно увидеть, как ошибается метрика. Также там есть рандом и "умный" рандом, который сгенерирует цвета, в которых Евклид будет не прав (почти всегда). Ну и цвета можно руками менять.

https://lll-phill-lll.github.io/colordiff/

В качестве "человеческой" оценки я использовал метрику CIEDE2000, которая вполне совпадает с моим собственным ощущением близости цветов. И которая в коде выглядит просто как случайные умножения случайных чисел.

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

В общем, надеюсь интересно будет потыкать на Smart Random и посравнивать свои внутренние ощущение с ощущениями Евклида)

Кстати, интересный цикл статей про цвета и связанную с ними математику: https://samgoree.github.io/2019/07/13/color_theory_2.html

5 months ago

Копался в случайных issues на гитхабе и нашел интересное обсуждение:
https://github.com/rust-lang/rust/issues/28728

TLDR:
Раст ловил ошибки в бесконечных циклах из-за того, что LLVM привык выкидывать такие циклы в плюсах.

Чуть более развернуто:

Компилятор C++ в некоторых случаях может выбрасывать бесконечные циклы. Все к этому привыкли и пугают детей вот такими примерами с УБ: https://godbolt.org/z/KKa34Mjar.

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

Ошибки выше обусловлены тем, что LLVM, которым компилируется и Rust, и C++, выбрасывал бесконечные циклы, так как считал, что выполнение программы должно к чему-то приводить.

Проблема в итоге починилась в 2021 году спустя 6 лет после обнаружения в расте и спустя 15! лет после обнаружения в си. Решением стало добавление атрибута mustprogress в LLVM IR для циклов в языках с forward progress guarantee.

Интересно, кстати, что в расте предлагалось добавлять

```

unsafe {asm!("" :::: "volatile")}

```

к циклам, чтобы создать side effect, запрещающий компилятору выбрасывать бесконечные циклы.

Мораль:
Ты можешь быть бесконечно без УБ, но какой в этом толк, если твой программист плачет

P.S.
Еще всякие рандомные ссылки, которые я нашел, пока разбирался:

  1. Forward progress guarantees: Base definitions
  2. Why undefined behavior for infinite loops
  3. The as-if rule
  4. C Compilers Disprove Fermat’s Last Theorem
  5. Trivial infinite loops are not Undefined Behavior

GitHub

LLVM loop optimization can make safe programs crash · Issue #28728 · rust-lang/rust

The following snippet crashes when compiled in release mode on current stable, beta and nightly: enum Null {} fn foo() -> Null { loop { } } fn create\_null() -> Null { let n = foo(); let mut i...

8 months, 3 weeks ago
8 months, 3 weeks ago

Сижу разбираюсь в технических особенностях ситуации с бэкдором в XZ. Тяжело идет, знаний в области безопасности у меня совсем мало. С удовольствием посмотрел бы какой-нибудь 4х часовой разбор.

Объявляю воскресную викторину под названием "Попробуй не написать lgtm на PR, в котором отключается landlock в xz":

Сам ПР:
https://git.tukaani.org/?p=xz.git;a=commitdiff;h=328c52da8a2bbb81307644efdb58db2c422d9ba7

Справка: landlock (1)(2) - система безопасности, которая позволяет процессу запуститься в песочнице с ограниченными правами на некоторые действия.

Подсказка 1.
Проблема в первом файле

Подсказка 2.
Проблема в одном символе и это точка

Подсказка 3.
Сразу после инклюдов

Даже зная инфу из второй подсказки, я все равно с трудом нахожу ошибку...

Пояснение:

В Cmakelists проверялось, поддерживается ли в системе landlock. Раньше проверка выполнялась просто по наличию соответствующего заголовочного файла. В ПР же поддержка landlock определяется по тому, компилируется ли небольшой сниппет кода. Если код не компилируется, значит landlock не поддерживается, "HAVE_LINUX_LANDLOCK" выставляется в false и песочница не включается. Из-за лишней точки код перестает компилироваться и landlock остается выключенным на всех системах.

Обсуждение:
https://news.ycombinator.com/item?id=39874404

9 months, 1 week ago

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

Мне сказали для начала посмотреть видосы CMU (Carnegie Mellon University) по базам данных.

Также я отправился смотреть их же курс, который идет прямо сейчас и который мега качественно сделан: со ссылками, видео и материалами.
https://15721.courses.cs.cmu.edu/spring2024/schedule.html

Делюсь вот материалами, может тоже будет интересно. Даже просто в общеобразовательных целях советую глянуть, чтобы в общих чертах представлять, как там данные внутри баз крутятся

P.S. каждый раз немного расстраиваюсь, когда нахожу крутые бесплатные материалы, что есть столько возможностей узнать новое, а я вместо этого залипаю в твитор....

9 months, 2 weeks ago

Мой рабочий сетап - vim + tmux, причем я очень сильно люблю tmux - все через него делаю. Поэтому у меня всегда на компе открыто штук 10-15 tmux сессий. И меня все время раздражало, что во всех панелях (окнах) одна и та же общая история команд. Хочется, чтобы…

We recommend to visit
HAYZON
HAYZON
6.065.658 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 Wochen her

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 Wochen, 1 Tag her

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 Monat her