Showing posts with label merb. Show all posts
Showing posts with label merb. Show all posts

Thursday, May 13, 2010

Przygoda z Merbem i jak przeszedłem na Sinatrę

Dzisiejszej nocy nadszedł czas, gdy miałem okazję zmierzyć się wreszcie z Merbem. Znany mi świat frameworków to raczej rozwiązania typowe dla Pythona. Byłem bardzo mile zaskoczony poznając świat frameworków Ruby.
Do tej pory nie było żadnego małego projektu, od którego można byłoby zacząć naukę. Stworzenie wyszukiwarki dla kampani 1% dla ZHR.pl było fantastyczną okazją do liźnięcia Merba.
Pierwszym rozczarowaniem, była walka z samym Merbem. Zainstalowałem nowe gemy Merba 1.1.0. Pamiętał, że jest coś takiego jak wersja flat aplikacji. Bardzo zależało mi na tym właśnie modelu. Już na samym początku trafiłem na bug Merba #712. To było niestety bardzo bolesne spotkanie z rzeczywistością, które pozostawiło mnie bez złudzeń - Merb nie jest już rozwijany.
Kolejną niemiłą niespodzianką było odpalenie mongrela. Na szczęście tutaj pomogło dodanie require 'mongrel' do skryptu merb w katalogu bin projektu i skorzystanie z tak zmodyfikowanej binarki. Co gorsza, wcześniej straciłem kilkadziesiąt minut na odpalaniu webricka, który w ogóle nie łykał urlsów.
Skoro już jesteśmy przy dodatkowym sofcie. Najnowsza wersja Haml 3.0.2 nie radzi sobie z renderowaniem SASS, który kończy się błędem jak w issue #163. Wszystko działa natomiast bez problemu z najnowszą wersją Haml z gałęzi 2. Aha. Najlepsze jest to, że istnieje masa nieaktualnej dokumentacji. Szczególnie bolesne gdy chodzi o włączenie SASS. Nawet dokumentacja SASS podaje jakieś lewe informacje. Dopiero ten wpis pozwolił mi prze konwertować SASS do CSS.
Takie przygody to chleb powszedni, jeżeli oprogramowanie nie jest rozwijane od ponad roku. Nie ma się co dziwić. Najgorsze jest dla mnie to, że w Rails 3 nie ma czegoś takiego jak merb-gen flat czy merb-gen very_flat. Można obciąć to co generuje Rails 3 ale to wciąż nie jest minimalna aplikacja z własną konfiguracją. Trochę pocieszyła mnie Sinatra. Kiedy w niej kodowałem to przypomniał mi się Pythonowy WerkZeug, z tym, że w przeciwieństwie do tego drugiego Sinatra działa :P Ciekawe, że Sinatra to DSL :) co daje bardzo miłe wrażenie kodowania w zetknięciu z nią :]
Kiedy przenosiłem aplikację z Merba na Sinatrę to właściwie jedyne co musiałem zrobić poza przekopiowaniem plików statycznych i widoków to zmienić rozszerzenie widoków HAML. Reszta sama poszła. Bardzo spodobał mi się minimalizm Sinatry, który w przypadku wyszukiwarki jaką piszę był w dziesiątkę! Niestety to nie to samo co modularny Merb, który jak trzeba było to poza wygenerowanie małej aplikacji potrafił i kapcie przynieść i kawę zaparzyć. Rails nie posiada tak rozwiniętej modularności w stopniu w jakim została stworzona w Merbie - a szkoda.
Jeżeli miałbym porównać świat frameworków Pythonowych i Rubowych to tutaj jest jak z językiem - Python prosto, Ruby z dużo bogatszym wachlarzem możliwości. Mam wrażenie, że deweloperzy Pythona skupili się na prostocie jako celu, gdzie w Rubym widać dążenie do niej ale przez wszystkie etapy ogólności, które widać w wielu narzędziach.
Na tle tych przygód jest jeszcze gdzieś Scala, która wydaje mi się tak zaawansowana, że aż nie widzę dla niej zastosowania w projektach, które tworzę. To jest chyba jakiś target heavy enterprise a ja jeszcze w tych kategoriach nie myślę. Szalenie podoba mi się tutaj Merb, w którym możesz zacząć sobie dewelopować aplikację od jednoplikowej wersji very_flat po typowo railsowym bufoniastym systemie układu katalogów skończywszy. Szkoda, że Rails 3 nie daje takiego wyboru. Na szczęście jest Sinatra :) jednak jak już pisałem, Merb był gdzieś pomiędzy i szkoda, że go już nie ma.

