2006年10月30日

やはり……

新潟県立26校で科目振り替え 情報を数学や理科に(asahi.com)

 発表によると、燕高や村上中等教育学校は、コンピューターの活用法などを学ぶ「情報」の年間時数のすべてで、新潟高や長岡高、高田北城高などでは同じく4分の3で「他教科と連携を図る」として、数学や化学の教科書を使っていた。


「コンピューターの活用法などを学ぶ「情報」」って違います、というつっこみは置いておくとして。

数学は若干あり得るかも知れないが、化学はあり得ない。絶対にあり得ない。

情報で使うことがあるとすれば、「数学」以外には「家庭科」「美術」「国語」「倫理」あたりでしょうか。教科のコラボとしては「英語」「社会」なら何となくイメージが浮かびます。

そう、「情報」=「理系」ではないんですよね。もちろん情報システムの方向やプログラミング等に進む場合は論理的な思考や計算が必要になります。しかし、教科「情報」が扱うのは現実に根ざす『情報』、身近な『統計』がやはりピッタリくるのです。

体育に半分分けている学校が「健康な心身を鍛える」とかなんとか言い訳していたのがなんとも。某都立高校水泳部顧問のM先生のようにPCをバリバリ使って水泳指導なんてしていますが、「情報」の内容ではありませんから。

逆にブレストして、これらの科目をどう「情報」で取り込むかを考えてもいいかもしれない(というかこれは夜の反省会ネタでしょうか。かなり自虐的ですものね)。

この辺はどんどんおおっぴらにしていただいて、「情報」の完全実施を望みたいところです。
posted by n_shimizu at 23:07| Comment(0) | TrackBack(0) | 日記

2006年10月29日

履修問題に敢えて言及する

まず、墨田川高校では、今回の履修問題に関して、まったく問題ない。必履修の科目はすべて行っている。

その上で、敢えて言う。土曜日が無くなった現状で、今の必修をクリアするのはかなり負担である。

現行の学習指導要領にはこうある。

すべての生徒に履修させる各教科・科目(以下「必履修教科・科目」という。)は次のとおりとし,その単位数は,第2款の2に標準単位数として示された単位数を下らないものとする。ただし,生徒の実態及び専門教育を主とする学科の特色等を考慮し,特に必要がある場合には,標準単位数が2単位である必履修教科・科目を除き,その単位数の一部を減じることができる。
(1) 国語のうち「国語表現I」及び「国語総合」のうちから1科目
(2) 地理歴史のうち「世界史A」及び「世界史B」のうちから1科目並びに「日本史A」,「日本史B」,「地理A」及び「地理B」のうちから1科目
(3) 公民のうち「現代社会」又は「倫理」・「政治・経済」
(4) 数学のうち「数学基礎」及び「数学I」のうちから1科目
(5) 理科のうち「理科基礎」,「理科総合A」,「理科総合B」,「物理I」,「化学I」,「生物I」及び「地学I」のうちから2科目(「理科基礎」,「理 科総合A」及び「理科総合B」のうちから1科目以上を含むものとする。)
(6) 保健体育のうち「体育」及び「保健」
(7) 芸術のうち「音楽I」,「美術I」,「工芸I」及び「書道I」のうちから1科目
(8) 外国語のうち「オーラル・コミュニケーションI」及び「英語I」のうちから1科目(英語以外の外国語を履修する場合は,学校設定科目として設ける1科目とし,その単位数は2単位を下らないものとする。)
(9) 家庭のうち「家庭基礎」,「家庭総合」及び「生活技術」のうちから1科目
(10) 情報のうち「情報A」,「情報B」及び「情報C」のうちから1科目

(平成11年3月学習指導要領より抜粋)

現場の観点から言う。

「世界史A」「理科基礎」「理科総合A」「理科総合B」「英語I」「オーラルコミュニケーションI」では受験には不十分。「家庭基礎」「情報」「体育」「保健」、芸術は受験科目では殆ど無い。

情報科の教員だが、公平を期すために「情報」も敢えて記述した。

本校では「弾力的な運用」のもと、土曜日もすべてではないが授業を行うことで年間33単位の授業を行っている。それでやっと成り立っていると言える。

必履修の科目をやらなくていいと言っているのではない。「ゆとり」の名の下に安直に土曜日を無くしたにもかかわらず、「浅く広く」の必履修科目が多すぎるのが問題なのだ。やらせるのならば単位数を確保するため土曜日授業をなくすべきではないし、土曜日休業を続けるのならば必履修を少なくする必要がある。

