新しいプログラミング言語を覚えるときの壁

構文の文法が違うというのはまあ教科書があるから頑張ればどうにかなるとして、それ以外で難しかったこと。 個人的に思い出せる壁を並べてみます。 関数を(変数に入れて)渡し、それを使うという考えがない クロージャも関数ポインタもコールバックもわかり…

Clojure でテキストファイルを読んでみる。(遅延評価)

遅延評価タイプにしながらも途中で閉じることができるようにすると、こういう感じになるようです。 (use '[clojure.contrib.duck-streams :only (reader)]) (defn file-reader [target] (let [r (reader target)] {:close (fn [] (.close r)) :seq (letfn [(…

Clojure でテキストファイルを読んでみる。

ファイルI/Oが少しなりともわかると応用が効きそうなので試してみました。まずは with-open を使ったものです。 ;-- ファイルを行リストにする (use '[clojure.contrib.duck-streams :only (reader)]) (defn file-to-lines [target] (with-open [r (reader t…

Closureによる部分リスト検索(遅延評価)

前エントリの部分リスト検索ですが、別に :all を使わなくとも遅延評価してしまえばいいやということでやってみたら、こんな感じになりました。 (defn indexof [coll subcoll & from] (let [sub (seq subcoll) length (count sub) head (first from) head (c…

プログラミングClojureを読んでみた。これは良い

JVM上で動く言語にはいろいろと興味があって、覚えたり QuickReflector 上に載せてみたりといろいろやっていたのは過去の話。他のことで忙しくなってしまって熱も冷めてしまったのですが、Clojure は気になっていたので日本語訳が出たと聞き早速購入して読ん…

*PHPとActionScriptにどっぷりな1年でした。

気が回らなくて、こちらいつのまにか1年近く放置していました。仕事で PHP/ActionScript にどっぷり漬かりつつ REST やら OSGi やら 眺めていたら QuickReflector もすっかり忘れている今日この頃。ところで PHP で、以下のようなコードを実行してみます。 …

JavaScriptでメソッド参照したときの奇妙な動作(解決?)

先日メソッド参照とメソッド呼び出しをした場合に this の値が違う、ということを書きました。(http://d.hatena.ne.jp/serene/20090319/1237451298)状況が分かりやすいように整理して書き直したコードはこうなります。 function Foo() {}; Foo.prototype.tes…

メインPC復活

電源を買い込んで交換することで復活しました。 電圧異常が起きていた 電源のFANに障害が起きて壊れたため、熱放散がうまくいかなくなっていた 何度か取り付け/取り外しをしていたCPUファンとCPUの間のグリスが固まってしまい、熱が逃げにくくなっていた。 …

文字列を処理する方法

文字列を処理するといえば、検索、抽出、比較、置換、整形ということに集約できそうですが、どういう手段を使うかについてまとめておきます。 検索 正規表現 indexOf メソッド lastIndexOf メソッド カスタム Scanner クラスを利用(自作なりDLなり) 抽出…

JavaScriptでのコードの書き方を4種類挙げる

JavaScriptの使い方として、4つのコードの書き方を挙げておきます。 スクリプトとして記述 関数として記述 オブジェクトとして記述 クロージャを利用 日常的に使うのはスクリプトとして記述、関数として記述の二つで十分でしょう。ただし、グローバル変数を…

略語に対する違和感から考えるマネジメント・ハザード

ひとつは「ワイヤー」、そして「ジャバスク」。もうひとつ「マシン」。これらの言葉が(私がかかわった状況で)何を指していたかというと、 ワイヤー=基本設計 ジャバスク=JavaScript マシン=コンピュータのハードウェア ということになるわけですが、い…

メインPCがダウン気味

PCが不調です。 音飛びがする 突然電源が切れる CPUが過熱する 3.3V電源が4Vほど出ている 導電性の埃でも詰まっていたのか、埃を除去したら音飛びはなくなり、AudioESPのダイアログが頻繁に表示されるというのはなくなりましたが、次いでほかのトラブルが発…

「見える化」が目指すもの。

昨今「見える化」という言葉がはやっていましたが、これは情報の共有をしましょう、ガラス張りだから何が行われているか一目で分かります、何が得意かが把握できれば有効に活用できるでしょう、といったような意味合いで推進されていたと思います。何を「見…

ソフトウェアファクトリの夢は諦めるべきかも

部品をあらかじめ作っておいて、それを組み合わせることでモノを組み立て、品質をあらかじめ確保した高度なソフトウェアを作る。そういう目的でソフトウェアファクトリという概念が、いわゆるリアルなマテリアルを相手にした製造業的な考え方に倣って作られ…

車輪の概念の再発明と車輪の再発明

車輪の再発明についてつらつら考えていたら似たような日記があったので。 http://d.hatena.ne.jp/gallu/20090210/p1同感です。「車輪の再発明をするな」というような言い回しで使われる言葉がありますが「既にあるものをわざわざ作り直すな」というような意…

AntのgetPhaseOfMoon

AntのAPIをつらつらと眺めていたときに見つけたものですが、org.apache.tools.ant.util.DateUtils#getPhaseOfMoon() というメソッドがあります。しかしこれは Ant の中のほかのどこからも呼ばれておらず、何に使うんだろうと思いながらもそのままにしていま…

JavaとScheme のベクタ

ベクタというとどうしても幾何ベクトルや遺伝子の運び屋を連想してしまうのですが、Java や Scheme でいうベクタは一次元配列のことを指します。どちらかというとこれはベクトル計算機などが示すところの「配列」のほうが意味が近いわけですが、要するに ひ…

入出力とそうでない処理を分ける事について補足

2009-02-20のエントリで書いた入出力とそうでない処理を分ける、ということについてはもう少し補足しておきたいことがあります。まずは、文字コードに集中的に気をつけることができる、ということです。Java や C# における内部の文字コードは Unicode です…

XMLデータはプログラムと思え

XMLデータの扱い(特にJava)についての話題です。パーサとドキュメントノードを読み取る仕組みさえあれば、プログラミング言語やハードウェアの壁を越えてデータをやり取りできるXMLは何かと便利なものです。こういう使われ方は好ましいと思いますし、十分…

プログラムの書き方(入出力処理とそうでない処理を分ける)

コンピュータ・ソフトウェアについてのことですが。何が見やすいか、わかりやすいか、エレガントであるか、全体の把握がしやすいか、といったことについてはあちこちで議論されているからここではとりあえず問題にしません。本題で述べるのは「ある切り口で…

log4jの設定を動的に変更するには。

log4jを使うことはあっても、設定を動的に変える方法があるというのはあまり知られていないようです。log4jの設定、つまりlog4j.propertiesやlog4j.xmlで設定するものを反映するには通常、クラスローダの再起動を必要とします。実はそんなことはなく、再起動…

java.util.ResourceBundleのリソースを動的更新にする

JavaDocには書いてあるものの、あまり見かけないネタなので記録を残します。ResourceBundleクラスは、ロケール固有のリソースをロケールごとにロードして使うためのクラスです。このクラスはメッセージリソースの集約管理などに使われるわけですが、いったん…

間が開きすぎました。

何かと忙しくなったりやる気がなくなったり、あくせくしていたらこんなにも間が空いてしまいました。とりあえず他のネタを混ぜながら再開していきたいと思います。

咳が止まらない

次の版の公開ができないままそろそろ3ヶ月。時間が十分に取れて体調がいいならとっくに終わっていることが未だ終わりません。アレルギー気味でお通じがおかしかったり、咳が止まらなかったりで。しかしまあもうそろそろかな。

Web フレームワーク "QuickReflector" をプレリリース中です。

QuickReflector は、JSP の代わりに使えるプレゼンテーション層のフレームワークです。 まだベータ扱いですが、こんなことを目標としています。 ・学習コストが小さい。 ・デザインとプログラムをうまく分離できる。 ・エラーが出たときの場所がわかりやすい…