Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

programming

Twitter message queues move to Scala!

Twitter message queues move to Scala | The Scala Programming Language mixiのScalaコミュニティ経由。 TwitterのメッセージキューがRubyからScalaに! これは大きなニュースだと思う。 たしかに現在のアプリの主流であるWebアプリにScalaを使うことはま…

IE版Greasemonkey「Trixie」

Trixie GSと違ってメタデータセクションがすべて必要なので注意する。 // ==UserScript== // @name // @namespace // @description // @include // ==/UserScript==

フレームのロケーションを変える

window.frames["フレーム名"].location = 'URL';

PostgreSQLで一時ビューを作成する&削除する

CREATE [OR REPLACE] TEMPORARY VIEW department AS query OR REPLACEはPostgresの独自拡張で、すでに同様の一時テーブルが存在していても置き換える。 一時ビューやテーブルは「DBの」セッション内でだけ有効だけど、 Webアプリとかでコネクションプールし…

Yahoo! UI LibraryでJSONからツリービューを生成する

改修プロジェクト。 もともとツリービューがあったのだけど、レスポンスが遅いと。もとはDestroydrop » Javascripts » Treeを参考に プロトタイプを作ってビューを生成していた。 要素の数だけnewしていたため、とても遅かった。 サーバーサイドでJSON形式に…

このコードにしびれた!

CollectionUtils#collect() public static Collection collect(Iterator iterator, Transformer transformer, Collection collection) { if(iterator != null && transformer != null) { Object obj1; for(; iterator.hasNext(); collection.add(obj1)) { Ob…

Antのbuild.xmlで複数のディレクトリをまとめてコンパイルする

javac要素の子要素でsrc要素を複数記述する。 <target name="compile"> <javac destdir="${dest}" debug="on" classpathref="classpath"> <src path="../src1/"></src> <src path="../src2/"></src> </javac> </target>

TomcatでJNDIのDataSourceをDBCPを使って設定する

CATALINA_HOME\conf\Catalina\localhostのコンテキストXMLを次のようにする。 <Context path="/PATH" docBase="WORK_SPACE" workDir="WORK_DIR"> <Resource name="jdbc/name" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/name"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDa…</value></parameter></resourceparams></resource></context>

正規表現:文章中から文に「?」がない文だけを抽出する

^[^\?]+$

eclipse font size changerのアップデートサイト

http://eclipse-study.sourceforge.net/font-size-changer/updates/site.xml

eclipse3.4でJadclipseを使う方法

Jadclipseはeclipse3.3までしか公式には対応していない。 3.4でJadclipseを使うには、%ECLIPSE_HOME%\configuration\org.eclipse.equinox.simpleconfiguratorディレクトリにあるbundles.infoに下記内容を追記する。 net.sf.jadclipse,3.3.0,file:dropins\ecl…

AntでOutOfMemoryがよく出る

コマンドプロンプトで一時的に環境変数に設定する。 set ANT_OPTS=-XX:MaxPermSize=256m -Xmx512mやっぱりAntはコマンドからに限る。

eclipse3.4からのプラグイン追加

dropinsディレクトリに追加していく。 直下にJARを置いてもいいし。 eclipse plugins features という階層を作って置いてもいい。

Scalaの型

http://itpro.nikkeibp.co.jp/article/COLUMN/20090106/322252/ 以前コメントもいただいた水島さんの記事。 Scalaの型について。 共変、反変が整理されていてわかりやすい。 Scalaは言語仕様そのものが興味深いんだよね。おもしろいんだ。 『Wicket in Actio…

POSTサイズが2Mを超えるとき

TomcatでもJBossでもPOSTサイズが2Mを超えると、デフォルトの設定のままでは次のような例外が発生する。 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/appname] - POSTされたデータが大きすぎたので、パラメータが構文解析できませんで…

JavaScript配列に要素を挿入する場合Array#splice()を使う

同期が作成したプログラムを変更しなきゃいけないので解読中。 僕はJSは得意ではありません。 <html> <body> <script type="text/javascript"> var array = new Array('a', 'b', 'c'); // a, b, c, d array.push('d'); // a, d, e, c, d array.splice(1, 1, 'd', 'e'); // a, d, e, g, h, i, c, d array.</script></body></html>…

Pattern#split()をちゃんと理解した

