1. Ubuntu 8.04 - XFCE i Tilda 0.9.6 (konsola quake)

    September 14, 2008 by admin

    Tilda to konsola w stylu Quake idealna dla Gnome/XFCE. Dotychczas używałem Yakuake i jest ok, ale ja nie chciałem używac softu dla KDE ze wzgledu na minimalizację zużycia pamięci.Tilda znajduje się defaultowo w distro Ubuntu, niestety w wersji 0.9.5pre, która ma irytujący bug związany z brakiem focusa okna - uaktywniasz konsolę, ale piszesz nadal w poprzednio używanym oknie.Na szczęście bug usunięto w wersji 0.9.6, której niestety nie ma w repo Ubuntu.Na szczęście kompilacja nie jest problematyczna:$ wget http://downloads.sourceforge.net/tilda/tilda-0.9.6.tar.gz$ sudo apt-get install libglib2.0-dev libgtk2.0-dev libvte-dev libconfuse-dev flex libglade2-dev build-essential$ ./configure –prefix=/usr/local$ make$ sudo make install


  2. Symfony IoC container - sfIocPlugin

    by admin

    Implementując logikę biznesową mojej aplikacji nie mogłem już wytrzymać bez jakiegoś kontenera IoC. Marzył mi się IoC ze Springa. Nie znalazłem jakiegoś sensownego odpowiednika, więc postanowiłem zrobić własną implementację jakiejś jego drobnej części. A ponieważ jeszcze używam Symfony, utworzyłem plugin do tego frameworka.Jeśli jeszcze nie znasz IoC, to na początek polecam zapoznać się z definicją IoC.Odwiedź stronę projektu sfIoCPlugin


  3. Firefox - rekord Guinessa pobity

    July 6, 2008 by admin

    Ponad 8mln pobrań Firefoxa 3 w ciągu 24h - ustanowiony rekord. Gratuluję.


  4. PHP - wycieki pamięci

    by admin

    Ostatni release PHP (5.2.6) przychodzi z fixami cieknących błędów:- Fixed bug #43450 (Memory leak on some functions with implicit object __toString() call).- Fixed bug #41562 (SimpleXML memory issue)- Fixed bug #42369 (Implicit conversion to string leaks memory)- Fixed bug #44069 (Huge memory usage with concatenation using . instead of .=)Cieszy, ale też straszy.


  5. PHP6 dla aplikacji klasy enterprise

    by admin

    A g…. prawda. Kiedy czytam noty o funkcjonalności PHP6, a szczególnie z czego zrezygnowano, utwierdzam się w przekonaniu o migracji do normalnego języka programowania (Java/Python).Rozwijanie dużego softu przy użyciu PHP kojarzy mi się ze świadczeniem usług transportowych przy użyciu furmanki - niby zawsze możesz zwiększyć zaprzęg, ale gówna i tak się nie pozbędzieszCo mnie wkurzyło: - KISS - autorzy PHP są święcie przekonani, że rozumieją zasadę KISS (gdyby rozumieli, PHP nie byłby tak bałaganiarski) - zapomnijmy o named parameters - autorzy uważają, że to bzdura (naczytali się o KISS) - fatal errors nie będą wyjątkami - tu autorzy też nie są wyjątkowi (trzymają się KISS); z resztą co im to by dało, skoro informacje o błędach przy łączeniu przez ftp_open() trzeba zeskrobywać z ekranowych warningów - blok finally { } nie zostanie wprowadzony do sekwencji try..catch (KISS, bo wyjątki dla autorów to temat trudny przecież) - nie poprawią GC dla długo wykonywanych skryptów - zwalony unicode (uparli się na UTF-16) - nie uporządkują API standardowych funkcji (a mogliby - na rzecz pakietów obiektowych)Cóż, nie chce mi się stawiać PHP6 dla napisania website-u z pięcioma stronami. Java czeka.


  6. Symfony - Propel class table inheritance

    February 26, 2008 by admin

    Doszukałem się dość ciekawego rozwiązania realizującego dziedziczenie na wielu tabelach.propel behavior to extend classes with separate tables


  7. PHP 5.2.5 - zabawy autorów z glob()

    by admin

    Najnowsza odsłona PHP przynosi kolejny feature z kategorii niekompatybilności.Widocznie po rozwaleniu strtotime() od wersji 5.2.3 autorom było mało i postanowili dodać życiu smaczek zmieniając api funkcji glob().W przypadku nieznalezienia plików pasujących do wzorca funkcja glob() zwracała pustą tablicę, teraz zwraca false. Nie tylko generejue to warningi, ale w efekcie paraliżuje projekty, których core opiera się m.in. na tej funkcji.Poprawka jest szybka - zwrot z glob() wystarczy castować do tablicy.Do tego funkcja niemiłosiernie się wlecze. Prawdopodobnie efekt ten występuje tylko w połączeniu z safe_mode, ale jednak.Dziękujemy autorom za kolejny zestaw wrażeń. Za “float + locale z przecinkiem” - też.


  8. Gdzie się podziało OOP

    by admin

    Szukam softu, na którym postawię prosty site z możliwością dalszej rozbudowy. Wygodnej, prostej, logicznej rozbudowy. Chyba zaczynam żałować, że jestem programistą… ;)Drupal - index.php (fragment)[…]$return = menu_execute_active_handler();// Menu status constants are integers; page content is a string.if (is_int($return)) { switch ($return) { case MENU_NOT_FOUND: drupal_not_found(); break; case MENU_ACCESS_DENIED: drupal_access_denied(); break; case MENU_SITE_OFFLINE: drupal_site_offline(); break; }}[…]ezPublish 4.0.0 index.phpmarcin@debian:~/Desktop/ezpublish-4.0.0$ wc index.php1160 3798 40501 index.php marcin@debian:~/Desktop/ezpublish-4.0.0$ egrep “function [^(]+\(” index.php function eZUpdateDebugSettings() function eZUpdateTextCodecSettings() function eZAppendWarningItem( $parameters = array() ) function eZDBCleanup() function eZFatalError() function eZDisplayDebug() function eZDisplayResult( $templateResult ) function fetchModule( $uri, $check, &$module, &$module_name, &$function_name, &$params ) function eZSessionBasketDestroy( $db, $key, $escapedKey ) function eZSessionBasketGarbageCollector( $db, $time ) function eZSessionBasketEmpty( $dbTypolight 2.5 index.php:/** * Run the controller */public function run(){global $objPage;[..]CmsMadeSimple 1.2.3 - index.php:if ($page == ”){ global $gCms; […]Emulacja klasy Request:$params = array_merge($_GET, $_POST);View layer:$smarty = &$gCms->smarty;$smarty->params = $params;”P… nie robie” ;)


  9. Symfony - kandydat na najlepszy framework PHP?

    by admin

    Mija rok, a tu ciągle Symfony…Niedługo minie rok, od kiedy zacząłem zaznajamiać się z Symfony.Framework dostarcza znakomicie zrealizowaną implementację MVC oraz ORM oparty na Propelu(dostępna jest też wtyczka sfDoctrinePlugin dla Doctrine).Do tego czasu miałem dreszcze, kiedy przeglądałem rozwiązania open-source dla PHP. Obiektowość na poziomie PHP4 była rarytasem, nie wspominając o wielkich oporach korzystania z dobrodziejstw OOP z PHP5. Uważam, że Fabien Potencier dokonał przełomu.PropelWcześniej nie znałem tak elastycznego rozwiązania dla PHP, więc żyłem w świadomości, że najlepszy framework zrobię sam.Miałem już ciekawe rozwiązanie, w którym jednak najdotkliwiej kulał ORM. Na szczęście Fabien wydał stabilną wersję Symfonyi nie musiałem już tracić czasu na debug i poprawki. Z resztą i tak mój ORM miał się nijak do znakomicie zaprojektowanego Propela.Jego architektura umożliwia budowanie logicznie skonstruowanego API. Klasy modeli danych są początkowo puste, dziedziczącjednocześnie po klasach automatycznie wygenerowanych na podstawie schematu bazy danych. W tym miejscu programsta ma pole do popisu - zaczyna implementować interfejsy, przeciążać wygenerowane metody, pisać metody pomocnicze. Dodatkowo Propel umożliwia bardzo łatwe wykonanie transparentnej implementacji wzorca fabryki.O wykorzystaniu Propela jako podstawy do zaprojektowania dobrego API napiszę niedługo w innym wpisie.WydajnośćNajwiększe zarzuty do Symfony dotyczyły wydajności. Jednak framework opiera się na zasadzie cache`owania wszystkiego, co się da - począwszy od konfiguracji, aż po cache wygenerowanych klas automatycznych. Ponadto istnieje sporo wtyczek z działu “performance”. Na dokładkę Propel 1.3, w wyniku przejścia z Creole na PDO, osiąga wg benchmarków dwukrotny zysk wydajności w stosunku do wersji 1.2. Nie znam rozwiązania oferującego tak wiele i będącego jednocześnie wystarczająco wydajnym (no może Python + django, ale zostańmy przy PHP).Ciekawe wtyczkisfPropelActAsTaggableBehaviorPlugin - umożliwia tagowanie modeli danych, dodaje możliwość generowania tag-cloudsfPropelParanoidBehaviorPlugin - wyłącza rzeczywiste usuwanie obiektów poprzez wprowadzenie flagi deleted_atsfPropelVersionableBehaviorPlugin - dostarcza mechanizm wersjonowania modeli danychsfPropel13Plugin - umożliwia użycie Propela w wersji 1.3 bez konieczności zmian core-owych w SymfonysfModelTestPlugin - już nie będziesz miał problemów z uruchomieniem unit testów dla modeli danychPonad to testowałem wtyczki udostępniające gotowe rozwiązania, jak blog, prosty cms, forum (admin nie działał), newsy. Wszystkie (z małym wyjątkiem z forum) działały od razu i bez problemów. Jedyny mankament to brak spójności - wymienione pluginy nie korzystają ze wspólnych szablonów i wdrażając bardziej rozbudowany projekt trzeba zająć się szablonami dla każdego modułu z osobna.Więcej wtyczek znajdziesz na http://trac.symfony-project.com/wiki/SymfonyPluginsWarto odwiedzićSymfony framework po polskuWikipedia o SymfonyDokumentacja Symfony 1.1Symfony API


  10. Newsbeuter - czytnik RSS w konsoli

    by admin

    Kolejny mały program umilający życie :)Czytnik RSS pracujący w konsoli, a co równie ważne - umożliwia czytanie newsów z zabezpieczonych hasłem kanałów (wystarczy podać URL z loginem i hasłem).Konfiguracja jest prosta. Wystarczy utworzyć plik ~/.newsbeuter/urls i wpisać do niego co najmniej jeden adres. Bez tego pliku program się nie uruchomi.Newsbeuter ma intuicyjną obsługę wg standardu znanego z mutt. Cud, malina, miód. :)Opis programu na freshmeat.net (homepage nie odpowiada)



Buty Nike Adidas
kompresory Rihanna Kopiarki