トップ 最新 追記

2007-11-01 [長年日記]

_ L.ROOT-SERVERS.NET 変更

してみてから思ったけど内部向けの DNS は root サーバへのアクセスはまるごと転送先任せだからそんなの関係ねぇ。ような気がする。

でもまぁ念のため関わってる DNS サーバ全部変更しておいた。

Tags: Net 日々 Tool

_ SQLite Manager 使ってみた

SQLite Manager :: Firefox Add-ons

Structure のタブが SQL 生出しだな。

まぁ基本的なことはできるみたいなので PHP とか Ruby とかで書かれたようなものを別途導入するよりはこっちの方が楽ちんかなとは思う。OSX だと XUL が遅いので SQLite Database Browser の方が断然快適だけど。

Tags: Firefox DBMS

_ coreserver なんてものがあったのか

CORESERVER.JP:コアサーバー

500円/月 or 5000円/年 で XREA+ 対比で 250% までの負荷を一応認めます的な記述。まぁ値段も倍なのでそんなもんか。

Apache は頑に 1.3 だけど

  • Perl 5.8.8
  • PHP 5.2.4
  • Ruby 1.8.5
  • Python 2.4.3
  • SQLite は 2 と 3
  • MySQL 5.1
  • PostgreSQL 8.2

ディスク容量は 15GB で転送量は 150GB/月(目安)

ssh は xrea で用意している制限 shell かな? 何ができるんだろう?

つかまぁ自分でそこで何かする予定は別にないけど。

Tags: Net XREA

_ pseudo user css リポジトリはどうか?

最近のサイトは幅がでかすぎて邪魔だ

スラッシュドット ジャパン | Yahoo! JAPANの新トップページベータ版が公開

Apple に次いで Yahoo もか。

横スクロールは悪ってお母さん教えてくれなかったか?

うざいサイトの設定を上書きする user css リポジトリとかないかな。で、userContent.css に書かなくても反映される extension でそれ利用するの。ポチポチっと登録していったらどんどんうざいスタイルを外してくれるもの。(はてなのキーワードリンクとか? そういうネガティブな方向だけじゃなくてもっと派手にしたい!とかでもいいんだけど。)

まぁ user css って基本的に好みの要素がでかいだろうから、成功しないだろうなぁ。リポジトリにあるものを userContent.css とかで上書きできればいいのかな?

あ。やろうと思えばそんなに難しくない?

  1. user css リポジトリを用意
  2. user css リポジトリを読みに行く user js とか extension を用意
    • css の選択とかの UI を作るのが面倒くさそう
    • ユーザー登録アリにするなら有効無効はサーバサイドで記憶可能だな
  3. 用意した user js や extension で選択した user css を適用する*1

実際にはリポジトリ上の user css ってのはインターネット上にあるので、最終的には localhost の user css が最優先で働いて自由にアレンジ可能、ってわけだ。

実はデザインの公募とかすごくやりやすくならないですか。はてなとか tDiary のテーマなんつーのもこういう形を採用した方がよくない?

Tags: Web

*1 CSS で変更できないものは JavaScript で DOM いじりになるんだけど、そこまで含めるといろいろややこしいですな。


2007-11-02 [長年日記]

_ SPF対策…

今度は SPF 祭りだワショーイ。

と思ったけど、メル鯖プロバイダ任せのおいらは何をすれば?と思ったが DNS はこっち管理だった。おっと。

しかーし、プロバイダのメールの出口が分からない orz

  1. 試しに PC で違うドメインに送ってゲートウェイを推測
  2. DNS に反映
  3. 携帯に送信

失敗。

以下ループ。

しばらく悩んだが手持ちの au の携帯でメールヘッダを見るオプションがあった。(パケ代はこっち持ち。)これを確認してみた。

携帯向けは全然違うホストから出ていることが発覚 orz

しかも、見るからに IP アドレスが複数あるような雰囲気。しょうがないので適当な範囲を指定してごまかしておいた。たぶんこんなもんだろう。

つか、「公開しています」と書かれている文書は見つかるが肝心の IP アドレスの情報がどこにも見つからないプロバイダさんは一体何をやってるの?

要らん苦労をユーザーに掛けるな。

それにしても au って半年前からフィルタ掛けられるようになってたのね。気づかなかった。そして docomo がスルーしてしまった設定でも au は弾いてきた。

……。

実は docomo の今回の措置ってそんな慌てるほどではなかった? そもそも au はもっと大々的にアナウンスしといてよ! 半年もスルーしちゃってたよ!

cf.

Tags: Mail

2007-11-03 [長年日記]

_ その名は Stylish

Stylish - jarp,

それって まさに Stylishだよね。 リポジトリもあるよ。

( ゜д゜)ホントダ userstyles.org

またバカをさらしてしまった。単に Firefox を再起動せずに user css を反映できるツールとしてしか使ってなかった。

そして今気がついた。

GreaseMonkey も単にサーバにスクリプトを上げずに実行できるツールとしてしか使ってなかった。*1

もっと共有しないとダメだなー。こういうとこに上げちゃえば自分で管理しなくていいしね。

Tags: Web

*1 この目的はローカルプロキシとか GeekMonkey のような方法で代替可能で、そっちの方が FireBug と組み合わせデバッグできるので最近は使ってなかった。


2007-11-04 [長年日記]

_ au のドメイン認証規制でちょっと悩む

なりすまし規制×
指定受信携帯メール(各キャリア)を許可
ドメイン認証規制

の状態で docomo.ne.jp を詐称したメールが普通に届いちゃう。これは au の現在の設定メニューでは

  • 「ドメイン認証規制」は「なりすまし規制」のオプションではなく、独立した一つの機能
  • 指定受信は最優先されるホワイトリスト

だからか。本当に携帯からのメールかどうかはとりあえず「なりすまし規制」を on にしておかないとチェックされないというかチェックはしててもホワイトリストの方で携帯ドメインのメールが許可されてスルーしちゃう? (もしかすると携帯ドメインの方は「ドメイン認証規制」は無関係で「なりすまし規制」しか効果がない、ということかもしれないけど。)

