似非プログラマのうんちく

「似非プログラマの覚え書き」出張版

MyBatis + Guice でカンタン DAO 実装(その 1)

O/R マッパーである MyBatis と軽量 DI コンテナ Guice による DAO 実装について、今回から数回に分けて書きます。 MyBatis とは MyBatis は iBatis の後継となる O/R マッパー。マッピングファイルに SQL を記述し、インターフェースを用意することで、マッ…

JUnit4 による例外発生時のメッセージのテスト

JUnit 4.7 からの機能で、例外が throw されたときのメッセージ(getMessage で取得できる文字列)をチェックすることが出来るようになったらしい。具体的には、同じ例外クラスを throw するが、ケースによってメッセージが変わるような場合に、@Test(expected…

JUnit による単体テストの自動化

JUnit は Java における単体テストの自動化をサポートするサードパーティー製のライブラリ(フレームワーク)である。が、これだけの説明では何のことかわからないと思うので、もう少し詳しく説明する。 単体テストの定義と意義 単体テストとは ? 単体テストと…

Sass はプログラマの三大美徳を満たす

このブログの究極の目標は、皆さんにプログラマの三大美徳、短気・怠惰・傲慢を身につけていただくことである。今回は、Sass を例にとってプログラマの三大美徳を見ていただこう。Sass とは ? : Sass: Syntactically Awesome Style Sheetsある CSS で以下の…

Scala で階乗

非負整数 n に対して n の階乗を出力するプログラムはいわゆる「再帰呼び出し」の教材として良く用いられるが、言語によっては再帰を使わなくても書けることがある。で、関数型の要素を持つ Scala で上手いこと書けないか、とまず試作したのがこれ。 def fac…

文字列のリストの各要素を一行ごとに改行させて表示する

文字列のリスト([String] 型)の最初の n 個を取り出して 1 行ごとに表示する関数。意外と使い勝手あるんじゃないかと思うので Gist に上げてある。utf8-string を使ってマルチバイト文字対応してますので utf8-string がないと動きません。あしからず。 gist…

某ドワンゴ社員の発言への所感

今日は料理のお話をします。ある料理店でコックたちが新しいメニューを考案しました。しかしそのメニューはお客さんには評判が悪く、口々に「昔のメニューに戻してよ」と言われる始末。仕方なく店主は新しいメニューを諦め、昔のメニューで出直すことにしま…

よくわかるかどうかわからない現代魔法(その 4)

C

今回はまとめです。今までプログラミング言語の話を「魔法」にまつわる言い回しを用いて書いてきましたが、改めてプログラミング言語(C 言語)の言葉に置き換えるとだいたい以下のようになります。 「魔法」用語 C 言語の用語 魔法 プログラム本体 魔導書 ヘ…

よくわかるかどうかわからない現代魔法(その 3)

C

今回は「二つの『ルーン文字』の効力を入れ替える『呪文』」を作ってみたいと思う。 第一の失敗 まずは「呪文」を作る前に、どうすれば「二つの『ルーン文字』の効力を入れ替える」ことができるか考えてみよう。素朴に書くとしたらこうだろうか。 #include <stdio.h> </stdio.h>…

よくわかるかどうかわからない現代魔法(その 2)

C

前回の続き。 自分で「呪文」を作る 古代魔法でもいくつかの呪文を組み合わせて新しい呪文を作り出すことはあったであろうが、現代魔法でももちろん可能である。今回は「税抜き価格を書き添えたら、税込み価格を教えてくれる『呪文』」を作ってみよう。 #inc…

よくわかるかどうかわからない現代魔法(その 1)

C

ライトノベル「よくわかる現代魔法」で扱われるところの「現代魔法」が「プログラミング」のことであるのは、読んだことがある方ならご存じかと思う。今回は C のプログラムを題材に、いかにも魔法を解説するかのごとく、どうやってプログラミングを進めるか…

運用方針

徐々にはてなダイアリー「似非プログラマの覚え書き」を本当に覚え書きなどに、はてなブログ「似非プログラマのうんちく」を講座的な内容にしていく予定。講座なんてご大層な内容は書けませんが。

まずはテスト

はてなブログでも syntax highlight が使えると聞いて。 class Hello { public static void main(String args[]){ System.out.println("Hello, World!"); } } class Integer def ! (1..self).inject(1, :*) end end puts 3.! # => 6 puts 0.! # => 1