Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Общие вопросы
»
Алгоритм преобразования URL в имя файла в кэше
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
2
3
[
4
]
5
6
...
13
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Алгоритм преобразования URL в имя файла в кэше (Прочитано 237617 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #60 :
11 марта 2007, 13:36:10 »
v0lt
Цитировать
Пора узнать мнение Главного раработчика
Спасибо за проделанную работу по обобщению предложений. Добавь, пожалуйста, в табличках колонку, отображающую нынешнее поведение НС. Мне представляется важным по возможности сохранить совместимость с прежними версиями НС.
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #61 :
11 марта 2007, 18:01:02 »
Цитата: v0lt от 11 марта 2007, 13:05:03
Поповоду неразрывного пробела, надо проверять, как он поведет себя на FAT, на unix-овых ФС.
На FAT ведёт себя нормально
- проверено неоднократно мной! У меня папка "Ссылки" IE уже не первый год на FAT переименована в неразрывный пробел! И никаких глюков ни разу не было! И простые файлы тоже нормально создаются и обрабатываются! Проверял!
Цитата: v0lt от 11 марта 2007, 13:05:03
По поводу %22->## я тем более против.
А где аргументация? Чем тебе не нравится такой прозрачный и легкочитаемый способ кодирования?
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #62 :
11 марта 2007, 18:10:08 »
Цитата: v0lt от 11 марта 2007, 10:02:26
я не вижу проблемы выше приведенные урлы с "GPS/Gps" по сути ведут на одну и туже пустую страницу. Приведите более серьезные аргументы
HandyCache у тебя выдала ту самую ошибку, о которой говорил
Цитата: Сергей от 08 марта 2007, 16:23:21
Потом когда мы введем правильное название
http://ru.wikipedia.org/wiki/GPS
, то HC увидит что такой файл уже есть в кэше и может отказаться его обновлять.
Зайди на
http://ru.wikipedia.org/wiki/GPS
- но
отключив чтение из кэша
! Тебе откроется вовсе не пустая страница...
(если всё же откроется пустая - это IE виноват! Обнови страницу при выключенном чтении из кэша!)
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #63 :
11 марта 2007, 20:14:37 »
Цитата: cepera_ang
В файловой системе Unix запрещены два символа - "/" (обозначает папки в пути) и "\000" (то есть нулл символ, обозначающий конец имени файла). Все остальные символы - разрешены.
Спасибо, а как там с уникодом?
Цитата: popkov
А где аргументация? Чем тебе не нравится такой прозрачный и легкочитаемый способ кодирования?
Не знаю чего сказать, ну не нравиться мне %22->##. Если бы уж очень понадобилось %23->##, я может и согласился (по другому тут глупо кодировать). В принципе обратное преобразовние в URL особо не усложняется (всего то поставить s:=StringReplace(s,'##','%22',[rfReplaceAll]) в самое начало функции), но только из-за прозрачности, не знаю, не знаю... внуть кеша не каждый полезет, проще в Историке найти нужное (обычно)
Цитата: popkov
но отключив чтение из кэша! Тебе откроется вовсе не пустая страница...
(если всё же откроется пустая - это IE виноват! Обнови страницу при выключенном чтении из кэша!)
Разобрался, пришлось почистить кеш Firefox...
Значит кодируем опционально и в стандартные настройки для примера вбиваем "wikipedia.org"
Цитата: mai62
Спасибо за проделанную работу по обобщению предложений. Добавь, пожалуйста, в табличках колонку, отображающую нынешнее поведение НС. Мне представляется важным по возможности сохранить совместимость с прежними версиями НС.
Всегда пожалуйста.
Сейчас дополню табличку...
PS: маленькая просьба. Сразу новую версию не выпускай. Еще остались пара вопросов и конвертера нет.
Сообщить модератору
Записан
cepera_ang
Beta tester
Репутация: +9/-4
Offline
Сообщений: 355
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #64 :
11 марта 2007, 20:21:50 »
Цитата: v0lt от 11 марта 2007, 20:14:37
Спасибо, а как там с уникодом?
В современных юниксах, насколько я знаю, с уникодом все в порядке.
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #65 :
11 марта 2007, 20:24:13 »
для
mai62
Преобразования URL<->filename
(измениния/дополнения выделены жирным)
Лечим глюки IE (приводим урл к стандарту)
символ
0.98b1
до "?"
после "?"
URL#строка
URL
URL
"
%22
<
%3C
>
%3E
`
%60
^
%5E
^
(не кодируем)
Основная часть кодирования
символ
0.98b1
до "?"
после "?"
/
\
\
#%
//
\~
\#%
#%#%
*
#x
#x
\
#~
#~
|
#i
#i
!
#I
!
(не кодируем)
:
!
#=
или
#!
?
^\ #^
^\
#^
Красивости
(новое)
строка
замена
%D1%8F
я
(кирилица)
%20
пробел
Можно сделать опционально. В будущем можно добавить другие кодировки.
Опциональное кодирование регистра
(новое)
строка
замена
W
`w
или
`W
`w или `W не принципиально.
2
popkov
По поводу неразвывного пробела (символ 0160). Напрягает, то что его номер больше 127, поэтому на некоторых системах он может выглядеть по другому, для спец кода это плохо. Еще возможно путаница (выглядит как пробел) и есть проблемы ручного редактирования. Обратная ковычка поудобнее будет.
Редирект и решение проблем
строка
0.98b1
замена
редирект
редирект#m
редирект#m
.\
.#n\
пробел\
пробел#n\
путь\
путь\#_
путь\#_
путь.
путь.#_
путьпробел
путьпробел#_
Добавилось следующее: если папка или файл заканчиваются точкой или пробелом, то соответственно добавляем #n и #_
Остальное на предыдущей странице...
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #66 :
11 марта 2007, 21:17:42 »
v0lt
В первых двух твоих таблицах колонка "после "?" не заполнена, хотя, на мой взгляд, она должна совпадать с колонкой "до "?". Или так и задумывалось, а движок форума тебя не понял?
В таблице "Красивости (новое)" сейчас только одна буква "я" и пробел. Может, сразу расписать кодировку всех символов в верхнем и нижнем регистре?
Собственно, можешь приаттачить к посту файл в формате Excel или Word, чтобы не мучаться с таблицами в BB-коде...
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #67 :
11 марта 2007, 22:46:48 »
Цитата: DenZzz
В первых двух твоих таблицах колонка "после "?" не заполнена, хотя, на мой взгляд, она должна совпадать с колонкой "до "?". Или так и задумывалось, а движок форума тебя не понял?
Если ячейка отсутствует - смотри левее. Или я не умею объеденять ячейки или движок...
Цитата: DenZzz
В таблице "Красивости (новое)" сейчас только одна буква "я" и пробел. Может, сразу расписать кодировку всех символов в верхнем и нижнем регистре?
шутишь их там 66
Цитата: DenZzz
Собственно, можешь приаттачить к посту файл в формате Excel или Word, чтобы не мучаться с таблицами в BB-коде...
угу, когда очищу от BB-шек
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #68 :
12 марта 2007, 11:52:07 »
Опциональное кодирование регистра
безусловно нужно. Пусть будет для выборочных сайтов. И хотелось бы, чтобы ударение добавлялось только в случае конфликтов, когда одноименный файл уже есть в папке. Аналогично тому как сейчас разрешаются конфликты файлов и папок. Надеюсь, это возможно.
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #69 :
12 марта 2007, 19:32:17 »
DenZzz
выкладываю
таблицу
, там основная часть и декодирование кирилицы (см. лист 2)
(коды #' #) #( #} #{ пока не вносил)
Сергей
Цитировать
И хотелось бы, чтобы ударение добавлялось только в случае конфликтов, когда одноименный файл уже есть в папке. Аналогично тому как сейчас разрешаются конфликты файлов и папок. Надеюсь, это возможно.
В принципе возможно, но муторно и медленно.
URL2filename_base&rus.xls
(28 Кб - загружено 75 раз.)
«
Последнее редактирование: 12 марта 2007, 20:18:58 от v0lt
»
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #70 :
12 марта 2007, 21:15:52 »
Цитата: v0lt от 11 марта 2007, 20:14:37
Не знаю чего сказать, ну не нравиться мне %22->##. Если бы уж очень понадобилось %23->##, я может и согласился (по другому тут глупо кодировать). В принципе обратное преобразовние в URL особо не усложняется (всего то поставить s:=StringReplace(s,'##','%22',[rfReplaceAll]) в самое начало функции), но только из-за прозрачности, не знаю, не знаю... внуть кеша не каждый полезет, проще в Историке найти нужное (обычно)
Тогда предлагаю вариант получше -
кодировать двойную кавычку двумя символами ударения, идущими подряд: "``"
.
Вариант, по-моему, более чем удачный. Конфликтов с кодированием заглавных букв не будет - там не может идти подряд два символа ударения.
Цитата: v0lt от 11 марта 2007, 20:24:13
2
popkov
По поводу неразвывного пробела (символ 0160). Напрягает, то что его номер больше 127, поэтому на некоторых системах он может выглядеть по другому, для спец кода это плохо.
В каких системах он выглядит иначе? Есть ли вообще такие системы? Уверен, под всеми версиями Win он выглядит одинаково - как пробел.
Цитата: v0lt от 11 марта 2007, 20:24:13
Еще возможно путаница (выглядит как пробел) и есть проблемы ручного редактирования. Обратная ковычка поудобнее будет.
Может быть. Но тогда предлагаю в разделе "Решение проблем" решать их не с помощью комбинации "#n" - а с помощью куда более подходящего для этих случаем символа неразрывного пробела!
То есть, я предлагаю следующее:
Редирект и решение проблем
строка
0.98b1
замена
редирект
редирект#m
редирект#m
".\"
". \"
"пробел\"
" \"
"путь\"
путь\#_
"путь\#_" или "путь\ "
"путь."
"путь. "
"путьпробел"
"путь "
Во всех этих случаях я предлагаю обходить ограничения на использование пробелов и точек в именах файлов через неразрывный пробел,
на который они не распространяются
!
Все видимые пробелы в таблице - это неразрывные пробелы!
Согласитесь, что такое представление не только
короче
, но и гораздо нагляднее и более удобочитаемо!
По-моему, неразрывный пробел для наших целей чрезвычайно удобен. Давайте, что ли, протестируем, может ли он создавать какие-то глюки вообще? Я сомневаюсь. Единственный недостаток, который я заметил при работе с ним - если его скопировать в буфер обмена "в формате RTF" (например, из Word) или "в виде HTML" (с вэб-страницы), то при конвертации в Plain Text винда зачем-то заменяет его на простой пробел. Этого
не происходит
, если с самого начала копировать как Plain Text (например, из Блокнота или, редактируя имя файла в Проводнике, содержащее неразрывный пробел - можно копировать и вставлять сколько угодно, никаких проблем я не заметил).
«
Последнее редактирование: 12 марта 2007, 21:43:20 от popkov
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #71 :
12 марта 2007, 23:22:41 »
Цитата: v0lt от 12 марта 2007, 19:32:17
выкладываю
таблицу
, там основная часть и декодирование кирилицы (см. лист 2)
О.К. Только колонка "после "?" опять не везде была заполнена - подправил.
Еще добавил в декодирование кириллицы кодировку Win-1251.
Например, URL:
http://www.yandex.ru/yandsearch?text=%CF%F0%E8%EC%E5%F0
корректно открывается во всех браузерах и хотелось бы в кэше видеть "прозрачную" кириллицу, а не коды...
Мы же собираемся ради "красивости" декодировать UTF-8, типа:
http://www.yandex.ru/yandsearch?text=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80
Чем Win-1251 хуже?
URL2filename.zip
(6.67 Кб - загружено 47 раз.)
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #72 :
12 марта 2007, 23:41:00 »
Цитата: DenZzz от 12 марта 2007, 23:22:41
Еще добавил в декодирование кириллицы кодировку Win-1251.
Например, URL:
http://www.yandex.ru/yandsearch?text=%CF%F0%E8%EC%E5%F0
корректно открывается во всех браузерах и хотелось бы в кэше видеть "прозрачную" кириллицу, а не коды...
Грамотно!
Только
при кодировании заглавных букв
, я думаю,
не стоит менять их регистр - пускай остаются заглавными
! Просто перед каждой заглавной буквой будет стоять соотв. символ - знак ударения или неразрывный пробел (это уж - отчасти дело вкуса, отчасти - вопрос универсальности неразрывного пробела, который, судя по моим экспериментам, вполне безопасен для использования в именах файлов).
Ну и насчёт двойной кавычки - всё же считаю нужным кодировать её максимально прозрачно как два символа ударения: "``".
Да и символы "<>" можно бы попроще записать как "#{" и "#}" соответственно. А можно - и того проще, записать их как " {" и " }" (неразрывный пробел + {}), соответственно.
«
Последнее редактирование: 13 марта 2007, 00:02:32 от popkov
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #73 :
13 марта 2007, 00:31:30 »
Цитата: popkov от 12 марта 2007, 23:41:00
Только
при кодировании заглавных букв
, я думаю,
не стоит менять их регистр - пускай остаются заглавными
!
Ну и насчёт кавычки - всё же считаю нужным кодировать её максимально прозрачно как два символа ударения: "``".
Да и символы "<>" можно бы попроще записать как "#{" и "#}" соответственно.
Ничего не имею против - это не помеха для обратного преобразования filename -> URL.
Единственная заметка, что перекодировать придется не только сами "<> в URL-ах IE, но и их коды в других браузерах, чтобы не плодить в кэше одинаковые файлы с разными именами.
Цитировать
По-моему, неразрывный пробел для наших целей чрезвычайно удобен.
А вот использовать "неразрывный пробел" мне не очень нравится!
Во-первых, потому что визуально он ничем не отличается от обычного, что может создать неудобство для пользователя, который захочет открыть файл в сторонней программе, набрав вручную его имя. Естественно, он вряд ли сам догадается, что там используется "неразрывный пробел".
Во-вторых, как ты уже озвучил, его очень не просто ввести с клавиатуры (надо помнить код) и нельзя скопировать из наглядного в этом плане Word-а.
В общем, использование "неразрывного пробела" затруднит ручную правку имен файлов и ручной ввод их в сторонних программах!
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #74 :
13 марта 2007, 06:58:58 »
popkov
Цитировать
Тогда предлагаю вариант получше - кодировать двойную кавычку двумя символами ударения, идущими подряд: "``".
все лучше и лучше
вспомним с чего все начиналось
%22 -> #' -> ## -> ``
Последний вариант конечно наглядный, но мне и %22 никак не мешает
Но ближе к теме, #' - очень логичный и удобный код для программирования. ## - растут сомнения (а зачем?), но сделать можно.
Теперь о "``". У меня даже сомнения стали возникать, стоит ли использовать символ ` как специальный (см. кодирование регистра), почти наравне с великим #
Этот символ входит в "группу" символов (пробел"#<>`), которые нельзя использовать в урле явно, но при этом имеются на любой клавиатуре (во как
). И вдруг найдется такой же настырный человек, который будет лобировать %60 -> ` И тут даже возразить нечего, как и "пробел" его не требуется кодировать, чтобы создать такой файл.
Ладно посмотрим, что другие форумчане скажут.
Цитировать
Во всех этих случаях я предлагаю обходить ограничения на использование пробелов и точек в именах файлов через неразрывный пробел, на который они не распространяются!
Попробую возразить вашей же читатой - "под всеми версиями Win он выглядит одинаково - как пробел."
Я тут попробовал насоздавать папки файлы состоящие только из неразрывных пробелов. Зрелище страшное
(можно прикалываться над бедными чайниками) Есть подозрение, что спецы из мелкосовта когда писали ограничение на обычный пробел, забыли про неразрывной. Попробуй в командной строке через команду DIR узнать сколько неразрывных пробелов стоит в конце имени папки/файла. А если в имени намешать оба типа пробела, то ваще пипец...
Что-то мне припоминается глюк в каком-то продукте MS связанный как раз с неразрывном пробелом
PS: Разделение кода #_ и #n для файлов и папок я вводил не просто так. Я попробую проработать вариант без #n, потом отпишусь для чего это надо...
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #75 :
13 марта 2007, 07:05:42 »
DenZzz
Цитировать
Чем Win-1251 хуже?
не стандарт, а глюк фокса
нельзя однозначно написать алгоритм декодирубщий одновременно и уникод и Win-1251.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #76 :
13 марта 2007, 07:50:10 »
Цитата: v0lt от 13 марта 2007, 07:05:42
Цитировать
Чем Win-1251 хуже?
не стандарт, а глюк фокса
нельзя однозначно написать алгоритм декодирубщий одновременно и уникод и Win-1251.
Я не про глюк Фокса! Зайди на
http://www.yandex.ru/
в Опере, набери в поле ввода русский текст и нажми "Найти" - получишь URL с кодами символов в Win-1251, который сервер понимает и возвращает результаты поиска!
Собственно, также без проблем сервер понимает и тот же самый текст, но в UTF-8 - примеры приводил выше!
А раз сервер смог без проблем опознать кодировку, то HC можно попробовать этому обучить!
Видимо, придется сделать допущение, что в URL может находиться одновременно только одна кодировка, и исходя из этого, декодировать символы по той или иной таблице.
Также, видимо, следует сохранять в имени файла признак кодировки кириллицы для возможности обратного преобразования filename -> URL...
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэ
«
Ответ #77 :
13 марта 2007, 07:57:42 »
Цитата: DenZzz от 13 марта 2007, 00:31:30
Во-вторых, как ты уже озвучил, его очень не просто ввести с клавиатуры (надо помнить код) и нельзя скопировать из наглядного в этом плане Word-а.
В общем, использование "неразрывного пробела" затруднит ручную правку имен файлов и ручной ввод их в сторонних программах!
Ручной ввод имени файла - сделает крайне неудобным, это правда. Другое дело, что мне это никогда не было нужно (поэтому даже в голову не пришло). Мало кому это может быть нужно, но для универсальности можно и правда тогда ограничиться символом ударения для кодирования заглавных букв.
«
Последнее редактирование: 13 марта 2007, 08:09:01 от popkov
»
Сообщить модератору
Записан
Сергей
Beta tester
Репутация: +9/-2
Offline
Сообщений: 621
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #78 :
13 марта 2007, 12:05:44 »
DenZzz
Цитировать
Чем Win-1251 хуже?
Тем, что мы не знаем наверняка, какая там кодировка на самом деле. Мы что, создаем прокси только для русских? Вдруг буржуи тоже захотят пользоваться этой программой. Не навязывать же всем WIN. Да и в россии может встретиться сайт с KOI-8.
Если и делать преобразование, то в имени файла обязательно надо сохранить информацию о кодировке. Например так
#?KOI8-R?Пример
Это тебе повезло, что Яндекс понимает и WIN и UTF-8
А попробуй такой URL
http://forum.ru-board.com/forum.cgi?action=filter&forum=35&filterby=topictitle&word=
Пример
Браузер добросовестно закодирует в юникод
http://forum.ru-board.com/forum.cgi?action=filter&forum=35&filterby=topictitle&word=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80
а сервер этого не поймет.
popkov
Неразрывный пробел это символ Юникода с кодом 00A0. Я категорически против его использования. Юниксовые файловые системы у нас, кстати, по умолчанию, монтируются в кодировке KOI-8 и такого символа там нет
FAR понимает неразрывный пробел? У него плохо с поддержкой Юникода. Зачем лишние проблемы создавать?
«
Последнее редактирование: 13 марта 2007, 13:01:04 от Сергей
»
Сообщить модератору
Записан
popkov
Beta tester
Репутация: +3/-0
Offline
Сообщений: 349
Re: Алгоритм преобразования URL в имя файла в кэше
«
Ответ #79 :
13 марта 2007, 14:17:43 »
Цитата: Сергей от 13 марта 2007, 12:05:44
Юниксовые файловые системы у нас, кстати, по умолчанию, монтируются в кодировке KOI-8 и такого символа там нет
Не знал... Что ж, тогда спорить не о чем.
Сообщить модератору
Записан
Страниц:
1
2
3
[
4
]
5
6
...
13
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...