Brakujące reguły pluralizacji w Rails

Opublikowane przez Jarosław Zabiełło Mon, 02 Aug 2010 21:39:00 GMT

Połączenie sił wbudowanego mechanizmu I18n oraz pluginu Globalize daje całkiem duże możliwości do budowania wielojęzycznych aplikacji w Rails. Globalize służy do tłumaczenia danych trzymanych w bazie. Zaś moduł I18n do typowych prac lokalizacyjnych związanych z interfejsem aplikacji (włącznie ze wszystkimi komunikatami wyświetlanymi przez sam framework Ruby on Rails). Jedynym problemem jaki spotkałem jest brak reguł pluralizacji dla języków innych od języka angielskiego.

Czytaj dalej...

Tagi , , , ,  | 9 comments

Rails3 i wygasający cache

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

Rails3 & Globalize2

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

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

Scala i bezpieczny "duck typing"

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

Uwolnienie potęgi iPhona - jailbreaking

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

Spotkanie entuzjastów Scali z okolic Wrocławia

Opublikowane przez Jarosław Zabiełło Fri, 15 Jan 2010 01:37:00 GMT

W najbliższy wtorek (19 stycznia 2010) odbędzie się pierwsze spotkanie WrASSE (grupy entuzjastów Scali z okolic Wrocławia) pt. “Scala w projekcie komercyjnym”. Szczegóły: tutaj.

Tagi , ,  | 3 comments

IPLA i odbieranie live TV spoza Polski

Opublikowane przez Jarosław Zabiełło Sat, 12 Dec 2009 13:58:00 GMT

Osoby mieszkające poza Polską, nawet jeśli mają wykupiony abonament na odbiór strumieniowych kanałów telewizji Polsat, mogą poczuć się oszukani, że transmisje na żywo z co ciekawszych wydarzeń są dla nich niedostępne. Poniżej podaję prosty sposób jak to obejść i ośmieszyć takie “polsatowe” blokady. Sposób jest jak najbardziej legalny i nie wymaga nigdzie żadnego włamywania się, ani hackowania programu IPLA.

Czytaj dalej...

Tagi , , , , ,  | 38 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

Scala w Trójmieście

Opublikowane przez Jarosław Zabiełło Mon, 09 Nov 2009 20:29:00 GMT

19 listopada 2009 w auli Uniwersytetu Gdańskiego odbędzie się spotkanie poświęcone językowi Scala. Organizuje je Trójmiasto Java User Group. Szczegóły tutaj: http://it.wtrojmiescie.org/spotkania/scala.

Tagi , , ,  | brak 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

Rails dopalony Sinatrą

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

Aplikacja multiplatformowa za pomocą cross-kompilatora

Opublikowane przez Jarosław Zabiełło Thu, 10 Sep 2009 00:00:00 GMT

Od jakiegoś czasu interesuje mnie możliwość pisania aplikacji działających na różnych systemach operacyjnych. Rozwiązaniem najbardziej oczywistym jest oczywiście użycie Javy (może niekoniecznie samego języka jako takiego, ale na pewno platformy). Rozwiązaniem znacznie mniej znanym, ale ciekawym, jest użycie produktu firmy Real Software – RealBasic’a.

Czytaj dalej...

Tagi , , , , , , ,  | 18 comments

Problem znaków UTF-8 w Scali i Javie pod Mac OS-X

Opublikowane przez Jarosław Zabiełło Tue, 08 Sep 2009 01:15:00 GMT

Wczoraj, na polskim kanale IRC #scala.pl mieliśmy małą dyskusję na temat złego wyświetlania polskich znaków w Scali pod systemem Mac OS-X Leopard (pod Linuksem jest OK). Co dziwne, mimo, że zmienna środowiska LANG pokazuje wartość pl_PL.UTF-8, próby wyświetlenia polskich napisów nie działają. Więcej, w konsoli Scali w ogóle nie ma możliwości wprowadzenia polskich znaków, ani bezpośrednio z klawiatury, ani poprzez wklejenie ze schowka. Wszystkie polskie ogonki zamieniane są na znak zapytania.

     
println(java.nio.charset.Charset.defaultCharset) 
// x-MacCentralEurope

println("Zażółć gęślą jaźń")
// Za???? g??l? ja??
Czytaj dalej...

Tagi , , , , ,  | 9 comments

Czy Apple jest droższy od PC?

Opublikowane przez Jarosław Zabiełło Fri, 14 Aug 2009 23:52:00 GMT

Czy spotkałeś się z obiegową opinią że komputery Apple’a są dużo droższe od analogicznych odpowiedników z segmentu PC? Jeśli tak, to przeczytaj i pokaż ten tekst tym co takie brednie rozpowszechniają. Napisałem go, aby odsyłać do niego niedowiarków, bo już znudziło mi się prostowanie bzdur wypisywanych na ten temat.

W zasadzie nie jest łatwo znaleźć odpowiednik PC dla takiego laptopa MacBook Pro. Ale aby porównanie cen miało jakikolwiek sens, postawiłem zestawić maksymalnie podobny sprzętowo laptop w ramach tego samego kraju. Ze strony Appl’e wybrałem laptopa MacBook Pro i desktopowego MacPro…

Czytaj dalej...

Tagi , , , , , , , , ,  | 62 comments

Atak na zabezpieczenia protected/private Javy/Scali i PHP5

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 , , , , , , ,  | 27 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

Projekt Eulera 17 - Ruby, Python, Scala

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

Maglev - w tym roku?

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

Starsze wpisy: 1 2 3 ... 13