Symfony sfWidgetFormSelect with disabled options

The sfWidgetFormSelect doesn’t provide ability to render disabled options. It’s rarely used feature of a HTML select element, but sometimes it could save your life :-) In fact, we can achieve this feature by creating our own widget, like one listed below, which inherits from sfWidgetFormSelect. This solution is inspired by problem posted on Symfony Experts.

Read more

NK Feed – widget nasza-klasa.pl do netvibes.com oraz iGoogle

NK Feed - widget nasza-klasa.plMam przyjemność zaprezentować widget mojego autorstwa: NKFeed, dzięki któremu na waszej stronie startowej netvibes.com możecie oglądać ostatnio dodane zdjęcia przez waszych znajomych z nasza-klasa.pl. Widget ten jest dostępny w ecosystemie netvibes pod linkiem: http://eco.netvibes.com/widgets/378267/nk-feed Widgetu można używać również w czytniku iGoogle.com

Zapraszam do używania oraz dzielenia się wrażeniami oraz ewentualnymi napotkanymi problemami.

Read more

Which convention is more common “static public function” or “public static function” (based on Symfony and Doctrine)

Few minutes ago Brent Shaffer asked on the Twitter

Which is more standard, “public static function” or “static public function”?

I was curious about it, so I’ve checked which convention is used in my favourite Symfony Project. Of course, I haven’t got enough time to check it manually, class by class, so I wrote simple bash script:

egrep "^[^\*/]*static.*function" /usr/share/php/symfony/ -rioh --include=*.php | sed 's/^\s*//g' | sort | uniq  -c | sort -r

The answer  for the Symfony 1.2 was:

685 public static function
181 static public function
27 static protected function
16 protected static function
16 private static function
11 static function
2 abstract public static function

I’ve done same thing for Doctrine ORM Project

egrep "^[^\*/]*static.*function" /usr/share/php/Doctrine/lib/ -rioh --include=*.php | sed 's/^\s*//g' | sort | uniq  -c | sort -r

and the result was:

78 public static function
6 static public function
6 static protected function

Now I can tell that “public static function” is more common, and by the way I use same convention in my classes :-)

Read more

Using XML and XPath in PostgreSQL database

Everybody knows, that PostgreSQL is one of the best open source RDBMS. The keyword here is “relational” database. For most purposes relational structure is okay, but sometimes we have to store highly complicated hierarchical data. Mapping such hierarchical structure to relational tables could be a real pain. Simple solution is to use a hierarchical markup language to present our data – XML. Luckily PostgreSQL provides a data type for storing XML documents. I was very optimistic about it, but it didn’t meets all my expectations.

Read more

My feelings about RuPy 2009

I just came back from the third edition of RuPy Conference, which take place in Poznań. As last year, it was very successful. There are my feelings about conference.

Read more

Cross-application partial w symfony

Ostatnio zetknąłem się z problemem wspólnych partiali dla wszystkich aplikacji w projekcie Symfony (dokładnie frontend i backend). Dokładniej, to te partiale były templatkami mailowymi, wysyłanymi zarówno przy zdarzeniach wygenerowanych w frontendzie jak i w panelu administracyjnym. Jako, że ponad wszystko cenię zasadę DRY (Don’t Repeat Yourself, czyli Nie Powtarzaj Się), chciałem, aby moje templatki były napisane raz, a używane z każdego miejsca w projekcie. Pewnym rozwiązaniem byłoby zrobienie symlinka: apps/frontend/modules/mails -> apps/backend/modules/mails i to działa, ale nie jest zbyt eleganckie. Z pomocą przyszła analiza kodu Symfony (dzięki Bogu, że jest Open Source:-)).

Read more

PHP 5.3 ujrzało światło dzienne

Dzisiaj światło dzienne ujrzała kolejna odsłona jednego z najpopularniejszych języków skryptowych – PHP oznaczone wersją 5.3. Wersja ta jest znacząca w rozwoju PHP, będąca swego rodzaju pośrednikiem pomiędzy wersją 5 a 6. Główne funkcjonalności wprowadzone w PHP 5.3 to:

Read more

Motocykle-zabytkowe.pl – nareszcie ruszamy z nową odsłoną

Motocykle zabytkowe - dawniej i dziśStrona o zabytkowych motocyklach http://motocykle-zabytkowe.pl, którą prowadzimy z bratem, istnieje w sieci już około cztery lata. W międzyczasie dwa razy zmienił się layout, a od poprzedniej aktualizacji minęło ok. 2,5 roku. Ostatnio postanowiłem odświeżyć serwis, wykorzystać open source’owego CMS’a, zaktualizować treści i zdjęcia oraz kupić nowy layout. Poskładanie wszystkiego w całość trwało niemiłosiernie długo, ponieważ ciągle brakowało mi czasu. Ale ostatecznie udało się i w niedzielę 24 maja rusza nowa odsłona motocykle-zabytkowe.pl :-)

Na naszej stronie znajdziesz przede wszystkim opisy restaurowanych przez brata motyckli (Junak, Jawa, Osa), porady techniczne, mnóstwo zdjęć (zarówno naszych motorów, jak i motocykli restaurowanych na zamówienie). Ciekawym działem jest też Buggy, czyli pojazd, który Piotr samodzielnie skonstruował oraz “Wasza Galeria”, do której zdjęcia swoich odrestaurowanych motorów nadsyłają internauci.

Zapraszam do odwiedzania i dzielenia się swoimi uwagami: http://motocykle-zabytkowe.pl

Read more

Zliczenie ilości commitów dla poszczególnych użytkowników SVN

Jeśli interesuje was ile poszczególni użytkownicy SVN’a wykonali commitów, to w głównym folderze repozytorium z poziomu linii komend Linuksa wystarczy wydać komendę:

svn log |grep "^r.*|.*" |awk '{print $3}' | sort |uniq -c

Powinniśmy otrzymać coś w tym stylu:

     83 janek
    177 franek
    221 heniek
      8 bolek
    485 marian

Dzięki temu, mamy pogląd na zaangażowanie naszych kolegów w rozwój repozytorium :-)

Read more

Live events w jQuery 1.3

14 stycznia została wydana wersja 1.3 jednego z najpopularniejszych frameworków javascriptowych – jQuery. Jak dobrą i wygodną biblioteką jest jQuery wszyscy czytający pewnie wiedzą. Jedną z ciekawszych nowości w jQuery 1.3 są live events.

Wyboraźmy sobie, że mamy do stworzenia kilka elementów i wstawienia ich w DOM. Jeśli te elementy mają mieć określone eventy, to przy każdym wstawieniu do drzewa DOM musimy im dodatkowo przypisać pożądane funkcje pod określone eventy. Bywa to momentami męczące i błędogenne i właśnie na tego typu operacje lekarstwem są live events.

Read more
older
newer
Back to top