vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
В традиционной парадигме 70-х годов у данных, которые лежат на диске владельца (не в смысле пользователя в многопользовательской системе, а в смысле какого-то куска программного кода) нет.
Приходи кто хочешь, бери файл, копируй, перемещай, меняй в нем байтики.

И у этого подхода есть масса преимуществ. Во-первых, прекраснореализуется toolbox phylosophy. Во-вторых, авторам приложений не нужно думать о поддержке таких операций как бэкап, или о способах передачи данных по сети - это можно поручить отдельным программам - сетевым FS, ftp-клиентам и т.д, и они прекрасно справятся с любыми данными.

Но чего-то в этой парадигме не хватает, и ее постоянно пытаются поломать. Из тех примеров, с которыми приходилось сталкиваться лично мне, первым была MacOS classic, с атрибутами creator и owner у файла. Концепция была, конечно. сильно кривая и мешала, когда нужно обрабатывать некие данные несколькими программами.

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

Вот в Андроиде, например, появился механизм Intents, который позволяет опять же работать в парадигме тулбокса, но уже над набором приложений-обработчиков данных, а не файлов. Ему, правда не хватает стандартизованных механизмов для бэкапа и обмена данными с другими устройствами, но это задумка такая - привязать пользователей к чужим облачным сервисам, чтобы нельзя было список покупок с компьютера на телефон скопировать, не пропусти в его через индексатор фирмы, торгующей контекстной рекламой.

Или для обмена данными по шнурку вместо избыточно низкоуровневого для этой цели USB Storage используют не протокол уровня файловой системы (SMB, например), а какой-нибудь PTP или MTP.

Если вдуматься, то вообще-то клиент-серверные базы данных и всякие веб-сервисы это примерно то же самое. Вместо того, чтобы хранить данные в файловом хранилище, к ним приделывают процесс, который реализует свою собственную политику доступа, и реализуют какой-то протокол взаимодействия с этим процессом. Иногда не один - вот у ЖЖ, например. есть один протокол для доступа из браузера, а второй - API для всяких программ-клиентов.

Я регулярно сталкиваюсь с описаниями OpenSource проектов, которые норовят использовать D-Bus в качестве аналога андридных интентов и передавать по ней данные от процесса-владельца данных к процессу-потребителю данных. Получается, естественно, плохо. Но упорство таких попыток о чём-то свидетельтсвует.

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

1. Нужен стандартизированный протокол бэкапа. То есть любое приложение, которое хоть что-то хоть где-то хранит (ну кроме очень специальных случаев вроде HSM, должно поддерживать операцию "скачать всё" и, по возможности - "скачать изменения со времен такого-то бэкапа", а также "восстановить вот это".
В принципе, даже HSM-ы можно бэкапить, если предусмотреть защиту бэкапа секретом, который хранится где-то отдельно от бэкапа.

2. Нужен стандартизованный object sharing протокол. Что-то вроде того же PTP или MTP - посмотреть какие объекты есть в библиотеке у данной программы, вытащить указанный объект в виде, пригодным для того, чтобы скормить аналогичному приложению на другом устройстве, положить объект.

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

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

Upd А придумает ли кто-нибудь третий случай операции кроме "забэкапить все" и "поделиться избранным", применимый к ЛЮБОЙ информации хранящейся на устройстве? (понятно что варианты "открыть в соответствующем приложении" и "стереть нафиг" не в счет).

Date: 2015-09-10 08:29 am (UTC)
rvb: (снежный человек)
From: [personal profile] rvb
В MTP для обмена данными по шнурку некий смысл есть - можно не отмонтировать раздел на мобильном устройстве и не останавливать приложения, с ним работающие.

Date: 2015-09-10 08:31 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
собственно, SMB тоже не требует отмонтирования :)

Date: 2015-09-10 08:44 am (UTC)
rvb: (снежный человек)
From: [personal profile] rvb
Но требует поднятия IP-over-USB.

А USB Storage - отмонтировали на устройстве, изображаем на USB флешку. Как отцепили - примонтируем обратно и пытаемся понять, что нам там успели напортачить.

(no subject)

From: [personal profile] rvb - Date: 2015-09-10 09:14 am (UTC) - Expand

(no subject)

From: [personal profile] rvb - Date: 2015-09-10 09:25 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2015-09-10 10:15 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2015-09-10 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2015-09-10 12:58 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2015-09-10 01:21 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2015-09-10 11:56 am (UTC) - Expand

