Снижение трафика на сервере
Столкнулся с проблемой нового хостинга, где ограничение по трафику - 2Tb.
Сайт, с просмотром/скачиванием видео ~20.000 за сутки, кушает 120Gb.
Пришлось принять меры:
- ограничил скачивание видео для пользователей - 3 видео в сутки (пока элементарно, если применить мозг - ломается мгновенно)
- в nginx сделал элементарное ограничение по скорости и коннектам
в зоне http:
limit_zone download $binary_remote_addr 10m;
в location:
limit_conn download 2;
limit_rate_after 2048k;
limit_rate 128k;
restart nginx в debian:
/etc/init.d/nginx restart
просмотр трафика в realtime утилитой ifstatus
Количество одновременное воспроизводимых видео - 2
После скачки 2Mb скорость падает до 128Kb
Улучшил свой блог
1. Замучил спам и поставил рекапчу на все комментарии, даже зарегистрированных пользователей:
http://wordpress.org/extend/plugins/wp-recaptcha/installation/
В инструкции перешел на сайте mailhide.recaptcha.net и получил ключ для своего блога.
2. Изменил тему, т.к. предыдущая не использовала новый функционал wordpress
http://wordpress.org/extend/themes/
Частично ее пофиксил: убрал аляповатую ссылку на rss, вернул ссылку more, поменял ссылки rss на гугловый feedburner.google.com
3. Сделал подписку на email
4. Поставил счетчики тИЦ и кол-во подписок
Разработка простой онлайн игры. Часть 1
Простая игра, на подобии комбатс.ру с первым пришедшим на ум названием "Маги 2.0" ![]()
С детства мечтаю создать какую-нибудь игру. В свое время уже пробовал сделать, но это не в счет, т.к. планы были грандиозны, а я один... и было это ~6 лет назад, и знал я мало. Хотел сделать стратегию на подобии Front Mission 3. Т.к. опыт программирования был почти ни какой, осилил за месяц сделать обсчет выстрелов из нескольких видов оружия и на этом успокоился
.
Тем временем, прогресс нас забросил на просторы интернета, а вместе с тем и онлайн игр. По этому моя первая игра будет онлайн. Ни сколько не претендую на интересность самой задумки игры (она банальна и стара) и на гениальность реализации. Просто хочется создать свою маленькую игру. Реализация будет без красивого дизайна - самое главное функционал. Пока начну с мини ТЗ. По мере желания, времени и остальных факторов буду разрабатывать само приложение и описывать в рубрике "Игры".
Юзабилити. Ссылка скачать
Всем знакома ситуация, когда для скачивания что-либо с сайта, требуется регистрация. Обычно, прям тут же, или что хуже, где-то еще, есть ссылка на регистрацию. Мы проходим нудную процедуру заполнения формы. Очень часто переходим по ссылке с почты обратно на сайт, подтверждая существования своей почты. Далее вспоминаем, что хотели скачать... ура, скачали!
SQL. Извращение над группировкой
Требуется получить последние темы для каждого рубрики форума. На ум сразу приходит запрос вида:
Вариант 1.
SELECT id AS rubric_id, (
SELECT id
FROM `forum_topic`
WHERE rubric_id = `forum_rubric`.id
ORDER BY updated DESC
LIMIT 1
) AS last_topic_id
FROM `forum_rubric` ;
Структуры таблиц.
CREATE TABLE `forum_rubric` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID рубрики форума',
`status_id` tinyint(3) unsigned NOT NULL COMMENT 'ID статуса',
`name` varchar(255) DEFAULT NULL COMMENT 'Название',
PRIMARY KEY (`id`)
) ;
CREATE TABLE `forum_topic` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID темы',
`status_id` tinyint(3) unsigned NOT NULL COMMENT 'ID статуса',
`rubric_id` int(10) unsigned NOT NULL COMMENT 'ID рубрики',
`title` varchar(255) NOT NULL COMMENT 'Заголовок',
`added` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Создан',
`updated` timestamp NULL COMMENT 'Обновлен',
PRIMARY KEY (`id`),
KEY `rubric_id` (`rubric_id`,`updated`),
) ;
А вот как можно извратиться и сделать одним запросом:
Три истории из жизни Стива Джобса
Сегодня читая rss в Google Reader наткнулся на два интересных поста
1. Выступление Стива Джобса перед стэнфордскими выпускниками в 2005 году
2. Плагин для WordPress, с постраничной навигацией.
Unix. Количество файлов в директории
Столкнулся с проблемой подсчета количества файлов в директории в ОС unix, а именно freebsd. Специальной утилиты для этого не нашел, пришлось извращаться.
Решается задача при помощи двух стандартных утилит find и wc
find . -type f
выводит все найденные файлы в текущий директории
wc -l
выводит количество строк
соединяем:
find . -type f | wc -l
получаем к примеру такой результат:
%find . -type f | wc -l
1997
Nginx – логические операторы «И», «ИЛИ»
Как написать location в nginx, который срабатывает, если два условия должны выполняться. Логично было бы написать так:
if ($http_user_agent ~* "Opera" AND $http_referer ~* "yandex.ru") {
bla bla bla
}
nginx не предусматривает в условиях логические операторы
Решение есть в виде хака:
set $a "";
if ($http_user_agent ~* "Opera" ) {
set $a 1;
}
if ($http_referer ~* "yandex.ru") {
set $a 1$a;
}
if ($a = 11) {
bla bla bla
}
Идея очень проста, создается переменная, в которую по мере срабатывания условий накапливается строка. Далее срабатывает какое-либо условие с учетом этой строки.
Может man читал не внимательно и кто-то подскажет более красивое решение этой проблемы?