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
Пропустил, что вчера было ровно 33 года с первого релиза vim.
В честь этого 3+3 прикола в лучшем текстовом редакторе Microsoft Word:
:smile
- нарисовать смайл (🤯). nvim, кстати, на это выдает NOPE и рисует grumpy cat. :TOhtml
- сохранить текущий файл в виде HTML с подсветкой синтаксиса (скриншот по-дедовски) vim \-y
- запустить вим в детском режиме. Копировать/вставить/отменить на ctrl+c/ctrl+v/ctrl+z, включена мышь и все такое. Из insert режима выйти становится невозможно. Из вима, кстати, тоже. ggg?G
- закодировать весь файл в rot13. Полезно, когда пишешь на php и в комнату резко заходит мама. vim <url>
- редактировать файл по урлу, который вим сам скачает. :earlier 3m
- откатить файл к состоянию, которое было 3 минуты назад. Также есть :later
. Пришел на работу, набрал :later 8h
и идешь пить кофе.Пытался тут на досуге перемапить видео из полноценного 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
Копался в случайных 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.
Еще всякие рандомные ссылки, которые я нашел, пока разбирался:
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...
Сижу разбираюсь в технических особенностях ситуации с бэкдором в 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
Поскольку я теперь ковыряюсь с базами данных, то параллельно занимаюсь ускоренным закрыванием пробелов в знаниях
Мне сказали для начала посмотреть видосы CMU (Carnegie Mellon University) по базам данных.
Также я отправился смотреть их же курс, который идет прямо сейчас и который мега качественно сделан: со ссылками, видео и материалами.
https://15721.courses.cs.cmu.edu/spring2024/schedule.html
Делюсь вот материалами, может тоже будет интересно. Даже просто в общеобразовательных целях советую глянуть, чтобы в общих чертах представлять, как там данные внутри баз крутятся
P.S. каждый раз немного расстраиваюсь, когда нахожу крутые бесплатные материалы, что есть столько возможностей узнать новое, а я вместо этого залипаю в твитор....
Мой рабочий сетап - vim + tmux, причем я очень сильно люблю tmux - все через него делаю. Поэтому у меня всегда на компе открыто штук 10-15 tmux сессий. И меня все время раздражало, что во всех панелях (окнах) одна и та же общая история команд. Хочется, чтобы…
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