ヘビィ・SMD! -10ページ目

ヘビィ・SMD!

そんな・・・バナナ!!
1. 甘え度+10 恐れ度+10 寿命-1週間
2. 甘え度+10 恐れ度-10
3. 甘え度-10 恐れ度-10 寿命+1週間

「○○案件の本番DBの中身ってさ、一体今どれくらいレコード詰まってるんだろうね?一覧でわかったりしない?」

部長に言われたが、即答は出来なかったので調べてみた。
「各テーブルのレコード数を個別に」確認するには
SELECT COUNT(*) FROM テーブル名;
とすればいい、というのは誰もが知っている事実。
でも今は「全てのテーブルのレコード件数が知りたい」のである。

まずは結論から。
こうすれば良い。
/** SELECT T2.relname , T2.reltuples FROM pg_stat_user_tables AS T1 INNER JOIN pg_class AS T2 ON T1.relname = T2.relname ORDER BY T2.relname; **/


システムテーブル(ビューか?)pg_stat_user_tablesとpg_classを使っている。
それぞれの詳しい説明はドキュメントを詳しく読んで下さい。

pg_stat_user_tablesを使う事で、ユーザーが作成したテーブルのみを対象としている。
これを指定していないとシステムテーブルとかが結果に入ってきて見にくくなるからね。

ひとつ注意すべき点は、reltuplesが
Number of rows in the table. This is only an estimate used by the planner. It is updated by VACUUM, ANALYZE, and a few DDL commands such as CREATE INDEX
つまり、「だいたいの数値であって正しいとは限らないぜ」ってトコ。
正確な数値が必要な場合は別の対処法をとる必要がありますが、今回は大体でよかったのでコレデヨシ。

今週は玉ねぎをたっぷり使ったカレーを作ろうとおもいます。
push通知。android端末のpush通知はC2DM。
アプリケーションの更新通知とかLINEの通知とか、ああいうところで利用されている。(という認識です)

仕事で作っているアプリにもこの機能は是非入れた方が良い!
と、導入を検討して使い方を見ようとしました。すると
ヘビィ・SMD!-gcm_01.png
C2DMはデプリケートされるから、新しいサービスGoogle Cloud Messaging (GCM) を今後使ってね!ということらしい。
ということで、GCMを使ってみることにした。

http://developer.android.com/intl/ja/guide/google/gcm/index.html
ヘビィ・SMD!-gcm_02.png
クラウドっぽく雲の画像。そのままですね。

Getting Startedをクリックすると
ヘビィ・SMD!-gcm_03.png
まずはプロジェクトを作れとのこと。
指示通りOpen the Google APIs Console page.に進む。
ヘビィ・SMD!-gcm_04.png
createしてやります。指示通り進めると
ヘビィ・SMD!-gcm_05.png
サービス一覧の画面。当然まだ何もしていないので全てが無効になっている。
「Google Cloud Messaging for Android」のoffをクリックすると
ヘビィ・SMD!-gcm_06.png
なにか聞かれるのでacceptします。自己責任でどうぞ。
ヘビィ・SMD!-gcm_07.png
「Google Cloud Messaging for Android」のトグルがonに切り替わりました。

GCMを利用するためには
- SENDER_ID
- API key
が必要とのこと。

SENDER_IDは、Google Apisの管理コンソールのURLで
「 https://code.google.com/apis/console/#project:1*********6 」のprojectの後の文字列のことらしいです。
そしてAPI keyは、左メニューの「API Access」で発行する必要があります。
「Create new Server key...」をクリックすると
ヘビィ・SMD!-gcm_08.png
IPの制限が出来るようですが何もせずにcreateでやってみます。
ヘビィ・SMD!-gcm_09.png
「Key for server apps (with IP locking)」が追加されました。
ここのAPI keyを利用します。

これで申請系は終わり。

次は実際にアプリを作ってみます。
と言っても、googleがデモアプリを用意してくれているのでこれを利用するだけです。

僕はいつもeclipseからSDK Managerを利用していますが、更新をほぼせずに使ってきていたため
「Google Cloud Messaging for Android Library」の項目が出てきませんでした。
とりあえずインストール可能なものをインストールし、「ヘルプ」->「更新の確認」からandroid関連のパッケージを更新したところ、上記項目が出てくるようになりました。

「Google Cloud Messaging for Android Library」をインストールすると
SDK_ROOT/extras/google/gcm
のディレクトリが作成されます。この中にgcmのjarや、demo用のソース一式などが詰まっています。
samples/gcm-demo-client 一式をeclipseで読み込むだけで動きます。

僕は「とりあえず最小で動くものをとりあえず動かしてみたい、とりあえずね。」のポリシーのもと、
このデモソースから色々と削り取ったソースをgistに上げておきました。
見たい方はこちらから -> https://gist.github.com/3793180

サードパーティのID登録/解除用URLに、gcm-demo-serverを使ってやればいいのでしょうが、面倒だったので超簡易的なjspを用意することにしました。
/** スクリプトが読み込めないためコード非表示 **/


サーバにregistration_idを送信し、そのID内容を把握できれば後はpushを利用するだけです。

これまたデモを使えばいいのに面倒な僕は、クライアントからデータ送信要求ができるツールを用意しました。
/** スクリプトが読み込めないためコード非表示 **/

なお、HttpClient4のjar群が必要になります。
あんまりHttpClient4のサンプルってないね。ちなみにこのコードはwikiのquickstart( http://wiki.apache.org/HttpComponents/QuickStart )を参考に作成しています。


このpost要求を作成するにあたり、 http://d.hatena.ne.jp/azukinohiroki/20120628/1340868610 を参考にさせて頂きました。
本当に助かりました。ありがとうございます。


最後に、使ってみます。
クライアントアプリを起動し、pushを起動すると。
ヘビィ・SMD!-gcm_ex_01.png ヘビィ・SMD!-gcm_ex_02.png
こんな感じ。
クライアントアプリを終了している場合は通知領域への通知のみとなります。

後半駆け足で書いちゃった。そのうち補足修正するかも。
以上。皆さんの参考になれば。
処方されたもの

ハイチオール錠80 1回1錠 1日2錠 30日分
シナール配合錠 1回2錠 1日4錠 30日分
トラネキサム酸錠250mg 1回2錠 1日4錠 30日分
タリオン錠10mg 1回1錠 1日2錠 14日分

3年苦しめられた謎喘息と似た症状が発動。
でもお医者さんには「以前出されていたお薬をいきなり出すのはよしとこう」とのこと。

むぐぅ。