PDOドライバのインストールがわからん

はい、今日はドットインストールでPHP応用編をやってました。やってましたっていうか、1個目でつまづいてました…。

1個目っていうのが、PHPでデータベースにアクセスしよう。って内容なんですが、そのデータベースがMySQLだったのです。だけど、ぼくはPostgreSQLを使っていこうと決めていたので、どうせならPostgreSQLにアクセスしようと思いました。
これが失敗でした…。

まず、ドットインストールではPDOというのを使ってデータベースに接続しようとしているんですが、ドットインストールはあくまでMySQLでのやり方なのでPostgreSQLではどうしたらいいのか調べました。


こちらのサイトに詳しく書いていただいてました
PostgreSQLへ接続 - PDOの利用 - PHP入門

ほうほう、そこまでMySQLと書き方は変わらないのね、と思いつつindex.phpに記述しブラウザで表示すると

string(21) "could not find driver"

エラーが出ました…。

なぜだ!なぜなんだ!
エラーをそのままググると、PDOドライバをインストールしないとダメなんだとか。

こっちのサイトを見ますと
PDOのドライバーインストール - PHP::PEAR - dozo PukiWiki

とりあえずコマンドをじっこうすればいいんだな。ふむ。
実行!

pecl install pdo_pgsql
pecl: command not found

はいエラー!くそったれ!
コマンドが見つかりませんだとー!

どうすりゃいいんだと調べた結果こちらのサイトに
pecl: command not found - DQNEO起業日記

よっしゃ!今度こそ実行じゃ!
ちなみにrootじゃないとパーミッション的なアレではじかれたよ!

checking for pg_config... not found
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
ERROR: `/var/tmp/PDO_PGSQL/configure' failed

はいまたエラー!
どうなってんだどうなってるんだ!
更に調べる!
すぱなび日誌: postgreSQLインストール

どうやらPostgreSQLをデフォルトちがうディレクトリにインストールしたときと同じエラーが出てるっぽい。
どこにあるんだと探したところ、postgresのディレクトリがない…。あれ?
確かにインストールしたはず。実際使えてるし。うーん、わからん!全然わからん!

また明日引き続き調査します…。
では。

エラー処理は大事!?

昨日は気づいたら寝てました。キットです。
一応、昨日も勉強したんですよ?一応ね…。

これからどうしようって話だったと思うんですが、とりあえず引き続きドットインストールのレッスンを受講していくことにしました!
といっても情報技術者試験まであと2か月程度なので、ひと区切りしたらそっちに移行しますが。ってことで今日はドットインストールでPHPのレッスンを受講していました。

PHPのレッスンですが、基本編でしたのでほんとに基本のところでした。他の言語でも同じみなif文だとかwhile文とか配列とかですねー。このへんはサラッと流し見しました。
今回も気になったところをピックアップしていくとですねー、「ファイルへの書き込み」のとこなんですが、書き込みの方法自体は、まあアレなんですが、エラーチェックのとこがキッチリしてるなあと。

  1. 対象のファイルは書き込み可能なファイルかチェック
  2. ファイルをオープン
  3. ファイルをオープンできたかチェック
  4. ファイルへ書き込み
  5. 書き込みできたかチェック

と、ここまでチェック処理を書くんだなぁと。やっぱり実際プログラムを書くとなるとこれだけチェック処理入れないとダメなんでしょうね。
っていうPHPとかどうこうではなく、純粋にプログラムの書き方について目を引かれました。きっちりエラー処理をかいてるプログラムはやっぱり安心ですもんねー。

さて、今日でPHPの基本編は終了したので、次回は応用編を受講していきます!
ではまた。

トランザクション処理

えー、今日は久々に勉強できました。
やっぱ毎日勉強しないとだめですね。前回までやってたことをあんまり覚えてなかったです。
Vagrantとか、どうやって立ち上げるんだっけ?って感じで全然SQL使える状態までいけませんでした。

ま、それは置いといて今日はドットインストールでPostgreSQLを勉強してました。
PostgreSQLといっても基本のとこは他のDBと一緒でSQL文は基本情報でちょっとだけ勉強してましたのでさらーっと流し見しました。

一個だけSQL文で知らなったコマンドがありました。このコマンド。

blogapp=> begin;
BEGIN
blogapp=> update posts set body = 'body12345' where id = 1;
UPDATE 1
blogapp=> commit;

このbegincommitってやつなんですが、トランザクション処理ってやつなんです。これも基本情報の知識はありますが、実際データベースで使ってみたのは初めてです。
beginからcommitまでは一連の処理とし、その間に他の処理が割り込まれないようになってます。

詳しくはこちらのサイトが詳しく解説してくれてます。
さらっと覚えるSQL&T-SQL入門(12):トランザクション処理をさらっとマスターしよう (1/3) - @IT

引用しますと

トランザクションの利用が必要となるのは、複数の更新処理を連続して行う際に、すべての処理が成功したときにのみデータベースへの変更を有効としなければならないような場合です。トランザクションを利用することで、何らかの原因によって、一部の処理が正しく実行されなかったときには、すべての更新処理をキャンセルし、作業全体を取り消すことが可能になります

このすべての処理が成功したときに変更を有効にするコマンドがcommitです。
逆にすべての更新処理をキャンセルする場合はrollbackというコマンドを使います。これで今までの処理をなかったことにできます。

今日の勉強としてはこんなもんです。
次回からPHPの勉強やるか情報技術者試験の勉強やるか悩み中です…。
んー、まあ明日の気分で決めます!ではでは。

まったくできませんでした

こんばんわ。今日も鬼残業させられました。
で、今日はフットサル行ってましたので、勉強はまったくしてないんです。
これはだめだ…。

とりあえず今後の予定としてはドットインストールのPostgreSQLをすべて終わらせて、そっからたぶん情報技術者試験の勉強のほうを優先してやっていくと思います。

最近12時までに寝るようにしてるんですが、なにかと色々やってると、気付いたら11時とかになってて焦るんですよねー。
はやくドットインストールを終わらせていきたいです…。

明日は早く帰って勉強しよー!
今日は短くてすみませんが、こんな感じで。

では!

今日はあんまり進まなかったんだ

今日からPostgreSQLをやっていきます!



と思ったんですが、鬼のように残業させられて勉強時間がほぼ無くなってしまいました…。
とりあえずドットインストールのPostgreSQLを3つだけ受講しました。前回までで仮想マシンPostgreSQLをインストールまでは終わっていたので、実際にデータベース作成とテーブル作成までしました。まあここはほぼ躓くところではなかったのでただドットインストールに従ってコマンドを打っていけばサクッとできました。


ってことで今日はここまでで終わってしまいました…。
明日もあんまり勉強できなさそうだなー。

あ、そういえばもうすぐ情報処理試験なので参考書と問題集を買いました。

これと
情報処理教科書 応用情報技術者 2014年版 - 翔泳社の本


これ
楽天ブックス: 応用情報技術者パーフェクトラーニング過去問題集(平成25年度〈春期〉) - 加藤昭(情報処理) - 4774153524 : 本


応用情報はこれで2回目なので頑張って受かりたいですねー。1回目受けたの2年前なんですが。
もしかしたらそのうちこのブログもドットインストール編をいったん休ませていただいて、情報技術者試験編に突入するかもです。
いつの間にドットインストール編なんて始まってたんだ。とかいうツッコミはなしです。

…では!

PostgreSQLとMySQLどっちにしよう

またまた昨日の続きです。

とりあえず仮想マシンの環境は作れたので、その仮想マシンPHPとかMySQLとかをインストールしていきました。ドットインストールに従って、PHPMySQLPostgreSQL仮想マシンに入れて・・・
って、なんかMySQLPostgreSQLってデータベース2種類入れてね?って思いますよね。調べたらどっちも主要なデータベースみたいなので覚えておいて損はないと思うんですが、今回はどっちかだけ勉強しようかなと思ってます。

で、どっちがいいのかなと調べました。
こちらのサイトでなにやら議論がなされてました。
PostgreSQLとMySQLはどちらかに明確な優位性がありますか? - QA@IT

いろいろ難しいことが書いてありましたが、ぼくが興味をひかれたのがこの回答。

全般的に、PostgreSQLはバランスよく筋肉質で優等生。これからRDBを学ぶという人にはベストだと思います。その必要十分感もあってか、最近Hacker Newsなどでみる限りトレンドはPostgreSQLにあるといってよいと思います。

MySQLはパフォーマンス面で限界までしゃぶりつくせたり多機能だったりする一方で、学ぶことが多く罠にはまらずちゃんと使えるようになるまでの学習曲線が長いです。が、本格的なサービスを運用していると、細かいところでMySQLじゃないと厳しい場面が結構あります。したがって、熟練度の高い人にはMySQLかなと思います。

初心者にはPostgreSQL、熟練者にはMySQLと解釈しました。そしてぼくは初心者なのでPostgreSQLを勉強しようと思います。本格的なWebサイトとかを運用するならMySQLがいいのかもしれませんが、それは追い追いということで。

では次回からはPostgreSQLを勉強していきたいと思います。
ほな!

Vagrantってすごいね

前回の続きです。
えー、前回はsshターミナルソフトをインストールしてようやく仮想サーバーにログインできました。
きっとこの後もスムーズにはいかないと思ってたんですが、


けっこうスムーズにいきました。
割とねー、いけましたね。

そのあともドットインストールの通りに設定していったりしたんですが、
無事vagrantの使い方編は終わりました。

vagrantってドットインストールで紹介してる使い方だけでもめっちゃ便利というか、色々すごいですね。
起動するときに実行した処理を自動で実行するようにできたり、ロールバックとかコミットとかできたり、なにかとすごい。

続いてローカル環境の構築編に行きたいと思います。
仮想マシンにログインして、webサーバーとかインストールする手順はvagrant編と変わらないんですが、見慣れないコマンドが出てきたので、ちょっと調べました。

これです。

options single-request-reopen

コマンドというか、/etc/resolv.confというファイルにこの記述を追記しました。
でちょこちょこっと調べたサイトがこちらです。
RHEL6/CentOS6では、single-request-reopen を必須にしたい…

ちょっと難しくて詳しいことはわからなかったのですが、要はDNSサーバーにFQDNを解決しにいくとき、この上記の記述を追記していないと時間がかかるってことみたいです。
FWの機能とCentOSの仕様の問題みたいですが、DNSの名前解決に5秒ぐらいかかると、結構つらいですね。
この記述は追記しといたほうがよさそうです。


今回は特に躓いたところもないので、こんなところです。
次回は仮想環境にPHPとかMySQLとかをインストールしていきたいと思います!
では!