my-notebook blog

Nashorn, AbstractJSObject を使って JS Array っぽいオブジェクトをつくって使う

Java8 からは Rhino に変わって Nashorn を使って Javascript を実行することができます。 Binding 機能を使えば、Javascript から Java 側で作成した自前のオブジェクト利用することも簡単です。

そこで、この機能を使っていろいろと実験をしているのですが、少し困った問題が出てきました。 Java の ArrayList オブジェクトを Nashorn に Binding して使う場合、 こちらとしては、Javascript の Array オブジェクトと同じように振る舞ってほしいのですが、 それとは微妙に作動が違うのです。

これを解決するためにいろいろ方法を探したのですが、どうやらAbstractJSObject を使って、 Javascript の Array オブジェクトと同じように振る舞うオブジェクトを実装すればよいようです。

続きを読む…

Java でパイプを使う / 複数の変換処理をつなげて処理する

Javaでパイプする方法がよくわからなかったので、いろいろ試行錯誤した結果をまとめました。 Javaで書くとコードが長くなるので、Groovy で記述しています。

ここでは話を簡単にするために、最初の入力として以下のような果物名を列挙したデータがあり、 これを二つのフィルタを使って処理する例を考えます。

melon lime lemon raspberry cherry kiwi banana apple orange grape

続きを読む…

HttpClient から URLConnection への切り替え ( Android )

すでにこの世は Android 8.0 OREO 時代なのですが、 Android 6.0 Changes の Apache HTTP Client Removal で、Apache HTTP Client が削除されたという件に今さら直面した話。

Eclipse時代のビルドのままになっていた Android プロジェクトを最新のSDKでビルドしようとしたら Apache HTTP Client が使えなくなっていた。 調べてみると 代わりにURLConnection を使え ということのようなので、いろいろ実装を直した結果の一部を備忘録的にシェアします。

続きを読む…

Java のパッケージ名を xargs と sed を使って別のパッケージ名に一括書きかえする

Eclpse などの IDE を使っていれば、Java パッケージ名の変更は簡単にできますが、 ここではターミナル上でさっと変更する方法をメモしておきます。

vim などでターミナルベースで Java のコードを書いていると、 いちいち IDE を起動するのは面倒なので、ターミナル上だけで操作が完結するこの方法は意外に重宝します。

続きを読む…

正規表現でテキスト置きかえ処理, 複数行にマッチさせる方法

正規表現で、.(dot)は改行にはマッチしない。これがポイントだった。 そこで、Pattern.DOTALL オプションをつけて、regex をcompileしてやれば、 .(dot)は改行にもマッチする。 したがって、以下のような Testクラスがあった場合に、改行含んだ状態のStringをコンストラクタに与えると、見事に複数行に渡っていても処理できる。

続きを読む…


Older Posts »