2008-01-01から1年間の記事一覧
PHPをJava VMで動かしたいと思ったので、いろいろ調べてみた。 Java VM用のPHPとしては、現状でCaucho QuercusとPROJECT ZEROのP8があるようだ。 どちらもPHP5.2をターゲットにしているみたい。 P8 ここで、PROJECT ZEROのP8の方は、WebSpere sMeshの一部み…
jQueryを勉強中。 やっぱ最初に作るのはグラフィックエディタだろJKということで、ドット絵エディタを作ってみた。 ただ作っても面白くないので、使えるのは16色まで、しかも横8ドットにつき2色までという、知ってる人は知ってる制約を付け加えてみました。 …
Java7からは if (s?.equals("リテラル")){ ... } と書けばいい
クラウドは単なるバズワードではありません。 クラウドがバズワードというのは確かで、具体的な定義もなくどんどん意味が適当になっていて、とりあえずサーバー複数で処理すればクラウドということになっていったりするんだと思います。 けれど、単なるバズ…
前のエントリ「ハードディスクもオンボードになるのかな?そうするとプログラムモデルも変わる。」で そうすると、SATAとかケチくさいこと言わず、大量にどっさりと転送できるようになったりするんじゃなかろうか。 などと書いてたら、PCI Expressでどっさり…
クラウドと一緒にやってきたもの 最近、クラウドが流行ってます。 GoogleのMapResuceから始まって、MicrosoftのAzureまで、大手のクラウド製品が出揃った感じ。 で、そこで、こんなクラウド製品が出ましたというときに、必ずといっていいほどそのクラウド用…
ハードディスクじゃなくてSSDですけどね。 そのあたりは、有機ELディスプレイを液晶ディスプレイと言っちゃう感じ。 ハードディスク/SSDをまとめたパソコン内臓ストレージの呼び名って、なんかいいのありますかね? まあ、それはともかく。 もう少しするとSS…
情報技術を構成するのは、計算理論、それを実現するハードウェア、そしてそれらを作り使う人です。 それら3者の関係を考えてみました。 計算論は、どういう計算が可能か、計算をどのように行うかという理論です。 ハードウェアは、物理的に計算を行う装置で…
もう落ち着いた話題だけど、SwingWorkerのサンプル書いて思い出した。 文字列リテラルの比較の話だけど、"リテラル".equals(s)よりもs.equals("リテラル")のほうが見やすいとか意味を反映しているとかあった。 けど、実際にJavaで文字列リテラルの比較などと…
EventQueue#invokeLaterなどを使えということなのですが、実際の処理をいちいちinvokeLaterすると処理の記述が分断して大変みにくくなります。記述の美しさよりも処理の安全さ、とはいえ、これはあんまり。 ということで、Java SE 6からはSwingWorkerという…
ここまでスレッドのサンプルを書いてきたのですが、主にプログラムがみにくくなるとか、めんどいとか、動くからえぇやんという理由で、やるべきことをやってないところがあります。 スレッドからのSwing操作とwaitの処理です。 Swingはシングルスレッドモデ…
このランキングを見て欲しい。 http://tophatenar.com/tag/java ここでid:higayasuoは5位にランクされているが、これ、ちょっと前まで20位あたりだったのだ。 このまえ一緒に飲んだときに、このランキングの話になって、id:higayasuoが「なんでJavaカテゴリ…
"".equals(stringVariable) は改悪だろうについて。 まず、空文字との比較は場合による。というか、空文字との比較なら s != null && s.isEmpty() か s == null || s.isEmpty() などと書くほうがいい。 あと、件の問題は改悪とは言わないまでも、問題文だけ…
追記:「見せかけの起動」に対応しました。2008/12/6 http://d.hatena.ne.jp/nowokay/20081206#1228542137 wait/notifyでスレッド間の同期を行ったのですが、wait/notifyは対象オブジェクトでsynchronizedする必要がありました。 ということは、逆にいうとsy…
追記:「スプリアスウェイクアップ」に対応しました。2008/12/6 http://d.hatena.ne.jp/nowokay/20081206#1228542137 ここまで、いろいろなロックを扱ったのですが、スレッド間での実行の制御も必要になります。 Javaでは、スレッド間の実行の制御にwait/not…
@daichan4649に「殺伐としたプログラムしか見ていないのでいつも癒されます」と言われたのだけど、「殺伐としたプログラム」ってどんなのだろう? こうですか?わかりません >< lockしたらunlockしません。早い者勝ち ソースはこれ
Javaの同期の基本はsynchronizedなのだけど、synchronizedはブロックとして使わないといけないので使いづらい場合がある。ロックの取得と開放を同じメソッド内で行わなくてはいけないし、異なるロックを自由なタイミングで取得開放できない。 そこで使うのが…
では、ReadWriteLockのサンプル。 読み込みスレッドは互いにロックせず、書き込みスレッドは他のスレッドとは同時に動かせない、というロックです。 サンプルでは、「か電車」が書き込みスレッド、「電車」が読み込みスレッドです。「か電車」が動くときには…
こないだのときは説明できなかったけど、CyclicBarrier いくつかのスレッドがバリアにたどりつくまで待ちます。 このサンプルではスピードの違う「電車」がまんなかで全ての「電車」がそろうまで待ちます。 コンストラクタでいくつのスレッドを待つかを決め…
こないだのスレッド入門のときに見せてたサンプル。 ブログ用に再構成。「電車」が3つずつ動きます。 Semaphoreは、同時に実行できるスレッド数を制限できます。 このサンプルでは3つに制限しています。 static Semaphore semaphoe = new Semaphore(3); セマ…
投機的実行をやってみたやつで、synchronizedを使ってたのだけど、ReadWriteLockを使ったほうが並列可能性が高くなるかもね、と思ってちょっと修正してみた。 ところで、最後のロックを次のように、ReadLockの中でWriteLock取得しようと思ったんだけど、デッ…
ところで、前回のGauss-Legendre法でBigDecimal版sqrtを使いました。で、この中の処理である程度の精度までをdoubleで求めてるのですが、これの効果がどれだけあるか確認しました。 まず、doubleを使ったsqrtで100桁までの円周率を100回求めると、処理時間は…
もう一個だけ、円周率を求めておく 算術幾何平均というのを使う。 これは、a, bについて とすると がnが無限のときanとbnが等しくなるというもの。 で、なんかいろいろ調べてたらどこからひっぱってきたか忘れたのだけど、次のようなプログラムで円周率が出…
唐突に平方根を求めてみます。 平方根を求めるときはを求めるとして という方程式の解を求めればいいことになります。 方程式の解はニュートン法で求めます。 http://www.akita-pu.ac.jp/system/elect/comp1/kusakari/japanese/teaching/Programming/2005/no…
スレッドのロックをする場合、読み込み処理同士は他に影響を与えないのでロックをする必要がない。 Javaでは、ReadWriteLockを使うと、読み込みスレッドは同時にいくつでも動くけど書き込みスレッドは他のスレッドが動いていると処理をまち、書き込み処理中…
Javaの++演算子はアトミックじゃない。つまり、++nは、n = n + 1と分解されたとき、nを読み込んだ後、1足した値をnに書き込む前に他のスレッドがnを変更していたら、すでに他のスレッドで行っていた変更が無効になる。 で、これはvolatileをつけてもだめ。 …
10000時間くらいやったら天才になれる、ということですが。 http://lifehacking.jp/2008/11/the-law-of-10000-hours/ ぼくは小学校のころからプログラムしてるので、そこから大学の最初の4年まで、趣味だけで組んでた時期は週3時間くらいプログラムしてたと…
このプログラムは止まるだろうか? このスレッドは、lockの上位32ビットと下位32ビットが異なると止まる。mainでは、lockに同じ乱数を上位32ビットと下位32ビットに設定する。 だから、プログラムが書いた通りに動けば止まらないはず。 import java.util.Ran…
こないだ、積分の練習に円周率を求めてみたんだけど、もうちょっとちゃんと円周率を求めてみる とりあえず、モンテカルロでってことなので、やってみる。 円周率をモンテカルロで求めるときには、ランダムに選んだ点が円に入るかどうかで判定します。 つまり…
Java Expert #03にNetBeans Profilerの記事を書きました。 たぶん、今日発売。 Java Expert #03:書籍案内|技術評論社 今回は「まるごとNetBeans」 半分以上NetBeansです。 けど、見本誌をながめてみて思ったのですが、id:shinさんが書かれているように、い…