oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

fluentd + BigQuery pluginを利用する時に認証処理で「invalid_grant」エラーになる時の対処

結論から言うと、システム時間を確認しましょう。

環境はDocker上のfluentdで

2014-10-02 06:31:47 +0900 [error]: unexpected error error_class=Signet::AuthorizationError error=#<Signet::AuthorizationError: Authorization failed.  Server message:
{
  "error" : "invalid_grant"
}>

というエラーが出て起動出来なかった。でも認証情報は合っているし、GoogleDeveloperConsleで見てもAPIの許可とかはしている。で調べて見ると
https://github.com/abronte/BigQuery
にも記載があるが

Troubleshooting

If you're getting an "invalid_grant" error it usually means your system clock is off.

If you're getting unauthorized requested but you've been able to successfully connect before, you need to refresh your auth by running the "refresh_auth" method.

なので、Doker上の時間を確認するとズレまくっていた。とりあえず

ntpdate -q ntp.nict.jp

を実行して時間を合わせたらフツーに起動出来た。

という訳でDokerを使う場合は時間の確認もちゃんとしましょう。
http://stackoverflow.com/questions/24551592/how-to-make-sure-dockers-time-syncs-with-that-of-the-host
に書いてるように

docker run -v /etc/localtime:/etc/localtime:ro -i -t mattdm/fedora /bin/bash

とかでrunさせるのがベストプラクティスなんですかね。

AndroidでGoogle Maps API v2を叩く時に地図が表示されない時に確認する設定

ハマったのでメモ。環境はAndroid Studio使った。改めてググって見ると
http://9ensan.com/blog/smartphone/android/google-maps-android-api-v2-sample/
の解説が一番丁寧でこの通りになっていれば出来る。

Activityは表示れているっぽいけど、画面が真っ白になっているときは
http://stackoverflow.com/questions/17491400/failed-to-load-map-error-contacting-google-servers-issue-with-android-google-ma
とかで書かれているけど、Logcatに

Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method glt.a

とかのログが出ているので、その場合にでAndroidManifest.xml

使いまわす場合は
Android applications
    Any application allowed
とかになっているか

などの確認をして問題が無いか確認しましょう。このエラーログでググるとstack overflowでヒットしまくるので、みんなもドハマりしている様ですね。

あと若干別件だが、build.gradeに

    compile 'com.google.android.gms:play-services:+'

って書くと端末側がGooglePlayサービスのアップデートをしようとするけど何故かアップデート出来なくて永久にアプリちゃんと起動出来ない問題があったので、

    compile 'com.google.android.gms:play-services:5.0.89'

って明示的にVer書いたら問題が出なくなったのもあった。

Android学習メモ-5

今研修で書いた糞コードをgithubにあげた。
https://github.com/oranie/AndroidStudy

コード自体は本を写経しているものが大半だけど、自分のあんちょこにはなるのでいいメモになる。
動くプロジェクトで見れるのが一番やね。(一部ビルド通らないヤツやまともに動いていないやつもあると思うけど)
現時点ではFragmentがほんとよーわからん。UI・描画周りがほんとダメダメ。思った通りのレイアウトが全然組めない。
データ操作はまあ簡単なやつしかやっていないので一応詰まりはなし。
やったけど
・adapter
・ListView
この辺はもう忘れている感ある。
なんだかんだ言って写経しただけのコードでもそれで実機が操作出来るのは嬉しいね。この辺はスマフォアプリの魅力。
Java自体はとりあえずIDEの力を存分に借りてなんとかってレベル。ただ、IDEのがエラー出している理由や補完候補に出しているものの理由を把握できていないので、Java力というよりEclipseにちょっと慣れた程度。写経力は向上した。

AndroidOpenTextbookが大変助かるというお話

Android初心者としてあるあるパターンの事としてはオフィシャルリファレンス
http://developer.android.com/reference/packages.html
を読んでも

  • それをどうやって呼び出すか
  • 中でどんな事すれば良いのか
  • そもそも英語が・・・

