Update postu Rails3: respond_with i pusty json/xml/yaml przy update dla Rails 3.1. Plik application_responder.rb powinien w niej wyglądać tak:
Reszta pozostaje bez zmian.
wtorek, 28 czerwca 2011
niedziela, 19 czerwca 2011
Kod, który zawsze działa!
Remember, a great way to avoid broken code is to have less of it. The code that you never write will work forever.
- Russ Olsen, "Eloquent Ruby" (Addison-Wesley Professional, 2011)
piątek, 17 czerwca 2011
Pisz "elokwentnie" w Rubym
Nie trudno nauczyć się nowego języka programowania. W końcu wszędzie mamy te same if-y, pętle, klasy, funkcje. Trochę czasu zajmuje oczywiście poznanie biblioteki standardowej i pewnych konstrukcji typowych dla danego języka.
Sztuką jednak poznać jest styl danego języka. Wiedzieć kiedy użyć danej konstrukcji, znać idiomy, zasady którymi rządzi się język.
W sumie dopiero w trakcie lektury Ruby mnie zafascynował. Do tej pory był tylko "pośrednikiem" pomiędzy mną a Railsami, a sam w sobie mnie nie porywał.
Sztuką jednak poznać jest styl danego języka. Wiedzieć kiedy użyć danej konstrukcji, znać idiomy, zasady którymi rządzi się język.
W innym wypadku jest duża szansa, że nie piszesz w Rubym, ale jakimś innym języku, który znałeś wcześniej. Wtedy trzeba sobie zadać pytanie: to po co udawać, że się pisze w Rubym?
- Radarek, "You can write FORTRAN in any language"
It’s easy to write correct Ruby code, but to gain the fluency needed to write great Ruby code, you must go beyond syntax and absorb the “Ruby way” of thinking and problem solving. In Eloquent Ruby, Russ Olsen helps you write Ruby like true Rubyists do–so you can leverage its immense, surprising power.
Olsen draws on years of experience internalizing the Ruby culture and teaching Ruby to other programmers. He guides you to the “Ah Ha!” moments when it suddenly becomes clear why Ruby works the way it does, and how you can take advantage of this language’s elegance and expressiveness.
Eloquent Ruby starts small, answering tactical questions focused on a single statement, method, test, or bug. You’ll learn how to write code that actually looks like Ruby (not Java or C#); why Ruby has so many control structures; how to use strings, expressions, and symbols; and what dynamic typing is really good for.
Next, the book addresses bigger questions related to building methods and classes. You’ll discover why Ruby classes contain so many tiny methods, when to use operator overloading, and when to avoid it. Olsen explains how to write Ruby code that writes its own code–and why you’ll want to. He concludes with powerful project-level features and techniques ranging from gems to Domain Specific Languages.
A part of the renowned Addison-Wesley Professional Ruby Series, Eloquent Ruby will help you “put on your Ruby-colored glasses” and get results that make you a true believer.Nie jest to książka, która wyjaśni nam podstawy programowania (co to jest zmienna, pętla czy obiekty). Autor zakłada, że znamy już trochę Ruby'ego na tyle żeby pisać poprawne (działające) programy. Jednak nie na tyle dobrze żeby pisać je poprawnie (zgodne z duchem Ruby'ego).
W sumie dopiero w trakcie lektury Ruby mnie zafascynował. Do tej pory był tylko "pośrednikiem" pomiędzy mną a Railsami, a sam w sobie mnie nie porywał.
czwartek, 16 czerwca 2011
Lepsze wsparcie dla YARD w nowym RubyMine (3.2)
Dobrze jest pisać komentarze i dokumentować kod - to wie każdy. Nowoczesne IDE potrafią dzięki dobrze zbudowanej dokumentacji lepiej podpowiadać kod (potrzebne parametry i ich typ, typ zwróconej wartości itd.)
Nowa wersja RubyMine (3.2) wprowadza lepszy support dla YARD. Sprawa jest generalnie prosta. Piszemy odpowiednio komentarze nad kodem używając składni YARD:
Dzięki czemu uzyskujemy lepsze podpowiedzi:
Nowa wersja RubyMine (3.2) wprowadza lepszy support dla YARD. Sprawa jest generalnie prosta. Piszemy odpowiednio komentarze nad kodem używając składni YARD:
Dzięki czemu uzyskujemy lepsze podpowiedzi:
poniedziałek, 13 czerwca 2011
Template inheritance w Rails 3.1 - DRY niczym Briana Banks
Wielkimi krokami zbliża się wersja 3.1 frameworka Ruby on Rails, a wraz z nią wiele ciekawych ficzerów jak na przykład reversible migrations czy mountable engines. Jako genialny wynalazek zostało również wprowadzone template inheritance:
Fragment kodu, który odpowiada za menu możemy przenieść do katalogu app/views/application, ponieważ każdy kontroler dziedziczy po ApplicationController.
Do tej pory wszystko wygląda wspaniale. Co jednak, jeżeli chcielibyśmy dodać jedną pozycję w menu np. dla NewsController? Nic prostrzego. Tworzymy app/views/news/_menu.html.erb w którym dodajemy link. Wspaniale! Co jednak, jeżeli mamy bardzo rozbudowane menu a dla jednego kontrolera chcemy dodać 1 (JEDNĄ!) pozycję? Tak! Musimy skopiować cały plik i dodać tylko ten 1 link. Don't Repeat Yourself pełną gębą.
System szablonów (nie mówię o języku szablonów, ale bardziej o tym jak działa mechanizm ich ładowania, przekazywania do nich zmiennych itd.) w Rails nigdy mnie nie powalał. Dużo bardziej podoba mi się ten znany z Django. Mamy w nim tzw. bloki. Przenosząc ten mechanizm na nasz przykład mielibyśmy blok menu w głównym szablonie (application.html.erb) i bloki rozszerzające go w poszczególnych szablonach. Wyglądałoby to mniej więcej tak:
Prawda że wygodniej, schludniej i bardziej DRY?
* Briana Banks (ur. 21 maja 1978 w Monachium) - niemiecka aktorka występująca w filmach pornograficznych. [wikipedia.org] [która zdecydowanie nie jest dry (sucha) - autor]
As the name implies, inherited templates make template lookup follow the controller inheritance heirarchy if it can’t find a template for the current controller.Najłatwiej będzie to opisać fragmentami kodu.
Fragment kodu, który odpowiada za menu możemy przenieść do katalogu app/views/application, ponieważ każdy kontroler dziedziczy po ApplicationController.
Do tej pory wszystko wygląda wspaniale. Co jednak, jeżeli chcielibyśmy dodać jedną pozycję w menu np. dla NewsController? Nic prostrzego. Tworzymy app/views/news/_menu.html.erb w którym dodajemy link. Wspaniale! Co jednak, jeżeli mamy bardzo rozbudowane menu a dla jednego kontrolera chcemy dodać 1 (JEDNĄ!) pozycję? Tak! Musimy skopiować cały plik i dodać tylko ten 1 link. Don't Repeat Yourself pełną gębą.
System szablonów (nie mówię o języku szablonów, ale bardziej o tym jak działa mechanizm ich ładowania, przekazywania do nich zmiennych itd.) w Rails nigdy mnie nie powalał. Dużo bardziej podoba mi się ten znany z Django. Mamy w nim tzw. bloki. Przenosząc ten mechanizm na nasz przykład mielibyśmy blok menu w głównym szablonie (application.html.erb) i bloki rozszerzające go w poszczególnych szablonach. Wyglądałoby to mniej więcej tak:
Prawda że wygodniej, schludniej i bardziej DRY?
* Briana Banks (ur. 21 maja 1978 w Monachium) - niemiecka aktorka występująca w filmach pornograficznych. [wikipedia.org] [która zdecydowanie nie jest dry (sucha) - autor]
środa, 8 czerwca 2011
Java-Szkoły i kurs 6.001 (MIT)
Jakiś czas temu przeczytałem wpis Joel'a Spolsky'ego n/t "Java-Szkół". Tych, którzy chcą zapoznać się z wpisem odsyłam do oryginału [polskie tłumaczenie]. Blogosfera zawrzała - komentarze pod każdym z wpisów, wpisy typu "What if I went to a Java school, Joel?". Ale nie o tym wpis, nie będę (przynajmniej teraz) polemizował ze zdaniem Spolsky'ego.
Joel wychwala za to kurs 6.001 Structure and Interpretation of Computer Programs
Download:
Joel wychwala za to kurs 6.001 Structure and Interpretation of Computer Programs
This course introduces students to the principles of computation. Upon completion of 6.001, students should be able to explain and apply the basic methods from programming languages to analyze computational systems, and to generate computational solutions to abstract problems. Substantial weekly programming assignments are an integral part of the course. This course is worth 4 Engineering Design Points.Kurs chociaż bardzo stary (pierwsze wydanie podręcznika - 1985) jest bardzo ciekawy i warty obejrzenia. Tak, obejrzenia. Dostępne są nagrania wideo całego kursu prowadzonego przez twórców języka Scheme - Guy'a L. Steele'a i Gerald'a Jay Sussman'a. Co prawda sam Scheme nie jest dzisiaj szeroko używany, ale coraz popularniejszy staje się inny dialekt Lisp-a - Clojure (sam dzięki 6.001 zainteresowałem się Lispem i Clojure właśnie).
Download:
- Nagrania wideo dostępne są na stronie MIT [flash] oraz tutaj [mpeg/divx do bezpośredniego pobrania lub poprzez torrent].
- Podręcznik w wersji on-line
poniedziałek, 6 czerwca 2011
GNOME3 i GNOME Shell
Dawno temu, pisałem o GNOME Shell. Od jakiegoś czasu używam Fedory 15 z GNOME3 i powłoką GNOME Shell.
Subskrybuj:
Posty (Atom)