2.15.2011

Freshtel в Linux

Пролистал сначала основной номер "User and Linux"(11.02), потом дополнительный More Than User в поисках информации о том как завести модем от freshtel в линухах. Как результат - накопал ссылку на страницу разрабатываемого драйвера/программы - http://code.google.com/p/gctwimax/. Больши никакой информации.

Как установить и использовать можно прочитать в скачанном с гуглкода архиве(файл RUN).

На данный момент актуальная версия программы: gctwimax-0.0.1d.tar.gz
---
Техническая поддержка сайтов в Киеве.

8.25.2010

TinyMCE, ImageManager(dustweb), php 5.3.x fix

Появились ошибки на одном из древних сайтов после обновления на php 5.3.3, а именно E_DEPRECATED split в дереве папок ImageManager'a и что про не поддерживаемость JPG типа изображений(Image_Toolbox: can't read JPG ...). Решается внесением нескольких правок в два файла:
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

nodejs 0.2.0

Собственно свеженькая версия.

7.02.2010

Обновление всех репозиториев в папке

updater.sh:
#!/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

gui для просомтра лога mercurial


Собственно вот:
hg clone http://www.logilab.org/cgi-bin/hgwebdir.cgi/hgview .

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

# 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"


10.30.2008

ZCE