powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
409 сообщений из 409, показаны все 17 страниц
MSVC и GCC: совместимость кодировок исходников
    #39894873
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим у меня есть такой код:
Код: plaintext
1.
2.
const char *s1 = "Привет.";
const char *s2 = u8"Пока.";


Будучи сохранённым в файл в кодировке utf-8 with BOM в MSVC первая строка в кодировке local-8bit, а вторая строка - utf-8. Конечно, речь идёт о времени исполнения приложения.

Вопрос: что будет с этим файлом в случае Windows+MinGW и Linux+GCC? В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894876
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Windows+MinGW и Linux+GCC
или Qt Creator?
Там уже свои заморочки.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894878
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894883
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Windows+MinGW и Linux+GCC
или Qt Creator?
Там уже свои заморочки.

Ну вообще да. Именно в связке с Qt. Но там же вроде GCC...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894898
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Но там же вроде GCC...
что в настройках поставите.

petrav
Именно в связке с Qt

extern QString CONST_NAME;
QString CONSTZNAME = " Привет..." ;
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894900
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
QString CONSTZNAME = " Привет..." ;

CONST_NAME окапечатка
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894901
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом.

Это было бы идеально. Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна. UTF-8 нужен что бы строки передавать в интерфейсы Qt. Он понимает только UTF-8. Можно, конечно, каждый раз преобразовывать средствами самого Qt.

Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894902
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
utf-8 with BOM
да это формат для Qt Creator
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894905
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.
Прогресс не стоит на месте. Уже лет 10 как все перешли на utf-8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894906
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна
То есть, находишь опечатку и ставишь пересобирать - норм. Заюзать попсовый gettext - не норм.

Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.
Ты думаешь я тебе втираю тут про ascii от хорошей жизни?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894916
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
utf-8 with BOM
да это формат для Qt Creator

Т.е. с такой кодировкой исходников у меня будет и utf-8 и однобайтовые строки в любом окружении? Windows/Linux + MinGW/GCC в любых допустимых их вариациях? Отлично спасибо. :) Вы меня успокоили.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894919
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

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

То есть, находишь опечатку и ставишь пересобирать - норм. Заюзать попсовый gettext - не норм.
Имею большой опыт работы с подобной системой локализации от Qt. Я проклял всё... тогда. :)
Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.
Ты думаешь я тебе втираю тут про ascii от хорошей жизни?[/quot]
Это-то я понимаю.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894922
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
в любом окружении?
не бывает ничего универсального и любого в жизни.
Это закон.
Я компилил под линукс и второй раз под те де исходники под винду.
Работало.
Что я делал не так?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894924
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
в любых допустимых их вариациях
матрицу вариантов еще напиши.
Практический вопрос топика или теория?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894930
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
в любых допустимых их вариациях
матрицу вариантов еще напиши.
Практический вопрос топика или теория?

Я спрашивал в каком формате мне файлы кодировать, что бы при задаче (вполне вероятной) портировать на Linux (или на MinGW) мне не пришлось всю программу переписывать. Ответ я получил: файлы исходников в кодировке utf-8 with BOM.

И всё. :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39894938
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Файлы в utf-8 само ide требует при открытии.
Причем плевать какой текст и код там будет написан.
Тогда всё.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895077
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ спрашивал в каком формате мне файлы кодировать

В той, которую укажешь компилятору специально для этого предназначенным ключом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895091
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
...В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости?

utf8+bom - кроссплатформеннее некуда. И разлюбезная Qt их понимает без дополнительных стуков в бубен.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895161
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.
Enjoy your Windows™®
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895271
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.

не потому ли, что MS изобрела свои собственные кодировки (codepages), штобы "не быть как все"
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895377
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
petrav
Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.

не потому ли, что MS изобрела свои собственные кодировки (codepages), штобы "не быть как все"

А что такого Майкрософт разработала? UTF-16? BOM? Я просто не в курсе.

И уж точно не майкрософт разработала язык в котором восемь строковых типов и отсутствуют инструменты работы с "супер" кодировкой utf-8:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char*
string
wstring
u8string
u16string
u32string
string_view
wstring_view


Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895385
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

и отсутствуют инструменты работы с "супер" кодировкой utf-8
Ты не знаешь что из себя представляет utf-8, а виноваты клятые крестовики.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895398
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

и отсутствуют инструменты работы с "супер" кодировкой utf-8

Ты не знаешь что из себя представляет utf-8, а виноваты клятые крестовики.
В теории знаю, там ничего сложного. Я вчера гуглил и везде советуют использовать сторонние библиотеки: ICU или utfcpp. Или писать свои костыли. В библиотеках ICU и utfcpp наверняка тоже свои велосипеды и костыли типа QString.

Особенно меня убило, что они std::mblen() сделали *не* потокобезопасной или заторможенной из-за скрытого использования TLS.

Что я делаю не так?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895411
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
В теории знаю, там ничего сложного.

Я вчера гуглил
Так, всё понятно.
std::mblen()
И что ты собрался им мерить?
везде советуют использовать сторонние библиотеки: ICU или utfcpp.
Конечно везде советуют сторонние библиотеки. Плюсы предоставляют инструменты для работы с кучей байт. Символы utf - это не байты. Длинна символа может быть от 1 до 4 байт, там могут быть еще всякие модификаторы и прочие подводные камни. Ты все это собрался реализовать?
Что я делаю не так?
Ссыш против ветра. Ты пишешь под кутэ? Вот и юзай его фишки. А utfcpp - вообще header-only, какие проблемы? Но нет, надо жрать кактус с wchar*/wstring и ныть о том, какие все му**ки.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895419
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895427
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
На Qt я пишу только GUI.
он прав. Пиши всё.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895440
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Он возвращает длину текущего многобайтового символа. В байтах.

Я это знаю уже лет 10-ть.
Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню.

Вот это меня и раздражает, что в 2019-м году, после стольких лет развития, С++ не предоставляет возможности работать со строками, а только с кучей байт работает!
Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху.

Завтра это костылирование перестанут поддерживать и что тогда?
Оно идеально работает, зачем его поддерживать? Если оно еще не идеально, то после завтра приделают патч.

На Qt я пишу только GUI.
Там в qt есть чуть ли не маленькая галактика, если ты так не хочешь тащить utfcpp. Не нравится тащи вон, boost. Это промышленная либа, которую поддерживают серьёзные люди, всё как тебе нравится.

А utfcpp - это сторонний костыль.
Костыли - это твои потуги с wchar.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895441
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А что такого Майкрософт разработала? UTF-16? BOM? Я просто не в курсе.

cp1251 и ещё 100500 cp (codepage)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895443
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта?

русские буквы же в ASCii есть по одному байту
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895449
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
crutchmaster
Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта?

русские буквы же в ASCii есть по одному байту
ну не влазил китайский и сделали utf8 с двумя.
Так?
Или ты антиглобалист?)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895450
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху.
imho здравая мысль.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895453
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

В ASCII 128 символов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895454
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav
Он возвращает длину текущего многобайтового символа. В байтах.

Я это знаю уже лет 10-ть.

Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню.
Ну тогда давай с азов, если тебе не сложно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    char s1[128] = u8"Привет.";
    auto b1 = mblen(s1, std::size(s1)); // == 2.

    char s2[128] = "水."; // Тут был иероглиф.
    auto b2 = mblen(s2, std::size(s2)); // == 3.

    char s3[128] = "Hello.";
    auto b3 = mblen(s3, std::size(s3)); // == 1.



Длина текущего символа в байтах. В чём я не прав?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895458
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Код: plaintext
1.
Тут был иероглиф.

я не спец, но там есть еще не один иероглиф, а лексемы. То есть буква-мастер и буква-клиент.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895461
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

авторДлина текущего символа в байтах.
Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895466
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
1. Это очевидно, не? Если a - латинская, офкосс.

Того символа на который указывает первый аргумент. Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895472
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
Вот:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    // Тут глюк с размерами буфера, но ладно.
    char s1[128] = u8"Ыt°";
    char *s2 = s1;
    int b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 1.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 2.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895481
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
А вот мы вычисляем длину строки. Длина строки измеряется в символах, конечно, ни как иначе!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    // Тут глюк с размерами буфера, но ладно.
    char s1[128] = u8"Ыt°";
    char *s2 = s1;
    int b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 1.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 0. Конец строки.
    // И того, три символа и *шесть* байт. Только что написали тест вычисления
    // длины строки в utf-8. Если, конечно, mblen() имеет отношение к utf-8.
    // Что явно не написано, но мультибайтовая кодировка у нас только одна.
    // Нужно конечно явно установить локаль на utf-8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895485
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
На Qt я пишу только GUI.
он прав. Пиши всё.

Тут нельзя быть правым или не правым. Писать всё на Qt - это вопрос проектирования. Решение зависит от:

1. Целей разработки.
2. Рабочее окружение (люди).
3. Унаследованный код.
4. Философия проектировщика.
5. Планы на будущее.
6. Etc...

Я пишу логику не используя Qt - он только для GUI. Таково проектное решение.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895490
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Того символа на который указывает первый аргумент.

Всё, дошло, не прав. Я не понял, что делает mblen, думал он считает длину всей строки

Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу.
И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895493
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum...
А что в этом не так?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895495
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Какая разница, если у тебя и так уже qt в проекте. Тебе всё равно придётся работать с qt'шным функционалом. Причём тут проектирование?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895497
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Тут нельзя быть правым или не правым.
можно.
Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш.
Все остальное - ОГРАНИЧЕНИЯ.
Просто скажи, что это уже решено. И всё.
Так как любой новичок читая проблему не врубится в проблему).
Например,
Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Это гуи или нет?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895499
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух,

В ASCII 128 символов.

127
хм... походу extended ASCii это плод фантазии виндузятников...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895503
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторchar s1[128] = u8"Ыt°";
можно же конвертнуть в wstring, сделать: .size()/.substr()/.rfind(), затем обратно в string
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895504
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

127 и нулевой.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895505
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По логике на Qt отвечаю сразу и товарищу crutchmaster .

PetroNotC Sharp
petrav
Тут нельзя быть правым или не правым.
можно.
Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш.
Все остальное - ОГРАНИЧЕНИЯ.

Нет, это не ограничение, это вопрос проектирования . Может быть мне нужно будет модули логики использовать в проекте где нет Qt. Может там только С++ или gtk.

Писать логику на Qt - вот это ограничение. Да.

PetroNotC Sharp
Просто скажи, что это уже решено. И всё.
Так как любой новичок читая проблему не врубится в проблему).
Например,
Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Это гуи или нет?

Это вопрос риторический или нет? Или просто разговор поддержать? :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895508
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Это вопрос риторический или нет? Или просто разговор поддержать? :)
это вопрос по архитектуре.
"инструмент под задачу" (с)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895510
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
модули логики
строки входные данные или предмет обработки?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895512
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем?

Да не двигаю я указатели, я не использую utf-8. Я возмущаюсь, что С++ не поддерживает работу со строками, а мне отвечают, что мол и не нужно в С++ со строками работать -- с кучей байт работать зашибись, идеально.

И я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов, а со строками он не работает? Вот это и называется закат развития и уход в маразм.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895516
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
модули логики
строки входные данные или предмет обработки?

Логика: строки, математика, работа с файлами, сетью и периферийным оборудованием. Ничего необычного.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895518
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов, а со строками он не работает? Вот это и называется закат развития и уход в маразм.
язык для строк PHP.
А не java или шарп. Заметь.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895523
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой сегодня мотиватор - использовать 8 битные кодировки?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895525
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axis
petrav
Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum...
А что в этом не так?

std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++. "typedef unsigned char byte" тоже в файловый поток нормально не выводится. Это гемор и проблема при написании шаблонов.

По сути в С++ нельзя распечатать восьмибитное значение - по нормальному.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895526
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
русские буквы же в ASCii есть по одному байту
ASCII - семибитная кодировка.
В TeXBook-е есть замечательная цитата в одной из глав, которая заканчивается, примерно, так: "... необходимость использования более 128 символов в общецелевых приложениях всё ещё неочевидна".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895528
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Какой сегодня мотиватор - использовать 8 битные кодировки?

Простота, прямая индексация, унаследованный код, сложность переписывания на uft8. Я не знаю статического анализатора который выявлял бы то что нужно переделать.

Вот скажите, плиз, где в библиотеке utf8cpp функция toupper()? Может не там ищу? Только не говорите мне, что размер в байтах может измениться.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895530
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
В чём я не прав?
Даже в русском алфавите есть два символа, которые могут быть представлены или одиночными кодами или последовательностью "базовый символ плюс диакритика".
Собственно именно составные символы гробят на корню простую и удобную идею "строка это массив (хрен с вами - много)байтовых символов".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895535
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

авторИ я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов

Начнем с того, что там один тип - basic_string. А этот твой std::string - это лишь basic_string<char>. Как ты уже догадался, std::wstring - это basic_string<wchar>

автора со строками он не работает?
Работает. С любыми строками, где символ фиксированной длинны, о чём я тебе и сказал в начале треда. С utf8 не работает, потому что utf8 - говно с непостоянным размером символа и любые операции с этими строками подразумевают всякие извращения.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895537
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Какой сегодня мотиватор - использовать 8 битные кодировки?
Простота, прямая индексация, унаследованный код, сложность переписывания на uft8.
Однобайтовые кодировки работают с массивом байт, utf8 тоже позволяет работать со строкой, как с массивом байт.
Собственно, utf8 - единственный вариант, позволяющий (при минимальных ограничениях) работать с юникодом из кондового C API.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895540
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
utf8 юникод - говно с непостоянным размером символа и любые операции с этими строками подразумевают всякие извращения.
Зачеркнул и подчеркнул.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895542
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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*? Только по делу, без словоблудия и софистики.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895557
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

Там в qt есть чуть ли не маленькая галактика, если ты так не хочешь тащить utfcpp. Не нравится тащи вон, boost. Это промышленная либа, которую поддерживают серьёзные люди, всё как тебе нравится.

boost - это скорее лаборатория и клуб профессиональных программистов. Эти программисты в рамках boost делают следующие вещи:

- Меняют программные интерфейсы своих библиотек до состояния несовместимости.
- Бросают сопровождение своих библиотек. Надоело.
- Разрабатывают велосипеды к своим же библиотекам.
- И, конечно, при развитии С++ некоторые их вещи устаревают.

И всё это я видел сам! Я использую boost, но крайне осторожно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895564
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Нет. basic_string - это шаблонный тип
Вот именно. То есть один и тот же string с одними и теми же методами, только размеры char'а другие.

basic_string_view
Тоже самое, только с защитой от изменений.

char*
Это указатель.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895566
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И всё это я видел сам! Я использую boost, но крайне осторожно.
и Qt тоже крайне осторожно.
Может библеотекобоязнь?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895571
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,
Вот именно. То есть один и тот же string с одними и теми же методами, только размеры char'а другие.
Тоже самое, только с защитой от изменений.
Это указатель.

Просил же по делу, по смыслу. Нет, очевидные вещи получил в ответ. Но сути они не меняют.

Всё это разные восемь строковых типов. А ещё два типа забыл: char[] и wchar_t[]. И того 10-ть (десять) строковых типов в С++. Но со строками С++ не работает, только с кучей байт работает, как мне сказали выше.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895572
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

А зачем тебе вообще нужен std::byte? И почему ты не используешь cstdint в таком случае?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895583
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

А зачем тебе вообще нужен std::byte? И почему ты не используешь cstdint в таком случае?

Мне он нужен как восьмибитное беззнаковое число. cstdint использую. Но std::uint8_t - это не тип, это синоним (typedef) к unsigned char. И в поток он выводится как символ, а мне нужно число. Без дополнительных преобразований и специализаций шаблонов.

Еще мне нужен знаковый восьмибитный *тип*, а не синоним!
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895585
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Путь в изоляционизм по прежнему актуален?

Говорить о кодировках без локализации - невозможно.

Давайте поговорим не о задаче - максимум. А о некотором минимуме ( например - поддержка кириллицы и 3х европейских языков в приложении).

И я думаю эту задачу мы решим.

Функции изменения регистра - не сложные но объёмистые. Грубо говоря это набор таблиц.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895596
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Путь в изоляционизм по прежнему актуален?

Говорить о кодировках без локализации - невозможно.

Давайте поговорим не о задаче - максимум. А о некотором минимуме ( например - поддержка кириллицы и 3х европейских языков в приложении).

И я думаю эту задачу мы решим.

Тогда я думаю идеальным будут utf-16 строки: std::wstring и QString. Про суррагатные пары мы забудем. :) Есть, конечно, с wchar_t проблемы, он в Linux четыре байта (нет суррагатных пар?), а в Андроид, вроде бы, один байт. Но и про Андроид забудем, там же Ява рулит.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895615
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТогда я думаю идеальным будут utf-16 строки: std::wstring и QString.

Во-первых, когда говоришь "идеальным" - всегда уточняй для чего именно.
Во-вторых, нет, не будут. Именно из-за платформенных различий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895623
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravТогда я думаю идеальным будут utf-16 строки: std::wstring и QString.

Во-первых, когда говоришь "идеальным" - всегда уточняй для чего именно.
Во-вторых, нет, не будут. Именно из-за платформенных различий.

