nesugi.net/diary

0034985
過去の日記

2005-06-01

[debian]debファイル作り 17:31

前にどこかに書いたような気がしたんだけど、にっき過渡期だったらしく、どこのサイトに書いたのかわからなくなった模様。しょうがないので、思い出しつつまた書いてみた。ちなみに参考にしたのは、[Debianでのdebパッケージの作成方法(個人利用レベル)]

まず最初、必要なものを入れる。いろいろ書いてあるけど、どれがどこで遣われてて、本当に必要なのかは不明。でもdh-make*1、debhelper以外はだいたいはいってるような気もする。

で、適当にディレクトリ掘って、./configure; make install で全部はいるぐらいまでに展開。もちろんテストは別でしてあることが前提。カレントディレクトリを./configureできるディレクトリに移して、

 dh_make -e [MailAddress]

元サイトだと-fオプションが付いていたけど、これはsourceのtar玉を指定するために使うみたいなので、patchを当ててる場合とかにはやらない方がいいんじゃないかということで却下。もちろん-eもいらないような気もする。パッケージタイプはよくわからないのでsingleを選択*2

dh_makeがdebianディレクトリを作るので、その中のcontrol, copyright, changelog, rulesを変更するといいらしい。といっても、自分で使うだけだったらrulesだけ、それもいじる必要がなければ放っておいていい気がする。

ここまでやったら最後は、./configureのあるディレクトリで、

dpkg-buildpackage -rfakeroot

でおしまい。一個上のディレクトリにdebファイルができているはず。

※ 6/11 追記: そういや、前はdebuild*3とかいうプログラムを使ったような気もしてきた。どっちが簡単だったんだっけ・・・まぁいいか。

*1 元サイトにはdh_makeと書いてあるけど、これは間違い。コマンド名がdh_makeで、パッケージ名はdh-make

*2 manには少し書いてあるみたいだった

*3 確認したら、devscriptsってパッケージに入ってた

本日のツッコミ(全4件) [ツッコミを入れる]