多分(想像だが)、今回「抜け道」をした学校は進学校でも「二番手」「三番手」の学校なのだろう。一番手、超一番手の進学校は、学習指導要領に従っても生徒達はしっかり受験に対応できるだろう。進学を余り意識しなくていい学校も問題ないだろう。

二番手の学校は、なんとか学校が頑張る必要がある。その中で、いいとは言わないが、問題となっている方向に行ってしまったのだと想像する。そこに現場の教員達の苦悩を感じてしまう。

そして、悲しいかな「情報」の名の下に数学等に振り返られている学校も多いのだろう。

これを打開するには土曜日を復活させることではないかと思う。4単位の違いは大きい。一週おきの2単位でもいいから(それでも3年間で6単位ある)、土曜日を復活させる。今の必履修をクリアするにはそれしかないのでは、と思う。現実に大学から要求される水準を高校生に果たすためには、それこそ必要なことだと思う。

こんなところで意見を言っても、文部行政には関係ないかも知れないが、大学受験制度が、もっと言えば東京大学の方針が変わらない限り、そのしわ寄せは生徒に降りかかるとおもう。

こういった趣旨の報道がまったく(ほとんど)なされていないことが不思議でならない。「やれ!やれ!」というだけでなく、「なぜそうなったのか」という構造的な原因をきちんと把握して、小手先ではない対応を望みたい。
posted by n_shimizu at 00:20| Comment(4) | TrackBack(3) | 日記

2006年10月28日

web ファイルの全角文字

Web ページを作る上で、全角ファイルは厳禁ということになっている。apache 等が対応していないからでしょう。

日本語ドメインに関しては聞いたことがあるブラウザの中では唯一 IE6 が対応していませんでしたが、IE7 でその辺は解消されるでしょう。

さて、校内に webサーバを立てて、Web ページの実習をしていると、この辺が問題になる場合があります。自分のデスクトップ上で確かめてリンクも問題なく表示されていても、ftp で送信するとうまくいかない理由に、「絶対アドレスと相対アドレス」の問題とこの全角文字の問題があります。

t_fukuhara さんから、Excel VBA でサブフォルダまで検索して(つまり生徒の個人フォルダをすべて調べて)ファイル名に全角を使っているものを調べることができないか、という宿題を頂きました。

なんとか、それらしいものができました。続きを読む
posted by n_shimizu at 22:59| Comment(2) | TrackBack(1) | VBA

2006年10月26日

できました。

授業評価のまとめ。

こんなものに力を入れるのもどうかと思いますが、システムやデータベースの勉強のためにやっていました。

前回の「できた……かな?」でもまだ実はできていませんでした。

実は MySQL のバグなのか仕様なのか分かりませんが、データが少しおかしかったことと、システムの設計に重大なミスがあることに気がついたことがありました。

まず、MySQL について。

エクセル等で整理したデータを読み取るのは「Tab 区切り」で保存して一括で読み取ることができることは以前に書きました。「LOAD DATA INFILE 〜」うんぬんというやつです。

実はそのやり方で読み込んだデータにはちょっとゴミがあったのです。

1レコード(つまり1行)の最後のフィールド(列)が文字列の場合、どうやら改行も文字列の一部として取り込まれてしまうのです。例えば職員データの場合、「職員番号、職員名」というレコードが並んでいるのですが、

1400001 (Tab) 情報太郎

などとなっているのですが「情報太郎」の後ろに「情報太郎(改行)」という形のコードが入ってしまうのです。今まで画面上で見ている限りずっと気がつきませんでした。最終的にエクセルにインポートして、マクロを実行したとき、「文字列がヘンだ!」というエラーメッセージが出て初めて気がつきました。

Perl や PHP なら「chop()」という関数を使って最後の一文字を削除できますから、それをすべてのレコードに掛ければキレイに消えるとは思います。しかし、1行ずつ取り出して、削除、また元に戻す、というのはいかんせんスマートではありません。なんとかSQLの段階で実行できないかなぁと悩んでいました。結論から言って良く分からなかったので、マクロ側で対応して最後の文字を取り除きました。

もう一点のシステムの設計の重大なミスについて。

