Rails 3.0 beta

Opublikowane przez Jarosław Zabiełło Wed, 24 Feb 2010 02:30:00 GMT

Muszę przyznać, że wydana parę tygodni temu wersja beta Ruby on Rails 3.0 wygląda bardzo obiecująco. Choć to dopiero beta, to wprowadzone razem z nią ulepszone zarządzanie gemami za pomocą Bundler'a robi dobre wrażenie. Aby ułatwić sobie eksperymentowanie z nowym RoR 3.0, najlepiej zainstalować wpierw RVM...

Czytaj dalej...

Tagi , , , ,  | 6 comments

MagLev - pierwsza wersja publiczna

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 , , , ,  | 9 comments

RubyMine - najlepszy IDE dla Ruby i Rails

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 , , , , , , , ,  | 11 comments

Scala i Lift on GAE

Opublikowane przez Jarosław Zabiełło Mon, 13 Apr 2009 04:32:00 GMT

Google opublikowało listę języków i javowych frameworków dostępnych dla swojego GAE (Google App Engine). Na liście jest m.in. JRuby, Jython, Groovy i Scala. Z powodu ograniczeń dostępności do wątków i JDBC napisano, że Lift nie jest wspierany. Jak jednak można wyczytać z jednym ostatnich wątków na liście dyskusyjnej Scali, trochę pośpieszono się z tą informacją. Lift daje się odpalić na GAE (to jest fork do kodu źródłowego). Scala posiada dwa rodzaje Aktorów – opartych na natywnych wątkach OS oraz opartych na asynchronicznej pętli, bez użycia wątków. Lift nie potrzebuje więc obsługi wątków do swej pracy. Co do JDBC, to sprawa jest trochę mętna, bo udało się uruchomić Lifta na pamięciowej bazie H2. Być może ograniczenie Google’a dotyczy tylko baz relacyjnych?

Updated: Frameworks and libraries supported by Google App Engine Java : List

Tagi , , , , , , , , , ,  | 3 comments

Scala - język przyszłości

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 , , , , , , , , , , ,  | 108 comments

Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych.

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 , , ,  | 10 comments

Merb 1.0, JRuby docelową platformą?

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 , , , , , ,  | 32 comments

Merb 1.0 RC4 i filmy z MerbCamp

Opublikowane przez Jarosław Zabiełło Fri, 31 Oct 2008 01:59:00 GMT

Wyszła kolejna wersja Merba 1.0 RC4 (gemy noszą numer 0.9.12). Z ciekawszych rzeczy dodano integrację frameworka testującego z webratem oraz poprawiono merb-auth i współpracę z JRuby i Windowsem. Finalna wersja 1.0 ma pojawić do konferencji RubyConf (6-8 listopad 2008). Dostępne też są już filmy z konferencji MerbCamp!

Tagi , ,  | 4 comments

Szybsze uruchamianie JRuby

Opublikowane przez Jarosław Zabiełło Wed, 15 Oct 2008 01:14:00 GMT

Osoby często uruchamiające w konsoli JRuby’ego pewnie się trochę denerwują opoźnieniami związanymi z koniecznością załadowania za każdym razem JVM (wirtualnej maszyny Javy). Dzięki serwerowi Nailgun, JVM jest trzymana w pamięci i JRuby jest uruchamiany natychmiast, bez opóźnień. Instalacja jest prosta i opisana na Wiki.

Kompilację Nailguna dla JRuby najwygodniej zrobić za pomocą ant'a:

ant jruby-nailgun

Następnie należy uruchomić serwer

jruby --ng-server

(Serwer domyślnie nasłuchuje na wszystkich interfejsach i na porcie 2113, i jest odpalany na prawach usera który, wykonał tą komendę.)

Od tego momentu wirtualna maszyna Javy ładowana jest do pamięci i aby JRuby z tego korzystał należy uruchamiać go z opcją --ng. Rozwiązanie nadaje się świetnie do częstego uruchamiania skryptów. Znika zupełnie efekt opóźnienia związany z koniecznością ładowania JVM przy każdym uruchomieniu skryptu JRuby.

Małe porównanie:

$ time jruby --ng -e "puts 1"
1
real    0m0.049s
user    0m0.010s
sys     0m0.000s

$ time jruby  -e "puts 1"
1
real    0m0.549s
user    0m0.530s
sys     0m0.060s

Tagi , ,  | 8 comments

JRuby - metoda initialize i Java

Opublikowane przez Jarosław Zabiełło Thu, 14 Aug 2008 02:38:00 GMT