Для разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед записью. Что ещё?

Ну и какой твой вариант?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895624
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravДля разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное
ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед
записью. Что ещё?

Простой вопрос: выбранное тобой Qt способно принимать wstring на вход виджетов?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895632
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravДля разработки офисного ПО. Что нам помешает писать с этими строками кроссплатформенное
ПО? Бинарная несовместимость? Хорошо, файлы будем писать в utf-8 - преобразовывать перед
записью. Что ещё?

Простой вопрос: выбранное тобой Qt способно принимать wstring на вход виджетов?

Нет, конечно. Но написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их вызывать - это меньше одного процента работы. Плюс гарантия отсутствия ошибок (забыл вызвать функцию преобразования).

Тему написания логики на Qt - мы уже обсудили. :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895638
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их
вызывать - это меньше одного процента работы.

И заодно - просадка быстродействия или задирание системных требований до небес. Офисному
ПО отзывчивость интерфейса важна не меньше, чем какой-нибудь стрелялке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895648
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Тему написания логики на Qt - мы уже обсудили. :)
ты не ответил. Файловый дескриптор как будешь писать?))
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895649
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Что нам помешает писать с этими строками кроссплатформенное ПО?
ценность в кроссплатформенности?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895653
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
это меньше одного процента работы
Qt это ПЛАТФОРМА а не ГУИ либа.
Ты наверно разницу не понял.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895659
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravНо написать короткие функции вокруг QString::fromWCharArray() (и обратно), а потом их
вызывать - это меньше одного процента работы.

И заодно - просадка быстродействия или задирание системных требований до небес. Офисному
ПО отзывчивость интерфейса важна не меньше, чем какой-нибудь стрелялке.

Какие требования до небес? Ты о чём? Посмотри сколько сейчас текста на твоём экране, пару килобайт - это максимум. Если из-за преобразования wstring -> QString у тебя ПО начинает тормозить, значит оно спроектировано неправильно. Я уж не говорю, что на твоём экране 99% времени занимает отрисовка графики и всё равно это ноль %% от процессора (графические редакторы не учитываем).

Даже когда ты мышкой двигаешь, то постоянная генерация событий занимает на порядки больше времени чем это преобразование. Или ты сидишь за компом времён MS DOS?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895664
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
это меньше одного процента работы
Qt это ПЛАТФОРМА а не ГУИ либа.
Ты наверно разницу не понял.

Это ты не понял. Qt - это развитая либа где есть: GUI, сеть, файловая система, поддержка многопоточности, поддержка сети.

Ты можешь пользоваться только частью этого функционала. Согласно проектному решению.

Платформы это: операционные системы, процессоры, архитектуры вычислительных систем и т.д.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895666
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpQt это ПЛАТФОРМА а не ГУИ либа.

Ну, изначально это таки библиотека виджетов, причём специфическая, для телефонов. Всё
остальное к ней прикрутили уже из-за безысходности, в результате сноуболла.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895670
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Спринг в java было так же.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895671
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Тему написания логики на Qt - мы уже обсудили. :)
ты не ответил. Файловый дескриптор как будешь писать?))

Что за вопрос? std::iostream (и прочее) не слышал что ли? Ну а про FILE* слышал?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895672
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Ты можешь пользоваться только частью этого функционала.
напиши про файл выше. Мы ждём.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895675
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Ну а про FILE* слышал?
я написал. Тебе тяжело написать аналог?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895676
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

PetroNotC SharpQt это ПЛАТФОРМА а не ГУИ либа.

Ну, изначально это таки библиотека виджетов, причём специфическая, для телефонов. Всё
остальное к ней прикрутили уже из-за безысходности, в результате сноуболла.

Изначально Qt - это как раз библиотека GUI под дескторы. Нокия их потом купила. Но на мобильном рынке у них не срослось, у Qt.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895677
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Ну а про FILE* слышал?
я написал. Тебе тяжело написать аналог?

Что написать? Как с файлами работать в С++? Что там за вопрос то был? Я забыл.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895679
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Изначально
не застал).
ПостФактум она хорошо делает кроссплатформенность.
Это же не гуи.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895682
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
забыл

Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895691
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpПостФактум она хорошо делает кроссплатформенность.
Это же не гуи.

Да. К сожалению, в ней есть и ГУИ, которое её и портит своей кривизной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895694
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Изначально

ПостФактум она хорошо делает кроссплатформенность.
Это же не гуи.

Это у тебя абсолютно бессмысленный набор слов.

PetroNotC Sharp
petrav
забыл

Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Ты хочешь что бы я переписал это на библиотеку I/O С++? Это полность тривиальный код, который легко пишется и на Си (кроме исключений) и на С++. К тому же он использует класс, которого нет в Qt. И Qt не работает с исключениями, там нет библиотеки типов исключений.

Если ты ноль в С++ я сделаю это, но за деньги. Если бы ты был толковым студентом, то при желании я помог бы тебе бесплатно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 - ресурс посвященный именно клиент-серверным технологиям в общем понимании этого слова.

Вот както так.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895725
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что означает это наше жёсткое непреклонное желание иметь строку массивом символов. Я где-то уже рассуждал
на эту тему и пришел к выводу что строка это вообще не array<char> а это stram<char>. И есть интеллектуальный
итератор который спокойно эту строку обходит.

Те редкие кейсы в которых вам внезапно (!) захотелось получить индексный доступ ко 2 или 3 или N-му элементу
строки я готов с вами здесь и сейчас рассмотреть. И убежден что такого кейса на самом деле не существует.
Особено в разрезе Dbms/Caches/BigData. Я готов его рассмотреть и я убежден что мы пересмотрим своё
отношение к индексатору строку и уберём его как рудимент. В конце концов - stream - экономнее и лаконичнее.

C++ универсальный язык программирования, а не только Dbms/Caches/BigData.

Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895726
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case.

Сколько языков и стран вы хотите поддержать в uppercase?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895731
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Помогите с простым вопросом(и): как на библиотеке utf8cpp сделать: uppercase, replace и strlen? И где этот интеллектуальный итератор по utf8? Мне действительно нужно манипулировать строками, а не просто выводить их в поток. Я не понимаю почему я должен приводить примеры этих use case.

Сколько языков и стран вы хотите поддержать в uppercase?

Интересный вопрос. Вообще по работе мне нужен английский и русский. Просто мне говорили, что local8bit не рулит. Вот я и спрашиваю, как же перейти на utf8. Мне говорят, мол С++ не работает со строками, а есть супер библиотеки, которые не бросят в сопровождении. Ну вот я и задаю вопросы. Понятно, что если для иероглифа uppercase бессмысленнен, то для этих символов он ничего не должен делать.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895745
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Пускай будет русский и английский. По сабжу. Я не работал с utf8cpp и понятия не имею о ее возможностях.

Но в соотв с принципами декомпозиции. Если мы реализуем такую функцию для 1 символа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
/**
 * Make uppercase for russian and English utf-8 chars
 * Do nothing for other range of symbols
 */
int toUpper(int utf8char) {
   ..........
}



- то мы фактически
решили задачу. Нам остаётся только итератор и билдер которые должны быть встроены в любую библиотеку.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895747
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
. К тому же он использует класс, которого нет в Qt. И Qt не работает с исключениями, там нет библиотеки типов исключений.

Если ты ноль в С++ я сделаю это, но за деньги.

Если ты ноль в Qt то информирую тебя бесплатно.
\include\QtCore\QException.h
Продолжай выпячивать безграмотность.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895750
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пр примерам посмотрел. Расчет длины у них есть через итартор.

http://utfcpp.sourceforge.net/
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// check for invalid utf-8 (for a simple yes/no check, there is also utf8::is_valid function)
        string::iterator end_it = utf8::find_invalid(line.begin(), line.end());
        if (end_it != line.end()) {
            cout << "Invalid UTF-8 encoding detected at line " << line_count << "\n";
            cout << "This part is fine: " << string(line.begin(), end_it) << "\n";
        }

        // Get the line length (at least for the valid part)
        int length = utf8::distance(line.begin(), end_it);
        cout << "Length of line " << line_count << " is " << length <<  "\n";
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895753
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
C++ универсальный язык программирования, а не только Dbms/Caches/BigData.

Спутал с высокоуровневым
https://ru.m.wikipedia.org/wiki/Высокоуровневый_язык_программирования
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895756
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Сколько языков и стран вы хотите поддержать в uppercase?
заодно, нужен ли ему join строк?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895759
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. То что они что-то там экспериментально прикрутили, то может я пропустил. Почему я вообще тебе отвечаю? С твоими понтами и вопросами такого уровня?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895767
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
экспериментально прикрутили
ты такой же прогер и тоже прикручиваешь.
Ты пропустил, так как не любишь библиотек. Некогда тебе.
petrav
Почему я вообще тебе отвечаю?

Не отвечай. Делов то.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895770
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Пр примерам посмотрел. Расчет длины у них есть через итартор.

Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895775
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
экспериментально прикрутили
ты такой же прогер и тоже прикручиваешь.
Ты пропустил, так как не любишь библиотек. Некогда тебе.

Ещё раз. Они никогда не любили исключения. И сейчас пишут о том, что Qt не завершило в своей истории разработку безопасности по исключениям. Если бы это стало полноценным - я бы узнал. Потому что Qt я использую достаточно активно, каждый день.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895778
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Пр примерам посмотрел. Расчет длины у них есть через итартор.

Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat.

Uppercase будет точно такой же.
Функция перевернется.

Ну concat - самый простой. Его complexity кстати будет алгоритмически одинакой для однобайтных кодировок и префиксных кодов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895779
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Ещё раз.

Еще раз.
Исключения работают у меня в проекте.
Пока ты пишешь велоспед, я с нуля как джун написал проект и уже сдал в продакшен.
А ты пиши, итератор по строкам.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895781
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Ещё раз.

Еще раз.
Исключения работают у меня в проекте.
Пока ты пишешь велоспед, я с нуля как джун написал проект и уже сдал в продакшен.
А ты пиши, итератор по строкам.

У меня тоже в проекте работают исключения. :) Какой джун? Какой ты проект с нуля там написал? Что это за бред вообще?

Я не пишу никаких велосипедов и итераторов по строкам.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895782
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav
пропущено...

Сорри, это Я тоже видел. Остался uppercase, replace и... да, concat.

Uppercase будет точно такой же.
Функция перевернется.

Ну concat - самый простой. Его complexity кстати будет алгоритмически одинакой для однобайтных кодировок и префиксных кодов.

Ну... Я понимаю, Вы не спец в utf8cpp, ну т.е. не пользовались. Но тем не менее uppercase, replace... хотелось бы увидеть от сообщества.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895783
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
У меня тоже в проекте работают исключения
самописные? Судя по рукописной replace через for.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895785
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Но тем не менее uppercase, replace... хотелось бы увидеть от сообщества.
работа с uri, path разве не нужна?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895786
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПускай будет русский и английский.

А потом к ним внезапно добавится немецкий и начнётся веселуха с "SS".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895788
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
У меня тоже в проекте работают исключения
самописные? Судя по рукописной replace через for.

Что такое "самописные исключения"? Поясни свою мысль. Исключения у меня наследники от классов библиотеки <stdexcept>. Если, например, не хватает std::logic_error. Или как его там.

Где я писал replace через for? Ты о чём вообще?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895790
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Что такое "самописные исключения"? Поясни свою мысль.
это вместо перехода на Qt 5.1 с Qt3 дописывать самому.
А там все поменялось.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895791
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Делай лучше свой гуй на электроне. Там строки в юикоде, не надо делать шаблоны и байтодрочить. Есть uppercase, concat и replace искаробки.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895793
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
байтодрочить
вот. Хорошее слово. Надо будет найти абсолютный путь path по относительному... Кроссплатформенно. И крындец....
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895794
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Что такое "самописные исключения"? Поясни свою мысль.
это вместо перехода на Qt 5.1 с Qt3 дописывать самому.
А там все поменялось.

При переходе с Qt3 на Qt4 (а не Qt5) действительно поменялись многие API самого Qt. Что там дописывать самому, я же привёл тебе цитату: Qt itself will not throw exceptions. А вся логика у меня работает на C++/STL. И там исключений хватает уж поверь. А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895798
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный?
по кругу пошли?
Qt 5.12.2 на винде и 5.11 на линуксе.
Скачай и посмотри.
Прежде чем качать я тут на ветке спрашивал где они у сишников))).
Ты где был?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895805
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
А ты привёл пример исключения класса которого нет в Qt - FileErrorException, разве он не самописный?
по кругу пошли?
Qt 5.12.2 на винде и 5.11 на линуксе.
Скачай и посмотри.
Прежде чем качать я тут на ветке спрашивал где они у сишников))).
Ты где был?

Ну у меня тоже Qt в районе 5.10. И там такого класса нет. Т.е. у тебя самописный класс исключений. Вот я не помню, какое исключение генерирует библиотека I/O C++. По умолчанию она их не генерирует, но можно настроить на генерацию исключений.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895811
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
тебя самописный класс исключений
нафига я бы его в папку Qt то пихал?
qt-opensource-windows-x86-5.12.2.exe
Прислать что ли?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895815
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
тебя самописный класс исключений
нафига я бы его в папку Qt то пихал?
qt-opensource-windows-x86-5.12.2.exe
Прислать что ли?

Пришли ссылку на официальную документации Qt на класс FileErrorException. Прямо здесь. Ведь это же объект этого класса пробрасывается в твоём исходном коде.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895821
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще update.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/**
 * Make uppercase for russian and English utf-8 chars
 * Do nothing for other range of symbols
 */
int toUpper(int utf8char) {
   ..........
}


std::string toUpper(std::string utf8string) {
   // TODO: Do not forget support Combining character-s processing 
   ....
}



Я помню о том что господин Сидоров упрекал нас в небрежности по отношению к комбинациям символов
с диакритикой. Я не забыл об этом. Я ставлю стикер TODO на будущее чтобы не забыть доработать
этот функционал. Пока мы сделаем "дешево и сердито".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895822
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
тебя самописный класс исключений
нафига я бы его в папку Qt то пихал?
qt-opensource-windows-x86-5.12.2.exe
Прислать что ли?

Кстати, я таки не поленился и нашёл то что ты просил. И обрати внимание никаких самописных классов исключений:

std::ios::exceptions
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895825
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
FileErrorException
именно этот класс пишется самим на любом ЯП.
Регистрируются кастомные исключения в проекте.
https://doc.qt.io/qt-5/qexception.html
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895829
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И обрати внимание никаких самописных классов исключений:

std::ios::exceptions
счас не могу оценить.
А) из коробки пока исключения устраивают.
Б) метод выше надо тестировать на винде и линукс.
Будет проект, посмотрю.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895832
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
FileErrorException
именно этот класс пишется самим на любом ЯП.
Регистрируются кастомные исключения в проекте.
https://doc.qt.io/qt-5/qexception.html

Ну вот видишь... Значит ты зачётный велосипедист. А в моём примере классы исключений стандартные.

И что за фраза такая "Регистрируются кастомные исключения в проекте"? Ты понимаешь, что так формулируя свою мысль ты выдаёшь себя как не очень в С++? Так люди не говорят в мире С++.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895833
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А в моём примере классы исключений стандартные.
это первый класс вторая четверть. Во второй класс не пробовал?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895835
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
ты выдаёшь себя как не очень в С++
я не профи в плюсах. Заходи в форум почаще.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895836
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
И обрати внимание никаких самописных классов исключений:

std::ios::exceptions
счас не могу оценить.
А) из коробки пока исключения устраивают.
Б) метод выше надо тестировать на винде и линукс.
Будет проект, посмотрю.

Протестируй, дело полезное. Под MSVC у меня работает. Есть там один нюанс. Я процитирую что не запостил:

PetroNotC Sharp
petrav
забыл

Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Хотя есть в этом коде один нюанс. Если предположить, что errorString() вернёт какое-то осмысленное и локализованное сообщение об ошибке... Типа: нет прав на открытие файла, файл открыт в другом приложении, файл отсутствует, сбой файловой системы, неправильный формат пути к файлу и все прочие варианты в зависимости от ОС и текущего языка. То, да... Это было бы интересно.

Библиотека В/В в С++ тут вернёт тривиальный строковый комментарий. Но файловый В/В в Qt не тестировал. Но это не повод делать логику зависимой от Qt.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
То, да... Это было бы интересно.
именно так.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895839
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Там осмысленное. Локализация мне не нужна была. Не проверял.
Может зависит от локали, может нет. Не знаю.
Текст что файл занят другим процессом.
Юзверь сообразит.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895841
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
А в моём примере классы исключений стандартные.
это первый класс вторая четверть. Во второй класс не пробовал?

Ну ты какие примеры заказываешь - так я и отвечаю. Пока ты спрашивал на уровне первого класса - я так и ответил. Как задашь вопрос уровня 10-го класса - я и на него постараюсь ответить, если будет мне не лень.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895844
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
PetroNotC Sharp
пропущено...
это первый класс вторая четверть. Во второй класс не пробовал?

Ну ты какие примеры заказываешь - так я и отвечаю. Пока ты спрашивал на уровне первого класса - я так и ответил. Как задашь вопрос уровня 10-го класса - я и на него постараюсь ответить, если будет мне не лень.
а по сути?
В плюсах нет пользовательских исключений?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895849
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
пропущено...

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

