Amazonのインスタントストア作ってみた

[[]]Amazonアソシエイトにインスタントストアというのがある。
カテゴリーごとツリーを追加できて、キーワードでフィルタできるので、アフィリエイト狙いというよりも、自分用の検索条件の保存と考えると意外と便利!
単独ページ→「IIJIMASおすすめストア - プログラミング、C#プログラミング
iframe埋め込み↓

2012年春アニメは何を見ようか…

3か月ってのは早い。4月から春期アニメが始まる。というわけで自分が見れる局(関東圏)での2012年春期(4月-7月)の一覧(公式サイト、公式ツイッターアカウント、推奨タグへのリンク、放送局、放送曜日時間)を作成した。すべてのアニメを網羅しているわけではない。誤り・抜けの発見や最新情報入手の都度随時追加・更新する。

2012年春アニメ一覧表

曜日 タイトル アニメ公式サイト ウィキペディア 公式Twitter
(推奨)Twitterハッシュタグ
放送局
曜日曜日
放送時間(通常時)
放送開始日 その他の放送日時 備考
聖闘士星矢Ω 聖闘士星矢Ω-セイントセイヤオメガ- 公式サイト 東映アニメーション W @seiya_omega
#seiya
テレビ朝日
日曜日
6:30-7:00
4/1   新作
宇宙兄弟 TVアニメ『宇宙兄弟』読売テレビ W @animeuchukyodai
#uchukyodai
日本テレビ
日曜日
7:00-7:30
4/1    
緋色の欠片 TVアニメ『緋色の欠片』公式サイト W @hiiro_anime
#hiiro
TOKYO MX
日曜日
22:00-22:30
4/1 ニコニコ生放送 水25:00 - 25:30  
しばいぬ子さん TVアニメ「しばいぬ子さん」公式サイト W ?
#shibainuko
TOKYO MX
日曜日
22:27-22:29
4/1    
AKB0048 AKB0048 公式サイト W ?
#AKB0048
tvk
日曜日
23:00-23:30
4/29 テレ玉 日23:30-24:00  
氷菓 TVアニメ「氷菓」オフィシャルサイト W ?
#hyouka
テレ玉
日曜日
25:00-25:30
4/22 tvk 月25:00-25:30
TOKYO MX 水24:30-25:00
 
黒子のバスケ 黒子のバスケ アニメ公式サイト W @kurobasanime
#kurobas
バンダイチャンネル
日曜日
12:00-12:30
4/8 TOKYO MX 火23:00-23:30  
ファイ・ブレイン 〜神のパズル2期 サンライズ公式サイト「ファイ・ブレイン 〜神のパズル」 W @PB_SRPR
#phibrain
NHK Eテレ
日曜日
17:00-18:00
4/8   2期
咲-Saki- 阿知賀編 episode of side-A TVアニメ「咲-Saki-」シリーズ スペシャルサイト W @sakianime
#saki
テレビ東京
日曜日
25:05-25:35
4/8   第2作
黄昏乙女×アムネジア TVアニメ「黄昏乙女×アムネジア」公式サイト W @amnesia_anime/
#アムネジア
tvk
日曜日
25:30-26:00
4/8 TOKYO MX 月24:30-25:00  
君と僕。2 TVアニメ「君と僕。」オフィシャルサイト W @kimiboku_anime
#kimiboku
テレビ東京
月曜日
25:30-26:00
4/2   2期
這いよれ!ニャル子さん 名状しがたいアニメ「這いよれ!ニャル子さん」オフィシャルサイトのようなもの W @HaiyoreNyaruko
#nyaruko
テレビ東京
月曜日
26:00-26:30
4/9    
ヨルムンガンド TVアニメ「ヨルムンガンド」公式サイト W @jormungand_tv
#ヨルムンガンド
TOKYO MX
火曜日
24:30-25:00
4/10 tvk 火25:30-26:00  
あらしのよるに テレビ東京・あにてれ あらしのよるに 〜ひみつのともだち〜 W ?
?
テレビ東京
水曜日
17:30-18:00
4/4    
これはゾンビですか?OF THE DEAD これはゾンビですか?アニメ公式サイト W @zombie_haruna
#korezon
TOKYO MX
水曜日
25:00-25:30
4/4 tvk 日24:00-25:00
テレ玉 日24:00-25:00
2期
LUPIN the Third 〜峰不二子という女〜 LUPIN the Third -峰不二子という女-|ルパン三世 アニメ化40周年記念作品サイト W ?
#fujiko
日本テレビ
水曜日
25:29-25:59
4/4    
めだかボックス TVアニメ めだかボックス 公式サイト W @medaka_TV
#medaka_TV
テレビ東京
水曜日
25:50-26:20
4/4    
クイーンズブレイド リベリオン アニメ『クイーンズブレイド リベリオン』公式サイト W ?
#qbr_anime
TOKYO MX
木曜日
24:30-25:00
4/12    
坂道のアポロン アニメ「坂道のアポロン」公式サイト W @apollon_anime
#apollon_anime
フジテレビ
木曜日
24:45-25:15
4/12    
つり球 TVアニメ「つり球」 W @tsuritama
#tsuritama
フジテレビ
木曜日
25:15-25:45
4/12    
あっちこっち あっちこっち 公式ホームページ|TBSテレビ W @ackc_anime/
#ackc_anime
TBSテレビ
木曜日
25:25-25:55
4/5    
戦国コレクション テレビ東京・あにてれ 戦国コレクション   ?
?
テレビ東京
木曜日
25:45-26:15
4/5    
さんかれあ さんかれあ 公式ホームページ|TBSテレビ W @anime_sankarea
#さんかれあ
TBSテレビ
木曜日
25:55-26:25
4/5    
秘密結社鷹の爪 NEO 鷹の爪.jp W @yoshida_justice
#鷹の爪
NHK Eテレ
金曜日
18:20-18:55(ビットワールド内)
4/6    
アクセル・ワールド アクセル・ワールド [Accel World ] W @accel_world
#accel_world
TOKYO MX
金曜日
24:30-25:00
4/6 テレ玉 金25:00-25:30
tvk 土25:30-26:00
ニコニコ動画
 