なりすまし規制
基本設定の「一括指定受信」×
ドメイン認証規制

にした。携帯ドメイン以外の PC から送ったメールが拒否された。ということは

  • ドメイン指定、アドレス指定のホワイトリストに登録せず
  • 携帯ドメイン以外からのメールを受信するためには
  • 「一括指定受信」の設定は必要

てこと? 結局

なりすまし規制
基本設定の「一括指定受信」のインターネットメール
ドメイン認証規制

にしてみた。これで様子見してみるか。

何をしたいかというと、個別にホワイトリストを管理せずに spam を減らしたいっつーことなんだけど。今まで細かくドメインやアドレスのホワイトリストをちまちま登録して、それ以外のインターネットメールはすべて拒否してたんだけど、ちょっとやっぱ不便だし面倒なので、ドメイン認証規制に期待したい、ということです。

ちなみにこの au の「ドメイン認証規制」では from 詐称は普通にできます。from ではなく envelope-from のドメインか、なければ HELO ドメインを見て SPF レコードを引きにいく模様。したがって自分の使っているプロバイダが SPF レコードをちゃんと用意してれば基本的に from 詐称はし放題。別に悪意がなくても from を書き換えたいときはあるわけで、そういうときにも対応できる形になってて嬉しい。

ただし、携帯のドメインでは X-SPF-Received というフィールドがないメールでも届いちゃうので、たぶん上に書いたように「なりすまし規制」しか見ていない。たぶん。

なんか、設定方法はいろいろ書いてあるんだけど、それぞれどういうメールを規制してるのかがよく分からんなぁ。

探したところ

KDDI au: 迷惑Eメール防止方法 > ニーズで探す

しか、それっぽいページが見つからない。みんなこれだけで分かるの?

cf.


2007-11-05 [長年日記]

_ pg_dump は custom format がよいのか?

pg_dump dbname > file

で plain text に吐いておいた dump ファイルを、バージョンアップした DB で

psql dbname < file

しても、どうしても一部 restore できないものが残った*1。これを

pg_dump -Fc dbname > file

で custom format で dump し、

pg_restore -Fc -d dbname file

で restore したらうまくいった。単に pg_restore が psql よりうまく restore してくれるのかもと思ったけど、pg_restore は plain text の dump ファイルを食べてくれないので検証のしようがない。

ちなみに、中でエンコーディングの狂っているデータがあるのかと思ってみたら iconv は確かに不正なシーケンスを見つけてくれたが、それを除去しても結果は同じだった。

さらにちなみに、作成した database に psql で接続して psql 上で

\lo_import filename

……はしなかった。やってみろて? だってこれ使いにくいもんなぁ…。schema だけ restore してやればいいじゃんて? えー。

Tags: DBMS

*1 ほとんどはうまくいった。当たり前だけど permission とかの理由じゃないよ。

_ PostgreSQL 8.1 以降、デフォルトDB は postgres

リリース8.1

  • initdbがpostgresという新しい標準データベースを作成するようになりました。このためユーティリティが標準データベースを検索する時にtemplate1ではなくpostgresを使用するように変更されました。(Dave)

マジすか。

思わず消しちまった。「あ、やべなんか変なデータベース作っちまった」と思ったよ。

消しちゃうとなんか普通の作業が結構できなくなります。

$ psql -U postgres template1
# create database -T template0 postgres;

とかしておくとよいと思う気がします。てかそうした。たぶん大丈夫。

Tags: DBMS

_ au SPF 続報

なんか

Received-SPF: None

でも通ってる。そうか。docomo みたいに pass のみとかいう豪気な設定にはできんわけだ。ま、そりゃそうだよね。

じゃあやっぱホワイトリスト方式で締め出さないといかんな。

半年後に SPF が普及してたりするかもわからんけどね。

cf.


2007-11-06 [長年日記]

_ rake db:schema:dump してみた

インストール

Fink で rails と activerecord をインストール。してあった。

OSX 10.3 + Fink の Ruby + Fink の PostgreSQL の環境で gem install ruby-postgres はうまくいかない。インストールはできるけどライブラリが入ってない。(もちろん postgresql-dev とか postgresql-shlibs が入ってないとかじゃない。)面倒くさいので

gem install postgres-pr

で回避*1

database.yml

  • adapter はあくまで adapter であって module の名前じゃないので postgres ではなく postgresql が正解*2
adapter: postgresql
  • host は URI の一部として使われるので、DB サーバの hostname は URI の hostname としての規約に従わなければいけない。
host: HOSTNAME( valid URI ? )

引っ掛かったので適当に CNAME をセットして回避。

rake

rake db_schema_dump

したら今さら何ゆってんのよ、仕方ないわね、と怒られた。正解は

rake db:schema:dump

結果

できあがった schema.rb を見てみたが、やっぱ「データとしては」使いにくいんだなと感じた。

いや何をしてたかというと、定義ファイル(ぶっちゃけちゃうと DDL となる sql)が存在しないデータベースがあるわけです。いやまぁ、作ろうと思えばすぐ作れるわけですけど、管理してないんですな。(要するに手作業で作って使い回し。当然リポジトリには入ってない。)これをメンテするのはまぁいいとします。ただ定義が外部にないので接続しないと中身分かんないわけ。*3

だからまずは DDL を生成しようかと思ったんだけど、

pg_dump --schema-only

の出力はあんまり見やすくないなぁとか思い始めちゃって*4。rails 入れてあったから database.yml を書いて schema dump だ! と盛り上がったはいいけど、やり慣れない作業で結構時間が掛かってしまったうえに結局「データとしては」再利用しやすいわけじゃないということにやってから気がついた。なんか database.yml みたいなものができるものだと勘違いしていたらしい。(migration 使ったことあるのに!)もちろん見やすさで言えば activerecord の schema dump の方が自動でインデント揃えたりしてくれて見やすいことは見やすい。これはこれで便利。

