2.15.2011
Freshtel в Linux
Как установить и использовать можно прочитать в скачанном с гуглкода архиве(файл RUN).
На данный момент актуальная версия программы: gctwimax-0.0.1d.tar.gz
---
Техническая поддержка сайтов в Киеве.
8.25.2010
TinyMCE, ImageManager(dustweb), php 5.3.x fix
1. images/connector/php/Image_Toolbox.class.php:
в районе 110 строки заменить
if ($gd_info['JPG Support']) {
на
($gd_info['JPG Support'] || $gd_info['JPEG Support']) {
2. images/connector/php/index.php
в трех местах заменить
split('[\\/]'
на
preg_split('#[\\/]#'
---
Скачать реферат бесплатно и без регистрации. Новости образования.
8.20.2010
7.02.2010
Обновление всех репозиториев в папке
#!/bin/sh
echo "Updating git repositories"
find . -type d -name ".git" -exec dirname {} \;|\
xargs realpath|\
while read i;
do
echo `basename $i`
cd "$i";
git pull;
done;
echo "Updating mercurial repositories"
find . -type d -name ".hg" -exec dirname {} \; |\
xargs realpath |\
while read i;
do
echo `basename $i`
cd "$i";
hg pull;
hg up -C;
done;
echo "Updating subversion repositories"
find . -maxdepth 2 -type d -name ".svn" -exec dirname {} \;| \
xargs realpath |\
while read i;
do
echo `basename $i`
cd "$i";
svn up;
done;
5.18.2010
php: array_filter_keys
Решение:
function array_filter_keys(array $array, array $keys){
return array_intersect_key($array, array_flip($keys));
}
$input = array(
'key1' => 'qqq',
'key2' => 'www',
'key3' => 'eee'
);
var_dump(array_filter_keys($input, array('key1', 'key2', 'key5')));
array
'key1' => string 'qqq' (length=3)
'key2' => string 'www' (length=3)
2.25.2010
2.09.2010
Автозагрузка библиотек модуля в ZendFramework
class Core_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initModule(){
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'namespace' => '',
'basePath' => dirname(__FILE__),
));
$resourceLoader->addResourceTypes(array(
'library' => array(
'path' => 'library',
'namespace' => 'Core_'
)
));
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader($resourceLoader);
}
}
Теперь в других модулях можно пользоваться библиотекой модуля Core, например:
$oElement = new Core_Form_Element_Image(); // extends Zend_Form_Element_File
для создания элемента формы с загрузкой(и предпросмотром уже загруженного) файла изображения.
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
# 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
Создалось впечатление что информации выдает несколько больше чем yslow.
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"


