#!/usr/bin/env bash
rm page*
for i in {1..20}
do
wget --limit-rate=25k --wait=5 --random-wait http://domain/page$i.html
done
11.24.2009
Массовый граббинг url'ов с помошью wget
9.30.2009
Подсветка синтаксиса в nano
# wget http://nanosyntax.googlecode.com/svn/trunk/syntax-nanorc/php.nanorc
# nano /etc/nanorc
- раскомментировать необходимые языки (html,python,c)
- добавить в конец файла
## PHP
include "/usr/share/nano/php.nanorc"
8.11.2009
ZF: Добавление маршрутов при загрузке модуля
class Captcha_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initModule(){
$oRouter = $this->getApplication()->frontController->getRouter();
$oRouter->addRoute('captcha', new Zend_Controller_Router_Route_Static('captcha', array(
'module' => 'captcha',
'controller' => 'index',
'action' => 'generate'
)));
}
}
P.S. Bootstrap'ing модулей будет происходит автоматически при подключении ресурса Modules из ZF(например из application.ini: resources.modules[] = "")
7.16.2009
Релиз FireBug 1.4
Собственно xpi
Firebug, пожалуй, лучшее средство для облегчения web-разработки: исследование javascript, dom, html, css, http; debug-log серверных скриптов(при использовании FirePHP), web-оптимизация(Google Page Speed); просмотр и управление cookies(Firecookie). Версия для Firefox 3.0-3.5
Использование Firefox 3.5 по умолчанию для ссылок
Установил firefox-3.5-branding из репы пакетов, но ссылки из других приложение по-прежнему открывались в старой версии лисы.
Эту ситуацию исправил путем запуска gconf-editor и замены firefox на firefox-3.5 в ключах /desktop/gnome/url-handlers/http/command и /desktop/gnome/url-handlers/https/command.
7.15.2009
6.30.2009
Давно ожидаемые релизы
2. FireFox 3.5 (приватный серфинг, новый javascript движок, новые свойства CSS 2.1 и 3, нативный JSON, фоновое выполнения javascript, querySelectors и querySelectorsAll, cross-site AJAX)
С нетерпением жду появления новой версии лисы в репозиториях ubuntu.
Что до php, то не порадовало использование разделителя '\" для пространств имен (всё-таки надеялся что будет нечто более привычное "::" или ".") к остальным нововведениям буду тоже присматриваться, все-таки надеюсь в скором времени пополнить ряды ZCE...
6.05.2009
Google Page Speed