Saturday, January 24, 2009

Sprostowanie co do mojego merbowania

Pisałem jakiś czas temu (dawno) na moim blogu o Merbie, zachwycałem się HAMLem i SASSem (bo naprawdę byłem pod ich wrażeniem). Później zacząłem krytykować Railsy za ich kody i wykazywałem totalne niezrozumienie i krytykę wobec osób, które nadal programowały w Railsach.

W Merbie nie napisałem ani jednej aplikacji. Robiłem tyle co pisałem na Blogu. Generalnie templaty: HAML/SASS i odbieranie jakiś danych w kontrolerze. Na modele byłem zawsze za leniwy. Jeżeli ktokolwiek poczuł się urażony moją ostrą krytyką - to przepraszam. Niestety mój "perfekcjonizm" programisty dał mi się we znaki i zamiast krytykować Railsy zacząłem jak widzę krytykować osoby.

Do kodu Railsów nigdy nie zaglądałem i moje zdanie jest zdaniem wyrobionym na bazie idei obu projektów, celów im przyświecających oraz opiniom rzeczy osób programujący w Rails i Merb, których blogi czytam. Czepiam się nie funkcjonalności a jakości kodu, który w Rails jest podobno słabej jakości.

W Rails robiłem kiedyś jakiś tutorial oparty na scaffoldingu i generowaniu kodu :]

Urażonych przepraszam :) Mam nadzieję, że sprawę wyjaśniłem dość jasno. W Merbie i w Rails nie pisałem żadych dużych projektów. Bawiłem się nimi tylko jako frameworkami, gdzie w Merbie robiłem to tylko na bazie wysyłania formularzy i bawienia się HAML i SASSem a w Rails jakimś tutorialem w stylu "scaffolding" czy jakieś magiczne automaty :)

Saturday, December 20, 2008

web2py - wymiękłem

Jeszcze tydzień temu zachwalałem, w swojej prezentacji, na konferencji w Warszawie Pylons. Prezentowałem jego cechy, zalety oraz braki. No właśnie braki. Po obejrzeniu prezentacji Webhosting.pl o wdrożeniu Pylons oraz "Pylons - Demonstracja możliwości" Tomasza Nazara. Można je znaleźć na stronie materiałów PyCon2008 PL zaczęło do mnie docierać, że Pylons nie jest niczym - fenomenalnym.

Zacząłem analizować ... porównania. Porównania z innymi frameworkami. W Merb zachwyciła mnie modularność, wydajność i czytelność kodu. Przyznaję się. Nie napisałem w tym frameworku nawet pół linijki kodu. Cały podziw dla kunsztu przedkładam wyłącznie z wypowiedzi z jakimi spotykam się w sieci. Przeglądając pluginy znalazłem ciekawą opcję walidacji danych wchodzących do datamapeera jednak zabrakło mi gdzieś generowania formulrzy czy chociażby samej obecności admin panelu. Wiem, że ma być obecny w wersji 2.0 :) To cieszy. Być może coś przeoczyłem jednak przy moich obecnych obserwajach Merb w porównaniu do Pylons ma fantastyczne validowanie, z tłumaczeniami błędów i to w kilku języka... I do tego ta elegancja składni dekoratorów - miodzio.

No właśnie. Skoro już przy tym jesteśmy. Pylons tak jak merb nie posiada admin panelu. Tutaj na tle frameworków Pythonowych króluje Django. Nie ma mowy o scaffoldingu czy czymkolwiek takim. Nic z tych rzeczy. Modularność może cieszyć, jednak niestety nie znajdujemy mechanizmów do generowania formularz (znowu) ... Co prawda jest FormBuild ale wygląda bynajmniej podejrzanie, pomimo tego że jest opisana w PylonsBook, i jakoś ... nie o takim generowaniu marzę.

No więc może Django. Posiadania rozbudowane generowanie formularzy oraz admin panel. Pomimo tego nie dorasta do pięt Pylons w walidowaniu formularzy o braku możliwości testowania kodu (co często jest krytczne) nie wspomnę.
Sprostowanie
Od wersji 1.0 Django posiada możliwość pisania zarówno unittestów (z użyciem Pythonowej biblioteki unittest) jak i functional testów. Jest temu poświęcony poddział dokumentacji.

