読者です 読者をやめる 読者になる 読者になる

Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

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で書いたソースですが、場当たり的にクラスを作ったりしていて、ちょっと…で…

正規表現の実現

学生時代、オートマトンとかNFAとかDFAとか習った記憶がありますが、全く身についていないので取り組んでみました。参考にしたのは、学生時代に買った『Cプログラマのためのアルゴリズムとデータ構造〈Part2〉 (SOFTBANK BOOKS)』です。本棚から引っ張り出し…

ナップサック問題

今日は、RubyのStructクラスの練習をかねてナップサック問題に取り組んでみました。品物の大きさと価値は、以下のようになっています。 品 物 0 1 2 3 4 大きさ 2 3 5 7 9 価 値 2 4 7 11 14 knapsack.rb Item = Struct.new(:weight, :value) def knapsack(i…

検索システム2

id:rahaema:20080623に引き続き、「転置インデックスによる検索システムを作ってみよう!」を参考に、学習。学習のポイントは、 QDBMの練習 Marshalの練習 です。index.rb require 'depot' num = 0 idx = Hash.new{|h, key| h[key] = [] } while line = gets…

Picnicクラス

トライステート社のPICNICをJavaで制御するPicnic.javaを http://www.geocities.jp/maehrm/picnic.html で公開しているのですが,getADC()について返り値がときどきおかしいとのご指摘と修正をいただきました。 public int getADC(String ch,byte wait){ byt…

検索システム

今日は、「転置インデックスによる検索システムを作ってみよう!」を参考に、学習。 http://chalow.net/2007-11-26-5.html 検索システムというと難しい印象がありましたが、上記サイトは簡単なサンプルで解説がされており非常に参考になりました。サンプルは…

JSONなど

同僚の先生方とJavaScriptについて学習しているので,今日は,JavaScriptに取り組んでみました。 『JavaScriptプログラミング入門 第2版』という本で学習しているのですが,その中にJSONについて書かれていたので,理解を深めるために,サンプルを作ってみま…

昨日の続き…

昨日に引き続き、「Javaでコンパイラの基礎を理解する*1」に取り組みました。svm1c.rb class Compiler IADD = 96 ISUB = 100 IMUL = 104 IDIV = 108 BIPUSH = 16 PRINT = -48 def compile(filename) scanner = Scanner.new(filename) tokenList = scanner.cr…

仮想スタックマシンの製作

今日は、「Javaでコンパイラの基礎を理解する*1」を読んでみました。 非常に簡単な例で解説されていて分かりやすいです。 読んだだけでは、身についているか怪しいので、Rubyで書いてみました。 今日は、仮想スタックマシンを作っただけです。svm1.rb class …

じっくり勉強

今まで、何種類かのプログラム言語について学んだ(身についてませんが)のですが、最近は、コンパイラとかに興味が湧いてきました。学生時代にも、習った覚えはあるのですが、当時は、「やらされる勉強」かつ「あんまり興味がない」ということで、ほとんど理…

mfcalc

http://d.hatena.ne.jp/rahaema/20080611 でつまずいていた http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf の「2.5 練習問題」(3)に再チャレンジ。 (3)初期化されていない変数について、値を書き込むのではなく、値を使おうとすると…

mod_ruby

mod_rubyをインストールしてみました。 Debianの/etc/apache2/のディレクトリ構成は整理されていて分かりやすいです。こんな感じで設定しました。/etc/apache2/mods-available/ruby.confを以下のように作成し、 <IfModule mod_ruby.c> RubyRequire apache/ruby-run <Location /home/*/public_html/cgi-bin> SetHandler ru</location></ifmodule>…

mfcalc

昨日に引き続き、bisonを学習。 http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf の「2.5 練習問題」をやってみました。(1),(2)は解けたのですが、 (3)初期化されていない変数について、値を書き込むのではなく、値を使おうとするとエ…

逆ポーランド記法電卓

今日は、趣を変えてbisonをやってみました。学生時代にやったことはあるのですが、すっかり忘れてしまっています。http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf を参考に、逆ポーランド記法電卓を作成しました。rpcalc.y /* 逆ポー…

mecab-ruby

mecab-rubyのインストール $ ruby extconf.rb $ make % sudo make installmecab-rubyの今日時点の最新バージョンは、0.97で、最初、これをインストールしようと思ったのですが、mecabのバージョンとそろえる必要があるみたいです。 mmasa@debian:~/$ mecab -…

課題研究の教材作成

午後からは、現在、生徒と取り組んでいる課題研究用の教材を作成。 http://www.atmarkit.co.jp/flinux/rensai/mysql07/mysql07c.html にRubyとMySQL版があったので、SQLite3用に変更しました。 sample1.rb #!/usr/bin/ruby -Ke # -*- coding: euc-jp -*- req…

拡張ライブラリ

昨日の続きです。 もう少し、Rubyの拡張ライブラリの作成の方法について知りたくなったので、以下を読んでいます。 http://i.loveruby.net/w/RubyExtensionProgrammingGuide.html

拡張ライブラリ作成練習

せっかく、PerlからC言語の関数を呼び出す方法が分かったので、同じようなことをRubyでもやってみました。参考にしたのは、以下のサイトです。 http://ruby.gfd-dennou.org/tutorial/ruby-ext/ prime.cを作成 long isprime(long lObj) { long j; for (j = 2;…

XS

「第3回 Apacheのアクセス・ログを解析する*1」という記事の8ページに「XSの利用方法」という面白い記事があった。XSを利用すると、C言語の関数を利用することができるそうですが、Prime_xsの作成手順が概略だけしか示してなかったので、自分で作成してみま…

Flash playerのインストール

せっかくの研修期間なので、Debian GNU/Linux("etch")をインストールして使っています。使い慣れたVine Linuxと違う部分があって、なかなか前へ進みませんが、徐々に慣れていこうと思います。さて、Firefoxでも立ち上げてと思ったのですが、Debianでは、icew…

3ヶ月研修のスタート

今日から職場を離れての3ヶ月研修が始まりました。今日は環境設定で終了。