わんくま同盟わんくま同盟
わんくま同盟 -> Blog's
わんくま同盟メンバの最新の記事
6月30日に行われた、JP1セミナー(六本木ヒルズ)での簡単レポを。
■JP1 V9でフルモデルチェンジ オートメーションの徹底解説
つい先日リリースされたJP1 Version9(JP1/AJS3)について、新機能解説及び、具体的な変更点などを
資格取得者向けに説明頂きました。ざっくり書くと、4点ほど優れている点があります。
・ジョブ起動の単体性能が前バージョン比2~4倍!
→現在、スケジュール制御部分はDBにて管理をしていますが、それをメモリ上で管理することに
より、高速で処理を行うことが可能(但し、その分メモリは必要になる)になります。
・異なる環境下において、ジョブ定義の移行が容易になる
→「JP1のユーザマッピング機能で、○○ユーザは△△権限が使えるようにする」という制御を
行うことができますが、それに似た感覚で、ジョブ実行エージェント名として、論理的な名称
(実行エージェント)を定義することによって、ジョブ定義の移行を容易に行うことができます。
・ジョブ定義作業のバリデーション
→前バージョンまで詳細定義はだれでも設定することが可能でしたが、設定変更を行うことにより、
設定したユーザに対して、一部の入力項目を設定不可にすることが可能になります。
→管理者向け画面、オペレータ向け画面等、カスタマイズすることが可能に。
・ジョブネットのリリース管理
→特定の時間に起動しているジョブネットを変更させ、切り替えたジョブネットで動作できる
ようになります。業務を止めることなく、通常の運用を行ったまま、切り替えが行えるようになった
ことは非常に進化した点だと思います。
今回のバージョンアップは、ユーザビリティに配慮したところもあれば、性能向上の箇所もあり、なかなか興味深かったです。
翌日、JP1 Ver8資格からVer9資格への移行試験の案内がメールで届いており、早速受験。→無事に合格^^
今年もINETA Dayが実施されます。
私は当日福岡なので参加できませんが、是非皆さんご参加ください!
http://www.ineta.jp/tabid/232/Default.aspx
場所は日本科学未来館です。
【最新技術トラック】
S1-1 13:00-14:15(75)
Microsoft ソフトウェアアーキテクト 萩原正義
「クラウドでのアーキテクチャの原則と考慮点」
Azure Services Platformなどのクラウドでアーキテクチャを構築する場合の原則と、設計のための考慮点を解説します。
今後デザインパターンや開発方法論などの整備が行われる過渡期にある現状での最新技術を紹介します。
S1-2 14:30-15:45(75)
株式会社アークウェイ 代表取締役 森屋英治
「Windows Azure アーキテクチャと開発」
第三のプラットフォームWindows Azureの概要をお伝えするとともに、開発者にとってのWindows Azureをどのようにとらえるべきかを
アーキテクチャ解説とCodeを通じて説明していきます。
S1-3 16:00-17:15(75)
VSUG こみゅぷらす 小島 富治雄
『C#4.0 と Visual Studio 2010/.NET Framework 4.0~ここが Cool! いけてる機能10連発!~』
6月に公開されたばかりの Visual Studio 2010 Beta 1 を使って、C#4.0 と Visual Studio 2010/.NET Framework 4.0 いけてる、
お勧めの機能を、どんどんとデモで紹介します。
【コミュニティトラック】
S2-1 13:00-13:40(40)
VisualStudio ユーザーグループ Webアプリケーションフォーラムリーダ 小野修司
「Dynamic Data お手軽プログラミング」
ASP.NET 3.5 SP1で追加されたDynamic Data。新機能のわりには
あまり注目されていないような気もします。
実はこんなふうに使えるんだよ、というDynamic Dataの便利な
使い方を紹介したいと思います。
S2-2 13:45-14:25(40)
インフラジスティックス・ジャパン(株) デベロッパー エバンジェリスト 池原 大然
(アイネタビューロ登録スピーカー)
「Prism ではじめる Silverlight LOB アプリケーション開発」
複合アプリケーション開発のためのフレームワーク Composite Application Guidance (旧 Prism) では、多拠点や複数グループによる開発、単体テストに適しています。
本セッションでは Prismの概要並びに、コードを交えて複合アプリケーション作成について紹介します。
S2-3 14:30-15:10(40)
WisdomSoft赤坂玲音
Silverlight カスタムコントロール開発
通常の Silverlight アプリケーション開発プロジェクトでは UserControlクラスを継承させて標準コントロールなどを貼り付けますが、
再利用可能な汎用的なカスタムコントロールを作成には Visual Studio標準の開発モデルを適用できません。カスタムコントロールを作成するには、
Control クラスから派生する新しいコントロールを用意して、適切に XAML と結合しなければなりません。
本セッションでは、テンプレートやスタイルなど、XAMLによってコントロールが描画される仕組みについてサンプルを含めて紹介し、
独自の外観や振舞いを提供するカスタムコントロールの開発方法を説明します。
S2-4 15:15-15:55(40)
.Netユーザーエクスペリエンス研究所 児玉宏之
WPFの新しいコントロール
WPFのDataGrid・DatePicker・Ribbon・WPF chartなどVisual Studio 2010/.NET Framework 4.0 Beta 1 や、Preview 段階の新しいコントロールを紹介します。
また、WPFの開発パターンとして定着しつつあるM-V-VMパターンについても紹介します。
S2-5 16:00-17:15(75)パネルディスカッション
「レガシー資産をどうされていますか?」
「VB6.0以前をはじめ、.NET Framework 1.0そして1.1もメインサポートが終了、若しくは間もなく終了します。
少し前はVB6.0以前からの移行をご検討されている方が多かったですが、.NET間での以降も視野に入れて行かなければなりません。
皆さんこの辺りをどの様に考えていらっしゃるかディスカッションで討論しませんか。」
【チュートリアルトラック】
T1 13:00-15:45(165)
「オブジェクト指向設計入門」
XPJUG 小井土亨
オブジェクト指向の基本的な考え方からオブジェクト指向設計の基本原則について説明します。また、UMLについても、解説を行います。テキストを使用した例題を解きながら進める予定です。コンピュータは使用しませんが、筆記用具をご用意ください。
Amazonで買い物をすると「Amazon.co.jp ご注文の発送」というメールが届きます。
内容としては「お客様からご注文いただいた 商品 を本日発送させていただきました。 」というものです。
そのヘッダを一部抜き出してみると↓のような感じになります。
Date: Thu, 2 Jul 2009 14:59:19 -0700 (PDT)
From: "Amazon.co.jp"
X-AMAZON-RTE-VERSION: 2.0
X-AMAZON-CLIENT-SENDTIME: Thu Jul 02 14:59:19 PDT 2009
X-AMAZON-CLIENT-HOST: cone-fe-31001.sea31.amazon.com
X-AMAZON-MAIL-RELAY-TYPE: notification
X-Sender-CC: US
X-Sender-JS: 0
このヘッダからわかるのは2009/07/02 14:59:19にAmazonとしては何かアクションが行われた事になります。
この15時くらいにAmazonが配送したよとメールをくれて物を宅配業者のトラッキングサービスでトラッキング表示すると次のような表示になります。
⇒ 2009年07月04日 城北店から配達に出発致しました。
↑ 2009年07月03日 21:38 城南店を出発致しました。
↑ お荷物をお預かり致しました。
集配してから(都内の)別店舗へ配送するのに6時間もかかるのかなーというのがすごく疑問なのですが、集配間隔と店間配送便間隔のタイミングによってはこんな感じなんですかね?
Amazonさんって宅配業者さんにとっても取扱量が多いお客様なので集配タイミングとか最適化してAmazonからのメールとの差異を小さくしてもらいたいなー。
Mr.Tです、こんにちは。
私は既婚者です。ええ、嫁さんがいます 。
結婚してから気がつくというのはよくあることです。こんなはずではなかった!的な話は、どんな人でも色々とあるはずで
なにも私だけではない・・・そう思って今日も生きてます。
子供が50音の絵カードをつかって遊びをしていると、こんなことを云ってました。
子供:「や、はなんだー」
嫁:「えーとな、ヤーダ姫(*1)、やかん・・・」
子供:「か、はなんだー」
嫁:「カラス、髪・・・」
50音の絵カードは、アンパンマンをベースにしたもので、結構綺麗です。
7並べみたいにあかさたな順にならべると、そこに描いてある絵が続き絵みたいになっているやつですね。
昔懐かしいカンペンケースみたいなものに入っている奴で、ネット上で探してみましたが、ちょっと見当たりませんでした。
#フレーベル館のものなんですがね
子供:「と、はなんだー」
嫁:「と・・・とり! トーマス! と、と、と・・・」
子供:「なんだー」
子供は、自分が答えてほしい言葉がでてこないと外れ、らしいです。
嫁:「と、と、と・・・トォォォォォォォォーーーーーーーーーー!」
急に男らしくなりやがった! 誰が、せがた三四郎になれと云うた!
オレ:「待てぇぇぇぇい!」
さすがに高速で突っ込みをかけたら、鼻であしらわれました。
こんなはずではなかった、と思いますです。
(*1 アンパンマンの作中にでてきます。http://ja.wikipedia.org/wiki/ヤーダ)
質問1 投稿者:Hid***** / 評価:787 6月 29日 17時 52分
『ロケラン、マグナムピストル、ショットガン、スナイパーライフルなど 無限化 完了しています。快適に遊べます』とは、どういうことですか?ゲームソフトではなく、ゲームデータということですか?その場合、HDでどのようにして、データを移すのですか?
回答
快適とは武器の弾がなくならないので いつでも戦えるということです。このゲームの中で無限化(=所持している弾が無限に使える)している武器を選べば使えます。データなどを移す必要はありません。下記などの攻略方法は参考になります。 http://game12.gaym.jp/biohazard/5/index.html
質問2 投稿者:r32***** / 評価:81 6月 29日 21時 9分
無限化 完了しています とありますが、どの様な方法で無限化でプレイできるのでしょうか。クリア時パスワードとかですか。差し支え無い程度に回答願います。要は普通にプレイできるのか(ゲーマータグや実績において)ということなのですが。
回答
快適とは武器の弾がなくならないので いつでも戦えるということです。このゲームの中で無限化(=所持している弾が無限に使える)している武器を選べば使えます。データなどを移す必要はありません。下記などの攻略方法は参考になります。 http://game12.gaym.jp/biohazard/5/index.html

あれか、ファミコンとかスーパーファミコンのカセットと同じだと言いたいわけだな? つまり Xbox360 はいつの間にか ReWritable になっていたのだよ!! なんだってー。
業務アプリの各テーブルの末尾に、作成日、作成者,更新日、更新者、等を設定することがありまする
慎重なプロジェクトだと、作成端末、作成プログラム、更新端末、更新プログラムを設定することもあります。
これらの8項目を各テーブル必須項目としているプロジェクトも多いようです。
しかし、変更の発生しない、固定テーブル(性別表、人格表など)にも適用しているのは、どうでしょう。
売上伝票などの業務伝票データは変更するのは、本来良くなく、赤黒処理するのが原則です。
変更が発生しないのに、いつも8項目を伴って設置するのは、冗長感一杯です。
この8項目の役目は、「何か不具合があったときに追跡できるのため」と言われますが、この項目が役立つ場面に遭遇したことはありません。
何かあったときの保険なのかも知れません。
不具合データが発生したときは、入力した操作員を特定したり、どのような操作をしたかで追跡することはありますが、その時は操作ログを追求します。
(その前に)レコードに複数項目あり、複数者が変更を加えたとき、特定項目の変更者を特定することは、該当テーブルの変更者欄からは特定できないです。
他の仕組みで8項目の値が取得できれば、各テーブルに保持しなくても良いと思うのです。
私は、変更履歴表で、挿入、変更、削除ログを残すようにして、そこを参照すれば8項目に相当する値は取れるようにしています。
各テーブルが8項目を無くしてから、アプリ作成とテスト項目が軽減されました。
テーブル設計基準も画一的に適用させるのでなく、役割を吟味して、必要性を見直すことは大事です。
#テーブルの性質によっては、作成日、更新日、更新者等が大きな意味を持つのあります。それらには必須なのは勿論です。
私は、日本という国が好きです。もちろん、政治面や福祉など含め
いろいろ問題面もありますが、世界的にみれば良い方だと思います。
日本という国が、ここまで発展することが出来たのは、世界的にまれな
変化に富んだ四季があったからと私は考えてます。
他国から見た日本のイメージ
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1013914775
http://www.chugoku-np.co.jp/yoron/t000116d.html
・治安がいい
・おしゃれ(ファッション・メイクなど)
・豊か
・歴史問題に悩まされて、出口がまだ見つからない
・景色が綺麗
・アニメと漫画がすごい!(サブカルチャー強い)
・科学技術の進んだ国
・勤勉・規律・集団主義
日本には変化に富んだ四季があります。日本列島のように小さいながらも、複雑で
多様な地形、多様な気候の国は少ないです。
そして、日本は四季がそれぞれに美しく、快適であることと同時に、多様な地域で
展開される風景、それに応じた食材などの相乗効果でより魅力が高まっています。
春の息吹、夏の青さ、秋の紅葉、冬の雪の白さとか、色も音も匂いも肌での感じ方も
はっきり感じ取れます。
日本の生活文化・芸術は、八百万(やおよろず)の神が宿る自然に感謝し、その美しさ
を讃えることから始まり、日本人のもつ宗教意識として、神や霊が身近であらゆる場所
あらゆるモノに宿ると漠然と感じているのではないでしょうか。
(西洋人にとっては、神というものは非常に遠い存在と感じられるとか)
モノにも命や霊があり、これを粗末にしてはならないという考えが浸透しているから、
「そこまでやるか」というこだわりと、日本的な感性の繊細さで商品を昇華させること
ができ、それが日本のものづくりを生かす強みとなり、科学技術の進んだ国と言われる
までになったのではないでしょうか。
欧米ではロボットを悪の一種と見る傾向が強かった為に、ロボット研究が進まなかった
と聞いたことがあります、日本では鉄腕アトム、ドラえもんなど、ロボットに関する
創作物が多く出回ったことで、ロボットが身近な友達という感覚となり、ロボット研究
が盛んな理由になったと思われますが、根本にはモノにも命や霊が宿る精神があれば
こそですよね。
日本技術の正体
http://www.jasa.or.jp/top/activity/bulletin/bulletin025-04.html
なぜロボット博士が仏教を?
http://d.hatena.ne.jp/SeaMount/20070903/1188749272
とてつもない日本 麻生太郎
http://www.amazon.co.jp/dp/410610217X
7月末が有効期限のMCP受験チケットが、7割引きで販売されています。
http://www.seshop.com/
トップページの右側に、案内が出ています。在庫限りらしいです。
これはチャンス!と思って、さっき購入→受験申込まで一気にやっちゃいました。
SQLServer2008の試験を受けます。試験日は7/25です。
さあ!残り3週間で一から勉強すっぞー!
かなりきついノルマですが、がんばります~
元ネタ: vb.net2005でtar圧縮 (C# と VB.NET の質問掲示板)
WinXp、VB.NET2005環境にて
tarを使用してフォルダを圧縮したいと考えています。
tarってファイルをまとめるだけで圧縮しないんだけど、いいのかなーとか思ったり思わなかったりラジバンダリ。質問者さんに参考にならないかも?なんて思いますが、一応書いてみます。
tarファイルのフォーマットは実はすごく簡単なので、自分で作っちゃうことも可能です。というか、わんくま同盟 東京勉強会 #23 C# Dayとわんくま同盟 大阪勉強会 #22で話した内容はまさにそんな感じの話です。大阪勉強会であまりの準備不足加減に「続きはWebで!」とか言ってしまったまま放置状態だったので、ウホッ!いい機会だから書いてみようかって感じで。
まず、tarファイルのフォーマットについて調べました。Google先生にお伺いを立てたところ、いくつか見つかりました。
- tar32.dllの作者の吉岡さんが書かれたフォーマット説明。
- HP(
ホームページヒューレット・パッカード)のサイトにあった、tarのヘッダ構造体の解説。
HPのサイトの方が正確なのだと思いますが、ヘッダ以外にも知りたいこともあるので、吉岡さんの書かれたドキュメントを参考にしてみましょう。
ファイルを作るときは、tarヘッダ512バイト+データ(512バイト単位)の繰り返しになります。512バイトに満たないファイルは512バイトになるように、残りが00で埋められます。
例えば700バイトのファイルを連結する場合
のような形式になります。この場合、tarファイルの長さは512+512+188+324=1536バイトとなります。
ファイルデータ1と2は便宜上こう表記していますが、実際は一つのデータです。2ファイル以上のファイルを連結する場合はこの後ろにtarヘッダとファイルデータが続きます。
今回はここまで。次回はtarヘッダの解説をしようと思います。
先日、うちの会社に持ち込まれたコードを眺めていたら、大量に enum と switch が使われていました。
僕は、何でもオブジェクトにするので
enum と switch 文
を書くことが殆どありません。
しかし、人の書いたコードを見ると、思った以上に enum やswitch 文の使用が目立ちます。
例えば、次の2つの記述パターンがあった時、僕は迷わず後者を選択します。
皆さんは、どちらの方法を使いますか?
~enum と switch による処理~
enum Signal { Red, Blue, Yellow };
class Hoge {
public void Fuga() {
var signal = Signal.Red;
DisplayTitle(signal);
Action(signal);
}
public void DisplayTitle(Signal signal){
switch(signal) {
case Siglal.Red: Console.WriteLine("赤"); break;
case Signal.Blue: Console.WriteLine("青"); break;
case Signal.Yellow: Console.WriteLine("黄"); break;
}
}
public void Action(Signal signal){
switch(signal) {
case Siglal.Red: Console.WriteLine("急いで進む"); break;
case Signal.Blue: Console.WriteLine("堂々と進む"); break;
case Signal.Yellow: Console.WriteLine("注意して進む"); break;
}
}
}
~object 化~
class Hoge {
void Fuga() {
var signal = Signal.Blue;
signal.DisplayTitle();
signal.Action();
}
}
class Signal {
public string Name { get; protected set; }
public string Title { get; protected set; }
public virtual void Action() {}
public void DisplayTitle() { Console.WriteLine(this.Title); }
public static Signal Red { get { return new SignalRed(); }}
public static Signal Yellow { get { return new SignalYellow(); }}
public static Signal Blue { get { return new SignalBlue(); }}
}
class SignalRed : Signal {
public SignalRed() {
this.Name = "Red";
this.Title = "赤";
}
public override void Action() {
Console.WriteLine("急いで進む");
}
}
class SignalYellow : Signal {
public SignalYellow() {
this.Name = "Yellow";
this.Title = "黄";
}
public override void Action() {
Console.WriteLine("注意して進む");
}
}
class SignalBlue : Signal {
public SignalBlue() {
this.Name = "Blue";
this.Title = "青";
}
public override void Action() {
Console.WriteLine("堂々と進む");
}
}
最近のダブルキャットといえば、しゅうたんとみずきちゃん。
さて、そんなこんなで、ひさしぶりにASP.NETで作られたサイトをゴリゴリとストレステスト中
サーバースペック:Hyper-V上のWindows2003 server R2(64Bit)
に対して、WEBアクセス負荷テストをしてみたくて、WCATを使ってみることにした。
WCAT、とは?
Microsoftの開発チームが使っているテストツールらしい
[HOW TO] 無償の簡易 Web 負荷ツール WCATの使い方
http://social.technet.microsoft.com/Forums/ja-JP/iis7ja/thread/c49f277a-f9e3-4e96-8634-72259edf2730
でもって、さっそくダウンロードして、msiからセットアップ。
しても、メニューにも登録されないし、デスクトップにもでません
だって、これ、スクリプトベースで動く、CUIアプリだもん。
まぁCUIでもなんとかなるさ、インストール先は普通なら、「Program Files\WCAT」なので、これを覗く。
という風に、exeファイルが3つにスクリプトファイルひとつ、あとはサンプルに、xslファイル。
まぁxslはSandcastleで見慣れたファイルなのでここはおいといて、と。
とりあえず、DOCファイルを読む、でわかったこと。
wcclient.exe:クライアント側からストレステストする時のプログラム
wcctl.exe:サーバー側からストレステストする時のプログラム
wcutil.exe:ストレステストで作成したログを整形するっぽい?
くわしくはもちっと、がんばって読んでみることにする
過去の関連記事
[C#][MEF]Managed Extensibility Framework入門 その1
[C#][MEF]Managed Extensibility Framework入門 その2
[C#][MEF]Managed Extensibility Framework入門 その3
[C#][MEF]Managed Extensibility Framework入門 その4
[C#][MEF]Managed Extensibility Framework入門 その5
前回は、MethodのExportとImportについて試してみました。
これまでの5回で、基本的なImportとExportについては出来るようになりました。そして、適切にExport属性をつけるだけで勝手に適切なImport属性がついてるプロパティに設定されるのは素敵だということを感じたと思います。
今回は、同じ条件に合致する複数のExport属性があるときのImportの仕方について見ていこうと思います。
見ていくといっても大して書くことはなくて、これまで
[Import]
public TPropertyType PropertyName { get; set; }
のように普通のプロパティにしていた部分を
[Import]
public List<TPropertyType> PropertyName { get; set; }
のようにコレクションにするだけでExportが複数ある場合にコレクションにImportされるようになります。
ということで簡単に動きを見ていきます。
とりあえず、MEFEduというコンソールアプリケーションを作って、System.ComponentModel.Composition.dllを参照に追加して、いつもどおりのコンテナの初期化のコードを書きます。
using System.ComponentModel.Composition.Hosting;
namespace MEFEdu
{
class Program
{
static void Main(string[] args)
{
// コンテナの初期化
var catalog = new AssemblyCatalog(
typeof(Program).Assembly);
var container = new CompositionContainer(catalog);
}
}
}
まず、GreetAppクラスを作成します。Actionのコレクションのプロパティを定義して、Import(“Greet”)という属性を付けています。ついでに、Mainのほうも、コンテナからGreetAppのインスタンスを取得して実行するようにします。
using System.ComponentModel.Composition.Hosting;
using System;
using System.ComponentModel.Composition;
using System.Collections.Generic;
namespace MEFEdu
{
class Program
{
static void Main(string[] args)
{
// コンテナの初期化
var catalog = new AssemblyCatalog(
typeof(Program).Assembly);
var container = new CompositionContainer(catalog);
var app = container.GetExportedObject<GreetApp>();
app.Execute();
}
}
[Export]
public class GreetApp
{
[Import("Greet")]
public List<Action> GreetActions { get; set; }
public void Execute()
{
// 登録されている挨拶を実行!
foreach (var action in GreetActions)
{
action();
}
}
}
}
GreetAppクラスのGreetActionsに登録するメソッドを定義していきます。Greeterクラスを作成して、そこにメソッドを定義してExport(“Greet”)属性をつけています。
public class Greeter
{
[Export("Greet")]
public void HelloWorld()
{
Console.WriteLine("Hello world");
}
[Export("Greet")]
public void こんにちは世界()
{
Console.WriteLine("こんにちは世界");
}
}
これで実行すると、複数のアクションが登録されて、実行されるのがわかります。
実行結果
こういう風にして、アプリケーションを何か作る時に、追加処理したいポイントをDelegateのコレクションのプロパティにImport属性をつけたものにしておくと、簡単に拡張できるようになります!!
素敵だ。
おかげさまで、今年もMicrosoft MVPを再受賞することができました。
コンピテンシは変わらずDevelopment Tools-Visual C#です。
これも、ひとえに皆様のおかげと感謝することしきりですm(__)m
最近は、仕事のほうが忙しくてなかなかブログの更新がままならない状況ですが、
徐々にリハビリして復帰していきたいと思いますので、見捨てないでやって下さいm(__)m
本当にありがとうございました。
自作ゲームを販売できるXbox LIVEコミュニティー ゲーム
http://japanese.engadget.com/2008/07/27/xbox-live-qanda/
の、日本版のものが、Xbox LIVE インディーズ ゲーム
ということらしい
今年の夏に開始されるらしい
http://japan.gamespot.com/topics/story/0,3800076357,20395810,00.htm
で、実際どうすればいいかというと
Windows に向けたゲーム開発の場合
・PC
・Visual C# 2008 (Visual C# 2008 Express Editionにも対応:無償)
・XNA Games Studio 3.1 (無償)
Xbox LIVE インディーズ ゲーム に向けてXbox 360用のゲーム開発を行う場合
・有料の XNAクリエーターズクラブのプレミアムメンバーシップが別途必要
プレミアム メンバーシップには 4カ月間で 4800 円、もしくは1年間 で 9800円 (税込)
・Xbox 360エリート
・Xbox LIVEゴールドメンバーシップ(シルバーメンバーシップでも開発は可)
ということらしい・・・
ま、なんにせよ、C#に追い風キターって感じですwww
リチャード・ストールマン、「MonoやC#への依存を減らそう」と呼びかけ
http://www.itmedia.co.jp/enterprise/articles/0906/30/news046.html
まとめ
・C#のフリー実装は、ソフトウェア特許係争に発展する危険がある
・DebianがデフォルトインストールでMonoを搭載したことはコミュニティーを危険な方向性に導く
・Microsoftが将来的に、ソフトウェア特許を使うことでMonoなどあらゆるフリーのC#実装に対し脅威になる可能性があると指摘
-> ストールマン氏は、フリーのC#実装への依存を意識的に減らしていくことを提案
原文:http://www.fsf.org/news/dont-depend-on-mono
Debian開発者の回答
http://sourceforge.jp/magazine/09/07/02/0416227
-------------------------
ま、まぁ、そこまで警戒しなくても・・・って思いますけどもも・・・
な。なんにせよ、C#に注目がいったのはいいことなのかなww
大人の科学マガジン 4bitマイコン付買った の続き
裏の命令表見ながら1秒ごとに7Seg LEDで1->2->3...とカウントするプログラムを作ってみました
|
Adr |
命令 |
コード |
コメント |
| 0 |
8 1 |
TIA 1 |
Aレジスタに1を入れる |
| 2 |
1 |
AO |
Aレジスタの内容をLEDへ出力 |
| 3 |
3 |
CY |
AレジスタとYレジスタを入れ替え |
| 4 |
8 A |
TIA 10 |
Aレジスタに10を入れる |
| 6 |
EC |
CAL TIMR |
Aレジスタにで指定した時間ウェイト(0.1×10=1秒) |
| 8 |
3 |
CY |
AレジスタとYレジスタを入れ替え |
| 9 |
9 1 |
AIA 1 |
Aレジスタの内容を+1(インクリメント) |
| B |
3 |
CY |
AレジスタとYレジスタを入れ替え |
| C |
3 |
CY |
AレジスタとYレジスタを入れ替え |
| D |
F 02 |
JUMP 02 |
2番地へ戻る |
B,C番地でAとYのスワップを2度行っているのはAレジスタの値を保持しつつ実行フラグを立てるためです。
JUMP命令は実行フラグが立っていないと分岐できないためこのようなことをしました。
もっといいやり方があるんでしょうが命令表見ながらパコパコ打っただけなんで^^;
アセンブラというか機械語の教材として結構いいんじゃないかな?と思いました。
「C++テンプレートテクニック」おかげさまでぼちぼちと売れてくれました。
アフィリエイトでせしめたギフト券がそこそこ貯まり、
がんばった自分へのご褒美にゲームを一本。
「デススマイルズ」
アーケード・シューティングのXBOX移植っす。
なんとまぁ、Continue回数無制限っちゅーヌルさ炸裂で
小学生にも及ばぬドへたれシューターのεπιちゃんもエンディングが拝めます (^^;;;;;
ネタ元:VirutalPC上のPCにMSI形式のファイルをインストールすると怒られる?
この情報だけでは原因はわからんですねー。建前的にはw
で、バグですが、次へボタンにあるプロパティのチェック方法が間違ってると思われます。
記憶が正しければ、昔のISのデフォルトダイアログにこのバグがあったはずなんで…
#まぁバグと言っていいのか?というのはあるけどw
対策は、/qr(簡易モード)か、/qb(ベーシックモード)あるいは、/qn(サイレント)をつけるとなります。要するにそのチェックルーチンを通らないようにしてやればいいということですねw原始的ですが非常に有用な方法の一つw
#ちゃんと作ってるアプリはこれを許さないように作られていたりします
さて本題。
msi 形式のインストーラでも、意味不明なエラーが出ることはよくあることです。掲示板やMLなどでも時折見かけます。
これは、トラブルシュート全体に言えることですが、まず得られる情報を極力収集するところから始めます。
msi であれば、詳細ログを取得する作業です。
ログの取得方法は、コマンドラインで msiexec /i …\hoge.msi /l*v “%HOMEPATH%\hoge.log” とします(hogeは、対象のmsiのファイル名)。
#ログの出力先は、実際は書き込みできればどこでもOKです。ただし、権限昇格していない状態で書き込むことになる点には注意を忘れずに
で、これが英語環境なら、SDKにある、WiLogUtl.exe で参照すればいいよ!と言えるのですが、残念なことに英語版のログしか解析できないんですよねー(OSのはくログ情報の言語固有の変換テーブルがないため)。詳細ログは、英語のままにしておけよ!と思ったりもしますがw
で、仕方ないので、ログが取得できたら、「エラー」で検索します。たぶん見つかります。見つからなかったら英語の「Error」で検索します。
どっちかで見つかるので、見つかったらその付近にあるエラーコードらしきものを探します。ほとんどのエラーは Errors Reference に載っています。載っていない場合は、winerror.h に定義されている場合もあります。
あとは、ずるずると原因を探っていけば他人の作ったソフトでもたいていの場合エラーできない原因は突き止められます。
これで原因が特定できない場合は、MSI-ML に質問してください。自分の開発中のものに限らず質問はいつでも受け付けてますよーw
ま、それを回避できるかどうかは、また別の問題だったりするわけですがw
ちょっと心配していたのですが、再受賞できたみたいです。わーい、うれしいな。
2005 年に初受賞しているみたいなので、今年で 5 年目になるらしいです。月日が流れるのは早いものですね。
今年は外側でのコミュニティ活動は控え、別のことに力を入れようと考えております。ダメだったら来年は潔く消えますのでよろしくです。
過去の関連記事
[C#][MEF]Managed Extensibility Framework入門 その1
[C#][MEF]Managed Extensibility Framework入門 その2
[C#][MEF]Managed Extensibility Framework入門 その3
[C#][MEF]Managed Extensibility Framework入門 その4
前回は、プロパティをExportして、それをImportすることをやりました。MEFでは、そのほかに、メソッドをExportすることが出来ます。
このメソッドのExportは、個人的にほかのDIコンテナでは見たことないと感じてる機能なので割りとお気に入りです。
メソッドにExportをつけると、DelegateとしてImportすることが出来ます。
例えば…
public void Foo(string value)
{
}
のようなメソッドにExport属性をつけると
public Action<string> Hoge { get; set; }
こんなプロパティにImportすることが出来ます。
特に難しいことはないと思うので、さくっとサンプルを書いてみようと思います。
MEFExportMethodという名前で、コンソールアプリケーションを作成してSystem.ComponentModel.Composition.dllを参照に追加します。
まずは、Importをするほうのプログラムを書いてみようと思います。
[Export]
public class FooProcess
{
[Import("FooProcessPreProcess", AllowDefault=true)]
public Action<string> PreProcess { get; set; }
public void Execute()
{
if (PreProcess != null)
{
// 前処理をしてから主処理を実行する
PreProcess("FooProcess");
}
Console.WriteLine("主処理実行!!");
}
}
PreProcessプロパティにImport属性がついています。FooProcessPreProcessという名前のものをImportするという定義にしました。AllowDefault=trueをつけることで、デフォルト値を許すようにしました。AllowDefaultをつけてないと、無理やりImportしようとして、次に書く予定のMainで例外が発生してしまいます。
次に、Exportのプログラムではなくて、Mainの流れを先に書いて動きを見てみます。
コンテナを作成して、FooProcessのインスタンスを取得してExecuteを呼び出しています。
class Program
{
static void Main(string[] args)
{
// 自身のアセンブリ内のクラスを自動で登録するコンテナを作成
var catalog = new AssemblyCatalog(typeof(Program).Assembly);
var container = new CompositionContainer(catalog);
// FooProcessを取得して処理実行
var process = container.GetExportedObject<FooProcess>();
process.Execute();
}
}
これを実行すると
と表示されます。とりあえず何も不思議なことはないはず!
次にメソッドをExportするクラスを書いてみようと思います。
public class CustomPreProcess
{
[Export("FooProcessPreProcess")]
public void PrintMessage(string message)
{
Console.WriteLine(message);
}
}
Action<string>型に入れれるように戻り値がvoidで、引数がstring1つのメソッドを定義しています。これにExport属性をつけて、Import側で指定したFooProcessPreProcessという文字列を指定します。
このクラスを追加して実行すると・・・
FooProcessが表示されているのがわかると思います。
こうすることで、任意の処理を差し込むポイントを簡単に作りこむことが出来ます。
個人的にこれはお気に入り!
新サイト 『TDD.NET』 をオープンしました
http://bluewatersoft.cocolog-nifty.com/blog/2009/07/tddnet-7562.html
TDD (Test-Driven Development)に関して大変わかりやすく丁寧に書かれています。素敵です。お奨めです。
アジャイル開発しているとあっち直せば知らぬ間にこっちが動かなくなっている経験は誰でもあると思います。コンパイラは文法上のチェックはしてくれますが、仕様レベルのチェックはしてくれません。そこで、テストという形で仕様を満たしているかどうかをチェックするのです。誤解を恐れずに言えば、仕様をチェックするもう一つのコンパイルと言えるのかもしれません。そして、テストというもう一つのコンパイラを作っていると言えるのかもしれません。
biacさんの記事で印象的だったのは、
「 動いているコードを触るな」 という禁句を古いものとし、 リファクタリングを正当化する。 」
「テストコードには詳細な仕様が表現されている。 それは、 ( 嫌な ) 文書作成作業を減らし、 ( 大好きな ) コーディング作業を増やせることになる。」
「TDD は、 アジャイル開発手法から生まれてきた方法なので、 」
でした。特に最後の「TDD は、 アジャイル開発手法から生まれてきた方法なので、 」という文章は、私がいつも言っている「それは何のために存在しているのかを考えてみることが大切である。」の答えになっています。
感謝いたします。
ことの始まり
先日、blogの「連絡をする」から1通の英文メールが届きました。それは「NDepend」のLead DeveloperであるPatrick Smacchiaさんからで、「NDependのProライセンス使わない?」といった内容でした。
このメールで思い出したのが、ナオキさんのこのエントリ。
ナオキにASP.NET(仮) : NDepend(静的コード解析ツール)の Professional ライセンスが条件付きで無料提供中
NDependには興味もあったので、せっかくなので私もProライセンスを頂くことにしました。
#NDependってなんぞや?については、上のナオキさんのエントリや以下のInfoQの記事などをどうぞ。
#InfoQ: NDependおよびコードメトリクスの理解向上
んで、返事を書こうにもTOEIC350点を叩き出したことがある程度の英語力。どうしよっかなーということで、twitter経由でナオキさん(@naoki0311)に「どんな返事書きました?」って聞いたら、テンプレートみたいなのを頂けることに。お陰である程度ちゃんとした返事が書けました。ナオキさん、ありがとうございました。
返事を書いてしばらくしたら、NDependのインストール方法とライセンスキーがメールで届いたので、さっそくインストールしてみました。
NDependの起動
NDependを起動すると、まず以下のような画面が表示されます。
ナオキさんも書いてましたが、Ribbonインターフェイスにすることも可能です。
[Tool]メニュー-[Option]を開きます。
[Menu\Bar\Ribbon Preference]を選択します。
ラジオボタンで[Ribbon]を選択します。そうすると、次のようなダイアログが表示されます。
「この変更は次に起動したときに反映されます」ということなので、Optionsダイアログを[OK]をクリックして閉じた後、NDependを再起動します。
なんかかっちょいい感じになりました。
NDependを使ってアセンブリを解析する
では、さっそくNDependを使ってみましょう。
まずは[Start Page]の[Recent Project]から[Analyze: a set of .NET assemblies]をクリックします。
解析したいアセンブリを[Brows]ボタンをクリックして選択します。
適当なのが見つからなかったので、とりあえずF#のFSharp.Core.dllを食わせてみました。
[OK]をクリックします。
解析が始まり、終了すると既定のWebブラウザに解析結果のページが表示されます。
NDepend本体にも解析結果が表示されます。
色々な解析結果がグラフィカルに表示されているのが分かります。
今回はここまで。次回以降、実際どのような解析結果があり、どう使えるのか、私自身学びながら紹介できればと思います。
MCPD-EAD 2008 のφ(..)メモメモ
70-568: http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-568&locale=en-us
70-569: http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-569&locale=en-us
70-568
UPGRADE: Transition your MCPD Enterprise Application Developer Skills to MCPD Enterprise Application Developer 3.5, Part 1
ざっくりと、
.NET Framework 3.5での、ASP.NET(AJAX含む) と WinForm と ADO.NET
が問われる
70-569
UPGRADE: Transition your MCPD Enterprise Application Developer Skills to MCPD Enterprise Application Developer 3.5, Part 2
ざっくりと、
サービスと、アプリケーションの設計
が問われる
Microsoft環境以外で、Silverlight開発環境が出たみたいです。
frimo for Silverlight
http://www.ah-soft.com/frimo-sl/
「frimo 3」ってのが、Flashの開発環境なのだそうですが、ここに同梱されているらしい。
インターフェースはFlashの開発と同じらしいです。
Flash (*.SWF, *.FLV)を読み込んで、Silverlightに利用できるんですね・・・
しかも、C#やJavaScriptによるスクリプト作成もできると
ほ、ほほう・・・
さ、さすがに、DeepZoomはできないんだろうな・・・
2個目のサンプルがリンク切れなんだが・・・
元ネタ:http://blogs.msdn.com/masamis/archive/2009/07/01/blend-visual-studio-silverlight-frimo-for-silverlight.aspx
[C#][MEF]Managed Extensibility Framework入門 その1
[C#][MEF]Managed Extensibility Framework入門 その2
[C#][MEF]Managed Extensibility Framework入門 その3
今回は、ExportAttributeをプロパティにつけたときの動作を見てみようと思います。
今までのExportは、一般的なDIコンテナにありがちな感じで、クラスにつけて他のクラスから使えるようにしていました。
このExport属性は、実はクラスだけではなく、プロパティにつけることもできます。こうすることで、プロパティの戻り値をImportのついているプロパティに設定することが出来ます。
using System;
using System.ComponentModel.Composition;
namespace MEFExportEdu
{
// メッセージを提供する人
public class MessageProvider
{
// Messageという名前でExport
[Export("Message")]
public string GreetMessage
{
get
{
return "Hello world";
}
}
}
[Export]
public class Greeter
{
// MessageをImport
[Import("Message")]
public string Message { get; set; }
public void Greet()
{
// 結果としてHello worldが表示されます
Console.WriteLine(Message);
}
}
}
そして、確認用のMainを作ります。
using System.ComponentModel.Composition.Hosting;
namespace MEFExportEdu
{
class Program
{
static void Main(string[] args)
{
var catalog = new AssemblyCatalog(typeof(Program).Assembly);
var container = new CompositionContainer(catalog);
// 実行!
var g = container.GetExportedObject<Greeter>();
g.Greet();
}
}
}
実行するとHello worldが表示されます。
この例では、とても無駄なような気がしますが、構成ファイルから読み込んだ文字列を、属性を指定するだけでさくっと取得できるようなことも出来そう。
関連ネタ:「マイクロソフト MVP アワードを受賞させていただきました」
関連ネタ:「やっぱ」
おかげさまで今年もMVPを受賞させていただくことができました。コンピテンシーは引き続きC#です。
が、しかし、自分ではまったく満足がいく活動ができない、実に不甲斐ない1年でした。
オフラインの活動が多く、オンラインではほとんど活動ができませんでした。
不況+新型インフルエンザで怒涛のように仕事が振ってきて、最近みゃったく暇無しですが...
# 派遣切り、外注切りであらゆる仕事が振ってくるっていう図式です。
あと、初受賞させていただいたときに目標も半分しか達成できませんでした。
とりあえず、今年こそはStreetw☆さんにお会いしたいと思います。
そしてそして、今年こそはオンラインの活動をもそっと増やし、胸を張って再受賞をお伝えできるようがんばりたいと思います。
とりあえず、8/22の大阪勉強会 #31でわんくま史上初(?)の1時間半のロングセッションを行いますので、都合のつく方はお誘いあわせの上お越しくださいませませ。
こんな私ですが、今後もぢゃまいかをともどもよろしくお願いいたします。
<(_ _)>
自動車税はエンジンの排気量と車両のサイズで決まります。
最近は電気自動車やハイブリッドカーの登場で、動力源が多様化しています。
気になったまま放置していたのですが、電気自動車の税金ってどうなの。
車のセールスマンに聞いてみました。
乗用車仕様の場合、「総排気量1000cc以下の区分の税率によることが適当である」とされているようで、軽四並の税金だそうです。
走行性能も軽四並のようなので妥当かも知れません。と一応納得。
しかし、電気モーター出力をガソリンエンジン換算することは、比較自体無意味な気もします。
普及期になると、電気自動車税表ができると思いますが、その時は、馬力でしょうかね。
大出力にすると、蓄電池のサイズも大きくなり重たくなるので、一定サイズ以上すると、性能劣化が目立ちそう。
バッテリー問題を除くと、電気駆動って安いらしいですね。
聞いたところでは、電車1両の燃費は 30円/1Km らしい。
http://www.mydoco.com/html/goodstory/goodstory_17.htm
スケールメリットが大きいのでしょうが、想像以上に安いです。
ジャンボだと 65m/1リットルだとか。
http://oshiete1.goo.ne.jp/qa3080161.html
うん、比較条件が違うので、なんなのですが、車の効率が悪いのが見える気がします。飛行機も非エコのようだし。
エコ度で比較することがオカシイのか....(続きは....ないかも)
クラウドと言えば、Amazon、Microsoft、Google。
Amazon の EC2 や S3、Google の App Engine におけるクラウド概念は単純明快で、誰でも理解できる。一方、Microfot の Windows Azure は難しくてよく理解できない。まだ実用化されていないので、しょうがないかもしれないが。
Amazon はレンタルサーバーの延長のように使えるので、既存資産が間違いなく使えるという点で大きなアドバンテージがある。サービスの種類が多すぎて少々混乱するが、EC2 を中心に据え、低価格で大きな RAS を得られるのはすばらしい。現時点では、アメリカとヨーロッパにしか AMI をおけないので、日本からの接続が遅いというのが難点ではある(※1)。Cloud Front を組み合わせれば、リソースの種類よっては速度問題を解消できるようだが、「そのように設計しなければならない」という点で Google との差を感じてしまう。
個人的に Amazon クラウドの戦略で一番期待しているのは、Amazon Flexible Payment Service(FPS)である。 残念ながら、日本の対応がまだだが、PayPal よりも Amazon の方が知名度が高い(※2)日本では、FPS がサービスインしたときの破壊力はとんでもないものになるだろう。EC サイトの常識を塗り替えるかもしれない。
日本での展開が後回しになっているのが残念だが、Amazon クラウドはなかなかに期待できる。
一方、Google が提供するものは「Google 専用プラットフォーム」と呼べるものである。Google App Engine に「対応プログラミング言語」という概念があるのが良い証拠で、プラットフォームで許されている事しかできない。ファイルへの書き込みやソケットを開く事すらできないのだ。しかし、「制限」が生む「単純さ」の利点は計り知れないものがある。Google App Engine では「そのように設計しなくてよい」のだ。可用性や冗長性は自動的に付加される。Amazon EC2 のように、CPU の速度やメモリの大きさの選択肢なんてない。サービスを動かすのは、単に Google のインフラなのだ。データストアは BigTable(※3)だけだ。ある種の「設計への制限」を設ける事により明快さを生みだすのは UNIX 黎明期を彷彿とさせる。
当然、Google App Engine で一番の問題は、既存資産が使いにくいという事だ。Google App Engine が提供しているフレームワークである webapp は Django を元に設計されているが、Django で作成されたシステムを動かすのも割と難儀する(※4)。
既存概念の延長上にある Amazon。全く別物と言える概念を打ち出した Google。どちらも一長一短だが、何故か Google にはワクワクさせられている。
※1 ssh での接続は正直イラッとする。
※2 実は PayPal めっちゃ有名だったりして。
※3 サブセットらしいので、Big able らしきものと言った方が正確。
※4 もしかしたら Django に詳しい人なら朝飯前なのかもしれないが…。
MVPじゃなくなったんだってばよ。
名刺からMVPロゴを取り除いたりする簡単なお仕事やってます。あとレッツノートに貼り付けたMVPシールを剥がすだけの簡単なお仕事など。
精進が足りなかったので落選したのも当然なので、もっとがんばって返り咲けるようにしたいと思います。
WPF の ListBox のデータバインディングの設定
で、ちょっと迷ったのでメモ。
[XAML]
ItemsSource="{Binding Path=Rows}"
DisplayMemberPath="Text"
SelectedItem="{Binding Path=Row}"/>
[ViewModel]
public class HogeViewModel : INotifyPropertyChanged
{
protected virtual void OnPropertyChanged(string propertyName) {
if (this.PropertyChanged == null) return;
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private Item _Row;
public Item Row {
get { return this._Row; }
set {
if (this._Row == value) return;
this._Row = value;
this.OnPropertyChanged("Row");
}
}
private Item[] _Rows;
public Item[] Rows {
get { return this._Rows; }
set {
if (this._Rows == value) return;
this._Rows = value;
this.OnPropertyChanged("Rows");
}
}
}
[DataModel]
public class Item {
private const int CODE_MAX_LENGTH = 8;
public int Code { get; set; }
public string Name { get; set; }
public string Text { get { return this.ToString(); } }
public override string ToString() {
return this.Code.ToString().PadLeft(CODE_MAX_LENGTH, ' ') + " : " + this.Title;
}
}
ItemsSource プロパティは、コレクションオブジェクトを
DisplayMemberPath プロパティは、コレクションオブジェクトの要素の内容を表現する文字列を
SelectedItem プロパティは、現在選択中の要素のオブジェクトを格納するためのオブジェクトを指定。
急いでまとめたので、コードの記述ミスがあったら指摘してください~
スピーカ陣も豪華です。
聞き逃す手はないと思えるラインナップです。
参加予定の方はお早めに参加登録をしていただけると助かります。
出来れば皆様方のBlogで参加を呼び掛けていただけるとありがたいです。
ご協力ください。よろしくお願いします。
http://www.ineta.jp/tabid/232/Default.aspx
http://www.itmedia.co.jp/enterprise/articles/0907/01/news033.html
確かに、パスワードを「入力している最中」は、マスクする必要はないと思うけど、ブラウザやアプリケーションにパスワードを覚えさせて、再表示するときにパスワードが丸出しだったら、「****」いらねぇって言ってる人も、目が飛び出るだろうな。
システム的には「入力中」と「入力中でない」を区別するのはメンドクサイし、なんか危険じゃない?