ZETMAN TVアニメ『ZETMAN』公式サイト W @ZETMAN_anime
#ZETMAN
TOKYO MX
金曜日
25:00-25:30
4/6    
ゆるめいつ 3でぃ TVアニメ「ゆるめいつ 3でぃ」公式サイト W ?
#yurume
tvk
金曜日
25:10-25:15
4/6 ニコニコチャンネル 未定  
エウレカセブンAO エウレカセブンAO W @EUREKA_AO
#eurekaseven
TBSテレビ
金曜日
25:55-26:25
4/13    
夏色キセキ 夏色キセキ W @natsuiro_kiseki
#natsukise
TBSテレビ
金曜日
26:25-26:55
4/6    
ふしぎの海のナディア デジタルリマスター版 NHKアニメワールド:ふしぎの海のナディア W ?
#nadia
NHK Eテレ
土曜日
17:55-18:25?
4/7    
シャイニング・ハーツ 〜幸せのパン〜 SEGA[シャイニング・ハーツ 〜幸せのパン〜]公式サイト W @ShiningHeartsPR
#SHTV
TOKYO MX
土曜日
22:30-23:00
4/14    
うぽって!! アニメ うぽって!! 公式サイト W @anime_upotte
#upotte
ニコニコチャンネル
土曜日
23:30-24:00
4/7    
Fate/Zero 2ndシーズン Fate/Zero-アニメ公式サイト- W ?
#fatezero
TOKYO MX
土曜日
24:00-24:30
4/7 テレ玉 土25:30-26:00
tvk 日25:00-25:30
2期
モーレツ宇宙海賊(パイレーツ) StarChild:モーレツ宇宙海賊 W @captainMARIKA
#mo_retsu
tvk
土曜日
24:30-25:00
1/7 TOKYO MX 土25:00 - 25:30
テレ玉 日25:35 - 26:05
(2クール目)
謎の彼女X StarChild:謎の彼女X W @nazokano
#nazokano_x
TOKYO MX
土曜日
25:30-26:00
4/7 tvk 日25:00-25:30
テレ玉 月25:00-25:30
 

2012年冬アニメは何を見ようか…

とりあえず、自分が見れる局での2012年冬(新春、1月-3月)アニメ公式サイト等リンク・放送日時一覧を作成した。なるべく、自分が見れる局(NHK Eテレ,日本テレビ,TBS,フジテレビ,テレビ東京,TOKYO MX,tvk,テレ玉,ニコニコ)で他とかぶらなくて週の最早放送曜日となる局の順番とした。すべてのアニメを網羅しているわけではない。