Date: 2015-09-10 08:55 am (UTC)
From: [identity profile] psn84.livejournal.com
В MTP смысел однозначно есть. Не было бы оно ещё таким кривым.

(no subject)

From: [identity profile] psn84.livejournal.com - Date: 2015-09-10 09:28 am (UTC) - Expand

Date: 2015-09-10 08:40 am (UTC)
From: [personal profile] alll
> Нужен стандартизованный object sharing протокол.

Ну вот SMB например чем вам не угодила? "Посмотреть какие объекты есть в библиотеке у данной программы, вытащить указанный объект в виде, пригодным для того, чтобы скормить аналогичному приложению на другом устройстве, положить объект" - всё есть.

Date: 2015-09-10 08:48 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
обьект имеет интерфейс с методами обычно

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 09:24 am (UTC) - Expand

Date: 2015-09-10 10:37 am (UTC)
From: [personal profile] alll
Неа. Объект имеет vptr на "интерфейс с методами" обычно. ;)

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 11:53 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2015-09-10 12:11 pm (UTC) - Expand

Date: 2015-09-10 08:48 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
ну и с identity там всё не так просто. но вообще да, я за. только не надо говорить что файлы могут изобразить любые обьекты :)

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 09:14 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 09:31 am (UTC) - Expand

(no subject)

From: [identity profile] angry-elf.livejournal.com - Date: 2015-09-10 10:42 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 02:10 pm (UTC) - Expand

(no subject)

From: [identity profile] angry-elf.livejournal.com - Date: 2015-09-10 03:23 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2015-09-10 12:02 pm (UTC) - Expand

(no subject)

From: [identity profile] beldmit.livejournal.com - Date: 2015-09-10 05:10 pm (UTC) - Expand

(no subject)

