String と java.lang.String は同じものなのか?

この記事は不正確です。無かったことにしてください。m(_ _)m Scala 2.7.5 で検証。 Scala で以下のようなトレイトがあったとします。 trait Hoge { def foo: String } それで、以下のような実装をすると怒られます。 // コンパイルが通らない class Fuga ex…

やっぱりJavaって層が厚いんだよね

「層が厚い」ってのは自分自身が積み上げたノウハウの厚さってだけで他の言語も厚いのかもしれないけど、とにかく今自分がJavaを中心とした開発でできていることを他の言語でやろうとするととてもじゃないけどやり切れないんですよ。 具体的な話をしますね。…

Whyも書け

重要なことなので何度だって言いますよ。 コンピュータシステムの仕様書を書くとき、以下の項目が文章として残されていますか? What - 何を(入力の形式) Where,Who - どこの誰が(どのコンピュータが) When - いつ(処理のタイミング。オンデマンド/バ…

再帰関数には @tailrec アノテーションを

Scala東北のMLに流れてきた記事です。後で読み返し易いようにここにもメモしておきます。 非関数型言語に慣れ親しんだ身としては、「while使わないで再帰関数使えよ」という関数型言語のスタンスを見ると真っ先に思いつくのが「言いたいことはわかるが、でか…

整数かどうかのチェックは見落としがち

Cubby の定義済みバリデーションクラスに NumberValidator というのがあります。これは、対象の値が少数であっても負の数でも数値と認識できれば OK というバリデータです。なので、正の整数だけ扱いたい場合はこれだけでは不十分だということです。 ところ…

Scala とよくあう Web アプリケーションフレームワークは?

Lift だろ常考。 なのでしょうか? Lift は Scala で作られているってだけで、そんなにいいものなのでしょうか? まだ駆け出しの私としては Lift は奇をてらいすぎてる感じがしてなりません(ORMは結構好きかも) ということで、Java の Web アプリケーショ…

本当に Scala は Java の半分のコーディング量で済むのか?

「Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)」(通称コップ本)の帯の背表紙のところに「コード量はJavaの半分以下」と書いてあります。 マジで? ということで、実験。 実験方法 みんな大好き Cubby の雛形プロジ…

Slf4J でロギング

Scala をやろうなんて尖った方は Java では Commons Logging + Log4J なんてとっくに卒業して Slf4J + LOGBack なんて構成を使っていたかと思います。 今回は、実はそれとはあんまり関係ない話で、Commons Logging でも使える話です。 Java でこんなコードが…

「より良い Java」としての Scala

「関数型言語とかって Java と違うパラダイムなら興味ないから」っていうあなた! そんなあなたも「より良い Java」として Scala を使うというのも良いと思いますよ。なぜなら Java の資産がすべて使える もちろん Java のクラスを継承することもできる Java…

関数型プログラミング脳を作るには

