
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

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.
И вы его половинки только получаете.

Побитый
11.06.2018
21:22:51

Google

Дмитрий
11.06.2018
21:23:07
Ну нет, O(1)
Просто вернут не символ, а code unit
С какой-то вероятностью это символ целиком.
Но не обязательно.

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

Побитый
11.06.2018
21:23:42

Дмитрий
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
просто так сложилось, что суррогатные пары появились не сразу и когда-то юнит равнялся символу

Vitaly
11.06.2018
21:26:56

Дмитрий
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

Дмитрий
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

Ilia
11.06.2018
22:57:40

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-ый символ вот ни разу не помогает.

Konstantin
12.06.2018
03:42:08

Ilia
12.06.2018
04:39:37

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

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

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

Ilia
12.06.2018
05:00:21

Побитый
12.06.2018
05:03:36

ksenobyte
12.06.2018
05:21:30
Ни

Vhäldemar
12.06.2018
05:45:45
есть кейсы без эмодзи
и прочей дичи

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

Oleg
12.06.2018
07:35:28

Александр
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

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

Matwey
12.06.2018
08:00:22

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