Linker Unsafe
220 subscribers
182 photos
24 videos
18 files
859 links
Собираю ржавые и лямбдообразные новости, прикольные цитатки с форумов, ссылки на статьи и всё такое. В-общем, сюда я тащу такие крупицы, которые мне будет жаль потерять в цифровой бездне. Возможно, они покажутся интересными и вам.

Фи сюда: @nlinker
Download Telegram
Когда-то наши потомки будут рыдать горючими слезами от того, что наворотили в Юникоде. Самая главная статья, которую надо прочесть, это
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

Есть несколько уровней в юникоде.

* На нижнем — кодировка. Преобразует байты в code points. UTF-8 — одна из таких кодировок. Например, code point U+008D она запишет как два байта (октета). Code point U+007A она запишет как один байт 7A — специально так проектировалась, чтобы для первых 127 code point'ов выдавать байты, совпадающие с ASCII. Некоторые code point'ы могут записываться в UTF-8 шестью байтами. Есть и другие кодировки: UTF-16BE, UTF-16LE (ещё иногда бывает byte order mark), UTF-32. Например, в UTF-16 все code point занимают чётное количество байт — два или четыре (это ещё называют "суррогатными парами" из двух code unit, по два байта каждый).

Вывод: по байту, не зная кодировки, нельзя понять, что это.

* Конкретно в UTF-8 байты со значением не между 0-127 нельзя понять, частью какого code point он является.

* Дальше каждый code point — это на самом деле страшная вещь. Их можно комбинировать вместе и получать символы. Например, есть минимум два способа записать кириллическую букву "ё" — одним code point или двумя ("е" + "две точки"). В других языках сложнее (смотри ссылку выше).
* Дальше можно объединять code point в графемные кластеры. Это творческий процесс: например, в корейском в кластер соберутся несколько букв, которые образуют один-два слога. Просто они записываются примерно как один квадратик. В арабской вязи всё ещё веселее.

Не существует никакой концепции "символа", которая бы переносилась между языками. Даже в европейских языках бывают сюрпризы: одна "заглавная" буква "ß" в нижнем регистре превращается в две — "ss".

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

Даже конкатенировать так просто нельзя, привет от LTR-RTL marks.

Ссылки по теме:
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

https://manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions/

https://hsivonen.fi/string-length/
Это случилось как-то неожиданно, но на канале 100 подписчиков 🎉
This media is not supported in your browser
VIEW IN TELEGRAM
Alex Noname:
этот ваш идрис больше всего похож на вышивание

какая то математика от обратного. Реально антистресс блокнот =)

// https://t.iss.one/rust_offtopic/538456
Forwarded from >>=
Если вдруг интересно, то в University of Warsaw курс Distributed Systems в этом году перевели полностью на Rust
Хорошее сравнение C++ и Rust именно в формате, который я люблю: слева программа на C++ с каким-нибудь UB, справа — аналог на Rust, который не компилируется.

слайды https://jacko.io/firehose_of_rust/
и ютуб https://www.youtube.com/watch?v=IPmRDS0OSxM
This media is not supported in your browser
VIEW IN TELEGRAM
Саттер глаголит вековую мудрость: "Запомните, нельзя садиться лицом к зеркалу ночью в полнолуние!"
Притча.

Озеро. Лебеди разминают крылья.
Красавец-лебедь картинно становится в позы культуриста, растягивая каждое сухожилие, поигрывая мускулами.
Подходит маленькая серая уточка, мнется, начинает (жалобным, слегка писклявым, дрожащим голосом):
— Коне-е-е-е-е-ечно… Наверное, на Юг полетите?..
Лебедь, басом, красиво выгибая спину:
— Ну, да, на Юг. Ага. Там тепло, да.

Уточка:
— Коне-е-е-е-е-ечно… А я ту-у-у-ут останусь… Замерза-а-а-а-ать…
Лебедь:
— Полетели с нами, да. На Юг. Ага. (тянет мускулистую ногу)
Уточка:
— Коне-е-е-е-е-ечно… У вас крылья во-о-о-о-о-он какие… А у меня ма-а-а-а-аленькие, я упаду, разобьюсь и умру-у-у-у-у…
Лебедь:
— Так мы тебя, того. Поддержим, да. Воздушные потоки, понимаешь.
Уточка:
— Коне-е-е-е-е-ечно… А в дороге я проголодаюсь, обессилею, и умру-у-у-у-у…
Лебедь:
— Ну, так будем ловить жуков. Да. Сочных жуков.
Уточка:
— Коне-е-е-е-е-ечно… Жуки большие, у вас клю-ю-ю-ю-ювы вон, какие, а у меня ма-а-а-а-аленький, я не смогу проглотить, подавлю-ю-ю-юсь…
Лебедь (похрустывая, разминает крылья):
— Так мы тебе их того. Разжуем, да. Будешь есть, нормально же.
Уточка:
— Коне-е-е-е-е-ечно…
Лебедь (выпрямившись, глядя на уточку):
— Так. Нах$й.
Forwarded from ozkriff.games 🦀 (Andrey @ozkriff Lesnikóv)
# Rust GameDev Newsletter 22: Май 2021

📆 Выпустили ежемесячник по ржавому игрострою за Май: https://gamedev.rs/news/022
Ferris Crustacean:

$ make
g++ main.cpp -o main `pkg-config gtkmm-3.0 --cflags --libs`
$ ./main
[1] 7159 segmentation fault (core dumped) ./main

Kai Ren:
Просто пиши без ошибок. Тебе что, сложно?
Увидено в раст-бегиннерс, кмк довольно ценый список.
https://github.com/danistefanovic/build-your-own-x

То есть если хочется сделать игру/эмулятор/базу/приложение или ПО в любой другой категории, и на каком-то интересном вам языке, этот список весьма хорош.
Укус @optozorax_dev дал симптомы😏

(Кто не в теме, всё началось отсюда https://t.iss.one/optozorax_dev/288)
👆Я в самом деле удивлён!
Ferris Crustacean, [10.06.21 16:16]
[In reply to Deutsche Rabbit]
Так а я дропнул раст. Кресты мацаю. Оно приятней кстати

Ferris Crustacean, [11.06.21 13:53]
[In reply to Ferris Crustacean]
Окей, дропнул кресты. Извинился перед cargo и rustc
Точно помню, что игрался с cactusref года 2 назад, теперь ребята выпустили этот враппер как библиотеку. Возможно, это неплохая заявка на победу в вопросе разруливания каких-то сложных схем с объектами и ссылками. Но недостатком является, очевидно, необходимость лепить unsafe в пользовательском коде, если нужны самоссылающиеся структуры.

`CactusRef` is a single-threaded, reference-counted smart pointer that can deallocate cycles without having to resort to weak pointers. `CactusRef` is a near drop-in replacement for `std::rc::Rc` which introduces additional APIs for bookkeeping ownership relationships in a graph of Rcs.

https://crates.io/crates/cactusref