2012年冬(新春)アニメ一覧表

曜日 タイトル アニメ公式サイト ウィキペディア 公式Twitter (推奨)Twitterハッシュタグ 放送局 放送時間(通常時) 放送開始日 その他の放送日時 備考
夏目友人帳 肆 夏目友人帳 アニメ公式サイト W @NatsumeYujincho #natsume4 テレビ東京 25:30 - 26:00 1/2 4期
男子高校生の日常 TVアニメ「男子高校生の日常」公式HP W @highschool_boys #danshiko テレビ東京 26:00 - 26:30 1/9 ニコニコ生放送 火24:00更新
ちはやふる ちはやふる W @chihaya_anime #chihaya_anime 日本テレビ 24:59 - 25:29 (放送中) (2クール目)
パパのいうことを聞きなさい! StarChild:パパのいうことを聞きなさい! W @papakiki_anime #papakiki TOKYO MX 25:30 - 26:00 1/10 tvk 火25:45 - 26:15
テレ玉 金25:05 - 25:35
あの夏で待ってる 「あの夏で待ってる」公式ホームページ W @NatsumachiAnime #natsumachi TOKYO MX 26:00 - 26:30 1/10 テレ玉 木25:05 - 25:35
tvk 木25:15 - 25:45
ハイスクールD×D アニメ『ハイスクールDxD』オフィシャルサイト W ? #haremking tvk 25:15 - 25:45 1/11 TOKYO MX 木25:30 - 26:00
Another TVアニメ Another 公式サイト W ? #アナザー tvk 25:45 - 26:15 1/11 テレ玉 火25:05 - 25:35
TOKYO MX 水26:00 - 26:30
テレ玉 火25:05 - 25:35の方が早い
これはゾンビですか?(再) これはゾンビですか?アニメ公式サイト W @zombie_haruna
@zombie_you
#korezon TOKYO MX 26:30 - 27:00 1/11 再放送
探偵オペラ ミルキィホームズ 第2幕 探偵オペラ ミルキィホームズ公式サイト|アニメ W @milkyholmes #milkyholmes TOKYO MX 23:00 - 23:30 1/5 tvk 土25:00 - 25:30
ニコニコチャンネル 日26:00更新
2期
テルマエ・ロマエ アニメ「テルマエ・ロマエ」公式サイト W @thermaeanime #thermae フジテレビ 24:45 - 25:15 1/12
ブラック★ロックシューター TV ANIMATION BLACK★ROCK SHOOTER | ブラック★ロックシューター W @BRS_noitamina #BRSTV フジテレビ 24:45 - 25:15 2/2
リコーダーとランドセル TVアニメ「リコーダーとランドセル」公式サイト W ? #rikoran テレ玉 25:00 - 25:05 1/5 ニコニコ動画 木深夜更新予定
ギルティクラウン ギルティクラウン ( GUILTY CROWN ) W @guilty_crown #guiltycrown フジテレビ 25:15 - 25:45 (放送中) (2クール目)
キルミーベイベー キルミーベイベー 公式ホームページ|TBSテレビ W @k_m_baby #k_m_baby TBS 25:25 - 25:55 1/5
アマガミSS+(plus) アマガミSS+ 公式ホームページ|TBSテレビ W @amagami_ouen #amagamiss TBS 25:55 - 26:25 1/5 2期
戦姫絶唱シンフォギア 戦姫絶唱シンフォギア 公式サイト W @SYMPHOGEAR #symphogear TOKYO MX 23:00 - 23:30 1/6 tvk 土23:30 - 24:00
ニコニコチャンネル 火23:00更新
灼眼のシャナ?-FINAL- TVアニメーション「灼眼のシャナ?-FINAL-」公式サイト W @shanafinal #shakugan TOKYO MX 25:30 - 26:00 (放送中) tvk 土25:30 - 26:00
ニコニコチャンネル 木24:30更新
3期(2クール目)
ペルソナ4 TVアニメ「ペルソナ4」公式サイト W @P4_A #P4_A TBS 25:55 - 26:25 (放送中) (2クール目)
妖狐×僕SS(いぬ×ぼく シークレットサービス) TVアニメ「妖狐×僕SS」(いぬぼくシークレットサービス)公式サイト W @inuboku_anime #inuboku TBS 26:25 - 26:55 1/13
ラストエグザイル-銀翼のファム- ラストエグザイル―銀翼のファム― 公式ホームページ W @lastexile_fam #lastexile TBS 26:55 - 27:25 (放送中)
バクマン。 バクマン。 bakuman.net W ? #bakuman NHK Eテレ 17:30 - 17:55 (放送中) 2期(2クール目)
日常 「日常」オフィシャルサイト W @shinonome_lab #nichijou NHK Eテレ 17:55 - 18:20 1/7 他の局で放送済、再編集版
偽物語 偽物語 公式サイト W @nisioisin_anime #nise TOKYO MX 24:00 - 24:30 1/7 テレ玉 土25:35 - 26:05
tvk 日25:00 - 25:30
ひだまりスケッチひだまりスケッチ×365 ベストセレクション TBSアニメーション「ひだまりスケッチ×365」公式ホームページ W ? #hidamari TOKYO MX 24:30 - 25:00 1/7 ベストセレクション
モーレツ宇宙海賊(パイレーツ) StarChild:モーレツ宇宙海賊 W @captainMARIKA #mo_retsu tvk 24:30 - 25:00 1/7 TOKYO MX 土25:00 - 25:30
テレ玉 日25:35 - 26:05
BRAVE10 アニメ「BRAVE10」公式サイト W @ANIME_BRAVE10 #BRAVE10 tvk 26:00 - 26:30 1/7 TOKYO MX 土26:00 - 26:30
テレ玉 月25:05 - 25:35
バンダイチャンネル 水12:00 - 12:30
ニコニコ動画 水22:30 - 23:00
機動戦士ガンダムAGE 機動戦士ガンダムAGE 公式サイト W @GundamAGE #g_age TBS 17:00 - 17:30 (放送中) バンダイチャンネル 土0.5 (2クール目)
ファイ・ブレイン 神のパズル サンライズ公式サイト「ファイ・ブレイン 〜神のパズル」 W @PB_SRPR #phibrain NHK Eテレ 17:30 - 17:55 (放送中) (2クール目)
輪廻のラグランジェ 輪廻のラグランジェ|公式サイト W @lag_rin #kamojo TOKYO MX 22:00 - 22:30 1/8 バンダイチャンネル 日22:00更新
ニコニコ生放送 水24:00 - 24:30
未来日記 TVアニメ「未来日記」オフィシャルサイト W @mirai_nikki #mirainikki ニコニコ動画 23:00 - 23:30 (放送中) テレ玉 日25:05 - 25:35
tvk 月25:15 - 25:45
TOKYO MX 水25:30 - 26:00
(2クール目)
ゼロの使い魔F TVアニメ ゼロの使い魔F|オフィシャルウェブサイト W @zerotsukaimacom #zerotuka tvk 25:30 - 26:00 1/8 TOKYO MX 月25:30 - 26:00 4期
アクエリオンEVOL アクエリオンEVOL W @AQevol #aqevol テレビ東京 25:35 - 26:05 1/8 ニコニコチャンネル 月24:00更新

