Не лошата алтернатива Kohana

Наскоро се запознах отблизо с Kohana, като реших да реализирам един проект на нея. Впечатленията ми са повече от добри. Фреймуоркът има като основа CodeIgniter, но с някой основни разлики.

Първата и най-съществената от които е, че Kohana е Strict PHP 5, което аджеба за мен поне е нещо нормално. PHP 4 одавна е в миналото. Но пък опцията на CodeIgniter да „върви“ безпроблемно и на сървър, който има PHP 4 не е за подценяване.

Още разлики можете да прочетете тук. Не мисля да ги превеждам или преразказвам, защото са достатъчно добре описани.

Това, което не е споменато е, че Kohana върви с няколко модула, един от които е Auth. Имах известни проблеми с него, но в крайна сметка всичко се оказа повече от розово и го използвам напълно безпроблемно.

Друго нещо, което ми направи впечатление е, че Kohana е малко по-бавна от CI, като се и разгледах в google, видях, че са направени доста тестове, които потвърждават мнението ми. Но очаквам това да се промени в бъдеще.

Kohana има много добра поддръжка на мултиезични сайтове. Наистина! Тук поне за мен бие отвсякъде CodeIgniter.

Най-хубавото от всичко е, че обществото, което развива фреймуорка изобщо не спи, ами работи по нови версии. До колкото прочетох до края на следващия месец ще излезе нова версия с доста подобрения. За съжаление обаче CI се движе много много бавно в разработката, като определено има какво да се иска от него.  Добро утро! Събудете се драги мои от EllisLab!

В заключение смятам да кажа, че ще използвам Kohana със сигурност! Предпочитам я за проекти със средна сложност, като CI оставям за малките. Съветвам ви да я поразгледате и пробвате, защото наистина си заслужава. Като поне за мен е добра алтернатива на Zend в „средния клас“, тъй като Zend ми идва в повече за средните проекти, като разбира се си остава ненадминат за по-мащабните проекти.

Прочети цялата публикация



И един ден Zend и CodeIgniter заживяха заедно…

Неволята, а? :D Да де… същото. Малко се чудих това дали да го блогвам или да не го блогвам, но реших да го блогна! За какво става на въпрос. Ще ви разкажа една много поучителна история за фреймуорци (тая дума няма множествено число), феи, дракони и още нещо.

Стига толкова лигавщини. Това, което направих за един от проектите, които наскоро поехме е да накарам CodeIgniter и Zend да поживеят заедно на един сървър. Не беше трудно в интерес на истината. Единия отиде в една папка, а другия започна да не му обръща внимание. Да де то хубаво ама сега ще питате, то и аз бих питал, защо са ти и двете? Така… тук идва интересната част с обяснението, което и на мен ми е интересно даже. Клиентите ни по никакъв начин не разрешават сайта да се пренаписва, било то и безплатно. Защо? Ами не знам… убеден съм че и те не знаят. Та така стигнах до решението, да използвам някой от възможностите на според мен най-добрия PHP фреймуорк – CodeIgniter съчетани със сложността и неорганизираността на Zend. Не че Zend е лош фреймуорк, просто в случая е използван по неправилен начин. Кода е като на Женския пазар, като има намаление. Лудницата е пълна.

Та… за да заживеят заедно идеята беше да използвам Zend като основа, а CodeIgniter за всичко ново, което ще се допълва в проекта, като идеята ми е един ден всичко да мине на CodeIgniter и да отстраня Zend-а. И това ще стане бавно, но сигурно. Знам, че това не е най-доброто решение, поне на пръв поглед. Ама ако искайте вярвайте бързодействието на сайта скочи драстично, след като CodeIgniter пое съвсем малка част от задачите изпълнявани от по-големия му брат. Следващата стъпка е да изолирам Zend-а да работи само като административен панел, а CI да поеме целия frontend. Хубавото в случая е, че базата данни е на много добро ниво и не се налагат да се правят някакви основни промени.