取り出したデータで自分の分を見てみると、どうも少しデータが少ないのです。また生のデータを見てきたときとも少し違うと直感的に気がつきました。

よーく考えた結果分かりました。授業評価システムの最後の方の説明がまだですが、最後の段階で、一人一人のアンケート結果をデータベースに取り込む際に、「講座番号」と「学籍番号」と「アンケート結果」の対応でしか登録していなかった(データベースの設計がそうだった)のです。しかし、講座によっては都合で「一つの講座に複数の担当がいるものがごくわずかある」ということを忘れていたのです。

生徒に聞く画面上では、講座番号から導き出される担当者をすべて表示しているので、データとしては取り込まれています。しかし、「ある講座番号に複数の答えがある」という状態で、それが誰宛か、判別が付かないのです。またシステムとして、複数回の登録チェックは行わずすべて単純に取り込んでいます(一意に定まるように auto_increment 属性は付けてある)。

単純に一番最後のデータだけを残して後は削除してしまうと、このような特殊なケースの講座の場合、最後の担当教員のデータしか残らないことになります。そこで完全に全く同じ解答(ダブり)のみを削除して後はすべて残すように、もう一度整理し直しました。これはエクセルの機能を使いました。

エクセルに取り込んだ後で、「データ」−「フィルタ」−「フィルタオプションの設定」画面で、「重複するレコードは無視する」のチェックを入れると、重複レコードは非表示にしてくれるのです。

後はすべてを選択して、「編集」−「ジャンプ」−「セル選択」−「可視セルの選択」で有効なデータのみ選択、コピーして、別シートに貼り付ければ完成です。←この技は結構使えますよ。

後はマクロを実行して、各教員ごと、各教科ごとのファイルに切り分けて完成です。
posted by n_shimizu at 01:34| Comment(0) | TrackBack(0) | 授業評価

ウェブサーフィン(死語ですか?)

ネタフルを読んでいたらサディスティック・ミカ・バンドに付いての記事があり、初代の解散は「加藤和彦とミカの離婚が、ミカバンド解散の理由だとは知りませんでした。」との記述とウィキペディアへのリンクがあり、そこから加藤ミカ(福井ミカ)へのリンクへ飛ぶとYMOの Nice Age の中に出てくる「ニュース速報」はこのミカの声であり、その内容は当時来日して麻薬所持で捕まったポール・マッカートニーについてであり、「22番」とはポールの入っていた独房、「Coming up like A flower」の台詞はポールの発売されたばかりのシングルで歌われるフレーズだとか。

長い一文だ。
posted by n_shimizu at 01:07| Comment(0) | TrackBack(2) | 日記

2006年10月24日

できた……かな?

授業評価の最終的なまとめ。

データベースの自分の勉強を兼ねてのんびりやっていたものだからずいぶん時間がかかってしまいました。もちろん、今が試験中で情報は試験が無いというのがちょっと集中してできる理由なのですが。
posted by n_shimizu at 07:02| Comment(0) | TrackBack(0) | 授業評価

2006年10月22日

phpMyAdmin導入

いままでずっと、MySQL の操作は「MySQL monitor」すなわちコマンドプロンプトから行ってきました。ところが前にも書いたような、スピードが付いてこられないことによる「文字化け」が発生したりして、SQL の結果が正しいかどうか良く解らないことや、ちょっとだけテーブルの中身を確認したい、ちょっとだけフィールドの定義を見たいというときに、「select * from tableA limit 20;」だとか、「show fields from tableB;」だとか入力するのがメンドウになってきました。

「limit 20」などを付け忘れたために1万行も表示し始めてしまったり(この場合、プロンプトを一度最小化して、画面に表示させないと素早く終わるのですが)、綴りを一つでも間違えるとエラーが起きたりと、メンドウです。

ちまちまやることで、とても勉強にはなるのですが、そろそろ効率性を求めても良いかなと。

Excelに結果を読み込むだけなら ODBCドライバを使って「取り込み」もできます。でも生のデータを扱っている訳ではないし、データそのものを加工することもできません。純正の「MySQL Query Browser」を使ってみましたが、いまいちShift-JIS のデータを読み込むと文字化けしてしまいうまくいきません。設定も英語なんでいまいち。

そこで、前に一度やってみて余りよく解らないなぁと諦めていた「phpMyAdmin」にチャレンジしてみました。こちらのあるレンタルサーバ提供会社の説明を真似しました。特にバージョンを「2.7.0」にすることや設定ファイルについてためになりました。
設定ファイル中の

