@ProCxx

Страница 2127 из 2477
Matwey
11.06.2018
19:23:31
А еще бывает что библиотека есть, а исходников от неё нету

Максим
11.06.2018
19:24:05
а это номарльно, что в этом pam модуле(pam_tally) не используется ключевое слово extern перед стандартной функций

Еще разве в pam модулях используется int main(){}?

Rafael
11.06.2018
19:32:32
добрый вечер, помогите разобраться в С коде xmlsec библиотеки.

Google
Rafael
11.06.2018
19:33:54
https://pastebin.com/5nEkZDWp

задача добраться до гостовских алгоритмов

Побитый
11.06.2018
21:16:24
Вопрос: Если у нас есть utf-16 строка, мы ведь не можем за O(1) получить юникод символ по индексу?

Олег
11.06.2018
21:17:06
Не можем. Суррогатные пары.

Побитый
11.06.2018
21:18:37
Не можем. Суррогатные пары.
В .NET строки хранятся в UTF-16, получается, что там индексация каждый раз всю строку пробегает?

Ignat
11.06.2018
21:19:08
получается, что там господа интересным образом определяют символ

Побитый
11.06.2018
21:19:26
В qt тоже вроде utf-16. Как там реализована, никто не знает?

Denis
11.06.2018
21:20:19
там хранится все в QChar

Побитый
11.06.2018
21:20:39
Дмитрий
11.06.2018
21:20:53
Все, кто хранят в UTF-16, на запрос по индексу символа возвращают итый юнит кодировки

Это значит, что как только у вас суррогатная пара, у вас "символ" не поместится в unt16_t.

И вы его половинки только получаете.

Google
Дмитрий
11.06.2018
21:23:07
Ну нет, O(1)

Просто вернут не символ, а code unit

С какой-то вероятностью это символ целиком.

Но не обязательно.

Denis
11.06.2018
21:23:42
Что "всё"?
а, не обращай внимания. Тоже суррогатные пары в двух кучарах, не так прочел доку сначала

Побитый
11.06.2018
21:23:42
Ну нет, O(1)
А code unit сколько занимает? 2 байта?

Дмитрий
11.06.2018
21:23:44
(другое дело, что по возвращённому значению понятно, весь это символ или нет)

Для UTF-16 юнит 2байтовый

Побитый
11.06.2018
21:26:16
Для UTF-16 юнит 2байтовый
Как тогда можно за О(1) индексировать, я не понимаю? Если у нас первый символ кодируется суррогатной парой (4 байта), а мы запрашиваем второй символ, то как он к нему обратится? Если просто вернуть второй code unit, то это будет как бы кусок первого символа, а не второй...

Ignat
11.06.2018
21:26:52
просто так сложилось, что суррогатные пары появились не сразу и когда-то юнит равнялся символу

Дмитрий
11.06.2018
21:27:05
Ignat
11.06.2018
21:27:18
ну и все продолжают делать вид, что эта странная 16-битовая сущность представляет что-то похожее на символ

Побитый
11.06.2018
21:28:31
То есть, если записать в QString какой нибудь символ из 1+ кодовой страницы (например эмоджи какую нибудь), то всё сломается?

Дмитрий
11.06.2018
21:31:22
Не сломается, всё норм, но уже нельзя будет методом str[i] увидеть емоджу.

Побитый
11.06.2018
21:32:06
Denis
11.06.2018
21:32:09
Не сломается, всё норм, но уже нельзя будет методом str[i] увидеть емоджу.
сломается, потому что указав индекс после эмоджи ты получишь не символ после эмоджи, а вторую часть пары

Дмитрий
11.06.2018
21:32:47
Ну в этом плане да.

Хотите без таких трюков -- конвертируем в UTF-32, но тут вас могут ненормализованные символы подловить.

Побитый
11.06.2018
21:35:04
А как вообще на win api работают с кодировками? В программе используют только utf-8, а конвертируют в utf-16 при передаче непосредственно в win api ?

Google
Дмитрий
11.06.2018
21:38:37
Да никак, система в UTF-16 живёт, не проверяя, что там внутри не херня.

Но там есть и парные методы для ASCII

Я слышал, что чуваки на Расте наткнулись, что WinAPI может отдать отдельный символ из суррогатной пары и молчать

