@Linda-chan

Linda-chan

Линда Кайе
Linda-chan

Дата рождения: 01.11.1983

Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.

https://www.lindachan.net

10 я читаю 59 меня читают
15455 постов
26170 комментариев
Linda-chan
06 Oct 2018

А что, в линупсе тоже есть максимальная длина файла или это просто Дропбокс такой умный, что не может скачать файл с именем в 182 символа?

06 Oct 2018

Linda-chan, /3 таки. Но полный путь - не лимитирован.

#mdarz/7 в ответ на /5
06 Oct 2018

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

#mdarz/17 в ответ на /16
06 Oct 2018

Toyoku-mono, нихрена неясного, я вот токо шо открыл limits.h и своими глазами прочитал)
короче, длинна полного пути файла сохраненного в хомяке - 4091-len(username)

#mdarz/19 в ответ на /17
06 Oct 2018

Теперь осталось придумать путь в длинной в 4 килобайта :)

#mdarz/20 в ответ на /19
06 Oct 2018

Сразу видно человека, в универе не учившегося!

#mdarz/22 в ответ на /20
06 Oct 2018

Сорян, у меня просто мания к овероптимизации, я себе такого позвоить не могу :(

#mdarz/24 в ответ на /22
06 Oct 2018

Не, просто в универе была шутка на создание очень глубоко вложенных каталогов.

#mdarz/25 в ответ на /24
06 Oct 2018

Это от родителей ^^ А я про каталог\проги\крутые\от васи\тоже проги\качать\здесь\1\2\3\4\5\6 etc.

#mdarz/28 в ответ на /27
06 Oct 2018

Linda-chan, вот, а ты клиент дропбокса через strace запусти

#mdarz/29 в ответ на /28
06 Oct 2018

Зашла через CarrotDAV и сократила имена файлов. Поздно.

#mdarz/31 в ответ на /29
06 Oct 2018

Вопрос конечно в том как Дропбокс хранит данные на сервере. И каке ограничения в клиенте.

#mdarz/32 в ответ на /31
06 Oct 2018

На сервер файл залился через вэб-интерфейс и прекрасно просматривался через него же. Но не качался клиентом.

#mdarz/33 в ответ на /32
06 Oct 2018

ну вот кстати да, есть способ уткнуться в лимит - делать копию сайта например, там могут быть URLы огромные.

#mdarz/30 в ответ на /28
06 Oct 2018

Toyoku-mono, С:\Хрень по работе\Гемор\Тупые клиенты\Неплательщики\охуевшие\Уважаемый Сергей Анатольевич.doc

#mdarz/23 в ответ на /20
06 Oct 2018

это если хомяк не на отдельном разделе. если на отдельном - 4095-len(username)

#mdarz/21 в ответ на /19
06 Oct 2018

Забавно, для винды справедливо тоже самое, но MAX_PATH никто не отменял.

#mdarz/6 в ответ на /1
06 Oct 2018

Toyoku-mono, как интересно. не лимитирован для FS, но лимитирован, сцуко, со стороны ОС, из-за используемого типа данных

#mdarz/15 в ответ на /8
06 Oct 2018

Ну, как сказать. Из первого же результата по «MAX_PATH» в Google:

В приложениях, которые используют Win API для работы с файлами, рецепт избавления от ограничения MAX_PATH был известен с незапамятных времён – необходимо было использовать Unicode версию функции с окончанием «W» для работы с директорией или файлом и начинать путь с префикса \?. Это давало возможность использовать пути длинной до 32767 символов.

+

В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.

Так что таки отменяли.

#mdarz/36 в ответ на /6
06 Oct 2018

«\?\» – это таки костыль для обхода MAX_PATH. From Microsoft.

#mdarz/41 в ответ на /36
06 Oct 2018

Я подозреваю, что там смысл в том, что так полное имя файла прикидывается UNC, на которые MAX_PATH не распространяется. А сделать «\.\» они не могли по причине всяких мэйлслотов и тому подобного, у которых имя файла записывается так: «\.\mailslot\1\2\3».

#mdarz/42 в ответ на /36
06 Oct 2018

Linda-chan, как я счастлив, что избавлен от этого дерьма

#mdarz/43 в ответ на /42
06 Oct 2018

Главное не заразись макинтошкой.

#mdarz/46 в ответ на /45
06 Oct 2018

Обратная совместимость. Что поделать.

#mdarz/55 в ответ на /43
06 Oct 2018

Linda-chan, ну, всегда остается "волевое решение"

#mdarz/57 в ответ на /55
06 Oct 2018

А потом массовые «У нас программа не работает» от корпоративных клиентов.

#mdarz/62 в ответ на /57
06 Oct 2018

Linda-chan, Корпоративные клиенты либо сидят на одном стэке технологий, либо, не такие уж они корпоративные...

#mdarz/66 в ответ на /62
06 Oct 2018

У тебя странное представление о корпоративных клиентах.

#mdarz/68 в ответ на /66
06 Oct 2018

Linda-chan, это не у меня, это у Поставщиков Корпоративных Решений

#mdarz/70 в ответ на /68
06 Oct 2018

Техническое ограничение вроде как есть, но это зависит от файловой системы, разве нет?

06 Oct 2018

Я БП, мне постоянно рассказывают, что все проблемы винды давно побеждены в линупсе, а оно во как выходит. Если, конечно, виноват не Дропбокс.

#mdarz/9 в ответ на /2
06 Oct 2018

Есть проблемы, а есть разумные ограничения.
С другой стороны, в Линуксе никогда не было проблем с размером файла. например.

#mdarz/10 в ответ на /9
06 Oct 2018

Теоретический, в Windows их тоже нет.

#mdarz/13 в ответ на /10
06 Oct 2018

В Линуксе проблем не было еещ когда они были в Виндоусе :)

