Skip to content

Instantly share code, notes, and snippets.

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
@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)}