開発環境としてDigitalOceanを借りる

2014/12/16 | 未分類

ここのところ新しいことに追いつこうとする気力を失い、完全に迷走状態だったけど、少しだけ気力が戻りつつある。そして開発も再開。基本は共有レンタルサーバで作業するけれど、いろいろなソフトウェアをインストールする必要に迫られることもあり、どうしたものかと考えていた。

本来ならAmazonが老舗でもあるし、サービスも豊富でいいのだが、サービス提供開始の頃何度かつまづいたのでそれっきりになっていた。最近は類似のサービス(時間貸しの仮想サーバ)も沢山出てきたようだが、自分(中小規模データベースの開発止まり)にピッタリのクラウドサーバに出会えた。

DigitalOcean
このリンクをクリックして利用開始していただくと、あなたと私の両方に数ドルのデポジットがもらえます。

日本のサービスではないけれど、英語なのでなんとかなると思う(自分は苦もなく出来た)。

  1. メアドとパスワードを入力
  2. メールが届くので確認用URLをクリック
  3. 個人情報と支払情報の入力

とこの3ステップでアカウントが作成できる。

ここからサーバを作る。DigitalOceanでは、サーバ(VPS)のことをDropletと呼んでいる。つまりDropletを作ることがサーバを立てることと同義だ。「CREATE」のボタンをクリックすると、Droplet新規作成画面が表示される。ここで「ホスト名」「サーバのスペック」「リージョン」「追加設定」「イメージ」を選択する。

スペック(サイズ)は最初は小さいサーバでいいかもしれない。小さいスペックのサーバは後で大きいスペックに変更できるが、その逆はできないっぽい。

リージョンは無難に一番近い「シンガポール」を選択するのが良さそう。

イメージUBUNTUやFEDORAなどから選択できるし、その他アプリケーション追加済みのイメージや、自分で作ったイメージ、バックアップを元にしてサーバを立てることも出来る。

SSH Keyは任意で、追加しなければ、サーバを立てる都度メールでrootのパスワードが送られてくる仕組みだ(初回rootでログイン後必ずパスワードの変更を求められる)。

国内のサーバと比べると距離もあるので若干のタイムラグもあるが、SSDが採用されているので十分高速だと思う。

一番のメリットは最小スペックなら1時間1円で使えること。1日10時間で1ヶ月20日とすれば、1ヶ月のサーバ代は200円だ。Dropletは作ったままだと課金されるので、イメージを作ってDropletを削除すれば時間課金もかからない(別途イメージの保管代が1ヶ月1GB2円くらいだったかかかるらしいがたかが知れている)。

今はこのサーバでどんどん(というほどではないけれど)試験開発やテストをしている。自前でサーバを用意しなくていいし、料金も格安だし。開発環境でいろいろお悩みの方は選択肢に入れるといいかもしれない。

DigitalOcean

medooのinsertはいただけない

2014/07/18 | medoo

さっそくmedooを試用しているが、いただけない箇所を見つけてしまった。

medoo自体はpdoのwrapperだから、データベース操作失敗時はfalseなりを返してくれればそれでいいのだが、どうやらそうではなかった。問題はinsertの場合。

試用中、insertで、未作成のカラム名を使用してデータを投入しようとしたら、その返り値が「0(文字列)」となった。これはダメだろ。

連番主キーがあり、insertに成功した場合、その返り値は最後に挿入された主キーとなる(ただし文字列として返却されるが)。連番主キーがない場合、もしくは主キーが連番でない場合、insertに成功するとその返り値は「0(文字列)」である。

つまり、成功時と失敗時で同じ返り値となることがあるということだ。error関数でエラーがセットされているかどうかを確認すればいいのだろうけど、使い勝手としてはよくない。medooのソースコードをみたけど、やはり返り値は何らかの数字文字列を返すようになっている。

medooをそのまま使いたいわけではなく、自作フレームワークに組み込みたかったので、さらにmedooのinsert関数を拡張し、insert失敗時はfalseを返すようにした。これで使い勝手は向上するはず。

その他のupdateとかdeleteとかは問題なさそう。さらに使ってみて、評価してみることにする。

medoo

2014/07/14 | medoo

昨今の流行に乗ろうかとFuelPHPにトライしたが早くも挫折。簡単なフレームワークではあるけれど、結局最初は、相応にお作法の勉強をしなくてはならない。しかも「簡単、簡単」と巷では言われているけれど、割と面倒だったりする。

最近のフレームワーク全体に言えることだけれど、たいてい中規模以上のサイトを想定した構造になっているような気がする。そしてPHPもどんどん高機能化が進んでいて、お手軽な言語ではなくなってきた気がするのは私だけではないはずだ。とは言っても、最新の技術は勉強しておかざるをえないわけで、FuelPHPについては今後1ヶ月かけて修得することにする。

当面オリジナルなフレームワークを使うことになるのだが(もう何年も使っている)、今回データベース関連をライブラリで置き換えることにした。今までは自前で書いていて、相応な使い勝手ではあったけれど、ある程度メジャーで専用のライブラリで置換するほうが無難であると考えたのである。

medoo

データベースライブラリはいろいろあるけれど、今回はmedooを使用した。ライブラリで文字列のクオートが出来て、簡単な基本構文さえ関数が容易されていればそれだけでいい。ORマッパーとか全然不要。だって管理しなければならないテーブル数なんてたかが知れているし、データベース周りの高速化のためにSQLをガリガリ手書きしたいわけで、特別なことは出来なくていいからだ。

medooは開発が活発と言いがたいものの、最近も新しいバージョンがリリースされている。基本的にはpdoのラッパーなわけで、直接pdoで記述してもいいような気がするが、そこはまぁなんとなく。ウェブサイトによるとその特徴は下記の通り。

  • 軽量1ファイル(重要!)
  • 簡単(重要!:覚える手間がほとんど不要)
  • パワフル(あまり重要でない:複雑なSQLはガリガリ手書きするので)
  • コンパチブル(まぁ重要:MySQL、PostgreSQL、SQLiteのバリエーションで十分)
  • SQLインジェクション防止(重要:でもソースコードは読んでおく必要あり)
  • MITライセンス(重要!:どこでもお好きにご自由に)

自前フレームワークへの組み込みも終わったので、まず何か一つ開発しなくては。使い勝手はその時にでも紹介することにする。

PostgreSQLでトリガー、関数を一覧表示

2014/05/07 | PostgreSQL

MySQLみたく「show triggers;」ってしてみたけどダメだった。PostgreSQLではSQLでシステムテーブルを走査するのがお決まりっぽい。

トリガーを一覧表示。

SELECT tgname FROM pg_trigger;

関数一覧を表示(自分の作った関数だけ)。

SELECT TBL_PR.proname FROM pg_proc TBL_PR LEFT JOIN pg_user TBL_US ON TBL_PR.proowner = TBL_US.usesysid WHERE TBL_US.usename = ‘hoge';

MySQLのバックアップでWarning

2014/04/26 | MySQL

Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.

MySQLデータベースをmysqldumpでバックアップする際にWarningが表示された。今までは表示されたことがなかったのに。読んで字の如く、mysql.eventというテーブルはスキップした、と書いてある。

eventテーブルって・・・なんだったっけ。

それもダンプしたい時は以下のオプションを付けてmysqldumpする。

–events

ダンプしなくて良くて、でもエラーメッセージも消したい場合は以下のオプション。

–events –ignore-table=mysql.event

http://www.linuxbrigade.com/warning-skipping-data-table-mysql-event/


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