Skip to content

Instantly share code, notes, and snippets.

@rklemme
rklemme / sc.rb
Created January 4, 2011 08:31
Sample answer for thread "Threading in ruby"
require 'thread'
# explicit type for items that we process here
Item = Struct.new :name, :sha1, :meta
# dummies
def sha1(x) x.hash end
def update_metadata(it) it.meta = Time.now end
#
@rklemme
rklemme / mda.rb
Created January 10, 2011 14:31
Multi Dimensional Array
class MultiDimensionalArray
def self.[](*dimension_sizes)
new(*dimension_sizes)
end
def self.cube(dimensions, dimension_size)
new(*Array.new(dimensions, dimension_size))
end
def initialize(*dimension_sizes)
@rklemme
rklemme / work.rb
Created January 25, 2011 10:11
Sample work distribution across processes
require 'set'
LOCK = Mutex.new
num = Integer(ARGV.shift || 4)
processes = Set.new
Signal.trap "INT" do |s|
$stderr.puts "Shutdown"
@rklemme
rklemme / FailedApproach.java
Created March 13, 2011 13:28
Sample code for dealing with self conscious parametrized types
package generics2;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* Base comparable class with "type self consciousness".
*/
class BaseC implements Comparable<BaseC> {
@rklemme
rklemme / 1_rx.rb
Created March 25, 2011 08:24
Recursive regular expression
irb(main):032:0> s="x(a(b)()c)y"
=> "x(a(b)()c)y"
irb(main):033:0> %r{(?<ne> \( (?:\g<ne>|[^()]+)* \) )}x.match s
=> #<MatchData "(a(b)()c)" ne:"(a(b)()c)">
irb(main):034:0> s = "f_(a)(x)=x^(2)+(5x//f'(x))"
=> "f_(a)(x)=x^(2)+(5x//f'(x))"
irb(main):045:0> s.scan %r{(?<ne> \( (?: \g<ne> | [^()] )* \) )}x
=> [["(a)"], ["(x)"], ["(2)"], ["(5x//f'(x))"]]
@rklemme
rklemme / PropVsMeth.java
Created March 29, 2011 15:04
Example demonstrating two approaches to implement boolean properties for enums
public final class PropVsMeth {
/** We use boolean properties. */
public enum Prop {
A(true, true), B(true, false), C(false, true);
private final boolean a;
private final boolean b;
@rklemme
rklemme / OptionParserExample.rb
Created April 6, 2011 12:51
Example usage of OptionParser with type safety.
require 'optparse'
first = last = nil
OptionParser.new do |opts|
opts.on '-s', '--start=LINE', Integer, 'Start line' do |v|
first = v
end
opts.on '-e', '--end=LINE', Integer, 'End line' do |v|
@rklemme
rklemme / lv.rb
Created April 29, 2011 11:21
Optimize Lookups for ruby-talk 382374
require 'benchmark'
REP = 10
Benchmark.bm 20 do |x|
pixels = Array.new(258000, rand(256)).freeze
old_lv = nil
@rklemme
rklemme / TskWp.java
Created May 9, 2011 13:42
Example implementation of thread safe 1:n association (untested though).
package clj;
import java.util.HashSet;
import java.util.Set;
/**
* Example code.
*
* @author rklemme
* @see <a href="https://groups.google.com/group/comp.lang.java.programmer/browse_frm/thread/295e9e9fb6b3e489">comp.lang.java.programmer</a>
@rklemme
rklemme / enum.rb
Created May 20, 2011 15:00
Yet another enum...
class Enum
module EnumMember
attr_reader :args
def [](idx)
args[idx]
end
end
class <<self