【 位置情報まわりWebサービス 基礎知識4 】 位置情報を活用したプライベートサービス作り④ - DB/Table作成と確認、既存Tableへのカラム追加 -
前回は、cakePHPのDB設定をしたので、今回は実際に、DBを作っていきます。
いまいまはこんな感じです↓
設定しているのに無いやんけ!状態です。
① DB作成
では、CommandPromptを立ち上げて、MySQLに入ります。
前提:
1.1 rootでログイン
mysql -u root
1.2 データベース作成 (前回設定したdatabase.phpのdatabaseと同じものにすること)
mysql> create database database_meal;
1.3 データベースにパスワードを設定する
mysql> grant all on database_meal.* to dbuser@localhost identified by 'password_meal';
ふぅ、ここまででDBの作成終わりです。
次はtableです。
② Table作成
2.1 databaseを指定
mysql> use database_meal;
2.2 テーブル追加
mysql> create table posts ( id int not null auto_increment primary key, title varchar(256), body text, created datetime default null, modified datetime default null );
2.3 テーブルへダミーデータの追加
mysql> insert into posts (title, body, created, modified) values ('title 1', 'body 1', now(), now()), ('title 2', 'body 2', now(), now()), ('title 3', 'body 3', now(), now());
③ データを確認
3.1 table構成の確認
mysql> desc posts; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(256) | YES | | NULL | | | body | text | YES | | NULL | | | created | datetime | YES | | NULL | | | modified | datetime | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+
3.2 tableのContent確認
mysql> select * from posts; +----+---------+--------+---------------------+---------------------+ | id | title | body | created | modified | +----+---------+--------+---------------------+---------------------+ | 1 | title 1 | body 1 | YYYY-MM-DD HH:MM:SS | YYYY-MM-DD HH:MM:SS | | 2 | title 2 | body 2 | YYYY-MM-DD HH:MM:SS | YYYY-MM-DD HH:MM:SS | | 3 | title 3 | body 3 | YYYY-MM-DD HH:MM:SS | YYYY-MM-DD HH:MM:SS | +----+---------+--------+---------------------+---------------------+
ここで気づきました。
カラムが足りない!!!ので追加します。
【 位置情報まわりWebサービス 基礎知識3 】 位置情報を活用したプライベートサービス作り③ - CakePHP -
始まりましたね、なんでしたっけ、GW。
そう、ゴールデンワーキングなるもの!
この一週間でリファクタリングできるかが勝負です。
さて、短いスパンで書くということなので続きです。
今日は下の足場を作ります。
「作りたいもの」
Service1.美味しいものを投稿できるサービス
Service2.投稿した情報をあとで見返せるサービス
Service3.見返すときはスマホかなにかで現在地測位して近いお店を調べたい。
僕がやってしまったハマりポイントと共に覚書。
前回の投稿でXammpでローカルサーバー化したマシーンに、
「美味しいものを投稿できるサービス」を実装すべく、CakePHPを入れてみます。
これで、とりあえずは図1のように家の中でスマホ、PCから美味しい情報を見ることができます。
図1:イメージ図
1. CakePHPとは
概要:
CakePHPはPHP用の高速開発フレームワークです。アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。 MVC や ORM といった、よく知られているデザインパターンを、「設定より規約優先」の考え方で利用して、CakePHPは開発コストや開発者が書く必要のあるコードを減らします。(本家抜粋)
[本家URL]http://cakephp.jp/
簡単に言うと、学習コストと引き換えに、開発コストを抑えて、簡単にWebサービスが作れるフレームワークです。
自力でHTML,CSS,PHPガリガリでもいいのですが、特にやりたいことに色がない場合はこれで十分ですね。
逆にカスタマイズは学習コストが付きまといます。
2.CakePHPをインストール&設定
2.1 本家からインストーラをダウンロードして、インストールど~ん
インストール先は僕の場合Xammpのディレクトリ内でここにしました
C:\xampp\htdocs\blog
2.2 インストールしたままでは使えないので、設定します。
database.phpを作成
C:\xampp\htdocs\blog\app\Configにある
database.php.defaultを同じディレクトリにコピーして、
database.phpにrename ( <- これが実際に使われます )
database.phpを設定
このCakePHPは、Postgres, MySQL, etc 各種DBが使える優れもので、その設定をここでします。
自分用にこんな感じで★を書き換えます。
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'dbuser',
'password' => 'password_meal', ★ ご自由に
'database' => 'database_meal', ★ ご自由に
'prefix' => '',
'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
'encoding' => 'utf8',
);
}
さて、ここまでで大事な下準備は終わりです。
次回はMySQLでデータベースを作ってきます。
PS. 昨日チャリの後輪、パクられました。
よきGWをノシ
【 位置情報まわりWebサービス 基礎知識2 】 位置情報を活用したプライベートサービス作り② - XAMPPインストール -
2か月ぶりの更新です。
2か月間なにがあったは秘密です。
復習
「作りたいもの」
Service1.美味しいものを投稿できるサービス
Service2.投稿した情報をあとで見返せるサービス
Service3.見返すときはスマホかなにかで現在地測位して近いお店を調べたい。
◎サーバーを立てる
まず4年ほど連れ添ったDELLにXammpを入れます。
Xammpとは、、
概要:
XAMPP は最も人気のある PHP 開発環境です
XAMPP は、完全に無償で MySQL、PHP、および Perl を含んだ、簡単にインストールできる Apache ディストリビューションです。XAMPP オープン ソース パッケージは、インストールと利用が非常に簡単できるよう設定されています。
本家URL
https://www.apachefriends.org/jp/index.html
簡単に言うと、Webサーバー周りの開発環境がAllInOneされてて、GUI操作で簡単にDBとかHTTPのサーバー起動操作できっせというエンジニアにもその他の人にも強い味方君です!
1.1 では、Install!
インストール方法は以下を参考。わかりやすい!
http://techacademy.jp/magazine/1722
ハマりポイント①
Apache / MySQLSeverインストール時にPortがコンフリクトする場合がある
→Port解放(まれに解放してもキャッシュに残っている場合があるのでその場合は、一度再起動する)
現在起動しているportとexeの確認方法は以下です。
cmd から以下のcommandを実行
netstat -ab
例えばskypeはこんな感じででる。
このコマンド優秀ですね。
Installが無事終われば、Xammpを起動して以下のGUIが出現。
ここで赤枠2つをstartすれば、無事サーバーが立ちます。
1.2 最後に確認
ブラウザ起動
↓
「http://localhost/」にアクセス
↓
forwardされてXammpのロゴが見えたら成功です。
以上ではまたノシ
PS. 最近、時間がまとまって取れないので、小出しで頻度をあげながらまた書いていこうと思います^^;
【 位置情報まわりWebサービス 基礎知識1 】 位置情報を活用したプライベートサービス作り① - 背景、作りたいもの、触りたいもの、制約について
位置情報絡みが楽しくなってきてしまったので、画処理プロトは一旦お休みです。
前々回からGPSの話題を取り上げていますが、スマホのGPSのデータとかを他のリソースを組み合わせて、毎日がちょっと便利になるプライベートサービス作ったりできると楽しいんじゃないかということで、今回から連載します。
何を作るかとその背景。
まず「どんなものが欲しいか」という話。
↓
<<日常不便に思うことを解消したい>> ← これに尽きる
↓
例1.友達とおしゃべり中
友達「あの店美味しかったよ」
僕「へー!いいね!」
-> 忘れて終了
例2.休日に嫁と出かける。
僕「お昼だ、おなかすいた」
嫁「この辺美味しいお店あるの?」
僕「(あったかもなーでも)わかんない」
-> ゲームセット。
例3.美味しいものを食べたい時。
僕「美味しいお店、どこかにメモしたよな~」
-> 見つけるまで時間が掛かる or 見つからない。
↓
↓
↓
ということでこんなものを創りたいなと思います。
Service1.美味しいものを投稿できるサービス
Service2.投稿した情報をあとで見返せるサービス
Service3.見返すときはスマホかなにかで現在地測位して近いお店を調べたい。
触りたいもの
次に「何を触ってみたいか」という話。
つまるところ、最近勉強してみたかったことを取り上げます。
ざっくばらんに以下。
・Webサーバー
・HTML5
・JS
・PHP
・Database
・GPS API
・マルチプラットフォーム
「なるほど!じゃあ、レンタルサーバーか自宅PCでXAMMPかなんかでWebサーバーを立てて、サービス作ればいいんですね!」
とは行きません。
制約
制約1)金銭面:微塵もお金を掛けたくない。
制約2)安全面:自宅ルータのポート解放をしたくない。
制約3)作業面:できれば楽したい。
わがまま。。
では次回以降、実際にサービスを立ち上げていきます。
今日は以上!
【 GPS 基礎知識 2】 GPS LOGGERについてより詳しく-NMEAフォーマットについて
前回のGPSの投稿でさらっと流していたformatConvertでしたが、
理解を深めるためにGPSのフォーマットについて調べてみました。
前回はNMEAフォーマットをKMLフォーマットに変換しました。
一部を取り出すとこんな具合
[NMEA]
$GPRMC,044954.810,A,[A],N,[B],E,009.1,335.2,060215,,,A*6D
[KML]
<Document>
<name>GPS device</name>
<snippet>Created 木 2 12 00:42:37 2015</snippet>
<LookAt>
<gx:TimeSpan>
<begin>2015-02-06T04:49:54.810Z</begin>
<end>2015-02-06T04:49:54.810Z</end>
</gx:TimeSpan>
<longitude>[X]</longitude>
<latitude>[Y]</latitude>
<range>1300.000000</range>
・・・
※[A], [B], [X], [Y]は適当な数
何がどこに対応しているかという話ですが、[NMEA]のフォーマットから以下の通りのようです。
NMEAフォーマット
- NMEA 0183 (略してNMEAとも)は、音波探査機、ソナー、風速計(風向風速計)、ジャイロコンパス、自動操舵装置(オートパイロット)、GPS受信機、その他数々の機器のような海上電子装置における、電気的・データを合わせた仕様である。 これは米国に本拠を置く米国海洋電子機器協会により規定され管理されてきた。( 参照:wikipediaより )
- ","区切りで左から順位意味が決まっている
- 改行コードセンテンス区切り
- Messageによって取得できる情報が異なる(よく目にするのは $GPRMC Message )
- [ $GPRMC Message ] の場合、左から、
+ UTC時間(hhmmss.ss), ---> 044954.810
+ ステータス(A=有効、V=警告), ---> A
+ 緯度情報, ---> [A]
+ 北極N or 南極S, ---> N
+ 経度情報, ---> [B]
+ 東経E or 西経W, ---> E
+ 地表における移動速度, ---> 009.1
+ 地表における移動の真方位, ---> 335.2
+ 磁北と真北の間の角度の差, ---> x
+ 磁北と真北の間の角度の差の方向, ---> x
+モード, N = データなし,
A = Autonomous(自律方式),
D = Differential(干渉測位方式), E = Estimated(推定), ---> x
+ チェックサム, ---> A*6D
以上がkmlに変換されてgooglemapのマイマップに食わせることができるようになります。
まぁ必要情報だけ取り出して、別の地図情報にマッピングするのもアリですね。
その他のメッセージも興味ある人は以下が詳しいです。私も参考にさせて頂きました。
http://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html
http://www7.ocn.ne.jp/~mackey/mackey/navitra/nmea.html
今日は以上!
【 GPS 基礎知識 1 】 GPS LOGGER作成! -準備から所感まで-
今回はひさしぶりに新しいものを動かしたので、カキカキ。
今回は、GPS信号を受信してみました。
GPSとは、、
グローバル・ポジショニング・システム(Global Positioning System, GPS, 全地球測位網)は、アメリカ合衆国によって運用される衛星測位システム(地球上の現在位置を測定するためのシステムのこと)を指す。
(参照wikipedia)
- GPS測位技術には、単独式やら時差式やらいろいろあるけど、有名どころは3点測位(緯度、経度まで測定するもの)
- 精度向上には、A-GPS等。(たしか、これは今は端末側のプロッセサ向上で、クライアント処理のハズ)
さてさて、で今回は、GPS受信!
宇宙飛んでる衛星の情報を無料で引っ張ってこれるってのは、ほんとすごいことだと思います。
今回のGPSレシーバーはGT-720F !
こんなやつです。
①準備:
- mbed NXP LPC1768
- GT-720F
- ブレッドボード
- 配線
②やったこと:
・mbedにGT-720Fを接続
mbedとGT-720F間の配線はこんな感じ。
↓
|mbed | --- |GT-720F|
---------------------
|GND | --- | pin 1 |
|VOUT | --- | pin 2 |
|p10 | --- | pin 6 | (受信 micon level)
↓
GT-720Fでログを収集 (ここらへんの実装コードは世の中に溢れているので割愛)
↓
ログ変換
NMEA 0183 sentences -> [convert] -> Google Earth Markup Language
↓
Google Earthで展開して確認!
③結果:
家の中から測定。
・画像は諸事情により寄り画ですが、誤差5m以内ってとこですかね。
屋内なのになかなか優秀でびっくり!
・スマホの場合、GPSレシーバーとキャリアのアクセスポイントからのDual位置測位で精度を担保しているはずで、単体では全然だめかと思っていたけど、GPSレシーバーのみでも割と使えそう。
④所感:
- 使いやすい。
- 誤差はまぁ遊びレベルなら申し分ないかな。
今日は以上!