<< 6月 2010 | Home | 8月 2010 >>

JRockit JVM 技術セミナーに行きました

先週木曜日の話ですが、Oracleのさとうなおきさんが開催してくださった JRockit のセミナーに参加いたしました。
緊急開催! JRockit開発者が語る Oracle JRockit JVM 技術セミナー : ATND

Appeal Virtual Machines(後にBEAに買収され、BEAがOracleに買収される)時代から在籍しているという Marcus Hirt さんが来日ということで開催されたセミナーです。

・参加の目的
目的はもちろん最新の JRockit に搭載されたフライトレコーダー機能!
JRockit はもともと JRA と呼ばれる競馬関係の何かとまちがえそうなオンラインVM解析機能や、さらにそれを洗練させた JRocikt Misson Control という機能が内蔵されていました。
フライトレコーダーはその名の通り、JRockit Misson Control を発展させ、オフラインで後からでも解析できるというすばらしい機能です。

・所感
デモを見てみましたが、VisualVMとMemoryAnalyzerの良いところを足してかっこいい見栄えにした感じと言えば良いでしょうか。
一言で言うと「おぉ!良い感じ」

これまでメモリリークの解析にはヒープダンプと Memory Aanalyzer が標準的?な解析方法だったと思いますが問題が2点ありました。
1点はヒープダンプの取得はとても重く、運用環境での取得が難しい場合があること。もう1点はリークしているインスタンスをどのクラスローダを保持しているか見極められない事です。
フライトレコーダーはオンラインでもオフラインでも非常に軽くヒープ内の解析が行えること、またクラスローダ別に解析できることでこの2つの問題を見事にクリアしています。
まさに Memory Analyzer / 侍 いらずといえるでしょうか?

・侍は本当にもういらない?
ただ、フライトレコーダーではスタックトレースの解析やオブジェクトのロック関係の解析は行えないそうなので、この点に関してだけ言えば侍の使い道もまだあると言えそうです。
JConsoleのプラグインに対応していたり、Swing-SWTのブリッジライブラリを使っているそうなので Swing ベースの侍を統合するのも難しくないはず、やろうぜやろうぜ!という話になりました。

・OpenJDK + JRockit = ?
大人げなく「オープンソース化(OpenJDKとの統合?)の予定はないのか?」と質問したところ、議論はあったそうですが今のところ予定はないそうです。ただ、フレームワーク部分や GCのアルゴリズムなどは OpenJDK との統合もありえなくもないそうなので、今後の動向が気になるところです。

・OTNライセンス万歳
JRockit Misson Control は以前、評価ライセンスだと VM 起動後一時間であれば利用できる(再起動すれば何度でも使える)というむず痒い仕様でした。つまり、簡単に再現できる現象であればホイホイ使えるけれども運用環境で使いたければ WebLogic を買いましょうということです。
ところが、Oracle に買収されたことで製品の評価ライセンスが一律 OTN ライセンスという形態に統一されました。
WebLogic の接続IPアドレス数制限は撤廃され、なんと JRockit Misson Control も時間制限なく使えるようになったそうです。(これはセミナー話された内容ではなく後で中の人に聞いた話です)
つまり VM に依存しない現象であればさくっと JRockit をインストールして試験してしまえば良いわけです(、よね?)
ただ運用環境での利用はだめですよ。以前は at your own risk であれば使えた気がするのですが・・・。

・飲み
セミナーの後は元同僚やOracleの人、そして Marcusと飲みに行きました。席の配置からあまり Marcus とは話せませんでしたが、侍で今後コラボできたら面白いかな?と思っています。

以上セミナーレポートでした。

関連記事・ブログ:
メモリリークトラブルシューティング記 - その5: Memory Analyzer でヒープダンプを解析(最終回) - 侍ズム
緊急開催! JRockit開発者が語る Oracle JRockit JVM 技術セミナー (7/22) - S/N Ratio (by SATO Naoki)
Togetter - 「緊急開催! JRockit開発者が語る Oracle JRockit JVM 技術セミナー」
Marcus Hirt's Blog

タグ :
このエントリーをはてなブックマークに追加   

Google App Engine 上のアプリからの Twitter API へのアクセスが不安定


現在 Google App Engine 上のアプリからの Twitter API へのアクセスが不安定になっています。


Twitter4Jのメーリングリストで話題になっているのですが、これはTwitter4J 固有の問題ではなく、Google App Engine から Twitter API へ異常な負荷があったため GAE のネットワークからの接続を Twitter サイドから一部遮断したために発生している現象だそうです。
現在 Twitter のチームで対策を考えているそうですが、問題解決の時期などは提示されていません。
Google App Engine に Twitter API を使ったアプリケーションをデプロイしている方はご注意ください。
詳しくは以下のスレッドをご参照ください(英語)。

