Linda-chan
А что, в линупсе тоже есть максимальная длина файла или это просто Дропбокс такой умный, что не может скачать файл с именем в 182 символа?
Дата рождения: 01.11.1983
Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.
Linda-chan
А что, в линупсе тоже есть максимальная длина файла или это просто Дропбокс такой умный, что не может скачать файл с именем в 182 символа?
Graf
Linda-chan, смотря какая файловая система
Toyoku-mono
Техническое ограничение вроде как есть, но это зависит от файловой системы, разве нет?
Linda-chan
Toyoku-mono
BTRFS 255 bytes
exFAT 255 UTF-16 characters
ext2 255 bytes
ext3 255 bytes
ext3cow 255 bytes
ext4 255 bytes
FAT32 8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS 255 characters
XFS 255 bytes
Taciturn
Да, действительно - файл с именем из 304 символов создать не вышло.
Linda-chan
И вот тут бы пригодилось короткое имя файла, но увы ^^'
akagitsune
как ни странно, но таки есть и на длину пути и имена. иногда выскакивает, когда пытаешься например бекап хомяка с винды распаковать на месте в глубинах хранилища. Особенно припекает несоответствие
"NTFS - 255 characters" и "linups fs - 255 bytes"
Taciturn
Graf
Linda-chan
Graf
Linda-chan, Ура. решение найдено. А обмен между вендой и лялихом шел?
Linda-chan
Linda-chan
Graf
Linda-chan, там что, тоже USC-2? По образу и подобию MS?
Короче, виновный найден - криворукие писатели дропбокс-клиента, которые нихрена не в курсе о кодировках, используемых в ФС
Linda-chan
Graf
Linda-chan, перекодировать из USC-2 в uft-8.
Данные от том, с какой ОС подключился клиент - у них имеются
Linda-chan
Graf
Linda-chan, как ты убедилась, стащив файл в веба, это даже браузеры умеют. вернее, веб-морда, браузерам выдает то, что они умеют.
Веб-приложение, должно отдать клиенту то, что умеет клиент. Браузерам отдали, а собственному клиенту - не сумели
Linda-chan
Ты говоришь какую-то чушь. Броузеру выдаётся файл с таким-то именем, броузер предлагает сохранить этот файл, используя системный/тулкитный диалог. Если не сохраняется, пользователь меняет имя файла, как нужно. Клиент делает тоже самое, но ты предлагаешь ему самому догадаться, как разрулить ситуацию.
Graf
Linda-chan, я предлагаю запрашивать у клиента кодировку фс и выдавать ему данные в этой кодировке. Имхо, как-то логично
Linda-chan
Graf
Linda-chan, уверен, что нет. как ты писала выше, клиент тупо использует системную функцию. Следовательно, переконвертация кодировок для различных ФС и даже локалей, должна ложится на сервер.
Linda-chan
Graf
Linda-chan, мне имя файла от сервера УЖЕ должно прийти в utf-8, ибо в заголовке запроса указано, что это Client DropBox/Linux
Linda-chan
Graf
Linda-chan, окай, не клиента. дело СЕРВЕРА дропбокса, отдать данные в правильной для клиента кодировке. Так лучше?
Linda-chan
Graf
Linda-chan, да вдвойне чушь, если учесть, что файл как-то залился на дропбокс, а на том же дропбоксе - линукс, со всеми вытекающими.
Linda-chan
Graf
Linda-chan, збс
Graf
Linda-chan, уела
Linda-chan
Ну дык. Была же метода получения файлов из любого аккаунта по хэшу файла. Тоесть можно предположить, что там файлы хранились в одной куче, искались по хэшу, а в БД уже хэши были распределены по конкретным аккаунтам. Потом дело прикрыли, но, скорее всего, просто сверкой доступных хэшей в аккаунте.
Taciturn
Toyoku-mono
Linda-chan
Graf
Linda-chan, какие данные, какая база...
Linda-chan
Я в базах не очень.
Graf
Linda-chan, в NoSQL хранилищах, вполне себе быстро и чотко можно хранить всякую бинарную хуету.
Toyoku-mono
Данные хранить непродуктивно
Graf
Toyoku-mono, Ораклу про это расскажи
Toyoku-mono
В: О великий Оракул, эффективно хранить данные?
О: Эффективно хранить картоху и лук, консервы там всякие!
Graf
Toyoku-mono, ога, а так же патроны, тушенку, крупы...
Toyoku-mono
... трупы.
Graf
Toyoku-mono, Трупы? Хранить? Какой с них профит?
Toyoku-mono
Профит в отсутствии отсидки, например.
Graf
Toyoku-mono, скорми свиньям, и не будет вонять
Toyoku-mono
А не проще на гуляш и холодец?
Graf
Toyoku-mono, крупные кости куда девать? Они ж вполне узнаваемы.
А после свиней - только коронки останутся...
Toyoku-mono
Из костей сделать поделки, продавать на ближайшей ЖД станции.
Graf
Toyoku-mono, это ты такое творческое, а я даже стол никак не зопилю(
Toyoku-mono
Стол из костей?
Graf
Toyoku-mono, не, из дерева. и найти еще 8 учеников
33 года, плотник, 13 учеников, вот это все... опоздал на 3 года уже
Toyoku-mono
Лидером секты заделаться?
Graf
Toyoku-mono, пуркуа па?
Toyoku-mono
тушенка кстати не прикольна, лучше морской экстренный паек.
Taciturn
Graf
Linda-chan
Graf
Linda-chan, бля. ты ведьма. а я себе моск ломаю.
А у изначального заливальщика, что с файлом станет? тоже переименуется?
Linda-chan
Он заливал не через клиент, а через фичу «File Request». Тоесть что-то типа входящих файлов: заливать может любой, у кого есть правильная ссылка, а смотреть залитое только я.
Graf
Linda-chan, кокой ужос(
Linda-chan
Удобная штука.
akagitsune
Linda-chan, в общем, если это что-то корпоративное и расчитано на кроссплатформенность, то имеет смысл запретить клиенту создавать и заливать файлы с именами и путями длиннее консенсусного максимума для кроссплатформенных клиентов. Ну или все на ntfs перевести, чтоб мозги не парили.
akagitsune
Graf
akagitsune, ну, давай нихрена не выдавать и не копировать файл, так лучше?
akagitsune
Graf
akagitsune, программа для пользователя или пользователь для программы? то что ты предлагаешь - это второй случай. "ну не шмогла я" и ебитесь как хотите
Linda-chan
Linda-chan
Linda-chan
Точно, компоненты. Вот что даёт GetVolumeInformation() для NTFS диска:
Max component len: 255
File system name: NTFS
Graf
Linda-chan, 255 чего?
Linda-chan
lpMaximumComponentLength
Points to a doubleword value that receives the maximum length, in characters, of a filename component supported by the specified file system. A filename component is that portion of a filename between backslashes.
The value stored in variable pointed to by *lpMaximumComponentLength is used to indicate that long names are supported by the specified file system. For example, for a FAT file system supporting long names, the function stores the value 255, rather than the previous 8.3 indicator. Long names can also be supported on systems that use the New Technology file system.
Graf
Linda-chan, даблворд - это ж 4 байта на символ, не?
mva
вообще, это ФС-зависимо, но ни одна из известных мне использумых линупсоидами ФС не имеет ограничения в 182 (однобайтных) символа в имени файла (например, у tmpfs и ext4 - 255 байт)...
Впрочем, не то, чтобы я копал глубоко и был точно уверен, что это ограничение полностью на уровне фс
Linda-chan
Где-то выше пришли к выводу, что таки ограничение на уровне ФС сработало. Имя файла было на русском, и в 255 байт не вписалось.
ext3fs.
Не, таки, ext4.
Linda-chan, /3 таки. Но полный путь - не лимитирован.
Ну хоть что-то.
Linda-chan, /8
Там неясно, один пишут лимит есть, другие нет, третьи что есть, но он просто достаточно велик чтобы почти никто в него не утыкался в реальности.
Toyoku-mono, нихрена неясного, я вот токо шо открыл limits.h и своими глазами прочитал)
короче, длинна полного пути файла сохраненного в хомяке - 4091-len(username)
Теперь осталось придумать путь в длинной в 4 килобайта :)
Сразу видно человека, в универе не учившегося!
Сорян, у меня просто мания к овероптимизации, я себе такого позвоить не могу :(
Не, просто в универе была шутка на создание очень глубоко вложенных каталогов.
Linda-chan, %windir%\system32\drivers\etc\porno?
Это от родителей ^^ А я про каталог\проги\крутые\от васи\тоже проги\качать\здесь\1\2\3\4\5\6 etc.
Linda-chan, вот, а ты клиент дропбокса через strace запусти
Зашла через CarrotDAV и сократила имена файлов. Поздно.
Вопрос конечно в том как Дропбокс хранит данные на сервере. И каке ограничения в клиенте.
На сервер файл залился через вэб-интерфейс и прекрасно просматривался через него же. Но не качался клиентом.
ну вот кстати да, есть способ уткнуться в лимит - делать копию сайта например, там могут быть URLы огромные.
Ну явно не в моем.
Toyoku-mono, С:\Хрень по работе\Гемор\Тупые клиенты\Неплательщики\охуевшие\Уважаемый Сергей Анатольевич.doc
это если хомяк не на отдельном разделе. если на отдельном - 4095-len(username)
Забавно, для винды справедливо тоже самое, но MAX_PATH никто не отменял.
В линуксе тоже есть лимиты ан путь - https://serverfault.com/que...s-on-linux/9548#9548
Toyoku-mono, как интересно. не лимитирован для FS, но лимитирован, сцуко, со стороны ОС, из-за используемого типа данных
Ну, как сказать. Из первого же результата по «MAX_PATH» в Google:
+
Так что таки отменяли.
«\?\» – это таки костыль для обхода MAX_PATH. From Microsoft.
Я подозреваю, что там смысл в том, что так полное имя файла прикидывается UNC, на которые MAX_PATH не распространяется. А сделать «\.\» они не могли по причине всяких мэйлслотов и тому подобного, у которых имя файла записывается так: «\.\mailslot\1\2\3».
Linda-chan, как я счастлив, что избавлен от этого дерьма
Юзаешь Хромбук?
Toyoku-mono, не, просто ни одной венды дома нету
Главное не заразись макинтошкой.
Toyoku-mono, упаси Торвальдс
Обратная совместимость. Что поделать.
Linda-chan, ну, всегда остается "волевое решение"
А потом массовые «У нас программа не работает» от корпоративных клиентов.
Linda-chan, Корпоративные клиенты либо сидят на одном стэке технологий, либо, не такие уж они корпоративные...
У тебя странное представление о корпоративных клиентах.
Linda-chan, это не у меня, это у Поставщиков Корпоративных Решений