Java

関数型のテンプレートエンジンを作ってみる

以下のあたりで言及していた、「関数型言語としてのテンプレートエンジン」というのがどういうものなのか、とりあえず作ってみる事にする。 HTMLテンプレートと関数型言語について - terazzoの日記 テンプレートエンジンと関数型言語(思案中) - terazzoの日…

HotSpot JVMの最適化オプションについて調べる

Javaの最適化の議論で「インライン展開」「エスケープアナリシス」などの用語が出てきていて、気になって調べたところ、java実行時のオプションで最適化の方法を指定したり実行過程を表示したり出来るらしい。 主なオプションについて Java HotSpot VM Optio…

数値のFizz、Buzz等への変換を、Javaで通常より直感的に表現したい

お題: 数値のFizz、Buzz等への変換を、Smalltalk(とRuby)で通常より直感的に表現したい - Smalltalkのtは小文字です ここで #fizz には n (#fizz の文脈ではレシーバーである self)が 3 で割り切れるときに、'Fizz' を返す代わりに「キー -> 値」で生成…

これはモナドですか?

はい、只のメソッドチェーンです。 前回のはあんまりに簡単に済ませすぎたので、もう少し掘り下げてみる。 前回のコードの振り返り モナドっぽいところがないかといえば、この辺がそうかも。 unit(or return)っぽい部分: final Option<T> option = target == nu</t>…

Option型をmaybe風に使ってみたかった

例によって実用性皆無の実験的なコードですが…… id:j5ik2oさんの作られたOption型 Javaでも、ScalaのOption型と似て非なるOption型を作れないかなーと思い、思いつきと勢いでコード書いてみました。 は良いアイデアだと思うのだけど、メソッドチェーンのよう…

Javaで末尾再帰最適化をする。(?)

お題: http://d.hatena.ne.jp/wasabiz/20110118/1295335821 Rubyで末尾再帰最適化をする。 - Homoiconic Days Javaなどの言語では、通常、再帰を使ったプログラムは、呼び出しが深くなるといつかはStack Overflowで実行時エラーになってしまう。それに対して…

Twitterのタイムラインであけおめtweetを収集する

"happy new year"と発言した人でplaceが設定されている人はその緯度経度の平均(ポリゴンの頂点なので平均はおかしいけど)を取得して表示するよ。 ソースコード ソースコードが酷いのは30分ぐらい前に思いついて作ったからだよ。 追記: ログ残したいのでちょ…

JD-Eclipseがうまく動かないときのチェック

ソースコードがある場合はそれをアタッチするのが一番良いと思うんだけど、急いでざっくりみたいときの為に一応動くようにしておきたい。基本的にJD-Eclipseをhttp://java.decompiler.free.fr/jd-eclipse/updateから入れれば動くはず。 動かないときはチェッ…

漢数字を数値に変換する(JParsec版)

一応Java版も作った。jparsec 2.0用です。jparsecはここから落とせるのが本物です。だからどのjparsecだよ。 package sample.janumber; import junit.framework.TestCase; import org.codehaus.jparsec.Parser; import org.codehaus.jparsec.Parsers; import…

JavaでLoan Pattern(をやってみたかった)

Scalaで関数を使ってC#のusing句(リソースの解放忘れを防ぐステキ構文)みたいなことが出来るらしい。 自動的に閉じるSource - ( ꒪⌓꒪) ゆるよろ日記 リンク先より引用 type Closable = { def close():Unit } def using[A <: Closable,B]( resource:A )( f:A => B ) = try { f(resource) } finall</:>…

漢数字を数値に変換する(DSLっぽく)

d:id:terazzo:20101212:1292147950のやつ、実は先にJavaで書いてみてた。 メソッドとかは一つずつ定義している。実装の方はProxy使えば少しだけ短くなるかもしれない。 使い方 本当に使うんならちゃんとPOJOクラスにしよう。あと修飾子もちゃんと付けて。 im…

コード値をEnumを使って安全に扱う

例えば会員情報の性別や血液型のように、データベースに定数項を格納する際にコード値(数値)を使う事が多いんだけど、設計書でコード値の対応付け(男性が1で女性が2など)を決めていたとしても、コーディング上も間違いやすく、入力画面を作る際にも対応付け…

unrestricted policy filesって何なの

Bouncy Castleとかで言うところのunrestricted policy filesって何なの かと言うと、 http://java.sun.com/javase/downloads/index_jdk5.jsp (Java5) http://java.sun.com/javase/downloads/index.jsp (最新) のページの一番下にある、 「Java Cryptography …

Sun JavaMail(mail.jar)とApache Geronimo(geronimo-j2ee_1.4_spec-1.0.jar)の競合

クラスパスにJavaMailの(Sunのリファレンス実装である)mail.jarとgeronimo-j2ee_1.4_spec-1.0.jarが両方含まれていると、SMTPやPOP3などのプロトコル使用時にmail.jar側とGeronimo側の実装が混在して使用され、うまく動かないことがある。 cf: http://s2mai.…

Webコンポーネントで検索条件を組み立てる

管理ツールなどの検索フォームで、使ってみて後から検索条件を増やしたくなることって結構ある。 その度にテンプレートファイル、フォーム、アクション、ロジッククラス、DAOクラスのメソッド、DAOクラスのアノテーションや外だしSQLファイルなどを変更しな…

