トップ 最新 追記

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


05/02/2005 ふむ [長年日記]

tDiary 921日目

[日記] 昨日

R. A. K. U. - 「楽」で遊びに.今ぽこっと思いついて勝手に名付けた.

  • じゃじゃ麺食いすぎた.
  • 千葉を表現したニクイあんちきしょうに惚れ.
  • とりあえず高いのと速いのはちょっと涙がちょちょ切れちゃうぜ.
  • 見知らぬ人を何度祝ったことか.ハードロックカフェ恐るべし.

[日記] うーん

暇だったのでリファラスパムをどうにかできんかなと考えてみる.で,適当なスクリプト をでっちあげて cron で回してみることにしてみた.

……けど,結局 regex は手で更新しなきゃならんわけで,あんまり意味ないんじゃないかと思った次第.

つか

SetEnvIf Referer で弾いた方がスマートかつ処理も速いと気付いた.調べてみると皆さんやっぱりこっちでやってるみたいっすね.俺バカ丸出し.

ただ TCP Wrapper とか iptables とか,もっと下のレイヤで叩き落とすのにはそこそこ使えるかもしれん.

スパムを駆逐してリンク元公開の再開に踏み切る.

ついでに試してみたが相変わらず Trackback が動かない.何でかなー.


05/04/2005 ぶひ [長年日記]

tDiary 923日目

[戯言] ほげほげ

ほげほがひげふがはげらー!!

[Py][日記] 今日の IRCMemoBot

前から気になってた memo 系コマンドをまとめる.具体的には memo,modify,tmemo の三つ.

もう少し各メソッドの引数に乗せるものを考えた方がいいかもしれんな.処理が進むにつれて,それらの過程で生まれた値を使いたくなる場合もあるだろう.スーパークラスの変数を直接使うのはあまり好きでない.

でもメソッドによって引数の数や意味が変わるのもややこしいんだよなあ.

それにしても汚いなあ.どうにか綺麗にしたい.

追記

更に抽象化を進めてどんな拡張でもできるようにしたら,とんでもないことになってしまった.ここまで来ると,スーパークラス側でどこまで用意するかが悩ましい.

しかしここまでする必要があったんだろか.いたずらにコードを読みにくくしただけかも.

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

萩原 [ん?僕のこと?>はげ ]

atzm [いえ,「ほげほがひげふが」は「げら」であるというお告げを得たため書き残しておいたのです. ]


05/05/2005 うむ [長年日記]

tDiary 924日目

[日記] むー

明らかに風邪だ.熱出てきたくさいなあ.ぼーっとするわ.

[戯言] こまんどができるまで

IRCMemoBot コマンドのつくりかた.仕様が変更される可能性は大いにあり得るけども.

  1. コマンド名を決めます.ここでは「!hoge <url> <description>」なコマンドを作ります.
  2. commands ディレクトリ以下に command_hoge.py を作ります.
  3. command_hoge.py の中に command_hoge クラスを定義します.
  4. command_hoge クラスは supercommand.SuperCommand を継承します.コンストラクタは config オブジェクトと rss オブジェクトを引数にとります.
  5. hoge コマンドは url を第一引数に,description を第二引数にとるので,SuperCommand の初期化では SuperCommand.__init__(self, config, rss, url=1, description=2) となります.
  6. 処理を書きます.

ここで SuperCommand のデフォルト処理フローを見てみます.例えばこの状態でコマンド「!hoge <url> <description>」が打たれると,analyze term → modify term と処理を行います.また,デフォルトで analyze では split,modify では load_rss_for_multi が実行されるようになっています.ここで split や load_rss_for_multi 等の,term 内で実行されるものを proc と呼びます.

split proc ではコマンド引数を解析,分割して保存します.ここで保存された引数は get_arg() メソッドで取得することができます.!hoge では url と description を引数にとっているので,get_arg('url') で第一引数を取得できます.

load_rss_for_multi proc は単純に RSS をリロードします.これは設計がダメダメなことによる苦肉の策なので気にしないで下さい.

さて,各 term に入るときには _before_TERMNAME_term,term から出るときには _after_TERMNAME_term というメソッドが呼ばれます.command_hoge クラスの中でこれを定義しておくと,term に入るとき,term から出るときに何をするかを記述することができます.デフォルトでは何もしません.また,_default メソッドをオーバーライドするとデフォルト動作を変更することができますが,よっぽどのことがない限りはやらない方がいいでしょう.デバッグ等に使うのは良いと思います.

