タグ

ブックマーク / katzchang.hatenadiary.org (129)

  • TDDとパラダイムは関係ないんじゃないかなぁ - @katzchang.contexts

    世の中には手続き型言語、オブジェクト指向言語、関数型言語あたりがあるとして、どれがTDDに向いてるかというと、いや特に差異はないよねという話です。 それぞれのやり方で、「手続き」なり「オブジェクト」なり「関数」なりがパターン爆発しない大きさに収まる限り、ユニットテストのコードを書くことは現実的に可能だし、RED->GREEN(もしくはその逆も)の変化を観察することに対して、大きな違いがあると思ったことはない。穿った見方をすると、書籍としてオブジェクト指向のが多いのは、オブジェクト指向言語のパラダイムが難しいことを説明してると考えることもできる。リスコフの置換原則は我々には早すぎた道具だったのだ!! まぁとりあえず、テスト性をよくすることで自然と高凝集かつ低結合なモジュール構成が出来上がったりします。ので、私が作る程度のプログラムでは、テスト可能な感じにまとめつつ、意図通りに変化しているこ

    TDDとパラダイムは関係ないんじゃないかなぁ - @katzchang.contexts
    katzchang
    katzchang 2013/06/20
    こういう話をするとき、いつも、手続き型言語はSchemeのことですか?って思います。
  • アラン・ケイが考えるオブジェクト指向プログラミング - @katzchang.contexts

    OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them. Dr. Alan Kay on the Meaning of "Object-Oriented Programming" 私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、そして全ての物に対する強力な遅延束縛、これだけだ。これはSmalltalkとLISP

    アラン・ケイが考えるオブジェクト指向プログラミング - @katzchang.contexts
    katzchang
    katzchang 2013/06/01
    scala本でも引用されてるAlan Kayの発言情報です。
  • .gitignoreに必ず指定することまとめ - @katzchang.contexts

    .* !.git*

    .gitignoreに必ず指定することまとめ - @katzchang.contexts
    katzchang
    katzchang 2013/01/24
  • 方針はエリート教育 - @katzchang.contexts

    この記事は子育てエンジニア advent calendar 2012 : ATNDの12/3のエントリです。 日曜日 俺「ねぇ、なんか足し算の問題だしてよ」 娘「じゃぁ、せん足すー、せん足すー、せん足すー、せん足すー、せんはー?」 俺「ちょいまち」 gosh> (+ 1000 1000 1000 1000 1000) 5000 俺「ほら、5000だ、すごいだろ」 娘「ふーん、じゃぁ」 俺「(反応うすいな…)」 娘「せん足すー、ごましお足すー、ごみぶくろはー?」 俺「!?」 gosh> (* 1000 gomashio gomibukuro) *** ERROR: unbound variable: gomashio 俺「ぐぬぬ………ピコーン!」 gosh> (define gomashio (+ 5 4)) gomashio gosh> (define gomibukuro (+ 5 3

    方針はエリート教育 - @katzchang.contexts
    katzchang
    katzchang 2012/12/03
    子育てエンジニアadvent calender2012, 12/3のエントリを書いた。
  • ちょっと湯豆腐を作ってみますね… - @katzchang.contexts

    いよいよ格的な冬になってきたような気がしないでもないと思ってたらもう師走な今日このごろですが、いかがお過ごしでしょうか?自称お料理ブロガーの[twitter:@katzchang]です。 VOYAGE GROUP エンジニアブログ : Advent Calendar 2012の12/2のエントリーを書かなければいけないですが、何を書こうか迷ったので、ここは湯豆腐について調査した結果を報告致します。 作り方 醤油に酒・昆布を入れて弱く加熱し、温まった程度で昆布を取り出してさらにそのまま加熱する。沸騰したくらいで加熱を止め、鰹節を投入してひと混ぜしたあとに少し放置し、漉し、冷ます。ようするにダシ醤油を作っておく。 柚子の果汁を絞っておく。 鍋に水と昆布を入れ、適当な大きさに切った豆腐を入れ、弱火にかける。丁寧に作る場合は水と昆布を合わせて一晩おいて〜みたいにするかもしれないが、ここはまぁいい

    ちょっと湯豆腐を作ってみますね… - @katzchang.contexts
    katzchang
    katzchang 2012/12/02
    書いた。
  • Io スタイルガイド - @katzchang.contexts

    http://en.wikibooks.org/wiki/Io_Programming/Io_Style_Guideの和訳です。 Io スタイルガイド このページでは、良いIoコードを書くためのガイドラインを示しています。貴方の知識を寄稿してください。ただし、読者が参照しやすいよう、大項目はアルファベット順としてください。 値の代入 可能な限りsetterを使用せよ。直接代入するな。 属性を読み書きすることは、他の言語にもあるが、setSlotメソッドをオーバライドすることで代用することはできる。しかし、将来にわたりオーバライドすることがないことを保証できればその限りではないが、それ以外はsetterを使うべきである。バグを発見しやすくなる。 setterは可読性に優れる。"setForeground(Color White)"と命じる方が、"fgPen = Color White"と命じ

    Io スタイルガイド - @katzchang.contexts
    katzchang
    katzchang 2012/08/30
    オブジェクト指向プログラミングの話だと、このへんも面白いですよ。
  • トマトジュース牛乳 - @katzchang.contexts

    トマトジュースと牛乳を、1:1の割合で混ぜて、飲む。 すげーうんまいんだけど、誰も試してくれないんだよね。 これを見た人は、1週間以内に試さないと不幸になりますので、宜しくお願い申し上げます。 デイリーポータルZ:イチゴミルクならぬ、○○ミルクを試すを見て、思い出したので。

    トマトジュース牛乳 - @katzchang.contexts
    katzchang
    katzchang 2012/08/30
    ためしてみてください。ぜひ。
  • OOコード養成ギブスのコメント欄の和訳 - @katzchang.contexts

    OOコード養成ギブス - rantsという記事より、あまりにも原理主義的っぽいので賛否があるだろうなぁと思いつつ、元記事のコメント欄を読んで、途中まで和訳してみた。 パッと見では、論点はぶコメとあんまり変わんないですね。 31 comments... Binstock on Software: Perfecting OO's Small Classes and Short Methodsのコメント欄より。 Anonimous said... http://paulgraham.com/noop.html の§3を思い出した: オブジェクト指向プログラミングは仕事に見えるモノを増やす。連帳用紙時代を思えば、1ページに5〜10行のコードしか書かず、その上に20行の仰々しい形式のコメントを残すようなプログラマーのタイプもいた。オブジェクト指向プログラミングはそんな奴らをクラックする感じだ:全ての

    OOコード養成ギブスのコメント欄の和訳 - @katzchang.contexts
    katzchang
    katzchang 2012/08/29
    過去にこういった議論がありましてですね。
  • 餃子 - @katzchang.contexts

    よくわからないけど、先日作った餃子の写真でも載せておきますね。 白菜(またはキャベツ)1/4をみじん切りにして、塩少々をもみ込んでおく。豚挽き肉80gに塩これまた少々を加えて白くなるまで練り、水分を絞った白菜、ショウガすりおろしを親指程度、ごま油大さじ1、片栗粉大さじ2を混ぜ込み、皮に包む。これが餃子のミニマルセットです。これで餃子30個分…のつもりだったけど1/3位余るので、正しくは餃子45個分です。ってか写真で餡が余ってるのが見える。 で、温めたフライパンに油を引き、餃子を並べ、半分弱浸かる程度に水を入れ、ふたをして中火〜強火で焼く。水分がなくなり、皮のまわりが茶色くなったら出来上がり。焼くときに油を少なくすると「ガリッ」とした感、多めだと「カリッ」とした感になるはず。濁点が入るか入らないかの違い。写真では油は少なめ、もう少し多くてもよかったかも。 写真のフライパンは南部鉄器の鋳物

    餃子 - @katzchang.contexts
    katzchang
    katzchang 2012/07/16
    餃子はこのシンプルなレシピが一番美味しい。
  • Clojureの学習でSICPは使えるかと問われ、Rich曰く、 - @katzchang.contexts

    最初の文章のまま載せていますので、コメント欄のshiroさんの添削と合わせてどうぞ: 一概には言えないが、2点だけ。 僕は、SICPはプログラミング言語のじゃなくて、あれはプログラミングのなんだと思ってる。の中でSchemeを使っているのは、アトミックなプログラミング言語だからなんだ。ラムダ計算、末尾再帰、継続を使った抽象制御、抽象構文(マクロ)、可変状態など。軽量で、かつ十分だ。 SICPでは、プログラミングをする上での課題を扱っている。モジュラリティ、抽象、状態、データ構造、並列処理など。generic dispatchやオブジェクト、並列処理、遅延リスト、(可変な)データ構造、「タギング」なんかの、明確な課題設定に対する実装例と解説が書いてある。 Clojureはアトミックなプログラミング言語じゃない。僕はもう、アトミックにプログラミングするのは古くて遅くて飽きた。Clojur

    Clojureの学習でSICPは使えるかと問われ、Rich曰く、 - @katzchang.contexts
    katzchang
    katzchang 2012/02/11
    こんな怪しい翻訳載せてくれるな、と怒られそうなレベルで申し訳ない…
  • Play!の黒魔術を読み解こうとしてみる(未完 - @katzchang.contexts

    この記事は、Play! framework Advent Calendar 2011 jp #play_ja : ATNDの11日目の記事です。 さて、軽めに行きましょう!(ということにさせてください… 僕とPlay! とあるWEBサービスの受託開発案件があり、自分を含めてメンバー的にJavaプログラマが多かったので、Javaが必然。で、環境面も含めてモロモロがフルスタックでサポートされてるフレームワークはないかなーということで、Play! Frameworkを使うことになりました。 2ヶ月ばかり携わったあとで私はその仕事を離れることになったのですが、無事サービスは開始されたようです。めでたしめでたし。 初めのPlayの印象は「黒魔術」の印象でしたが、それはControllerとviewの結合部分が黒いくらいだけで、それ以外の部分は案外素直な作りではあるので、学習にかかるコストは恐ろしく低

    Play!の黒魔術を読み解こうとしてみる(未完 - @katzchang.contexts
    katzchang
    katzchang 2011/12/11
    書いた!
  • 豚スペアリブの素朴なシチューは簡単で美味しいから覚えておくべき - @katzchang.contexts

    じゃがいも、にんじん、玉ねぎ、パセリ、豚スペアリブ。調味は粒胡椒と塩。これだけ。 あとは、保温性の高い鍋。今回はホーロー鍋を用意したが、小さかったので、後で鉄鍋に入れ替えている。最も向いているのは土鍋だけど、うちにあるのはなぜかバカでかいので、今回は登場しない。 じゃがいもは皮をむく。で、鍋に入れておく。 にんじんは皮をむいて、適当に切っておく。玉ねぎもまた皮をむいて、これも適当に切っておく。で、これも鍋に入れておく。 パセリは葉の部分をちぎっては投げ、ちぎっては投げ、鍋に入れる。茎の部分も入れるが、茎はべないことにする。 豚スペアリブは塩をまぶして、これも鍋に入れる。塩は多めでよい。 粒胡椒をそのまま入れて、塩を足す。鍋に入れる順番はこの限りではないので、準備ができたものから投入すればよい。 かぶるくらいに水を入れて、火にかける。沸騰したらそのままグツグツしておくとアクが集まるので、2

    豚スペアリブの素朴なシチューは簡単で美味しいから覚えておくべき - @katzchang.contexts
    katzchang
    katzchang 2011/11/14
  • 大学イモは、水あめで作ると失敗しない - @katzchang.contexts

    さつまいもって、意外とレシピに困るのは俺だけでしょうか? サツマイモの皮を適当にむき、乱切りにして5分くらい水にさらす。水気を切って、中温の油で揚げる。 水飴適量を鍋で温めて柔らかくして、揚げたサツマイモと黒ごまを入れ、からめる。油を塗ったバット…なんて面倒なので、テフロン加工のフライパンに広げて、熱がとれたら皿に盛る。 カリッと仕上げたい場合は、二度揚げするといいかもしれない。揚げ物は程よい水分があるほうが良い感じに揚がるので、揚げたサツマイモを冷凍する、一度揚げ後に水に浸す、霧吹き、揚げる前に茹でてしまうなど、色々やってみるとよい。自分はやらない。面倒だし。 水飴はあめの俵屋 - のれんを守って百八十余年。お土産に、ご贈答に。のじろ飴を使用。カタログでは500gで2,700円と高価だが、容器持ち込みの量り売りで700gを1,700円で買うことができた。らしい。砂糖を溶かしても良いが、加

    大学イモは、水あめで作ると失敗しない - @katzchang.contexts
    katzchang
    katzchang 2011/11/13
    ↓50gは使うから、あれで200円分くらいですね。お安くないざます。
  • ということで、転職しました。 - @katzchang.contexts

    今日から、株式会社ECナビで働くことになりました。 思ってた以上にすごい人達に囲まれてたりして、「もっとも下手なプレイヤーであれ」という言葉を思い出します。 ありがとう北陸、こんにちは東京。今後ともよろしくお願いいたします。 ネット難民のため、取り急ぎ…。

    ということで、転職しました。 - @katzchang.contexts
    katzchang
    katzchang 2011/08/23
    はてぶのジャンル、なんで「おもしろ」なんやろか…
  • Reading LiftFilter Bootup - @katzchang.contexts

    さて、始めてみる。どのようにLiftがどのようにリクエストをさばくのかを読むため、通常、web.xmlで唯一宣言されている「LiftFilter」辺りから読んでいく。幸い、http://www.assembla.com/spaces/liftweb/wiki/HTTP_Pipelineにヒントがある。 Bootup 起動 妥当であれば、サーブレットコンテキストをセットする サーブレットフィルタ設定から、LiftブートローダのFQCN(Fully Qualified Class Name、完全修飾クラス名)をチェックする。 LiftRulesをタッチし、クラスパスサービスをステートレスディスパッチテーブルに追加する。これにより、レスキューサーバが動けるようになる。 2.で取得したFQCNからリフレクトし、Liftを起動する。デフォルトではbootstrap.liftweb.Boot。 Lif

    Reading LiftFilter Bootup - @katzchang.contexts
    katzchang
    katzchang 2011/06/11
    起動部分は一通りよんだ。
  • 愛が故に求めるもの - @katzchang.contexts

    まぁ、こんなところに書き散らしたところで愚痴でしかないんでしょうけど、どういう歴史的事情でこうなってるのかは気になるかも。もしかして対応方法があれば教えてください。つまり、Excelの話です。 印刷時にフォント幅が崩れるのは致命的 複数ブックを開くときに親ウィンドウ内に展開するのは勘弁してほしい 異なるパスの同名ファイルが開けるようにしてほしい 結合セルを含むコピペで結合が解けてしまうことがある "/"を入力しようとするとAlt押したような状態になる? たぶん他にもある。

    愛が故に求めるもの - @katzchang.contexts
    katzchang
    katzchang 2011/05/24
    なぜ愛は苦しみも与えるのか、ということについて。
  • アジャイルジャパン富山サテライト地方セッション予告:「その一方で、ウォーターフォールの現場にて開発者が出来ること」 - @katzchang.contexts

    4/15(金)に予定しているアジャイルジャパン富山サテライトで、地方セッションということで一つお話をさせて頂くことになりました。 情報・参加申し込みはアジャイルジャパン2011サテライトin富山 : ATNDからどうぞ。 内容予告 タイトル 「その一方で、ウォーターフォールの現場にて開発者が出来ること」 概要 アジャイルアジャイル言ったところで来週の自分の現場がどうなるものか!!と思わないでもない昨今が続いていますが、皆様いかがお過ごしでしょうか? それにしてもキラキラ輝いて見えるアジャイル文化/アジャイルプラクティスを参考に、目の前にそびえ立つ(もしくは切り立つ)ウォーターフォールの現場をどうにか出来るか出来ないかについて探っていきます。奮闘してきた経験を交えつつ。 スピーカー情報 katzchang いわゆる”二次請け”業務系SEとして、要求定義から運用支援まで、ユーザ対応からプログラ

    アジャイルジャパン富山サテライト地方セッション予告:「その一方で、ウォーターフォールの現場にて開発者が出来ること」 - @katzchang.contexts
    katzchang
    katzchang 2011/04/10
    よーするに開発現場でのボトムアップからの改善について話したいと思っています(まだ作っていない
  • 我々はいつリファクタリングに着手すべきか。 - @katzchang.contexts

    「リファクタリングが必要だと感じたときに、リファクタリングすべきである」 2009年12月のTDD Boot Campにて、"Test Driven"の著者であるLasse Koskela氏に頂いた回答。 必要だと感じてから時間が経過したあとでは、リファクタリングすべき(つまり汚い)コードに依存するコードが増え、整理する対象が増えてしまう。必要だと気付く以前には、当然手を付けられるはずがない。 一流プログラマの感覚的な指針ではないんだよね。

    我々はいつリファクタリングに着手すべきか。 - @katzchang.contexts
    katzchang
    katzchang 2011/04/05
    「リファクタリングが必要だと感じたときに、リファクタリングすべきである」
  • 4月からこの業界で働き始める人が知るべきこと - @katzchang.contexts

    諸先輩方が「この仕事は〜」「社会人として〜」なんて色々言うのは、自分に言い聞かせてるだけだから、あまり気にせず、自分のペースで仕事していきましょうね。

    4月からこの業界で働き始める人が知るべきこと - @katzchang.contexts
    katzchang
    katzchang 2011/03/28
    お役立ち情報です
  • 共通関数継承のデメリットを説明せよ - @katzchang.contexts

    共通関数継承とは、あるクラスで共通的に使うだろう関数やメンバを、親クラスのメソッドやメンバとして定義するパターンだ。Constant interfaceパターンやimport staticあたりが関係するアンチパターンとされるモノの一つで、神様ルートクラスを嫌い、POJOを好むのあたりの、ごく初歩な議論になるだろうと思う。 package spike; public abstract class SuperUtil { /** * 時刻形式の文字列から、日付部分を抜き出す */ protected String timestamp2Date(String timestamp) { if (validTimestamp(timestamp)) return timestamp.substring(0, 10); return ""; } /** * 時刻形式の文字列から、時間部分を抜き出す

    共通関数継承のデメリットを説明せよ - @katzchang.contexts
    katzchang
    katzchang 2011/03/06
    これ、致命的な欠点は指摘しにくくて、下の例のほうが簡単だからという答えになりそうな気がしてきた。なぜ簡単になるかというのが設計原則につながりそう。