「ほっ」と。キャンペーン

<   2008年 11月 ( 20 )   > この月の画像一覧

接続詞を丸で囲む

参考書の読むときのマーキングは、いかにその文書の構造を際立たせるかということにポイントがある。

そこで、キーワードに引く下線の種類を変えたり、ノートにダイアグラムを作成したりして、文書の論理構造を思い出しやすくしようとする。このブログでも何度かそれについて工夫している。

最近、ふと思いついて、接続詞を丸で囲んでみた。下線ではなく丸で囲んだのはほかのキーワードと区別するためだ。接続詞は、情報の内容よりも論理構造を表すものなので、キーワードとは一目で分かるように区別しておいたほうがいい。

結果だが、おもしろい効果があらわれた。

まず第一に、接続詞の現れる頻度が少なく、マーキングが邪魔にならない程度の数に収まる。

また、内容とは独立しているので、ざっと読みながらマーキングするのに頭を使わないで清む。接続詞は前のブロックと後のブロックの論理的接続をあらわしているので、内容が何であってもかまわないという特徴をもっている。それで、内容をしっかりと把握しなくてもよいので、頭を使わず楽なのだ。

さらに、論理構造を表しているという特徴は、前後の内容を推測する手がかりにもなる。たとえば、「しかし」という接続詞が現れるときは、たいていは、「しかし」の後に来る文章の内容のほうが重要だ。また、「したがって」という接続詞のあとは、結論だ。「一方」という接続詞が現れると主題が脇にそれる。接続詞ではないが、「特に」という修飾語のあとは、記述の要点を述べている。

接続詞を丸で囲むという方法は、文書の中身を読まずにその構造を知ることのできる究極の速読速解法だ。
[PR]
by tnomura9 | 2008-11-30 18:10 | 考えるということ | Comments(0)

地図を見るように文書を読む

地図はそれ自体は一枚の紙の上に書かれた複雑な図形だ。地図が地理情報の情報源として働くのは、あくまでも、地図の読み手が頭の中に地図の情報を実際の地形のモデルに再構成したときなのだ。

文書を読む場合もこれと似たようなことがおきる。いま、ここにA4版の文書が一枚あるとする。遠くからその表面をちらりと眺めると、一枚の紙の上に、あるまとまりをもって配列された文字の集まりにしか見えない。そこから、何の情報も感じられない。

そこで、文書を読み始めるのだが、読み進むうちに、頭の中にその文書の情報がモデルとして再構成されていく。そうすると、先ほどは意味のない文字の配列として平板に見えていた文書を、要約が書いてあるところはどこか、重要なキーワードのある場所はどこか、細部について記述してあるところはどこかなど、立体的な構造を持ったモデルとして眺めることができる。

しかし、5分もするとモデルの魔法は消えて、もとの平板な文字の集まりとしか見えなくなるが、そのなかのキーワードをひとつ取り上げて、それが何を意味していたのかに思いをめぐらしていると、突然に文書全体の構成がよみがえってくる。

文書を読んで何が書いてあるのかさっぱりわからないときは、その文書の構成が立体的に見えているかどうかを確認してみるとよい。少なくとも、中心文や、文書の階層的な構造が見えてこないなら、その文書をもとに頭の中へモデルを作成するという作業が失敗していることを示している。

したがって、むやみに文書の冒頭から順に読んでいくということは文書の理解の効率を落としてしまう。文書は頭の中にモデルができないと理解されないからだ。
[PR]
by tnomura9 | 2008-11-28 07:33 | 考えるということ | Comments(0)

なぜ

読書の効率を上げるためには、次の3点に気をつけて読めばよいと思いついた。

1. まず、文書の中心的なテーマは何かを、何が何だという、主語ー述語を備えた文で表現する。
2. その中心文を起点として、マインドマップを作成する。マインドマップは枝の先に行くほど細かな具体的な話が含まれてくる。
3. マインドマップの枝を伸ばしていく時に、「なぜ?」という疑問に答えるような項目を書き込んでいく。


