[Evaporation Project] Система дистрибуции файлов

Для тех, кто хочет сделать мир лучше.

Как передавать файлы от сервера к клиенту

Через простые сокеты
22
39%
Через HTTP/FTP протокол
27
47%
Другое (отписать)
8
14%
 
Всего голосов: 57

Сообщение
Автор
Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#61 Сообщение 17.05.2009, 02:26

What's the problem then :-D ?
Кстати, по-моему, шансы выпросить у него сорцы довольно малы - ты далеко не первый, кто его об этом просит. И, кажись, он уже отвечал отрицательно на такие запросы - пошарьтесь по Рину в поисках этого вопроса.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#62 Сообщение 17.05.2009, 10:12

Ладно... пошарюсь... ;)
Не нашёл... возможно плохо искал...
Создал тему http://cs.rin.ru/forum/viewtopic.php?f=20&t=52550
[spoiler=""Ради интереса попырил на translate.ru xD""]Я пишу непаровую систему для парового распределения содержания. К сожалению, у меня есть проблема с работой с НАИБОЛЬШИМ МНОЖИТЕЛЕМ и файлами NCF. Все, в чем я нуждаюсь - во-первых - чтобы читать, некоторая мешанина файла в архиве (наибольший множитель, и ncf имеют, если), и во-вторых написать файл в наибольший множитель, или изменяют заголовок ncf.
Любой получил идеи? Между прочим - система развивается как часть Проекта Испарения.[/spoiler]

Аватара пользователя
Pitch666
Полковник
Полковник
Сообщения: 5489
Зарегистрирован: 27.08.2008
Откуда: Роисся
Поблагодарили: 10 раз
Контактная информация:

#63 Сообщение 06.06.2009, 15:32

Все? Проект закрылся так и не открывшись? В вашем разделе тихо уже которую неделю. Что с хостингом?

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#64 Сообщение 06.06.2009, 16:55

Ну, я могу прикрутить скачку и установку GCF, но...мне лень %) . Можно, впрочем, повыпрашивать сорцы у МОЗГОВ =) .

eldest
Разработчик
Разработчик
Сообщения: 302
Зарегистрирован: 17.03.2008
Откуда: такие как я?
Поблагодарили: 2 раза
Контактная информация:

#65 Сообщение 07.06.2009, 13:27

Как передавать файлы от сервера к клиенту
По почте! блахахаха))))

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#66 Сообщение 08.06.2009, 16:05

Спокойно! В моих лабораториях я прогрессирую с развитием Games Manager'a (када я не на даче конечно ;)) Однако, времени мало (другие проекты его съедают :() и поетому разработка течёт вяло...

Добавлено спустя 10 минут 26 секунд:
Кстати я сейчас разрабатываю систему управления бд NCF/GCF, игр итд на сервере, дабы дать потом доступ всем и попросить залить на сервер инфу о них (играх и кеше :)).

Добавлено спустя 35 секунд:
eldest писал(а):По почте! блахахаха))))
:wink:

[user]
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 3501
Зарегистрирован: 18.07.2008
Благодарил (а): 2 раза
Поблагодарили: 17 раз
Контактная информация:

#67 Сообщение 08.06.2009, 22:52

Отвечаю здесь на обсуждение, начатое с сообщения http://forum.csmania.ru/viewtopic.php?p=273525#p273525 в теме "Требуются добровольцы для заливки GCF-файлов на FTP-сервер!".

MOZGIII
могу сделать времено систему скачивания файлов с народа
Почему это временно? Именна такая система и должна быть постоянной... Она надёжнее... :crazy:
И нужна поддержка не только народа, но и мейла.

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

Сложная система, в данном случае, не востребована...

[spoiler=""Предлагаю упрощённую схему...""]Возможный алогитм действий программы на начальной стадии выполнения:

1. Cоединение с сетью steam с целью скачивания или обновления CDR.
[frame]gds1.steampowered.com:27030
gds2.steampowered.com:27030[/frame]Или использование программой файла clientregistry.blob (при наличии) для своих нужд.