'http://ドメイン名/任意の名前/'

の意味が分からず、「http://localhost/」だけにしたら画像が一切表示されませんでした。本来画像ファイルがある位置のHTMLソースを見ると、ルートから始まっているので、「ああ、カレントディレクトリの位置まで指定しないといけないんだ」と気がつきました。

'http://localhost/phpMyAdmin2.7.0/'

というフォルダ名まで含めてしていしたら画像のようにちゃんと表示されるようになりました。
phpMyAdmin


また、設定ファイル中のデフォルトの文字コードを「SHIFT_JIS」に指定しました。377行のところを

$cfg['DefaultCharset'] = 'SHIFT_JIS';

としたのです。それでも最初のページでもう一度、SHIFT_JIS を指定しないと正しく表示されません。

でも使ってみるとメチャ便利ですね。これからはこちらで行こうと思います。
posted by n_shimizu at 22:31| Comment(0) | TrackBack(0) | 日記

2006年10月20日

授業評価結果の整理

しばらく忙しくて放置状態の授業評価の結果ですが、そろそろまとめないといけないということで、取りかかりました。

しかし、ここのところSQLではまっていました。

生徒が行ったアンケート結果はかなり正規化されていて、質問6項目に対し、質問番号と解答でレコードが構成されています。しかし、結果を出すためには一つの講座、一人の生徒に対して、解答が並んでいる状態で欲しいものです。また何度も送信した結果複数回登録されているものもあり(入力時チェックはしていない)、ダブりをなくさなくてはなりません。そこでこんな感じのSQLを考えました。

DELETE FROM
  hyoka_result AS d1
WHERE
  d1.tmp >
  (
  SELECT
    MIN(d2.tmp)
  FROM
    hyoka_result AS d2
  WHERE
    d1.tourokubi = d2.tourokubi
  AND
    d1.bango = d2.bango
  AND
    d1.koza_bango = d2.koza_bango
  GROUP BY
    d2.tmp
  )
;

ゴチャゴチャとした細かいことはさておき、動きませんでした!

なぜかが解らず3日ぐらい悩んでいたのですが、解りました。MySQL のリファレンスマニュアルに載っています。MySQL 4.0ではクエリのネスト(サブクエリ)に制限があったのです。

6.4.2.11. 初期の MySQL バージョンに合わせたサブクエリの書き換え

バージョン 4.0 までは、ネストされたクエリのサポートは、INSERT ... SELECT ... 形式と REPLACE ... SELECT ... 形式だけに限定されています。


と書いてあるじゃないですか。SELECT文を実行した結果、ある条件に合致するものを削除したり(DELETE)、更新したり(UPDATE)できないのです。そういえば、SQLを勉強していた「書き込み式SQLのドリル」では、MySQL 5.0 が前提になっていたのでした。

INSERT 文では使えるので、こうなったら力業です。

ダブりを削除 → 新しいテーブルにINSERT
question = 1 の解答と question = 2 の解答を合体 → 新しいテーブルにINSERT
question = 1,2 の解答と question = 3 の解答を合体 → 新しいテーブルにINSERT
question = 1,2,3 の解答と question = 4 の解答を合体 → 新しいテーブルにINSERT





次々と新しいテーブルを作って結果を放り込むことで、一応非正規化を完了させました。後は講座番号を講座名に直し、またそこから担当教諭の名前を引き、Excelの形で取り出す。その後、昨年作った教科ごと、教員ごとに別ファイル切り分けながらピボットテーブルに落とし込むマクロを使って分ければ、完成……かな?

この力業も「MySQL monitor」からしこしこSQLを試して行ったので、PHP化しておかないと来年使い物にならなくなりそうですね(大したことじゃないですが)。

色々勉強になります。

p.s.かなり疲れました(笑)
posted by n_shimizu at 19:07| Comment(0) | TrackBack(0) | 授業評価

2006年10月17日

10億の夜

萩尾望都風?

いえ、先ほどまで大変だったんです。

授業評価の結果をそろそろちゃんと取り出さなくてはならず、SQLを試していました。

SELECT
tmp
FROM
table_a,table_b
WHERE



とかやったんですが、実は必要なのは table_a から取り出せれば良かったんです。その後の「WHERE」の条件で使うからとうっかり table_b も FROM に入れてしまったのですね。

