Macを見に行ってきた。
Mac欲しい。
Linuxに移行して4ヶ月。多少不満も出てきた。Linux最大の弱点は、
"Photoshopが動かない"
Gimpではデザインする気が起きないので。選択肢として、Macというのもアリかなぁと思って調査してきた。
ビックカメラでターミナル起動。色々試してみる。
$ zsh %
うっほ。漢のzshが標準で入ってる!vim,emacsも標準で入ってる。Ruby,Perlも標準で入ってる。残念ながらgccは入ってなかった。バージョンはかなり古め。+Photoshopがあれば充実したLL開発環境となるだろうと思う。
買った本
Perl Hacks ―プロが教えるテクニック & ツール101選
- 作者: chromatic,Damian Conway,Curtis "Ovid" Poe,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/01/23
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 62回
- この商品を含むブログ (45件) を見る
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョンベントリー,Jon Bentley,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/10
- メディア: 単行本
- 購入: 30人 クリック: 551回
- この商品を含むブログ (162件) を見る
その他色々。
Amazonで買った本
GW前に注文してやっと届いた・・・遅いよ!!
- 作者: Dave Thomas,Chad Fowler,Andy Hunt,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2006/08/26
- メディア: 大型本
- 購入: 7人 クリック: 270回
- この商品を含むブログ (152件) を見る
Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
- 作者: Mike Mason,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2007/04/21
- メディア: 単行本(ソフトカバー)
- 購入: 35人 クリック: 672回
- この商品を含むブログ (102件) を見る
- 作者: 平林雅英
- 出版社/メーカー: 技術評論社
- 発売日: 1997/05
- メディア: 単行本
- 購入: 3人 クリック: 25回
- この商品を含むブログ (18件) を見る
少し固めの本を選んでみた。何年も読める本を中心に買い進めたいと思います。
たのしいRuby 第16章 FileクラスとIOクラス
昨日の事
昨日、本屋でRailsの本を立読みしたらびびった。
% irb -r rubygems -r active_support irb(main):001:0> p 1.minute 60 => nil irb(main):002:0> p 1.hour 3600 => nil
なんじゃこらぁぁぁ!!!!!!!
RailsがRubyを採用した理由がわかったような気がする。Rubyでなければ出来ない。
Railsをやりたいけど、基本重要。今日は第16章、Fileクラスと、IOクラスに突入する。
ディレクトリのトラバース
再帰を使ったディレクトリのトラバースが面白かったので、treeコマンドに改造してみた。
#!/usr/bin/ruby def tree(path, del) if FileTest.directory?(path) puts del + "|--" + path.sub(/.*\//, '') dir = Dir.open(path) while name = dir.read next if name == "." next if name == ".." tree(path + "/" + name, del + "| ") end dir.close elsif FileTest.file?(path) puts del + "|--" + path.sub(/.*\//, '') else puts "not found." end end if ARGV.empty? tree(".", "") else tree(ARGV[0], "") end
実行結果は・・・
% ./tree.rb ../../ |-- | |--c | | |--normal | | | |--head | | | | |--head | | | | |--tags ..(略 | | | |--lex.yy.c | | | |--number.y
本物。
% tree ../../ ../../ |-- c | |-- ls | | |-- Makefile ..(略 | `-- wc.awk `-- zim `-- Home.txt
ソートもないし、最後のディレクトリ処理も甘い。しかも、一段深い。色々課題が残ってるなぁ・・・。
treeは案外難しい。
気になったので修正。
やはり、気になったので修正を加えた。
#!/usr/bin/ruby def tree(path,del) dirs = Array.new files = Array.new dir = Dir.open(path) dir.sort.each do |name| next if name == "." next if name == ".." newpath = path + "/" + name if FileTest.directory?(newpath) dirs.push(newpath) else files.push(newpath) end end dir.close files.sort.each_with_index do |file, i| if i == files.length - 1 puts del + "`--" + file.sub(/.*\//, '') else puts del + "|--" + file.sub(/.*\//, '') end end dirs.each_with_index do |name, i| if i == dirs.length - 1 puts del + "`--" + name.sub(/^.*\//, '') tree(name, del + " ") else puts del + "|--" + name.sub(/^.*\//, '') tree(name, del + "| ") end end end if ARGV.empty? path = "." else path = ARGV[0] end if FileTest.directory?(path) puts path tree(path,"") elsif put "not found." end
実行結果は・・・。
% ./tree.rb ../../ ../../ |--c | |--ls | | |--Makefile ...(略 | `--wc.awk `--zim |--.zim.cache |--.zim.history.cache `--Home.txt
tree -aしたときと、ほぼ同様の結果になった。まだまだ課題は残る。正規表現より、File.basenameを使った方がいい。
便利そうなメソッドいっぱい
ひとつひとつ確認した。Findクラスが便利!!Ruby版Bloxsumとか面白そう。
練習問題。
簡単だった。参考になったのは、コレ。
du(ARGV[0] || ".")
ナルホド。