В смысле? Это тонкий нюанс и различие: я пишу на С++ или я пишу на Qt. Нужно понимать контекст разговора, иначе фраза будет понята неправильно. Ведь Qt на написан С++.

Конечно, программируя на чистом С++ можно написать пользовательский класс исключения и унаследовать его от стандартного std::exception. А можно свой класс исключений и не наследовать от стандартного класса исключений. А можно пробросить любой стандартный тип или своё перечисление. Всё можно. И Qt написан обычными людьми - и написан он на С++, а не на Qt.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895855
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ну вот видишь. Ты все понимаешь. Продолжай изучать 5 строк выше на Qt > = 5.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895856
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Ну вот видишь. Ты все понимаешь. Продолжай изучать 5 строк выше на Qt > = 5.

Мда... Тебе сколько лет и какой стаж программирования на С++?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895869
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, мы уклонились от темы кодировок.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895872
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav, мы уклонились от темы кодировок.
да. Он просил сылку что исключения есть, я ему дал. Все.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маппинг для 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.
unordered_map<int, int> cyrillicUpperMap;
cyrillicUpperMap[0xD0B0] = 0xD090;
cyrillicUpperMap[0xD0B1] = 0xD091;
cyrillicUpperMap[0xD0B2] = 0xD092;
cyrillicUpperMap[0xD0B3] = 0xD093;
cyrillicUpperMap[0xD0B4] = 0xD094;
cyrillicUpperMap[0xD0B5] = 0xD095;
cyrillicUpperMap[0xD191] = 0xD081;
cyrillicUpperMap[0xD0B6] = 0xD096;
cyrillicUpperMap[0xD0B7] = 0xD097;
cyrillicUpperMap[0xD0B8] = 0xD098;
cyrillicUpperMap[0xD0B9] = 0xD099;
cyrillicUpperMap[0xD0BA] = 0xD09A;
cyrillicUpperMap[0xD0BB] = 0xD09B;
cyrillicUpperMap[0xD0BC] = 0xD09C;
cyrillicUpperMap[0xD0BD] = 0xD09D;
cyrillicUpperMap[0xD0BE] = 0xD09E;
cyrillicUpperMap[0xD0BF] = 0xD09F;
cyrillicUpperMap[0xD180] = 0xD0A0;
cyrillicUpperMap[0xD181] = 0xD0A1;
cyrillicUpperMap[0xD182] = 0xD0A2;
cyrillicUpperMap[0xD183] = 0xD0A3;
cyrillicUpperMap[0xD184] = 0xD0A4;
cyrillicUpperMap[0xD185] = 0xD0A5;
cyrillicUpperMap[0xD186] = 0xD0A6;
cyrillicUpperMap[0xD187] = 0xD0A7;
cyrillicUpperMap[0xD188] = 0xD0A8;
cyrillicUpperMap[0xD189] = 0xD0A9;
cyrillicUpperMap[0xD18A] = 0xD0AA;
cyrillicUpperMap[0xD18B] = 0xD0AB;
cyrillicUpperMap[0xD18C] = 0xD0AC;
cyrillicUpperMap[0xD18D] = 0xD0AD;
cyrillicUpperMap[0xD18E] = 0xD0AE;
cyrillicUpperMap[0xD18F] = 0xD0AF;

unordered_map<int, int> cyrillicLowerMap;
cyrillicLowerMap[0xD090] = 0xD0B0;
cyrillicLowerMap[0xD091] = 0xD0B1;
cyrillicLowerMap[0xD092] = 0xD0B2;
cyrillicLowerMap[0xD093] = 0xD0B3;
cyrillicLowerMap[0xD094] = 0xD0B4;
cyrillicLowerMap[0xD095] = 0xD0B5;
cyrillicLowerMap[0xD081] = 0xD191;
cyrillicLowerMap[0xD096] = 0xD0B6;
cyrillicLowerMap[0xD097] = 0xD0B7;
cyrillicLowerMap[0xD098] = 0xD0B8;
cyrillicLowerMap[0xD099] = 0xD0B9;
cyrillicLowerMap[0xD09A] = 0xD0BA;
cyrillicLowerMap[0xD09B] = 0xD0BB;
cyrillicLowerMap[0xD09C] = 0xD0BC;
cyrillicLowerMap[0xD09D] = 0xD0BD;
cyrillicLowerMap[0xD09E] = 0xD0BE;
cyrillicLowerMap[0xD09F] = 0xD0BF;
cyrillicLowerMap[0xD0A0] = 0xD180;
cyrillicLowerMap[0xD0A1] = 0xD181;
cyrillicLowerMap[0xD0A2] = 0xD182;
cyrillicLowerMap[0xD0A3] = 0xD183;
cyrillicLowerMap[0xD0A4] = 0xD184;
cyrillicLowerMap[0xD0A5] = 0xD185;
cyrillicLowerMap[0xD0A6] = 0xD186;
cyrillicLowerMap[0xD0A7] = 0xD187;
cyrillicLowerMap[0xD0A8] = 0xD188;
cyrillicLowerMap[0xD0A9] = 0xD189;
cyrillicLowerMap[0xD0AA] = 0xD18A;
cyrillicLowerMap[0xD0AB] = 0xD18B;
cyrillicLowerMap[0xD0AC] = 0xD18C;
cyrillicLowerMap[0xD0AD] = 0xD18D;
cyrillicLowerMap[0xD0AE] = 0xD18E;
cyrillicLowerMap[0xD0AF] = 0xD18F;
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895889
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для латиницы всё проще. Она отображается 1:1 для младшего байта. Поэтому стандартные функции работать тоже будут.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для стран центральной Европы которым нужны диакритические знаки (Windows-1250)
https://en.wikipedia.org/wiki/Windows-1250

Я смотрю что можно взять эту табличку 1250 и для диакритических символов просто прибавить
или вычесть 32 и можно получить такие-же маппинги для utf-8.

Ну по крайней мере программно их создать как я сделал для кириллицы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895894
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве модульного теста. Можно взять начало Войны и Мир Толстого. Пару абзацев.

И если данный текст
-- Е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% всё мы сделали верно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895895
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, ага, проделай это для "ß" и мы посмеёмся. Немцам оказалось проще сменить правила языка.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895898
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Ага, ага, проделай это для "ß" и мы посмеёмся. Немцам оказалось проще сменить правила языка.

А что для ß ?

Не существует верхнего или нижнего кейса?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895902
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе существует верхнего или нижнего кейса?

В классическом немецком языке верхний кейс для этой буквы существует. И это - уже
упомянутая "SS".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895903
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

maytonНе существует верхнего или нижнего кейса?

В классическом немецком языке верхний кейс для этой буквы существует. И это - уже
упомянутая "SS".

Что мешает ту букву заменить на две ss? Конечно, не в одном char, ведь у нас многобайтовые строки.

Вот обратно, да проблема. Если ss не всегда означает ту букву в верхнем регистре.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895908
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЧто мешает ту букву заменить на две ss?

Одна мелочь: я не совсем прав. Точнее память меня подводит порой. При приведении к апперу
в SS она превращается только если целью такого приведения является алфавитная сортировка
результата. Во всех остальных случаях она в последнее десятилетие приводится к "U+1E9E
LATIN CAPITAL LETTER SHARP S".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895909
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Маппинг для upper-lower кириллицы в utf-8.

Да, хардкорно так, по си плюс-плюсному... Я не знаю мне задавать вопросы? Не, я лучше промолчу многозначительно. Потому что так не может быть, тут что-то другое.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895911
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

maytonНе существует верхнего или нижнего кейса?

В классическом немецком языке верхний кейс для этой буквы существует. И это - уже
упомянутая "SS".

Заказчиком данного топика выступает petrav. И он будет оценивать критерии качества upper/down case.

Беря во внимание что в мире существует 250 стран и в каждой из них по 1.5-2 языка. И существуют
страны которые распадаются и объединяются в данный момент - мы не сможем определить
финальный релиз этой функции никогда.

Мы можем просто подойти к некому критерию достаточности который будет подходящим для petrav.

А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895913
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.

Не-не, я лучше не буду соваться. А то я тут почитал википедию об этой букве и выяснил
новость, что в 2017-м году немцы таки завершили свои споры и признали аппер-форму этой
буквы. Правда, там не говорится что они решили с её алфавитным порядком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895915
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай это станет проблемой немцев.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895920
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Dimitry Sibiryakov

пропущено...

В классическом немецком языке верхний кейс для этой буквы существует. И это - уже
упомянутая "SS".

Заказчиком данного топика выступает petrav. И он будет оценивать критерии качества upper/down case.

Беря во внимание что в мире существует 250 стран и в каждой из них по 1.5-2 языка. И существуют
страны которые распадаются и объединяются в данный момент - мы не сможем определить
финальный релиз этой функции никогда.

Мы можем просто подойти к некому критерию достаточности который будет подходящим для petrav.

А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.

Тут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Причём как в стиле C++ (string), так и в стиле Си (char[]). Учитывать что на каком-то условно испанском такая-то буква апперкейсица по разному в существительных и прилагательных, конечно, нам не нужно. Пока что я вижу какой-то ужас. Во всех смыслах. Ваши таблицы... uppercase...

Но, я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы семейство printf будет работать правильно, это уже плюс. А вот всякие std::regex... ну...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895924
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции.

Видишь ли в чём засада... Офисному софту обычно не надо выполнять эти манипуляции от слова
"совсем".

petrav я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы
семейство printf будет работать правильно
Вынужден тебя огорчить, оно тоже глючит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895925
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы - это просто концепт. Как вы сделаете функцию внутри - это ваше дело. Если вам повезло
и коды символов имеют арифметический порядок как в Ascii - то делайте арифметические операции.

По сути вопрос - преобразовывать utf-8=>UTF-16=>utf-8 это может быть вопрос дизайна ВАШЕГО приложения
а не библиотеки utf-cpp. Вы сами решаете надо ли вам промежуточное представление в стандарте или вы просто
делаете ETL процедуру которая мигрирует пета-байты информации от одной базы к другой.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати я категорический противник такой метафоры что внутри std::string у нас лежит codepage-hell.
Я вижу в этом нарушение типизации и очень сложные ошибки runtime. В OpenJDK они решили эту проблему
по другому. Они просто не светят наружу байтовое представление строки никогда. java.lang.String
валиден всегда и не требует дополнительной проверки на utf-8 validate. Он просто отдает интерфейс
генерализованной строки которая выглядит как utf-16 cкоклько на нее не смотри.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895928
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravТут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции.

Видишь ли в чём засада... Офисному софту обычно не надо выполнять эти манипуляции от слова
"совсем".
Ну у всех своя специфика. Мне нужно. Ну ничего я с этим поделать не могу.

Dimitry Sibiryakov
petrav я почитал про бинарное представление utf8 и пришёл к выводу, что хотя бы
семейство printf будет работать правильно

Вынужден тебя огорчить, оно тоже глючит.

Ну я так понял, что у всех многобайтовых символов во всех байтах включён старший бит. А все управляющие символы (типа %) они ASCII и старший бит у них выключен (не больше 127). Т.е. там есть шанс на корректную работу.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895929
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Ну я так понял, что у всех многобайтовых символов во всех байтах включён старший бит. А все управляющие символы (типа %) они ASCII и старший бит у них выключен (не больше 127). Т.е. там есть шанс на корректную работу.

Да это похоже на идею префиксного кодирования. Если ее развивать то utf-8 имеет бесконечную разрядность символа.
А первая последовательность единичек первого байта по сути обозначает класс октетов.

Код: plaintext
1.
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895934
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
maytonПускай будет русский и английский.

А потом к ним внезапно добавится немецкий и начнётся веселуха с "SS".
хотелось бы подвести какой-то итог...
распечатать немецкий SS и прочую кириллицу позволяет простой string
а вот чего он НЕ позволяет, так это ровный .substr, .rfind и т.п.
также и regex (boost::regex) не может отобразить букву правильно внутри string, например так: [б]уква
он покажет только пол-буквы...
НО!
если перевести временно string -> wstring, то все эти операции пройдут корректно...
так годится ли такой вариант, когда всю дорогу юзаем string, а в отдельных ( редких ) случаях переводим в wstring и обратно?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895938
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.

ну во1, надо на if-ах
там разница раза в 3 обычно
во2, чем boost не устроил?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895943
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
mayton
А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.

ну во1, надо на if-ах
там разница раза в 3 обычно
во2, чем boost не устроил?

По твоей ссылке, подскажи плиз, какие требования предъявляются к WritableRangeT? Это нечто имеющее begin(), end()... и что-то ещё? Каким способом он будет раздвигать или сжимать строку при необходимости?

Допустим у меня есть код на Си, унаследованный или с повышенными требованиями к производительности. Вот что делать?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
mayton
А вы, если знаете что надо поправить в маппинге - прошу добавить ваши changes.

ну во1, надо на if-ах
там разница раза в 3 обычно
во2, чем boost не устроил?

По поводу boost - это не ко мне вопрос.
Возможно автор не имеет возможности его использовать.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895951
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Каким способом он будет раздвигать или сжимать строку при необходимости?

так ли это важно? Главное, чтобы работало, не глючило и не тормозило.
petrav
Допустим у меня есть код на Си, унаследованный или с повышенными требованиями к производительности. Вот что делать?

Код: plaintext
1.
2.
3.
4.
5.
6.
# char* -> string
string name = "World"s + " hello"; // теперь есть буква "s", которая на самом деле ф-я()
wstring name = L"World"s + L" hello";
u32string name = U"World"s + U" hello"; // utf32
const char* s = "Hello, World!";
string str(s); // там свой конструктор
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895952
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конкатенацию, кстати, лучше всего делать через str += str2.append(str3).append(str4)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895953
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+= и .append() это одна ф-я
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895954
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
полудух
пропущено...

ну во1, надо на if-ах
там разница раза в 3 обычно
во2, чем boost не устроил?

По поводу boost - это не ко мне вопрос.
Возможно автор не имеет возможности его использовать.

Чем меня бесит boost тем что можно неделю читать по вечерам документацию на какую-то из его библиотек, а потом выяснить, что простейшую вещь сделать нельзя. Вот смотрим. Нам дали ссылку на библиотеку Boost.StringAlgo. Смотрим пример кода:

Код: plaintext
1.
2.
3.
4.
char text[]="hello dolly!";
iterator_range<char*> result=find_last(text,"ll");

transform( result.begin(), result.end(), result.begin(), bind2nd(plus<char>(), 1) );



Ищем класс iterator_range. И находим его в библиотеке Range 2.0 . Вот сейчас выяснится что единственное требование к шаблонному параметру класса iterator_range<> -- это operator++(). Т.е. ничего про utf-8 он знать не может когда его шаблонный параметр char*. И про размеры буфера тоже он ничего не знает - хотя мог бы, ему же подставили массив известного размера.

Или выяснится что это всё агрессивно работает с динамической памятью, а через год они поменяют интерфейс этой библиотеки. Или вообще она станет deprecated.

А ведь задача то простейшая:

Код: plaintext
1.
bool mb_to_upper(char*, size_t);


Или как-то так.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895957
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895958
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там тоже нет универальной локали. Там только для 1 варианта.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895959
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати! Обратите внимание, что библиотека называет Boost Range 2.0 -- это означает, что библиотеку Range 1.0 они уже похерили. И это нормально для них, завтра ты будешь переписывать свой код потому что выйдет Range 3.0. А может им просто надоест эта библиотека и ты останешься один с её глюками.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895962
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы куда-то не туда свернули. Топик начался с кодировок исходников.

Закончили обсуждением бустов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895963
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Код: plaintext
1.
iterator_range<char*> result=find_last(text,"ll");


есть же string::rfind():
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <iostream>
#include <string>
#include <cstddef>

int main ()
{
  std::string str ("The sixth sick sheik's sixth sheep's sick.");
  std::string key ("sixth");

  std::size_t found = str.rfind(key);
  if (found!=std::string::npos)
    str.replace (found,key.length(),"seventh");

  std::cout << str << '\n';
}
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895964
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как раз это - основная причина того, что на библиотеку забивают
когда в std вышел вариант лучше
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895969
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
как раз это - основная причина того, что на библиотеку забивают
когда в std вышел вариант лучше

Там смысл примера из Boost.StringAlgo в том, что потенциально там всё без обращения к динамической памяти.

Пора завязывать обсуждение Бустов :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895976
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
юзай 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 про него, например, знать не знает...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895978
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что там у вас? Свой шаблонизатор?

Я думаю обычный билдер строки сработает еще раз в 10 быстрее.
А функция (s)printf всегда почему-то висела в топе небезопасных функций
по версии всех security отчотов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895982
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А функция (s)printf всегда почему-то висела в топе небезопасных функций

потому что stack overflow - самая частая атака на все времена
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
char *p;

# НЕЛЬЗЯ!!!
printf(p);

# МОЖНО:
printf("%s", p);


ты на строковые потоки чтоли всё намекаешь?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include <sstream>
#include <string>
#include <iostream>
 