この table_a は約1万件、table_b は約10万件のデータがあるんです。ということは並列で並べた結果

10000×100000 = 1000000000 件(10億)あるテーブルを作り始めてしまったからさぁたいへん。いくら待っても終わりません。それどころかとめようとしても Windows そのものの動きが超スローリーになってしまいました。

結局、頑張って「サービス」から MySQL を停止させることに成功してなんとか再起動かけることができました。もしかしたらデータベースが吹っ飛んだかも(コピーだから元はあるんですが)。なんだかんだで1時間以上かかりました。

10億(件のデータ)に悩まされた夜でした。
posted by n_shimizu at 02:10| Comment(0) | TrackBack(0) | 授業評価

2006年10月09日

Rails・・・

Ruby を学ぼうと思ったきっかけは「Ruby on Rails」に手を出したくなったからでして、Ruby の勉強もそこそこに Rails のインストールをし始めました。

Ruby on Rails とはwikipedia のこちらに詳しく書かれているとおり、Ruby でかかれた「オープンソースのWebアプリケーションフレームワーク」のこと。

つまり、PHP などで書かれるような Web アプリケーションを、Ruby で簡単に書いてしまおうというフレームワークですね。

まっさらな Windows XP の方なら、「Instant Rails」をダウンロードしてインストールを実行するのが一番ラクなようです。50MBぐらいある巨大なzipファイルの中に、Ruby 本体、Ruby on Rails、Apache、MySQL、PHP まで入っているのですから。

でも、Apache も MySQL も PHP も、そして Ruby 本体すら既にインストールしてあるので独自に入れるしかないでしょう、ということでやりました。

大変でした。

まず、「RubyGems」をインストールしなければならない。これは Debian でいうところの「apt-get」、Perl でいう「cpan」、Windows でいう「Windows Update」(違うか)。つまり Ruby 周りのさまざまな環境を整えるためのダウンロードマネージャだということは後から知った。

ここから、「rubygems-0.9.0.zip」をダウンロード、解凍。できたディレクトにコマンドプロンプトからカレントディレクトリを移して、

ruby setup.rb

を実行。ずらずらずらーとインストール開始。ところが、「ssleay32.dllが見つからなかったため・・・」うんぬん。と言われ、「zlib.so」も無いとか言われる。

ssleay32.dllが見つからない

むむむ。そこで Google さんに聞いてみると、この方のブログに到達。現象が全く同じでした。

zlibに関しては、ここからダウンロード、解凍すると「bin」「doc」「include」「lib」というフォルダができます。

うーん、Ruby のインストールフォルダによく似ているので強引にフォルダごと上書きコピー。何も言われなかったのでそのまますんなり入ったと思います。

つづいて「ssleay32.dll」の件ですが、再び Google さんに尋ねるとこのページにたどり着きました。どうやら OpenSSL がらみの何かのようです。

その中に書いてあるとおり、このページの一番最後にある「OpenSSL binary packages」というコーナーの「Windows 0.9.7e」の zipfile をダウンロードして解凍。中にあるlibssl32.dll をコピー、同じフォルダに貼り付けてファイル名を「ssleay32.dll」にリネーム。ssleay32.dll と libssl32.dll は中身が同じらしいのです。これを「c:\windows\system32」に放り込みました。


これで準備OKのはず。もう一度「ruby setup.rb」を実行すると、ずらずらずらーと画面が流れて何事もなく終了。RubyGems が入ったようです。

そこで、

gem install rails --include-dependencies

というコマンドを実行すると、だまりこくってしまいました。ん? と思うとダウンロードを始めました。ああ、「apt-get」と同じというのはこういうことかと、その時点で初めて解りました。

Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.1.6
Successfully installed rake-0.7.1
Successfully installed activesupport-1.3.1
Successfully installed activerecord-1.14.4
Successfully installed actionpack-1.12.5
Successfully installed actionmailer-1.2.5
Successfully installed actionwebservice-1.1.6
Installing ri documentation for rake-0.7.1...
Installing ri documentation for activesupport-1.3.1...
Installing ri documentation for activerecord-1.14.4...
Installing ri documentation for actionpack-1.12.5...
Installing ri documentation for actionmailer-1.2.5...
Installing ri documentation for actionwebservice-1.1.6...
Installing RDoc documentation for rake-0.7.1...
Installing RDoc documentation for activesupport-1.3.1...
Installing RDoc documentation for activerecord-1.14.4...
Installing RDoc documentation for actionpack-1.12.5...
Installing RDoc documentation for actionmailer-1.2.5...
Installing RDoc documentation for actionwebservice-1.1.6...