また,proc も同様に,proc を実行する前に _before_PROCNAME,後に _after_PROCNAME を呼びます.デフォルト動作も同様です.

さて,term には proc を複数関連づけておくことができます.append_proc メソッドで,既存の term に proc を追加することができます.例えば self.append_proc('modify', 'hoge_proc') などとすると,modify term で呼ぶメソッドを追加できるということです.

hoge_proc を modify term に追加したので,hoge_proc の処理内容を定義します.メソッド名を _hoge_proc として処理を書きましょう.引数はコネクション,イベント,送信されたメッセージ全文,送信者のニックネーム,送信されたチャンネル名の 5 つです.お好みに応じて _before_hoge_proc や _after_hoge_proc を定義しても良いです.これらのメソッドは真偽値を返すものとします.偽が返った場合,そこで処理がストップします.

もちろん,term も追加することができます.append_term メソッドで write term を追加してみましょう.self.append_term('write', ['write_to_rss', 'write_to_html']) で,第二引数は proc のリストです.これで,処理フローは analyze → modify → write となりました.

write term の proc である write_to_rss, write_to_html ですが,これは実は SuperCommand で用意されています.つまり _write_to_rss,_write_to_html メソッドが定義済みです.RSS や HTML への書き出しをやってくれます.また,write term を出たときに実行される _after_write_term も定義されています.もちろんオーバーライドして処理を変更しても構いません.

他にも term や proc を削除することなどもできますが,そこらへんはめんどくさいのでコード読んで下さい.

さて,できたコードはというと,

from suppercommand import SuperCommand
class command_hoge(SuperCommand):
    def __init__(self, config, rss):
        SuperCommand.__init__(self, config, rss, url=1, description=2)
        self.append_proc('modify', 'hoge_proc')
        self.append_term('write', ['write_to_rss', 'write_to_html'])

    def _hoge_proc(self, c, e, msg, nick, channel):
        self.get_arg('url')         # 第一引数をゲット
        self.get_arg('description') # 第二引数をゲット
        ...
        return True # 処理が終了した時は真偽値を返す

これだけです.ここで処理フローをもう一度確認してみると,

  1. _before_analyze_term
    1. _before_split
    2. _split
    3. _after_split
  2. _after_analyze_term
  3. _before_modify_term
    1. _before_load_rss_for_multi
    2. _load_rss_for_multi
    3. _after_load_rss_for_multi
    4. _before_hoge_proc
    5. _hoge_proc
    6. _after_hoge_proc
  4. _after_modify_term
  5. _before_write_term
    1. _before_write_to_rss
    2. _write_to_rss
    3. _after_write_to_rss
    4. _before_write_to_html
    5. _write_to_html
    6. _after_write_to_html
  6. _after_write_term

という順番にメソッドが呼ばれるわけです.この内,定義されていて呼び出しが行われるものだけを抜き出すと,

  1. _split (SuperCommand でスケジュールされている)
  2. _load_rss_for_multi (SuperCommand でスケジュールされている)
  3. _hoge_proc
  4. _write_to_rss (SuperCommand で定義されたものを呼ぶようにした)
  5. _write_to_html (SuperCommand で定義されたものを呼ぶようにした)
  6. _after_write_term (SuperCommand で定義されたものを呼ぶようにした)

となります.

というわけで何かおもろいコマンド思いついたら作って下さい.主に俺が喜びます.

ここまで書いて,IRCMemoBot 特化でなく irclib にコマンドを送るためのライブラリとして抽象化した方が良かったんじゃないかと思った.

うーん,まぁいいや.

[小ネタ] 個人ニュースサイト管理人の就職活動 反応リンク集

む,反応リンク集が出来ていたとは.


05/06/2005 うむ [長年日記]

tDiary 925日目

[日記] 風邪

治る気配を見せないっていうか,悪化してるような.まぁ,そんな状態にも関わらず研究室で Python Challenge なんかやってるから悪化するんだろうけど.しっかしむずい.

誰か俺のために卵酒を作ってくれ (多分飲んだことない).

[日記] LVM2

kawahara 氏 のマシンで LVM2 なボリュームが認識されないのを直す手伝い.NFS 使えなくなるのは困るので.;)

