Привет, хабр!

Я и мои друзья давно пользуются программой Gyazo.
Вкратце: маленькая программка, при запуске которой можно сразу выделять область на экране, а как только отпускаешь мышку, область закачивается на сервер gyazo, а в буфер обмена сразу копируется ссылка на него.
Попробовать можно здесь: http://gyazo.com
В последнее время её создатель решил монетизировать свою разработку, и помимо платных фич, включил навязчивую рекламу для не-премиум пользователей.
Сначала, в буфер копировалась не прямая ссылка на картинку, а ссылка на страничку с рекламой. Затем и вовсе прямой файл стал недоступен.
Поскольку gyazo является Open Source проектом, я решил сделать версию «для себя» и без рекламы.
Подробнее под катом.
Нам нужен любой веб-сервер с поддержкой PHP. Оригинальный серверный скрипт является CGI, я решил использовать PHP.
Сам скрипт находится здесь:
Как видно, ничего сверхъестественного.
При попытке отправить файл программой, скрипт переименовывает его в набор символов (уникальность — md5 + time()), а также возвращает ссылку на скриншот.
Я решил складывать изображения не в туже папку, а в папку i/, которой назначил права 777.
Приложение для Windows написано на C++, указание на то, какой сервер изображений использовать, прописано прямо в коде программы. Чтобы каждый раз не перекомпилировать, я решил взять за основу версию gyazowin от paulirish, в которой настройки берутся из ini-файла.
Поскольку сразу его код работать не захотел, я его чуть-чуть подправил.
Скачать уже скомпилированную версию с ini-файлом можно тут.
Для работы с вашим сервером, в конфиге надо указать:
Можно также взять оригинальное приложение, и подправить его под себя. (в файле gyazowin.cpp найти строчки SERVER и PATH и заменить как указано выше)
С Mac версией всё проще — там уже используется внешний файл, где и храниться путь к серверу.
Необходимо установить Gyazo for Mac с официального сайта, затем отредактировать файл script, который находится в /Applications/Gyazo.app/Contents/Resources/ следующим образом:
После чего продолжить работу как и обычно.
Инструкция по установке Gyazo for Linux.
Путь к серверу, соответственно, тоже нужно поменять в ruby-скрипте.
Мгновенная скорость работы
Отсутствие рекламы
Все созданные скриншоты у тебя «под боком»
Надо думать о свободном месте на сервере (за год я использовал около 200Мб, что вобщем не много для единичного использования)
Ваши друзья вряд ли захотят пользоваться вашим решением, поскольку боятся, что у вас будет доступ к их изображениям
Оценить скорость работы можно на моём сервере (надеюсь, он не загнется под хабраэффектом):
http://vps.yurganov.ru/gyazo/
Внимание: все созданные скриншоты удаляются по cron раз в 5 минут.
Галерея, который показывает все ваши загруженные файлы в хронологическом порядке находится здесь.
Скачать: http://vps.yurganov.ru/gyazo/distr/gallery.zip.
(Инструкция по установке внутри архива)

Я и мои друзья давно пользуются программой Gyazo.
Вкратце: маленькая программка, при запуске которой можно сразу выделять область на экране, а как только отпускаешь мышку, область закачивается на сервер gyazo, а в буфер обмена сразу копируется ссылка на него.
Попробовать можно здесь: http://gyazo.com
В последнее время её создатель решил монетизировать свою разработку, и помимо платных фич, включил навязчивую рекламу для не-премиум пользователей.
Сначала, в буфер копировалась не прямая ссылка на картинку, а ссылка на страничку с рекламой. Затем и вовсе прямой файл стал недоступен.
Поскольку gyazo является Open Source проектом, я решил сделать версию «для себя» и без рекламы.
Подробнее под катом.
1. Настройка сервера для изображений.
Нам нужен любой веб-сервер с поддержкой PHP. Оригинальный серверный скрипт является CGI, я решил использовать PHP.
Сам скрипт находится здесь:
<?php
$uri = "http://vps.yurganov.ru/gyazo/";
if(isset($_FILES['imagedata']['name'])) {
$path = 'i/' . substr(md5(time()), -28) . '.png';
if(move_uploaded_file($_FILES['imagedata']['tmp_name'], $path)) {
echo $uri , $path;
} else{
echo $uri;
}
} else {
echo $uri;
} ?>
Как видно, ничего сверхъестественного.
При попытке отправить файл программой, скрипт переименовывает его в набор символов (уникальность — md5 + time()), а также возвращает ссылку на скриншот.
Я решил складывать изображения не в туже папку, а в папку i/, которой назначил права 777.
2. Подготовка клиентской части.
2.1 Windows-приложение
Приложение для Windows написано на C++, указание на то, какой сервер изображений использовать, прописано прямо в коде программы. Чтобы каждый раз не перекомпилировать, я решил взять за основу версию gyazowin от paulirish, в которой настройки берутся из ini-файла.
; Set up gyazo on your own server using
; ruby: http://github.com/gyazo/Gyazo/tree/master/Server/
; php : http://benalman.com/news/2009/10/gyazo-on-your-own-server/
[Configuration]
SERVER = gyazo.com
PATH = /upload.cgi
Поскольку сразу его код работать не захотел, я его чуть-чуть подправил.
Скачать уже скомпилированную версию с ini-файлом можно тут.
Для работы с вашим сервером, в конфиге надо указать:
[Configuration]
SERVER = [ваш домен] - просто с ip-адресом у меня не заработало
PATH = /upload.php - путь до вашего серверного скрипта
Можно также взять оригинальное приложение, и подправить его под себя. (в файле gyazowin.cpp найти строчки SERVER и PATH и заменить как указано выше)
2.2 Mac OS приложение
С Mac версией всё проще — там уже используется внешний файл, где и храниться путь к серверу.
Необходимо установить Gyazo for Mac с официального сайта, затем отредактировать файл script, который находится в /Applications/Gyazo.app/Contents/Resources/ следующим образом:
HOST = 'your domain'
CGI = '/upload.php' - путь до вашего скрипта
После чего продолжить работу как и обычно.
2.3 Linux — приложение
Инструкция по установке Gyazo for Linux.
Путь к серверу, соответственно, тоже нужно поменять в ruby-скрипте.
И что, ты что нибудь выиграл?





Пример
Оценить скорость работы можно на моём сервере (надеюсь, он не загнется под хабраэффектом):
http://vps.yurganov.ru/gyazo/
Внимание: все созданные скриншоты удаляются по cron раз в 5 минут.
P.S. Галерея файлов
Галерея, который показывает все ваши загруженные файлы в хронологическом порядке находится здесь.
Скачать: http://vps.yurganov.ru/gyazo/distr/gallery.zip.
(Инструкция по установке внутри архива)