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

NetBeansが現場で使われないのは、Strutsばかりが現場で使われるのと同じ理由ではないか

本文略

Erlangでクイックソート

-module(qsort). -import(lists, [append/2]). -export([qsort/1]). qsort([])-> []; qsort([First|Rest])-> append([X || X <- qsort(Rest), X < First], append([First], [X || X <- qsort(Rest), X > First])).

バイナリーとテキストの違いではなく構造化と半構造化の違いか

半構造のメリットをテキストデータのメリットと取り違えて議論しているのか。データ長は可変長にしておけというだけの話ではないよね?。 半構造というのは、厳密な構造化しなくても計算リソース投入しちゃえばいいんじゃない?という話だと思うので、通信プ…

データ構造の選定より重要なもの

この話題、すっかり乗り遅れてしまった。 あえていわせていただく。コードはデータ構造の選定ができるだけはるかにましなのだ、と。バイナリーを使うかどうかなんぞ、その問題と比べれば屁ですらないのだと。 データ構造の選定よりもはるかに重要なもの、そ…

組み込み向けUMLが参考になるのかも

ブックマークコメントで、UMLでもできるという指摘をいただいたので調べてみたら、組み込み向けUML拡張では時相論理を取り入れているものがあるようだ。 これとかもそうなんだろうか http://www.object-report.jp/2007/12/18/marte/

クラウド対応のモデリング技術がおもしろくなるかもしれない

いま、大きいのはクラウドから小さいのはGPGPUまで、並行システムはなざかりです。 クラウドなど、並行システムが不可欠となったとき、並行システムのモデリング技法が必要になります。 でも並行システムを作るために使えるモデリング技法で、現場の技術者に…

情報系の技術者に一冊だけ読んでもらうならこの本

さて、いろんな本を取り上げたのだけど、かなり広い範囲を取り上げたので、それぞれそれなりに高い本だし、読む時間もないし、そもそもどこから手をつけていいやら、とか思った人も多いんじゃないだろうか。 今回取り上げたような内容を、1冊にまとめたよう…

OCamlでクイックソート

let rec quick_sort lst = let rec filter f n lst = match lst with [] -> [] | first :: rest -> if f first n then first :: filter f n rest else filter f n rest in match lst with [] -> [] | first :: rest -> quick_sort (filter (<) first rest) @…

Hadoopの一時ファイルの設定

Hadoopで一時ファイルの設定は、conf/hadoop-site.xmlでhadoop.tmp.dirの記述をすればいい。 注意しないといけないのは、ここで指定するのは、Windowsの場合はCygwinのパスではなくWindowsのパスということだ。 また、そうすると、JobTrackerのシステムフォ…

プログラムを動かす環境の本

プログラムをどう動かすというか、どうやって命令を発行するかという本を挙げて、プログラムをどう書くかという本もあげた。 これで、Seasarカンファレンスでの話での本の紹介は終わりなのだけど、ブログのエントリとしては、どうやって実際にプログラムが動…

SICPの価値

SICPをプログラミングの本だとして批判したら、そうじゃねーだろという反応が多く帰ってきた。 いまSICPを読むのは時間の無駄 じゃあ、SICPはどういう本か。 LISPを使って仮想マシンを作って、LISPコンパイラを作って実行させて、プログラムがどのように動く…

いまSICPを読むのは時間の無駄

SICPは、よい内容について書かれた本であり、最良の本だった時期もあった。 けれども、今となっては、理解が難しく内容の割には時間がかかる、時間の無駄ともいえる本といってもいいかもしれない。 もちろん、Schemeの可能性、数値計算、プログラミング、コ…

「xxxをblogに書くのはやめてくれ」などとblogに書くのはやめてくれ。

間違った情報をblogに書くのはやめてくれという趣旨なのだろうだけど、「正しい情報しか書いてはいけない」のだとしたらblogなど書けないし、「blogに書くのはやめてくれ」などといってる人も正しい情報だけを書いているわけではない。せめて、過去指摘され…

プログラムの書き方の本

今回は、プログラムの書き方の本。プログラムの宣言的な側面を扱うための本とでも言うか。id:t_yanoおまたせ。 ただ、こっち側はほんとに勉強を始めたばっかりなので、ちょっと目を通しただけで読んでない本もばかりだし、自分でもちゃんとわかってない部分…

プログラムの動かし方の本

Seasarカンファレンスで、基礎としてプログラムの動かし方であげた本。と、それに加えて挙げれなかった本。 ちなみにSeasarカンファレンスでの内容はid:tanamonがまとめてくれてる。というか、手書きスライドの書き起こしをしてもらってます。 「手書きで書…

プログラマの教育のための本

Seasarカンファレンスで「プログラムが組めるようになるためには何を教えればいいですか?」と聞かれて、「創るJava」も絶版だし、どうしようかと思いつつ、「教える」というときに考えないといけないことが書いてある本を紹介しますね、と言ったので、その…

