2011年2月16日
#
久しぶりの更新です。
System.Environment.GetFolderPathで取得できる特殊フォルダパスの、Windows XPとWindows 7での比較を表にしました。
誰かの役に立てれば。
|
|
Windows XP |
Windows 7 |
|
CommonApplicationData |
C:\Documents and Settings\All Users\Application Data |
C:\ProgramData |
|
CommonDesktopDirectory |
C:\Documents and Settings\All Users\デスクトップ |
C:\Users\Public\Desktop |
|
CommonDocuments |
C:\Documents and Settings\All Users\Documents |
C:\Users\Public\Documents |
|
CommonProgramFiles |
C:\Program Files\Common Files |
C:\Program Files\Common Files |
|
CommonPrograms |
C:\Documents and Settings\All Users\スタートメニュー\プログラム |
C:\ProgramData\Microsoft\Windows\Start Menu\Programs |
|
CommonStartMenu |
C:\Documents and Settings\All Users\スタートメニュー |
C:\ProgramData\Microsoft\Windows\Start Menu |
|
CommonStartup |
C:\Documents and Settings\All Users\スタートメニュー\プログラム\スタートアップ |
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup |
|
|
|
|
|
ApplicationData |
C:\Documents and Settings\(User)\Application Data |
C:\Users\xxx\AppData\Roaming |
|
Desktop |
C:\Documents and Settings\(User)\デスクトップ |
C:\Users\(User)\Desktop |
|
MyDocuments |
C:\Documents and Settings\(User)\My Documents |
C:\Users\(User)\Documents |
|
ProgramFiles |
C:\Program Files |
C:\Program Files |
|
Programs |
C:\Documents and Settings\(User)\スタートメニュー\プログラム |
C:\Users\(User)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs |
|
StartMenu |
C:\Documents and Settings\(User)\スタートメニュー |
C:\Users\(User)\AppData\Roaming\Microsoft\Windows\Start Menu |
|
Startup |
C:\Documents and Settings\(User)\スタートメニュー\プログラム\スタートアップ |
C:\Users\(User)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
|
System |
C:\Windows\System32 |
C:\Windows\System32 |
|
SystemX86 |
C:\Windows\System32 |
C:\Windows\System32 |
|
Windows |
C:\Windows |
C:\Windows |
2010年4月22日
#
#気がつけば半年振りぐらいの更新・・・
Visual Studio 2010も公開されたようで。
私はついてけてませんが。
導入するに当たり、やはり気になるのがサポート範囲。
MSDSに.NET Framewotk 4.0のシステム用件がありましたのでご紹介しておきます。
[MSDN].NET Framework 4.0システム用件
クライアントがXP Pro以上なら問題ないけど、2000混合だと無理っぽい。
・・・つか2000をまだ使ってることがむりっぽいのか・・・。
2009年10月10日
#
完全に乗り遅れてるけど気にしないでやってみる。
using System;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
int m = 1;
int n = 10;
Console.WriteLine("{0} to {1} the total is {2}", m, n, AddNumber(1, 10));
Console.ReadKey();
}
static int AddNumber(int x, int y) {
return (x < y ? x + AddNumber(x + 1, y) : y);
}
}
}
何か無駄が多いと思うけど今の自分の力じゃこんなもん。
2009年10月6日
#
Microsoftから無料のウィルス対策ソフトウエアが出た模様です。
Microsoft Security Essentials
無料・・・。聞こえはいいのですが、性能はどれほどなんでしょうか。
ま、影響がない範囲で試してみてください(^^;
2009年9月8日
#
http://blogs.wankuma.com/hcm/archive/2009/09/07/180964.aspx
直接お会いしたことはありませんでしたが、私のわんくまブログでのコメント第一号でした。
ご本人としてはただのあいさつ程度だったと思いますが、私にとってはとてもうれしいことだったことは言うまでもありません。
ご家族にとっては、大切な人がいなくなりつらいことかと思いますが、たくさんの人の記憶の中に残り続けていくでしょう。
誠に残念ではありますが、謹んでご冥福をお祈りいたします。
2009年9月3日
#
[@IT]ユーザー定義関数から正しくない答えが返される
SQLServerでは、テーブル型を返すユーザー定義関数をインラインユーザー定義関数と呼ぶそうです。
例えば、以下のようなテーブルを作り、データを格納します。
(環境:SQL Server 2005 Express Edition)
[テーブル]
member_table
member_code int
member_name nvarchar(50)
[データ]
member_code member_name
1 中博俊
2 じゃんぬねっと
3 nakaP
member_codeを指定して、該当する行を返すユーザー定義関数を作ります。
CREATE FUNCTION dbo.Test(@code INT)
RETURNS TABLE
AS RETURN (SELECT * FROM member_table WHERE member_code = @code)
GO
そしてユーザー定義関数を実行すると、以下のような結果が返ります。
SELECT * FROM Test(1)
[結果]
member_code member_name
1 中博俊
ここでテーブルに列を追加し、データを編集します。
[テーブル]member_table
member_code int
memver_class nvarchar(50)
member_name nvarchar(50)
[データ]
member_code member_class member_name
1 代表 中博俊
2 代表 じゃんぬねっと
3 下っ端 nakaP
そして再度ユーザー定義関数を実行すると、以下のような結果に変わります。
SELECT * FROM Test(1)
[結果]
member_code member_name
1 代表
列名と内容が一致していません。なぜでしょうか。
まず、sys.objectsのid列を利用して、sys.columnsの情報を取得します。
(SQL Server 2000 ではsysobjects、syscolumns)
それぞれの詳細は以下をご覧ください。
sys.objects
sys.columns
なお参考にsys.parametersもご覧になられるといいかもしれません。
(SQL Server 2000 ではsysparameters)
sys.parameters
SELECT * FROM sys.columns WHERE object_id = (SELECT object_id FROM sys.objects WHERE name = 'Test')
object_id name column_id ・・・
******* id 1
******* name 2
項目数は多いですが、member_code列とmember_name列が返されることが分かります。
ここでも列名と内容が一致していません。
次にsp_sproc_columnsの情報を見てみます。
sp_sproc_columns
EXEC sp_sproc_column @procedure_name = 'Test'
この結果のTYPE_NAME列を見ると、「table」となっています。
以上の結果より、インラインユーザー定義関数はテーブルを返しますが、戻り値の列数は2つしかないことが分かります。
つまり、テーブル定義の変更後は、3列の結果を2列のテーブルとして返しているのです。
そして、戻り値の列名は便宜上の列名であり、必ずしも元テーブルの列名と同期が取られているわけではないようです。
この問題を解決するには、
1.インラインユーザー定義関数で個別に列名を指定しておく
2.sp_refreshsqlmoduleを実行する
ことになります。
これがバグなのか仕様なのかは分かりませんが、知っていないとハマりそうですね。
「select * は便利だけど便利じゃないよ」
ってことですね。
2009年8月25日
#
[Microsoft].NET Framework 移行センター
といっても他言語から.NET Frameworkへの移行ではなく、Windows 7に対応するための
1.0/1.1から3.5などへの移行だそうです。
速いところはもう準備に取り掛かってるんでしょうか。
.NET FrameworkのWindows OS対応表なんかもあります。
ちなみに、VB6からの移行はVB マイグレーションセンターを参考にしてください。
[Microsoft]VB マイグレーションセンター
2009年8月20日
#
最近コードを書くどころか見ることも少なくなってます。
もうね、色々と忘れていってますw
で、リハビリ兼勉強として興味があるものをR.田中一郎さんが書いていたので考えてみました。
R.Tanaka.Ichiro's Blog:代入演算子の不思議
すでにコメント欄で回答が出ているようですので違う表現で。
x.A = x.B = x.C = 0;
MSDNによると代入演算子は右から左に実行されていくので
x.A = (x.B = (x.C = 0;))
となります。
ここが重要なのですが、x.Bにはx.C = 0のx.Cが代入されるわけではなく、0の方が代入されるのです。
つまり、上の式を分解して書くと以下のようになります。
x.C = 0
x.B = 0
x.A = 0
けして下のようになるわけではないですね。
x.C = 0
x.B = x.C
x.A = x.B
少しだけ賢くなれました。
2009年7月27日
#
MSDNに64ビットWindowsのプログラミングガイドが公開されているようです。
http://msdn.microsoft.com/ja-jp/library/bb427430(VS.85).aspx
64ビット版Windows OSの普及具合は分かりませんが、今後拡大していくことは間違いないでしょう。
移植に関する一般的なガイドラインはこちらに載ってます。
http://msdn.microsoft.com/ja-jp/library/aa384190(VS.85).aspx
気になる人は一読を。
2009年6月23日
#
[ITPro]マイクロソフト、Windows 7 の「XP ダウングレード」を認める方針
ユーザー側としては使い慣れたXPを出来るだけ長く使いたい。
Microsoft側としては早く新しいOSに変えてもらいたい。
で、とりあえずはMicrosoft側が折れた形になったということでしょうか。
・・・とこんなことを書きながら、我が社もまだ新OSに対応できてないのでとりあえずほっとしたり。
新しいものだから良いに違いない!ってことも無いんでしょうけど、古いものにいつまでもしがみつくのもホントは良くないってことも分かってるんですけどねー・・・。
#誤解を与えそうなのでタイトルを少し変更しました。