2007年11月11日

Windows Live Writer のアドインで記事中のソースコードを彩る

先頃正式版がリリースされたWindows Live サービスのうちのひとつ、ブログ投稿ツールのWindows Live Writer には、ユーザーが作成したアドインを追加できます。今回は、ソースコードを記事に挿入するさいに便利なアドインをいくつか試してみました。

ひとつめは「Code Snippet plugin for Windows Live Writer」アドインです。これはCSSで装飾したソースコードを記事中に挿入するアドインで、C#、VB、MSH、TSQL、CSS、HTMLのコードを装飾してくれます。例えばC#のコードならば

   1: using System;
   2:  
   3: class HelloWorld
   4: {
   5:     public static void Main(string[] args)
   6:     {
   7:         Console.WriteLine("Hello, World!");
   8:     }
   9: }

のようになります。HTMLならば

   1: <span style = "color : #FF0000;">こんにちは、世界。</span>

のようになります。

ふたつめは「Paste from Visual Studio」アドインです。これはその名の通りVisual Studioからコードを装飾のついた状態で貼り付けます。先ほどのC#のコードをVisual Studio上で記述、コピーしたのちにこのアドインを使用すると

using System;

class HelloWorld
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

となります。

どちらのアドインも非常に便利です。「Paste from Visual Studio」はコードフォーマットや対応言語に関してVisual Studioの装飾をそのまま持ってこれる点で有利ですが、「Code Snippet plugin for Windows Live Writer」は行番号も自動で付けてくれる点で勝っています。ソースコードを記事中に書くことが多い方は導入してみてはいかがでしょうか。

posted by bakemoji at 19:03| Comment(0) | TrackBack(0) | Windows Live | このブログの読者になる | 更新情報をチェックする

2007年11月10日

Windows Live Agents について

最近Windows Live Messenger 2008 (8.5) がリリースされました。見た目が少し変わったくらいで変更はほとんどありませんが、同時にリリースされた、Messengerに追加できるボットWindows Live Agentsが面白いです。

Windows Live Agents とは、メッセンジャーにボットのLive IDを追加することでそのボットとチャットしたりボットに検索などの仕事を依頼したり出来る機能です。日本語のボットには現在のところLive Messenger アドバイザー まいこ とエンカルタ辞書サービスがあります。英語のボットはLive Agents チームのブログWikipediaのLive Agentsの項にいろいろ掲載されています。

また、前述のブログではLive Agentsの作成方法についての記事(Tipsカテゴリ)やSDKの配布やリリースノート(Announcementカテゴリ)もあります。Live Agents は自然言語による双方向処理のための技術、BuddyScriptを使って作成するそうです。自分でもボットを作成して見たい方はブログを参照するとよいでしょう。

ラベル:Windows Live
posted by bakemoji at 21:13| Comment(0) | TrackBack(0) | Windows Live | このブログの読者になる | 更新情報をチェックする

2007年11月08日

Another Century's Episode 3 プレイ記 その3

ブラックサレナでVSミッション1対1最強の敵っぽいニルヴァーシュを攻略するときの戦略についてメモしておきます。ブラックサレナで攻略していくなかで生まれた戦略ですが、基本的にはどの機体でも同様の方法でいけると思います。

ニルヴァーシュの特徴として、動きはダッシュ、回避ともに素早く、攻撃は射撃、近接ともに一発が重いかわりに連射性がないです。また、攻撃動作がわかりやすいのでセブンスウェルとエクスペルエアーカット以外の攻撃は見てからかわせます。

基本的な戦術は「こちらはあまり移動せずに攻撃、敵の近接を回避してまた攻撃」です。中距離でほとんど動かずに射撃していると上昇から近接攻撃をしてくるのでこれを回避してなんらかの攻撃を加えます。

上記を繰り返していると車に変形して追いかけてきます。距離1000程度を保って逃げつつ、できたら攻撃します。

車から通常形態に戻ったあとはライフルかセブンスウェルで攻撃してきます。セブンスウェルは発動されてしまうと回避は困難なので、ライフルを撃たせるべく距離1200前後を保って逃げます。ライフルを撃ってきたらかわし、基本戦術に移行します。

セブンスウェルを発動されてしまった場合、エウレカのセリフが始まったらすぐにニルバーシュと逆方向にボソンジャンプすることで回避できることもありますが、狙ってやるのは難しいのでなるべくライフルを撃たせます。

ある程度ダメージを与えると防御力が上がって射撃ではほとんどダメージを与えられなくなります。一気に勝負を決めたいならディストーションアタックで、時間を気にせず手堅く行くならそのまま近接攻撃の回避ざまに射撃で攻撃します。

上記パターンにはめれば時間はかかりますが無傷で倒すことも可能です。実際、難易度ハードでも無傷で撃墜できました。

ラベル:ACE3 ゲーム
posted by bakemoji at 17:46| Comment(0) | TrackBack(0) | ACE3 | このブログの読者になる | 更新情報をチェックする

2007年11月07日

PowerShell 2.0 CTP リリース

でたみたいですね。追加点、改良点の概要はWhat's New in CTP of PowerShell 2.0にあります。