- Not able to connect to twitter API from Google Appengine
- Server-side OAuth Authorized instance preventing me from calling any methods

このエントリーをはてなブックマークに追加   

Twitter4J 2.1.3 リリース - YFrog/TwitPic, UserStream をサポート

Twitter API の Java バインディングライブラリ、Twitter4J の最新版をリリースしました。
http://twitter4j.org/


最新のAPIセットを実装しています。
Maven Central Repository にも入っています。

現在はバージョン 2.1.4 を開発中です。スナップショットビルドの公開時など、最新情報は @t4j_news で配信しています。
Follow t4j_news on Twitter

バージョン 2.0.x から 2.1.x への移行
twitter4j 2.1.3 JavaDoc
自前 maven repository
snapshot ビルドをプロジェクトで利用する方法
サポートAPIリスト

Release Notes - Twitter4J - Version 2.1.3

Bug

  • [TFJ-326] - xAuth: setOAuthConsumer() fails with IllegalStateException if the instance is Basic auth'ed
  • [TFJ-338] - getIncomingFriendship() / getOutgoingFriendship() are not checking credentials availability
  • [TFJ-341] - StackOverFlowError at RequestToken.hashCode()
  • [TFJ-342] - Streaming API: wait time for TCP level error is always initialized to 250ms
  • [TFJ-346] - java.lang.IllegalStateException with httpclient-support
  • [TFJ-347] - StatusUpdate#setInReplyToStatusId() is not functioning
  • [TFJ-348] - JSONObject["created_at"] not found.
  • [TFJ-356] - typo in reportSpam method
  • [TFJ-357] - NoSuchMethodError with Log4J 1.2.16
  • [TFJ-369] - httpclient connection closing still not quite right

Improvement

  • [TFJ-349] - JSONObject["created_at"] not found.
  • [TFJ-355] - make PagableResponseList mocking test friendly
  • [TFJ-358] - Apache HttpClient need to be shutdown gracefully
  • [TFJ-359] - defaulting useSSL=false
  • [TFJ-364] - getRetweets() returns only 20 retweets
  • [TFJ-370] - support location element in Tweet

New Feature

  • [TFJ-39] - ability to upload images to TwitPic
  • [TFJ-299] - support YFrog APIs
  • [TFJ-330] - include error code generated from stacktrace in TwitterException#getMessage() for the ease of support
  • [TFJ-334] - support User Stream API
  • [TFJ-339] - support statuses/id/retweeted_by and statuses/id/retweeted_by/ids
  • [TFJ-343] - Add Twitter Search option parameter, result_type
  • [TFJ-350] - support include_rts
  • [TFJ-352] - Have a source code jar in the release zip
  • [TFJ-354] - add verifyCredentials in AsyncTwitter
  • [TFJ-360] - add httpclient max conns configuration
  • [TFJ-361] - Add support for clients specifying arbitrary stream endpoints
  • [TFJ-362] - Streaming API - OAuth support

Task

  • [TFJ-363] - deprecate Basic auth methods
  • [TFJ-365] - move JavaDoc links from https://apiwiki.twitter.com/* to http://dev.twitter.com/doc/*
  • [TFJ-368] - deprecate nearby_places

関連記事:
Twitter4J 2.1.2 リリース - 最新APIセットをサポート - 侍ズム
Twitter4J 2.1.1 リリース - 最新APIセットをサポート、パフォーマンス/Android対応を改善 - 侍ズム
Twitter4J 2.1.0 リリース - 最新APIセットをサポート、パフォーマンスを大幅改善 - 侍ズム
Twitter4J 2.0.10 リリース - geo location API, retweet API をサポート - 侍ズム
Twitter4J 2.0.7 リリース - 侍ズム
Twitter4J 2.0.6 リリース - 侍ズム
Twitter4J 2.0.5 リリース - 侍ズム
Twitter4J 2.0.4 リリース - ストリーミング API をサポート
Twitter4J 2.0.3 リリース - JDK1.4.2 互換性を確認 - 侍ズム
Twitter4J 2.0.2 リリース - trends API や gzip 圧縮をサポート - 侍ズム
Google App Engine 対応 の Twitter4J 2.0.1 リリース - 侍ズム
Twitter4J 1.1.8 リリース - 侍ズム
Twitter4J 1.1.5 リリース
Twitter4J 1.1.1 リリース
Twitter4J 1.1.0 リリース
Twitter4J 1.0.6 リリース
Twitter4J 1.0.5 リリース
Twitter4J 1.0.4 リリース
Twitter4J 自前 maven リポジトリを公開
Twitter4J 1.0.3 リリース
Google Calendar と Twitter を連携 - Twittercal
Suitter Public beta 1.0
メールで Twitter! - TwitterMail.com
Twitter4J 1.0.2 リリース
Twitter4J 1.0.1 リリース
Twitter4J 1.0 リリース