Ostatnio, podczas próby użycia javowej biblioteki w JRuby spotkałem problem z kolizją nazw metod Javy z metodami Rubiego. Mianowicie chodzi o metodę o nazwie initialize jaka była zdefiniowana w bibliotece Javy. W JRuby (i Ruby) nazwa ta jest zarezerwowana dla konstruktora. Dzięki temu, że miałem dostęp do źródeł w Javie, mógłbym po prostu je zmodyfikować. Jednakże, takie podejście nie za bardzo mi się podobało. Co w wypadku kiedy miałbym bibliotekę dostępną tylko w postaci skompilowanych klas?

Czytaj dalej...

Tagi ,  | 3 comments

Ruby, Python i natywne wątki systemu operacyjnego

Opublikowane przez Jarosław Zabiełło Sat, 26 Jul 2008 11:22:00 GMT

Wiele się mówi o tym, że Ruby jak i Python nie posiadają obsługi natywnych wątków systemu operacyjnego. Wbudowane, tzw. green threads, nie są w stanie wykorzystać zalet maszyn wyposażonych w procesory wielordzeniowe. Istnieją jednak implementacje obu języków w czystej Javie. Czy ich użycie daje jakieś znaczące przyśpieszenie?

Czytaj dalej...

Tagi , , , ,  | 33 comments

Passenger bliżej - Rails, Rack i WSGI

Opublikowane przez Jarosław Zabiełło Sat, 07 Jun 2008 13:24:00 GMT

Stworzony pierwotnie na użytek Rails, aktualnie mod_passenger już obsługuje nie tylko Rails ale także masę innych frameworków używających Rack’a. W nowej dokumentacji wymienione są frameworki: Camping, Halcyon, Mack, Merb, Ramaze i Sinatra. W dokumentacji nie wymieniono jeszcze “drugiej listy”, zawierającej frameworki korzystające z WSGI i Pythona (np. Pylons, Django, TurboGears itp.). Chcąc sprawdzić plotki wokół tej sprawy, sprawdziłem, czy faktycznie mod_passenger pracuje nie tylko z Ruby, ale także z Pythonem. Sprawdziłem także jak to jest faktycznie z obługą Rails i frameworków na Rack’u (tu sprawdziłem tylko Merba). Sprawdziłem też JRuby dla Rails i Merba.

Czytaj dalej...

Tagi , , , , , , ,  | 6 comments

JRuby Rack

Opublikowane przez Jarosław Zabiełło Wed, 04 Jun 2008 01:56:00 GMT

JRuby Rack pozwala na wygodne uruchamianie pod JRuby zarówno Rails, Merb jak i każdy inny framework korzystający z Rack. JRuby Rack został właczony do gemu Warbler 0.9.9 używanego do budowania pliku WAR dla Rails 2.x. Vide Introducing JRuby-Rack

Tagi , , ,  | 1 comment

JRuby 1.1 final

Opublikowane przez Jarosław Zabiełło Sun, 30 Mar 2008 22:51:00 GMT

Jest w końcu oczekiwana wersja stabilna JRuby 1.1. W chwili pisania tej notki, nie ma o tym jeszcze informacji na stronie głównej, ale jest już do pobrania. To bardzo dobra wiadomość, bo JRuby 1.1 już w wersjach rozwojowych był znacznie szybszy od poprzedniej 1.0, a w wielu testach bił wydajnością nie tylko Ruby 1.8.6 i 1.9, ale także Pythona 2.5.1. Dzięki JRuby webowe frameworki takie jak Rails czy Merb uzyskują pełny dostęp do bibliotek Javy i tym samym jakiekolwiek uwagi co do (nie)dojrzałości bibliotek Rubiego stają się nieistotne.

Tagi , ,  | 1 comment

Merb 0.9.2 i Sake

Opublikowane przez Jarosław Zabiełło Tue, 25 Mar 2008 06:11:00 GMT

Merb wchodzi w końcową fazę przed wydaniem wersji “1.0 (RailsConf)” . Właściwie nie zdziwiłbym się jakby lada dzień ta wesja wyszła bo prawie wszystkie tickety z problemami są już wyczyszczone. Rozproszony system wersjonowania kodu – Git – sprawdza się doskonale. Rozproszony Rake – Sake – także. Nowy Merb wspiera Ebb. Jest on szybszy od Mongrela, to najszybszy serwer HTTP dla Rubiego wykorzystujący interfejs Rack.

Czytaj dalej...

Tagi , , , ,  | 2 comments

RadRails 1.0

Opublikowane przez Jarosław Zabiełło Thu, 13 Mar 2008 02:47:00 GMT