C#生命体の実現を目指して

自分自身と同じソースコードをコードに作成させる

一か月ほど前、C# Advent Calendar 2011に一か月もあれば何か思いつくだろうと参加表明したのはいいものの、結局いいネタが思い浮かばずに、順番がまわってきてしまいました。。
23日担当のIIJIMASです。このエントリをC# Advent Calendar 201123日目とします。
とりあえず、苦し紛れに、思いついたネタがこれです。役に立つ知識だとか、最新の話題でなくて申し訳ございません。
人間を含む生物は、遺伝子という設計図があります。遺伝子は生物の「中」にあります。細胞にという生物個体のごく小さな一部にあります。考えてみると、とても不思議な気もします。ごく一部分に全体の設計図があるのです。マトリョーシカ人形のようなイメージでいえば、中から出てくるのは外の個体より一回り小さくなっているのが直観的な気がします。実際にはそうではないので、生命の遺伝はとても興味深い現象だと思います。
そこで「コンピュータプログラムで生命のようなものができると面白い」と考えました。
まず、自己複製を考えようと思います。ファイルコピーを使えばすぐできてしまいますが、あえてファイルコピーではなくあくまでもそのプログラムで同じコードを書き出すプログラムを作成してみました。

SelfGenarationCodeProgram.cs