#mdarz/14 в ответ на /13
06 Oct 2018

Про NTFS враньё, там 260, как и в FAT32, но можно больше, просто всё хитро. И, да, байты как бы намекают OO

#mdarz/11 в ответ на /3
06 Oct 2018

Странные лимиты. Прямо сейчас взяли сделал путь на диске с NTFS длиной 612 символов. Правда из Windows.

#mdarz/37 в ответ на /3
06 Oct 2018

Да, действительно - файл с именем из 304 символов создать не вышло.

06 Oct 2018

И вот тут бы пригодилось короткое имя файла, но увы ^^'

06 Oct 2018

как ни странно, но таки есть и на длину пути и имена. иногда выскакивает, когда пытаешься например бекап хомяка с винды распаковать на месте в глубинах хранилища. Особенно припекает несоответствие
"NTFS - 255 characters" и "linups fs - 255 bytes"

06 Oct 2018

О, так может поэтому 182 символа вызвали проблему в /0? Т.е. в байтах многовато вышло.

#mdarz/49 в ответ на /48
06 Oct 2018

Taciturn, ну, если utf-8, как по дефолту, для ext4 до один символ, может быть и больше одного байта

#mdarz/51 в ответ на /49
06 Oct 2018

Получается так. Имя файла было написано на русском.

#mdarz/59 в ответ на /49
06 Oct 2018

Linda-chan, Ура. решение найдено. А обмен между вендой и лялихом шел?

#mdarz/60 в ответ на /59
06 Oct 2018

А. Не, файл загрузили с Макоса.

#mdarz/64 в ответ на /60
06 Oct 2018

Linda-chan, там что, тоже USC-2? По образу и подобию MS?
Короче, виновный найден - криворукие писатели дропбокс-клиента, которые нихрена не в курсе о кодировках, используемых в ФС

#mdarz/65 в ответ на /64
06 Oct 2018

Без понятия.
А что должны быть сделать разработчики клиента Дропбокса? Покоцать имя файла? Транслитерировать его? Пересобрать ядро системы с другой кодировкой?

#mdarz/67 в ответ на /65
06 Oct 2018

Linda-chan, перекодировать из USC-2 в uft-8.
Данные от том, с какой ОС подключился клиент - у них имеются

#mdarz/69 в ответ на /67
06 Oct 2018

