21 # .textbringer.rb require 'drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:8085') queue = Queue.new ro.connect(queue) module Textbringer class Controller def self.execute_keyboard_macro(ary) c = current c.next_tick { c.execute_keyboard_macro(ary) } end end end Thread.new do while true Textbringer::Controller.execute_keyboard_macro([queue.pop]) end end 😟
♪ ♪ ♪♪ ♪♪♪♪♪♪♪ ♪ ♪ ♪ readparital write def update event = @queue.readpartial(@cursor, 100) @cursor = event.last.first value = {} delta = {} event.each do |k, v| case v[1] in Integer value[v[0]] = v[1] in Float delta[v[0]] ||= 0 delta[v[0]] += v[1] else end end value.each do |k, v| @app.documents.first.layers.first.color_adjustments.send(k).set(normalize(k, v)) end delta.each do |k, d| org = @app.documents.first.layers.first.color_adjustments.send(k).get v = (org + d).clamp(ColorAdjustment[k]) @app.documents.first.layers.first.color_adjustments.send(k).set(v) end end def run_updater Thread.new do while true update end end end Block until data is available, then read up to 100 items.
♪ ♪ ♪♪ ♪♪♪♪♪♪♪ ♪ ♪ ♪ readparital write def update event = @queue.readpartial(@cursor, 100) @cursor = event.last.first value = {} delta = {} event.each do |k, v| case v[1] in Integer value[v[0]] = v[1] in Float delta[v[0]] ||= 0 delta[v[0]] += v[1] else end end value.each do |k, v| @app.documents.first.layers.first.color_adjustments.send(k).set(normalize(k, v)) end delta.each do |k, d| org = @app.documents.first.layers.first.color_adjustments.send(k).get v = (org + d).clamp(ColorAdjustment[k]) @app.documents.first.layers.first.color_adjustments.send(k).set(v) end end def run_updater Thread.new do while true update end end end event compression controlling Pixelmetor Pro
dRuby Ractor Ractor.new(rinda) do |ts| while true ts.break('nq_loop') sym, size, r1, r2 = ts.take([:nq, Integ ts.log([:nq_begin, r1, r2]) ts.write([:nq_ans, size, r1, r2, NQueen ts.log([:nq_end, r1, r2]) end end def take_a(rinda, size) found = 0 size.times.reverse_each do |r1| size.times.reverse_each do |r2| tuple = rinda.take( [:nq_ans, size, r1, r2, nil]) rinda.log(tuple) found += tuple[4] end end found end
dRuby Ractor Ractor.new(rinda) do |ts| while true ts.break('nq_loop') sym, size, r1, r2 = ts.take([:nq, Integ ts.log([:nq_begin, r1, r2]) ts.write([:nq_ans, size, r1, r2, NQueen ts.log([:nq_end, r1, r2]) end end def take_a(rinda, size) found = 0 size.times.reverse_each do |r1| size.times.reverse_each do |r2| tuple = rinda.take( [:nq_ans, size, r1, r2, nil]) rinda.log(tuple) found += tuple[4] end end found end