8 ms·
In Ruby that would be sleep 3.seconds Hard to to be more concise than that
by 33degrees 4y ago
In Ruby that would be
sleep 3.seconds
Hard to to be more concise than that
- inopinatus 4y agoAre we golfing? Because that's identical to sleep 3
- wyattpeak 4y agoAre we golfing? This whole discussion is about clarifying units.
- inopinatus 4y agoI must clarify, that was intended rhetorically, and in the most self-serving fashion; I try never to miss a golfing prompt
- mfkp 4y agoTechnically Ruby only accepts seconds. You're thinking of ActiveSupport from Rails.
- inopinatus 4y agoHere's a fun way to annoy a Rails developer. (Time.now + 1.month).to_i == Time.now.to_i + 1.month.to_i #=> false
- irjustin 4y agoNot sure why that's annoying? The right side doesn't really make sense. Though it does seem pretty easy for a novice to do thinking it's the same, but what does 1.month.to_i even mean!?
- inopinatus 4y agoActually taken almost verbatim from the report summarizing a real and subtle bug (distributed across multiple files) in code written by definitely-not-novices.
- lloeki 4y ago> 1.month.to_i Duration of a month in seconds? Before you balk at the idea, there exists a definition of a constant month duration for accounting stuff. I you hate dates - and yourself - try accounting, there's mind boggling stuff that makes the engineer mind recoil in absolute terror.
- neurostimulant 4y agoI'm not really familiar to RoR. Is is due to Time.now getting called twice and each returns slightly different value?
- deleted 4y ago[deleted]
- inopinatus 4y agoAlas, no. It's because ActiveSupport's duration arithmetic is not distributive under conversion. The expression on the left hand side advances time (as a domain object) by exactly a month, then converts the result to integer unix time. The expression on the right adds 2629746¹ to the current unix time. The conversion becomes dangerously magical in the presence of shared code that accepts both object and integer representations of time & duration. A consumer from one part of a system can inadvertently obtain different results to another unless they use identical calling conventions. [1] this is 1/12 of the mean length of a gregorian year² [2] 365.2425 days i.e. 31,556,952 seconds
- neurostimulant 4y agoOh wow. This is totally make sense when you think about it, but something that'll never cross my mind when casually checking the code. I guess this is why python's timedelta doesn't have month unit as the length of a month is highly context dependent.
- ativzzz 4y agoI would just use `1.month.from_now` instead of the additions anyway
- inopinatus 4y agoThat won’t save you; 1.month.from_now is implemented by addition.