« 2008年05月25日 - 2008年05月31日 | メイン | 2008年06月08日 - 2008年06月14日 »



2008年06月01日 - 2008年06月07日 アーカイブ

2008年06月01日

マーラー丼作ってみた

DSCF2357.jpg 花椒(ホアジャオ)と呼ばれる中国の香辛料が生協で25円で売ってたので買って使ってみました。作ってみた写真の料理は麻辣丼(マーラー丼)と呼ばれる台湾の屋台料理です(だと思います)
マーラー丼は、以前の出向先の近くで初めて食べたのですが、豚バラをボロボロになるまで煮込んでご飯に乗っけたものだったと思います。その乗っかってる豚バラの90パーセントは脂身で、しかもものすごい辛くて、そのときお世話になっていた部長が「コレ食べると血圧気になってしょうがない」みたいな事を言ってました。作り方も想像で作ってます。
・脂身がものすごかったのでたぶん豚バラだと思います。
・ホアジャオはマーラー麺に使うらしいのでマーラー丼にも使うだろうと。
そんな感じで作ってみました。「ほとんど脂身だけの豚バラくださーい」とか言える精肉店は知らないので普通に豚バラ500gを使っています。
作り方はトンポーロー作って細かく切って最後に辛く味付けるだけです。簡単。

・豚バラが浸るくらいの水(2リットル~)をなべに用意する。 ・ネギ1本と、ニンニク1かけ、しょうが2かけと豚バラを1時間煮込む。煮汁はすてちゃだめ。
・豚バラを取り出して賽の目になるまで細かく切る。勿体無いと思うけど切る。
・しょうゆ大匙2と紹興酒大匙1で味付け。しばらく浸しておく。
・豚バラをフライパンで焼く。コンガリ行く。
・先ほどの煮汁に味付け。しょうゆ大匙3、砂糖大匙3、紹興酒大匙2、豚バラを投入。
・ホアジャオ、みじん切りにした唐辛子を適宜投入。味見しながら投入。
・2時間ほどとろ火で煮込む。
写真のマーラー丼はあまり煮込んでないです。1時間くらい。香辛料がエグくなるかなーと思ったけど、ぜんぜん大丈夫でした。
辛そうに見えないのはあまりにも辛いのは苦手だからです。ピリッとするくらいです。ホアジャオはピリッと言うか、バチッという辛味です。そういえばとろみをつけるの忘れてました。つけたい人は片栗粉でどうぞ。

大きな地図で見る
まだあれば、ここらへんでマーラー丼が食べられる。お店の名前忘れちゃった。

[ 最近のエントリーとその関連エントリー ]


[ スポンサードリンク ]

2008年06月05日