Co do Railsów - wydają się tutaj rozsądne. Posiadają na przykłąd mailer, którego na próżno szukać w jakimkolwiek pythonowym frameworku. Jest konsola (jak w Pylons), Scaffolding. Może brak admin panelu (chociaż może ktoś zna takowy), ale nie ma co narzekać: mailer, rack do testowania, migracje. HAML, SASS, spory wybór możliwych do podpięcia ORMów ... bomba.
A co gdybyśmy chcieli programować w Pythonie ? HAML i SASS oczywiście nie zagościł tutaj, mailerów nie można się spodziewać (choć szkoda, bo przydałaby się dobrze przetesowana biblioteka odporna na MailInjection) .

Wszystkie frameworki są do siebie jednak podobne. Generowany jest jakiś kod, używa się poleceń skryptowych i konsoli...
Dziś trafiłem na ten screencast pokazujący możliwości frameworka web2py



Nie wiem jakie macie podejście do tego co jest na nim pokazane. Wszystko co jest tam zaprezentowane to prawda, choć bardziej przypomina to "klikanie" aplikacji, niż jej tworzenie. Na prawdę. Nie otworzyłem ani przez sekundę edytora. Konsola też w gruncie rzeczy jest zbędna (chyba, że chcesz w niej odpalić serwer). Jest scaffolding (wow). Co prawda nie zauważyłem, żeby można było sobie wygenerować jego kod do pliku "od tak" jak w Rails, ale jest ! i to nie lada. Formularzy się "nie generuje" po prostu ... są :) i walidowanie jest ... bajecznie proste.
Wydaje mi się troszkę, że tak zautomatyzowany framework będzie podpadał pod zarzuty pod jakimi padał Django w ogniu Grono.net jednak ... to co dziś widziałem robi na mnie wrażenie. Web2Py to coś ... innego, coś co zmienia myślenie o tworzeniu aplikacji internetowych. Zobaczymy co jeszcze :)

Friday, November 7, 2008

Merb - i propaganda Railsowców

To już kolejny raz kiedy napatocza mi się ktoś ze znajomych, który mówi "Widziałeś Railsy jaaa - fantastyczne !", albo "Będę się uczył Railsów", albo "Właśnie skończyliśmy projekt w Railsach, który robiliśmy z kolegami.". Kurcze belek. Bawiłem się w Railsach, używałem też kilku innych frameworków takich np. jak CakePHP, CodeIgniter, Symfony czy Pylons a także jestem wciąż naocznym świadkiem wszystkich odkryć współlokatora, który zgłębia Django i nie rozumiem - czym się ludzie zachwycają. Rails - przereklamowany, z tego co czytałem, bezmyślnie zaimplementowany, niewydajny, posidający błędy framework, który jak widać pomimo swoich wad wciąż robi wielki show więc do listy dodałbym jeszcze podkreślając  po raz kolejny przereklamowany framework.

W przyszłym miesiącu premiera Merba. Śledzę jego karierę od czasu gdy wpisy zaczęły pojawiać się na blogu Zabiello, później zaimportowałem sobie kanał RSS z Merbist, przeszukałem sieć pod kątem materiałów na jego temat, pooglądałem slajdu z MerbCamp... i wciąż zastanawiam się co jest z ludźmi zafascynowanymi Railsami nie tak.  Żadne argumenty nie przemawiają do osób, które zamierzają się uczyć Railsów, aby spróbować z Merbem. Nie ważne czy powiem: "jest szybszy", "jest przemyślanie zaimplementowany", "uczy się na błędach railsów", "jest napisany przez fachowców od Rubego" - argument zawsze jest ten sam: "Do Railsów jest więcej książek, Railsów jest się łatwiej nauczyć". Ludzie - co z tego, że jest do nich 2,5 miliona książek. Do Merba jest kilka 5,3 GB filmów. Natrafiłem również na ciekawy - wyglądało na to całościowy - kurs Merba [http://merb.4ninjas.org/] choć jeszcze nie dokończony  - cóż więcej można chcieć ?

Nadal będę próbował propagować ideę Merba, przekonywać do niego railsowców. Może zrobię do niego slajdy. Uważam, że jest to fantastyczny framework. Używałem w nim wyłącznie templatów i kontrolerów, ale już samo HAML i SASS mnie tak użekło iż stwierdziłem, że ten framework to numer 1 :) i basta !

Z pozdrowieniami dla wszystkich railsowców jadących wciąż lokomtową parową w czasach ażewe :) Merb propagator :P