-
Notifications
You must be signed in to change notification settings - Fork 17
Home
- Сервер, на основе пула потоков.
Принимает изображения и тексты, кладёт их на диск, возвращает ссылки: Прямую ссылку на файл; ссылку на страницу с файлом (превью). Пример конфигурационного файла: здесь.
-
nginx - будет отдавать файлы + фронтенд
-
Скриншотилка - будет закачивать файлы
-
thumnail-daemon - демон, делающий preview для загружаемых файлов
У всех файлов - уникальное n-значное имя + корректное расширение. По расширению определяется тип файла и срабатывает подсветка синтаксиса / превью для картинок.
Протокол отправки файла клиентом на сервер:
Клиент отправляет:
proto=pastexen
version=1.0
type=jpg
uuid=e9c7ed9875121c4f4e736b6126bd9a5326bd9a5326bd9a53
size=142034
binary_data
Где jpg - тип файла; 142034 - размер файла в байтах; binary_data - содержимое файла; fuid - 24х байтный хеш, уникальный для каждого клиента (unique universal identifier).
После получения файла сервер отвечает:
proto=pastexen
version=1.0
url=http://host.tst/file1.jpg
url - прямая сылка на файл или на страницу с оформленным текстом с подсветкой синтаксиса
В качестве бд используется redis. Структура следующая.
GET records_count - количество загруженных файлов (инкрементируется при добавлении файла)
GET file_path_%path% - id (только число, без префикса) файла с системным именем %path%
HGET file_%id% type - тип файла (image / text)
HGET file_%id% name - имя файла (может задаваться пользователем)
HGET file_%id% extension - расширение файла (может меняться пользователем)
HGET file_%id% path - путь к файлу на диске на сервере
HGET file_%id% timestamp - время загрузки файла
HGET file_%id% description - описание файла (может задаваться пользователем)
HGET file_%id% uuid - uuid клиента, загрузившего файл
ZRANGE uuid_e9c7ed9875121c4f4e736b6126bd9a5326bd9a5326bd9a53 0 -1 - сортированный по timestamp список файлов пользователя с таким хешем
GET users_count - количество зарегистрированных пользователей (инкрементируется при добавлении пользователя)
GET user_login_%login% - uid пользователя с логином %login%
GET user_uuid_%uuid% - uid (число) пользователя клиента с определенным uuid
HGET user_%uid% login - логин пользователя c номером %uid%
HGET user_%uid% password - соленый md5 хеш пароля пользователя c номером %uid%
ZRANGE user_%uid%_uuids 0 -1 - сортированный по timestamp список uuid клиентов пользователя
- Конфигурационный файл:
/web/app/config.php
-
sources_dir
= путь к директории с присылаемыми исходниками -
language_default
= язык, используемый при возникновении проблем с автоопределением -
download_link_windows
= ссылка для загрузки Windows-сборки клиента -
download_link_other
= ссылка для загрузки остальных сборок клиента -
download_link_source
= ссылка для загрузки исходного кода клиента - Каталог с языковыми файлами:
/web/app/languages/
- Каталог со статичными файлами:
/web/app/static/
- Каталог с "шаблонами":
/web/app/views/
- Каталог с логикой страниц:
/web/app/actions/
- Каталог с моделями:
/web/app/models/
Картинка, которая примерно показывает, что происходит при запросе определенных страниц: http://pastexen.com/i/3xjM6Mf.png
Для работы с контеном из веб части используйте классы-модели. Примеры их использования можно посмотреть в классах-действиях, содержащие логику страниц.
-
Главная страничка сервиса. 1 абзац текста - описание. Возможно несколько скриншотов приложения. Крупная ссылка на скачивание. Чуть менее крупная ссылка на исходники. Поискать похожие сайты скриншотилок, выделить как то наши преимущества (pastebin, разные хоткеи, опенсорсность). HTML + Css, мб js
-
Страничка со ссылками на скачивания различных версий под различные ос. HTML + Css, мб js
-
Страничка с превью скриншотом. Придумать, как будет выглядеть. HTML + Css + PHP, мб js. Один скрипт: imageview.php. Принимает в качестве параметра уникальное имя картинки: http://наш_сайт/imageview.php?ah3kjd8ikam.png Должен открыть изображение, которое лежит в папке /images/ под именем ah3kjd8ikam.png и красиво его показать.
-
Страничка с исходным кодом с подсветкой синтаксиса. Посмотреть pastebin, github, сделать подобным образом. HTML + Css + PHP, мб js, мб что-то готовое, что умеет подсвечивать синтаксис. Один скрипт: codeview.php Принимает в качестве параметра уникальное имя файла с исходным текстом: http://наш_сайт/codeview.php?a7jdk8epsN.cpp Должен открыть файл с исходником, который лежит в папке /sources/ под именем a7jdk8epsN.cpp и красиво его показать (с подсветкой синтаксиса).