2009-01-01から1年間の記事一覧

JavaでARを試してみる

冬休み中にARをやってみようと思い*1、とりあえずサンプルを動かしてみました。Java で使える AR 用のライブラリを探したところ、ARToolkit を Java に移植した NyARToolkit というものがあったので、これを試すことにしました。NyARToolkit は http://nyatl…

The Cake Pattern による DI

前に、Java の DI コンテナと Scala の組み合わせはどうにもいまいちと Twitter でつぶやいていたら、とある人から Programming Scala に DI のサンプルがあるよ!っておしえてもらいました。以下の URL は Programming Scala の DI についての箇所です。*1 …

null を None に変換する implicit conversion

Java のライブラリを利用していると None を返してほしいところで null を扱うことになります。if (value == null) ... とか value match { case null => .... } とか書くのに嫌気がさしてきたので、implicit conversion を利用して Option 型に変換するよう…

scala.swing.PopupMenu を実装

Scala には swing をラップした scala.swing というパッケージが標準で含まれています。Panel、Button、Table などのコンポーネントが Scala から扱いやすい形で提供されている一方、 JPopupMenu や JTree といったコンポーネントは提供されていません。 し…

Actorでの例外処理

Scala の Actor は、メッセージ処理中に例外が発生すると Actor 自体が終了するようになっています。 例外を処理したい場合に、今までは case を try 〜 catch で囲んでいたのですがどうもいまいちな感じでした。以下は try 〜 catch で囲んでいる例です。 a…

苦手の会にいってきました

情報科学苦手の会(否、若手の会)というのが開催されていたので、いってきました。 にがてにがてといいつつ、皆さん明らかにスペシャリストだったのがなんともww 私の知識が、どの分野でも、いかに浅いか実感させられましたorz ネットワーク関係の発表は非常…

標準入力をリストみたいに扱う

