Skip to content

Instantly share code, notes, and snippets.

@seki
seki / forktest.rb
Last active October 14, 2019 10:31
close on fork
require 'drb'
def test_fd
sleeper = DRbObject.new_with_uri('druby://localhost:50097')
ary = 20.times.collect {
Thread.new { sleeper.sleep(5) }
}
ary.each {|th| th.join}
@seki
seki / grip.rb
Created July 7, 2019 09:15
a simple kvs using git (rugged)
require 'rugged'
require 'cgi'
class Grip
def initialize(dir)
@dir = dir
@git = Rugged::Repository.new(@dir) rescue git_init
@author = {email: 'seki@ruby-lang.org', name: 'seki'}
@message = 'via grip'
end
require 'thread'
class Crawler
def initialize(root='.', pattern='**/*.rb', period=5)
@root = File.expand_path(root)
@pattern = pattern
@period = period
@last = {}
@queue = SizedQueue.new(2)
end
@seki
seki / sqlite3-util.rb
Created August 27, 2018 12:22
sqlite3-util.rb
class SQLite3::Database
def statement(s)
if @cache.nil?
@cache = Hash.new { |h, k| h[k] = self.prepare(k) }
end
@cache[s]
end
end
class SQLite3::Statement
@seki
seki / fact.rb
Created May 27, 2018 16:27
MinRuby with Rinda
write("fact", 1, 1)
n = 2
while n <= 10
eval("fact", n, take("fact", n - 1, nil)[2] * n)
n = n + 1
end
p take("fact", 10, nil)
@seki
seki / root.rb
Last active April 30, 2018 16:56
minruby + STM
require 'my_drip'
MyDrip.invoke
def root
Root.new
end
class Root
class VersionMismatchError < RuntimeError; end
@seki
seki / 05_toteka.txt
Last active March 18, 2018 03:39 — forked from vestige/05_toteka.txt
05下書き
** テーマ『自画自讃』
とちぎテストの会議05を開催します。
** 概要
- 日時: 2018/05/12(土) 11:00
- 場所: [http://nasu-hh.com:title=那須野が原ハーモニーホール]
- 定員: 50名
** タイムテーブル
- 11:00 開場
class Array
def keys
0...size
end
end
def find(it, key, &blk)
it.keys.each do |k|
v = it[k]
k == key ? yield(v) : find(v, key, &blk)
@seki
seki / interp.rb
Last active February 2, 2018 03:26
minruby.succ
require "minruby"
def mark_tail(tree, genv)
case tree && tree[0]
when "func_call"
mhd = genv[tree[1]]
if mhd == nil || mhd[0] == "user_defined"
tree[0] = "tail"
end
when "stmts"
eleven:ruby mas$ svn diff lib/drb/drb.rb
Index: lib/drb/drb.rb
===================================================================
--- lib/drb/drb.rb (revision 61162)
+++ lib/drb/drb.rb (working copy)
@@ -1673,6 +1673,7 @@
client.close unless succ
if Thread.current['DRb']['stop_service']
Thread.new { stop_service }
+ break