emacsとかmewとかSNSとか

emacs22とかmew-5.1
emacs22の日本語環境
(setq default-enable-multibyte-characters t)
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
mew-5.1の初期設定は公式ページにあるとおり。そのままだ。それ以外に
mew-config-alist
default
mailbox-type . mbox
name1
mailbox-type . pop
などとやって、ローカルで受けるデフォルトアカウントのほかにプロバイダのメールを使うのでpopを使うアカウントを作成。mailbox-type の pop に気づくまでハマったのでメモ。
Cで切り替える。
FreeBSD-4.11stableでemacs22
…うまくコンパイルができない。Libretto50、メモリ32Mではswapがあふれて落ちてしまうのだった。せっかく/usr/ports/Mk/bsd.ports.mk の中のUSE_GETOPT_LONG=yesまで辿りついてコンパイルできるようになったってのに、ハードの問題となるともうお手上げ。(6.2ではgetopt_longは問題にならずコンパイルが通った。調べてみると5.??から取り込んでるらしいので、4.11はportのオプションを指定する必要があった)
趣味は読書SNS
よそのSNSでネタになったらしく、参加希望者が立て続け。それはいいんだけど、同時に本文なしのリクエストメールも。小心者なので、無言電話と同等の無言メールには返答しないことにしている。やっぱり無言メールって不気味だし。
そのポンコツSNSは。
おととしの暮れから去年の頭にかけてちまちま作って、4月1日ポンコツサーバーにて稼動開始。去年秋頃には参加者が100人を超えて、暮れには登録される本の冊数が2万冊弱に。さすがにポンコツサーバーとへぼスクリプトの組み合わせでは荷が重くなってきたので今年にはいってすぐ牛丼パソコンにサーバーをリプレース。
当初からの参加者さんのおかげでMacに対応できたり、致命的なバグが取れたり。そろそろ「人柱バージョン」から「地鎮祭バージョン」に格上げするかなぁと。そのあとは「棟上バージョン」まではなんとかなりそうだけど「杮落としバージョン」となるとあちこち改築が必要になりそうだ…て、なんのこっちゃ。
一時的なものだとは思うけど、もしこのまま無言メールが続くようなら招待状リクエストのメールフォームは閉じてしまおう。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
五十音順ソート

五十音順でソートしたいと。いや 趣味は読書SNS で、せめて著者ぐらいは五十音順で並べたい、とずっと思いつつ、だった。JIS順てなにそれ機械の都合、なんだよなあ。
とはいえ、perlにしろpostgresqlにしろ、ひらがなカタカナアルファベットの「よみ」をつけないと五十音順は無理。
基本的にメンテフリーのつもりなので、わたしが登録される本を一冊ずつ見て「よみ」をつけて回るのは無理だし不可能。
基本的に入力項目は極力少なくしたいので、入力してくれるユーザー側に「よみ」の入力を促すのは却下。
とにかく「気楽さが最優先のSNS」だ。
で、せっかくサーバーのスペックも多少上がったことだし、kakasiを使うことにした。
kakasi -JH -KH
なんだけど、utf8に対応してないっぽい。…もしや、と思って検索したらCPANにText::Kakasiモジュールがあったので、インストール。ありがたいことにperlのEncodeを使ってutf8で使える。
さっそく「よみ」のテーブルを作ってごにょごにょ。そのままでも変換はかなり優秀だ。とはいえ「よみ」の修正もできるように管理画面にもあれこれ。
今までのメモリ512Mだとすぐにスワップ…ていうか常になにかしらスワップしてる状態だったけど、今度のメモリ2Gはスワップする気配すらない。無理してメモリ積んだだけのことはあったなあ。しみじみ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
サーバーログ監視と自分メモその3