つまり、知識とは中心のテーマから、「なぜ?」という疑問の懐中電灯に導かれた広大なマインドマップなのだ。

ということで、例文を探してみたら、プレジデントロイターの次のような記事があったのでさっそく上のアイディアを使ってみようと思った。

 [北京 26日 ロイター] 中国人民銀行(中央銀行)は26日、世界的な金融危機の国内経済への影響緩和に向け、9月中旬以来4回目となる利下げを発表した。指標となる貸出金利と預金金利をそれぞれ1.08%ポイント引き下げ、27日付で実施する。

1年物貸出金利は6.66%から5.58%、1年物預金金利は3.60%から2.52%に引き下げられる。貸出金利の引き下げ幅は1997年10月以来最大。預金金利は99年6月以来の大幅な引き下げとなった。

 中国人民銀行は、利下げは成長を促すために十分な流動性を銀行システムに供給することが目的、と説明した。


中心文は明らかだ。「中国人民銀行(中央銀行)は利下げを発表した。」だ。

あとは、ここから「なぜ?」を頼りにマインドマップを作っていけばよい。最初に、なぜとは違うが、「中央銀行とは何か」という疑問が湧いた。中央銀行とはつまり、貨幣を発行することのできる銀行だ。また、市中銀行が最終的に貨幣を調達する、銀行の銀行という働きもある。また、国債を発行することで政府に資金を調達する役割もある。

それでは、なぜ、中央銀行の利下げは、経済成長を促したり、資金の流動性を銀行システムに供給することが出きるのだろうか。

そこのところが分からなかったので、「中央銀行」でWikipediaを引いてみた。

すると、中央銀行の独立性という項で、次のような文章に行き着いた。

通常、中央銀行は一つの通貨に対して一つ存在する。中央銀行はこの通貨量を調整する権限を持つため大きな影響力を持つ。

1960年代、世界的にケインズ政策が行なわれるようになった。ケインズ政策においては財政政策として歳出を増大させるとクラウディングアウトが発生し、乗数効果に制約が掛かる。しかし、中央銀行が適切に金融緩和を行なえば、クラウディングアウトは発生せず、財政政策が最大の効果を発揮する。このポリシーミックスは供給力に未稼働の余剰部分がある場合は有効であるが、供給力が限界に達すればその政策効果は実質GDP増大ではなく物価上昇(インフレーション)の積極的な要因となる。


クラウディングアウトという見慣れない用語があったので調べたら、Wikipediaの説明は、

クラウディングアウト (crowding-out) とは、経済学において、主に財政支出の増大が民間投資を圧迫する現象を指す。「クラウディングアウト」とは「押し出す」という意味。

一般には、クラウディングアウト効果として使われる。典型は失業対策などのため国債を発行して公共事業や減税、福祉政策の拡充などを行う場合、大量の新発国債が市中金利を高騰させ、結果として民間の経済活動(投資のための資金調達や住宅購入などの消費行動)に抑制的な影響を与えてしまう場合である。


だった、国が財政支出をしても、回り回って民間投資を圧迫するかたちになり、結局は国民の所得は増えないということらしい。なぜそうなるのだろうと不思議に思ったので、さらに記事を読んでみたら、簡単な数式のモデルを解説してあったが、そこでお手上げになった。数式自体はかんたんだが、その変数が何を意味しているのかというイメージがまったく作れなかったからだ。

結局、上の読書効率を上げるための3原則は、原則としては良いが、背景の基礎知識がなければあまり効果がないようだ。

しかし、麻生首相の2兆円の給付金には国の財政を悪化させるだけで、経済を押し上げる効果はないのではないかと不安になってきた。経済の仕組みが分からずに、単に財政支出をすれば所得が増大するというような発想で決断が実行されたら、思っていたのとはちがう結果になるかもしれないからだ。

問題の中心を明らかにして、それから、「なぜ?」というマインドマップを作ろうとする努力は、たとえ、それが知識不足で断念せざるを得なくなっても、物事を単純化して行動するという危険性にストップをかけてくれるのではないだろうか。
[PR]
by tnomura9 | 2008-11-26 23:55 | 考えるということ | Comments(0)

