Geplaatst door Michiel de Mare
wo, 06 feb 2008 06:27:00 GMT
De meeste web-applicaties lijken niet veel met random getallen van doen te hebben, online-pokersites natuurlijk uitgezonderd (hoop ik), maar toch komen ze verbazend veel van pas. Daarom introduceer ik vandaag een nieuwe notatie voor kans.
# het kan natuurlijk zo:
redirect_to home_url if rand < 0.2222
# dit is al beter
redirect_to home_url if rand(9) < 2
# maar niet zo mooi als dit
redirect_to home_url if 2.in 9
# de code
class Numeric
def in(other)
rand(other) < self
end
end
Geplaatst in ruby, dagmethode | 5 reacties
Geplaatst door Michiel de Mare
wo, 06 feb 2008 06:00:00 GMT
Most web-applications do not appear to have a lot to do with random numbers, online poker sites excepted (I hope), but they are surprisingly useful nevertheless. That’s why I’m introducing a new notation to express chance.
# this certainly works
redirect_to home_url if rand < 0.2222
# this is better
redirect_to home_url if rand(9) < 2
# but not as beautiful as this
redirect_to home_url if 2.in 9
# the code
class Numeric
def in(other)
rand(other) < self
end
end
Geplaatst in ruby, english, daily_method | geen reacties
Geplaatst door Michiel de Mare
di, 05 feb 2008 08:00:00 GMT
We’d like to introduce a new blog category: Our Daily Method. We’ll demonstrate short, general purpose methods, which might be suitable for the standard library. We’re accepting requests!
We’ll kick off with Range#coerce. The problem is: you’ve got a value and you wish to ensure that it’s within a certain interval. Sounds ideal for a Range, but it’s missing from Ruby’s Range, although there’s include?
(and in Ruby 1.9 cover?
) to test whether the value is in the range.
Hence the following:
class Range
def coerce(x)
x < first ? first : x > last ? last : x
end
end
(1..12).coerce(999)
Geplaatst in ruby, english, daily_method | geen reacties
Geplaatst door Michiel de Mare
di, 05 feb 2008 08:00:00 GMT
We introduceren een nieuwe feature: de methode van de dag. Hierin demonstreren we een korte, algemeen toepasbare methode. We doen aan verzoekjes!
Vandaag beginnen we met Range#coerce. Het probleem: je hebt een waarde, en je wilt garanderen dat deze binnen een bepaald interval ligt. Klinkt ideaal voor een Range. Een Range heeft wel een methode om te testen of een waarde erbinnen ligt (include?
) maar niet om de waarde te forceren.
Vandaar het volgende:
class Range
def coerce(x)
x < first ? first : x > last ? last : x
end
end
(1..12).coerce(999)
Geplaatst in ruby, dagmethode | Tags dagmethode | 5 reacties
Geplaatst door Michiel de Mare
ma, 04 feb 2008 03:46:00 GMT
Tijdens het staren naar de volgende code, kreeg ik opeens een lumineus idee.
specialism_codes.map {|code| SPECIALISMS[code] }
Waarom moet ik een block maken om te mappen van een lijst codes naar een lijst beschrijvingen, als die codes en beschrijvingen allemaal netjes in een constante zitten? Is dat niet juist wat een Hash is, een mapping van een domein naar een bereik? Is dat niet precies de definitie van een functie in de wiskunde? Waarom dan toch dat block?
Enfin, dat was snel opgelost:
class Hash
def to_proc
lambda {|x| self[x] }
end
end
specialism_codes.map &SPECIALISMS
Geplaatst in ruby | geen reacties
Geplaatst door Remco van 't Veer
di, 25 dec 2007 22:20:00 GMT
Hoera! Wat een prachtig kerstkado! Er is heel veel nieuws te ontdekken!
Geplaatst in ruby | 2 reacties
Geplaatst door Remco van 't Veer
ma, 24 dec 2007 11:18:00 GMT
Module View Controller is mooi maar soms moet je heel creatief zijn om een oplossing in die mal te proppen. In dergelijke gevallen is een meer lowlevel aanpak veel doeltreffender. In het geval waar ik tegenaan gelopen ben, wil ik audio streams serveren vanuit een Rails applicatie. Om precies te zijn: ik wil MP3 bestanden automatisch omzetten naar een lager bitrate en deze over het netwerk sturen zodat er aan de andere kant naar geluisterd kan worden. Daar is weinig MVC aan, al is het alleen maar dat er niets te view-en valt!
Nog even in het kort, was is Mongrel? Mongrel is een webserver (grotendeels) geschreven in Ruby. Ruby versie 1.8 is standaard uitgerust met een web server genaamd WEBrick maar deze is niet snel en efficient genoeg voor openbare productie web applicaties. Mongrel daarentegen is een kruising tussen een windhond en een poedel, snel en niet stuk te krijgen. Het beestje is multi-threaded en kan daarmee honderden aanvragen tegenlijk afhandelen.
Lees verder...
Geplaatst in ruby, ruby on rails, tips | 5 reacties
Geplaatst door Remco van 't Veer
zo, 09 dec 2007 10:30:00 GMT
Satish Talim begint maandag 7 januari met een nieuwe Ruby cursus. Deze wordt online gegeven, is gericht op programmeurs zonder Ruby kennis en is geheel gratis!
Heb je een duwtje nodig om in Ruby te duiken? Is Rails wel leuk maar houdt Ruby je uit het spoor? Meld je aan en ga met ongeveer 100 meer dan 700 anderen aan de slag! Kan je meteen een goed voornemen afstrepen!
Geplaatst in ruby, onderwijs, events | 3 reacties
Geplaatst door Michiel de Mare
ma, 29 okt 2007 02:16:00 GMT
Symbol#to_proc kenden we al een hele tijd. Hiermee kun je zeggen: users.map(&:name)
zonder een block te gebruiken.
Maar nu is er ook String#to_proc
String#to_proc werkt heel anders – je kunt bijvoorbeeld argumenten opgeven. Bij de Symbol variant was de eerste block-parameter de receiver, en de rest waren de argumenten: :slice.to_proc['hello',2,2] #=> 'll'
Met String#to_proc kun je zelf bepalen wat er met de parameters moet gebeuren: 'x*x'.to_proc[3]
Wat ook leuk is, is dat weggelaten parameters automatisch gedetecteerd en ingevuld worden.
(1..5).map &'*2'
Kortom, allemaal leuke truucjes. Niet iets voor productiecode (maar dat verwachten jullie inmiddels ook niet meer van mij) maar wel leuk om mee te spelen.
Geplaatst in ruby | geen reacties
Geplaatst door Michiel de Mare
di, 02 okt 2007 22:17:52 GMT
Heb je wel eens dat je een stukje code hebt waarvan je denkt: dat moet mooier kunnen. Of wil je in actie zien hoe andere mensen hun code refactoren? Dan is er nu refactormycode.com
Nee, het is geen grap – deze site bestaat, werkt goed en is leuk! Ruby wordt ondersteund, maar ook o.a. Javascript, Java, en Python.
Geplaatst in ruby, web 2.0 | 3 reacties