tech

A collection of 137 posts
tech

MySQLで全文索引

今のところ特に使う必要もないんだけど、MySQLにて全文索引が使用できるように構築しておく。MySQLには元々FULLTEXT INDEXという全文索引は準備されているが、この索引はスペース区切りの文字列に対して使用する事を前提としている。例えば英文などであればそのまま使用できるが、日本語の場合は形態素解析して文節ごとにスペースを挿入する必要がある。その場合、元の文章と全文索引用の文章を別に保管するなどの工夫が必要になるため、運用上いろいろと面倒である。 そこで登場するのがsennaである。sennaは上記のスペース区切りの全文索引や、形態素解析した全文索引、n-gramと呼ばれるn文字単位でインデクシングする全文索引など、一般的に使用するものは全て準備されている。この機能をMySQLから利用するにはtritonnを使う事になる。こちらのプロジェクトでrpm化されたパッケージも配布されているが、今回はsenna以外にもopensslによる暗号化通信を組み込みたいのでソースからビルドする。tritonnパッチが当てられたMySQLソースをここからダウンロードする。 まず大前提とし
2 min read
tech

MUA環境構築

先日、構築したMTA環境(postfix + cyrus-sasl + dovecot)に合わせて、MUA環境を構築する。要件としては、複数あるクライアントやメアドについて、どの環境からも透過的にアクセスできる事。また、クライアントのメーラ毎に振り分けを行うと、それぞれの振り分けが同期できない上に設定が面倒。なので複数メアドのメールを一箇所に集めて、振り分けはサーバ側で行い、IMAPでアクセスする事が理想。特にサーバ側のスパム受信で発生するエラーメールは削除、スパムそのものもスパムとしてマークする。おまけで、携帯メアドからきた場合は、個人携帯アドレスへ転送したりする。 複数メアドのメール受信はfetchmailで行い、集めたメールをprocmailで振り分ける。スパム判定はprocmailからspamassassinへ転送する形で実現する。spamassassinはベイジアン・フィルターでスパムの判定を行うが、学習用のサンプル的なスパムメールがなかったので、ネット上に落ちていたコンフィグ・ファイルを使用してスコアリングを行う。結果としては、かなり過剰なスパム判定になってしまった・・
1 min read
tech

LAMPツールのトライアル

最近、時間があるので・・・という訳ではないが、どはまりしていたRSSリーダーが片付いたので、他のLAMPツールの評価を幾つか進めてみた。まず一つめはcacti。これは以前から使用しているツールだが、未だに仕掛けていなかった。RRDToolを使用して、サーバのリソース推移等をグラフ化してくれるツールだ。MRTGよりもきれいで簡単にセッティングできるので、最近はcactiを使用している。やはり、PHP & MySQLでワークするのもポイントが高い。久々に本家にアクセスして構築し直したが、やはり日本語化されていないんだね。人気ありそうなツールだから、日本語化してくれる人がいてもいいのに。 次は、パスワード管理用にclipperzと言うツールを試してみた。構築は至って簡単。普通に解凍して、configurationファイルを編集したら使い始められた。注意点はphpでbcmathという機能が使えないといけないので、phpinfo()で確認する必要がある。なければ、- -enable-bcmathオプションを付けてphpをリメイクしよう。いろいろなウェブサービスのログイン画面においてユーザー名
1 min read
tech

postfix with MySQL

本日はサーバのメール環境について。今まではqmailとqmail-vidaを利用していた。しかし、今回のサーバから64bit OSに変更した為か、qmail-vidaのコンパイルが通らなくなった。殆どバージョンアップのないqmail(作者のポリシーもあるだろけど)を使い続けることにそろそろ疑問を感じ始めていた時期でもあったので、最近流行のpostfixにトライすることにした。他の機能で何度も触れている通り、なるべくデータはMySQLに格納するように設定する。ウェブで調べた結果、以下の構成が理想的。 * cyrus-sasl (MySQLを使ったSMTP認証) * dovecot (MySQLを使った認証およびpop3, pop3s, apop, imap, imaps) * postfix (SMTP over SSL) * postfixadmin (ブラウザによるアカウントやエイリアス管理) 更に加えるとdovecotでは、MySQLによるバーチャルユーザー認証だけでなくOS認証もサポートする。今回はMTAの話なので細かい事は後日にするが、複数のメールアカウントが存
1 min read
tech

サーバサイドRSSリーダー