2. Скачивание (даже если файл уже был закачан раньше) файла со списком доступных для закачки приложений steam (котрые будут отображаться).
Имя файла, к примеру, SupportApps.ini. Таймаут соединения "со своим" сервером в этом и других случаях: 10 - 15 секунд. Если в течение этого времени не будет установлено соединение - запуск в оффлайн-режиме с использованием закачанных ранее файлов (если отсутствуют - сообщение об ошибке)...
Изначально при закачке файл должен сохраняться под именем SupportApps_new.ini
Содежимое:
[frame]LastVersion=%LinksBaseLastVersion%
Apps: %AppId%, %AppId%[/frame]

3. База ссылок (далее БС) представляет собой файл с названием, например, LinksBase.ini. Программа сравнивает значение "Version" из уже закачанной БС (если имеется) со значением "LastVersion" из закачанного файла SupportApps.ini. Если значение переменной из скачанного файла SupportApps.ini строго больше значения, прописанного в БС, то файл с БС закачивается заново (в сжатом виде, rar).
Изначально при закачке файл должен сохраняться под именем LinksBase_new.ini
Содержимое БС:
[frame]Version=%baseVersionNumber%

[%CacheID%]
SequrityOnSteam=1/0
ArchiveType*=7z/rar
FileVersion=%VersionNumber%
Link_0/mail/narod_%FileVersion%=%url%
Link_0/mail/narod_%FileVersion%_light**=%url%
Link_0/mail/narod_Update_%type%***_%FileVersion%_to_%FileVersion%=%url%

[%CacheID%]
и т.п.[/frame]* - Тип сжатия для всех ссылок (включая патчи), связанных с данным %CacheID%. Не вижу смысла указывать тип сжатия для каждой ссылки по отдельности...
** - "урезанная" версия файла; данная функция может пригодиться для таких фалов, как left 4 dead base и left 4 dead sound
*** - Тип патча, возможные значения переменной %type%:
  • GCF (GCF-патч)
  • NCF (файлы, упакованные в архив; предназначение: распаковка архива в steamapps, т.е. упрощённый вариант обновления NCF или небольшого GCF-файла (клиент CSS/TF2))
  • GCF_ToFull (патч, предназначенный для преобразования "урезанного" варианта GCF-файла в полный)
  • NCF_ToFull (файлы, упакованные в архив; предназначение: распаковка архива в steamapps, т.е. упрощённый вариант обновления NCF с целью преобразования "урезанной" версии NCF-файла в полную). Если такой патч совместим с любой версией файла (пример: left 4 dead base, intro.bik), то должен допускаться вариант замены: [frame]_%FileVersion%_to_%FileVersion%[/frame]на[frame]_*[/frame]
В принципе, указывать незащищённые %CacheID% не обязательно...

4. После того, как программа "убедится" в работоспособности (точные критерии проверки пока не придумал) обновлённых файлов со списком контента и БС, она должна:[frame]1) Переименовать существующие файлы (если имеются) в %filename%_old.ini
2) Переименовать закачанные файлы %filename%_new в %filename%.[/frame][/spoiler][spoiler=""p.s.""]Программа должна уметь работать в оффлайне в случае падения сервера. В списке должны отображаться (по умолчанию) только игры (без файлов). В качестве контент-сервера можно использовать файлообменники... Нужна поддержка "внешних модулей": плагинов (для работы с файлообменниками и др) и локализации интерфейса программы (возможность выбора файла).
p.s. Возможно, я где-то натупил... :%)[/spoiler]
© [user]

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#68 Сообщение 09.06.2009, 02:13

[user]
Во-первых всяких сложностей к которым у меня нет доступа (типо чтение CRD или соединение с серверами типа gds1.steampowered.com) не будет, т.к. мне с этим разбираться лениво. Если сорцы чего-то есть, эти какие-то функции будут в проге. Если нет - я разбирать форматы небуду...
Во-вторых Games Manager работает на XML. Автономная работа (без EPMS) пока не будет реализованна т.к. непонатно как вообще будет реализован проект.
В-третьих - ууу... муторно... к томуже у нас XML. Но идея ясна %)
В-четвёртых - это итак понятно...

Итог. Как я понял ты хочеш чтобы прога все свои оперативные данные хранила на машинах клиентов... Возможно что-нибудь и получится, но я очень неуверен

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#69 Сообщение 09.06.2009, 10:16

соединение с серверами типа gds1.steampowered.com

Код: Выделить всё

