C#時間計算

時間計算はDateTime.Addメソッドを使用する。
DateTime.Add( TimeSpan )

足し算は...

DateTime d = DateTime.Now.Add(new TimeSpan(0, 3, 0, 0, 0)); // 3時間後を取得
DateTime d2 = DateTime.Now.Add(new TimeSpan(1, 0, 0, 0, 0)); // 一日後を取得
DateTime d3 = DateTime.Now.Add(new TimeSpan(1, 0, 0, 3, 0)); // 3分後を取得。カップラーメン用


では、引き算は...

DateTime d = DateTime.Now.Add(new TimeSpan(0, -3, 0, 0, 0)); // 3時間前を取得
DateTime d2 = DateTime.Now.Add(new TimeSpan(-1, 0, 0, 0, 0)); // 昨日を取得

引数をマイナスにする。

では、年は?

DateTime d4 = DateTime.Now.AddYears(1); // 1年後を取得

こんな感じですね。

Microsoft Office Visioのようなフリーお絵かきツール

gliffy

ユーザー登録をすることで無料で使用できるVisioライクな作図ツール。


Visioを使ったことがある人なら直感的にすぐに使えるはず。
印刷もできるし、svg,jpg,pngとして出力することもできる。


Web環境があればいつでも作業できる手軽さがいいですね。

iGoogleのタブにある「チャット」を消す


iGoogleはデフォルト状態ではタブに「チャット」が表示されているのだが、使わない人にとってはこれはうっとうしいと思う。
どうやって消せばいいのかよくわからなかったりして、けっこううざい。

これを削除するにはiGoogleの設定ページへ行けばよい。
http://www.google.com/ig/settings


[チャット]-[チャットを非表示]を選択した後に保存。


当然だが、「チャットを表示」をクリックすると復活するので注意(笑)。

ASP.NET AJAX インストールについて

Visual Studio 2005で使用する場合のメモ。今更だが。

1.ASP.NET 2.0 AJAX Extensionsの入手
ASP.NET 2.0用の「ASP.NET 2.0 AJAX Extensions 1.0」をダウンロードする。Visual Studio 2008 が登場した今となってはアーカイブされている。

本体はMicrosoftのここにあるのだが。

2.ASP.NET AJAX 1.0のインストール



3.web.config書き換え
ここから少し色々しなければならない。

プロジェクトをゼロから作る場合は、新しいプロジェクトを作成する際に「ASP.NET AJAX-Enabled Web Application」がテンプレートつぃて追加されているはずなので、これを選べば良い。


今あるプロジェクトに追加する場合は、Web.configに追記する作業が発生する。追記する個所を確認するためにも、新規のプロジェクトをテスト用に作ってみると便利だと思う。

具体的には...
・configSectionsをごっそり追加
・system.webにpages, controlsの項目を追加
・compilation内にassembliesを追加, httpHandlersを追加, httpModulesを追加
・system.webServerを追加

とりあえず不足分を補うように記述する。

sqlcmdが使えない

SQLServerをコマンドラインから操作する際に使用する「sqlcmd」だが、Microsoft SQL Server 2005 コマンド ライン クエリ ユーティリティをインストールしないと使えない。


また、これは Microsoft SQL Server Native Client を先にインストールしておく必要がある。


通常はSQLServerをインストールすると入るのだが、SQLServerが入っていない場合は個別にインストールする必要がある。当然だが。

ダウンロード先

Windows Server 2008 Windowsファイアウォールでポートを開ける

1.受信の規則
 [右クリック]-[新しい規則]、もしくは [操作]-[新しい規則]。


2.規則の種類
 「ポート」を選択


3.プロトコルおよびポート
 TCP 1433


4.操作
 接続を許可する


5.プロファイル


6.名前
 わかりやすい名前を付ける

Google サジェストで遊ぶ

「ごおgぇ」


「bぉっげr」――なんかすごいw


「やほお」――まぬけな響きだ


「sqlせrヴぇr」――もはや何のことかわからない……。


「みcろそft」――ミクロな感じ。


「ふじこ」――広告も"ふじこ"。

セッション状態要求をセッション状態サーバーに対して作成できませんでした。

ASP.NET 状態サービスが開始されていて、クライアントとサーバーのポートが同じであることを確認してください。サーバーがリモート コンピュータ上にある場合、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection の値を調べて、このコンピュータがリモート要求を受け付けることを確認してください。サーバーがローカル コンピュータ上にあり、上記のレジストリ値が存在していないか 0 に設定されている場合、状態サーバー接続文字列ではサーバー名に 'localhost' または '127.0.0.1' を指定しなければなりません。


→Session State Serverを設定する。