Предполагам не ви е минавало през акъла да правите подобни глупости и нормално и на мен не ми беше минавало. Но пък в един период от време, когато ти се налага да сменяш нещо наглед изключително просто и отделяш по час, два, че и повече понякога просто решаваш да намериш друго решение. В един момент го бях намерил за повечето от нещата, които се изискваха, но като цяло мудното държание на Zend, огромното натоварване на сървара и сложността за поддръжка не бяха изгодни нито за мен нито за клиентите ни. Нямаше печеливши. Ние не можем да работим по други проекти, защото пряко се занимаваме с елементарни действия, а клиентите ни чакат доста повече време от необходимото за да получат желаните промени. Някой ден ще ви публикувам един snippet да видите за какво иде реч, но не го правя само и единствено от уважение към фирмата изпълнител и поради факата, че познавам няколко човека от там. Иначе момчетата сигурно си поддържат някак си кода, честно казано сигурно събират цял екип за да редактират 2-3 реда текст. Но това изобщо не е моя работа, най-вероятно е фирмена политика, нали знаете как при „големите”?

Важното е, че ако решите да сплитате PHP frameworks искам да ви кажа, че изобщо не е трудно. Едва ли може да срещнете някакви кой знае колко големи трудности. И в случая е важен замисъла, който при мен е повече от ясен, ако нямате замисъл, то тогава не го правете. И пак казвам, не това е най-доброто решение и не го препоръчвам на никой да го прави, но е единственото на този етап :)

Иначе напоследък се губя малко от бойното поле поради ред причини. Най-вече свързани с университетски препятствия. Уча сериозно за предстоящи изпити. Даже и в офиса не ходя. Но за сметка на това успешно минах първия изпит с отличен. Гледам повечето задачи да ги отлагам, но не може всичко, защото в един момент ще се окаже, че трябва деня да е 36 часа за да успявам да си върша работата. Пловдив също да ме чака тази седмица, връщам се малко по родния край за ден два може би, колкото да се разведря и разсея малко. Пък и да видиме какво прави града с най-хубавите жени и бира, не че пия алкохол де, но не може да не се отбележи :)

Забравих да спомена, че си имам facebook юзърнейм и ще се радвам ако искате да станем приятелчета :)http://www.facebook.com/veselin

P.S Последното може и да съм го споменал вече :D

Прочети цялата публикация



Предстоящи проекти, идеи за реализация и…

Love php

I <сърце> PHP :D

Първо малко за конкуренцията, защото в момента темата ми е много на сърцето. Напоследък се запознавам с все повече хора, които са ми пряка конкуренция и с които чупим от една пита. Повечето от тях ги познавам или само виртуално или пък съм се запознал с тях благодарение на някой блог, форум и прочее. Какво забелязвам – въпреки, че сме конкуренти всички са много любезни, мили и отзивчиви. Което е супер! Честно казано, ако всичко беше съвсем истинско щеше много да се радвам. Обаче не е. В интерес на истината, аз не възприемам конкуренцията като нещо лошо. Напротив – това са хората, които ни карат да работим по-здрави, да ставаме по-рано и да правим по-добри проекти на по-изгодни цени за по-малко време. Конкуренцията е нещо хубаво! Не мога да разбера обаче, защо някой хора не могат да го проумеят и до ден днешен. Не искам да бъда обичан от всички, знам и че не може – винаги ще се намерят хора, които да са недоволни, сърдити и прочее. Обаче защо тези хора не искат да се учат от чуждите грешки, да споделят чуждия опит и да научават нови неща, поднесени на тепсия? Не мога да го разбера. В смисъл и аз като бях на 4 години си мислих, че всичко се върти около мен и, че единствено аз съм най-важния и моето мнение е най-правилното и че няма какво да науча от останалите, но на 5 вече мислих другояче, та така и до ден днешен. 1+1 винаги ще прави 2 и винаги ще е по-голямо от 1. Да де, в най-общия смисъл, знам, че може да докажете и другото, обаче говоря принципно. Изключително много уважавам хората, които са комуникативни, които постоянно искат да научават нови неща – да правят нови контакти, да работят заедно по различни съвместни проекти, да се учат и така нататък. Евала! За това тези хора ще се развиват, а останалите ще тъпкат на едно място. Наистина искам от сърце да ви кажа, драги колеги, че ви уважавам страшно много и че благодарение на вас съм научил повече, от колкото съм мислил, че ще мога да науча някога. Имено заради това съм готов за всякакъв вид срещи, конференции, размяна на контакти и прочее. Отворен съм и за всякакви въпроси – ще се радвам да отговоря, да разясня, да попитам и аз ако не знам да науча, да почерпя от опита на другите.

