宏明's profile渋木宏明(ひどり) WeblogBlogListsNetworkMore Tools Help

渋木宏明(ひどり) Weblog

マネージコードしか書かないぞ

宏明 渋木

Occupation
Location
Microsoft MVP for Development Tools - Visual C#

Custom HTML

12/1/2009

D-FAX | Fax を メールで受け取れるサービス

ネタ元:
D-FAX|Faxをメールで受け取れるインターネットFaxサービス

加入してみた。

電子メールだけで済ませてしまいたいのがホンネだけど、FAX でないとダメなこともたまーにあるわけで。

とは言え、いまさら複合機買うとかも邪魔くさいので、D-FAX に登録してみますた。

D-FAX にユーザ登録すると自分専用の FAX 番号がもらえます。

その番号宛に送信された FAX は tif 画像に変換され、添付ファイルとして電子メールで登録アドレスに送られてくるとゆー仕組みです。

初期登録費用が 2,625 円ほどかかりますが、受信料や月額利用料などの費用は発生しません。

しかも、その初期登録費用も、このようにブログで D-FAX を紹介する記事をかけば免除になるキャンペーンが実施中だったりします。

キャンペーンは今年いっぱいのようなので、「おっ」と思った方、申し込みはお早めに ;-)

11/20/2009

Windows Server 2008 R2 で? TFS Basic 2010 日本語版 Beta2 の TFS Web Access が利用できない

 

元ネタ: TFS Basicを構成するとWeb Accessが使用できない - 新日々此何有哉