タグ :
このエントリーをはてなブックマークに追加   

maven releaseプラグイン メモ - release をやり直したいときは?

release プラグインでリリースしたものをやり直したい場合。

$ git reset --hard HEAD^
$ git reset --hard HEAD^
$ git tag -d リリースバージョン名
Deleted tag '2.1.3' (was 247b341)
$ git push origin :refs/tags/リリースバージョン名
To git@github.com:yusuke/twitter4j.git
- [deleted] 2.1.3
$ git push -f origin master

$ mvn release:prepare -Darguments="-Dmaven.test.skip=true"
INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] twitter4j
[INFO] twitter4j-core
[INFO] twitter4j-httpclient-support
[INFO] twitter4j-examples
[INFO] Searching repository for plugin with prefix: 'release'.
[INFO] ------------------------------------------------------------------------
[INFO] Building twitter4j
[INFO] task-segment: [release:prepare] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [release:prepare {execution: default-cli}]
[INFO] Verifying that there are no local modifications...
[INFO] Executing: /bin/sh -c cd /Users/yusukey/opensource/twitter4j && git status
[INFO] Working directory: /Users/yusukey/opensource/twitter4j
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "twitter4j"? (org.twitter4j:twitter4j) 2.1.3: :
What is the release version for "twitter4j-core"? (org.twitter4j:twitter4j-core) 2.1.3: :
What is the release version for "twitter4j-httpclient-support"? (org.twitter4j:twitter4j-httpclient-support) 2.1.3: :
What is the release version for "twitter4j-examples"? (org.twitter4j:twitter4j-examples) 2.1.3: :
What is SCM release tag or label for "twitter4j"? (org.twitter4j:twitter4j) twitter4j-2.1.3: : 2.1.3
What is the new development version for "twitter4j"? (org.twitter4j:twitter4j) 2.1.4-SNAPSHOT: :
What is the new development version for "twitter4j-core"? (org.twitter4j:twitter4j-core) 2.1.4-SNAPSHOT: :
What is the new development version for "twitter4j-httpclient-support"? (org.twitter4j:twitter4j-httpclient-support) 2.1.4-SNAPSHOT: :
What is the new development version for "twitter4j-examples"? (org.twitter4j:twitter4j-examples) 2.1.4-SNAPSHOT: :
[INFO] Transforming 'twitter4j'...
[INFO] Transforming 'twitter4j-core'...
[INFO] Transforming 'twitter4j-httpclient-support'...
....省略....
$ mvn release:perform -Dgpg.passphrase=************ -Darguments="-Dgpg.passphrase=********** -Dmaven.test.skip=true"
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] twitter4j
[INFO] twitter4j-core
[INFO] twitter4j-httpclient-support
[INFO] twitter4j-examples
[INFO] Searching repository for plugin with prefix: 'release'.
[INFO] ------------------------------------------------------------------------
[INFO] Building twitter4j
[INFO] task-segment: [release:perform] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [release:perform {execution: default-cli}]
[INFO] Checking out the project to perform the release ...
....省略....



あとは sonatype でリポジトリを選択して"close" → "release"すれば maven central repository に伝わります。


以上自分向けのメモでした。

関連記事:
clmemo@aka: Git でリモート・リポジトリーのタグを削除する
歴史を振り返る、歴史を書き換える – Git を勉強してみる (4) - ちからの備忘録的日記

タグ :
このエントリーをはてなブックマークに追加   

maven releaseプラグイン / Sonatypeメモ - Staging Checksum Validation..-Incorrect SHA1

Twitter4JSonatype へのアップは settings.xml を配置することでうまくいきました。

今度はStating状態のリポジトリをクローズしようとしたら Staging Checksum Validation..-Incorrect SHA1 というエラーが。


Maven Central SHA1やMD5がオカシイという指摘は前にも頂いていたのですが放置していました。
Sonatype でクローズする際のバリデーションが以前よりも強化されて今回はクローズできなかったようです。