道具と使い方

delegate.rb ライブラリが、マニュアルを読んだだけでは何のことかさっぱりわからなかったのに、サンプルプログラムを作ったら何となく意味が分かってきた。こういうことは、よくあることだ。つまり、道具というものはそれ単体としては存在せず、使用法と組になってこそ機能するものなのだ。

「物知り」ということばは、「役に立たない知識の豊富な人」という揶揄する意味で使われることがあるが、道具だけを知っていて、その使い方にまで配慮が至らなかったのだろう。参考書を読んでももうひとつすっきりと理解した感じがしないときは、道具を勉強しただけで、その使い方を実践できていない場合ではないだろうか。

「道具」を使うとどうして理解したという直感が働くのかというと、それは、使った時の反応がフィードバックされるからだ。のこぎりを引くと、鋸屑を出しながら、木材が切断されていく。のこぎりを眺めているだけで一向使わないときは、そのような現象と出会うこともない。また、使っていくうちにイメージ通りに切断するにはどうすればよいかなどのコツも見えてくる。操作とそれに対する反応のフィードバックを経験するうちにその道具の本質的な価値が分かってくるのだ。

インプットばかりでアウトプットのない学習を続けていると、がんばって勉強しているのに少しも役立たないという結果にもなりかねない。
[PR]
by tnomura9 | 2008-11-22 14:06 | 考えるということ | Comments(0)

delegate (委譲)

Ruby 標準ライブラリの tempfile.rb をのぞいたら、require 'delegate' となって、delegate (委譲) が使われていた。

Ruby リファレンスマニュアルの説明では

メソッドの委譲(delegation)を行う。

Delegatorクラスは指定したオブジェクトにメソッドの実行を委譲する。 Delegatorクラスを利用する場合はこれを継承して__getobj__メソッドを再定義して委譲先のオブジェクトを指定する。

SimpleDelegatorはDelegatorの利用例の一つであり、コンストラクタに渡されたオブジェクトにメソッドの実行を委譲する。

関数DelegateClass(supperclass)はsuperclassクラスのオブジェクトをひとつとり、そのオブジェクトにインスタンスメソッドを委譲するクラスを定義して返す。


何回読んでもさっぱりわからないので今まで敬遠していたが、サンプルとしてベクトルの計算をするプログラムを作ってみたら何となくわかったような気がした。

まず、ベクトルは Array クラスを利用すれば配列として表すことができる。しかし配列の足し算をすると、[1,2] + [3,4] = [1, 2, 3, 4] となってベクトルの計算はできない。

それならということで、ベクトル専用のクラスを作ってもいいが、a[1] のようなものもメソッドで定義しなくてはいけなくなる。

そこで、delegate (委譲)を利用して Array クラスのメソッドを Vector クラスのオブジェクトで使えるようにすればずいぶん手抜きができる。delegate は Delegator クラスを継承する方法、SimpleDelegator を使う方法、DelegateClass() 関数を使う方法の3つがあるが、そのうちの DelegateClass() 関数を使う方法を試してみた。

DelegateClass() を使ってVectorクラスのオブジェクトをArrayクラスに移譲するには、次のようにする。

class Vector < DelegateClass(Array)

つまり定数 Array を DelegateClass() 関数の引数にして呼び出すと、Arrayクラスに移譲するためのクラスができる。そこで、そのクラスから継承させて Vector クラスを作ると、Vector クラスのオブジェクトはすべてArrayクラスのメソッドが使えてしまうというわけだ。

実は次のように、DelegateClass(Array) を継承するだけで、Vectorクラスのオブジェクトを作ることができてしまう。

C:\Users\******\Ruby>irb
irb(main):001:0> require 'delegate'
=> true
irb(main):002:0> class Vector < DelegateClass(Array)
irb(main):003:1> end
=> nil
irb(main):004:0> a = Vector.new([1,2])
=> [1, 2]
irb(main):005:0> a[0]
=> 1

