eAccelerator е един прекрасен механизъм да по забързаме бавното php. Общо взето идеята е елементарна  😆 при изпълнение на php скриптове тая щуротия ги пази до opcode ниво и при следващо извикване ако няма промени пo скрипта се ползва opcode копието. Резултата е по бързо изпълнение по ниско натоварване на сървъра, по малко разхищение на ресурси. Общо взето това е.

Сега да споделя простотията която успях да сътворя. Преди малко по малко от седмица на един сървър обновявах php версията която ползва заради фаталният CVE-2010-4645 бъг. Поднових версията до 5.2.17 където видях, че е поправен. Не ми се рискуваше с 5.3.5 версията, че има разлики и не знам кое как ще сработи , а и най важното беше късно вечерта. Речено сторено. Ъпдейта мина повече от гладко, но след като приключих ми направи впечатление че пъргавостта на сайта падна доста. Но единия от разработчиците ме беше предупредил, че ще тестват нови скриптове и не му обърнах много внимание. Вчера ми се наложи да настройвам едни cron-ове на php и когато ги пуснах видях един доста неприятен надпис, че компилацията ми на eAccelerator-a е за старта версия на php-то ми и с новата не работи ;). Ясно вече всичко е ясно. Набързо прекомпилирах eAccelerator-a и всичко си дойде на мястото по груби наблюдения зареждането на страниците падна двойно като се освободиха ценни мегабайти рам. Като цяло вече поне си направих теста и със сигурност има полза особено при над 200 потребителя online нещата стават доста красноречиви а при 400 😉 Има и други механизми но според тестовете eAccelerator-a е най грамотния избор. Нямам особено време за тестване затова се доверявам на хората 😀

http://www.youtube.com/watch?v=eJarZiMQaKA

malmon е един изключително интересен нов проект – като цяло е замислен за защита на хостинги сървъри от зловреден софтуер на него, създаден от моя приятел и linux guru ShadowX. Да поясня какво точно се има на предвид – нищо не пречи да си метнете на кои хостинг едно приятно c99 шелче да речем и ако е не достъчно добре настроена файловата система нищо не пречи на злия хахор да докопа шел достъп. Като цяло идеята на malmon е точно така да следи качването на такива приятни мизерии и да ги премества в карантинна директория различна от document root-a. Принципа на които работи е доста приятен – следи за създадени нови фаилове в папка която е настроен да гледа софтуера и при наличие на някои фаил кото съвпада с определени сигнатури го препраща към вечните ловни полета. Нещо като антивирусен софтуер 😉 Скрипта е написан на python което го прави лек, бърз и гъвкав. За да следи за създадени нови файлове използва относително новия механизъм на ядрото inotify. Въпреки че все още скрипта не е официално стабилна версия от 3 дни не съм имал проблеми на един порядъчно натоварен сървър – единия от сайтовете там е в топ 100 на tyxo 😉

Мога да продължа да наливам сухи статистики и обяснения на дълбоко как работи кода, но няма да го направя. По скоро ще ви призова да го сваляте тествате и ако имате предложения да пишете на автора 😉 Ако видите бъгове пак му пишете хора сме грешим и е добре да се подкрепяме. Наздраве!

Понеже съм уникален кретен и пиша ужасно не мърлив и недообмислен код, успях да оставя без достъп до хостинг машината ми за цяла вечер. Проблема се оказа малоумно тривиален ама кой да мисли на време.

#!/bin/bash -x
wget http://checkip.dyndns.org/ -O /tmp/ipaddr
IPADDR=$(cat /tmp/ipaddr | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
IPADDROLD=$(cat /tmp/ipaddr_old | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]
then
 sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$IPADDR/" /etc/bind/neo2shyalien.eu
 /etc/init.d/bind9 restart
 echo "server localhost" > /tmp/nsupdate
 echo "zone neo2shyalien.eu" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. A" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. CNAME" >> /tmp/nsupdate
 echo "update add ns.neo2shyalien.eu. 38400 A $IPADDR" >> /tmp/nsupdate
 echo "update add *.neo2shyalien.eu. 38400 CNAME ns.neo2shyalien.eu." >> /tmp/nsupdate
 echo "show" >> /tmp/nsupdate
 echo "send" >> /tmp/nsupdate
 echo "" >> /tmp/nsupdate
 /usr/bin/nsupdate -k /etc/Kns.neo2shyalien.eu.+157+59417.private -d /tmp/nsupdate
 mv /tmp/ipaddr /tmp/ipaddr_old
fi

Това вече е поправения скрипт които няма да допуска грешка. След малко ще обясня къде е била проблемата част сега да обясня какво прави скрипта. Поне нали съм на динамично публично ip. Съм пуснал горния скрипт да проверява за промяна в адреса ми ако се смени да променя настройките на машината и да праща информация за домейна ми, че има промяна. Общо взето тривиален скрипт но в него бях допуснал ужасно малоумен пропуск. В частта където се проверява за смяна на адреса

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]

