JRuby goeroe komt naar Nederland

Geplaatst door Michiel de Mare wo, 15 nov 2006 03:37:00 GMT

Op 19 december zal Charles Nutter bij Finalist in Rotterdam een lezing geven over zijn werk aan JRuby. Toegang is gratis.

Je kunt er hier meer over lezen, en je alvast opgeven. Wacht niet te lang, er is een beperkt aantal plaatsen.

Hopelijk zien we jullie daar!

Update: fix link

Geplaatst in ,  | 2 reacties

Vriendelijke URI's

Geplaatst door Matthijs Langenberg di, 14 nov 2006 11:38:00 GMT

Al sinds de web-2.Oh hype gestart is worden mooie URL’s als /articles/show/my-first-article en /users/profile/quentin geprefereerd boven /articles/show/324 en /users/profile/1225. Maar er kleven ook grote nadelen aan URL’s als /categories/meat/recipes/chunky-bacon, je stapt in feite van het gebruik van oplopende integers voor primary keys af.

Wat is het nut van je id veld in je articles tabel wanneer je in je URL’s het title veld gebruikt om artikelen de identificeren?

Want wat gebeurd er wanneer een gebruiker de titel van een artikel aan zou passen?

Lees verder...

Geplaatst in ,  | 3 reacties

De Lopende Band

Geplaatst door Michiel de Mare zo, 05 nov 2006 06:16:00 GMT

Stel, je hebt het volgende probleem: je hebt een ‘roman’ object, en je wil de coördinaten van het adres van de schrijver weten, zodat je die kan tonen in je nieuwe google maps mashup. Dat lijkt simpel:
roman.schrijver.adres.postcode.to_coordinates
Deze constructie, waarbij een aantal methodes aan elkaar worden geschakeld en de output van de ene de input van de volgende is, is een Design Pattern. Ik noem hem ‘De Lopende Band’.

Lees verder...

1 reactie

RESTful Rails

Geplaatst door Matthijs Langenberg do, 02 nov 2006 07:18:00 GMT

In de komende release van Rails gaat REST een belangrijke rol spelen, maar wat is REST nu eigenlijk?

REST staat voor REpresentational State Transfer, dit betreft het opvragen en wijzigen van resources waarbij gebruik wordt gemaakt van de vier standaard HTTP request methoden (namelijk: GET, POST, PUT en DELETE). REST is gebaseerd op het feit dat elke HTTP methode een te ondernemen actie op een resource (een ‘model’) vertegenwoordigt. Dit maakt het mogelijk om dezelfde URL voor meerdere acties te gebruiken. Stel dat ik het eerste artikel van een blog zou willen opvragen:
 GET /articles/1 
En nu wil ik hetzelfde artikel verwijderen:
 DELETE /articles/1 
Zoals je ziet blijft de URL hetzelfde en gebruik ik alleen een ander HTTP request. Aangezien requests binnenkomen bij een controller houd dit dus in dat er een mapping plaatsvind van HTTP methode naar controller actie en wel als volgt:
HTTP verb Controller Action CRUD Action
GET show READ
POST create CREATE
PUT update UPDATE
DELETE destroy DESTROY


Lees verder...

Geplaatst in ,  | 4 reacties

Living on the edge

Geplaatst door Matthijs Langenberg ma, 23 okt 2006 11:28:00 GMT

Binnenkort ga ik een serie artikelen schrijven over de nieuwe features die in edge rails, de ontwikkel versie van rails (ook wel trunk genoemd), te vinden zijn. Om jullie daar van mee te kunnen laten genieten vertel ik eerst hoe het mogelijk is om een applicatie in edge rails te laten draaien. De makkelijkste methode is om de meegeleverde rake taken te gebruiken. Door in een bestaande rails applicatie rake rails:freeze:edge uit te voeren wordt er een checkout van de trunk in ‘vendor/rails’ gedaan. Echter de directories en bestanden die gegenereerd zijn toen je rails my_app_name uitvoerde zijn niet bijgewerkt, hier is ook aan gedacht (uit rake --tasks): rake rails:update # Update both configs, scripts and public/javascripts from Rails.
        rails my_edge_app
        cd my_edge_app
        rake rails:freeze:edge
        rake rails:update
Hoewel ik het volste vertrouwen in de meegeleverde rake tasks heb geef ik toch de voorkeur aan een andere aanpak. Als ik nu eerst eens een checkout doe van de trunk versie en daar het ‘rails’ script uit vis, weet ik zeker dat mijn gehele applicatie ‘edge’ is, dit doe je op de volgende manier:
        mkdir -p my_edge_app/vendor
        cd my_edge_app
        svn export http://dev.rubyonrails.org/svn/rails/trunk vendor/rails
        ruby vendor/rails/railties/bin/rails