int main()
{
    std::stringstream stream;
    std::string str{"String"};
    stream << "Some " << str;
    std::cout << stream.str() << "\n"; // Some String
}
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895984
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что там у вас? Свой шаблонизатор?

Я думаю обычный билдер строки сработает еще раз в 10 быстрее.
А функция (s)printf всегда почему-то висела в топе небезопасных функций
по версии всех security отчотов.


boost.format -- замена sprintf. Замена безопасная по следующим аспектам:

- Размер буфера.
- Типы данных.
- Корректность формата.
- Соответствие формата и передаваемых параметров.

Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895994
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты на строковые потоки чтоли всё намекаешь?
Нет я не имею в виду потоки.
Просто движки шаблонов делают не просто замены в тексте.
А обычно формируют некую логику билдера. Возможно
используют циклы внутри (таблица внутри отчота) наподобие
Apache Velocity. И обладают некой логикой языка выражений
(expression language).
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895995
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы.

Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича.
Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895996
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Типа безопасный С++ вариант sprintf. Вот это хорошая штука и не замороченная. И мега полезная. И поддерживает utf-8, вроде бы.

Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича.
Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим.

Нет, он не заменяет слова. Там примерно так:

Код: plaintext
1.
std::string = str(boost::format("Str: %s. Число: %03d.") % "String" % 12);
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895997
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну попробуйте здесь вместо "String" подставить кириллицу и французский.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896004
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
ты на строковые потоки чтоли всё намекаешь?

Нет я не имею в виду потоки.
Просто движки шаблонов делают не просто замены в тексте.
А обычно формируют некую логику билдера. Возможно
используют циклы внутри (таблица внутри отчота) наподобие
Apache Velocity. И обладают некой логикой языка выражений
(expression language).
template<> ?
и как это будет выглядеть?

зы: stringstream, кстати, показывает 280 vs 220 у sprintf(), что вполне приемлемо, учитывая, что не надо на char переключаться
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896006
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
пропущено...

Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича.
Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим.

Нет, он не заменяет слова. Там примерно так:

Код: plaintext
1.
std::string = str(boost::format("Str: %s. Число: %03d.") % "String" % 12);


Всегда хотел спросить. Зачем вы всегда пишете явный namespace? Ведь язык позволяет вам его пропускать.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896007
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
mayton
пропущено...

Нет я не имею в виду потоки.
Просто движки шаблонов делают не просто замены в тексте.
А обычно формируют некую логику билдера. Возможно
используют циклы внутри (таблица внутри отчота) наподобие
Apache Velocity. И обладают некой логикой языка выражений
(expression language).

template<> ?
и как это будет выглядеть?

зы: stringstream, кстати, показывает 280 vs 220 у sprintf(), что вполне приемлемо, учитывая, что не надо на char переключаться

Ладно забудем эту тему. Я просто в шаблонизаторы вкладываю другой смысл. Не языковый а скорее библиотечный или фреймворковый.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896017
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Z axis
пропущено...
А что в этом не так?

std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++.
Так он и не для вывода в файловый поток делался. Почитай Motivation в пропозале.

По сути в С++ нельзя распечатать восьмибитное значение - по нормальному.Ну всё, разгоняем WG21 и закрываем проект "C++".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896018
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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;" внутри главного неймспейса
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896019
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Тут задача-то проще. Как нам научиться с utf8 выполнять простейшие манипуляции. Причём как в стиле C++ (string), так и в стиле Си (char[]). Учитывать что на каком-то условно испанском такая-то буква апперкейсица по разному в существительных и прилагательных, конечно, нам не нужно. Пока что я вижу какой-то ужас. Во всех смыслах.


Но это не "простейшие" манипуляции, как выясняется. Даже простое склеивание строк - это уже какая-то работа с памятью, во время которой происходит много чего. Под капот ничего не прячут, потому что плюсовики люди серьёзные и их трясёт от того, что у них в стоках половина байт - нули, структуры не выровнены, и всё хранится так, что процессор постоянно не попадает в кэш. А ты тут со своими формочками на кутэ.

Ваши таблицы... uppercase...
Пиши на javascript. Там есть uppercase, concat, replace, indexOf и любая подобная херня. Все строки прохешированны, хранятся в куче, тебе не надо будет сравнивать что-то побайтово да и вообще греть голову. Возьми вон duktape или quickjs, да пристрой их к этому своему куте. Ну или луа пристрой, если считаешь жс слишком закшварным.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896021
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uppercase даже CSS умеет (text-transform)
mayton
Насчет поддерживает или нет - это мы можем проверить. Есть текст созданный рукою Льва Николаича.
Там есть и кириллица и французский. Сделайте replacement одного слова на другое. Посмотрим.

чё-то вспомнилось:
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896062
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Пиши на javascript.
он хочет onClick отправить в дллку, там в поток, запросить из базы, склеить строку, вернуть onPaint() и на onPaint ГУИ запросит длл склеенную строку.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896063
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Пиши на javascript.
он хочет onClick отправить в дллку, там в поток, запросить из базы, склеить строку, вернуть onPaint() и на onPaint ГУИ запросит длл склеенную строку.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896064
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. Глюки с утра)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896080
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Пиши на javascript. Там есть uppercase, concat, replace, indexOf и любая подобная херня. Все строки прохешированны, хранятся в куче, тебе не надо будет сравнивать что-то побайтово да и вообще греть голову. Возьми вон duktape или quickjs, да пристрой их к этому своему куте. Ну или луа пристрой, если считаешь жс слишком закшварным.

Тебе по делу есть что сказать?

Если ты хочешь начать срач и модератор разрешит: через несколько постов тебе станет крайне обидно за себя. Да тебе уже обидно как и PetroNotC Sharp тоже обидно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896085
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ты тоже по спокойнее будь. Не нервничай. Публичный форум.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896086
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axis
petrav
пропущено...

std::byte в таком виде нельзя по-человечески вывести в файловый/строковый поток С++.
Так он и не для вывода в файловый поток делался. Почитай Motivation в пропозале.

Почитал stackoverflow :) Я так понял, что std::byte в их представлении, а ещё лучше массив байтов, это некоторый обезличенный блок данных. И не символы, и не числа, а просто блок данных? Правильно? Ну... В таком прочтении, наверное, получше стало.

Но восьмибитные числовые типы всё равно нужны. Раздражает их отсутствие, иногда. Или может их добавили?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896087
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Чем либа ICU не понравилась? Разве не по теме вопрос?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896090
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Тебе по делу есть что сказать?

Так всё по делу. Строки в utf8 есть? Есть. concat, replace, upcase есть? Есть. Что тебе еще надо? Duktape, например, состоит всего-то из одного файла и заголовочника. Жрёт он мало. Так говоришь, как будто я посоветовал уйти из кодеров в интим услуги.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896119
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Тссс. У нас одна страна - sql.ru
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через сутки - поудаляю оффтоп.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896293
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Чем либа ICU не понравилась? Разве не по теме вопрос?

Повторюсь. Дело не в том, что бы подключить ICU, или решить эту задачу через WinAPI, или через QString. Это не проблема.

Тут основной вопрос в языке С++ и целях, которые ставят его проектировщики. Позиционируя С++ как универсальный язык программирования, они не удосужились реализовать работу со строками. Хотя могли бы, это не сложно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896314
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Позиционируя С++ как универсальный язык программирования, они не удосужились реализовать работу со строками.
У меня под андроид счас проект. Уверяю вас, там такой бардак)).
Что в плюсах с utf туго я не знал. Но и с ГУИ либами тоже не очень.
Считайте это фичей платформы.
Удачи!
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896325
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
это не сложно.
Ню-ню.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896330
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Возьми, да запили, раз это не сложно. Предложи патч в стандартную либу. Странно, почему до этого момента, никто этим не занялся?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896378
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Через сутки - поудаляю оффтоп.

Вы я так понимаю, большой спец в Java? Вот поясните, плиз, как эти проблемы все (с Юникодом) решены в Яве? Учитывая моменты кроссплатформенности.

Только пожалуйста, попроще, без потока специфичных требований. :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896379
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
они не удосужились реализовать работу со строками

в каком смысле "не удосужились"?
есть string, есть wstring
petrav
эти проблемы все (с Юникодом)

какие именно проблемы остались после использования wstring ?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896394
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПозиционируя С++ как универсальный язык программирования, они не удосужились реализовать
работу со строками.

А можно ссылку на документ где они его так позиционируют?

Работа со строками это как раз весьма специализированная задача. И для неё существуют
весьма специализированные решения. Например, Perl.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896395
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вот поясните, плиз, как эти проблемы все (с Юникодом) решены в Яве?
Завёрнуты в разнообразное API , позволяющее решать прикладные задачи .
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896422
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в яве даже char запихнули в класс ^^
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896426
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896429
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
в яве даже char запихнули в класс ^^
а в дельфи стринг был без класса. До некоторого момента)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896453
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
в яве даже char запихнули в класс ^^
char в Java - примитивный тип.
Character - класс-обёртка, которая ничем не лучше и не хуже других классов-обёрток.

P.S.
Не надо звонить обо всём, что напел Рабинович.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896533
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
какие именно проблемы остались после использования wstring ?


Чуть больше половины байт - нули.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896550
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух
какие именно проблемы остались после использования wstring ?


Чуть больше половины байт - нули.

В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа:

- Типичное офисное приложение типа 1С.
- Типичный графический редактор.
- Текстовый редактор с документом с оформлением, картинками и диаграммами.
- Типичная страница лонгрид на 20 минут чтения в браузере. С картинками.
- Страница ютуб в браузере.
- Типичная программа математическая.
- Десктопная/мобильная ОС.
- Типичный медиаплеер.

Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки. Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера.

Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896573
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
String s1 = "Привет";
String s2 = "world";


При этом строка s1 по идее должна внутри выделять utf-8 массив символов а вторая строка - ascii.

Тоесть форматы хранения и представления - разные.

Существуют быстрые (по времени) конструкторы которые конструируют строку из char[]. Этим пользуются
библиотеки билдеров StringBuilder для быстрых конкатенаций.

Кроме того у java-строки есть другие свойства. Например она - иммутабельна. Вы не можете изменить внутри
строки символы. Попытка делать replace() просто приводит к генерации нового объекта типа java.lang.String
где символы уже заменены. Эти опции - кивок в сторону чистого функционального программирования без concurrency.
Она (строка) также - финальна. Вы не можете унаследоваться от нее и переопределить поведение.
Она инкапсулирует длину и хешкод для оптимизации алгоритмов над ней.

Я попробовал фрагмент Войны и Мира на функции String::toUpper()/toLower(). Все отработало успешно
для кириллицы и французского. Никаких национальных настроек я не делал. Все по дефолту.
Тоесть функция toUpper скорее всего включала в себя известный сет маппингов для известных
языков.

Тест кейсы могу привести если интересно.

Какие конкретно части стандарта Unicode инкапсулированы внутри java-string я не знаю. Но я могу поискать информацию
если вам интересно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896574
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
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 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896576
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
crutchmaster
пропущено...


Чуть больше половины байт - нули.

В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа:

- Типичное офисное приложение типа 1С.
- Типичный графический редактор.
- Текстовый редактор с документом с оформлением, картинками и диаграммами.
- Типичная страница лонгрид на 20 минут чтения в браузере. С картинками.
- Страница ютуб в браузере.
- Типичная программа математическая.
- Десктопная/мобильная ОС.
- Типичный медиаплеер.

Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки. Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера.

Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут?

В типичном backend - приложении строки - самая прожорливая часть кучи. Весь современный веб стоит на процессинге
данных типа XML/Json которые в свою очередь порождают массу справочников и фабрик и прочих компонент
которые будут выделять строки и много.

Любое приложение типа бизнес-процесс которое работает с БД будет так или иначе использовать кеши со строками.
Любое приложение активно формирующее отчеты xml/Excel, PDF, html также активно будет много выделять и
использовать строк.

Я не имею ничего против вашего списка. Я просто вношу дополнения.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896578
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All.

Кто продвинут в Unicode. Помогите транформировать этот тестовый текст
MSVC и GCC: совместимость кодировок исходников
в последовательность с comnining characters.

Я расширю этот тест для функций upper/lower чтоб посмотреть как комбинации себя ведут на разных API.

Потом сделаю это для C#/Python/e.t.c.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896581
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Для всех европейских языков, в принципе, достаточно wchar_t. Можно воспринимать строку как массив символов. А про суррогатные пары (когда символ - это два wchar_t), можно забыть. Да, такое приложение крайне сложно будет доразвить до поддержки китайского и его диалектов. Но для всех европейских языков всё работает.
"Огорчу я тебя до невозможности", уже в который раз напомнив, что в кириллице целых два символа, которые могут кодироваться парой кодов и эти пары - вовсе не суррогатные.
Или вы, как и Блок считаете, что "азиаты мы с раскосыми и жадными глазами"? Ну так у немцев, французов, испанцев и прочих европейцев - тоже есть аналогичных символов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896584
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В типичном backend - приложении строки - самая прожорливая часть кучи. Весь современный веб стоит на процессинге
данных типа XML/Json которые в свою очередь порождают массу справочников и фабрик и прочих компонент
которые будут выделять строки и много.

Любое приложение типа бизнес-процесс которое работает с БД будет так или иначе использовать кеши со строками.
Любое приложение активно формирующее отчеты xml/Excel, PDF, html также активно будет много выделять и
использовать строк.

Серверное ПО -- это отдельная узкоспециализированная ниша. Согласись. Если представить себе распределённую индексирующую машину Гугла, то там 99% памяти -- это текст веб-страниц. Хотя и они уже пытаются индексировать изображения и даже видео. Но пример не слишком подходящий -- для спец разработки и инструментарии специфичные. И люди там работают с резко специфичными навыками.

XML/json/html... Вот как сравнить размер XML-файла и память когда этот документ загружен в XML-DOM? Или в браузере html-DOM. Я думаю там разница разов в пять по памяти.

Опять же. Серверное ПО (web-сервер, SQL-сервер) -- это совсем другая история, там другие правила игры. Там совершенно другой мир.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896585
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.

С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам.
И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом
и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть
от дефиниции макроса _UNICODE

И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++
строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности.

Волевого решения "из центра" - не было.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896586
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.

С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам.
И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом
и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть
от дефиниции макроса _UNICODE

И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++
строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности.

Волевого решения "из центра" - не было.
хмм. Интересный пост.
+1 имхо
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896589
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
String s1 = "Привет";
String s2 = "world";

При этом строка s1 по идее должна внутри выделять utf-8 массив символов а вторая строка - ascii.
"Когда вы говорите, Иван Васильевич ..."
Нельзя отличить US-ASCII и UTF8 - это принципиально невозможно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896590
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.
А это ничего, что UTF8 - массив байт, поддержка которого изначально была в стандартной библиотеке Це?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896592
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Но! Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.

С++ изначально находился в невыгодном положении. Он делегировал "строковый тип" не языку а библиотекам.
И мы имели CString, std::string, TString e.t.c. Это все строки. Или обертки над строками. Каждая со своим интерфейсом
и со своим поведением и со своими правилами внутреннего предсталвения. Некоторые из них могут зависеть
от дефиниции макроса _UNICODE

И господин Бьярне и комитет все эти годы занимались чем угодно только не этим вопросом. Можно сказать что в С++
строки развивались по scrum-agile. Итеративно. Решая сиюминутные потребности.

Волевого решения "из центра" - не было.

Да. Вот ты прямо сказал, то что я думаю. И... все же, эти QString, TString, TAnsiString, WxString (?), CString. Этим классам очень много лет. Почему они тогда появились? Потому что С++ тогда не был развитым языком программирования, всё было впервые и многие хотели сделать свои яхты и плыть на них.

Но годы прошли. И теперь мне советуют библиотеку ICU. Это хорошая библиотека. И что я там вижу? Класс icu::UnicodeString. Ещё один велосипед! Да в самом С++ больше десятка представлений строк. И ещё одно! В 2019-м году!

Почему так? Да те кто занимаются проектированием С++ просто занимаются не тем чем нужно. Это во времена молодости С++ было позволено, а сейчас это признак того, что люди не на своём месте.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896594
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Код: java
1.
2.
String s1 = "Привет";
String s2 = "world";

