Ru-Board.club
← Вернуться в раздел «Программы»

» HandyCache - локальный кеширующий прокси сервер

Автор: mai62
Дата сообщения: 07.04.2006 01:46
Interceptor

Цитата:
Перешел с версии 94б2 на 95б1. Начались глшюки

Скачай последнюю версию, линк в шапке.
Автор: ALeXkRU
Дата сообщения: 07.04.2006 12:01
abz
что? так и не качается? проверял, все нормально если что - могу переложить куда-то
(ПМ глянь)
Автор: JohnC
Дата сообщения: 07.04.2006 18:15
Вот очень неплохая дока по регулярным выражениям, правда, заточенная под PHP
http://phpclub.ru/detail/article/regexp_1?printVersion=1
http://phpclub.ru/detail/article/regexp_2?printVersion=1
Автор: Taimael
Дата сообщения: 08.04.2006 09:37

Цитата:
http://rose.ixbt.com/phones/search.php?Firma=&weight_min=&weight_max=&TimeTalk=&TimeWait=&Battery=&DisplayLines=&Color=0&Colors=&Network2=on&MinPrice=&MaxPrice=&Feature10=-1&Feature46=-1&Feature32=-1&Feature24=-1&Feature27=-1&Feature9=-1&Feature44=-1&Feature45=-1&Feature41=-1&Feature40=-1&Feature48=1&Feature8=-1&Feature43=-1&Feature34=-1&Feature2=-1&Feature4=-1&Feature15=-1&Feature28=-1&Feature38=-1&Feature16=-1&Feature26=-1&Feature6=-1&Feature22=-1&Feature7=-1&Feature5=-1&Feature11=-1&Feature1=-1&Feature3=-1&Feature33=-1&Feature39=-1&Feature19=-1&Feature35=-1&Feature21=-1&Feature18=-1&Feature25=-1&Feature29=-1&Feature31=-1&Feature12=-1&Feature36=-1&Feature30=-1&Feature42=-1&Feature23=-1&Feature17=-1&submit=%CD%E0%E9%F2%E8%21


как в преобразованиях сделать замену всех "Feature" ?
примерная логика правила:
при совпадении "rose.ixbt.com/phones/search" заменить все "Feature" на "#"

mai62
когда планируется сделать сохранение длинных урлов?




Автор: dadu
Дата сообщения: 08.04.2006 10:04

Цитата:
Поставил НС, картинки в списке "Не обновлять", но HC постоянно запрашивает их на сервере! Процент "экономии" очень низкий! Почему?

"Виноват" кэш браузера! "Неправильный" браузер (например, IE) видит файл в своем кэше и запрашивает в Инете, изменился он или нет. НС каждый раз транслирует запрос и получает ответ сервера "Not Modified". Сам файл при этом не скачивается и не попадает в кэш HC. Естественно, каждый раз будет тратиться время и трафик на выполнение такого запроса!
Чтобы избежать данной ситуации, нужно почистить кэш браузера и уменьшить его размер до минимума (1 Мб) или отключить совсем.

Это правильный ответ? или все таки вернее
...для IE выставить опцию "Проверять наличие обновления сохраненных страниц:" - "Никогда" (Сервис\Свойства оборзевателя\Общие\Параметры)
Что тогда делать с размером кеша в IE?

Вопрос важный, нужен в FAQ. ваше мнение..
Автор: faZZ
Дата сообщения: 08.04.2006 10:42
это правильный. все же расписано
Автор: DenZzz
Дата сообщения: 08.04.2006 10:45
dadu

Цитата:
Это правильный ответ?

Да. Ключевые слова: "почистить кэш браузера", чтобы HC при следующем запросе сохранил файлы в свой кэш. А уменьшение кэша браузера до минимума позволит практически ничего в него не кэшировать - пусть кэшированием занимается HC.

Цитата:
для IE выставить опцию "Проверять наличие обновления сохраненных страниц:" - "Никогда"

