日記のタイトルを変更しました

標題の通り、日記のタイトルを変更しました。


今の自分に出来ることなんて本当に少ししかないんだけれど、やりたいことだけは物凄く沢山あって、どこからどう手をつけていけばいいのか全然分からないという現状。この現状をひとまず受け入れた上で、とにかくやりたいことをまずは全部やってみよう!という結論に至り、今回の日記タイトル変更となりました。


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大学の講義資料っぽいので、もしかして海外の大学ではこんなの常識みたいなアレですか。そうですか。
でもこの命令だとカーソル位置が変更されないので、自分でカーソル動かすところまでセットにして関数作った方が良さそう。
その関数では改行コードとかそういうのも考慮しないといけない感じかなー。


とりあえず今日は気分が良いのでここまで!

近況

最近ゲームか仕事に関係するような勉強しかしてないので、なかなかアウトプットできません…


働き始める前は「家では仕事と関係ないプログラミングをしたい」って思ってたはずなのに!><
あまりに仕事で要求される方面の知識が無さ過ぎて自習せざるをえない…


安西先生…OS作りの続きがやりたいです…

Sambaの設定

WindowsUbuntu鯖でファイル共有をしようと思ったら予想外に苦戦しました…。
Windowsのユーザー名とUbuntuでのユーザー名が違ってるのが原因でうまくアクセスできていなかったようなので、とりあえずユーザー名をマッピングして解決しました。


/etc/samba/smb.conf

(略)
username map = /path/to/mapping_file
(略)

/path/to/mapping_file

linux_username="windows_username"

みたいな感じで設定。
手抜きっぽい手段ですがまぁとりあえず動けばいいです。
そう遠くないうちに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の録画に期待!

RubyKaigi2009開催中

今日からRubyKaigi2009が始まりました!
7/17-19の3日間の開催となっていて、今回はスタッフとして参加させてもらっています!


これまで一般参加者として参加していましたが、今回スタッフとして参加することで、今までとは違った新しい経験を沢山させていただいています。
RubyKaigiをniceに出来るよう全力で働きつつ、この経験の中から少しでも多くのことを身につけたいと思います。


それでは、明日以降もniceなRubyKaigiに出来るように頑張ります!