Thursday, November 27, 2008

Ruch na pylonshq.com

Od czasu do czasu wpadam na http://www.pylonshq.com/ i buszuję odrobinkę po stronce aby zobaczyć co się pozmieniało :) W sumie ruch jest duży, którego dnia bym nie wszedł wciąż pojawiają się jakieś nowe uaktualnienia lub komentarze do artykułów. PylonsBook od jakiegoś czasu jest już zamknięte, a treść wysłana do wydawnicta. Ostatnio pojawiło się sporo propozycji buttonów i logo Pylons dostępnych na stronie: http://wiki.pylonshq.com/display/pylonscommunity/Pylons+Logo

Myślę, że widać iż wydanie 0.9.7 oraz .0.9.8 zbliżają się dużymi krokami. To cieszy :)

Wednesday, November 12, 2008

Google gadgets - po prostu strona

Dzisiejsze popołudnie poświęciłem na przyjżenie się ciut bliżej tworzeniu gadgetów dla gmail. Na starcie wziąłem pod lupę rtm.xml - gadget Remember The Milk. Okazało się, że jest to plik XML opisujący kilka własności obiektu, który pojawi się w panelu gmaila z linkiem do strony wstawianej "w ramkę". Tak więc wszystko opiera się na napisaniu normalnie działającej witryny i włożenia jej w "ramkę" gmaila. :) Super !

Kilka ciekawych informacji można znaleźć na http://code.google.com/apis/gadgets/docs/reference.html lub wzorować się na innych :] Tak czy owak - rozwiązanie jest genialne w swej prostocie i ogranicza nas wyłącznie nasza wyobraźnia i umiejętności towarzyszące naszej personie przy tworzeniu stron internetowych.

Tuesday, November 11, 2008

Jython - przydatny, bez szału

Wczoraj musiałem napisać malutką, multiplatformową aplikacyjkę. Chodziło o niewielką ikonkę w trayu, podpięte do niej menu z opcją "&Zamknij". Ikonka w zależności od zawartości pewnej witryny miała się zmieniać na kolorową lub czarnobiałą.

Z jednej strony chciałem napisać to w Pythonie: przenośność, prosta składnia, czytelność - po części znane mi biblioteki. Z drugiej nie chciałem użerać się z wxWidgets, którego w ogóle nie znam. Muszę przyznać, że moim faworytem do interfejsów jest zdecydowanie Java. Już samo Swing jest bardzo dobrze zaprojektowanym rozwiązaniem jednak jeżeli dorzucić do tego możliwość pisania kodu z SWT - bije chyba wszystkie inne rozwiązania na głowę. Ponieważ zależało mi na estetyce aplikacji pod wieloma systemami - Java wygrywała przede wszystkim na tym polu.

I tutaj pojawia się właśnie pomysł na użycie jythona. Idea okazała się bardzo prosta. Używanie składni Pythona do modułów Java. Na początku bardzo miłe zaskoczenie:

from org.eclipse.swt.widgets import *

po prostu szok. Normalna biblioteka Java a ja tu sobie ją importuję po pythonowemu. Super ! Zaraz potem mogłem sobie zrobić:

import urllib

i wszystko działało :) Zmiana implementacji pojawiła się przede wszystkim przy listenerach - gdzie nie mogłem tworzyć klas "in place" jak w Javie, ale musiałem tworzyć własne - dziedziczące po tych mi potrzebnych. Jednak to raczej wpłynęło na Pythonowo rozumianą czytelność programu. Co do struktury początkowej ten kto pisał w SWT na pewno się połapie:

class App(object):

    def __init__(self):

        """Główny kod aplikacji."""

        self.display = Display()
        self.shell = Shell(self.display)

self.setTrayIcon()
self.createMenuItems()

        self.timer = Timer(self.display, self.image, self.tray, self.trayItem)
        self.timer.checkIsUndoneTickets()
        self.display.timerExec(5 * 1000, self.timer)

        while not self.shell.isDisposed():
            if not self.display.readAndDispatch():
                self.display.sleep()
                
        self.display.dispose()
        
