<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../../../../css/rss/feedRss2.xsl" media="screen" type="text/xsl"?>

<rss version="2.0"> 
  <channel> 
    <title>仕事,ITの忘備録inアメブロ</title>  
    <link>http://ameblo.jp/oregano-blog/</link>  
    <description>仕事,IT忘備録、メモ下記と日記です。メモ書きですが、プログラムなど技術的の問題の中で、環境によってや皆さんも同様な問題にぶつかりそうな事柄について書いていくつもりなので、もしかしたらお役に立てるかもしれません。</description>  
    <language>ja</language>  
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" href="http://feedblog.ameba.jp/rss/ameblo/oregano-blog/rss20.xml" type="application/rss+xml"/>  
    <item> 
      <title>C#のSplitContainerの片方のPanelを固定する</title>  
      <description><![CDATA[<p>
 C#のSplitContainerコントロールの片方のPanelを固定する設定のメモ書きです。<br />

<br />

（環境はWindowsXp,VisualC#2008EEです）<br />

<br />

フォーム上にSplitContainerコントロールがある場合、そのフォームのサイズを変更したり最大化したりするとそれに併せてSplitContainerにある二つのpanelのサイズも変わってしまいます。<br />

<br />

片方のpanelのサイズを固定したい時は、SplitContainerのFixedPanelプロパティで設定します。下の画像ではPanel1の方を固定しています。（赤で囲んでいる部分）<br />

<br />

<a href="http://stat.ameba.jp/user_images/20100201/19/oregano-blog/e7/d0/j/o0424030310397206452.jpg"><img border="0" alt="仕事,ITの忘備録inアメブロ-C# splitContainer" src="http://stat.ameba.jp/user_images/20100201/19/oregano-blog/e7/d0/j/t02200157_0424030310397206452.jpg" /></a>

<br />

<br />

ただ、これだけだとSplitContainerの分割境界線の変更ができてパネルのサイズが変更されてしまいます。これも無効にするにはIsSplitterFixedプロパティをTrueに変更します。（上の画像参照）<br />

<br />

C#入門書のためのおすすめ入門書の紹介<br />


<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8494815">猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ)/粂井 康孝<br />

<img border="0" src="http://ecx.images-amazon.com/images/I/4146gcehvxL._SL160_.jpg" /></a>

</dt>

<dd style="margin: 0pt;">￥2,625</dd>

<dd style="margin: 0pt;">Amazon.co.jp</dd>

</dl>

<br />


<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8494814">プログラミングC# 第5版/Jesse Liberty<br />

<img border="0" src="http://ecx.images-amazon.com/images/I/51B0FOLrNmL._SL160_.jpg" /></a>

</dt>

<dd style="margin: 0pt;">￥5,040</dd>

<dd style="margin: 0pt;">Amazon.co.jp</dd>

</dl>

<br />

<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/oregano-blog/entry-10448188299.html</link>  
      <pubDate>Mon, 01 Feb 2010 19:54:46 +0900</pubDate> 
    </item>  
    <item> 
      <title>FFFTP利用者必読！10年以上お世話になったFFFTPとお別れすることにしました・・・</title>  
      <description> <![CDATA[ FTPクライアントにフリーのFFFTPを利用している方は多いと思います。私もその一人でもう十年以上お世話になっています。<br />

<br />

シンプルで使い勝手が良くて全く不満はなかったのですが、ついさっきおさらばすることにしました。<br />

<br />

理由はGumblarなどのウイルス・マルウェアによってFFFTPで使っているホスト情報やパスワードが抜き取られる可能性があるからです。Gumblarによるサイト改竄の被害は最近ネットでは結構話題になってますね・・・<br />

<br />

現在（2010/01/30）、<a href="http://www2.biglobe.ne.jp/~sota/ffftp.html">作者さんのHP</a>

でもその警告がされています。<br />

<br />

FFFTPはレジストリを使っているということは前から知ってたけどまさかこんなことになるなんてね。<br />

<br />

とりあえず自分はFFFTPアンインストール・レジストリを削除して他のFTPクライアントツールを入れました。<br />

<br />

レジストリ削除などの詳細は<a href="http://www3.atword.jp/gnome/2010/01/28/hammmer-and-anvil-a-blacksmith-in-the-dark/">こちらのサイト</a>

が参考になると思います。<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10446334180.html</link>  
      <pubDate>Sat, 30 Jan 2010 15:22:44 +0900</pubDate> 
    </item>  
    <item> 
      <title>C#でDateTimeクラスを使って現在のUNIX時間（UNIXタイム）を求める。</title>  
      <description> <![CDATA[ C#で現在のUNIX時刻を求めるプログラムのメモ書きです。<br />
<br />
phpではtime()関数で簡単にUNIX時刻が求める事ができますが、C#ではそれと同等の機能はありません（自分が調べた範囲では・・・）<br />
<br />
とは言っても、C#でUNIX時刻を求める事はそんなに難しいものではありません。数行のコードでできます。<br />
<br />
まず、UNIXタイムの定義ですが、UTCでの1970年1月1日0時0分0秒（UNIXエポックタイム）からの経過秒数（閏秒を加味しない）です。<br />
<br />
・<a href="http://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">UNIX時間（Wiki）</a>
<br />
<br />
ということで、現在のUNIX時間を求めるには、単純に現在の時間からUNIXエポックタイムを引けばいいわけです。<br />
<br />
そのコードを下に書きます。<br />
<br />
//UNIXエポック時刻<br />
public readonly static DateTime dtUnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);<br />
<br />
/// &lt;summary&gt;<br />
/// 現在のUNIX時刻を作成＆リターン<br />
/// &lt;/summary&gt;<br />
public static long getNowUnixTime()<br />
{<br />
    //現在時刻のDateTimeオブジェクト<br />
    DateTime dt = DateTime.Now;<br />
    //UTC時刻に変更<br />
    dt = dt.ToUniversalTime();<br />
    //現在時刻のDateTimeからUNIXエポック時刻のDateTimeを引いて、その結果を秒数で表す<br />
    return (long)dt.Subtract(dtUnixEpoch).TotalSeconds;<br />
}<br />
<br />
説明はコードと共にコメント書きしているので必要ないと思います・・・結局、getNowUnixTime()が現在のUNIX時刻をlong型で返してくれるということです。<br />
<br />
・C#初心者のためのおすすめ入門書の紹介<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8442634" alt0="BlogAffiliate" target="_blank" rel="nofollow">ゼロからわかる C#超入門/斉藤 友男<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/416fKonQJrL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥2,394</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8442633" alt0="BlogAffiliate" target="_blank" rel="nofollow">C#クックブック 第3版/Jay Hilyard<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51De4RNsYzL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥4,830</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<br />
<br />
参考サイト<br />
・<a href="http://www.epochconverter.com/">Epoch Converter</a>
（ネットで現在のUNIX時刻が見れるのでテスト・検証用に使える）<br />
・<a href="http://smdn.invisiblefulmoon.net/programming/tips/unixtime_to_datetime/">UNIX時間をDateTime型に変換する</a>
<br />
<br><br />
</br>
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10445227668.html</link>  
      <pubDate>Fri, 29 Jan 2010 00:14:02 +0900</pubDate> 
    </item>  
    <item> 
      <title>大河ドラマ「龍馬伝」4回までを見ての感想。岩崎弥太郎が・・・</title>  
      <description> <![CDATA[ 昨日、NHKの大河ドラマ「龍馬伝」の４話を見ました。「龍馬伝」の放送は４話まで全部見ています。<br />


<br />


今までの2○年間、大河ドラマは一度も見たことがなかった（一話すらまともに見たことはありません）自分が龍馬伝だけは最初から全話見ている訳です。<br />


<br />


そして、何故今回は見ているかというと、岩崎弥太郎という人物に興味があったからです。<br />


<br />


で、この４話までの岩崎弥太郎の活躍ぶりはどうかというと・・・まぁ放送を見ている人は解ると思いますけど、酷すぎますｗ<br />


<br />


人間性は最低だし、こきなたいし、恋愛に関しても・・・完全に龍馬を引き立てるためのピエロ状態です。<br />


<br />


まぁ、もちろん主人公は龍馬なんで、龍馬がよく表現される事は最初から解っていたけどあまりにもね・・・<br />


<br />


あ、ドラマ自体は結構おもしろいと思います。ただ、岩崎弥太郎に期待して放送を楽しみにしていた自分にとっては今までは結構きつい展開でもある訳です。（三菱の人は自分と同じ思いをしてるんじゃないかなぁ・・・）<br />


<br />


これからも見るつもりだからはやく出世してくれ！ガンバレ、ヤタロー！<br />


<br />




<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8396102" alt0="BlogAffiliate" target="_blank" rel="nofollow">猛き黄金の国岩崎弥太郎 (1) (集英社文庫―コミック版)/本宮 ひろ志<br />


<img border="0" src="http://ecx.images-amazon.com/images/I/21JH1QG88FL._SL160_.jpg" /></a>


</dt>


<dd style="margin: 0pt;">￥630</dd>


<dd style="margin: 0pt;">Amazon.co.jp</dd>


</dl>


<br />




<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8396101" alt0="BlogAffiliate" target="_blank" rel="nofollow">小説 岩崎弥太郎--三菱を創った男 (河出文庫)/嶋岡 晨<br />


<img border="0" src="http://ecx.images-amazon.com/images/I/51nb20PUFqL._SL160_.jpg" /></a>


</dt>


<dd style="margin: 0pt;">￥693</dd>


<dd style="margin: 0pt;">Amazon.co.jp</dd>


</dl>


<br />




<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8396100" alt0="BlogAffiliate" target="_blank" rel="nofollow">龍馬を継いだ男 岩崎弥太郎 (アスキー新書)/安藤 優一郎<br />


<img border="0" src="http://ecx.images-amazon.com/images/I/41SkB6VD3ML._SL160_.jpg" /></a>


</dt>


<dd style="margin: 0pt;">￥780</dd>


<dd style="margin: 0pt;">Amazon.co.jp</dd>


</dl>


<br />


<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10442714902.html</link>  
      <pubDate>Mon, 25 Jan 2010 21:05:33 +0900</pubDate> 
    </item>  
    <item> 
      <title>今日からハッカードラマ「ブラッディ・マンデイ」二部の放送開始</title>  
      <description> <![CDATA[ 今日から天才ハッカーが主人公の「ブラッディ・マンデイ」の二部が放送されるみたい。第一部も家にいるときは大体見てました。マガジンで連載されてるやつですね。<br />
<br />
今夜はずっと家にいる予定なんで見ようと思います。<br />
<br />
おすすめ！格安なFMV,dynabookノートPC（激安中古品や未使用新品・・・）をネットで購入する<br />
・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=dynabook">東芝DynaBookシリーズのノートパソコン</a>
<br />
・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=fmv">富士通FMVシリーズのノートパソコン</a>
<br />
・<a href="http://webservice.kabufuru.net/goods/ysrank.php">ノートパソコン売れ筋ランキング ～ 流行の人気ノートPCをネットで探す！</a>
<br />
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8365676" alt0="BlogAffiliate" target="_blank" rel="nofollow">ハッカーの教科書 完全版/IPUSIRON<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/4153BSP7K9L._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥6,090</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8365675" alt0="BlogAffiliate" target="_blank" rel="nofollow">ハッカー認定試験―3級合格標準問題/著者不明<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/31WMZB30H7L._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥1,575</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8365674" alt0="BlogAffiliate" target="_blank" rel="nofollow">ハッキング非公式ガイド―天才ハッカーから学ぶ攻撃と防御/アンキット・ファディア<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51fRCen-60L._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥7,140</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10440876357.html</link>  
      <pubDate>Sat, 23 Jan 2010 13:33:39 +0900</pubDate> 
    </item>  
    <item> 
      <title>ドコモからソニエリのandroid携帯の発売が決定！</title>  
      <description> <![CDATA[ 今日ドコモからソニーエリクソンのandroid携帯の発売が発表されました。<br />
<br />
発売時期は4月。夏までずれこまなくてホントよかった・・・<br />
<br />
ネットでこのニュースを見た時はテンションが上がりましたよｗ<br />
<br />
androidというソフトウェアだけでなく、4.0インチの大画面液晶タッチパネル、810万画素のカメラとかハードウェアのスペックも結構すごいね。<br />
<br />
今から発売が楽しみっす<br />
<br />
おすすめ！ネットでお安いノートパソコン・ネットブックを買う！<br />
・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=eee">格安・激安のEeePCシリーズ(ASUS)ノートパソコン情報</a>
<br />
・<a href="http://webservice.kabufuru.net/notepc/yahacminipc.php?maker=acer">格安・激安のAcer(エイサー)のミニノートPC情報</a>
<br />
<br />
・<a href="http://webservice.kabufuru.net/goods/ysrank.php">ノートパソコン売れ筋ランキング ～ 流行の人気ノートPCをネットで探す！</a>
<br />
<br />
参考<br />
・<a href="http://gigazine.net/index.php?/news/comments/20100121_docomo_xperia_so_01b/">ドコモのAndroidスマートフォン「Xperia（SO-01B）」速攻フォトレビュー</a>
<br />
<br />
<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8345303">Google Androidアプリケーション開発入門 画面作成からデバイス制御まで――基本機能の全容/木南 英夫<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51f957atkAL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥3,150</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8345302">入門Google Androidプログラミング/伊原 頌二<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/5134ugqD5VL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥3,150</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10439608343.html</link>  
      <pubDate>Thu, 21 Jan 2010 20:29:13 +0900</pubDate> 
    </item>  
    <item> 
      <title>C#でwebページが更新されてたら取得②EtagとIf-None-Match</title>  
      <description> <![CDATA[ 前に「<a href="http://ameblo.jp/oregano-blog/entry-10436266949.html">C#でwebページが更新されてたら取得/HttpWebResponseのLastModified</a>




」 という記事を書きました。これは、HTTPのリクエストヘッダのIf-Modified-SinceにLastModifiedを指定して目的のwebページが新しく更新されていたらそのwebページを取得するという条件付リクエストをC#でやったものです。<br />




<br />




今回は、目的は同じだけと別のやり方、HTTPのリクエストヘッダ「If-None-Match」に「Etag」を指定するやり方でやってみます。<br />




<br />




（環境はOS:WindowsXp,開発環境はVisualC#2008EEです）<br />




<br />




まず、プログラミング前の予備知識についてです。<br />




<br />




・HTTPリクエストに対してのサーバのレスポンスヘッダにはETagという項目があります。（ETagを返さないサーバもあります。このページではETagを返す事を前提にして話をしていますので、ターゲットのサーバがETagを返さないのなら読んでもあまり意味ないかもしれません・・・）<br />




・ETagとはリソース（htmlなどのwebページ）を特定するためにサーバが割り当てた文字列です。このETag文字列はwebページによってはもちろん違うし、同じURLのwebページでも新しく更新されたら変更されるし、webページを圧縮して送信するかそのまま送信するかでも変わってきます。<br />




・一方、If-None-Matchはリクエストヘッダの一つで条件付リクエストです。そして、If-None-Matchの値にサーバから受け取ったETagを指定して二回目のGETリクエストをした場合、If-None-Matchに指定したETagとサーバにある目的のリソース(webページ)のETagが一致していなかったらリクエストを受け付けて欲しいという意味になります。つまりETagが一致してたらサーバは304Not Modified（リソースは未更新）をクライアントに返します。（もちろん、webページが新しく更新されてETagも変更されていた場合は、200番台でwebページ本体もクライアントに返します）<br />




<br />




それでは、C#のプログラミングの説明です。webクライアントはHttpWebRequestクラス、サーバからのレスポンスの扱いはHttpWebResponseクラスを使っています。<br />




（下のプログラムは簡単化のため、見やすくするために色々とはしょっています、動くかどうかもテストしてません・・・）<br />




<br />




//グローバル変数でSETagを保持<br />




string SEtag = &quot;&quot;;<br />




<br />




private void testWebRequest(string sUrl, int iStartRange)<br />




{<br />




<br />




    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);<br />




<br />




    //If-None-MatchにEtagをセット<br />




    if (SEtag != &quot;&quot; || SEtag != null )<br />




    {<br />




        webRequest.Headers.Set(&quot;If-None-Match&quot;, SEtag);<br />




    }<br />




    <br />




    if (iStartRange &gt; 0)<br />




    {<br />




        //部分取得<br />




        webRequest.AddRange(IStartRange);<br />




    }<br />




    else<br />




    {<br />




        //全取得の場合はHTTP圧縮<br />




        webRequest.AutomaticDecompression = DecompressionMethods.GZip;<br />




    }<br />




   <br />




    HttpWebResponse res = null;<br />




    int iStatus;<br />




    try<br />




    {<br />
//304の時例外発生<br />




        HttpWebResponse res = (HttpWebResponse)req.GetResponse();　<br />
//200とか<br />




        iStatus = (int)res.StatusCode; <br />




        //ETagを取得、ない場合はnull<br />




        SEtag = res.Headers.Get(&quot;ETag&quot;);<br />




    }<br />




    catch (WebException ex)<br />




    {<br />




        res = (HttpWebResponse)ex.Response;<br />




        if (res != null)<br />




        {<br />
//304とか<br />




            iStatus = (int)res.StatusCode;　<br />




        }<br />




    }<br />




<br />




}<br />




<br />




・メソッド引数のsUrlはターゲットURL、iStartRangeは部分取得をする場合の指定で単位はバイトです。また、iStartRangeが0で全取得を希望する場合はデータをHTTP圧縮して送信してもらえるようにしています。（ただしHTTP圧縮を使うと・・・詳しくはこの記事の気になった部分で書きます）<br />




・ETagはとりあえずグローバル変数のsEtagに保持するようにしました。一回目のリクエストではEtagはまだないのでIf-None-Matchには何も指定されません。一回目のリクエスト後のサーバからのレスポンスでEtagをもらい、二回目のリクエストからIf-None-MatchにEtagを指定してリクエストされるようになります。<br />




<br />




以上で一通りの説明は終了ですが、色々自分でテストをしていて気になった部分について以下に書きます。（もしかしたら間違いがあるかもしれないのであまり信じないように。）<br />




<br />




・例外が発生する304の場合でもレスポンスヘッダ内にはEtagがある。<br />




・HTTP圧縮を指定した場合はIf-None-MatchにETagを指定しても効果がないっぽいです。効果がないというのはレスポンスに304を期待する時も200番台で本体を返してくるということです。デバッグでIf-None-MatchのEtagとサーバのEtagの一致を確認したんだけどね・・・webサーバの仕様がHTTP圧縮を希望している場合はIf-None-Matchを無視するとでもなっているんだろうか？これはもしかしてwebサーバによって違うのかもしれません、とりあえず自分がテストしたサーバではHTTP圧縮を使った場合はIf-None-Matchが機能しませんでした。<br />




・「If-Modified-SinceにLastModifiedを指定」「If-None-MatchにEtagを指定」という両方を設定してリクエストした場合、webサーバがapacheでは「If-None-Match,Etag」の方が優先される。（どうやらこれはサーバによって違うっぽい）。なので、HTTP圧縮通信で「If-Modified-Since」「If-None-Match,Etag」両方を指定した場合、「If-None-Match,Etag」の方が優先されるからサーバのリソースが変更なくても304を返さない（200番台を返す）→AddRange()メソッドで部分取得も指定していれば206でBodyは改行文字だけを返す。<br />




<br />




う～ん、正直HTTP圧縮通信時にEtagが使えないのはちょっとやっかいだね。<br />




<br />




おすすめ！ソニー、HPの格安なノートPC（激安中古品や未使用新品・・・）をネットで購入する<br />




・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=pavilion">格安・激安のHPのPavilionシリーズのノートパソコン</a>




<br />




・<a href="http://webservice.kabufuru.net/goods/ysgoods.php?sword=vaio%20type&amp;maxp=100000&amp;minp=40000">10万円以下の格安・激安Vaioノートパソコン(type X,P,N)</a>




<br />




<br />




・<a href="http://webservice.kabufuru.net/goods/ysrank.php">ネット上でのノートパソコン売れ筋ランキング情報</a>




<br />




<br />




・ネットワークの基本HTTPを勉強するためのおすすめ入門書の紹介<br />








<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8322849" alt0="BlogAffiliate" target="_blank" rel="nofollow">今夜わかるHTTP (Network)/上野 宣<br />




<img border="0" src="http://ecx.images-amazon.com/images/I/51T8HRW0XCL._SL160_.jpg" /></a>




</dt>




<dd style="margin: 0pt;">￥2,520</dd>




<dd style="margin: 0pt;">Amazon.co.jp</dd>




</dl>




<br />








<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8322848" alt0="BlogAffiliate" target="_blank" rel="nofollow">3分間HTTP&amp;メールプロトコル基礎講座/網野 衛二<br />




<img border="0" src="http://ecx.images-amazon.com/images/I/51vy19ECVyL._SL160_.jpg" /></a>




</dt>




<dd style="margin: 0pt;">￥2,394</dd>




<dd style="margin: 0pt;">Amazon.co.jp</dd>




</dl>




<br />




<br />




<br />




参考サイト<br />




・<a href="http://åã«ãC#ã§webãã¼ã¸ãæ´æ°ããã¦ããåå¾/HttpWebResponseã®LastModified ã ã¨ããè¨äºãæ¸ãã¾ãããããã¯ãHTTPã®ãªã¯ã¨ã¹ããããã®If-Modified-Sinceã«LastModifiedãæå®ãã¦ç®çã®webãã¼ã¸ãæ°ããæ´æ°ããã¦ããããã®webãã¼ã¸ãåå¾ããã¨ããæ¡ä»¶ä»ãªã¯ã¨ã¹ããC#ã§ãã£ããã®ã§ãã  ä»åã¯ãç®çã¯åãã ãã¨å¥ã®ããæ¹ãHTTPã®ãªã¯ã¨ã¹ãããããIf-None-Matchãã«ãEtagããæå®ãã¦ãã£ã¦ã¿ã¾ãã  ï¼ç°å¢ã¯OS:Win">HTTP入門</a>




<br />




・<a href="http://cloudrop.jp/tag/etag">クラウド環境でのApacheの設定</a>




<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10438298841.html</link>  
      <pubDate>Wed, 20 Jan 2010 00:43:48 +0900</pubDate> 
    </item>  
    <item> 
      <title>C#のHttpWebRequest（webクライアント）クラスでリクエストヘッダを追加する</title>  
      <description> <![CDATA[ C#でwebページを取得する時にはHttpWebRequestクラスがよく使われますが、このクラスでリクエストヘッダを指定する時のメモ書きです。<br />
<br />
（環境はWindowsXP,VisualC#2008EE）<br />
<br />
（HttpWebRequestクラスを使ったwebページ取得プログラムは「<a href="http://ameblo.jp/oregano-blog/entry-10403469343.html">httpプログラミング（ヘッダ情報送信、確認@C#,php） </a>
」の記事が参考にして下さい。）<br />
<br />
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(&quot;urlを指定&quot;);<br />
webRequest.Headers.Set(&quot;testHeaderKey&quot;, &quot;testHeaderValue&quot;);<br />
<br />
上のようにHttpWebRequest.HeadersプロパティのSetメソッドでリクエストヘッダが指定できます。第一引数がヘッダのキー、第二引数がヘッダの値です。<br />
<br />
実際にこのリクエストヘッダがサーバに送られているのか？をサーバ側で確認するには、phpでは$_SERVERグローバル変数でできます。このプログラムについても「<a href="http://ameblo.jp/oregano-blog/entry-10403469343.html">httpプログラミング（ヘッダ情報送信、確認@C#,php） </a>
」の記事が参考にして下さい。<br />
<br />
<br />
・ネットワークの基本HTTPを勉強するためのおすすめ入門書の紹介<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8293992" alt0="BlogAffiliate" target="_blank" rel="nofollow">今夜わかるHTTP (Network)/上野 宣<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51T8HRW0XCL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥2,520</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8293991" alt0="BlogAffiliate" target="_blank" rel="nofollow">3分間HTTP&amp;メールプロトコル基礎講座/網野 衛二<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51vy19ECVyL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥2,394</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<br />
・C#初心者のための入門書<br />
<br />
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8293990" alt0="BlogAffiliate" target="_blank" rel="nofollow">ひと目でわかるMicrosoft Visual C++ 2008 アプリケーション開発入門 (.../増田 智明<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/51VXItYumWL._SL160_.jpg" /></a>
</dt>
<dd style="margin: 0pt;">￥2,919</dd>
<dd style="margin: 0pt;">Amazon.co.jp</dd>
</dl>
<br />
<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10436723417.html</link>  
      <pubDate>Sun, 17 Jan 2010 22:58:48 +0900</pubDate> 
    </item>  
    <item> 
      <title>C#でwebページが更新されてたら取得/HttpWebResponseのLastModified</title>  
      <description> <![CDATA[ 目的のwebページが新しく更新されていたらそのwebページを取得するという条件付リクエストをC#でやったのでメモ書きです。<br />






<br />






（環境はOS:WindowsXp,開発環境はVisualC#2008EEです）<br />





<br />





これができれば、目的のwebページのダウンロードだけでなく、オリジナルの検索エンジンやWebAPIなどにも使えるでしょう。<br />






<br />






まず、プログラミング前の予備知識についてです。<br />






<br />






HTTPリクエストのリクエストヘッダには「If-Modified-Since」というものがあります。これには日時が指定できるのですが、サーバはこのIf-Modified-Sinceに指定された日時以降にwebページが更新されていたら、通常通りにリクエストを受け付けてステータスコード200OKでwebページをクライアント側に返します。しかし、If-Modified-Sinceに指定された日時以降に更新されていなかったらwebページを返しません（ステータスコードは304[NotModified]）。<br />






<br />






それでは、C#のプログラミングの説明です。webクライアントはHttpWebRequestクラスを使います。そして最初は「If-Modified-Since」を指定しないでGETリクエストすることにします。<br />






<br />






//テストなのでグローバル変数<br />






DateTime　DtLastModified;<br />






<br />






private void testWebRequest(string sUrl)<br />






{<br />






<br />






HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);<br />






req.UserAgent = &quot;C# UserAgent&quot;;<br />






<br />






HttpWebResponse res = (HttpWebResponse)req.GetResponse();<br />






DtLastModified = res.LastModified;　//webページの更新時刻（日本時間）<br />






<br />






Stream st = res.GetResponseStream();<br />






StreamReader sr = new StreamReader(st);<br />






string html = sr.ReadToEnd();<br />






sr.Close();<br />






st.Close();<br />






<br />






textBox1.Text = html;<br />






}<br />






<br />






で、いきなりで申し訳ないですが、この部分の説明については「<a href="http://ameblo.jp/oregano-blog/entry-10403469343.html">httpプログラミング（ヘッダ情報送信、確認@C#,php） </a>






」の記事を参考にしてください。<br />






<br />






ここでサーバから受け取った情報をHttpWebResponseクラスが受けていますが(resオブジェクト)、このHttpWebResponseクラスはLastModifiedというプロパティ(型はDateTime)を持っています。LastModifiedはサーバが返したHTTPレスポンスヘッダのうちの一つでwebページの更新時刻です。ですので、この情報をどこかに保管しておいて、同じwebページの二回目以降のリクエストではこの情報をHTTPリクエストヘッダの「If-Modified-Since」<br />






に指定すればいいわけです。<br />






<br />






次に二回目のリクエストのプログラムです。（簡単化のため、見やすくするために上であったwebページを文字列に変換する部分は書いていません。）<br />






<br />






private void testWebRequest(string sUrl)<br />







{<br />







<br />







HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);<br />







req.UserAgent = &quot;C# UserAgent&quot;;<br />







req.IfModifiedSince = DtLastModified; //HTTPリクエストヘッダにIf-Modified-Sinceを指定。<br />






<br />






HttpWebResponse res = null;<br />






int iStatus;<br />






try<br />






{<br />







　HttpWebResponse res = (HttpWebResponse)req.GetResponse();　//304の時例外発生<br />







　DtLastModified = res.LastModified;　//webページの更新時刻（日本時間）<br />






  iStatus = (int)res.StatusCode; //200とか<br />







}<br />






catch (WebException ex)<br />






{<br />






  res = (HttpWebResponse)ex.Response;<br />






  if (res != null)<br />






  {<br />






    iStatus  = (int)res.StatusCode;　//304とか<br />






  }<br />






}<br />







<br />







}<br />






<br />






req.IfModifiedSince = DtLastModified;の部分でHTTPリクエストヘッダにIf-Modified-Sinceを指定しています。<br />






また、今度は例外処理を使っています。これはサーバが304NotModifiedを返す時にWebException例外が発生するからです。(304は最初にも書きましたが、If-Modified-Sinceで指定された時刻以降にwebページに更新がなかった事を表しています)<br />






<br />






でも、304の場合、上のサンプルのように例外クラスからHttpWebResponseクラスを取得できます。StatusCodeプロパティでサーバのレスポンスステータスコードを取得できます。これを200とかの番号にするにはintでキャストする必要があります。<br />






<br />

おすすめ！ソニー、HPの格安なノートPC（激安中古品や未使用新品・・・）をネットで購入する<br />

・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=pavilion">格安・激安のHPのPavilionシリーズのノートパソコン</a>

<br />

・<a href="http://webservice.kabufuru.net/goods/ysgoods.php?sword=vaio%20type&amp;maxp=100000&amp;minp=40000">10万円以下の格安・激安Vaioノートパソコン(type X,P,N)</a>

<br />

・<a href="http://webservice.kabufuru.net/goods/ysrank.php">ネット上でのノートパソコン売れ筋ランキング情報</a>

<br />





<br />







以上で一通りの説明は終了ですが、色々自分でテストをしていて気になった部分について以下に書きます。（もしかしたら間違いがあるかもしれないのであまり信じないように。）<br />





<br />





・LastModifiedはHttpWebResponse.LastModifiedプロパティだけでなく、HttpWebResponse.Headersプロパティ内にもLastModifiedがある。<br />





・Headersプロパティ内のLastModified（GMTがついている）はグリニッジ標準時刻。これは日本時刻に対して9時間先行している。実際にサーバーが返してくれる更新時刻はこれだけだと思うけど、日本時刻を簡単に扱えるようにHttpWebResponseクラスがLastModifiedというプロパティを用意してくれるのでしょう。だから私達日本人は普通はHttpWebResponse.LastModifiedプロパティを使えばいいと思います。<br />





・全てのサーバがLastModifiedを返してくれる訳ではない。むしろ、返してくれないサーバのほうが多い気がする。LastModifiedを返してくれないサーバの場合、HttpWebResponse.LastModifiedプロパティには現在時刻（変動している）のDateTimeが入っている。これだとサーバがLastModifiedを返したかとうか区別がつかない。だけど、HttpWebResponse.Headersプロパティ内のLastModifiedはnullになっているのでこちらで区別できる。<br />
<br />
また、ここではIf-Modified-SinceにLastModifiedを指定したやり方ですが、Etag,If-None-Matchという物を使っても同じことができます。詳しくは「<a href="http://ameblo.jp/oregano-blog/entry-10438298841.html">C#でwebページが更新されてたら取得②EtagとIf-None-Match</a>
」を参考にしてください<br />





<br />





・ネットワークの基本HTTPを勉強するためのおすすめ入門書の紹介<br />










<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8293184">今夜わかるHTTP (Network)/上野 宣<br />





<img border="0" src="http://ecx.images-amazon.com/images/I/51T8HRW0XCL._SL160_.jpg" /></a>





</dt>





<dd style="margin: 0pt;">￥2,520</dd>





<dd style="margin: 0pt;">Amazon.co.jp</dd>





</dl>





<br />





<br />





・C#初心者のための入門書の紹介<br />










<dl><dt><a rel="nofollow" target="_blank" alt0="BlogAffiliate" href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=8293183">JIS規格対応 標準C#入門 改訂第2版/矢沢 久雄<br />





<img border="0" src="http://ecx.images-amazon.com/images/I/41uss7B005L._SL160_.jpg" /></a>





</dt>





<dd style="margin: 0pt;">￥2,835</dd>





<dd style="margin: 0pt;">Amazon.co.jp</dd>





</dl>





<br />





<br />





<br />





参考サイト<br />





・<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20070911/281675/">HTTPサーバーからのデータを受け取る（HttpWebResponseクラス）</a>





<br />





・<a href="http://nyx.pu1.net/practice/date/gmt.html">GMTの有効利用</a>





<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10436266949.html</link>  
      <pubDate>Sun, 17 Jan 2010 13:01:10 +0900</pubDate> 
    </item>  
    <item> 
      <title>2009年に売れたノートPCベスト10は国産メーカー（富士通、東芝、NEC）が独占</title>  
      <description> <![CDATA[ 「<a href="http://news.livedoor.com/article/detail/4526962/">2009年に最も売れたノートPCはどれ？</a>
」を見たら、ベスト１０は富士通のFMVシリーズ、NECのLavieシリーズ、東芝のdynabookシリーズで独占されてました。そして、ベスト２０はこの３つの国産メーカーとソニのVaioが一台あるだけ。<br />

<br />

少し以外な結果。最近はHP,Dell,Lenove,Acerとかの外資の安いPCがシェアを伸ばしてるとおもったけどそうでもないんだね。ネットブックのランキングになったら外資メーカーばっかりになるんだろうけど・・・<br />

<br />

おすすめ！格安なFMV,dynabookノートPC（激安中古品や未使用新品・・・）をネットで購入する<br />

・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=dynabook">東芝DynaBookシリーズのノートパソコン</a>

<br />

・<a href="http://webservice.kabufuru.net/notepc/yahacpc.php?model=fmv">富士通FMVシリーズのノートパソコン<br />

</a>

<br />

・<a href="http://webservice.kabufuru.net/goods/ysrank.php">ノートパソコン売れ筋ランキング ～ 流行の人気ノートPCをネットで探す！</a>

<br />
]]> </description>  
      <link>http://ameblo.jp/oregano-blog/entry-10434359136.html</link>  
      <pubDate>Thu, 14 Jan 2010 21:24:32 +0900</pubDate> 
    </item> 
  </channel> 
</rss>