Pogłoski o śmierci RadRails były chyba trochę przedwczesne. Firma Aptana wypuściła przedwczoraj nowy RadRails 1.0. Wewnętrznie używany jest JRuby 1.11RC2. RadRails pozwala na uruchamianie Rubiego, JRuby i … Rubiniusa. Chwalą się nawet, że mają więcej funkcji niż Netbeans 6. Aptana dodatkowo zapewnia integrację z Jaxerem, wsparcie do Adobe AIR, i jak zwykle bardzo dobry parser do HTML, CSS i debugger JavaScript. Mimo wszystko, nie wiem czy to wszystko wystarczy, bo Netbeans 6 ma znacznie bardziej inteligentny, kontekstowy analizator kodu Rubiego, podczas gdy RadRails używa znacznie mniej wyrafinowany plugin RDT (o którym poza tym chodzą od dawna pogłoski że przestał być rozwijany). W każdym razie takie współzawodnictwo i obecność dwóch tak dobrych IDE to na pewno dobra wiadomość dla wszystkich sympatyków Ruby on Rails.

Tagi , , , , , ,  | 4 comments

Szalejące frameworki Rubiego i Rack/WSGI

Opublikowane przez Jarosław Zabiełło Tue, 04 Mar 2008 21:56:00 GMT

Merb w wersji 0.9 poszedł na całość i oparli swój midleware na Rack’u. Jej twórcy nie kryją się że wzorowali się na pythonowej bibliotece WSGI. Biblioteka ta robi niezłą furorę w kręgach Rubiego. Powstaje sporo różnych mikroframeworków lub szybkich serwerów HTTP pracujących asynchronicznie i wykorzystujących Rack. Niedawno powstał świetny Thin, a już można przeczytać o 2x szybszy Ebb. Co ciekawe, Ebb chce docelowo obsługiwać zarówno frameworki Rubiego jak i Pythona! Jestem ciekaw czy będzie w stanie zdetronizować serwer Paste... Rack doczekał się już swojej implementacji w JRuby! Umożliwia to tym samym odpalanie w JRuby wszystkich frameworków które korzystają z Rack’a.

Czytaj dalej...

Tagi , , , , , , , , , , ,  | 9 comments

Wściekły Zed i dyskusja wokół Rubiego i Railsów

Opublikowane przez Jarosław Zabiełło Sun, 06 Jan 2008 22:49:00 GMT

Ostatnio jest trochę szumie w branży po bezpardonowym (i niewybrednym) ataku Zeda Shaw uderzającym w kilka znanych postaci z kręgów Rubiego i Rails. Pewnie nikt by na to nie zwrócił uwagi gdyby nie to, że Zed jest autorem znanego projektu Mongrel. Choć wpis się źle czyta (bo jest rozwlekły i niepotrzebnie przeplatany ciągłymi przekleństwami autora) to zwrócił uwagę na kilka istotnych problemów.

Czytaj dalej...

Tagi , , , , , , , , ,  | 17 comments

JRuby 1.0

Opublikowane przez Jarosław Zabiełło Wed, 13 Jun 2007 09:24:00 GMT

Ukazała się finalna wersja JRuby 1.0 – implementacji języka Ruby w czystej Javie. Zespół JRuby zachęca do testowania Railsów na JRuby. Z tego co pamiętam, to wersji finalnej JRuby zapowiadano włączenie optymalizacji kodu. Zanim zatem wyjdzie w końcu Ruby 2.0, JRuby on Rails ma już teraz szansę przełamać stereotyp o słabszej wydajności Rubiego. Szczególnie może to mieć duże znaczenie dla platformy Windows, bo Ruby na systemach POSIX (Linux, BSD, Mac OS X) pracuje znacznie wydajniej.

Dla miłośników Mac OS X jest dostępny artykuł pokazujący jak skonfigurować całe środowisko Javy dla Rail. Ale do pracy z Rails, najprościej użyć Netbeans 6 który od jakiegoś czasu pozwala1 na uruchamianie Railsów na JRuby (można wybrać sobie opcję JRuby lub klasyczny CRuby).

Zobacz też artykuł “JRuby and the Java Platform” jaki ukazał się wczoraj na stronie firmy Sun.


1 Szkoda, że NB6 nie ma jeszcze zaimplementowanego kolorowania i podpowiadania helperów dla Haml. Jak ktoś ma siły i czas to tu jest opis jak dodać kolorowanie dla jakiegoś innego języka.

Tagi , , ,  | 14 comments

Netbeans 6 - killer IDE dla Ruby on Rails?

Opublikowane przez Jarosław Zabiełło Fri, 16 Mar 2007 10:39:00 GMT

Jeśli chodzi o jakość podpowiadania składni i metod Rubiego, to najnowsza, szósta wersja flagowego edytora IDE – Netbeans, deklasuje RadRailsa i resztę “towarzystwa”.

Czytaj dalej...

Tagi , , , ,  | 14 comments

Starsze wpisy: 1 2