Это неправильный ответ! Тогда страницы всегда будут браться из собственного кэша браузера, если они там есть. Правильно ставить точку: "При каждом посещении страницы". Вот и картинка уже пробегала...
Хотя, при размере кэша браузера в 1 Мб местоположение точки не критично, т.к. в него практически ничего не умещается и почти все запросы идут через HC.
Автор: V0lt
Дата сообщения: 08.04.2006 10:49
Taimael
В урле 736 символов... Значит на урл придеться выделять минимум килобайт

Цитата:
при совпадении "rose.ixbt.com/phones/search" заменить все "Feature" на "#"

ты символ # не трогай, он специальный

Цитата:
когда планируется сделать сохранение длинных урлов?

погоди, IMHO рано еще, есть другие проблемы
(такое сделать возможно только сложно получается. например надо будет ограничить длину имени папки кеша, реализовывать работу с индексом длинных урлов и т.п.)
Автор: mai62
Дата сообщения: 08.04.2006 11:20

Цитата:
Чтобы избежать данной ситуации, нужно почистить кэш браузера и уменьшить его размер до минимума (1 Мб) или отключить совсем.

Согласен с DenZzz

Цитата:
Ключевые слова: "почистить кэш браузера",

Важно дать шанс файлу попасть в кэш НС.

Цитата:
когда планируется сделать сохранение длинных урлов?

Хорошо бы найти алгоритм преобразования длинной строки в более короткую. Умеют же архиваторы жать текстовые фыйлы в разы.
Автор: DenZzz
Дата сообщения: 08.04.2006 11:28
Taimael

Цитата:
как в преобразованиях сделать замену всех "Feature" ?
примерная логика правила:
при совпадении "rose.ixbt.com/phones/search" заменить все "Feature" на "#"

Вообще так:
Правило Замена Заменить все Обязательный
Автор: Gluek
Дата сообщения: 08.04.2006 12:06

Цитата:
Хорошо бы найти алгоритм преобразования длинной строки в более короткую. Умеют же архиваторы жать текстовые фыйлы в разы.

А md5($url) не подойдет? А потом сравнивать с md5 страницы. Совпало - грузить из кеша.
Автор: DenZzz
Дата сообщения: 08.04.2006 12:24
mai62

А на самом деле, почему бы не преобразовывать имя слишком длинного файла в кэше в MD5 его имени и сохранять рядом, скажем, файл MD5.url с полным URL-ом? Эти файлы класть в папки соответствующих сайтов.



Например, какой-нибудь:

http://rose.ixbt.com/phones/search.php?Firma=&weight_min=&weight_max=&TimeTalk=&TimeWait=&Battery=&DisplayLines=&Color=0&Colors=&Network2=on&MinPrice=&MaxPrice=&Feature10=-1&Feature46=-1&Feature32=-1&Feature24=-1&Feature27=-1&Feature9=-1&Feature44=-1&Feature45=-1&Feature41=-1&Feature40=-1&Feature48=1&Feature8=-1&Feature43=-1&Feature34=-1&Feature2=-1&Feature4=-1&Feature15=-1&Feature28=-1&Feature38=-1&Feature16=-1&Feature26=-1&Feature6=-1&Feature22=-1&Feature7=-1&Feature5=-1&Feature11=-1&Feature1=-1&Feature3=-1&Feature33=-1&Feature39=-1&Feature19=-1&Feature35=-1&Feature21=-1&Feature18=-1&Feature25=-1&Feature29=-1&Feature31=-1&Feature12=-1&Feature36=-1&Feature30=-1&Feature42=-1&Feature23=-1&Feature17=-1&submit=%CD%E0%E9%F2%E8%21

можно записать в такой файл в кэше:

Сache\rose.ixbt.com\phones\search.php^\223B9F83F576396ADECE6D46F876A54B.md5


где 223B9F83F576396ADECE6D46F876A54B - это MD5 текстового файла new.url, содержащего полный URL страницы.

Затем new.url переименовать в 223B9F83F576396ADECE6D46F876A54B.url, чтобы можно было потом посмотреть (восстановить) полный URL в случае необходимости.

