0 と 1 の世界の見習い探検家

2014年03月

3月31日です。
明日から新年度で、しかも消費税改正ということで居酒屋などは金曜日でないのにも関わらずサラリーマンたちの歓送迎会で賑わっているようですね。

僕も明日は新年度早々入学式ですよ。
明日から大学生活のスタートです。
中学や高校の入学式は4月が始まって1週間ぐらい経ってからでしたが、大学はそうではないんですね。。。
夏休みよりも長かった休み期間も今日が最終日ということでした(

入学式以降も普通科高校の劣等生のネタロゴを使っていると、偽装表示の疑いが掛かってしまう可能性があります。。((
イメージ 1
元ネタである魔法科高校の劣等生のアニメの放送開始が目の前まで迫っているわけでありますが、残念ながら本日中に撤去します()
そうだ、Yahoo!のプロフィールも更新しないと((


明日は10時30分スタートということで、現地には10時ぐらいには着いていたほうが良さそうです。

そんなわけで今日はいつもより4時間程度早めに寝ます。
というか休みでたるみきった生活リズムを最後まで正せなかったとか残念過ぎる。。。


では。

HTTPのリクエスト・レスポンスの日時を設定するヘッダやRSSなどをプロデルで扱おうとした場合、扱い方が分からず困ったという方もいらっしゃるのではないでしょうか。

具体的にはこんな形です。
Mon, 31 Mar 2014 08:38:07 GMT

これは最後のGMTから分かる通りグリニッジ標準時(世界標準時)で日時を表したものです。
日本標準時でよく見かける形式に直すと
2014/03/31 17:38:07


インターネット関係で日時を取り扱う場合、相手が日本のサーバ(またはクライアント)とは限らないので英語表記の世界標準時を使います。
この形式で表記された日時を表す文字列をプロデルで生成、またはプロデルの"日時形式"型オブジェクトに変換したい場合はどうすればよいのでしょうか。

プロデルのリファレンスを調べても世界標準時などの表記は見つかりません。
でもここで使えそうな手順が…

【自分】を【書式】に整える

この手順は【自分】である日時形式型を【書式】の表記に変換したものを文字列型で返してくれます。
でも書式って一体どうやって指定すれば・・・

この手順は.NETのDateTime.ToStringメソッドに由来しているようで、このメソッドの扱い方を調べると【書式】の指定の仕方も分かります。
調べてみると、こちらのサイトのこのページに詳しい解説が載っていました!
日時・文字列の変換と書式 - 総武ソフトウェア推進所 (外部サイト)
http://smdn.jp/programming/netfx/datetime/2_formatting_parsing/

RFC1123形式がちょうど探し求めていたものに該当します。
というわけでプロデルでインターネットで使う書式の世界標準時を生成する方法は・・・

内容は、([(今日から時間引いたものr整えたもの])

"今日"で日時形式型の現在の時刻を取得。
それこから世界標準時に直すために時差である9時間を引いてRFC1123形式に変換しました。

さて、次はこれを日時形式型オブジェクトに変換する方法です。
これはすごい簡単でした。

は、内容日時形式化したもの

これで値変数に文字列型である内容を日時形式型に変換されたものが代入されます。
時差については末尾の "GMT" により自動認識されるようです。

RFC1123形式のことさえ分かれば結構簡単ですね。

プロデルのTCPIPサーバとTCPIPクライアントを利用して簡易Webサーバプログラム作りました。
前回はC♯で作りましたが、今回は日本語プログラミング言語のプロデルです。

C♯はともかく、日本語プログラミング言語でWebサーバもどきまで作れちゃうのは今のところ「プロデル」だけじゃないでしょうかね、、w
プロデルにはもともとRdrWebServer.exeというプロデルをCGIとして利用するためのサーバソフトが添付されていますが、このプログラムはRdrWebServerには依存しません。

未着色プロデルプログラム


待機画面を表示する
待機する

待機画面とは
    ウィンドウを継承する
   
    サンプルサーバである試験サーバを持つ
   
    はじめの手順
        初期化する
        ーー貼り付けた部品に対する操作をここに書きます
       
        [自分]の試験サーバは、サンプルサーバを作ったもの
       
        [自分]のボタン1の有効を○へ変える
        [自分]のボタン2の有効を×へ変える
    終わり
    初期化する手順
        ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
        この内部領域大きさを{388、248}に変える
        この種類を「固定」に変える
        この内容を「待機画面」に変える
        このドラッグドロップを○に変える
        ボタン1というボタンを作る
            その位置と大きさを{54、57、281、52}に変える
            その内容を「サーバ起動」に変える
            その移動順を2に変える
            そのフォントを「MS UI Gothic,14.25」に変える
        ラベル1というラベルを作る
            その位置と大きさを{12、9、215、12}に変える
            その内容を「試験用Webサーバを8089ポートで実行します」に変える
            その移動順を1に変える
        ボタン2というボタンを作る
            その位置と大きさを{54、142、281、52}に変える
            その内容を「サーバ停止」に変える
            その移動順を3に変える
            そのフォントを「MS UI Gothic,14.25」に変える
    終わり
   
    ボタン1がクリックされた時の手順
        ’サーバ起動
        [自分]の試験サーバを起動する
       
        [自分]のボタン1の有効を×へ変える
        [自分]のボタン2の有効を○へ変える
    終わり
   
    ボタン2がクリックされた時の手順
        ’サーバ停止
        [自分]の試験サーバを停止する
       
        [自分]のボタン1の有効を○へ変える
        [自分]のボタン2の有効を×へ変える
    終わり
   
    閉じる時の手順
        [自分]の試験サーバを停止する
        終了する
    終わり
終わり

サンプルサーバとは
    TCPIPサーバを継承する
   
    TCPIPクライアントである接続クライアントを持つ
   
    はじめの手順
        [自分]のポート番号を8089へ変える
    終わり
   
    受信した時の手順
        ’「受信した時の手順開始」を表示
        [自分]の接続クライアントは、イベントのクライアント
        [自分]の接続クライアントの文字コードを「UTF-8」へ変える
        [自分]の接続クライアントの受信した時の手順は、クライアント通信する
        [自分]の接続クライアントを受信開始する
    終わり
   
    クライアント通信する手順
        ’リクエストを受ける
        リクエスト内容は、文字列である
        リクエスト内容は、イベントの受信テキスト
       
        ’応答する
        応答内容は、文字列である
        応答内容は、「HTTP/1.1 200 OK
Date: Sun, 11 Jan 2004 16:06:23 GMT
Server: Apache/1.3.22 (Unix) (Red-Hat/Linux)
Last-Modified: Sun, 07 Dec 2003 12:34:18 GMT
ETag: "1dba6-131b-3fd31e4a"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

<HTML>
    <HEAD>
        <TITLE>試験ページ</TITLE>
       
        <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8">
    </HEAD>
    <BODY>
        <B>試験サーバとブラウザの通信に成功しました。</B>([今日の内容])<BR>
        <BR>
        <B>ブラウザから送信されたリクエスト</B><BR>
        [リクエスト内容から改行を「<BR>[改行]        」へ置換したもの]
    </BODY>
</HTML>」
       
        [自分]の接続クライアントから応答内容を送信する
       
        ’「応答送信完了[改行]切断します」を表示
        [自分]の接続クライアントを切断する
    終わり
終わり



イメージ 1



8089ポートで稼働します。
サーバ起動後、ブラウザで http://localhost:8089/ にアクセスしてみてください。

※1 ウィルス対策ソフトによって動作を妨げられる場合があります。
※2 HTTP初心者が作ったプログラムです。開放済みのポートで稼働させないでください、危険です。

※Twitterの本日の#a32trainツイート一覧

京成線 快速特急 上野行き 3768 #a32train 3768編成: A13 #keisei_unyo
新京成線 普通 松戸行き 8928 #a32train 8928編成: 列番不明
中央・総武線 各駅停車 中野行き クハE230-22 #a32train 八ミツB22編成: 1673B #jre_unyo
京葉線 各駅停車 南船橋行き クハ205-48 (武蔵野線の車輌) #a32train 千ケヨM7編成: 35E #jre_unyo
京葉線 快速 蘇我行き クハE233-5010 #a32train 千ケヨ510編成: 1635A #jre_unyo
内房線 各駅停車 千葉行き クハ208-2105 #a32train
中央・総武線 各駅停車 中野行き クハE230-16 #a32train 八ミツB16編成: 1757B #jre_unyo
京成線 普通 津田沼行き 3593 #a32train 3596編成: B50 #keisei_unyo
京成線 快速特急 成田空港行き 3411 #a32train 3418編成: A09 #keisei_unyo

※Twitterの本日の#a32trainツイート一覧

京成線 特急 上野行き 3448 #a32train 3448編成: A11 #keisei_unyo
京成線 スカイライナー039号 成田空港行き AE3-1 #a32train AE3編成: AE03 #keisei_unyo
京成線 特急 上野行き 3448 #a32train 3448編成: A11 #keisei_unyo
京成線 快速特急 上野行き 3658 #a32train 3658編成: 列番不明

このページのトップヘ