ざっと読んだところ、1.0との互換性に注意しつつ機能強化が図られているようです。基本的には1.0のスクリプトは動作するようですが、新しいキーワード、変数、コマンドレットが追加されたので名前が衝突する場合はパースエラーになったり誤動作の原因になったりしそうです。

気になるのは新しく追加されたOut-GridViewコマンドレット(ソートなどが可能なGUIの表に出力)とGraphical PowerShell(グラフィカルなシェル。開発+実行環境?)が.NET Framework 3.0を要求することです。GUIにWPFを使用しているのでしょうか。

実験環境がないため試せませんが、追加点や改良点を見るになかなか良さそうではあります。ベータ版や正式版のリリースが楽しみです。

posted by bakemoji at 22:52| Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2007年11月03日

C#でテキストエディタを作成したい

ここしばらくはPowerShellやPython / IronPythonに夢中でしたが、最近またC#熱が上がってきてC#で何か作りたくなったのでテキストエディタを作ることにしました。といっても本格的なものではなく、コマンドライン上で動く行エディタです。Unixのedが有名ですね。

なぜ行エディタかというと、テキストエディタViViの作者である津田さんが公開されている技術文書を見て、自分でも作ってみたくなったからです。

そのまま作成してはつまらないのでいろいろ実験することにしています。例えば、行を格納するデータ構造とそれらを格納するデータ構造をそれぞれいくつか作成して性能を比べてみたり、ユーザがコマンドを追加可能にしたりといったことを試してみる予定です。

今後は備忘録として製作の進捗をブログに書いていこうと考えています。最終的には津田さんのようにしっかりした技術文書として公開できると良いのですが。

posted by bakemoji at 03:13| Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

2007年10月28日

Another Century's Episode 3 プレイ記 その2

ついに難易度ノーマルで全ステージシークレットを獲得しました。ブラックサレナだけでクリアしたかったのですが、タイムアタック系のミッションのうちのいくつかがどうしてもクリアできなかったのでリミッター解除したキングゲイナーを使ってしまいました。

ブラックサレナの場合、ハンドカノンで雑魚を潰しつつ接近し、リーダーユニットのAPに応じてテールバインダ、タックル切り抜け、ディストーションアタックを使い分けるという風にしています。ですが、切り抜けは距離感の把握が難しく、命中せずに時間のロスとなってしまうことが多いです。切り抜けの精度が上がればタイムアタックももう少し頑張れると思うのですが。練習あるのみですね。

全シークレットクリアのご褒美、ニルヴァーシュ type ZERO spec3 を使ってみましたが、動きが機敏なのが特徴のエウレカ勢の中で唯一もっさりした動きで、あんまり爽快感がありませんでした。ハートで拘束した敵を全周囲ビームで殲滅できるのは楽しいです。リミッターを解除すればウィングゼロと並んでエクストラミッション3でのエースポイント稼ぎに使えそうです。

そろそろ難易度ハードに挑戦しようかと考えています。使用していない機体も多いですし、まだまだ楽しめそうです。

ラベル:ACE3 ゲーム
posted by bakemoji at 19:43| Comment(0) | TrackBack(0) | ACE3 | このブログの読者になる | 更新情報をチェックする

2007年10月24日

