Ruby

Ruby で遅延ストリーム(コピペ)

お気楽Rubyプログラミング入門/番外編 遅延評価と遅延ストリーム 下はこのページのコードをまとめたもの(コピペ)。lazystream.rb # # lazystream.rb : 遅延ストリーム # # Copyright (C) 2017 Makoto Hiroi # # 遅延評価 class Delay def initialize(&func…

dRuby サンプル

dRuby はネットワーク上で Ruby のオブジェクトを遠隔操作するものです。ここからコピペしてやってみる。ただし元サイトが右クリックでコピペできないようにしているので、コードをそのまま写しておきます。Linux Mint 18.2, Ruby 2.3.3 で確認。 druby_serv…

スプライン曲線(メモ)

3次スプライン補間(PDF) Ruby - 3次スプライン補間! - mk-mode BLOG http://d.hatena.ne.jp/mscp/20091228/1261968512 Ruby実用例 〜スプライン補間〜 - [物理のかぎしっぽ] setup diary(2012-02-18) 直接は関係ないが、Ruby で GSL(GNU Scientific Li…

Ruby で ODE(Open Dynamics Engine) メモ

物理エンジン ODE(Open Dynamics Engine)と RubyGoogle検索 GitHub - ged/ruby-ode: A Ruby binding for the Open Dynamics Engine™ Ruby-FFIでODEを動かす実験 - ハード屋のヨコ好き rubyで3D物理シミュレーション - urekatのスカンク日記3

method_missing の謎(Ruby)

irb(main)> class A irb(main)> def method_missing(m, *args) irb(main)> p m irb(main)> p args irb(main)> end irb(main)> end => :method_missing irb(main)> b = A.new => #<A:0x00000001f18870> irb(main)> b.nyao(:a) :nyao [:a] => [:a] irb(main)> b.nyao = "pu" :nyao=</a:0x00000001f18870>…

OpenStruct のコードリーディング(Ruby)

~/Documents/Ruby/コードリーディング/ostruct.rb の一部 class OpenStruct def initialize(hash=nil) #Hash{@table} @table = {} if hash hash.each_pair do |k, v| k = k.to_sym @table[k] = v end end end attr_reader :table def modifiable #@modifiabl…

Ruby の Fiber

Fiber は結構複雑なのです。Fiber.yield がなければ、Fiber は resume で呼び出される proc オブジェクトみたいなもの。ただし、1回しか呼び出せない。 f = Fiber.new do |st| st.upcase end p f.resume("tokyo") #"TOKYO" p f.resume("tokyo") #a.rb:6:in `…

Ruby の Gem メモ

salamander タートルグラフィックス。 RubyGem 'Salamander' がようやく動いたよ - Marginalia parallel 並列処理。 thor Ruby でコマンドを作る。 Ruby の Thor でコマンドを作る - Marginalia sdl SDL を Ruby から使う。アクションゲームなどが作れたりす…

Ruby FFI(メモ)

https://www.google.co.jp/search?q=ruby+ffi Ruby FFIを使ったエクステンションの作り方 - Boost Your Programming! Ruby-FFIについて調べてみた。(まとめ) - いものやま。 ffi | RubyGems.org | your community gem host c - How do I handle ruby array…

簡単なプロセス間通信(Ruby)

Thread と IO.pipe を使ってみます。 read, write = IO.pipe Thread.new do while (a = read.gets) != "end\n" print a end end 5.times do write.puts "send!" sleep(rand(3) + 1) end write.puts "end" write.close read .close 結果。適度にスリープしな…

GTK+ で簡単なテキスト入力(Ruby)

Gtk::TextView を使う。 require 'bundler/setup' require 'gtk2' def text_window w = Gtk::Window.new w.signal_connect("destroy") {Gtk.main_quit} w.set_size_request(300, 200) w.title = "TextView" t = Gtk::TextView.new w.add(t) b = t.buffer w.s…

Pages about Ruby and others

覚え書き。Advanced Enumeration with Ruby - via @codeship | via @codeshipIs WEBrick Webscale? - schneems.comDoes Programming Language Popularity Matter? Introduction to Concurrency Models with Ruby. Part I10 Tips for Writing Better CodeGitH…

RubyGem 'Salamander' がようやく動いたよ

RubyGem 'Salamander' が動かないよ - Marginalia RubyGem の Turtle グラフィックス・ライブラリの使い方がわからないかったのだが、ようやく動き始めた。例えばこんな感じ。 require 'bundler/setup' require 'salamander' include Salamander include Sal…

シアタースクエア(CF-1A)

http://codeforces.com/problemset/problem/1/A 問題 time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputBerland の首都にあるシアタースクエアは n×m メートルの長方形をしている。市の記念日に、ス…

Gviz 使用例