しかし、a = Vector.new のように引数なしの使い方もしたいし、initialize メソッドを定義してみた。

def initialize(obj = [])
  super(obj)
end

iniitalize メソッドの引数を上位クラスに渡すだけだから楽なものだ。

つぎに、ベクトルの加算を定義した。

def +(other)
  result = Vector.new
  for i in 0...self.size
    result << self[i] + other[i]
  end
  result
end

たったこれだけのプログラムで、ベクトルの足し算ができるようになった。今までのプログラムを、vector.rb という名前で保存した。

ファイル名: vector.rb

require 'delegate'

class Vector < DelegateClass(Array)
  def initialize(obj=[])
    super(obj)
  end

  def +(other)
    result = Vector.new
    for i in 0...self.size
      result << self[i] + other[i]
    end
    result
  end
end

irb で実行してみた。

irb(main):001:0> require 'vector'
=> true
irb(main):002:0> a = Vector.new([1,2])
=> [1, 2]
irb(main):003:0> b = Vector.new([3,4])
=> [3, 4]
irb(main):004:0> a + b
=> [4, 6]

自分でメソッドを定義しなくても委譲しさえすれば、すぐに自作のクラスのオブジェクトを操作できるようになるのだから便利なものだ。わけのわからなかった delegate (委譲)だが、ずいぶん便利な道具だったのだ。
[PR]
by tnomura9 | 2008-11-20 19:14 | Ruby | Comments(0)

『すごい「勉強法」』

『すごい「勉強法」』 高島徹治著 三笠書房を読んだ。

ビジネスのハウツー本だが、著者の主張には本質的なものがある気がした。

「すごい勉強法」の要点は次のようなものだ。

1.対象となることがらの全体像をすばやくつかむ。
2.その全体像をもとに、細部について自分の頭で考える。
3.学習したことを頻繁に反復し、記憶と理解を深めていく。
4.学習に要する物理的、心理的な時間の性質を把握し効果的に利用する。

知識を求める行動に限りはないだろうが、永遠に終わらない映画など見たくもないだろう。学習するにはやはり、ある区切りが必要だ。一般的には一冊の本という形でそのまとまりは存在する。まとまりがあれば、それには構造があるはずで、その構造の全体像を最初に把握しておくと、地図を見ながら観光するようなもので迷子になりにくいだろう。

地図も持たずに知らない土地を観光する人はないだろうが、本を読むときはいきなり読み始めることがほとんどだ。最初は、目次を見るなり、スキミングをするなりして本の全体像を知ることが大切だ。

全体像が見えたら、細部を読み込んでいくわけなのだが、そのとき、自分の頭で読むことが大切だ。本の文章は単なる記号なので、それは、著者の頭の中を推測させてくれるが、頭のなかの知識そのものではない。読者はそれを推測できるだけなのだ。したがって、その文章を読んで自分がどう解釈しているのかということを意識することが大切だ。また、自分の解釈に十分な論理的整合性があるかどうかも検討しなければならない。

問題集を利用するということは、自分の理解と著者の理解の間の差分を知るのための重要なポイントだ。自分の理解を検討するためのフィードバックを提供してくれるからだ。

一度読んだら忘れない人もいるかもしれないが、たいていは反復しないと記憶には定着しない。また、反復することによって理解が進み別の視点で問題を見ることができるようになるというメリットもある。弁証法ではないが、知識の理解はらせん状の運動をする。反復は重要な学習のツールだ。

人間の脳は疲労するのでぶっ続けに勉強し続けるということはできない。勉強に振り当てることのできる時間は物理的にも心理的にも限られてくる。どのような勉強をどの時間に割り当てるのかという時間管理の技術は学習の本質的な部分を支えている。学習の成否はこの時間管理の能力次第だといっても過言ではないだろう。

著者は時間管理を効率的に行うツールとしてカードを推奨している。今まで、あまりカードを学習に利用することはなかったが、この本を読んで使ってみたくなった。