関数型言語F♯(F#)がVisual Studioに追加されるかも

ITproMicrosoftの新プログラミング言語「F#」,Visual Studioへの搭載目指すより。

実験要素の強い関数型言語F#もVisual Studio入りするみたいです。いったい誰が使うのかという気がしないでもないですし、売りの1つであるPythonライクな対話式スクリプティングをIDE上でどう生かすのかが謎ですが、なかなか面白いことになってきました。

F#は関数型言語Camlをベースに、.NET上の言語としてオブジェクト指向パラダイムもサポートします。Camlにオブジェクト指向言語の機能を追加した言語にOCamlというものがあり、F#はOCmalのライブラリと互換性のあるライブラリを持っています。

一方、.NETの中心言語であるC#はオブジェクト指向言語として出発してバージョンが上がるごとに関数型言語的な機能を取り込んでいます。関数型言語の機能を追加したオブジェクト指向言語とオブジェクト指向言語の機能を追加した関数型言語が1つのIDEに載るということにもなかなか考えさせられます。

ラベル:Visual Studio F#
posted by bakemoji at 20:16| Comment(0) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする

2007年10月21日

オープンソースでクロスプラットフォームなPython製のゲーム用スクリプトエンジン Ren'Py

ネットを巡回していたら、Python製のゲーム用スクリプトエンジン Ren'Py なるものを知りました(公式ページではVisual Novel Engineと謳っています)。オープンソースでクロスプラットフォーム(Windows、Mac OS X、Linux)、Pythonライクな文法に加えてPythonの文を埋め込めるために拡張性が高いことが特徴のようです。

外国で製作されているため公式サイトやその他情報のあるサイトは英語がほとんどです。日本語ではanobotaというブログがいろいろな情報を載せられているようです。こちらのブログによると、日本語の表示も問題なく可能なようですし、メニューなどを日本語にする方法も掲載されています。興味はあるが英語は苦手だという方はこちらをご覧になると良いでしょう。また、公式サイトにはRen'Py製のゲームが60本近く掲載されているので、どの程度のことができるか確認することもできます。

気になるのは、公式ページの左カラムトップ、マスコットっぽい女の子にからまった蛇がコントローラをくわえているのですが、それがスーパーファミコンのコントローラに見えることです。ボタンの色こそ違いますが、形といい、ボタンの配置といい(スタートとセレクトが斜めになっているのも同じ)、見れば見るほどスーパーファミコン。なぜスーパーファミコンなんでしょうか。

ラベル:Python ゲーム
posted by bakemoji at 21:54| Comment(0) | TrackBack(0) | Python | このブログの読者になる | 更新情報をチェックする

2007年10月19日

PowerShellのヘルプについて その2

前回の続きです。Get-Helpコマンドレットはヘルプを表示しているわけではなく、オブジェクトを返します。コマンドレットのヘルプはMamlCommandHelpInfo、プロバイダのヘルプはProviderHelpInfo、言語のヘルプはstringにいくつかのPowerShellでのプロパティが追加されたものが返されます。

PS > $h = Get-Help Remove-Item
PS > $h.Name
Remove-Item
PS > $h.Synopsis
指定した項目を削除します。

などというように、ヘルプで表示される内容に個別にアクセスできます。

ですが、このヘルプオブジェクト、ProviderHelpInfoとMamlCommandHelpInfoの間で構造に一貫性があまり無いようです。ひつつ例を挙げます。

ProviderHelpInfoには頻出タスク別にコマンド例がいくつかあります。ProviderHelpInfoがTaskを複数持ち、TaskがExampleを複数持つという関係です。Exampleからは

PS > $ph = Get-Help FileSystem
PS > $ph.Tasks.Task[1].Title
ファイルとディレクトリ情報を取得する
PS > $ph.Tasks.Task[1].Examples.Example[0].Code
get-childitem
PS > $ph.Tasks.Task[1].Examples.Example[0].Introduction
現在のディレクトリにあるすべてのファイルとディレクトリを取得します。
既定では、Get-ChildItem の動作は再帰的ではありません。
PS > $ph.Tasks.Task[1].Examples.Example[0].Remarks
このコマンドを実行する際、現在のディレクトリにファイルとフォルダが存在している場合には、
System.IO.FileInfo オブジェクトと System.IO.DirectoryInfo オブジェクトという
2 種類のオブジェクトが返されることに注意してください。

のようにコマンド例とそれに対する説明、注釈などを取得できます。対して、MamlCommandHelpInfoのExampleからは

PS > $ch = Get-Help Remove-Item
PS > $ch.Examples.Example[0].Code
remove-item C:\Test\*.*
PS > $ch.Examples.Example[0].Introduction
C:\PS>
PS > $ch.Examples.Example[0].Remarks
このコマンドを実行すると、名前にドット (.) が含まれるファイルが C:\Test ディレクトリからすべて削除されます。
コマンドでドットを指定しているため、ディレクトリや拡張子のないファイルは削除されません。

のように、コマンド例とそれに対する説明を取得できますが、説明を取得できるプロパティがそれぞれRemarksとIntroductionというように異なっています。

他にも、この2つのオブジェクトにはちょっとした差異がいくつかあります。こういった差異が、独自にhtmlヘルプを作るときなど、オブジェクトを解析するときに足かせとなりそうです。

posted by bakemoji at 01:46| Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2007年10月17日

PowerShellのヘルプについて

PowerShellでは、Get-Helpコマンドレットによりコマンドレット、プロバイダ、シェルや言語に関する事柄についてのヘルプを閲覧できます。Get-Helpコマンドレットで表示されるヘルプは情報量が豊富でかつ日本語化されているので非常に便利です。

PS > Get-Help Remove-Item
#Remove-Itemコマンドレットの説明が表示される
PS > Get-Help FileSystem
#FileSystemプロバイダの説明が表示される
PS > Get-Help about_if
#ifステートメントの説明が表示される

コマンドレットのヘルプについては-detailedスイッチを指定することでより詳細な情報を得られます。各パラメータの説明やいくつかの利用例も表示されるので、便利です。

さらに、上記のように言語の説明も表示できるので、例えばどんな演算子が使えるかなど文法で迷ったら、

PS > Get-Help about*

で表示される事柄一覧から演算子に関係ありそうなものを改めてGet-Helpコマンドレットで表示したり、

PS > Get-Help about* | where { $_ | Select-String "演算子" -quiet }

で各ヘルプファイルを「演算子」で検索して絞り込んだり出来ます。Select-Stringコマンドレットは入力されたファイル又は文字列から与えられた正規表現パターンにマッチする部分を探します。通常は見つかったらMatchInfoオブジェクトを返しますが、-quietスイッチを指定することでTrue/Falseを返すようにできます。

長くなってきたので次回に続きます。次回はGet-Helpコマンドレットの返すオブジェクトについてです。

posted by bakemoji at 18:49| Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。