А что, в линупсе тоже есть максимальная длина файла или это просто Дропбокс такой умный, что не может скачать файл с именем в 182 символа?
Linda-chan, смотря какая файловая система
Дата рождения: 01.11.1983
Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.
А что, в линупсе тоже есть максимальная длина файла или это просто Дропбокс такой умный, что не может скачать файл с именем в 182 символа?
Linda-chan, смотря какая файловая система
Техническое ограничение вроде как есть, но это зависит от файловой системы, разве нет?
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
Да, действительно - файл с именем из 304 символов создать не вышло.
И вот тут бы пригодилось короткое имя файла, но увы ^^'
как ни странно, но таки есть и на длину пути и имена. иногда выскакивает, когда пытаешься например бекап хомяка с винды распаковать на месте в глубинах хранилища. Особенно припекает несоответствие
"NTFS - 255 characters" и "linups fs - 255 bytes"
Linda-chan, Ура. решение найдено. А обмен между вендой и лялихом шел?
Linda-chan, там что, тоже USC-2? По образу и подобию MS?
Короче, виновный найден - криворукие писатели дропбокс-клиента, которые нихрена не в курсе о кодировках, используемых в ФС
Linda-chan, перекодировать из USC-2 в uft-8.
Данные от том, с какой ОС подключился клиент - у них имеются
Linda-chan, как ты убедилась, стащив файл в веба, это даже браузеры умеют. вернее, веб-морда, браузерам выдает то, что они умеют.
Веб-приложение, должно отдать клиенту то, что умеет клиент. Браузерам отдали, а собственному клиенту - не сумели
Ты говоришь какую-то чушь. Броузеру выдаётся файл с таким-то именем, броузер предлагает сохранить этот файл, используя системный/тулкитный диалог. Если не сохраняется, пользователь меняет имя файла, как нужно. Клиент делает тоже самое, но ты предлагаешь ему самому догадаться, как разрулить ситуацию.
Linda-chan, я предлагаю запрашивать у клиента кодировку фс и выдавать ему данные в этой кодировке. Имхо, как-то логично
Linda-chan, уверен, что нет. как ты писала выше, клиент тупо использует системную функцию. Следовательно, переконвертация кодировок для различных ФС и даже локалей, должна ложится на сервер.
Linda-chan, мне имя файла от сервера УЖЕ должно прийти в utf-8, ибо в заголовке запроса указано, что это Client DropBox/Linux
Linda-chan, окай, не клиента. дело СЕРВЕРА дропбокса, отдать данные в правильной для клиента кодировке. Так лучше?
Linda-chan, да вдвойне чушь, если учесть, что файл как-то залился на дропбокс, а на том же дропбоксе - линукс, со всеми вытекающими.
Linda-chan, збс
Linda-chan, уела
Ну дык. Была же метода получения файлов из любого аккаунта по хэшу файла. Тоесть можно предположить, что там файлы хранились в одной куче, искались по хэшу, а в БД уже хэши были распределены по конкретным аккаунтам. Потом дело прикрыли, но, скорее всего, просто сверкой доступных хэшей в аккаунте.
Linda-chan, какие данные, какая база...
Я в базах не очень.
Linda-chan, в NoSQL хранилищах, вполне себе быстро и чотко можно хранить всякую бинарную хуету.
Данные хранить непродуктивно
Toyoku-mono, Ораклу про это расскажи
В: О великий Оракул, эффективно хранить данные?
О: Эффективно хранить картоху и лук, консервы там всякие!
Toyoku-mono, ога, а так же патроны, тушенку, крупы...
... трупы.
Toyoku-mono, Трупы? Хранить? Какой с них профит?
Профит в отсутствии отсидки, например.
Toyoku-mono, скорми свиньям, и не будет вонять
А не проще на гуляш и холодец?
Toyoku-mono, крупные кости куда девать? Они ж вполне узнаваемы.
А после свиней - только коронки останутся...
Из костей сделать поделки, продавать на ближайшей ЖД станции.
Toyoku-mono, это ты такое творческое, а я даже стол никак не зопилю(
Стол из костей?
Toyoku-mono, не, из дерева. и найти еще 8 учеников
33 года, плотник, 13 учеников, вот это все... опоздал на 3 года уже
Лидером секты заделаться?
Toyoku-mono, пуркуа па?
тушенка кстати не прикольна, лучше морской экстренный паек.
Linda-chan, бля. ты ведьма. а я себе моск ломаю.
А у изначального заливальщика, что с файлом станет? тоже переименуется?
Он заливал не через клиент, а через фичу «File Request». Тоесть что-то типа входящих файлов: заливать может любой, у кого есть правильная ссылка, а смотреть залитое только я.
Linda-chan, кокой ужос(
Удобная штука.
Linda-chan, в общем, если это что-то корпоративное и расчитано на кроссплатформенность, то имеет смысл запретить клиенту создавать и заливать файлы с именами и путями длиннее консенсусного максимума для кроссплатформенных клиентов. Ну или все на ntfs перевести, чтоб мозги не парили.
akagitsune, ну, давай нихрена не выдавать и не копировать файл, так лучше?
akagitsune, программа для пользователя или пользователь для программы? то что ты предлагаешь - это второй случай. "ну не шмогла я" и ебитесь как хотите
Точно, компоненты. Вот что даёт GetVolumeInformation() для NTFS диска:
Max component len: 255
File system name: NTFS
Linda-chan, 255 чего?
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.
Linda-chan, даблворд - это ж 4 байта на символ, не?
вообще, это ФС-зависимо, но ни одна из известных мне использумых линупсоидами ФС не имеет ограничения в 182 (однобайтных) символа в имени файла (например, у tmpfs и ext4 - 255 байт)...
Впрочем, не то, чтобы я копал глубоко и был точно уверен, что это ограничение полностью на уровне фс
Где-то выше пришли к выводу, что таки ограничение на уровне ФС сработало. Имя файла было на русском, и в 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, это не у меня, это у Поставщиков Корпоративных Решений