タグ

ブックマーク / bleis-tift.hatenablog.com (47)

  • Ruby嫌いがアンダースタンディングコンピュテーションを読んで - ぐるぐる~

    アンダースタンディング コンピュテーション―単純な機械から不可能なプログラムまで 作者: Tom Stuart,笹田耕一(監訳),笹井崇司出版社/メーカー: オライリージャパン発売日: 2014/09/18メディア: 大型この商品を含むブログ (2件) を見る 一番最初にはっきりさせておきますが、Rubyは嫌いな言語です。 が、このRubyが嫌いな自分でもいいだと言える*1でした。 自分が対象読者に入っているかどうかは実際に読んでみるまで微妙かな、と思っていましたが、とても楽しめました。 以下、書評です。 Rubyという選択 説明用のコードとして書はRubyを使っていますが、 これに関してはその理由が1章にあります。 私はその明瞭さと柔軟さに魅かれてRubyを選びました また、続けて 書にはRuby独自の機能に依存しているところはありません。 そのため、もしあなたにとってわか

    Ruby嫌いがアンダースタンディングコンピュテーションを読んで - ぐるぐる~
    katzchang
    katzchang 2014/09/24
    おもしろそう
  • ダブル・ディスパッチ~典型的な関数プログラミング・イディオム~ - ぐるぐる~

    元ネタはダブル・ディスパッチ~典型的なオブジェクト指向プログラミング・イディオム~ です。 これをF#でやってみるとどうなるかやってみましょう。 レンタルショップの例(レベル1) 商品としてCDやDVDを取り扱うレンタルショップを想像・・・するのは面倒でしょうから、コードで示しますね。 type MemberKind = | Common | Gold type Member = { Kind: MemberKind } type ItemKind = | CD | DVD type Item = { Kind: ItemKind } module RentalShop = let calculateRentalFee (item: Item) (member_: Member) = (* 金額を計算する *) レンタル料の計算が、商品種別と会員種別の組み合わせによって変わるようです。 一

    ダブル・ディスパッチ~典型的な関数プログラミング・イディオム~ - ぐるぐる~
    katzchang
    katzchang 2013/09/10
    「ダブルディスパッチしたくなったら、言語を変更できないか考えてみてもいいかもしれませんね」
  • Java の語彙で Maybe を説明してみる - ぐるぐる~

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;

    Java の語彙で Maybe を説明してみる - ぐるぐる~
    katzchang
    katzchang 2012/06/29
    わっふるわっふる
  • すごい Haskell たのしく学ぼう!は本当にすごいのか? - ぐるぐる~

    すごいHaskellたのしく学ぼう! 作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行(ソフトカバー)購入: 19人 クリック: 552回この商品を含むブログ (36件) を見る 今話題の、すごい Haskell たのしく学ぼう!を読んだのですが、ちょっと思ったことがあるので書評と合わせて書いておきます。 思ったこと 関数型言語がこれほど話題になるのはとても嬉しいことです。 しかし、一方で懸念点もあります。 ノリで「すごい」とだけ言う人たちがいる その人たちに乗せられて (自分には合わないのに) 買ってしまって、挫折してしまう人が出てきそう このは、いいです。 翻訳の質も素晴らしく、読んでいて「読みにくいな」と思った部分はありません。 それに加え、訳注と Appendix も素晴らしい。 しかし、誰にで

    すごい Haskell たのしく学ぼう!は本当にすごいのか? - ぐるぐる~
    katzchang
    katzchang 2012/05/24
    「まず第一に、Haskell を本当にやりたいと思っているというのが重要です」
  • コンフリクトが発生しなくても壊れる場合 - ぐるぐる~

    push したら誰かが先に push していたので失敗した。 なので pull したが、コンフリクト (競合) は発生しなかったので何も確認せずにそのまま push した。 何も問題なさそうですね。 ・・・当ですか? 例えばこんな状況を考えてみましょう。 最初の状態 A さんと B さんと C さんが登場します。 作っているのは Web ページで、コードはこんな感じ。 <html> <head> <title>hoge</title> <style> .menus { overflow: auto; } ul { margin: 0; padding: 0; list-style-type: none; } .button { float: left; width: 100px; margin: 0; padding: 10px 0; text-align: center; backgr

    コンフリクトが発生しなくても壊れる場合 - ぐるぐる~
    katzchang
    katzchang 2012/01/17
    git bisect
  • Developer's Test 勉強会に行ってきた - ぐるぐる~

    すごい楽しかった! 事の発端は、「SCMBC の時の資料を使わせてもらえないか?」というツイートでした。 @kyon_mm 了解ですー。scmbcの資料つかわせてもらってgit演習とかしたいと思ってるんですけど、問題ありますか?(サポーターなしなのでbcにはならない感じ) 2011-12-04 21:39:36 via Echofon to @kyon_mm @irof kwsk! 2011-12-04 21:53:30 via Tween to @irof @bleis 自動テスト+Git+Jenkinsのハンズオン中心な勉強会(だいたい触ったこと無いとかそんなレベル)で、Git力上げるのに使わせてもらえないかなと思いまして。 2011-12-04 22:10:34 via Echofon to @bleis @irof いつ開催予定ですか?行けるなら行きたいな! 2011-12-04

    katzchang
    katzchang 2012/01/17
    バナナ串カツなんて、ふつうにおいしそうじゃないですか。
  • SCM Boot Camp 2 in Tokyo に行ってきた - ぐるぐる~

    今回は Git の講師として参加しました。 2 回目と言うこともあって、よりスムーズに進めることができたように思います。 個人的なもくろみ 今回参加して、SCM Boot Camp の DVCS イベントの部分はある程度パッケージ化したいと考えるようになりました。 まだ 2 回しかやっていませんが、DVCS (少なくとも Git) の効率的な習得のためのスキームというのが見えてきた感じです。 最終的には、講師が 1 人いれば小規模なイベントを開くことのできるところまで落とし込めるのでは、と考えています。 以下時系列順の雑多な感想や補足など 開催前 今回は、開催の準備として数回 Lingr によるミーティングを行いました。 資料の作成も段階的に行うことができたのでフィードバックを取り入れることができてとてもよかったです。 にも関わらず、 30秒前までずっと作り続けていたらしいので、たぶんあり

    katzchang
    katzchang 2011/11/21
    もうrebaseは怖くない
  • rebase で本番用の設定と開発用の設定を簡単に切り替える - ぐるぐる~

    rebase を使うと、番用の設定と開発用の設定を簡単に切り替えることができます。 rebase の基は rebase について - ぐるぐる〜 で説明しているので、ここまでは分かっている前提です。 例えば、ASP.NET番用と開発用の web.config が違うとします。 共用のリポジトリには開発用の web.config をコミットしてはいけません。 これをすべて手作業で行おうとすると、ついつい間違って開発用の web.config をコミットしてしまったり、ついつい間違えて開発用の web.config の内容がどこかにいっちゃったりすることがあります。 こういった事故を少なくするために、rebase を使います。 rebase --onto onto オプションを使用することで、ある地点 (ブランチ a とします) から分岐したブランチ (b とします) の分岐点から先

    rebase で本番用の設定と開発用の設定を簡単に切り替える - ぐるぐる~
  • TDD Boot Camp 東京 1.6 に行ってきた - ぐるぐる~

    行ってきました。 当日は .NET の TA をやるはずでしたが、希望者がいませんでした。残念。 暇になったので、C++Java の混合グループに入れてもらって、一人で F# やってました*1。 ソースは github に上げてあります。 bleis-tift/TDDBCTokyo1.6 · GitHub timeup というタグまでが、会場でやったところです。 それ以降は、ホテルに戻ってからの分で、一応全部のお題をやってあります*2。 開発は、 Visual Studio 2010 NaturalSpec / NUnit Git / git-now / Git-Hooks メモに TODO リスト な感じでやりました。 NaturalSpec は使い込み度合いがまだまだなので、色々試しながら進めました。 順を追って見てみる 最初の方は割と細かく進めたので、順を追って見てみます。長い

    katzchang
    katzchang 2011/08/05
    ペアプロしたくなってみた。
  • 被害妄想とか言われた件 - ぐるぐる~

    RubyKaigi2011 で「別の"MVC 3 vs Rails 3"」という発表があったそうです。 で、TL に「ASP.NET MVC3 ではテストが有料」的なつぶやきが流れてきました。 もちろんそんなことはないので、「違うよ!」ってつぶやいたら、発表を行った方から発表資料への URL を頂きました。 で、それを見てみると (テストの部分に関して) 微妙に言いたいこともあるのですが、聴衆がその部分をスルーしていたっぽい、ということがわかりました。 ですが、54 ページ目に気になる表現があったのです。 テストを重視するふつうの開発者は Rails 3 https://skydrive.live.com/?cid=39980b426ffec3a7&sc=documents&id=39980B426FFEC3A7%21310 これです。 これに対して、 「テストを重視するふつうの開発者はR

    katzchang
    katzchang 2011/07/17
    あとで資料をみよう。
  • 開発環境勉強会 in Nagoya #1 で発表してきた - ぐるぐる~

    6/18 に開催された開発環境勉強会 in Nagoya #1で CI っぽい話と Vim の話をしてきました。 CIのその先へ View more presentations from bleis tift Vim再入門 View more presentations from bleis tift @kei10in / Vim 結構ぱないね.使わないけど! #devstudy @sunflat / Vim奥が深い #devstudy @kaizen_nagoya / vim長年使っていたが、使っていない機能を覚えれた。#de... @fate_fox / Vimのことがさらに好きになった #devstudy @youku_s / 家に帰ったらvimプラグインをいろいろ試そう。補完系しかい... Emacs 使いの人にも Vim のいいところを伝えることができたのはよかったですね。 ちな

    開発環境勉強会 in Nagoya #1 で発表してきた - ぐるぐる~
    katzchang
    katzchang 2011/06/21
    たしかに、Jenkinsは導入簡単すぎて驚いた。
  • TDD Boot Camp のお題を C# と Git でやってみた - 予定は未定Blog版

    自分で考えたお題を自分で解くとかそれなんてマッチポンプ・・・ 打ち上げ終了後のホテルと、翌日の帰りの新幹線の中で書いたコードを順番に追ってみます。 準備するものは Git で、あるといいものは Visual Studio 2010 と NUnit です。 まぁ、割と小さいコード (テストを含めても 300 行もない) だし C# を知らない人でもそれなりに雰囲気は掴めると思います。 あ、このエントリかなり長いです。 準備 Windows の場合、Git Bash を開いて、適当なフォルダに移動して git clone git://github.com/bleis-tift/MotsunabeZombieProject.git cd MotsunabeZombieProjectとしてください。 MotsunabeZombieProject というフォルダができて、その中に Git のリポジト

    TDD Boot Camp のお題を C# と Git でやってみた - 予定は未定Blog版
    katzchang
    katzchang 2011/03/24
    「お題を簡単にまとめると、「つぶやきの種別を判定するシステム」です。」
  • TDD Boot Camp 福岡 2 日目 - ぐるぐる~

    朝ごはんをぎりぎりでべて、直接会場に。 当日の発表資料はこちらです。 TDD Boot Camp福岡2日目 View more presentations from bleis tift 秋さん (id:Akineko) の発表の中で SQL で FizzBuzz やるとか SQL で bf 処理系作るとかそんなの絶対おかしいよ! て言われた気がしますけど全然おかしくないよ普通だよ! お昼ご飯をべて、午後からは新しい仕様を言い渡しました。 Web サービスからつぶやきを取ってきて、それを判別 非公式 RT も判別 現在の時刻前後 30 分の時間帯のつぶやきの判別 これに伴い入力形式を変更 「yyyy/MM/dd HH:mm:ss\tScreenName\tBody」 この変更は結構厳しかったみたいです。いろんなところから悲鳴の声が。 三番目のお題のために和田さん (id:t-wada

    TDD Boot Camp 福岡 2 日目 - ぐるぐる~
    katzchang
    katzchang 2011/03/22
  • 前提がおかしい - ぐるぐる~

    getter/setterでぐぐって見つけたこのページ。 ・・・これはひどいと言わざるを得ない。 これは「オブジェクト指向プログラムで getter/setter メソッドを使わなければならない理由」じゃなくて、「フィールドへの直接アクセスよりは getter/setter を使うほうがいい理由」の方が正しいな。 というか、このページ、前提が「getter/setter を使わない == フィールドへの直接アクセス」だからおかしいのかも。 1番目*1はそんなことないし、2番目*2なんかはサイズ≒行数でクラスを分割するとか言っちゃってる時点でおかしい。 3番目*3はちょっと何言ってるのかわからない。 データメンバを直接操作するコードをいったん書くと、後でポリモルフィズムを使おうとしたときに手も足も出ない。 オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない1

    前提がおかしい - ぐるぐる~
    katzchang
    katzchang 2011/03/08
    同じ感想を持った。「getter/setter は極力使うべきではない」
  • 生島さんが考える最強の言語 SQL - ぐるぐる~

    生島さんが誰と闘っているのか知らないけど、ちょっと気になることをつらつらと。 SQLは最も高級言語 - SQLer 生島勘富 の日記 SQLは最も高級言語2 - SQLer 生島勘富 の日記 SQLとはなんぞや? - SQLer 生島勘富 の日記 高級*言語* どうも生島さんは、「SQL は高級言語!」と言いつつ SQL の処理系 (RDBMS) のことを高級だと言っているようです。 言語が高級であることと、処理系の最適化が手厚いことをごちゃまぜにして、この言語高級!と言うのはまずいんじゃないでしょうか。別に、RDBMS を操作するための言語として SQL でなくたっていいのです。例えば Tutorial D/Industorial D もあるし、LINQ を SQL に変換せずに直接 DB の操作を行うような RDBMS/Linq to X と言うのも考えられます。 ここではとりあえず、

    生島さんが考える最強の言語 SQL - ぐるぐる~
    katzchang
    katzchang 2010/11/30
    「型定義できない」→「第六正規形」→「なにそれ面倒すぎる」は通った。
  • アジャイルな見積りと計画づくり読書会でもやもや - ぐるぐる~

    第何回だかのアジャイルな見積りと計画づくり読書会に行ってきてもやもやするところがあったので、書きなぐっておきます。 16 章「ベロシティの見積り」という章で、最終手段としてベロシティを予測する、というのが紹介されています。 で、これが最終手段と言いつつ一番詳しく解説されているんですけど、そこは置いておいて、この章の最後の「話し合ってみよう」にこんなのが書いてあります。 表 16.2 では、同じストーリーポイントで見積もられているストーリーをタスクに分解しても、タスクの見積り時間の合計は同じではない。これはなぜだろうか? 表 16.2 はこんな感じ。 ストーリー ストーリーポイント タスクに必要な時間 コーチとして、チームのすべての選手の名前とプロフィールを入力できる 3 24 コーチとして、練習を設定できる 5 45 水泳選手として、ある競泳種目について、自分のタイムをすべて見ることができ

    アジャイルな見積りと計画づくり読書会でもやもや - ぐるぐる~
    katzchang
    katzchang 2010/11/27
    見直す必要はないだろう。タスク単位で見積もるタイミングは、イテレーションにつっこむストーリを決めたあとだよね。
  • Brainf*ck in SQL - ぐるぐる~

    Brainf*ck はチューリング完全らしいですよ。 Brainf*ck 自体に興味のある方は、Brainf*ck や Brainfuck - Wikipedia へどうぞ。 WITH -- 入力 Input(id, bf_program, stdin) AS ( -- Hello, World!と標準出力に出力するプログラム SELECT 0, ' >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++ ++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]> ++++++++[<++++>-]<+.[-]++++++++++.', '' -- hogeと標準出力に出力するプログラム UNION ALL

    Brainf*ck in SQL - ぐるぐる~
    katzchang
    katzchang 2010/11/25
    SQLおじさんの件で「あれ?SQLってチューリング完全だったっけ?比較するのおかしくない?」と思って調べたら斜め上にチューリング完全であるという証明。
  • Git と GitHub を体験しながら身につける勉強会行ってきた - 予定は未定Blog版

    9/18(土) 15:30~ GitGitHubを体験しながら身につける勉強会(名古屋) : ATND 行ってきました。 なんかいろいろと話すことになったんですけど、あの場で言いそびれたこととか、もっとこう説明してればよかったなぁ、って部分の補足も兼ねたエントリです。 長文注意。 ショートカット git add の話 git add -p/git reset -p の話 リビジョン番号がない話 ブランチの話 git-completion の話、__git_ps1 の話 コミットの指定の話 reset の話 rebase と merge の話 公開したものの rebase の話 stash の話 TortoiseGit、HG、SVNのはなし 全体を通して git add の話 Git と SVN では、add に限らず、同じ名前のサブコマンドでも意味が異なるものがいくつかあります。 その中

    Git と GitHub を体験しながら身につける勉強会行ってきた - 予定は未定Blog版
    katzchang
    katzchang 2010/09/22
    Gitのtips。
  • Git 基礎最速マスター - ぐるぐる~

    id:repeatedly から無言の圧力を受けたので書きました。 タイトルは釣り。そもそも自分が Git マスターしてないし。突っ込み歓迎。超歓迎。 一応、このエントリだけで一つの Git リポジトリをそれなりに操れるようになることを目指してます。なので、コマンド一つ一つに対する説明じゃなくて、やりたいこと一つ一つに対する説明が中心です。え?それ最速マスターじゃない?きーこーえーなーいー。 あと、他のバージョン管理システム、例えば Subversion や Mercurial が使えることを前提としています。誰か「バージョン管理システム基礎最速マスター」とか書かないの? インストール Windows と Debian しか分かりませんので、自分のシステムに読み替えて行ってください。あと誰か Mac ください。 インストールも設定も終ってるよ!って方はリポジトリの作成までひとっ飛び。 Wi

    Git 基礎最速マスター - ぐるぐる~
    katzchang
    katzchang 2010/07/16
    「Git ではコミットメッセージの1 行目にそのコミットの概要を書き、2 行目を空行に、3 行目以降に詳細を記述するという形式が推奨されています」
  • TDD Boot Camp 名古屋を振り返って - ぐるぐる~

    TDD Boot Camp 名古屋を終えては連絡的な意味合いの強いエントリでしたが、こちらはイベントの感想になります。 一日目 一日目は、ペアプロによる TDD の実体験と、レビュー・・・を、見て回りました。 色々な言語の、色々な人によるコードを見ることができて、とても面白かったです。 1 つの島に複数の言語を混ぜた*1のはなかなか良かったかな、と思う反面、予定していた時間を軽くこえてしまうほどの熱中具合だったのは反省点です。 それとまさか、OCaml で 2 ペアもできてしまうとは全く予想していませんでした。名古屋すごい。 前から「いつかは会いたい!」と思っていた id:kaorun55 (かおるんさん) とお話しすることもできました。ばたばたしててじっくりお話しすることはできなかったので、次はじっくりゆっくりお話ししたいです。それはそうとかおるんさん、イケメンすぐる・・・ 懇親会までの

    TDD Boot Camp 名古屋を振り返って - ぐるぐる~