Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

3ヶ月研修

ruby-electric

3ヶ月研修の最終日になって,ruby-electricを知りました。これは,「class 」,「def 」を入力すると,自動的に「end」を挿入してくれたり,「"」を入力すると,終わりの「"」を挿入してくれたりと非常に便利です。以下のように設定します。 (require 'ruby-…

Benchmarkクラス

6月5日にRubyの拡張ライブラリについて学習したのですが,ベンチマークをとるスクリプトがPerlになっていたので,Rubyで書いてみました。3ヶ月研修の報告書に載せるため用です。20000番目の素数を求めるためにかかった処理時間を計測しています。 require 'b…

まとめに入る

6月から始まった3ヶ月研修も残すところわずかになってきました。そろそろ報告書を作成しなければと思い,Mac OS X+LaTeX+Emacs+YaTeXな環境で作成しているのですが,「Ctrl+c t j」でdviファイルまで作成したあと,dvipdfmxコマンドでPDFに変換し,open foo.…

27章分の27章

今日は、『プログラミングGauche』の 26章 継続渡しによるWebアプリケーション 27章 Kahuaアプリケーションを書こう を読みました。 26章 19章を読んだときに、「継続」恐怖症になったので(^^)、本章は理解できないのではと思ったのですが、なんとか読むこと…

27章分の25章

今日は、『プログラミングGauche』の 24章 GaucheでCGIスクリプトを書いてみる 25章 スケジュール管理アプリケーション を読みました。 24章 SchemeスクリプトをCGIスクリプトとして実行するための環境設定には以下を参考にしました。 http://karetta.jp/art…

27章分の23章

今日は、『プログラミングGauche』の 22章 データベース 23章 日付と時間 を読みました。 22章 コマンドライン版のスケジュールデータベースを、 ファイルに直接read/writeで記録する方法 dbmモジュールを使った方法 RDBMSを使った方法 という風に順を追って…

27章分の21章

今日は,『プログラミングGauche』の 19章 継続(昨日からの継続…) 20章 モジュールシステム 21章 デバッグ を読みました。 19章 昨日,読んでほとんど意味が分からなかったので,今日も取り組んでいます。 http://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A …

Ubuntuのインストール

「継続」を理解できなかったので,気分転換にUbuntu 8.04 LTSをインストールしてみました。まだインストールしただけですが,良さそうです。

27章分の19章

今日は,『プログラミングGauche』の 18章 構文の拡張 19章 継続 を読みました。 19章 難しいです…。読みながら落ち込みそうになりましたが,p288の中で, ここまでの議論が一度に理解できなくても,心配しないでください。筆者も,今まで一度も継続に触れた…

27章分の17章

今日は,『プログラミングGauche』の 16章 さまざまなデータ構造 17章 総称関数とオブジェクト を読みました。 16章 本章の最後に出てくる「ストリーム」は難しいですが,不思議で面白いです。フィボナッチ数列は以下のように定義できるそうですが, gosh> (…

27章分の15章

今日は,『プログラミングGauche』の 10章 テストと例外処理 11章 評価モデル 12章 数値 13章 文字と文字列の処理 14章 入出力 15章 テキストの構築 を読みました。 10章 「10.3 テストフレームワークを書いてみる」ではgauche.testのサブセットを実装します…

27章分の9章

今日は,『プログラミングGauche』の 8章 真偽値と条件判断 9章 状態の管理 を読みました。 まだ9章までしか読んでませんが,この本なかなかいいなぁと思います。特に9章は面白かったです。ページを追うごとに簡単なサンプルが,どんどん拡張されて「簡単な…

もう一度Lisp学習

Lispは学生時代に授業で習ったのですが,あまり理解できず,社会人になってから取り組もうとid:rahaema:20060121に思い立って少し勉強したことはあったのですが,結局中途半端に終わっています。3ヶ月研修も残り1ヶ月を切っていますが,もう一度Lispを勉強し…

ベイジアンフィルター

ベイジアンフィルターについて調べていたら、Classifier*1というのを知りました(via http://d.hatena.ne.jp/zariganitosh/20070712/1184230093)。Usageを見てみると、 require 'classifier' b = Classifier::Bayes.new 'Interesting', 'Uninteresting' b.tra…

Googleを支える技術

『Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)』を読んでみました。この本は、全部で6章構成で、各章は以下によると book = [["第1章", "Googleの誕生", 3, 38], ["第2章", "Googleの大規模化", 39, 60], ["第3章", "Google…

Hpricotでの疑問点

以下を実行した際、「Ruby home page」と出力されることを期待していたのですが、画面には、「ruby home page」と表示されます。 # hpricot_prac.rb require 'rubygems' require 'hpricot' doc = Hpricot('<a href="http://ruby-lang.org/">ruby home page</a>') (doc/:a).each do |ele| ele.inne…

Graphviz

3ヶ月研修の報告書作成の前準備としてGraphvizについて学習。以下のページを参考にしました。 http://homepage3.nifty.com/kaku-chan/graphviz/以前、正規表現をDFAに変換(id:rahaema:20080707)するRubyスクリプトを書いたのですが、実行結果が見にくいので…

まとめの準備

3ヶ月研修も早いもので2ヶ月が過ぎようとしています。次は何に取り組もうと考えていますが、研修課題が見つかるまで、今まで取り組んできたことを少しづつまとめています。やりはじめると、結構、作成したプログラムを載せる作業が煩雑です。 http://d.haten…

GAでナップサック問題2

2008-07-18(Fri)に引き続き、 http://ipr20.cs.ehime-u.ac.jp/column/ga/chapter4.html に掲載されているナップサック問題に取り組んでみました…。上記のサイトでは、 個体数: 32 選択: エリート保存戦略を併用した適応度比例戦略 交叉: 2点交叉 突然変異…

GAでナップサック問題

『マッチ箱の脳(AI)―使える人工知能のお話』を読んでいるのですが、分かりやすくて面白い本です。遺伝的アルゴリズム(GA)という言葉は聞いたことがあるのですが、本書を読んで概要は理解できたような気がします(多分)…。本当にGAで問題が解けるのか確かめて…

郵便番号とGoogle Maps

今日は、気分を変えてJavaScriptに取り組んでみました。 http://www.geocities.jp/maehrm/zip_map.html テキストフィールドに郵便番号7桁か住所の一部を入力し、ボタンをクリックすると 郵便番号と住所の表示 http://groovetechnology.co.jp/webservice/zips…

ファイルからの入力と標準入力

Rubyで、ファイルからの入力と標準入力について、ちょっとした疑問点が出てきました。 以下のような、サンプル(hoge.rb)において、 # ファイルからの読み込み open(ARGV[0]) do |f| puts f.read end # 標準入力 print "Input> " str = gets puts str 実行す…

coerce規約

id:rahaema:20080708, id:rahaema:20080709 でcoerce規約について書きましたが、まだまだ理解が不十分なので引き続き取り組んでみました。理解をするために、何か作ろうと思ったのですが、いい題材が思い浮かばず…。結局、「帯分数(mixed number)」を取り扱…

テイラー展開

『数学ガール (数学ガールシリーズ 1)』のp231では「極限としての関数の姿」と題してsin関数のテイラー展開を扱っています。テイラー展開の無限級数を有限個だけ項を取り出して部分和を求めていくと、sin関数に近付いて行く様子が図を交えて分かりやすく解説…

ダイクストラ法

ダイクストラ法を作ってみました。 グラフは、ラベルつき隣接行列にしたのですが、辺が存在しないところを、nilで表現したのがまずかったです。条件判断などが繁雑になってしまいました。threadの学習を兼ねて使ってみました。 dijkstra.rb class Dijkstra a…

コッホ曲線

cairo:2次元画像描画ライブラリを読んでみました。丁寧な説明がなされているので非常に分かりやすかったです。読んだだけでは面白くないので、なんか題材はないかと考えたのですが、あんまりデザインのセンスがないので良い題材が思い浮かびません…。 とりあ…

初めてのRuby2

昨日(id:rahaema:20080708)、 3 + Complex(5, 6)のすごさ(coerce規約) と書いたのですが、 Complex(5, 6) + 3 だったら添付ライブラリであるComplexクラスの、+メソッドでうまくやってるんだろうと思えるのですが、やっぱり、3 + Complex(5, 6)と書けるのは…

初めてのRuby

『初めてのRuby』を読んでみました。 Object#enum_for Integer#[nth] 3 + Complex(5, 6)のすごさ(coerce規約) to_strメソッド String#% ダックタイピング をはじめ、いろいろと勉強になりました。例8-12を使って、 class Duration def initialize(since, til…

正規表現の実現3

id:rahaema:20080702, id:rahaema:20080703 の続きです。 id:rahaema:20080702 では、「正規表現をパースして構文木を作る」。id:rahaema:20080703 では、「構文木からNFAを作成する」まででしたが、ようやく、「NFAからDFAを作成する」までたどり着くことが…

正規表現の実現2

昨日(id:rahaema:20080702)の続きです。 昨日は、「正規表現をパースして構文木を作る」まででしたが、今日は、「構文木からNFAを作成する」までを取り組んでみました。以下がRubyで書いたソースですが、場当たり的にクラスを作ったりしていて、ちょっと…で…