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)

2013年01月23日

Python(Scapy)を使って'DNS SERVER (Answering + Spoofing Machine)'を作ってみる

本格的なDNSサーバーを構築する程では無いが、簡易的なネームサーバーを用意してアプリケーションの動作を検証・解析をしてみたい・・・・こんな状況って稀にありませんか?

 a0002_001091

僕は何度かそういった機会がありまして、勉強・復習ついでにPython/Scapyライブラリで簡易DNSサーバー(Spoofingあり)を実装してみることにしましたよ。
  続きを読む
Posted by netbuffalo at 21:30Comments(0)TrackBack(0)

2013年01月10日

Python(Scapy)を使ってGateway Finderを作ってみる

ネットワークへ接続する為にIPアドレスとネットマスクは知っているけれど、ゲートウェイのアドレスは分からない、隠れているゲートウェイを見つけたい。 たまーにですけど、こんな状況ありますよね。

gateway-finder2

いざという時に手作業で調べていては大変。

今日はPython + ScapyでGateway Finderを作ってみます。
  続きを読む
Posted by netbuffalo at 22:00Comments(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)

2012年12月13日

Python(Scapy)を使ってDHCP PERFECT(?) STORMERを作ってみる

先日作ったDHCP DISCOVER STORMER。 実はこれ、DHCPの性能測定という意味ではPERFECTとは言えません。 だって、 DISCOVERだけでACK(IPアドレス・リース成立)までの1トランザクション性能を測定することは出来ませんからね。

 perfect_storm

Python+Scapyで実装する以上、送受信性能に限界があるのは承知の上で、ACKまで計測できるPERFECT(?)なDHCP STORMERを完成させてみます。
  続きを読む
Posted by netbuffalo at 18:30Comments(0)

2012年12月03日

Python(Scapy)を使ってDHCP CLIENT(DISCOVER->ACK)を実装してみる

先日、PythonでDHCP DISCOVERを大量に送信するクライアント・アプリケーションを書いてみたんですが、折角なので今日はDHCP 1トランザクション(DHCP DISCOVER ~ DHCP ACKまで)を実装してみようと思います。

network-wired-4

しかし、こういう細かい話はリーチする人が極端に少ないので書いていて虚しさもありますね・・・。
  続きを読む
Posted by netbuffalo at 23:00Comments(0)TrackBack(0)

2012年11月28日

そろそろDHCPリースクエリーについて語っておくか(RFC4388 DHCP Lease Query Client for Java)

最近DHCPについて熱く語っている僕ですが、実際のところDHCPに真っ直ぐな情熱がある訳では無いんです。

だって・・・地味でしょう・・・ だから結構アバウトな理解で、例えばDHCPリースクエリーなんて言われても、適当に理解してたんですけど、「光陰矢のごとし」ですから一度具体的に語ってみようかと。

DHCPリースクエリーを簡単に言えばDHCPサーバーへIPアドレスのリース状態・情報を問い合わせる為のインタフェースで、運用ではクライアント(端末)が信頼出来るものか否かを判断する為に利用することが多いようです。

ID-10067168
  続きを読む
Posted by netbuffalo at 01:00Comments(0)TrackBack(0)

2012年11月22日

Python(Scapy)を使って'DHCP DISCOVER' STORMERを作ってみる

皆さんがお持ちの端末(PC、スマートフォン、モデムなど)がIPネットワーク上でオンラインになるまでには、幾つかの連続した手順(シーケンス)が必要で、IPアドレスをリースするDHCPサーバーもそのシーケンスの重要な一部です。

数十~数百の小さなLANで使う分には何を使っても良いのですが、大規模なネットワークを支えるDHCPサーバーには性能が求められます。

何故かと言えば、大規模なネットワークで障害や切り替えが発生した場合、復旧時には、まるで ”STORM” のように、一斉に複数の端末でオンライン・シーケンスが始まることがあるからです。
 
storm_ID-10074985

僕も大規模ネットワークに関わる仕事をしていて、DHCPサーバーの評価・検証・構築に関わる事があるんですが、無料で柔軟性のあるDHCPサーバーの性能評価ツールが少なくて困っていたんです。

しかし、よく考えるとScapyで作れば良いんじゃないの? と思い立ち、試しに”DHCP DISCOVER” STORMERを実装して見ることにしました。
  続きを読む
Posted by netbuffalo at 21:30Comments(0)TrackBack(0)

2010年12月20日

JavaでSFTP

前回のSSHに続きOrion SSH2を利用してJavaでSFTPします。具体的にはSFTPでリモートホストへのPUTを例に説明します。

まず注意点ですが、Orion SSH2にはGanymed -> Trileadという歴史がありますが、Trilead SSH-2 build211以前にはバグがあり、正常に動作しません。

-- Trilead SSH-2 for Java build211, 2007-10-28: --
Fixed the write() method in the SFTP code.
Unsatisfiable preconditions stopped the method from
writing any bytes. As stated in the documentation,
the SFTP code is still experimental.
Thanks to Andreas Pueschel.

Orion SSH2を使う限り反映済みですが、Orion以外のライブラリを使っている場合は注意下さい。
  続きを読む
Posted by netbuffalo at 19:08Comments(0)TrackBack(0)