Skip to content

Instantly share code, notes, and snippets.

View ledsun's full-sized avatar

shigeru.nakajima ledsun

View GitHub Profile
t = Thread.new {
p 'hi thread'
sleep 3
p 'bye thread'
}
fork do
p 'hi process'
t.join
p 'bye process'
@ledsun
ledsun / druby_before_fork.rb
Created April 27, 2019 05:59
DRb.start_serviceする前にDRbObject.new_with_uriすれば良いので
require 'drb'
uri = 'druby://localhost:54000'
kvs = Hash.new
fork do
sleep 0.1
kvs = DRbObject.new_with_uri uri
kvs['greeting'] = 'hello, world'
end
require 'drb'
uri = 'druby://localhost:54000'
kvs = Hash.new
DRb.start_service uri, kvs
fork do
DRb.start_service # この行をコメントアウトすると出力が"hello, world"からnilになる
kvs = DRbObject.new_with_uri uri
kvs['greeting'] = 'hello, world'
@ledsun
ledsun / generate_controllers_from_routes.rb
Last active April 5, 2019 11:10
rails routesの実行結果から、コントローラーを生成するコマンドを生成する
def parse line
line.split(' ').last.split('#')
end
lines = readlines
controllers = lines.reject do |line|
line.include? 'Controller#Action'
end.reduce({}) do |hash, line|
name, method = parse line
hash[name] ||= {}
@ledsun
ledsun / index.md
Last active February 5, 2019 12:05
技術書典6向け新刊「Ruby 並行・並列大全」の目次案
  • 並行と並列
    • 並行すると嬉しいとき
    • 並列すると嬉しいとき
  • 並列処理
    • Kernel#fork API
    • 課題:結果の同期
  • ノンプリエンプティブな並行処理
    • 継続
    • Fiber
  • 課題:制御の切り替え
@ledsun
ledsun / main.rb
Last active January 7, 2019 09:08
ラグザイアで使っているgemの一覧を取得するRubyスクリプト
require 'net/http'
require 'json'
require "base64"
API = 'https://api.github.com'
uri = URI API
def request_with_token url
req = Net::HTTP::Get.new URI url
req['Authorization'] = "token #{ENV['token']}"
@ledsun
ledsun / main.rb
Created October 24, 2018 02:16
Net::HTTPがスレッドセーフでないことを確認する
require 'net/http'
require 'json'
uri = URI 'http://13.231.133.131/ea67874a-4718-4190-945d-6cd76e4efeae'
http = Net::HTTP.new uri.hostname, uri.port
http.start
req = Net::HTTP::Get.new uri.path
responses = []
thread_A = Thread.start { responses << http.request(req) }
@ledsun
ledsun / database.yml
Last active August 3, 2018 01:12
Rails で2つのDBを使う
shared_development:
<<: *default
database: second_db_development
username: postgres
password: password
host: db
@ledsun
ledsun / require-libxmljs-twice.js
Created June 23, 2018 06:20
libxmljsを二回読むとエラーが起きる
~ node --experimental-worker require-libxmljs-twice.js
events.js:167
throw er; // Unhandled 'error' event
^
Error: Module did not self-register.
at Object.Module._extensions..node (internal/modules/cjs/loader.js:731:18)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
@ledsun
ledsun / gist:fdde69ee92330530b9eb51fa97fb8f3f
Created June 23, 2018 06:14
複数のスレッドで同一のlibxmjsを読み込むとエラーが起きる?
Error: Module did not self-register.
at Object.Module._extensions..node (internal/modules/cjs/loader.js:731:18)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at bindings (/Users/shigerunakajima/page-rank-for-qiita/node_modules/bindings/bindings.js:81:44)
at Object.<anonymous> (/Users/shigerunakajima/page-rank-for-qiita/node_modules/libxmljs/lib/bindings.js:1:99)
at Module._compile (internal/modules/cjs/loader.js:702:30)