Ruby

RubyでTAPを使ったトンネリングプログラムを実装してみる

こちらのサイトでシンプルなPythonの実装が配布されていたので、Rubyでも実装してみました。 require "socket" TUNSETIFF = 0x400454ca IFF_TAP = 0x0002 PEER = "192.168.0.100" PORT = 9876 tap = open("/dev/net/tun", "r+") tap.ioctl(TUNSETIFF, ["tap%…

任意のアセンブリコードを仮想マシンで実行しちゃうRuby gemを作ってみた

このブログエントリはカーネル/VM Advent Calendar 2013 25日目の記事です。前回、カーネル/VM探検隊で「バインディングさえあればスクリプト言語でもゲストOSローダを実装出来る」という話をちらっとしました(資料)。今回の記事では、ゲストOSロ…

OSvもmrbgemsみたいな感じに簡単にextensionを追加できるといいよね→やってみた

mrubyってRubyのgemsみたいな感じに拡張をmrbgemsっていう方式で追加できるんですが、mrubyの用途から言ってどこかのディレクトリにダイナミックリンクライブラリ+Rubyファイルで配置とかやってほしくなくてmruby本体に直接リンクしといて欲しいという感じ…

OSvへmruby-cfuncを移植してみたらとてもあっさりと動いた話

OSvへmrubyを移植してみたらとてもあっさりと動いた話 - かーねる・う゛いえむにっきの続きです。さて、OSvでmrubyが動くようになったのですがmrbgemsを追加していないのでこのままではAPIがむっちゃ少なくてなにも書けません。 でもmrbgemsの移植ってそれぞ…

OSvへmrubyを移植してみたらとてもあっさりと動いた話

注:この記事はカーネル/VM+K*BUG勉強会@関西 ごかいめのダイジェスト版です。 詳しくは、以下の動画とスライドをご覧下さい。 OSvは、OpenJDKを仮想環境で高速に動かす事を目指していて、ユーザは基本的にJavaアプリケーションしか実行しないという前提にな…

そんなわけでオレオレifconfigをRubyで書く為のC拡張「ruby-netif」を書いてみました。

こちら。こんな感じにRubyスクリプトでNICを設定できるぜいえーい eth = Netif.new("eth0") eth.up eth.mtu = 1000 eth.set_addr("172.0.0.1", "255.255.255.0") puts "addr:#{eth.addr}" puts "netmask:#{eth.netmask}" puts "broadaddr:#{eth.broadaddr}" …

MacRubyでておくれる

こんな適当な変更をでっち上げて、MacRubyに食わせたら何が起きるかなぁと実験してたら、思いがけない意味不明なエラー食らった。ナニコレ。 $ macruby mikutter.rb /Library/Frameworks/MacRuby.framework/Versions/0.12/usr/lib/ruby/1.9.2/monitor.rb:219…

9月から今日までのデイリーの変更点をCVSサーバから取得したい

9月から今日まで、OpenBSD/sgiへどのような変更が加えられてきたのか調べたいと思ったので、1日毎にdiffを取ってみた。 9月から今日までの分全部のdiffだと大きすぎるので、デイリーでバラすというのが実現したかった事。本当はシェルスクリプトで済ませ…

ruby/json

http://json.rubyforge.org/ 高々jsonのパーサーを実装するのにも結局Cを用いている。 いや、速いだろうよ。でもなんか、それってrubyが遅いって言ってしまっている気がしてならんし、気分的にしっくりこないなー。 1.9系ではこういう事しないですむくらいに…

Ruby/DBI + MySQLで日付型のタイムゾーンが変

これはバグちゃうのか。設定の問題なのか??? #!/usr/bin/ruby require 'dbi' dbh = DBI.connect("DBI:Mysql:dbname:hostname", "username", "password") sth = dbh.execute('SELECT NOW()') sth.fetch do |row| p row[0] p row[0].to_time p Time.now p (…