Skip to content

Instantly share code, notes, and snippets.

module OnGC
module_function
def on_gc(&blk)
ObjectSpace.define_finalizer(Object.new, &blk)
end
end
@seki
seki / tiny_drb.md
Last active September 22, 2015 08:15

run server

% ruby -I../lib tiny_drb.rb

run client (irb)

% irb -r drb
irb(main):001:0> ro = DRbObject.new_with_uri('druby://localhost:12345')
irb(main):002:0> ro.hello(1, 2.0, "3")

=> ["hello", [1, 2.0, "3"]]

@seki
seki / bartender.rb
Last active August 16, 2017 01:43
読み書きしてみてから、休む
# -*- coding: utf-8 -*-
require 'socket'
require 'fiber'
module Bartender
class App
def initialize
@input = {}
@output = {}
end
#!/usr/bin/ruby
footprint = File.mtime("/tmp/haltkey") rescue Time.at(1)
if Time.now - footprint < 10
File.write("/sys/class/leds/led0/trigger", "timer")
File.write("/sys/class/leds/led0/delay_on", "250")
File.write("/sys/class/leds/led0/delay_off", "125")
system("/sbin/halt")
else
File.write("/sys/class/leds/led0/trigger", "mmc0")
end
#!/usr/bin/ruby
File.write("/sys/class/leds/led0/trigger", "heartbeat")
File.write("/tmp/haltkey", Time.now.to_s)
ATTRS{idVendor}=="0781", ATTRS{serial}=="200607753009D74236F6", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/home/pi/ledh.sh"
ATTRS{idVendor}=="0781", ATTRS{serial}=="200607753009D74236F6", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/home/pi/ledx.sh"
#!/bin/sh
echo timer > /sys/class/leds/led0/trigger
echo 250 > /sys/class/leds/led0/delay_on
echo 125 > /sys/class/leds/led0/delay_off
@seki
seki / HC-SR04.rb
Last active August 29, 2015 14:19
HC-SR04.rb
module GPIO
module_function
def export(n, dir)
File.open("/sys/class/gpio/export", "w") do |fp|
fp.write(n.to_s)
end
sleep 0.1
File.open("/sys/class/gpio/gpio#{n}/direction", "w") do |fp|
fp.write(dir)
module Enumerable
def product_enum(*other)
return to_enum(__method__, *other) unless block_given?
if other.empty?
each {|x| yield([x])}
else
car, *cdr = other
each do |x|
car.rewind
car.product_enum(*cdr) {|y| yield([x] + y)}
@seki
seki / rpg.rb
Created January 25, 2015 15:22
for OSX. It will give my talk to you using Kyoko.
rate = 210
while line = gets
line.chomp!
puts
if line.empty?
sleep(0.7)
next
end
puts(line)
IO.popen("say -r #{rate}", "w") do |say|