11.24.2009

Массовый граббинг url'ов с помошью wget


#!/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

9.30.2009

Подсветка синтаксиса в nano

# cd /usr/share/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: Добавление маршрутов при загрузке модуля

Редактируем файл application/modules/captcha/Bootstrap.php

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 по умолчанию для ссылок

Т.к. FF 3.5 будет по-умолчанию скорее всего только в Ubuntu 9.10 (Karmic Koala) решил все же его поставить и использовать по умолчанию в Ubuntu 9.04.

Установил 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

Digg.com и youtube.com заявили, что в скором времени перестанут поддерживать IE6. В связи с этим сервисы предлагает заблаговременно перейти на Internet Explorer 8, Google Chrome или Mozilla Firefox 3.5.

Скорее бы уже...

6.30.2009

Давно ожидаемые релизы

1. PHP 5.3.0 (namespaces, mysqlnd, late static binding, оператор ?:, замыкания и лямбда-функции, удалена поддержка режима совместимости zend.ze1, добавлена константа __DIR__)
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

Ответ от гугля на яховский yslow в виде расширения для FireFox интегрирующегося в FireBug: http://code.google.com/speed/page-speed/

Создалось впечатление что информации выдает несколько больше чем yslow.

5.26.2009

nginx 0.7 stable

Буквально вчера ветка 0.7.х http-сервера nginx была обьявлена как stable, что не может не радовать =). Впринципе она довольно давно используется на одном посещаемом сайте и проблем с ней замечено небыло.

Среди заявленных нововведений (по сревнению с предыдущей stable веткой):
Наконец-то появилось долгожданное кэширование! Динамический ресайз изображений тоже порадовал.

Собственно эти двум нововведением и их совместном использовании и будет посвящен дальнейший текст.

Чего хочется? Хочется сследующего:
  • ресайзинг изображений не на application-level, а на server-level (в любой момент можно сгенерировать тумбнайл необходимого размера, причем это будет сделано "по запросу")
  • контролированое (в разумных по времени пределах) кэширование полученных тумбнайлов на frontend-серверах
Для реализации этой задачи, разумеется средствами nginx, создадим два дополнительных сервера:
  • backend-сервер изображений (ресайзит оригинальны)
  • frontend-сервер thumbnail'ов (сохраняет у себя в кэше)
Словами nginx.conf (оба сервера на одной машине) это выглядит вот так:
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"