どうやら無事に稼働してるっぽい自宅サーバー、牛丼大盛りつゆだく号だ。とりあえずそこそこ快適なレスポンス。メモリをおごっただけのことはある、のかな。
で、稼働したばかりだしここ数日はapacheのログファイルの監視・チェックをこまめにやっていて、妙なアクセスとか豪快なクロウラーに気づく。
apacheのアクセスログ。
XXX.XX.XX:25なんてのがあった。なんでhttpで25番portなんだ?ぶっちゃけこれは謎。maillogやmessagesを覗いても同時刻にメールが動いた気配はない。whoisをみるとこのドメインはカリフォルニアのIPアドレス。アクセスしてきたのは台湾のIP。うううむ。なんだろ。
Baiduspiderという中国版google百度というサイトのクロウラーが豪快というか。そんなしょっちゅうこられても、そんな頻繁に更新してないし。おまけに、地引き網を始めると1秒ほでの間隔で片っ端からもっていく。わたしのサイトはほとんどがCGI。いちいち全部もっていくとかなりのページ数になるし、そもそもサーバーに負荷がかかる。今まで放置してたけど、今回はwhoisで調べて百度が使ってると思われるIPアドレスはすべて却下にした。中国のひとが金町のもつ焼き屋情報を欲しがってるとは思えないしなあ。
掲示板への広告スパムが相変わらず激しい。該当の掲示板は削除してあるのにかなりの頻度でやってくる。で、問題なのが、削除した掲示板はデータベースがらみでmod_perl2のスクリプト。こいつにアクセスされると、そんなファイルはありませんよ、と返事するのはmod_perl2なのだ。これはメモリの無駄遣いでしかない。ので、apacheのmod_rewriteで応答してもらうようにした。
wide charですよ、というutf8がらみの警告もなかなか取れていない。原因はわかっていて、SNSの方はutf8にしたけどこっちはまだeucとutf8が混じった状態なのだ。全部utf8にしたほうがいいんだけど、仕事が始まって、帰って食って寝るだけの平日、時間がほとんど取れないんだよねえ。今日もzaurusで電車内ネット…しょぼいよなあ。
てな感じで、アクセス制限をちまちま追加。
ネットワークやサーバー管理に関する知識を少しはまともに仕入れておかないとなあ。入り口のルーターで一部のportしか通さないはずだけど、意味不明のログが残ってると、不気味だぞ、としか対応できないのはいかがなものか。
でも、サーバーもperlもおもしれーっすよ
[2007/01/12 23:27:41]
なんで25番なのか、気持ち悪いのでapacheのログをもう一度チェック。リクエストがPOSTでもGETでもなくCONNECT。なんじゃそりゃと検索したらproxyとのトンネリングをどうのこうの、と。
…えっと、こいつは踏み台探しだ。カリフォルニアに用事でもあるのか。妙なアクセスがあるなあと思ったらほとんどが台湾のHINETなんだよなあ。
CONNECTを却下するとどんな影響があるのかわかってないので、今回もIPで弾くことにする。httpd.confのDenyばかりがやたら増えていくのは困ったものだ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
データ消失と自分メモ

趣味は読書SNS 用にサーバーをリプレースしたら、こっちのデータをいくつか取りこぼしてしまった。
今まで、約10ヶ月ほど、黙々と文句も言わずサーバーとして安定動作し続けてくれたDELLも、読書SNSでの登録冊数が2万冊を超えて、さすがに厳しくなってきた。去年の暮れ大晦日に思い立って秋葉原に走り、ソフマップの牛丼パソコン大盛りというのをつゆだく(メモリ2G)にして買ってきた。
この際、サーバー環境をutf8でやってみようとあれこれいじって、昨日DELLから牛丼にリプレースしたばかり。
というのが取りこぼしデータのあらすじ、かな。
自分用にメモしておくと。
FreeBSD-6.1releaseのフロッピーを FreeBSDの総本山 からもってきて起動。ところが牛丼パソコンの内蔵LANポートを認識してくれなかったので、慌ててPCI用のLANカード800円也を買ってくる。fdiskに当たるフェーズで「ジオメトリがおかしい」という警告に脅される。検索してみると「気にしなくていい」らしい…。
サーバー用に/varとか/とか/tmpなんかもデフォルトより多めに取ってみる。ルーターをDHCPに設定すると今度はすんなりネットワークに繋がって、あとは流れ込んでくるのを見てるだけだ。Xも使わないので気楽なもんだ(とはいえ、依存関係でXがらみのライブラリを要求してくるのがあるので、フルインストール)bash2だけpackageで入れていったん終了。
まずはportsでcvsupをインストール。supfile とか make.confとかいじりつつ、ソースを最新のものにアップデート。カーネルもいらないデバイスをはずしてpostgresql用にいくつか設定。make buildworldとかbuildkernelとかやってインストール世界をしたらバージョンが6.2-stableになっていた。CPUはpen4ななんだけど、コンパイルが早いんで驚いた(たぶんLibretto50だと3日がかりだろう)
portsからのインストール。
jless jvim の小物ふたつ。
apache20 mod_perl2。apacheはもしかしたら使うかも、と思ってMakefileでオプション扱いになっているproxyモジュールもコンパイルするようにちょっと書きかえ。httpd.confは今までのものをそのまま持ってきて、DocumentRootなど変更したところをいじった。
sslは、ssl.confはほとんどそのまま。自己認証を作り直し。ココの過去ログを見ながら。いや、役に立つページです、と自画自賛しておこう。
qmailはlocaltimeのパッチぐらいで普通にインストールしてtcpwrapperもインストール。メールを発信できるように。
ImageMagickとかssh2とかsudoとかlhaとかkakasiとかnkfとか、ユーティリティ類をインストール。
んでもって、どうしようと、けっこう真面目に悩んだpostgresql。今までどおり8.1でeucでいくなら、8.1をインストールすればいい。でも、良い悪いとか好き嫌いは別にして、世間はutf8へ邁進中。この際だから、うちもutf8にしてしまおうか、と。あーでもないこーでもない、とネット見ながらたかがこれだけのことで約二日ほど考えて、結局最新バージョンの8.2でutf8で行くことにした。
rc.dに入るシェルスクリプトのオプションが変だったのでちょっと修正して。
su - defaultuser
initdb --encoding=utf8 --lc-collate=C --no-locale
DELLのpostgresql-8.1側で
pg_dump -U pgsql -E utf8 > db.dump
文字コードをutf8にしてデータベースをdump
牛丼のpostgres-8.2の準備で
su - defaultuser
createdb -T template0 database_name
pgsql -U user -d database_name -f db.dump
で、あっさりデータベースのutf8化に成功…ナマのアクサンは化けてたけど。
今度はわたしがutf8を扱うための準備。
古いバージョンのteratermはutf8を扱えないので、puttyに設定…って、UTF-8じゃなくてUTF-8(CJK)で設定、なんてわからんかった。
jlessはLANGをja_JP.UTF-8にするとcore吐いて死ぬので、検索して lv というのをソースから。
肝心のemacsはutf8を普通に扱えるのは22かららしい。最新のportsに入ってるemacs22はまだdevel。とはいえエディタがなきゃしょうがないんで、develをインストール。apel、skk、mewはソースを持ってきてconfigureから。
簡単なスクリプトを試して、utf8でいけそうだと思ったので、portsでperlのモジュールをガシガシインストール。
use utf8;
とか
$DBH->{pg_enable_utf8}=1;
とか、書き出すと長くなるので、また明日、かな。
とりあえず。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
謹賀新年。