SQLServer: data source=127.0.0.1;Trusted_Connection=yes



tcp 42424
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection → 1

構成にエラーがあります (vjslib.dll)

vjslib.dllは、J#のライブラリである。
これを参照するためには「Microsoft Visual J# 2.0 再頒布可能パッケージ」をインストールする必要がある。

ただし、これは32bit版と64bit版で異なっており、
正しいライブラリをインストールしなければならない。


Microsoft Visual J# 2.0 再頒布可能パッケージ
http://www.microsoft.com/downloads/details.aspx?FamilyID=f72c74b3-ed0e-4af8-ae63-2f0e42501be1&displaylang=ja

Microsoft Visual J# 2.0 再頒布可能パッケージ Second Edition (x64)
http://www.microsoft.com/downloads/details.aspx?FamilyID=42c46554-5313-4348-bf81-9bb133518945&DisplayLang=ja

IISでPerl

もちろんPerlも問題なく動作する。
途中まではPHPの時と同じ。

1. ActivePerlをインストール



インストールの確認は、コマンドプロンプトから行える。
コマンドは「perl -v」だ。



2. スクリプトマップの追加
[IISマネージャー] - [ハンドラーマッピング] - [スクリプトマップの追加]



要求パス: *.cgi (スクリーンショットは間違っているw)
実行可能ファイル: perl.exe(phpをインストールしたパスを通す)
名前: 自分がわかりやすい名前でOK(CGIとか)

動詞のタブからは特定のアクセスの時のみの制限を付けることができる。
「GET,POST」が通常設定するような制限ですかね。

設定したあとにサンプルプログラムをサーバに置いてアクセスすると動作するはず。

IISでPHP

Windows Server 2008 R2 (64bit)にて検証したが、動作確認は問題なかった。
FastCGIはPHPとIISを橋渡しするためのものだ。

1.IISをインストール

2.CGIをインストール


3.PHPをインストール

4.モジュールマップの追加
[IISマネージャー] - [ハンドラーマッピング] - [モジュールマップの追加]


要求パス: *.php
モジュール: FastCgiModule
実行可能ファイル: php-cgi.exe(phpをインストールしたパスを通す)
名前: 自分がわかりやすい名前でOK(PHPとか)

5. 動作確認


ローカルなら http://localhost/phpinfo.php でOK。
他のサーバなら localhost をサーバ名にする。


IIS.NETがすごく参考になる。

SqlParameterCollection は、String オブジェクトではなく、Null でない SqlParameter 型オブジェクトのみ受け入れます。


command.Parameters.Add("@para");
command.Parameters["@para"].Value = "なんか値";


これはNG。


command.Parameters.Add("@para", "なんか値");


これならOK。

日付のパース

Parse メソッドは型変換の基本であるが、正しく値を設定しないと落ちる。


DateTime d1 = DateTime.Parse("20090101"); // NG
DateTime d2 = DateTime.Parse("2009/01/01"); // OK


ちなみに、Convert.ToDateTime は...


DateTime d3 = Convert.ToDateTime("20090101"); // NG
DateTime d4 = Convert.ToDateTime(20090101); // NG
DateTime d4 = Convert.ToDateTime(090101); // NG


奥が深い。

日付の比較(初期値チェック)



DateTime defaltTime = new DateTime();
DateTime d = new DateTime();
if (d.CompareTo(defaltTime) == 0)
{
// 初期値

}


DateTime.CompareTo は日付の比較を行うメソッドだ。
戻り値は int
確認したところ、単純に == などで比較するより若干だがパフォーマンスが良いようだ。

Could not load file or assembly 'MySql.Data, Version=...

binフォルダにdllを入れてみよう!

Keyword not supported. (MySQL)

接続文字列が無効な場合。
×  user id
○ uid
など。

ブレークポイントは、現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません。

この悪夢に何度となく悩まされたことか。
原因はさまざまあり、解決方法も様々あるようだが。

[ツール]-[オプション]-[デバッグ]-[全般]
[元のバージョンと完全に一致するソース ファイルを必要とする]のチェックを外してみる。

'/'アプリケーションでサーバー エラーが発生しました。



最上位ディレクトリの先頭に..を使用することはできません。

.aspx で相対パスでファイルの指定を行っていた場合、パスが不正であると出るエラー。
ヘッダ部分のリンク部分等を見直してみる。

VSS管理のプロジェクトを外す

そのまま開こうとするとエラーが表示されてしまうが、.vbprojファイルをテキストエディタで開き「Scc」から始まる項目を削除することでVSSから切り離すことができる。

例:
SccProjectName = "server1"
SccLocalPath = "server1"
SccProvider = "server1"

↑これを削除