2010-01-01から1年間の記事一覧

TDDでLiftのバリデータを実装していく

この記事はScala Advent Calendar jp 2010の13日目です。12/19予定だったけど、日付超えてしもたわ…。この記事の全てのコードは https://github.com/katzchang/TDD-with-Lift にあります。 はじめに LiftはScalaで最も有名なフレームワークだろう。Scalaの能…

MyBatis Schema Migrationを使ってみる

この記事は Java Advent Calendar -ja 2010 の4日目のものです。 はじめに 継続的な開発では、データベーススキーマも段階的変化に耐えることが求められる。マイグレーション・システムが必要だ。 そこで、MyBatis Schema Migrationというのがあるらしいので…

XSS Challenges 登山会に参加してきた

12/4から5にかけて、XSS Challenges 登山会に参加してきた。合宿ですよ!内容は、http://xss-quiz.int21h.jp/の課題をクリアしていくというもの。よかったら挑戦してみてください。以下、思い出して列挙します。 結論 基本 小手先で変換するよりも、エスケー…

HelloLift 2.1

Liftについて調べたことをまとめていきたい。LiftについてはLiftの情報 - @katzchang.contextsも参照のこと。 事前に用意するもの Maven2 Java6 インストールの詳細は他のサイトの解説を参照。執筆時点で Maven 2.2.1 / Java 1.6.0_22を使っている。 作る環…

HelloSBT

2章に挑む前に、sbtの設定をする。sbtはSimple Build Tool。http://code.google.com/p/simple-build-tool/ セットアップ http://code.google.com/p/simple-build-tool/wiki/Setup を参照。 OutOfMemory対策(追記) sbt ~jetty-runをしばらく続けていると、O…

Boxについて調べてみた

Boxはオブジェクトのコンテナの一つで、要するにscala.Optionっぽいもの。Liftアプリケーションでは頻出なので、調べてみた。 Lift 2.1前提。 object Box class Box Box.apply Boxインスタンスを作るファクトリ。 Box(someValue) *1で、boxな何かが返ってく…

ピッチブランチ

git

まずは作業ブランチを作って移る。「ピッチブランチ」と呼ぶことにする。以下では、元ブランチはmasterとしているが、もちろん作業ブランチでもよい。 git branch pitch git checkout pitchして、有効にしてjunit実行。実行しながら細かくコミットしていく。…

現在の課題

日時型のマッピング model.MappedDatetimeのformat/parseは、object LiftRulesのdateConverter(うろ覚え)を経由して、JavaのSimpleDateFormatで処理してるわけだが、date.toStringのような「日本人的には馴染みのない」形式なので、切り替えたい。 が、そ…

Liftの情報

結論としては、本家サイトの情報が最も確実で、ゴールが近い。ので、大した情報ではないが、載せておく。自分用リンク集。 http://liftweb.net/ 本家。今日現在、最新は2.1-RC3。 http://liftweb.net/getting_started 取りあえずここから始めよ http://www.a…

初めてのscalaで戸惑ったことをつらつらと書く

"=>"ってなんやの パターンマッチングとか、関数リテラルのパラメータを渡す的な場面でつかう。 "->"ってなんやの つまるところ、2要素のタプルを作っているようだ。 ↓みたいなコードってなんやの db.use(param) { con => hogehoge(con) } openOr false つま…

