プログラム

ScalaでbinarySearch

標準ライブラリとGoogle先生をざっと眺めた限りScalaの標準コレクションに無さそうだったので。 もし見つかったら更新します。 ここではJavaのjava.util.Collections#binarySearchを使うことを考えます。 def toJavaList[T](arr: Seq[T]): java.util.List[T]…

標準出力された内容を貰ってくる遊び

プログラムで標準出力(System.out)に対して書き込んだ内容を取得するための方法。 例外安全性とかは考慮していないけれど、おもちゃとしては十分。 System.setOutでPrintStreamを継承したデリゲータを登録する。 ここで、このStreamのwriteメソッドに書かれ…

sbtテスト実行時におけるエラーメッセージの短縮表示方法

http://d.hatena.ne.jp/a-hisame/20100715/1279183871 ここで「sbtのテストエラー時のメッセージは例外のスタックトレースなので長い。何か良い方法は無いのかしら」と書いていたが、簡単(だが、あまり汎用的ではない)解決法を見つけたので記述しておく。 …

JavaでOption

ScalaのOptionが羨ましかったので、自分で使うために作ってみた。 使ってみる // Java public Option<String> castString(Object obj) { if( obj instanceof String) return Option.Some((String)obj); return Option.None(); } // Scala def castString(obj: java.l</string>…

sbt (Simple Build Tool)の導入とscalatest

TDDBC名古屋で多少使える用になったsbt + scalatestが便利なので、簡単に使い方をまとめておこうと思います。 導入 http://code.google.com/p/simple-build-tool/wiki/Setup ココを参考に。 Windowsだと、batファイルを作って、適切なjarファイル名に変えま…

「誰にでも読めるソースコード」は良い物なのか?

「プログラムは誰にでも読めるように書くべきである」 そう言うことも聞くし、今日行った会社の説明会で少しそんな話を聞いたので、自分の意見をまとめて見ようと思う。 なお、あくまで持論であり、今の考えを纏めたものなので、異論は認める。 4/16追記:ま…

事前条件で楽できないかなーという考え

今回の実装例はJava なので、Javaでできる中で話を展開してみる。 ただし、絵空事はあり。2/24 追記: あくまでDbCの一実装として例外のパターンを使っているに過ぎない。 DbCの事前条件として用語を使うのであれば、例外を投げるのが必ずしも正しいとは限ら…

FizzBuzz with TDD

シナリオ Java + JUnit4で実装する。 FizzBuzzクラスと、そのテスト用クラスFizzBuzzTestが存在する。 この2つは同じパッケージに属する。 以下長文注意

ふと思いついたので

※元ネタ:http://favotter.matope.com/status.php?id=6458672300そういえば、Javaなら通ると思って作って見た。 public class Test { public static void main(String[] args) { System.out.println(test()); } private static int test() { boolean えーマ…

新年最初に書いたコード

http://d.hatena.ne.jp/Mugicha/20091228/1261976261Twitterでこんなものが流れてきたのでかっとなってやった、公開はするが後悔はしていない。 簡単にPowerShell1.0で書いて見た。 字句解析を投げている、さらに簡単な仮想コードに変換している、コードが無…

PowerShellメモその2

何とか1行で書いて、そのファイルの特定の部分のみを変換する処理が出来ないかなーと考えている。 PowerShellクックブックでは、一度Get-Contentで配列に取得した後にSet-Contentで変更するという処理をしていた。 具体的にはこんな感じ $content = Get-Cont…

PowerShellメモ

現在のフォルダから、全てのテキストファイルを検索し、「(任意の文字列1):(任意の文字列2)」*1と記述されている行を見つけ、その行内の「任意の文字列2」がlist.datの行として登録されていない場合、そのファイル名、行数、行の内容を出力するコマンド…

テスト可視性とアクセス修飾子

レガシーコード改善ガイドを読んでいたのだが、どうにも引っかかって先に進めなくなってしまった。具体的には、P.185〜P.186のコラムです。以下引用。 影響とカプセル化 オブジェクト指向でよく言われる利点の1つは「カプセル化」です。私は、本書で紹介し…

わんくま同盟名古屋勉強会#10に参加してきた

http://www.wankuma.com/seminar/20091128nagoya10/Default.aspx参加して、今戻ってきました。 ustでも呟かれていた気がするけれど、今回はログやデバッグに関するお話が多かったですね。 今回はid:rf0444も登壇。アスペクト指向に関してのイントロダクショ…

第二回名古屋Scala勉強会に参加してきた

