Time Zones

Geplaatst door Michiel de Mare do, 28 mei 2009 21:28:00 GMT

Tijdfuncties in Rails zijn op sommige punten nogal wankel. Zo zou je verwachten dat Time.now en 0.seconds.ago gelijk zijn. Dat is niet zo:

>> Time.now
=> Thu May 28 23:28:37 +0200 2009
>> 0.seconds.ago
=> Thu, 28 May 2009 23:28:42 CEST +02:00

Nadere inspectie leert dat Time.now een normaal Ruby Time instantie is, terwijl 0.seconds.ago een ActiveSupport::TimeWithZone object is.

En dat kan een flink verschil maken! Bij deze code bijvoorbeeld:
>> Time.now.to_s(:db)
=> "2009-05-28 23:33:08" 
>> 0.seconds.ago.to_s(:db)
=> "2009-05-28 21:33:16" 

De to_s(:db) method wordt gebruikt in find queries en named scopes, en bovenstaand verschil maakt dat het gebruik van Time.now, Time.parse en Time.at af te raden is wanneer het als database-parameter gebruikt kan worden. Rails converteert Time instanties wel in TimeWithZone objecten bij ActiveRecord-attributen. Als alternatief kan Time.zone.now etc. gebruikt worden.

Kortom: u.published_at = Time.now werkt prima, maar wanneer je in je environment.rb een lokale tijdzone hebt staan, gaat dit verkeerd in Rails 2.3.2:
named_scope :begun, proc{{:conditions => ['started_at < ?', Time.now]}}

Weest op uw hoede!

Recommend Michiel de Mare

Tags ,  | 5 reacties

denhaag.rb

Geplaatst door Remco van 't Veer do, 07 mei 2009 14:45:00 GMT

Op 11 mei vindt alweer de 3de denhaag.rb meeting plaats.

Deze keer niet in de kroeg maar op het strand van Scheveningen, bij Bora Bora.

Voor meer details → http://dhrb.org

Geplaatst in  | 1 reactie

Deventer.nl genomineerd voor de Grand Prix Webcommunicatie

Geplaatst door Remco van 't Veer wo, 04 maa 2009 11:01:00 GMT

Een oproep van nedforce:

Beste allemaal,

De Ruby on Rails versie van Deventer.nl die we vorig jaar live hebben gebracht is genomineerd als één van de elf voor de prestigieuze Grand Prix Webcommunicatie, en daar mogen we als Nederlandse Rails community trots op zijn!

We gaan natuurlijk voor de winst en kunnen alle stemmen gebruiken op http://www.grandprixwebcommunicatie.nl/stemmen. Stemmen kan zonder registratie en binnen een minuut.

Alvast bedankt en zegt het voort!

Met vriendelijke groet,

Roderick

Geplaatst in  | 1 reactie

Amsterdam.rb februari registratie

Geplaatst door Remco van 't Veer do, 22 jan 2009 09:59:00 GMT

Volgende maand pakt TTY groots uit als gastheer van de februari amsterdam.rb bijeenkomst. Er staan op dit moment drie interessante presentaties op het programma. Ik zelf kijk erg uit naar de presentatie van Ola Bini over Ioke. Maar Ruby en Rails komen ook aanbod in combinatie met OpenStreetMap en UML.

De verwachtte opkomst is groot en de ruimte beperkt. Om de brandweer (en natuurlijk vooral TTY zelf) gerust te stellen is daarom registratie noodzakelijk:

http://amsterdamrb.eventbrite.com/

Geplaatst in  | geen reacties

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

Onderzoek adoptie Ruby on Rails

Geplaatst door Remco van 't Veer do, 18 dec 2008 09:19:00 GMT

Maarten doet onderzoek naar de acceptatie van Ruby on Rails in het bedrijfsleven. Om informatie te verzamelen heeft hij een enquête opgesteld. Hij vraagt maar een paar minuten van je tijd;

Beste redactie,

Als student Business Informatics aan de Universiteit Utrecht wil ik jullie vragen om mij te helpen met het vinden van respondenten voor mijn afstudeeronderzoek. Ik verricht onderzoek naar de adoptie van Ruby on Rails door ontwikkelaars in het bedrijfsleven. Met behulp van een vragenlijst hoop ik een theoretisch model te valideren dat de adoptie van Ruby on Rails voorspelt en verklaart. Ik ben op zoek naar professionele web applicatie ontwikkelaars (ervaring met Ruby on Rails is niet noodzakelijk), die mijn enquête willen invullen.

De enquête bestaat uit twee pagina’s met vragen en het duurt ongeveer 5 minuten om het in te vullen. De mogelijkheid bestaat om een email adres achter te laten, zodat ik later de resultaten van het onderzoek naar de respondent toe kan sturen. Het is ook geheel anoniem in te vullen.

De enquête is hier te vinden: www.cs.uu.nl/survey/ror

Ik zou het geweldig vinden als jullie het onderzoek op jullie blog onder de aandacht kunnen brengen, want ik ben dringend op zoek naar meer respondenten. Als jullie nog vragen hebben over het onderzoek, stel ze gerust. Bij voorbaat dank!

Met vriendelijke groet,
Maarten Nefkens

Maarten heeft belooft de uitkomsten met ons te delen.

Geplaatst in , ,  | 1 reactie

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

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

Recommend Michiel de Mare

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.

Recommend Michiel de Mare

Geplaatst in  | 1 reactie

Oudere artikelen: 1 2 3 ... 20