何だかよくワカランけど,LVM1 と LVM2 を共存させると LVM1 の方しか認識されない,というのが原因だったらしい.で LVM1 な方に vgconvert をかけることで直った模様.


05/07/2005 [長年日記]

tDiary 926日目

[小ネタ] BSD 検定

via: otsune さんとこ

へぇ.LPIC の BSD 版みたいなものだそうな.

[Py][小ネタ] So-net blog:チベットとコンピュータな日々:Pythonを知らないなんて

via: しばたさんのメモ

俺の面接例:

  • 俺「色々ツールとかアプリとか作って遊んでます」
  • 官「使った言語は?」
  • 俺「Perl,Python,Ruby,PHP,Java,C,Bash……」
  • 官「……一番好きな言語は?」
  • 俺「Python かなー」
  • 官「うほ,Python!? めっずらし! Python の好きなとこって?」
  • 俺「『一つのことをするためには一通りの方法しかない』思想ですかねー」
  • 官「Python ってインデントが言語仕様とか,面白いよねー」

という流れで Python 談義突入.Python と聞いて喜んで Python 談義をしてくれたこの面接官の方が大好きです.

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

D [短い時間しかないのに、そんな話する会社もどうかとおもいます。頭悪そう。 ]

atzm [うひ.するとどんな話をする会社が頭良さそうなんですかねえ? ]

otsune [「頭悪そう。」ってのは褒め言葉だよ。 貴重な短い面接時間で面接官が一瞬で素質を見切ってそんな「頭の悪い」話が出来るっ..]

しばた [今頃気がついたけど、使った言語でBashというのが素敵。 ]

atzm [むむ,そこまで気が回りませんで,失礼しました.;) ちなみに Python 談義は全部で一時間以上あった中のほんの数..]


05/10/2005 むー [長年日記]

tDiary 929日目

[日記] あー

体調悪すぎ.ここまで調子悪いのも久しぶりだ.親不知がうずくぜ.

てかそろそろ風呂場の水道管もやばいかも.元栓を開けるだけで蛇口を最大までひねったように水が噴き出すのは 手間がいらない さすがにどうかと思い始めてきた.

水道管の修理ってどこに頼めばいいんだろ? 水道局じゃないよなあ.

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

