<< 2月 2010 | Home | 4月 2010 >>

Twitter4J 2.1.0 リリース - 最新APIセットをサポート、パフォーマンスを大幅改善

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


全てではありませんが最近リリースされたAPIセットをほとんど実装しています。
Maven Central Repository にも入っています。
内部的に大幅なリファクタリングが施されており、パフォーマンス改善やメモリフットプリントの大幅な縮小も実現しています。

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

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

Release Notes - Twitter4J - Version 2.1.0

Bug

  • [TFJ-206] - need to disambiguate methods showUser(integer-userid) and showUser(screen-name)
  • [TFJ-207] - need to disambiguate methods ***ById(int id) and ***ByScreenName(String sn)
  • [TFJ-213] - 400 bad request when using within near: or within: operator.
  • [TFJ-215] - geo lat/long are always -1
  • [TFJ-228] - Unable to "close" a TwitterStream
  • [TFJ-230] - DirectMessage.getSender()/getReceiver() always return null
  • [TFJ-235] - Reply to Retweet does showe inReplyToStatusId as -1
  • [TFJ-236] - twitter4j.Twitter doesn't implement Serializable properly
  • [TFJ-257] - rateLimitStatus doesn't work with OAuth
  • [TFJ-262] - unexpected TwitterException(statusCode=-1) on Android
  • [TFJ-282] - java.lang.IllegalArgumentExcep tion: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: " s"
  • [TFJ-288] - getFollowerIds needs authentication

Improvement

  • [TFJ-162] - use json to reduce computing / network footprint
  • [TFJ-217] - geo location as a class
  • [TFJ-219] - support improved retweet format
  • [TFJ-224] - verifyCredentials: clarify when TwitterException will be thrown
  • [TFJ-234] - cursor-based pagination for statuses/friends and statuses/followers.
  • [TFJ-239] - rate limit status as a class
  • [TFJ-240] - retire featured method
  • [TFJ-244] - introduce a constant type class - TwitterMethod for AsyncTwitter exception handling
  • [TFJ-245] - typo: deliverlyDevice -> deliveryDevice
  • [TFJ-246] - retire async methods that don't take TwitterListener
  • [TFJ-250] - add handy setter methods to Query class that returns itself to make it possible to generate a query instance in one line
  • [TFJ-253] - methods that are API rate limited but are not requiring authentication need to pass credentials (if availalbe) to get whitelisted properly
  • [TFJ-261] - introduce interface set which contain pre-categorized method set
  • [TFJ-263] - define interfaces per method sets
  • [TFJ-264] - rename ratelimitStatus() to getRateLimitStatus(), ratelimitStatusAsync() to getRateLimitStatusAsync()
  • [TFJ-266] - mask Basic Authentication header in the debug output
  • [TFJ-267] - be ready for the new search api response code
  • [TFJ-273] - use SSL by default when Basic Authentication is enabled.
  • [TFJ-274] - ability to specify streaming api specific http read timeout value
  • [TFJ-276] - introduce Interfaces for data objects
  • [TFJ-277] - extract interfaces from data objects
  • [TFJ-278] - ensure *JSONImpl are treating all fields as optional
  • [TFJ-279] - User.getProfileBackgroundTile() should return boolean
  • [TFJ-283] - retire Device#IM as "IM" is not a supported notification device anymore
  • [TFJ-284] - separate AsyncTwitter from Twitter

New Feature

  • [TFJ-50] - support update_profile_image method
  • [TFJ-51] - support update_profile_background_image method
  • [TFJ-152] - introduce a listener interface that can grab http responses
  • [TFJ-171] - listener for rate limit status changes
  • [TFJ-210] - ability to handle streaming api's deletion and limitation notices
  • [TFJ-214] - list API support
  • [TFJ-223] - support spam reporting API
  • [TFJ-226] - use versioned URL
  • [TFJ-227] - introduce a tiny utility class that produces "a minutes ago" like strings from Date objects
  • [TFJ-229] - ability to get Retry-After info
  • [TFJ-231] - introduce more flexible configuration scheme, make Twitter class immutable
  • [TFJ-237] - support list members methods
  • [TFJ-238] - support list subscribers methods
  • [TFJ-248] - support friendships/show
  • [TFJ-249] - support users/search
  • [TFJ-270] - include geo location info in the search result
  • [TFJ-280] - ability to configure baseURLs
  • [TFJ-289] - async support spam reporting API
  • [TFJ-290] - async support of support users/search API

Task

  • [TFJ-113] - retire deprecated methods
  • [TFJ-220] - remove User#sendDirectMessage()
  • [TFJ-255] - remove getPublicTimeline(long sinceId) as the parameter is not documented anymore
  • [TFJ-256] - deprecate(or remove?) getFriendsTimeline()
  • [TFJ-258] - Streaming API example
  • [TFJ-265] - ensure AsyncTwitter class is truly serializable

関連記事:
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 リリース

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

JIRA 4.0.0 から JIRA 4.0.2 へのアップグレード

JIRA はAtlassian社のJava ベースのバグトラッキングシステムで、ApacheJBossでも使われています。
とっつきやすさと高機能をうまく両立しており、また見た目が洗練されている素晴らしい製品です。
オープンソースプロジェクトへは無償ライセンスを提供してくれるので私のプロジェクト、Twitter4Jでも使っています

今回はアップグレードですが、新規インストールの手順もほとんど同じです。

JIRA のバージョンは 4.0.0 から 4.0.2 になりました。

1. 現行 JIRA データのバックアップ
既存 JIRA インスタンスより、
ADMINISTRATION > Import & Export > Backup Data to XML
File name: /Users/yusukey/jirabackup0302-2010.xml > "Backup"