観光客のように数学や物理を勉強する

最近いろんなことを中途半端に勉強して思うのは、なんだか観光客のようだなぁということだ。 現実的な問題として、専門家=その土地の住民にはなれない。 勉強するにしても、その分野の雰囲気を味わうことができるくらいで、まさしく観光のようだ。 そしてそ…

なにをやってるかというと

たとえるなら「HTTP通信のRFCの解説書を読んだのでHTTP通信するプログラム書いてみた」という程度のことです。

「クラスとは何かを集合論から考えなおす」を集合論から考えなおす

「クラスとは何かを集合論から考えなおす」について、素朴集合論から考えると混乱するとかZFCっぽくないのは意味がないとかいう指摘を受けたので、ちゃんと考えられるように準備をしてみる。 今回は準備だけ。そして続きがあるかどうかはわからない。 さて、…

ソフトウェア工学、ソフトウェア理学、ソフトウェア人文学

ソフトウェアには、3つの側面があると思う。 どういう切り口で3つの側面を取り出してもいいのだけど、とにかく3つの側面がある。 最近は、工学・理学・人文学の側面として考えるようになってきた。 たとえば、論理学などからプログラムの表現を考えていく…

クラスとは何かを集合論から考えなおす

いま論理学とか集合論とかを勉強してるので、クラスって何かという話のときも集合論として考えてた。 なので、そのとき考えたことをまとめておく。 まず、「なにか」があるとする。「なにか」はなんでもいい。 そして、その「なにか」の集合を考える。たとえ…

クラスとjava.lang.Classとクラス型と

id:SiroKuroさんところで、クラスに関する用語についていろいろ議論があって、なんとなくこういうイメージをもった。 クラスをあらわすいろんな用語があるのだけど、それぞれは「クラス」という抽象概念があって、たとえば「Javaオブジェクト」として光をあ…

Twitterのアーキテクチャと遅延のしくみを考えてみる

今日もTwitterは遅延してたんで、その遅延が起こるようなTwitterのアーキテクチャを考えてみるよ。Twitterの不具合から考えてみただけで、完全に想像であって、実際になにかの資料に基づいたりはしてないので、念のため。 まず、サーバー構成はこんな感じ。 …

人は神ではないことの証明

練習として、ブクマコメントにあった「人は死ぬ。神は死なない。故に人は神ではない。」の証明。 P・・・人 Q・・・神 R・・・死ぬ とすると、この命題は ( (P⊃R)∧(Q⊃¬R) )⊃(P⊃¬Q) と表せる。 記号は ⊃・・・ならば ¬・・・ではない ∧・・・かつ と読む。 と…

トマトが野菜であるなら、トマトサラダは野菜サラダである、の証明

Fx・・・xはトマトである Gx・・・xは野菜である Hxy・・・xはyで作られたサラダである から、トマトサラダは野菜サラダである、は ∀x(∃y(Hxy∧Fy)⊃∃y(Hxy∧Gy)) となる よって、トマトが野菜であるならトマトサラダは野菜サラダである、は ∀x(Fx⊃Gx)⊃∀x(∃y(Hx…

LCD-8000Uには12.1インチワイドのフィルムがピッタリ

あまりにも明るいので、遮光率の高さを目的に覗き見防止フィルタをつけることにした。 新幹線とかで使うのにはあったほうが嬉しいし。 けど、8インチというのは売ってなかったので、ちょっと大きめのものを。 で、12.1インチワイドというのを買ってみた。透…

LCD-8000UがVistaで使えない問題

8インチのUSB接続ディスプレイ、LCD-8000Uを買ったはいいんだけど、ノートのVistaにドライバがインストールできなくてかなしい思いをしてました。 インストーラが無言で止まります。 デスクトップのXPにはインストールできて使えたので、テレビ用モニタにな…

1台のマシンで並列実行するためのMapReduceフレームワークを作ってみた

ブックマークのコメントに 1台でもGbyte単位のデータを処理可能なプログラムを簡単に書けるのは十分なメリットだと思う。 とあったので、ついカッとなって作ってみた。 サンプルは前と同じく、クラスがJavaソース中でimportされている回数を数えるもの。 map…

エラー処理の方針とString#equalsの書き方

String#equalsを使った文字列リテラルとの比較の書き方として、str.equals("リテラル")と書くのがいいか、"リテラル".equlas(str)と書くのがいいかという論争がありました。 そこで、この問題について、エラー処理の方針と絡めて考えてみようと思います。 エ…

GoogleのMapReduceは僕たちに必要か?

ということで、Google MapReduceの実装であるHadoopを使ったMapReduceと、JMSを使ったMapReduceをやってみました。 メッセージキューを使って分散MapReduceを実装する HadoopでのMapReduceを気軽に試すサンプル これ何のためにやったかというと、そこらにあ…