規定値を指示するキーワードdefault・演算子??

キーワードdefault、演算子??は、どちらも規定値を指示します。 キーワードdefaultはパラメータ型Tに対する規定値。 演算子??は「Null許容型→Null非許容型」の変換に対する規定値。 defaultキーワード このキーワードは、参照型の場合には null を返し、数値…

検索パスを追加した新しいAppDomain

アセンブリ検索パスを追加した新しいAppDomainを作成・実行するサンプル。 using System; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main() { AppDomain currentDomain = AppDomain.CurrentDomain; Console.Wr…

式木(Expression Tree)と無名delegate

無名delegateの場合は、コンパイル時に無名メソッドそのものがILに生成されるが、式木はメソッドを表現する式そのものがインスタンスとして生成される。 ILで見てみる こういうコードを書く。 using System; using System.Linq.Expressions; namespace Sampl…

RESTFulとRails、map.resources

routes.rbに記載するmap.resourcesメソッドで提供される機能について、分かった範囲でメモ書きします。 この機能はREST支援機能なので、まずRESTから確認しました。 REST RESTについての自分の認識。 (ここではRailsにとってのRESTを見ていくので、「アーキ…

WPFに乗り換える理由

今更ながら、WPF使って簡単な画面を作ったりしたのです。 しっかり動くアプリというよりは、どんな感じに仕上がるか見るだけの、ポコポコとボタン置いたレベルの。 ざっくりとした感想。 XAMLのStyle指定が使い勝手良さそう。(このStyleの動的切換で見た目を…

Getting Started With Rails

本家のGetting Startedってのを真似て進めてみました。 以下はその際のメモ書きです。 Getting Started With Rails http://guides.rails.info/getting_started_with_rails.html railsアプリ作成 rails blog -d mysql cd blog デフォルトデータベースはSQLite…

Railsセットアップの続き(CentOS on VMWare)

前回の続き。 MySQLのセットアップ yumで。バージョンは5.0.45-7.el5。 sudo yum install mysql mysql-devel sudo yum install mysql-server サーバー入れ忘れてこんなエラーが出るご愛敬などがあった。(ソケットに接続できない。ベタにMySQL立ち上がってな…

XMLのDOM構築を簡易にする(C#2.0用)

C#

System.Xml.XmlDocumentを使ってDOMを構築しようとした場合、やりたいことの大小に関わらず長い名前のメソッドを呼ばなければならず、また、XmlElementとXmlAttributeで生成・追加の方法が異なっていて戸惑います。 もっと簡易に野良XML(...)を量産できるよ…

Railsセットアップ(CentOS on VMWare)

VMWare上でのRailsセットアップをやったので、今のところまでのメモ書きを載せます。 ローカル側はWindowsXP。 サーバがCentOS5.2 on VMWare。 Railsは2.2でした。 Ruby Ruby-1.8.7をインストール。 今回はデフォルトでいくことに。 /usr/local/bin/rubyがで…

UTF-8日本語設定(CentOS・putty・Emacs)

VMWareでCentOSセットアップしたときにそのままだと日本語通らなかったので、環境一式をUTF-8日本語で設定あわせようとしました。 その際におこなった設定をまとめておきます。 CentOS(システムのlocale設定) .bash_profileなどに export LANG=ja_JP.UTF-8 e…

実装パターン

実装パターン作者: ケント・ベック,Kent Beck,永田渉,長瀬嘉秀,株式会社テクノロジックアート出版社/メーカー: ピアソンエデュケーション発売日: 2008/12/22メディア: 単行本(ソフトカバー)購入: 30人 クリック: 502回この商品を含むブログ (90件) を見る…

スレッドの同期

CLRのスレッド同期メカニズムは、Win32のスレッド同期メカニズムのオブジェクトラッパーにすぎない。 volatile read メインメモリから読み取りをおこなうことを強制(CPUキャッシュ無効化) CPUキャッシュ対策 マルチコアCPU下でCPUキャッシュを使用すると、複…

非同期処理

スレッド オーバーヘッド 1MBのアドレス空間をユーザーモードのスタックに予約される 実行コンテキストを持つ セキュリティ ローカライゼーション トランザクション コンテキストスイッチ スレッド切換 カーネルモードに入る CPUレジストリをスレッドカーネ…

.NET Framework 第2版

プログラミングMS .NET FRAMEWORK 第2版 (マイクロソフト公式解説書)作者: ジェフリーリッチャー,Jeffrey Richter,吉松史彰出版社/メーカー: 日経BP社発売日: 2006/12/09メディア: 単行本購入: 7人 クリック: 159回この商品を含むブログ (50件) を見る今後は…

自動メモリ管理

newobj命令 バイト数計算(型・フィールド) バイト数にオーバーヘッド領域(型オブジェクトポインタ・同期ブロックインデックス)を加で必要となる分を加算 8バイト(64ビットアプリケーションなら16バイト) 予約領域を確認 確保できるならNextObjPtrが指すアド…

Thread.Abort呼出

Thread.Abortは非同期的に動作する。 Thread.Abort呼出 スレッドにAbortRequestedフラグを設定して制御を戻す。 スレッド強制終了を検出した際、CLRはスレッドを「安全な場所」に置く。 スリープ・待機などのブロック処理をおこなっている場合、安全な場所に…

コンストラクタ・イベント

コンストラクタ インスタンスコンストラクタ .ctor 参照型の場合、引数なしのコンストラクタは自動的に生成される インライン初期化したフィールドは、コンパイル時にインスタンスコンストラクタコードに自動変換される。 コンストラクタの数だけ重複した初…

メソッド呼び出しとIL命令

「プログラミング .NET Framework 第2版」を読んでいます。 メソッド呼び出しとIL命令 メソッド呼び出しはILコードにおいてcall命令かcallvert命令に変換される。 call命令 static・インスタンス・仮想 変数を指定する nullはないことを想定 仮想メソッドを…

CLRのガベージコレクション

「プログラミング .NET Framework 第2版」片手に、ガベージコレクションについて。 ジェネレーション CLRのガベージコレクションはジェネレーションで管理される。 ジェネレーションは以下三つの考え方に基づいている オブジェクトが新しいほど、その寿命は…

JavaScriptのオブジェクト、コンストラクタ、プロトタイプ、スコープ等

Javascriptのオブジェクト、およびそれにまつわること等を、サイ本片手に覚え書き。 JavaScriptのオブジェクト オブジェクトはプロパティの集合 Javascriptのオブジェクトは順序付けされていないプロパティの集合。プロパティには数値、文字列、関数、オブジ…

実践CommonLisp:スカラー・コレクション

スカラー スカラーなデータ型・・・数、文字、文字列。 数 読取器は正規化してオブジェクトに変換する CL-USER> 10 10 CL-USER> 20/5 4 CL-USER> #xa 10 #bは二進数 #oは八進数 #xは十六進数 #cは複素数 実数の切り捨て/丸め CL-USER> (setf lis '(10.49 10…

市民です

メールが来ました。 本日より、qnzmさんは 「はてなダイアリー市民」になられましたのでお知らせいたします。はてなダイアリー市民とは、ユーザー登録されてから30日分の日記を書き、な おかつ最近30日以内に日記をお書きになったユーザー様のことです。(市…

Mac OS XでCommon Lispの実行環境を作る(CLISP + Carbon Emacs + SLIME)

質問があり、そういえばセットアップの説明を書いてなかったことに気づきました。 LispはGNU CLISP 2.43、OSはMac OS X v10.5 Leopard、実行はCarbon Emacs+Slimeです。 もっぱらCarbon Emacsからslime起動(M-x slime)、インタプリタにコマンドを打ち込む形…

実践CommonLisp:関数、変数、マクロ

関数 (defun name (parameter*) "ドキュメンテーション文字列:省略可能" body-form*) パラメータ オプショナルパラメータ(&optional) 引数の値にデフォルトを指定できる。指定なしの場合、NILになる。 デフォルト値かどうかは、デフォルト値のあとにもう一つ…

実践CommonLisp:シンタックスとセマンティクス

二つのブラックボックス lispには二つのブラックボックスがあって、ひとつは読取器(reader)、ひとつは評価器(evaluator)。 読取器は文字列をS式というLispオブジェクトへ変換する。 評価器はS式から組み立てられるLispフォームを決める。 S式 ひとつはアトム…

ビジネスマンのための「読書力」養成講座

「本の読み方」というものには興味があって、なぜかというと、自分が読んだ本の内容をすっかり忘れてしまっているということがよくあったからだ。過去形にしたのは、最近はノートにまとめをつくったり、大事なところは抜き出して時折振り返ったりして単に忘…

実践CommonLisp

lispに興味があるといいながら、基本的な書き方もよくわかってなかったので、少し時間をかけて読んだこの本。 ようやく一通りの文法を理解して、簡単なコレクションの操作やファイル入出力の基本や、lispでの評価方法や、マクロがなぜあれほどクローズアップ…

Google Chrome

Googleが提供する新しいブラウザをざっくり動かした感触。 使用感 軽い。 新しいページ読込中でも、ブラウザ側の操作はスムーズにおこなえる印象。 表示領域が大きい。 browser processとrenderer process browser processとrenderer processから構成されて…

「初めてのRuby」の復習をexpectationsで(変数と式)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #6章 変数と式 Expectations do expect [true, true] do a = "aaa" b = a [a == b, a.equal?(b)] end expect [true, false] do a = "aaa" b = "aaa" [a == b, a.equal?(b)] end #多値 ex…

「初めてのRuby」の復習をexpectationsで(メソッド)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #7章 メソッド Expectations do #多値 expect 2 do def foo; return 1, 2, 3; end a, b, c = foo b end expect [1, 2, 3] do def foo; return 1, 2, 3; end foo end #クロージャ expect …