The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз фреймворка Qt 6.0, opennews (??), 08-Дек-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


68. "Релиз фреймворка Qt 6.0"  +1 +/
Сообщение от Аноним (54), 08-Дек-20, 20:43 
Покажите мне этих пользователей и я первым кину в них камнем.
Ответить | Правка | Наверх | Cообщить модератору

71. "Релиз фреймворка Qt 6.0"  +3 +/
Сообщение от Кибер Джейсус (?), 08-Дек-20, 20:55 
В очередь.
Ответить | Правка | Наверх | Cообщить модератору

83. "Релиз фреймворка Qt 6.0"  –1 +/
Сообщение от Аноним (83), 08-Дек-20, 21:51 
Банковский софт продолжает CP 866 использовать например, от этого никуда не денешься.
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

93. "Релиз фреймворка Qt 6.0"  +2 +/
Сообщение от DarkHobbit (ok), 08-Дек-20, 22:54 
Ну например, скачали вы с музтрекера какой-то раритет, у которого теги в 1251. Вы их перекодировать будете? Если да, то это значит либо уходить с раздачи (фу), либо держать две копии материала (дважды фу). Поэтому, например, авторы адекватных линуксовых аудиоплееров позволяют выбирать кодировку для тегов.

Более близкий мне пример. Я тут в свободное время пилю потихоньку кутешный редактор контактов (ссылка на гитхаб у меня в профиле есть). И мне народ с 4PDA присылает VCF-ы с 1251 внутри, сделанные всякими вендоутилитами, которые вполне себе в ходу. Некоторые просто с битой кодировкой, а у некоторых внутри честно написано "CHARSET=CP1251"...

Да много ещё можно чего накопать.

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

95. "Релиз фреймворка Qt 6.0"  +/
Сообщение от Аноним (54), 08-Дек-20, 23:00 
Сохраняю cue в utf8, кидаю старый файл в скрытые чтобы не мешался в фм.
Ответить | Правка | Наверх | Cообщить модератору

100. "Релиз фреймворка Qt 6.0"  +/
Сообщение от DarkHobbit (ok), 08-Дек-20, 23:38 
> Сохраняю cue в utf8, кидаю старый файл в скрытые чтобы не мешался в фм.

Ну когда есть CUE, это ещё ничего. А бывает материал и в MP3 с ID3 тегами. Ну вот бывают такие раритеты, которые в lossless найти невозможно, обидно, но факт. И вот там либо дублировать всё, либо...

Ответить | Правка | Наверх | Cообщить модератору

107. "Релиз фреймворка Qt 6.0"  +/
Сообщение от Аноним (54), 09-Дек-20, 02:06 
Большинство современных плееров типа тунцца (опеннет свихнулся со своей анальной цензурой) хранит все изменения тегов отдельно в соей базе. Вроде такое же и в линуксовых плеерах было, но на общесистемном уровне только в kde да? Чтобы теги можно было посмотреть в любой гуёвой программе потом.
Ответить | Правка | Наверх | Cообщить модератору

142. "Релиз фреймворка Qt 6.0"  –2 +/
Сообщение от Ordu (ok), 09-Дек-20, 07:35 
> Поэтому, например, авторы адекватных линуксовых аудиоплееров позволяют выбирать кодировку для тегов.

А как это противоречит внутреннему программному представлению тегов в виде utf8? Когда ты читаешь строку из внешнего источника, её надо валидировать и допилить до вида, в котором она будет отображаться. Lossy конвертация в utf8 здесь самый удачный вариант.

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

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

Ответить | Правка | К родителю #93 | Наверх | Cообщить модератору

161. "Релиз фреймворка Qt 6.0"  +/
Сообщение от DarkHobbit (ok), 09-Дек-20, 12:58 
Ну "при каждой перерисовке окошка" - это очевидный наброс, не буду комментировать.

С _каждой_ строкой - не надо. Если мы говорим конкретно про аудиоплеер, то при работе с гетерогенной коллекцией достаточно запоминать кодировку для конкретного каталога (включая его подкаталоги). И то только для тех каталогов, где она отличается от дефолтной. При такой постановке вопроса процессор, конечно, нагружается, но по сравнению с нагрузкой на то же декодирование потока - это даже не копейки, это доли промилле какие-то.

Случай "куча треков россыпью с разными кодировкам в одном каталоге" я не рассматриваю, это случай отдельный. Тут как раз разовое перекодирование предпочтительнее (кстати, для такого перекодирования, ВНЕЗАПНО, тоже нужен инструментарий).

Ответить | Правка | Наверх | Cообщить модератору

164. "Релиз фреймворка Qt 6.0"  –1 +/
Сообщение от Ordu (ok), 09-Дек-20, 13:24 
> Ну "при каждой перерисовке окошка" - это очевидный наброс, не буду комментировать.

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

В момент рендеринга на экран перекодировать глупо, я вижу что ты это понимаешь. Но при этом, складывается впечатление, что момент чтения с диска и конвертации прочитанных байтовых массивов в String не кажется тебе удачным моментом для перекодирования. Если так, то в какой момент ты бы стал перекодировать?

> Случай "куча треков россыпью с разными кодировкам в одном каталоге" я не рассматриваю, это случай отдельный. Тут как раз разовое перекодирование предпочтительнее (кстати, для такого перекодирования, ВНЕЗАПНО, тоже нужен инструментарий).

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

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

Ответить | Правка | Наверх | Cообщить модератору

185. "Релиз фреймворка Qt 6.0"  –1 +/
Сообщение от DarkHobbit (ok), 09-Дек-20, 19:09 
> Но при этом, складывается впечатление, что момент чтения с диска и конвертации прочитанных байтовых массивов в String не кажется тебе удачным моментом для перекодирования.

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

> Важно то, что если ты хочешь рендерить теги, то как бы ты не принимал это решение, тебе придётся перекодировать в юникод.

Так, а я разве против? Я против того, чтобы менять сами медиафайлы, а база/индекс вполне может храниться в виде, приведённом к единой кодировке. Более того, должна.

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру