denhaag.rb

Geplaatst door Michiel de Mare za, 10 jan 2009 09:55:00 GMT

We hebben er weer een nieuwe telg aan de .rb familie bij! denhaag.rb houdt 26 januari zijn eerste bijeenkomst

Daarnaast aanstaande maandag de tweede aflevering van ACK (Amsterdam Coders Kollective) – amsterdam.rb met laptops.

Nog even en je kunt elke dag van de maand bier drinken en over Ruby praten!

Geplaatst in ,  | geen reacties

Clojure Aanroepen Vanuit JRuby

Geplaatst door Michiel de Mare vr, 12 dec 2008 11:50:00 GMT

Alleen in het Engels

Geplaatst in  | Tags ,  | geen reacties

Calling Clojure From JRuby

Geplaatst door Michiel de Mare vr, 12 dec 2008 11:23:00 GMT

Clojure is a new functional programming language based on Lisp, running on the JVM. Even though Clojure is only a year old, there’s already a book being written about it.

Since this is a Ruby site, and Rails is still the best framework for web-apps regardless of language, I’ll demonstrate how to call Clojure functions from a JRuby Rails-app.

Lees verder...

Geplaatst in , , ,  | Tags ,  | 4 reacties

Rails, ik hou van je, maar...

Geplaatst door Michiel de Mare vr, 05 dec 2008 17:46:00 GMT

... er zijn grenzen.

require 'benchmark'
n = 100_000
Benchmark.bm do |x|
  x.report { n.times { 7.days.ago } }
  x.report { ago = 7.days ; n.times { Time.now - ago } }
  x.report { ago = 7.days.to_i ; n.times { Time.now - ago } }
  x.report { n.times { 7.days } }
  x.report { n.times { Time.now - 604800 } }
end

718.480000 195.710000 914.190000 (950.268875)
694.320000 192.130000 886.450000 (917.117917)
 24.570000   8.550000  33.120000 ( 33.580123)
 43.620000  12.120000  55.740000 ( 56.452434)
 24.860000   8.310000  33.170000 ( 34.039006)

Het verschil zit hem in allerlei tijdzoneberekeningen die de eerste versie uitvoert. Maar wat kunnen mij die schelen? 950 microseconden om uit te rekenen hoe laat het vorige week was, daar zou een Commodore 64 zich voor schamen!

Ter vergelijking, dit kost 34 microseconden in Ruby 1.8, 13 microseconden in JRuby, en 0.04 microseconden in Clojure

Geplaatst in ,  | Tags  | geen reacties

Empathie R B

Geplaatst door Michiel de Mare do, 04 dec 2008 02:06:00 GMT

Heb je je wel eens afgevraagd hoe het zou zijn om de wereld te ervaren als een ander? Hoe het zou zijn om George Bush te zijn. Of een gehate dictator. Hoe de wereld eruit ziet door de ogen van je geliefde Fido. Of door die van Blub, de goudvis van je neefje. Hoe zou een vleermuis het leven ervaren? Hoe een HashWithIndifferentAccess?

Dankzijn irb is het nu eindelijk mogelijk om een antwoord op die vragen te krijgen. Als je in een irb-sessie irb object invoert, dan start je een nieuwe subsessie waarbij jij self dat nieuwe object wordt. Je bekijkt de wereld dus door de ogen van dat object (net als instance_eval, alleen krijg je nu meteen feedback per instructie. Overigens is instance_eval een vreselijke saaie naam – ik stel voor mind_control of snatch_soul).

>> modern = Tag.find_by_name 'modern'
=> #<Tag id: 1070167864, name: "modern">
>> irb modern
>> name
=> "modern" 
>> photos.count
=> 483
>> irb photos.first
>> tags.map &:name
=> ["baden", "badkamer", "eenvoudig", "grijs"]
>> irb brand
>> collections.map &:name
=> ["glassbath", "ifiumipo"]
>> jobs
=> #0->irb on main (#<Thread:0x341ac>: stop)
#1->irb#1 on #<Tag:0x20440> (#<Thread:0x1f8>: stop)
#2->irb#2 on #<Photo:0x1fcec> (#<Thread:0x1f8>: stop)
#3->irb#3 on #<Brand:0x1f9b0> (#<Thread:0x1f0>: running)
>> fg 2
=> #<IRB::Irb: @context=#<IRB::Context:0x1fcc820>>
>> large?
=> false
>> irb_exit

Zoals je ziet kun je verschillende subsessies open hebben staan. Met jobs krijg je een overzicht, met fg schakel je over naar een andere sessie, en met irb_exit sluit je de huidige sessie af.

Met alleen irb maak je een schone sessie aan, waarin je kunt experimenteren zonder je huidige bindings te veranderen.

Geplaatst in  | 1 reactie

Enumerable#otherwise

Geplaatst door Remco van 't Veer vr, 07 nov 2008 11:02:00 GMT

Hoe vaak heb je niet iets als het volgende geschreven?


if results.empty?
  puts "no results" 
else
  results.each do |result|
    puts "- #{result}" 
  end
end

In een poging om alle lijsten in een web applicatie te kunnen voorzien van een mededeling dat de lijst leeg is, zijn we tot de volgende constructie gekomen:


results.each do |result|
  puts "- #{result}" 
end.otherwise do
  puts "no results" 
end

Door simpelweg Enumerable uit te breiden met:


module Enumerable
  def otherwise
    empty? ? yield : self
  end
end

Hiermee kan je ook:


results = search_terms.otherwise{['kittens']}.map{|term| search(term)}

Als je de otherwise methode ook nog eens in de NilClass stopt maakt het zelfs niet meer uit of search_terms in het bovenstaande voorbeeld nil of een lege collectie is.

Geplaatst in ,  | 4 reacties

Leesbare boolean parameters

Geplaatst door Michiel de Mare do, 30 okt 2008 14:34:00 GMT

Soms heb je methodes met een flink aantal parameters, waarvan een aantal booleans zijn. Je aanroep ziet er dan bijvoorbeeld als volgt uit:


button(name, url, false, true, false)

Wat de boolean options betekenen is een volslagen raadsel, zonder er de source bij te pakken, zelfs als je al bekend bent met de methode. Dat is waarom ruby programmeur vaak option hashes gebruiken.

Maar wat dacht je van de volgende notatie:


button(name, url, !:use_form, :icon_only, !:default)

:icon_only evalueert tot true en !:use_form tot false.

Zo wordt het meteen duidelijk wat de booleans betekenen. Wel moet je de volgorde van de parameters goed hebben (in tegenstelling tot een option hash), maar wie de bovenstaande code leest kan de methode-aanroep veel makkelijker begrijpen.

Geplaatst in  | 3 reacties

Twente.rb gaat deze maand live!

Geplaatst door Remco van 't Veer di, 07 okt 2008 09:49:00 GMT

Lokale Ruby gebruikers groepen schieten als paddestoelen uit de grond. Het begon met Amsterdam.rb, snel volgde Utrecht.rb, vorige maand de eerste (?) Ruby samenscholing in Groningen en deze maand gaat Twente.rb een kroeg bezetten.

De aankondiging van de organisatoren:

Sinds begin 2008 is er in Amsterdam met regelmaat een Amsterdam.rb: een meeting voor Ruby (on Rails) programmeurs. Klinkt natuurlijk enorm gezellig, maar als je vanuit het wonderschone Twente moet komen is dat toch wel een hele onderneming. Omdat er in Twente veel Ruby (on Rails) ontwikkelaars rondlopen, leek het ons leuk om de aftrap te geven voor Twente.rb. Het doel: ervaringen uitwisselen, elkaar wat leren en natuurlijk een gezellige avond hebben!

Op woensdag 29 oktober zal de eerste Twente.rb plaatsvinden. We ontmoeten elkaar om 20:00 uur in cafe de Beiaard aan de Oude Markt in Enschede. Iedereen is van harte welkom, zegt het voort! En vergeet je niet aan te melden bij onze Google Group!

Met vriendelijke groet,
Roderick van Domburg – Nedforce
Edwin Vlieg – BlueTools
Joost Diepenmaat – BlueTools

Wat is eigenlijk de status van Eindhoven.rb? Ene.. zijn er echt geen Rotterdammers die een kroeg excuus zoeken?

Geplaatst in , ,  | 3 reacties

De Nederlandse RubyFlow heet... RubyWeb

Geplaatst door Danny Lagrouw za, 02 aug 2008 06:47:00 GMT

Op 30 juli is een nieuwe Nederlandse Ruby-gerelateerde site van start gegaan: RubyWeb.nl. RubyWeb begint als Nederlandstalige kopie van het internationale RubyFlow.com. In een interview vroeg ik oprichter Tom-Eric Gerritsen naar zijn verdere plannen.

Danny: Wat is het idee achter RubyWeb?

Tom-Eric Gerritsen, oprichter van RubyWeb.nl Tom-Eric: Ik ben RubyFlow begonnen om 2 redenen. Ik miste zelf een goede Nederlandstalige versie van RubyFlow waar ik ook Nederlandstalige weblogs mee kon vinden. Daarbij wil ik in de toekomst graag meer gaan doen met de Nederlandse community. Ik heb het idee dat er in Nederland nog redelijk veel Ruby-developers zitten die wel graag naar Utrecht of Amsterdam voor bijvoorbeeld een Ruby koffiemeeting willen komen, maar dat niet kunnen omdat ze te ver weg wonen. Ik hoop dat ik door de community bij elkaar te krijgen er straks ook bijeenkomsten bij hen in de buurt kunnen worden georganiseerd en de beste manier om de community bij elkaar te krijgen leek me een RubyFlow-achtige website.

Lees verder...

Geplaatst in , ,  | geen reacties

MagLev verplaatst naar de Seaside-dag op ESUG

Geplaatst door Remco van 't Veer wo, 23 jul 2008 12:08:00 GMT

De ESUG conferentie is een stuk interessanter geworden voor Rubyisten omdat de MagLev en Seaside presentaties verhuist zijn naar één en dezelfde dag. Bericht van de organisatie:

MagLev verplaatst naar de Seaside-dag, te weten de donderdag. Dit is extra interessant voor Rubyists omdat ze nu op 1 dag voor €210,- zowel de MagLev als de Seaside presentaties bij kunnen wonen.

Highlights uit het donderdagprogramma:

  • De GLASS en Maglev presentaties worden gegeven door GemStone, waarvan key developers op de conferentie zullen zijn.
  • Web Velocity combineert Seaside met toegang tot relationele databases. Ontdek hoe snel web development kan zijn.
Er zijn veel Seaside-experts aanwezig en er is gelegenheid hands-on ervaring met Seaside op te doen.

Geplaatst in ,  | geen reacties

Oudere artikelen: 1 2 3 ... 12