У тебя, скажем, системная функция create_file(), которая принимает строку file_name. Очевидно, принимает она UTF-8. Давай, перекодируй имя файла из USC-2 в UTF-8.

#mdarz/71 в ответ на /69
06 Oct 2018

Linda-chan, как ты убедилась, стащив файл в веба, это даже браузеры умеют. вернее, веб-морда, браузерам выдает то, что они умеют.
Веб-приложение, должно отдать клиенту то, что умеет клиент. Браузерам отдали, а собственному клиенту - не сумели

#mdarz/73 в ответ на /71
06 Oct 2018

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

#mdarz/78 в ответ на /73
06 Oct 2018

Linda-chan, я предлагаю запрашивать у клиента кодировку фс и выдавать ему данные в этой кодировке. Имхо, как-то логично

#mdarz/80 в ответ на /78
06 Oct 2018

Ты думаешь, что клиент лично пишет байтики с именем файла и служебной информацией на диск? И он решает в какой кодировке это записывать?

#mdarz/83 в ответ на /80
07 Oct 2018

Linda-chan, уверен, что нет. как ты писала выше, клиент тупо использует системную функцию. Следовательно, переконвертация кодировок для различных ФС и даже локалей, должна ложится на сервер.

#mdarz/85 в ответ на /83
07 Oct 2018

Системная функция принимает имя файла в кодировке N. Сервер, окей, присылает имя в кодировке N. Но имя всё равно не удовлетворяет лимитам ФС. Что должны сделать разработчики клиента?

#mdarz/88 в ответ на /85
06 Oct 2018

Linda-chan, мне имя файла от сервера УЖЕ должно прийти в utf-8, ибо в заголовке запроса указано, что это Client DropBox/Linux

#mdarz/76 в ответ на /71
06 Oct 2018

Блеать, у нас день сурка какой-то. Клиент получает имя файла и обращается к системной функции. Как и в какой кодировки хранится внутрях этой функции (а точнее, драйвера/библиотеки ФС) – дело уже не клиента.

#mdarz/81 в ответ на /76
06 Oct 2018

Linda-chan, окай, не клиента. дело СЕРВЕРА дропбокса, отдать данные в правильной для клиента кодировке. Так лучше?

#mdarz/82 в ответ на /81
07 Oct 2018

Linda-chan, да вдвойне чушь, если учесть, что файл как-то залился на дропбокс, а на том же дропбоксе - линукс, со всеми вытекающими.

#mdarz/86 в ответ на /84
07 Oct 2018

На сервере Дропбокса файл может храниться с именем 123343412341.dat, а его имя может храниться в базе данных. Чё дальше.

#mdarz/89 в ответ на /86
07 Oct 2018

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

#mdarz/97 в ответ на /92
07 Oct 2018

Да там небось он даже не как файл хранится, а как куча блоков - во славу дедупликации.

Комментарий был отредактирован в 00:05:55 07.10.2018
#mdarz/94 в ответ на /89
07 Oct 2018

Он вообще может как запись в Бд храниться

#mdarz/95 в ответ на /94
07 Oct 2018

Данные хранить в базе непродуктивно, ИМХО.

#mdarz/98 в ответ на /95
07 Oct 2018

Linda-chan, в NoSQL хранилищах, вполне себе быстро и чотко можно хранить всякую бинарную хуету.

#mdarz/105 в ответ на /102
07 Oct 2018

В: О великий Оракул, эффективно хранить данные?
О: Эффективно хранить картоху и лук, консервы там всякие!

#mdarz/107 в ответ на /106
07 Oct 2018

Профит в отсутствии отсидки, например.

#mdarz/112 в ответ на /110
07 Oct 2018

Toyoku-mono, крупные кости куда девать? Они ж вполне узнаваемы.
А после свиней - только коронки останутся...

#mdarz/116 в ответ на /114
07 Oct 2018

Из костей сделать поделки, продавать на ближайшей ЖД станции.

#mdarz/117 в ответ на /116
07 Oct 2018

