Gws 20140117 lt

468 views
328 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
468
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Gws 20140117 lt

  1. 1. G*ワークショップZ 2014新春LT大会 『Vert.xで何か作ってみた』 2014.1.17 須江信洋(@nobusue) http://d.hatena.ne.jp/nobusue https://www.facebook.com/nobuhiro.sue
  2. 2. 自己紹介 須江 信洋(すえ のぶひろ)    Twitter: @nobusue https://www.facebook.com/nobuhiro.sue  約10年ほどJavaEE関連の仕事をしてます 2013年10月よりフリーランス(個人事業主)  G*(Groovy関連技術)との関わり     2 JGGUGサポートスタッフ 「プログラミングGROOVY」執筆チーム 「Groovy イン・アクション」翻訳チーム
  3. 3. 憶えてますか? G*ワークショップZ Vert.xハンズオン w/ CRaSH 2013.10.18 (10.20 updated) 須江信洋(@nobusue) http://d.hatena.ne.jp/nobusue https://www.facebook.com/nobuhiro.sue 3
  4. 4. 使わないと忘れちゃうよね・・・ ということで、作ってみました  Vert.x WebTail (仮称)    4 WebSocketとNIO2でブラウザにtail –f node.jsではポピュラーなネタらしい  でも、なんちゃってtail(内部でtail –fコマンド実 行)ばっか・・・・
  5. 5. 動機 Windowsでも tail-f 使いたい!!! 5
  6. 6. こんなの作ってみた WebSocket ブラウザ socket ファイル Verticle polling NIO2の SeekableByteChannelで ファイル末尾を読み込み Vert.x Runtime(JVM) 6
  7. 7. WebTail.groovy (WebSocket) def eb = vertx.eventBus vertx.createHttpServer().websocketHandler { ws -> eb.registerHandler("update", { message -> ws.writeTextFrame(message.body()) }) }.requestHandler { req -> if (req.uri == "/") req.response.sendFile “console.html" }.listen(8080) 7
  8. 8. WebTail.groovy (tail部分抜粋) def timerID = vertx.setPeriodic(1000) { timerID -> size = sbc.size() def sb = new StringBuilder() if( size > lastsize ) { while(sbc.read(buf) > 0) { buf.flip() sb << Charset.forName(encoding).decode(buf).toString() } print sb eb.publish("update", sb.toString()) } else if ( size < lastsize ) { 8
  9. 9. サンプルコード GitHubに置いてあります  https://github.com/nob usue/vertx-webtail 「とりあえず動く」レベルの 実装なので、改造歓迎 9
  10. 10. 今後の野望 割と簡単にtail –fができたので満足  いろいろ拡張したい     ElasticSearch対応   ポーリング ⇒ Java7のWatchService メッセージ変換 ⇒ JSONなど JSON変換してREST APIで投入すればいけそう td-agentの代替  10 大人の事情でRuby系がNGな環境で・・・
  11. 11. ありがとうございました https://www.facebook.com/orehiji 11

×