"boo:and:foo" o 5 { "b", "", ":and:f", "", "" } o -2 { "b", "", ":and:f", "", "" } o 0 { "b", "", ":and:f" } ゼロの場合、このパターンの適用回数と配列の長さは制限されませんが、後続の空の文字列は破棄されます。Pattern#split()で第2引数であるli…

ゴスリングのインタビュー

ゴスリングの「よくわからんがとにかくすごい自信だ!」的なインタビューはいつもおもしろい。 一部では"JavaはすでにCOBOLのようなレガシーに近い"という声も上がっていますが…。 その意見にはまったく賛同しかねるね。 【インタビュー】Javaがレガシーだっ…

JavaがFlexに負ける??

ゲーム開発会社Sharendipitous Moments社のブログに最近投稿された(リンク)「私達はFlashに乗り換えます。その理由は…」というエントリを皮切りにJavaが、Flexのような、RIA技術に負けてしまうのではないかという議論が始まった。 InfoQ: JavaはFlexに負けて…

テストカバレッジの意味

1. カバレッジはしっかりとしたテストが書かれている状況でのみ意味を持つ。役に立たないくだらないテストが書かれることを防ぐことはできない。 2. カバレッジはテストが通過した行/分岐を測定しているだけに過ぎない。 3. カバレッジはテストが不十分かど…

静的型付け言語の優位性

Anyway, read Guido's take and especially the comments. Here is one I found particularly interesting, from David Pollak, the creator of Lift: But, unlike my Ruby code, [with Scala] I only need 50%-60% test coverage (vs. 95% coverage) to hav…

メイン開発環境としてのMac

開発者の中にはMacはまだ開発用としては遅く、チューニングも充分ではないと感じている人もおり、仮想メモリシステムのページングのパフォーマンスの悪さや、デフォルトのネットワークファイルシステムのAFSに対する不満などを耳にする機会が多いという。 ス…

Scalaでクロージャ

Scalaでクロージャする超簡単なサンプル。 package sample object ClosureSample extends Application { def makeCounter() = { var count = 0; () => { count += 1 count } } var count = 100; val counter = makeCounter() println(counter()) println(cou…

「モナドは象だ」の翻訳まとめ

とてもエントリが多くの回にわたったので、まとめます。 One Div Zero: Monads are Elephants Part 1 モナドについて調べていく(7) - Fight the Future じゅくのblog モナドについて調べていく(8) - Fight the Future じゅくのblog モナドについて調べていく…

モナドについて調べていく(23)

One Div Zero: Monads are Elephants Part 4の翻訳続き。長かった連載もこれで最後です。 Ladies and Gentleman I Present the Mighty IO Monad(みなさん、すばらしいIOモナドを紹介します) The IOAction.apply factory method takes an expression of type …

ScalaでCPS(継続渡しスタイル)

まるごとJavaScript & Ajax ! Vol.1を読み返してCPSを学んでみる。 def sumIterTrump(i: Int, part: Int, cont: Int => Unit): Function2[Int, Int, Function0[Int]] = { if (i > 10) { cont(part) null } else { println("progress " + i + "/10") sumIterT…

末尾再帰とは?

CPSを学ぶためにまるごとJavaScript & Ajax ! Vol.1を引っ張り出してきたけど、その前に末尾再帰を学ぶ。 末尾再帰とは 末尾再帰(まつびさいき)とは、プログラミング手法のひとつで、再帰のある関数またはプロシージャのおこなうべき最後のステップが、関…

モナドについて調べていく(22)

One Div Zero: Monads are Elephants Part 4の翻訳続き。 That Darn Property 3(最悪の特性3) The 3rd property said that the world can only be in one state at any given moment in time. I haven't solved that one yet and here's why it's a problem3…

モナドについて調べていく(21)

One Div Zero: Monads are Elephants Part 4の翻訳。 今回からパート4です。 ずっと気になっていた、IOとモナドの関係に入りました。 Until you experience an adult elephant first hand you won't really understand just how big they can be. If monads …

モナドについて調べていく(20)

One Div Zero: Monads are Elephants Part 3の翻訳続き。 これでパート3は終了。 The Second Zero Law: M to Zero in Nothing Flat(第2のゼロの法則:すぐにMをゼロにする) The reverse of the zero identity law looks like thisゼロの同一法則を逆にすると…