|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Допустим у меня есть такой код: Код: plaintext 1. 2.
Будучи сохранённым в файл в кодировке utf-8 with BOM в MSVC первая строка в кодировке local-8bit, а вторая строка - utf-8. Конечно, речь идёт о времени исполнения приложения. Вопрос: что будет с этим файлом в случае Windows+MinGW и Linux+GCC? В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Windows+MinGW и Linux+GCC Там уже свои заморочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Windows+MinGW и Linux+GCC Там уже свои заморочки. Ну вообще да. Именно в связке с Qt. Но там же вроде GCC... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Но там же вроде GCC... petrav Именно в связке с Qt extern QString CONST_NAME; QString CONSTZNAME = " Привет..." ; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp QString CONSTZNAME = " Привет..." ; CONST_NAME окапечатка ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом. Это было бы идеально. Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна. UTF-8 нужен что бы строки передавать в интерфейсы Qt. Он понимает только UTF-8. Можно, конечно, каждый раз преобразовывать средствами самого Qt. Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:56 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav utf-8 with BOM ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна То есть, находишь опечатку и ставишь пересобирать - норм. Заюзать попсовый gettext - не норм. Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. Ты думаешь я тебе втираю тут про ascii от хорошей жизни? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 10:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav utf-8 with BOM Т.е. с такой кодировкой исходников у меня будет и utf-8 и однобайтовые строки в любом окружении? Windows/Linux + MinGW/GCC в любых допустимых их вариациях? Отлично спасибо. :) Вы меня успокоили. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна То есть, находишь опечатку и ставишь пересобирать - норм. Заюзать попсовый gettext - не норм. Имею большой опыт работы с подобной системой локализации от Qt. Я проклял всё... тогда. :) Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. Ты думаешь я тебе втираю тут про ascii от хорошей жизни?[/quot] Это-то я понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav в любом окружении? Это закон. Я компилил под линукс и второй раз под те де исходники под винду. Работало. Что я делал не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav в любых допустимых их вариациях Практический вопрос топика или теория? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav в любых допустимых их вариациях Практический вопрос топика или теория? Я спрашивал в каком формате мне файлы кодировать, что бы при задаче (вполне вероятной) портировать на Linux (или на MinGW) мне не пришлось всю программу переписывать. Ответ я получил: файлы исходников в кодировке utf-8 with BOM. И всё. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:20 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Файлы в utf-8 само ide требует при открытии. Причем плевать какой текст и код там будет написан. Тогда всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 11:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravЯ спрашивал в каком формате мне файлы кодировать В той, которую укажешь компилятору специально для этого предназначенным ключом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 14:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav ...В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости? utf8+bom - кроссплатформеннее некуда. И разлюбезная Qt их понимает без дополнительных стуков в бубен. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 14:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. не потому ли, что MS изобрела свои собственные кодировки (codepages), штобы "не быть как все" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 21:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух petrav Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. не потому ли, что MS изобрела свои собственные кодировки (codepages), штобы "не быть как все" А что такого Майкрософт разработала? UTF-16? BOM? Я просто не в курсе. И уж точно не майкрософт разработала язык в котором восемь строковых типов и отсутствуют инструменты работы с "супер" кодировкой utf-8: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 09:43 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, и отсутствуют инструменты работы с "супер" кодировкой utf-8 Ты не знаешь что из себя представляет utf-8, а виноваты клятые крестовики. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 09:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, и отсутствуют инструменты работы с "супер" кодировкой utf-8 Ты не знаешь что из себя представляет utf-8, а виноваты клятые крестовики. В теории знаю, там ничего сложного. Я вчера гуглил и везде советуют использовать сторонние библиотеки: ICU или utfcpp. Или писать свои костыли. В библиотеках ICU и utfcpp наверняка тоже свои велосипеды и костыли типа QString. Особенно меня убило, что они std::mblen() сделали *не* потокобезопасной или заторможенной из-за скрытого использования TLS. Что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:08 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav В теории знаю, там ничего сложного. Я вчера гуглил Так, всё понятно. std::mblen() И что ты собрался им мерить? везде советуют использовать сторонние библиотеки: ICU или utfcpp. Конечно везде советуют сторонние библиотеки. Плюсы предоставляют инструменты для работы с кучей байт. Символы utf - это не байты. Длинна символа может быть от 1 до 4 байт, там могут быть еще всякие модификаторы и прочие подводные камни. Ты все это собрался реализовать? Что я делаю не так? Ссыш против ветра. Ты пишешь под кутэ? Вот и юзай его фишки. А utfcpp - вообще header-only, какие проблемы? Но нет, надо жрать кактус с wchar*/wstring и ныть о том, какие все му**ки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:22 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster std::mblen() И что ты собрался им мерить? Он возвращает длину текущего многобайтового символа. В байтах. crutchmaster везде советуют использовать сторонние библиотеки: ICU или utfcpp. Конечно везде советуют сторонние библиотеки. Плюсы предоставляют инструменты для работы с кучей байт. Символы utf - это не байты. Длинна символа может быть от 1 до 4 байт, там могут быть еще всякие модификаторы и прочие подводные камни. Я это знаю уже лет 10-ть. Вот это меня и раздражает, что в 2019-м году, после стольких лет развития, С++ не предоставляет возможности работать со строками, а только с кучей байт работает! Что я должен подключать какое-то стороннее велосипедирование с произвольным уровнем кривизны. Завтра это костылирование перестанут поддерживать и что тогда? crutchmaster Ты все это собрался реализовать? Нет, конечно. crutchmaster Что я делаю не так? Ссыш против ветра. Ты пишешь под кутэ? Вот и юзай его фишки. А utfcpp - вообще header-only, какие проблемы? Но нет, надо жрать кактус с wchar*/wstring и ныть о том, какие все му**ки. На Qt я пишу только GUI. А логику на С++. А utfcpp - это сторонний костыль. Кстати, QString тоже использует utf-16. Почему я не могу использовать wchar_t? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav На Qt я пишу только GUI. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Он возвращает длину текущего многобайтового символа. В байтах. Я это знаю уже лет 10-ть. Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню. Вот это меня и раздражает, что в 2019-м году, после стольких лет развития, С++ не предоставляет возможности работать со строками, а только с кучей байт работает! Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху. Завтра это костылирование перестанут поддерживать и что тогда? Оно идеально работает, зачем его поддерживать? Если оно еще не идеально, то после завтра приделают патч. На Qt я пишу только GUI. Там в qt есть чуть ли не маленькая галактика, если ты так не хочешь тащить utfcpp. Не нравится тащи вон, boost. Это промышленная либа, которую поддерживают серьёзные люди, всё как тебе нравится. А utfcpp - это сторонний костыль. Костыли - это твои потуги с wchar. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav А что такого Майкрософт разработала? UTF-16? BOM? Я просто не в курсе. cp1251 и ещё 100500 cp (codepage) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? русские буквы же в ASCii есть по одному байту ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух crutchmaster Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? русские буквы же в ASCii есть по одному байту Так? Или ты антиглобалист?) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух, В ASCII 128 символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav Он возвращает длину текущего многобайтового символа. В байтах. Я это знаю уже лет 10-ть. Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню. Ну тогда давай с азов, если тебе не сложно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Длина текущего символа в байтах. В чём я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:26 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:29 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, авторДлина текущего символа в байтах. Какого символа, еще раз? Что твой код скажет на вот это: "аaaаааaa110™" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, авторДлина текущего символа в байтах. Какого символа, еще раз? Что твой код скажет на вот это: "аaaаааaa110™" 1. Это очевидно, не? Если a - латинская, офкосс. Того символа на который указывает первый аргумент. Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, авторДлина текущего символа в байтах. Какого символа, еще раз? Что твой код скажет на вот это: "аaaаааaa110™" Вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, авторДлина текущего символа в байтах. Какого символа, еще раз? Что твой код скажет на вот это: "аaaаааaa110™" А вот мы вычисляем длину строки. Длина строки измеряется в символах, конечно, ни как иначе! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav На Qt я пишу только GUI. Тут нельзя быть правым или не правым. Писать всё на Qt - это вопрос проектирования. Решение зависит от: 1. Целей разработки. 2. Рабочее окружение (люди). 3. Унаследованный код. 4. Философия проектировщика. 5. Планы на будущее. 6. Etc... Я пишу логику не используя Qt - он только для GUI. Таково проектное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:13 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Того символа на который указывает первый аргумент. Всё, дошло, не прав. Я не понял, что делает mblen, думал он считает длину всей строки Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу. И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Какая разница, если у тебя и так уже qt в проекте. Тебе всё равно придётся работать с qt'шным функционалом. Причём тут проектирование? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Тут нельзя быть правым или не правым. Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш. Все остальное - ОГРАНИЧЕНИЯ. Просто скажи, что это уже решено. И всё. Так как любой новичок читая проблему не врубится в проблему). Например, Код: plaintext 1. 2. 3. 4.
Это гуи или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster полудух, В ASCII 128 символов. 127 хм... походу extended ASCii это плод фантазии виндузятников... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
авторchar s1[128] = u8"Ыt°"; можно же конвертнуть в wstring, сделать: .size()/.substr()/.rfind(), затем обратно в string ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух, 127 и нулевой. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
По логике на Qt отвечаю сразу и товарищу crutchmaster . PetroNotC Sharp petrav Тут нельзя быть правым или не правым. Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш. Все остальное - ОГРАНИЧЕНИЯ. Нет, это не ограничение, это вопрос проектирования . Может быть мне нужно будет модули логики использовать в проекте где нет Qt. Может там только С++ или gtk. Писать логику на Qt - вот это ограничение. Да. PetroNotC Sharp Просто скажи, что это уже решено. И всё. Так как любой новичок читая проблему не врубится в проблему). Например, Код: plaintext 1. 2. 3. 4.
Это гуи или нет? Это вопрос риторический или нет? Или просто разговор поддержать? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Это вопрос риторический или нет? Или просто разговор поддержать? :) "инструмент под задачу" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav модули логики ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем? Да не двигаю я указатели, я не использую utf-8. Я возмущаюсь, что С++ не поддерживает работу со строками, а мне отвечают, что мол и не нужно в С++ со строками работать -- с кучей байт работать зашибись, идеально. И я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов, а со строками он не работает? Вот это и называется закат развития и уход в маразм. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav модули логики Логика: строки, математика, работа с файлами, сетью и периферийным оборудованием. Ничего необычного. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов, а со строками он не работает? Вот это и называется закат развития и уход в маразм. А не java или шарп. Заметь. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Какой сегодня мотиватор - использовать 8 битные кодировки? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Z axis petrav Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum... std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++. "typedef unsigned char byte" тоже в файловый поток нормально не выводится. Это гемор и проблема при написании шаблонов. По сути в С++ нельзя распечатать восьмибитное значение - по нормальному. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух русские буквы же в ASCii есть по одному байту В TeXBook-е есть замечательная цитата в одной из глав, которая заканчивается, примерно, так: "... необходимость использования более 128 символов в общецелевых приложениях всё ещё неочевидна". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Какой сегодня мотиватор - использовать 8 битные кодировки? Простота, прямая индексация, унаследованный код, сложность переписывания на uft8. Я не знаю статического анализатора который выявлял бы то что нужно переделать. Вот скажите, плиз, где в библиотеке utf8cpp функция toupper()? Может не там ищу? Только не говорите мне, что размер в байтах может измениться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:00 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav В чём я не прав? Собственно именно составные символы гробят на корню простую и удобную идею "строка это массив (хрен с вами - много)байтовых символов". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, авторИ я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов Начнем с того, что там один тип - basic_string. А этот твой std::string - это лишь basic_string<char>. Как ты уже догадался, std::wstring - это basic_string<wchar> автора со строками он не работает? Работает. С любыми строками, где символ фиксированной длинны, о чём я тебе и сказал в начале треда. С utf8 не работает, потому что utf8 - говно с непостоянным размером символа и любые операции с этими строками подразумевают всякие извращения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Какой сегодня мотиватор - использовать 8 битные кодировки? Собственно, utf8 - единственный вариант, позволяющий (при минимальных ограничениях) работать с юникодом из кондового C API. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster utf8 юникод - говно с непостоянным размером символа и любые операции с этими строками подразумевают всякие извращения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, авторИ я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов Начнем с того, что там один тип - basic_string. А этот твой std::string - это лишь basic_string<char>. Как ты уже догадался, std::wstring - это basic_string<wchar> Нет. basic_string - это шаблонный тип. А basic_string<char> и basic_string<wchar> - это в С++ разные типы. Что насчёт basic_string_view и char*? Только по делу, без словоблудия и софистики. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Там в qt есть чуть ли не маленькая галактика, если ты так не хочешь тащить utfcpp. Не нравится тащи вон, boost. Это промышленная либа, которую поддерживают серьёзные люди, всё как тебе нравится. boost - это скорее лаборатория и клуб профессиональных программистов. Эти программисты в рамках boost делают следующие вещи: - Меняют программные интерфейсы своих библиотек до состояния несовместимости. - Бросают сопровождение своих библиотек. Надоело. - Разрабатывают велосипеды к своим же библиотекам. - И, конечно, при развитии С++ некоторые их вещи устаревают. И всё это я видел сам! Я использую boost, но крайне осторожно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Нет. basic_string - это шаблонный тип Вот именно. То есть один и тот же string с одними и теми же методами, только размеры char'а другие. basic_string_view Тоже самое, только с защитой от изменений. char* Это указатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И всё это я видел сам! Я использую boost, но крайне осторожно. Может библеотекобоязнь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:27 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, Вот именно. То есть один и тот же string с одними и теми же методами, только размеры char'а другие. Тоже самое, только с защитой от изменений. Это указатель. Просил же по делу, по смыслу. Нет, очевидные вещи получил в ответ. Но сути они не меняют. Всё это разные восемь строковых типов. А ещё два типа забыл: char[] и wchar_t[]. И того 10-ть (десять) строковых типов в С++. Но со строками С++ не работает, только с кучей байт работает, как мне сказали выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, А зачем тебе вообще нужен std::byte? И почему ты не используешь cstdint в таком случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, А зачем тебе вообще нужен std::byte? И почему ты не используешь cstdint в таком случае? Мне он нужен как восьмибитное беззнаковое число. cstdint использую. Но std::uint8_t - это не тип, это синоним (typedef) к unsigned char. И в поток он выводится как символ, а мне нужно число. Без дополнительных преобразований и специализаций шаблонов. Еще мне нужен знаковый восьмибитный *тип*, а не синоним! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Путь в изоляционизм по прежнему актуален? Говорить о кодировках без локализации - невозможно. Давайте поговорим не о задаче - максимум. А о некотором минимуме ( например - поддержка кириллицы и 3х европейских языков в приложении). И я думаю эту задачу мы решим. Функции изменения регистра - не сложные но объёмистые. Грубо говоря это набор таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Путь в изоляционизм по прежнему актуален? Говорить о кодировках без локализации - невозможно. Давайте поговорим не о задаче - максимум. А о некотором минимуме ( например - поддержка кириллицы и 3х европейских языков в приложении). И я думаю эту задачу мы решим. Тогда я думаю идеальным будут utf-16 строки: std::wstring и QString. Про суррагатные пары мы забудем. :) Есть, конечно, с wchar_t проблемы, он в Linux четыре байта (нет суррагатных пар?), а в Андроид, вроде бы, один байт. Но и про Андроид забудем, там же Ява рулит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravТогда я думаю идеальным будут utf-16 строки: std::wstring и QString. Во-первых, когда говоришь "идеальным" - всегда уточняй для чего именно. Во-вторых, нет, не будут. Именно из-за платформенных различий. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravТогда я думаю идеальным будут utf-16 строки: std::wstring и QString. Во-первых, когда говоришь "идеальным" - всегда уточняй для чего именно. Во-вторых, нет, не будут. Именно из-за платформенных различий. Для разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед записью. Что ещё? Ну и какой твой вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravДля разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед записью. Что ещё? Простой вопрос: выбранное тобой Qt способно принимать wstring на вход виджетов? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravДля разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед записью. Что ещё? Простой вопрос: выбранное тобой Qt способно принимать wstring на вход виджетов? Нет, конечно. Но написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их вызывать - это меньше одного процента работы. Плюс гарантия отсутствия ошибок (забыл вызвать функцию преобразования). Тему написания логики на Qt - мы уже обсудили. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravНо написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их вызывать - это меньше одного процента работы. И заодно - просадка быстродействия или задирание системных требований до небес. Офисному ПО отзывчивость интерфейса важна не меньше, чем какой-нибудь стрелялке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Тему написания логики на Qt - мы уже обсудили. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:37 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Что нам помешает писать с этими строками кроссплатформенное ПО? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav это меньше одного процента работы Ты наверно разницу не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravНо написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их вызывать - это меньше одного процента работы. И заодно - просадка быстродействия или задирание системных требований до небес. Офисному ПО отзывчивость интерфейса важна не меньше, чем какой-нибудь стрелялке. Какие требования до небес? Ты о чём? Посмотри сколько сейчас текста на твоём экране, пару килобайт - это максимум. Если из-за преобразования wstring -> QString у тебя ПО начинает тормозить, значит оно спроектировано неправильно. Я уж не говорю, что на твоём экране 99% времени занимает отрисовка графики и всё равно это ноль %% от процессора (графические редакторы не учитываем). Даже когда ты мышкой двигаешь, то постоянная генерация событий занимает на порядки больше времени чем это преобразование. Или ты сидишь за компом времён MS DOS? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:43 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav это меньше одного процента работы Ты наверно разницу не понял. Это ты не понял. Qt - это развитая либа где есть: GUI, сеть, файловая система, поддержка многопоточности, поддержка сети. Ты можешь пользоваться только частью этого функционала. Согласно проектному решению. Платформы это: операционные системы, процессоры, архитектуры вычислительных систем и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC SharpQt это ПЛАТФОРМА а не ГУИ либа. Ну, изначально это таки библиотека виджетов, причём специфическая, для телефонов. Всё остальное к ней прикрутили уже из-за безысходности, в результате сноуболла. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спринг в java было так же. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:50 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Тему написания логики на Qt - мы уже обсудили. :) Что за вопрос? std::iostream (и прочее) не слышал что ли? Ну а про FILE* слышал? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ты можешь пользоваться только частью этого функционала. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ну а про FILE* слышал? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PetroNotC SharpQt это ПЛАТФОРМА а не ГУИ либа. Ну, изначально это таки библиотека виджетов, причём специфическая, для телефонов. Всё остальное к ней прикрутили уже из-за безысходности, в результате сноуболла. Изначально Qt - это как раз библиотека GUI под дескторы. Нокия их потом купила. Но на мобильном рынке у них не срослось, у Qt. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Ну а про FILE* слышал? Что написать? Как с файлами работать в С++? Что там за вопрос то был? Я забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Изначально ПостФактум она хорошо делает кроссплатформенность. Это же не гуи. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:56 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav забыл Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC SharpПостФактум она хорошо делает кроссплатформенность. Это же не гуи. Да. К сожалению, в ней есть и ГУИ, которое её и портит своей кривизной. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Изначально ПостФактум она хорошо делает кроссплатформенность. Это же не гуи. Это у тебя абсолютно бессмысленный набор слов. PetroNotC Sharp petrav забыл Код: plaintext 1. 2. 3. 4.
Ты хочешь что бы я переписал это на библиотеку I/O С++? Это полность тривиальный код, который легко пишется и на Си (кроме исключений) и на С++. К тому же он использует класс, которого нет в Qt. И Qt не работает с исключениями, там нет библиотеки типов исключений. Если ты ноль в С++ я сделаю это, но за деньги. Если бы ты был толковым студентом, то при желании я помог бы тебе бесплатно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Путь в изоляционизм по прежнему актуален? Говорить о кодировках без локализации - невозможно. Давайте поговорим не о задаче - максимум. А о некотором минимуме ( например - поддержка кириллицы и 3х европейских языков в приложении). И я думаю эту задачу мы решим. Тогда я думаю идеальным будут utf-16 строки: std::wstring и QString. Про суррагатные пары мы забудем. :) Есть, конечно, с wchar_t проблемы, он в Linux четыре байта (нет суррагатных пар?), а в Андроид, вроде бы, один байт. Но и про Андроид забудем, там же Ява рулит. Мне кажется надо сильнее смотреть в будущее. Память хотя и дешевеет но все-же не настолько чтобы embed dbms и кеши укладывались в оперативу без eviction. Везде где можно сэкономить балансируя нагрузку CPU <=> Memory как некий эвристический регулятор - надо этим воспользоваться. Для OpenJDK - это уже прошлое. Разработчики отказались от повсеместного хранения UTF-16 где-то с Java-9. Они сделали просто 2 варианта использования одной и той-же строки. С физических хранением Latin1 и Utf-8 для национальных кодировок. Прикладной API при этом не изменился. Тоесть на совместимость это не влияет. По поводу массивов. Что означает это наше жёсткое непреклонное желание иметь строку массивом символов. Я где-то уже рассуждал на эту тему и пришел к выводу что строка это вообще не array<char> а это stram<char>. И есть интеллектуальный итератор который спокойно эту строку обходит. Те редкие кейсы в которых вам внезапно (!) захотелось получить индексный доступ ко 2 или 3 или N-му элементу строки я готов с вами здесь и сейчас рассмотреть. И убежден что такого кейса на самом деле не существует. Особено в разрезе Dbms/Caches/BigData. Я готов его рассмотреть и я убежден что мы пересмотрим своё отношение к индексатору строку и уберём его как рудимент. В конце концов - stream - экономнее и лаконичнее. Если ваша предметная область разработки связана просто с машинками с ограниченными ресурсами (микроконтроллеры - то здесь я - пас). Я не специалист в них и смыслы и мотивации их оптимизаций мне зачастую непонятны. Как будут и непонятны большинству читающих этот форум. Т.к. программирование под bare-metal железки это сегмент очень редкий и здесь почти не представленый. Sql.ru - ресурс посвященный именно клиент-серверным технологиям в общем понимании этого слова. Вот както так. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Что означает это наше жёсткое непреклонное желание иметь строку массивом символов. Я где-то уже рассуждал на эту тему и пришел к выводу что строка это вообще не array<char> а это stram<char>. И есть интеллектуальный итератор который спокойно эту строку обходит. Те редкие кейсы в которых вам внезапно (!) захотелось получить индексный доступ ко 2 или 3 или N-му элементу строки я готов с вами здесь и сейчас рассмотреть. И убежден что такого кейса на самом деле не существует. Особено в разрезе Dbms/Caches/BigData. Я готов его рассмотреть и я убежден что мы пересмотрим своё отношение к индексатору строку и уберём его как рудимент. В конце концов - stream - экономнее и лаконичнее. C++ универсальный язык программирования, а не только Dbms/Caches/BigData. Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case. Сколько языков и стран вы хотите поддержать в uppercase? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case. Сколько языков и стран вы хотите поддержать в uppercase? Интересный вопрос. Вообще по работе мне нужен английский и русский. Просто мне говорили, что local8bit не рулит. Вот я и спрашиваю, как же перейти на utf8. Мне говорят, мол С++ не работает со строками, а есть супер библиотеки, которые не бросят в сопровождении. Ну вот я и задаю вопросы. Понятно, что если для иероглифа uppercase бессмысленнен, то для этих символов он ничего не должен делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Хорошо. Пускай будет русский и английский. По сабжу. Я не работал с utf8cpp и понятия не имею о ее возможностях. Но в соотв с принципами декомпозиции. Если мы реализуем такую функцию для 1 символа Код: plaintext 1. 2. 3. 4. 5. 6. 7.
- то мы фактически решили задачу. Нам остаётся только итератор и билдер которые должны быть встроены в любую библиотеку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:50 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav . К тому же он использует класс, которого нет в Qt. И Qt не работает с исключениями, там нет библиотеки типов исключений. Если ты ноль в С++ я сделаю это, но за деньги. Если ты ноль в Qt то информирую тебя бесплатно. \include\QtCore\QException.h Продолжай выпячивать безграмотность. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Пр примерам посмотрел. Расчет длины у них есть через итартор. http://utfcpp.sourceforge.net/ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav C++ универсальный язык программирования, а не только Dbms/Caches/BigData. Спутал с высокоуровневым https://ru.m.wikipedia.org/wiki/Высокоуровневый_язык_программирования ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Сколько языков и стран вы хотите поддержать в uppercase? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav . К тому же он использует класс, которого нет в Qt. И Qt не работает с исключениями, там нет библиотеки типов исключений. Если ты ноль в С++ я сделаю это, но за деньги. Если ты ноль в Qt то информирую тебя бесплатно. \include\QtCore\QException.h Продолжай выпячивать безграмотность. Начинается... Exception Safety . Цитата: авторPreliminary warning: Exception safety is not feature complete! Common cases should work, but classes might still leak or even crash. Qt itself will not throw exceptions. Instead, error codes are used. In addition, some classes have user visible error messages И далее? Документация на Qt 5.13. То что они что-то там экспериментально прикрутили, то может я пропустил. Почему я вообще тебе отвечаю? С твоими понтами и вопросами такого уровня? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav экспериментально прикрутили Ты пропустил, так как не любишь библиотек. Некогда тебе. petrav Почему я вообще тебе отвечаю? Не отвечай. Делов то. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:04 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Пр примерам посмотрел. Расчет длины у них есть через итартор. Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav экспериментально прикрутили Ты пропустил, так как не любишь библиотек. Некогда тебе. Ещё раз. Они никогда не любили исключения. И сейчас пишут о том, что Qt не завершило в своей истории разработку безопасности по исключениям. Если бы это стало полноценным - я бы узнал. Потому что Qt я использую достаточно активно, каждый день. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Пр примерам посмотрел. Расчет длины у них есть через итартор. Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat. Uppercase будет точно такой же. Функция перевернется. Ну concat - самый простой. Его complexity кстати будет алгоритмически одинакой для однобайтных кодировок и префиксных кодов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ещё раз. Еще раз. Исключения работают у меня в проекте. Пока ты пишешь велоспед, я с нуля как джун написал проект и уже сдал в продакшен. А ты пиши, итератор по строкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Ещё раз. Еще раз. Исключения работают у меня в проекте. Пока ты пишешь велоспед, я с нуля как джун написал проект и уже сдал в продакшен. А ты пиши, итератор по строкам. У меня тоже в проекте работают исключения. :) Какой джун? Какой ты проект с нуля там написал? Что это за бред вообще? Я не пишу никаких велосипедов и итераторов по строкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat. Uppercase будет точно такой же. Функция перевернется. Ну concat - самый простой. Его complexity кстати будет алгоритмически одинакой для однобайтных кодировок и префиксных кодов. Ну... Я понимаю, Вы не спец в utf8cpp, ну т.е. не пользовались. Но тем не менее uppercase, replace... хотелось бы увидеть от сообщества. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:26 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav У меня тоже в проекте работают исключения ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Но тем не менее uppercase, replace... хотелось бы увидеть от сообщества. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
maytonПускай будет русский и английский. А потом к ним внезапно добавится немецкий и начнётся веселуха с "SS". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav У меня тоже в проекте работают исключения Что такое "самописные исключения"? Поясни свою мысль. Исключения у меня наследники от классов библиотеки <stdexcept>. Если, например, не хватает std::logic_error. Или как его там. Где я писал replace через for? Ты о чём вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Что такое "самописные исключения"? Поясни свою мысль. А там все поменялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Делай лучше свой гуй на электроне. Там строки в юикоде, не надо делать шаблоны и байтодрочить. Есть uppercase, concat и replace искаробки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster байтодрочить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Что такое "самописные исключения"? Поясни свою мысль. А там все поменялось. При переходе с Qt3 на Qt4 (а не Qt5) действительно поменялись многие API самого Qt. Что там дописывать самому, я же привёл тебе цитату: Qt itself will not throw exceptions. А вся логика у меня работает на C++/STL. И там исключений хватает уж поверь. А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:47 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный? Qt 5.12.2 на винде и 5.11 на линуксе. Скачай и посмотри. Прежде чем качать я тут на ветке спрашивал где они у сишников))). Ты где был? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный? Qt 5.12.2 на винде и 5.11 на линуксе. Скачай и посмотри. Прежде чем качать я тут на ветке спрашивал где они у сишников))). Ты где был? Ну у меня тоже Qt в районе 5.10. И там такого класса нет. Т.е. у тебя самописный класс исключений. Вот я не помню, какое исключение генерирует библиотека I/O C++. По умолчанию она их не генерирует, но можно настроить на генерацию исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav тебя самописный класс исключений qt-opensource-windows-x86-5.12.2.exe Прислать что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav тебя самописный класс исключений qt-opensource-windows-x86-5.12.2.exe Прислать что ли? Пришли ссылку на официальную документации Qt на класс FileErrorException. Прямо здесь. Ведь это же объект этого класса пробрасывается в твоём исходном коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Еще update. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Я помню о том что господин Сидоров упрекал нас в небрежности по отношению к комбинациям символов с диакритикой. Я не забыл об этом. Я ставлю стикер TODO на будущее чтобы не забыть доработать этот функционал. Пока мы сделаем "дешево и сердито". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav тебя самописный класс исключений qt-opensource-windows-x86-5.12.2.exe Прислать что ли? Кстати, я таки не поленился и нашёл то что ты просил. И обрати внимание никаких самописных классов исключений: std::ios::exceptions ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav FileErrorException Регистрируются кастомные исключения в проекте. https://doc.qt.io/qt-5/qexception.html ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav А) из коробки пока исключения устраивают. Б) метод выше надо тестировать на винде и линукс. Будет проект, посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav FileErrorException Регистрируются кастомные исключения в проекте. https://doc.qt.io/qt-5/qexception.html Ну вот видишь... Значит ты зачётный велосипедист. А в моём примере классы исключений стандартные. И что за фраза такая "Регистрируются кастомные исключения в проекте"? Ты понимаешь, что так формулируя свою мысль ты выдаёшь себя как не очень в С++? Так люди не говорят в мире С++. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:37 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav А в моём примере классы исключений стандартные. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav ты выдаёшь себя как не очень в С++ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav А) из коробки пока исключения устраивают. Б) метод выше надо тестировать на винде и линукс. Будет проект, посмотрю. Протестируй, дело полезное. Под MSVC у меня работает. Есть там один нюанс. Я процитирую что не запостил: PetroNotC Sharp petrav забыл Код: plaintext 1. 2. 3. 4.
Хотя есть в этом коде один нюанс. Если предположить, что errorString() вернёт какое-то осмысленное и локализованное сообщение об ошибке... Типа: нет прав на открытие файла, файл открыт в другом приложении, файл отсутствует, сбой файловой системы, неправильный формат пути к файлу и все прочие варианты в зависимости от ОС и текущего языка. То, да... Это было бы интересно. Библиотека В/В в С++ тут вернёт тривиальный строковый комментарий. Но файловый В/В в Qt не тестировал. Но это не повод делать логику зависимой от Qt. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav То, да... Это было бы интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:44 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Там осмысленное. Локализация мне не нужна была. Не проверял. Может зависит от локали, может нет. Не знаю. Текст что файл занят другим процессом. Юзверь сообразит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav А в моём примере классы исключений стандартные. Ну ты какие примеры заказываешь - так я и отвечаю. Пока ты спрашивал на уровне первого класса - я так и ответил. Как задашь вопрос уровня 10-го класса - я и на него постараюсь ответить, если будет мне не лень. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav PetroNotC Sharp пропущено... это первый класс вторая четверть. Во второй класс не пробовал? Ну ты какие примеры заказываешь - так я и отвечаю. Пока ты спрашивал на уровне первого класса - я так и ответил. Как задашь вопрос уровня 10-го класса - я и на него постараюсь ответить, если будет мне не лень. В плюсах нет пользовательских исключений? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav пропущено... Ну ты какие примеры заказываешь - так я и отвечаю. Пока ты спрашивал на уровне первого класса - я так и ответил. Как задашь вопрос уровня 10-го класса - я и на него постараюсь ответить, если будет мне не лень. В плюсах нет пользовательских исключений? В смысле? Это тонкий нюанс и различие: я пишу на С++ или я пишу на Qt. Нужно понимать контекст разговора, иначе фраза будет понята неправильно. Ведь Qt на написан С++. Конечно, программируя на чистом С++ можно написать пользовательский класс исключения и унаследовать его от стандартного std::exception. А можно свой класс исключений и не наследовать от стандартного класса исключений. А можно пробросить любой стандартный тип или своё перечисление. Всё можно. И Qt написан обычными людьми - и написан он на С++, а не на Qt. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 18:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Ну вот видишь. Ты все понимаешь. Продолжай изучать 5 строк выше на Qt > = 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 18:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Ну вот видишь. Ты все понимаешь. Продолжай изучать 5 строк выше на Qt > = 5. Мда... Тебе сколько лет и какой стаж программирования на С++? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 18:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, мы уклонились от темы кодировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 18:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav, мы уклонились от темы кодировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 18:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Маппинг для upper-lower кириллицы в utf-8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:05 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Для латиницы всё проще. Она отображается 1:1 для младшего байта. Поэтому стандартные функции работать тоже будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Для стран центральной Европы которым нужны диакритические знаки (Windows-1250) https://en.wikipedia.org/wiki/Windows-1250 Я смотрю что можно взять эту табличку 1250 и для диакритических символов просто прибавить или вычесть 32 и можно получить такие-же маппинги для utf-8. Ну по крайней мере программно их создать как я сделал для кириллицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
В качестве модульного теста. Можно взять начало Войны и Мир Толстого. Пару абзацев. И если данный текст -- Еh bien, mon prince. Gênes et Lucques ne sont plus que des apanages, des поместья, de la famille Buonaparte. Non, je vous préviens, que si vous ne me dites pas, que nous avons la guerre, si vous vous permettez encore de pallier toutes les infamies, toutes les atrocités de cet Antichrist (ma parole, j'y crois) -- je ne vous connais plus, vous n'êtes plus mon ami, vous n'êtes plus мой верный раб, comme vous dites. [1] Ну, здравствуйте, здравствуйте. Je vois que je vous fais peur, [2] садитесь и рассказывайте. Так говорила в июле 1805 года известная Анна Павловна Шерер, фрейлина и приближенная императрицы Марии Феодоровны, встречая важного и чиновного князя Василия, первого приехавшего на ее вечер. Анна Павловна кашляла несколько дней, у нее был грипп, как она говорила (грипп был тогда новое слово, употреблявшееся только редкими). В записочках, разосланных утром с красным лакеем, было написано без различия во всех: "Si vous n'avez rien de mieux à faire, M. le comte (или mon prince), et si la perspective de passer la soirée chez une pauvre malade ne vous effraye pas trop, je serai charmée de vous voir chez moi entre 7 et 10 heures. Annette Scherer".[3] Нормально пройдет через функцию. Не рухнет utf-8 валидация и upper/down case отработает то 99% всё мы сделали верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Ага, ага, проделай это для "ß" и мы посмеёмся. Немцам оказалось проще сменить правила языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ага, ага, проделай это для "ß" и мы посмеёмся. Немцам оказалось проще сменить правила языка. А что для ß ? Не существует верхнего или нижнего кейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
maytonНе существует верхнего или нижнего кейса? В классическом немецком языке верхний кейс для этой буквы существует. И это - уже упомянутая "SS". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonНе существует верхнего или нижнего кейса? В классическом немецком языке верхний кейс для этой буквы существует. И это - уже упомянутая "SS". Что мешает ту букву заменить на две ss? Конечно, не в одном char, ведь у нас многобайтовые строки. Вот обратно, да проблема. Если ss не всегда означает ту букву в верхнем регистре. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravЧто мешает ту букву заменить на две ss? Одна мелочь: я не совсем прав. Точнее память меня подводит порой. При приведении к апперу в SS она превращается только если целью такого приведения является алфавитная сортировка результата. Во всех остальных случаях она в последнее десятилетие приводится к "U+1E9E LATIN CAPITAL LETTER SHARP S". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:37 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Маппинг для upper-lower кириллицы в utf-8. Да, хардкорно так, по си плюс-плюсному... Я не знаю мне задавать вопросы? Не, я лучше промолчу многозначительно. Потому что так не может быть, тут что-то другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonНе существует верхнего или нижнего кейса? В классическом немецком языке верхний кейс для этой буквы существует. И это - уже упомянутая "SS". Заказчиком данного топика выступает petrav. И он будет оценивать критерии качества upper/down case. Беря во внимание что в мире существует 250 стран и в каждой из них по 1.5-2 языка. И существуют страны которые распадаются и объединяются в данный момент - мы не сможем определить финальный релиз этой функции никогда. Мы можем просто подойти к некому критерию достаточности который будет подходящим для petrav. А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
maytonА вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. Не-не, я лучше не буду соваться. А то я тут почитал википедию об этой букве и выяснил новость, что в 2017-м году немцы таки завершили свои споры и признали аппер-форму этой буквы. Правда, там не говорится что они решили с её алфавитным порядком. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Пускай это станет проблемой немцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 19:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Dimitry Sibiryakov пропущено... В классическом немецком языке верхний кейс для этой буквы существует. И это - уже упомянутая "SS". Заказчиком данного топика выступает petrav. И он будет оценивать критерии качества upper/down case. Беря во внимание что в мире существует 250 стран и в каждой из них по 1.5-2 языка. И существуют страны которые распадаются и объединяются в данный момент - мы не сможем определить финальный релиз этой функции никогда. Мы можем просто подойти к некому критерию достаточности который будет подходящим для petrav. А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. Тут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Причём как в стиле C++ (string), так и в стиле Си (char[]). Учитывать что на каком-то условно испанском такая-то буква апперкейсица по разному в существительных и прилагательных, конечно, нам не нужно. Пока что я вижу какой-то ужас. Во всех смыслах. Ваши таблицы... uppercase... Но, я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы семейство printf будет работать правильно, это уже плюс. А вот всякие std::regex... ну... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:04 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravТут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Видишь ли в чём засада... Офисному софту обычно не надо выполнять эти манипуляции от слова "совсем". petrav я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы семейство printf будет работать правильно Вынужден тебя огорчить, оно тоже глючит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:08 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Таблицы - это просто концепт. Как вы сделаете функцию внутри - это ваше дело. Если вам повезло и коды символов имеют арифметический порядок как в Ascii - то делайте арифметические операции. По сути вопрос - преобразовывать utf-8=>UTF-16=>utf-8 это может быть вопрос дизайна ВАШЕГО приложения а не библиотеки utf-cpp. Вы сами решаете надо ли вам промежуточное представление в стандарте или вы просто делаете ETL процедуру которая мигрирует пета-байты информации от одной базы к другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Кстати я категорический противник такой метафоры что внутри std::string у нас лежит codepage-hell. Я вижу в этом нарушение типизации и очень сложные ошибки runtime. В OpenJDK они решили эту проблему по другому. Они просто не светят наружу байтовое представление строки никогда. java.lang.String валиден всегда и не требует дополнительной проверки на utf-8 validate. Он просто отдает интерфейс генерализованной строки которая выглядит как utf-16 cкоклько на нее не смотри. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravТут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Видишь ли в чём засада... Офисному софту обычно не надо выполнять эти манипуляции от слова "совсем". Ну у всех своя специфика. Мне нужно. Ну ничего я с этим поделать не могу. Dimitry Sibiryakov petrav я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы семейство printf будет работать правильно Вынужден тебя огорчить, оно тоже глючит. Ну я так понял, что у всех многобайтовых символов во всех байтах включён старший бит. А все управляющие символы (типа %) они ASCII и старший бит у них выключен (не больше 127). Т.е. там есть шанс на корректную работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:13 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ну я так понял, что у всех многобайтовых символов во всех байтах включён старший бит. А все управляющие символы (типа %) они ASCII и старший бит у них выключен (не больше 127). Т.е. там есть шанс на корректную работу. Да это похоже на идею префиксного кодирования. Если ее развивать то utf-8 имеет бесконечную разрядность символа. А первая последовательность единичек первого байта по сути обозначает класс октетов. Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:20 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonПускай будет русский и английский. А потом к ним внезапно добавится немецкий и начнётся веселуха с "SS". хотелось бы подвести какой-то итог... распечатать немецкий SS и прочую кириллицу позволяет простой string а вот чего он НЕ позволяет, так это ровный .substr, .rfind и т.п. также и regex (boost::regex) не может отобразить букву правильно внутри string, например так: [б]уква он покажет только пол-буквы... НО! если перевести временно string -> wstring, то все эти операции пройдут корректно... так годится ли такой вариант, когда всю дорогу юзаем string, а в отдельных ( редких ) случаях переводим в wstring и обратно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. ну во1, надо на if-ах там разница раза в 3 обычно во2, чем boost не устроил? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 20:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух mayton А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. ну во1, надо на if-ах там разница раза в 3 обычно во2, чем boost не устроил? По твоей ссылке, подскажи плиз, какие требования предъявляются к WritableRangeT? Это нечто имеющее begin(), end()... и что-то ещё? Каким способом он будет раздвигать или сжимать строку при необходимости? Допустим у меня есть код на Си, унаследованный или с повышенными требованиями к производительности. Вот что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:05 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух mayton А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes. ну во1, надо на if-ах там разница раза в 3 обычно во2, чем boost не устроил? По поводу boost - это не ко мне вопрос. Возможно автор не имеет возможности его использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Каким способом он будет раздвигать или сжимать строку при необходимости? так ли это важно? Главное, чтобы работало, не глючило и не тормозило. petrav Допустим у меня есть код на Си, унаследованный или с повышенными требованиями к производительности. Вот что делать? Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
конкатенацию, кстати, лучше всего делать через str += str2.append(str3).append(str4) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
+= и .append() это одна ф-я ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton полудух По поводу boost - это не ко мне вопрос. Возможно автор не имеет возможности его использовать. Чем меня бесит boost тем что можно неделю читать по вечерам документацию на какую-то из его библиотек, а потом выяснить, что простейшую вещь сделать нельзя. Вот смотрим. Нам дали ссылку на библиотеку Boost.StringAlgo. Смотрим пример кода: Код: plaintext 1. 2. 3. 4.
Ищем класс iterator_range. И находим его в библиотеке Range 2.0 . Вот сейчас выяснится что единственное требование к шаблонному параметру класса iterator_range<> -- это operator++(). Т.е. ничего про utf-8 он знать не может когда его шаблонный параметр char*. И про размеры буфера тоже он ничего не знает - хотя мог бы, ему же подставили массив известного размера. Или выяснится что это всё агрессивно работает с динамической памятью, а через год они поменяют интерфейс этой библиотеки. Или вообще она станет deprecated. А ведь задача то простейшая: Код: plaintext 1.
Или как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Ну не нравится boost возьми это https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/ustring_8h.html#a14740e3b734ffa82205d4762fcacb5e1 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Там тоже нет универальной локали. Там только для 1 варианта. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Кстати! Обратите внимание, что библиотека называет Boost Range 2.0 -- это означает, что библиотеку Range 1.0 они уже похерили. И это нормально для них, завтра ты будешь переписывать свой код потому что выйдет Range 3.0. А может им просто надоест эта библиотека и ты останешься один с её глюками. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 21:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Мы куда-то не туда свернули. Топик начался с кодировок исходников. Закончили обсуждением бустов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Код: plaintext 1.
есть же string::rfind(): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
как раз это - основная причина того, что на библиотеку забивают когда в std вышел вариант лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:20 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух как раз это - основная причина того, что на библиотеку забивают когда в std вышел вариант лучше Там смысл примера из Boost.StringAlgo в том, что потенциально там всё без обращения к динамической памяти. Пора завязывать обсуждение Бустов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
юзай string_view и тоже будет без аллокаций boost прекрасен, его можно бесконечно обсуждать... вот тестил boost::format (аналог sprintf()), потому что как поменять много всего в строке utf8 ? sprintf() - супер ф-я на все времена, но ей char подавай ( и вот boost::format... заявлен, как аналоХ printf()... пошёл тестить строку с 15ю заменами (в цикле конечно): sprintf() = 220ms boost::format = 1044ms Обаный стыд а ещё выгребаем геморрой с заменой boost::basic_format<char> на string, потому что конкатенацию хочецца апосля сделать... но static_cast про него, например, знать не знает... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Что там у вас? Свой шаблонизатор? Я думаю обычный билдер строки сработает еще раз в 10 быстрее. А функция (s)printf всегда почему-то висела в топе небезопасных функций по версии всех security отчотов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А функция (s)printf всегда почему-то висела в топе небезопасных функций потому что stack overflow - самая частая атака на все времена Код: plaintext 1. 2. 3. 4. 5. 6. 7.
ты на строковые потоки чтоли всё намекаешь? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 23:00 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Что там у вас? Свой шаблонизатор? Я думаю обычный билдер строки сработает еще раз в 10 быстрее. А функция (s)printf всегда почему-то висела в топе небезопасных функций по версии всех security отчотов. boost.format -- замена sprintf. Замена безопасная по следующим аспектам: - Размер буфера. - Типы данных. - Корректность формата. - Соответствие формата и передаваемых параметров. Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 23:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
ты на строковые потоки чтоли всё намекаешь? Нет я не имею в виду потоки. Просто движки шаблонов делают не просто замены в тексте. А обычно формируют некую логику билдера. Возможно используют циклы внутри (таблица внутри отчота) наподобие Apache Velocity. И обладают некой логикой языка выражений (expression language). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 23:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы. Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича. Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 23:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы. Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича. Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим. Нет, он не заменяет слова. Там примерно так: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 00:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Ну попробуйте здесь вместо "String" подставить кириллицу и французский. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 00:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton ты на строковые потоки чтоли всё намекаешь? Нет я не имею в виду потоки. Просто движки шаблонов делают не просто замены в тексте. А обычно формируют некую логику билдера. Возможно используют циклы внутри (таблица внутри отчота) наподобие Apache Velocity. И обладают некой логикой языка выражений (expression language). template<> ? и как это будет выглядеть? зы: stringstream, кстати, показывает 280 vs 220 у sprintf(), что вполне приемлемо, учитывая, что не надо на char переключаться ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 00:43 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton пропущено... Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича. Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим. Нет, он не заменяет слова. Там примерно так: Код: plaintext 1.
Всегда хотел спросить. Зачем вы всегда пишете явный namespace? Ведь язык позволяет вам его пропускать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 01:05 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух mayton пропущено... Нет я не имею в виду потоки. Просто движки шаблонов делают не просто замены в тексте. А обычно формируют некую логику билдера. Возможно используют циклы внутри (таблица внутри отчота) наподобие Apache Velocity. И обладают некой логикой языка выражений (expression language). template<> ? и как это будет выглядеть? зы: stringstream, кстати, показывает 280 vs 220 у sprintf(), что вполне приемлемо, учитывая, что не надо на char переключаться Ладно забудем эту тему. Я просто в шаблонизаторы вкладываю другой смысл. Не языковый а скорее библиотечный или фреймворковый. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 01:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Z axis пропущено... А что в этом не так? std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++. По сути в С++ нельзя распечатать восьмибитное значение - по нормальному.Ну всё, разгоняем WG21 и закрываем проект "C++". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 05:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Всегда хотел спросить. Зачем вы всегда пишете явный namespace? Ведь язык позволяет вам его пропускать. из-за коллизий https://www.quora.com/Why-do-many-people-use-std-cout-instead-of-just-using-using-namespace-std-in-the-beginning лично я юзаю "using namespace std;" внутри главного неймспейса ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 05:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Тут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Причём как в стиле C++ (string), так и в стиле Си (char[]). Учитывать что на каком-то условно испанском такая-то буква апперкейсица по разному в существительных и прилагательных, конечно, нам не нужно. Пока что я вижу какой-то ужас. Во всех смыслах. Но это не "простейшие" манипуляции, как выясняется. Даже простое склеивание строк - это уже какая-то работа с памятью, во время которой происходит много чего. Под капот ничего не прячут, потому что плюсовики люди серьёзные и их трясёт от того, что у них в стоках половина байт - нули, структуры не выровнены, и всё хранится так, что процессор постоянно не попадает в кэш. А ты тут со своими формочками на кутэ. Ваши таблицы... uppercase... Пиши на javascript. Там есть uppercase, concat, replace, indexOf и любая подобная херня. Все строки прохешированны, хранятся в куче, тебе не надо будет сравнивать что-то побайтово да и вообще греть голову. Возьми вон duktape или quickjs, да пристрой их к этому своему куте. Ну или луа пристрой, если считаешь жс слишком закшварным. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 05:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
uppercase даже CSS умеет (text-transform) mayton Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича. Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим. чё-то вспомнилось: ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 05:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Пиши на javascript. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Пиши на javascript. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Упс. Глюки с утра) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Пиши на javascript. Там есть uppercase, concat, replace, indexOf и любая подобная херня. Все строки прохешированны, хранятся в куче, тебе не надо будет сравнивать что-то побайтово да и вообще греть голову. Возьми вон duktape или quickjs, да пристрой их к этому своему куте. Ну или луа пристрой, если считаешь жс слишком закшварным. Тебе по делу есть что сказать? Если ты хочешь начать срач и модератор разрешит: через несколько постов тебе станет крайне обидно за себя. Да тебе уже обидно как и PetroNotC Sharp тоже обидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Ты тоже по спокойнее будь. Не нервничай. Публичный форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Z axis petrav пропущено... std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++. Почитал stackoverflow :) Я так понял, что std::byte в их представлении, а ещё лучше массив байтов, это некоторый обезличенный блок данных. И не символы, и не числа, а просто блок данных? Правильно? Ну... В таком прочтении, наверное, получше стало. Но восьмибитные числовые типы всё равно нужны. Раздражает их отсутствие, иногда. Или может их добавили? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Чем либа ICU не понравилась? Разве не по теме вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Тебе по делу есть что сказать? Так всё по делу. Строки в utf8 есть? Есть. concat, replace, upcase есть? Есть. Что тебе еще надо? Duktape, например, состоит всего-то из одного файла и заголовочника. Жрёт он мало. Так говоришь, как будто я посоветовал уйти из кодеров в интим услуги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Тссс. У нас одна страна - sql.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 10:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Через сутки - поудаляю оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Чем либа ICU не понравилась? Разве не по теме вопрос? Повторюсь. Дело не в том, что бы подключить ICU, или решить эту задачу через WinAPI, или через QString. Это не проблема. Тут основной вопрос в языке С++ и целях, которые ставят его проектировщики. Позиционируя С++ как универсальный язык программирования, они не удосужились реализовать работу со строками. Хотя могли бы, это не сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Позиционируя С++ как универсальный язык программирования, они не удосужились реализовать работу со строками. Что в плюсах с utf туго я не знал. Но и с ГУИ либами тоже не очень. Считайте это фичей платформы. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav это не сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Возьми, да запили, раз это не сложно. Предложи патч в стандартную либу. Странно, почему до этого момента, никто этим не занялся? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Через сутки - поудаляю оффтоп. Вы я так понимаю, большой спец в Java? Вот поясните, плиз, как эти проблемы все (с Юникодом) решены в Яве? Учитывая моменты кроссплатформенности. Только пожалуйста, попроще, без потока специфичных требований. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav они не удосужились реализовать работу со строками в каком смысле "не удосужились"? есть string, есть wstring petrav эти проблемы все (с Юникодом) какие именно проблемы остались после использования wstring ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:56 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravПозиционируя С++ как универсальный язык программирования, они не удосужились реализовать работу со строками. А можно ссылку на документ где они его так позиционируют? Работа со строками это как раз весьма специализированная задача. И для неё существуют весьма специализированные решения. Например, Perl. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Вот поясните, плиз, как эти проблемы все (с Юникодом) решены в Яве? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
в яве даже char запихнули в класс ^^ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Работа со строками это как раз весьма специализированная задача. И для неё существуют весьма специализированные решения. Например, Perl. автор Perl is itself written in C ; the perl library is the collection of compiled C programs that were used to create your perl executable (/usr/bin/perl or equivalent). https://perldoc.perl.org/perlembed.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух в яве даже char запихнули в класс ^^ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух в яве даже char запихнули в класс ^^ Character - класс-обёртка, которая ничем не лучше и не хуже других классов-обёрток. P.S. Не надо звонить обо всём, что напел Рабинович. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух какие именно проблемы остались после использования wstring ? Чуть больше половины байт - нули. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster полудух какие именно проблемы остались после использования wstring ? Чуть больше половины байт - нули. В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа: - Типичное офисное приложение типа 1С. - Типичный графический редактор. - Текстовый редактор с документом с оформлением, картинками и диаграммами. - Типичная страница лонгрид на 20 минут чтения в браузере. С картинками. - Страница ютуб в браузере. - Типичная программа математическая. - Десктопная/мобильная ОС. - Типичный медиаплеер. Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки. Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера. Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Через сутки - поудаляю оффтоп. Вы я так понимаю, большой спец в Java? Вот поясните, плиз, как эти проблемы все (с Юникодом) решены в Яве? Учитывая моменты кроссплатформенности. Только пожалуйста, попроще, без потока специфичных требований. :) Не очень понятно по каким проблемам... Наверное по toUpper? Изначально. При проектировании Java была заложена возможность хранить строки как UTF-16 (short) массивы. Это с точки зрения внутреннего (internal) способа хранения. В Java строки ВСЕГДА в Unicode. Если вы грузите данные из внешних источников которые ASCII или национальные кодировки то вы обязаны их конвертить byte[] => char[] где char тоже всегда 16 битный. Далее. Как я уже говорил. Начиная с какого-то коммита Java-9 внутренний формат стал более экономным. Latin/utf-8 Но и в Java <9.0 и начиная с девятки следующий код будет иммитировать совершенно одинаковое поведение. Тоесть интерфейс String::charAt() возвращает всегда 16 битный char. И это жосткий requirement. Код: java 1. 2.
При этом строка s1 по идее должна внутри выделять utf-8 массив символов а вторая строка - ascii. Тоесть форматы хранения и представления - разные. Существуют быстрые (по времени) конструкторы которые конструируют строку из char[]. Этим пользуются библиотеки билдеров StringBuilder для быстрых конкатенаций. Кроме того у java-строки есть другие свойства. Например она - иммутабельна. Вы не можете изменить внутри строки символы. Попытка делать replace() просто приводит к генерации нового объекта типа java.lang.String где символы уже заменены. Эти опции - кивок в сторону чистого функционального программирования без concurrency. Она (строка) также - финальна. Вы не можете унаследоваться от нее и переопределить поведение. Она инкапсулирует длину и хешкод для оптимизации алгоритмов над ней. Я попробовал фрагмент Войны и Мира на функции String::toUpper()/toLower(). Все отработало успешно для кириллицы и французского. Никаких национальных настроек я не делал. Все по дефолту. Тоесть функция toUpper скорее всего включала в себя известный сет маппингов для известных языков. Тест кейсы могу привести если интересно. Какие конкретно части стандарта Unicode инкапсулированы внутри java-string я не знаю. Но я могу поискать информацию если вам интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух petrav они не удосужились реализовать работу со строками в каком смысле "не удосужились"? есть string, есть wstring petrav эти проблемы все (с Юникодом) какие именно проблемы остались после использования wstring ? Основная проблема wstring (wchar_t) в том, что он идеологически неверен . На момент разработки предполагалось, что в два байта wchar_t поместится вся таблица Unicode. Но она не поместилась и теперь в wstring каждый отдельный символ может занимать или два, или четыре байта. Цель не была достигнута, зато успели ввести дополнительную сущность, которая не выполнила свою задачу: сделать работу с Юникодом такой же простой и эффективной как и с ASCII. Тут изобрели utf-8. Там уже символы занимают от одного до четырёх байт. Те же недостатки как и с utf-16, но зато экономим на спичках те объёмы памяти которые мы пропили на шампанском. И главное в utf-8 не вводится дополнительная сущность бессмысленная. Дальше-больше. Символ wchar_t хорошо поддерживается на уровне языка С++: и в стиле Си, и в стиле С++. Для всех европейских языков, в принципе, достаточно wchar_t. Можно воспринимать строку как массив символов. А про суррогатные пары (когда символ - это два wchar_t), можно забыть. Да, такое приложение крайне сложно будет доразвить до поддержки китайского и его диалектов. Но для всех европейских языков всё работает. Далее в дело пошли всякие линуксоиды и прочие вредители. Они начали вопить что мол у нас тут в приложении мегабайт нулей, давайте подключим библиотеку ICU, она будет занимать два мегабайта, но зато нулей не будет. И весь прочий бред. Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav crutchmaster пропущено... Чуть больше половины байт - нули. В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа: - Типичное офисное приложение типа 1С. - Типичный графический редактор. - Текстовый редактор с документом с оформлением, картинками и диаграммами. - Типичная страница лонгрид на 20 минут чтения в браузере. С картинками. - Страница ютуб в браузере. - Типичная программа математическая. - Десктопная/мобильная ОС. - Типичный медиаплеер. Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки. Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера. Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут? В типичном backend - приложении строки - самая прожорливая часть кучи. Весь современный веб стоит на процессинге данных типа XML/Json которые в свою очередь порождают массу справочников и фабрик и прочих компонент которые будут выделять строки и много. Любое приложение типа бизнес-процесс которое работает с БД будет так или иначе использовать кеши со строками. Любое приложение активно формирующее отчеты xml/Excel, PDF, html также активно будет много выделять и использовать строк. Я не имею ничего против вашего списка. Я просто вношу дополнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
2 All. Кто продвинут в Unicode. Помогите транформировать этот тестовый текст MSVC и GCC: совместимость кодировок исходников в последовательность с comnining characters. Я расширю этот тест для функций upper/lower чтоб посмотреть как комбинации себя ведут на разных API. Потом сделаю это для C#/Python/e.t.c. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Для всех европейских языков, в принципе, достаточно wchar_t. Можно воспринимать строку как массив символов. А про суррогатные пары (когда символ - это два wchar_t), можно забыть. Да, такое приложение крайне сложно будет доразвить до поддержки китайского и его диалектов. Но для всех европейских языков всё работает. Или вы, как и Блок считаете, что "азиаты мы с раскосыми и жадными глазами"? Ну так у немцев, французов, испанцев и прочих европейцев - тоже есть аналогичных символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton В типичном backend - приложении строки - самая прожорливая часть кучи. Весь современный веб стоит на процессинге данных типа XML/Json которые в свою очередь порождают массу справочников и фабрик и прочих компонент которые будут выделять строки и много. Любое приложение типа бизнес-процесс которое работает с БД будет так или иначе использовать кеши со строками. Любое приложение активно формирующее отчеты xml/Excel, PDF, html также активно будет много выделять и использовать строк. Серверное ПО -- это отдельная узкоспециализированная ниша. Согласись. Если представить себе распределённую индексирующую машину Гугла, то там 99% памяти -- это текст веб-страниц. Хотя и они уже пытаются индексировать изображения и даже видео. Но пример не слишком подходящий -- для спец разработки и инструментарии специфичные. И люди там работают с резко специфичными навыками. XML/json/html... Вот как сравнить размер XML-файла и память когда этот документ загружен в XML-DOM? Или в браузере html-DOM. Я думаю там разница разов в пять по памяти. Опять же. Серверное ПО (web-сервер, SQL-сервер) -- это совсем другая история, там другие правила игры. Там совершенно другой мир. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам. И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть от дефиниции макроса _UNICODE И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++ строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности. Волевого решения "из центра" - не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам. И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть от дефиниции макроса _UNICODE И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++ строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности. Волевого решения "из центра" - не было. +1 имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Код: java 1. 2.
При этом строка s1 по идее должна внутри выделять utf-8 массив символов а вторая строка - ascii. Нельзя отличить US-ASCII и UTF8 - это принципиально невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:47 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:50 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам. И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть от дефиниции макроса _UNICODE И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++ строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности. Волевого решения "из центра" - не было. Да. Вот ты прямо сказал, то что я думаю. И... все же, эти QString, TString, TAnsiString, WxString (?), CString. Этим классам очень много лет. Почему они тогда появились? Потому что С++ тогда не был развитым языком программирования, всё было впервые и многие хотели сделать свои яхты и плыть на них. Но годы прошли. И теперь мне советуют библиотеку ICU. Это хорошая библиотека. И что я там вижу? Класс icu::UnicodeString. Ещё один велосипед! Да в самом С++ больше десятка представлений строк. И ещё одно! В 2019-м году! Почему так? Да те кто занимаются проектированием С++ просто занимаются не тем чем нужно. Это во времена молодости С++ было позволено, а сейчас это признак того, что люди не на своём месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Код: java 1. 2.
При этом строка s1 по идее должна внутри выделять utf-8 массив символов а вторая строка - ascii. Нельзя отличить US-ASCII и UTF8 - это принципиально невозможно. Возможно. Если хранить вместе со строкой признак кодировки. Даю линк на репозитарий OpenJDK. Он во многом похож на Оракловый. https://github.com/unofficial-openjdk/openjdk/blob/jdk/jdk/src/java.base/share/classes/java/lang/String.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 19:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Возможно я ошибся в кодировках. Там Код: plaintext 1. 2.
Я еще просмотрю историю коммитов. Возможно что-то проскочило из того что я говорил. А это транковая ветка. Соотвествует JDK которой еще нет в релизе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Да. Вот ты прямо сказал, то что я думаю. И... все же, эти QString, TString, TAnsiString, WxString (?), CString. Этим классам очень много лет. Почему они тогда появились? Потому что С++ тогда не был развитым языком программирования, всё было впервые и многие хотели сделать свои яхты и плыть на них. Но годы прошли. И теперь мне советуют библиотеку ICU. Это хорошая библиотека. И что я там вижу? Класс icu::UnicodeString. Ещё один велосипед! Да в самом С++ больше десятка представлений строк. И ещё одно! В 2019-м году! Почему так? Да те кто занимаются проектированием С++ просто занимаются не тем чем нужно. Это во времена молодости С++ было позволено, а сейчас это признак того, что люди не на своём месте. Да в этих комитетах - царит какое-то разложение. Есть у них хоть один proposal который ужесточает стандарт? И делает его более... недёжным что-ли. Предсказуемым на разрядности int к примеру. Вот честное слово я уже не верю в комитеты. Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++. И там будет мать ево Unicode-строка как фундаментальный образующий тип языка. А все синонимы мы просто выкосим нахер. И опубликуем как форк С++ стандарта по версии yandex. Я-бы встал и поаплодировал. И жизненных примеров много. Когда источником нового языка была именно корпорация а не всякие бл...ские комитеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях. Т.е. поддержка utf-8 изначально была в языке Си и ты можешь дать ссылку на это от Денис Макалистэйр Ричи (пишу по памяти)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++ А если даже не и сожрали, то глухое игнорирование - ничем не лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Т.е. поддержка utf-8 изначально была в языке Си Это UTF-8 был сделан так, чтобы обеспечить полную совместимость с US-ASCII. А работоспособность стандартной библиотеки гарантирована только на этом подмножестве. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:20 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++ А если даже не и сожрали, то глухое игнорирование - ничем не лучше. Хм... При чем здесь антимонопольность? Игнорирование - плевать. Если вещь ценная и интересная (как Linux в 90х) то ей будет дана жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Возможно. Если хранить вместе со строкой признак кодировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:22 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Игнорирование - плевать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Возможно. Если хранить вместе со строкой признак кодировки. Вы по use case не сможете этого сделать. Мы же говорим о java String? Или вы о чем то другом? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:28 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Или вы о чем то другом? Более того, единственная причина, по которой Java 9+ не использует UTF8 - индексация String по кодовым точкам. Сейчас это константная операция, а будет - линейная. Шипилёв, в одном из своих выступлений, отмечал, что такое изменение контракта Java SE API было сочтено недопустимым. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:43 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
(пожимая плечами) Я легко признаю ошибку если я оговорился. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Да в этих комитетах - царит какое-то разложение. Есть у них хоть один proposal который ужесточает стандарт? И делает его более... недёжным что-ли. Предсказуемым на разрядности int к примеру. Вот честное слово я уже не верю в комитеты. Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++. И там будет мать ево Unicode-строка как фундаментальный образующий тип языка. А все синонимы мы просто выкосим нахер. И опубликуем как форк С++ стандарта по версии yandex. Я-бы встал и поаплодировал. И жизненных примеров много. Когда источником нового языка была именно корпорация а не всякие бл...ские комитеты. В общем, я согласен с Вами. В очередной раз с Вами соглашусь. Но я думал о том же в контексте, что у этих комитетов просто денег нет на серьёзное проектирование. Что не могут они конкурировать в проектировании языка программирования, по сравнению с языками в которые корпорации вкладывают огромные деньги (Java, C#). И, конечно, я не думал о Яндексе. :) Вот Гугл был бы лучшим выбором. PS: И да, конечно, нормальная Юникод-строка в стиле Си и встиле С++ должна быть в языке С++. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Гугл уже порешал для себя проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 21:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Вот ей-богу - странные вы люди ... Казалось - в чём проблема?.. Взяли стандарт языка (черновик стандарта), выкинули из него всякий хлам и добавили разумного, доброго, вечного. Даже компилятор не надо делать с нуля - берём LLVM и чуток допиливаем "до идеала" один из фронтэндов. Только что вы собрались делать в другой камере, если у вас перестанет собираться 90-99 процентов используемого кода? Тоже чуток допилите? P.S. Windows 7 SDK Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 21:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov char в Java - примитивный тип. Character - класс-обёртка, которая ничем не лучше и не хуже других классов-обёрток. а я и не говорю про лучше/хуже, я говорю про, что в яве класс довели до абсурда. crutchmaster Чуть больше половины байт - нули. ну так выравнивание жи. Либо шашечки, либо ехать. Либо быстро работаем со строкой, либо чекаем каждый символ и спасаем 1 байт, но выводим с задержкой в 3-5 раз. И ради чего? ВСЯ деятельность Шекспира занимает в итоге 5 мегабайт! Где же взять столько памяти... Это особенности unicode, причём тут C++, это в юникоде чары по 2-4 байта. Как вы себе представляете строку с перемешанными 1-2 байтами? petrav А глюки из-за неправильного понимания работы Юникода не жгут? Какие глюки у вас с wstring, покажете пример уже, второй раз спрашиваю? petrav Да в самом С++ больше десятка представлений строк. да хоть 100500, они там для совместимости остались вы юзаете string/wstring и всё. Точка. Или, если хотите, можно жёстко указать размер : u8/u16/u32 petrav Да те кто занимаются проектированием С++ просто занимаются не тем чем нужно. это вы занимаетесь не тем, чем нужно - ищете чёрную кошку в тёмной комнате, где её нет. А развитие C++ идёт лучше, чем во всех других языках. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 21:47 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух Почитайте этот-же форум С++. Здесь каждый десятый или двадцатый топик - это кодировки и строки. Вы тоже им всем дадите этот совет? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 22:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton полудух Почитайте этот-же форум С++. Здесь каждый десятый или двадцатый топик - это кодировки и строки. Вы тоже им всем дадите этот совет? да на что жалуются то? покажите мне уже, чего я не могу сделать, положив текст в wstring? при том, что конверсия есть куда угодно: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 22:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Я когда-то FAQ собирался поднимать по вопросам кодировок и строк на C++. Искать сейчас мне лень. Но в форуме много подобных вопросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 23:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух да на что жалуются то? Жалуются что половина текста нулей, спать не могут! полудух покажите мне уже, чего я не могу сделать, положив текст в wstring? Что бы Вам показать что нельзя сделать очевидным способом на wstring нужно или иероглифы знать, или найти в инете хоть одну суррогатную пару. Понятно всем лень. Или ума не хватает. Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 23:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Нашел нормализатор под Питон. Щас попробуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 23:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления. а что "очень"? КЛАСС целый налепить вместо типа и тормознуть абстракцией от души, как в яве? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 00:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух petrav Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления. а что "очень"? КЛАСС целый налепить вместо типа и тормознуть абстракцией от души, как в яве? 1. Вам уже ответили, что char в Яве - это не класс. Как и в Шарпе. 2. wchar_t не вмещает всю таблицу Юникода. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 00:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
В java для всех примитивных типов созданы иммутабельные объекты-обертки. Между ними работает implicite преобразование. Авто-боксинг. Это нужно для поддержки примитивов в коллекциях и для генериков. Есть примитив char и есть пкласс Character. Есть примитив int и есть обертка Integer. JIT компиллятор во многих случаях умеет превращать обертки в примитивы есть есть возможность и если это не меняет логику. Примитивы не имеют общего супертипа в Java. Однако в Scala это исправлено. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 01:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav 2. wchar_t не вмещает всю таблицу Юникода. ну так char32_t есть (u32string) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 02:29 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Есть примитив char и есть пкласс Character. ок, ок один хер они апофеоз абсурда из классов сделали ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 02:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Язык - способ выражения мысли. Помнишь афоризм о том что программы пишутся для прочтения человеком и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 10:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух ну так char32_t есть (u32string) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 11:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov полудух ну так char32_t есть (u32string) char32 - это максимум четыре миллиарда символов. Это больше чем utf-8 по текущему стандарту (при максимуме четыре байта). Не надо рассказывать про немецкие умляуты, иероглифы в знакомом вам китайском селе, символы ударения и прочие сугубо лингвистические нюансы. Мы тут не занимаемся алгоритмами апперкейса той немецкой буквы похожей на Бетту, которая переходит в SS в случае редких интонаций, перед тем как тебе прилетает в нос. Это не лингвистический форум. Мы не обсуждаем тут авторский стиль Пушкина. Хотя мы его уважаем. Мы не обсуждаем алгоритмы автоматического перевода или написания стихов на нейронных сетях. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 12:08 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov полудух ну так char32_t есть (u32string) И теперь осталось обосновать применение понятий "базовая плоскость" и "половина (первая) базовой плоскости" в рамках обсуждаемой проблемы. Со ссылками. Иначе это будет выглядеть как... ну человек привык бросаться красивыми терминами не понимая их сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 12:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Посмотрел Питонскую библиотеку unicode data. Первые несколько строк я украл со stackoverflow. Далее идет - Лев Николаич. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
á á Ⅷ VIII 1) Еh bien, mon prince. Gênes et Lucques ne sont plus que des apanages 2) Еh bien, mon prince. Gênes et Lucques ne sont plus que des apanages 3) Еh bien, mon prince. Gênes et Lucques ne sont plus que des apanages 4) Еh bien, mon prince. Gênes et Lucques ne sont plus que des apanages Забавно. Походе нормализатор действует в обратную сторону. Склеивает комбинации. А мне нужно - наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 16:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И теперь осталось обосновать применение понятий "базовая плоскость" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 22:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravМы тут не занимаемся алгоритмами Ну раз ты всё для себя выяснил, топик можно закрывать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 22:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
[quot petrav#22029124][quot crutchmaster#22029090]пропущено... В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа: Ваш мирок гуи-поделок - это не современная жизнь. - Типичное офисное приложение типа 1С. Зависит от того, что гоняют в этом "типичном" приложении. - Типичная страница лонгрид на 20 минут чтения в браузере. С картинками. - Страница ютуб в браузере. У "типичной" страницы может быть 5 мб жаваскрипта с html разметкой, которую надо генерировать, передавать и парсить. Всунул wstring уронил производительность в 2 раза. - Десктопная/мобильная ОС. ОС - не обрабатывает тонны текста. Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки. В html/js/css процент юникола действительно очень мал. Там подавляющая часть - ascii. Зачем ради этого всё гнать в utf16/32 решительно непонятно. Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера. Вы всё измеряете десктопом. Кроме этого в мире полно всего. Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут? Да суйте wstring в свои гуи на здоровье. Я говорю как есть. Гуи - не центр мира, на си/плюсах пишут фундаментальные вещи, которые составляют основу ИТ инфрастуктуры. Ну, да, они немного положили на гуистов, которые херачат названия utf8 прямо в код. Там люди просто не понимают, зачем так надо делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 13:26 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Я-бы встал и поаплодировал. rust/go. Вставай, аплодируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 13:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmasterУ "типичной" страницы может быть 5 мб жаваскрипта с html разметкой, которую надо генерировать, передавать и парсить. Всунул wstring уронил производительность в 2 раза. Чисто из любопытства: в какое место яваскрипту можно всунуть std::wstirng? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 14:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Гуи - не центр мира, на си/плюсах пишут фундаментальные вещи, которые составляют основу ИТ инфрастуктуры. в этих "фундаментальных вещах" только ascii и есть обычно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 14:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster mayton Я-бы встал и поаплодировал. rust/go. Вставай, аплодируй. а чему там аплодировать, они медленнее C++ всё на свете медленнее C++ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 14:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух При разработке rust и go ставились вполне себе конкретные задачи. Go должен был заменить python как медленный язык для google - поисковых сервисов. Заменил. Работает. Насчет rust - я не знаю. Но убежден что мотивация была. По поводу медленнее-быстрее. Вы, как владелец бизнеса не ставите задачу - быть быстрее языка X на 20%. Вы хотите чтобы ваш бизнес работал и ваше ПО было удобно в дописывании и доработке. По сути это диверсификация рисков. Вы СОГЛАСНЫ платить за потерю перформанса в 20%. Пофиг. Ведь вы покупаете узлы облака и производительность наращивается. Но вы не согласны ждать долго разработку. Вы хотите чтоб микросервис был поднят уже завтра. Ведь завтра - стартует маркетинг акция и вам нужен живой и работающий endpoint. C++ в этой плоскости проигрывает языку Go. Т.к. цена разработки подобного микросервиса на С++ будет не на 20% дороже а дороже в несколько раз. И время разработки будет дольше. Экспертиза С++ дорого стоит. Маркетинг акция - может не взлететь к сроку. Я описал видение со стороны своего сегмента. Быть может у вас есть другая точка зрения. Я с ней тоже согласен. Но я просто оперирую вот такими вот терминами. Выгодно-невыгодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 15:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Хм. Интересно. Выдержка из Python Код: python 1. 2. 3. 4. 5. 6.
Греческую букву Дельта-заглавная можно набрать 3 способами. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 15:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Всё это барахло передаётся телепатически, или всё таки где-то хранится/обрабатывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 18:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух, Так там ничего больше и не нужно же. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 18:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav char32 - это максимум четыре миллиарда символов. 8-16-32 бита кодируют не символы, а коды. Символы состоят из одного или нескольких кодов и этот факт не зависит от кодировки. Это больше чем utf-8 по текущему стандарту (при максимуме четыре байта)."Огорчу я тебя до невозможности". Юникод ограничен семнадцатью плоскостями по 65536 кодов в каждой. Это даёт 21 бит на код и от кодировки не зависит - хоть в uint128 упаковывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 18:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmasterВсё это барахло передаётся телепатически, или всё таки где-то хранится/обрабатывается? Это Вы о какой части "5 мб жаваскрипта с html разметкой" сейчас говорите? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2019, 20:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Я описал видение со стороны своего сегмента. Быть может у вас есть другая точка зрения. Я с ней тоже согласен. Но я просто оперирую вот такими вот терминами. Выгодно-невыгодно. ну это только одна сторона медали а вообще бизнес это не только про "купи-продай побыстрей" да и жизнь это не только про бизнес... Вообще-то Информация нас двигает вперёд. кому-то ещё геномы считать, кому-то погоду, а кому-то даже, прости-хосподи, ИИ подавай... и хотят они именно побыстрей и покачественней считать. Конечно в мире должен быть удобный инструмент для быстрой разработки (Go) Но первое место всё равно за C++. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 00:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух да и жизнь это не только про бизнес... Вообще-то Информация нас двигает вперёд. кому-то ещё геномы считать, кому-то погоду, а кому-то даже, прости-хосподи, ИИ подавай... и хотят они именно побыстрей и покачественней считать. Это очень хорошо что вы напомнили всем нам о качестве. Данный топик как раз начался с вопросов качества. А именно - кодировки. И далее мы обсуждали реализацию строкового типа в С++. Видимо не всё так хорошо в Королевстве Датском. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 01:22 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
всё познаётся в сравнении. абсолютно ВСЕ остальные "королевства" написаны на C ну и где там "хорошо"? что они могут предложить, кроме очередной абстракции над C? максимум напишут очередной вариант string, а он что, будет меньше занимать? или быстрее работать? если бы было что-то действительно стоящее, оно бы уже было в C. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 02:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
И, в конце-концов, о чём вы вообще спорите? как у программистов у вас вообще таких претензий быть не может, потому что кто-то, а вы то обязаны знать, ЧТО происходит в самом низу, КАК работает процессор, из каких кирпичиков создаётся компьютер. У нас есть БАЙТ. И в этот БАЙТ можно запихнуть 256. ВСЁ. Большего в него не запихнёшь НИКАК. ЧТО тут можно ещё придумать? БАЙТ на 65536, на 16 бит? Ну вот подъедут фотонные/квантовые компы, может что-то и изменится, а пока всё это пустой трёп. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 03:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, О любой. Html с юникодом, который генерирует пхп. ЖС/Цсс с эмодзи, который ест браузер. Толстенные вебпаки с половиной npm. Json/xml, который летает туда-сюда. Html генерируется медленными язычками из шаблонов, которые тоже, надо прочитать, сделать там замены. wstring и хранение в utf16/32 просто в двое увеличило бы эту работу. По поводу плюсов и юникода в сорцах я написал в начале треда. Ascii в сорцах и gettext - выбор человека. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 04:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЧисто из любопытства: в какое место яваскрипту можно всунуть std::wstirng? С какой стороны? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 04:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух вы то обязаны знать, ЧТО происходит в самом низу, Программисты как и врачи сейчас делятся на прикладников и системщиков. Прикладникам не только нужно знать байты. Им нужна строка символов). полудух ЧТО тут можно ещё придумать? API нверно для работы со строками. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 08:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух, Забавно. По твоей логике мы сегодня должны писать даже не на сях а на ассемблере ведь на нем были созданы все "королевства". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav char32 - это максимум четыре миллиарда символов. 8-16-32 бита кодируют не символы, а коды. Символы состоят из одного или нескольких кодов и этот факт не зависит от кодировки. Это очевидно. Ладно. Давайте предметно обсудим. Давайте представим, что мы пишем программу (небольшую, но не тривиальную)... например, автоматизирующую работу (диагностику) с неким промышленным оборудованием. Под требования заказчика. Не важно что это, возьмём газовые турбины отечественного производства. Допустим нужно локализовать этот софт для экспорта в Казахстан. Хорошо, наверное, Вам Казахстан не близок. Пусть будет фантастическая ситуация... Мы поставляем их в Германию. Бинго! Приведите пример, когда бы нам не хватило wstring и представления, что мы работаем с символами как с массивом. PS: Если честно, никогда не работал с софтом управляющим газовыми турбинами, но пример гипотетический, подставьте любое промышленное оборудование. От достаточно простого, до сложного. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton полудух, Забавно. По твоей логике мы сегодня должны писать даже не на сях а на ассемблере ведь на нем были созданы все "королевства". нет там такой логики, не выдумывай, я вообще о другом писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster Ваш мирок гуи-поделок - это не современная жизнь. Удивляют меня такие заявления от человека для которого нужно написать целую страницу комментов, что бы он понял как работает std::mblen(). Ты смотрел на сигнатуру функции и сделал такое предположение, что само существование этой функции становилось абсурдом. 1. GUI это не современная жизнь? 2. Я довольно мало занимаюсь непосредственно GUI. 3. Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику. PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Удивляют меня такие заявления от человека для которого нужно написать целую страницу комментов, что бы он понял как работает std::mblen() Ну протормозил немного, что сразу ржать? 1. GUI это не современная жизнь? Гуи - это помойка, которую переписывали и будут переписывать каждые лет 5 максимум. Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику. Мы обсуждаем то, как кто-то не смог быстро захардкодить utf8 как в жс/жабке/etc и рассказывает, какие плюсы плохие. PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область. Бекенд жабка/жс/оракл для ЖКХ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:43 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ты смотрел на сигнатуру функции и сделал такое предположение, что само существование этой функции становилось абсурдом. Я недооценил любовь плюсовиков к великам и подумал, что она mb_strlen. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:48 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Ты там что-то грозился насчёт js, ну так что, когда? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster petrav, Ты там что-то грозился насчёт js, ну так что, когда? Извини, я подзабыл, что я там на счёт js грозился? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Извини, я подзабыл, что я там на счёт js грозился? Ну как так можно! petrav Если ты хочешь начать срач и модератор разрешит: через несколько постов тебе станет крайне обидно за себя. Я же жду, надеюсь, аргументы придумываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster 1. GUI это не современная жизнь? Гуи - это помойка, которую переписывали и будут переписывать каждые лет 5 максимум. Ну я видел промышленный софт, который работает десятилетиями. Хотя, конечно, ядро ОС разрабатывать круче. crutchmaster Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику. Мы обсуждаем то, как кто-то не смог быстро захардкодить utf8 как в жс/жабке/etc и рассказывает, какие плюсы плохие. Ты действительно думаешь, что мне сложно подключить ICU? Вот перебрать кучу исходников, доработать их, перетестировать, объяснить окружающим зачем это надо, почему я их напрягаю и умудриться ещё и зарплату за это получить - да это сложно. Если знаешь быстрый способ - подскажи. А плюсы тут да, плохие. Потому что не поддерживают на уровне языка работу с utf-8. crutchmaster PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область. Бекенд жабка/жс/оракл для ЖКХ. У тебя точно такая же прикладная отрасль как у меня. Я тоже могу сказать, что из-за специфики твоей работы БД твоя не нормализирована, в софте твоём куча костылей под временные-сиюминутные требования заказчика, которые нужно сделать быстро. Через пять лет проект твоей компании упадёт под собственной тяжестью и вам придётся его переписывать. Вы начнёте проектировать новое ядро своего приложения, максимально гибкое, но через пять лет там снова будет помойка из костылей. Ява станет непопулярной и вы будете переписывать всё на Go 3.0. А потом Гуглы положат на язык Го. И ты пойдешь разрабатывать промышленный софт на десятилетия. И не будешь подключать ICU. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Ну я видел промышленный софт, который работает десятилетиями. Унылое зрелище, не находите? Хотя, конечно, ядро ОС разрабатывать круче. Кроме ОС еще есть много чего интересного. crutchmaster А плюсы тут да, плохие. Потому что не поддерживают на уровне языка работу с utf-8. Так возьми другой язык, где есть юникод, да вкоряч его в свои плюсы. Наружу будешь выдавать char* никто и не заметит, что там что-то есть. Через пять лет проект твоей компании упадёт под собственной тяжестью и вам придётся его переписывать. Он уже прогнулся и почти рухнул 2 раза, а мы переписываем! Да ты чётров пророк! И ты пойдешь разрабатывать промышленный софт на десятилетия. И не будешь подключать ICU. Ну и так что ты хочешь от плюсовиков? Вот они походу и подумали, что юникод - это всё хипсторство и он особо не нужен. А вообще плясать надо от api, а не от программных платформ. Языки дохнут и появляются а предметная область и взаимодействия остаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:34 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Давайте представим Даже если лично вы можете обеспечить для своей программы работу исключительно с NFC, то вам не удастся прогнуть под себя весь остальной мир. Особенно странно требовать работу "в большинстве случаев" для встроенного типа языка или для стандартной библиотеки языка. И то и другое обязано работать всегда. Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке. Оптимальный вариант кодировки - UTF8. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке. Оптимальный вариант кодировки - UTF8. 1 байт вмещает 256 цифр (= 256 символов) в utf8 сильно больше, чем 256 цифр как вы предлагаете натянуть сову на глобус? КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух, Никак его не надо туда засовывать. char не соответствует символу. Надо класс, который будет предоставлять api для работы с этими char* ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:05 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек? Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Давайте в реальность вернёмся: Отображение буквы "й" . Там ещё по ссылкам полезно почитать. И по ссылкам из ссылок. Даже если лично вы можете обеспечить для своей программы работу исключительно с NFC, то вам не удастся прогнуть под себя весь остальной мир. Понятно, букву Й представили в виде двух символов Юникода. На файловой системе и в utf-8 документах с иероглифами - я такого не наблюдаю. Но проблема, конечно, есть. А есть ещё символ ударения... поиск слов работать не будет. А некоторые пользуются буквой Ё. Опять проблемы с поиском и заменой. Понимаете к чему я? Вы тут начинаете говорить о странных вещах. Вы предлагаете что бы язык программирования поддерживал элементы интеллектуального лингвистического анализа. Мне так кажется. Basil A. Sidorov Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке. Оптимальный вариант кодировки - UTF8. Да, это было бы идеально. Я об этом тоже писал. Но они этого не сделали, они наплодили кучу сущностей, а утф-8 не поддерживают. Когда я начинаю критиковать проектировщиков С++, мне отвечают что это у меня руки кривые и я ICU не могу подключить. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster полудух КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек? Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано. Угу, особенно у военных)) Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Если я подключу ICU, она что такая интеллектуальная что два представления Й будет учитывать как одно и тоже? Т.е. в одной строке utf-8 это будет один символ Юникода, а в другой два. Что выдаст операция сравнения таких строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Скруль использует Код: plaintext 1.
А вот несуществующая страничка выкидывает шаблон без кодировки. С кракозябрами. Это как раз в тему интернационализации и прочего. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Скруль использует ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Если я подключу ICU ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Скруль использует Код: plaintext 1.
А что такое Скруль? Это не из анекдота "Уберите с руля"? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Скруль использует Код: plaintext 1.
А что такое Скруль? Это не из анекдота "Уберите с руля"? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Если я подключу ICU, она что такая интеллектуальная что два представления Й будет учитывать как одно и тоже? Т.е. в одной строке utf-8 это будет один символ Юникода, а в другой два. Что выдаст операция сравнения таких строк? По логике. Сначала обе строки должны быть нормализованы. А потом просто сделать хоть посимвольное. Хоть побайтное сравнение. Вообще это - не самое сложное. Есть еще другая тема. Сортировки. Их иногда называют Collations. Там - вообще конь не валялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Если я подключу ICU Если бы я меньше трепался на форуме, то уже бы попробовал. Я тоже думал об этом. Я могу попробовать с Qt. Если сайт снова проглючит с кодировками, сразу говорю тут два представления буквы Й, выглядят в редакторе почти одинаково. Вроде как Qt использует ICU, но я не уверен. Код: plaintext 1. 2. 3.
Да, сайт глючит.. или фильтрует. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 13:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Код: plaintext 1.
В гуи из контрола бери. А в контрол баба Маша Ctrl +C из 1C и вставляет UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:08 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Basil A. SidorovФактически, тип char и его "расширенные" производные надо просто выкинуть Оптимальный вариант кодировки - UTF8. Осталось только вспомнить, что utf-8 это костыль, придуманный как раз с целью "оставить char*" и мы получаем ту самую std::wstring. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:11 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Вы тут начинаете говорить о странных вещах. Вы предлагаете что бы язык программирования поддерживал элементы интеллектуального лингвистического анализа. Мне так кажется. Я утверждаю, что поскольку реальное положение вещей таково, что тип char произвольной, но фиксированной ширины никак не соответствует понятию "символ" естественных языков, то и не надо даже пытаться работать со строками, как с char[]. Следовательно, прикладное API должно предоставлять тип string, без детализации - какая именно внутри неонка. Для реализации типа string необходимо выбрать представление и вариантов ровно один: массив байт. Они же - восьмибитные октеты. И это - тоже уже без вариантов. Остаётся только выбрать кодировку, в которой будут представлены символы в этом массиве байт. И опять-таки, самый разумный вариант - UTF8. Просто потому, что это - единственный вариант, обеспечивающий максимальную совместимость со всем, что основано на API стандартной библиотеки C. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC SharpА в контрол баба Маша Ctrl +C из 1C и вставляет UTF8 Это под какой ОСью? У Windows в "контрол" вставляется только юникод или текущий ANSI. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Попробуй кириллическое Й краткое заменить на Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Код: plaintext 1.
В гуи из контрола бери. А в контрол баба Маша Ctrl +C из 1C и вставляет UTF8 Я как раз и сделал копипасту с Хабра по ссылке которую косвенно посоветовали чуть выше: ссылка . Там в первых абзацах такая буква Й. С клавиатуры она не вводится, но выглядит как обычная Й. Мне ещё только не хватало это вставлять в контрол, потом брать с контрола. Может мне ещё update/select сделать в MS SQL и в Оракл заодно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Попробуй кириллическое Й краткое заменить на Код: plaintext 1.
Тоже самое: Код: plaintext 1. 2. 3.
Notepad++ тоже думает что это разные символы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:22 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Напутал. Код и = 0438 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Напутал. Код и = 0438 У меня эти строки не совпадают. Надеюсь у тебя код маленькой й. Да Qt просто видит что длина строк разная - и на этом операция сравнения заканчивается. Код: plaintext 1. 2. 3. 4.
:) Ну вот. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Мне ещё только не хватало это вставлять в контрол, потом брать с контрола А то ведь есть те что в коде вместо clRed пишут красное в шестнадцатеричном) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster полудух КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек? Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано. у меня он был на FreeBSD ещё в 2009 нет, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
crutchmaster полудух, Никак его не надо туда засовывать. char не соответствует символу. Надо класс, который будет предоставлять api для работы с этими char* какой ещё API? в string есть API, пользуйтесь - .substr(), .rfind(), .etc как вы собрались 100500 символов юникода хранить без двух байт? проверять каждый символ, что он из таблицы ДО 256? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 14:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Нормализация. В Питоне примерно так (UTF-16). Код буквы И + этот чортов символ птичка https://unicode.org/cldr/utility/character.jsp?a=0306 Код: python 1.
й >>> В чем разница этих 4х алгоритмов нормализации (NFC, e.tc.) я ХЗ. Но в QT тоже должна быть какая-то опция которая регулирует этот алгоритм. Поищи Plz. Чуть позже посмотрю для utf-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:00 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravs1.normalized(QString::NormalizationForm_D) mayton в QT тоже должна быть какая-то опция которая регулирует этот алгоритм. Ты не поверишь... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:04 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Я прошу прощения за то что искусственно втаскиваю в топик тему Питона . Я его не лоббирую! Более того я даже его не знаю! Но мне кажется что при разборе bestpractices с кодовыми страницами и кодировками - имеет смысл смотреть по сторонам как где сделано. Это обычно наталкивает на мысли. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Вот в Питоне байтовый массив (фраза на Испанском) рассматривается как utf-8 строка. Код: python 1.
El niño come camarón ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484 Я кажется догадался. Скруль - это sql.ru. То-то мне это мне сразу напомнило как некоторые называют SQL - сикуль или как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Но в QT тоже должна быть какая-то опция которая регулирует этот алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:28 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Вот в Питоне байтовый массив (фраза на Испанском) рассматривается как utf-8 строка. Код: python 1.
El niño come camarón Кто мне подскажет как эти чортовы символы ñ сверху называются ó. Возможно две птички - это умляут (umlaut) но я не уверен. Или акцент (accents). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:31 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484 Я кажется догадался. Скруль - это sql.ru. То-то мне это мне сразу напомнило как некоторые называют SQL - сикуль или как-то так. Просто ты, барин, здесь редко бываешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Но в QT тоже должна быть какая-то опция которая регулирует этот алгоритм. Да не собираюсь я далеко отходить. Я говорил: на Qt только GUI, логика на С++ с минимумом сторонних библиотек. Это позволит легко отказаться от Qt если он умрёт или перестанет устраивать. Не нужно мне учитывать умляуты и прочие, если даже на Qt и на Питоне просто так не работает операция сравнения строк. Вы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. Вам не нужна оптимизация, а мне в ядре приложения (не в GUI) нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Еще один вариант испанского мальчика жрущего креветок. Код: python 1.
Хотя я нормализацию не заказывал. На печати в консоли выглядит так. 'El nío come camarön' Код: python 1. 2.
И длина - 21 символ с точки зрения строкового API После нормализации. Код: python 1.
'El nío come camarön' Код: python 1.
19 Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать. Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 15:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav говорил: на Qt только GUI, логика на С++ с минимумом сторонних библиотек. Получим шарикова. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками? Я не пишу библиотек работы со строками. API работы с сокетами - POSIX или близко к этому. Модератор: Edited ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Мои мысли ясные и логичные). Ваш метод (а не вы сами) по производству универсальной программы работь не будет. Врубились что вы сами - крутой и успешный прогер. А вот метод избрали не рабочий. А то обиделись, как девочка прям. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Мои мысли ясные и логичные). Допустим. Вот твоя цитата: PetroNotC Sharp Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками? Из неё явно следует, что я пишу свою библиотеку работы со строками. И теперь я прошу привести мою цитату из которой следует, что я пишу свою либу работы со строками. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Девочки - не ссорьтесь. Топик - нормальный. Жалко будет его закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое?пусть блокируют. ГУИ в одном основном потоке. Исходя из старых практик разработки UI. Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного пользователя или тот режим который будет гладко ложиться на бизнес-процесс. Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам процессов мне сложно. Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Это - предположение. 99% это зависит от того как будет написан код поточного метода. Он может работать со старой версией строки создав предварительно ее копию. Он может работать с референсом на строку для immutable strings. Мы можем ввести понятие версионной строки и отслеживать некое атомарное состояние счетчика транзакций над строками. И все это автоматизировать. Кстати здесь я еще больше согласен с Сидоровым что строка это все-таки не массив char[] как бы мне этого не хотелось. Вобщем.. исходя из наблюдения. Больше блокировок на I/O, Networking чем собстенно на строковых объектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Я прямо сейчас готов написать функцию которая докажет тебе что это не так. Но в упрощённом сценарии. Все буквы ASCII, но в одной строке встречается восьмибитная Й, а в другой последовательность ЁЁ и эти строки считаются равными? Если ты хочешь функцию на реальной реализации utf-8, то не просто так, но я сделаю. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. Исходя из старых практик разработки UI. Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного пользователя или тот режим который будет гладко ложиться на бизнес-процесс. Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам процессов мне сложно. Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я прошу прощения. Случайно изменил твой пост. Как откатить - не знаю. Но - перепость заново а я старый удалю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton, Ok Мне не трудно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav эти обращения блокируют все потоки ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:13 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav эти обращения блокируют все потоки Да... GUI однопоточный. Но он активно использует динамическую память. И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики. Просто в ваших задачах вам не нужно заботиться о производительности в таких мелочах и вы просто не знаете об этом. Но не во всех случаях это приемлемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте: - Огромное количество браузеров внутри которых работает программа на JS. - Огромное количество кеширующих серверов. - Огромное количество серверов логики и серверов БД. - Сколько процессов запущено сейчас на всех этих серверах? - Сколько RAID массивов задействовано, сколько виртуальных машин? Да там даже графические объекты расположены на тонких клиентах! Причём тут обычное приложение на C++? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Как независимые потоки будут мешать друг другу? Кто тут гуи хотел отделить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте: - Огромное количество браузеров внутри которых работает программа на JS. - Огромное количество кеширующих серверов. - Огромное количество серверов логики и серверов БД. - Сколько процессов запущено сейчас на всех этих серверах? - Сколько RAID массивов задействовано, сколько виртуальных машин? Да там даже графические объекты расположены на тонких клиентах! Причём тут обычное приложение на C++? Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:27 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Как независимые потоки будут мешать друг другу? Кто тут гуи хотел отделить? Дело в том что структура динамической памяти - это по сути Синглетон. Любое обращение к ней (new/delete/malloc/free) - это блокировка. Можно, конечно, подумать о том, что бы, например, в DLL логики у нас была своя отдельная куча (и отдельный рунтайм) и мы возвращаем только интеллектуальные указатели в которых есть свой deleter. Но как-то я пока не встречал таких идей в статьях. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Любое обращение к ней (new/delete/malloc/free) Ну ссылки то где что это проблема стоит обсуждения вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Давай сделаем два потока и будем там создвать строку с выводом в лог. 5 минут работы. Будет тормозить доступ к памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают. Я прошу прощения. Ты можешь мобилой сфоткать твой UI ? Без торговых обозначений. Без лейблов. Просто какой-то функционал. Я просто пытаюсь понять что за такая там у вас отрасль где нужно UI так тесно интегрировать с динамической памятью и строками. Насчет рантайма я не имею ничего против. Просто интересно где это критично. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Давай сделаем два потока и будем там создвать строку с выводом в лог. 5 минут работы. Будет тормозить доступ к памяти? Давай. Рабочий поток выводит на 1000 Гц, а поток GUI в тот же поток на 100 Гц. Мне интересна статистика по времени выделения памяти и вывода в лог. В обоих потоках. Статистика с помощью Windows API QPC. Жду результатов. И на слабых компьютерах тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
А зачем UI в 100 Гц? Я слышал что в топовых играх видяшки переключают front-back buffer до 120Гц. Но это игра. Где плавность изменения графики - просто видно боковым зрением. И не более того. А научные испытания на кроликах людях и обезянах показали что человек реагирует и осознает изменения UI с периодом в 100 милисекунд. Это примерно соответствует 10 герцам. Можно и выше - но на реакцию человека и на принятие решения это не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А зачем UI в 100 Гц? Я фигею. Мы о чем вообще тут говорим? 3D render? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А зачем UI в 100 Гц? 100 Гц в UI действительно излишне. Я привёл это для того что бы потоки с большей вероятностью вмешивались друг в друга. Но он может создать несколько рабочих потоков и там логировать на 500 Гц. Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны. Как Anime-сериал прям. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени. Я в этом смысле наверное похож на Торвальдса. Я - инженер. И люблю решать инженерные головоломки. И мне глубоко безразлина контора в которой ты работаешь. И я очень удивлён тем что ты нашел (!) реально нашел проблему аллокации строк на СТЫКЕ UI и динамической памяти. Я - правда удивлен. И мне кажется что если мы глубоко копнём в твою проблему ... она окажется вообще не проблемой а просто архитектурной фичей которая фиксится быстро. Ты вот думаешь что для comparison двух utf-8 строк тебе надо обязательно ре-аллоцировать (malloc/realloc) память? А я вот так не думаю. Мне вот кажется что мы в состоянии решить эту задачу алгоритмически. Давай просто разделим понятия хранения (storage) utf-8 строк и их представления (representation). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны. Как Anime-сериал прям. С Повер-Поинт вообще проблем нет. Но речь идёт о работе с промышленным оборудованием и часто используя слабые компы. А не анимация про Си-шарп или про трусы модной фирмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Пожимая плечами Хорошо. Давайте синтетический тест. C двумя потоками и со строками. Посмотрим на него. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:14 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton И я очень удивлён тем что ты нашел (!) реально нашел проблему аллокации строк на СТЫКЕ UI и динамической памяти. Нет никакого стыка UI и динамической памяти. Есть N-потоков которые обращаются к структуре динамической памяти. Одновременно. Если ты покажешь, что такие алгоритмы не блокируют друг друга, я скажу тебе большое спасибо. mayton Ты вот думаешь что для comparison двух utf-8 строк тебе надо обязательно ре-аллоцировать (malloc/realloc) память? А я вот так не думаю. Я так не думаю. Агоритмически я считаю, что их можно сравнить без аллокации памяти. Но так следует из интерфейса Qt - что бы сравнить строки на Qt их нужно нормализовать, а что бы нормализовать нужно обратиться к динамической памяти: Код: plaintext 1.
Плиз, обрати внимание на слово const в конце сигнатуры. И на возвращаемый тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton И я очень удивлён тем что ты нашел (!) реально нашел проблему аллокации строк на СТЫКЕ UI и динамической памяти. Нет никакого стыка UI и динамической памяти. Есть N-потоков которые обращаются к структуре динамической памяти. Одновременно. Если ты покажешь, что такие алгоритмы не блокируют друг друга, я скажу тебе большое спасибо. Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать. Давай всё таки сделаем синтетический тест и посмотрим на него. Предлагаю также подумать о хеш-коде нормализованной строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:22 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать. Давай всё таки сделаем синтетический тест и посмотрим на него. Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:29 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Еще один вариант испанского мальчика жрущего креветок. Код: python 1.
Хотя я нормализацию не заказывал. На печати в консоли выглядит так. 'El nío come camarön' Код: python 1. 2.
И длина - 21 символ с точки зрения строкового API После нормализации. Код: python 1.
'El nío come camarön' Код: python 1.
19 Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать. Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же. самое время посмотреть на работу регекспов, сабстрингов и прочих требовательных ф-й ну они то конечно же в питоне подогнаны под эти костыли, но какой ценой... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Petrav Ты сейчас просто описал работу ЛЮБОЙ си-прогаммы которых много. Но в топике мы говорим о твоей проблеме. О проблеме перформанса. Я здесь пока проблемы не вижу. Я очень не люблю и не хочу фантазировать (фантазия у меня богатая) за топик стартера. И я все-таки настаиваю чтобы ты обрисовал где мы блочимся. Если это malloc/free - то почему. Дро...им память. Может там одна и та-же строка миллиард раз аллоцируется? Почему мы это не видели? Может очень длинная строка? почему на прикланом уровне мы такое допустили? Зачем она нужна такая длинная в твоём Реал-тайм приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
полудух mayton Еще один вариант испанского мальчика жрущего креветок. Код: python 1.
Хотя я нормализацию не заказывал. На печати в консоли выглядит так. 'El nío come camarön' Код: python 1. 2.
И длина - 21 символ с точки зрения строкового API После нормализации. Код: python 1.
'El nío come camarön' Код: python 1.
19 Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать. Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же. самое время посмотреть на работу регекспов, сабстрингов и прочих требовательных ф-й ну они то конечно же в питоне подогнаны под эти костыли, но какой ценой... Вот откуда взялся этот мальчик. https://www.w3resource.com/python/python-bytes.php Я там кстати ошибку допустил. Во втором слове не 3 а 4 символа должно быть. И этот мой тест надо еще раз перетестить. А по поводу регулярок. Я думаю что под капотом у питона обычная С-библиотека. Просто меня интересовали best-practices и подходы в отношении мульти-национальным строкам и кодировкам в разных языка. А змей удобен для быстрого прототипирования. Написал в REPL консоли - и получил ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:39 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Боюсь, ты и 500 строк создания не приведешь в ГУИ. Так как даже при отрисовке Война и мир там стоит Canvas.DrawText() ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravДело в том что структура динамической памяти - это по сути Синглетон. Спешу тебя огорчить: это уже давно не так. Общая куча делится на пулы по числу ядер, которые работают независимо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:44 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Ты сейчас просто описал работу ЛЮБОЙ си-прогаммы которых много. Но в топике мы говорим о твоей проблеме. О проблеме перформанса. Я здесь пока проблемы не вижу. Я очень не люблю и не хочу фантазировать (фантазия у меня богатая) за топик стартера. И я все-таки настаиваю чтобы ты обрисовал где мы блочимся. Если это malloc/free - то почему. Дро...им память. Может там одна и та-же строка миллиард раз аллоцируется? Почему мы это не видели? Может очень длинная строка? почему на прикланом уровне мы такое допустили? Зачем она нужна такая длинная в твоём Реал-тайм приложении. Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс. Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса. И если какой-то рабочий поток тоже обратится к динамической памяти - то его тормознут (заблокируют). Или ему повезёт и он заблокирует раньше, тогда гуд. При этом у нас нет инверсии приоритетов . Поэтому операции с данными на стеке, например, на порядок быстрее чем операции в куче. PS: Длинна строки как раз на это не влияет. Ну если мы не привели приложение к свопу из-за этой строки. Но это уже другая история. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravДело в том что структура динамической памяти - это по сути Синглетон. Спешу тебя огорчить: это уже давно не так. Общая куча делится на пулы по числу ядер, которые работают независимо. Это не имеет никакого значения. Просто одна из форм оптимизации. Память выделенная на одном ядре может быть освобождена на другом ядре. И это снова синглетон. Только ещё проблем добавляется. Теперь нужно как-то увязать указатель и пул памяти привязанный к ядру. Таких фокусов было полно в истории. При этом при проектировании ПО - откуда я знаю сколько ядер будет на процессоре? Сколько ядер выделит мне ОС в данный момент времени? Это всё проблемы... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:50 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravТак вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс. Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса. И если какой-то рабочий поток тоже обратится к динамической памяти - то его тормознут (заблокируют). "Ой, ё-ё-ё-ё..." (с) Я понимаю блокировку одного пула на время выделения. Но откуда у тебя блокировка на поток событий-то? Даже если сообщения выделяются динамически, у них совершенно отдельный пул памяти. Отдельный как других потоков, так и от кучи приложения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс. Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию. Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали. petrav Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса. А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем. Почему оно на каждый mouse move чото блокирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravИ это снова синглетон. Ты всерьёз веришь, что мутекс это такая тяжёлая штука, что их нельзя выделить 100500 и все стоят в очереди за одним-единственным? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Я понимаю блокировку одного пула на время выделения. Но откуда у тебя блокировка на поток событий-то? Даже если сообщения выделяются динамически, у них совершенно отдельный пул памяти. Отдельный как других потоков, так и от кучи приложения. Ну хорошо. Возвращаемся к Qt. Докажи, что у событий Qt отдельный пул-памяти? Может и есть. boost::pool (если не ошибаюсь) один из вариантов оптимизации. Можно на WinAPI отдельную кучу создать. Но... я сомневаюсь что это так. Точнее уверен что это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:00 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravВозвращаемся к Qt. Докажи, что у событий Qt отдельный пул-памяти? Нет. Ни за что. Мы не будем возвращаться к одному из самых кривых и тормозных фреймворков. Вы уж как-нибудь сами с ним живите. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravИ это снова синглетон. Ты всерьёз веришь, что мутекс это такая тяжёлая штука, что их нельзя выделить 100500 и все стоят в очереди за одним-единственным? Так это как раз и зависит то он задачи. Если тебе нужно выжать максимально качественное мягкое реальное время из компа, то это одно. Если на Повер Поинт мултик показать, то другое. Можно конечно на всё забить, можно много чего сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Просто одна из форм оптимизации. Закон программиста - "Преждевременная оптимизация - зло". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:06 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс. Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию. Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали. petrav Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса. А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем. Почему оно на каждый mouse move чото блокирует. MSVC + Qt. Да нет никакого mouse move, потоков GUI или ещё какие-то потоки, ты пойми. Ничего этого нет. Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Так это как раз и зависит то он задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:08 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton пропущено... Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию. Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали. пропущено... А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем. Почему оно на каждый mouse move чото блокирует. MSVC + Qt. Да нет никакого mouse move, потоков GUI или ещё какие-то потоки, ты пойми. Ничего этого нет. Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё. Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много и так часто лезет в синглтон? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать. Давай всё таки сделаем синтетический тест и посмотрим на него. Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю. современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции больше выдают только сильно специфические, вроде хаотических - но там свои приколы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
kealon(Ruslan) petrav пропущено... Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю. современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции больше выдают только сильно специфические, вроде хаотических - но там свои приколы Автор говорит у него - слабое железо. Ну там не i7 скорее всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много и так часто лезет в синглтон? У меня ничего и никуда часто не лезет Мы рассуждаем о вопроса производительности. И да это не похоже на разработку web-серверов на Шарпе где просто докупают ещё один сервер в стойку, хотя и там всё сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravМы рассуждаем о вопроса производительности. "Давайте спорить о вкусе устриц. До хрипоты." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:21 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Автор говорит у него - слабое железо. Ну там не i7 скорее всего. ибо там особо ещё нет таких сильных проблем со сбросом кеша ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
kealon(Ruslan) petrav пропущено... Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю. современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции больше выдают только сильно специфические, вроде хаотических - но там свои приколы И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton, Пора спорить на коньяк что нет у ТС этой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:26 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много и так часто лезет в синглтон? У меня ничего и никуда часто не лезет Мы рассуждаем о вопроса производительности. И да это не похоже на разработку web-серверов на Шарпе где просто докупают ещё один сервер в стойку, хотя и там всё сложно. Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory manager. Я с удовольстием на нее навалился-бы. Но мне валится пока некуда. Если я сам буду писать синтетические бенчмарки которые выделяют и убивают строки - это будет какая-то шизофрения. Ты согласен? Тем более что я - убежден что обще-системные библиотеки зачастую лучше чем мы о них думаем. И анализ производительности измерительными штуками обычно показывает что мы их просто не так используем. А это уже - вопрос к прикладному коду. Вобщем я убежден что у тебя есть проблема в прикладном коде. Не в строках и не в мемори менеджерах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:29 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
по-моему последние 15 страниц мы обсуждаем сферического коня в комнате, где его нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:30 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravНу просто теоретически, как реализовать менеджер памяти в lock-free стиле? Дерево свободных блоков для минимизации времени нахождения в критическом коде и спинлоки, например. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:35 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory manager. Я не предлагаю тебе решать мои проблемы и наваливаться на них. В участках кода критичных к производительности я просто стараюсь не обращаться к динамической памяти, не использовать потенциально тяжёлых модулей типа std::stringstream, boost::fomat или boost::stringalgo. Вот в потоке GUI это позволительно. Стараюсь что бы рабочие потоки как можно меньше блокировались на мьютексах с потоком GUI. У меня нет проблем с реализацией мягкого реального времени даже на слабых компах. Судя по отчётам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:36 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось. для реализации менеджера памяти не обязательно реализовывать такие высокоуровневые конструкции как стек и список хаотические, например, вообще не заморачиваются, берут номер операции процессора, далают от него хэш и по нему пытаются сбить бит занятости блока в линейном массиве: получилось - блок выделен, нет - ещё попытка. При неполной банке это очень быстро. Но это конечно вольный пересказ, а не руководство к действию, в реальности всё конечно покрыто определёнными техническими трудностями и ньюансами. ИМХО вообще не стоит по этому поводу заморачиваться, кроме образовательных целей, если вы не пишете что-то очень высокого класса. Лучше стандартных врят ли получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:37 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Несколько мыслей. Я один раз чисто случайно читая Stackoverflow наткнулся на закрытый топик. Его закрыл модератор стековера. Но больше меня поразила резолюция. Там было по английски написано. - "Ваш вопрос не имеет прикладного смысла. Постарайтесь пересмотреть ваше задание." - автор-же в топике просто в цикле что-то там икрементировал или декрементировал. Вобщем был озабочен какими-то атомик-бенчмарками и по ним спрашивал. Я давно знал что модеры стековера очень суровы и решительны. И мне сама по себе идея понравилась. Идея обоснования многих бенчмарков. Еще мысль. Давно во времена моей производтвенной практики в *телекомах мой начальник (большой алкоголик и любитель пошлых анекдотов) устав слушать мои рац-предложения сказал мне - "Знаешь. У каждой вещи есть своё предназначение. У жопы - предназначение - делать дефекацию. Или срать. Хотя есть некоторые мужчины которые ищут у чужой жопы другой смысл." Вобщем у менеджера памяти (MM) есть своё предназначение. Но нам не стоит искать или ждать от него (MM) чего-то другого. Я сильно сомневаюсь что от MM (Linux or Windows) мы выдавим 40 млн транзакций на выделене (и освобождение). Ведь. задача стоит более широко. Там еще и идет логика процессинга строк. Физическое копирование. Реаллокация (на расширение). Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и профессионально. Контрибуторы Linux e.t.c. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 19:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и профессионально. Контрибуторы Linux e.t.c. Допустим мы на Qt (LOL) пишем высоконагруженный сервер. Вызов QString::normalized() на каждый запрос от клиента будет обращаться к динамической памяти. Как же ты собрался не ДДОС-ить Менеджер Памяти? Да любой высокоуровневый язык программирования тут начнёт ДДОС-ить и ты даже не догадаешься где. Тогда тебе сервер нужно на Си переписывать. Неожиданные от тебя аргументы пошли. :) Тебе нужно говорить по другому: будет тормозить, расширим кластер ещё на один сервер, который арендуем у провайдера. И это будет правильно, если ваш бизнес приносит деньги и удовлетворяет заказчиков. А ДДОС - да что там такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 20:27 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav пишем высоконагруженный сервер. Вау. 16 страниц в мусорку. Начинай по новой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 20:33 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и профессионально. Контрибуторы Linux e.t.c. Я не очень помню архитектуру веб-серверов. Но насколько помню дело так обстоит: - Приходит допустим GET запрос от пользователя. - Из пула потоков берётся свободный поток и данные передаются ему на обработку. - На сервере есть пул объектов подключения к БД. Но вот есть ли связанный с каждым потоком ещё и пул строк? И как он вообще мог бы быть реализован, вот интересно. Какая у строк будет длина? Если такого пула нет - то каждый запрос многократное обращение к динамической памяти. А что со всем другими типами и объектами? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 20:45 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и профессионально. Контрибуторы Linux e.t.c. Допустим мы на Qt (LOL) пишем высоконагруженный сервер. Вызов QString::normalized() на каждый запрос от клиента будет обращаться к динамической памяти. Как же ты собрался не ДДОС-ить Менеджер Памяти? Да любой высокоуровневый язык программирования тут начнёт ДДОС-ить и ты даже не догадаешься где. Тогда тебе сервер нужно на Си переписывать. Неожиданные от тебя аргументы пошли. :) Тебе нужно говорить по другому: будет тормозить, расширим кластер ещё на один сервер, который арендуем у провайдера. И это будет правильно, если ваш бизнес приносит деньги и удовлетворяет заказчиков. А ДДОС - да что там такое. Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить. Я опять-же привлекаю в топик для консультации Питон (прошу прощения). https://docs.python.org/3/library/unicodedata.html Код: python 1. 2. 3. 4. 5.
Смело добавляй его в конструктор. И если строка нормализована то - ничего делать не надо. Тоесть ее поведение будет такое-же как и раньше. Тоесть как работали так и работаем. Вангую что by use-case таких волшебных комбинаций символов будет очень мало. Нижнаяя часть ASCII-кириллица их почти нет. Я вот с трудом нагуглил вообще эти примеры. К сожалению в моей сборке (Python3.6.9.+unicodedata2) этот метод еще не реализован. Надо обновлятся. Но я думаю что такой предикат должен быть и в Qt, и в cpputf8. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 20:52 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravНо вот есть ли связанный с каждым потоком ещё и пул строк? Повторяю ещё раз, медленно: Линукс (GLIBC) на котором крутятся большинство уэб-серверов использует отдельные кучи для потоков. Пристрелите уже этот топик. Вместе с аффтаром. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:00 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить. Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике. Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно. Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:15 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить. Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике. Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно. Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут. Давай еще один инженерный вопрос. Каким образом эта строка у тебя появилась в системе? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:28 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Давай еще один инженерный вопрос. Каким образом эта строка у тебя появилась в системе? Допустим она пришла через GET запрос. Я как бы уже очень много лет не работаю в web, так что... :) При этом, мы заранее не знаем какие именно параметры нам придут. Параметры мы получаем через коллекцию строк. Допустим пришёл "productName" и по логике это имя товара, который наш клиент уже покупал. Так же из БД мы подгрузили имя производителя, адрес доставки, имя курьера и хотим сделать отчёт. При этом такой товар клиент мог покупать многократно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Допустим она пришла через GET запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:54 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит? Возможно Windows Sockets API? Или поверх нее там еще какая-то механика стоит наподобие HttpClient. Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням этой модели. И у нас - много точек где можно применить оптимизации и трансформации. Возможен такой вариант что вопрос кодировок решается на HttpServer. Например когда клиент коннектится он шлёт атрибут Accept-Charset где он сообщает серверу что он ПРИНИМАЕТ ответы в такой-то кодировке. https://developer.mozilla.org/ru/docs/Web/HTTP/Заголовки/Accept-Charset ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 21:59 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav , Дело ваше, слушать или нет. Но в десктопе, веб и 3D визуализации совершенно разные архитектуры и методы программирования. Если прыгаете с одного на другое как школьник, это идиотизм. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 22:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит? Возможно Windows Sockets API? Или поверх нее там еще какая-то механика стоит наподобие HttpClient. Мы обсуждаем сервер. mayton Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням этой модели. И у нас - много точек где можно применить оптимизации и трансформации. Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача. Кстати интересная тема: Dynamic Lock-free memory allocators . Плохо с английским. :( Где-то на половину понял. Но что-то мне подсказывает, что там проблем ещё больше чем я думал. Нужно углубляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:16 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravМы обсуждаем сервер. Внезапно. А ведь ещё недавно это был "офисный софт". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:19 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит? Возможно Windows Sockets API? Или поверх нее там еще какая-то механика стоит наподобие HttpClient. Мы обсуждаем сервер. Ну это просто прекрасно. Значит у тебя есть приложение в котором есть UI и есть некая серверная часть. Типа HttpServer. И всё это крутится в одном Windows-process. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:20 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача. Я говорю о стеке технологий. И на каждом уровне этого стека строка имеет место. Где-то она - сырая. Порезанная в виде кусочков лежит тихо себе в буферах сокета. Потом она - попадает на Handler Get запроса. Там она уже будет лежать в прикладной кодировке. В соответствии с правилами HTTP протокола и твоего приложения. Тут можно загибать пальцы потому-что транформация строки уже началась. Далее ты хочешь с ней сделать еще одну транформацию. Нормализовать комбинации utf-8 символов. Мой поинт в том чтобы сократить это количество фаз и свести их просто к алгоритму который делает чуть больше действий. На память это особо не повлияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:27 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Мой поинт в том чтобы сократить это количество фаз и свести их просто к алгоритму который делает чуть больше действий. На память это особо не повлияет. Отправная точка была такая (ну помимо кодировок :) - Если мы будем ДДОС-ить ММ, то мы будем дураками. А мой поинт в том, что если мы пишем высоконагруженный сервер на чём-то высокоуровневом (Java, Python да тот же Qt) мы не сможем не ДДОС-ить ММ, нам нужно всё переписать на Си, даже не на С++. Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе. И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Кстати интересная тема: Dynamic Lock-free memory allocators . Плохо с английским. :( Где-то на половину понял. Но что-то мне подсказывает, что там проблем ещё больше чем я думал. Нужно углубляться. Тут еще пишут что аллокация памяти может лагонуть по причине того что страницы-конкуренты должны сойти в swap-file/paging-file. Еще тут надо рассмотреть операционку. Могут быть сильные отличия в том как Windows и как Linux интерпретирует свободную память и что они делают когда ее не хватает и многое другое. Вот когда занимался тюингом Oracle9i на Windows - там просто голова кругом шла от различий. А поддерживать нам надо было оба варианта. Продуктив у нас стояли на Винде а тестовые - почему-то на RHEL. И что ОС делает когда нет непрерывного фрагмента нужной длины. Какие тут стратегии аллокации. С растущим размером блока экстента. Ну там... или в своём потоке держат "пульчик" на сотню строк среднего размера. Какого размера? Я-бы предложил формулу вида 95-й процентиль от выборки всех строк. И округлить в большую сторону на параграф или на DWORD как будет удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:51 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе. И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ. А. Тоесть ты снизошёл до моего низкого уровня и перевел пром-оборудование на сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 23:57 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton petrav Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе. И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ. А. Тоесть ты снизошёл до моего низкого уровня и перевел пром-оборудование на сервер? Почему? Наоборот... всё наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2019, 00:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Ладно. Чёто не клеится наш топик. Толи под гнётом NDA. Толи из скромности но ты ничего так и не выдал о своей архитектуре. Давай может мы этот топик прикроем? А ты соберёшся потом с духом и выложишь правду-матку. В новой теме. Уже без кодировок. А по сути. Просто как старый модератор я знаю. Лучше закрыть топик чем превратить его в помойку. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2019, 00:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton, Закрывай. Без проблем. Создадим ветку про лок-фри выделение и освобождение памяти. Но потом :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2019, 00:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Модератор: ОК. Закрыто ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2019, 00:18 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Допустим у меня есть такой код: Код: plaintext 1. 2.
Будучи сохранённым в файл в кодировке utf-8 with BOM в MSVC первая строка в кодировке local-8bit, а вторая строка - utf-8. Конечно, речь идёт о времени исполнения приложения. Вопрос: что будет с этим файлом в случае Windows+MinGW и Linux+GCC? В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости? Ни то, ни другое не определено языком. всё зависит от конкретного компилятора, а совместимость между ними -- от двух компиляторов. Читай доки по двум компиляторам. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 11:40 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav crutchmaster petrav, Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом. Это было бы идеально. Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна. UTF-8 нужен что бы строки передавать в интерфейсы Qt. Он понимает только UTF-8. Можно, конечно, каждый раз преобразовывать средствами самого Qt. Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте. Use English then, Luke! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 11:41 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017506]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
281ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 371ms |
0 / 0 |