あけましておめでとうございます。
仕事がらみで東京での年越し。嫁と嫁の友達の3人で鍋をつついておりました。黒帯、澤乃井、春鹿があって、とりあえず黒帯を呑んでたら、どうやらひとりで一升ほとんどあけたようで、記憶がプツリ。気がついたらあけましておめでとうだった。
二日酔い状態のまま、うちから事務所にログインして管理ページを開いてごにょごにょ。
実は去年の暮れ、というか、昨日なんだけど、ソフマップで牛丼パソコン大盛りというのを買ってしまった。 趣味は読書SNS で、登録冊数が2万冊を超えて、検索だのなんだのが重苦しい。ソースコードが汚いのはおいといて、機械の力でなんとかなるなら機械で、という安直な発想。OSはいらないけど、メモリは2Gは欲しい。秋葉原を歩いていろいろチェック。予算5万程度でメモリ2G搭載というのは厳しかった。結局、定価6万弱の牛丼パソコンにメモリ2G入れて8万ちょい。
さて、FreeBSDのインストールだ、と思ったら、内蔵LANポートを認識してくれない。NBに945G と SBにICH7 という構成らしいが、素人のわたしにはなんのこっちゃ、でネットに繋げないことにはインストールすらできない。google様にお伺いを立ててもそれらしいことは出てこないし…。
比較的ゆっくりのこの時期にセットアップしてSNSのサーバーをリプレースしたかったなぁ。
てことで、今年もよろしく。健康で良い年でありますように。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
SQLの書き方がわからんですよ

データベース、というか、SQL文、というか、postgresql というか…手ごわいなぁ。まだまだよくわからんですよ。
重複を除いて並べ替えたい、というだけのことがよくわからんのだ。
メモ
$sql = "select * from (select distinct on (title) * from $blTABLE) as temp where read='t' order by $order_by offset $pos limit $view";
タイトルの重複を除いて、既読本並べ替える。というのだけど、postgresql の場合、distinct の効率はよくない、らしい。スピードが落ちるらしいんで調べて group by がいいらしいんだけど、どうやって使うのか。
おまけに、上のSQL文って副問い合わせとやら。一度select文でデータを全部なめた結果に対してさらにselectして並べ替え…selectを2回も発行してるんだけど、こういうのも効率が悪い、らしい。
うううむ。ルールとやらで別テーブルを作っておくか、とも思ったんだけど、それもまたどうだろ、と。
難しいです。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」