From: [personal profile] kuzmax - Date: 2015-09-10 03:11 pm (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-10 11:04 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 11:54 am (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-10 11:57 am (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-10 11:56 am (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-10 01:30 pm (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-10 02:18 pm (UTC) - Expand

(no subject)

From: [personal profile] yurikhan - Date: 2015-09-10 02:22 pm (UTC) - Expand

(no subject)

From: [personal profile] yurikhan - Date: 2015-09-10 02:49 pm (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-12 09:18 am (UTC) - Expand

(no subject)

From: [personal profile] yurikhan - Date: 2015-09-12 11:40 am (UTC) - Expand

(no subject)

From: [identity profile] inkelyad.livejournal.com - Date: 2015-09-10 02:32 pm (UTC) - Expand

(no subject)

From: [identity profile] inkelyad.livejournal.com - Date: 2015-09-10 02:57 pm (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2015-09-12 09:29 am (UTC) - Expand

(no subject)

From: [identity profile] spqr-voldi.livejournal.com - Date: 2015-09-13 05:30 pm (UTC) - Expand

Date: 2015-09-10 10:36 am (UTC)
From: [personal profile] alll
В файловой системе есть более другие объекты, чем "файлы в узком смысле". :)

(no subject)

From: [personal profile] alll - Date: 2015-09-10 10:33 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2015-09-10 11:07 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2015-09-10 12:27 pm (UTC) - Expand

(no subject)

From: [identity profile] spqr-voldi.livejournal.com - Date: 2015-09-13 05:32 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2015-09-10 12:00 pm (UTC) - Expand

(no subject)

From: [personal profile] yurikhan - Date: 2015-09-10 12:16 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2015-09-10 12:25 pm (UTC) - Expand

Date: 2015-09-10 11:57 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Вероятно, тем, что единственная разумно доступная реализацыя SMB на клиенте для создателей дров камер -- это та, что в комплекте винды. Кривая, дырявая, с большыми проблемами авторизацыи и совместного использования.

(no subject)

From: [personal profile] wizzard - Date: 2015-09-10 12:55 pm (UTC) - Expand

Date: 2015-09-10 11:17 am (UTC)
From: [identity profile] fau74.livejournal.com
Очевидный третий случай - "проверить актуальность". Соответствует ли блок информации данному экземпляру своего бэкапа?

Date: 2015-09-10 11:43 am (UTC)
From: [identity profile] inkelyad.livejournal.com
А набор протоколов DLNA (https://en.wikipedia.org/wiki/Digital_Living_Network_Alliance) не подойдет? Он, правда, слишком сильно именно на аудио-видео-картинки заточен, но, возможно, это исправимо. Медиасервер (не путать с плеером, контроллерам и прочим зоопарком из этой спецификации) на устройстве на первый взгляд не сильно от сервера той же самбы отличается.

(no subject)

From: [identity profile] inkelyad.livejournal.com - Date: 2015-09-10 12:14 pm (UTC) - Expand

Date: 2015-09-10 12:54 pm (UTC)
allter: (me)
From: [personal profile] allter
Третий вариант - распечатать (впрочем, это частный случай либо "поделиться", либо "бэкапа", в зависимости от способа, которым владеет печатающая программа).
Разные варианты фильтров-обработчиков, впрочем, тоже можно считать частным случаем "поделиться".

Ещё можно рассмотреть такую операцию, как "задержать до определённого момента/снапшот". Которую также можно реализовать как создание ссылки (которая будет существовать, даже если другой клиент удалит контент).

Про зоопарк клиент-серверных протоколов и прибамбасов для обработки данных: Проблема тут не в том, что протокола нет, а в том, что информации стало очень много, её трудно искать и зарождается экономика основанная на обработке информации (и в частности на запрещении/затруднении к ней доступа техническими методами).

В конце концов, HTTP+WebDAV предоставляют приличное количество стандартных глаголов для управления контентом. И навесить их поверх USB достаточно просто. Но вот сидит какой-то архитектор или аналитик, читает записку "разработать механизм, что бы можно было фоточки скидывать не отмонтируя SD-карту", и думает: 1) зачем ему плодить лишнюю точку возможных подводных камней на стыке USB и HTTP_over_USB?; 2) чем заменить в новом протоколе host:port (т.е. потребуется сделать какую-то подсистему поиска/перечисления приложений/фоток на обоих сторонах)? 3) Как все эти сложности с обеспечением интероперабельности помогут (точнее, не помешают) заработать? И в результате рождается велосипед, который, хоть и коряво, но едет туда, куда нужно.

И так получается, даже если в исходной задаче для архитектора нет требования обеспечить явный lock-in. Просто недостаток времени и прочих ресурсов на изучение best practices приводит к тому, что если бы вдруг электроннной почты по каким-то причинам не было бы до сих пор, то сейчас она возникла бы в виде каких-нибудь "Google messages", которыми бы пользовались лишь пользователи гугла.

Нам лишь остаётся пытаться остаться на предыдущем уровне технологического уклада и как минимум сохранять на своих компьютерах традиционные файловые системы, rsync, программы, которые работают с файлами как с файлами, а не как своими личными БД и т.д.

(no subject)

From: [personal profile] allter - Date: 2015-09-10 02:52 pm (UTC) - Expand

Date: 2015-09-10 01:56 pm (UTC)
From: [identity profile] alkach42.livejournal.com
Еще операция - получить список удаленного и "прополоть" по нему существующее.

Date: 2015-09-10 02:28 pm (UTC)
From: [identity profile] inkelyad.livejournal.com
По поводу возможных операций.

"Получить доступ к файлу" чтобы скопировать, забакапить, переслать, вложить внутрь какого-нибудь документа и "Получить доступ к информации в файле" чтобы просмотреть, процитировать, отредактировать различать будем?

Оно слегка не одно и то же.

Date: 2015-09-17 08:15 am (UTC)
livelight: (Default)
From: [personal profile] livelight
> Если вдуматься, то вообще-то клиент-серверные базы данных и всякие веб-сервисы это примерно то же самое. Вместо того, чтобы хранить данные в файловом хранилище, к ним приделывают процесс, который реализует свою собственную политику доступа, и реализуют какой-то протокол взаимодействия с этим процессом. Иногда не один - вот у ЖЖ, например. есть один протокол для доступа из браузера, а второй - API для всяких программ-клиентов.

Суть-то таки не в политике доступа, она вторична, а в том, что у каждой базы данных есть некая схема и набор ограничений. Если любой желающий сможет сходить в глубины жж по файловому протоколу (или, как вариант, по SQL, причём с правом не только на DML, но и на DDL) и написать в эти файлы произвольный набор байт (а файл - это произвольный набор байт), то даже при очень добронамеренных желающих структура жж с пользователями, постами и комментами быстро превратится в тыкву.

(no subject)

From: [personal profile] livelight - Date: 2015-09-17 08:33 am (UTC) - Expand

(no subject)

From: [personal profile] livelight - Date: 2015-09-17 08:57 am (UTC) - Expand

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

May 2025

S M T W T F S
    1 2 3
4 56 7 8 9 10
11 12 131415 1617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 05:16 pm
Powered by Dreamwidth Studios