Category Archives: myarcticles

Замыкания в PHP

Замыкания удобно применять в качестве callback-функций. Замыкания создают функции, не имеющие определенных имен. Замыкания автоматически преобразуются в экземпляры класса Closure. Время жизни переменных, используемых в замыкании, может быть больше, чем у той функции, где их определили. В контексте класса для передачи $this в замыкание нужно использовать промежуточную переменную: $v = $this; use ($v) Пример (0): [...]

preg_split и прямой вызов функций внутри замыканий

50000 0.0020001009607315 20001009607315 1884 56.68 0.0016987597370148 16987597370148 15.06 2952 100000 0.0020226094222069 20226094222069 1884 0.0017117062973976 17117062973976 15.37 2952 150000 0.0020203295516968 20203295516968 1884 0.0017234358565013 17234358565013 14.69 2952 Вывод: прямой вызов работает быстрее на 15%, но затрачивает памяти на 56% больше.

const, define и память

На простом примере проверялось число байт, затраченных на объявление 500 констант через define и const. const const real const emalloc const peak real const peak emalloc start  524288  370528  524288  431488 stop  524288  370832  524288  431488 define define real define emalloc define peak real define peak emalloc start  1048576  454548  1048576  747424 stop  1048576  454852 [...]

Rewrite с файла на файл

Требуется: по запросу /path/to/images/1.gif брать файл /path/to/images/1.gip Решение: location ~* \.(gif)$ { root /path/to/site/path/to/images; rewrite ([0-9]).gif /$1.gip break; }

Простой чат на netcat

Сервер: netcat -l localhost 8080 Клиент: telnet localhost 8080

Netcat для отлова глюков

Если вы хотите в живую видеть заголовки, отсылаемые на сервер приложением/сервером, то можно воспользоваться netcat: netcat -l localhost 8080 Все заголовки будут выводиться в консоль.

Как обновить lenny Debian до squeeze

В процессе обновления будут задаваться вопросы относительно текущих настроек, рекомендуется сохранять текущие. aptitute update aptitude upgrade Добавить в начало /etc/apt/sources.list deb http://ftp.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main contrib deb-src http://security.debian.org/ squeeze/updates main contrib aptitude update aptitude install dpkg aptitude apt aptitude upgrade aptitude full-upgrade reboot cat /etc/debian_version smile

Установка NODE.JS на DEBIAN

1) Ставим NODE.JS apt-get install g++ curl libssl-dev wget http://nodejs.org/dist/node-v0.4.10.tar.gz tar xvzf node-v0.4.10.tar.gz cd node-v0.4.10/ ./configure –prefix=/opt/node0410 make make install 2) Ставим менеджер пакетов (shaolin like way) wget https://nodeload.github.com/isaacs/npm/zipball/v1.0.24 unzip isaacs-npm-v1.0.24-0-g4d7d377.zip cd isaacs-npm-c94e296 ./configure node ./cli.js install -g

Пример конфигурации MONIT

set daemon 30 set logfile /var/log/monit.log set mailserver localhost set alert post@postserver.com set httpd port 1234 and use address 22.33.44.55 ssl enable pemfile /opt/monit/monit.pem allow 11.22.33.44 allow 11.22.33.55 allow monituser:monitpassword set mail-format { from: noreply@monitserver.com subject: MONIT ERROR: SERVICE: $SERVICE EVENT: $EVENT DATE: $DATE message: MONIT ERROR! DATE: $DATE SERVICE: $SERVICE EVENT: $EVENT HOST: $HOST [...]

nginx load balancing

upstream{ server u1.domain.com:8080 weight=3 ; server 127.0.0.1:8081 weight=3; server unix:/path/to/socket weight=3; server u2.domain.com:8082 backup; } 1) Три запроса обрабатываются сервером u1.domain.com 2) Следующие три запроса обрабатываются сервером 127.0.0.1 3) Следующие три запроса обрабатываются сервером на сокете socket 4) Следующие 3 запроса обрабатываются сервером u1.domain.com и так далее 5) Сервер u2.domain.com используется как резервный, и запросы [...]

Дополнение к V8 TEST (VAR OR NOT)

Было сделано три дополнительных теста, но только на Node.JS: 1) Код аналогичен указанному в предыдущем посте. Исключение в объявлении переменных. В этом тесте они объявлялись один раз в начале скрипта: var k, amax, amin, anow, acount; 2) Код с использованием while: var k, amax, amin, anow, acount, s1, s2, s3, b; s1 = 0; while(s1 [...]

v8 test (var or not)

В двух вариантах тестировались Chrome 12.0 и Node 0.4.10. В первом варианте все переменные объявлялись var, во втором – без. Код: for(var k=0;k<10;k++){ var amax = 0; var amin = 100000000; for(var j=0;j<30;j++){ var anow = (new Date()).getTime(); var acount = 0; while((new Date).getTime() – anow < 1000){ acount ++; } if(acount < amin){ amin [...]