しばた [タウンページによると地方自治体の水道局に電話しろとのこと。後は暮らし安心クラシアンとか?↓ http://www.q..]

atzm [おお,ありがとうございます! とりあえず水道局に連絡してみることにします. ]


05/11/2005 うむ [長年日記]

tDiary 930日目

[日記] うむ

昔のコードを改良してると自分の成長を実感できる.脳内親方が「落ち着いてやりゃーできる!」などと言っている.

ただし「何なんだこのクソコードは!」とイライラすることもしばしば.

[戯言] うーん

security と securely を読み違えていかん.


05/13/2005 [長年日記]

tDiary 932日目

[日記] とりあえず

あれだ,本気でやばいかもしれん.月曜まで不眠不休だ.

とか言いつつ

ぐっすりと男ねりに寝てしまう俺様乾杯.ひぃ.

その後

怒濤の勢いで作業して帳尻合わせた俺様乾杯.うひ.

[小ネタ] シャクソンファイブのアレ

なんと,あのお坊さんバンドのメンバーが強盗とは…….

[日記] あれっ

Eterm で日本語が出なくなってる.いつの間に? てか何が原因なんだろう?


05/16/2005 むー [長年日記]

tDiary 935日目

[日記] あー

疲れた.今日が終わればとりあえず一段落.

むー

発表スライド作りに 高橋メソッド を使おうかと一瞬思ったけど,スライドのハンドアウト配付が義務なのでやめた.

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

zoe [スライドの全ページを1ページに縮小コピーしてしまえばよいのでは? ]

atzm [むむ,そんな裏技が! 次はそれで行くかもです. ]

RYo [す、すごすぎる…想像以上の… これは改善しなくてはいけないことですね… ]

atzm [え,何を改善? ]

RYo [リンク元が表示されて、それが悪循環というのはかなり痛いですねぇ… ]

atzm [ぜひこういうのの改善策を! ]


05/17/2005 [長年日記]

tDiary 936日目

[ソフト] Noiz2sa: Why is OpenGL necessary?

こんなところで引き合いに出されてもという気はするけども…….OpenGL を使うようになったのって rRootage からだったような?

そういえば本家 Portage ツリーに入ってる Noiz2sa も opengl に DEPEND してるなあ.うーん,抜いて試してみるか.

[日記] 今日の TA

BIND の設定.プライマリを作ってセカンダリを作ってキャッシュを確認して.

エラーの分かりにくさからか,うまくいかないグループ多発.

で超過勤務.これ宿命アルよ.

そもそも UNIX 系 OS の管理を知らない人がさくさく進められるはずもない.ログを見る習慣と,どこにログが集積されるかが感覚的に分からないとつらいだろうなあ.演習を通してこういうのも修得してくれるといいな.


05/18/2005 むー [長年日記]

tDiary 937日目

[小ネタ] んー

いつぞやの リアルモテ非モテ診断 がバージョンアップしてるのか何なのか,質問項目が変わった気がする.そうでもないんかな?

やってみたら こないだと全く逆 に.

「○○さん、彼女いないの?えー、なんで?いそうなのにー」と言いつつも、その人は彼女になりたくない。

あいたたた…….

つーか臆病なだけですって,多分.

[日記] いかんなー

最近またサーバの負荷率が急上昇中.いくら瞬間的にとはいえ,負荷率 408% って…….

もしかしてリンク元表示すると負荷上がったりするの? キャッシュがタイムアウトで更新できなくなるほど膨れ上がってるのと関係あるのかな.

一概にこの日記のせいとは言えないけど,安定してた時期とアクセス傾向は変わってないしなあ.

[Py][日記] yield

を初めて使ってみた感想.

ループ内での関数呼び出しの逆かなという感じ.関数呼び出しは一般的に遅いらしいからループ内での関数呼び出しはあまりするなという話だけど,その回避策になるのかな? いや呼び出し回数は結局変わらんか.


05/20/2005 むー [長年日記]

tDiary 939日目

[日記] やべーな

最近,先っちょを追いかける習慣が薄れてきた気がする.ebuild を書かなくなったのもコレが原因のような.

意識的に追いかけるようにしないとな.

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

usata [先端! 先端! ]

khiro [先っぽ! 先っぽ! ]

atzm [実は先端恐怖症なんです(嘘 ]


05/21/2005 むむ [長年日記]


05/22/2005 うー [長年日記]

tDiary 941日目

[日記] あー

すげー負荷率.ついでに激・腹痛.そろそろ死ぬかも.

まーまだ楽観でいられるくらいだから大丈夫だろう.多分.

まだまだやれる.何だか凄くやる気に満ち溢れてるぜ! 今なら空だって飛べるぜきっと!

※ 薬はやってません.

[戯言] うひひ

熱血硬派がまた一人…….

[小ネタ] 今日の気になるリンク元

Google 検索: パンチラ atzm
……見たいのか?

追記

まぁそんなとこだろうと思ったけど,2 研人の仕業か.

追記2

あぁいかん,てかこのワード書いたらイカンがな.また引っかかってしまう.

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

電車男 [どっか食事するとこお願い!!! ]

atzm [おk ]


05/23/2005 んー [長年日記]

tDiary 942日目

[ダメ][小ネタ] 今日の気になるリンク元

Google 検索: 裸の atzm
……身売りはしてないぞ.

[戯言] あー

見えてる (感じてる) 世界が違うんだろうな.

[日記] むー

この 3 日間 Python で 1500 行ほどごにょる.一応形にはなったがまだまだ増えるなこの調子だと.

というか __import__ とか可変長引数とか lambda とか setattr,getattr などなどを使いまくる動的 (?) コードだらけ.コメントも殆どないし,一週間コードを読まずに過ごしたらわけ分かんなくなってそう.今の内にリファクタリングしてコメントも書いておかないと.

しかしフレームワークもどきを作るならまだまだ抽象化と切り分けが必要だろうな.更にパッと見意味不明なコードになるのかな.Python 的にどうなんだこれは.

そういえば assert 初めて使ったかも.


05/24/2005 ふむ [長年日記]

tDiary 943日目

[日記] 今日の TA

Samba でルンバ.

超過勤務は別に問題ないけどご飯の時間に間に合わなくなると死活問題.危なかった.


05/25/2005 うひ [長年日記]

tDiary 944日目

[日記] うひひ

微妙にピンチを楽しんでる俺がいますよ.

普段全く上がらないリビジョンが,締切が近づくとガンガン上がるぜ(わら

[風博士][メモ] 風博士の UI でできない設定を Mozilla (Firefox) を使って設定する

クッキーをクリアしたい時とか証明書をインストールしたい時とか.

Mozilla をレンダリングエンジンに使ってる場合
風博士のロケーションエントリに chrome://communicator/content/pref/pref.xul と打つ
Firefox をレンダリングエンジンに使ってる場合
風博士のロケーションエントリに chrome://browser/content/pref/pref.xul と打つ

ブックマークしておくとそれなりに便利かもしれん.「編集/詳細設定」も「about:config」だし,組み込んでも良さそうなんだけど.

ただ,それでいいのかって気はする.

更にメモ

$MOZILLA_FIVE_HOME/chrome/*.jar の中を見れば設定ダイアログ以外のも使える.

風博士でなくとも多分 MozEmbed なブラウザなら使えるんじゃないかな,知らんけど.

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

kou [おぉ! そんなことができるとは! クッキー管理がしづらくて困っていたんですよ... ]

atzm [僕も最初知ったときはびびりました.;) ]


05/26/2005 うひひ [長年日記]

tDiary 945日目

[日記] うひひ

新たに後輩に Python イイヨイイヨー光線を出して洗脳を計画.

メタル,Gentoo に引き続き,俺色まっしぐらだぜ!

[戯言] さて

先帝の無念を晴らす!


05/27/2005 むう [長年日記]

tDiary 946日目

[日記] 最近

サーバやばすぎ.ちょっとリファラリスト隠して様子見.

やっぱりかー

リファラリスト出すと disp_referer2 のキャッシュが凄まじい勢いで膨れ上がるらしく,どうもこいつがリソースを圧迫してくれるらしい.アクセス毎にキャッシュを全部もりもり読み込むのかね.そらスワップしまくるわ.

[戯言] いやはや

あちらさんはあちらさんなりに大変だなー.

[日記] さて

やるぞ!

[Gentoo] kopete

でしばらく前から MSN メッセンジャーにログインできんようになったなと思ったら,プロトコルが変わったせいだったのか.Gentoo の kdenetwork はまだ対応してないっぽい.

が,bug#93213 で報告とパッチはあるみたい.


05/28/2005 [長年日記]

tDiary 947日目

[小ネタ] kittenwar

これはもう,もう…….ひ,卑怯だ!

via: 実験的「実験的日記」

[日記] いかん

また口内炎できた.

[戯言] うっしゃー

  1. に気概.
  2. に気合.
  3. に気迫.
  4. に起爆.
  5. で危篤.

ちーん.

[Gentoo][ソフト] 「無効なフォント Kochi-Mincho が削除されました」

がうっとおしいなあと思って色々試してたら, /usr/bin/ps2pdf の中身を

exec ps2pdf14 "$@"

に変更することで直った模様.12 だとダメなのか.

しかしこれで pdf バージョン 1.3 以前はステということになってしまったが,過去は忘れゆくものなのだよ…….

ついでにメモ

/usr/share/ghostscript/7.07/lib/CIDFnmap*

を色々ごにょることでフォント変更したりできるらしい.さざなみとか IPA フォントとかに変更したいとかそういう場合に.


05/29/2005 うむ [長年日記]

tDiary 948日目

[日記] 昨日

何だか知らんが無性に酒を飲みたくなったのでコンビニへ行く.ウィスキーが欲しかったがマズそうなのしかなかったので芋焼酎を一瓶購入.

で独り静かに飲みつつ物思いに耽ってみるオヤジがここにいる.

前日 2 時間くらいしか寝てなかったから速攻で落ちたがな.


05/30/2005 ふむ [長年日記]

tDiary 949日目

[日記] ゼミ

アレにこだわるのはやめて別のアプローチ取った方がいいと思うんだけどなあ.ただアレの抱える沢山の問題を解決できるならそれは凄いとは思う.

[日記] 熱血硬派

こいつはヤクイぜ!

むむ

悪いことをしてしまったかも.ごめんなさい.

[戯言] cornelius

coreutils に見えた人,手を挙げなさい!

(・ω・)ノ