using System;
using System.IO;
namespace SelfGenarationCode
{
    /// <summary>
    /// 自分自身と同じ内容のコードを出力するプログラム
    /// </summary>
    class Program
    {
        const string Code1 = @"using System;
using System.IO;
namespace SelfGenarationCode
{
    /// <summary>
    /// 自分自身と同じ内容のコードを出力するプログラム
    /// </summary>
    class Program
    {";
        const string Code2 = @"        /// <summary>
        /// エントリポイント
        /// </summary>
        static void Main(string[] args)
        {
            GenerateNext(""SelfGenarationCodeProgram.cs"");
        }
        /// <summary>
        /// 文字列にするために文字列の""を""""に変換する
        /// </summary>
        public static string ConvertCode(string source)
        {
            string result = source.Replace(""\"""", ""\""\"""");
            return ""@\"""" + result + ""\"""";
        }
        /// <summary>
        /// 次のC#コードを出力する
        /// </summary>
        public static void GenerateNext(string fileName)
        {
            using (StreamWriter sw = new StreamWriter(fileName))
            {
                sw.WriteLine(Code1);
                sw.WriteLine(""        const string Code1 = {0};"", ConvertCode(Code1));
                sw.WriteLine(""        const string Code2 = {0};"", ConvertCode(Code2));
                sw.WriteLine(Code2);
            }
            Console.WriteLine(""{0}を作成しました。"",fileName);
            Console.ReadKey();
        }
    }
}";
        /// <summary>
        /// エントリポイント
        /// </summary>
        static void Main(string[] args)
        {
            GenerateNext("SelfGenarationCodeProgram.cs");
        }
        /// <summary>
        /// 文字列にするために文字列の"を""に変換する
        /// </summary>
        public static string ConvertCode(string source)
        {
            string result = source.Replace("\"", "\"\"");
            return "@\"" + result + "\"";
        }
        /// <summary>
        /// 次のC#コードを出力する
        /// </summary>
        public static void GenerateNext(string fileName)
        {
            using (StreamWriter sw = new StreamWriter(fileName))
            {
                sw.WriteLine(Code1);
                sw.WriteLine("        const string Code1 = {0};", ConvertCode(Code1));
                sw.WriteLine("        const string Code2 = {0};", ConvertCode(Code2));
                sw.WriteLine(Code2);
            }
            Console.WriteLine("{0}を作成しました。",fileName);
            Console.ReadKey();
        }
    }
}

実に単純なプログラムですね。リテラル文字列が遺伝子といったところでしょうか。
手動でコンパイルして出力されたexeを実行します。

csc SelfGenarationCodeProgram.cs
SelfGenarationCodeProgram.exe

すると、SelfGenarationCodeProgram.csが同じ内容で上書きされます(元のファイルをリネームしておかないと上書きされます。更新日時が変わるはずです。)
確かに、元と全く同じソースコードを出力できました。dfやWinMergeで確かめてみてください。
しかし、手動でexeを作成するのが面倒です。実際の生物でも次の世代を作るのに神に手をわずらわさせたりはしないと思います。

実行ファイルもコードに作成させる

そこで、コンパイルや実行もプログラム自分自身にさせようと思います。ただし、実行中のexeファイルを上書きはできないようなので、毎回、ファイルの後ろに番号を増加させて別のファイルにします。また、「実行」を完全に自動にしてしまうと、物理リソースを食いつぶすまでの無限増殖になってしまうので、[Y]キーを押した時だけ「実行」するようにします。
SelfGenarationCode.cs

