田舎エンジニアのBlog

~自宅も会社も田んぼに囲まれてますが何か?~

目次

Blog 利用状況

ニュース

自己紹介

リンク

スポンサー

書庫

日記カテゴリ

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

posted @ 14:52 | Feedback (4)

2010年4月22日 #

.NET Framework 4.0がサポートするOS

#気がつけば半年振りぐらいの更新・・・

 

Visual Studio 2010も公開されたようで。

私はついてけてませんが。

 

導入するに当たり、やはり気になるのがサポート範囲。

MSDSに.NET Framewotk 4.0のシステム用件がありましたのでご紹介しておきます。

[MSDN].NET Framework 4.0システム用件

 

クライアントがXP Pro以上なら問題ないけど、2000混合だと無理っぽい。

・・・つか2000をまだ使ってることがむりっぽいのか・・・。

posted @ 10:40 | Feedback (0)

2009年10月10日 #

mからnの整数の総和を求める

完全に乗り遅れてるけど気にしないでやってみる。

 

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);
        }
    }
}

 

何か無駄が多いと思うけど今の自分の力じゃこんなもん。

 

posted @ 1:25 | Feedback (0)

2009年10月6日 #

Microsoft Security Essentials

Microsoftから無料のウィルス対策ソフトウエアが出た模様です。

 

Microsoft Security Essentials

 

無料・・・。聞こえはいいのですが、性能はどれほどなんでしょうか。

ま、影響がない範囲で試してみてください(^^;

posted @ 0:07 | Feedback (0)

2009年9月8日 #

謹んでご冥福をお祈りいたします

http://blogs.wankuma.com/hcm/archive/2009/09/07/180964.aspx

 

直接お会いしたことはありませんでしたが、私のわんくまブログでのコメント第一号でした。

ご本人としてはただのあいさつ程度だったと思いますが、私にとってはとてもうれしいことだったことは言うまでもありません。

 

ご家族にとっては、大切な人がいなくなりつらいことかと思いますが、たくさんの人の記憶の中に残り続けていくでしょう。

 

誠に残念ではありますが、謹んでご冥福をお祈りいたします。

posted @ 0:26 | Feedback (0)

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 * は便利だけど便利じゃないよ」

ってことですね。

posted @ 15:34 | Feedback (2)

2009年8月25日 #

.NET Framework 移行センター

[Microsoft].NET Framework 移行センター

 

といっても他言語から.NET Frameworkへの移行ではなく、Windows 7に対応するための

1.0/1.1から3.5などへの移行だそうです。

 

速いところはもう準備に取り掛かってるんでしょうか。

.NET FrameworkのWindows OS対応表なんかもあります。

 

ちなみに、VB6からの移行はVB マイグレーションセンターを参考にしてください。

[Microsoft]VB マイグレーションセンター

posted @ 12:35 | Feedback (0)

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

少しだけ賢くなれました。

posted @ 12:57 | Feedback (2)

2009年7月27日 #

64ビットWindowsプログラミングガイド

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

 

気になる人は一読を。

posted @ 10:36 | Feedback (0)

2009年6月23日 #

OEM版Windows 7 で条件付き XP ダウングレード

[ITPro]マイクロソフト、Windows 7 の「XP ダウングレード」を認める方針

 

ユーザー側としては使い慣れたXPを出来るだけ長く使いたい。

Microsoft側としては早く新しいOSに変えてもらいたい。

で、とりあえずはMicrosoft側が折れた形になったということでしょうか。

 

・・・とこんなことを書きながら、我が社もまだ新OSに対応できてないのでとりあえずほっとしたり。

新しいものだから良いに違いない!ってことも無いんでしょうけど、古いものにいつまでもしがみつくのもホントは良くないってことも分かってるんですけどねー・・・。

 

#誤解を与えそうなのでタイトルを少し変更しました。

posted @ 15:58 | Feedback (2)