При этом строка 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.
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {

    @Stable
    private final byte[] value;

    private final byte coder;

    private int hash; // Default to 0
.....
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896595
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я ошибся в кодировках. Там
Код: plaintext
1.
2.
Latin
UTF-16


Я еще просмотрю историю коммитов. Возможно что-то проскочило из того что я говорил. А это транковая ветка.
Соотвествует JDK которой еще нет в релизе.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896597
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Да. Вот ты прямо сказал, то что я думаю. И... все же, эти QString, TString, TAnsiString, WxString (?), CString. Этим классам очень много лет. Почему они тогда появились? Потому что С++ тогда не был развитым языком программирования, всё было впервые и многие хотели сделать свои яхты и плыть на них.

Но годы прошли. И теперь мне советуют библиотеку ICU. Это хорошая библиотека. И что я там вижу? Класс icu::UnicodeString. Ещё один велосипед! Да в самом С++ больше десятка представлений строк. И ещё одно! В 2019-м году!

Почему так? Да те кто занимаются проектированием С++ просто занимаются не тем чем нужно. Это во времена молодости С++ было позволено, а сейчас это признак того, что люди не на своём месте.

Да в этих комитетах - царит какое-то разложение. Есть у них хоть один proposal который ужесточает стандарт?
И делает его более... недёжным что-ли. Предсказуемым на разрядности int к примеру.

Вот честное слово я уже не верю в комитеты. Если-бы толстая корпорация типа yandex взяла управление
в свои руки и сказала - ша бротва! Мы делаем свой С++. И там будет мать ево Unicode-строка как
фундаментальный образующий тип языка. А все синонимы мы просто выкосим нахер. И опубликуем как форк С++
стандарта по версии yandex. Я-бы встал и поаплодировал.

И жизненных примеров много. Когда источником нового языка была именно корпорация а не всякие бл...ские комитеты.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896599
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Поддержку utf-8 на уровне языка С++ они так и не разработали. Почему? Потому что думали не о программировании, а о нулях.
А это ничего, что UTF8 - массив байт, поддержка которого изначально была в стандартной библиотеке Це?

Т.е. поддержка utf-8 изначально была в языке Си и ты можешь дать ссылку на это от Денис Макалистэйр Ричи (пишу по памяти)?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896601
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++
... то конкуренты, при помощи антимонопольного комитета, сожрали бы её.
А если даже не и сожрали, то глухое игнорирование - ничем не лучше.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896602
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Т.е. поддержка utf-8 изначально была в языке Си
Вот только с ног на голову не надо ничего ставить.
Это UTF-8 был сделан так, чтобы обеспечить полную совместимость с US-ASCII. А работоспособность стандартной библиотеки гарантирована только на этом подмножестве.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Если-бы толстая корпорация типа yandex взяла управление в свои руки и сказала - ша бротва! Мы делаем свой С++
... то конкуренты, при помощи антимонопольного комитета, сожрали бы её.
А если даже не и сожрали, то глухое игнорирование - ничем не лучше.

Хм... При чем здесь антимонопольность?

Игнорирование - плевать. Если вещь ценная и интересная (как Linux в 90х) то ей будет дана жизнь.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896604
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Возможно. Если хранить вместе со строкой признак кодировки.
Я положил в строку US-ASCII и поставил признак "UTF8". Сможете уличить меня в ошибке?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896605
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Игнорирование - плевать.
Гуглу, например, скажите об этом.Если вещь ценная и интересная (как Linux в 90х) то ей будет дана жизнь.И даже не одна. Сколько, говорите, у нас сейчас линуксов?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896608
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Возможно. Если хранить вместе со строкой признак кодировки.
Я положил в строку US-ASCII и поставил признак "UTF8". Сможете уличить меня в ошибке?

Вы по use case не сможете этого сделать.

Мы же говорим о java String? Или вы о чем то другом?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896612
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Или вы о чем то другом?
О вашем исходном заблуждении.
Более того, единственная причина, по которой Java 9+ не использует UTF8 - индексация String по кодовым точкам. Сейчас это константная операция, а будет - линейная. Шипилёв, в одном из своих выступлений, отмечал, что такое изменение контракта Java SE API было сочтено недопустимым.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896614
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(пожимая плечами)
Я легко признаю ошибку если я оговорился.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896615
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Да в этих комитетах - царит какое-то разложение. Есть у них хоть один proposal который ужесточает стандарт?
И делает его более... недёжным что-ли. Предсказуемым на разрядности int к примеру.

Вот честное слово я уже не верю в комитеты. Если-бы толстая корпорация типа yandex взяла управление
в свои руки и сказала - ша бротва! Мы делаем свой С++. И там будет мать ево Unicode-строка как
фундаментальный образующий тип языка. А все синонимы мы просто выкосим нахер. И опубликуем как форк С++
стандарта по версии yandex. Я-бы встал и поаплодировал.

И жизненных примеров много. Когда источником нового языка была именно корпорация а не всякие бл...ские комитеты.

В общем, я согласен с Вами. В очередной раз с Вами соглашусь.

Но я думал о том же в контексте, что у этих комитетов просто денег нет на серьёзное проектирование. Что не могут они конкурировать в проектировании языка программирования, по сравнению с языками в которые корпорации вкладывают огромные деньги (Java, C#).

И, конечно, я не думал о Яндексе. :) Вот Гугл был бы лучшим выбором.

PS: И да, конечно, нормальная Юникод-строка в стиле Си и встиле С++ должна быть в языке С++.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896616
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гугл уже порешал для себя проблемы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896617
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ей-богу - странные вы люди ...
Казалось - в чём проблема?..
Взяли стандарт языка (черновик стандарта), выкинули из него всякий хлам и добавили разумного, доброго, вечного. Даже компилятор не надо делать с нуля - берём LLVM и чуток допиливаем "до идеала" один из фронтэндов.
Только что вы собрались делать в другой камере, если у вас перестанет собираться 90-99 процентов используемого кода?
Тоже чуток допилите?

P.S.
Windows 7 SDK
Код: plaintext
1.
2.
3.
#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86)
#define _X86_
#endif

...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896621
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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++ идёт лучше, чем во всех других языках.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896624
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух

вы юзаете string/wstring и всё. Точка.
Или, если хотите, можно жёстко указать размер : u8/u16/u32

Почитайте этот-же форум С++. Здесь каждый десятый или двадцатый топик - это кодировки и строки.
Вы тоже им всем дадите этот совет?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896625
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
полудух

вы юзаете string/wstring и всё. Точка.
Или, если хотите, можно жёстко указать размер : u8/u16/u32

Почитайте этот-же форум С++. Здесь каждый десятый или двадцатый топик - это кодировки и строки.
Вы тоже им всем дадите этот совет?

да на что жалуются то?
покажите мне уже, чего я не могу сделать, положив текст в wstring?
при том, что конверсия есть куда угодно:
Код: plaintext
1.
2.
3.
wstring_convert<codecvt_utf8_utf16<wchar_t>, wchar_t> conversion;
wstring s = conversion.from_bytes(z.c_str());
string mbs = conversion.to_bytes(L"ÆƆ");
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896629
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я когда-то FAQ собирался поднимать по вопросам кодировок и строк на C++.
Искать сейчас мне лень. Но в форуме много подобных вопросов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896630
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух

да на что жалуются то?

Жалуются что половина текста нулей, спать не могут!

полудух
покажите мне уже, чего я не могу сделать, положив текст в wstring?

Что бы Вам показать что нельзя сделать очевидным способом на wstring нужно или иероглифы знать, или найти в инете хоть одну суррогатную пару. Понятно всем лень. Или ума не хватает.

Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896632
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел нормализатор под Питон. Щас попробуем.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896635
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления.

а что "очень"?
КЛАСС целый налепить вместо типа и тормознуть абстракцией от души, как в яве?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896636
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
petrav
Смысл в чём: wchar_t действительно не очень с точки зрения идеального миропредставления.

а что "очень"?
КЛАСС целый налепить вместо типа и тормознуть абстракцией от души, как в яве?

1. Вам уже ответили, что char в Яве - это не класс. Как и в Шарпе.
2. wchar_t не вмещает всю таблицу Юникода.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896640
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В java для всех примитивных типов созданы иммутабельные объекты-обертки. Между ними работает implicite преобразование.
Авто-боксинг. Это нужно для поддержки примитивов в коллекциях и для генериков. Есть примитив char и есть пкласс Character.
Есть примитив int и есть обертка Integer.
JIT компиллятор во многих случаях умеет превращать обертки в примитивы есть есть возможность и если
это не меняет логику.

Примитивы не имеют общего супертипа в Java. Однако в Scala это исправлено.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896642
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
2. wchar_t не вмещает всю таблицу Юникода.

ну так char32_t есть (u32string)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896643
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Есть примитив char и есть пкласс Character.

ок, ок
один хер они апофеоз абсурда из классов сделали
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896663
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Язык - способ выражения мысли.

Помнишь афоризм о том что программы пишутся для прочтения человеком и т.д.?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896673
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
ну так char32_t есть (u32string)
Только нифига это не помогает хотелке "работать с со строкой символов, как с массивом кодов". Даже в рамках базовой плоскости и даже в рамках первой половины этой плоскости.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896675
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
полудух
ну так char32_t есть (u32string)
Только нифига это не помогает хотелке "работать с со строкой символов, как с массивом кодов". Даже в рамках базовой плоскости и даже в рамках первой половины этой плоскости.

char32 - это максимум четыре миллиарда символов. Это больше чем utf-8 по текущему стандарту (при максимуме четыре байта).

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

Мы тут не занимаемся алгоритмами апперкейса той немецкой буквы похожей на Бетту, которая переходит в SS в случае редких интонаций, перед тем как тебе прилетает в нос. Это не лингвистический форум. Мы не обсуждаем тут авторский стиль Пушкина. Хотя мы его уважаем. Мы не обсуждаем алгоритмы автоматического перевода или написания стихов на нейронных сетях.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896677
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
полудух
ну так char32_t есть (u32string)
Только нифига это не помогает хотелке "работать с со строкой символов, как с массивом кодов". Даже в рамках базовой плоскости и даже в рамках первой половины этой плоскости.

И теперь осталось обосновать применение понятий "базовая плоскость" и "половина (первая) базовой плоскости" в рамках обсуждаемой проблемы. Со ссылками. Иначе это будет выглядеть как... ну человек привык бросаться красивыми терминами не понимая их сути.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896707
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел Питонскую библиотеку unicode data.

Первые несколько строк я украл со stackoverflow. Далее идет - Лев Николаич.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import unicodedata

print(unicodedata.normalize('NFC', u'á'))
print(unicodedata.normalize('NFD', u'á'))
print(unicodedata.normalize('NFC', u'Ⅷ'))
print(unicodedata.normalize('NFKC', u'Ⅷ'))

print("1) Еh bien, mon prince. G&#234;nes et Lucques ne sont plus que des apanages")
print(unicodedata.normalize('NFC',"2) Еh bien, mon prince. G&#234;nes et Lucques ne sont plus que des apanages"))
print(unicodedata.normalize('NFD',"3) Еh bien, mon prince. G&#234;nes et Lucques ne sont plus que des apanages"))



á


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



Забавно. Походе нормализатор действует в обратную сторону. Склеивает комбинации. А мне нужно - наоборот.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896737
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И теперь осталось обосновать применение понятий "базовая плоскость"
ЧАВО с юникоде.орг почитайте.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896739
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы тут не занимаемся алгоритмами

Ну раз ты всё для себя выяснил, топик можно закрывать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896791
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot petrav#22029124][quot crutchmaster#22029090]пропущено...

В современной жизни текст (текстовые данные) сколько занимает процентов в памяти для приложений типа:
Ваш мирок гуи-поделок - это не современная жизнь.

- Типичное офисное приложение типа 1С.
Зависит от того, что гоняют в этом "типичном" приложении.

- Типичная страница лонгрид на 20 минут чтения в браузере. С картинками.
- Страница ютуб в браузере.

У "типичной" страницы может быть 5 мб жаваскрипта с html разметкой, которую надо генерировать, передавать и парсить. Всунул wstring уронил производительность в 2 раза.

- Десктопная/мобильная ОС.
ОС - не обрабатывает тонны текста.

Сколько? Во-первых процент очень мал, во-вторых абсолютные размеры - копейки.
В html/js/css процент юникола действительно очень мал. Там подавляющая часть - ascii. Зачем ради этого всё гнать в utf16/32 решительно непонятно.

Ну сэкономишь ты десяток мегабайт при работе за компом. На моём стареньком компе 8Гб памяти, а текста сейчас загружено ну мегабайт 20-ть при открытых 10-ти приложениях из которых два браузера.

Вы всё измеряете десктопом. Кроме этого в мире полно всего.

Так жгут нули в тексте? А глюки из-за неправильного понимания работы Юникода не жгут?
Да суйте wstring в свои гуи на здоровье. Я говорю как есть. Гуи - не центр мира, на си/плюсах пишут фундаментальные вещи, которые составляют основу ИТ инфрастуктуры. Ну, да, они немного положили на гуистов, которые херачат названия utf8 прямо в код. Там люди просто не понимают, зачем так надо делать.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896795
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-бы встал и поаплодировал.

rust/go. Вставай, аплодируй.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896796
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmasterУ "типичной" страницы может быть 5 мб жаваскрипта с html разметкой, которую надо
генерировать, передавать и парсить. Всунул wstring уронил производительность в 2 раза.

Чисто из любопытства: в какое место яваскрипту можно всунуть std::wstirng?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896797
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Гуи - не центр мира, на си/плюсах пишут фундаментальные вещи, которые составляют основу ИТ инфрастуктуры.

в этих "фундаментальных вещах" только ascii и есть обычно
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896800
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Я-бы встал и поаплодировал.

rust/go. Вставай, аплодируй.

а чему там аплодировать, они медленнее C++
всё на свете медленнее C++
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896810
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
crutchmaster
пропущено...

rust/go. Вставай, аплодируй.

а чему там аплодировать, они медленнее C++
всё на свете медленнее C++

При разработке rust и go ставились вполне себе конкретные задачи.
Go должен был заменить python как медленный язык для google - поисковых сервисов.
Заменил. Работает.

Насчет rust - я не знаю. Но убежден что мотивация была.

По поводу медленнее-быстрее. Вы, как владелец бизнеса не ставите задачу - быть быстрее языка X на 20%.
Вы хотите чтобы ваш бизнес работал и ваше ПО было удобно в дописывании и доработке. По сути это
диверсификация рисков. Вы СОГЛАСНЫ платить за потерю перформанса в 20%. Пофиг. Ведь вы покупаете
узлы облака и производительность наращивается. Но вы не согласны ждать долго разработку. Вы хотите
чтоб микросервис был поднят уже завтра. Ведь завтра - стартует маркетинг акция и вам нужен живой
и работающий endpoint. C++ в этой плоскости проигрывает языку Go. Т.к. цена разработки подобного
микросервиса на С++ будет не на 20% дороже а дороже в несколько раз. И время разработки будет дольше.
Экспертиза С++ дорого стоит. Маркетинг акция - может не взлететь к сроку.

Я описал видение со стороны своего сегмента. Быть может у вас есть другая точка зрения.
Я с ней тоже согласен. Но я просто оперирую вот такими вот терминами. Выгодно-невыгодно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896811
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Интересно. Выдержка из Python

Код: python
1.
2.
3.
4.
5.
6.
>>> "\N{GREEK CAPITAL LETTER DELTA}"  # Using the character name
'Δ'
>>> "Δ"                          # Using a 16-bit hex value
'Δ'
>>> "\U00000394"                      # Using a 32-bit hex value
'Δ'


Греческую букву Дельта-заглавная можно набрать 3 способами.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896826
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Всё это барахло передаётся телепатически, или всё таки где-то хранится/обрабатывается?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896827
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Так там ничего больше и не нужно же.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896829
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
char32 - это максимум четыре миллиарда символов.
Вы раз за разом и с упорством, достойным лучшего применения, наступаете на одни и те же грабли.
8-16-32 бита кодируют не символы, а коды. Символы состоят из одного или нескольких кодов и этот факт не зависит от кодировки.
Это больше чем utf-8 по текущему стандарту (при максимуме четыре байта)."Огорчу я тебя до невозможности".
Юникод ограничен семнадцатью плоскостями по 65536 кодов в каждой. Это даёт 21 бит на код и от кодировки не зависит - хоть в uint128 упаковывайте.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896845
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmasterВсё это барахло передаётся телепатически, или всё таки где-то хранится/обрабатывается?

Это Вы о какой части "5 мб жаваскрипта с html разметкой" сейчас говорите?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896875
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я описал видение со стороны своего сегмента. Быть может у вас есть другая точка зрения.
Я с ней тоже согласен. Но я просто оперирую вот такими вот терминами. Выгодно-невыгодно.

ну это только одна сторона медали
а вообще бизнес это не только про "купи-продай побыстрей"
да и жизнь это не только про бизнес... Вообще-то Информация нас двигает вперёд.
кому-то ещё геномы считать, кому-то погоду, а кому-то даже, прости-хосподи, ИИ подавай...
и хотят они именно побыстрей и покачественней считать.
Конечно в мире должен быть удобный инструмент для быстрой разработки (Go)
Но первое место всё равно за C++.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896879
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух

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

Это очень хорошо что вы напомнили всем нам о качестве.
Данный топик как раз начался с вопросов качества. А именно - кодировки.
И далее мы обсуждали реализацию строкового типа в С++.

Видимо не всё так хорошо в Королевстве Датском.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896883
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё познаётся в сравнении.
абсолютно ВСЕ остальные "королевства" написаны на C
ну и где там "хорошо"?
что они могут предложить, кроме очередной абстракции над C?
максимум напишут очередной вариант string, а он что, будет меньше занимать? или быстрее работать?
если бы было что-то действительно стоящее, оно бы уже было в C.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896884
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, в конце-концов, о чём вы вообще спорите?
как у программистов у вас вообще таких претензий быть не может, потому что кто-то, а вы то обязаны знать, ЧТО происходит в самом низу, КАК работает процессор, из каких кирпичиков создаётся компьютер.
У нас есть БАЙТ. И в этот БАЙТ можно запихнуть 256. ВСЁ. Большего в него не запихнёшь НИКАК.
ЧТО тут можно ещё придумать?
БАЙТ на 65536, на 16 бит? Ну вот подъедут фотонные/квантовые компы, может что-то и изменится, а пока всё это пустой трёп.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896885
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

О любой. Html с юникодом, который генерирует пхп. ЖС/Цсс с эмодзи, который ест браузер. Толстенные вебпаки с половиной npm. Json/xml, который летает туда-сюда. Html генерируется медленными язычками из шаблонов, которые тоже, надо прочитать, сделать там замены. wstring и хранение в utf16/32 просто в двое увеличило бы эту работу.

По поводу плюсов и юникода в сорцах я написал в начале треда. Ascii в сорцах и gettext - выбор человека.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896886
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧисто из любопытства: в какое место яваскрипту можно всунуть std::wstirng?
С какой стороны?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896895
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
вы то обязаны знать, ЧТО происходит в самом низу,

Программисты как и врачи сейчас делятся на прикладников и системщиков.
Прикладникам не только нужно знать байты. Им нужна строка символов).
полудух
ЧТО тут можно ещё придумать?