using System;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace SelfGenarationCode
{
    /// <summary>
    /// 自分自身のソースコードと実行ファイルを作成するプログラム
    /// </summary>
    class Program
    {
        const string Code1 = @"using System;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace SelfGenarationCode
{
    /// <summary>
    /// 自分自身のソースコードと実行ファイルを作成するプログラム
    /// </summary>
    class Program
    {";
        const string Code2 = @"        static void Main(string[] args)
        {
            string thisExeName = Path.GetFileNameWithoutExtension(typeof(Program).Assembly.Location);
            GenerateNext(IncrementFileNumber(thisExeName));
        }
        /// <summary>
        /// 文字列にするために文字列の""を""""に変換する
        /// </summary>
        public static string ConvertCode(string source)
        {
            string result = source.Replace(""\"""", ""\""\"""");
            return ""@\"""" + result + ""\"""";
        }
        /// <summary>
        /// 次のC#コードと、実行ファイルを作成する
        /// </summary>
        public static void GenerateNext(string fileName)
        {
            //ソースコードを作成する(あえてファイルコピーではなく)
            string csFileName = fileName + "".cs"";
            using (StreamWriter sw = new StreamWriter(csFileName))
            {
                sw.WriteLine(Code1);
                sw.WriteLine(""        const string Code1 = {0};"", ConvertCode(Code1));
                sw.WriteLine(""        const string Code2 = {0};"", ConvertCode(Code2));
                sw.WriteLine(Code2);
            }
            Console.WriteLine(""{0}を作成しました。"", csFileName);
            //実行ファイルを作成する
            string outputName = fileName + "".exe"";
            CSharpCodeProvider cscp = new CSharpCodeProvider();
            string[] assemblyNames = { ""System.dll"" };
            CompilerParameters pars = new CompilerParameters(assemblyNames, outputName);
            pars.GenerateExecutable = true;
            CompilerResults results = cscp.CompileAssemblyFromFile(pars, csFileName);
            if (results.Errors.Count > 0)
            {
                foreach (var error in results.Errors)
                {
                    Console.WriteLine(error);
                }
            }
            else
            {
                Console.WriteLine(""{0}を作成しました。"", outputName);
                Console.WriteLine(""実行しますか?(y/n)"");
                ConsoleKeyInfo keyinfo = Console.ReadKey();
                if (keyinfo.Key == ConsoleKey.Y)
                {
                    Process.Start(outputName);
                }
            }
        }
        /// <summary>
        /// ファイル番号をインクリメントする
        /// </summary>
        public static string IncrementFileNumber(string src)
        {

            Match m = Regex.Match(src, @""(?<Name>[^0-9]*)(?<Num>[0-9]*)"");
            string fileName = m.Groups[""Name""].Value;
            int number;
            int.TryParse(m.Groups[""Num""].Value, out number);
            return fileName + (number + 1);
        }
    }
}";
        static void Main(string[] args)
        {
            string thisExeName = Path.GetFileNameWithoutExtension(typeof(Program).Assembly.Location);
            GenerateNext(IncrementFileNumber(thisExeName));
        }
        /// <summary>
        /// 文字列にするために文字列の"を""に変換する
        /// </summary>
        public static string ConvertCode(string source)
        {
            string result = source.Replace("\"", "\"\"");
            return "@\"" + result + "\"";
        }
        /// <summary>
        /// 次のC#コードと、実行ファイルを作成する
        /// </summary>
        public static void GenerateNext(string fileName)
        {
            //ソースコードを作成する(あえてファイルコピーではなく)
            string csFileName = fileName + ".cs";
            using (StreamWriter sw = new StreamWriter(csFileName))
            {
                sw.WriteLine(Code1);
                sw.WriteLine("        const string Code1 = {0};", ConvertCode(Code1));
                sw.WriteLine("        const string Code2 = {0};", ConvertCode(Code2));
                sw.WriteLine(Code2);
            }
            Console.WriteLine("{0}を作成しました。", csFileName);
            //実行ファイルを作成する
            string outputName = fileName + ".exe";
            CSharpCodeProvider cscp = new CSharpCodeProvider();
            string[] assemblyNames = { "System.dll" };
            CompilerParameters pars = new CompilerParameters(assemblyNames, outputName);
            pars.GenerateExecutable = true;
            CompilerResults results = cscp.CompileAssemblyFromFile(pars, csFileName);
            if (results.Errors.Count > 0)
            {
                foreach (var error in results.Errors)
                {
                    Console.WriteLine(error);
                }
            }
            else
            {
                Console.WriteLine("{0}を作成しました。", outputName);
                Console.WriteLine("実行しますか?(y/n)");
                ConsoleKeyInfo keyinfo = Console.ReadKey();
                if (keyinfo.Key == ConsoleKey.Y)
                {
                    Process.Start(outputName);
                }
            }
        }
        /// <summary>
        /// ファイル番号をインクリメントする
        /// </summary>
        public static string IncrementFileNumber(string src)
        {

            Match m = Regex.Match(src, @"(?<Name>[^0-9]*)(?<Num>[0-9]*)");
            string fileName = m.Groups["Name"].Value;
            int number;
            int.TryParse(m.Groups["Num"].Value, out number);
            return fileName + (number + 1);
        }
    }
}