sbtを使ってScalaを継続的テスト(ついでにmaven連携もすこし

James Strachan's Blog: Using SBT on your Scala Maven project for continous testingの意訳です。 本文 継続的テストは大事だ。ソースコードが変更されたらすぐにテスト。テストファーストはいいことだし、コードの変更への素早いフィードバックが得られ…

なぜギークは「プログラム」を「コード」と呼ぶか?

十分に意味が伝わり、かつ短いから。

チーム立ち上げのプラクティス「病気自慢」

開発チームの立ち上げの際、互いに自己紹介しあうのは大事です。社内だとしても、同じチームで仕事しない限りはあまり交流がなかったりするのは弊社だけじゃないはず。で、その場で名前とか開発経験とかを言い合うわけだけど、合わせて「今までの仕事で、一…

娘ちゃんは3歳と3ヶ月くらいになりました

自分を振り返っていたら、「子供が2歳になりました - @katzchang.contexts」というエントリを見つけたので、続きを書こうかと思い付きました。 「何歳?」と聞くと「さんさい」と答える。ただしジェスチャーは、2本指より難易度が高いため、相変わらずニジニ…

誰でもできるように設計書を作成するという仕事の価値

誰でもできるように設計書を作成する人の月単価:80万円 その設計書に基づいて実装する何処かの誰かの月単価:50万円 どう考えても後者の方がお得です。以上、よろしくお願いいたします。

OCaml Boot Camp

TDD Boot Camp名古屋一日目の成果を、2週間経過した今更まとめる。 環境設定 OCaml-3.11.2 findlib-1.2.5 OCamlのパッケージ管理的な何か。 ocamlfind -listでインストールされているパッケージを確認できる oUnit-1.0.3 OCaml用ユニットテストライブラリ ex…

public class GitCommandSpike

import java.io.*; public class GitCommandSpike { public static void main(String...args) { GitCommandSpike spike = new GitCommandSpike("repos"); System.out.println(spike.version()); System.out.println(spike.status()); System.out.println(spi…

hamcrestを使うtest method template.

Java - Editor - Templates から設定する。 まず、既存のtest"test method(JUnit3)"とTest"test method(JUnit4)"は不要なので削除しておく。で、↓を追加する。コピペで大丈夫です。 Name: test Context: Java statements Description: hamcrest test method …

2.5時間で成果を出す、レガシーコードとの戦い方

ポイントは 真っ先にコードをぶっこわせ! いやその前にバージョン管理に突っ込め! 安全にコードをぶっこわせ! 仕様化テスト書こうぜ! で、ようやく機能追加なりリファクタリングなり不具合の改修なりができる状態になります。以下詳細。 …と、続けようと…

↑のタイトル変えました。

はてなB-Twitter連携記念で、タイトル変えました。Twitter投稿ありでブクマすると、Mentionでチェックできるという寸法です。文字数がオーバしたら多分切られる。このまま、ちょっと試してみます。以前のタイトル"self contexts"はIoke言語風だったけど、今…

デスマーチで生き抜くために

デスマーチが始まるためには、かならずそこに至る原因がある。短い納期、少ない予算、ブレるスコープ、多発する不具合、増大する改修稼働…。一般論として、起こった問題を解決したいなら原因を突き止めて取り除く、もしくは無効化させることが必要となる。つ…

それはアートであるか

あなたにとって新しい視点を与えるものであれば、それはアートである。で、考えてみれば良いよ。例えば「ある人が、『これアートである』と主張している」こと自体は自分には関係ない。としても、自分がそれを見た/体験したときに「新しい視点」を特に感じな…

Eclipse 3.5 GalileoのXMLエディタにてでエラーが出る場合の対処

Eclipse 3.5 GalileoのXMLエディタにてでエラーが出る場合、直前のコメント閉じタグの手前にスペースが入っているか確認すること。

katzchangはTDDBC名古屋に参加します。

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

我々はいつリファクタリングに着手すべきか。

「リファクタリングが必要だと感じたときに、リファクタリングすべきである」 2009年12月のTDD Boot Campにて、"Test Driven"の著者であるLasse Koskela氏に頂いた回答。必要だと感じてから時間が経過したあとでは、リファクタリングすべき(つまり汚い)コ…

@nagise 裏勉強会LT「タスク管理関連」メモ

5/1に「@nagise 裏勉強会」が行われました。参加者は11名くらい、内容は自己紹介を兼ねたLT大会でした。id:Nagise,ご結婚おめでとうございます。自分のネタは課題管理関連。社内向けに資料を考えていたメモをEvernoteに残していたので、説明しつつツッコミを…

よもぎアイスを作ってみた

近所で両手に余る程度のヨモギを採集する。採集したヨモギを水洗いし、規定量の重曹を入れた湯でさっと茹でて冷水に取り、軽く絞る。ミキサーにヨモギを入れ、牛乳200mlとクリーム200mlを少しずつ入れながら、細かく裁断する。別に卵黄3個と砂糖50gをよく混…

先日、最後の14型ブラウン管テレビが壊れました。

新しいものを買おうかとも考えたんですが、年度末セールを逃し、結局買ってません。だって8万くらいするんだもの。そろそろ1ヶ月。このまま妻子が慣れれば、積極的に買うつもりはない。

TDD Boot Camp 北陸、自分的ふりかえり

3/13-14に開催したTDD Boot Camp 北陸から、もうすぐ1週間。幹事*1の立場から、ふりかえります。 まずは… 集まって頂いた方々、おつかれさまでした&ありがとうございました。遠方は首都圏、愛知、大阪からも、多数の参加を頂きました。どんだけ気合いが入っ…

TDD Boot Camp北陸のお知らせ(タイムテーブル)

タイムテーブルはこんな感じです。 2010年3月13日(土曜日) 10:00 〜 やんわりと受付開始 11:00 〜 12:00 id:t-wadaによる入門講演 12:00 〜 13:00 ランチタイム 13:00 〜 15:00 第一弾 ペアプロによるTDD、コードレビュー 15:00 〜 15:30 休憩 15:30 〜 17…