API нверно для работы со строками.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896956
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Забавно.
По твоей логике мы сегодня должны писать даже не на сях а на ассемблере ведь на нем были созданы все "королевства".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896959
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
char32 - это максимум четыре миллиарда символов.
Вы раз за разом и с упорством, достойным лучшего применения, наступаете на одни и те же грабли.
8-16-32 бита кодируют не символы, а коды. Символы состоят из одного или нескольких кодов и этот факт не зависит от кодировки.

Это очевидно.

Ладно. Давайте предметно обсудим. Давайте представим, что мы пишем программу (небольшую, но не тривиальную)... например, автоматизирующую работу (диагностику) с неким промышленным оборудованием. Под требования заказчика. Не важно что это, возьмём газовые турбины отечественного производства. Допустим нужно локализовать этот софт для экспорта в Казахстан. Хорошо, наверное, Вам Казахстан не близок. Пусть будет фантастическая ситуация... Мы поставляем их в Германию. Бинго!

Приведите пример, когда бы нам не хватило wstring и представления, что мы работаем с символами как с массивом.

PS: Если честно, никогда не работал с софтом управляющим газовыми турбинами, но пример гипотетический, подставьте любое промышленное оборудование. От достаточно простого, до сложного.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896960
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
полудух,

Забавно.
По твоей логике мы сегодня должны писать даже не на сях а на ассемблере ведь на нем были созданы все "королевства".

нет там такой логики, не выдумывай, я вообще о другом писал.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896964
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Ваш мирок гуи-поделок - это не современная жизнь.

Удивляют меня такие заявления от человека для которого нужно написать целую страницу комментов, что бы он понял как работает std::mblen(). Ты смотрел на сигнатуру функции и сделал такое предположение, что само существование этой функции становилось абсурдом.

1. GUI это не современная жизнь?
2. Я довольно мало занимаюсь непосредственно GUI.
3. Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику.

PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896969
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Удивляют меня такие заявления от человека для которого нужно написать целую страницу комментов, что бы он понял как работает std::mblen()

Ну протормозил немного, что сразу ржать?
1. GUI это не современная жизнь?
Гуи - это помойка, которую переписывали и будут переписывать каждые лет 5 максимум.
Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику.
Мы обсуждаем то, как кто-то не смог быстро захардкодить utf8 как в жс/жабке/etc и рассказывает, какие плюсы плохие.
PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область.
Бекенд жабка/жс/оракл для ЖКХ.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896971
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Ты смотрел на сигнатуру функции и сделал такое предположение, что само существование этой функции становилось абсурдом.

Я недооценил любовь плюсовиков к великам и подумал, что она mb_strlen.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896974
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Ты там что-то грозился насчёт js, ну так что, когда?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896976
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

Ты там что-то грозился насчёт js, ну так что, когда?

Извини, я подзабыл, что я там на счёт js грозился?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896978
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Извини, я подзабыл, что я там на счёт js грозился?


Ну как так можно!

petrav
Если ты хочешь начать срач и модератор разрешит: через несколько постов тебе станет крайне обидно за себя.


Я же жду, надеюсь, аргументы придумываю.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39896995
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

1. GUI это не современная жизнь?

Гуи - это помойка, которую переписывали и будут переписывать каждые лет 5 максимум.
Ну я видел промышленный софт, который работает десятилетиями. Хотя, конечно, ядро ОС разрабатывать круче.

crutchmaster

Мы обсуждаем именно офисный софт не завязанный на сложную лингвистику.

Мы обсуждаем то, как кто-то не смог быстро захардкодить utf8 как в жс/жабке/etc и рассказывает, какие плюсы плохие.
Ты действительно думаешь, что мне сложно подключить ICU? Вот перебрать кучу исходников, доработать их, перетестировать, объяснить окружающим зачем это надо, почему я их напрягаю и умудриться ещё и зарплату за это получить - да это сложно. Если знаешь быстрый способ - подскажи.

А плюсы тут да, плохие. Потому что не поддерживают на уровне языка работу с utf-8.

crutchmaster

PS: А ты в какой области разработки ПО работаешь? Плиз: языки программирования и предметная область.

Бекенд жабка/жс/оракл для ЖКХ.
У тебя точно такая же прикладная отрасль как у меня. Я тоже могу сказать, что из-за специфики твоей работы БД твоя не нормализирована, в софте твоём куча костылей под временные-сиюминутные требования заказчика, которые нужно сделать быстро. Через пять лет проект твоей компании упадёт под собственной тяжестью и вам придётся его переписывать. Вы начнёте проектировать новое ядро своего приложения, максимально гибкое, но через пять лет там снова будет помойка из костылей. Ява станет непопулярной и вы будете переписывать всё на Go 3.0. А потом Гуглы положат на язык Го.

И ты пойдешь разрабатывать промышленный софт на десятилетия. И не будешь подключать ICU.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897001
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Ну я видел промышленный софт, который работает десятилетиями.

Унылое зрелище, не находите?

Хотя, конечно, ядро ОС разрабатывать круче.
Кроме ОС еще есть много чего интересного.

crutchmaster
А плюсы тут да, плохие. Потому что не поддерживают на уровне языка работу с utf-8.

Так возьми другой язык, где есть юникод, да вкоряч его в свои плюсы. Наружу будешь выдавать char* никто и не заметит, что там что-то есть.

Через пять лет проект твоей компании упадёт под собственной тяжестью и вам придётся его переписывать.
Он уже прогнулся и почти рухнул 2 раза, а мы переписываем! Да ты чётров пророк!

И ты пойдешь разрабатывать промышленный софт на десятилетия. И не будешь подключать ICU.
Ну и так что ты хочешь от плюсовиков? Вот они походу и подумали, что юникод - это всё хипсторство и он особо не нужен.

А вообще плясать надо от api, а не от программных платформ. Языки дохнут и появляются а предметная область и взаимодействия остаются.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897013
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Давайте представим
Давайте в реальность вернёмся: Отображение буквы "й" . Там ещё по ссылкам полезно почитать. И по ссылкам из ссылок.
Даже если лично вы можете обеспечить для своей программы работу исключительно с NFC, то вам не удастся прогнуть под себя весь остальной мир.
Особенно странно требовать работу "в большинстве случаев" для встроенного типа языка или для стандартной библиотеки языка. И то и другое обязано работать всегда.
Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке.
Оптимальный вариант кодировки - UTF8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897018
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке.
Оптимальный вариант кодировки - UTF8.

1 байт вмещает 256 цифр (= 256 символов)
в utf8 сильно больше, чем 256 цифр
как вы предлагаете натянуть сову на глобус?
КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897020
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

Никак его не надо туда засовывать. char не соответствует символу. Надо класс, который будет предоставлять api для работы с этими char*
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897021
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек?

Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897029
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Давайте в реальность вернёмся: Отображение буквы "й" . Там ещё по ссылкам полезно почитать. И по ссылкам из ссылок.
Даже если лично вы можете обеспечить для своей программы работу исключительно с NFC, то вам не удастся прогнуть под себя весь остальной мир.

Понятно, букву Й представили в виде двух символов Юникода. На файловой системе и в utf-8 документах с иероглифами - я такого не наблюдаю. Но проблема, конечно, есть. А есть ещё символ ударения... поиск слов работать не будет. А некоторые пользуются буквой Ё. Опять проблемы с поиском и заменой. Понимаете к чему я?

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

Basil A. Sidorov
Фактически, тип char и его "расширенные" производные надо просто выкинуть - это неудачная абстракция, которая не натягивается на сложившиеся традиции естественных языков. В результате остаётся тип string, который представляет собой байтовый массив в какой-то кодировке.
Оптимальный вариант кодировки - UTF8.

Да, это было бы идеально. Я об этом тоже писал. Но они этого не сделали, они наплодили кучу сущностей, а утф-8 не поддерживают. Когда я начинаю критиковать проектировщиков С++, мне отвечают что это у меня руки кривые и я ICU не могу подключить.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897030
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух
КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек?

Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано.

Угу, особенно у военных))
Код: plaintext
1.
2.
3.
4.
QTextStream tStream(fileMy) ;
tStream.setCodec("KOI8-R");
while (! tStream.atEnd())
.....
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897031
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я подключу ICU, она что такая интеллектуальная что два представления Й будет учитывать как одно и тоже? Т.е. в одной строке utf-8 это будет один символ Юникода, а в другой два. Что выдаст операция сравнения таких строк?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897034
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скруль использует
Код: plaintext
1.
Content-Type: text/html; charset=windows-1251



А вот несуществующая страничка выкидывает шаблон без кодировки. С кракозябрами.

Это как раз в тему интернационализации и прочего.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897035
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Скруль использует
его забанят за это. Не в ногу с мировыми сайтами.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897036
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Если я подключу ICU
давно бы попробовал.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897037
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Скруль использует
Код: plaintext
1.
Content-Type: text/html; charset=windows-1251


А что такое Скруль? Это не из анекдота "Уберите с руля"? :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Скруль использует
Код: plaintext
1.
Content-Type: text/html; charset=windows-1251


А что такое Скруль? Это не из анекдота "Уберите с руля"? :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897039
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Если я подключу ICU, она что такая интеллектуальная что два представления Й будет учитывать как одно и тоже? Т.е. в одной строке utf-8 это будет один символ Юникода, а в другой два. Что выдаст операция сравнения таких строк?

По логике. Сначала обе строки должны быть нормализованы. А потом просто сделать хоть посимвольное. Хоть побайтное
сравнение.

Вообще это - не самое сложное. Есть еще другая тема. Сортировки. Их иногда называют Collations.
Там - вообще конь не валялся.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897042
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Если я подключу ICU
давно бы попробовал.

Если бы я меньше трепался на форуме, то уже бы попробовал. Я тоже думал об этом. Я могу попробовать с Qt. Если сайт снова проглючит с кодировками, сразу говорю тут два представления буквы Й, выглядят в редакторе почти одинаково. Вроде как Qt использует ICU, но я не уверен.

Код: plaintext
1.
2.
3.
    QString s1 = "и&#774;";
    QString s2 = "й";
    bool b1 = s1==s2; // == false!


Да, сайт глючит.. или фильтрует.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897049
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Код: plaintext
1.
QString s1 = "и&#774;";

не так проверяй.
В гуи из контрола бери.
А в контрол баба Маша Ctrl +C из 1C и вставляет UTF8
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897052
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovФактически, тип char и его "расширенные" производные надо просто выкинуть
Оптимальный вариант кодировки - UTF8.

Осталось только вспомнить, что utf-8 это костыль, придуманный как раз с целью "оставить
char*" и мы получаем ту самую std::wstring.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897055
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вы тут начинаете говорить о странных вещах. Вы предлагаете что бы язык программирования поддерживал элементы интеллектуального лингвистического анализа. Мне так кажется.
Нет.
Я утверждаю, что поскольку реальное положение вещей таково, что тип char произвольной, но фиксированной ширины никак не соответствует понятию "символ" естественных языков, то и не надо даже пытаться работать со строками, как с char[]. Следовательно, прикладное API должно предоставлять тип string, без детализации - какая именно внутри неонка.
Для реализации типа string необходимо выбрать представление и вариантов ровно один: массив байт. Они же - восьмибитные октеты. И это - тоже уже без вариантов.
Остаётся только выбрать кодировку, в которой будут представлены символы в этом массиве байт. И опять-таки, самый разумный вариант - UTF8. Просто потому, что это - единственный вариант, обеспечивающий максимальную совместимость со всем, что основано на API стандартной библиотеки C.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897056
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpА в контрол баба Маша Ctrl +C из 1C и вставляет UTF8

Это под какой ОСью? У Windows в "контрол" вставляется только юникод или текущий ANSI.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897058
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй кириллическое Й краткое заменить на

Код: plaintext
1.
"й"
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897059
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Код: plaintext
1.
QString s1 = "и&#774;";

не так проверяй.
В гуи из контрола бери.
А в контрол баба Маша Ctrl +C из 1C и вставляет UTF8

Я как раз и сделал копипасту с Хабра по ссылке которую косвенно посоветовали чуть выше: ссылка . Там в первых абзацах такая буква Й. С клавиатуры она не вводится, но выглядит как обычная Й. Мне ещё только не хватало это вставлять в контрол, потом брать с контрола. Может мне ещё update/select сделать в MS SQL и в Оракл заодно?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897064
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Попробуй кириллическое Й краткое заменить на

Код: plaintext
1.
"й"


Тоже самое:

Код: plaintext
1.
2.
3.
    QString s1 = "и&#774;";
    QString s2 = "й";
    bool b1 = s1==s2; // == false!


Notepad++ тоже думает что это разные символы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напутал. Код и = 0438
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897071
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Напутал. Код и = 0438

У меня эти строки не совпадают. Надеюсь у тебя код маленькой й. Да Qt просто видит что длина строк разная - и на этом операция сравнения заканчивается.

Код: plaintext
1.
2.
3.
4.
    QString s1 = "и&#774;";
    QString s2 = "й";
    bool b1 = s1.normalized(QString::NormalizationForm_D)==
              s2.normalized(QString::NormalizationForm_D); // == true!


:) Ну вот.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897077
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Мне ещё только не хватало это вставлять в контрол, потом брать с контрола
главное не оторваться от реальности.
А то ведь есть те что в коде вместо clRed пишут красное в шестнадцатеричном)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897085
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух
КАК засунуть ВЕСЬ utf8 в 1 char, чтобы всем стало спокойно без полу-символов-пустышек?

Кстати, живы еще свидетели КОИ-8р, не к ночи будет сказано.

у меня он был на FreeBSD ещё в 2009
нет, спасибо
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897086
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух,

Никак его не надо туда засовывать. char не соответствует символу. Надо класс, который будет предоставлять api для работы с этими char*

какой ещё API? в string есть API, пользуйтесь - .substr(), .rfind(), .etc
как вы собрались 100500 символов юникода хранить без двух байт?
проверять каждый символ, что он из таблицы ДО 256?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897088
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормализация.

В Питоне примерно так (UTF-16). Код буквы И + этот чортов символ птичка https://unicode.org/cldr/utility/character.jsp?a=0306
Код: python
1.
>>> print(unicodedata.normalize('NFC',u'й'))


й
>>>

В чем разница этих 4х алгоритмов нормализации (NFC, e.tc.) я ХЗ. Но в QT тоже должна быть какая-то опция
которая регулирует этот алгоритм.

Поищи Plz.

Чуть позже посмотрю для utf-8
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897090
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravs1.normalized(QString::NormalizationForm_D)

mayton в QT тоже должна быть какая-то опция
которая регулирует этот алгоритм.
Ты не поверишь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897092
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прошу прощения за то что искусственно втаскиваю в топик тему Питона .
Я его не лоббирую! Более того я даже его не знаю! Но мне кажется что
при разборе bestpractices с кодовыми страницами и кодировками - имеет смысл смотреть
по сторонам как где сделано. Это обычно наталкивает на мысли.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897097
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в Питоне байтовый массив (фраза на Испанском) рассматривается как utf-8 строка.

Код: python
1.
>>> print(b'El ni\xc3\xb1o come camar\xc3\xb3n'.decode('utf-8'))


El niño come camarón
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897100
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484

Я кажется догадался. Скруль - это sql.ru. То-то мне это мне сразу напомнило как некоторые называют SQL - сикуль или как-то так.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897107
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но в QT тоже должна быть какая-то опция
которая регулирует этот алгоритм.
а он собрался от Qt далеко отходить в сишные дллки))
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вот в Питоне байтовый массив (фраза на Испанском) рассматривается как utf-8 строка.

Код: python
1.
>>> print(b'El ni\xc3\xb1o come camar\xc3\xb3n'.decode('utf-8'))


El niño come camarón


Кто мне подскажет как эти чортовы символы ñ сверху называются ó.

Возможно две птички - это умляут (umlaut) но я не уверен. Или акцент (accents).
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897111
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Скруль порвал кодировку внутри исходников. У меня тоже самое 22029484

Я кажется догадался. Скруль - это sql.ru. То-то мне это мне сразу напомнило как некоторые называют SQL - сикуль или как-то так.