[Y]キーを押し続けると、延々と同じソースを持つファイルを生成し続けます。
なにか有用な応用はないものでしょうか?
内容が全く同じコードなのでこれでは進化しません。実際の生命は完全なコピーではなく、ランダムにごく一部が間違って次世代にコピーされ、環境にたまたま適応できた個体が生き残り次世代を生成できます。いわゆる淘汰です。これを実装する方法はまだ考えていませんので、今回のエントリはこれにて終わりです。大胆なタイトルをつけてしまいましたが、C#生命体の実現への道のりはまだまだ遠そうです。。

実は、以前の自分のわんくまブログエントリ「自分自身を出力するプログラム。」が元ネタです。元ネタではJavaScriptコードで記述しています。






ここで宣伝するのも恐縮なのですが2011年12月3日に「C# ポケットリファレンスWINGSプロジェクト著、技術評論社 が発売されました。
私は第7章を担当しました。

  • Chapter 7 データベースアクセス

ご興味がある方は、ぜひオフィス・チームに一冊購入してみてください。もちろん一冊以上でも!
目次やダウンロード→WINGSプロジェクト技術評論社




宣伝といえば、C# Advent Calendar 2011の21日目ご担当のsuerさんのエントリ「Visual Studio で作成したセットアッププロジェクトで CI するためのコマンド」でご紹介いただいていたのでこれも…昨年の7月に発売された本ですが・・・
はじめてのVisual Studio 2010 (TECHNICAL MASTER 62)」techbank.jp著、秀和システム
私は第11章を担当しました。

  • Chapter 11 アプリケーションの配布
    • 11-01 セットアッププロジェクト [配布]
    • 11-02 ClickOnce [配布]
    • 11-03 ASP.NET配置 [配布]

この章、内容が内容だけにあまり読者いないだろうななどと思っていたのですが、21日目のsuerさんにお読みいただいていることがわかりうれしいかぎりです。suerさんありがとうございます。
目次など→秀和システム
私の紹介エントリ→書籍「はじめての Visual Studio 2010」(秀和システム)のご紹介

2011年秋アニメは何を見ようか…

今年に入ってから急に放送している(深夜)アニメを見るようになった。早いものでもう、今年、最終の4クール目のアニメが10月頃からスタートする。うちは同時録画は1チャンネルしかできない。今季もニコニコチャンネルで最新話1週間無料配信されるものもあるが、なるべく早く見たいので、うちから見ることができるチャンネル(関東キー局すなわち日本テレビ、TBS、フジテレビ、テレ東と、TOKYO MXTVKテレ玉)での放送時間を可能な範囲で調べた。各アニメの放送局と時間の情報が載っている原作についてのウィキペディアページで調べた(同じページの原作内容ネタバレ注意)。ニコ動の方が放送早いのもあるし、早い放送が重なってしまう部分はどちらかを遅い放送にずらしたので最も早いとは限らない。よってあくまでも個人的なもの。私はアイマスの裏のギルティクラウンは見れなさそう…リアルタイムと録画という手もあるが…。

放送曜日 タイトル アニメ公式HP 公式Twitter 関連ウィキペディア 放送局 放送開始日 放送時間(通常時) 備考
WORKING'!!(WORKING!!第2期) HP T W TOKYO MX 10/01 23時30分 - 24時00分
Fate/Zero HP W TOKYO MX 10/01 24時00分 - 24時30分
化物語(再放送) HP W TOKYO MX 10/08 24時30分 - 25時00分
C3 HP T W TOKYO MX 10/01 25時00分 - 25時30分 TVK土曜24時30分の方が早い。
灼眼のシャナⅢ-FINAL-(灼眼のシャナ第3期) HP T W TVK 10/08 25時30分 - 26時00分 TOKYO MX金曜25時30分の方が早い。
未来日記 HP T W テレ玉 10/09 25時05分 - 25時35分 ニコニコ動画日曜23時00分の方が早い。
ベン・トー HP T W TVK 10/09 25時30分 - 26時00分
境界線上のホライゾン HP T W TVK 10/02 26時00分 - 26時30分
君と僕。 HP T W テレビ東京 10/03 25時30分 - 26時00分
侵略!?イカ娘(侵略!イカ娘第2期) HP T W テレビ東京 09/26 26時00分 - 26時30分
真剣で私に恋しなさい! HP W TOKYO MX 10/03 26時30分 - 27時00分 TVK土曜25時00分の方が早い。
ちはやふる HP T W 日本テレビ 10/04 24時59分 - 25時29分
ましろ色シンフォニー HP T W テレ玉 10/04 26時05分 - 26時35分
マケン姫っ! HP W tvk 10/05 25時45分 - 26時15分 テレ玉火曜 25時05分の方が早い。
UN-GO HP T W フジテレビ 10/13 24時45分 - 25時15分
ギルティクラウン HP T W フジテレビ 10/13 25時15分 - 25時45分
アイドルマスター HP T W TBSテレビ 放送中 25時25分 - 25時55分
僕は友達が少ない HP T W TBSテレビ 10/06 25時55分 - 26時25分
たまゆら HP T W TOKYO MX 10/07 23時00分 - 23時30分 TVK火曜 25時45分の方が早い。
ペルソナ4 HP T W TBSテレビ 10/07 25時55分 - 26時25分
輪るピングドラム HP T W TBSテレビ 放送中 26時25分 - 26時55分
ラストエグザイル-銀翼のファム- HP T W TBSテレビ 10/14 26時55分 - 27時25分