概要をつかむ、自分の頭で考える、自分の理解にフィードバックをかける、反復する、時間を管理するなどどれも当たり前のことだが、実際にはどれもやっていない。だから、管理人の勉強も一向に捗らなかったのだ。反省。
[PR]
by tnomura9 | 2008-11-18 08:03 | 考えるということ | Comments(0)

要点

勉強法のハウツー本を読むと、読書をするときに要点をつかむことの大切さが強調されている。

なぜ、要点が大切なのだろうか。それは、人間の意識が一度に処理できる要件が非常に少ないからだ。一度に把握できるのは要点だけで手いっぱいなのだ。もちろん要点だけでは、複雑な全体のシステムを把握することはできない。要点を出発点として連想を頼りに細部に分け入っていかなくてはならない。さらに、その細部を検討する場合も一度に意識に上る部分は非常に限られている。

人間の脳の情報処理の性質というのは、暗闇の中で、照射範囲のせまいスポットライトをあちこち動かして探索しているのに似ている。一度に多くのことを把握しているように思える場合もあるが、それは、そのようにして探索した情報を再構成して脳の中でモデル化しているからだろう。

学習法のカギは、この意識のワーキングメモリーの少なさと、脳の中でのモデル化について意識することだろう。とくに、このモデル化に際して汎用的なプロトタイプを持っている人は、新しいことに対する理解が早いのではないだろうか。

新しい知識を習得したとき、その知識のモデルを作るだけではなく、それと自分の脳の中にある他のモデルとの共通点がないかどうか。それらのモデルを抽象化した新しいプロトタイプができないかどうか検討してみるのは意義のあることだ。

こう考えていくと、多くの要素をもった複雑なシステムの全体を把握するためには、脳の中でモデルを作ることのできる能力が欠かせないことが分かる。数学を例にとると、俯瞰的なモデルを作成するためのトレーニングとしては、図形を視覚的なイメージとしてとらえる幾何学のほうが解析より数段優れていることが分かる。採点の便のために異常に計算を重視している現在の数学教育は、いびつなもののように見えて仕方がない。
[PR]
by tnomura9 | 2008-11-17 17:41 | 考えるということ | Comments(0)

Beautiful Code

『Beautiful Code (ビューティフルコード)』 Andy Oram, Greg Wilson 編を読んだ。

残念ながら、管理人の知識では読みこなせなかった。「美しいコード」という言葉はよく聞いていたが、一流のプログラマーたちの考える美しさが多様なのに驚いた。無駄を省いたコンパクトなコードを美しいとい人もあるし、コードは少々長くなっても実行速度の速いコードを紹介する人もあるかと思えば、読みやすさこそが美しさだと主張する人もあり、また、大規模なソフトウェアが高信頼性で動くのを美しいと感じる人もある。

しかし、それらの主張には共通するものがあるように感じられた。つまり、コードの美しさとはコードの簡潔さや単なる読みやすさによるものではなく、問題を「あざやかに」解決するやり方に対して感じられるものであるということだ。Rubyのイテレータは、見た目の読みやすさを提供するので美しいのではなく、オブジェクトの要素をひとつずつ取り出してブロックに渡すという概念が巧妙なのだ。

この本の冒頭ではカーニハンによる記事があり、ロブの作った基本的な正規表現の処理プログラムを行う30行のCプログラムが紹介してあった。たった30行のCプログラムで、冒頭マッチ、末尾マッチ、繰り返しのある正規表現のマッチを実行できてしまうが、このプログラムがこのような芸当をすることができるのは、ポインタと再帰呼び出しを巧妙に組み合わせてあるからだ。

ところで、正規表現のオートマトンもCのポインタも再帰呼び出しも実はアルゴリズムだ。美しいコードの秘密はアルゴリズムやその組み合わせのやり方のスマートさにあったのだ。
[PR]
by tnomura9 | 2008-11-16 22:05 | Ruby | Comments(0)

2008年6月以降の記事