無事成功すると Data exported to: /Users/yusukey/jirabackup0302-2010.xml と表示される。
現行インススタンスはシャットダウン。

2. Atlassian より最新版をダウンロード
http://www.atlassian.com/software/jira/JIRADownloadCenter.jspa
デフォルトではスタンドアロン版が表示されています。
以前は JBoss 上で動かしていましたが、現在 JBoss 上での動作はサポートされていない(&うまく動かない)のでスタンドアロン版を使っています。
WebLogic 等にデプロイする場合は "Show all" をクリックして Enterprise - WAR/EAR 版を表示、ダウンロードします。

3. MySQL にデータベース作成
既存データベースに接続させることもできるけれども、最適なスキーマを作るには新規にデータベースを用意することが推奨されています。

$ ./mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14605
Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database jira402 character set utf8;
Query OK, 1 row affected (0.07 sec)

mysql> ^DBye

atlassian-jira-enterprise-4.0.2-standalone/conf/server.xml に以下のエントリを書いてバンドルされている Tomcat のコネクションプール/データソースとメールセッションを作成。
server.xml

<Resource name="mail/jiraMail"
auth="Container"
type="javax.mail.Session"
mail.transport.protocol="smtp"
mail.smtp.host="smtp.gmail.com"
mail.smtp.port="465"
mail.smtp.auth="true"
mail.smtp.user="jira@yusuke.homeip.net"
password="***************"
mail.smtp.starttls.enable="true"
mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
/>
<Resource name="jdbc/JIRADS" auth="Container" type="javax.sql.DataSource"
username="***************"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jira402?useUnicode=true&amp;characterEncoding=UTF8"
minEvictableIdleTimeMillis="4000"
timeBetweenEvictionRunsMillis="5000"
maxActive="20" />

4. JIRA のデータソース設定
atlassian-jira-enterprise-4.0.2-standalone/atlassian-jira/WEB-INF/classes/entityengine.xml を修正
接続 DB を hsql から mysql に、schema-name 属性を削除。
99:    <datasource name="defaultDS" field-type-name="hsql"
100: schema-name="PUBLIC"

99: <datasource name="defaultDS" field-type-name="mysql"
100: <!--削除-->


5. jira.home の設定
このプロパティは今回から必要になったようです。
atlassian-jira-enterprise-4.0.2/atlassian-jira/WEB-INF/classes/jira-application.properties の jira.home に任意のディレクトリを絶対パスで指定します。
jira.home=/Users/yusukey/jirahome


6. 起動パラメータの調整
自宅サーバのメモリが少ないので、我が家ではややヒープサイズを小さめに設定しています。イマドキのマシンであればデフォルトのままで問題ないと思います。
atlassian-jira-enterprise-4.0.2-standalone/bin/setenv.sh
JAVA_OPTS="-Xms150m -Xmx150m -XX:PermSize=40m -Xss128k $JAVA_OPTS -Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true "

# Perm Gen size needs to be increased if encountering OutOfMemoryError: PermGen problems. Specifying PermGen size is not valid on IBM JDKs
JIRA_MAX_PERM_SIZE=180m


7. データのインポート
JIRA を起動、アクセスし、インポート。あらかじめライセンスをアップグレードしておくか、評価ライセンスを取得しておく必要があります。
Import Existing Data
File name: /Users/yusukey/jirabackup0302-2010.xml

9. アップグレード完了!
以上でアップデート完了です。


関連記事:
Welcome to Go2Group, the SPLA Experts! – JIRA 概要 –
Risksoft - アトラシアン(Atlassian)製品の価格と購入(オンライン販売)
JIRA 4 へのアップグレード手順(バージョン 3.13.1 から) - 侍ズム
Atlassian が JIRA4 をリリース - 指名ユーザライセンス制を導入 - 侍ズム
JIRA 3.13.1 へ FishEye プラグイン 2.3 をインストール
JIRA をバージョン 3.13.1 へアップデート - 侍ズム
FishEye 1.6.3 のインストール
JIRA をバージョン 3.12.3 へアップデート

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

「現場で使えるデバッグ & トラブルシュート Java編」を頂きました

先日紹介した本を頂きました。

本のタイトルそのものズバリですがデバッグ・トラブルシューティングについて体系立てて書かれています。
一般的な Java の文法、プログラミングテクニックを説明する本はありますが、デバッグ・トラブルシューティングに特化した本はこれが初めてなのではないでしょうか?

運用管理者だけでなく、日々のトラブルを「何となく」乗り越えたり回避したりしている Java エンジニアは一読されることをお勧めします。
まだざっと眺めただけなのですが、デバッグの流れ/トラブルシュートの流れ、といった基本的な事から各OSにおけるトラブルシューティングに有効なメトリクスの収集・分析方法までカバーしており大変実践的です。

また構成・章立てが明快なので「開発だろうがトラブルシューティングだろうがバッチコイだぜ!」、というベテランの方も買っておいて損はないと思います。
ざっと目次に目を通しておいて「あれ?Windowsではどうやってあの情報とれるんだっけ?」みたいにリファレンスとして利用するのにも向いていそうです。

私は正直 JVM のレイヤから下はサッパリで、いつも現場に向かう前にあたふたと準備しているのですがディスクI/O、ネットワークボトルネックが怪しまれる場合の解析方法なども詳しく解説されており大変勉強になりそうです。



関連記事:
現場で使えるデバッグ & トラブルシュート Java編を書きました - Linoブログ
翔泳社様新刊 「現場で使えるデバッグ & トラブルシュート Java編」 - 侍ズム

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