- Lukasz Wrobel demystifies
nil
in Ruby
Why the id of nil is 4 in Ruby
- An older post by Neeraj Singh on
nil
'sobject_id
nil
in RubyWhy the id of nil is 4 in Ruby
nil
's object_id
fizzbuzz :: Int -> [String] | |
fizzbuzz n = take n $ addNums $ zipWith (++) fizz buzz | |
where fizz = cycle ["", "", "Fizz"] | |
buzz = cycle ["", "", "", "", "Buzz"] | |
addNums = zipWith numOrNot $ map show [1..] | |
numOrNot = \ x y -> if null y then x else y |
# Question source: http://codegolf.stackexchange.com/q/8574/12268 | |
# Write an algorithm in any programming language you desire | |
# that generates n unique randomly-distributed random natural | |
# numbers (i.e. positive integers, no zero), sum of which is | |
# equal to t, where t is bigger than or equal to n*(n+1)/2. | |
# Example: Generate 10 unique random natural numbers, sum of which is equal to 500. | |
def rand_sum(size, sum) |
require 'open-uri' | |
require 'dotenv' | |
require 'json' | |
require 'pry' | |
Dotenv.load | |
# Basic structure of a Guardian API request: | |
# BASE_URI + endpoint + queries + api-key + params |
# nsect takes an array and optional positive integer n (default is 3) | |
# and returns the array partitioned into n arrays, (n-1) of which are | |
# of size i, the nth partition being of size (i-1), i, or (i+1). | |
# Examples below: | |
def nsect(arr, n = 3) | |
i = (arr.size + 1) / n | |
ans = [] | |
(n-1).times do |j| | |
ans << arr[(0+j)*i...(1+j)*i] |
require 'prime' | |
def ulam_spiral(n) | |
matrix = Array.new(n) { Array.new(n) } | |
path = [*1..n*n].reverse | |
padding = (n*n).to_s.size | |
layer = 0 | |
until path.empty? | |
matrix[layer].map! { |l| l || path.shift } | |
matrix = matrix.transpose.reverse |
Here's today's scenario. I'm working on mocking requests to an API to test a Ruby wrapper I've built for it. I have a spec_helper
file with several convenience methods that look something like this:
# spec_helper.rb
# snip
def stub_get(path, options = {})
endpoint = DEFAULT_API_URL + path
headers = DEFAULT_HEADERS
stub_request(:get, endpoint)
Here's something to think about the next time you're twiddling your thumbs waiting for a bundle install
or gem push
command to finish running. Why did that take so long? Often we think of issues of speed solely in terms of the quality of our network connection and pay less attention to actual file sizes. I don't think anyone will argue, though, that given the same network speed, a 10MB file takes longer to download than a 100KB one. And if both did the exact same thing and you needed to download it and dozens of cousins like it, say, several times per week, wouldn't you prefer smaller?
Most of the gems we use on a daily basis weigh in at 2 - 36 times more than they need to. That's because, by default, they include a very important set of files for development that are unnecessary dead weight in a packaged gem — your tests. This issue filed by @sferik on the bundler
gem does an excellent job of summing this up.
Fortunately, th
Here's a scenario I found myself in recently. I was looking to fix a small bug in an open source project I admire. I forked the repo, checked out a feature branch, and got to work getting myself lost in the land of Minitest.
I have a habit of making small, atomic commits so I tend to run git status
frequently. On doing so, I noticed something like this:
$ git status
On branch fix-tpyo
Changes not staged for commit:
# snip
This is one of those things that was right in front of my face, but I figure it's worth a mention. I was trying to figure out the best way to view the source code for Clojure's frequencies
function — ideally while in a REPL. I found this older post mentioning a source
function in the clojure.contrib.repl-utils
namespace. I launched a REPL to see if I could use it and, well, here's what I saw:
$ lein repl
nREPL server started on port 58700 on host 127.0.0.1 - nrepl://127.0.0.1:58700
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.7.0_45-b18
Docs: (doc function-name-here)
(find-doc "part-of-name-here")