Wanneer je deze applicatie gaat importeren in subversion is het aan te raden om de vendor/rails map eerst te verwijderen voor de import te doen, hiermee voorkom je namelijk dat je de hele rails trunk meeneemt subversion in. Wanneer je subversion gebruikt is het aan te raden om de rails trunk als externals te gebruiken (dit is dus alleen mogelijk met een project in subversion).
        svn propset svn:externals "rails http://dev.rubyonrails.org/svn/rails/trunk/" vendor
        svn update #Zal de laatste trunk in vendor/rails plaatsen.
Elke keer als svn update wordt uitgevoerd zal vendor/rails ook geupdate worden.

You live on the edge!

Volgens mij maakt het niet uit welke van de twee methoden gebruikt om edge rails te gebruiken, persoonlijk geef ik de voorkeur aan de laatste, maar er zullen ongetwijfeld nog andere methoden zijn. In ieder geval kun je nu gebruik maken van de nieuwste features, waarvan ik RESTful routes en ActiveResource de meest indrukwekkende features vind, hierover later meer.

Geplaatst in ,  | geen reacties

Guru-sessie met Chad Fowler in Delft

Geplaatst door Danny Lagrouw ma, 16 okt 2006 10:04:00 GMT

LogicaCMG organiseert een aantal gratis toegankelijke sessies onder de noemer Guru4Pro. Op donderdagavond 2 november a.s. zal guru Chad Fowler een sessie verzorgen over innovaties in softwareontwikkeling. Hij zal in deze Guru4Pro ingaan op de kerninnovaties binnen het Rails framework (en de hype daarachter), met de bedoeling om de geleerde lessen naar andere omgevingen, zoals Java/J2EE, te vertalen die daar hun voordeel mee kunnen doen.

Chad Fowler is o.a. auteur van Rails Recipes en co-auteur van de Pickaxe, is organisator van RubyConf en RailsConf, en geeft regelmatig workshops over Ruby on Rails.

Deelname aan deze avond (inclusief diner en meet&greet met Chad) is geheel gratis. Voor meer informatie en aanmelding: www.logicacmg.com/nl/guru4pro.

Geplaatst in , ,  | 4 reacties

proto prototype

Geplaatst door Remco van 't Veer do, 12 okt 2006 00:12:00 GMT

Laatst sprak ik iemand die rails gebruikt om prototypes te bouwen voor J2EE web applicaties omdat het zo lekker snel werkt. Het uiteindelijke project wordt uitgewerkt in J2EE. Ten opzichte van J2EE is er met rails erg snel iets in elkaar te zetten maar wat doe je als je een prototype nodig hebt voor een rails site?

Je kan natuurlijk gewoon beginnen met rails fancy_shit en los gaan. Vroeg in de ontwerp fase van een project vind ik dat een beetje overkill, als je alleen maar een beetje wilt goochelen met een paar objectjes om gevoel te krijgen voor het probleem wat je probeert op te lossen.

versus

Gelukkig is er iets veel beters dan rails voor dit soort dingen!

Lees verder...

Geplaatst in  | 3 reacties

Project Persia

Geplaatst door Michiel de Mare ma, 25 sep 2006 04:41:00 GMT

Afgelopen maand heb ik, gesponsord door mijn werkgever, aan een Rails project gewerkt. Lees er hier meer over.

geen reacties

RailsConf Europe was een succes!

Geplaatst door Remco van 't Veer za, 23 sep 2006 05:37:00 GMT

Vorige week was ik in London om RailConf Europe bij te wonen. Het waren 2 dagen maal 4 tracks met in totaal 40 presentaties. Helaas heb ik ze niet allemaal bij kunnen wonen. Zie voor wat ik wel bij heb gewoond m’n privé blog artikelen over de eerste en de tweede dag.

Lees verder...

Geplaatst in ,  | geen reacties

Kan dit makkelijker?

Geplaatst door Michiel de Mare do, 07 sep 2006 05:07:00 GMT

Er zijn een paar dingen die ik regelmatig tegenkom in Ruby, en waarvan ik denk dat het makkelijker kan. Dit bijvoorbeeld:
x = foo(y)
return x if x
Wat ik liever zou zeggen is:
only_return_if foo(y)
Een andere is dit:
x = {}
arr.each {|o| x[o] = foo(o) }
Hier zou ik liever zeggen:
arr.make_hash {|o| [o, foo(o)] }
Of de tegenhanger:
x = {}
arr.each {|o| x[o.foo] = o }
Dat schrijf ik liever als:
arr.key_hash &:foo

Voor het bovenste probleem heb ik geen oplossing – de andere kan ik zelf wel aan array toevoegen, maar ik gebruik veel liever een oplossing zonder ‘monkey patching’.

8 september: Update

Het kan! Niet met mijn syntax, maar wel iets vergelijkbaars:
def iff(a)
  yield a if a
end

def foo(a)
  iff(a) {|x|return x}
  'het mocht niet zo zijn'
end

foo('ja!') => 'ja'
foo(nil)     => 'het mocht niet zo zijn'

Geplaatst in  | 5 reacties

Oudere artikelen: 1 ... 11 12 13 14 15 ... 20