そしてそのまま無事インストール終了しました。

でもどうやってつかうのでしょう。今日はこれで終わりにします。

【追記】
コマンドプロンプトから

rails

と打ってみると、「iconv.dllが見つからない」とか言われます。前述のブログの通り、ぼこぼこ入れていかなければならないようです。ま、Path が通っているみたいなので、うまくいけば、

rails path/to/your/new/application
cd path/to/your/new/application
ruby script/server

という手順でうまくいくようです。先は長そうです。Web アプリケーションが目的なら、素直に PHP の勉強をしていた方が良さそうですね……。
posted by n_shimizu at 23:20| Comment(2) | TrackBack(0) | 日記

Windows Vista

今日、とつぜん Windows Vista を試してみたくなった。さっそくサイトに行ってみる。

どうやらRC2の発表があったが、未だにダウンロードできるのは RC1 だけのようだ。まぁいいや、と思って細かい手続きを経てダウンロード開始。

なんと3GBあるようで、小一時間たった現在、100%にようやくなるも、まだ終わった気配がない。

もう寝ようと思う。続きはまた今度。
posted by n_shimizu at 02:14| Comment(0) | TrackBack(1) | 日記

2006年10月06日

オープンソースマガジンが休刊だそうで

オープンソースマガジンも休刊に

スラド早っ!

ここのところの相次ぐコンピュータ雑誌の休刊ラッシュには寂しさを憶えます。

旧 UNIX USER を八丈島で定期購読していたのはずいぶんためになりました。

FreeBSDやLinux のインストールできないよ〜。

とか、

X が動かない〜。

等と言っている時が一番役に立っていたのでしょうか。今は殆どするするする〜と使えてしまいますから、webもあるので雑誌としての必要性はないのでしょうね。すべてが web に飲み込まれていく一つの結果なのでしょう。

と言っている間に必要な仕事を全くしないまま、もう寝ようと思っている n_shimizu でした。ほんとにマズイ。
posted by n_shimizu at 02:16| Comment(0) | TrackBack(0) | 日記

Ruby の勉強2

いま勉強している本は次のものです。

たのしいRuby
高橋 征義著 / 後藤 裕蔵著 / まつもと ゆきひろ監修
ソフトバンククリエイティブ (2006.8)
通常1-3週間以内に発送します。



やはり、言語は本をきっちり読んでいくのは大切ですね。マニュアルも大切です。何事もそうかもしれませんが、利用法・活用法の本、解説本、マニュアル、それらを偏り無く、この順番に見ていくのがいいかと(マニュアルは常にみるものですが)。

さて、先日の短いソースを少しいじってみました。

require "cgi"
filename = ARGV[0]
file = open(filename)
while text = file.gets do
  ntext = CGI.escapeHTML(text)
  ntext.gsub!(/\t/){ |matched|
    '  '
  }
  print ntext
end
file.close

前回、
3回も違う変数に入れ直しているところなどもっとスマートにならないかなぁと思いますが、

と書いた部分を直してみました。まず「変数」とだけ思っているのが間違っていますね。正確には stringオブジェクト ですね。文字列のオブジェクトに対してsubメソッドやgsubメソッドを実行していた訳ですが、「!」を付けて「破壊的メソッド」にすることで元のオブジェクトを変更することで、改めて違うオブジェクト(n2text,n3text など)にする必要がなくなりました。

オブジェクト.メソッド

の形を、「オブジェクトに対してメソッドを実行する」という考え方ではなく、オブジェクト指向では「オブジェクトにメソッド(メッセージ)を送る」「オブジェクトはメソッドを受け取る」と解釈するようです。

sub、gsub は stringオブジェクト の一部を置き換えるメソッドですが、置き換えた後は別の stringオブジェクトを生成しますが、sub!、gsub! は元のオブジェクトを変更するメソッドと、種類が違ったのですね。

まだ今書いている文章も後から考え方として間違っているのかも知れませんが、今の理解ではそんな感じです。

一応、今の理解で一行ずつ解説を入れてみます。

require "cgi"

