Архив

Архив раздела ‘Программирование’

Ошибка с комментарием к другому посту в Wordpress

12 Апрель 2010 Turbo Нет комментариев

Словил забавный баг в Wordpress. При комментировании любого поста, коммент оставлялся к рандомному посту на сайте. Исследование пациента показало, что код для генерации комментариев содержит использование глобальной переменной $id. Естественно во время правки кода шаблонов и не зная, об этой особенности, я неоднократно использовал переменную с таким же именем.

Кому пришло в голову использовать в качестве глобальной, такую часто встречаемую переменную ума не приложу. =)

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

1 Март 2010 Turbo 4 comments

Столкнулся с тем, что на одном из моих сайтов трафик по файлам серьезно вырос с ростом посещаемости ресурса. Файлов достаточно много, средний размер около 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 Turbo 9 comments

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

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

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

Смена NS-Серверов в RU-CENTER

Как меня бесит следующее письмо от РУ-Центра:

Тестирование DNS-серверов для домена ‘………’ успешно
завершено. Новый список DNS-серверов для домена ‘………..’:
n1.sdfsdf.ru.
n2.sdfsdf.ru.

Изменения вступят в силу после очередного обновления информации в зоне RU.
Зона обновляется 4 раза в сутки: в 2, 10, 14, 19 часов.

В итоге переезд сайта занимает несколько часов, потомучто проходит нехилое время
от изменения до тестирования и ещё более не хилое время до одной из этих дат. Для
посещаемого сайта это немалая потеря информации.

Как-то менял NS-сервера для COM домена зарегенного на Godaddy. Весь процесс переезда
занял 3 минуты.

Доколе? =)

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

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

Ещё про Google

30 Июль 2008 Turbo 2 comments

Интересная статистика.

Прошло квалификацию всего 6773 человека. Больше всего из Индии (1019), США (950) и Китая (857), Россия (373) на четвертом.

Закончился первый раунд. Во второй прошло чуть больше 2500 человек. Распределение прошедших по странам можно посмотреть здесь. Больше всего осталось в строю участников из Китая (440), США (301) и России (227). Индусов осталось 180, как и предполагалось. =))

Google CodeJam

Прошел в следующий тур с первой попытки, но, что называется со скрипом, аж с 500 места. Двух часов мне без тренировки не хватает, идея по решению приходит быстро, но пока её закодишь уже время начинает поджимать. Единственное утешает, что судя по всему Round1B был самым сложным.

Code Jam 2008

18 Июль 2008 Turbo 4 comments

Прошел в следующий тур Google Code Jam. Задачки были довольно простые. Решил две задачи из трех, хотя хватило бы и одной полностью решенной. Вторую решал для подстраховки. Третья задача хоть и была полностью понятной, могла взорвать мозг своей геометрической составляющей, так что на неё я забил. =) Кстати для неё можно было просто формулу придумать или всё-таки без циклов не обойтись?

Администрирование MySQL

Вопрос возможно дурацкий, но поиск в интернете не дал нужного результата. Есть MySQL БД в ней много пользователей и таблиц. У меня есть админский доступ к консоли через mysql и mysqladmin. Как можно посмотреть или сгенерировать срез (к примеру за час) кто из пользователей БД создает максимальную нагрузку? Ну и дополнительно какая таблица и какой тип запросов наиболее критичны?

Буду признателен за помощь.

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

25 Апрель 2008 Turbo 6 comments

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

ZCon 2008. Заметки

28 Март 2008 Turbo 6 comments

На соревновании по программированию собрались просто монстры. =) Ломают вот эту капчу:

http://zcontest.ru/2008.02/crimage/create.php

с более чем 70%-ной вероятностью…

Турнир этого года

Новость специально для программистов среди моих френдов.

15 марта в 2 часа ночи по МСК стартует турнир ZCon 2008. Задачи совместно с fdo_eq я готовил долго и тщательно, так что должно быть интересно. На данный момент доступна тестовая задача, что бы потренироваться: http://www.spoj.pl/ZEL08/problems/ZTEST/

31 Январь 2008 Turbo 6 comments

Трудно быть прогером. В инете на аккаунте в РУ-Центре лежит 450.00 рублей, для продления домена надо 450 рублей, но у меня все время дискомфорт, что не хватит, мало ли как они округляют … Все время есть желание доложить 1 копейку, что б уж наверняка. =)

Прогерское

11 Январь 2008 Turbo 12 comments

Соревнования по программированию из серии ZCon в этом году скорее всего не будет. На это есть несколько причин. Полностью готово 2 задачи, ещё 4 в процессе разработки на разной стадии готовности, а надо штук 10. Ну и я ещё ввязался в проведение соревнования по AMV, а если чего и кодю, то парсеры для своего киношного проекта. Так что ждем ZCon 2009, надеюсь к тому времени я ещё буду помнить, как делать интересные задачи. =)

20 Сентябрь 2007 Turbo Нет комментариев

Смотрел китайский поисковик. Как видно из подсветки, морфология кардинально отличается от нашей. =)

http://www.baidu.com/s?wd=%A7%D1%A7%DF%A7%DA%A7%DE%A7%D6&cl=3