Пост завершает сиквелы:
— Фантазия на тему WebDAV. Штатный Клиент;
— Фантазия на тему WebDAV;
— RESTup — RESTful java сервер консольных приложений или опять о вызове shell из Oracle
Очень краткое содержание:
Выстроуганное* детище не было расположено к интерактиву с конечным пользователем — имело врожденный порок в виде отсутствия UI. Шаря по просторам, безутешный родитель наткнулся на сильнодействующее лекарство. Поможет ли оно?
+21
1) Параметризация преобразований расширением файла-назначения влечет неоправданные издержки реализации. Первый пример работает, но проще выполнить отдельно распознавание, затем преобразовать результат к требуемому формату.
Вдогонку. Переименование файлов у всех клиентов реализовано методом MOVE (в Request-Line исходный файл, в Destination новый). Как вариант, параметризовать операцию можно изменяя расширение и|или имя файла. Первый пример может выглядеть так:
Управлять пользовательскими свойствами объектов из попавших в обзор клиентов умеет только cadaver (не проверял). Остаются два способа параметризации: именами папок и передачей файла параметров вместе с исходным.
Вдогонку. Погорячился. Жизнь не стоит на месте. RFC в пользовательских свойствах объектов допускает XML-типы. Как там с перечислениями фиксированных значений? Стоит разобраться.
2) Интерфейс предполагает запуск исполнителя по окончании копирования файла (набора файлов) в папку преобразования. Второй пример не сработает, поскольку выяснилось, что большинство штатных клиентов эмулируют метод COPY (Depth: infinity) набором MKCOL, GET/PUT файла. Т.е. действие будет инициироваться для каждого файла в отдельности, но не для пакета файлов в целом. Решение — упаковка набора файлов в zip-архив.
Для этих целей можно завести служебную папку с возможностью создания пользовательской структуры (MKCOL, PUT) и шаблоном (package.zip) архива. Реальная упаковка созданной пользователем структуры происходит только в случае применения метода GET к файлу-шаблону. Методы COPY/MOVE шаблона просто копируют/перемещают структуру (набор файлов) в папку преобразований.
3) Некоторые клиенты передают файл в два приема: сначала нулевой длины, затем — собственно файл. Вероятно придется игнорировать «пустышки».
4) Не все проводники обновляют содержимое папки после передачи файла (исполнения преобразования). Для корректной визуализации результатов придется складывать их во вложенные папки — Result.
5)… not the least: необходимо предоставить пользователю информацию о «правилах игры», сервисах (аннотация, допустимые форматы исходных файлов и формат результата), сведения об ограничениях пользовательской сессии (дисковая квота и таймаут). Эти данные можно разместить в генерируемом txt/html-файле корня сервера.
Здесь БУДЕТ РАЗМЕЩЕНА «действующая модель в натуральную величину». Сроки не называю, но и не прощаюсь. По ходу реализации, если НЛО не против, дополню/уточню и подправлю (формат и стилистику) обзора клиентов.
Вдогонку. Похоже, идея еще не дозрела.
Эк меня раззадорила полтора года назад статья на Хабре. Спасибо.
7-10 октября 2015
* строгать|стругать Второе каноничней: стружка.
— Фантазия на тему WebDAV. Штатный Клиент;
— Фантазия на тему WebDAV;
— RESTup — RESTful java сервер консольных приложений или опять о вызове shell из Oracle
Очень краткое содержание:
Выстр
+21
1) Параметризация преобразований расширением файла-назначения влечет неоправданные издержки реализации. Первый пример работает, но проще выполнить отдельно распознавание, затем преобразовать результат к требуемому формату.
Вдогонку. Переименование файлов у всех клиентов реализовано методом MOVE (в Request-Line исходный файл, в Destination новый). Как вариант, параметризовать операцию можно изменяя расширение и|или имя файла. Первый пример может выглядеть так:
cp ~/images/document.jpg /dav/transform/
mv /dav/transform/document.jpg /dav/transform/document[+90].jpg
mv /dav/transform/document*.jpg /dav/transform/document[rus].txt
mv /dav/transform/document*.txt /dav/transform/document.doc
mv /dav/transform/document.doc ~/texts/
Сопоставить расширения файлов и параметр(ы) с требуемым действием сложно, но можно. Сработает и для проводников. Заодно решаются несколько вопросов, включая п.4, п.3? Управлять пользовательскими свойствами объектов из попавших в обзор клиентов умеет только cadaver (не проверял). Остаются два способа параметризации: именами папок и передачей файла параметров вместе с исходным.
Вдогонку. Погорячился. Жизнь не стоит на месте. RFC в пользовательских свойствах объектов допускает XML-типы. Как там с перечислениями фиксированных значений? Стоит разобраться.
2) Интерфейс предполагает запуск исполнителя по окончании копирования файла (набора файлов) в папку преобразования. Второй пример не сработает, поскольку выяснилось, что большинство штатных клиентов эмулируют метод COPY (Depth: infinity) набором MKCOL, GET/PUT файла. Т.е. действие будет инициироваться для каждого файла в отдельности, но не для пакета файлов в целом. Решение — упаковка набора файлов в zip-архив.
Для этих целей можно завести служебную папку с возможностью создания пользовательской структуры (MKCOL, PUT) и шаблоном (package.zip) архива. Реальная упаковка созданной пользователем структуры происходит только в случае применения метода GET к файлу-шаблону. Методы COPY/MOVE шаблона просто копируют/перемещают структуру (набор файлов) в папку преобразований.
3) Некоторые клиенты передают файл в два приема: сначала нулевой длины, затем — собственно файл. Вероятно придется игнорировать «пустышки».
4) Не все проводники обновляют содержимое папки после передачи файла (исполнения преобразования). Для корректной визуализации результатов придется складывать их во вложенные папки — Result.
5)… not the least: необходимо предоставить пользователю информацию о «правилах игры», сервисах (аннотация, допустимые форматы исходных файлов и формат результата), сведения об ограничениях пользовательской сессии (дисковая квота и таймаут). Эти данные можно разместить в генерируемом txt/html-файле корня сервера.
Здесь БУДЕТ РАЗМЕЩЕНА «действующая модель в натуральную величину». Сроки не называю, но и не прощаюсь. По ходу реализации, если НЛО не против, дополню/уточню и подправлю (формат и стилистику) обзора клиентов.
Вдогонку. Похоже, идея еще не дозрела.
Эк меня раззадорила полтора года назад статья на Хабре. Спасибо.
7-10 октября 2015
* строгать|стругать Второе каноничней: стружка.
igor_suhorukov
Когда-то давно в издательстве «За рулем» делал webdav интерфейс к издательской системе InPrint. Намучившись со стандартной поддержкой webdav клиента в тогда еще mainstream WinXP, забросил это неблагодарное дело и сделал CIFS адаптер, клиенты к которому есть и в windows и в *nix системах
igor_suhorukov
Когда-то поделился своим опытом в комментарии
miktim
За участие — спасибо. Объяснение моему «энтузиазизму» простое — учусь java. Задача в этом плане (и сопутствующих технологий) интересная и возможен некий практический результат. Тому недавно, вмеру лениво, администрил сеть организации. С тех пор — нелюбовь к установке дополнительного ПО на клиентах.
igor_suhorukov
Учиться — похвальное желание! Если вдруг не устроит поддержка webdav протокола в windows, вспомните про cifs протокол
miktim
Уже не в желании дело. Вопрос времени. Все? срослось. Осталось сесть и за день, не отвлекаясь, сделать. Вот буквы складывать в предложения и препинаться в нужном месте — это сложно. Но надо: документацией и Хабр'ом шлифую слог для мемуаров.
За Alfresco глазом уже цеплялся, драфт CIFS по диагонали смотрел.