かなりの間、ニュースをチェックするためのツールが課題だった。クライアント型のRSSリーダーがおそらく私が期待しているものに近いと認識しつつも、使用するクライアントが5つあるので、ブラウザで使用できてクライアントを選ばないものが望ましい。更に、いずれかのサービスを利用する形ではなくサーバ・インストールできるOSSで、データストアにMySQLを使用しているものがベスト。ググった感じ、近そうなものとしてFastladderとFreshReaderが見つかった。 前者はPHPではなくRuby on Railsを使用している。悪くはないのだが、サーバ運用上ちょっと面倒。後者はデータストアがオリジナルのファイルでMySQLを選択できない。もう少し探してみると、FastladderをPHPにポーティングしたOpenFlpというツールを見つけた。これが正に理想どおりのツールだ?っと思いつつ、インストールしたのが悪夢の始まりだった・・・。クローラーはクエリーを修正しないとワークせず(他に方法あるのかもしれないが・・・)、やっと動いたと思ったら文字化け。今まで数々の文字化けを修正してきたが、このツール
1 min read
tech

wordpress諸々変更

今日はwordpressについて変更したポイントのまとめをしておこう。まず、テーマの変更だが、テーマそのものは公式などで入手できる。入手したテーマファイルを解凍して <<${WORDPRESS}/wp-content/theme>> に配置する。ブラウザ上からテンプレートの変更を行う場合はパーミッションを適切なものに変更しておく。あとは管理画面の外観→テーマで変更可能。 次に広告用プラグイン。今回はadsense-deluxeというものを使ってみた。ファイルはこちらのサイトからダウンロードできる。ダウンロードしたファイルを解凍して <<${WORDPRESS}/wp-content/plugins>> に配置する。管理画面のプラグインで機能を有効化する。設定のAdsenseDeluxeで広告の名前やコードを設定する。 もう1つアクセス解析用のプラグインを追加した。wp-stattraqというもので、これはこちらから入手可能だ。上記と同じディレクトリに配置し、必要に応じてwp-stattraq-install.phpを修正。例の如くプラグインを有効化して、以下のようなURIを表示
1 min read
tech

BINDとMyDNSの連携

新サーバ用のタワーを購入してから、実は2年以上経っている。いつか構築しようと思いつつも、必要に迫られないとダメだね、人間は(私は・・・か)。だましだまし使ってた既存機も、先日遂にディスク障害ぽい症状が現れた。ふと確認するとファイルシステムがリードオンリーでマウントされた状態だった。特に意図することはなかったものの、電源オフにしてしばらく放置しておくと普通に起動できた。さすがにディスクは心配なので、fsckかけて再起動したところ、障害は解消してしまった。 とはいえ、またいつ問題が起こるかわからないので、writeを伴うバッチの停止と新サーバへの機能移行を本気で開始した。まずはDNSから手を付ける。いつもだったら最新のBINDを導入しておしまいだが、今回はMyDNSを使用してみるつもりだった。データモデルにMySQLを使用出来る事が採用の大きなウェイトを占めている。今回のサーバ構築は、これに限らずなるべくデータ周りをMySQLに持たせ、バックアップにMySQLレプリケーションを利用するつもり。 MyDNS自体の設定はそれほど難しくはなかったが、自ドメイン以外の名前を引けないので、そ
4 min read
tech

マイポータル構想

久々の更新過ぎて自分でも反省中。いろいろ忙しかったとはいえ、結局2ヶ月も更新が滞った。二言三言でもいいから、最低限一週間に一回は何か書き残そう。多忙ながらも時間を見つけつつ自分のサイトを構築中。以前からの課題だけど、自分専用のバックオフィスが欲しい。グループオフィスも試したが、カスタマイジビリティが低く痒いところに手が届かない。目標はブックマークやブログ、ドキュメント、タスク、パスワード、RSSなどをなるべく使いやすい形で管理する事。 放浪した挙句、使い慣れているxoopsにリトライ。今回のサイト移行でxoopsをやめた経緯は、各種モジュールが準備されているものの、それぞれが特化していないため、機能面で不満に思う事が多かったからだ。しかし、今度はブログはWordPressに、ドキュメントはMediaWikiに、ブックマークはscuttleに、と各機能は専門ツールに任す。全てのツールが共通のDBを使用しているので、xoopsはそれらを繋ぐブリッジ、若しくはデータを横断的に参照するDBナビゲータ的な役割を担う。 この方法ならば以前、感じたようなストレスを軽減できる気がする。ただ認証
1 min read
tech

グループウェアを探して(後編)

