日記のタイトルを変更しました
標題の通り、日記のタイトルを変更しました。
今の自分に出来ることなんて本当に少ししかないんだけれど、やりたいことだけは物凄く沢山あって、どこからどう手をつけていけばいいのか全然分からないという現状。この現状をひとまず受け入れた上で、とにかくやりたいことをまずは全部やってみよう!という結論に至り、今回の日記タイトル変更となりました。
RubyKaigiのスタッフを通して「あんな風になりたい!」と思う人に沢山会うことが出来て、私事としてやりたい・出来るようになりたいことが沢山出てきました。一方、会社での仕事の内容が徐々に実際の業務に関わるようになってきて、仕事として必要なことも沢山出てきました。
これら全てを、とりあえず、全部、やりたい。
そういうわけで、この場所に新しく踏み出した一歩一歩の足跡を残すという意味づけをして、これからも日記を書いていきたいと思います。
テキストモードで色を出したい件について の続き
前回の記事で目をつけていた通り、INT 10/AH=09hの命令で色つきの文字を出すことに成功しました!!!
とりえあえずコードはこんな感じー
MOV AH,0x00 ; 画面モード設定 MOV AL,0x03 ; 80字*25行 16色 テキストモード INT 0x10 MOV AH,0x09 ; 属性付き文字表示 MOV AL,'*' ; 表示する文字 MOV BH,0 ; ページ番号 MOV BL,0x0c ; 文字属性 (明るい赤) MOV CX,1 ; 文字の繰り返し数 INT 0x10
こんな感じのコードを実行することで * を表示させることが出来ました!
やばい!超盛り上がる!!
なんか昔のBASIC弄ってた少年達ってこんな気持ちだったんじゃないかっていう気がしました。
何かよく分からないんだけど手探りで命令探してとにかく打ち込むみたいな。
いや、ホントのとこはどうなのか知らないけど。
どうなんでしょうか。
BLに設定する文字属性ってのが鍵で、ここに設定する属性の情報をこちらのサイトで発見したのでした。
カナダのRegina大学の講義資料っぽいので、もしかして海外の大学ではこんなの常識みたいなアレですか。そうですか。
でもこの命令だとカーソル位置が変更されないので、自分でカーソル動かすところまでセットにして関数作った方が良さそう。
その関数では改行コードとかそういうのも考慮しないといけない感じかなー。
とりあえず今日は気分が良いのでここまで!
Sambaの設定
WindowsとUbuntu鯖でファイル共有をしようと思ったら予想外に苦戦しました…。
Windowsのユーザー名とUbuntuでのユーザー名が違ってるのが原因でうまくアクセスできていなかったようなので、とりあえずユーザー名をマッピングして解決しました。
/etc/samba/smb.conf
(略)
username map = /path/to/mapping_file
(略)
/path/to/mapping_file
みたいな感じで設定。
手抜きっぽい手段ですがまぁとりあえず動けばいいです。
そう遠くないうちにMacに買い替えるつもりですし。
あとは明日以降にOS自作入門のやつの開発環境を整えていこうかな、という感じですね。
IO.popenで遊ぶ
IO.popenでRのインタプリタを開いてRubyからRを操作出来ないかなーと思ってちょっと弄ってみました。
ちなみに遊びとかではなくて普通にRubyからRを使いたい場合はRSRubyというライブラリがちゃんとあるのでそちらでどうぞ。
で、とりあえず適当に書いてみたのがこちら。
require 'timeout' def eval_r(io, message) ret = [] io.puts(message) loop do begin timeout(1) do line = io.gets unless line == nil then ret << line else return "" end end rescue Timeout::Error break end end ret.shift return ret.join end #init r = IO.popen("R --vanilla", "r+") eval_r(r, "") # main puts eval_r(r, "a <- c(1,2,3)") puts eval_r(r, "sum(a)") # dispose r.puts "q()" eval_r(r, "") r.close
Rと対話するのに一番の問題は、R側の出力を全て受け取って入力待ち状態になった事をどうやって検出するのか、という点です。このサンプルではとりあえずgetsがタイムアウトしたら入力待ち状態という事にしていますが、これだと処理が重いコードを渡した時に確実に駄目ですね…。しかも毎回タイムアウト待ちするから大変遅いです。あとまぁ"a <- c(1,2,3)"を評価してもirbと違って評価結果が表示されないとか他にも問題は色々と。
やっぱりRSRubyと同様に、C拡張を作ってCからRを直接操作するしかないのかなぁ…
RubyKaigi2009の記憶
長いようで短い3日間が終わりました。
参加された皆様お疲れ様でした!
あまりにも密度が濃すぎて、まだ自分の中でも今回のRubyKaigiを通して感じたことがまとめきれていないのですが、
間違いなく、この経験が今後の自分にとって大きな影響を持つ特別なものになると強く感じています。
考えをまとめるのと、仕事の事情が落ち着くまで、あと1ヶ月ほど、時間を下さい。
自分の答えを決めたいと思います。
おまけ:
これまでのRubyKaigiと何が違うってセッション殆ど見れてないからセッション毎の感想とか書けないんですよね。KaigiFreaksの録画に期待!