タグ

ブックマーク / waman.hatenablog.com (29)

  • FactoryBuilderSupport よ、我に力を! (7) : Apache POI を構築するビルダー - 倭マン's BLOG

    今回は、前回載せたビルドスクリプトを実行できるビルダーを実装します。 実装に必要なのは 各ノードに対応するファクトリ・クラスを実装する ビルドを実行するビルダーに実装したファクトリ・クラス(のインスタンス)を登録する ファクトリの実装で注目なのは、プロパティを自動で設定してくれる onHandleNodeAttributes() メソッドでしょう。 他にも、既に構築した親ノードに対応するオブジェクトの取得なども行ってます。 ファクトリ まずは、POI に出てくる要素 (Workbook, Sheet, Row, Cell など) を構築するファクトリ・クラスに対して、共通の親クラス PoiComponentFactory を定義しておきましょう。 このクラスは groovy.util.AbstractFactory を継承させます: PoiComponentFactory abstract

    FactoryBuilderSupport よ、我に力を! (7) : Apache POI を構築するビルダー - 倭マン's BLOG
    kimukou_26
    kimukou_26 2012/12/18
    POIを例にしたBuilderの作り方。メモ
  • Twitter4J の非同期 API 試し隊 - 倭マン's BLOG

    Twitter4J のサンプルを書いていて、非同期 API 使った方が良さそうだなぁという場面に出くわしたので、ちょっと 非同期 API を試してみることに。 非同期 API 概要 非同期 API を使用する大まかな手順は AsyncTwitterFactory オブジェクトを生成 c.f. 同期 API では TwitterFactory オブジェクトを生成 AsyncTwitterFactory オブジェクトから getInstance() メソッドによって AsyncTwitter オブジェクトを生成 c.f. 同期 API では Twitter オブジェクトを生成 TwitterListener オブジェクトの作成 AsyncTwitter オブジェクトに対して addListener() メソッドによって TwitterListener オブジェクトを追加*1 AsyncTwit

    Twitter4J の非同期 API 試し隊 - 倭マン's BLOG
    kimukou_26
    kimukou_26 2012/10/22
    AsyncTwitter は TwitterAdapter に対応戻り関数を追加していくイメージなのか・・。メモメモ。
  • Groovy スクリプトを実行するバッチファイル - 倭マン's BLOG

    こちらの記事で、Groovy をインストールしていない環境で Groovy スクリプトを実行する方法が書かれてました。 この方法では、スクリプトの実行に必要な Groovy と Ivy*1 の Jar ファイル自体は実行者に用意してもらう必要がありました。 最近、Clojure の勉強にと思って Leiningen というツールをイジってたんですが*2、このツールでは Clojure の Jar はもちろん、Leiningen の Jar すらもツールによってダウンロードしちゃおう!ってやつで、ユーザーがダウンロードする必要があるのはシェル・スクリプト(*nix、Mac 上)もしくはバッチ・ファイル(Windows)だけ、という手軽極まりない(?)ユーザビリティとなっております。 んで、これをちょっと Groovy スクリプトの実行に応用してみよう!と試行錯誤してみました。 以下、Wind

  • Groovy でのコンストラクタあれこれ - 倭マン's BLOG

    今さらかも知れませんが、Groovy でコンストラクタを実装する方法をあれこれ試してみました。 今回試したのは以下のような方法です: 基 デフォルト・コンストラクタ 名前付き引数 コンストラクタ定義 アノテーションによる AST 変換 @InheritConstructors アノテーション @TupleConstructor アノテーション メタプログラミング 実行時メタプログラミング マジック・パッケージ では、それぞれを見ていきましょう。 基 まずは基。 デフォルト・コンストラクタとコンストラクタ定義は Java と同じ。 名前付き引数は Groovy 用です。 デフォルト・コンストラクタ、名前付き引数 Groovy でクラス定義にコンストラクタを書かなければ、Java と同じようにデフォルト・コンストラクタが自動生成されます。 デフォルト・コンストラクタは引数なしで特に何の処

    Groovy でのコンストラクタあれこれ - 倭マン's BLOG
  • 2度目の幻獣 Griffon 研 (1) : JavaFX アプリケーション作成プロジェクト - 倭マン's BLOG

    Griffon 1.0.0 がリリースされたようなので、またチラッと Griffon をいじってみます。 Griffon 1.0.0 からは Swing もプラグインとして提供されるようになったようなので、そんなら、ってことで JavaFX を使ったアプリケーションにチャレンジ。 今回は Griffon で JavaFX アプリケーションを作成するための開発環境の準備と、デフォルトで備わっている JavaFX アプリケーションの実行方法を見ていきます。 タイトルに (1) と付けてますが、続きがあるかは不明。 準備 JavaFX アプリケーションを開発する Griffon プロジェクトを作成するには、「griffon create-app」コマンドの実行前にいくつか行わなければいけないことがあります*1: JavaFX のインストールと環境変数 JAVAFX_HOME の設定 javafx

    2度目の幻獣 Griffon 研 (1) : JavaFX アプリケーション作成プロジェクト - 倭マン's BLOG
  • 今更ながら GroovyFX に手を出してみる - 倭マン's BLOG

    今更っていうとアレですが、ちょっと前に盛り上がっていた GroovyFX にちょっと手を出してみようかと。 今回はインストールとサンプルの実行。 結構他のサイトでもやられているので自分用のメモ程度に。 参考 URL JavaFX Developer Home Getting Started with JavaFX GroovyFX torutkの日記「JavaFX 2.0最初の一歩」 日々常々「GroovyFX Alphaで躓いたトコ(ビルド編)」 JavaFX のインストールと設定 まずは JavaFX のインストールと設定。 ここでは、一応 GroovyFX を使わずに開発できる最低限の設定を行います。 GroovyFX を使うなら不必要な設定もあるかもしれませんがご了承を。 また、Windows オンリー御免。 手順はこんな感じ: JavaFX のダウンロードとインストール 環境変数

    今更ながら GroovyFX に手を出してみる - 倭マン's BLOG
  • Closure クラスの API を使ってみる (6) : トランポリン trampoline() - 倭マン's BLOG

    今回はクロージャのトランポリンに関するメソッドを見ていきます。 前回見たカリー化(部分適用)と同じく、トランポリンも関数型プログラミングでは大抵サポートされている機能なようで、それを Groovy に取り入れたって感じのようです。 主な解説は書きのリンク先にあります: 参考 URL 「Closure#trampoline()とは何か」 「Closure#trampoline()続き」 「Groovyの再帰処理(trampoline)についてひとつ分かったこと」 これらの記事から解説や注意点を拝借して列挙してしておきましょう。 Closure#trampoline() とは「明示的な末尾再帰の指定」を行うためのもの trampoline() メソッドの呼び出しに実質的に2つの意味がある 書き換え手順は クロージャ内の call(...) を trampoline(...) に書きかえる その

    Closure クラスの API を使ってみる (6) : トランポリン trampoline() - 倭マン's BLOG
  • クロージャ実行あれこれ - 倭マン's BLOG

    なんか今更な記事ですが、Groovy の Closure オブジェクトを実行する方法をあれこれと試行。 Closure クラスに定義されている実行用のメソッドには以下のようなものがあります: Object call() Object call(Object arg) Object call(Object... args) void run() また、これらを用いずに「()」を使って実行することもできます。 実行の基 まずは簡単なクロージャと基的な実行: def c = { println 'Hello, closure.' } c() // Hello, closure. c.call() // Hello, closure. Groovy コードでは Closure オブジェクト直後に「()」を書けば実行できます。 これは、call() メソッドの呼び出しと同じになります。 Java

    クロージャ実行あれこれ - 倭マン's BLOG
  • JOptionPane の使い方が悲しいくらい分かりにくい! (3) : Input Dialog - 倭マン's BLOG

    今回は Input Dialog。 Input Dialog はユーザーに「文字列の入力」もしくは「項目の選択」を求めるダイアログです。 Input Dialog Input Dialog を表示させるには javax.swing.JOptionPane の static メソッド showInputDialog() メソッドを使用します。 このメソッドのシグニチャはこんな感じ: static String showInputDialog(Object message) static String showInputDialog(Object message, Object initialSelectionValue) static String showInputDialog(Component parent, Object message) static String showInpu

    JOptionPane の使い方が悲しいくらい分かりにくい! (3) : Input Dialog - 倭マン's BLOG
  • JavaFX 開発のための Gradle プロジェクト - 倭マン's BLOG

    JavaFX 開発のための Gradle プロジェクトを作ろうと思い、それ用の Gradle プラグインを探したのですが、google code で開発されてるかと思いきや 1.x 時代の JavaFX 対応だったので、ちょいと自分で作ってみました。 JavaFX 2.0 から javac コマンドでコンパイルできるようになったとはいえ、実行可能 Jar ファイルを作成するには単にマニフェストファイルに Main-Class 属性を付加するだけではダメなようなので(前回参照)、ところどころ設定を行う必要があります。 ちなみに、環境変数 JAVAFX_HOME に JavaFX SDK のインストールフォルダ(へのパス)を設定しておいてください: apply plugin:'java' defaultTasks 'test' //defaultTasks 'clean', 'build' /

    JavaFX 開発のための Gradle プロジェクト - 倭マン's BLOG
  • クリスマス・イヴに3次元プロットw - 倭マン's BLOG

    以前の記事で、Griffon を使って3次元プロットを行う プラグイン Jzy3d Plugin の使い方を見ました。 そこではプラグインのインストール方法やソースの配置場所などを見ただけだったので、今回はプロットを行うソースをイジってみます。 Jzy3d プラグイン Jzy3d では というタイプの関数をプロットできます。 他にも Scatter Chart (散布図)も描画できるようです(今回は扱いませんが)。 プロットを行う手順は 関数を表す Mapper オブジェクトを作成 Mapper オブジェクトと定義域やサンプル数などの情報を合わせた Shape オブジェクトを生成(必要なら設定を行う) チャートの Shape オブジェクトをセット といった感じです。 z = f(x, y) の形の関数をプロットしたい場合、Mapper オブジェクトに (x, y) の値から z を計算する

    クリスマス・イヴに3次元プロットw - 倭マン's BLOG
    kimukou_26
    kimukou_26 2011/12/25
    こういう絵がある方がやはり映えるね
  • Java 7 × Groovy 2.0 ( × IntelliJ IDEA) - 倭マン's BLOG

    Java 7 がリリースされて数ヶ月が経ってるので今更ですが、Java 7 を使って開発を行うプロジェクトの環境設定をしてみます。 プロジェクトは Gradle (バージョンは 1.0-milestone-0.6) でビルドでき、IntelliJ IDEA で開発できるようにします*1。 また、Groovy も使えるようにしましょう。 Java 7 を使うなら、まだベータ版しかリリースされてませんが Groovy のバージョンは2.0以降にした方がよさそうなので、そうします*2。 という前置きのもと、Gradle の build.gradle ファイルを見ていこう!ってだけです。 ちなみに、この記事は「IntelliJ IDEA で実行可能 Jar ファイルを作成するプロジェクトの Gradle ビルドファイル 〜エンコーディングも指定するヨ〜 feat. JDK 1.6」の Java 7

    Java 7 × Groovy 2.0 ( × IntelliJ IDEA) - 倭マン's BLOG
  • むしろ Twitter4J で twitter を勉強してみる (1) : Twitter インターフェース - 倭マン's BLOG

    twitter って単純につぶやくだけなら簡単ですが、他にもいろいろ機能があるはずなのにイマイチ使い方が分かってないなぁと最近感じてきたので、ちょっと twitter を勉強しようかなと。 ただ、そんなにガッツリ使う気は(今のところ)ないので、マニュアル読んだり書籍を購入して読んだりするのもちょっとモチベーションが上がんないなぁというところ。 なのでちょっと変化球的に、プログラミングでどんなことができるのかを試してみる作戦を決行してみます。 Java 系のプログラミング言語で twitter を扱うライブラリってのもいろいろあるようですが、Twitter4J が無難そうなので(おぉ、日人開発者!)、これをあれこれイジってみます(記事一覧)。 Twitter4J では以下の API がサポートされています: 同期 API : 関連クラスは twitter4j.Twitter twitter

  • はじめての幻獣 Griffon 研 (22) : ビルド時にリソース・バンドルを生成するようにする - 倭マン's BLOG

    前回、Groovy の Config ファイルからリソース・バンドルを生成するスクリプトを書きました。 でも、アプリケーションのビルドとは別にスクリプトを実行しないといけないので、このままではちょっと面倒。 ってことで、今回はアプリケーションのビルド時にリソース・バンドルの生成も行われるようにしてみます。 もちろん、リソース・バンドルの生成だけを行うこともできるようにしておきましょう(一覧)。 まずはリファクタリング ビルド・プロセスにリソース・バンドルの生成を織り込む前に、まずは前回作成したスクリプトをリファクタリングしておきます。 このリファクタリングによって、「ビルド・プロセス中で実行」する場合と「スクリプト単独で実行」する場合に共通する処理を抜き出して再利用します(参考 Griffon Guide 「4.2 Re-using Griffon scripts」)。 _Internat

    はじめての幻獣 Griffon 研 (22) : ビルド時にリソース・バンドルを生成するようにする - 倭マン's BLOG
  • GroovyDSL と IntelliJ IDEA - 倭マン's BLOG

    IntelliJ IDEA にて、独自に定義したプロパティやメソッドを IDEA に認識させる方法を見ていきます。 プロパティ・メソッドの追加定義 GroovyDSL の作成 GroovyDSL スクリプトをリソースとして Jar ファイルに含めると・・・ プロパティ・メソッドの追加定義 Groovy ではメタクラスを使ってプロパティやメソッドを追加定義できるのでした。 たとえば Integer クラスに daysFromNow プロパティを追加するには以下のようにします: // DayCounter.groovy Integer.metaClass.getDaysFromNow = { -> Calendar today = Calendar.instance today.add(Calendar.DAY_OF_MONTH, delegate) today.time } println(

    GroovyDSL と IntelliJ IDEA - 倭マン's BLOG
  • Groovy in Addiction (3) : 文字列 - 倭マン's BLOG

    今回は文字列について。 『Groovyイン・アクション』Chapter3 を参考にしています(一覧)。 文字列リテラルの定義 String StringBuffer, StringBuilder GString Groovyイン・アクション 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史出版社/メーカー: 毎日コミュニケーションズ発売日: 2008/09/27メディア: 単行(ソフトカバー)購入: 5人 クリック: 146回この商品を含むブログ (121件) を見る 文字列リテラルの定義 開始・終了文字 GString 対応 エスケープ 必須文字 エスケープ 可能文字 使用箇所 シングルクォート (') × \b \t \r \n \f \\

    Groovy in Addiction (3) : 文字列 - 倭マン's BLOG
  • javax.tools パッケージを使って Java コードをダイナミックにコンパイル! - 倭マン's BLOG

    以前から javax.tools パッケージって気になってたんですが、それを使ったサンプルを見つけたのでちょっと試してみることに。 javax.tools パッケージのクラスを使うと、Java クラスをダイナミックに生成することができるそうです。 ここでいう“ダイナミックに”とは「内容が Java コードの java.lang.String オブジェクトから Java クラスファイルを生成できる」という意味です*1。 ただ、API を使っていると、どことなく「$JAVA_HOME/bin/javac.exe」をラップした API って感じが漂ってくるので(実際にそういう実装なのかは知りませんが)、何か何処かぎこちない気もしないでもない(こともない*2) まぁ、ともかくサンプルを動かしてみましょう。 ちなみに JDK 6 必須です。 参考 URL JavaDoc 「Package javax

    javax.tools パッケージを使って Java コードをダイナミックにコンパイル! - 倭マン's BLOG
  • 2011-03-09

    2011-03-09 2011年03月09日のツイート twitter @waman10da: [宇宙]やるせなし / 宇宙の巨大さにやるせなくなれるアニメーション: とみー URL2011-03-09 23:33:10 via Hatena @waman10da: 社会や教育を変える? 金持ちと貧乏の格差が凄いことになるかも(笑) とはいえ、脳みそにハードディスク増設できる… 2011-03-09 IntelliJ IDEA で実行可能 Jar ファイルを作成するプロジェクトの Gradle ビルドファイル 〜エンコーディングも指定するヨ〜 feat. JDK 1.6 Java6 Gradle IntelliJ IDEA Gradle 0.9.x から Idea プラグインがそれなりに動くようになっていじってみてるんですけど、依存性 (dependencies) にライブラリを追加して

    2011-03-09
  • はじめての幻獣 Griffon 研 (34) : Griffon アプリケーションをパッケージング (2) : 環境 - 倭マン's BLOG

    今回は、package コマンドの実行の際に指定する「環境 (environments)」について見ていきます(一覧)。 環境には以下の3つが定義されてました: development (dev) : 開発 test (test) : テスト production (prod) : 製品 参照 URL Griffon Guide「3.2 Environments」 BuildConfig.groovy 環境の設定は以下のファイルに記述されています: $PROJECT_HOME/griffon-app/conf/BuildConfig.groovy 内容(の一部)はこんな感じ: // 各環境の設定(デフォルトの設定を上書き) environments { // development 環境の設定 development { signingkey { params { sigfile = 'G

    はじめての幻獣 Griffon 研 (34) : Griffon アプリケーションをパッケージング (2) : 環境 - 倭マン's BLOG
  • 「はじめての Android」開発環境 〜Gradle 編〜 : Java - 倭マン's BLOG

    id:kimukou_26 殿にコメント頂いた、Gradle による Android プロジェクトのビルドに挑戦(一覧)。 Windows 前提御免。 記事概要 gradle-android-plugin について ツールのインストール プロジェクトの作成 エミュレータの設定と起動 (Ant の場合と同じ) プロジェクトの実行・アンインストール プロジェクトの署名&パッケージング 参考 URL 「Android Plugin for Gradle, featuring ProGuard and Scala support」 「Gradle 0.9.2」 gradle-android-plugin について まず gradle-android-plugin について少々。 gradle-android-plugin に定義されているタスクは以下の5つです: タスク 説明 Depends On

    「はじめての Android」開発環境 〜Gradle 編〜 : Java - 倭マン's BLOG