Напоследък се занимавам основно с код вместо с администриране затова драмите пред които се изправям с кодене са много повече от сървърните такива, затова реших да драсна няколко реда за глупостите които успявам да сътворя. Усилено се готвим да презентираме проекта си което форсира донякъде откриването на драматичните части

  • Първото нещо което което със сигурност щеше да създаде проблеми е изключването на javascript от браузърната поддръжка.  Както всяка модерна апликация така и нашия инструмент използва доста JS за AJAX и други динамични процеси които предават интерактивност и съвременно подобряват визията и функционалността. Помислихме за доста решения като най приемливото беше с бисквитка с информация и после php да проверява дали информацията е валидна и дали всичко е наред. Доста грамотно решение но накрая се появи още по приличен вариант. HTML който да се изпълнява ако попадне в noscript. Според мен е и най елегантното решение.
<noscript>
<meta http-equiv="refresh" content="0;URL=./nojs.html" />
</noscript>

Общо взето ситуацията е тривиална ако спрем JS поддръжката ще бъдем пренасочени към nojs.html. Простичко и доста ефективно решение

  • Php multhithreading – много нишковоста е нещо което доста полезно при процесори с повече ядро (не че на едноядрени не е ОК но при много ядрени системи нещата са друга бира). Нашия софтуер има част която се занимава с събирането на информация от други API – та и я импортва в наша база данни. Общовзето никакво предизвикателство освен че това го реализирахме пак на php с multhithreading в cli режим защото тоя процес е досатъчно голям и е необходимо да е атоматизиран за да се налга някой да го прави на ръка. Тука имаше една драма свързана с фокрването на процесите и поточно не самото създаване на child process-a а че скрипта изчакваше да приключабота за да създаде нов. Глупаво това убиваше идеята за multiprocessing каквото е действителност поведението а не на multhithreading но това са подробности. Най напред сложихме & след процеса което ще рече да продължава работат си скрипта но пак нямаше промяна в поведението изискваше се и стандартни изход от скрипта да бъде пренасочен – в моя случай най добре към /dev/null 🙂  Накрая структурата на тази част от кода изглеждаше така
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
}else if ($pid) {
// we are the parent
echo "I'm parent  \n";
pcntl_wait($status); //Protect against Zombie children
} else {
// we are the child
echo "I'm a child $timer  \n";
exec("$command > /dev/null &");
exit (0);
}

Примерчето отново е тривиално. От към производителност бях силно впечетлен със прекъсвани между вдигането на процесите и прочие направих около 50 child process-a които своя странба направиха 7800+ mysql inserts за около 30-40 сек. А машината е крайно хилава понеже ни е тестов върър преди да вдигнем приложението на реалния.

  • Mysql querys – бях шокиран от една велика глупост. Имаше един код който правеше 4-5 излишни заявки към базата данни, вместо да се използва едно по тлъсто sql query и после основната работа да я отнесе php-то. Драмата беше такава, най- напред се правеше една заявка която взимаше информация после изхода от заявката се използваше да се направят други заявки като тя служеше за аргументи. Доста грозна и тлъста ситуация. Subquery а е непозната територия явно както и left join или просто не са били обмисляни нещата добре. Хванах пренаписах заявката всичко се получи доста добре и като цяло натоварването падна с около 200% за същата част от кода.

В общи линии това са нещата на последък с които се заниамваме и немога да кажа че е скучно но понякога се изумявам от разни необмисляни парчета код които трябва да поправям а най стеращното е че често са мои 😆

Enhanced by Zemanta

Не съм писал за пореден път от … ужасно много време – причини бол пък и нежелание до някъде мисля. Пробвах се 3-4 пъти да постна някакви неща но не бях особено доволен от резултата и затова се отказвах всеки път 🙂 Реших да си поразгледам блогчето така просто за спорта 🙂 Интересни неща виждам. Истинската причина която ме накара да напиша сегашния пост не е повечето време което имам защото то си е същото като вчера, миналия ден и прочие а компилация от чувства която ме обзе 🙂 Съвременно попаднах и на това компютъра ми, надявам се автора да не ми се разсърди че го пускам 🙄

***