参考リンク:
[Link]「2011年秋季放送開始の新作アニメ一覧 - GIGAZINE
[ニコ動]「2011年 秋アニメ紹介 ‐ ニコニコ動画(原宿)
D
ニコニコで最新話1週間無料配信される2011年秋季テレビアニメ:「侵略!?イカ娘」「君と僕。」「C3 シーキューブ」「灼眼のシャナⅢ-FINAL-」「Fate/Zero」「ペルソナ4」「ベン・トー」「真剣で私に恋しなさい!!」「ましろ色シンフォニー」「未来日記」「WORKING´!!(第2期)」「gdgd妖精s

夕方の西の空の色あいがとてもきれいだった


本日、2011年9月7日、職場から職場最寄駅へ帰路で夕方の西の空の色あいがとてもきれいでした。携帯電話で写真撮りました。肉眼だとさらにきれいでした!この写真の撮影時刻の数分前、もっと広いところで見上げた時、夕焼けの赤い部分よりちょっと上あたりが金色に輝いていました。

地球上には必ず、地球の中心に対して反対側の場所と同じ温度でかつ同じ気圧の場所の対がある。

4月3日は、数学者スタニスワフ・ウラムの誕生日でした。
Stanislaw Ulam - Wikipedia, the free encyclopedia
ウラムはこんにちボルスク・ウラムの定理呼ばれる定理を予想しました。ボルスクが証明しました。

n次元球面からn次元ユークリッド空間への連続写像 f に対して、対蹠点(球面の原点0に対して反対側の点)の対 (X, - X)が存在して、f(X) = f(-X)

定理の n = 2 の特別な場合で日常的表現として

地球上には必ず、地球の中心に対して反対側の場所と同じ温度でかつ同じ気圧の場所の対がある。

というのがあります。これは直観ではなかなかわかりづらいですね。しかし、数学の面白さがわかる事実だと思います。

n = 1 の場合

円周の点に対して実数を対応させる連続関数 f は、像が同じ値f(X) = f(-X)になる対蹠点の対を持っている。

ということになり、これはグラフを書いてみれば簡単にわかります。

円周を単位円すると、円周上の点は(cos\theta, sin\theta)で表され、連続関数 f による値は\thetaの連続関数g とみなせる。
連続関数g のグラフを横軸:\theta、縦軸:g(\theta)として描く。
f が円周の上の関数だから、 g の定義域は-\pi<=\theta<=\piとみなせる。特に、g(\pi) = g(-\pi)
関数h:\theta \rightar g(\theta-\pi)を考える。この関数のグラフはg-\pi<=\theta<=0部分を右に\piだけ平行移動したものとなる。
また、(cos(\theta-\pi), sin(\theta-\pi)) = -(cos\theta, sin\theta)だから、(cos\theta, sin\theta)の対蹠点。
hのグラフは(0, g(\pi))から、(\pi, g(0))への連続曲線であり、もとのgのグラフは(0, g(0))から\pi, g(\pi))への連続曲線。よって、これらのグラフはどこかで交わる。つまり、ある\alpha(0<=\alpha<=\pi)があって、h(\alpha) = g(\alpha)となる。
このとき、(cos(\alpha-\pi), sin(\alpha-\pi))は、(cos\alpha, sin\alpha)の対蹠点。
もとの連続関数 f がこの点の対の上で、同じ値をとることがわかる。

n=1の場合は成り立つことがわかりました。これだけでもなかなか面白いですね。