2013年08月28日

AppFog なら無料で出来る! 初めての Java On PaaS

Cloud Foundry のベータ期間も終わり無料で楽しめる次の Paas 環境を探している、何て人も多いかもしれません。
今日は無料、しかもスタンドアローン・アプリケーションも動かせる PaaS - AppFog をご紹介します。

appfog icon

  続きを読む
Posted by netbuffalo at 21:00Comments(2)TrackBack(0)

2013年08月12日

DBCP より 50倍早い!? BoneCP を使って高速コネクション・プーリングを実現する方法

DB 殺すにゃ刃物はいらぬ、Connection の3つも短時間で get すれば良い、なんて言ったか言わないかはわかりませんが DB サーバーにとってコネクションの生成はコストの掛かる処理で、この負荷を軽減する為にアプリケーション側で DB コネクションのプーリングを実装することは多々あります。

このコネクション・プーリングは JDBC ドライバの一部として提供されることもありますが一般的には依存性を回避する為に DBCP , C3PO などのミドルウェアを利用しますよね。

今日ご紹介するのは高速、ハイ・パフォーマンスを特徴とする第三の JDBC コネクション・プーリング実装 - BoneCP です。

performance

  続きを読む
Posted by netbuffalo at 20:00Comments(0)TrackBack(0)

2013年07月19日

Webcam Capture を使って Java から Webカメラ を簡単制御(キャプチャ・動体検知)する

PCにバンドルされていながら使う頻度が低い・割高なデバイスといえば Webカメラ(独自算出)。 でも、プログラムから自由に使えるとなればその評価も変わってきます。 今日は Java でWebカメラを簡単に操作できる Webcam Capture / Java Webcam API をご紹介しますよ。

webcam capture java library

  続きを読む
Posted by netbuffalo at 20:54Comments(0)TrackBack(0)

2013年07月17日

Java cron 実装 - cron4j ライブラリでタスクのスケジュール実行を簡単実装する

cron は cron を使えばいい、Java に cron 実装を求めるなんて不思議に思うかもしれませんね。
が、もし Java で実装できればアプリケーションから OS 固有の仕組みを削除でき、より WORA (Write One Run Anyware)なアプリケーションを実現出来る、タスクの実行結果を簡単に他の Java オブジェクトと共有可能といったメリットもありますよ。

java cron

今日 はQuartz よりも簡単・手軽にタスクのスケジュール管理・実行が出来る cron4j をご紹介します。

  続きを読む
Posted by netbuffalo at 01:05Comments(0)TrackBack(0)

2013年05月16日

SLF4J - Javaロギング実装・ライブラリの柔軟な切り替え・効率化を実現するロギング Facade

僕の中では、 Java でロギングするなら log4j 1.2 系で必要十分。 それ以外、最新のトレンドについて考えることなんて数年前から無くなっていたんです。 だって、ライブラリの性能、機能(出力先の種類)が多少増えても現場のロギング要件はそんなには変わりませんから。 でも、今日ご紹介する SLF4J (Simple Logging Facade For Java) は大変興味深いロギングAPIなんですよ。 SLF4J は各種ロギング・ライブラリのアダブタAPIと言ってもよく、これによってロギング・ライブラリの実装を開発フォーズと綺麗に分離することが出来るんです(実装の遅延評価)。 さらに、このアダプタとしての役割を使えば開発者の負担も減らすことが事が出来るんですよ。

slf4j log icon

  続きを読む
Posted by netbuffalo at 19:30Comments(0)TrackBack(0)

2013年05月13日

Commons CLI vs. args4 - Java コマンドライン オプション・パーサー比較

JavaでCLIアプリケーションを開発し、少し凝った・本格的なオプション(引数)操作を実装する場合、貴方ならどうしますか?
 
知名度で言えば圧倒的に Apache Commons CLI ですが、今日は args4j という新世代(言い過ぎ?)オプション・パーサーも含めて紹介・比較してみます。

CLI option handling

  続きを読む
Posted by netbuffalo at 20:30Comments(0)TrackBack(0)

2013年04月26日

Java RMI ConnectException: Connection refused to host: 127.0.0.1 エラーの正しい理解と対策

Java RMI による分散オブジェクト開発の経験があれば一度は目にする・躓くエラーが Connection refused to host: 127.0.0.1 じゃないでしょうか(特にLinuxサーバー上でRMIサーバー・アプリケーションを利用する場合に)。 勿論、僕も経験して解決したクチなんですが、その時からずーっと気になっている事があったんです。 それは、この例外の発生メカニズム・対策に関する体系的な説明が見当たらないこと。

rmi connection refuse

良質かはわかりませんが、今日は Java RMI, Connection refused to host 127.0.0.1 エラーの原因と対策について全体像も含めて紐解いてみます。

  続きを読む
Posted by netbuffalo at 20:30Comments(2)TrackBack(0)

2013年03月27日

JavaオブジェクトをXMLへシリアライズ, デシリアライズする時に知っておきたいライブラリ2選 - Simple & XStream

データベースを使う程では無いがオブジェクの状態を保存しておきたい、そんな時にはJavaオブジェクトのシリアライズ(直列化)、デシリアライズ(非直列化)が頭に浮かびます。この方法には幾つかありますが、シリアライズされたデータを人が理解・編集出来る、外部システム/他言語間でのデータ交換にも利用することを望むのであればXMLフォーマットは大変便利です。
 
僕はアプリケーションの設定ファイル <-> Java オブジェクト変換に使うことが多いですね。

application-x-zoo

今日は Simple/XStream という2つのJavaライブラリの使い方・特徴を紹介します。 
  続きを読む
Posted by netbuffalo at 08:00Comments(0)TrackBack(0)

