crypt of decay - про синонимы [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

про синонимы [Dec. 3rd, 2013|12:58 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
«ненависть» и «utf-8».
Linkmeow!

Comments:
From:[info]alamar
Date:December 3rd, 2013 - 02:55 pm
(Link)
UTF-8 - отец
UTF-8 - мать
Верь в UTF-8
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 04:07 pm
(Link)
да я ж не против: для обмена данными самое то. но, блядь, api давно пора перевести на wchar_t, а размер wchar_t сделать равным 32-м битам.
From:[info]alamar
Date:December 3rd, 2013 - 05:28 pm
(Link)
Мне кажется, надо вообще отказаться от байтов, сделать слово равным 64 битам, и оставить только три примитивных - 64-битный int, 64-битный float и 64-битный char.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 05:34 pm
(Link)
слово — на здоровье. а вот байты не трогай, байты хорошие.
From:[info]alamar
Date:December 3rd, 2013 - 05:39 pm
(Link)
Байты - это пережиток. Мы очень их любим, как семнадцатилетнего кота. Как и коту, им скоро предстоит коробка из-под торта и небольшой глиняный холмик.

На самом деле нет. На самом деле что-то сделать с байтами чтобы, надо сначала убраться с этой планеты.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 05:45 pm
(Link)
на байты слишком много всего завязано уже. так что будем жить с ними.

а вот добавить везде wchar_t-API и пинками по яйцам заставлять быдлокодеров его использовать — вполне реально.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 03:16 pm
(Link)
Не умеешь - не берись.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 04:04 pm
(Link)
я-то умею. дебилы, которые делают системное апи, не умеют. как не было wide-char api, так и нет.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 04:19 pm
(Link)
Какого уровня системное API тебе нужно? Либсишный wprintf подойдёт?
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 04:24 pm
(Link)
абсолютно всё, включая иксы.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 04:29 pm
(Link)
Не знаю, что у тебя входит во "всё", и зачем тебе это.

В иксах у меня работало XDrawImageString16, если шрифт выбрать в кодировке iso10646-1.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 04:32 pm
(Link)
А также XwcLookupString
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 04:44 pm
(Link)
>16
утопить.

>XIC ic
утопить, это ещё хуже, чем вообще отсутствие API.

и да: даже простого fopen() и ты пы с wchar_t нет. «напиши сам» не предлагать.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 05:18 pm
(Link)
Я же сразу сказал - не умеешь - не берись.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 05:32 pm
(Link)
умею. я и крестиком могу, если надо. но отказываюсь понимать, почему в 21-м веке, когда юникод — стандарт и его поддержка практически обязательна, системные API и API всяческих библиотек до сих пор не имеют wchar_t-вызовов.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 05:49 pm
(Link)
Умеют очень многие. Кто хочет - тот найдёт. Возьми Qt, там всё на юникоде И не говори, что тебе не нравится QChar. Ты же хотел готовое.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 05:52 pm
(Link)
я хотел готовое системное, а не тулкит размером с караван слонов. спасибо, я как раз сам тулкит пишу, мне к нему в довесок Qt не нужен. а ещё больше мне не нужен цпп — от слов «нахуй ваще».
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 06:19 pm
(Link)
Ну ты помнишь, с чего я начал?
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:21 pm
(Link)
с традиционной защиты идиотизма.
[User Picture]
From:[info]steinkrauz
Date:December 3rd, 2013 - 03:34 pm
(Link)
Вообще непонятно, зачем сейчас нужен UTF-8. Давно пора использовать UTF-32
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 04:06 pm
(Link)
utf-32? боже, но ЗАЧЕМ?! у юникода и символов-то столько нет, чтобы UTF-32 понадобился. а вот системное API с поддержкой UCS-4 — это давно пора.
[User Picture]
From:[info]steinkrauz
Date:December 3rd, 2013 - 09:33 pm
(Link)
Затем, что он не variable length, как utf-8 и utf-16. В конце концов никого же не смущает, на что теперь у нас в каждом указателе лишние 4 байта висят, нафиг в принципе не нужные.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 04:20 am
(Link)
нет, ВСЕ UTF — variable length. и никак иначе. а то, что ты имел в виду — это UCS-4.
[User Picture]
From:[info]steinkrauz
Date:December 4th, 2013 - 07:41 am
(Link)
Всё правильно я имел в виду, читаем стандарт:
UTF-32
UTF-32 is the simplest Unicode encoding form. Each Unicode code point is represented
directly by a single 32-bit code unit. Because of this, UTF-32 has a one-to-one relationship
between encoded character and code unit; it isa fixed-width character encoding form. This
makes UTF-32 an ideal form for APIs that pass single character values.
As for all of the Unicode encoding forms, UTF-32 is restricted to representation of code
points in the range 0..10FFFF16
—that is, the Unicode codespace. This guarantees interoperability with the UTF-16 and UTF-8 encoding forms.
Fixed Width. The value of each UTF-32 code unit corresponds exactly to the Unicode code
point value. This situation differs significantly from that for UTF-16 and especially UTF-8,
where the code unit values often change unrecognizably from the code point value. For
example, U+10000 is represented as <00010000> in UTF-32 and as in UTF-8. For UTF-32, it is trivial to determine a Unicode character from its UTF-32 code unit representation. In contrast, UTF-16 and UTF-8 representations often require doing a code
unit conversion before the character can beidentified in the Unicode code charts.
Preferred Usage. UTF-32 may be a preferred encoding form where memory or disk storage
space for characters is not a particular concern, but where fixed-width, single code unit
Figure 2-11. Unicode Encoding Forms
00000041 000003A9 00008A9E 00010384
0041 03A9 8A9E
41
D800 DF84
CE A9 E8 AA 9E F0 90 8E 84
UTF-32
UTF-16
UTF-8
2.5 Encoding Forms 27
The Unicode Standard, Version 6.2 Copyright ©1991–2012 Unicode, Inc.
access to characters is desired. UTF-32 is also a preferred encoding form for processing
characters on most Unix platforms.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 08:33 am
(Link)
долбоёбы.
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 12:22 pm
(Link)
википедия говорит, что UTF-32 и UCS-4 - одно и то же.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 12:32 pm
(Link)
ровно до тех пор, пока в UTF-32 не установлен 31-й бит. а вот в этом случае начинается пиздецома, непонятка и «а это ваще неопределено, вас съел пинки».
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 12:46 pm
(Link)
Где ты такое вычитал? UCS-4 определен 32-х битным числом, в котором числа от 0 до 0x1FFFFFFF обозначают код символа. UTF-32 определён 32-х битным числом, в котором числа от 0 до 0x10FFFF обозначают код символа. Так как символов с кодами более 0x10FFFF пока не существует, фактически это одно и то же.

Если установлен бит 31 - это вообще не символ Unicode (и в UTF-32 и в UCS-4).
Он вызывает у тебя моральные страдания? Или тебя BOM пугает?
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 01:58 pm
(Link)
UTF — это по определению кодировка с переменной длиной. а то, что какой-то дегенерат решил обозвать UCS как UTF — так это говорит только о том, что он был дегенерат. а другие дегенераты растащили по интернетам и стандартам.
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 02:32 pm
(Link)
Где ты такое вычитал, что UTF - обязательно с переменной длинной?
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 03:48 pm
(Link)
UTF-8 — с переменной. UTF-16 — с переменной. тот, кто решил, что UTF-32 будет с фиксированой — ёбаная безмозглая макака.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 04:20 pm
(Link)
Для того же, для чего он был придуман - для передачи Unicode данных через 8-битные каналы связи.
[User Picture]
From:[info]steinkrauz
Date:December 3rd, 2013 - 09:35 pm
(Link)
И какие же это каналы?
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 04:22 am
(Link)
например, http. да и вообще, любые, где надо более-менее сохранить читаемость глазами и/или zero bytes are not tolerated.

в том числе и обмен между софтом — потому что у UTF-8 нет проблемы других кодировок: byte ordering'а.
[User Picture]
From:[info]steinkrauz
Date:December 4th, 2013 - 07:44 am
(Link)
Читабельность глазами софт обеспечивает (кроме хардкорных случаев разве что)

А вот проблема нуля и порядка байтов это да, серьёзный вопрос, но это уже к протоколам, а не к разрядности каналов.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 08:34 am
(Link)
«читабельность» — это когда 'cat' — и можно не бояться, что оно опиздюлит терминал.
[User Picture]
From:[info]steinkrauz
Date:December 4th, 2013 - 01:29 pm
(Link)
Дык, если терминал в UTF-32 работает, то оно и не опиздюлит.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 01:58 pm
(Link)
ага-ага. вывод простого ASCII тогда терминал так опиздюлит, что мало не покажется.
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 12:24 pm
(Link)
И http и rs-232, и прочие форматы данных, где ме можем лишь гарантировать, что это последовательность байт и это строка.
[User Picture]
From:[info]steinkrauz
Date:December 4th, 2013 - 01:35 pm
(Link)
НТТЗ допиливается с полпинка, также как его допилили с 7 до 8 бит
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 02:32 pm
(Link)
Это совсем не то же самое.
From:[info]remedie
Date:December 3rd, 2013 - 06:19 pm

re: utf-8

(Link)
4-байтные символы занимают много места, и обрабатываются медленнее. Переводя API на 32-битный wchar_t ... Ты видел раздвоение winapi из-за юникода? Хочешь такое в линуксе? UTF-8 решает множество проблем разом: экономит место, представление первой половины ASCII без изменения, самосинхронизация(!). И у меня есть большие подозрения, что в целом UTF-8 быстрее по причине меньшего объёма обрабатываемых данных, большая часть символов всё-таки один байт. Бейте меня, но я, пожалуй, за UTF-8. Хоть и есть у него очевидные недостатки.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 06:22 pm

Re: utf-8

(Link)
Много места занимает порнуха на винте. 4-х байтные символы обрабатываются с той же скоростью. А UTF-8 отлично подходит для передачи данных. Для этого она и используется. У UTF-8 есть толькот одна проблема. Американцы часто путают её с Latin1.
From:[info]remedie
Date:December 3rd, 2013 - 06:31 pm

Re: utf-8

(Link)
Я как раз много работаю с протоколами и много времени отнимает преобразование из UTF-8 в другие
кодировки и обратно. Хотелось бы UTF-8 везде.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:33 pm

Re: utf-8

(Link)
«я дохрена езжу на самокате с квадратными колёсами. хочу везде выбоины в асфальте!»
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 06:37 pm

Re: utf-8

(Link)
Чьего времени это много занимает? И зачем преобразовывать UTF-8, если его надо только передавать? Обрабатывать-то его всё равно практически невозможно. Или в разных протоколах разный формат передачи? Ну так это претензии к протоколам.
From:[info]remedie
Date:December 3rd, 2013 - 06:41 pm

Re: utf-8

(Link)
Внутри наших систем, к сожалению, UCS-32. А вход и выход, в основном, UTF-8. Насчёт квадратных колёс ОК довод, мы же тут не ищем истину, а обменивается мнениями.
From:[info]remedie
Date:December 3rd, 2013 - 06:44 pm

Re: utf-8

(Link)
И вообще, чем-то это напоминает спор об -Os vs -O3 или как там его
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 06:45 pm

Re: utf-8

(Link)
Ну так всё правильно у вас сделано. Это один из методов решения. Только если вход/выход у вас файлы - то есть смысл и в файлах хранить UCS-32. Только надо с Endianess определиться.
From:[info]remedie
Date:December 3rd, 2013 - 06:52 pm

Re: utf-8

(Link)
Да содержимое файлов как раз не обрабатываем. Т.е. то, что часто происходит - обработка всяких заголовков и ошмётков json, и всё это в utf-8. Json-парсеру пофиг, он посимвольно берёт, а не побайтно, нет проблемы в том, что mbcs. И нет никаких кошмаров, типа как кетмар пишет. Strlen не частая операция.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:54 pm

Re: utf-8

(Link)
а вот у меня — текстовый редактор. и там позиционирование и вычисление длины — вполне себе полезные и нужные операции. и желательно, чтобы всё это делалось простой арифметикой.
From:[info]remedie
Date:December 3rd, 2013 - 07:05 pm

Re: utf-8

(Link)
Ну понятно тогда. Каждый программист должен написать текстовый редактор. И utf8 тут и правда ни к чему.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 07:14 pm

Re: utf-8

(Link)
>Каждый программист должен написать текстовый редактор.
в данном случае это часть задачи «каждый программист должен написать свой GUI-тулкит».

>И utf8 тут и правда ни к чему.
а другого API, зараза, нет. ну не умеют иксы малевать UCS-4, хоть ты тресни. а хотелось без ручных сборок строк и дебильного UTF-16.
From:[info]remedie
Date:December 3rd, 2013 - 07:26 pm

Re: utf-8

(Link)
Свой GUI тулкит у нас на работе написали, например. Уже джва года как мы баги ловим и исправляем, каждый раз новые и удивительные.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 07:33 pm

Re: utf-8

(Link)
ну, у меня цель простая: маленький тулкит для маленького софта. на си. inherently limited, так сказать. никак не для больших проектов или там «убийства gtk».
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 12:35 pm

Re: utf-8

(Link)
Иксы поддерживают UCS-2 как минимум так, как это поддерживают шрифты. В UCS-2 входит Basic Multilingual Plane, а это все существующие используемые языки. Туда не входят древние языки, так что историкам будет тяжело под голыми иксовыми редакторами тексты набирать.

Так что вполне можешь использовать XDrawString16, тебе хватит.

И да. Текстовая рисовалка иксов считается устаревшей. А в FreeType индексация через "unsigned int".
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 02:00 pm

Re: utf-8

(Link)
>Так что вполне можешь использовать XDrawString16
нет, не могу: оно 16-битное. а wchar_t — 32-битный.

>Текстовая рисовалка иксов считается устаревшей
не ебёт. Xft — унылое уёбищное говно, которое следует избегать изо всех сил и возможностей.
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 02:34 pm

Re: utf-8

(Link)
>нет, не могу: оно 16-битное. а wchar_t — 32-битный.

Можешь. Разрешаю конвертировать.

> не ебёт. Xft — унылое уёбищное говно, которое следует избегать изо всех сил и возможностей.

Я не писал про Xft. Разрешаю вызывать FreeType руками.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 03:52 pm

Re: utf-8

(Link)
>Можешь. Разрешаю конвертировать.
UTF-32 не конвертируется в UCS-2. такие дела. нет, «а что не влезло — то всё равно не используют» не означает «конвертируется».

>Разрешаю вызывать FreeType руками.
угу. всё бросил и потащил к себе библиотеку размером с минимум три моих тулкита. плюс свою замену fontconfig'у. Xft вместе с ttf идут нахуй.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 07:02 pm

Re: utf-8

(Link)
json - это тоже по сути передачи данных. Но json-парсер по идее должен при преобразовании объекта во внутреннее представление строки преобразовывать в ucs2/ucs4. Или не преобразовывать. В json нельзя указать, где хранится unicode, а где ascii (в отличие от python, например). Ну а дальше обрабатывать уже в ucs.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 07:15 pm

Re: utf-8

(Link)
в json всё в utf-8, стандарт обязывает.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:53 pm

Re: utf-8

(Link)
ну, у меня несколько своеобразная механика «обмена». извиняюсь за прошлое и будущее — я в интернетах резче поноса, потому что в ебало-то не дадут.
From:[info]remedie
Date:December 3rd, 2013 - 07:13 pm

Re: utf-8

(Link)
Всё нормально. Я разве пришёл сюда обижаться? А вести себя как internet tough guy - это в чём-то даже прикольно.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:29 pm

Re: utf-8

(Link)
>4-байтные символы занимают много места, и обрабатываются медленнее.
не делай мне смешно, пожалуйста. читать байты и читать слова — операции по скорости примерно одинаковые. читать слова даже быстрее может быть, ибо выравнивание. равно как и операции с регистрами размером в байт никак не медленней слов.

>Хочешь такое в линуксе?
да, хочу. с отметкой старого API как deprecated и дикими воплями компилятора по этому поводу.

>экономит место
…во времена, когда сраные телефоны имеют гигабайты RAM. не смешно.

>представление первой половины ASCII без изменения
нахуй. нихуя такого особенного в этой «первой половине ASCII» нет. к тому же wchar_t тоже представляет её без изменения.

>самосинхронизация
нахуй не нужна, когда размер символа фиксирован.

>большая часть символов всё-таки один байт
привет англичанам и американцам! а я вот на свой бложег посмотрел, например — нифига, большая часть символов — кириллица.

>Бейте меня, но я, пожалуй, за UTF-8
как кодировка для обмена данными — на здоровье. обмениваться wchar_t неудобно уже хотя бы по причине порядка байтов. и по причине идиосинкразии многого софта к нулевому байту.

но писать функцию, чтобы спозиционироваться на символ номер n в строке, или опять функцию, чтобы определить длину строки в символах, зная её точный размер в байтах? это идиотизм. я уж не говорю о том, что неверный «серединный» код utf-8 посреди строки ломает весь телемаркет.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 06:40 pm

Re: utf-8

(Link)
> да, хочу. с отметкой старого API как deprecated

Тут как бы ещё с файловыми системами проблема. Не все FS вообще указывают, в какой кодировке имена файлов. Так что с этого места надо начинать, а потом уже ядерные вызовы новые придумывать. Хотя пора бы и заняться.

> но писать функцию, чтобы спозиционироваться на символ номер n в строке, или опять функцию, чтобы определить длину строки в символах, зная её точный размер в байтах? это идиотизм.

А дай-ка пруфлинк на такой код. А то я только от тебя эту страшилку уже много лет слышу.
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 06:59 pm

Re: utf-8

(Link)
>Тут как бы ещё с файловыми системами проблема. Не все FS вообще указывают, в какой
>кодировке имена файлов.

пусть пока ос (или glibc, или хуй с бугра — мне пофигу) и конвертирует в какой-нибудь utf-8 всё это. но само, без меня. а мне — дайте open_w(), fopen_w() и так далее.

>А дай-ка пруфлинк на такой код.
возьми любую библиотеку для работы с utf-8. ВНЕЗАПНО! везде вместо простой арифметики — байтопидарасинг.

я знаю размер строки (в байтах, в символах — похеру). я хочу в ней попасть на позицию символа n. я должен вместо простого сложения пидарасить строку, скипая символы в utf-8, потому что их длина хуйзнаеткакая.

ну, и: я знаю размер строки в байтах. сколько это символов? и наоборот.

функции, функции, функции. простых сложений/вычитаний/сдвигов — не хватит.
From:[info]http://boyko.km.ua/alexey/
Date:December 3rd, 2013 - 07:09 pm

Re: utf-8

(Link)
> пусть пока ос (или glibc, или хуй с бугра — мне пофигу) и конвертирует в какой-нибудь utf-8 всё это. но само, без меня. а мне — дайте open_w(), fopen_w() и так далее.

Ну так не ной, а напиши обёртку сам. И распиарь. Или торвальдса попроси.

>возьми любую библиотеку для работы с utf-8

Что за библиотека работы с UTF-8? Абстрактная какая-то?

В glibc самое жестокое - это mblen/mbtowc/wctomb для хитрожопых пацанов.(UTF-8 не единственная multibyte-кодировка). Но вот прям функции: "получить индекс символа в байтах я там не припомню"
[User Picture]
From:[info]ketmar
Date:December 3rd, 2013 - 07:20 pm

Re: utf-8

(Link)
>Ну так не ной, а напиши обёртку сам.
не хочу. мне что, всю glibc переписывать, что ли? мне нужен не «апи для себя», мне нужен «стандарный апи, который будут использовать все. иначе расстрел нахуй».

>Что за библиотека работы с UTF-8?
лю-ба-я. google://utf-8+library+c и втыкай на функции — или заинлайненые руками, или командами компилятора.

>UTF-8 не единственная multibyte-кодировка
к сожалению.
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 12:37 pm

Re: utf-8

(Link)
Нашёл какие-то маргинальные поделки, о которых раньше не слышал. Нахуй они нужны?
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 02:01 pm

Re: utf-8

(Link)
блядь. продемонстрируй мне код позиционирования в utf-8 строке простой арифметикой. нет, условия и циклы не являются «простой арифметикой».
From:[info]http://boyko.km.ua/alexey/
Date:December 4th, 2013 - 02:35 pm

Re: utf-8

(Link)
Да нахуй это кому нужно? Я вызову mbstowcs и буду дальше как с массивом работать.
[User Picture]
From:[info]ketmar
Date:December 4th, 2013 - 03:54 pm

Re: utf-8

(Link)
ну, работай. разрешаю.