Стига толкова с личните помисли. Имам някой други малко по-важни неща, които искам да кажа. Първо – до края на месеца, или поне до средата на другия в най-лош случай, надявам се, пускам социална мрежа за програмисти, тип Digg. Защо? Ами за да се съберат всички, или ако не всички, то поне повечето блог постове на български език, пък било то и на английски, ако някой сметне за достатъчно полезни и ги добави, на тематика програмиране. Дано идеята ви харесва. По този повод искам да кажа, че търся съмишленици – администратори, модератори, хора, които имат желание да помогнат с популяризирането на мрежата и прочее. Нека си го направим така, както на нас ни харесва, и така както ще ни бъде полезно и приятно за да го използваме.

Второ – проектът, който имам на ум от преди 7-8 месеца, най-после се реших да го реализирам. Започвам да пиша php книга за начинаещи + video уроци, които ще се разпространяват напълно безплатно и свободно, така че, колкото се може повече начинаещи програмисти да успеят да навлязат в уеб програмирането. Основната ми идея е да се направят поне 100 бройки от нея, които да изпращам на всички желаещи и нуждаещи се от тях, като към книгата ще върви и дискът с видео уроците. Спонсори не търся – всичко разноски по разпространението, напечатването и изпращането ще ги поема безусловно. С невероятната морална подкрепа на екипът с който работя – Уеб Дизайн България се надавам да реализираме желанието ми. Защо го правя? Правя го поради 2 причини – обичам Php от сърце и искам да помогна на колкото се може повече хора. Всичко в нея ще е тип aboslute beginner т.е. започва се от A и Б и се достига до малко по-сериозната част на езика.

Призивът към всички, които желаят да помогнат е следния -> търся хора, които обичат гореспоменатия език за програмиране, имат с какво да помогнат на хората, имат добри познания по него и най-най-вече – искат да ги споделят. Възнаграждение не мога да обещая, единственото, което мога да направя е да ви включа в бъдещото издание като автори и кратка информация за вас в началото на книгата. Всичко го правя с благотворителна цел – за всеки, който иска да научи езика, но няма достатъчно финансови ресурси. Имено заради това и всичко ще е Open source, така да се каже :D като имам идея всяка от бъдещите глави да се пуска в момента на написването и да се допълва / редактира/ преправя от всеки, който има желание – така, че да се получи един уникален ресурс написан от всички нас. Искам да се включат много примери от реалния живот, които да бъдат полезни на бъдещите уеб програмисти, а не просто разни там абстракции, които я ползват някога, я не.

За видео уроците -> търся водещи. Хора, които умеят да говорят и да пишат едновременно :D Хора, които имат желанието да отделят нужното време за проекта. Идеята е да има поне 2ма „говорители“, за да се получи нещо по-интересно, интерактивно и забавно. Единственото ограничение, което трябва да наложа за съжаление е, тези хора да се от София, защото не знам как иначе ще успяваме да правим сесиите. Все пак съм отворен за предложения, критики, идеи и т.н.

Проектът е мащабен и няма да избързвам с направата му, защото предпочитам да стане по-бавно, но по-качествено. Спешна работа нямаме :)

Та така – толкова от мен, наистина, всеки който има желание за гореспоменатите два проекта да свирка, по мейл veselin ат veselin точка bg, 0883 452 985, скайп veselin.us, в някоя от лекциите по Джава в университета (Марио, за теб говоря! :D ), в офиса ни на ул. „Брегалниця“ 57, гр. София.

Благодаря ви много, че ме търпите и че ми четете глупостите, за мен означава много ;-)

Прочети цялата публикация



Начинаещи: require() и include()

Така… това го пиша, защото в последните две седмици ме попитаха 3 пъти за това нещо и явно, че хората не го знаят или по-скоро не правят разлика между двете функции. Разлика има и то съществена. Това, което прави двете функции толкова различни, че require() генерира fatal error, а include() ще генерира warning. С други думи при първото положение страницата няма да се отвори, а при второто ще се изпише само грешка на съответното място и останалата част от страницата ще се покаже. Практиката е следната, всички файлове, коит са от съществено значение за страницата, например бази данни, логини, пароли и всичко, без което сайтът ви не може да съществува и функционира правилно, то тогава се използва require(). При всички останали положение include(). Да речем че имате скрипт, който ви показва последните tweetове, за него ще е добра практика да го include-нете, защото и без него сайтът ви ще е ОК. Но ако имате db.inc.php съдържащ функции за връзка с базата данни, най-добре би било да го require()-нете. Просто е, макар и реално начинаещите да не виждат голям смисъл в тази разлика, но с практиката ще се убедите, че и двете функции са полезни и най-вече на места изключително нужни.

