Имитация расшаренной папки

adm900

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

vall

написать драйвер псевдофайловой системы, которую потом расшарить или
реализовать свой smb сервер\прикрутить к существующему эту псевдофайловую систему.
под линухом я бы быстро сделал это через FUSE, а потом просто расшарил самбой.

myrka68

а не проще ли замутить это дело через web?
написать пару скриптов на перле и дать к этому доступ через http

adm900

а как написать смб сервер под виндой?
Не хочется влазить на уровень драйверов: можно ли как-то ограничиться уровнем запросов о том, какие файлы есть в директории и уметь выдавать их, когда надо?

vall

это плохая идея, заебёсся писать

Werdna

Пожинайте плоды виндузятничества.
В юникс-системах такое делается на раз, и тут уже рассказали как.

maggi14

в виндах такое тоже делается на раз, просто либо в разделе нет отцов системного программинга в виндах, либо они проглядели этот тред.

Julie16

Можно еще libc подхачить. но это не будет работать с ненатуральскими приложениями которые напрямую дергают ядро(правда я таких почти и не встречал).

Dasar

Что-то мне кажется, что большинство приложений дергает WinApi, а не libc.

kamputer

>в виндах такое тоже делается на раз
Делается, но не "на раз". И даже, пожалуй, не "на два".

daru

Другой протокол не подойдёт? Типа ftp?
Это будет попроще, чем писать полноценный драйвер для виртуального storage device'а под винды.
ЗЫ. В принципе, мб, можно, наверное, и без драйверов обойтись - "шарятся" же как-то scheduled tasks и printers... как именно - не знаю.

bleyman

Насколько я знаю, в виндах существует две разные вещи на эту тему.
1) Shell extensions. С их помощью, например, написан GmailFS. Сильно не уверен, что такую виртуальную папку можно будет пошарить.
2) Драйвер виртуальной файловой системы. Ну я как-то раз ффтыкал в код одной такой прилады, ничего особенно сложного/объёмного там не было, но как бы нужно уметь.

Julie16

Это у вас. У нас большинство дергает именно libc.

agaaaa

Возник тот же вопрос. Может у кого сорцы есть?

kokoc88

"На раз" под виндой я бы сделал просто папку где-нибудь, а потом бы её расшаривал на время работы программы.

kruzer25

Что-то я не пойму, а как это поможет автору?

kokoc88

Тебе это точно никак не поможет. А автор мог бы воспользоваться идеей: отслеживать изменения в папке и синхронизировать их с БД.

kruzer25

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

kokoc88

Это хочешь ты, автор этого не хочет.

kruzer25

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

kokoc88

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

kruzer25

но сами файлы хранить в базе данных

vall

о! я придумал решение - запустить линух в эмуляторе или coLinux.
там всё быстро сделать и сетку в эмулятор провести

kokoc88

И чё ты мне в этот квот тыкаешь? Моя идея никак этому не противоречит: никто не мешает эти файлы из БД скопировать в эту папку.

kruzer25

Очевидно, что это - не решение.

kokoc88

Для тебя да, и я уже с этим согласился. Для автора это может быть вполне приемлемым решением.

kruzer25

Открой для себя, что
1) Содержимое БД может меняться
2) С БД работать гораздо быстрее, чем с файлами на винчестере
3) ВОт тебе пример - у нас раздел с размером кластера в 64К, в БД лежит миллион записей размером в сотню-другую байт. Видишь разницу между "несколько сотен мегабайт" и "где-то полсотни гигабайт"?

maggi14

2) смотря, как файлы на винчестере организованы

kruzer25

В любом случае - насколько я знаю, обычно БД лежит в оператике, и иногда (часто) бэкапицца наа винт... а с оперативкой в любом случае работать быстрее, чем с винтом...

kruzer25

Кроме того, тут-то предлагают не "вместо", а "вместе" - то есть, поддерживать этот каталог в дополнение к БД

kokoc88

Открой для себя что:
1. Это можно отслеживать и изменять содержимое расшаренной папки.
2. Если в БД хранятся ФАЙЛЫ, то с ними в 90% быстрее работать как с файлами, а не БД запросами.
3. Когда в БД лежат обычные записи, про них так и пишут, что они записи. И в 99% случаев строки в таблице не называют файлами.

kruzer25