Преобразование имени файла в MD5 производить только в случае превышения длины его имени сверх допустимого.
Автор: Interceptor
Дата сообщения: 08.04.2006 15:25
mai62
С новой версией приколы продолжаются. На запрещенные урл (когда срабатывает правило из черного списка) выдается кусок черного списка. Юзаю черный список, который тут выкладывался однажды. Возможно просто сейчас по другому строятся правила для черного списка? ПРосто раньше такого глюка не было
Автор: V0lt
Дата сообщения: 08.04.2006 15:30
Люди, пожалуста, не цитируйте больше этот длинный урл. Ваши посты читать тяжело

DenZzz

Цитата:
А на самом деле, почему бы не преобразовывать имя слишком длинного файла в кэше в MD5 его имени и сохранять рядом, скажем, файл MD5.url с полным URL-ом? Эти файлы класть в папки соответствующих сайтов.

Выглядит неплохо, и реализовать не сложно
но я бы сохранял так:
Сache\rose.ixbt.com\phones\search.php^\#-223B9F83F576396ADECE6D46F876A54B
и хешировал не вес урл, а только то что после "?"
или даже лучше хешировать не урл, а имя файла после "^\"

Только есть одно НО, делать обратное преобразовывание будет очень сложно


Автор: DenZzz
Дата сообщения: 08.04.2006 16:47
V0lt

Цитата:
Только есть одно НО, делать обратное преобразовывание будет очень сложно

Обратное преобразование в программах поиска по кэшу, типа Архивариуса?
Поэтому я и предлагаю сохранять URL в файле MD5.url, чтобы можно было потом узнать, откуда скачана страница.

Еще, можно резать длинный URL на несколько частей покороче не более определенной длины (создавая вложенные папки в кэше)...
Автор: V0lt
Дата сообщения: 08.04.2006 16:51
IMHO прежде чем делать поддержку длинных урлов, надо переделать структуру кеша.

Также, IMHO придется вводить ограничения:
1) ограничить длину имени папки кеша хотя бы 50 символами (если больше, то ругаться)
2) считать урл длинным если после преобразования в файл, полное относительное имя файла (без папки кеша) более 200 символов.

Эти два ограничения необходимы для того чтобы при переносе кеша, длинность урла всегда трактовалась одинаково.

DenZzz
на счет обратных преобразований md5-урлов:
- Такие урлы доволно редкие
- Даже если сделаем просмоторщик кеша, незнание полного урла нас не будет сильно ограничивать (могу обосновать)
- Алгоритм с полным сохранение длинных урлов доволно сложен и структура кеша получается малоудобной в работе

вообщем, преобразовывать все что после знака "?" (или "^\") для длинных урлов в виде md5-хеша - это хорошая идея
...даже без всяких MD5.url
Автор: cluster
Дата сообщения: 08.04.2006 17:58
mai62
Кстати, а можно где-нить в мониторе сделать, чтобы фиксировался общий размер загруженной страницы?
Автор: mai62
Дата сообщения: 08.04.2006 20:43
Gluek

Цитата:
А md5($url) не подойдет? А потом сравнивать с md5 страницы. Совпало - грузить из кеша.

Мне кажется нужно сделать так:
1. Преобразовать url в имя файла в кэше
2. Выделить имя файла (без пути) и если оно больше 200 байт, то имя файла составить из след. частей:
- первые 200 байт имени файла
- символ #
- md5 имени файла.
Обратное преобразование имени файла в url будет невозможно. Но так ли это страшно? Для работы НС это не нужно вообще. Для работы программ индексации кэша это не страшно, т.к. такие файлы вероятно чаще всего втречаются глубоко внутри структуры сайта. Вряд ли есть нужда индексировать кэш до последнего файла.
Interceptor

Цитата:
С новой версией приколы продолжаются. На запрещенные урл (когда срабатывает правило из черного списка) выдается кусок черного списка. Юзаю черный список, который тут выкладывался однажды.

Приведи пример, чтобы я мог это воспроизвести у себя.
cluster

Цитата:
Кстати, а можно где-нить в мониторе сделать, чтобы фиксировался общий размер загруженной страницы?

Не все загружаемые файлы имеют поле Referer и такой подсчет будет неточным.
Автор: unreal666
Дата сообщения: 08.04.2006 20:54
mai62
mai62

Цитата:
2. Выделить имя файла (без пути) и если оно больше 200 байт, то имя файла составить из след. частей:
- первые 200 байт имени файла
- символ #
- md5 имени файла.

Так наибольшая длина имени файла в винде считается именно для полного пути.
Автор: mai62
Дата сообщения: 08.04.2006 21:25
unreal666

Цитата:
Так наибольшая длина имени файла в винде считается именно для полного пути.

Странно. Разве имя файла с полным путем где-нибудь хранится целиком? Мне кажется нет. А зачем тогда его ограничивать?
Автор: V0lt
Дата сообщения: 09.04.2006 09:06
mai62

Цитата:
- первые 200 байт имени файла
- символ #
- md5 имени файла.

тогда получим 200+1+32=233 символа - на папку кеша мало букв останется
к тому же придется смотреть чтобы 200 символов не попадало на границу кодов и также желательно чтобы 201 символ не был "/"

имхо:
- надо кодировать query (то что поcле "?") целиком
примеры:
%СASHE%\site.com\phones\search.php#\#223B9F83F576396ADECE6D46F876A54B
%СASHE%\site.com\phones\search.php#\#-223B9F83F576396ADECE6D46F876A54B

- если этого не хватит то кодить после последнего "\" в пределах 200 символов
примеры:
%СASHE%\site.com\некий_длинный_путь\phones\#223B9F83F576396ADECE6D46F876A54B
%СASHE%\site.com\некий_длинный_путь\phones\#-223B9F83F576396ADECE6D46F876A54B

PS: Если дадите функцию для дельфи преобразующую строку в md5, то могу внедрить ее в свой вариант преобразователя.
Еще надо определиться, что именно кодить: кусок урла или косок имени файла (разницы особой не вижу, но кодить урл проще и быстрее)
Автор: C0USIN
Дата сообщения: 09.04.2006 10:09
mai62

Цитата:
Странно. Разве имя файла с полным путем где-нибудь хранится целиком? Мне кажется нет. А зачем тогда его ограничивать?

Не знаю зачем, но это так. Ограничена именно длина полного пути.

Добавлено:

Цитата:
Обратное преобразование имени файла в url будет невозможно.

Точный URL восстанавливать необязательно. Важно получить такой URL, по которому HC выдал бы нужную страницу из кэша.
Автор: mai62
Дата сообщения: 09.04.2006 10:36
V0lt


Цитата:
Если дадите функцию для дельфи преобразующую строку в md5, то могу внедрить ее в свой вариант преобразователя.

Возьми здесь _http://www.fichtner.net/delphi/md5.delphi.phtml?download=md5.pas

Сделал эксперимент. В ФАТ32 макс. длина пути вместе с именем файла 258 символов.
Для экономии места предлагаю вместо md5 использовать crc32 (8 символов вместо 32).
Автор: V0lt
Дата сообщения: 09.04.2006 14:59
mai62

Цитата:
Для экономии места предлагаю вместо md5 использовать crc32

я сначала сделаю для md5, так что потом можно было не сложно изменить на crc32


Цитата:
Сделал эксперимент. В ФАТ32 макс. длина пути вместе с именем файла 258 символов.

Я на NTFS похожие эксперименты проделывал, файлы после этого не хотели удалятся

Добавлено:
mai62
сделал пробный вариант, со след. свойствами:
- урл считается длинным если ему соответсвут полное имя файла без папки кеша длиной более 200 символов
(папку кеша специально не учитывал, чтобы при переносе кеша, алгоритм работал правильно)
- кодирование сделал в виде #-md5 (34 символа)
- кодируется косок URL
- код записывается в имени файла после последнего символа "\", но не дальше 166-го (=200-34)
- в о-o-oчень редких случаях получаемая длина имени файла может достигнуть 202
(редирект)

теперь тот длинный урл преобразовывается так
URL2File -> rose.ixbt.com\phones\search.php#\#-d4d30db25e4f615800ac00773dbb37ff
File2URL -> хттп://rose.ixbt.com/phones/search.php?-d4d30db25e4f615800ac00773dbb37ff

код отправил на мыло

PS: функция URL2File опять возвращает относительный путь (без папки кеша), так и останется
Автор: Interceptor
Дата сообщения: 09.04.2006 17:41
mai62
В черном списке, выложенном в шапке есть 6-е правило:
+top.*
дополняем его исключением:
+desktop.*
Сохраняем список и набираем в браузере
http://top1/
Срабатывает правило 2.70:
(.)*(top|hit)(\d+)

Вываливается в результат:
[more]1,True,(.)*exaccess\.ru/asp/(.)*,,0 2,True,+count*,,0 3,True,"\D+\d{1,3}x\d{1,3}\D+",,0 4,True,+top.*,+desktop.*,0 5,True,.*livejournal\.com/userpic/.*,,0 6,True,+forum.ru-board.com/board/temp*,,0 7,True,+3a.overclockers.ru/ad*,,0 8,True,(.)*\.spylog\.com,,0 9,True,(.)*(/ads|banview|banner|adriver|\dcount|bnr|/sale|/pagead),,0 10,True,+music.lbn.ru,,0 11,True,+c.bigmir.net,,0 12,True,(.)*s1\.adward\.ru/\?r(.)*,,0 13,True,+pics.rbc.ru,,0 14,True,+jeans.com.ua/photos_img,,0 15,True,.*\.swf,,0 16,True,+i.bigmir.net/cnt,,0 17,True,(.)?(hotlog|tours|sharereactor)\.ru(.)*,,0 18,True,+ad.*.*,+download.nai.com,0 19,True,(.)?(count\d|hitbox|advertising|linkexchange|click\d|\dcount|adriver),,0 20,True,+r.mail.ru,,0 21,True,+adver.stopgame.ru,,0 22,True,+zaycev.net/m3_images/,,0 23,True,+kinopoisk.ru/images/bnnr,,0 24,True,+ad02.adonspot.com,,0 25,True,+ads.*.*,+prdownloads.sourceforge.net,0 26,True,(.)*\.(swf)(.)?,,0 27,True,+pics.rbc.ru/rbcmill/img,,0 28,True,^(www\.)?ad\d?\.(.)*,,0 29,True,(.)?\.clx\.ru/(rot|show)\.php?(.)*,,0 30,True,+*/ad?.*,,0 31,True,+astalavista.box.sk/adult*,,0 32,True,+mobile-review.com/cgi-bin/adcycle,,0 33,True,+pics.imho.ru,,0 34,True,+mobile-review.com/adimages,,0 35,True,+*gameguru.ru/*.js,,0 36,True,+partner.porta.ru,,0 37,True,+ypn-js.overture.com,,0 38,True,(.)?br\.gcl\.ru/cgi-bin/br(.)*,,0 39,True,+ads.tripod.lycos.co.uk,,0 40,True,+3.adbrite.com,,0 41,True,+mobile-review.com/orphus/orphus.htm,,0 42,True,+adnet.ru,,0 43,True,+adv.wiw.ru,,0 44,True,+itc.ua/viewban.php*,,0 45,True,+bape3.org/images/ru*,,0 46,True,+warlog.info,,0 47,True,+kpnemo.ru/media/rekl,,0 48,True,(.)?reklama(.)*,,0 49,True,+drivers.ru/phpads,,0 50,True,+txt.adv.vz.ru,,0 51,True,+muzoff.ru/rek,,0 52,True,+img.thebugs.ws/bn,,0 53,True,+i.uol.ua,,0 54,True,+web.mobiguru.ru/*.js,,0 55,True,+ru-traffic.com,,0 56,True,+cnstats.muzoff.ru,,0 57,True,+ipru.ru/b/*,,0 58,True,+link.link.ru,,0 59,True,+pan.karaoke.ru/adimage.php*,,0 60,True,+top*.rambler.ru,,0 61,True,+cnt.one.ru,,0 62,True,+bbn.img.com.ua,,0 63,True,(.)?r\.mail\.ru/b(.)*\.swf,,0 64,True,+zna.nu/pnotos/*,,0 65,True,(.)?m1.nedstatbasic.net/basic.js,,0 66,True,+counter.yadro.ru,,0 67,True,+img.pornoson.com/z.*,,0 68,True,(.)*(nnm.ru|rambler|realcoding|kpnemo\.ru/advimg)(.)*\.swf,,0 69,True,(.)*\.doubleclick\.net,,0 70,True,+ban.community8.com,,0 71,True,+bans.bride.ru,,0 72,True,+top1.list.ru,,0 73,True,+bnz.samara.ru,,0 74,True,+*images.rambler.ru/top100*,,0 75,True,+i.alkar.net,,0 76,True,+new--2006.narod.ru/,,0 77,True,(.)?bs\.yandex\.ru/show(.)*,,0 78,True,+win.mail.ru/*attachment,,0 79,True,+top3.list.ru/counter,,0 80,True,^213\.59\.0\.100/0,,0 81,True,+img.mail.ru/mail/ru/images/,,0 82,True,+www2.a-counter.kiev.ua,,0 83,True,+*top*.list.ru,,0 84,True,+shim-tub.yandex.ru/i*,,0 85,True,+br.gcl.ru,,0 86,True,+reks.com.ua,,0 87,True,.*viewsource\.jsp.*,,0 88,True,+adblock.ru,,0 89,True,+mforum.ru/ban*,,0 90,True,+web.gameguru.ru/web/ushki/*,,0 91,True,+web.gameguru.ru/web/loveguru*,,0 92,True,+needforspeed.lv/images/banners,,0 93,False,(.)*\.(jpg|jpeg|png|gif|bmp|swf|ico)(.)?,,0 94,True,+a.gismeteo.ru,,0 95,True,+adv.hardwarez.ru,,0 96,True,(.)?images\.rambler\.ru/upl(.)*,,0 97,True,+zozo.ru/bn,,0 98,True,+firefeniks.org/images/bana,,0 99,True,+*adserver.com,,0 100,True,+sexgid.ru/swf,,0 101,True,(.)*gold-music\.ru/muz100/rand(.)*,,0 102,True,+engine.rorer.ru/request,,0 103,True,+3dnews.ru/ushki,,0 104,True,+xxx.ru/bnnrs,,0 105,True,+bns*.net,,0 106,True,+aaa.overclockers.ru/*,,0 107,True,+web.gameguru.ru/web/ferra*,,0 108,True,^(www\.)?(1001tur|jmp\.net)\.ru(.)*,,0 109,True,+yadro.ru,,0 110,True,+*engine.awaps.net,,0 111,True,+bcysolutionad.adcyber.com/bns,,0 112,True,+*imho.ru/html.ng,,0 113,True,+body.imho.ru/image.ng,,0 114,False,"(.)?r\.mail\.ru/n\d{1,}$",,0 115,False,img\.?(.)*\.mail\.ru/,,0 [/more]

в логи:
[more]
09.04.2006 17:34:50 # 101: Connection from local/127.0.0.1

09.04.2006 17:34:50 # 101 <<< URL: http://top1/
IdConnectionIntercept1SendDo
09.04.2006 17:34:50 # 101 >>> URL: http://top1/
GET http://top1/ HTTP/1.0
Accept: */*
Accept-Language: ru,uk;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: top1
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cache-Control: no-cache


09.04.2006 17:34:50 # 101 <<< URL: http://top1/
IdConnectionIntercept1ReceiveDo: длина 7995
09.04.2006 17:34:50 # 101 <<< URL: http://top1/
HTTP/1.0 430 Blocked by HC
Server: HandyCache
Content-Length: 7868
Content-Type: text/html
Proxy-Connection: Keep-Alive


09.04.2006 17:34:50 # 101: Client Disconnection

09.04.2006 17:34:50 # 101 <<< URL: http://top1/
Destroy
[/more]

Кстати о Avant Browser Когда-то я предлагал ввести возможность и для Avant Browser точно так же как для Oper-ы добавить его в исключения. То есть чтобы напрямую из Avant можно было разрешать или запрещать показывать картинки. Тогда ты отказал, аргументируя что Avant Browser не показывает в строке User Agent никакой информации о себе.
Вот что я выловил сейчас:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
User-Agent: Avant Browser (http://www.avantbrowser.com)
Автор: mai62
Дата сообщения: 09.04.2006 18:32
V0lt

Цитата:
код отправил на мыло

Отвечу, когда ознакомлюсь подробно
Interceptor

Цитата:
В черном списке, выложенном в шапке есть 6-е правило...

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

Цитата:
Кстати о Avant Browser...

Видимо это зависит от настроек Авант. Мой прикидывается IE.
Автор: Interceptor
Дата сообщения: 09.04.2006 19:54
mai62
Ага, точно, вбил. извиняюсь! Теперь все ок!
Насчет Аванта, я использую 10.2.39, наверное это появилось в этой версии.
Автор: C0USIN
Дата сообщения: 09.04.2006 23:46
Я тут провел небольшие изыскания в документации:

Цитата:
...имея дело с файлами, всегда необходимо помнить об ограничении длины полного имени файла, накладываемого операционной системой. Для ANSI-версий функций (единственно доступных для ОС Windows 95/98), выполняющих файловые операции, максимальная длина буфера, содержащего полный путь к файлу (включая ноль-терминатор) равна MAX_PATH (что составляет 260 для PC-архитектуры и 256 для MAC). Для Windows NT/2000 доступны UNICODE-версии функций, которые способны расширить этот предел вплоть до 32767 UNICODE символов. В последнем случае UNICODE-строка, содержащая полный путь к файлу, должна начинаться символами "\\?\". Для более полной информации см. раздел "File Name Conventions" в MSDN.

Цитата:
На самом деле это ограничение в 260 символов есть только в Windows API. В самой файловой системе (FAT32 или NTFS) максимальная длина имени файла ограничена 255 символами, но максимальная длина пути может быть гораздо больше, чем поддерживает WinAPI. Поэтому, ограничение на длину пути может быть преодолено.

Цитата:
Unicode-версии функций CreateDirectory, FindFirstFile, GetFileAttributes, и SetFileAttributes позволяют использовать пути, превышающие длину MAX_PATH, если путь имеет префикс "\\?\" or "\\?\UNC\". Эти префиксы указывают функции на необходимость отключения проверки пути. Используйте "\\?\" префикс для путей на локальных носителях, а "\\?\UNC\" для путей, которые имеют UNC-формат.

Цитата:
Universal Naming Convention

Universal Naming Convention - сокращенно UNC, можно дословно перевести как "Универсальное Соглашение об Именах", это формат для записи пути к файлу расположенному на удаленном компьютере. Он имеет вид "\\server\share\path". Server это, как ни странно сервер, share - это расшаренный ресурс на нем, а дальше следует путь к файлу в обычном формате. Такой способ доступа к файлам можно использовать и для локальной машины, только в этом случае вместо "server" нужно подставлять "?" или ".", а путь к файлу указывать вместе с буквой диска. Например так: "\\?\C:\folder\file.txt".


Кстати, я слышал, что Microsoft выпустил обновление для Win98 добавляющее в Windows API UNICODE-версии функций. И весит оно всего 200кб. Называлось это примерно так "UNICODE layer for Windows 98"

Ничто не мешает нам, используя префикс "\\?\", создать путь с длиной большей, чем 260 символов. Но проблема в том, что просматривать кэш можно будет только средствами HC. Например, Архивариус не сможет проиндексировать страницы с длинным именем.
Автор: mai62
Дата сообщения: 10.04.2006 01:29
C0USIN
Информация для размышления

Рейтинг 10 ОС посетителей моего сайта с 29.03.06
Windows XP 634 64.30%
Другой 155 15.72%
Windows 98 99 10.04%
Windows 2000 51 5.17%
Windows 2003 36 3.65%
Linux 5 0.51%
Windows 95 4 0.41%
Windows ME 1 0.10%
BeOS 1 0.10%
Автор: unreal666
Дата сообщения: 10.04.2006 01:31

Цитата:
Например, Архивариус не сможет проиндексировать страницы с длинным именем.

Да и как в самом проводнике смотреть такие файлы?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: грабилка экрана под OpenGL


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.