« 2006年06月 | メイン | 2006年08月 »

2006年07月 アーカイブ

2006年07月04日

何事も基本

2006年7月3日(月) ソフトウエア講義 第一回(13:00~15:00) 始まりました~(^^

本日で思ったことは、
「何事も基本が分からないと応用できない!」
という事です。

当たり前じゃん!と言われるかもしれませんが、
認識が甘かったです。分かっていませんでした(^^;

僕は、目の前の課題をなんとかしようと、解決策を探る時間が長い傾向にあって、
それの原因が「HowTo に頼りすぎている」という事でしょう。

何か新しいソフトウエアができたとしても、基本の基本がわかっていれば、
「ああ!こうやっているな!」
というのが分かるはずなのです。

基本が分かっていないと、
「どうやっているんだろう?」
となってしまうのです。

このような事を認識できたことは、とても大きなことです。

最近は調べ方も随分と変わりました。
そして、とってもクリーンに解決します。
これも、今回の講義のおかげですm(_ _)m

今回の課題図書の「プログラムはなぜ動くのか」は、
まさに、プログラマには必須な知識ですね!
しっかりと押さえて行こうと思います。

最終的には、ruby on rails をガンガン使えるというのが目的ですが、
ruby on rails に限らず、コンピュータを上手に使えるようになりたいです。

2006年07月06日

Emacs

僕は、LinuxというOSをしばしば利用するのですが、
そこでファイルを編集したりするときは、「 vi 」というものを利用していました。
でも、今日からは「 Emacs 」を利用することにしました。

本日「 Emacs 」のヘルプ( C-h t )を読んで基本的な操作はだいたい覚え、
便利なコマンドがたくさんあるので、利用していこうと思っています(^^

Windows上でも、
「 Emacs 」はWindows版もあるので、インストールしてさっそくつかってみました。
(「 vi 」もWindows版あります)

僕は、Windowsを利用してるときのエディタは、
「サクラエディタ」を主に利用していました。
サクラエディタはサクラエディタの良いところがあるので、
メインは「 Emacs 」にして、サクラエディタの機能を利用したいときは、
サクラエディタを利用するようにしたいと思っています。
サクラエディタは「Grep」がとっても便利です。
「 Emacs 」でも使えるのかな?

「 Emacs 」や「 vi 」などは長年、開発者の間で愛用しているものなので、
便利機能がたくさんあるのだろうなー。
まだまだ、知らない機能がたくさんあるだろうから、
便利機能を覚えて、どんどん効率を上げていこう!

何か、便利な機能があったら教えてください(^^

[ Emacs ]
http://www.gnu.org/home.ja.html (日本語)
[ Emacs for windows ]
http://ftp.gnu.org/pub/gnu/emacs/windows/
http://www.bookshelf.jp/soft/meadow_9.html
[Emacs windows設定]
http://www.ceres.dti.ne.jp/~i-yasuda/rus2/meadow.html
[ Emacs for linux ]
http://ftp.gnu.org/pub/gnu/emacs/
[ サクラエディタ ]
http://sakura-editor.sourceforge.net/

[.emacs for windows]


;;;; -*- mode: lisp-interaction; coding: iso-2022-7bit -*-

;;; Mule-UCS の設定
(setq unicode-basic-translation-charset-order-list
'(ascii
latin-iso8859-1 latin-iso8859-2 latin-iso8859-3
latin-iso8859-4 cyrillic-iso8859-5 greek-iso8859-7
hebrew-iso8859-8 latin-iso8859-9
ipa thai-tis620 ethiopic indian-is13194
vietnamese-viscii-lower vietnamese-viscii-upper
mule-unicode-0100-24ff ;;japanese-jisx0208の前
japanese-jisx0208
korean-ksc5601
chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3
chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6
chinese-cns11643-7
chinese-gb2312
chinese-big5-1 chinese-big5-2
chinese-sisheng
japanese-jisx0212
japanese-jisx0213-1 japanese-jisx0213-2
latin-jisx0201 katakana-jisx0201
))
(require 'un-define)
(setq bitmap-alterable-charset 'tibetan-1-column)
(require 'jisx0213)

;;; 日本語環境設定
(set-language-environment "Japanese")

;;; IMEの設定
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq mw32-ime-mode-line-state-indicator-list
'("[--]" "[あ]" "[--]"))
(add-hook 'mw32-ime-on-hook
(function (lambda () (set-cursor-height 2))))
(add-hook 'mw32-ime-off-hook
(function (lambda () (set-cursor-height 4))))

;;; BDF フォント設定
(setq bdf-use-intlfonts16 t)
(setq initial-frame-alist '((font . "intlfonts16")))

;;; 初期フレームの設定
(setq default-frame-alist
(append (list '(foreground-color . "black")
'(background-color . "white")
'(background-color . "gray")
'(border-color . "black")
'(mouse-color . "white")
'(cursor-color . "black")
'(width . 80)
'(height . 40)
'(top . 100)
'(left . 100))
default-frame-alist))

;;; end of file


2006年07月10日

はじめてのアセンブラー

本日は、インテルCPUの歴史から始まり、16進数と2進数の関係、文字、文字列、8080CUPのアーキテクチャ、そしてアセンブラーを学習。


○インテルCPUの歴史
  現在主流のインテルCPU。Windows,Mac,Unix問わず利用されており、現在一番普及してるCPU。
  サーバーサイドなどで独自のCPUがある。
  CPUが違うと、機械語が違う。
  嶋 正利さんという方が4040,8080の開発にかかわっており、CPUの発展には日本人が大いにかかわっていたようだ。
  現在はPentiumなどが主流であるが、80386の上位互換。Athlon や Celelonなど80386の上位互換。ほとんど80386の上位互換である。


○16進数と2進数の関係
  2進数は分かりにくいので、16進数を利用する。


○文字
  コンピュータは数値しか扱えない。では、どうやって文字をあわすのだろう。
  文字に特定の数値(コード)を割り当ててそれで判断する。
  例:Aというコードは「41(16進数)」で割り当てる。
  現在のシステムのほとんどは、「ASCIIコード」を利用している。
ASCIIコードは7bitコードである。情報を表すのに7桁の2進数(10進数では0~127)を用いる。
  8bitで表現される残りの128文字分のエリアに言語独自の文字を収録することがある。(日本では、JIS X 0201としてこのエリアの一部(A1~DF)に片仮名と日本語用の句読点などを収録して使用されることが一般的であった。)


○文字列
 文字は、文字列として使われる場合が多い。
 文字か、文字列かの判断方法は、
 1.最初に長さを持つ。
 2.終わりに終わりマーク(0が多い)をおく。
 


○8080CUPのアーキテクチャ
 現在のCPUはだいぶ発達しているが、基本は同じである。
 レジスタの要素(役割)はある程度決まっている。
 たとえば8080CPUのレジスタAは演算用。
 PSW(flg)は・・・うーん。なれないせいか、CPUのアーキテクチャはもう少し理解というか「なれ」が必要なようだ。「プログラムはなぜ動くのか」をもう一度よく読み来週質問してみよう。


○アセンブラー
 機械語に近い言語。シンプルだけど、少々めんどい・・・(^^;
 でも、メモリやCPUを意識したプログラムを書くので、プログラム理解にはもってこい!
 簡単なことはできるけど、複雑なことをアセンブラーで書こうとしたら相当時間かかる。
今回は8080のCPUをエミュレートしたソフトを使用。8080を使っているつもりでプログラム!
8080に理解できる機械語を作成するため、アセンブラーを書く。
 8080命令表
 「アセンブル」すると、アセンブラーで書いた命令が機械語になる。
 「逆アセンブル」は機械語をアセンブラーにする。


※参考
 Windows には16進数が計算できる計算機が搭載されている。
プログラム → アクセサリ → 電卓


 また、会話の中で「インタプリタ」という言葉も出てきた。
Perl , Ruby , PHPなどは「インタプリタで実行されることが一般的なプログラミング言語」である。
 C言語はコンパイルして(機械語にして)プログラムを走らせるので、変換作業がなく早い。
 Perlなどは機械語に変換しながら実行(インタプリタを実行しながら動作)するので、少々動作が遅い。

2006年07月11日

ロードバランサ(負荷分散装置)

「サーバーのトラフィックが増えたときに、負荷分散はどうやるのだろう?」という疑問を前から持っていたのだけど、ロードバランサ(負荷分散装置)というのもひとつの策らしい。

参考:
http://www.keyman.or.jp/search/network2/30000695_1.html?vos=nkeyadww10001882
http://www.atmarkit.co.jp/fnetwork/rensai/lb01/lb01.html (@IT)

----上記webサイトから引用----
ロードバランサとは、特定のサーバーが過負荷にならないようにクライアントからの要求を複数のサーバーに振り分ける機能を提供する製品。日本語に直すと負荷分散装置となる。
多種多様な機器、プロトコル、アプリケーションをサポートできるようになってきた。

1台あたり数千万円以上のハイエンドサーバーよりも、1台あたり100万円以下のIAサーバー(ローエンドサーバー)でトラフィック需要にきめ細かく対応していったほうが、コスト面では圧倒的に有利になる。

----上記webサイトから引用----


今回は深くまで読まなかったし、何かテストで動かしたわけではないけど、
今後負荷分散は絶対に当たる課題なので、メモ代わりに残しておきます。

POP3 サーバを構築

とある案件で、アイルホスティングサービスの専用サーバーのカスタムプランを利用していすのですが、本日ポップサーバーの設定を行いました。これで、クライアント(MUA)でメールの受信ができます。

参考:
http://fumika.jp/nikki/2003/05/pop

サーバーの環境:
OS : RedHat9
Webサーバー : httpd-2.0.40 (apache)
SMTPサーバー : Sendmail 8.12.8
postfix-1.1.11
POPサーバー : imap-2001a
....など。

以前、サーバー内でのメールの送受設定は行ったので、今回は「クライアントでメールを受け取る」ということを設定。
レンタルしている専用サーバーなので、ほとんどインストールしてあって楽勝ではありました(^^;

今回やったことは、「ipop3 を利用した POP3 サーバを構築」です。

1.「ipop3 は、imap のパッケージに含まれる」ということで、imap がインストールされているか確認です。
  --------------
   # rpm -q imap
   imap-2001a-18
  --------------
ちゃんとインストールされているようです(^^

2.ipop3 の設定
  「ipop3 は、単独では動作せず、xinetd 経由で動作します。
  xinetd 経由で動作するサービスは、/etc/xinetd.d/ ディレクトリに設定ファイルが置かれます。
  ipop3 の設定ファイルは、/etc/xinetd.d/ipop3 です。」
  ということなので、 /etc/xinetd.d/ipop3 を emacs で開いてみる。

  --------------------------------
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
disable = yes
}
  -----------------------------

  disable の値を no に変更します。 とあるので以下に変更。

  --------------------------------
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
# disable = yes
disable = no
}
  -----------------------------
  
  このあと、xinetd を再起動します。
  
  -----------------------------
# /etc/init.d/xinetd restart
xinetdを停止中: [ OK ]
xinetdを起動中: [ OK ]
  -----------------------------

これで、MUAでメールが受信できるようになりました(^^

はじめてのシェル、はじめてのバッチ処理

講義3日目。講義は毎度、新しい発見がありとても有意義です(^^
本日は4時間あり、内容もたっぷりでしたー。

本日の講義で思ったのが「僕ってホントに知識が浅くて、知らないところはトコトン知らないなー」ということでした。
専用サーバーを設定したり、Linuxのインストールや設定、Webページの作成など少ないながらも経験してきたけど、シェルをかくのがはじめてと言う(^^; なんとも順番がゴチャゴチャです。
本日はじめてシェルを書き、cron(クーロン)という存在を教えていただき、簡単なバッチファイルを作成しました。
うーん。僕にできる事がかなり広がった!これは大きな飛躍だ。かなりプログラミングの力が広がった気がする。
ゴチャゴチャしていた破片が一気に繋がった感じがする。
シェルはとってもすばらしい!

講義3日目にもなると、プログラミングへの認識がだいぶ変わった。プログラムへの認識だけでなく、問題の本質をつかむ力が良くなった気がする。

本日の講義内容。

○Unix(Linux。プログラマーによるプログラマーの為のOS)

Unixの歴史を紐解く、現在の「MacOS-X」がUnixベースだと言うのは驚き。
Linux誕生の経緯、過去にUnixが商用化していたこと、コンピュータゲームを作りたくてUnixを作ったことなど、歴史を紐解くと驚きがたくさんあります。
昔はコンピュータが貴重だったため、一台を複数人で利用していたこともあり、アクセス管理や権限やタイムシェアリングの概念はこの頃からあった。


○インターネットの母体
メール送信のプロトコルは、現在SMTPが主流だが、前はUUCPがよく利用されていたようだ。
そのほかにも、インターネットは色々なプロトコルから成り立っている。TCP/IPやPOPもそのひとつ。物理層やデータリンク層などなど。


○Linuxコマンド

Linuxのコマンドは普段から触っているけど、触ったことがない便利コマンドが出てきて良かった(^^

課題で、「あるフォルダ内にある.configのついたファイルの数を数えましょうー」というのがあったのだけど、サクッと出来ず(--;
うーん。コマンドを意外と知らないことが発覚。なければないでなんとかやってしまうが、それではイカンのです!

分からなければ、man [コマンド][コマンド] --help で確認しよう!

su
ls
cd
pwd
mkdir
rm
chmod
| (パイプ)
などは良く使っていたので知っていたが、

head
tail
history
[ファイル] > [ファイル]
wc
date
grep
bg
などは知らなかったので、これから使おうと思う!


○アクセス権
これはけっこう理解はしていたと思う。

ちょっと実験。
「まったくアクセス権がない(000)のフォルダの中に、すべてのアクセスが許された(777)ファイルがあります。そのファイル(777)に直接アクセスしたユーザーはファイルの中身を見れるでしょうか?」

答え:
できません。

上記が成立すると、とても面倒ですよね(^^; 良かった良かった。


○プロセス系コマンド

これも大変興味深かった。
ps
kill
bg
fg


○システム管理系コマンド
df
top
passwd
adduser


○シェルスクリプト

本日僕が一番注目した内容。
シェルコマンドは何種類かあるらしい。( bsh csh bash zsh )

シェルスクリプトは、コマンドをまとめて書いて、一気に実行できるもの。
なんども同じ作業を繰り返す、コマンドはシェルスクリプトを書いて実行すると良い。
さらに、cronと組み合わせて定期的に実行することも可能(これをバッチ処理と言う)。

この「シェル」と「cron」の組み合わせはすごい!
これができるようになったおかげで、ものすごくプログラムの幅が広がった!
さっそく、本日バックアップを取るシェルを作成し、cronで定期的に実行してみた。
バッチ処理完成。うーん。これは大いなる進歩だ。


○ネットワーク(TCP/IP)とインターネット の基本技術

ネットワークはなかなか奥深い・・・。
僕は、レイヤーの意識がまだ薄いので、そのへんをつめてゆきたい。

・IPで接続される機器は32bitのIPアドレスを持つ。
・IPアドレスは 202.248.237.106 のように8bit毎に区切った10進数で表す。
・IPのパケット単位で、ルーターを経由しながら伝わる。

プロトコル「TCP」は
破損せずデータが渡るように、工夫されている。
プロトコル「UDP」は
データがしっかりと渡るかどうかは保障しないが早い。


○ポート番号
これは、Apacheなどでポートの指定の設定をしたこともあるし、少しは分かっているつもり(^^;


○DNS
・IPアドレスは覚え難いので、サーバーに名前を付けるサービスDNS を利用できます。
・サーバー名の右端 (国コードまたは comなど)はトップレベルドメイン(TLD)と呼ばれ、TLD単位でサーバー名(ドメイン名)の管理が行なわれています。例) .jp は JPNIC
・サーバー名→IPアドレスの変換は頻繁に行われるので、プロバイダーや各サーバーで変換情報を分散管理したり、キャッシュしたりしています。


○telnetの利用
telnet はあまり利用したことがない(^^;
ほとんど、特定のポートに接続して利用していたので、
80や25といった、同じソフトからポートを変えて、利用することはあまりなかった。
sendmail や webサーバーとtelnetでの会話は少々面倒だけど、
会話の内容が分かると、「ここでこんなデータを取得しているんだ!」という事が分かる。


やはり基本です。すべては基本の中にいますねー。

2006年07月17日

たのしいRuby

「たのしい Ruby」を第7章まで読みました(^^

感想は、「たのしい!分かりやすい!」です。

Rubyはスッキリコードをかけるので、すごく書いていて気持ち良いです。
Ruby独自のメソッドもかなり使えるし、Rubyが使われる理由が分かります。

Rubyを始めたい方は是非オススメです!

2006年07月18日

Rubyの基本,プログラムを書くときの基本

本日は、Ruby講義第4回。

「たのしい Ruby」の1章から7章までをやりました。
1章から7章までは、僕個人的には、サクっとやれたので、楽でした。
Ruby独特のメソッドやPerlやPHPとの差を理解できて、良かったです。
次回からはオブジェクト指向に入るということで、気合が入ります!

ということで、本日のまとめ。
1章から7章のまとめなので、変数、配列、などの事を書くと思うでしょうけど、基本的なことは書きません(^^;
基本的なことは、本に譲ります。
本日の講義で、気になった事を記しておきます。

------------------------------------

○極端に大きな数字や、極端に小さな数字の表し方
123000 == 123e+3
0.0015 == 1.5e-3


○変数とメモリー
変数の箱 == メモリー


○[ irb ]は文法チェック、正規表現の勉強などに便利


○数学的な計算が得意(?)なプログラム
HASKEL とか


○「表」という文字を書くと文字化け、エラーを起こす。
Shift_JIS 、EUC-JP、UTF8で書いてもちゃんと表示されない。

Windowsの場合は、ファイルをsjisで記述して、-Ks オプションをつけて実行すればOK。

ruby -Ks test.rb

windows上で、ファイルをeucで書いて、

ruby -Ku test.rb

でOKだとおもったけど、エラーを起こす(^^;
うーん。なんで?

参考 参考2


○ハッシュは何百個あっても、1回で見つけられるので高速である。
配列は一つ一つ見ていくしかないが、ハッシュはキーで捜せるので、高速に見つけられる。


○eachはrubyっぽい
each メソッドはruby独特。このメソッドを利用していると ruby っぽい。


○MS-DOSプロンプト便利コマンド

type [ファイル名]

ファイルの中身を閲覧できる。


○「Rubyの変数の型は一定である」
コマンドラインからデータを受け取るオブジェクト「ARGV」は文字列を扱う。
もし、ARGVで数値を扱う場合は、 ARGV[0].to_i とする必要がある。
※PHPは一定ではなく、代入されたデータにより、自動的に判断する。


○変数名、メソッド名はしっかりと考える!
読んで分かりやすいプログラムを書くため、変数名、メソッド名などは分かりやすく書くこと!
変数名を決めるのに、時間を惜しまないこと。


○プログラムは書くより、読む時間の方が圧倒的に長い!
読みやすいプログラムを書きましょう。


○良いプログラムをどんどん読もう!
良い小説を書く人は、良い小説をたくさん読んでいる、
良い音楽を書く人は、良い音楽をたくさん聴いているのと同じように、
良いプログラムを書く人は、良いプログラムをたくさん読んでいる!


○Ruby では [ if 0 ] は true である!
PHPでは、if(0) は false だが、rubyでは、true !

2006年07月24日

Ruby オブジェクト指向

本日は、「たのしいRuby」の8章と9章。オブジェクト指向の部分でした。

PHPやPerlを利用してたときも、僕が過去に作成したものは、
「構造化手法」で作っていたんだなと理解できました。

本日の講義はレベルが高かったー。「こう書いたら、こうなる」と言うのは分かるけど、それを実際にどのように組み合わせて活用するのか、いまいちつかめません。。。
やっぱ、実際に色々とソースを書いて動かしてみないと、実感が沸きづらいですねー。


講義で気になったことをメモ。


○正規表現

/(.*)@(.*)/ =~ "mailaddress"
user = $1
domain = $2
p user #=> @マーク前
p domain #=> @マーク後

ポイント: $1, $2は特殊な変数。


○ハッシュのkeyを配列で返す

def
 ・
 ・
return [Hash].keys
end

Hashのkeyの部分だけを配列で返す。


○rdoc
rubyファイルを分析したhtmlを生成してくれる。

○メソッドの呼び出し制限について

・public
・private
・protected
の3種類。

「やさしいRuby」のP131の書き方を覚える。


○メソッドに演算子

Rubyはメソッドに演算子が書ける。


○エラー処理と例外
通常は、プログラムの例外処理は、if 文などを利用していたが、やはり「めんどくさい」ので、rubyにあるクラスを利用しましょう!

2006年07月25日

Rubyのクラス

本日は、Rubyに元々ある便利クラスについてでした。

8章、9章よりは全然分かりやすかった!フムフム、なーるほどと言う感じで、けっこうスイスイ使い方自体は理解できた(と思う)。
PHPを使っていたころは、あまり「PHPに元々あるクラス」と言うものを意識して利用したことがないので、おそらくたくさん便利な物があったのだろうと思う。勿体無いことをした...。ま、これから利用すればよいのです。
ガンガン良いソースを見て、良いソースを書くことが良いと思う。
たのしいRubyの練習問題を少しずつでもしっかりと理解しながら解こう!1日2問は継続して解いてみよう。

本日の講義で気になったことをメモ。


○文字コードについて

日本語が利用できる文字コードは、大きく分けて4つある。
Shift_JIS, EUC-JP, ISO-2022-JP, UTF-8
だんだん UTF-8 が主流になりつつある!?
それは、UTF-8が Unicode と言う「新しい国際的な文字コード規格」を利用しているからである。
例えば、中国と日本では「日」と言う同じ漢字を利用しています。
でも、Shift_JISと中国の従来文字コードでは、同じ「日」と言う漢字に違う数値を割り振っているため、統一性がありません。それを、「日」と言う漢字は、同じだから同じ数値を割り当てましょう。と言うのがUnicodeである。


○ __FILE__ と $0

__FILE__ は、実行しているファイルを示す。
$0 は、実行したコマンドを示す。


○演算子はメソッドとしても利用できる。
前回のブログでも、少し触れたが、以下に実例を示す。

ポイントは↓の見方
c2 = c1 + 20
c2 ・・・ これは代入結果を入れる変数
c1 ・・・ これは、Testクラスのインスタンス(宣言されるとnumに10がセットされる)
+ ・・・ これがメソッド!
20 ・・・ これがメソッドの引数!(other)である。

一見すると、通常の足し算のようだが、全然見方が違うので注意!
これが、「Rubyでは演算子がメソッドで利用できる」と言うことである。


○irb 補足
irb は、 ; で改行を表すことができる。


○Rubyは大きな整数が扱える
CPUが32bitだと、32bit分の数値しか扱えないが、Rubyはメモリのある限り、大きな数値が扱える。
なので、 2の1000乗と言う大きな数値も扱える。

32bit CPUであれば、32bitで表現される整数が最も効率よく扱えるのは、
-2147483648~2147483647の範囲の整数(つまり32bit符号付きの表現範囲)。


○妙な結果のプログラム
a = 0.1 + 0.2
p a #=> 0.3
b = (a == 0.3)
p b #=> false

上記のプログラムは、なぜfalseと返すのだろうか?
答えは、「プログラムはなぜ動くのか」P51にあります。
↓は、実験結果。

0.1を100回足すと、10になると思いきや、ならないのである。

2006年07月31日

sendmail 転送設定

●「 .forward 」 を用いたメール転送

メールを転送したい場合は、自分のホームディレクトリ内に「 .forward 」ファイルを置きます。
hoge@xxxxx.net
\hoge

この例では、hoge@xxxxx.netに転送すると共にhogeアカウントにもメールを保存することを意味します。

「\」は、自分自身にメールがループされないようにするためのもので、必ず記述しましょう。

なお、パーミッションは「 600 」に設定してください。


参考: http://uguisu.skr.jp/Windows/forward.html

コード・リーディング

本日は、rubyコードを紙に印刷してのリーディングです。

phpやperlと役割の似たメソッドもありますが、分からないものが多く、調べて調べて調べて・・・コードを読みました。でも、この繰り返しが大切なんだと思います。

phpやperlのメソッドも「あまり使わないもの」は暗記していないので、「こんな機能あるかな?」と言う時にググったりして「ああ!コレコレ」となったり、「メソッド名は分かるけど、どう言う風に利用するんだっけ?」と言って、マニュアルを見たりしてますので、「よく使うメソッドは覚えるけど、使わないのは覚えてない」と言うのが現状。メソッドは大量にあるから、丸暗記よりは、発掘する能力とか、予測する能力、なければ作り出す能力が必要なのだと思う。コードをガンガン読んで行けばこのような能力も自然とついてくると願う。。

複雑そうに見えるコードもいざ解読し終わると、「けっこう単純なのね」となる事があって楽しい。
知らないメソッドがたくさんあるだけな場合が多い。

あとは、メソッドの使い方。
↓こんな使い方があった。
src = "test\n "
hoge = src.rstrip.split(/\r?\n/)
p hoge #=> ["test"]

注目は、2行目。
1---------------
src.rstrip.split(/\r?\n/)
2---------------
src.rstrip(/\r?\n/)
src.split(/\r?\n/)
---------------

1と2は同じ意味である。

1行にまとめてしまっているのが、スッキリしていて良い。
こんな使い方もできるんだな~と勉強になりました。

本日は、短い時間だったので、数個のメソッドしかみれなかったけど、リーディングをドンドン積み重ねて、rubyを使いこなそう!

2006年07月

Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Map

About 2006年07月

2006年07月にブログ「プログラマ 福重 伸太朗 ~基本へ帰ろう~」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2006年06月です。

次のアーカイブは2006年08月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。