2009/05/29

ruby openssl request

Ruby で CSR を読みたいと言われまして
後でメールしておきますと伝えておきました。
細かいことは覚えてなくてブックマークもしてなくて
毎回ライブラリのマニュアル見るのも Google 頼り。
こんなことではいかんと思っているのですが。

で、openssl - Rubyリファレンスマニュアルがそりゃ出るんですが
無い、Request とか無い。
うっそ〜ん、と思って irb で叩いてみるとちゃんと出てくる。
で "OpenSSL::X509::Request" で検索すると Ruby 1.9 のマニュアルが出てくる。
何か良く分からない。

まぁ、あとは感で適当にサンプルしました。
require 'openssl'
include OpenSSL::X509

csr = Request.new(open(ARGV[0]))
p csr.subject
p csr.public_key.n.num_bits
p csr
引数に CSR 与えてますが、
ここに String で PEM 入れても DER 入れてもいけるはず。

Ruby の OpenSSL は Name がちょっと融通効かないかもかなぁ。

"IOError: [Errno 11] Resource temporarily unavailable"

Plone でいじってるサイトがありまして
ちょっと改造したいんだけど既にハードコーディングバリバリになってたりしまして
インスタンスをコピーしていじろうと思いました。
で、Linux だし cp -a とかでコピーしてしまうわけです。
var の下は lock とかあるし Data.fs だけ残して消してみたりする。
更に、etc/zope.conf の port を変更する。
で、bin/runzope とかしてみると当然のようにエラーが出ます。
何か色々流れた後に
"IOError: [Errno 11] Resource temporarily unavailable"
とか書いてあるんでググります。
インスタンス走ってるからダメなんじゃん? みたいなことが ML で言われてる。

そこで思いだしました、Plone はスクリプトが色々ハードコードだったかも。
で、etc と bin の下で grep してみました。
コピー元の絶対パスが各所に見受けられました。
コピーしただけでは元を見ちゃうのでそりゃ先ず port がかぶっているわけです。
なんでマッチしなくなるまで置換しまくりました。
vi 少し覚えてきてるんで :%s/xxx/yyy/g てなもんです。

で〜、一応 SSL くらいかけとくかってんで apache の方も設定コピーします。
mod_rewrite と mod_proxy してるのでそこの設定の port だけ変更します。
ここでもグダグダ。
VirtualHost だけコピーして port とか log の場所変えて起動。
繋がらない。
NameVirtualHost? と思って追加してみる。
繋がらない。
Listen だと気付いて Listen する。
繋がった。
何で Listen 忘れるんだよ、「apache の設定ならできます」じゃなかったのかよ、
と心の中で数回呟いてじっと手を見ました。

忘れるよね、人間だもの。

2009/05/28

"xdvi-ja: xdvi-ja.real terminated abnormally: 11"

Ubuntu で日本語で dvi ファイルが読めないって言われて
仕事したくないなって思ったんで調べてみた
[debian-users:52313] Re: ptexでコンパイルしたDVIファイルが開きません[再送]
メンテナの方が認識なさってたバグにひっかかってるようでした

pTeX と jTeX とか dvips と dvi2ps とか
何か色々と過去の何かが何だかごにゃごにゃしていて
TeX の日本語周りは暫く離れると忘れちゃって大変だなぁ
もぉみかちゃんフォントを埋めこんだ PDF の作り方も覚えてないなぁ

2009/05/25

excel utf-8 csv

OpenOffice の場合は「何にする?」って聞いてくれましたけど
Excel は何も言わずに淡々と仕事をしてくれるみたいで
UTF-8 な CSV を渡してみたら見事に文字化けしてくれました

で、検索してみたら、解決策が出てきたよ!
ExcelでUTF8のcsvファイルを開く方法 -OKWave
メモ帳で開いて文字コード ANSI にして保存すれば OK だって!
アホか、エクセル

どっちかっていうとメモ帳が UTF-8 を文字化けせずに開いたことに感動しつつ
内部コードが UTF-16LE? になってから何年経ってるんだとか思ったり
メモ帳に負けて恥ずかしくないのかと思ったり
自分にとって不都合というだけでエクセルを心の中で罵倒し続けました
お前に Excel なんて名前は勿体ない。エクセルで十分じゃ!!
オープンガイドブックOpenOffice.org 3でも読んで
皆で OpenOffice.org 使った方が幸せになるんじゃないかしら

と、自分のことを棚に上げてても仕方ないんで
Excel 2007 の CSV と 文字エンコーディング の関係
こんな詳細なレポートが作成できる素敵な大人になりたいんですが
未だ人間にすらなれてないんでとりあえず真人間になりたい

2009/05/24

firefox 履歴

その日の日報書こうと思っても午前中何してたか思い出せないわたし
そんなわたしがその日にググったことを覚えているはずがありません
でも安心
Firefox さんはしっかり記憶してくれているのです

Firefox で Ctrl+H とすればサイドバーに検索履歴が
Ctrl+Shift+H とすれば別窓で何かもう少し強そうなものが出てきます
あとはこれを訪問時間の順番で並べて
検索窓に "google.co.jp/search" なんて入れれば
検索したフレーズが順番に並んでくれるという夢のような機能、履歴

こんな素敵な情報がどこに眠っているのかと思い
「firefox 履歴」で検索してみたところ
Firefox 3の履歴データの構造を理解するってページが出てきて
Placesデータベースのmoz_historyvisitsテーブルに定義されている各フィールドは、次のような情報を保持する。
なるほど、そういえば places.sqlite ってあったな
なんで更に moz_historyvisits を検索すると辿りつくのが
SQLを使ってFirefox 3の履歴情報を取得するというページ
凄いぞ zdnet

~/.mozilla/firefox/???/places.sqlite に
moz_historyvisits と moz_places ってテーブルがあり
moz_places の方にはタイトルとか URL が
moz_historyvisits の方には訪問時刻とか対応する moz_places の id 等が格納されてて
更にサンプルコードまで上のページに載っているじゃない、SQL
凄いぞ zdnet

で、
python sqlite でググって sqlite3 module のライブラリの説明を読み、
サンプルコードをまんまつっこんで、sqlite3 のも上の SQL 文も、
Firefox 使ってると lock されてるとか言われるんで places.sqlite をコピーして、
import sqlite3

conn = sqlite3.connect(dbfile)
c = conn.cursor()
for i in c.execute('''SELECT h.id, p.title, p.url,
datetime(h.visit_date/1000000, 'localtime', 'unixepoch') AS 'visit_time'
FROM moz_places p, moz_historyvisits h
WHERE p.id = h.place_id
AND visit_date > (strftime('%s', 'now') - 60*60*24*5) * 1000000
ORDER BY h.id;
'''):
if i[2].find('google.co.jp/search') > -1:
print i[1], i[3]
とかしたらとりあえず検索語リスト出てきた

なんか、履歴の窓出しながらページ見てると Firefox の動きが鈍くなる気がして
外部から履歴表示した方がいいかと思ったんだけどコピーってダサいなぁ
きっと何か方法があるんだろうと思いつつ Firefox でもいいかと思い直す体たらくっぷりを発揮