viagra [CSTgFc この間も俊太郎の詩をお, http://www.stlouisbusinesslist.com/bu..]

viagra [oMXeRX この間も俊太郎の詩をお, http://www.stlouisbusinesslist.com/bu..]

viagra [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]

viagra [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]

本日のリンク元 | 4 | 3 | 2 | 1 | 1 |

2005-06-03

[C++]例外を吐くコンストラクタ 12:24

コンストラクタで、エラー時に例外を吐くようにコードを書いてたんだけど、問題発生。
例外を吐くものだから、構築時にtry-catchのブロック内に放り込んでおいたんだけど、いざそのインスタンスを使おうとしたときにはtry-catchブロックから出てしまっていて、スコープ外で未宣言扱いになってしまい、使えない罠。

どうしたもんかね。

本日のリンク元 | 5 | 3 | 2 | 2 | 2 |

2005-06-10

[ruby]Rubyの多重ループ 12:43

Rubyで多重ループから一気に抜け出る場合のやり方について。なんど調べても必ず忘れるのでメモ。

[Rubyリファレンスマニュアル - trap::スコープ、制御構造]にも書いてあるけど、catch/throwを使うと良いらしい。ちなみに例外の補足と発生に使うのはrescue/raise。ややこしい。

Rubyは結構使うんだけど、:で始まるシンボルって、そんなに使わないんだよねぇ。また結局フラグ立てて抜け出すとかってしてしまいそう・・・

Emacsのモードラインに関数名を表示 22:17

なんてことができるらしい。.emacsに一行足すだけ。

(which-function-mode 1) 

結構便利な気もするけど、関数名(+クラス名)が長いと右端が消えて読めないとか、そもそもバグはスクロールの間に隠れているのだから、もっと短くしろとか・・・

でもまぁ、日付をだしてもしょうがないし、こっちに変更することにした。

本日のリンク元 | 3 | 2 | 2 | 1 | 1 |

2005-06-12

[TIPS]TinySVMのperl moduleが入らない 15:50

[TinySVM: Support Vector Machines]をPerlから使いたくて、モジュールを入れたいんだけど、installに失敗するとか相談を受けたので、調べてみた。

・・・のが、ずっと昔の話。そのときは結構いろいろ調べてみて、原因らしきものも特定したんだけど*1、結局まじめに直すのはめんどくさいのでやめて、強引な方法で解決した。で、そのときのメモが発見されたので、以下はその方法。

  1. TinySVMのVer. 0.09を解凍
  2. TinySVMのVer. 0.04を解凍*2
  3. 0.09の方のperlディレクトリを削除して、
  4. そこに0.04のperlディレクトリをコピーして持ってくる
  5. 新しく持ってきたperl/Makefile.PLのLIBSに-lstdc++を追加
    'LIBS'              => '-L/usr/local/lib -ltinysvm'
    これを
    'LIBS'              => '-L/usr/local/lib -ltinysvm -lstdc++'
    こんな感じ。
  6. 後は普通に./configure; make installして、TinySVMの本体をinstall
  7. Perl moduleを入れる場合は、cd perlした上で、perl Makefile.PL; make install

でできる、とメモには書かれてた。なんか、バージョンが違うと、モジュールの使い方が微妙に違うという話を聞いたような気もするけど、その辺はよく知らない。まぁ、自分が使ってるんじゃないし・・・でも、特に不具合で文句を言われた気もしないので、使えるんじゃないかな。

原因特定すれば、パッチ作って送ったりできるんだけど、この方法だと、報告するのすら情けないので、放置。

*1 debianの何かが原因だったような・・・でも、gccとかglibだったような気もする・・・いや、swigとperlのバージョンだったかも・・・

*2 http://chasen.org/~taku/software/TinySVM/src/から取ってこれる

本日のリンク元 | 74 | 24 | 12 | 4 | 4 |

2005-06-17

[web]ココログのatom 00:17

プログラムのバグ出しをしていたら、[ココログ]の出力しているatom.xmlがなんかおかしいらしいということが判明。

各entry要素のcontentに、普通のatom*1では「<content type="text/html" mode="escaped" ... >」という感じで書いてあるんだけど、cocologでは、この形で書いてあるentryと、「<content type="application/xhtml+xml" ... >」と書いてあるentryが混在してるみたい。ちなみに、mode=escapedと書いてあるentryの中身はCDATAで囲まれているんだけど、mode=escapedになってない方はCDATAになってないみたい。

で、atom的にはどちらを使うのが正しいのか、もしくは両方正しいのかよくわからないのだけど、比較的メジャーっぽいPerlモジュールのXML::Atomでは、mode=escapedになってないentryに書かれている日本語は文字実体参照に変換されてしまうみたい。どうしたもんかね・・・

[TIPS]今日のPerl 05:12

Perlのことは全然わからないので、今日使った中でこの先使えそうなものだけをメモ。

  • LWP::Simpleをuseして、$html=get($url)とかすると、$htmlにHTTPでGETした中身が入る
  • 出力のバッファリングをやめるのは、$|=1
  • 文字実体を元に戻すのは、use HTML::Entitiesして、$text=decode_entities($content)
  • UTF8フラグというのがあって、その文字列がUTFの時にはこのフラグが立っている(utf8::is_utf8($var)で確認可能)
  • フラグを立てるにはutf8::decode($var)、フラグを消すにはutf8::encode($var)
  • 変数$varのポインタは、\$varって感じに、頭に\をつける
  • ポインタを実体に戻すには、${\$var}みたいに、{ }でくくる?
  • ポインタから直接メンバ*2にアクセスするには、->を使うみたい

ってか、最後の方のやつは、perlの入門本でも読めば載ってそうだけど。というか、俺のラクダ本、一度も開かないまま、誰かにパクられたんですが・・・誰が持ってったんだろ。こうなるとちょっと返して欲しい。

それにしても、ほんとにPerlやりたくないんだからさ、勘弁してよ・・・

*1 MTとか?

*2 hashのときだけ?

本日のリンク元 | 3 | 3 | 2 | 2 | 2 |

2005-06-22

[TIPS]GMail NotifierからSleipnirを使う方法 03:04

[Gmail Notifier]をダブルクリックしたときに、IEではなくてSleipnirを使う方法。
これ、元々は別のところに書いてたtipsなんだけど、そっちは消すかもしれないし、今日使ったのでこっちに再掲。

方法の概要としては、レジストリをいじって、レジストリ中に書かれているブラウザリストみたいなものにsleipnirを追加する、って感じだったと思う。で、具体的にどうするかというと、sleipnir.regみたいなREGファイルを作成して*1、実行すればおっけ。このファイルは、sleipnirの実行ファイルのパスを"C:\Program Files\Sleipnir\Sleipnir.exe"に決めうちしているので、実行ファイルの場所が違う場合は書き換える必要あり。デフォルトのインストール先にしてる場合はこのREGファイルをダウンロードして、そのまま実行すれば大丈夫なはず。レジストリを書き換えた後は、GMail NotifierのオプションのところにSleipnirってのが追加されてるので、それを選択すれば、次回からはダブルクリックでsleipnirが立ち上がるようになっているはず。

この設定をしておくと、GMail以外でも便利なことがあるかもしれないので、やっとくといいかも。

本日のリンク元 | 3 | 3 | 3 | 2 | 2 |

2005-06-24

[ruby]急募: robots.txtやMETAタグを扱えて、http-getしてくれる関数 02:31

こんなライブラリ、誰か作ってないのかなぁ・・・作ってても良さそうなものだけど。誰も作ってないことが明らかなら、自分で作ってもいいんだけど、誰かが作ってるならこんなことに時間かけたくないし。

noraって、そういうのもできるのかと思ったら、Officialは止まってるし。RubyistMagazineを見てる限りでは、できるかどうか微妙かなぁ・・・

本日のリンク元 | 4 | 1 | 1 | 1 |

2005-06-26

[TIPS]xyzzyを使ってみた 15:46

なぜか今まで敬遠していたxyzzyを初めて使ってみた。結構いいかも。まだあんまりいじってないけど、いくつかの設定で気づいた点をメモ。

  • デフォルトではインクリメンタルサーチになってくれない
    isearch.lを入れれば良い。初期設定ファイルに「(require 'isearch)」
  • .emacsみたいな初期設定ファイル
    .xyzzyってのを自分のホームディレクトリに置けばよい。WinXPだとおそらく、環境変数が優先されてマイドキュメントか何かになるみたい。これを変えたい場合は、ここ(http://www.osamurai.flnet.org/memo/xyzzy/setup#SEC.1.3.1)とかに載ってる。
  • キーの設定とか
    「(global-set-key #\C-u 'previous-page)」という感じらしい。#が付くのが変わってる??
  • 辞書の使い方はhttp://xyzzy.s53.xrea.com/wiki/?QuickTour%2Fetc%2Fedictが一番わかりやすかった。あとは、複数辞書の同時引きとか、カーソルの下だけじゃなくて、直接mini-bufferに入れたりとかはできないのかな。
本日のリンク元 | 4 | 3 | 2 | 1 | 1 |

2005-06-29

[TIPS]ルーターのNATテーブルがクリアされて、sshが切れる 03:15

NATテーブル*1がさっさとクリアされてしまうために、ssh接続が切れまくってしまうという問題が発生。これって、高級なルーターを使ってる場合はちゃんとクリアするまでの時間とかを設定出来るらしいんだけど、そうでない場合の対処法。

参考にしたページがわからなくなってしまったので、いくつかのパターンがあるらしいのだけれど、とりあえず今回使った方法は、ルーターから飛んだ先のsshdで、ClientAliveIntervalとClientAliveCountMaxを設定する方法。具体的には、/etc/ssh/sshd_configに以下を追加。

ClientAliveInterval 5
ClientAliveCountMax 120

ただこの方法は、Opensshを使っていて、sshがプロトコル2で接続した場合しか有効じゃないとかいう噂も。本当のところはどうなんだろね。

ちなみに他の方法は、sshでつないでおいて、その中で常にパケットを飛ばし続けるとか、そんな方法だったような気がする。

追記: あれ、でも、今回はこれでも切れちゃったぞ。前の環境の時はよかったんだけど・・・

[TIPS]apt-get updateに失敗 11:34

coLinuxをinstallしてたら、なんだかよくわからないけど、

E: Dynamic MMap ran out of room
E: Error occured while processing romeo (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/dennou-k.gaia.h.kyot
ry_Linux_debian_dists_stable_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened

こんな感じのエラーが出て、失敗した。

原因はなんなんだかよくわからないけど、aptで使うキャッシュ容量(?)を増やすといいらしい。例えばここ(http://www.namazu.org/~tsuchiya/debian/x20/2003.html)では、

/etc/apt/apt.conf.d/90cache-limitというファイルを作って、その中にAPT::Cache-Limit 12582912;と書いてる。今回の場合もこれでapt-get updateできるようになった。

mmapがout of roomってことは、やっぱりメモリ周りなのかな。まぁ、キャッシュっていってるしなぁ。

あ。エラーメッセージの右端が切れてる。矩形選択したからか・・・

*1 というのが正式名称で良かったんだっけ?

本日のリンク元 | 9 | 6 | 5 | 4 | 3 |

ご意見ご感想はadmin@mail.nesugi.netまで。