ubuntu Linux をインストールした [2008-06-01 11:14]
ubuntu で無線LAN [2008-06-01 22:56]
Linux用 minirb [2008-06-02 00:41]
ubuntu でC言語のお勉強 [2008-06-02 07:11]
Wubi で dynabook にインストールできた [2008-06-02 16:16]
ubuntu に gauche をインストール [2008-06-02 16:59]
dynabook でも ubuntu で無線LANが使えた [2008-06-03 17:39]
ubuntu に XAMPP for Linux をインストールした。 [2008-06-03 22:08]
ユーザのホーム・ディレクトリの文書をApacheで送信させる [2008-06-04 06:55]
gauche [2008-06-05 12:35]
dynabook をデュアルブートマシンに [2008-06-06 19:11]
FTPクライアントのインストール [2008-06-07 12:05]
データとOSの分離 [2008-06-08 08:24]
Ubuntu と Canon MP610 [2008-06-08 18:15]
Ubuntu 8.04 LTS の注意点 [2008-06-09 08:11]
GNOME の小技 [2008-06-10 00:15]
ウェブアプリケーションの作り方 [2008-06-13 13:24]
Firefox のキーボードショートカット [2008-06-14 08:11]
Upstart [2008-06-14 21:44]
Ubuntu で端末を使う [2008-06-15 11:59]
wlocate と wgrep [2008-06-15 19:03]
Ubuntu には root のパスワードがない。 [2008-06-15 19:37]
理解度のチェック [2008-06-17 12:46]
付箋紙でメモをとる [2008-06-19 08:07]
BasKet Note Pads [2008-06-20 00:24]
Upstart の使い方 [2008-06-20 06:54]
Sound Juicer で CD を MP3 リッピング [2008-06-20 23:21]
辞書 [2008-06-22 19:32]
Ubuntu のまとめ [2008-06-22 19:58]
道具は使うためにある。 [2008-06-23 22:35]
意欲を持続させること [2008-06-25 08:34]
忘却との戦い [2008-06-27 07:15]
手入れをする [2008-06-30 08:18]
医師不足の本当の理由 [2008-07-02 00:53]
Googling for a diagnosis [2008-07-03 08:20]
医学関係の情報 [2008-07-05 07:44]
名医を探す [2008-07-06 05:21]
情報は1冊のノートにまとめなさい [2008-07-08 06:54]
バカの壁の外 [2008-07-09 08:29]
二兎を追うものは [2008-07-11 06:19]
「どこでもノート」+「思いだし書き」 [2008-07-12 07:35]
実効的な思考法 [2008-07-14 12:50]
あいまいさに耐える [2008-07-16 23:12]
シミュレーション [2008-07-21 09:48]
結晶化 [2008-07-22 01:35]
専門家 [2008-07-25 06:20]
一次資料 [2008-07-26 03:16]
英語漬け [2008-07-27 22:00]
共感覚 [2008-07-28 00:26]
知らぬは我が身ばかりなり [2008-07-29 07:53]
作るか、探すか [2008-07-30 08:15]
道具 [2008-07-31 08:22]
小さなことからコツコツと [2008-08-01 08:14]
リアルタイムのフィードバック [2008-08-02 12:08]
『英語漬け』をクリアした。 [2008-08-03 08:19]
データの保存 [2008-08-04 12:29]
情報の管理 [2008-08-05 08:22]
発想の転換 [2008-08-06 07:34]
情報を組み立てる [2008-08-07 07:54]
無理は承知 [2008-08-18 21:16]
総量を知る [2008-08-22 16:59]
音声イメージ [2008-08-23 12:03]
パターン認識としてのヒアリング [2008-08-28 12:59]
慣れ親しむ [2008-09-01 13:28]
ブログ用コード表示フィルタ [2008-09-01 19:12]
下線の引き方 その2 [2008-09-04 07:26]
「わかった」と「手慣れた」 [2008-09-06 07:41]
含意 [2008-09-08 08:04]
Ruby で表計算 [2008-09-09 01:52]
Ruby で表計算 その2 [2008-09-09 22:18]
Ruby で表計算 その3 [2008-09-10 21:31]
Rubyで表計算 その4 アミノ酸データベース [2008-09-12 00:19]
Rubyで表計算 その5 簡単データベース easydb.rb [2008-09-12 19:25]
easydb.rb について [2008-09-15 00:42]
easydb.rb で成績処理 [2008-09-15 09:20]
readline つき easydb.rb [2008-09-15 10:14]
easydb の syntax sugar [2008-09-17 06:54]
簡単データベース改訂版 easydb2.rb [2008-09-17 18:27]
プログラムを変数に入れる edit.rb [2008-09-19 21:53]
edb.rb で簡単プログラム開発 その1 [2008-09-20 06:36]
edb.rb で簡単プログラム開発 その2 [2008-09-20 07:05]
edit.rb で snippet 管理 [2008-09-21 07:48]
統計計算スニペット [2008-09-23 07:53]
車輪を二度発明しないためには [2008-09-23 09:31]
スニペット活用環境 srb [2008-09-24 01:44]
Ruby 標準ライブラリの歩き方 English.rb [2008-09-25 00:19]
Ruby をシェルとして使う snrb [2008-09-26 07:51]
集中と不安定化 [2008-09-27 00:12]
多様性 [2008-09-28 09:21]
下線の引き方 [2008-09-30 12:51]
なぜ と ならば [2008-10-02 18:40]
慣れること [2008-10-03 07:20]
scaffold が動かない!!! [2008-10-03 23:59]
考えるということ [2008-10-05 12:20]
sqlite3-ruby [2008-10-06 19:49]
sqlite-ruby for Ubuntu [2008-10-06 22:16]
SQLite Tutorial [2008-10-07 22:40]
snippet picker [2008-10-08 08:20]
sqlite3 の使い方 [2008-10-09 00:01]
郵便番号データベース [2008-10-10 06:40]
utf-8 が使えるコマンドプロンプト utf8com.rb [2008-10-11 22:58]
loop do と while true の違い。 [2008-10-12 08:26]
DRY [2008-10-12 08:55]
Ruby on Rails の README [2008-10-13 01:45]
Ruby on Rails 入門 [2008-10-13 08:39]
RoR scaffold 入門 [2008-10-13 09:40]
RoR scaffold db [2008-10-13 15:45]
RoR scaffold app/controllers [2008-10-13 17:55]
RoR scaffold app/views [2008-10-13 21:18]
RoR scaffold app/models app/helpers [2008-10-14 05:55]
RoR scaffold まとめ [2008-10-14 06:19]
RoR scaffold のアクション [2008-10-14 07:24]
RoR Rakefile [2008-10-14 21:41]
RoR app/views/layouts [2008-10-15 07:50]
RoR config/database.yml [2008-10-15 13:58]
RoR レイアウトの yield に文書を流し込める理由 [2008-10-15 21:50]
特異メソッドと特異クラス [2008-10-16 06:46]
RoR config/boot.rb [2008-10-17 00:30]
RoR config/boot.rb の構成 [2008-10-17 06:32]
RoR config/boot.rb RAILS_ROOT [2008-10-17 21:26]
代入文を関数にする理由 [2008-10-17 22:35]
RoR script/server [2008-10-18 03:14]
RoR config/boot.rb class << self [2008-10-18 18:15]
RoR config/boot.rb Boot クラス [2008-10-18 20:55]
RubyGems の調査 [2008-10-21 07:16]
RoR Rails モジュールの調査 [2008-10-21 11:33]
RoR と send [2008-10-21 23:21]
RoR config/boot.rb GemBoot クラス [2008-10-22 12:43]
RoR config/boot.rb GemBoot [2008-10-23 07:44]
tempfile を利用した edit.rb [2008-10-24 04:47]
夢をかなえるゾウ [2008-10-25 05:14]
プライムレート [2008-10-26 19:31]
面白いブログの見つけ方 [2008-10-27 13:26]
わかりやすさの秘密 [2008-10-28 07:27]
RoR script ディレクトリのスクリプト [2008-10-29 23:24]
RoR script/about [2008-10-30 01:56]
RoR commands/console.rb [2008-10-30 07:39]
optparse [2008-10-30 17:08]
optparse その2 [2008-10-31 07:27]
プログラミングは語学だ [2008-10-31 07:58]
RoR script/console で最初にすること [2008-10-31 22:06]
RoR script/console $: (require のサーチパス) [2008-11-01 05:02]
RoR Class のメソッド [2008-11-02 05:50]
Google で辞書を使う [2008-11-02 06:31]
RoR 特定のクラス固有のメソッド [2008-11-03 09:43]
RoR 2.x の scaffold を使ったウェブアプリケーションの作り方 [2008-11-03 10:40]
略語 [2008-11-05 07:14]
キーワードで考える [2008-11-08 22:21]
キーワードを考え抜く [2008-11-09 20:02]
あったらいいなと思うもの [2008-11-11 07:46]
irb でリダイレクトを使う redirect.rb [2008-11-12 19:38]
irb を shell として使う [2008-11-14 22:48]
2008年6月以降の記事 [2008-11-16 07:57]
Beautiful Code [2008-11-16 22:05]
要点 [2008-11-17 17:41]
『すごい「勉強法」』 [2008-11-18 08:03]
delegate (委譲) [2008-11-20 19:14]
道具と使い方 [2008-11-22 14:06]
なぜ [2008-11-26 23:55]
地図を見るように文書を読む [2008-11-28 07:33]
接続詞を丸で囲む [2008-11-30 18:10]
[PR]
by tnomura9 | 2008-11-16 07:57 | リンク | Comments(0)