とかに良く行き着くわけですね。全体をまだ良くわかっていないから。例えばなんかのクラス使う時にhogeオブジェクト渡せとか書いているけど、これそもそもどこで作るんや?とか。なので一連の流れでどうやれば良いかというのが結構知りたい訳なんです。

で、色々サイト見たり本見たり社内のソース読んだりとかもしたけど、一番見たい「解説されている部分が最小限書かれていて動くプロジェクト」のソースを読みたいけど、本とかブログとかは結構特定部分のソースだけだったりする訳ですよ。まあここは対象としている人がそもそもJavaAndroidある程度分かっている解説とかならまあそうだよね、という感じですが。で、社内のソースはプロダクトのソースなので知りたい事以外の処理がてんこ盛りなので、今の僕だとこんがらがっちゃう訳です。まだ切り分け出来ていないので。

Twitterであー良く分からないービルド通らないー動かないー落ちたーとかワーワーやっていたら

を教えてもらいました。
https://github.com/TechBooster/AndroidOpenTextbook

全てを網羅している訳ではまだ無いけど、今後続々と充実して貰えると大変俺得です。今詰まっていたネットワーク通信(HTTPでGETするだけレベル)解説部分のサンプルソースがプロジェクトごと入っていたので大変助かりました。文章の方も画像もありコードを1行ずつ解説して貰えて細かく解説しているので大変助かりました。Android Studioだとそのままimportするだけでサンプルコードは動きました。
文章を生成するのが今はMacの手法しか書いていないので、まあMacで作ってWindowsで読めば良いんじゃないでしょうか。nodeとかでやっているからLinuxでも生成処理は動くのかな?依存しているライブラリとかまだ分かっていないので適当です。

こちらからは以上です。

【チラ裏】Android学習メモ-4

とりあえず入門書読んでからインターフェイス作ってMySQL操作クラスとRedis操作クラス作ったりしてfor文回して実行したりとかやったので、一旦Androidに戻ってみた。で、Javaの基礎文法の所はまあ・・・って感じになったけど、Android特有の所でやっぱりつまづきまくる。というか、はじめの頃Javaも分からんのに「まあなんとかなるかな?」と思ってよく手を出したな。アホかオレ。とりあえず入門書を一冊読みきってAndroid特有の考えとか用語に馴染みきっていないので、リファレンス本を追加購入しようと思う。オフィシャルのリファレンスだけでは無理。英語も分からんし。細かい所が全く理解できない。なので、また一冊読んでJavaの本をまた読みなおしてもう一度かな。

【チラ裏】Android学習メモ-3

Android学習とか書いておきながらこの3日間くらいはJavaの入門書をずっと読んでいた。今日はとりあえず車クラスとかやっていてもわけわからんので、馴染みのある題材としてMySQLに接続してデータ取ったりぶっ込んだりを書いた。とりあえずmainとそれ以外のクラスを分けて書いたり、コンストラクト書いたりメソッド書いたりインターフェイス書いてみたりをやった。syntax error出まくっては止まって・・なので、そもそもの理解の低さが再確認出来て良かった。明日はRedisとか他のデータストアとの接続・操作クラスを作成してその流れで抽象化やオーバーライドとかをやってみようと思う。

サーバ/インフラエンジニア養成読本「ログ収集〜可視化編」を頂きました!

改めて著者の方々と実際に僕に本を送付する手配をして頂いた@yoshi_kenさん本当にありがとうございます。


社内の他のエンジニアが「本頂きました!^^」とかのツイートをしている*1のを見る度に「ブルジョワが!( ゚д゚)、ペッ」とか思っていたらついに僕も貰える時が来るなんて・・・。もう二度とこんな機会はこなさそうなので、保存版として額に入れておこうかと思いましたが、せっかくなので読んでみました。

特集1「ログ解析から始めるサービス改善」

