normanos 2.0

pewnie nie wiesz ale mam to po komunie, gawiedziowstręt - źle się czuję w tłumie

Archive for the ‘PHP’ Category

Zmartwychwstanie CodeIgnitera?

Społeczność CodeIgnitera od miesięcy boryka się ciągle z tymi samymi problemami:

  • brak zespołu developerów
  • brak SVN
  • brak roadmapy
  • brak poprawek wielu znalezionych błędów
  • brak odzewu od autora tego frameworka

Parę dni temu autor odnalazł się ;) serwując wszystkim fanom bardzo obiecujące wiadomości:

  • koniec z jednoosobowym projektem, CI przejmuje zespół programistów z firmy Ricka Ellisa (autor CI)
  • jak zespół developerów to wreszcie SVN

Nadal nic nie wiadomo odnośnie przejścia na php5 (niestety, nie zanosi się na to). Mimo swoich wad CI jest nadal bardzo interesującym frameworkiem, z dużym “community”, pozwalającym na ekspresowe pisanie aplikacji w PHP. Jego braki skłoniły mnie do zainwestowania czasu w rozwój Rapide, ale o tym napiszę innym razem (jak będzie więcej konkretów na ten temat).

  • 6 Comments
  • Filed under: PHP
  • Wydajnościowy zawrót głowy

    Kolejne ciekawe porównanie wydajności różnych frameworków:

    • CodeIgniter (PHP)
    • Catalyst (Perl)
    • Django (Python)
    • Django (Python + Psyco)
    • RubyOnRails (Ruby)
    • Symfony (PHP)
    • TurboGears (Python)

    Patrząc od strony PHP:

    • CI - php4, Symfony - php5
    • dopalenie jakimś eAcceleratorem pewnie polepszyło by wyniki
    • Symfony ssie w każdym zestawieniu (Michał Mech będzie wkrótce na niego nawracał na swoim nowym blogu)
    • z testami tak to bywa, że są mniej lub bardziej wiarygodne, tudzież należy się wczytać w wyniki i odpowiednio je zinterpretować

    Jeszcze jedno zestawienie (po francusku), tym razem cakePHP, django i Ruby on Rails.

    Dla przypomnienia poprzedni znany test Symfony, Ruby on Rails i django.

  • 7 Comments
  • Filed under: PHP
  • Zapewne parę osób zdziwi się skąd nagle u mnie taka zmiana: CodeIgniter zamiast cakePHP. Cóż, w cakePHP ukończyłem jeden średniej wielkości serwis typu “społecznościowego” ;) Budowa tego serwisu pokazała mi jak bardzo cakePHP mnie… ogranicza. Co chwile nowe problemy, szukanie rozwiązania pokrętnymi metodami, ciągłe studiowanie dokumentacji. Do tego cakePHP w zasadzie zmusza do stosowania ActiveRecord (przymusu nie ma, a bez tego traci się prawie całą funkcjonalność związaną z obsługa bazy przez “kejka”): nie ma jak pytania z 4 tabel, 40 sqli na stronę, zabawa z modelami i $hasOne, $hasMany, $belongsTo, $hasAndBelongsToMany. To potrafi skomplikować nawet najprostsze pytania. Do tego dodajcie sobie ścisłe powiązanie modeli z bazą, reżim w nazewnictwie i już macie odpowiedź dlaczego mój pierwszy większy projekt w cakePHP pisałem ponad 1,5 miesiąca i dlaczego był moim ostatnim pisanym w “kejku” :)

    A Code Igniter? Cóż, już wcześniej się mu przyglądałem i teraz żałuję, że wtedy wybrałem CakePHP. CI to zupełna przeciwność “kejka”: łatwo, lekko i przyjemnie. Dowolność w tworzeniu relacji kontroler - model, żadnych z góry narzuconych reguł, niesamowita prostota i czytelność kodu, ogrom gotowych bibliotek i helperów, które można załadować w dowolnym miejscu wg. potrzeby, do tego logiczna i przejrzysta struktura. To wszystko razem powoduje, że pracę z CI można ruszyć “z kopyta”, szybko i sprawnie, a aby dorzucić swoją klasę czy też rozszerzyć istniejące wystarczy podstawowa znajomość PHP i 2 zdania wyjaśnienia w manualu - zupełne przeciwieństwo cakePHP gdzie trzeba dobrze poznać ten framework i jego ograniczenia.

    CI to nie framework dla wszystkich: na pewno jedni skrytykują go za PHP4 (aczkolwiek cakePHP też jest w PHP4), innym będzie przeszkadzała ta zupełna dowolność tego co i gdzie się “ładuje”. Ja wiem jedno: CI to framework właśnie dla mnie, to jego szukałem i z nim pracuje mi się super szybko i przyjemnie.

    Nie jestem teoretykiem (“Nie wiem, nie znam się, nie orientuję się, zarobiony jestem”), nie będę porównywał technicznie co ma jeden, a czego nie ma drugi. Jestem praktykiem, mogę porównać ile i w jaki sposób pisałem serwis na cakePHP, a ile i z jakim skutkiem w Code Igniter. I w tym moim prywatnym porównaniu CI miażdży konkurencję. CI mówi: hej normanos, jestem twoim frameworkiem :)

    Zainteresowanych odsyłam do:
    - strony Code Ignitera
    - polskiego kursu Code Ignitera autorstwa Riklaunima
    - screencastu: wprowadzenie do CodeIgnitera (.mov)
    - screencastu: blog w 20 minut (.mov)

  • 15 Comments
  • Filed under: PHP
  • Code Igniter 1.5.0 wydany

    Dzisiaj wydana została oficjalna wersja (po kilku betach) mojego ulubionego frameworka Code Igniter w wersji 1.5.0. Co nowego mamy w nowej wersji?

    Przede wszystkim została dorzucona obsługa cache klasy Database. Yea, to jest to co tygryski lubią najbardziej :) Strasznie mnie to cieszy bo już przymierzałem się do przerobienia mojej starej klasy (cache podobny jak w Open Power Driver) na zgodną z CI. Nie mniej małe poprawki mnie nie ominą gdyż nowa funkcjonalność nie przewiduje ustawiania cache na określoną ilość czasu (tylko system cache/czyść cache), a takiego sposobu często używam.

    DB utility to rozszerzenie klasy DB, teraz w bajecznie prosty (czyli zupełnie normalny dla Code Ignitera) sposób możemy zrobić sobie backup, eksport w CVS lub XML. Biblioteka DB została tez rozszerzona o transakcje oraz parę mniejszych funkcji i poprawek.

    Z nowych bibliotek warto też odnotować klasy UserAgent, Profiler i FTP, ponadto helper do emotek :), generowania tabel, kilkanaście poprawek oraz zmieniony sposób ładowania i rozszerzania bibliotek.

    Pełna lista zmian - changelog
    Nowy manual - user guide
    Nowa wersja - Code Igniter 1.5.0

    Biblioteka Riklaunima - Kurs Code Igniter

  • 0 Comments
  • Filed under: PHP
  • cakePHP: debug oraz redirect

    Dzisiaj 2 banalne rady, w zasadzie kwestie o których powinien każdy wiedzieć, jednak jak pokazują posty na forum.php.pl z zeszłego tygodnia wcale tak nie jest.

    Pierwsza sprawa to ustawienie stałej DEBUG (/app/config/core.php) na coś więcej niż 0 (sugeruje 2). Zaskakujący jest fakt, iż większość osób, które pisały do mnie na owym forum z prośbą o pomoc “bo w cake nic nie działa i nic się nie dzieje” miały DEBUG ustawiony na 0 (no to rzeczywiście nic dziwnego, że kawałka komunikatu o błędach nie zobaczyły ;) ). Swego czasu pytałem się też kilku “kejkowców” jak tam u nich wygląda sprawa z ilością pytań sql. I tu to samo: nie mieli pojęcia bo… w ogóle nie pracowali na włączonym DEBUGu. Nie powiem, jestem zdziwiony, że w ogóle tak mozna napisać całą aplikację :)

    Druga rada to też wynik postów na forum. Pamiętajcie aby po $this->redirect(’/kontroler/akcja/’); zawsze wstawić exit();! Brak exita to musi być dość powszechny błąd skoro nawet było o tym na piekarence :)

  • 2 Comments
  • Filed under: PHP