おそらく Scala(に限らずだと思うけど)を身につけるにあたって、Java プログラマが越えなければならない大きな壁の一つは「いかに関数型プログラミング脳を作るか」だと思います。 これは、手続き型プログラミングからオブジェクト指向プログラミング(OOP…

キモい! ……だがそれがいい

キャズムの向こう側(一般から見て)を突っ走ってる諸氏の間で最近、注目度が赤丸急上昇中の Scala。私もただいま勉強中です。↓この本が出たから俺も勉強はじめたぜ!って方も多いかと。Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programm…

すべてのものにはトリガー(引き金)がある

今、私が出入りしている会社で何やら新人研修的なものをやっているようなんです。Seasar2 を用いて何かのシステムを作っているようですが、トレーナーの語調からすると上手く行ってないようです。 それで、トレーナーの方が切々とトレーニーになにやら説明し…

久々に Web をそぞろみる

最近なかなか Web を閲覧できない状態でして、お盆休みを利用して久々に Web をそぞろみてます。 とりあえず、ようやっと Wicket 1.4 が正式リリースしたことを今更ながらに知りました。それから、Cubby 2.0 もリリースされていますね。 しかしながら、また…

ビギナー Web プログラマに一皮むけるためにやってほしい5つのこと

1. Web サーバの設定方法を覚えてほしい そんなに深くじゃなくてもいいんです。Apache でも IIS でも、なんだったら AN HTTPD だっていい(というか AN HTTPD って学習用にはかなりおすすめです)。それでどこにファイルを置くと外部からアクセスできちゃう…

そもそも「満員電車」なんかじゃない

満員電車を無くそう - xevraの日記 私は地方在住なので実害は被っていないのですが、長期出張で東京に行っていたときは常々思っていたことがあります。 このエントリでは「満員電車」って言っていますが、座席の数、つり革の数以上に人が乗っているというこ…

アドオンを入れるまでもなかった

前回のエントリの続き。アドオンを入れなくても対応可能でした。 アドレスバーに以下のように入力 about:config 自己責任だからね!と注意を受けるも、それをものともせず続行。 「general.useragent.extra.firefox」という項目に「Shiretoko/3.5」とあるの…

Ubuntu 9.04 で Firefox 3.5 を使いたければ User Agent を詐称するんだ!

Firefox 3.5 が出ましたね。Ubuntu 9.04 のデフォルトのリポジトリにはβ4があるだけなので、正式リリース版が使いたいという場合は PPA リポジトリを追加しなければなりません。その辺の手順は↓こちらが参考になります。 Ubuntu 9.04 の Firefox 3.5 と 3.5 …

Cubby 2.0 も(今のところ)GAE/J では使えない

悪いのは GAE/J で、バグらしい。 「2009-04-19」が詳しいです。 結構癖ありますねぇ、GAE/J。

GAE/J では Wicket のファイルアップロードは使えないかもしれない

GAE/J ではファイル出力が許されていません。ところが、Wicket では大きなファイルがアップロードされると一時的にファイルに溜め込むんですね。SessionStore みたいにこの辺も差し替えできないか(BigTable に突っ込んでしまうとか)考えてみたんですが、Mu…

Wicket + Maven なアプリを Google App Engine で動かす その2

昨日のエントリがあまりにも「動かすだけ」だったので、もうちょっとまともなアプローチを模索してみました。ポイントは Maven2 に GAE/J SDK 関連の依存性を追加 ロガーは java.util.logger を使いましょう ローカルで動かそう デプロイしよう Wicket のプ…

Wicket + Maven なアプリを Google App Engine で動かす

ミッションは、Wicket の QuickStart で作成した Maven プロジェクトにできるだけ手を加えることなく Google App Engine で動かすことです。 修正または作成しなければならない点は以下の 2 つです。 セッションストアを変更する。 appengine-web.xml を作成…

GIGAZINE が良いって言うから入れてみたら壮大な落書き集だったでござるの巻

Ubuntu をメインで使っている私は、ワープロは OpenOffice.org Writer を使うわけですが、クリップアートがいまいち貧弱です。なので、ググってみたら GIGAZINE さんの以下の記事を見つけました。 OpenOffice.orgのクリップアート数を劇的に増量する方法 - G…

人によってはほとんど見かけない Java 文法

独断と偏見でランクをつけてみました。 レア度 F : abstract よく IT ゼネコンさんが気にかける「一山なんぼのプログラマ」はほとんど見ることがないし、なんのためにあるのかもわからないでしょう。元 COBOLer でよれよれになりながら Java をやっている古…

20万〜30万円台のPCサーバってもっとも無意味なのではないか

というか、RAID 5 がついてる PC サーバって無意味な気がするのです。 この辺の価格帯のものって、零細〜小企業があたりが自社サーバ用に「奮発して」買うものというパターンが多いと思うのですよ。 でも、それが「町の SIer さんのすすめで入れました」ぐら…

Tripwire を運用するのは難しいね

Tripewire ( http://www.tripwire.org/ )を自分が管理しているサーバに仕掛けている方も少なくないと思いますが、ポリシーを設定するのは骨が折れますね。 チェック時にエラーがいっぱいでるので、/proc をチェック対象から外している方も少なくないと思う…

UI 設計で痛感したこと

最近、ユーザインタフェースを設計していて痛感したことがあります。個人的に「こりゃ、やってしまったな」と自責の念でいっぱいです。 それは何かと言うと、同じ画面にいくならば原則的に入り口(またはリンクの文言やボタンのラベル)は1つにすべきだとい…

Javadoc の書き方

みなさん、Javadoc 書いてますか? Javadoc は「API ドキュメント」と言われることが多いように、主にライブラリ的なプログラムで書いてこそのものだと思っている方もいるかもしれません。しかしながら、仕様書を Word や Excel(笑)で別途作ると、プログラ…

Wicket + Databinder + ActiveObjects が熱い

すごくいい。とってもいい。何がいいって、まず ActiveObjects から褒めてみますね。 使えるようになるまでがあっというま(設定やコード量的に)。DI コンテナとかいらない。設定ファイルももちろんいらない。 エンティティに合わせて CREATE TABLE を発行…

ActiveObjects にログを吐かせる

XML と完全にお別れしたい諸氏にとって(dicon だって XML だ)、Wicket + Guice + ActiveObjects という組み合わせは魅力的です。 しかしながら、そのままでは懇切丁寧なログを吐く S2Dao や S2JDBC に比べて ActiveObjects は物静かで中で何をやっているの…

Javadoc が書きづらい

Cubby で書いた Web アプリケーションの Javadoc 用のコメントを整備してるんですが、DI を使うと必然的に Setter が増えると思うんですよ。public フィールドでもいいんですけど。 それで、public と protected のメソッドとフィールドには必ず Javadoc コ…