2008-01-01から1年間の記事一覧

MacPorts で Perl を upgrade できない

どうやらインストールされている Perl のバージョンが古いらしい。 $ port outdated The following installed ports are outdated: perl5 5.8.8_0 < 5.8.8_2 ところが upgrade すると失敗する。 $ sudo port upgrade perl5 ---> Activating perl5.8 @5.8.8_3…

関数のポインタの配列

C

度忘れした。 恥ずかしい。 最近は C++ ばかりやってたから …… と言い訳しておく。int (*f)(int); /* int の引数を持つ int を返す関数のポインタ */ int (*f[])(int); /* その配列 */ const char* (*f[])(void); /* const char* を返す関数のポインタの配列…

Ruby 勉強会でウソついてしまった

emacs には ffap という機能があって、rubikitch さんのブログで紹介されています。 マイクを持って、こんなことを口走ったものの、どうやらブログではなくて SoftwareDesign 誌の 2008 年 2 月号、Emacs マスターへの道という特集記事で見たんだったみたい…

new できないクラスを作りたい

C++

new できなかったら、どうやって使うのかって? CannotNew o; // 使える CannotNew* p = new CannotNew; // 使えない (ようにしたい) CannotNew* p = new CannotNew[3]; // 使えない (ようにしたい) スタック上に作るのはいいけど、ヒープに作るのはやめて欲…

第 31 回 Ruby/Rails 勉強会@関西に行ってきた

京都女子大学で開催された Ruby/Rails 勉強会に行ってきました。 メイドめーる──メイドさんはこうやって働いている! by 大怪獣もぎゃ さん 「メイドめーる」という名の秘書メールのお話。使用しているライブラリやサービスの使い方、tips 等。実際に動くモノ…

ClamAV をアップデート

Mac

2ヶ月ほど前から MacPorts でインストールした ClamAV が動かなかった。 ClamAV が動かない いつものように port upgrade した後、freshclam が動かないことを確認し (;_;)、最新の clamav をアンインストールすると、ひとつ前のバージョンも動かなくなって…

magic comment を自動的に付ける

Ruby1.9 で漢字を扱うには、magic comment で文字コードを指定しないといけない。この面倒な作業を自動的にやってくれる Emacs の設定がある。 保存時に自動でRuby 1.9のmagic commentをつける - '(rubikitch wanna be (a . lisper)) 1 ヶ月以上 何不自由な…

Mac OS X でコンパイルした Ruby インタプリタは遅いのか?

某 国内有名 SNS に「自前でコンパイルした Ruby インタプリタは遅い」というトピックがあったので、実際に試してみた。ベンチマークに使ったのは、みんなが大好きなフィボナッチ数列。 def fib(n) i = n.to_i case when i <= 0; 0 when i == 1; 1 else fib(…

もう少しエラー処理を頑張ってみる

第 30 回 Ruby/Rails 勉強会の演習問題の RPN 電卓。 他の人の解答を見ると、エラー処理を頑張ってる人がいたので、自分も頑張ってみる。今回の演習では、まずスタックを作って、そのスタックを使って RPN を作る。 空のスタックから pop しようとすると Sta…

Security Update 2008-006 Client (PPC) のハッシュ値が合わない件

Mac

Mac OS X では、自動的にソフトウェア・アップデートするとトラブルに見舞われる確率が上がるので、アップデート用のファイルをダウンロードして手動でアップデートするのが常識となっている。2 週間ほど前に Mac OS X Tiger 用の Security Update が出たの…

印刷すると微妙に縮小されるとお嘆きのあなた

Mac

Mac OS X Panther の PowerBook から Leopard の MacBook に買い替えて以来、印刷がうまくゆかずに悩んでいた。 プリンタはキヤノンの PIXUS iP8600 もう 4 年くらい前のモデル。 「スーパーフォトボックス」とか言ってエビちゃんが CM してたヤツ。Web ペー…

第 30 回 Ruby/Rails 勉強会に行ってきた

第 30 回 Ruby/Rails 勉強会今回はスペシャルゲストにキリン本でお馴染みの Yugui さんをお迎えして行なわれました。なのに参加者が少ない。なぜ? 台風が近畿に上陸する恐れがあったから? 学生は、まだ夏休みだから? 給料日前だから? 信長の野望 on Rails by…

const 厨

C++

職場で、変に const された C++ のコードに出会した。 int parse_arg(const int argc, char** const argv) { for (int i=1; i < argc; ++i) { // ... 別に const 付けなくても動くんだから間違いじゃないけど。 たぶん、やりたいことは、こうでしょ?int pars…

マージソートの sort_by

マージソートシリーズ最終回。 module Enumerable def msort_by map{|i| MSORT.new(yield(i), i) }.msort {|a,b| a.key <=> b.key }. map{|i| i.val} end private MSORT = Struct.new(:key, :val) end ["3a", "1b", "4c", "1d", "5e", "9f"].msort_by{|v| v.…

ブラウザのジャンルを非表示にする

これだけで行けるらしい。 $ defaults write com.apple.iTunes show-genre-when-browsing -bool FALSE ジャンルって、曲名と同時に自動で設定してくれるけど、内容がいい加減すぎる。 ある曲のジャンルを他人の基準に合わせて設定しても意味ないし。 自分の…

grep が終わらない

先日、友人から「grep について教えて」と電話が掛ってきた。なんでも Linux のある特定のディストリビューションで grep -F -i . file とすると、CPU 使用率が 100% になって、grep がいつまで経っても終わらないらしい。 しかし最近は Unix 系 OS でも「CP…

マージソートにブロックを渡す

この前作ったマージソートをブロック付きメソッドに変更できた。 module Enumerable def merge(o, &comp) comp = Proc.new{|a,b| a<=>b} if comp.nil? i = 0 j = 0 m = [] while i < size && j < o.size if comp [self[i], o[j]] <= 0 m << self[i] i += 1 e…

テスト全体の準備と後始末

最近は RSpec が流行みたいだけど、私は未だに Unit Test ですよ。昔の RUnit (?) だと自分でテストを実行する必要があったけど、Test::Unit は勝手にテストを実行してくれる。上の例では、テストクラスを「定義しただけ」で、テストが実行されています。こ…

ClamAV が動かない

Mac

MacPorts を upgrade したら、ClamAV が動かなくなってしまった > $ sudo freshclam dyld: Library not loaded: /opt/local/lib/libclamunrar.4.dylib Referenced from: /opt/local/lib/libclamav.5.dylib Reason: image not found Trace/BPT trap $ clamsca…

クイックソート

マージソートに引き続きクイックソートに挑戦してみた。 module Enumerable def qsort if size <= 1 self else pivod = self[0] a, b = self[1..-1].partition{|i| i < pivod} a.qsort + [pivod] + b.qsort end end end [3, 1, 4, 1, 5, 9, 2, 6, 5, 3].qsor…

マージソート

Slashdot.jp で、初めて学ぶソートアルゴリズムは何がいい? という話題があった。ちょくちょくマージソートが紹介されていたので作ってみた。まずはマージ。 module Enumerable def merge(o) i = 0 j = 0 m = [] while i < size && j < o.size if self[i] < …

世界のナベアツ

Rubyist SNS で世界のナベアツが話題になっていたので、emacs lisp で作ってたみた。 (defun nabep (n &optional base) "n は あほ になる数か?" (or base (setq base 3)) (cond ((= (mod n base) 0) t) ((string-match (format "%d" base) (format "%d" n))…

第 29 回 Ruby/Rails 勉強会

もう 2 週間も前のことだけど、Ruby 勉強会 に関するブログのエントリを勝手に集めて、自分の感想も書いてみる。 今回はお盆休み中に開催したために参加者が少なく、なかなか勉強会に関するブログが見つからない。 ググッてググッてググりまくって、やっとこ…

謎の挙動を見せる Mac の X11

Mac の GUI は Aqua だけど、やっぱり X11 も必要。ところが Mac OS X に付属の X11 では Emi Clock がコンパイルできない。昔は X11.app が /Applications/Utilities と /usr/X11 にあって、Dock に X のアイコンが 2 個出たりしてたけど、流石にそれは何時…

rcodetools が動かない

Ruby のセキュリティフィックス版をインストールしたら rcodetools が動かなくなったみたい ><xmp してもウンともスンとも言わない。そういえば、最近 rcodetools の最新版がリリースされてたはず。http://eigenclass.org/hiki.rb?rcodetools からダウンロード。setup.rb して、いざ xmp a = [1, 2, 3] # => # ~> -e:1:in `replace': can't modify frozen string (TypeError) # ~> from -e:1 rcodetools が使っていた何かが fre…</xmp>

いまさら改行コードの違いに悩む

新しいテスト環境に Cygwin を入れる。 テスト用のシェルスクリプトを動かしたらエラー連発。 どうやら改行コードが原因らしい。 ふつうの Unix \n Cygwin \n Windows \r\n `コマンド` でコマンドの実行結果を取り出したとき、改行をうまく捨ててくれないみ…

エラトステネスの嵐

Ruby 勉強会の小波せんせのセッションについて。最初のセッションだったので、遅れて来た人のネットワーク接続サポートとかしていてちゃんと聞けなかった。また週末は次の勉強会だけど復習しておく。まずは答えを見ずに素直に実装してみた。(erato.rb) requi…

日本語 Windows で英語キーボードを使えるようにする

職場で WindowsXP + Office 2003 のテスト環境を使うことになった。VMWare のイメージファイルを受け取って作業を始めると、キーボードが日本語 106/109 になってることに気が付いた。(私が使ってるのは英語キーボード) いつものように [HKEY_LOCAL_MACHINE\…

第 28 回 Ruby/Rails 勉強会@関西に関するブログ

現在 Ruby 関西の勉強会 Wiki はトラックバックできないようになっている。 spam 対策らしい。spammer 憎い。第 28 回勉強会のページにトラックバックが全然来ないと思ったらそゆことか。悲しいので検索して集めてみました。主に演習問題で気になったところ…

第 28 回 Ruby/Rails 勉強会

いつものように勉強会に参加してきました。 今回は発表の数を減らして、ゆとりを持って「ゆるふわ」感でやってみたつもり。 でも、発表が少ないのは不評だったみたいだ。 エラトステネスの嵐 by 小波せんせい 大学教授の講義が聞ける、たいへん貴重なセッシ…