証明書(公開鍵)で暗号化するサンプルソース(C#)

証明書を使って署名・暗号化を行ってメール送信したいということがありますが、どうやって組めばいいのかいろいろと探してたらありました。
このサンプルソースでは署名はしてないですが、MSサポートオンラインにサンプルがあります。日本語でおkな自動翻訳がされてます。そのサンプルの一部をC#で書きました。CAPICOMを使っていますのでダウンロードしてインストールする必要があります。
また、COMコンポーネントをシステムに登録するために
regsvr32 capicom.dll
も忘れずに。

smime.PNG 取得した証明書(smime.p7m)を
ファイル名を指定して実行→mmc
コンソール→スナップインの追加と削除→追加→証明書
ストアの任意の場所に証明書をインポート
でインストールしておく必要があります。
サンプルソース
using System;
using System.Text;
using CAPICOM;
using CDO;
using ADODB;
using System.IO;
using System.Web.UI;

namespace ConsoleApplication
{
    class Program
    {
        static void Main( string[] args )
        {
            Message msg = new Message();
            msg.To = "hoge@domain.com";
            msg.From = "moge@domain.com";
            msg.Subject = "subject";
            msg.TextBody = "body";

            Program inst = new Program();
            inst.EnvelopeMessage( msg ).Send();
            return;
        }

        private void SetConfigure( Message prmMsg )
        {
            prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = SMTPSRV;
            prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 25;
            prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;
            prmMsg.Configuration.Fields.Update();
        }

        private Certificate GetCertificate()
        {
            Store store = new Store();

            // 証明書をインポートした場所
            store.Open(
                CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE,
                CAPICOM.Constants.CAPICOM_OTHER_STORE,
                CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_EXISTING_ONLY |
                CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY
            );

            Certificate retCert = null;
            foreach( Certificate tmpCert in store.Certificates )
            {
                // 証明書→詳細設定の拇印
                // Certificate.Thumbprintは、半角スペースを含まないみたい。
                if( tmpCert.Thumbprint.ToLower().Equals("<your thumb print>") )
                {
                    retCert = tmpCert;
                    break;
                }
            }
            return retCert;
        }


        public Message EnvelopeMessage( Message prmMsg )
        {
            UtilitiesClass util = new UtilitiesClass();
            Message secureMsg = new Message();

            secureMsg.DataSource.OpenObject( prmMsg, "IMessage" );
            secureMsg.BodyPart.ContentMediaType = "application/pkcs7-mime; smime-type=enveloped-data";
            secureMsg.BodyPart.ContentTransferEncoding = "base64";
            secureMsg.BodyPart.Fields[ "urn:schemas:mailheader:content-disposition"].Value = "attachment;FileName=smime.p7m";
            secureMsg.BodyPart.Fields[ "urn:schemas:mailheader:content-description"].Value = "S/MIME Encrypted Message";
            secureMsg.BodyPart.Fields.Update();

            Certificate cert = null;
            if ((cert = GetCertificate()) == null)
                throw new Exception("証明書が見つからない");

            EnvelopedData envlpInst = new EnvelopedDataClass();
            envlpInst.Recipients.Add(cert);

            ADODB.Stream srcStrm = prmMsg.BodyPart.GetStream();
            srcStrm.Type = StreamTypeEnum.adTypeBinary;
            envlpInst.Content = util.ByteArrayToBinaryString( srcStrm.Read( srcStrm.Size ) );
            String cryptStr = envlpInst.Encrypt( CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64 );

            ADODB.Stream destStrm = secureMsg.BodyPart.GetDecodedContentStream();
            destStrm.Type = StreamTypeEnum.adTypeBinary;
            destStrm.Write( Convert.FromBase64String( cryptStr ) );
            destStrm.Flush();
            destStrm.Close();

            // smtp設定
            SetConfigure( secureMsg );
            return secureMsg;
        }
    }
}

[ 最近のエントリーとその関連エントリー ]


2008年06月03日

javascriptが判らなくなってきたのでやりなおし。

ウェブ関係の仕事をはじめて少し経ちます。社内インフラでサイトを構築することがこれまでもあったりしましたので今やっていることにそれほど抵抗はないのですが、javascriptをよく理解できなくなっていて困っています。これまでは関数列挙して実装していたような覚えがあって、やりたいことを目的別に調べて実装して動いてわーい♪(別のブラウザでは動かなくてショボーン)の世界かと思ってたのですがどうもちがう。
どう違うのかはちょっとおいて置いて、ワタシがプログラム言語を学んだのは C → C++ → java → C# といった感じで、オブジェクト指向を学んだのも C++ からでした。javascriptがオブジェクト指向だということも以前から判ってはいるのですが、「なんか書けばまぁうごく」というやる夫並にひどい着地の仕方をしておりまして、「スコープ?あんの?varて書かなくてもうごくよ?」「this?いやいや。thisてか、クラスは?」とかそれはそれは酷いことになっています。ヒドイ。
 <ワタシ>
          __
        .-´   ``ヽ
       / ⌒      `ヽ   javascriptなんて素人向けのg
     /        `ヽ  ヽ
((   / (●)          ヽ
    |::⌒(__   (● )     |
    ヽ   人__) ⌒::::      |
      ヽ(__ン          |
     人           /  | |
    /          _ノ  ノノ 
                |


          __
       .-´    ``ヽ
      /  ヽー     `ヽ えnあびゃぶ。
     / ノ    (O )ノ ̄ ̄`ヽ、―ニ  
    / (●) __)⌒/ ´`ヽ _  三,:三ー三,:
    | ::⌒(__ノ/  ノヽ--/ ̄ ,    `   ` ̄ ̄ ̄
   。ヽ 。   )(  }.  ...|  /!    
      ヽo (__ン  }、ー‐し'ゝL _  
     人  ー   jr--‐‐'´}    ;ーー------
    /        ヾ---‐'ーr‐'"==
                | 
それでもページに実装するスクリプトの規模がほんの数ステップなものですから、ちゃんと勉強する気にはなれなかったのですが、業務の上というかプライベートのほうで判らないことを調べていくにつれて、「え。。。なにやってんのこれ?」「何でこれで動くの?」といったことが多くなっていきます。

なぜ判らなくなってきたのか。

多分、数年前からjavascriptが再注目されて来ていた時にまったく見向きもしなかったため、昔のままの知識で取り残されたんだと思います。Ajaxなんてjavascirptで非同期にコンテンツをロードするだけでしょとか言いながらもその意味を全然わかってないのに見向きもしなかった。重ねてヒドイ。

で、以下になんぞこれ?と思った実装を記してみます。

オブジェクトリテラル

var hoge = {};
いきなり何がしたいのかもわからん。ブロックを返してんのか。空のブロックを返して何がしたいんだ。

■これはオブジェクトリテラルという表記法で、@ITCore JavaScript 1.5 Guide:Literalsに説明がありました。ふーん。へー。オブジェクトなのね。便利ね。

匿名・無名関数

var moge = function(){};
var fuga = new moge();
1行目は関数ポインタみたいなことか?てか、メソッド名は?2行目を見たら実はコンストラクタ?ふざけてんのか(ふざけてません)

そろそろきっちりJavaScriptに無名関数のことがかいてありました。
無名関数を採用するメリットには、「命名する必要の無い関数をシンプルに記述できる」「(複数ファイルのJavaScriptライブラリを読み込んでいるときなどにおいて)、既存の関数/変数名との衝突を回避できる」という点が挙げられる
ふーん。なるほど。ということはmogeは無名関数の別名かな。で、javascriptにおいては全ての関数はコンストラクタになりうるらしいのでnewしてオブジェクトの生成ができると。そういうものか。

オブジェクトリテラルとワンタイム(使い捨て)メソッド

var piyo = (function( fst, snd ){
    return {
        prop:fst,
        fuga:snd
    };
}( 1, 2 ));
もう、いろいろナニコレ。(function(){}())てなに?

■分解してみると、
1.この関数は無名関数である。
2.この無名関数は、オブジェクトリテラルを返しているようである。
までは、判りました。で、(function(){}())は無名関数を実行してるだけらしい。もちろん無名じゃなくともよいけど、無名関数だと自身をオブジェクトに渡すとかしないと呼びようがないので、定義しただけのものを実行したいのならこうするみたい。これは意外と腹に落ちた。

これらはここ数ヶ月でようやく知ったないようです。でもまだプロトタイプチェーンが腹に落ちてないので調べる。ちょっとjavascriptが自由すぎてびっくりしてる。

[ 最近のエントリーとその関連エントリー ]


2008年06月02日

pow-wowクリエーターの手によるTシャツ展に参加するですよ。

powwow.PNG pow-wowクリエーターたちによるTシャツ展に参加します!ブログはこちら。どう考えても、ワタクシ、ほかのクリエータさんたちとお近づきになりたいだけの輩です。「オマエがクリエータとかブフー!」みたいなことを言われるのは承知のことなのですが、それでもやるのです。参加することに意義があるのです(皆さんとお近づきになるところに)(いやらしい)(股間を隠しながら)

股間はどうでもよいのですが、実は、このTシャツ展を主管しておりますネオさんと去年の年末に1度お会いしているのです。今回も非常に楽しみです。楽しみには楽しみなのですが、今回のTシャツ展に出展するTシャツは、実は販売するものだと聞いていきなりハードルが棒高跳び並みに上がりました。うわー。。。と、とべねー。やっべ。全然想定外。ワタシが想像していましたのは、ドカドカとクラブサウンドが流れていてビール片手に、「おー!このTシャツかっけー。ほしー。」とか言いながら、クリエイターさんたちと立食パーティ(どんなだ)みたいなことを想像しておりました。全然ない。のっけから無い。寧ろ「その発想は無かった」とか言われる側。困った。こまったですよ。
ですが、参加を表明しました以上、つくります。量産は出来ませんが、Tシャツ数枚に直書きで、さらにやる夫ケータイストラップをオマケでつけて販売しようかと思います。だからみんなこぞってTシャツ店に来てワタシとその後飲んだり食べたりして遊ぼうぜええぇええ!!!

ですのでまた進捗状況なんかを報告しながら近くなったら告知します。

※ところでコレかいてる最中、リュウイチがオマーン戦開幕前に君が代歌っててビール吹いた
※なぜか家内がやる夫ケータイストラップをケータイにつけてくれない

[ 最近のエントリーとその関連エントリー ]


2008年06月01日

マーラー丼作ってみた

DSCF2357.jpg 花椒(ホアジャオ)と呼ばれる中国の香辛料が生協で25円で売ってたので買って使ってみました。作ってみた写真の料理は麻辣丼(マーラー丼)と呼ばれる台湾の屋台料理です(だと思います)
マーラー丼は、以前の出向先の近くで初めて食べたのですが、豚バラをボロボロになるまで煮込んでご飯に乗っけたものだったと思います。その乗っかってる豚バラの90パーセントは脂身で、しかもものすごい辛くて、そのときお世話になっていた部長が「コレ食べると血圧気になってしょうがない」みたいな事を言ってました。作り方も想像で作ってます。
・脂身がものすごかったのでたぶん豚バラだと思います。
・ホアジャオはマーラー麺に使うらしいのでマーラー丼にも使うだろうと。
そんな感じで作ってみました。「ほとんど脂身だけの豚バラくださーい」とか言える精肉店は知らないので普通に豚バラ500gを使っています。
作り方はトンポーロー作って細かく切って最後に辛く味付けるだけです。簡単。

・豚バラが浸るくらいの水(2リットル~)をなべに用意する。 ・ネギ1本と、ニンニク1かけ、しょうが2かけと豚バラを1時間煮込む。煮汁はすてちゃだめ。
・豚バラを取り出して賽の目になるまで細かく切る。勿体無いと思うけど切る。
・しょうゆ大匙2と紹興酒大匙1で味付け。しばらく浸しておく。
・豚バラをフライパンで焼く。コンガリ行く。
・先ほどの煮汁に味付け。しょうゆ大匙3、砂糖大匙3、紹興酒大匙2、豚バラを投入。
・ホアジャオ、みじん切りにした唐辛子を適宜投入。味見しながら投入。
・2時間ほどとろ火で煮込む。
写真のマーラー丼はあまり煮込んでないです。1時間くらい。香辛料がエグくなるかなーと思ったけど、ぜんぜん大丈夫でした。
辛そうに見えないのはあまりにも辛いのは苦手だからです。ピリッとするくらいです。ホアジャオはピリッと言うか、バチッという辛味です。そういえばとろみをつけるの忘れてました。つけたい人は片栗粉でどうぞ。

大きな地図で見る
まだあれば、ここらへんでマーラー丼が食べられる。お店の名前忘れちゃった。

[ 最近のエントリーとその関連エントリー ]


ツリータイプ・カテゴリー

open all | close all

リファラから検索


サイト内検索