taglib+テンプレートベースの部品コンポーネントの作成

JSPのtaglibを書いていて思うのだけど、Javaのソースコード内に直接HTMLのタグを書くのはあまり気持ちよくない。 解決策として、パラメータを加工してコンテキストに渡すだけのカスタムタグを作り、HTMLのレンダリングはタグで囲まれた内側のHTML部分でおこ…

内部イテレータを外部イテレータに手動で変換してみる実験

前回の続き。 内部イテレータを書くのは簡単で、外部イテレータを書くのは難しい。となれば内部イテレータの実装を元に外部イテレータ化できないかと考えた。 こういうのには継続渡し形式(Continuation Passing Style、CPS)というのを使うと良いらしい。 参…

ツリー構造用の外部/内部イテレータの実装

お題: 1については、コレクションのデータ構造が複雑化したときに、yield文の無いJavaで外部イテレータを作るのは結構骨が折れますが、内部イテレータなら要素を順に辿ってコールバックするだけなので簡単です。 外部イテレータと内部イテレータ - kaisehの…

ApacheのアクセスログをSQLで解析する

Apacheのアクセスログ(CustomLog)を読み込みJoSQLを使って絞り込んだり集計したりしてみる。 前提 パーサの処理をはしょったりする為にいろいろ条件を決めておく。 ログ出力は空白区切り。(CLFやCombinedと呼ばれるような形式) 空白を含む要素は「"」で囲む …

erasureの働きがよく分からない

clazz.getAnnotation(Xxx.class)はキャストする必要がある? - yvsu pron. yas はてなブックマーク - clazz.getAnnotation(Xxx.class)はキャストする必要がある? - yvsu pron. yas java.lang.Class(およびそのスーパーインタフェースjava.lang.reflect.Annota…

オーバーライドされたメソッドの元のメソッドを呼び出す実験

お題: Overrideされた、元の(スーパークラスの)メソッドを 呼び出す方法ってないですかね? Overrideされた元のメソッドを呼び出す方法 - 谷本 心 in せろ部屋 方針 JavaHouse-Brewers36709 Re super クラスのメソッドの呼び出し方によるとinvokespecialを…

HTMLテンプレートの再帰でツリー型のデータを表示する

ツリー構造を持ったデータを、Mayaaのテンプレートを再帰的にinsertすることで表示する ソース こういう階層構造のデータがあったとする package sample.model; import java.util.Arrays; import java.util.List; public class SampleUtils { /** 階層構造を…

データの一覧をグループ毎に表示するMayaaプロセッサ

タイトルのものを作ってみた。 背景 DBから取得した値を一覧表示するようなページで、デザイン変更があってデータをグループ毎に表示しなくてはいけなくなることが時々ある。(これの下二つのような感じ) そういう時は、アクションなどでループを回してデータ…

続・不動点関数のJava実装

fix()からのfix()への言及を無くす 前回のでほぼ完成していた。 Bridgeから呼んでいるFixUtils.fix()を展開してやるだけ /** ブリッジ的なもの */ public class Bridge { private FuncMaker funcMaker; public Bridge(FuncMaker funcMaker) { this.funcMaker…

不動点関数(反則版)のJava実装

自分の頭の悪さを晒すようで恥ずかしいんだけど、勉強中に作ったクラスを上げるよ。 Y combinatorが分からない HTMLテンプレートと関数型言語の接点を探るべく関数型言語の勉強を始めたのはいいけど、さっぱり要領を得ない。Java でラムダ - IT戦記のY combi…

レイアウト側の属性を制御する

Mayaaのレイアウト共有機能では、タグ単位での置き換えは可能だけど、レイアウト側のタグの属性のみを置き換えることは普通の方法では出来ないようだ。 コンポーネントのinsertの場合とは違い、extends時にbindingで変数を渡すことができない。その代わりにp…

コード値の表示をtaglibでおこなう

Strutsでデータベースの内容を表示するとき、コード(ID値)で格納されている値を名称で表示したいことって結構あります。 (例えば性別を1→「男」、2→「女」で表示するとか) アクションでデータを取得した際に処理を書いて名称に変換したり、名称に変換するプ…

テンプレート切り替え機能を拡張する

Mayaaには一つのmayaaで複数のテンプレートを切り替える機能がある。(参考: 3-10. テンプレート切り替え : Documentation - JavaServer Templates "Mayaa") たとえば利用者の使用言語に合わせてその言語用のHTMLを使う、というような用途が想定されているら…

Media KEGのKLSを自動でタグ付けする(手抜き)

去年KenwoodのMedia Keg HD60GD9ECを買ったのはいいけど、タグ付けが面倒臭くてずっと放置していた。最近いろいろ試してプログラムからタグ付け出来るのが分かったので、ある程度自動で付けられるようにしてみた。 背景 Media Keg HD60GD9ECは高音質が売りの…

真・plist形式のxml読み込み用digester-rules(およびクラス)

iTunesでライブラリとして読み込まれた楽曲の情報は、所定のディレクトリに「iTunes Music Library.xml」というファイル名で保存される。今回、このファイルの内容を読み込む必要があったので、読み込み用のプログラムを書いてみた。 iTunes Music Library.x…