2008-08-11 :-)
_ 仕事
今日から夏季休暇
_ どうしてスパゲティなんですか
という質問を5年くらい前のオフ会で id:bliss から訊かれておいて返答してなかったことを思い出した。
以下答え
- 取っつきやすそうだったから
- 食べたものを淡々と記録するよのひとがスパゲティ本を紹介(アサマシ)してたから
_ あーあー
本日は晴れなり
_ あーあー
本日はキテレツなり
_ あーあー
てすてす
_ もなーもなー
もなー
_ あーあー
てすてす
_ わたしはけっこねん
名前はまだない
_ もげー
ちちをもげー
_ んふ
もな
_ [PATH_MAX][NAME_MAX]ファイル名の長さ
tdiary 「タグ名が長すぎる」と怒られた[ 20080804#p08 ]を追跡します。
こんなエラーでした。
File name too long - /home/rin/diary//category/... (Errno::ENAMETOOLONG) /usr/pkg/lib/ruby/1.8/pstore.rb:295:in `initialize' :
pstore.rb のここ
293 content = nil 294 unless read_only 295 file = File.open(@filename, RDWR_ACCESS) ← ここ 296 file.flock(File::LOCK_EX) 297 commit_new(file) if FileTest.exist?(new_file) 298 content = file.read()
open(2) です。
open(2) のマニュアルを読みます。
[ENAMETOOLONG] A component of a pathname exceeded NAME_MAX charac- ters, or an entire path name exceeded PATH_MAX charac- ters.
和訳が欲しいときは FreeBSD マニュアルを読みます。
[ENAMETOOLONG] パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。
各々の値はいくつでしょうか。
#include <stdio.h> #include <limits.h> int main( int ac, char** av) { printf("NAME_MAX: %d\n", NAME_MAX); printf("PATH_MAX: %d\n", PATH_MAX); return 0; }
実行。
NAME_MAX: 255 PATH_MAX: 1024
エラーになった /home/rin/diary//category/... は full path ですが、このうちファイル名の部分の長さは 354 文字あります。
よって、今回は NAME_MAX の制限にひっかっかったようです。
_ [App::Ack][grep]App::Ack を入れる
ソースコード検索の ack がよさげな件: blog.bulknews.net
CPAN シェルから install App::Ack とするだけ。
するだけ。
: Installing /usr/pkg/lib/perl5/site_perl/5.8.0/App/Ack.pm Installing /usr/pkg/lib/perl5/site_perl/man/man1/ack.1 Installing /usr/pkg/lib/perl5/site_perl/man/man3/Ack.3 Installing /usr/pkg/lib/perl5/site_perl/bin/ack Writing /usr/pkg/lib/perl5/site_perl/5.8.0/i386-netbsd-thread-multi/auto/ack/.packlist Appending installation info to /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/perllocal.pod /usr/bin/make install -- OK
ということでここに入りました。
% ls /usr/pkg/lib/perl5/site_perl/bin/ack
_ [GNU global]GNU global を入れる
% cd /usr/pkgsrc/devel/global % sudo make install clean-depends
試しに使ってみる。sudo しないといけないような場所にタグを生成するのがキモイんだが出力先は指定できないんだろか。
% cd /usr/src/usr.bin/top % sudo gtags -v
_ Emacs から GNU global
.emacs にあれこれ設定します( ref. Emacs + GLOBALでソース読みを快適に - ひげぽん OSとか作っちゃうかMona- )
gtags.el がここにあります。
% ls /usr/pkg/share/gtags/gtags.el /usr/pkg/share/gtags/gtags.el
load-path に追加。
(setq load-path (append '("~/usr/local/share/emacs/site-lisp") '("/usr/pkg/share/emacs/site-lisp/w3m") '("/usr/pkg/share/emacs/site-lisp/apel") '("/usr/pkg/share/emacs/21.4/site-lisp/emu") '("/usr/pkg/share/emacs/site-lisp/ruby-mode") '("/usr/pkg/share/gtags") load-path))
これも。
(autoload 'gtags-mode "gtags" "" t) (setq gtags-mode-hook '(lambda () (local-set-key "\M-t" 'gtags-find-tag) (local-set-key "\M-r" 'gtags-find-rtag) (local-set-key "\M-s" 'gtags-find-symbol) (local-set-key "\C-t" 'gtags-pop-stack) ))
vim は設定してないです( ref. 3.5 Vim using GLOBAL )
_ [tdiary][はてなホットエントリー][hotentry]tdiary にはてなホットエントリーを表示する
hsbt さんとこ の「最近注目の日記」や machu さんとこ の「人気の日記を読む」のアレを表示します。hsbt さんに訊いたら教えてくれました。
Twitter / SHIBATA Hiroshi: @miwarin 人気の日記プラグインですけど、最新はこっちです http://coderepos.org/sh...
ということでプラグインはこちら。contrib です。
tdiary-trunk を追跡してるのですでに手元にありました。コピーします。
% cp contrib/plugin/my_hotentry.rb ~/public_html/tdiary-trunk/plugin
ヘッダまたはフッタに以下を書きます( フッタのほうがいい )( ref. void GraphicWizardsLair( void ); // script type="text/javascript"で.jsを呼び出すタグは、出来る限り本文の後に移動したほうが閲覧者に親切 )
<%= my_hotentry %>
あとは日記を更新すればホットエントリーを取得して、表示されます。
_ [GNU global][gtags]GNU global の gtags の出力先を変更する
あった。
GNU GLOBAL source code tag system - 2.3 Applied usage
このとおり作業する。
% cd /usr/src/usr.bin/top % mkdir ~/work/netbsd.tags % gtags -v ~/work/netbsd.tags % export GTAGSROOT=`pwd` % export GTAGSDBPATH=/home/rin/work/netbsd.tags
コマンドラインから使ってみる。
% global i_loadave display.c
ok
Emacs からも使えました。
_ [GNU global]GNU global の環境変数を設定ファイルに書いておく
~/.globalrc に書いておけば global が起動時に読むかと期待したけど読まないようです。
% cp /usr/pkg/etc/gtags.conf ~/.globalrc
export GTAGSROOT=/usr/src/usr.bin/top export GTAGSDBPATH=/home/rin/work/netbsd.tags
% cd % global main global: GTAGS not found.
.zshenv などに書くことにしました。
export GTAGSROOT=/usr/src/usr.bin/top export GTAGSDBPATH=/home/rin/work/netbsd.tags
% cd % global main ../../usr/src/usr.bin/top/top.c
仕事でスパゲッティ扱ってるからじゃないんすかー?
ぶんじさん:<br>残念ながらパスタ(笑)は扱っていてもスパゲティは扱っていません。
どういう経緯でそういった質問をしたか記憶にないですね・・・。
堀内さん:<br>前後の話題は私も覚えてないです。当時ほかにどのような会話をしたかさっぱり覚えてないのだけど、なぜかこの質問のところだけ覚えてました。<br><br>「墓場に入る前に返答しておかないといけない」というプレッシャーがあったんだろうか........