5.26.2009
nginx 0.7 stable
Среди заявленных нововведений (по сревнению с предыдущей stable веткой):
- кэширование проксированных и FastCGI-серверов;
- директива try_files;
- поддержка выделений в регулярных выражениях в директивах location и server_name и ссылок на эти выделения во всех директивах, поддерживающих переменные, например, в директиве alias;
- два фильтра — XSLT и преобразования изображений;
- предварительная поддержка IPv6;
- nginx/Windows.
Собственно эти двум нововведением и их совместном использовании и будет посвящен дальнейший текст.
Чего хочется? Хочется сследующего:
- ресайзинг изображений не на application-level, а на server-level (в любой момент можно сгенерировать тумбнайл необходимого размера, причем это будет сделано "по запросу")
- контролированое (в разумных по времени пределах) кэширование полученных тумбнайлов на frontend-серверах
- backend-сервер изображений (ресайзит оригинальны)
- frontend-сервер thumbnail'ов (сохраняет у себя в кэше)
http {
proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=thumbnail:10m;
...
# backend dynamic resizing
server {
listen *:80;
server_name i175d.site.domain;
root /var/www/site.domain/public_html/images;
location / {
image_filter_jpeg_quality 95;
image_filter crop 175 120;
}
}
# сервер thumbnail'ов
server {
listen *:80;
server_name i175.site.domain;
location / {
proxy_cache thumbnail;
proxy_cache_valid 60m;
proxy_pass http://i175d.site.domain;
}
}
}
Отдача статического изображения напрямую:#ab -n 1000 -c 100 http://i.site.domain/image_static.jpg
Concurrency Level: 100
Time taken for tests: 0.144 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13765478 bytes
HTML transferred: 13544630 bytes
Requests per second: 6942.18 [#/sec] (mean)
Time per request: 14.405 [ms] (mean)
Time per request: 0.144 [ms] (mean, across all concurrent requests)
Transfer rate: 93322.66 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 4 1.5 3 8
Processing: 3 10 4.0 9 20
Waiting: 2 7 3.5 6 15
Total: 5 14 4.6 13 25
Ресайзинг без кэширования (закоментированы proxy_cache_valid и proxy_cache):#ab -n 1000 -c 100 http://i175.site.domain/image.jpg
Concurrency Level: 100
Time taken for tests: 13.863 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13389000 bytes
HTML transferred: 13175000 bytes
Requests per second: 72.13 [#/sec] (mean)
Time per request: 1386.347 [ms] (mean)
Time per request: 13.863 [ms] (mean, across all concurrent requests)
Transfer rate: 943.14 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 8.5 0 32
Processing: 58 1275 602.5 1187 3303
Waiting: 39 1274 602.5 1187 3302
Total: 71 1277 603.2 1189 3303
С вкюченным кэшированием (1-й запуск)#ab -n 1000 -c 100 http://i175.site.domain/image.jpg
Concurrency Level: 100
Time taken for tests: 1.617 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13367000 bytes
HTML transferred: 13175000 bytes
Requests per second: 618.55 [#/sec] (mean)
Time per request: 161.670 [ms] (mean)
Time per request: 1.617 [ms] (mean, across all concurrent requests)
Transfer rate: 8074.31 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.9 0 8
Processing: 8 160 335.3 20 1502
Waiting: 8 160 335.3 20 1502
Total: 8 160 336.5 20 1506
С включенным кэшироваием (2-й запуск):#ab -n 1000 -c 100 http://i175.site.domain/image.jpg
Concurrency Level: 100
Time taken for tests: 0.151 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13367000 bytes
HTML transferred: 13175000 bytes
Requests per second: 6601.23 [#/sec] (mean)
Time per request: 15.149 [ms] (mean)
Time per request: 0.151 [ms] (mean, across all concurrent requests)
Transfer rate: 86170.50 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 4.0 3 17
Processing: 2 10 4.6 9 21
Waiting: 1 7 3.9 7 19
Total: 5 14 6.3 11 34
Как видно по результатам отдача закэшированного изображения происходит практически с такой же скоростью как и отдача статического файла напрямую. Большим плюсом в такой схеме является то, что nginx сам следит за устареванием кэша и чистит его по истечении заданного в конфиге времени.
4.15.2009
Ubuntu 9.04 Beta
Не удержался от соблазна поставить xubuntu 9.04 до официального релиза. update-manager -d, 1299 пакетов(300мб)-установка-очистка-перезагрузка... в голове крутится “а вдруг не ребутнется, а вдруг ...”, но уже поздно. И вот на тебе: на загрузке какого-то кернел-модуля(vboxdrv) система начинает о чем то долго думать... ну ничего пусть подумает что по чем. После минут 10 ожидания залогинился на другую консоль и ребутнул машину. Со второго раза все загрузилось шустро и без “косяков”.
Приятности:
менеджер сети наконец-то дал удалить соединение auto-eth0 + автоматически реагирует на включение/отключение wifi
апплет Keyboard Layouts сам распознал ru-winkeys layout и дал возможность задать ctrl+shift для переключения раскладки
ссылки из prism google reader как и должно быть открываются в браузере
ekiga увидела камеру (в 8.10 только XawTV её распознал)
Траблы:
громкость перестала регулироваться через медиа-кнопки ноута(HP Pavilion dv6000)
firefox перстал отображать flash-ролики (переустановка adobe flash-player'a не помогла)
4.13.2009
Прозрачность под текстом иконок на рабочем столе Xubuntu
cat ~/.gtkrc-2.0
style "xfdesktop-icon-view" {
XfdesktopIconView::label-alpha = 5
#font_name = "Sans Bold"
base[NORMAL] = "#FFFFFF"
base[SELECTED] = "#FFAAAA"
base[ACTIVE] = "#AAFFAA"
fg[NORMAL] = "#FFFFFF"
fg[SELECTED] = "#FFFFFF"
fg[ACTIVE] = "#FFFFFF"
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"