Преди беше


if [ "$IPADDR" != "$IPADDROLD"]

Така самия ред прави следното взима 2-та IP адреса и ги сверява ако са еднакви пропуска ако са различни ъпдейтва. В предния вариант бях пропуснал много важна грешка поради някаква причина скрипта ми беше решил че имам IP = „“ (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉

Понеже имах доста полемики докато стигна до оптималния вариант – за Android върху моя HTC реших да драсна едно що годе подробно обяснение за нещата. В случая ще вляза в конкретизация за инсталация върху NAND-а на телефона, haret boot варианта няма да го разисквам, въпреки че при него нещата трябва да са идентични.

1. Подготовка – преди да започнем трябва да подготвим ядрото с което ще флашнем NAND чипа и ще направи възможно директното boot-ване на Androida. Ако сте с Linux или Mac OS ви препоръчвам Atools-а варианта ако сте с Windows NBH Editor-a е вашата панацея.  След това смъквате последното ядротo от GIT-a аз лично ви препоръчвам последния вариант на версия 2.6.25. Работи по стабилно от 2.6.32 и пести повече ток, недостатък е по ниския трансфер на wifi адаптера, което мен ме устройва. След това отваряте nbh файла и прилагате настройките за вашия телефона и версията на дроида . След това запазвате новия преработен за вашия телефон kernel. И го поставяте на SD карата си. Задължително трябва да е формат kaisimg.nbh за да можем ако сме си SPL-нали телефона да префлашенм от SD карата ни. За тея неща има доста изписано навсякъде така че няма да ги дискутирам. След флашване с въпросното ядро вече можете да кажеше чао на Windows Mobile 😉

2. Android – След като сме приключили с горната част телефона ще започне да зарежда в конзолен режим и ще ни прикани да задържим d-pad-а или средния бутон на предния панел. С него влизаме в boot менюто от което можем да си инсталираме ъпдейтваме ресетваме и прочие Androida ни. За да можем да инсталираме трябва да имаме папка andboot в SD карата ни в нея трябва да има файл с името androidinstall.tar.gz или androidinstall.tgz. След като пробвах почти всички Froyo версии мисля че най бърза и стабилна е Fat Free Froyo. Лично него ползвам и не съм имал почти никакви бъгове, ще се надявам и за напред разработчика му да се старае толкова много. Разумно е преди да почнете да инсталирате да си направите един поне 512 или малко повече ext2 дял на вашата SD карта където ще седи data.img или часта на дроида вив която ще са инсталирани програмите. Самата инсталация е тривиална избирате системата ви да бъде върху NAND-а а дата-та ви върху ext2 дяла. Изчаквате 2-3 мин докато всичко се нагласи и ще се върнете в първоначалното меню. Избирате Quit и ще започне да ви се стартира прясно инсталирания Android. От тук нататък дерзайте и се забавлявайте.

3. Малко думички за другите неща – Преди всичко препоръчвам Radio ROM-а да е версия 1.65.хх версия. Версиите 1.7хххх не работят толкова добре. Има известни неприятности около тях с обхвата четенето на контактите от SIM картата ви и прочие. Ако все пак искате да тествате 2.6.32 ядрото има вероятност вашият Android да не се стартира заради различните параметри които подава новото ядро към init системата. В такъв случай упдейтвате системата като сложите архивчето то тука в adboot папката и после от boot менюте се избира да се ъпдейтне системата.  Хубавото при него че прави системата една идея по бърза wifi адаптера смучи с по голяма скорост но не е толкова стабилен като 2.6.25 което не е малък минус 😉 отделно че с него Fat Free Froyo-то не може да запаметява контактите от SIM-a.