http://groups.google.co.jp/group/NagoyaScala?pli=1id:bleis-tiftが参加していたのと、言語を学ぶ機会を増やすということで、名古屋Scala勉強会に参加してきました。 この勉強会で使用するScalaスケーラブルプログラミング[コンセプト&コーディング] (Prog…

JavaでC#のas演算子の様なものを実装してみた

どう考えてもなかなか抽象化が難しく、instanceofなどの動的型変換を使った方が有効な場合もある。 例えば、「様々な図形を提供し、それらを纏めて管理する必要があるが、その中から特定の型のみを選びだす」場合などがそれに当たる。 抽象化した集合内から…

買っちゃった

レガシーコード改善ガイド (Object Oriented SELECTION)作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義出版社/メーカー: 翔泳社発売日: 2009/07/14メディア: 大型本購入: 45人 クリック: 673回この商品…

割れた窓を見過ごせるか?

多人数開発をほとんどした事のない自分が言うのもあれだが、少なくともコレまでのチーム開発において、他者に任せっぱなしで安心だ、と思える時はほとんど無かった。 と、いうのも他者の書いたコードが私視点ではヒビだらけに見えるためだ。 学校の課題でし…

UnitTestのとらえ方

レガシーコード改善ガイド (Object Oriented SELECTION)*1をid:rf0444の研究室で読んでいました。 ちょっと勧められて読んだのですが、正直買うかどうか迷うぐらい自分では欲しい内容でした。 テストが無ければ、いくら綺麗であっても、そのコードはレガシー…

まさかの…

id:WK6が探し当てた本を、確保という名目で購入。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める―作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 30人 ク…

atoiの使い方

C言語にはatoiという、「文字列」を「数字」に直してくれる関数が提供されています。詳しくはwikipedia:atoiを参照。「文字列」を変換するので、当然引数に渡すのはcharポインタです。 例えば、"123abc"という文字列を渡した場合、123が返ってくることからも…

背景の無い設計は改善出来ない

授業なんかでは、背景の無いクラス図を見せられることがある。 しかし、それだけでは悪いところを見つけることは難しい。 例えば、ApplicationがCircleというクラスを使うとき、Circleが具象クラスであっても、まずいことは1つもない。むしろ、複雑化してい…

XNAゲーム開発日記

作りながら随時更新。 XNAで作ったゲームをXbox360へと転送し、実際にプレイする場合の色々なメモ。 開発環境: XNA Game Studio 3.1 何か長くなるかも。

XNA Creators Clubのメモ

国際学生証による開発環境インストールのメモ。 準備 Windows Liveアカウントを作成(あるいは、既にあるものを用いて)、貰った25桁のプロダクトキーを入れる。 以後、(多分、期間内では)特定のソフトウェアがダウンロード出来る。 インストール手順 Visual…

テストについて調べる理由

凄くシンプル。 自分が怠け者だから。正直、テスト書くのはだるいです。 だから、最低限必要な、効率の良いテストを探しています。

TDDを理解するためのまとめ

わんくま同盟名古屋勉強会#9に置いて、biacさんのTDDに関する話が出たので、少し自分がTDDについて思うことを纏めてみました。 TDDが説明されるのを聞く度、見る度、多分説明している本人は分かっているのだろうけれど、それが他の人に本当に伝わっているの…

わんくま名古屋勉強会#9

わんくま同盟名古屋勉強会#9外部の勉強会は初めてでしたが、とりあえず体験することが重要ってことで行ってきました。 中でも、特にTDDについてはあの後色々考察していることがあるのですが、まだ文章としてまとまっていないので、後日。*1 今回のを機に、よ…

getter/setterについて

本日の部活でどうすればいいのかを聞かれたのでメモ書き。 正直、ほとんどの説明はid:bleis-tiftが今年1月末にしてくれていることに同意するので、詳しくはそちらで。 自分の考え フィールドと1対1で対応しているgetter/setterは極力使うべきではない これが…

大分・・・

DP(動的計画法)のコツが分かってきた。 より小さいサイズの場合の最適解を適切に求めて置いて、ソレをより大きいサイズの問題の解の一部として利用する。 2030 - The Secret Number DPの典型例。図上だと、右下から順にその場での最適解を求めていく。 http:…

ICPCの季節

練習量が足りない……とりあえず、高速に問題を解くためのメモ。 setは追加にinsertメソッドを利用する。集合なので、重複要素は登録されない。 要素の比較にはfindメソッドを利用する。見つからない場合、イテレータ終端が返る。 要素数はsizeメソッドで取得…