Архив

Публикации с меткой ‘Программирование’

Автоматическое создание Torrent’ов для раздачи файлов на вебсервере Apache + MySQL + PHP

1 марта 2010 32 комментария

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

Одновременно с этим не хотелось зависеть от сторонних трекеров, которые иногда закрывают и при этом раздачу хотелось максимально автоматизировать. Для этих целей занялся поиском готовых исходников. Особенно долго искать не пришлось. Раздача состоит из трех компонент:

1) Трекер. Для моих целей не нужна регистрация пользователей и не нужен рейтинг, поэтому была взята простейшая его реализация, что бы можно было встроить в свой код. Вуаля трекер всего несколько килобайт веса с минимальным количеством кода, с которым легко разобраться и всего с одной таблицей в БД: OpenTracker. Правда пришлось его слегка переделать и сменить mysql_pconnect на mysql_connect. Что бы коннекты долго не оставались висячими и не достигался лимит подключений БД. Рекомендую ставить трекер на отдельную БД, в случае если нагрузка будет большой. Если вы установили OpenTracker В папку torrent на сервере, то ваш Announce URL для создания торрентов будет: http://yoursite.ru/torrent/announce.php

2) Когда у вас есть трекер хорошо бы автоматизировать создание торрент файлов. Мне удалось встроить это в админку с использованием свободного класса «Torrent RW». Использование класса не просто, а очень просто. Например, для создания торрента для заданного файла требуется 4 строчки:

$torrent = new Torrent( ‘./path-to-file-or-folder’, ‘ http://yoursite.ru/torrent/announce.php’ );
if ( ! $error = $torrent->error() ) // error method return the last error message
$torrent->save(‘test.torrent’); // save to disk
else
echo ‘DEBUG: ‘,$error;

3) Третий компонент это сидер который раздает первую копию файла. Третьим компонентом можете быть вы сами с домашнего компьютера. Если же хочется что бы и раздачу делал сервер, то для этого можно использовать PHP программу TorrentFlux. Ставится в несколько кликов на Web-сервер и управляется через браузер. Добавляете через веб-интерфейс торрент указываете файл и сервер сам раздает файлик. К сожалению мне не удалось сходу автоматизировать раздачу после создания торрента. Приходится делать это руками. Если вдруг кому удастся дайте знать. =)

Как работает поиск Яндекса?

27 сентября 2009 9 комментариев

После участия в конкурсе от Яндекса (Интернет математика) мне стал понятен алгоритм работы и ответы на всякие мелкие вопросы, вроде, почему апдейты проходили раз в несколько дней. Все очень просто.

У Яндекса есть группа асессоров – так называемых оценщиков релевантности документов. Они составляют список вида: страница – запрос – релевантность. В этом списке сотни тысяч страниц. Релевантность варьируется от значений совсем не релевантно (0), до полностью релевантно (5). Одновременно с этим у Яндекса для каждой страницы в интернете есть набор параметров (ВИЦ, и.т.д) и часть параметров которые можно рассчитать в процессе запроса (количество слов в запросе, частота запрошенных слов на странице). Всего таких параметров на конкурсе было 245 штук, что, скорее всего, недалеко от реального числа используемого Яндексом. По списку асессоров и набору параметров для каждой страницы из списка строится модель по «Методу опорных векторов». Построение модели довольно трудоемкий процесс. Например, во время конкурса, модель на сложных алгоритмах у меня дома строилась порядка суток и больше.

Читать далее…

Для программистов, любящих задачки:

http://company.yandex.ru/grant/2009/datasets

Маленькое местное соревнование

25 апреля 2008 6 комментариев

Ходил на турнир по программированию (давал анонс о нем в профильных комьюнити) и выиграл. Проводилось всё по стандартной ACM’овской системе. Последнюю, четвертую задачу сдал на 39 минуте и сорвал интригу конкурса. Организаторы хотели объявить победителей на церемонии награждения. Что ж второе и третье место на момент моего ухода были свободны. Главная проблема отсутствия конкуренции, малое количество участников и слишком легкие задачи, без финального гроба. Если бы там был хоть кто-нибудь из реальных участников ACM, то соревнование превратилось бы в соревнование на скорость кодинга. Из плюсов мне дадут приз и грамоту, из минусов надо будет ехать на московский тур.

Рабочее

Помните притчу про осла который, стоял между двух стогов сена и не мог вбрать к какому подойти, после чего умер от голода. У меня сейчас примерно такая же ситуация с работой. Есть два пути решения проблемы и вместо того, что бы выбрать путь и пойти по нему сижу и целый день думаю: «Ну че ж делать, черт возьми». =)

Завтра окружные отборочные на конкурс «Московские Мастера по профессии программист». Посмотрим чаво там будет. Задачи завтра под катом. =)

Счет до 1024 на пальцах

Многие уверены, что на пальцах можно считать до десяти.
На самом деле считать можно до 1024.
Если в двоичном коде…

(c)rsdn.ru

Кто хочет порешать легкие задачки на соображалку прошу сюда:
http://www.livejournal.com/community/ru_acm/10520.html

UPD: А кто сложные сюда:
http://www.livejournal.com/community/ru_acm/10851.html

Списки

29 апреля 2005 2 комментария

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

http://www.rsdn.ru/Forum/Main.aspx
http://forum.codenet.ru/
http://forum.sources.ru/index.php
http://www.nixp.ru/cgi-bin/forum/YaBB.pl
http://algolist.manual.ru/forum/ubbthreads.php
http://xpoint.ru/
http://forum.ixbt.com/
http://forums.webscript.ru/
http://forum.sysadmins.ru/index.php
http://www.soft-forum.ru/forum/index.php

17 января 2005 2 комментария

Убил пол часа на олимпиаду и готово =)

Congratulations on qualifying for the SILVER division of the USA
Computing Olympiad. Your competition record is marked as ‘SILVER
Qualifier’ and will continue to stay that way until your performance
improves or falls dramatically.

If you receive this invitation during a contest, your timer has
been reset and you can enter the SILVER division. Note, however,
that your BRONZE results will not be shown on the final contest
scoring if you submit a SILVER division task.