2,3) Строка таблицы - id, тип (папка/файл имя, содержимое

kokoc88

1. А что такое сущность? А что такое дублирование данных? Можно точные мат. определения в студию?
2. При таком подходе ещё проще реализовать то, что я предлагаю.

kruzer25

Кстати, ты тут собрался отслеживать изменения и в БД, и в той папке - мне вот интересно, что более приоритетно? То есть, например, если какой-то файл в папке есть, а записи о нём в БД нет - ты добавишь запись в БД, или сотрёшь файл из папки?

kokoc88

Что такое два несвязанных места?

kruzer25

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

kokoc88

Ты не ответил на два моих вопроса, что такое сущность и что такое несвязанные места?

kruzer25

Влом объяснять тебе такие элементарные вещи, считай, что я о них и не говорил

kokoc88

Ну тогда считай, что вопросов твоих и не было.

kruzer25

ВОт ты тупой и упёртый.
Так тебе больше нравится?

kokoc88

Читай свою подпись и действуй.

Dasar

> А что такое сущность?
набор данных однозначно идентифицируемый
> А что такое дублирование данных?
несколько(больше одного) наборов данных, одиннаково идентифицируемых (с точки зрения логики решаемой задачи)

kruzer25

Не давай тупых советов, верность которых не можешь объяснить.

kokoc88

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

kruzer25

Просвяти меня. глупого - так что же имел в виду мудрый ?

evgen5555

Бесполезно что-либо тебе объяснять, так как ты не поймешь абсолютно ничего

kruzer25

Насколько я понимаю, бесполезно что-нибудь объяснять, потому что этот мегаотец так и не придумал, что он тогда имел в виду

evgen5555

Майк не мегаотец, конечно, но он рюхает, в отличие от тебя, ебущего всем мозг тупыми вопросами, ответы на которые можно найти в любом справочнике.

kruzer25

В любом - нельзя.
А этот майк так и не ответил на мой вопрос

evgen5555

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

evgen5555

Ты только и делаешь, что задаешь вопросы - почему ты считаешь, что на них должны непременно ответить?

kruzer25

Я ещё и отвечаю на чужие вопросы, если ты не замечал.
А мой вопрос 'у был риторическим. чтобы заставить его задуматься, чтобы он попытался получить ответ для себя.
Но он его не получл, судя по всему...

evgen5555

Я ещё и отвечаю на чужие вопросы
Твои ответы совершенно бесполезны, за исключением единиц. Более того, в них, кроме метаслов "вроде" и "по-моему", содержатся явные искажения фактов.

kruzer25

в них, кроме метаслов "вроде" и "по-моему", содержатся явные искажения фактов.
Например?

evgen5555

Пообещай удалиться из этого раздела, если я предоставлю тебе примеры.

kruzer25

Не пообещаю, поскольку все ошибаются.
Обещаю, если ты приведёшь _много_ примеров. Например, если покажешь, что хотя бы треть моих ответов содержит явные искажения фактов.

evgen5555

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

kokoc88

А мой вопрос 'у был риторическим. чтобы заставить его задуматься, чтобы он попытался получить ответ для себя.
Слушай, я выдал идею для другого человека, не для тебя. Что для тебя она не подходит, я написал и согласился с этим сто постов назад. И может случиться, что по предложенной мною схеме можно будет решить задачу, которую решает автор треда. Ты-то чё лезешь меня учить? Я тебе и с vfs сейчас проблем наперечисляю столько, что ты за месяц их не решишь. Не все программы пишут на ассемблере, угадай почему?..

agaaaa

Читай что написано - ЭМУЛИРОВАТЬ расшаренную папку. Если она у меня 40 гигов будет, что мне по-твоему копию создавать?

kamputer

>Читай что написано - ЭМУЛИРОВАТЬ расшаренную папку. Если она у меня 40 гигов будет, что мне по-твоему копию создавать?
Купить ещё винчестер обойдётся на пару порядков дешевле стоимости разработки

kokoc88

40 гигов - это мало.

agaaaa

Огромная просьба: больше не предлагать сторонних вариантов - задолбали!
Сказано эмулировать, значит эмулировать. Ё-моё, из всех постов только в одном автор правильно понял, что надо накатать нечто вроде самбы для Windows.

agaaaa

Хотя нет... ещё предлагали написать свой драйвер фс и её потом расшарить, но боюсь драйвер - больший гемор при больших возможностях.
Оставить комментарий
Имя или ник:
Комментарий: