2012年6月11日月曜日

phpでMongoDBを使えるようにするには(2)

 ではではphp書いていこう!

ファイル置く場所は
/var/www/html
の下だよ。
そこにindex.phpなんてファイルを作っておいておくと、
http://(IPアドレス名)
でファイル確認できるようになります。

このアドレスでMacからも確認できるようになる。
(これできるようにするのに、httpdの設定を少し直したような気もするけど、昔に設定したのであんまり覚えてない…)

前の記事で書いたように、Macからファイルを編集できるように設定しておけば、ほとんど Macから編集したり確認したりできるようになります。

ではでは、お待ちかねのPHPです。ようやく登場だーー!!

適当にindex.phpを作ります。
で、ベース。
<html>
  <body>
  </body>
</html>

まずは情報を登録してみよう。
<html>
  <body>
    <?php
      //MongoDBを起動?
      $mongo = new Mongo();
      //hogeっていうDBをつくる
      $db = $mongo->selectDB("hoge");
      //hoge_col_1というコレクションを作る
      $col = $db->selectCollection("hoge_col_1");
      //情報を登録する
      $doc = array("name"=>"MongoDB", "type"=>"databese","count"=>1);
      $col->insert($doc);
      //webにhogeと表示する
      //(ちゃんとphpが動いているか確認するという意味を込めて)
      echo "hoge";
      ?>
   </body>
</html>

これで登録できました。
お次に、データベースにちゃんと登録できているか確認するという意味も込めて、
確認のためDBの中身を表示してみましょう。

<html>
  <body>
    <?php
      $mongo = new Mongo();
      //hogeというDBのhoge_col_1というコレクションの中身をみる。
      $db = $mongo->hoge->hoge_col_1->find();
      foreach ($db as $doc) {
        //$usernameという変数の中に、
        //hoge_col_1の"name"のタグがついたものの中身を代入
        $username=$doc["name"];
        //で、表示してみる。
        echo $username;
      }
    ?>
  </body>
</html>

MongoDBと表示されればokです。


【MongoDB関連記事】


phpでMongoDBを使えるようにするには(1)

環境:
Mac OS X SnowLeopardにCentOS入れて、CentOSでやってます。
CentOS5.8です。

--


毎回のことですが、"sudo"打つのめんどくさいので、最初からroot権限で〜!
$ su -

で、おつぎ!PHPがmongo使えるようにします。
# pecl install mongo

CentOSにpeclなんてコマンドねえよーて言われたら、
# sudo yum install php-pear
でpeclコマンド使えるようにします。

phpの設定ファイルで、モジュール(?)を有効にするらしいです。なんのことだか。
とりあえず、とあるファイルを書き換えますぜ!というかもともとこんなファイルはないようなので、作ったってことになりますね。
# vi /etc/php.d/mongo.ini


で、以下のような文言を書き加える。
; Enable mongo extension module
extension=mongo.so

一応、これでokらしいのですが、念には念を入れて確認。
# php -i
をするとなにやら文字がばああああっと出てくるので、
以下のようなmongoに関しての記述があるかチェック。
mongo
lll
lll
MongoDB Support => enabled
Version => 1.0.8
lll
Directive => Local
Value => Master Value
mongo.allow_persistent => On => On
mongo.auto_reconnect => On => On
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.utf8 => 1 => 1

あればok。

その後、一応httpdを再起動。
# /etc/init.d/httpd restart 

「phpでMongoDBを使えるようにするには(2)」に続きます。


【参考文献】

CentOSのファイルをespressoで編集したい!

と思い、CentOSにMacからftpで接続できるようにしたいと思ったのです。

/var/www/html以下のファイルを編集したい。
でもこれルート権限じゃないと編集できないのね。
そこが問題ね。そこも含めて解決していきまそ。

結論から言うと、結構簡単にできるよ。

【やりかた】
ルート権限でいじるよ。ターミナルから!
$ su -
で、ルート権限になるよ。

次、yumでftpが使えるようになるライブラリ(?)をインストールする。
# yum -y install vsftpd

で、今からいじる2つのファイルのバックアップをとっておく。
# cp -p /etc/vsftpd/ftpusers /etc/vsftpd/ftpusers.org
# cp -p /etc/vsftpd/user_list /etc/vsftpd/user_list.org
「-p」をつけると、パーミッションやタイムスタンプを保持したままコピーできるよ。

バックアップをとった上記のファイルからrootをコメントアウト。コメントアウトは「#」で。今回はvimで編集するおー!
# vi /etc/vsftpd/ftpusers
# vi /etc/vsftpd/user_list

SELinuxの状態をチェック。
# getenforce
Enforcing:SELinuxの機能・アクセス制御ともに有効
permissive:SElinuxはwarningを出すが、アクセス制限は行われない
disabled:SElinuxの機能・アクセス制御ともに無効

disabledだったらそのままでよし。
それ以外のひとは以下を実行。
# setenforce 0

FTPサーバを起動する
# /sbin/service vsftpd start
vsftpd 用の vsftpd を起動中: [ OK ]

毎回実行するためには以下のコマンドを打っておく。
# chkconfig --add vsftpd
↑これじゃあうまくできなかったです。
毎回、 CentOS起動時に「# /sbin/service vsftpd start」で起動させなきゃだめなのかな…?
分かる方いらっしゃったら教えてください!

で、これでcyberduckやtransmitなどのアプリからアクセスできるようになるんだお!
IPアドレスの確認は
# /sbin/ifconfig
で!

例(青いとこ):
eth0   Link encap:Ethernet  HWaddr 00:0C:29:5E:90:1A
          inet addr:192.168.230.200  Bcast:192.168.230.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe5e:901a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11435 errors:11433 dropped:0 overruns:0 frame:0
          TX packets:7822 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1178826 (1.1 MiB)  TX bytes:685043 (668.9 KiB)
          Interrupt:67 Base address:0x20a4

これでアプリつかって入れるようになったら、あとはもうMacから編集し放題なので、espressoで編集もできます!


【参考】
今日書いた事ほとんど書いてくれているよ。
参考にさせていただきました、ありがとうございます。
http://plaza.rakuten.co.jp/hajiiku/diary/200908110001/

【おまけ】
今日の歌:らんま1/2 OP&ED集
http://www.nicovideo.jp/watch/sm4775916


【MongoDB関連記事】


mongoDBに関係するコマンド集

CentOSでmongoDBを使う場合です!
雑です。これからも足していきます。

基本的にはここを…!


メモ


mongo:mongoDBいじるモードへ
show dbs:接続しているサーバ上のすべてのデータベースを表示
use db_name db_name:切り替え
show collections:現在のデータベースのすべてのコレクションを表示
db.コレクション名.drop() foo:コレクション全部を削除します
db.コレクション名.remove():コレクションの中のすべてのオブジェクトを削除します
db.コレクション名.remove( { name : "sara" } ):name が {{sara} のオブジェクトをすべて削除します
db.コレクション名.find({}):コレクションの中身を全表示。
db.コレクション名.find({'name': 'sara'}):「'name': 'sara'」を検索する。
db.コレクション名.find().sort({$natural:-1})
db.dropDatabase():今いるデータベースを削除

DBの作成は、データ挿入したら勝手に作成されます。

2012年6月8日金曜日

MongoDBことはじめ【CentOS】

SumallyのけいたっぷさんがMongoDBを勧めていらっしゃったらしく
バイト先の社長が「MongoDBを使ってみたい!」と言い出した。
言語はphpです。これももちろん、けいたっぷさんがPHPerだから。

というような実に単純な理由によりMongoDBを使うことになった。
てなわけでその記録をここにまとめたい。

私の環境:Mac OS X 10.6.8(SnowLeopard)および CentOS 5.8(Linux)
開発言語:php(予定)(でもMongoDBはRubyとも相性いいよ!)

MongoDBとは - Wikipediaより

MongoDB は、高パフォーマンス、スキーマレス、オープンソースのドキュメント指向データベースである。C++言語で記述されている。[1] MongoDBはRDBMSではない。MongoDBは、BSONというJSONのバイナリ版のような形式でドキュメントを表現し、そのコレクションを管理する。この形式は、複雑な階層を持たせることができ、なおかつクエリやインデックスが容易である。これにより、多くのアプリケーションは、自身のネイティブなデータ型や構造に合った自然な方法でデータを格納できる。

ちなみにMongoDBはいま流行しているっぽい"NoSQL"らしいネ。
MySQLなんかより、カラムを気にせず色んなデータを突っ込めるみたい。

※参考

MongoDBを動かすにはCentOS?


MongoDBはCentOSで動かしているよーって記事が圧倒的に多い。
ので私たちも王道で攻めることにした。
けいたっぷさん曰く、どのOS上でも同じじゃない?ということでしたが、ぐぐってみると圧倒的にCentOSでやっている人が多いのです。
※ちなみに社員のちゃっぴー氏がMacOS上で動かそうとしてたけど、ちょっと難しかったっぽい。(MAMPでphpのローカル確認することも考えると)
※MAMPとは「アプリケーションフォルダにドラッグ&ドロップするだけで Apache, PHP, そして MySQL を Mac OS X にインストールすることができる。」そうである。ソースははてなキーワード。

CentOSを導入するには、VirtualboxやVMwareFusionでOSを自分のPCにつっこみます。
VMwareでやると比較的すいすい導入できました。Virtualboxでやっている人は中には苦労する人もいるみたいだ。

CentOS導入に関しては今回触れません。


さぁ試してみよう!


VMwareのターミナルは使いづらいので
(CentOSとMacの日本語キーボードと相性悪かったww)
Macのターミナルから使えるようにします。
ちなみに以下、sudoして使うものが多くなってくるので、
はじめからroot権限でターミナルいじった方がいいです。

$ su -

でルート権限に変更できます。
パスワード要求されると思うので、Macのパスワードいれてくださいね。

とりあえずCentOSのターミナルからIPアドレスを確認します。
#  /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:5E:90:10
          inet addr:192.168.230.129  Bcast:192.168.230.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe5e:9010/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28800 errors:13051 dropped:0 overruns:0 frame:0
          TX packets:15980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:37731307 (35.9 MiB)  TX bytes:1002514 (979.0 KiB)
          Interrupt:67 Base address:0x2024
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1269 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1269 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2090390 (1.9 MiB)  TX bytes:2090390 (1.9 MiB)

この青い部分がIPアドレスです。

Macのターミナルに、
# ssh 192.168.230.129
とやって、MacのターミナルからCentOSにsshで入れるようにします。


で、ここからが本番です。
MongoDBが使えるようにしていきましょう。

自分がダウンロードしたCentOSのバージョン調べます。
バージョンごとにMongoDBの入れ方が違うようです。
私のCentOSのバージョンは、

# cat /etc/redhat-release
CentOS release 5.8 (Final)

です。

CentOSのbit数も確認しておきましょう。32bitと64bitだとインストールの仕方がちょいと違います。

# uname -mi
i686
i686なので、
私のはCentOS 5.8 32bitです。
ここがx86_64だと、64bitです。

これからyumでMongoDBをダウンロードします。
ダウンロードするために、とあるrepoファイルを作成します。
$ vi /etc/yum.repos.d/10gen.repo
で10gen.repoというファイルを作って中身を書いていくのですが、

私のように、32bitの人は、
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686
gpgcheck=0
と書いておきます。


64bitの人は、
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
です。

その後、コマンドを打ち、ダウンロード。
# yum install mongo-10gen mongo-10gen-server
で、MongoDBサーバーを起動。
#  /etc/init.d/mongod start
これで使えます。


# mongo
MongoDB shell version: 2.0.6
connecting to: test
mongoというコマンドが使えるようになりました。


CentOSを起動したら自動的に起動するようにするには、
$ chkconfig --add mongod 
と書いておきます。


次の記事では実際にいろいろといじってみたいです!!
書くかな。書きます多分。


ここがわかりやすいよっていう参考になるページ
ubuntuユーザーも参考になるね!!

 参考:
http://blog.madapaja.net/2011/09/20-mongodb-1-mongodbjp.html


【MongoDB関連記事】




2012年6月4日月曜日

Ethernet Proを使う前に。

Arduino Ethernet Proを使う前に気をつけなきゃいけないこと。
Ethernet Proはこーんな(↓)部品(USBシリアル変換ボード)をかませてminiUSBでPCとつなぐのですが、

miniUSBを使うにはドライバを入れなきゃいけないらしいのです。
(私の環境:MacOSX 10.6.8)

ドライバをいれてないとArduinoのアプリはEthernet Proを認識しないです。
私も全然認識されなくて、さらに原因をググってもぜんぜん原因でてこなかったから辛かった…!

でどこでダウンロードするかというと、がんばればArduinoのHPからもとべます。
がんばれば。

でも未来の私には楽をしてほしいので、ちゃんと備忘録としてリンクはっとこ。
ここね。↓
http://www.ftdichip.com/FTDrivers.html

ドライバが2種類リンクされていて、どっちダウンロードするか分からなかったけれど、とりあえず上から、と思って「VCP Drivers」をダウンロードしてインストールしたけど、それでArduinoちゃん認識してくれるようになったよ!

めでたしめでたし。





Xcode4.2 for SnowLeopard

未だOSがSnowLeopardな私です。
そろそろXcodeをアップデートしたいな、と思ったわけですよ、わたくしも。
※Xcodeが3系のまま使ってましたw

Xcode4.2 for SnowLeopardが配信されとるよーという噂を聞きつけてですね。私もアップデートしようと思っているわけです。

んでね、4系のXcodeをダウンロードしようとおもったわけ。
しかしながら、(日頃からAppleさんからXcodeのダウンロードするボタンみつけんのめんどいなと思っていたけれども)、今回ばかりはみつからない!本気でぐぐってもみつかんない!!なんで!!!
AppleのDeveloperページに行って検索してもない。

まままさか…XcodeをAppleストアから配信するようにしてから過去のXcodeをすべて消したのかApple…?

LionにしろってかLionに。
でもこの夏に新しいOSでるし、今更買い替えるのもイヤ!
てか切り替えて早々また切り捨てられるんじゃないかっていう恐怖!

あっさりと過去のユーザを切り捨てるApple…
前々からそうでしたけど、たった2年で切り捨てられると思ってなかったよ…
(2年前にMac買ったひとです)

まあとりあえず私の力ではApple公式Developerページから探しきれなかった!

でもね!
きっとだれか配布してるだろうと思って、私、諦めず探したの…!
そしたらおったー!!くばってる人!

http://www.4shared.com/file/RlThO0b4/xcode_42_for_snow_leopard.html

探してみるものだなァ。
まだまだ現役だぜ、SnowLeopard!