トップ «前の日記 最新 次の日記» 追記

おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google[TM] してもらう

2008年8月11日(月) 週末に寝過ぎた [同日]

[Ruby] ローカル変数を加工して表示する関数を書きたい(失敗編)

#!/usr/bin/ruby

def puts_localvariable(var_name)
        puts "#{var_name} #{instance_eval(var_name)}"
end

hello = "world"
puts_localvariable("hello")   #=> `instance_eval': undefined local variable or method `hello' for main:Object (NameError)

うーん。

[Ubuntu] command-not-foundパッケージをpurgeする

遅いUbuntuマシンでコマンドをミスタイプすると時間がかかると嘆いていたら、znzさんがツッコミくださった。ありがとうございます。

手元のマシンで試してみる。このマシンは遅くないのだが。

$ dpkg -l command-not-found
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  command-not-fo 0.2.17ubuntu1  Suggest installation of packages in interact
$ jvim
The program 'jvim' is currently not installed.  You can install it by typing:
sudo apt-get install jvim-canna
bash: jvim: command not found
$ sudo apt-get purge command-not-found
$ dpkg -l commnad-not-found
   <前略>
pn  command-not-fo <none>         (no description available)
$ jvim
bash: jvim: command not found

期待通り、使えないコマンドがどのパッケージに含まれるか表示されなくなった。ありがとうございました。

purgeとremoveの違いはman apt-getの記述「purge is identical to remove except that packages are removed and purged.」だけではよくわからなった。またこんど調べる。

(追記) ayさん、ありがとうございました。dpkg(1)によれば、removeは「remove everything except configuration files. This may avoid having to reconfigure the package if it is reinstalled later.」、purgeは「removes everything, including configuration files」とのことです。

ショッカー人形にはずかしい

右の写真のショッカー人形ショッカー人形、須藤さんから、たぶんRuby会議2007の前夜祭にいただいたものです。「無くすかも」とか口走って、須藤さんに引かれてしまいましたが、ちゃんと持ってるよ。出張のたびに、ハワイ-日本間を何往復かして、フランスやシリコンバレーにも行って、同期の中ではいちばんたくさん旅行してるんじゃないかと思います。

しかーし!ここ何ヶ月かtDiaryにcommitできないばかりかこの日誌のtDiaryも古いまんま*1、Rabbitももう何年も使ってない、他のプロジェクトも放置ばかりでぜんぜんリリースできてない、という状況であります。まずいよ。ついにこの週末は体力切れで自分のためのコーディングすらできなかったという。

なんとかしなくちゃね。誰かオラに仙豆をくれ!…って結局他人頼みかよ。

*1 このホストでsubversionを使うのは有料という困難はあるにせよ

[Ruby] 引数1個でローカル変数を加工して表示する(成功編)

kouさんのツッコミでいただいたヒントと、Procオジェクトがコンテキストを保持するということから、できましたよ。表示したい変数の名前を文字列としてブロックに与える。

#!/usr/bin/ruby

def puts_localvariable(&block)
	puts "#{block.call} #{eval(block.call, block.binding)}"
end

hello = 'world'
puts_localvariable{'hello'} #=> hello world

インタンス変数やグローバル変数にも使えそうです。ちょっとうれしい♪

本日のツッコミ(全3件) [ツッコミを入れる]
> kou (2008年8月11日(月) 17:35)

引数がひとつ増えてもいいならいけそうですが。。。<br><br>#!/usr/bin/ruby<br><br>def puts_localvariable(var_name, _binding)<br> puts "#{var_name} #{eval(var_name, _binding)}"<br>end<br><br>hello = "world"<br>puts_localvariable("hello", binding) # => hello world<br><br><br>ショッカー人形「が」はずかしいかと思ってビックリしました。<br># まぁ、そうだよなぁとか思ったり。<br><br>ショッカー人形をポコポコ押すと6が入力されるキーボード、かわいいですね♪<br><br>世界中いろんなところに連れていってもらってありがとうございます!<br>実は、また戦闘員を補充しておいたんですよ。<br>Rabbitが海外でも使われるようになると、海外在住ショッカーが増えるかも!?<br><br># 全夜祭 -> 前夜祭?

> ay (2008年8月11日(月) 18:15)

purgeは設定ファイル(など)も削除しますが、removeは残しておいてくれます。dpkg(1)などに記述があります。

> zunda (2008年8月11日(月) 19:59)

kouさん、ayさん、ありがとうございます。<br><br>「全夜」ってむっちゃローカルな天文用語でした。そうか!evalの第二引数!スタックフレームから取ってこられるといいんですけどね…。ショッカー人形、いつもは持って歩いてるのでキーボードにはくっついてないです :P ショッカーの名に恥じない活動をしたいところですが、なかなか orz


トップ «前の日記 最新 次の日記»

脳味噌から汁が出るくらい考える。こともある。


zunda <zunda at freeshell.org>