プログラミング

Programming By Example のためのちいさなライブラリ

表形式で事前条件と事後条件の列を並べた動作例を1件以上用意して1件ずつ検証し、その結果をまとめてアサートするのにちょっと便利なライブラリ Tester を作ってみた。 データの(空行でない)先頭行に「事前条件」セルと「事後条件」セルを書き、次の行には…

バイナリ形式ファイルを扱うためのクラスライブラリ BinaryFormat.dll を作ってみた。

単体テストコードも書いてみた(BinaryFormatTest.dll)。 サンドキャッスル(SHFB)(別途ダウンロードしてインストールした)で生成したヘルプファイル(documentation.chm)もいちおう付けてみた。Microsoft VisualStudio 2013 で作ったソリューションのフォルダ…

Test'emが便利

Test'emというJavaScript用のテスティング・フレームワークが便利です。 https://github.com/airportyh/testem Got Scripts? Test’em!Unit testing in Javascript can be tedious and painful, but Testem makes it so easy that you will actually want to …

onclick属性には気をつけて

onclick属性にやられた。原因がわかるまでに、しばらく時間をとられた。 input(type="submit"),buttonのようなsubmitを引き起こすHTML要素にonclick属性でjavascript関数を指定する場合には注意が必要だ。と痛感。 なぜなら、falseを返さないとsubmitされる…

PDOによるSQL操作ツール SQLot*1

仕事でPHPでのDBアクセスを使うことが多くなってきたので、自宅で勉強がてら、SQL操作のできる簡単なウェブアプリを作ってたので個人的に公開します。*1 自分のためのツールなので、簡素な造りになっています。■スクリーンショット 起動すると、こんな感じの…

AssociatedParameter パターン

PHP では、パラメータの順序は関数定義で定義したとおりの順番で指定する必要があります。 foo($a,$b,$c); function foo($a, $b, $c) { //... } 通常、関数の引数をあまり多くするのは推奨されません。まちがいの元だからです。 bar($a,$b,$c,$d,$e,$f,$g,$h…

CreatorFunction パターン

プログラミング言語 PHP では、new でオブジェクトを生成しても、その結果には直接 -> 演算子を適用できません。 いきなりオブジェクトのメソッドを呼び出したりはできないんですね。 new Foo($param)->getBar(); //これはダメ 関数呼び出しの連鎖*1ができな…

Clean Code:改善(p.59)

"Clean Code"*1に掲載されているコード例を、自分なりに修正してみます。 "Clean Code"に掲載されている例はこうです。 String listItemContent = match.group(3).trim(); // the trim is real important. It removes the starting // spaces that could cau…

Clean Code:改善(p.57)

"Clean Code"*1の p.57 に掲載されているコード例を、自分なりに修正してみます。 "Clean Code"に掲載されている例はこうです。 public void testCompareTo() throws Exception { WikiPagePath a = PathParser.parse("PageA"); WikiPagePath ab = PathParser…

Clean Code:改善(p.28 Listing 2-2)

"Clean Code"*1に掲載されているコード例を、自分なりに修正してみます。 まず修正対象となる元の悪い例。"Listing 2-1 Variables with unclear context."("Clean Code" p.28) private void printGuessStatistics(char candidate, int count) { String numbe…

Clean Code

「清潔なコード」、「行き届いたコード」とでも訳すとよさそうな、「Clean Code」。 日本語版も出てますけど、英語版で読んでいます。Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)作者: Robert C. Martin出版社/メー…

uniqueSortedDiff.html

リリース対象ファイル名リストと、リリース先への展開結果の ファイル名一覧を照合し、間違いないことを確認する手間を少し 楽にするツールを作りましたのでご紹介いたします。 もしよろしかったら、使ってみてください。【ツールの機能】 ・2組の文字列のリ…

コードリライティング

プログラム理解とかプログラムスライシングでweb検索していたら、CodeSurferというソフトがあるらしい。その名前でもういちど検索すると、IEEE Software JULY/AUGUST 2003(Software Inspection特集号)の記事に説明があるようだ。("Tool Support for Fine-Gra…

巨大関数を理解する(その3)

仕事としては、FormHostMessageを含む外部プログラムをソースコードから理解してテストに使う、という必要がなくなりました。 それらを使ってのテストをしなくてよいということになったからです。 すでにアプリケーション開発に使われている開発物件が現在ま…

巨大関数を理解する(その2)

Nassi Shneiderman ダイアグラム(NSチャート)のツールは、Googleで検索したらいくつかみつかりました。ただ、実際にダウンロードして起動してみると、ちょっと期待している方向とは微妙にずれているような気がしてきました。 図表にすることで、確かにわか…

巨大関数を理解するには

とりあえず、延々と長い関数は、内部の処理を大づかみに分割することが必要だろう。 「Code Reading: The Open Source Perspective (Effective Software Development)*1」で紹介されていた、Microsoft Wordで読み込んで、印刷イメージの縮小表示で全体の概観…

最長不倒関数

仕事で、C++で書いたCOM(Common Object Model)のプログラムにメソッドをひとつ追加しました。(コーディングは、協力会社の人にコーディングしてもらいました。でも、半分ペアプログラミングのような感じです。) 単体ではテストを済ませ、仮リリースまでして…

アジャイルソフトウェア開発のためのマニフェスト

http://objectclub.jp/ml-arch/extremeprogramming-jp/5100/5168.html

「プログラム仕様記述論」

読みかけ。 プログラムの証明について、証明図を書く方法が説明されていて、難しくはないのに、なかなかめんどう。 「証明できる」ということが、どうも喜びに結びつかない感じ。

Haskellで現在時刻

import Time import System.IO.Unsafe import Control.Exception showNow :: IO () showNow = getClockTime >>= toCalendarTime >>= (\d -> putStrLn (calendarTimeToString d)) stringNow :: String stringNow = unsafePerformIO $ getClockTime >>= toCale…

Haskellで組合せ

順列ができれば、組合せもできます。 リストから、m 個だけ取り出す組合せ。 組合せでは、順列のうち、並べ替えても同じにならないものだけを取り出します。 つまり、いったん順列を考えて、そのうち最初のm個だけ取り出す。 さらに、ここから並べ替えて同じ…

Haskellで順列

順列というのは、要素の順番を区別するような、ひとそろえの並べ方。 リストを渡すと、その要素を並べ替えた結果(リスト)のリストを返す関数にしてみます。 ある長さのリストの順列を作るには、すべての場合をもれなく考えないといけない。 いきなりすべての…

高速道路のたとえ

これまで携わっていた仕事上のプロジェクトも、そろそろ終わる。 この仕事では、プログラム設計(詳細仕様)を検討するときに、途中からHaskellでプロトタイプを書くということをやってみた。 最終的にはC++のコード設計を提供する必要があった。とはいえ、実…

Σ(総和)とかΠ(総積)をHaskellで定義する

id:Nabetaniさんが、日記に結城浩さんのサイトからのリンクがあって嬉しいと書かれているのを見つけた。 私の書いたものにまでリンクしていただいていた。(Nabetaniさん、結城さん、ありがとうございます。) ところで、数学に、総和記号Σというのがある。 高…

既約分数

id:Nabetaniさんの日記*1にコメントをした。 せっかくなので、自分の日記にも少し書いておこう。題材は、結城浩さんが2003年の暮れに公開されていた問題*2。(この問題は、ちょっとしたドラマ仕立てで書かれている。でもそこに登場する出題者の少女は、いっ…