元ネタの元ネタは僕なんですが、最近 Twitter ばっかりで全然ブログ書いてないから、でたまにはってことで (^^;

現象としては件名の通りです。

Windows Server 2008 R2 をクリーンインストールした後(さらに、必要ならドメインに登録して)、TFS Basic 2010 Beta2 をインストーラーの言いなりでインストールすると、TFS Web Access が利用できません。

原因は詳しく調べていませんが、雰囲気的には TFS のインストーラが ASP.NET AJAX 系の構成をしくじってる風味?

kkamegawa さんが現象を再現してくれるのと前後して、Microsoft Connect に以下の障害報告してました

Windows Server 2008 R2 日本語版に TFS Basic 日本語版をすべて既定の設定でインストールした時、TFS Web Access が使用できないhttps://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=510612

が、昨夜「再現した。これは日本語版に固有の問題ではない。次のリリースで修正する」という回答がついてました。

ウチの環境固有の問題じゃなくてよかった (^^;

なお、Beta2 時点での回避策は「手動で .NET Framework 3.5.1 をイネーブルにしてくれ」だそうです。

Windows Server 2008 R2 の管理コンソールから出来たはずだけど、既に .NET Framework 4 が入ってる(TFS のインストーラが入れてった)状態で大丈夫なんだろうか? (^^;

まだお試し構築中だから、最悪 OS の入れなおし(つっても保存してある .vhd をコピってくるだけ)からやってもいいんだけど。

10/23/2009

Windows 7 Ultimate ワッパーを食す

一部で話題の「Windows 7 ワッパー」に挑戦しました。

んが、11時過ぎにバーガーキング秋葉原昭和口通り店にたどり着いた時には時すでに遅し。

777円の特価販売は終了していました。(開店10分くらいで特価販売の30食は売り切れたそうです)

しかしながら、ここで引き下がってはオトコがすたります。

さりとて、通常価格で「普通に」Windows 7 ワッパーを買って食べる、というのも面白くありません。

ということで「Windows 7 ワッパー」に「パテとソース以外のすべてのトッピングを追加」して「Windows 7 Ultimate ワッパー」としてみましたw

P1000004

ついでなんでポテトとオニオンも付けました。とても食べ応えがありそうです。

モリモリとやる気が湧いてきますw

P1000005

ご開帳w 写真だとトッピング追加したことがよく分からんです。

パテの総重量は 800g、デザートには 480g の大容量を誇るファミマのミルクプリンを選択しました ;-)

P1000006

最上段のバンをどけたとろこですが、あまり美しくありません (^^;

かぶりつくのは無理なので、バラして食します。

ソースやトッピングといった貴重な「味」の源である最上段のパテは温存しつつ、2段目のパテから最下層に向かって食べ進みます。

P1000007

さぁ、ここからラストスパート。

最下段のバンは肉汁でべしょべしょ…

そのままではきつかったけど、ケチャップをかけたらまぁまぁイケました。

と。完食ショットを撮り逃してたことに今気がつきました (^^;

余裕あるつもりだったけど、結構きつかったんだなぁw>じぶん

9/28/2009

.NET Framework 4.0 世代の Expression Trees

9/26(土) のわんくま勉強会で、「.NET Framework 4.0 世代の Expression Trees」と題するセッションを担当しました。

セッションの配布資料(訂正版)とサンプルコード(VS2008, VS2010)を

http://cid-f11bb9fd8e1bc5f9.skydrive.live.com/self.aspx/Downloads/ET4-20090926.zip

に置いたので、興味のある人はどうぞ ;-)

VS2010 用のサンプルは、.NET Framework 4.0 の Expression Trees を使った「おれおれスクリプト言語」の実装です。

  • 変数はグローバル変数のみ
  • 四則演算のみ
  • 条件判断やループなどの制御構造は未実装

というごく簡単なものですが、数百行の実装でこれくらいできるので、なかなかオモシロイと思います。

9/24/2009

イベントの実装を少しだけ簡略化

小ネタシリーズw

イベント実装をホンの少しだけ簡略化します。

public static void Fire(this EventHandler eventHandler)
{
    if (eventHandler != null)
    {
        eventHandler(eventHandler.Target, new EventArgs());
    }
}

public static void Fire<TEventArgs>(this EventHandler<TEventArgs> eventHandler, TEventArgs eventArgs) where TEventArgs : EventArgs
{
    if (eventArgs == null) throw new ArgumentNullException("eventArgs");

    if (eventHandler != null)
    {
        eventHandler(eventHandler.Target, eventArgs);
    }
}

使い方は

public event EventHandler EventWithNoArgs;

protected void OnEventWithNoArgs()
{
    this.EventWithNoArgs.Fire();
}

public class HogeEventArgs : EventArgs {}

public event EventHandler<HogeEventArgs> EventWithArgs;

protected void OnEventWithNoArgs(HogeEventArgs e)
{
    this.EventWithNoArgs.Fire(e);
}

みたいなカンジ。

OnXXX() の中がスッキリ書けるんだけど、これくらいの効果じゃ大したことない??

9/19/2009

拡張メソッドによるキャスト

小ネタ。

全国三千万人のメソッドチェイナーのみなさんに捧げますw

public static T Cast<T>(this object source)
{
    return (T) source;
}

public static T As<T>(this object source) where T: class
{
     return source as T;
}

使い方は以下のような感じ。

object o1 = "ABC";
string s1 = o.Cast<string>();

object o2 = 1;
string s2 = o.As<string>();

これで、まだまだつないでいける ;-)

そーいえば、C++ でも (int) じゃなくて int() 形式のキャストが好きだったなぁ>じぶん

9/16/2009

拡張メソッド+ラムダ式でメンバ名をエレガントに取得

ネタ元: C#でシンボルを実現する - 開発思考実験日記

久々に面白いと思った (^^)

public static string GetMemberName<T, R>(this T @this, Expression<Func<T, R>> expression)
{
    return ((MemberExpression)expression.Body).Member.Name;
}

とすると

public class Hoge
{
    public string Name { get; set; }
}

の時

Hoge hoge = new Hoge();

string name = hoge.GetMemberName(_ => _.Name);

で Name プロパティの名前 “Name” が取得できる、と。

LINQ の orderby 句なんかで出来ているので、何か手があるんだろうなと思いつつ、コレを見るまで深く考えてなかったのを反省。

ネタ元のさらにネタ元では

string name = hogehoge.GetMemberName(_ => _.Very.Deep.Name);

のような、深ーいオブジェクト階層にも対応した手順が紹介されていたけど、通常そこまで必要ないと思うので、よりシンプルなネタ元の手順を使わせていただきます m(_ _)m

7/24/2009

日本語版は機械翻訳されたコンテンツとなります。

ネタ元: 日本語版は機械翻訳されたコンテンツとなります。

うぎゃーーーーー

http://msdn.microsoft.com/ja-jp/magazine/default.aspx

ご案内: 今後、マガジンの日本語版は機械翻訳されたコンテンツとなります。新しい機械翻訳テクノロジの急速な進歩によって、マイクロソフトのコンテンツを世界のより多くの言語で、より早くお伝えできるようになります。機械翻訳されたコンテンツに対する評価やコメントなど、皆様のフィードバックをお寄せください。

機械翻訳にするぐらいならもう MSDN マガジンなんてやめてしまえ、機械翻訳の読みづらい間違いだらけの日本語読むより原文の方が読みやすいんじゃーーーーー。

まったく同感。

どれだけ機械語翻訳の品質に自信があるのか知らないが、近々には使い物になるレベルではなし(=読めば読むほど頭の中がグルングルンする品質!)し、ごく近い将来に劇的に品質が改善される可能性も相当薄そうな気がする。

機械翻訳なら MS 印以外にも選択肢はいくつかあるので、恩着せがましく読みづらいコンテンツを晒すくらいなら、いっそ潔くやめちゃえばいいのに。

そして、機械語翻訳が「使える」レベルになってから公開すればいいと思う。

いまのところ、「日本語圏向けにも(ちゃんと)コンテンツを公開してますよ!」ってポーズにしか見えない。

7/1/2009

MSMVP にもリストラの波が

今回の年次更新で、大御所の MSMVP が次々と落選していきます ;-p

審査基準は非公開なので落選理由は分かりませんが、予算規模縮小ってことなんでしょうねぇ…

しかし、上に挙げたような人たちですら落選になるということは、自分も次回更新危ないかもしれないなぁ (^^;;;

落選したら Mono の人にでもなろーかなw

6/11/2009

dynamic は銀の弾丸ではない

ネタ元: 荒井省三のBlog : DLR を使った Excel プログラミング

ガッカリな事実を再確認。

「dynamic は COM オブジェクトの解放まで面倒をみてくれない」のだ。

.NET 的な都合で、自動的に COM オブジェクトの解放を行うのが非常に難しいことであるのは理解できるので、そういう仕様であることの是非は問わないことにする。

が、問題は現時点で

  • dynamic キーワードを使用して COM 相互運用を行う際、「COM 参照の解放がプログラマの責任であること」を説明した技術文書が見あたらない
  • dynamic キーワードを使用して COM 相互運用を行う際、「COM 参照を解放する明確な手順」を説明した技術文書が見当たらない

こと。

「GC 任せ」なんて、ぬるい解決はあり得ない。

一応、dynamic キーワード関連のヘルプトピックをいくつか見て回ったけど、上記2点に関する記述は見つけられなかった。

dynamic キーワードの導入によって、従来よりも COM 相互運用の利用が促進されるであろうことが予測される。なので、事前に適切な情報開示をきちんと行っておかないと、本来なら避けられるはずの「不適切な用法が招く不具合」を多数引き起こしてしまう。

ということで、以下2件のフィードバックを行いました。

賛同いただける方は投票をお願いします m(_ _)m

2009-06-14 追記:

誤解があるといけないので補足。

このエントリは「dynamic キーワードなんてダメだ、使えねぇ」というものではありません。

「dynamic キーワードを使用して COM 相互運用を行う際、COM 参照の解放はプログラマの責任であること」に対する、注意を喚起すること、そして適切な情報開示を Microsoft 者に求めることがこのエントリの主旨です。

 

Custom HTML

 
follow hidori at http://twitter.com