if __name__ == '__main__':
    App()

Moim zdaniem banalne i genialne zarazem :] Właściwie - to samo co w języku Java tylko zapisane z użyciem innej składni.

Niestety nawet w tak banalnym programiku odczułem kilka podstawowych rzeczy. Na początku chciałem użyć Timera Pythonowego. Nie mógł on jednak komunikować się  z wątkiem głównego programu - SWT. Cóż, zmuszony byłem wykorzystać ten SWTowy.

Kolejna rzecz. Mój program wymaga otworzenia domyślnej przeglądarki systemu. Po trafieniu na moduł webbrowser Pythona już się cieszyłem, gdy zauważyłem, że niestety w Jythonie jest on niedostępny. Tak więc zmuszony byłem po raz kolejny użyć Javy.

Desktop.getDesktop().browse(URI(ratunkuAdminURL))
Dodatkowo powyższy kod działa tylko po części tak jak chciałem. Otwiera mi firefox-a w systemie, w którym domyślną jest Chrome. Powyższy kod bazuje na składnikach przestażałej już w wielu miejscach biblioteki awt. Jestem ciekaw czy nie istnieje możliwość zrobienia tego samego lepiej w Java :]

Friday, November 7, 2008

Konfigurujemy VPS - komentarz

Dziś natrafiłem na szalenie ciekawą serię artykułów zatytułowaną Konfigurujemy VPS

Bardzo ciekawy temat, z przykładowymi obrazkami i rzetelnymi wyjaśnieniami. Szalenie zainteresowało mnie php-fpm. Muszę się mu przyjrzeć.

Odniosę się tutaj do Shared Hostingu. Zastanawiam się, czy ktoś bawi się w VPS na Apache. O ile w przypadku Shared Hostingu Apache jest po prostu - najlepszym wyborem o ile dla mnie wybór na VPSa jest oczywisty (na pewno nie Apache).

Fantastycznie zareklamowane postawienie na wejściu nginxa z przekierowywaniem ruchu do Apache - trzeba spróbować :) Co do PHP - wspomniał bym o kilku drobiazgach. Primo. Przyśpieszyć go można używając np. XCache lub APC. Do VPSa są po prostu świetne (APC okazuje się słabsze przy serwerze, z kilkoma tysiącami kont, na których po prostu wysiada).

Jeżeli o spawnowanie procesów FastCGI chodzi - dla wielu kont zżerają znacznie więcej pamięci niż mod_php na Apache i niestety przy użyciu do nich dodatkowo suexec po prostu serwer musiałby być maszyną rodem z TASKu, żeby móc to obsłużyć.

Gdyby chcieć mieć shared hosting ze spawnowanym PHP vis user z XCachem dla każdego usera z osobna - potrzebna byłaby POTWORNA maszyna.

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

Ruby on Rails vs .... series

Dziś kolega, zafascynowany Ruby on Rails, pokazał mi filmiki z serii Ruby on Rails vs .... http://pl.youtube.com/results?search_query=Ruby+On+Rails+vs&search_type=&aq=f

Na starcie zapytałem: "A jak wygląda filmik z Django" [http://pl.youtube.com/watch?v=PLUS00QrYWw] Chyba musieli się naprawdę wysilić żeby coś takiego wymyślić. Moim zdaniem - śmiech na sali. W momencie, w którym to obejrzałem twórcy wydali mi sie śmieszni i w gruncie rzeczy - sami ośmieszyli Railsy.

Przy informacjach, jakie można znaleźć na blogach, w których zarzutami przeciwko railsom jest wydajność (tutaj Django pokazuje klasę że hoho) czy też błędy znane od lat, czy chociaż kiepski sposób implementacji porównywanie siebie z Django z góry z założeniem "Railsy muszą wypaść na plus" - jest bez sensowne.