irb を shell として使う

edit.rb を使うと、irb 上で Ruby のプログラム開発ができるようになったので、irb から出るのが面倒くさくなった。それで、irb を shell として使う方法はないかといろいろと考えてみた。

まず、カレントディレクトリを表示してみた。

C:\Users\ganesh>irb
irb(main):001:0> Dir.pwd
=> "C:/Users/ganesh"

カレントディレクトリを変更した。

irb(main):002:0> Dir.chdir 'Ruby'
=> 0

カレントディレクトリのファイルのリストをとった。

irb(main):003:0> Dir.glob '*'
=> ["a.txt", "aa.txt", "aminoacid.rb", "aminoacid.txt", "array_grep.rb", "c2r.rb", "code.rb", "cv.rb", "easydb.rb", "easydb.txt", "easydb2.rb", "easydb2.txt", "edb.rb", "edit.rb", "names.txt", "open-uri.txt", "pick.rb", "picker.db", "redirect.rb", "sample.db", "sample.rb", "sample.txt", "seiseki.txt", "srb.rb", "stat.txt", "temp.txt", "to_array.rb", "ubin.db", "utf8com.rb"]

Dir クラスのメソッドのリストをとった。

irb(main):002:0> (Dir.methods - Class.methods).sort
=> ["[]", "chdir", "chroot", "delete", "entries", "foreach", "getwd", "glob", "mkdir", "open", "pwd", "rmdir", "unlink"]

ファイルをソートして表示した。

irb(main):005:0> puts File.readlines('aminoacid.txt').sort
Alanine ,Ala,A,nonpolar,neutral , 1.8
Arginine ,Arg,R,polar ,basic (strongly),-4.5
Asparagine ,Asn,N,polar ,neutral ,-3.5
Aspartic acid,Asp,D,polar ,acidic ,-3.5
Cysteine ,Cys,C,nonpolar,neutral , 2.5
Glutamic acid,Glu,E,polar ,acidic ,-3.5
Glutamine ,Gln,Q,polar ,neutral ,-3.5
Glycine ,Gly,G,nonpolar,neutral ,-0.4
........

ほかにもいろいろ面白いことができそうだが、今日はこれで。
[PR]
by tnomura9 | 2008-11-14 22:48 | Ruby | Comments(0)