From: iTakahiro Date: 2002-11-19T21:06:28+09:00 Subject: [ruby-list:36536] Re: Linux Magazine Ruby初等講座 はじめまして、岩元というものです。 From: matz@ruby-lang.org (Yukihiro Matsumoto) Subject: [ruby-list:36532] Linux Magazine Ruby初等講座 Date: Tue, 19 Nov 2002 18:22:24 +0900 > で、皆さん、こんなテーマの記事を読んでみたいってのがあります > か。もちろん「初等」の範囲内で。 まさに、初心者(はじめて書いたプログラムらしいプログラムがRubyなのです。) の視点での要望は以下のとおりです。 1、CPUやメモリに優しいプログラムの作り方 2、設計の仕方。クラス作成の肝など。 3、プログラムに読み込ませる設定ファイルの作り方 1については、ログを集計するプログラムを作ったのですが、その中でいくつ かのログを一つにまとめるために、次のようなメソッドを作成しました。 --------------------------------------------------------------------- def cat(path, *file) write = File.open(path, 'w') begin for f in file read = File.open(f, 'r') while read.gets write.print end end rescue write.close File.delete(path) STDERR.print $!, "\n" exit 1 end write.close end --------------------------------------------------------------------- 「file」に結合したいログを指定して、それを「path」で指定したログに書き 出すというものです。 しかし、これを実行すると約1分間は、CPU使用率は100%近くになってしまう のです。 他の人も使っているマシンで、これを実行してしまうと、顰蹙ものですし、こ れからログも大きくなっていくので、どうにかしたいのです。 結合するファイルの大きさは50MBほどあります。 使用マシンのCPUは、Pentium4 1400MHzです。 多分中級以上の人からみたら、無茶苦茶ダサイ設計をしているんだと思います が、プログラム初心者からすると、どうすればCPUやメモリに優しいプログラ ムが作れるかわからないのです。 2については、クラス作成のこつを知りたいのです。上記のログ解析プログラ ムは、もろ手続き指向のプログラムなんですね。もちろんクラスやモジュール も作成してないですし。 そこで、どういった形でクラスにまとめればいいかのコツみたいなものを紹介 してもらえればと。 今のままだとこれから拡張していく中で、どんどんわかりにくくなってしまい そうなのです。 基本的に、プログラムを実際に作成していく中でのコツなどを色々と紹介して 欲しいです。 と、長々と書いてしまいましたが、Linux Magazineを購読してないもんで、す でに紹介しているものがあったらごめんなさいです。