Skip to content

Instantly share code, notes, and snippets.

@seki
seki / periodic_cue.rb
Created April 28, 2025 14:54
RubyKaigiの立ち話の際にお話しした遅延が蓄積されないsleepの件です!! (sequencer.rbは実際に動かして試していません)
class PeriodicCue
def initialize(*interval)
@interval = interval.cycle
@time = nil
end
def sleep_until(t)
sleep((t - Time.now).clamp(0..))
end
require 'singleton'
require 'monitor'
require 'drb'
module DRb
class DRbObjectSpace
include Singleton
include MonitorMixin
def initialize
@seki
seki / my_svg.rb
Last active June 9, 2024 03:58
text to svg (for debugging)
require 'erb'
class MySVG
include ERB::Util
SRC = <<EOS
<svg xmlns='http://www.w3.org/2000/svg'><%
x = 10
dy = 18
y = dy
font = 16
@seki
seki / rdv_csp.rb
Created May 12, 2024 14:46
Rdv for CSP study
require 'rinda/tuplespace'
class Rdv
def initialize(ts=nil)
@ts = ts || Rinda::TupleSpace.new
end
def select?(*chan)
template = Template.new(*chan)
t, k = @ts.take([template, nil])
@seki
seki / capture.rb
Last active November 16, 2023 07:39
capture
require 'erb'
class ERB
class ERBOut
Buffer = String # SafeBuffer if rails
def initialize(s='')
@str = Buffer.new(s)
end
@seki
seki / drb25.rhtml
Created May 23, 2023 09:18
dRuby25th logo study
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.bubble {
transition: all 0.5s;
}
</style>
@seki
seki / ndir07.rb
Last active October 11, 2022 10:38
epea ndir-07 reader
require 'serialport'
require 'json'
class EpeaNdir07
def initialize
@dev = "/dev/tty.usbserial-12210"
end
def get_ppm
sp = SerialPort.new(@dev, 115200)
@seki
seki / p5.rb
Created December 9, 2021 11:14
create 16bit PGM
name = ARGV.shift || 'p5.pgm'
buf = "P5 256 256 65535\n" + (0...(256 ** 2)).to_a.pack('n*')
File.write(name, buf)
require 'discordrb'
module Discordrb::Voice
class VoiceBot
def play_internal
count = 0
@playing = true
# Default play length (ms), will be adjusted later
@length = IDEAL_LENGTH
@seki
seki / charset.rb
Created September 12, 2021 22:03
dicom charset converter; import from js
# coding: us-ascii
module DCM_CharSet
class InvalidCharSet < RuntimeError
end
# https://github.com/cornerstonejs/dicomParser/issues/146
module_function
def parse_charset(dcm_00080005)
charset = dcm_00080005
ary = charset ? charset.strip.split('\\').map {|x| x.strip.upcase} : []