Toyoku-mono, это ты такое творческое, а я даже стол никак не зопилю(

#mdarz/118 в ответ на /117
07 Oct 2018

Toyoku-mono, не, из дерева. и найти еще 8 учеников
33 года, плотник, 13 учеников, вот это все... опоздал на 3 года уже

#mdarz/120 в ответ на /119
07 Oct 2018

тушенка кстати не прикольна, лучше морской экстренный паек.

#mdarz/111 в ответ на /108
07 Oct 2018

Да причём тут кодировка, если проблема в лимите файловой системы? Ну вот перекодировал сервер, а дальше то что? Лимит никуда не делся, записать файл всё равно нельзя.

#mdarz/87 в ответ на /82
07 Oct 2018

Taciturn, тогда проехали, но как же она через веб-морду-то скачала?

#mdarz/91 в ответ на /87
07 Oct 2018

Я не качала. Я посмотрела список файлов и увидела в чём проблема. Потом я взяла CarrotDAV и посмотрела ещё раз, а потом переименовала файл прямо на сервере. Чудеса без кодировок!

#mdarz/93 в ответ на /91
07 Oct 2018

Linda-chan, бля. ты ведьма. а я себе моск ломаю.
А у изначального заливальщика, что с файлом станет? тоже переименуется?

#mdarz/96 в ответ на /93
07 Oct 2018

Он заливал не через клиент, а через фичу «File Request». Тоесть что-то типа входящих файлов: заливать может любой, у кого есть правильная ссылка, а смотреть залитое только я.

#mdarz/100 в ответ на /96
07 Oct 2018

Linda-chan, в общем, если это что-то корпоративное и расчитано на кроссплатформенность, то имеет смысл запретить клиенту создавать и заливать файлы с именами и путями длиннее консенсусного максимума для кроссплатформенных клиентов. Ну или все на ntfs перевести, чтоб мозги не парили.

#mdarz/115 в ответ на /103
06 Oct 2018

Это не гибко, ну то есть усложнение. Ну вот они в клиенте могут проверить тип фс и выдавать, например, предупреждения, но толку?

#mdarz/72 в ответ на /69
06 Oct 2018

akagitsune, ну, давай нихрена не выдавать и не копировать файл, так лучше?

#mdarz/74 в ответ на /72
06 Oct 2018

Graf, ну оно и так будет пытаться слить, а ошибку уже система выплюнет и клиент выдаст "не удалось создать".

#mdarz/77 в ответ на /74
06 Oct 2018

akagitsune, программа для пользователя или пользователь для программы? то что ты предлагаешь - это второй случай. "ну не шмогла я" и ебитесь как хотите

#mdarz/79 в ответ на /77
06 Oct 2018

Они могут выдавать сообщение об ошибке, что не удаётся создать файл из-за ошибки «Слишком длинное имя файла», как это делает клиент ownCloud/Nextcloud в списке проигнорированных файлов. Про перекодирование имени файла – какой-то нонсенс.

#mdarz/75 в ответ на /72
06 Oct 2018

NTFS и VFAT хранят данные в UCS-2, поэтому так сразу в символах считается. А более другие ФС – в UTF-8, где длина строки очень разная в зависимости от языка.

#mdarz/58 в ответ на /48
06 Oct 2018

Точно, компоненты. Вот что даёт GetVolumeInformation() для NTFS диска:

Max component len: 255
File system name: NTFS

06 Oct 2018

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.

#mdarz/53 в ответ на /52
06 Oct 2018

Linda-chan, даблворд - это ж 4 байта на символ, не?

#mdarz/54 в ответ на /53
06 Oct 2018

Это переменная типа DWORD, которая получает число, соответствующее длине компонента пути. Это WinAPI функция.

#mdarz/61 в ответ на /54
07 Oct 2018

вообще, это ФС-зависимо, но ни одна из известных мне использумых линупсоидами ФС не имеет ограничения в 182 (однобайтных) символа в имени файла (например, у tmpfs и ext4 - 255 байт)...
Впрочем, не то, чтобы я копал глубоко и был точно уверен, что это ограничение полностью на уровне фс

07 Oct 2018

Где-то выше пришли к выводу, что таки ограничение на уровне ФС сработало. Имя файла было на русском, и в 255 байт не вписалось.

#mdarz/124 в ответ на /123

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.