ここではまず「なぜログ解析をする必要があるのか?」「何のためにそもそもやるの?」という事が分かりやすく書かれているかなと思います。特にログは大規模であれば膨大な量や情報を抱える為、やみくもに「これも取ってみよう」「あれも計測してみよう」という事をやっても結局「そもそもなんでこれ必要なんだっけ?」で終わるパターンもあるので、まずここを読んで自分に必要な事を再認識する事が必要ですね。その中であるケーススタディを用い解析するにはどのようにするのか、という一連の流れが書かれていて分かりやすいと思います。

特集2「ログ収集ミドルウェアfluentd徹底攻略」

ここでは実際にログ収集をするために、fluentdを用いて収集する方法を具体的に解説しています。fluentdはだいぶオフィシャルサイトや個人ブログ、技評さんの本でも特集が組まれていたりでだいぶ情報が増えていますが、いかんせんfluentdは本体とプラグインの開発が非常に活発なので、1年前の情報が今ではもう・・・みたいな状況になっている部分もある可能性があり、そういう意味では2014年時点で最新のガイドになっているのでは無いでしょうか。
特に誰もが欲しかった「fluentd プラグイン逆引きガイド」を書いてくれているのはありがたいと思います。これで「こんな情報楽に取れないかな」「途中で楽に加工とか出来ないかな」「ここにデータをストアしたいけど出来るのかな」とかの悩みが減るんじゃないでしょうか。
もちろんそれ以外にも基礎的な使い方や、実際によく使うミドルウェアを用いた例、どうやって運用するか、fluentd自体の監視などのきめ細かい内容が書かれている為、fluentdを今使っている人でも読んでおくと色々参考になる情報が多かったです。

特集3「Elasticsearch入門」

fluentd使い始めの頃は「ログを収集してMongoDBに入れる・・・ログを収集してMongoDBに入れる・・・」というのが割りと一般的だった気がしますが、それを可視化する上での手法やMongoDBのキャパシティ的な問題(capped collection使うレベルに収める方が良いというベストプラクティス)やそれをどう検索して必要な情報だけ取得するかなど色々ケアしなければ事があった気がしますが、今はそこをElasticsearchでやる事で、可視化やキャパシティ(まあデータ入れすぎると結局同じ問題出るけど)やストアしたデータへの検索などを解決しているのが主流な感じですね。で、そのElasticsearch自体を解説している章になっています。これを読むとElasticsearch自体のアーキテクチャやどのようにデータ格納すべきか、またどのようにデータを検索すべきか等がわかりやすく記述されていると思います。気になる運用周りやプラグインの紹介もあるので導入する時にまず読んでおくと良いんじゃないでしょうか。入門編なのであれですが、個人的にはJVM周りのチューニングヒントとかelasticsearch.yaml周りの解説、バックアップ・リカバリ、データサイズやリクエスト数によるスペック見積もり等もあると嬉しかったです。

特集4「可視化ツールKibanaスタートガイド」

Kibana自体の日本語のドキュメントとかは余り無く、実際にどのように設定すればどのようなグラフになるのか?という事が非常に分かりやすく解説されていると思います。Kibanaをとりあえずインストールしてみても「これ・・・どこをどういじればいいの・・・?」ってなりがちだったんですが、この特集で分かりやすく記述されているので、Elasticsearchにさえ入っていればもう可視化なんて簡単!という感じなんじゃないでしょうか。個人的には同僚が作ったKibanaで、複数人で更新が頻繁に入るダッシュボードを見るとElasticsearchが悲鳴を上げたりした経験があったので、nginxの分散時にキャッシュの設定だったりとかの参考例まで入っていると嬉しかったです。Elasticsearch自体の負荷が参照によって高まっているとfluentdからの書き込みにも影響が出る可能性があるので。


という訳であーだー勝手な事書きましたが、是非オススメな本なのでみんな買うと良いですよ。

*1:主にid:namikawaさんとか