The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз видеоплеера MPV 0.33, opennews (?), 23-Ноя-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


85. "Релиз видеоплеера MPV 0.33"  +/
Сообщение от Аноним (85), 24-Ноя-20, 01:42 
Вот что бывает, если упарывать Си. Героически жрём говно, после героически изливаем баттхёрт. Сишные локали вообще не предназначены для того, чтобы их ставили в программе с целью получения сайд-эффекта. То что сишная стандартная библиотека - говно... Ну да, говно, но кто же вас заставляет си-то использовать? Используйте плюсы, там локали привязываются к объекту потока, нет проблем с глобальным состоянием.

Что же до юникода ... На редкость отвратный стандарт, в котором подумали только о тех, кто использует латиницу.

Как должен выглядеть нормальный стандарт? Ну во-первых, utf-8 и так имеет символы переменной длины, по любому нужен конечный автомат чтобы его распарсить. Во-вторых, в современном юникоде несколько кодовых точек сливаются в один символ, то есть автомат нужен не ролько для парсинга, но и для рендеринга.

Значит объединяем все алфавиты в один по фонетическому и графическому принципу, сортируем по частоте, вводим специальный код переключения языка, а заодно и стиля текста (привет, ecma-22). Далее пеключаем кодировку путём in-band signaling. Нужно транслитерировать текст? Просто игнорим все символы переключения кодировки, и получаем транслит. Дополнительно бонус для сжатия, так как закономерности между различными языками с различными графемами, обозначающими почти одно и то же,  сохраняются.

Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

106. "Релиз видеоплеера MPV 0.33"  +1 +/
Сообщение от n00by (ok), 24-Ноя-20, 11:29 
> Используйте плюсы, там локали привязываются к объекту потока, нет проблем
> с глобальным состоянием.

"Whether there is one global locale object for the entire program or one global locale object per thread is implementation-defined. Implementations should provide one global locale object per thread. If there is a single global locale object for the entire program, implementations are not required to avoid data races on it"

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру