海外サーバ3iXをお奨めします

2007/04/27 | 海外サーバ

アメリカのレンタルサーバ会社「3iX」。使い始めて約4ヶ月になるが、いたって好調だ。以前「FTPが遅い」と書いたが、現状それほど遅いとは感じない。といっても日本のサーバと比べるとほんの少しだけ遅いのだが(遅いというよりも「のんびり」という程度かな)。
コントロールパネルのcPanelも別段問題ない。ここで「いいな」と思ったのはcron(定期的にプログラムを実行するツール)も利用できるところ。ウェブアプリを書いておいて、定期的にlynxを読んでバッチ処理を実行する、なんてこともできる(実際にやってますが、しごく好調)。
それに安い。ドメイン1個なら月額たったの1$だ。サブドメインも20個までつくることができる。しかもデータベース2個。共用SSLサーバも使える。ただしメアドは20個まで。国内激安レンタルサーバのロリポップと比較すると、メアドの数こそ負けるが、それ以外は断然3iXのほうが上だ。
ちなみに月8$でドメイン10個までその他メアド無制限、サブドメイン無制限、ML無制限、シェルアクセスあり、となる(年間契約でたった88$)。
上位のプランにすれば、複数ドメインも運用できるし、プランによってはシェルアクセスも可能になる。サポートはライブチャットで24時間体制だし、クレームを言うと、かなりのことまで対応してくれる。日本のレンタルサーバもずいぶんよくなってきたとは思うが、安売りサーバで言えば、アメリカのサーバのほうが断然サービスがいい。これを機会に海外サーバにチャレンジしてみるのはいかが?。

アメリカのレンサバ会社3iX

もしチャレンジしてみたい人で「英語はちょっと・・・」という人がいたらコメントをいれてください。契約くらいは手伝ってあげられるかもしれません(でもサポートは費用くれないとやりませんけど)。ウェブアプリ構築ももちろんお手伝いさせていただきます!。

アンケートが簡単に作成できるサービス仮オープン

2007/04/26 | その他

昨年から持ち越しになっていた「簡単にウェブアンケートを作ることができる」仕組みをようやくリリースできた(といってもベータ版ということで)。元ネタとなるプログラムは以前から開発していて、既にお客さんに使っていただいていたのだけれど、今回一念発起して一般無料公開用のプログラムをつくってみた。
元ネタのプログラムはユーザインターフェースにFlashを使ってインタラクティブにしたのだけれど、これは結構大変。だってPHPとFlashで、それぞれでプログラムを作るわけで、デバッグがかなり面倒になる(いくつかFlash+PHP連携の開発環境もあるけれど、それを勉強してもあまり利益も見込めないしね)。ということで、利便性もかねてプログラムの全コードをイチから書き直し。結果としてかなり汎用性を持たせることができたっぽい。
現状は(とりあえずオープンさせたかったという目論見もあったので)、

 ○設問10個のアンケートを作って、
 ○回答をしてもらって、
 ○回答データをダウンロードする

だけのプログラムになっている(フォームの指示に従うだけで簡単に作成できるのだから、結構十分と思ってたりもする)。設問種類はフリーアンサー(メアド書式チェック、数値書式チェック、英数書式チェック、複数行への対応)、シングルアンサー(ラジオボタン)、マルチアンサー(チェックボックス)に対応。今後は暇を作ってどんどん機能を追加する予定にしている。一例としてこんな機能を追加予定。

 ○入力・書式チェック機能の追加
  ・郵便番号入力
  ・都道府県入力
  ・電話番号入力
 ○シングルアンサー・マルチアンサーのデータ集計とグラフ化
  データを集計してグラフ化します
 ○シングルアンサー・マルチアンサーの回答シャッフル機能

現状10問までしか作成できないけれど、今後はなるべく制限をはずして行く予定。もし気が向いた人がいたら、是非試用してね。以下のURLからたどってくださいな。
http://www.cubequery.jp

アソシエーション「hasOne」

2007/04/25 | cakePHP

少し時間ができたので、cakePHPのリレーション関連のまとめ。
ちなみにデータベースで言うところのリレーション(って言わないのかな?)はcakePHPではアソシエーションという。まず一つ目「hasOne」。
関連付けるモデルはあらかじめそれぞれ作っておく(「主」側のモデルをmodelA、「従」側のモデルをmodelBとする)。ここで「主」側、すなわちmodelAに設定するのがhasOneだ(「従」側つまりmodelBではbelongsToを設定することになる)。
実際の記述方法は以下のようになる。

var $hasOne = array(‘(1) 関連先のモデル名’=>
 array(
  ‘className’=>'(2) 関連先のモデルで使用されているクラス名’,
  ‘conditions’=>'(3) 関連を定義するSQL条件の一部’,
  ‘order’=>'(4) 関連先のデータの並び順’,
  ‘dependent’=>'(5) 関連先データの同時削除’,
  ‘foreignKey’=>'(6) 関連先テーブル側の外部キー’
 )
);

(1)はここでいうmodelBの名前のこと。
(2)は(1)内で定義されているクラス名。
(3)は条件を与えてデータを限定する際に使用する。
(4)は・・・いるのかな?。
(5)は「外部キー」という考え方にふさわしく、「主」側のデータが削除された場合に、それに関連付けられた「従」側のデータも削除するかどうかの設定(trueかfalse)。
(6)はmodelB内でmodelAの主キーをなんという名前のカラムで設定しているかを記述。cakePHPの記法にそって書いていれば省略できる。

メッセージがこなれていないmdb2

2007/04/24 | その他PEAR全般

あいかわらずmdb2のエラーメッセージはこなれていないと思った出来事。
mdb2でプリペアードステートメントを使ってデータをINSERTするプログラムを書いていて、ちょうどINSERTを実行するときにエラーが出る。

$myDB->extended->executeMultiple($prepared,$data);
のコマンド実行時に以下のエラー。

Fatal error: Call to undefined function: execute() in /(ペアへのパス)/pear/PEAR/MDB2/Extended.php on line 644

え?、え?。意味がわからない。
どうしてPEARスクリプト内で関数が定義されていないなんてエラーが出るわけ?。だったらバグじゃん。

ちょっと驚いていろいろあたってみる。ウェブで検索しても該当するようなページが見つからない。もう一度プログラムをじーっくり見てわかったこと。最初に用意したSQL内にスペルミスがあった(カラム名のスペルミス)。

単なるスペルミスなのだから、プリペアードステートメントを使用しないときと同じように「存在しないカラムを指定しているよ」というようなメッセージを出してくれればいいようなものなのに・・・。きっとこれにははまってしまう人も多いと思う。
ほんとエラーメッセージにはなかされることが多い・・・mdb2。

MDB2のプリペアードステートメント記述メモ

2007/04/22 | その他PEAR全般

MDB2でのプリペアードステートメントの記述方法。いつも忘れてしまうのでメモ。事前に接続を確立したオブジェクト(ここでは「$myDB」)を生成しておく。

[1] $data=array(array(‘a’,’b’,’c’),array(‘d’,’e’,’f’));
[2] $myDB->loadModule(‘Extended’, null, false);
[3] $sql=’INSERT INTO tbl_test VALUES (?,?,?);’
[4] $prepared=$myDB->prepare($sql);
[5] $result=$myDB->extended->executeMultiple($prepared,$data);

[1]でデータの準備。データ自体は連想配列ではなくて普通の配列にする。
[2]で拡張モジュールを使用する旨宣言。
[3]でプリペアードステートメント用のSQLを用意。
[4]で、[3]で用意したSQLからプリペアードステートメントのオブジェクト(?)を用意。
[5]で処理を実行。

登録する値を自動でエスケープしてくれるので楽チン。


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