Олег
11.06.2018
22:54:21
Azoyan
11.06.2018
23:15:23
https://twitter.com/ericniebler/status/1005413279781609473?s=19

yuri
12.06.2018
02:32:42
А смысл доставать i-ый символ из utf-16? Обычно это или вовсе не надо, или лучше на harfbuzz положиться.

Сейчас просто модно мешать в одной строке написание слева направо и справа налево. i-ый символ вот ни разу не помогает.

yuri
12.06.2018
04:44:51
Я не знаю других use-кейсов доступа к одиночным буквам в строке, не относящихся к визуализации.

Ilia
12.06.2018
04:50:52
А просто посимвольный разбор строки, не?

Чтобы даже визуализировать, уже надо на символы разбить

yuri
12.06.2018
04:57:34
А просто посимвольный разбор строки, не?
Какие use-кейсы у посимвольного разбора строки? Подсчитать частоту букв? Такая задача для студентов или для собеседований, окей. А визуализировать юникод — будьте добры с эмодзи, с написанием справа-налево, с индийскими и тайскими модификаторами и глиптами — harfbuzz.

ksenobyte
12.06.2018
05:21:30
Ни

Google
yuri
12.06.2018
05:48:02
А кейсы без иврита есть?

Vhäldemar
12.06.2018
06:10:47
есть, прикинь

Dmitry
12.06.2018
06:16:01
Какую библиотеку можно взять для чтения xml? Самую легковесную...

tinyxml знаю

Matwey
12.06.2018
06:45:50
Господа

Как работает __builtin_unreachable()? И какие оптимизации может применить компилятор в реальной жизни?

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

Ну кроме тривиальных вещей, типа отчекрыжить код, который написан после __builtin_unreachable().

Александр
12.06.2018
07:33:35
Ну кроме тривиальных вещей, типа отчекрыжить код, который написан после __builtin_unreachable().
Уже выясняли, что если написать if (cond) __builtin_unreachable();, далее по коду компилятор будет считать, что cond == false

Александр
12.06.2018
07:36:49
нет, я хочу написать функцию, которая преобразует int в диапазоне '0'..'9' в соответствующую цифру

кажется, тебе нужен [[unreachable]]

не гуглится

это не стандарт, но есть в gcc вроде

__builtin_unreachable

я хочу синтаксически int to_digit(int c) { std::undefined_behavior(!('0' <= c && c <= '9')); return c - '0'; }

if ('0' <= c && c <= '9') return c - '0'; __builtin_unreachable()

ага

!!!! https://godbolt.org/g/UUtYmv

вот, именно это я хочу

Google
Александр
12.06.2018
07:36:50
в стандарт

в чём профит?

сравни код

Group Butler [beta]
12.06.2018
07:36:50
Александр kicked for flood!

Александр
12.06.2018
07:37:15
?

А какой тогда смысл в этой инструкции?
Это как контракт - для оптимизации

Vladislav
12.06.2018
07:48:37
!!!! https://godbolt.org/g/UUtYmv
что-то я по ссылке оптимизации не вижу (если поправить верхнюю границу до '9')

Дмитрий
12.06.2018
07:51:59
Это контракт, да. Сам по себе не должен исполняться, примерно то же самое, что assert(false), только это явное указание для анализа в компиляторе

А на этом анализе столько всего крутится вплоть до расположения переменных.

Alexander
12.06.2018
08:00:42
Что-нибудь еще, кроме этого?
неужели в интернете нет статей?

и я очень сомневаюсь, что у компиляторов очень много оптимизаций, которые рассчитаны на такие вот контракты

и когда конракты введут, то компиляторы всё равно не сразу научаться что-то классное из этого делать

как и статические анализаторы

Matwey
12.06.2018
08:03:51
неужели в интернете нет статей?
Так это, в интернете непойми кто пишет, а все настоящие знатоки тут

Alexander
12.06.2018
08:04:40
очень смешно

Дмитрий
12.06.2018
08:04:57
и я очень сомневаюсь, что у компиляторов очень много оптимизаций, которые рассчитаны на такие вот контракты
Ну это очень примитивный контракт, и он помогает на самом деле. Я тут как раз курс про стат анализ проходил, это очень легко обработать, в отличие от сложных контрактов.

Страница 2127 из 2477