Skip to content

Instantly share code, notes, and snippets.

@seki
seki / main.m
Created October 11, 2017 17:37
test tool for AB shutter (Bluetooth Remote Shutter)
//
// main.m
// abs3
//
// Created by Masatoshi SEKI on 2017/10/12.
// Copyright © 2017年 Masatoshi SEKI. All rights reserved.
//
#if 0
- Connected to device UUID: C9529529-C937-45B4-B3B6-D1476FFB111B Named: AB Shutter3
- UUID 2A50 Read Value: 0x028A2466820100
@seki
seki / mono_rinda.rb
Created May 24, 2017 20:08
Fibered TupleSpace
# frozen_string_literal: false
require 'rinda/tuplespace'
require 'bartender/bartender'
module Bartender
class Queue
def initialize
@reader = []
@queue = []
end
@seki
seki / http0serv.rb
Last active August 16, 2017 01:24
http0serv.rb
require 'webrick'
require 'drb/drb'
require 'drb/http0'
require 'thread'
module DRb
module HTTP0
def self.open_server(uri, config)
unless /^http:/ =~ uri
@seki
seki / risp.rb
Created February 11, 2017 16:21
cons on Rinda
require 'rinda/tuplespace'
require 'drb'
class Risp
Ptr = Struct.new(:ptr)
class Ptr
def initialize(ptr)
self.ptr = ptr
end
@seki
seki / dot.rb
Last active August 16, 2017 01:42
Rinda sample for Nagoya RubyKaigi
require 'drb'
require 'rinda/tuplespace'
module Rinda
module_function
def rinda_eval(ts)
ts = DRbObject.new(ts) unless DRbObject === ts
pid = fork do
Thread.current['DRb'] = nil
DRb.stop_service
@seki
seki / bp.rb
Last active August 16, 2017 01:31
# based on http://d.hatena.ne.jp/pcl/20110625/p1
srand(0)
class Perceptron
def initialize(n_hidden, eta)
@n_hidden = n_hidden
@n_output = nil
@eta = eta
@wih = Hash.new{ rand }
@seki
seki / bartender.rb
Created October 2, 2016 09:18
bartender for mruby
# -*- coding: utf-8 -*-
module Bartender
class App
class FDMap
def initialize; @map = {}; end
def []=(fd, v)
@map[fd.to_i] = [fd, v]
end
def [](fd)
_, v = @map[fd.to_i]
@seki
seki / gist:641cabb835005c32c140096918db8d5a
Created October 2, 2016 09:16
これをプルリクするには!
diff --git a/src/io.c b/src/io.c
index c9b1a8e..f0f8ff2 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1042,6 +1042,113 @@ mrb_io_sync(mrb_state *mrb, mrb_value self)
}
void
+mrb_fd_set_nonblock(mrb_state *mrb, int fd)
+{
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