「データとしての利用」ってのは、例えばデータベースの一覧とかテーブルの一覧なんかを取り出して、それらに対してバッチで何か処理を加える場合を考えているんだけど、とりあえず

psql -c COMMAND

と組み合わせる方向を考えた方がいいかな*5

ところで ActiveRecord って Rails の Rakefile がないとやっぱまともに使えないんすかね? 単独で使えたらもっと便利じゃねすか?

Tags: Ruby DBMS

*1 Pure Ruby なので速度的には不利だけど、今回は schema dump したいだけなので速度は関係ない。

*2 世の中 mysql の話ばかりでいやになっちゃう。

*3 本番であろうが開発環境であろうがね。Excel とか Wiki に書き起こすことは当然できるんだけど、それは置いておく。eclipse を常時使ってるなら繋ぎに行って確認してパースペクティブ切り替えればいいだけっちゃいいだけです。えぇ。

*4 間延びしてねすか。コメント削れって?

*5 -t -A -F " " とかしておくと加工しやすい出力を得られる。psql の外に取り出しちゃえばこっちのもの。awk や Ruby が火を噴いちゃうわけ。

_ PostgreSQL 8.1 以降は少なくとも psql での管理はやりやすくなってる

気がする。ごめんなさいね、古い話でホントに。(ベンチとか取ってないんでその辺は知りません。)

デフォルト DB が postgres になってるのも role に一本化されているのも、メリットの方が大きい。

例えばデフォルト DB の変更は

psql -U postgres

だけで使い始められるってことを意味する。template1 とか書かなくていいし、template1 を誰かに使われてて作業できませんて可能性も減っていい感じ。template1 は使われてるかもしれないから psql -l でデータベース一覧を取得して適当なやつに繋いで…とか余計なことは全然考えなくていい。

また role は \du だけでこの出力を得られる。

   Role name   | Superuser | Create role | Create DB | Connections | Member of
---------------+-----------+-------------+-----------+-------------+-----------
 postgres      | yes       | yes         | yes       | no limit    |
 web           | no        | no          | no        | no limit    |
 www           | no        | no          | no        | no limit    | {web}

