break
сеп 20

През последния месец работя върху нов проект – система за автоматично публикуване на статии.
Целта на този проект, е да може централизирано да се управлява съдържанието на различни блогове. Системата автоматично публикува, предварително въведени статии, в избрани от потребителя блогове и в избрано от потребителя време. Към този момент има възможност за публикуване в: wordpress.com, blogger.com, livejournal.com. Системата има възможност за публикуване в блогове разположени на собствен хостинг и базирани на: WordPress, Joomla, Drupal.
След като една статия бъде публикувана, има възможност за автоматично създаване на линкове към нея от различни социални мрежи: twitter.com, facebook.com, obiavi.biz, trohi.com, dao.bg.
С тази си функциалност, системата е подходяща за поддържане на мрежа от сателитни сайтове/блогове. Повече информация за проекта, можете да намерите на този адрес: система за автоматично публикуване на статии.
В бъдеще се очаква да бъдат имплементирани още възможности, но какви и кога все още не мога да кажа.
Всякакви коментари и забележки са добре дошли :)

фев 20

After upgrading to Ubuntu 9.10 Karmic Koala, I found that Eclipse did not work properly. There were buttons that would not click, the update/install new software window would be blank …

This blog provided solution to the problem:
http://www.economyofeffort.com/2009/10/upgrade-to-karmic-eclipseaptana-ui-woes/

сеп 29

През изминалата седмица бял свят видя последния ми проект: Портал за недвижими имоти. В работа, по този проект за имоти, преминаха последните два месеца. За реализацията му използвах CakePHP. Тази среда за разработка ми улесни много работата, май това е единствената среда, която може да ме накара да пиша на PHP. От техническа гледна точка, написването на този портал за имоти не представляваше особена трудност, но определено беше забавно :) .
От към функционалности се стремяхме да задоволим повечето желания на агенциите за имоти. Порталът предлага свободна регистрация за всички. Поддържат се два типа потребители: агенции (за имоти) и частни лица. Съответно двата типа потребители имат различни опции в портала. На агенциите се предоставя възможност да публикуват неограничен брой обяви за имоти, а също така и напълно безплатно 15 ВИП обяви. Всяка агенция има също два типа потребители, които могат да ползват регистрацията и. Мениджър на агенция и агент на агенцията. Мениджърът има права да променя профила на агенцията, да добавя и изтрива агенти и да контролира обявите на агентите. Също така мениджъра има достъп до статистическа информация за всички обяви на агенцията. В статистиката могат да се провери съотношението на активни и неактивни обяви в портала като цяло, кой агент, колко обяви има и колко от тях са активни. Също така се предлага информация за това коя обява, колко пъти е била преглеждана. За визуализиране на графиките използвах Open Flash Chart, работата с тази библиотека е лесна, благодарение на съществуващия ‘helper’ за CakePHP. Агентите също имат достъп до статистика, но само за своите обяви.
Втория тип потребител ‘частно лице’, има сходни правомощия като агента, само където не е част от някоя агенция.
Въпреки че порталът е нов проект, той се явява наследник на други два сайта за имоти: http://imoti.obiavi.biz и http://359estates.com. Надявам се подобрената визия и новите функционалности да се харесат на потребителите и да използват напълно безплатния портал за имоти.

сеп 20

В последно време все повече се убеждавам че тези две понятия са неразривно свързани. Последното събитие което пак ме изуми е обработката на снимки в този език. За обработка на снимки се използват готови функции, примерно: imagegif, imagejpeg, imagepng. Като резултат се връща снимка в съответния формат. На тези функции може да се даде коефициент за качество. В PHP 4 за всяка се използва скалата от 0 до 100. До тук всичко е добре. Но в PHP 5 се решава, че това за всички функции да се използва една скала е лошо нещо. За да се разнообрази живота на програмистите се решава imagepng да използва скала от 0 до 9. Подобни хитрости, заради които се налага да губя доста време, докато намеря къде точно е проблема, са на път тотално да ме откажат от този език.
Маи е време да послушам съвета на един приятел и да мина на RoR.

сеп 6

За един проект ми се наложи да транслитерирам url-та. За целта използвах този версия на транслитерация от кирилица на латиница: как се транслитерира в Google. За осъществване на самата транслитерация използвам ето тази функция:

function transliteration ($string) {
$table = array(
'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d',
'е'=>'e', 'ж'=>'j', 'з'=>'z', 'и'=>'i', 'й'=>'y',
'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o',
'п'=>'p', 'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u',
'ф'=>'f', 'х'=>'h', 'ц'=>'c', 'ч'=>'ch', 'ш'=>'sh',
'щ'=>'sht', 'ъ'=>'a', 'ь'=>'', 'ю'=>'yu', 'я'=>'ya',
);

return strtr($string, $table);
}

Ако на някои му се стори полезно, да не се притеснява, а да почерпи по бира ;)

май 13

Февруари е най-гадния месец!
Освен че е студено, дните му се менят постоянно. В повечето години са 28, обаче на всеки 4 години стават 29. Като от тази логика се премахват годините в които минаваме в нов век или пък са се събрали 4 века накуп.
Общо взето кофти работа е тоя февруари, как да не го мрази човек.
Ето една проста проверка, която ни връща като резултат броя на дните за месец февруари за избрана година:

(((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 )

апр 13

Нещо което много ме изнервя при работата с CakePHP, това са whitespace след края на файла. В много случаи могат да доведат до грешки при изпълнението на скрипта. Типичен пример е при генерира на RSS. При наличие на интервал в края на модела, за който се генерира RSS, cake-a добавя интервал в началото на xml-файла, което го прави невалиден.
Наскоро попаднах на един полезен скрипт, който помага за този проблем: whitespace.php . След изпълнението на този скрипт, получаваме списък с файлове, в които има наличие на въпросните интервали.
На мен лично този скрипт ми спести доста време.

дек 11

Миналата седмица се сблъсках с доста сериозен проблем, при работа с Bake .
Вкъщи на моето Ubuntu 8.10 вдигнах един XAMPP сървър и започнах един нов проект на CakePHP.
Бях неприятно изненадан когато при опит да създам нова ACL таблица, Bаке-а ми изгърмя със следната грешка:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /opt/lampp/htdocs/cakephp/cake/libs/model/datasources/dbo/dbo_mysql.php on line 119

Проблемът се оказа че Bake-a не успява да намери MySQL съвъра. За да реша този проблем създадох 2 линка на файла ‘mysql.sock’ .
Първо добавих един линк в /tmp директорията:

sudo ln -s /opt/lampp/var/mysql/mysql.sock /tmp/mysql.sock

След това добавих директория mysql в /var/lib

sudo mkdir /var/lib/mysql

В новосъздадената директория добавих линк към mysql.sock

sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/lib/mysql/mysql.sock

Това разреши проблема и успях да използвам безпроблемно Bake-а :)

Happy Baking

апр 20

От известно време ми се налага да работя с този PHP framework.
В общи линии ‘кекса’ се представя сравнително добре, лесен е за научаване (стига да сте запознати с MVC модела) и лесен за работа. Според мен е доста подходящ за малки (и не чак толкова малки ) приложения. Поддръжката е сравнително лесна и благодарение на множеството готови plug-in, можете да добавяте нови функционалности към вашето приложение.

С настоящия пост искам да ви запозная с необходимите стъпки за конфигуриране на CakePHP и Apache частност WAMP. Прочети целия текст »