2005年9月24日土曜日

ばあちゃんが書いた書

青蛙が
竹の葉にいる
燕の子が嘴を
巣におさめる
貧しい夕餉の
卓ではあるが
新しいエプロンが
揃えてある
山査子の
花の蔭には
新月をねらう
猫の目が
ある

2005年9月19日月曜日

ロリポブログに移行

今まではWordPressを設置していました。しかし、テンプレートを変えてみたりCSSを使ってレイアウトしてみたりすることがだんだん面倒になってきたので、ブログエンジンはアウトソースすることにしました。

いや、かなり変わるもんですね、気分が。
ブログ自身の見た目もそうなんですが、管理機能のUIが変わったのが大きいです。

.NET関連メモ

A Grouping and Subtotaling Repeater for ASP.NET
Microsoft ACT standalone installation

2005年9月17日土曜日

2005年9月15日木曜日

Visual Studio 2005 RC1

PDC中に出ました。
サブスクライバダウンロードでScriptエラーが発生してうまくダウンロードできなかったけれど、「個人用コンテンツ」を編集して、表示項目を減らしたらなぜかエラーが起こらなくなった。



2005年9月14日水曜日

LINQの裏にあるラムダ式

(どっとねっとふぁんBlog経由)

PDCでLINQことLanguage Integrated Queryのアナウンスとデモがあったそうだ。
http://msdn.microsoft.com/netframework/future/linq/default.aspx

ちょっとサンプルを見てみよう。サンプルは http://msdn.microsoft.com/vcsharp/future/linqsamples/ にある。
public void Linq1() {
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var lowNums =
from n in numbers
where n < 5
select n;

Console.WriteLine("Numbers < 5:");
foreach (var x in lowNums) {
Console.WriteLine(x);
}
}

実行結果は
Numbers < 5:
4
1
3
2
0


なんだこれ、コード中にSQLみたいのが。
気を落ち着けて、overview (http://download.microsoft.com/download/c/f/b/cfbbc093-f3b3-4fdb-a170-604db2e29e99/linq%20project%20overview.doc) を読む。
上記コードだとvariant型みたいなのが使われていて良くわからないが(追記:型推論。C# 3.0の機能らしい。)、型を明確に書き直すとこうなるらしい。
IEnumerable<int> lowNums =
from n in numbers
where n < 5
select n;

しかも、上の書き方はシンタックスシュガーらしく、下の書き方と等価らしい。
IEnumerable<int> lowNums = numbers
.Where(n => n < 5)
.Select(n => n);

さらに、下のように分けて書くこともできる。
Func<int, bool> filter = n => n < 5;
Func<int, int> project = n => n;
IEnumerable<int> lowNums = numbers
.Where(filter)
.Select(project);

で、これをC#2.0風に書くとこうなる。
Func<int, bool> filter = delegate (int n)
{
return (n < 5);
};
Func<int, int> project = delegate (int n)
{
return n;
};
IEnumerable<int> lowNums = numbers
.Where(filter)
.Select(project);

ようするにクロージャで実現されているということ。
LINQとは視点がずれるけど、C# 3.0だとコレクションクロージャメソッドも書き方が変わるな。
//rubyだと managers = employees.select {|e| e.manager?}
managers = employees.FindAll(e => e.IsManager);

こうですか?わかりません!

2005年9月5日月曜日

C# 2.0のコレクションクロージャメソッド

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?CollectionClosureMethod

改めて書いてみると、なんかすごいムズムズする……

using System;
using System.Collections.Generic;
using System.Text;

namespace Closure
{
class Employee
{
public bool IsManager
{
get {return true;}
}

public void doSomething()
{
}

public Office office
{
get { return new Office(); }
}
}

class Office
{
}

class Business
{
public List<Employee> managers(List<Employee> emps)
{
return emps.FindAll(
delegate(Employee e)
{
return e.IsManager;
}
);
}

public void Do(List<Employee> emps)
{
emps.ForEach(
delegate(Employee e)
{
e.doSomething();
}
);
}

public List<Office> collect(List<Employee> emps)
{
return emps.ConvertAll<Office>(
delegate(Employee e)
{
return e.office;
}
);
}

public bool allManagers(List<Employee> emps)
{
return emps.TrueForAll(
delegate(Employee e)
{
return e.IsManager;
}
);
}

public bool noManagers(List<Employee> emps)
{
return !emps.Exists(
delegate(Employee e)
{
return e.IsManager;
}
);
}
}
}

餃子2

今日は麺棒があるので薄くできた。
でも薄すぎた。もっと厚いほうが好み。
具は豚ひき肉とエビの2種類。
餃子