2013年03月08日

Log5j (Not Log4j) - Java High Performance Logging Library

アプリケーション開発においてハイ・パフォーマンス・ロギングへの注意は必要でしょうか?

media-seek-forward-3

大部分のアプリケーションでは必要無いかもしれません。しかし、もし貴方のアプリケーションがロギング要件は出来るだけ変更せずに秒オーダーで数千~数万トランザクション/セッションを管理し、なおかつタイムアウトの発生を極力避け無ければならない状況になったらどうでしょうか?

log5j を利用すれば log4j で実装したロギング処理をとても簡単にハイ・パフォーマンス化することが可能です。
  続きを読む
Posted by netbuffalo at 20:30Comments(0)TrackBack(0)

2013年03月07日

Java grepスタック - Grep4jで簡単ローカル/リモート・ログ管理

Java grepライブラリ・・・。これまで考えたことも無かったかもしれませんが、Grep4Jを使えばローカル、リモートに関わらずファイルの中身をgrepライクに操作・プログラミングすることが可能です。

text-x-generic

コード・デザインもメソッド・チェーン、ジェネリクスの多用など特徴的で面白いですよ。
   続きを読む
Posted by netbuffalo at 20:30Comments(0)TrackBack(0)

2013年03月03日

Webページの本文(記事)抽出エンジン - Boilerpipe Javaライブラリの特徴と使い方

普段何気なく眺めているWebページですが、プログラミングであるページのメイン・コンテンツ(記事)だけを抽出しようとすれば、パーサーには次に示すようなロジックの実装が必要になります。

  • HTMLの中からタグ、属性情報を利用して本文位置・要素(Element)を推測する
  • 本文と推測した要素内にある不自然な子要素(例えば広告コンテンツ)を削除する
  • 推測した本文要素から各種タグ情報を削除し、プレーンテキスト化する

現時点でこれらの条件を完璧に満たすフリー・ソフトウェアは見当たりませんが、一般的に主流にあるのはサイト(ドメイン)毎に本文位置を表すタグ・属性情報を正規表現で定義し、その要素の内側にある全てのテキストを本文と判断する手法のようです(Rule-based Scraping)。

今日は希薄な単語に共通な特徴を確率モデルを使って本文抽出にアプローチするBoilerpipeライブラリを使ってWebページのデータ化にチャレンジみます。
  続きを読む
Posted by netbuffalo at 18:01Comments(0)TrackBack(0)

2013年02月21日

RRD4J - RRD(Round Robin Database) + Graph API For Java

ネットワーク監視・管理者であれば馴染み深いRRD(Round Robin Database)。Webアプリケーションとして間接的に利用することはあっても、Javaプログラミングの視点でRRDと2軸グラフにアプローチしようと考える人は少ないかもしれません。

 rrd4j

実はJavaにはRRD4Jというrrdtoolに相当する機能を持ったライブラリ(API)が存在し、これさえ覚えておけば Pure Java で RRD + Graph アプリケーションが簡単に作れてしまうんです!
  続きを読む
Posted by netbuffalo at 20:30Comments(0)TrackBack(0)

2013年01月27日

Excel(xls, xlsx)をJDBCドライバで操作できる sqlsheet - JDBC driver for MS Excel

JDBCドライバでエクセルをデータベースとして使えたら便利でしょうか?、いや別に・・・と言われそうですがsqlsheetを使えば実現できますよ!

ms-excel

小さなデスクトップ・アプリケーションにデーターベース機能を持たせたい、何かあれば特別な準備をせずにユーザーにもデータを確認・編集できるようにしたい。

そんな時には使えるかもしれませんね。
  続きを読む
Posted by netbuffalo at 15:00Comments(0)TrackBack(0)

2013年01月24日

設定ファイル無しで手軽・シンプルに使えるJava O/Rマッパー ICIQLの使い方

Java O/Rマッピング・フレームワークといえばiBATIS、Hibernate、S2JDBCあたりが昔から話題に上がりますが、細々した設定ファイル必要だったりと結局は手続き・設定が面倒になり、さんざん悩んだ挙句にApache/DbUtils(http://commons.apache.org/dbutils/)あたりに落ち着いたりします。

iciql3

でも、やっぱり、ちょっとしたユーティリティを作るような時にはもう少しハイレベルなORMフレームワークを使って短時間でコーディングを終らせたい。

今日は設定ファイル不要・メソッド・チェーンで直感的にDBアクセス・レイヤーを記述できるICIQLフレームワークを使ってコーディングしてみます。
  続きを読む
Posted by netbuffalo at 22:30Comments(0)TrackBack(0)

2012年12月20日

NetSpear - ネットワーク・スクリプトの自動実行アプリケーションを作ってみた

今身の回りにある家電製品、モバイル・ガジェットを見ると、その中身であるOSにはLinuxを採用しているというケースが増えて来ていますよね。

僕もブログを通じて家電製品やLinuxサーバーのカスタマイズ・設定方法を説明することがあるんですが、その手順の大部分はSSH/SFTPプロトコルとCLIと呼ばれるコマンド形式を組み合わせた操作で、知らない・慣れない人には途端に難しくなってしまうことに不満を感じていたんです。

かと言って機器・オペレーションが変わる度に専用デスクトップ・アプリケーションを作るのも大変・・・。 

機能を絞り込み・その分操作がシンプルで、操作内容を外部設定(スクリプト)化でき、色々な手順の自動化に使えるツールがあれば良いな、という事で NetSpear というネットワーク・スクリプトの実行アプリケーションを作って見ました。

netspear-logo
  続きを読む
Posted by netbuffalo at 23:00Comments(0)TrackBack(0)