Interpreterパターン

Interpreterパターンは、文法を解釈しその内容を実行するインタプリタの作成に使う。ここでは、以下の仕様の 1 桁の数字を計算するインタプリタを作ってみる。

  • 使用できる演算子は '*' と '+'。
  • '*' は '+' より先に計算する。
  • '(' と ')' で囲んだ部分は先に計算する。

このインタプリタの文法は以下の通り。

続きを読む

Visitorパターン

デザインパターンの中のVisitorパターンは、

  • データ構造をたどって、その要素について処理をし、かつ、
  • その処理が複数ある。

という場合に使う。ここでは、データ構造として以下のようなComponentクラス, Compositeクラス, およびLeafクラスを使った木構造を例として使う。

続きを読む

Windowsでのバックアップ

Windowsでファイルをバックアップするには xcopy が便利。

こんなバッチファイルを作成しておいて、実行すればよい。

set SOURCE=C:\Source
set DESTINATION=D:\Backup
REM /C: コピー時のエラーを無視する
REM /D: コピー先に同名のファイルが存在する場合に更新日が新しいファイルのみコピーする
REM /E: ファイルが存在しなくてもディレクトリごとコピーする
REM /I: コピー先のディレクトリが存在しない場合は新規にディレクトリを作成する
REM /H: 隠しファイルやシステムファイルも全てコピーする
REM /R: 読み取り専用属性のファイルも上書きコピーできるようにする
REM /Y: 同名のファイルが存在する場合、上書きの確認を行わない
xcopy %SOURCE% %DESTINATION% /C /D /E /I /H /R /Y
pause

Emacs で文字コードを調べる

ある文字が 'O' (アルファベットのオー) なのか '0' (数字のゼロ) なのかで悩んだら、

してみましょう。カーソル位置の文字の文字コードなどが表示されます。

f:id:tt195361:20150723170122p:plain)

参照型と値型のEquals

参照型と値型での Object.Equals メソッド の動作の違い。

  • 参照型: 同一オブジェクトならば true
  • 値型: 保持している値が同じならば true
using System;

namespace EqualForValueTypeAndReferenceType
{
    class Program
    {
        static void Main(string[] args)
        {
            ReferenceType ref1 = new ReferenceType(123);
            ReferenceType ref2 = new ReferenceType(123);
            Console.WriteLine("ref1.Equals(ref2) = {0}", ref1.Equals(ref2));

            ValueType val1 = new ValueType(123);
            ValueType val2 = new ValueType(123);
            Console.WriteLine("val1.Equals(val2) = {0}", val1.Equals(val2));
        }
    }

    class ReferenceType
    {
        private int _intValue;

        internal ReferenceType(int intValue)
        {
            _intValue = intValue;
        }
    }

    struct ValueType
    {
        private int _intValue;

        internal ValueType(int intValue)
        {
            _intValue = intValue;
        }
    }
}

f:id:tt195361:20150714135445p:plain