require 'bundler/setup' require 'gviz' g = {1=>[3], 2=>[4], 3=>[4, 5], 4=>[6], 5=>[6], 6=>[7, 11], 7=>[8], 8=>[13], 9=>[10], 10=>[11], 11=>[12], 12=>[13], 13=>[14]} gv = Gviz.new gv.graph do global rankdir: 'LR' g.each {|k, v| route k => v…

「最長片道切符」を算出することについてのメモ

このところ探索問題を続けて解いて(迷路、エイト・クイーン)、ふと「最長片道切符」が気になった。僕は「最長片道切符」のことを、多くの人と同じであろう、宮脇俊三氏の『最長片道切符の旅』で知った。試しに「最長片道切符」でぐぐってみると、興味深い…

無題

Chipmunk(物理エンジン)+ Ruby/SDL ?Reflexion(参照)がすごそうなのだが、Mac only なのだよね…。 http://www.nicovideo.jp/mylist/47096431

RubyGem 'Salamander' が動かないよ

Ruby で Turtle グラフィックスができるらしい Gem で 'Salamander'(参照)ってのを見つけたのだが、Linux Mint 18 + Ruby 2.3.3 では動かないよ。インストールは Bundler でふつうにできる。Ruby/SDL に依存しているようだが、Ruby/SDL も Bundler が勝手…

Generic Programming(Ruby)

その数式、プログラムできますか?作者: Alexander A. Stepanov,Daniel E. Rose,株式会社クイープ出版社/メーカー: 翔泳社発売日: 2015/05/19メディア: 単行本(ソフトカバー)この商品を含むブログ (9件) を見る

Ruby インタラクティブ・グラフィック TODO

Ruby でインタラクティブなグラフィック処理をしたい。ゲームを作るわけではない。ただ、line() と書いたらそこで線が描かれてほしいのである。つまり、fork とかでグラフィック用のサーバを作りたい。手持ちには GTK+ 用に自分で作った Gem 'oekaki' がある…

RubyGem 'atk' が入らない

$ bundle update で謎のエラーが出る。Linux Mint 18。 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/tomoki/Documents/Ruby/vendor/bundle/ruby/2.3.0/gems/atk-3.1.6/dependency-check rake RUBYARCHDIR…

rbenv install --list の更新

$ cd ~/.rbenv/plugins/ruby-build $ git pull origin master ※参考 rbenv install -l のリストを更新する - nafuruby’s diary

Ruby の Thread と Queue 覚え書き

q = Queue.new Thread.start do while prc = q.pop prc.call end end loop do q.push(proc {puts "test"}) sleep(1) end 実行結果。 test test test ..

新しい OS に Ruby の野良Gem を gem install コマンド同等でインストール(個人メモ)

まず GitHub に SSH接続しなければならないので GitHub に SSH 接続 - Camera Obscura のとおりにやる。$ cd ~/Documents/Ruby のあと、git clone する。 $ git clone git@github.com:obelisk68/utils.git として、 $ cd utils $ rake install で gem が出来…

無題

Ruby on Rails なんだって。誰かの twitter から。

「C言語入門」の PDF化

C言語入門 このページを Ruby でスクレイピングして PDF化する。 require 'mechanize' def tx_save(page, fname) n = page.index("<title>") page.insert(n, '<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">') open(fname,"w+") {|io| io.write(page)} end Dir.chdir('/home/***/man') #作業用フォルダ url = 'ht</meta>…

「C言語 関数リファレンス」の pdf化

http://www.orchid.co.jp/computer/cschool/cref.html このページを Ruby でスクレイピングして pdf化する。 require 'bundler/setup' require 'mechanize' Dir.chdir('/home/***/man') url = 'http://www.orchid.co.jp/computer/cschool/cref.html' `wkhtml…

OpenGL の Ruby ミニライブラリ

もう一度 Ruby で OpenGL してみる - Marginalia まだ開発中です。miniopengl.rb require 'opengl' require 'glu' require 'glut' require 'matrix' include Gl, Glu, Glut, Math module MiniOpenGL class Tool def initialize @clear_clr = [0, 0, 0] @clea…

rb ファイルの pdf化(シンタックスハイライト付き)

Ruby の rbファイルを pdf化して読むにはどうしたらよいか調べました。モノクロでよければ RB PDF 変換。オンライン フリー — Convertio というサイトがあり、ウェブサービスでブラウザ経由でファイルを読み込み、変換してダウンロードします。 簡単で便利で…

Capybara + Poltergeist

Linux Mint 18 で確認。 PhantomJS の導入。 Download PhantomJS からバイナリ・ファイルをダウンロードしてきて phantomjs を /usr/local/bin/ にコピーする。 $ phantomjs -v 2.1.1 Gem を入れる。 gem 'nokogiri' gem 'poltergeist' gem 'capybara' requi…