Просто ты, барин, здесь редко бываешь.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897115
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Но в QT тоже должна быть какая-то опция
которая регулирует этот алгоритм.
а он собрался от Qt далеко отходить в сишные дллки))

Да не собираюсь я далеко отходить. Я говорил: на Qt только GUI, логика на С++ с минимумом сторонних библиотек. Это позволит легко отказаться от Qt если он умрёт или перестанет устраивать.

Не нужно мне учитывать умляуты и прочие, если даже на Qt и на Питоне просто так не работает операция сравнения строк. Вы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное.

Вам не нужна оптимизация, а мне в ядре приложения (не в GUI) нужна.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897124
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вариант испанского мальчика жрущего креветок.

Код: python
1.
>>> 'El nío come camarön'



Хотя я нормализацию не заказывал. На печати в консоли выглядит так.

'El nío come camarön'

Код: python
1.
2.
>>> len('El nío come camarön')
21


И длина - 21 символ с точки зрения строкового API

После нормализации.

Код: python
1.
>>> unicodedata.normalize('NFC',u'El nío come camarön')


'El nío come camarön'
Код: python
1.
>>> len(unicodedata.normalize('NFC',u'El nío come camarön'))


19

Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе
нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать.

Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897126
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
говорил: на Qt только GUI, логика на С++ с минимумом сторонних библиотек.
пишем недостижимый идеал прямо по булгакову.
Получим шарикова.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897127
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897132
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками?

Я не пишу библиотек работы со строками. API работы с сокетами - POSIX или близко к этому.
Модератор: Edited
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897148
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Мои мысли ясные и логичные).
Ваш метод (а не вы сами) по производству универсальной программы работь не будет.
Врубились что вы сами - крутой и успешный прогер. А вот метод избрали не рабочий.
А то обиделись, как девочка прям.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897150
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Мои мысли ясные и логичные).

Допустим. Вот твоя цитата:
PetroNotC Sharp
Сетевую либу, протокол общения между модулями тоже свой писать будем? Как со строками?

Из неё явно следует, что я пишу свою библиотеку работы со строками.

И теперь я прошу привести мою цитату из которой следует, что я пишу свою либу работы со строками.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897151
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Девочки - не ссорьтесь. Топик - нормальный. Жалко будет его закрыть.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897152
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической
памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete
и тому подобное.

А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне
языка" делают под капотом всё то же самое?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897154
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической
памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete
и тому подобное.

А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне
языка" делают под капотом всё то же самое?пусть блокируют. ГУИ в одном основном потоке.
Исходя из старых практик разработки UI.
Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий
транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки
к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй
optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного
пользователя или тот режим который будет гладко ложиться на бизнес-процесс.

Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам
процессов мне сложно.

Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то
блокировали то весь фейсбук сидел бы 100% времени в блокировках.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897155
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической
памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete
и тому подобное.

А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне
языка" делают под капотом всё то же самое?

Это - предположение. 99% это зависит от того как будет написан код поточного метода.
Он может работать со старой версией строки создав предварительно ее копию.
Он может работать с референсом на строку для immutable strings.
Мы можем ввести понятие версионной строки и отслеживать некое
атомарное состояние счетчика транзакций над строками. И все это
автоматизировать.

Кстати здесь я еще больше согласен с Сидоровым что строка это все-таки
не массив char[] как бы мне этого не хотелось.

Вобщем.. исходя из наблюдения. Больше блокировок на I/O, Networking чем собстенно на
строковых объектах.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897157
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической
памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete
и тому подобное.

А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне
языка" делают под капотом всё то же самое?

Я прямо сейчас готов написать функцию которая докажет тебе что это не так. Но в упрощённом сценарии. Все буквы ASCII, но в одной строке встречается восьмибитная Й, а в другой последовательность ЁЁ и эти строки считаются равными?

Если ты хочешь функцию на реальной реализации utf-8, то не просто так, но я сделаю. :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897158
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической
памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete
и тому подобное.

Исходя из старых практик разработки UI.
Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий
транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки
к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй
optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного
пользователя или тот режим который будет гладко ложиться на бизнес-процесс.

Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам
процессов мне сложно.

Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то
блокировали то весь фейсбук сидел бы 100% времени в блокировках.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897159
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, я прошу прощения. Случайно изменил твой пост. Как откатить - не знаю.

Но - перепость заново а я старый удалю.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897160
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ok
Мне не трудно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897161
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
эти обращения блокируют все потоки
это не страшно. ГУИ однопоточный.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897162
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
эти обращения блокируют все потоки
это не страшно. ГУИ однопоточный.

Да... GUI однопоточный. Но он активно использует динамическую память. И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики. Просто в ваших задачах вам не нужно заботиться о производительности в таких мелочах и вы просто не знаете об этом. Но не во всех случаях это приемлемо.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897164
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то
блокировали то весь фейсбук сидел бы 100% времени в блокировках.

Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте:

- Огромное количество браузеров внутри которых работает программа на JS.
- Огромное количество кеширующих серверов.
- Огромное количество серверов логики и серверов БД.
- Сколько процессов запущено сейчас на всех этих серверах?
- Сколько RAID массивов задействовано, сколько виртуальных машин?

Да там даже графические объекты расположены на тонких клиентах!

Причём тут обычное приложение на C++?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897165
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики.
да. Я хочу доказательства этого.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897167
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Как независимые потоки будут мешать друг другу?
Кто тут гуи хотел отделить?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897168
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то
блокировали то весь фейсбук сидел бы 100% времени в блокировках.

Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте:

- Огромное количество браузеров внутри которых работает программа на JS.
- Огромное количество кеширующих серверов.
- Огромное количество серверов логики и серверов БД.
- Сколько процессов запущено сейчас на всех этих серверах?
- Сколько RAID массивов задействовано, сколько виртуальных машин?

Да там даже графические объекты расположены на тонких клиентах!

Причём тут обычное приложение на C++?

Стоп. Давай немного отложим обсуждение фейсбука.

Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они
у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода.

Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто
физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана
архитектура твоей Юайки. Подумай о optimiztic.

Расскажи что у тебя там под капотом.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897175
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,

Как независимые потоки будут мешать друг другу?
Кто тут гуи хотел отделить?

Дело в том что структура динамической памяти - это по сути Синглетон. Любое обращение к ней (new/delete/malloc/free) - это блокировка. Можно, конечно, подумать о том, что бы, например, в DLL логики у нас была своя отдельная куча (и отдельный рунтайм) и мы возвращаем только интеллектуальные указатели в которых есть свой deleter. Но как-то я пока не встречал таких идей в статьях.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897178
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Любое обращение к ней (new/delete/malloc/free)

Ну ссылки то где что это проблема стоит обсуждения вообще?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897183
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Стоп. Давай немного отложим обсуждение фейсбука.

Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они
у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода.

Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто
физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана
архитектура твоей Юайки. Подумай о optimiztic.

Расскажи что у тебя там под капотом.

Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897184
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Давай сделаем два потока и будем там создвать строку с выводом в лог.
5 минут работы.
Будет тормозить доступ к памяти?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897188
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

Стоп. Давай немного отложим обсуждение фейсбука.

Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они
у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода.

Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто
физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана
архитектура твоей Юайки. Подумай о optimiztic.

Расскажи что у тебя там под капотом.

Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают.

Я прошу прощения. Ты можешь мобилой сфоткать твой UI ?

Без торговых обозначений. Без лейблов. Просто какой-то функционал.
Я просто пытаюсь понять что за такая там у вас отрасль
где нужно UI так тесно интегрировать с динамической памятью и строками.

Насчет рантайма я не имею ничего против. Просто интересно где это критично.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897189
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Давай сделаем два потока и будем там создвать строку с выводом в лог.
5 минут работы.
Будет тормозить доступ к памяти?

Давай. Рабочий поток выводит на 1000 Гц, а поток GUI в тот же поток на 100 Гц. Мне интересна статистика по времени выделения памяти и вывода в лог. В обоих потоках. Статистика с помощью Windows API QPC. Жду результатов. И на слабых компьютерах тоже.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем UI в 100 Гц?

Я слышал что в топовых играх видяшки переключают front-back buffer до 120Гц. Но это игра. Где плавность
изменения графики - просто видно боковым зрением. И не более того.

А научные испытания на кроликах людях и обезянах показали что человек реагирует и осознает изменения
UI с периодом в 100 милисекунд.

Это примерно соответствует 10 герцам.

Можно и выше - но на реакцию человека и на принятие решения это не влияет.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897196
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А зачем UI в 100 Гц?
+1
Я фигею.
Мы о чем вообще тут говорим?
3D render?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897198
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А зачем UI в 100 Гц?

100 Гц в UI действительно излишне. Я привёл это для того что бы потоки с большей вероятностью вмешивались друг в друга. Но он может создать несколько рабочих потоков и там логировать на 500 Гц.

Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897200
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов
как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны.

Как Anime-сериал прям.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897202
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени.

Я в этом смысле наверное похож на Торвальдса. Я - инженер. И люблю решать
инженерные головоломки. И мне глубоко безразлина контора в которой
ты работаешь. И я очень удивлён тем что ты нашел (!) реально нашел
проблему аллокации строк на СТЫКЕ UI и динамической памяти.

Я - правда удивлен. И мне кажется что если мы глубоко копнём в твою
проблему ... она окажется вообще не проблемой а просто архитектурной
фичей которая фиксится быстро.

Ты вот думаешь что для comparison двух utf-8 строк тебе надо обязательно
ре-аллоцировать (malloc/realloc) память? А я вот так не думаю.

Мне вот кажется что мы в состоянии решить эту задачу алгоритмически.

Давай просто разделим понятия хранения (storage) utf-8 строк и их представления (representation).
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897203
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов
как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны.

Как Anime-сериал прям.

С Повер-Поинт вообще проблем нет. Но речь идёт о работе с промышленным оборудованием и часто используя слабые компы. А не анимация про Си-шарп или про трусы модной фирмы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897206
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожимая плечами

Хорошо. Давайте синтетический тест. C двумя потоками и со строками. Посмотрим на него.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897209
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И я очень удивлён тем что ты нашел (!) реально нашел
проблему аллокации строк на СТЫКЕ UI и динамической памяти.

Нет никакого стыка UI и динамической памяти. Есть N-потоков которые обращаются к структуре динамической памяти. Одновременно. Если ты покажешь, что такие алгоритмы не блокируют друг друга, я скажу тебе большое спасибо.

mayton
Ты вот думаешь что для comparison двух utf-8 строк тебе надо обязательно
ре-аллоцировать (malloc/realloc) память? А я вот так не думаю.

Я так не думаю. Агоритмически я считаю, что их можно сравнить без аллокации памяти. Но так следует из интерфейса Qt - что бы сравнить строки на Qt их нужно нормализовать, а что бы нормализовать нужно обратиться к динамической памяти:

Код: plaintext
1.
QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const;


Плиз, обрати внимание на слово const в конце сигнатуры. И на возвращаемый тип.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897212
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
И я очень удивлён тем что ты нашел (!) реально нашел
проблему аллокации строк на СТЫКЕ UI и динамической памяти.

Нет никакого стыка UI и динамической памяти. Есть N-потоков которые обращаются к структуре динамической памяти. Одновременно. Если ты покажешь, что такие алгоритмы не блокируют друг друга, я скажу тебе большое спасибо.

Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать.
Давай всё таки сделаем синтетический тест и посмотрим на него.

Предлагаю также подумать о хеш-коде нормализованной строки.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897215
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать.
Давай всё таки сделаем синтетический тест и посмотрим на него.

Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897218
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Еще один вариант испанского мальчика жрущего креветок.

Код: python
1.
>>> 'El nío come camarön'




Хотя я нормализацию не заказывал. На печати в консоли выглядит так.

'El nío come camarön'

Код: python
1.
2.
>>> len('El nío come camarön')
21



И длина - 21 символ с точки зрения строкового API

После нормализации.

Код: python
1.
>>> unicodedata.normalize('NFC',u'El nío come camarön')



'El nío come camarön'
Код: python
1.
>>> len(unicodedata.normalize('NFC',u'El nío come camarön'))



19

Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе
нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать.

Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же.

самое время посмотреть на работу регекспов, сабстрингов и прочих требовательных ф-й
ну они то конечно же в питоне подогнаны под эти костыли, но какой ценой...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897220
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrav

Ты сейчас просто описал работу ЛЮБОЙ си-прогаммы которых много. Но в топике мы говорим о твоей
проблеме. О проблеме перформанса. Я здесь пока проблемы не вижу.

Я очень не люблю и не хочу фантазировать (фантазия у меня богатая) за топик стартера. И я все-таки
настаиваю чтобы ты обрисовал где мы блочимся. Если это malloc/free - то почему. Дро...им память.
Может там одна и та-же строка миллиард раз аллоцируется? Почему мы это не видели? Может
очень длинная строка? почему на прикланом уровне мы такое допустили? Зачем она нужна
такая длинная в твоём Реал-тайм приложении.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897221
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
mayton
Еще один вариант испанского мальчика жрущего креветок.

Код: python
1.
>>> 'El nío come camarön'




Хотя я нормализацию не заказывал. На печати в консоли выглядит так.

'El nío come camarön'

Код: python
1.
2.
>>> len('El nío come camarön')
21



И длина - 21 символ с точки зрения строкового API

После нормализации.

Код: python
1.
>>> unicodedata.normalize('NFC',u'El nío come camarön')



'El nío come camarön'
Код: python
1.
>>> len(unicodedata.normalize('NFC',u'El nío come camarön'))



19

Не знаю как будет видно сырую строку после публикации. Но моя bash консоль вполне себе
нормально отображает эти 2 символа с диакритикой с явной нормализацией и без. И среда разработки тоже если скопировать.

Но чисто визуально я вижу различия после normalize. Символ слегка изменен. Хотя суть наверное та-же.

самое время посмотреть на работу регекспов, сабстрингов и прочих требовательных ф-й
ну они то конечно же в питоне подогнаны под эти костыли, но какой ценой...

Вот откуда взялся этот мальчик.
https://www.w3resource.com/python/python-bytes.php

Я там кстати ошибку допустил. Во втором слове не 3 а 4 символа должно быть. И этот
мой тест надо еще раз перетестить.

А по поводу регулярок. Я думаю что под капотом у питона обычная С-библиотека. Просто меня
интересовали best-practices и подходы в отношении мульти-национальным строкам и кодировкам
в разных языка. А змей удобен для быстрого прототипирования. Написал в REPL консоли - и получил ответ.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897223
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Боюсь, ты и 500 строк создания не приведешь в ГУИ.
Так как даже при отрисовке Война и мир там стоит
Canvas.DrawText()
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897227
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravДело в том что структура динамической памяти - это по сути Синглетон.

Спешу тебя огорчить: это уже давно не так. Общая куча делится на пулы по числу ядер,
которые работают независимо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897228
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты сейчас просто описал работу ЛЮБОЙ си-прогаммы которых много. Но в топике мы говорим о твоей
проблеме. О проблеме перформанса. Я здесь пока проблемы не вижу.

Я очень не люблю и не хочу фантазировать (фантазия у меня богатая) за топик стартера. И я все-таки
настаиваю чтобы ты обрисовал где мы блочимся. Если это malloc/free - то почему. Дро...им память.
Может там одна и та-же строка миллиард раз аллоцируется? Почему мы это не видели? Может
очень длинная строка? почему на прикланом уровне мы такое допустили? Зачем она нужна
такая длинная в твоём Реал-тайм приложении.

Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс. Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса. И если какой-то рабочий поток тоже обратится к динамической памяти - то его тормознут (заблокируют). Или ему повезёт и он заблокирует раньше, тогда гуд.

При этом у нас нет инверсии приоритетов . Поэтому операции с данными на стеке, например, на порядок быстрее чем операции в куче.

PS: Длинна строки как раз на это не влияет. Ну если мы не привели приложение к свопу из-за этой строки. Но это уже другая история.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897230
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravДело в том что структура динамической памяти - это по сути Синглетон.

Спешу тебя огорчить: это уже давно не так. Общая куча делится на пулы по числу ядер,
которые работают независимо.

Это не имеет никакого значения. Просто одна из форм оптимизации. Память выделенная на одном ядре может быть освобождена на другом ядре. И это снова синглетон. Только ещё проблем добавляется. Теперь нужно как-то увязать указатель и пул памяти привязанный к ядру. Таких фокусов было полно в истории. При этом при проектировании ПО - откуда я знаю сколько ядер будет на процессоре? Сколько ядер выделит мне ОС в данный момент времени? Это всё проблемы...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897232
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТак вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем
мьютекс. Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении
мыши - на каждое событие блокировка мьютекса. И если какой-то рабочий поток тоже обратится
к динамической памяти - то его тормознут (заблокируют).

"Ой, ё-ё-ё-ё..." (с)

Я понимаю блокировку одного пула на время выделения. Но откуда у тебя блокировка на поток
событий-то? Даже если сообщения выделяются динамически, у них совершенно отдельный пул
памяти. Отдельный как других потоков, так и от кучи приложения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897233
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс.

Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию.
Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали.

petrav

Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса.

А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем.
Почему оно на каждый mouse move чото блокирует.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897234
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravИ это снова синглетон.