調べたらこれは Maven2.1.0 のバグらしいです。
[#OSSRH-484] Tumbler - a Behaviour-Driven Development library for Java - Sonatype JIRA

以上自分向けのメモでした。

タグ :
このエントリーをはてなブックマークに追加   

maven releaseプラグイン / Sonatypeメモ - Error deploying artifact...Return code is: 401

Twitter4J 2.1.3 を maven central repository にアップしようとしたらこんなエラーがでました。

[INFO] [INFO] Error deploying artifact: Failed to transfer file: http://oss.sonatype.org/service/local/staging/deploy/maven2//org/twitter4j/twitter4j/2.1.3/twitter4j-2.1.3.pom. Return code is: 401


調べたら原因は sonatype の id、パスワードを settings.xml に書いていないこと。
Old Nabble - Artifactory-Users - [artifactory - Help] can't deploy to artifactory -- always get 401

新しいMacBook Proに移行したときにコピーし忘れていたみたいです。

以上自分向けのメモでした。

タグ :
このエントリーをはてなブックマークに追加   

TFJ CodeCamp #001 に参加してきました

TFJ CodeCamp #001 に参加してきました。
TFJ といっても Twitter4J ではありません。クックパッド・百式の田口さん共催の日帰り開発合宿(?)です。
クックパッドに足を運ぶのは二回目で、一度目はカカクコムとクックパッド共催の勉強会でにお邪魔したことがあります。1年半ほど前だったでしょうか?
クックパッドは相も変わらずオシャレなキッチン、そしてキレイなロビーで気持ちよかったです。

開発合宿ということで私も開発したわけですが、最近トテツモナイ数のissueをcloseしている Twitter4J からは手を離して、ちょっとした Web アプリのプロトタイピングをしました。
これまでセミナーやトレーニングを通してスピーカー/トレーナーとして「あったらいいな」とぼんやり思っていたものをハリボテ+αくらいの形にしました。良くあることですが作りながらどんどん膨らむ構想・妄想・・・。開発に終わりはありません。
最後に成果発表のタイミングで成果を見せたところまずまずの反応。なにもすごいことはしてないけど便利そうなのは想像してもらえた感じかな?マネタイズの仕組みは全く考えていませんが、近いうちに公開して少しずつ膨らまして行きたいと思っています。

他所感としては以下の通りです。

・PHP/Rubyだらけ、Javaが少ない
ほぼ全員が Web サービスの開発をしていらっしゃったようですが大半は Ruby か PHP の様子。30人ほどの参加者中、Java使いは私一人でちょっと寂しかったです。

・Macだらけ
やっぱり開発にはなにかと Mac がいいですね。PCのユーザは数名だけ、MacBook Pro や MacBook Air で銀色づくしでした。

・田口さんにお会いした
色々なサービスの「中の人」にあえました。中でも百式で有名な田口さんは気軽に話せる雰囲気を作ってくれるナイスガイでした。


成果発表-「チェックアウト」の儀式の様子

関連リンク:
クックパッドにてプチ開発合宿(Tech Founders Japan CodeCamp #001)を開催したよ! - IDEA*IDEA ~ 百式管理人のライフハックブログ
『TFJ CodeCamp #1』のお知らせ « クックパッド開発者ブログ
【7/19】 クックパッドにてプチ開発合宿のお誘い『Tech Founders Japan CodeCamp #1』 - IDEA*IDEA ~ 百式管理人のライフハックブログ
プチ開発合宿「TFJ Code Camp #1」に参加中。クックパッドさんのオフィスにおじゃましてます。 - exdesign
クックパッドオフィスでプチ開発合宿「TFJ CodeCamp #1」に参加してきました - F.Ko-Jiの「一秒後は未来」
TFJ CodeCamp #1に参加してきました - ふるろぐ
プチ開発合宿『TFJ CodeCamp #1』に参加してきました - exdesign
ツイッターで節約、お小遣い管理! | Cashbook for Twitter
Cashbook Blog - ツイッターのつぶやきでお小遣い帳がつけられるキャッシュブックのお役立ち情報をお届けしていきます!
Meity.jp - TwitterのIDやリストで公開先を指定するメッセージ作成サービス

タグ :
このエントリーをはてなブックマークに追加   

今表示しているページを JavaDoc の @see アノテーションにするブックマークレット

タイトルの通りです。
JavaDocの説明での補足で、外部のページの参照のため@seeでリンクを張ることはよくありますがそれを楽にするものです。
@see javaDoc

Twitterのドキュメントサイトが http://apiwiki.twitter.com から http://dev.twitter.com/doc/へ大移動したのを受け、Twitter4J の JavaDoc を修正するのに当たりエイヤと作りました。
JavaDocの生成自体自動化したいところですがそれはまたそのうち・・。

タグ :
このエントリーをはてなブックマークに追加   

iPad - 純正ケース買いました

ホリエモンも大絶賛のiPad。

美しい筐体にケースをつけるかどうかはiPadでもiPhoneでも悩みどころです。
スマートに仕組みで傾斜をつけられる純正のケースを探していたのですがヤマダ、ヨドバシ、ビックカメラ・・・どこのお店に行っても在庫が見あたりません。入荷したらすぐ売り切れてるのかなー?と思っていましたが、ふと店員さんに聞いてみたらありますよ、今さっき入荷しました!っとごそごそと奥の方から持ってきてくれました。
もしかしたらサードパーティのケースを売るため、放っておいても売れる純正ケースは陳列しないことになっているのかもしれません。
横向きで傾斜させているところ:


Amazon:
楽天:


さて、使ってみた感触ですが、横向きで置いて使うには大満足!
ほどよい傾斜で操作もしやすくなりました。
縦向きで使うには滑る心配がなくなったものの、若干重量が増したのが気になるところです。慣れれば・・許容範囲かな?
もともと「めちゃ軽!!!」というデバイスではありませんので・・。

軽さを取るなら今のところ Kindle でしょうね!?

タグ :
このエントリーをはてなブックマークに追加   

ScanSnap買いました - スキャン速度を動画で確認!

今巷では「裁断&ScanSnap」が流行しているみたいですが、私もその波に乗ってみました。
実際に購入したのは数ヶ月前になるのですが、しばらく使ったのでレポートしたいと思います。

・便利!
とにかくオススメです。
健康診断の結果、グリーティングカード、店屋物のチラシ・・・身の回りには捨てるのは惜しいけど何かとかさばってくる紙が散乱しています。
とりあえずスキャンしちゃえばok!

・名刺リーダーとして大活躍
営業職でなくてもたまる名刺、名刺、名刺・・・名刺!!!
ScanSnapには CardMinder という名刺管理ソフトがついており、ガンガン読み込んで内蔵の OCR 機能で検索可能な形で名刺を管理することができます。
ジェンガのようにうずたかくたまっていた名刺は全部スキャンして捨てることができました。
MacデフォルトのAddressBookとも連携してくれるので取り込んだ名刺は me.com 経由で iPhone にも同期されます。最高!

ただ、名刺 OCR 機能は日本語の名刺にしか対応していないようです。
日本語で書かれていない名刺はレイアウトが違うからなのか、どれが住所でどれが名前か判別できないのか、全然読み取ってくれません。名前や住所を日本語的表記でパターンマッチングしているのかもしれません。
なので日本語で書かれていない名刺は名前、email、会社名だけ手入力しています。(>_<)

・裁断&スキャン
裁断機を使ってスキャン、便利です。慣れた本をバラっと一発で好きなところで開くような操作やらぱらめくれる本と違い pdf は若干もどかしい点もありますが十分読めます。

・読むのは?
色々試したわけではありませんが、やっぱりチヤホヤされている Good Reader が良いと思います。色々な方法でpdfを読み取ることができ、読み取りも見開きにできたり、一画面にでかでか表示したりとフレキシブルです。
Good Reader for iPad:


Good Readrer(iPhone / iPod touch用:


・スキャン速度は?
プリンタについているようなフラットヘッドスキャナに比べ圧倒的に早いです。
定番図書、「ホームページ辞典」をスキャンしている様子をビデオに撮りましたのでごらんください。


・場所とらない?
フットプリントはたいしたことありません。ただ、パタンパタンと展開して使うので置き場所は選びます。
展開している状態からたたむところを動画で撮ってみました。


今買うならワイヤレス化しているこれ:


裁断機はこれで十分:


ピラピラした捨てるに捨てられない紙を捨てられる気持ちよさ。
たまっていく図書をじゃんじゃん電子化して捨てられる気持ちよさ。
名刺が検索可能な形になり、かつ物理的に場所をとらなくなる快適さ。
100円、200円で買えるものではありませんがすぐに元が取れる買い物だと思います。

☆5つ!!!

このエントリーをはてなブックマークに追加   

立ったー!

生まれて1年と16日、龍之介がついに立ちました!

たつよ、たつよ!


もうすこし!!


こうかな?こうかな?


たったよー!


まだつかまり立ち→直立を数秒保持という状態ですが祖父母三人が訪問中の出来事。なんとジジババ思いの息子でしょう!
すぐ自分一人で立って歩き出すようになるでしょうね!
@ryunosukeyをこれからもよろしくお願いします!

このエントリーをはてなブックマークに追加