昨日の続きでグループウェアの評価。なかなか理想的なツールに辿り着けないので、余り身近なものに限定せず、海外製のツールやローカライズされていないツールも含めて評価する事にした。構成はLAMPに絞ったままだけど。 * group-office かなり使いやすそうな印象を受けた。祝日設定も可能。しかし、日本語が一部文字化けしていたのと、グループ単位でのスケジュール管理方法がぱっと見わからなかった。他のものも評価しつつ、よさそうであればこの辺りの問題を解消して使用するのもありかもしれない。 * phprojekt これも同様に使いやすそうだった。大分ツールを選ぶ勘所がついてきたのか、いいものに出会える確率が上がってきた。最初から日本語の問題もなしだったが、これもグループ単位のスケジュール管理についてはわからず。他のツールのようにカレンダーから日付を選べない事やプロジェクト管理よりなインターフェースが少し気になった。 * Simple Groupware これが一番理想的なツールだった。ユーザー単位でオブジェクトをディレクトリのように管理ができて、それぞれパーミッシ
1 min read
tech

グループウェアを探して(前編)

ここ3ヶ月くらいは個人的に技術的な作成意欲が強い。そもそもブログを構築したのもその一環だ。以前、使用していたxoopsが機能面やパフォーマンス面で今一歩だったので、バックオフィスツールの移行を検討している。なんといっても評価が楽なので、今回もLAMPを中心として選別。主に使用したいと考えている機能は以下の優先度。 1. カレンダー兼スケジューラ(要マルチユーザー) 2. TODO管理 3. ブックマーク 4. パスワード管理 5. RSSリーダー 6. WIKI 下に行くほど、CMSで無理矢理統一せず、別のツール対応でよいかもしれない。かなりのツールを試したが、なかなか決定的なものは見つからなかった。それまでの経緯を整理しておく。 * php-agenda LAMPで構成されたTODO管理ツール。テンプレートレベルで文字コードの対策や折り返していて見えない部分の修正が必要だった。私見としては、まとまり感は悪くないものの、一息でスケジュールを把握しづらいのがネック。 * extcal LAMPで構成されたカレンダーツール。日本語はすぐに使用できたも
1 min read
tech

blogをちょっとカスタマイズ

慣れるためにも、wordpressの機能をいろいろいじってみる。まず、アカウント管理。管理者権限のユーザーで投稿するのは何となく気持ち悪い。投稿者がadminとかになるのが個人的にはいただけない。ユーザーには5つのレベルがある模様。今回は、管理者の次に強い権限を持つ編集者ユーザーを作成。作成したユーザーで昨日の投稿を再編集し、投稿作成者を変更。オーナーが編集ユーザーに変わった。この辺は直感的。 これで投稿者もadminとかじゃなくなるかな、と改めてトップを見ると・・・投稿者名が表示されていないねw おそらくテンプレートの編集で変更できるはず。テーマで一気に切り替えられそうでもあるが、今回は個別に直してみる。が、テンプレートをいじるメニューが見つからない。どうやら編集者ではテンプレートをいじる権限はないようだ。管理者ユーザーに切り替えてみると、該当のテンプレートが見つかった。ググった結果、追加したいテンプレートタグは以下。 <?php the_author();??> 実は該当テンプレート内にこのタグがコメントされた形で記述されていた。そちらをそのまま使う形で編集。保存・
1 min read
tech

blogツールの選定と構築

今更ながらblogの運用にトライしてみる。まずはツールの選定から。環境的には慣れているLAMPを希望。xoops等のCMSによる運用も試してみたが、統合的な管理(特に認証系)は好みだったものの、各機能がもう一歩な印象が強かった。今回もCMSは検討に含めてはいるものの、しばらくは専用ツールを試してみるつもり。代表的なのは以前に調べたときとそれほど変わっておらず、やはり以下が候補か。 * movable type * nucleus * wordpress movable typeは静的生成が特徴?この特徴に魅力を感じればよいのかもしれないが、各サイトの意見を見る限り、取り回しの面倒さの方が目立つ感じ。blogツールの本格的な運用はほぼビギナーな自分としては、敷居の低いものを選びたく、とりあえず選択肢から外す。 あとはnucleusとwordpress。前者はしっかりカスタマイズして育てていく印象。後者は最初からある程度使いやすい模様。何となく好みとしてはnucleusぽいが、まだまだ素人なのでwordpressの方がとっつきやすそう。何はともあれ、両方インストールしてみ
1 min read