タグ

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

  • C#でタイプセーフEnumパターン - ぐるぐる~

    C#でのテストはちょっとお休みして、今日はC#でタイプセーフEnumパターンの実現方法をいくつか紹介する。 C#には十分にタイプセーフなenumがあるが、それでも基は数値型であり、switchやifによる分岐が必要になってしまう点はC言語やC++のenumと何ら変わらない。 ということで、C#でタイプセーフEnumパターンを実装することには意味がある。もちろん、C#来のenumで十分な場合も多いので、使うか使わないかはの判断は必要だ。 まずは、C#のenumに対して全く利点のない単純なものから。 public sealed class Enum1 { private Enum1() {} public static readonly Enum1 Value1 = new Enum1(); public static readonly Enum1 Value2 = new Enum1()

    C#でタイプセーフEnumパターン - ぐるぐる~
  • Java の語彙で Maybe を説明してみる - ぐるぐる~

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

    Java の語彙で Maybe を説明してみる - ぐるぐる~
  • 質問に答えてみる - ぐるぐる~

    リポジトリ見てたら、question.txt なるファイルを見つけたので、その質問に答えてみます。 hard オプションなしの git reset に何の意味があるの? reset には、ファイルを指定する reset と、ファイルを指定しない reset の 2 種類があります。 で、hard オプションを持つのは、ファイルを指定しない方です。 まずはこちらから見ていきましょう。 ファイルを指定しない reset ファイルを指定しない reset には、 soft mixed hard merge keep と言う 5 つのモードがあります。 ここでは代表的な上三つを紹介します。 デフォルトは mixed で、これが質問にあった「hard オプションなしの git reset」です。 soft このモードでは、HEAD のみ指定コミットの状態となり、インデックスも作業ツリーも変更されませ

    質問に答えてみる - ぐるぐる~
  • 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版
  • ぐるぐる~

    先日の第5回Fun Fan Fsharpで型プロバイダー(TypeProvider)の話がありました。 最近は全然TypeProviderを触っていなかったのですが、久しぶりに触ってみるかー、と思って色々触ってみました。 発表資料でもあったように、イマドキは dotnet コマンドでテンプレートが提供されているんですねぇ・・・ TypeProviderとは コンパイル時に型(Type)を提供する(Provide)しくみです。 分かりやすいのはJSONとかCSVとかに対するものでしょうか。 #r "nuget: FSharp.Data" open FSharp.Data // JsonProviderを使って、[{"name": "aaa", "age": 20}]という形に対応する型を提供してもらう // <...>の中が「静的パラメーター」で、JsonProviderはこの情報を使って型

    ぐるぐる~
  • Git 基礎最速マスター - ぐるぐる~

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

    Git 基礎最速マスター - ぐるぐる~
  • 1