Opublikowane przez Jarosław Zabiełło
Fri, 02 Jul 2010 20:37:00 GMT
Standardowa obsługa cache’a w Rails 2.x (trzymająca buforowane dane w plikach) pozbawiona jest automatycznego odświeżania buforowanych treści po zadanym okresie czasu. Co prawda Rails dostarcza bogaty zestaw warunków które są w stanie wyzwolić “sweepera” (metodę regenerującą wybrany fragment cache’a), ale regenerowanie cache’a możliwe jest tylko na żądanie. I aby to zmienić, w Rails 2.x konieczne jest użycie Memcached jako domyślnego backendu dla systemu cache’owania.
Czytaj dalej...
Tagi cache, memcached, rails, rails3, ruby, scaling | brak comments
Opublikowane przez Jarosław Zabiełło
Fri, 02 Jul 2010 12:42:00 GMT
Standardowa metoda umiędzynarodowienia aplikacji webowej oparta na plikach YAML, czy bibliotece Gettext, dobrze się sprawdza w przypadku tłumaczenia interfejsu aplikacji, ale już niekoniecznie w sytuacji, kiedy teksty trzymane są w bazie danych. Standardowo i18n w Rails używa plików YAML (choć można użyć Gettext lub zdefiniować zupełnie własną obsługę). Aby tłumaczyć dane trzymane w bazie, trzeba sięgnąć po odpowiedni plugin.
Jednym z najlepszych pluginów (opisywałem go w książce), jest Globalize. Niestety, Globalize nie działa z nowym Rails 3. Istnieje co prawda nowy, przebudowany od podstaw Globalize2, ale (w chwili pisania tego tekstu), nawet sam autor nie jest pewny czy działa z Rails 3. Okazuje się, że można zmusić Globalize2 do pracy z Rails 3 i to całkiem prosto.
Czytaj dalej...
Tagi globalize, globalize2, globalize3, i18n, pluralization, rails, rails3, ruby | 9 comments
Opublikowane przez Jarosław Zabiełło
Sat, 23 Jan 2010 06:40:00 GMT
Duck typing (opisywany przeze mnie wcześniej na przykładzie Pythona) to dosyć użyteczna technika popularna w językach dynamicznie typowanych. W typowym języku statycznie typowanym, takim jak Java, nie da się jej stosować. Ale ograniczeniem nie jest statyczne typowanie, lecz to że Java, jako język, jest po prostu słaba. W statycznie typowanej Scali “duck typing” to żaden problem. Mało tego. Fakt, że Scala jest statycznie typowana daje jej tu dodatkową przewagę na językami dynamicznie typowanymi.
Czytaj dalej...
Tagi duck_typing, ruby, scala | 37 comments
Opublikowane przez Jarosław Zabiełło
Sun, 17 Jan 2010 02:58:00 GMT
Tak, jak pewnie większość użytkowników iPhone’a, mimo że słyszałem od dawna o możliwości zdjęcia apple’owskich blokad (proces określany jako jailbreaking), to trochę się obawiałem że taka operacja to potencjalne ryzyko zablokowania aparatu lub jakichś innych nieodwracalnych uszkodzeń. Prawda jest taka, że to wszystko to brednie i ploty. Jailbreak jest bardzo łatwy do przeprowadzenia i jest to proces w pełni odwracalny.
Czytaj dalej...
Tagi apple, cydia, django, hacking, ios4, iphone, jailbreak, merb, osx, pylons, python, rails, rock, ruby, sinatra | 16 comments
Opublikowane przez Jarosław Zabiełło
Sat, 21 Nov 2009 03:43:00 GMT
Gdy ok 1.5 roku pisałem o szumie i nadziejach związanych z MagLev’em, trudno było przewidzieć ile czasu zajmie dostosowanie wirtualnej maszyny Smalltalka do pracy z kodem bajtowym Ruby’ego. Dziś (właściwie to jakieś 2 godziny temu) oficjalnie ogłoszono że jest dostępna publicznie pierwsza wersja alpha. Z tego, co podaje dokumentacja, to Maglev jeszcze nie działa tam gdzie są wymagane rozszerzenia w C, ale w przykładach widać, że działa Sinatra, Rack, RubyGems czy interaktywna konsola. Najciekawsza jest transakcyjna, przezroczysta pamięć stała MagLev’a, bo to zupełnie zmienia styl myślenia i pracy z danymi. Może będzie można w końcu zapomnieć o przestarzałych ORM’ach i RDBMS? (technologia baz relacyjnych pochodzi z lat 70-tych, jest wolna i przestarzała).
Ruby everywhere – czyli najważniejsze implementacje Ruby’ego:
- Ruby 1.8 MRI – implementacja w języku C (najstarsza)
- Ruby Enterprise Edition – implementacja w C, mniejsze zużycie pamięci, używana głównie z Passengerem
- Ruby 1.9 – implementacja w języku C, używa wirtualnej maszyny YARV
- JRuby – implementacja w języku Java, wirtualna maszyna Javy (JVM)
- IronRuby – implementacja w języku C# (środowisko .NET)
- Maglev – implementacja w języku Smalltalk, wirtualna maszyna Smalltalka (Gemstone)
- MacRuby – implementacja w języku Objective-C dla systemu Mac OS-X
- Rubinius – implementacja Ruby w… Ruby (z loaderem w C++)
- BlueRuby – Ruby działający w SAP Web Application Server (ABAP Virtual Machine)
Zobacz też State of Ruby VMs: Ruby Renaissance
Tagi gemstone, jruby, maglev, ruby, smalltalk | 9 comments
Opublikowane przez Jarosław Zabiełło
Mon, 12 Oct 2009 22:13:00 GMT
Mimo, że spora część programistów Ruby’ego i Rails pozostaje wierna edytorom tekstowym takim jak TextMate, Emacs, Vim czy (opisywany dwa lata temu) JEdit, druga część woli IDE ze względu na rozbudowany lepszy refactoring, wbudowany (graficzny) debugger, podpowiedzi i analiza składni kodu Ruby’ego w czasie rzeczywistym. Z różnych IDE do Rails to tak naprawdę liczą się tylko trzy.
Czytaj dalej...
Tagi edytor, intellij, jruby, netbeans, radrails, rails, ruby, rubymine, scala | 11 comments
Opublikowane przez Jarosław Zabiełło
Mon, 12 Oct 2009 22:11:00 GMT
Dostępne w Rails 2.x kontrolery rackowe (tzw. metal applications) wprowadzono aby maksymalnie przyśpieszyć działanie Rails (pomijają prawie cały stos wywołań frameworka). Ich wadą jest trochę niewygodna, niskopoziomowa składnia. Z drugiej strony, dzięki Rackowi, istnieje kilka bardzo szybkich mikroframeworków, z których najbardziej znany to Sinatra i Ramaze. Dzięki możliwości wpięcia ich do Rails, uzyskuje się połączenie dużej szybkości z wygodniejszą składnią.
Czytaj dalej...
Tagi rack, rails, ruby, sinatra | brak comments
Opublikowane przez Jarosław Zabiełło
Sun, 21 Jun 2009 03:45:00 GMT
Być może jednym z argumentów, dla których Ruby znajduje więcej zainteresowania ze strony programistów Javy niż Python, jest podobny mechanizm zabezpieczenia dostępu do atrybutów klasy za pomocą słów kluczowych private i protected. W języku PHP 5 wprowadzono podobny mechanizm. Ci jednak, którzy myślą, że te kwalifikatory zakresu dostępu stanowią jakiekolwiek poważne zabezpieczenie, są w głębokim błędzie. W banalny sposób można to obejść zarówno w w PHP 5, jak i w Javie. Przy czym o ile, w Javie wynika to raczej z celowego projektu w mechanizmie refleksji, w PHP 5 wygląda to na dziurę bezpieczeństwa…
Czytaj dalej...
Tagi hacking, java, php, python, reflection, ruby, scala, security | 27 comments
Opublikowane przez Jarosław Zabiełło
Sun, 05 Apr 2009 21:24:00 GMT
Na polskim forum RoR pojawiła się informacja o projekcie Eulera składającym się z różnych łamigłówek programistycznych. Na forum RoR przedstawiane są rozwiązania w języku Ruby. Istnieją też rozwiązania w języku Clojure. Takie projekty są dobrym pretekstem do poćwiczenia swoich umiejętności programowania.
Czytaj dalej...
Tagi clojure, euler, fp, oop, python, ruby, scala | 6 comments
Opublikowane przez Jarosław Zabiełło
Sat, 28 Mar 2009 06:17:00 GMT
Kiedy zapytano Jamesa Goslinga (twórcę Javy) o to, który z języków programowania współpracujących z JVM (wirtualną maszyną Javy) by użył teraz, pomijając samą Javę, odpowiedź była zaskakująco szybka i bardzo jasna – Scala.
Nazwa “Scala” pochodzi od “Scalable language” (język skalowalny). Język ten nadaje się równie dobrze do krótkich, zwartych skryptów jak i do tworzenia wydajnych, ogromnych, bezpiecznych systemów sieciowych. W swych założeniach Scala nawiązuje do minimalizmu składni Lispa i Smalltalka (większość rzeczy oparta jest na bibliotekach a nie na składni) dzięki czemu język ten praktycznie nie ma ograniczeń rozwoju i doskonale się skaluje (w miarę potrzeb można tworzyć nowe typy i całe nowe struktury wyglądające jak nowa składnia języka).
Scala jest językiem kompilowanym do bytecodu JVM dzięki czemu potrafi się integrować w sposób praktycznie przezroczysty, z całą platformą Javy (istnieje co prawda implementacja Scali dla platformy .NET ale jest jeszcze niedojrzała). W Scali mamy też wygodną konsolę do interaktywnego testowania kodu (tak jak to jest w Pythonie i Ruby). W Scali każda wartość jest obiektem, każda funkcja zwraca wartość. Zatem każda funkcja też jest obiektem (first class object). Funkcje są też obiektami wyższego rzędu (higher order kinds), można je zagnieżdżać, przekazywać w parametrach, a nawet stosować mechanizm dziedziczenia.
Czytaj dalej...
Tagi clojure, django, fp, java, jruby, lisp, oop, python, rails, ruby, scala, wicket | 105 comments
Opublikowane przez Jarosław Zabiełło
Tue, 17 Mar 2009 03:09:00 GMT
Po początkowym szumie wokół Magleva, sprawa na jakiś czas przycichła i wiele osób powątpiewało czy jego twórcom uda się spełnić to co zapowiadali. Gdyby im się udało, Ruby uzyskałby fantastyczną platformę. Dojrzałą i szybką (rozwijana od ponad 20 lat i sprawdzoną w zastosowaniach komercyjnych) wirtualną maszynę Smalltalka z wbudowanym mechanizmem wydajnej, przezroczystej, transakcyjnej persistent memory (nie wiem jak to oddać po polsku, a każdym razie rozwiązanie wygodniejsze nawet od obiektowej bazy danych, coś w stylu javowej Terracoty). Aktualnie kod Maglev’a jest cały czas w fazie alpha, ale na drugi kwartał roku 2009 zapowiada jest już wersja beta. To, co cieszy to rosnąca, coraz większa zgodność Maglev’a z Ruby Specs.
Tagi maglev, ruby | 5 comments
Opublikowane przez Jarosław Zabiełło
Tue, 17 Mar 2009 02:48:00 GMT
W końcu się doczekaliśmy finalnej wersji Rails 2.3 (oznaczona jest jako wersja 2.3.2 użytkownicy Passengera muszą sobie zrobić aktualizację do wersji 2.1.2). Cieszy może wsparcie do Rack’a i liczne usprawnienia frameworka, ale tak naprawdę to czekam raczej na następną wersję, jaką ma być Rails 3.0 (aka Merb 2.0). Ponoć na najbliższej konferencji Railsconf 2009 ma być jakaś wersja beta kodu źródłowego (w każdym razie 6 maja przewidziane są jakieś prezentacje na temat Rails 3). Mam nadzieję że stabilna wersja Rails 3 pojawi się szybko i nie będzie rozczarowaniem dla tych, co wcześniej cenili sobie prostotę i elastyczność Merba.
Tagi merb, rails, ruby | brak comments
Opublikowane przez Jarosław Zabiełło
Thu, 22 Jan 2009 03:30:00 GMT
Po paru godzinach walki z Netbeans, przeglądaniem źródeł, przekopywaniem list dyskusyjnych i zgłoszonym tickecie, w końcu udało mi się zmusić Merba do pracy z Netbeans. Mam też dobrą wiadomość, że Netbeans 7 (wersja trunk) w przyszłym tygodniu ma mieć dodane wsparcie do Merba (tworzenie projektów, debugowanie itp). Dla tych, co chcieliby już teraz móc debugować swoje projekty Merba w graficznym, ślicznym debugerze Netbeans, podaję instrukcję obsługi. :)
Czytaj dalej...
Tagi merb, netbeans, ruby | 4 comments
Opublikowane przez Jarosław Zabiełło
Sun, 18 Jan 2009 23:24:00 GMT
W dosyć regularnie publikowanych postach Yehudy Katza można obserwować jak postępuje refactoring Rails. Okazało się też, że DHH jest rozsądnym człowiekiem i posiada sensowne pomysły co do przyszłego, wspólnego API Rails 3. Połączenie Merba z Rails wprowadziło jednakże trochę zamieszania wśród autorów piszących książki o Merbie. Myślę, że mówienie o zupełnej deaktualizacji tych wszystkich książek jest zdecydowanie przedwczesne, bo zanim wyjdzie oficjalna wersja Rails 3, upłynie jeszcze sporo czasu.
Czytaj dalej...
Tagi merb, rails, ruby | 5 comments
Opublikowane przez Jarosław Zabiełło
Wed, 24 Dec 2008 14:01:00 GMT
Ogłoszone wczoraj połączenie się frameworków Merb i Rails wywołało z miejsca burzę na kanale IRC #merb. Informacja pojawiła się już na blogu RoR, Ezry, Yehudy czy Matta Aimonetti jak i samego DHH (wpis z dzisiaj). Na oficjalnej stronie Rails stworzono specjalną podstronę rubyonrails.org/merb mającą upamiętnić ten dzień. Co z tej, trochę sensacyjnej, fuzji wynika, a co nie?
Czytaj dalej...
Tagi merb, rails, ruby | 15 comments
Opublikowane przez Jarosław Zabiełło
Sat, 20 Dec 2008 03:28:00 GMT
Wydana niedawno przez Helion książka "Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych.". w zamierzeniu autora, nie jest tylko kolejnym, kompleksowym wprowadzeniem do frameworka Ruby on Rails dla początkujących programistów (Takim wprowadzeniem jest – mająca wyjść wiosną 2009 r – referencyjna Agile Web Development with Rails. 3rd ed.) Zamiast więc powtarzać w kółko te same informacje dostępne w innych książkach, autor skupił się tu na innych kwestiach.
Czytaj dalej...
Tagi jruby, merb, rails, ruby | 10 comments
Opublikowane przez Jarosław Zabiełło
Fri, 12 Dec 2008 15:55:00 GMT
Od czasu wyjścia Merb 1.0 przybywa coraz więcej dobrych materiałów n/t tego frameworka (koledzy od Pylons, ktorzy od wieków tkwią w tej swojej wersji 0.9.x mogliby to sobie wziąć do serca). Przede pojawia się coraz więcej zapowiedzi książek…
Czytaj dalej...
Tagi activerecord, datamapper, merb, pylons, rails, ruby, sequel | 13 comments
Opublikowane przez Jarosław Zabiełło
Wed, 19 Nov 2008 01:13:00 GMT
Rozpoczęcie pracy z Merb’em, podobnie jak w Rails, zaczyna się od stworzenia projektu. Domyślnie Merb proponuje predefiniowany zestaw dobranych modułów, nie jest to jednak jedyna opcja i dobrze wiedzieć o tym szczególnie dla tych co chcieliby użyć Merb w JRuby (jeden z domyślnych modułów, DataMapper, jeszcze nie jest przygotowany do pracy z JRuby).
Czytaj dalej...
Tagi django, merb, php, rails, ruby | 33 comments
Opublikowane przez Jarosław Zabiełło
Mon, 10 Nov 2008 01:13:00 GMT
Ezra Zygmuntowicz oficjalnie w swoim blogu obwieścił wydanie wersji 1.0 dla frameworka Merb. Mimo, że formalnie Merb nie ma zamiaru walczyć z Rails, na pewno taka konfrontacja nastąpi. Tym bardziej ciekawa, że wkrótce ma wyjść Rails 2.2, który wprowadził trochę znaczących zmian w stosunku do wersji poprzednich, m.in. wielowątkowość oraz wsparcie dla wersji międzynarodowych.
Czytaj dalej...
Tagi db4o, java, jruby, merb, rails, ruby, terracota | 32 comments
Opublikowane przez Jarosław Zabiełło
Tue, 04 Nov 2008 01:26:00 GMT
Ci co robili sobie update gemów mogli zauważyć, że gemy do Merba mają już numer 0.9.13. To oznacza, że zainstalowały się gemy Merba 1.0 RC5. To jest ostatnia wersja RC przed finalną wersją 1.0 jaka ma być już prezentowana podczas najbliższej konferencji RubyConf.
Tagi merb, ruby | brak comments