Ты всерьёз веришь, что мутекс это такая тяжёлая штука, что их нельзя выделить 100500 и все
стоят в очереди за одним-единственным?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897238
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Я понимаю блокировку одного пула на время выделения. Но откуда у тебя блокировка на поток
событий-то? Даже если сообщения выделяются динамически, у них совершенно отдельный пул
памяти. Отдельный как других потоков, так и от кучи приложения.

Ну хорошо. Возвращаемся к Qt. Докажи, что у событий Qt отдельный пул-памяти? Может и есть. boost::pool (если не ошибаюсь) один из вариантов оптимизации. Можно на WinAPI отдельную кучу создать. Но... я сомневаюсь что это так. Точнее уверен что это не так.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897239
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВозвращаемся к Qt. Докажи, что у событий Qt отдельный пул-памяти?

Нет. Ни за что. Мы не будем возвращаться к одному из самых кривых и тормозных фреймворков.
Вы уж как-нибудь сами с ним живите.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897240
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravИ это снова синглетон.

Ты всерьёз веришь, что мутекс это такая тяжёлая штука, что их нельзя выделить 100500 и все
стоят в очереди за одним-единственным?

Так это как раз и зависит то он задачи. Если тебе нужно выжать максимально качественное мягкое реальное время из компа, то это одно. Если на Повер Поинт мултик показать, то другое. Можно конечно на всё забить, можно много чего сделать.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897242
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Просто одна из форм оптимизации.

Закон программиста - "Преждевременная оптимизация - зло".
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897243
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Так вот, когда мы из разных потоков обращаемся к new/delete/malloc/free - мы блокируем мьютекс.

Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию.
Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали.

petrav

Если мы по окну GUI двинули мышкой и посыпался целый поток событий о движении мыши - на каждое событие блокировка мьютекса.

А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем.
Почему оно на каждый mouse move чото блокирует.

MSVC + Qt.

Да нет никакого mouse move, потоков GUI или ещё какие-то потоки, ты пойми. Ничего этого нет. Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897244
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Так это как раз и зависит то он задачи.
в строках проблем 100% не будет)))
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897246
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё.
увы. И синглетона нет. Даже отвлеченного. Можешь злится.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897248
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
пропущено...

Тут наверное зависит от ОС и от реализации. Расскажи свою конфигурацию.
Я знаю что топик начался с MSVC+GCC. Но было-бы полезно узнать детали.

пропущено...

А вот это какая-то уже ерунда. Так не должно быть. Давай-ко детализируем.
Почему оно на каждый mouse move чото блокирует.

MSVC + Qt.

Да нет никакого mouse move, потоков GUI или ещё какие-то потоки, ты пойми. Ничего этого нет. Есть просто отвлечённые потоки которые лезут в синглетон и блокируют друг друга. И всё.

Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того
как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много
и так часто лезет в синглтон?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897250
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Дружище petrav. Я по прежнему не понимаю где там они чего будут блокировать.
Давай всё таки сделаем синтетический тест и посмотрим на него.

Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю.
всё пучком, расходимся
современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается

по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции

больше выдают только сильно специфические, вроде хаотических - но там свои приколы
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897251
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
petrav
пропущено...

Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю.
всё пучком, расходимся
современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается

по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции

больше выдают только сильно специфические, вроде хаотических - но там свои приколы

Автор говорит у него - слабое железо. Ну там не i7 скорее всего.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897253
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того
как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много
и так часто лезет в синглтон?

У меня ничего и никуда часто не лезет Мы рассуждаем о вопроса производительности. И да это не похоже на разработку web-серверов на Шарпе где просто докупают ещё один сервер в стойку, хотя и там всё сложно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897254
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы рассуждаем о вопроса производительности.

"Давайте спорить о вкусе устриц. До хрипоты." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897256
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Автор говорит у него - слабое железо. Ну там не i7 скорее всего.
вот кстати на слабом старом железе получаются наибольшие выигрыши от Lock-Free алгоритмов
ибо там особо ещё нет таких сильных проблем со сбросом кеша
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897258
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
petrav
пропущено...

Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю.
всё пучком, расходимся
современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается

по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции

больше выдают только сильно специфические, вроде хаотических - но там свои приколы

И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897260
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Пора спорить на коньяк что нет у ТС этой проблемы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897262
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того
как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много
и так часто лезет в синглтон?

У меня ничего и никуда часто не лезет Мы рассуждаем о вопроса производительности. И да это не похоже на разработку web-серверов на Шарпе где просто докупают ещё один сервер в стойку, хотя и там всё сложно.

Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory
manager.

Я с удовольстием на нее навалился-бы. Но мне валится пока некуда. Если я сам буду писать синтетические
бенчмарки которые выделяют и убивают строки - это будет какая-то шизофрения. Ты согласен?

Тем более что я - убежден что обще-системные библиотеки зачастую лучше чем мы о них думаем.
И анализ производительности измерительными штуками обычно показывает что мы их просто не так
используем. А это уже - вопрос к прикладному коду.

Вобщем я убежден что у тебя есть проблема в прикладном коде. Не в строках и не в мемори менеджерах.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897263
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему последние 15 страниц мы обсуждаем сферического коня в комнате, где его нет...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897268
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу просто теоретически, как реализовать менеджер памяти в lock-free стиле?

Дерево свободных блоков для минимизации времени нахождения в критическом коде и спинлоки,
например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897269
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory
manager.

Я не предлагаю тебе решать мои проблемы и наваливаться на них. В участках кода критичных к производительности я просто стараюсь не обращаться к динамической памяти, не использовать потенциально тяжёлых модулей типа std::stringstream, boost::fomat или boost::stringalgo. Вот в потоке GUI это позволительно.

Стараюсь что бы рабочие потоки как можно меньше блокировались на мьютексах с потоком GUI. У меня нет проблем с реализацией мягкого реального времени даже на слабых компах. Судя по отчётам.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897270
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось.
есть одна большая тайна :-)
для реализации менеджера памяти не обязательно реализовывать такие высокоуровневые конструкции как стек и список

хаотические, например, вообще не заморачиваются, берут номер операции процессора, далают от него хэш и по нему пытаются сбить бит занятости блока в линейном массиве: получилось - блок выделен, нет - ещё попытка. При неполной банке это очень быстро.
Но это конечно вольный пересказ, а не руководство к действию, в реальности всё конечно покрыто определёнными техническими трудностями и ньюансами.

ИМХО вообще не стоит по этому поводу заморачиваться, кроме образовательных целей, если вы не пишете что-то очень высокого класса. Лучше стандартных врят ли получится.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897285
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей.

Я один раз чисто случайно читая Stackoverflow наткнулся на закрытый топик.
Его закрыл модератор стековера. Но больше меня поразила резолюция. Там
было по английски написано. - "Ваш вопрос не имеет прикладного смысла.
Постарайтесь пересмотреть ваше задание." - автор-же в топике просто в цикле
что-то там икрементировал или декрементировал. Вобщем был озабочен какими-то
атомик-бенчмарками и по ним спрашивал. Я давно знал что модеры стековера
очень суровы и решительны. И мне сама по себе идея понравилась. Идея обоснования
многих бенчмарков.

Еще мысль. Давно во времена моей производтвенной практики в *телекомах
мой начальник (большой алкоголик и любитель пошлых анекдотов) устав слушать мои
рац-предложения сказал мне - "Знаешь. У каждой вещи есть своё предназначение.
У жопы - предназначение - делать дефекацию. Или срать. Хотя есть некоторые
мужчины которые ищут у чужой жопы другой смысл."

Вобщем у менеджера памяти (MM) есть своё предназначение. Но нам не стоит
искать или ждать от него (MM) чего-то другого.

Я сильно сомневаюсь что от MM (Linux or Windows) мы выдавим 40 млн
транзакций на выделене (и освобождение). Ведь. задача стоит более широко. Там еще
и идет логика процессинга строк. Физическое копирование. Реаллокация (на расширение).

Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897300
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.

Допустим мы на Qt (LOL) пишем высоконагруженный сервер. Вызов QString::normalized() на каждый запрос от клиента будет обращаться к динамической памяти. Как же ты собрался не ДДОС-ить Менеджер Памяти? Да любой высокоуровневый язык программирования тут начнёт ДДОС-ить и ты даже не догадаешься где. Тогда тебе сервер нужно на Си переписывать. Неожиданные от тебя аргументы пошли. :)

Тебе нужно говорить по другому: будет тормозить, расширим кластер ещё на один сервер, который арендуем у провайдера. И это будет правильно, если ваш бизнес приносит деньги и удовлетворяет заказчиков. А ДДОС - да что там такое.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897302
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
пишем высоконагруженный сервер.

Вау.
16 страниц в мусорку.
Начинай по новой.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897304
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.

Я не очень помню архитектуру веб-серверов. Но насколько помню дело так обстоит:

- Приходит допустим GET запрос от пользователя.
- Из пула потоков берётся свободный поток и данные передаются ему на обработку.
- На сервере есть пул объектов подключения к БД.

Но вот есть ли связанный с каждым потоком ещё и пул строк? И как он вообще мог бы быть реализован, вот интересно. Какая у строк будет длина? Если такого пула нет - то каждый запрос многократное обращение к динамической памяти. А что со всем другими типами и объектами?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897308
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
unicodedata.is_normalized(form, unistr)

    Return whether the Unicode string unistr is in the normal form form. Valid values for form are ‘NFC’, ‘NFKC’, ‘NFD’, and ‘NFKD’.

    New in version 3.8.


Смело добавляй его в конструктор. И если строка нормализована то - ничего делать не надо. Тоесть ее
поведение будет такое-же как и раньше. Тоесть как работали так и работаем.

Вангую что by use-case таких волшебных комбинаций символов будет очень мало. Нижнаяя часть ASCII-кириллица их почти нет.
Я вот с трудом нагуглил вообще эти примеры.

К сожалению в моей сборке (Python3.6.9.+unicodedata2) этот метод еще не реализован. Надо обновлятся.
Но я думаю что такой предикат должен быть и в Qt, и в cpputf8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897309
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо вот есть ли связанный с каждым потоком ещё и пул строк?

Повторяю ещё раз, медленно: Линукс (GLIBC) на котором крутятся большинство уэб-серверов
использует отдельные кучи для потоков.

Пристрелите уже этот топик. Вместе с аффтаром.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897315
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память
для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить.

Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике.

Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно.

Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897320
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память
для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить.

Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике.

Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно.

Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут.

Давай еще один инженерный вопрос.

Каким образом эта строка у тебя появилась в системе?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897322
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давай еще один инженерный вопрос.

Каким образом эта строка у тебя появилась в системе?

Допустим она пришла через GET запрос. Я как бы уже очень много лет не работаю в web, так что... :)

При этом, мы заранее не знаем какие именно параметры нам придут. Параметры мы получаем через коллекцию строк. Допустим пришёл "productName" и по логике это имя товара, который наш клиент уже покупал. Так же из БД мы подгрузили имя производителя, адрес доставки, имя курьера и хотим сделать отчёт. При этом такой товар клиент мог покупать многократно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897323
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Допустим она пришла через GET запрос.
какого хера мы в топике в веб полезли?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням
этой модели. И у нас - много точек где можно применить оптимизации и трансформации.

Возможен такой вариант что вопрос кодировок решается на HttpServer. Например когда
клиент коннектится он шлёт атрибут Accept-Charset где он сообщает серверу
что он ПРИНИМАЕТ ответы в такой-то кодировке.

https://developer.mozilla.org/ru/docs/Web/HTTP/Заголовки/Accept-Charset
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897328
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav ,
Дело ваше, слушать или нет.
Но в десктопе, веб и 3D визуализации совершенно разные архитектуры и методы программирования.
Если прыгаете с одного на другое как школьник, это идиотизм.
Удачи!
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897343
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Мы обсуждаем сервер.

mayton
Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням
этой модели. И у нас - много точек где можно применить оптимизации и трансформации.

Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача.

Кстати интересная тема: Dynamic Lock-free memory allocators . Плохо с английским. :( Где-то на половину понял. Но что-то мне подсказывает, что там проблем ещё больше чем я думал. Нужно углубляться.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы обсуждаем сервер.

Внезапно. А ведь ещё недавно это был "офисный софт".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897348
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Мы обсуждаем сервер.

Ну это просто прекрасно. Значит у тебя есть приложение в котором есть UI и есть некая серверная часть.
Типа HttpServer. И всё это крутится в одном Windows-process.

Верно?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача.

Я говорю о стеке технологий. И на каждом уровне этого стека строка имеет место.
Где-то она - сырая. Порезанная в виде кусочков лежит тихо себе в буферах сокета.
Потом она - попадает на Handler Get запроса. Там она уже будет лежать в прикладной
кодировке. В соответствии с правилами HTTP протокола и твоего приложения. Тут
можно загибать пальцы потому-что транформация строки уже началась. Далее ты хочешь
с ней сделать еще одну транформацию. Нормализовать комбинации utf-8 символов.

Мой поинт в том чтобы сократить это количество фаз и свести их просто к алгоритму
который делает чуть больше действий. На память это особо не повлияет.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897353
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мой поинт в том чтобы сократить это количество фаз и свести их просто к алгоритму
который делает чуть больше действий. На память это особо не повлияет.

Отправная точка была такая (ну помимо кодировок :) - Если мы будем ДДОС-ить ММ, то мы будем дураками. А мой поинт в том, что если мы пишем высоконагруженный сервер на чём-то высокоуровневом (Java, Python да тот же Qt) мы не сможем не ДДОС-ить ММ, нам нужно всё переписать на Си, даже не на С++.

Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе.

И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897354
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Кстати интересная тема: Dynamic Lock-free memory allocators . Плохо с английским. :( Где-то на половину понял. Но что-то мне подсказывает, что там проблем ещё больше чем я думал. Нужно углубляться.

Тут еще пишут что аллокация памяти может лагонуть по причине того что страницы-конкуренты
должны сойти в swap-file/paging-file.

Еще тут надо рассмотреть операционку. Могут быть сильные отличия в том как Windows и как Linux интерпретирует
свободную память и что они делают когда ее не хватает и многое другое. Вот когда занимался тюингом Oracle9i на
Windows - там просто голова кругом шла от различий. А поддерживать нам надо было оба варианта. Продуктив у нас
стояли на Винде а тестовые - почему-то на RHEL.

И что ОС делает когда нет непрерывного фрагмента нужной длины. Какие тут стратегии аллокации.
С растущим размером блока экстента.

Ну там... или в своём потоке держат "пульчик" на сотню строк среднего размера. Какого размера?
Я-бы предложил формулу вида 95-й процентиль от выборки всех строк. И округлить в большую
сторону на параграф или на DWORD как будет удобно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897355
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе.

И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ.

А. Тоесть ты снизошёл до моего низкого уровня и перевел пром-оборудование на сервер?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897357
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Почему я от промышленного оборудования перешёл на высоконагруженный сервер? Потому что мне показалось не плохой параллелью в данном частном случае . А сервер тебе ближе.

И там и там высокие нагрузки (просто разных масштабов), может даже логика запрос-ответ.

А. Тоесть ты снизошёл до моего низкого уровня и перевел пром-оборудование на сервер?


Почему? Наоборот... всё наоборот.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897358
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно. Чёто не клеится наш топик. Толи под гнётом NDA. Толи из скромности но
ты ничего так и не выдал о своей архитектуре.

Давай может мы этот топик прикроем? А ты соберёшся потом с духом и выложишь
правду-матку. В новой теме. Уже без кодировок. А по сути.

Просто как старый модератор я знаю. Лучше закрыть топик чем превратить его в помойку.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897359
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Закрывай. Без проблем. Создадим ветку про лок-фри выделение и освобождение памяти. Но потом :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897362
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: ОК. Закрыто
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39898491
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Допустим у меня есть такой код:
Код: plaintext
1.
2.
const char *s1 = "Привет.";
const char *s2 = u8"Пока.";


Будучи сохранённым в файл в кодировке utf-8 with BOM в MSVC первая строка в кодировке local-8bit, а вторая строка - utf-8. Конечно, речь идёт о времени исполнения приложения.

Вопрос: что будет с этим файлом в случае Windows+MinGW и Linux+GCC? В какой кодировке стоит сохранять файлы для кроссплатформенной совместимости?


Ни то, ни другое не определено языком.
всё зависит от конкретного компилятора, а совместимость между ними -- от двух компиляторов.
Читай доки по двум компиляторам.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39898492
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
crutchmaster
petrav,

Какие "Привет, пока"? Какой UTF? Только ASCII. Зачем тебе создавать проблемы? Локализация делается в отдельном файле, откуда вытаскивается gettext'ом.

Это было бы идеально. Но... использование подобных инструментов резко повышает муторность разработки, а гибкость в создании локализаций мне не нужна. UTF-8 нужен что бы строки передавать в интерфейсы Qt. Он понимает только UTF-8. Можно, конечно, каждый раз преобразовывать средствами самого Qt.

Вообще эти проблемы с кодировками бесят неимоверно, какое-то болото на ровном месте.


Use English then, Luke!
...
Рейтинг: 0 / 0
409 сообщений из 409, показаны все 17 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]