添付ライブラリ「cgi」を利用してタグをエスケープするため(使ってみたかった)requireしています。

filename = ARGV[0]

コマンドラインから引数として指定された情報をデータとして受け取る「ARGV(アーグブイ)」という配列オブジェクトを使い、その一つめ(0番目)をfilenameという変数(stringオブジェクト)に入れています。

file = open(filename)

filename に入っている名前のファイルをオープンして「file」という名前のファイルオブジェクトを生成しています。

while text = file.gets do

while 〜 do 〜 end により、ループさせています。このとき、
text = file.gets
には二つの意味があります。一つは file オブジェクトに gets メソッドを実行し、開いているファイルから1行取り出して変数text に代入していること。もう一つは、この代入した結果が一つの値(通常は代入しているもの)をもち、while の条件判断として使われること。

通常1行ずつ読み込まれているときはループを繰り返しますが、最終行が終わった後は、getsメソッドは「nil」を返すので、while を抜け出す訳です。Perl と同じですね。

ntext = CGI.escapeHTML(text)

CGIクラス(添付ライブラリ「cgi」に含まれる)のescapeHTMLメソッドをtextに実行してntextに入れています。
これによりタグの<や>が置き換わります。

ntext.gsub!(/\t/){ |matched|

ntextに対して、Tab を探します。sub、gsub は string オブジェクトに対して置換をします。gsub は複数あったらすべて置換します。一つずつ行うために{ }でループさせ、|matched| の部分で、一応「matched」に代入しています(使っていません)。「!」が付く「破壊的メソッド」なので ntext を置き換えます。

'  '

Tab を「  」つまりスペース2個に置き換えています。

}

ループ閉じ。

print ntext

置き換えた ntext を標準出力。

end

while の閉じ。

file.close

ファイルオブジェクト file をクローズ。

そんな感じだと思います。
posted by n_shimizu at 00:12| Comment(0) | TrackBack(0) | 日記

2006年10月05日

何のソフトを入れたら重くなるのか

がんばれ!!ゲイツ君という知る人ぞ知る老舗コラム(アンチマイクロソフトの)があります。

IE4.0 あたりでは「もっともだ、もっともだ」と読んでいましたが、実はいまでも続いていまして、さすがにXP時代では、「まぁ、そこまで言わんでもよかろう」という気になりながら、斜め読みしています。

さて、アンチMSの話はどうでもよくて、この記事の中の更にリンク先が結構衝撃的だったのでご紹介します。

何のソフトを入れているとWindowsが重くなるのかリスト

堂々の一位は「Norton Internet Security 2006」です。結構堪えました。ま、私の使っているのは2005、正確に言えば、「Powered by BBセキュリティ」というYahoo!BB 契約者が使うオプションです。月600円も払っているのですから安くないです。家計から(Yahoo!BB の料金と一緒に)堂々と払ってもらえるから入れている、と言う理由です。あと、以前から使っていたので慣れているというのもあります。

ただ、最近、フリーズの原因はこれかなぁという自体がなきにしもあらず。最近フリーのものでも結構良さそうなものもあり、有料でも軽いものがいいなあと思っていたのですが、今回の記事では結構、いえ「かなり」ノートン先生とはさようならしようと思う動機になりそうです。

妻のPCは新しいからかなり速いのです。しかし、新しいだけではなくやはり「ソフトウエアを余り入れていない」というのも大きいんだな、ということも良く解りました。この表と比較して自分の環境を考えると、

1.Norton Internet Security 2005(40%ぐらい?)
2.フォント500個(20%ぐらい?)
3..NET Framework Runtime2.0(8.89%)
4.OpenOffice 2.0.3(5.33%)
5.DivX 6.3(4.89%)
6.DirectX 9.0c(4.89%)
7.Java Runtime 1.5.0.06(4.00%)

という感じで、どんどん遅くなっているわけですね。1.2.は当てずっぽうでの数字です。この数字から見ると、自分のPCは本来の性能の30〜40%のスピードで使っていることになるのでしょうか(誰か数字に強い人、教えてください)。

色々な意味で、結構ショックでした。
posted by n_shimizu at 02:07| Comment(0) | TrackBack(0) | 日記

2006年10月03日

Rubyの勉強

今Rubyの勉強をしています……。

続きを読む
posted by n_shimizu at 08:17| Comment(0) | TrackBack(0) | 日記