Scala では Console.readLine などを使うことで、標準入力を読み出せます。 val line = readLine println(line) 一方、すべての行を読み出す場合は Stream を使うと、Scala らしく書けました。 val lines = { def tail: Stream[String] = readLine match { c…

Scala 発火村(hack-a-thon)にいってきました

22(日)に行われた Scala 発火村に行ってきました。主催の id:yuroyoro さん、お疲れ様でした。 皆さん、黙々と学習&コーディングという感じでした。私はというと、twitter 上の TL 読むのに忙しくて*1、あまりコーディングできていなかったりします(汗 それ…

IntelliJ IDEA 9 Community Edition + Scala Plugin セットアップ手順

※(2009/12/14)現在は、IntelliJ IDEA 9 の正式版がリリースされています。Plugin Manager より Scala Plugin を正常に利用できるため、正式版の利用をお勧めします。ちょっと前に IntelliJ IDEA がオープンソース化しました。Eclipse の Scala プラグインは…

そろそろ準備をはじめねば・・・

予定日は来年の2月なので、そろそろ何を買わないといけないかとかを調べ始めないといけないです。 ということで、手始めに http://d.hatena.ne.jp/higepon/20091020/1256041805 を熟読。妊娠/出産/育児系の雑誌は広告ばかりで情報を得づらいので、それよりも…

リストからインデクスをキーとしたマップを生成 - 解決

昨日の続きです。 id:yuroyoro さんのおかげで、ものすごいすっきり書けちゃいました。 val map = Map(list.zipWithIndex.map(_.swap): _*)これだけ。なんてすっきり! Java だったら・・・ final Map<Integer, String> map = new HashMap<Integer, String>(); for (int i=0; i</integer,></integer,>

Vista でスリープから復帰後にオーディオデバイスが反応しなくなる問題

表題の問題に長らく悩まされていたのですが、ぐぐったら解決策らしきものを発見しました。 ちなみに当方の環境は VAIO の type-T に Vista が入っている状態。以下のリンクから修正プログラムを入手して、実行するだけ。 実行時には、余計なプログラムはすべ…

リストからインデクスをキーとしたマップを生成

まれに必要になる処理なのですが、美しく書くにはどうしたものか・・・ リストのサイズと Range を使えばもっとシンプルにかけることに気付きました。というか、気付けよ私(ase scala> val list = List("foo", "bar", "baz") list: List[java.lang.String] =…

共変とか反変とか

共変 Java の型パラメータは共変では無いので、List<Number> に List<Integer> を代入できないのは有名。これを許容していないのは、型の安全性を保つために他ならないのだけど、配列は許容していたりする*1。 Number[] array = new Integer[1]; array[0] = 0.1d; ただ、Java </integer></number>…

Java でパラメタライズされたコレクションをキャストする場合

「Javaでキャストする時」や、「Javaでキャストする時」に便乗。Java の場合、コンパイル後は型パラメータの型情報が無いので、型警告なしにキャストできないのは致し方ない。 id:Yamashiro0217 氏がやっているように、型警告の抑制を一箇所にあつめてキャス…

Lift フレームワークを使って Comet をためす(1)

Lift の練習として、Comet を使用してみることにした。最終的には Comet によるチャットが作れればいいかな・・・(希望) とりあえずは、表示されている時間を Comet を使用して1秒毎に更新してみる。情報源は id:yuroyoro さんのエントリと、TheLiftBook.pdf…

implicit def を使って、Scala で null 結合演算子を実現してみた

Scala の implicit def を利用して、C# などにある null 結合演算子を実現してみました。null 結合演算子というのは、対象としている値が null だった場合に別の値を返す演算子です。*1たとえば以下の C# コードでは、value3 の "foo" が表示されます。 stri…

Actor の返信待ちでタイムアウトを指定

返信待ちでタイムアウトみたいなキーワードで飛んできた人がいたようなので、即席でためしてみました。 import scala.actors.TIMEOUT import scala.actors.Actor._ object WaitResponseWithTimeout extends Application { val foo = actor { loop { receiveW…

型レベルプログラミング

kmizu(id:kmizushima)さんが twitter でつぶやいていたリンク先を、ちょろっと試してみました。 まーたScalaで型レベルプログラミングやろうとしてるけったいな人が。 http://twitter.com/kmizu/statuses/3630059097 リンク先: http://apocalisp.wordpress.c…

LT 大会で Scala のアクターについて発表しました

197X という 1970年代生まれの人らによる集まりで、Scala の布教活動してきました。 197X と当日の様子については以下を参照。 197Xs's wiki Twitter #197X 発表に使用したスライドはこちら。197x 20090704 Scalaで並行プログラミングView more presentation…

カスタムコンポーネントで注意すること(invalidateProperties / commitProperties)

カスタムコンポーネントを作っていて、ちょっとはまりそうになったことのメモです。Flex の作法ではプロパティ値の変更時にいきなり UI を更新してはいけません。プロパティ値が変更されたときは、変更を記録しておいて invalidateProperties を呼び出すに留…

継続して5秒間隔でHDDにアクセスが発生する(未解決)

ずいぶん前から気にはなっていたのだけど、CentOS を入れている自鯖で、5秒間隔ぐらいで HDD へのアクセスが発生し続けています。 HDD を省電力状態で動かそうとしている人達も、同様の現象で困っているらしく原因と解決策がいくつか見つかったので試してみ…

今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む)

今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む) - Onion開発再開しつつある日記 流行っているようなので、私も真似して書いてみる。 BASIC PC6001に搭載されていた BASICFDD 無かったので、打ち込み→遊ぶ→電源OFFで終了 N88-BASI…

Eclipse 上でのデバッグ環境メモ

Eclipse + PDT + ZendDebugger を使用してのデバッグ環境構築メモです。 Eclipse もともと使っていた Eclipse Ganymede を使用 3.4 系だったら何でも OK だとおもう。 PDT 2.0 系を Update Site からインストール http://download.eclipse.org/tools/pdt/upd…

VMware Tools のインストール

VMware ESXi 上に移行してみた CentOS ですが、そのままではディスプレイドライバが VMware 用になっていないためか X が起動しません。 そこで、VMware Tools をインストールします。 root でログイン 仮想マシン上の CentOS を起動し、root でログインしま…

Virtual PC で動かしてた Windows2000 も移行してみた

Virtual PC で動かしていた Windows 2000 も VMWare ESXi に移行してみました。 移行自体は簡単にできました。移行後、VMWare Tools を入れるまでは画面が16色 VGA になってます。VMWare Tools を入れて、普通に多色になってウマーとおもっていたら、マウス…

物理マシンのCentOSをVMWare ESXiに移行

すでに物理マシン上で稼働している CentOS を、試しに VMWare ESXi に移行してみます。 参考にしたサイトは http://blog.yunayuna.net/2008/12/ です。 VMWare Converter の入手 http://www.vmware.com/download/converter/ にアクセスして、ページの右側か…

テンプレートメソッドパターン

今日の役に立たない一言 − Today’s Trifle! −でテンプレートメソッドパターンについてのエントリを読んでいて、そういえば最近つかっているなーと。 Flex というか AS3 でですが。 ところで、AS3 では abstract メソッドというものが無いです*1。なので、abs…

Jetty + Seasar で LinkageError

S2JDBC を使用している Web アプリを Jetty 上で起動した場合に、以下のような java.lang.LinkageError が発生することがあります。 java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.…

Actor の link について訂正

以前、Actor の link について、以下のように書いたのだけど、勘違いしてたみたいなので訂正。 注意点?として link は、リンク元のアクタ内で設定する必要があります。 リンクは双方向になるように設定されるため、リンク元とか関係ないです。 link メソッ…