はじめてのIntelliJ IDEA

年末に75パーセントOFFセールってのがやってたので、IntelliJを購入したのですが、 年末年始はゴロゴロしてて、結局何もいじりませんでした。笑   とりあえず年明けってことで、リハビリも兼ねてコード書きながら、使ってみたいと思います。   Mavenなプロジェクトもサクっと作れますし、   pom.xmlとか見やすいですね。   Show Diagramとか、おぉって思いますし、   クラスのアウトラインをイイ感じに表示してくれて、 Download Sourcesってリンク押せばソース落としてきてくれるし。   ショートカットがEclipseでF3だったのが、Ctrl+Bとかだったり、 ちょっと違いはあったりしますが、まぁおいおい慣れるでしょう。   んで、さっそく、ちょっとしたコード書いてみます。 td-logger-java(https://github.com/treasure-data/td-logger-java)という ライブラリを使って 昨年試して放ったらかしてるTreasureData にデータを入れてみます。   ↓APIのキーを取得して

C:>td apikey
APIを叩くKEYが表示される

↓のようなコード書いてみました。

// プロキシ用。ソース追ってくとHttpURLConnectionで~って感じだったので。
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost","hoge-proxy.shinodogg.com");
System.setProperty("http.proxyPort","9999");
// Treasure Dataにデータをストアする用
System.setProperty(Config.TD_LOGGER_AGENTMODE, "false");
System.setProperty(Config.TD_LOGGER_API_KEY, APIのキー);
// トレジャーデータのロガーのインスタンス作ってグルグル回してログはいてみる
TreasureDataLogger logger = TreasureDataLogger.getLogger("my_database");
Map data = new HashMap();
for (int i = 0; i < 10000; i++) {
  data.put("i", i);
  data.put("user", "user" + i);
  data.put("hage", "hage" + i);
  logger.log("hoge", data);
}
// キューイングして~って形になってるので処理が終わったら閉じる
logger.close();

  ってかIntelliJの Local History は半端ねぇっすなー…。    実装の話にちょっと戻ると、HttpSenderを使ったロギングは、 HttpSenderThreadって別スレッドなアレでキューに溜め込んで一定間隔でオリャってして送ってる感じ。 なので README.md にも書いてありますが、例えばWebアプリケーションを入れ替えて 再起動する時とか溜まってる分をフラッシュして吐き出してやらないとみたいです。   JavaVMって終了する時になんか拾えたりすんのかな?って思ったら、 シャットダウンフックってのがあるみたいだけど↓ Design of the Shutdown Hooks API ↓とか読んでるとそれに頼った実装もどうなの?って感じなのかな~。  #9 Backyard: Behavior of Java ShutdownHook for POSIX Signals or Stop Operations   そんなこと考えながらググってたら、 ↓こういう地に足ついた感じのエントリーとかナイスだなぁと思いました。 fluent-agent-lite と td-agent で、小さくはじめる fluentd - studio3104::Blog   んま、そんなこんなで、上記のクラスをとりあえず2回ほど叩いてみると、 ↓データ入ってるっぽいです。

C:>td table:list my_database
+-------------+-------+------+-------+--------+
| Database    | Table | Type | Count | Schema |
+-------------+-------+------+-------+--------+
| my_database | hoge  | log  | 20000 |        |
+-------------+-------+------+-------+--------+
1 row in set

クエリ投げてみると↓のようにjob:showみてねんって事なので、

C:>td query -d my_database "select * from hoge"
Job 1484626 is queued.
Use 'td job:show 1484626' to show the status.

↓叩いたらブワって出てきてエラいこっちゃー。笑  

C:>td job:show 1484626
Organization :
JobID        : 1484626
Status       : success
Type         : hive
Priority     : NORMAL
Result       :
Database     : my_database
Query        : select * from hoge
Result       :
+----------------------------------------------------------------------+------------+
| v                                                                    | time       |
+----------------------------------------------------------------------+------------+
| {"time":"1357883838","i":"0","user":"user0","hage":"hage0"}          | 1357883838 |
| {"time":"1357883838","i":"1","user":"user1","hage":"hage1"}          | 1357883838 |
| {"time":"1357883838","i":"2","user":"user2","hage":"hage2"}          | 1357883838 |
| {"time":"1357883838","i":"3","user":"user3","hage":"hage3"}          | 1357883838 |
| {"time":"1357883838","i":"4","user":"user4","hage":"hage4"}          | 1357883838 |
| {"time":"1357883838","i":"5","user":"user5","hage":"hage5"}          | 1357883838 |
| {"time":"1357883838","i":"6","user":"user6","hage":"hage6"}          | 1357883838 |
| {"time":"1357883838","i":"7","user":"user7","hage":"hage7"}          | 1357883838 |
| {"time":"1357883838","i":"8","user":"user8","hage":"hage8"}          | 1357883838 |
| {"time":"1357883838","i":"9","user":"user9","hage":"hage9"}          | 1357883838 |
| {"time":"1357883838","i":"10","user":"user10","hage":"hage10"}       | 1357883838 |
~略~

 

Effective Java 第2版 (The Java Series)
Joshua Bloch
ピアソンエデュケーション
売り上げランキング: 6,279