% ruby -I../lib tiny_drb.rb
% 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"]]
require 'drip' | |
class Driprox | |
def initialize(drip, port, remote_host, remote_port) | |
@drip = drip | |
@server = TCPServer.new(port) | |
@hostname = remote_host | |
@port = remote_port | |
@origin = @drip.write(nil, 'start') | |
end |
module OnGC | |
module_function | |
def on_gc(&blk) | |
ObjectSpace.define_finalizer(Object.new, &blk) | |
end | |
end |
# -*- 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 |
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)} |