なんだこれとか言っちゃダメ(^^; ただのサンプルだから。これの何がいいって、role の一覧で

  • user
  • group
  • どの user がどの group に属しているのか

全部分かるってこと。しかも ID じゃなくて名前で分かる。スバラシイ。楽ちんじゃないか。これでデータベースの権限管理をまともにやる気になれますよ?

psql -U postgres -t -A -F '|' -c '\du' | awk -F \| '{print $1, $6}'

なんて書くと

postgres
web
www {web}

なんてものが採れます。ふむふむ。(connections の列の中身に空白が入っているのでセパレータをいじってます。この辺はお好きにどうぞ。)


2007-11-07 [長年日記]

_ PostgreSQL 8.1 以降のメンテツールのもと

メンテツールそのものじゃないです。とりあえず上げてみるテスト。こんなのがあると sh スクリプトとかと組み合わせやすいかなーと思う。

DB一覧

最も単純にはこう。

psql -U postgres -t -A -F " " -l | awk '{print $1}'

ただしこれだと template0, template1, postgres が含まれてしまう。

psql -U postgres -t -A -F " " \
-c "select datname from pg_database where not datistemplate;"

にすれば postgres は入っちゃうけど「使える」データベースの一覧が採れる。

テーブル一覧

とりあえずテーブル名だけ

psql -U postgres -c "\d" $DBNAME
psql -U postgres -t -A -F " " -c "\d" $DBNAME | awk '{print $2}'

権限情報付きはこう。

psql -U postgres -c "\dp" $DBNAME
psql -U postgres -t -A -F " " -c "\dp" $DBNAME | awk '{print $2, $4}'

権限付きはいっぺんに取得できない。上と組み合わせてこんな感じ。勘違いして必死こいて awk で sql を組み立てたバージョンも晒しておきます。ほ、ほら、sql を書き換えればいろんな情報が採れるよ!とかほざいておく。

psql -U postgres -c "select relname,relacl from pg_class where relname \
in (`psql -U postgres -t -A -F ' ' -c '\d' $DBNAME | awk '{print $2}' |\
awk -F '\n' -v RS='' -v ORS='' 'BEGIN {print \"\047\"}\
{gsub(/\n/,\"\047,\047\"); print}\
END {print \"\047\"}'`)" $DBNAME

なんでこんなまどろっこしいことやってるかっていうと pg_class の結果からシステムが用意したテーブルかどうかを判断する基準が分からなかったから。

スクリプトの長さはともかく、SQL を生読みするよりは多少権限付与の状態が見やすい……んじゃないかなぁ。

{ }

の中を , で split するとかは好きずきってことで。

select relname,relacl from pg_class where relname in

の部分を

select relname,relfilenode,relpages,relacl from pg_class where relname in

ってやっとくとディスクスペースの確認もしやすくなる*1。インデックスとか入ってないけどそこら辺は適当で、ひとつ。

role一覧

※ たぶん 8.1 以降専用なのはここだけだと思う。

まずはまんま。

psql -U postgres -c "\du"

ユーザー名とグループのみに絞ってテキストデータだけにするとこんな感じ。

psql -U postgres -t -A -F '|' -c '\du' | awk -F \| '{print $1, $6}'
Tags: CLI DBMS

*1 この page の単位ってよく知らないけど、node が分かれば ls -lh? とかで容量の確認はできる。ま、フツーそんな細かいレベルの情報は必要にならないというか、そんなの気にしちゃダメっぽい。もっとざっくり効率がいいか悪いかとかディスクに収まるかどうかだけ見ろと言いたいらしいぞ。知らんけど。

_ Web業界と Un*x と Cygwin

駄文 - プログラミングと Shell - IT戦記

モテたいやつは Un*x 使って shell 使って書けと。(嘘)

仰るように基本テキスト処理っつーのは大きいと思います。テキストが「インターフェイス」なのよね。ただ CLI は最初の心理障壁がべらぼうに高いので、GUI のツールにできっこねー技をいくつか披露しておくと(してもらうと)多少はマシかもしんない。別にオレたちゃマゾっ気があって Terminal 開いてるわけじゃない。ジョブズが好きだから Mac 使ってんじゃない。

話がそれた。

cygwin は wget とかでがっつりローカルにミラー作っておくとインストールも更新も早くて楽です。最近はそんなことしなくてもみんな十分回線が速いのかしら。

あとはいつも言ってることのくり返し。

cygwin のメリットは

  • ファイルシステムが Windows と分離しないのに完全な1システムとして動く
    • 同じコマンドを個別にインストールするのと違って楽だし統一感もある
    • cofs 使ったことないんでその辺は分かりまへん
  • shell から Windows のコマンドもそのまま呼べる

この2点だと思う。で、ターミナルは絶対変えた方がよい。これは

から。

/cygdrive/c/

になる問題は

cd /
ln -s /cygdrive/c
ln -s /cygdrive/d

しとくとよいよ。

最近の cygwin は screen もまともに使えるし、結構便利なんじゃないかな。

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

_ showhchan [/cygdrive/c は、 mount -c / ってやれば /c になりますよ。]

_ wtnabe [-c, --change-cygdrive-prefix change the cygdrive path pre..]

_ 通りすがり [\dpまたは\zというのじゃダメですかね。viewとかsequenceも出ちゃいますが。]

_ wtnabe [わー。 まんま出てますね…。アホすぎました。ごめんなさいごめんなさいごめんなさい。またするかもしれませんけどごめんな..]


2007-11-08 [長年日記]

_ prototype.js 1.6.0 !

キタキタキタ

Prototype JavaScript framework: Prototype 1.6.0, script.aculo.us 1.8.0, and the Bungee book now available

changelog がでかすぎてよく分からねー。互換性のない変更がいくつかあるので、すでに稼働しているサイトにはなかなか適用できないかもしんない。


2007-11-09 [長年日記]

_ ftp.jp.debian.org の CDN 化

国内プライマリミラー ftp.jp.debian.org の CDN 化と諸注意について

これか。どっかで聞いたなと思っていただけで忘れていた。

前はよく ring を固定で使っていた*1んだけど、最近 ring mirror を抜けるところが急に増えて考えるの面倒になってきたんで、こっちに振ることにした。

Tags: Debian Linux

*1 速度差がでかいため

_ IBM developerWorks の URL がゴロンゴロン変わってる

ぎゃーす。いくつもブクマしてたのに。

  • www-06. へのアクセスはなんか軒並み www-128. の方の「頭に」リダイレクトされている
    • 個々のページは検索し直さないとダメ
  • developerWorks の日本語訳は http://www.ibm.com/developerworks/jp/ 以下に整理し直されている
    • 単に hostname を置換するだけじゃ対応できない場合もある
    • 検索は www-128. で行われている

しかも古い URL でしか見れないページもある…。そういうのは新しい方で検索しても出てこない。

最近なんかしょっちゅう www-128. の方に飛ばされてメンテナンス中みたいな画面になるとは思ってたんだよなぁ…。

Tags: Web

2007-11-10 [長年日記]

_ あれこれ整理

localhost のファイル、レコーダの中身、アップデートしてないパッケージをずんずん整理する。

最近どうも調子が上がらない。こういう単純作業をやると小さな達成感が味わえて嬉しい。まぁ普段から整理する方がいいんだけど。

Tags: 日々

2007-11-12 [長年日記]

_ Linux で sh スクリプトを書くときは Debian がいいのか?

Linux の /bin/sh て基本的に bash ですな。で、これで sh スクリプトを書いてあると、あるときこれを *BSD とかでも使おうと思ったときにハマります。*BSD の /bin/sh は bash じゃないから*1

というようなことは 横着プログラミング 第11回: 小粒なツールたち でも触れられていて、ここで高林さんは

私はちょっと複雑なシェルスクリプトを書く場合には /bin/zsh を使うようにしている。

これは zsh の拡張機能を使いたいためということもあるが、「bashism」なシェルスクリプトを書くのを避けるためという意味も大きい。bashism なシェルスクリプトとは、#! /bin/sh で始まっているにも関わらず、 bash の拡張機能を使っているもののことである。

という豪快な解決法に辿り付いているんだけど、自分は逆に「Linux でもストイックに /bin/sh の機能に絞って書けばいい」という方向に傾けてみる。とは言えやることは簡単で、Debian で

apt-get install ash

するだけ。これは実際には dash に link を張るだけのシロモノで、dash ってのは The Debian Almquist Shell のこと。

Almquist shell - Wikipedia, the free encyclopedia

によれば

  • *BSD の default shell は ash で
  • これの Debian implementation が dash

なので、Debian を使っているならこれを使って

/bin/ash -xv SCRIPT
/bin/dash -xv SCRIPT

としてデバッグしていけば安心して使える sh スクリプトが書けるって塩梅。

ちなみに最近試していた CentOS の方ではそんな shell は見つからないので、これをやるには Debian を使うのがよさげ。あるいは OSX だと Fink には ash がある。MacPorts は知らない。そういえば cygwin に ash ありますね。

もう一つの方法として zsh の emulation が使えるかなと思ったんだけど、sh って名前で立ち上げても sh そのものの挙動をエミュレートするわけじゃないみたい。とりあえず sh ではエラーになる書き方でもそのまま動いてしまった。

ash 依存はいいのか! Bourne shell で動かなかったらどうする! とか言われても困ります。そんな shell を実際に触ったことがありませんごめんなさい。

Tags: Linux

*1 OSX は bash なので問題ない。

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

_  [いっそのこと version 7 UNIX まで遡るのもよいかも。Linux でも動作するみたいですし。 http:..]

_ wtnabe [うぉ。4.4BSD の csh, plan9 の rc/ec, Unix 6th/7th Ed. なんでもありますね..]


2007-11-14 [長年日記]

_ 今さら Twitter で遊ぶ

塩漬けにしてあった Twitter アカウントを引っ張りだして無造作に follow しまくる。こういうとき

オレって全然友達いねーな

ということがものすごく明らかになってちょっといやな気分になる。有名人を follow しようとか思ってもロクに思い出せない辺りで頭の悪さも実感してさらにいやな気分になる。

とりあえず ruby とか kanazawa とか適当なキーワードで引っ掛けて follow しまくって今後も増やしていくので、誰お前とか思っても気にしないでください。逆にサクッと外しちゃうかもしれません^^; follow 返ししてくださる方が何人もいらっしゃって恐縮です。

しばらくはあれこれクライアントを試すので変な内容が多いと思いますが気にしないでください。とりあえず現時点で OSX 10.3 で満足できるクライアントはありませんでした。以下適当に感想。

  • TwitterIrcGateway はステキと思ったけど .NET Framework orz ← 動きました
  • Yahoo! Widgets バージョンはいくつか試したけどまともに動いたのは Twiggee のみ。それも入力した文字が見えないとか表示が marquee でウザイとか満足できず。
  • twtr は zsh のバージョンの問題で日本語が入らない。Emacs の M-x shell から送ったらダブルクォートで囲んでも半角スペースでぶった切れる。

基本的には Widget みたいなので動くのがあればいいかなーと思っている。今さら 10.3 対応クライアントが増えるとも思えないし。

携帯から更新したいとかはとりあえず考えていない。

[2007-11-15 追記] kentaro さんのアドバイスに従い Mono から TwitterIrcGateway でイケました*1

  • どうせ x86 しか動かないだろうと思っていた Mono は PPC + OSX 10.3 でも普通に行けました。パッケージ落としてきてインストールするだけ。ビックリ。
  • 動かしたのは Mono 1.2.5.1 + TwitterIrcGateway v1.0.2828.5717
  • 実はハマったのは X-Chat Aqua 0.16.0 の設定の方で
    • Nickname をデフォルトと変えようと思った場合は Real name の方に書かないと反映されない
    • password は Server password の方に
    • channel に入る設定は要らない
  • あ、TwitterIrcGatewayCLI.exe って config を読み取らないのか

※ おぉ。follower が増えたら channel に join してきたこととして通知されるのか。おもしれー。

残りはログインしたら gateway を自動起動するように設定すること、かな。それにしても mono の起動って速いんだな。その上に乗っかってるものが速いかどうかは分からないけど今回の gateway はまるでネイティブアプリを立ち上げてるみたいに速い。バカにしてましたごめんなさい。

Tags: IRC Twitter

*1 TwitterIRCGateway はオフィシャルには 10.4 以降対応のようです。そもそも Mono が 2007-12 に 1.2.6 にバージョンが上がって 10.3 はサポート対象外になりました。古いものもアーカイブに残ってはいるようですが、未来がないのは間違いないです。

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

_ kentaro [TwitterIRCGatewayは、monoを使えば動くみたいです。でも、10.3だとどうかはちょっとわかりません..]


2007-11-16 [長年日記]

_ その名は Sieve

今日の無知晒し日記。

Sieve というものがあってこれは Mail Filtering Language ということで RFC にもなっている。でさらにこれは割と広く IMAP サーバでサポートされているらしく、これ使うなら procmail だ maildrop だで独自文法のフィルタを書かなくても、あるいはパイプ経由でプロセスを起動するなんて重たい処理をしなくてもフィルタリングできちゃうって寸法だ。IMAP を導入してなくても IMAP サーバに附属している MDA を使うことで利用できたりする。Dovecot の deliver とか。

なんてこった。RFC になったのが 2001年、始まったのが 1994年 のものを今日知ったよ?

Thunderbird のフィルタもこれで書ければいいのにとか一瞬思ったけどあんまり需要ないのかな。まぁ正規表現だベイズ理論だっつー話になるとお呼びでないのかもしれないな。

cf.

Tags: Mail

2007-11-18 [長年日記]

_ nadoka をいじり始めてこれからの irc の活用を妄想

Nadoka: IRC Client Server Program - nadokaさんとあそぼう

IRC に twitter を載せたのに気を良くして軽く nadoka なぞ。

  • nadoka は bot だと思い込んでいたけど実は proxy + bot だった
  • 設定ファイルがでかい*1
  • 閉じた irc サーバなので別に proxy の機能は要らない(bot の存在が明示されても問題ない)
    • proxy の機能を殺す方法が見当たらない
    • 適当な port に振って acl で deny all する
  • proxy として利用しないと control command が投げられない
    • とりあえず nadoka そのものを front で動かしてしょっちゅう ^C して起動し直すことに
  • googlebot を試そうと思ったら SOAP API の license key が必要だったが、うかつにも取得しておらず、使えないことが判明(今は新規登録できない)
    • 後継が Ajax API になってるけど、、、Ruby じゃできないよなぁ
    • 別に Google 検索なんかできなくてもいいや ← 今ここ

bot の書き方が分かると便利そうだなという感触。というのも最近 twitter をやってみて、

ログを irc で垂れ流すのはなかなか便利

という感触を得ていたため。というか以前からモバイルファクトリー方式であれこれ irc に流せたら便利だろうなーと思いつつここまできてしまっていたんだけど、なんとかできそうな気がしたため。

それとは別に今 Y! Widgets を、仕組みを眺めたりするだけでなくちょっと動かしてみてるんだけど、例えば Yahoo! トピックスなんかを出しっぱなしにしておくのはそれなりに便利だなという気になっている。そんなの feed reader で読めばいいじゃんとこれまでは思っていたんだけど、feed reader で読むことにしていると、すべての見出しが目に入ってしまってともするとうんざりしちゃう。でもウィジェットや irc の画面はどうせ流れて行ってしまうので諦めがつく。

言ってみれば feed reader でのニュースチェックは新聞と同じで、そこにあるすべての情報に対して人間が取捨選択を行う形であり、ウィジェットや irc でのニュースチェックはテレビやラジオのニュースと同じで、流しっぱなしにしておいて気が向いたときに見ればいい形なんじゃないかと。

で、自分としては一般的なニュースは垂れ流し方式の方が気楽でいいなと思うわけです。目立つニュースはどうせ誰かが話題にしてるし、別に先頭切って追っかけなくたっていいじゃんていう。

ただ現状出回っているウィジェットは多くの場合で特定の feed 専用になってしまっていて、そんなもん使えっかボケな状態なので、feed をかき集めて irc に垂れ流す bot を特定の channel に置いとけば便利かなーという感じ*2。アレならジャンルごとに channel 分けてもいいかも*3。もちろんその場合は全文を流すとうざいのでそれは無理だけど、まぁニュースはほとんどの場合で見出しのみなのでそれでイケるかな。

あ、あとログを検索できたらもしかしたら便利かも。

Tags: Ruby IRC

*1 というかコメントが多すぎるのかな。昔の CGI の設定ファイルってたいがいこんな感じだったからなとは思うんだけど、なんか改めて見るとちょっとなぁと感じる。例えばデフォルトの設定と server や channel ごとの設定を別ファイルに分離できたらいいのかも。

*2 極めて個人的な要望だけど自前 irc サーバなので何でもアリなのだ。

*3 今の RSS_CheckBot は単体ではそういうことはできなさそうだけど。継承して bot 増やせばいいのかな? デフォルトの設定だと cache がバッティングするからそこは気をつけないとダメだな。いや、バッティングしちゃってもいいのかな? ← ok ですた。問題は feed の管理方法が分離しちゃうことか。


2007-11-19 [長年日記]

_ nadoka を使ってニュースの feed を irc に複数垂れ流す

ネタとしては十分すぎるほど古いんだけど、irc 系の記事ってあんまり見ないのであえて起こしてみた。

※ 良い子は他の人に迷惑にならないところでマネしてね。

昨日、nadoka を導入した。それなりに便利そうだったのであれこれ設定をいじってみている。Twitter の要領でニュースをダラ見できたら便利そうだったのでやってみる。設定は以下のような感じ。

 Channel_info = {
   '#itnews' => {
     :timing => :startup,
   },
   '#news' => {
     :timing => :startup,
   },
 }

 BotConfig = [
   {
     :name      => :RSS_CheckBot,
     :rss_paths =>
     [
       'http://japan.zdnet.com/rss/news/index.rdf',
       'http://journal.mycom.co.jp/haishin/rss/index.rdf',
       'http://japan.cnet.com/rss/index.rdf',
     ],
     :cache     => File.join( ENV['HOME'], 'var/nadoka/RSS_CheckBot.cache' ),
     :ch        => '#itnews',
   },
   {
     :name => :Rss_CheckBot,
     :rss_paths =>
     [
       'http://feeds.reuters.com/reuters/JPTopNews/',
       'http://feeds.feedburner.com/reuters/JPBusinessNews/',
       'http://feeds.feedburner.com/reuters/JPWorldNews/',
       'http://www3.nhk.or.jp/topepg/rss/news/rss20/cat5.xml',
       'http://myrss.jp/rdf/r45b9b8dd2ab464231.rdf?v10',
     ],
     :cache     => File.join( ENV['HOME'], 'var/nadoka/RSS_CheckBot.cache' ),
     :ch        => '#news',
   },
 ]

ここでは #news という channel と #itnews という channel を用意して、それぞれ別の設定で別の種類のニュースを流している。

同じボットだけと別々に設定を保持して機能させられるんだな。なるほど。

Tags: Ruby Feed IRC

2007-11-20 [長年日記]

_ nadoka の rss_check.rb で RSS 2.0 とか Atom とか

なんかあれだな。解釈に失敗する feed がいくつもあるな。

RSS Check Error (http://feeds.reuters.com/reuters/JPTop News/) -
undefined method `about' for #<RSS::Rss::Channel::Item:0x870b7d4>
RSS Check Error (http://feeds.feedburner.com/reuters/JP
BusinessNews/) - undefined method `about' for
#<RSS::Rss::Channel::Item:0x86d081 4>
RSS Check Error (http://feeds.feedburner.com/reuters/JP WorldNews/) -
undefined method `about' for #<RSS::Rss::Channel::Item:0x83fb7c4>
RSS Check Error (http://www3.nhk.or.jp/topepg/rss/news/
rss20/cat5.xml) - undefined method `about' for
#<RSS::Rss::Channel::Item:0x82654 14>

うーん。RSS 2.0 や Atom には about なんて要素も属性もないよね。その辺の問題かな?

--- lib/rss_check.rb    (リビジョン 188)
+++ lib/rss_check.rb    (作業コピー)
@@ -67,7 +67,7 @@
             et = e_date
           end
           {
-            :about => e.about,
+            :about => e.link,
             :title => e.title,
             :ccode => 'UTF-8'
           }

でイケたっぽい。work around 万歳。

※ TwitterIrcGateway みたいに入ったときにいくつか最近のニュースが見れたら嬉しいけど、それは proxy として使ってなきゃ無理だわな。うーぬ。やっぱり proxy として使えないとダメか? なんか分からんけど繋がらないんだよなぁ。

Tags: Ruby Feed IRC

2007-11-22 [長年日記]

_ タイピング

タイピングは好きですから。

Speedtest - how fast are you?

amachang の何がすごいってノーミスなところだな。ぜったいムリだ。

cf. タイピングが遅い - IT戦記

もうちょっとやってみた。300 points とかムリ。

キーボードを変えたりしながらしばらくやってみて気づいた。速かったような気がするとき、遅かったような気がするときでも、全体のタイプ量にあまり変化がない。単にミスが増えるか減るかだけのようだ。つまり現時点ではどれだけ自分で速くなったような気がしたときでも 70 words/min とかはいかない。60 words 当たりに限界があるようだ。もしこの限界を超えることができるとしたら本当に成長してるってことだと思う。

傾向として自分は同じ文字が続いているときが苦手なようだ。やはりローマ字打ちの日本語に最適化されているんだな。基本的に子音 + 母音の組み合わせで打つことに慣れていて、同じ指が連続するということがあまりないわけだ。school はまだしも different とかものすごく苦手。これは明らかに利き手の右手に依存している証拠。こんなに英単語だけを打ったことってないからなぁ。

うーむ興味深い。

Tags: 日々

2007-11-23 [長年日記]

_ 自分自身が起動されたかどうかを確認

なんでもかんでもテストしやすいようにということで、夏頃 Perl を書いていて思いついた $0 と __FILE__ が一致したら実行という手法、実は案外ポピュラーだったようで、気をつけて見てみると意外と見かける。

でまぁ、「ちくしょう!すごいこと思いついたと思ったのに!」というのはどうでもいいとして、確認の方法で自分はわざわざフルパスに展開してから比較してたんだけど、実はその必要ないのかな?というのが気になって確認してみた。

Ruby

$0 も __FILE__ も原則同じように取れるってことでいいのかな?

puts '$0       : ' + $0
puts '__FILE__ : ' + __FILE__

こんなのを書いて動かしてみる。フルパスになる場合もならない場合もあるけど、食い違うということはなさそうだ。CLI で起動したときはフルパスになったりならなかったり、ブラウザから CGI で呼び出すとどちらもフルパスを返す。

ということは Ruby において自分自身が起動されたかどうかを確認するためには

$0 == __FILE__

だけを見ればよさげ。

PHP

こんなもので確認*1

print '__FILE__        : '.__FILE__."\n";
print 'SCRIPT_NAME     : '.$_SERVER['SCRIPT_NAME']."\n";
print 'SCRIPT_FILENAME : '.$_SERVER['SCRIPT_FILENAME']."\n";
  • CLI で動かすと __FILE__ だけがフルパス
  • ブラウザからアクセスすると SCRIPT_NAME 以外がファイルシステム上のフルパス
    • SCRIPT_NAME は URI 上の絶対パス

ということは

realpath( $_SERVER['SCRIPT_FILENAME'] ) == __FILE__

を見ればよさげ。

……。

なげぇよ。

他の言語は気が向いたら調べるかもしれませんけど、何か情報がありましたら嬉しいです。

Tags: Ruby PHP

*1 PHP_SELF を使っていいのは小学生まで。


2007-11-24 [長年日記]

_ Apple の Wireless ペチペチキーボード触った

※ ちょっと前のことを思い出しながら書くメソッド

Apple のキーボード変わったじゃないですか。ずいぶん前だけど。気になってはいたんですよ。Real Force をせっかく買ってすぐぐらいだったから。

で、今ごろになって実物触ってみたんですよ。店頭に置いてあったフルキーボードの方だけど。

  • やっぱ感触がよくない
    • 正直、PowerBook のキーボードの方がいい
    • MacBook に慣れている人は大丈夫かもしれない*1
  • かっこはいい

ヘビーに使うにはどうかなという感じだけど、リビングPC で使ってオサレを演出とかするような変な目的にはベストマッチかもしれない。JIS 配列派なので CapsLock のディレイに悩むこともないだろうし、何かの拍子には買うかもしれない。買わないかもしれない。小さいキーボード好きにはやはりこうクルものはありますけれども、そこはそれ。欲しがりません勝つまでは(何に?)

Tags: 日々

*1 もしかすると自分はキートップのカーブが好きなのかもしれない


2007-11-25 [長年日記]

_ MeCab とりあえずよく分からず

いい加減 Namazu はやめたいんだけど、なんか基本的な部分で分かっていないことが多い。形態素解析もその一つなんだけど、今どき形態素解析は MeCab よね、と思ったけど、MeCab のサイト見ても意味がよく分からない。

ChaSen のときも思ったけど、理屈が前面に出てこられても興味がないので頭にさっぱり入ってこない。そしてサンプルがあまりにそっけなさすぎて全然分からない。

例えば辞書は EUC-JP が標準だと。じゃあ EUC-JP で表現できないデータを MeCab に突っ込みたくなったらどうすればいいのか。そういうことは MeCab の仕事の範疇の外? 詳しくないからよく分からない疑問が次々に湧いてきて全然本論に入れない、いちばんダメなパターンでぐーるぐる。

辞書の再構築の方法は載っている。いや違うんだ、おれが欲しいのは辞書の再構築の方法じゃない。と思ったけど、こういうことか?

  • 辞書に依存しない云々という記述はあるが、パンピーは気にしちゃいけない。UTF-8 のデータをそのまま解析したけりゃやはり UTF-8 の辞書が要る?
    • むしろ辞書に依存しない汎用的な設計 = 辞書をガンガン作れる = 辞書をガンガン作れ?
  • 辞書の指定方法は
-d --dictdir=DIR
-u --userdic=FILE

しかなさげなので、EUC-JP のシステム辞書も UTF-8 のシステム辞書も欲しい場合は複数のディレクトリを用意して置いておき、利用するときに -d で指定する?

  • じゃあバインディングからそれらを使い分けたいときはどうしたら?
    • あー mecab バイナリと同じパラメータを文字列で MeCab::Tagger() に与えるってか
    • つか普通使い分けとかそういうことは考えない?
    • MeCab に突っ込む前に変換すりゃいいじゃん?
    • 変換のコストがバカにならない場合は?
  • 周辺ツールにはパスも通ってないし man もないし HTML 上にもほとんど情報がない

むーん。

MeCab の辞書構造と汎用テキスト変換ツールとしての利用

を見ても……。なんだろう。何かしようと思ったら辞書を構築すべし、ってことなの? 毎回辞書の構築なんてやってられないよね? よく見る方法はシステム辞書のディレクトリを -d で指定してるけど、ユーザー辞書は何に使うの?

むーん。

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

_ odz [MeCab は入力データのエンコーディングと同じエンコーディングの辞書を用意する必要がありますね。]

_ wtnabe [ヤパリソユコトデスネ。euc-jp なのは Namazu と組み合わせるには便利ですけど、これからのことを考えるとど..]


2007-11-27 [長年日記]

_ ネットワーク越しに nkf を使うときは rlwrap もあると便利

今まで必要に迫られなかったので使っていなかったネットワーク越し nkf をやってみた。

ネットワーク越しの文字コード変換の方法と場所

なんでやってみたかというと、ターミナルのエンコーディングと異なるエンコーディングでデータを抱えている DBMS に繋いで中身を見たら、手元の環境では化けちゃってどうにもならなかったから*1うまくいく場合もあるらしいんですが…。

以前ターミナルを UTF-8 にするときには化けてから考えるし、たぶん screen で吸収できると思ってたんだけど、全然吸収できなかった。

ということで解決のためにとった方法は具体的には図の通りで

  1. localhost の screen で encoding 変換
  2. remotehost の screen で encoding 変換
  3. localhost の nkf -u で encoding 変換

のうち、以前は 1 を意図していたけどこれはダメ。2 か 3 でないと化けちゃうことが分かった。

2 は remote への接続方法が ssh や telnet なら可能だけど、DBMS に繋ぐ場合は使えない。そこで今回は 3 についてのお話になる。

まぁ具体的には

単に nkf -u でしょ?

ということになるんだけど、

入力エンコーディングは指定した方がいいし、rlwrap を組み合わせるとさらに幸せ

なのはあまり見ない話なので書いておく。

nkf の入力エンコーディングは大文字で指定する。例えば EUC-JP が入力されることが分かっているなら -E で、これを UTF-8 に出力したければ -Ew と書く。古いサーバが EUC-JP で動いていて最近の機械はみんな UTF-8 だ、なんて場合は

| nkf -Ew -u

が炸裂しまくります。

もひとつ。これはうちの環境だけかもしれないんだけど、

nkf -u で繋いだらプロンプトやパスワード入力を促すメッセージなどが表示されないよ?

という問題が起きました。もしかすると最後に改行がないメッセージは出力されないのかな? よく分からないけど。で、

rlwrap を組み合わせたら問題なくプロンプトが表示されますた

ということです。最終的には

rlwrap psql -U postgres -h DBHOST DBNAME | nkf -Ew -u

読むだけなら快適作業ができました。これは ssh や telnet で繋ぐ場合でも同じように使えるので、今度からこれでいこうと思います。長いけど。

なんかしかしやたらと使えるな < rlwrap

※ あれでも日本語の入力はできないな。これはしょうがないのかな?

Tags: Net DBMS Text

*1 環境は OSX 10.3 + Terminal.app 1.4.6 + zsh 4.1.1(標準) + screen 4.0.2(Fink). たぶんこの screen 4.0.2 の問題かなという気はするんだけど、いかんせん Fink の screen のバージョンが上がらないもんで。

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

_ umq [psql なら SET CLIENT_ENCODING TO 'EUC-JP'; とかすればよくないですか]

_ wtnabe [ありがとうございます。\encoding は試した気がするのですが、SET CLIENT_ENCODING TO の..]

_ wtnabe [\encoding utf-8 でした。\encoding は DB 内のエンコーディングではなくクライアント側のエ..]


2007-11-28 [長年日記]

_ OSX の ブラウザの accesskey の動作にちょこちょこ困る

実は OSX を使い始めて数年経つのにシステムで全体的に Emacs 風キーバインドで扱えることをつい最近まで知らなかった*1。知らなかったときは当然使えるとは思ってないし別に不便でもなんでもなかったんだけど、案外あちこちで使えることに気を良くして使うようになってからは「対応していないから使えない」アプリをとても不便なもののように感じてしまうのだから現金なものだ*2

もう一つは、Camino で tDiary の編集をしているときにうっかり C-a を押すと POST されちゃうのに実は結構まいっている。このエントリはそうしてつい POST してしまった、書こうか書くまいかすら迷っていたような状態のものから無理矢理書き直してネタを起こしているんだけど、OSX 全体で Emacs 風キーバインドが使えるのであれば、accesskey 用のコンビネーションが Ctrl 単独で効くという挙動は変えておいた方がよかったってことなのかなぁ。

当座は C-a で POST しないように tDiary の template を書き換えて accesskey を s とかに変えてしまえばいい*3)んだけど、なんかちょっと違うんじゃないかコレという気がしないでもない。accesskey 自体は便利だから使いたい。でも Emacs キーバインドとぶつかっちゃヤダ。

Tags: OSX

*1 CotEditor なんかの絡みでその辺の情報を手に入れたんだったかな

*2 あとは Emacs ’風’具合が中途半端でイライラするってのもある

*3 A で POST ってなかなか見ないし、実は S は試してみたことがあって、それで POST できないから accesskey は設定されていないものと勝手に思い込んでいた(笑)


2007-11-30 [長年日記]

_ Y! Widgets を HTML で作れるようになった!

Yahoo! Widgets

Version 4.5

HTML

Yes! We've added HTML support to Konfabulator! It is provided by an embedded version of WebKit, the open-source engine that is also the basis of Apple's Safari browser.

HTML objects behave like other Konfabulator objects. The content of an HTML object can be manipulated at will, and standard Konfabulator effects, such as rotation or transparency, can be applied. It is also possible to invoke Konfabulator functionality via JavaScript from within an HTML object. This allows a developer to create the entire Widget UI using HTML and Ajax.

For security reasons, only local HTML (HTML that is included in the Widget bundle) can access Konfabulator functionality. Remote HTML (HTML fetched from the Internet) is strictly sandboxed.

むぁじ? ちょっと今試すヒマないけど。

と思ったら

Known Issues


  1. On Mac OS 10.5 (Leopard), a call to Flash's IsPlaying() method always returns false ' even if the Flash object is, in fact, playing.
  2. Flash's readystate reporting cycles through all five states, even if the Flash movie does not exist.
  3. Flash quality method is not returning proper information.
  4. HTML is not supported on Windows 2000 or Mac OS 10.3.9
  5. No IME support for Flash or HTML

orz

そうか、ほんとに WebKit なんだな。OSX 10.3 でも Win2k でも動かないし日本語の入力はできない、と。