cdrTools.exe download gds1.steampowered.com 27030 ContentDescriptionRecord.blob
в блоб-файле получаем CDR
База ссылок (далее БС) представляет собой файл с названием, например, LinksBase.ini
ини файл таких размеров будет парсится вечно, ведь обрашение даже через класс TIniFile ведет поиск по всему файлу, причем не очень оптимальный
имхо лучше заюзать SQLite, бд работает без установки, хранит все в файлах, выборка делается стандартными SQL запросами

а автономная работа не нужна(только для запуска/смены эмуляторы/etc)посколько возможно сделать дублирование инфы на разных сайтах(т.е. бд лежит на разных хостингах) т.е. в случае недоступности одного выбирать с другого
и скрипт который прописывает инфу о файле в БД автоматически дублировал ее в разных местах

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#70 Сообщение 09.06.2009, 11:55

А думаешь, там много ссылок будет?

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#71 Сообщение 09.06.2009, 12:33

ну на каждую GCF/NCF на двух файлообменниках
игр небесплатных по мнению store.steampowered.com 604 штуки, в каждой от 1 до 10 файлов, плюс ссылка на народ и маил
итого получаем от 1208 до 12080 ссылок
и если прописывать каждый как

Код: Выделить всё

[%CacheID%]
SequrityOnSteam=1/0
ArchiveType*=7z/rar
FileVersion=%VersionNumber%
Link_0/mail/narod_%FileVersion%=%url%
Link_0/mail/narod_%FileVersion%_light**=%url%
Link_0/mail/narod_Update_%type%***_%FileVersion%_to_%FileVersion%=%url%
то получим нехилый размер файла, который еше предлагают хранить локально, и при его обновлении каждый раз перекачивать его, получаем два метра если ссылки имеют вид %url%, а если вставить реальные линки то размер будет значительно больший, тем более надо смотреть в будушее с учетом что количество будет увеличиваться
имхо оптимальный вариант это что-бы БД была на нескольких серверах, и там был скрипт который выполняет выборку с БД(не все хостинги разрешают коннект к БД с IP отличным от 127.0.0.1)

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#72 Сообщение 09.06.2009, 14:04

Когда я думал создавать несеолько контентных серверов я планировал делать им очень тесную систему синхронизации... Плюс в каждом контентном сервере было-бы зеркало модуля EPMS для поиска других серверов (EPCS). Однако, если файлов будет действительно много, нам никак не обойтись одним EPCS сервером. Их должно быть много (по идее). А EPMS будет иметь общую глобальную базу игр и файлов + список этих серверов. Клиентская программа, соответственно, качала бы файлы, автоматически выбирая сервер, с которого должна вестись скачка (по пингу и наличию файла на сервере).

[user]
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 3501
Зарегистрирован: 18.07.2008
Благодарил (а): 2 раза
Поблагодарили: 17 раз
Контактная информация:

#73 Сообщение 09.06.2009, 15:36

MOZGIII
Автономная работа (не важно как она будет реализована, но нужна) и поддержка народа / мейла необходимы! Упадёт главный сервер или контент-сервер и... :suicide:
© [user]

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#74 Сообщение 09.06.2009, 17:08

[user]
Планируется система зеркал серверов - в частности EPMS. Контентные сервера будут зеркалить сами-себя %) Так-что падения главного сервера можно не боятся.
Насчёт поддержки мейла - надо вводить как-то капчу. А насчёт народа - всё оки, всё будет...

Однако при размещении файлов на народе теряется основной понт: нельзя будет налету генерировать .update файлы для gcf/ncf по отосланным .archive (то, что я хотел сделать в EPCS)

Добавлено спустя 2 минуты 41 секунду:
Кстати я написал ещё немного кода Games Manager - кто хочет - кину в лс ;) Там нету скачивания по-прежнему, но уже есть отображение разных картиночек и файлов, ассоциированных с игрой (качается с сервера)

Добавлено спустя 3 минуты 50 секунд:
И ещё - на сайте теперь работает управление базой известных алиасов NCF/GCF, такчто я могу теперь её редактировать из меню прямо на сайте %) Но это для большинства здесь не важно ;)

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#75 Сообщение 09.06.2009, 17:09

MOZGIII
Почему же? Всё важно..
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Ответить