N.B.!! Във всички версии преди 4.0.2 всички файлове които се require()-ват трябва да са достъпни, без значение дали редът се изпълнява или не се изпълнява. Да речем, че имате IF условие, което не е истина в дадение случай, но въпреки това, файлът, който require()-вате трябва при всички положения да е достъпен иначе ще получите fatal error и страницата няма да се изпълни. След 4.0.2 всичко вече е ок, но ако при някакво стечение на обстоятелствата пишете на по-предишна от гореспоменатата версия, го имайте на предвид.

Малко в детайли и тънкости – include() е по бърз от двете функции, но пък може да ви създаде големи главоболия. Аз лично съветвам да се ползвате require() навсякъде, където е необходимо, което е в 90% от положенията, като не се притеснявайте чак толкова много за бързодействието, разликата е минимална.

Между другото днес официално направих първия проект – визуалната част на клиентски сайт посредством CodeIgniter и останах колкото доволен, толкова и разочаровн. Доволен от бързината на писане на код и от сравнително големите възможностите на фреймуорка. Разочарован – защото борбата с url адресите е повече от сериозна и се налагат доста хватки за да постигнете желания ефект, който цели един SE оптизатор – като при едно положение така и не разбрах как точно да направя това, което искам, освен на ръка, което си е… недопустимо, защото може и да не знам кое точно трябва да се пренапише в определената ситуация, и то не от незнания, а от динамични възможности на cms-а, а и във форума на CodeIgniter не се намери, кой да ми помогне, май сериозни ги затапих и хвърлих в размисли :D . Общи впечатления и оценка: 5 от 6, наистина има какво още да се желае за да го провъзглася за ултимално решение.

И един въпрос към всички хостинг доставчици – как може да няма един Ruby хостинг в България?!?!?!?!?!?!?!? В праисторическата ера ли живеем или е 2009та година??

След малко по сериозно ровене и малко повече търсене (по блоговете, в серп нищо не се намери) се оказа, че icn и space.bg поддържат Ruby. С извинения за прибързаните изводи! Утре земем от space.bg пък да видим…. Благодарение на този чуден сайт се образовах, за което благодаря :)

Прочети цялата публикация



PHP функции в JavaScript

phpjs

Ако сте PHP разработчик, то най-вероятно мразите JavaScript :D Шегувам се, добре де не съвсем, защото аз лично го мразя. Просто не е това, което искам да бъде. Както и да е, това е тема, която няма общо с това, което искам да кажа. Важното е, че вече всеки един PHP developer може да използва някой (на този етап са 408, което е около 81%) функции на PHP в JavaScript приложенията си. Пълен списък може да намерите тук, като в списъка са включени md5(), file_gets_content(), utf8_encode/decode, mktime() и още доста. В момента се работи по някой пробно, а други пък чакат да бъдат направени, но най-вероятно всички функции на PHP ще бъдат включени рано или късно, поне организаторите са си го поставили за цел. На страницата на PHP JS може да намерите и различни пакети, включващи различни функции, като имате възможност да си правите свои собствени такива.

Честно казано цялата идея и концепция ми е доста интересна. Най-вероятно ще се възползвам от някой от възможностите, които се предоставят, но гледам малко негативно на нещата, от гледна точка на бързодействие, като се има напредвид, че една част от функциите имат по-добра алтернатива. Но ще видим… :)

newcaptchaapproach_small

Между другото , прочетох някъде за интересна идея как да се отървем от спама без да ползваме капча. Идеята беше следната -> правите едно поле, което е скрито, даже е добре да има име от сорта на URL или e-mail или нещо такова, което обикновено се използва винаги от роботите. След което, като правите проверка, ако някой е писал нещо в него просто не събмитвате коментара и готово! Обаче практически няма никаква гаранция, че няма да бъдете наспамени пак, но пък вярвам, че по-голямата част от „боклука“ ще се „изхвърли“ по този начин. :)

Прочети цялата публикация