Мила,
Аз съм привлекателен мъж.
И го знам.
Познавам доста добре жените
и тайните
на телата им и на душите.
Мога
да обсебвам лесно слабите.
Силните
са по-трудни, но не за дълго.
Много
сами ме търсят, не за любов, а за
заместител.
Разбирам ги и им давам желаното.
Винаги
казвам думите, които искат и
целувам
умело там дето никой не смее.
Ръцете ми
магически карат телата им да пеят,
а после
когато се слеят с моето плачат…
Никога
не съм се гордял със себе си, но
не спирам.
Опитвал съм, не че не съм,
понякога,
искам да го знаеш, и все е било
неуспешно.
За това без душа съм останал.
Изгоних я
за да не ми пречи на решенията.
Всъщност
тя ме напусна отвратена от мен.
Днес
усещам нещо ново и мъчително.
Съвестта ми
разяжда ме и чудно как е останала
в мен
като тревичка поникнала в камък
студен.
Сега страдам, заслужено, и май съм
на път
да сторя най-после геройска постъпка
и кажа:
– Стой далече от мен. Пази се!
Обичам те!
Ти не заслужаваш заместител!

За единия проект които водя в gitweb ме дразнеше, че няма оцветяване на кода в дървото. Лесен начин как да оцветите синтаксиса в tree частта на gitweb е като инсталирате пакета  highlight и добавите следния ред в /etc/gitweb.conf или където ви се намира конфигурационния файл на gitweb

$feature{‘highlight’}{‘default’} = [1];

За Debian пакета го има в пакетната система за другите дистрибуции не съм проверявал.

ps Има и алтернативен вариант като се правят промени по файловете на gitweb ама ми се стори безсмислено като има простичък вариант 🙂

Не съм писал от много, ужасно много време. Явно по някаква странна причина съм липсвал на хората защото получих няколко писма с въпроси – Какво става, Къде се изгуби, да не се отказа от блога. Доста интересно явно по някаква странна и необяснима за мен причина хората ме четат и още по странно им допада тая парче от безсмислени глупости. За мен беше доста интересно след като преместих блога си на споделен хостинг че не ми достигат ресурсите 😆 Доста забавен факт не ми достига процесорното време от пренатоварване от прекалено много посещения 😀 Така в общи линии досега имах големия затрудния да мога да водя блогинки просто защото няма постоянен достъп до Internet но от миналата седмица съм вече в мое си жилище и отново съм глобален. Вероятно пак ще си дръпна сървърчето при мен за да не създавам излишни проблеми на хостинг доставчика ми така или иначе съм със оптична свързаност, пък и ми липсва експериментите с web услугите, да си чопля по машината ида гледам как се променя бързодействието и потреблението на ресурсите. От няколко дни замисля някоя интересна стаия вдъхновена от последните дивотии с които се занимавам но да видим какво ше род, че ми е доста натоварено cisco-то ми продължава с пълна пара ходим на англистики от фирмата, че да вдигаме ниво и свободното време отново клони към минус безкрайност.

Измина доста време от както писах за последно но съм ужасно зает с новата ми работа, все още не съм се устроил и не съм си пуснал Интернет на новото ми място. Отделно, че хостинга където се помещаваше малкия ми блог го сполетяха доста хардуерни неволи и имаше известен период в които не можеше да функционира поради невъзможността ми да имам физически достъп до машината. След дълго мислене взех решение да прехвърля блогчето ми на публичен web сървър, решение което изискваше много мислене и не особено лесно приемане. Все пак съм преди всичко системен администратор и това удря по гордостта ми много, но към момента нямам нито една подходяща машина на която да бъде хостнат сайта така, че преглъщам горчивия залък и продължавам напред. Като изключим този факт и факта че съм изключително лимитиран от възможност за манипулации по настройките на apache + php + mysql нещата не изглеждат чак толкова зле. Хората си правят редовни бекъпи имат си дизастър рековъри план имат си техническа помощ която може да помоля за помощ – както и се наложи за да импортират бекъпа на базата ми данни които е в скромния размер от около 1GB.  За сега има още няколко дребни настройки да се довършат но това ще е като имм нерви да се боря с тъпия cpanel 😆