accessbuilderって・・・

最近専用サーバを借りた。現在VPSを3台も借りていて、サーバの面倒はみたくないんだけど、仕事上どうしても借りなくてはいけなくて・・・。VPSが1万円強、専用サーバも1万円強。共用サーバも含めれば毎月サーバ代だけで5万くらい払っている。あーやだやだ。

さて久しぶりの専用サーバ。OSはCentOS5。勝手知ったる・・・と思っていたけど、やっぱり昔とは違うんだよね(確か初めてインストールしたOSがRedHatの1.0か2.0だったような記憶が・・・)。root権のあるサーバを借りたとき、一番最初にやることが不要なサービスを停止すること。サーバのセキュリティを最低限保つための基本事項だ。順番に一つずつ停止していく。sendmail、dovecot、spamassassin、vsftpd、webmin・・・。今回はウェブサーバとしての機能があればそれでいいので全部停止。データベースも使用しないからmysql、postgresqlも停止。この中でspamassassinなんてのは知らなかった。調べたらコンテンツマッチング規則に基づいたスパムフィルタリングプログラム(Wikipedia)らしい。まぁ、メールサービスも停止しているから必要ないので停止。

外からつつけるのはapacheとsshdだけにしたかった。しかしわからないのが一つある。それはaccessbuilderってのだ。ポート番号888を使っている。これだけは調べてみたけれど日本語の情報が極端に少ない。結局なんだかわからないので、そのまま放置してある状態だ。誰か知っている人がいたら教えて欲しい。

jQueryでマウス位置の取得

2010/11/23 | JavaScript/Ajax

画面上でマウスカーソルをあわせると、小さなポップアップで簡単な説明を表示させるようなインターフェイスは結構受けがいい。こういうインターフェイスは「tooltip」というらしい。jQueryではこれを実現するためのプラグインが多数存在する。今回案件でイメージマップを作成し、その中のリンク要素に対してポップアップで見出しをつけることを提案した。しかしこれ、意外に難しくて、普通のプラグインでは対応できなかった。なぜなら表示される要素(<img>)とリンクを記述する要素(<map>)がそもそも別の場所に記述されているからだ。リンクが記述されている<map>内の<area>タグでtooltipを表示するよう記述してみたけど、思った場所に表示されなかった。自前で実装するしかない。

ここでjQueryでマウス位置を取得する必要がある。リンクエリアの入った瞬間のHTMLの左上隅からの座標を取得することさえ出来れば、そこに絶対位置指定でポップアップを表示させればいいからだ。しかしこれも単純にはいかなかったので、少し変化球で勝負してみた。

  1. マウス位置は常に取得して特定の変数に格納し続ける(マウスが動いている間は絶えず)。
  2. 特定のエリアに入ったときに、上記で格納している変数の値を読み取る。

特定のエリアに入ったときにマウスカーソルの位置を直接取得するのではなく、マウスカーソルの位置座標は常に変数に格納しておき、特定のエリアに入った時だけ変数を呼び出すような手法をとった(間接的)。これでうまく位置座標が取得できた。jQueryで記述するとこんな感じ。

var X,Y;
$(document).ready(function(){
$(‘html’).mouseover(function(ev){
X=ev.pageX;
Y=ev.pageY;
});
});

これで常にXとYにマウス位置が格納されているので、イベントに応じてそれらの変数値を読み取ればいい。

WordPressマルチユーザー対応

2010/11/23 | WordPress

数年前にWordPress muがリリースされた。muはマルチユーザの略だと思うが、これ単体でMovable Typeのように複数のブログを管理することができていた。「そういえば最近muの話題を聞かないなぁ」と思っていたら、開けてびっくり玉手箱。WordPress本体に組み込まれていた。詳しい説明はこちら。

http://wpdocs.sourceforge.jp/WordPress_MU

設定方法等は上記ページに譲るとして・・・もうちょっと早く知っていれば複数設置しなくてもよかったなぁ、と思う今日このごろであった。

WordPressプラグインメモ(Custom Field Template plugin)

2010/11/15 | WordPress

ワードプレスの素晴らしいプラグインを見つけたのでメモしておく。「Custom Field Template plugin」。

CMS用途でワードプレスを使用する場合、カスタムフィールドはとても便利な機能だ。しかし通常の使い方であればカスタムフィールドを設定する場合、自分で使用したいカスタムフィールド名を入力し(もしくは選択し)、その値を入力しなくてはいけない。これだとカスタムフィールドの設定をやり忘れてしまうこともあるだろう。そういう問題を解決してくれるプラグインが「Custom Field Template plugin」だ。

http://wpgogo.com/development/custom-field-template.html

このプラグインを使用すると、あらかじめ設定しておいたカスタムフィールド群を、投稿作成時に呼び出して記事を作成することができる。つまり入力が必要な項目を一括して呼び出せるので、「入力忘れ」が発生しにくいのだ。そしてそれだけではなく、もっとたくさんの便利機能が備えられている。

カスタムフィールドは通常ただのテキストフィールドだが、このプラグインを使うとラジオボタンやチェックボックス、tinymceテキストエリアからファイルのアップロードまでいろいろサポートされているし、テンプレートの複数登録も可能。またテンプレートを特定のカテゴリに割り当てておき、当該カテゴリ選択時に自動的にテンプレートが呼び出されるなど、至れり尽くせりだ。さらに日付の設定機能(Date Pickerつき)もあるし、投稿だけでなく記事にも対応しているし、果てはPHP直書きもできるし。

こんな実用的なプラグインを提供してくれた開発者に感謝。

インデックスの使われ方

2010/11/14 | PostgreSQL

もはやシステム開発とデータベースは切り離せないほど密接な関係があるといっても過言ではない。それ故、中途半端な知識でデータベースを使うと、あとで苦労することが多い。たかだか1000件とかその程度のデータであれば、問題ないのだが、データ件数が数万件とか超えてくると飛躍的にクエリの実行速度が遅くなってくる。

自分でも数年前までは、大量のデータを扱うような経験がなかったので、結果としてひどいアプリを作ってしまったことがある(幸か不幸か修正開発の機会を与えていただき、全て再開発した経緯がある)。だから他の人の事をとやかく言えないのであるが・・・。数百人も社員がいる会社でそういうことされると結構困ってしまう。そんな会社ダメでしょう、って感じ。

今担当している案件がまさにそんな感じ。データベースの設計がとにかくひどくて、そもそも正規化が出来ていない。相手はPostgreSQL。さぁ、どうしようかな、と悩める日々だ。そこでいろいろ思案中だったのだが、インデックスの使われ方ということで、古い記事ではあるが有意義な情報を見つけたのでメモしておく。

http://ml.postgresql.jp/pipermail/pgsql-jp/2003-February/004169.html

PostgreSQLでのインデックスの使われ方等で非常に勉強になる記事だ。知っている人なら知っているそうそうたる顔ぶれがディスカッションしている。これ見て少し勉強してみることにする。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net