VS.NET 上で PHP のコードを書いたり、デバッグしたりできるらしいです。
http://www.jcxsoftware.com/
と言っても、私は PHP ってさわったこともないんですが。。。
John Stallo talks about Class Designer より
ほんとはクラスデザイナのプログラムマネージャである Josh Ledgard 氏への インタビュームービー です。けど、中ほどから実際にクラスデザイナでクラスを表示させ、関連を表示させ、派生クラスを表示させ、なんていうデモを行なっています。英語を聞かずにその様子を見ているだけでもおもしろいです(^^
(最後の System.IO の下をいっきにクラス図にしたりするのはちょっと感動)
たぶん、VSS 2005 のことではありません。
以下、ざっと訳してみると、、、
「SSWI は Microsoft Visual Source Safe の Web ベースのインターフェースだ。それは、世界中のどこからでも Internet Explorer を使って Visual Source Safe のすべての機能を使うことができる 。クライアントサイドに何かをインストールする必要はないし、簡単にあなたのブラウザであなたの SSWI サーバに接続できるし you're done」
(you're done. のとこは意味がわからない。「終わったら」 じゃおかしいし 「それで全部だ」 みたいな感じ?)
で、GotDotNet にリンクがあり、そこからさらに Component Workshop にリンクされています。
About Us によると Component Workshop は 「UK の小さな ISV (独立系ソフト開発会社) だ」 とのことです。
この SSWI ってなかなかよくできてそうな感じ。Product Overview には IE6 と Java runtime が必要と書いてあるので、Applet を使ってるのかな?ただ、VSS をブラウザベースで使いたいかと言うと、それはちょっと微妙。インターネット経由で使いたいと思うことはものすごくあるけど、別にブラウザベースで使いたいと思うことはないなぁ。たとえブラウザベースであったとしても VSS のライセンス自体は必要なんだろうし。
似たようなものとして SourceOffSite がずいぶん前からあるけど、こっちは 「VSS をインターネット経由で使えるようにする」 のが主目的で、ブラウザベースではなかったはず(クライアント自体は Windows アプリだったと思う)。ちなみに、「詳細」 のページ に 「VSS のライセンスが必要」 と書いてあるので、こちらも 「使うためには VSS と SourceOffSite の両方のライセンスが必要」 なんですね。
で、VSS 2005 では標準でインターネット経由で使える( XML Web Service として実装されている模様) ことになってるので、それで済んじゃう話なのかなぁと。
四角くないフォームの作り方をストリーミングで実演しています。ストリーミングの中にも出てきますが、元ねたは Non-Rectangular Form こちらだそうです。
Region と GraphicsPath を使えば四角くないフォームを作れる。これは、あちこちで紹介されてるしググればいっぱい出てくる。
上記で紹介しているのは、それだけじゃなくて、透過色を指定した画像と同じ形のフォームを作るには?という方法。画像と透過色を指定して GraphicsPath を作ることができれば簡単だけど、そういう方法がない。そこで、全ピクセルを調べて、幅・高さが 1ピクセルの Rectangle でくりぬいちゃう。
なるほどなぁ。
ちょっとわかり難いかもしれませんが、"This script" という部分が IE_Search_Prefixes.msi というファイルへのリンクになっています。これをダウンロードして実行 (インストール) すると、IE のアドレスバーで検索することができるようになります。
IE のアドレスバーは普通は 「http://example.com/ .... 」 なんてのを入力するわけですが、上記のツールをインストールしておくと、たとえば 「kb C# HOWTO」 と入れると http://support.microsoft.com/search/ で検索した結果を表示してくれるようになります。
いったいどうやってるんだろうと思ったんですが、"This script" と書かれていることや Tweak UI utility でもできるみたいなことが書かれていることから 「単にレジストリに書き込んでるだけなのかも」 と思ってみてみました。
どうやら HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl ここをいじってやるだけでいいみたい。いじり方は見てみればわかると思います。
Visual Studio 2005 製品ラインの概要 によると Standard Edition と Professional Edition の違いは、
とのこと。
ただ、上記の表はずいぶん前からあるので、価格体系の決定とともに Standard や Professional の内容が変わってる可能性もあると思います。けど、ほかに資料が見つからなかったので、ここではこの表を信じるとして、、、
3番目と 4番目は、まぁ、書いてあるとおりなんでしょう。
2番目の SQL Server 2005 との統合っていうのは VS2005 上から SQL Server 2005 をいろいろ操作できるっていうだけじゃなく、デバッグ時にストアドプロシージャとか SQLCLR とかの中まで入っていけるというような意味での統合なのかな?
まぁ、ここまではいいんですが、、、
さて、今さらなんですが 1番目の 「ユーザーエクスペリエンス」 ってのは何?っていうのがよくわかってなかったりします。
Visual Studio 2005 Community Integration FAQ これのこととかかなぁ。これによると 「ニュースグループに質問したり、Product Feedback に送信したり、質問の状態を確認したり、MSDN developer center や CodeWise コミュニティに接続したり、VS 2005 の中から直にコンテンツを検索したりだってできるようになる」 というような機能がある?あれ?けど、この機能は 「すべての Edition (C++ のコンテンツサーチを除く) に入る」 とあるな。
だとすると、Professional 以降にしか含まれない 「ユーザーエクスペリエンス」 ってなんだ?Community Integration in Whidbey Beta 2 こっちにあるような 「スターターキット (プロジェクトテンプレート、アイテムテンプレート、スニペットを含む)、コードスニペット、コントロール、Addins などといった VS コンポーネントを検索したり、インストールしたり、使ったりといった機能」 は Professional 以降のみということなんだろうか?
Class Designer availability より
以下、大雑把に訳してみる。
「クラスデザイナは Visual Studio の Standard Edition とそれ以上で提供される。クラスデザイナは Team Architect と Team Developer のみであるというような混乱があるように思う。だから我々はそうではないということを明確にしたいと思う。しかしながら、Express Edition には提供されない予定だ」
Visual Studio 2005 製品ラインの概要 こちらの表にもちゃんとクラスデザイナとオブジェクトテストベンチは Standard Edition 以上の全 Edition についています。
(Standard Edition なんて新規購入でも $299 だよね?その価格でこんなものまでついてくるなんて)
というのは、菊池さんの Object Test Bench を受けてだったりします。
.NET GC & Interop クイズ
.NET GC & Interop クイズ解答編 より
最初に見たときは 「えー、なんでー?」 と思ったんですが、、、
トラックバックをたどってみると 菊池さん、NyaRuRu さん が Yes、Ladybug さん が No。うーん。。。
で、菊池さんのところからリンクされてる Lifetime, GC.KeepAlive, handle recycling を読んで納得。JIT にとっては言語上のブロックとかそういったものはまったく関係ないわけで、this._handle にアクセスし終わった時点で 「もうこの this は不要」 と判断しても構わないわけで、そうなるとファイナライザが呼ばれることだってあるわけで、そうすると WorkOnHandle メソッドを呼び出す時点では this._handle が変わっちゃってることだってあると。そういうことですよね。
で、これは WorkOnHandle メソッドが static でなく、Wrapper クラスのインスタンスメソッドならこういうことは起こらない(メソッドを呼ぶこと自体に this が必要だから) と。たぶん Ladybug さんが言ってるのはそういうことですよね?
ということは、こういうことに注意しなくちゃいけない条件としては、
と言う場合は GC.KeepAlive() を使って this を守ってあげる必要があるということでいいのかな?
prog-blog の名無しさん#: VSTS問題を考える
菊池 Blog の菊地さん: Team System追っかけあきらめました…
私もいまいち VSTS を追っかけられてないんですが、、、
VSTS をプロセス管理ツールとして使うとすると、Team Foundation Server と ActiveDirectory と SQL Server 2005 が必要になるんですよね?当然それらのライセンスも必要になるんでしょうし、私は最初にそれを聞いた時点で 「トータルコストは結構かかるんだろうな」 と実務で使うのはほとんどあきらめてましたw。それに、たとえば IBM Rational とかにも同じような 「ソフトウエア開発のプロセス管理ツール」 があるらしいんですが 「ちょっとやそっとのプロジェクトじゃ導入できないくらいの値段」 と聞いたことがあります(聞いたことがあるだけなのでほんとかどうかはわかりません。ガセだったらごめんなさい)。なので、「VSTS もきっと高いんだろうなぁ」 と漠然と思ってましたし。
なので、VSTS の値段を見たときは 「まぁ、こんなもんなのかなぁ」 くらいの感想でした。(そりゃ、安いに越したことはないですけどね)
とはいえ、テストをサポートする機能 にあるようなテスト関係の機能は欲しいです(これらは Professional には含まれないんですよねぇ)。けど、Visual Studio 2005 Team System : 概要 にある Visual Studio Team System の構成図 からすると 「Team Developer にしとけばユニットテストもコードカバレッジも含まれるし、PREfast、FxCop、プロファイラにクラスモデリング、Visio も付いてるんだから十分じゃん」 と思ってました(Team Test に含まれる Load Testing (負荷テスト) とかはちょっと欲しいよう気もしますが)。
で、今回の価格では Team Edition for Software Developers は MSDN Universal から移行できるみたいですし、更新価格も $2,299 なので 「値段的には今までとあんまり変わんないのかな?」 と思ってました。Team Edition for Software Developers に付けれる MSDN Premium Subscription も開発ツール、クライアント OS、サーバ OS、アプリケーションってことなので今の MSDN Universal と同じみたいな感じですし。
これってなんか勘違いしてますか?
まさか、Team Edition for Software Developers を使うにはいやでも Team Foundation Server やら SQL Server 2005 がいるなんてことは無いですよね?
まさか、やっぱりテストするには Team Developer と Team Test の両方が必要ってことはないですよね?
会社とかには 「Team Developer にしとけば、今までとたいして変わらない値段で、ものすごく便利な機能がいっぱい付いてきますよ」 と言えばいいと思ってたんですが、今回の VSTS の価格体系にはいろいろと不満・批判がでてるみたいなので、どっか激しく勘違いをしてるんじゃないかと不安になってきちゃいました。
Manage Application Settings Using Enterprise Library Configuration
What's this? GotDotNet Workspace: Enterprise Library Configuration Console Module Generator より
なんか、コンフィグレーションをごにょごにょしてくれるみたいです。
って、だめだ、Enterprise Library って何がどうなってるのかさっぱりわかってないので、これ以上書きようがない orz
C# and Equals() in V2.0 versus V1.0. より
以下、要点だけ書いてみます。
3f.Equals(3) は true なのかどうか。
わかりにくいかもしれませんが、3f っていうのは float の 3.0 のことですから、3f.Equals() っていうのは System.Single 構造体の Equals メソッドを呼び出すってことになります。引数の 3 は当然 int、すなわち System.Int32 です。Equals メソッドの引数は object ですから System.Int32 が box 化されて渡されます。Equals メソッドは型が違えば false を返しますから、当然 3f.Equals(3) の結果は false です。
というのは .NET Framework 1.x での話。
2.0 では System.Single 構造体の Equeals メソッドは Equals(object) と Equals(float) の 2つが用意されています(Single.Equals Method 参照)。そして、C# 2.0 コンパイラは box 化が不要な Equals(float) を呼び出すようにコンパイルします。int 3 は float に暗黙に変換できますから特に問題はありません(暗黙の変換については C# 言語仕様 「6.1.2 暗黙の数値変換」 参照)。すると 3f.Equals(3) は 3f.Equals(3f) と同等とみなされることになり、結局 true を返します。
では、3.Equals(3f) はどうでしょう?
2.0 では System.Int32 にも Equals(object) と Equals(int) が用意されています(Int32.Equals Method 参照)。しかし、引数の 3f (float 型)を暗黙に int に変換することは許されていません。そのため box 化して Equals(object) を呼び出すコードが生成されます。ですから、結果は false となります。
。。。ってことが書いてあると思うんだけど。。。
これってほんとにいいんだろうか?たぶん、Single.Equals() に object 版と float 版を用意するのは 「box 化を不要にすることによって (場合によっては) パフォーマンスを向上できる」 ということなんだろうけど。。。
けど、いろいろと気持ち悪いなぁ。それに
Equals および等値演算子 (==) 実装のガイドライン
Equals メソッドの実装
これらのガイドラインを破りまくることにもなるし。。。
最後の一文 「Let us know if you find an interesting counter-example where this change could cause grief!」。これは 「この変更で何かまずいことが起こる例を見つけたら教えて」 てな感じでいいのかな?ということは、中の人も 「ベストじゃないかもしれないけど、メリットもあるからこうしたいなぁ」 って考えてるってことかな?
マイクロソフトからのプレスリリース: プログラミング言語C#がJISに制定
これにあわせてかどうかわかりませんが Be Sharp! C# なんてページができてました。
で、さっそく見てみました。
JIS 検索 の JIS規格番号検索 で "X3015" として検索すると 「JIS X 3015 プログラム言語 C#」 が出てきます(どうも直リンクはできないみたい)。ここで PDF を閲覧することができます。
最初に思ったのは、上記のページの規格名称が 「プログラム言語C#」 と全角のシーシャープになってるのはなんとかならんのかな、ということ(^^;
ちなみに、JIS X 3015 の 「6. 頭字語及び略語」 では、ちゃんと 「C# はシーシャープと発音する。C# は LATIN CAPITAL LETTER C (U+004) の次に NUMBER SIGN # (U+0023) を書く」 と書いてあります。全角の 「C#」 と書くと JIS 規格に反していることになっちゃうように思うんですが(^^;
で、内容ですが、普通に C# の言語仕様です(当たり前ですが)。ECMA 334 と目次の構成はまったく同じようなので、ECMA や ISO の仕様書をそのまま翻訳したもののようです。
で、こういったものの常として 「そこまで訳さんでも」 と思っちゃうところもあるわけです。気付いたところでは
てな感じ。(プロパティを特性ってのはちょっと違和感あるなぁ)
あとは、C# 言語仕様 JIS原案作成委員会 にも書いたように CLI のほうがいつ頃になるのか気になるところ。
Visual Studio 2005 価格発表。けど、発売時期は??? で紹介した記事には Team Edition の値段が見当たらなかったんですが、すでにページが存在しました。(今まで Team System と呼ばれてましたが、Team Edition となったようです)
http://msdn.microsoft.com/howtobuy/vs2005/compare/
全部が入った Team Suite は 1万ドルの大台突破(^^
Architects、Developers、Testers もそれなりのお値段だし、企業で導入する場合、どれを何本ってどうやって決めたらいいんだろ?
なお、上記のページに辿り着いたのは Team System Pricing & Licensing こちらでリンクされてたから。あと、VSTS Licensing こちらには Open License の価格もまとめられている。
MSN Messenger Buddy List Limit Doubled より
「昨晩、我々は MSN Messenger のサーバーサイドのアップグレードの最終仕上げをした。友達リストの最大数が 150 から 300 に増えた。Enjoy」
と言っても、私は 150 でも十分足りちゃってるのでほんとに増えてるのか確認できません(^^
Cool video on Offline Application Block より
上記 blog で Smart Client Offline Application Block の使い方をデモしたビデオを紹介しています。
ビデオ自体は Scott Swigart さんが自分で作ったものなのかな?しゃべりは英語ですが、映像はずっと Visual Studio.NET で実際にコードを書いたり実行したりです。なので、音声を聞いてなくてもだいたい意味はわかりました。
# というか、聞いてもなに言ってるのかわからないんですけどね(泣)
しかし、これを見るまで Smart Client Offline Application Block なんてものがあること自体を知らなかったです。Enterprise Library と Application Block も追っかけとく必要あるなぁ。
ITMedia: MS、「Visual Studio 2005」の価格発表 より
Express は無料じゃないのか。
Team System は別体系ということなのかな?
あと、気になるのが出荷時期。上記の記事だと 「今年下半期」、MS のプレスリリースには 「the second half of calendar year 2005」。ってことは 7月~12月のどこかってことか。なんか、ずいぶん幅があるなぁ。
Microsoft Visual Studio 2005 delayed until the end of the year
Visual Studio 2005 Ship Date Slips Again
これらの記事だと 「the end of 2005」 なんて表現が使われてたりするなぁ。年末?
How to get .NET Framework Design Guidelines Updates [Krzysztof Cwalina] より
.NET Framework の Design Guidelines on MSDN は頻繁にというわけではないが更新されている、とのことです。(どこが更新されたのか、どっかでわかるようにはなってないんだろうか?)
で、MSDN では更新しきれていないところを http://blogs.msdn.com/kcwalina/category/4197.aspx こちらにポストしているとのこと。
ご一緒にポテトはいかがですか?
すごいです。なんか感動しました。
ところで、"あ" とか "い" とかみたいにカナ一文字だと Amazon の上位は必ずアダルト系なような気がする。なんだろう?(笑)
はっ、そうか、これがご一緒にいかがかと言われているポテトなのか?
「1月に ObjectSpaces から C# に移ったよ」 とのこと。
「最初に DataSet、それから ObjectSpaces、そして今はエキサイティングな新しい仕事、ハイパワーな C# チームの中でデータアクセスと言語を intersection させるっていうね!」 (なんて解釈でいいのかな?)
データアクセスと言語の intersection ってなんですか?ひょっとして C# のコードの中に SQL や XQuery を書けるようになるですか?
# って、今見たら 名無しさん♯ と被りまくりだな(^^
# ObjectSpaces -> C#
# WinFX SDK Documentation
WinFX (Indigo & Avalon) documentation is live より
CTP March のWinFX のドキュメントが MSDN で公開されているそうです。
http://winfx.msdn.microsoft.com/
ん?ちょっと待てよ?CTP March って何?あぁ、そっか、今月 WinFX CTP が出る予定になってるとかっていう話があったな。
Exclusive Interview with Anders Hejlsberg: Getting Reacquainted with the Father of C# より。
TechEd 2004 San Diego のときに行われた Anders Hejlsberg 氏のインタビュー記事のようです。
Anders Hejlsberg 氏は C# の言語設計者です。Borland 社で TurboPascal、Delphi を作り、その後 Microsoft で J++、WFC の開発を行ったという方です。
ざっと読んでみましたが、おもしろいです(と言っても私の英語力じゃ全部が理解できたわけじゃないのが悲しいところですが)。
以下、気になった or おもしろかったところの覚え書き
1ページ目。「WFC のアイデアのいくつかは Windows.Forms に引き継がれてるよ」 ほぉ。X# についても語ってるな(X# ≒ Cω)。へぇ、X# のチームの人が 2人、C# のチームに加わっているのか。そして、やっぱり XML を始めとしたデータの処理をどう言語と一体化させていくのかが重要なテーマになっているみたい。Embedded SQL みたいに違う言語を搭載しちゃうのと 1つの言語に結合させちゃうという方法があるけど、Anders Hejlsberg 氏は後者のほうがいいと思ってる模様。(それは X# (Cω) が SQL とか XML、XQuery が C# の言語の一部となっていたのと同じってことだよなぁ)
2ページ目。「Microsoft の典型的な 1日を教えてください」 なんて質問も。「月水金曜日の典型的な 1日はたくさんのミーティング。C# デザインミーティングはこれらの曜日の PM1~3 にいつも同じ部屋で 5年間ずっと行われてる」 へぇ~
Java 1.5 の Generics についても語ってるな。Java Generics は VM を変更せずコンパイラで何とかするというものだから型情報がなくなってリフレクションで困るとかいろいろあるわけか。ん?Java 1.5 では attribute みたいなものも追加される?この辺はよく知らないなぁ。
3ページ目。TurboPascal や Delphi やらそれ以前の経歴やら。「ALGOL が好きだったから、ALGOL コンパイラが書きたかった」 へぇ~
「好きなプログラミング言語と嫌いな言語は?」 に対して 「そりゃ難しい質問だな」 か。まぁ、Anders Hejlsberg 氏が 「○○言語は嫌い」 とかって言ったらかなり波風が立ちそうだしなw
4ページ目。Miguel と話したとか Mono をちょっと見てみた。へぇ
「Google サジェストとアラート」 で書いた Google サジェスト(日本語版) ですが、使ってみて 「おや?」 と思うことがありました。IME で漢字を入力しようとすると、確定していなくてもサジェストが表示されるんです。どうやっているのか気になってました。
で、試したコード。
<html>
<body/>
<form name="f">
<input name="a"
onkeydown="document.getElementById('dc').innerText=event.keyCode;
document.getElementById('dv').innerText=document.f.a.value"
onkeyup="document.getElementById('uc').innerText=event.keyCode;
document.getElementById('uv').innerText=document.f.a.value"
/><br/>
keydown: <span id="dc"></span>:<span id="dv"></span><br/>
keyup: <span id="uc"></span>:<span id="uv"></span>
</form>
</body>
<html>
IME がオンのあいだもキーアップするたびに keyup は呼ばれるようです。keydown は呼ばれてるような呼ばれてないようなよくわからない感じです。
また、<input> 要素の value は IME で入力中の読みも含めて返されるようです。
と言うわけで、別に特別なことはしなくても、keyup のタイミングで value を参照すれば確定前の文字列も含めた文字列が取り出せます。
上記は Windows 2000 Professional、IE6 SP1、IME は Win2000 標準のやつ、という環境で試した結果です。OS、IE、IME が違えば動作は違ってくると思いますし、ブラウザが IE 以外の場合はぜんぜん違う結果になる可能性が大だと思います。
で、FireFox 1.0 で同じような感じで試してみたら、IME がオンのあいだは keydown も keyup も呼ばれないみたいです。それじゃあということで、
<html>
<script>
function test()
{
document.f.b.value = document.f.a.value;
setTimeout(test, 100);
}
setTimeout(test, 100);
</script>
<body/>
<form name="f">
<input name="a"/><br/>
<input name="b"/>
</form>
</body>
<html>
こんな風にして、100ミリ秒おきに <input> 要素の value がどうなっているのか表示されてみました。すると、ちゃんと IME で入力中の読みも含めて取りだせました。