Visual Studio 2005 以降、WEBページを作成する方法として、WEBアプリとWEBサイトの2つが提供されている。
デフォルト設定での主な相違点は、以下の通り。
◆WEBアプリケーションプロジェクト
・プロジェクト/ソリューションファイル:有り
プロジェクトファイルに登録されているもののみがビルド対象。
・ビルドタイミング:作成時
複数のコードは単一のDLLにビルドされる。
・デプロイ対象:
単一DLLのデプロイとなる為、軽微な修正でも全アプリのデプロイ対象となり、一時的に全アプリのサービスが停止するとも考えられる。
◆WEBサイトプロジェクト
・プロジェクト/ソリューションファイル:無し
フォルダー下の全コードファイルがビルド対象
・ビルドタイミング:実行時
IIS上にデプロイされたコードが初回実行時にビルドされる。
・デプロイ:
修正対象となったコードファイルのみで可。それ以外のアプリはサービス継続可能。
それぞれ一長一短は有り意見が分かれる所とは思われるが、メンテナンス性の観点からは後者かと。
実際、後者はVS2005から追加されたものなので、その部分の不便さを補完する意味があるのでは。
cf.
http://msdn.microsoft.com/ja-jp/library/dd547590.aspx
2012年04月09日
VisualStudioのプロジェクト(WEBアプリとWEBサイト)
posted by rocknfields at 17:26| ASP.NET & IIS設定
2012年04月05日
Visual Sourcesafe オプションのデフォルト値変更
ソース管理にVisual Sourcesafeを使用してチーム開発を行う場合、Visual Sourcesafe オプションのデフォルト値を一括して変更したい場合が有る。
特に、ローカルファイル関係の[タイムスタンプ]や[読み取り属性]は、デフォルト値では、実際の運用にちょっと相応しくない。
SRCSAFE.INIの内容を追記/変更する事で、デフォルト値の変更が可能。
[タイムスタンプ] => [変更時刻]
SetTime = Mod
[読み取り属性] => [セットしない]
Use_Readonly = No
cf.
http://support.microsoft.com/kb/138147/ja
特に、ローカルファイル関係の[タイムスタンプ]や[読み取り属性]は、デフォルト値では、実際の運用にちょっと相応しくない。
SRCSAFE.INIの内容を追記/変更する事で、デフォルト値の変更が可能。
[タイムスタンプ] => [変更時刻]
SetTime = Mod
[読み取り属性] => [セットしない]
Use_Readonly = No
cf.
http://support.microsoft.com/kb/138147/ja
posted by rocknfields at 12:06| .Netコーディング (C#, VB etc)
2012年04月04日
VB vs C# コンバート
VB と C# では、言語仕様の関係から、必ずしも同等のコードを記述できないケースがある。
以下、現状、把握できているケース。
◆VBの引数付きプロパティは、C#に変換できない。
C#ではコレクションを返し、呼び出し側でハンドリングする事を想定していると思われる。
cf.
http://ufcpp.net/study/csharp/oo_property.html#indexed
◆VBのオプショナル引数を関数は、C#に変換できない。
VisualStudio2008(.Net3.5)までは、C#でオプショナル引数が使えない。(C# 3.0の仕様)
この為、オーバーロード関数などで対応する必要あり。
尚、VisualStudio2010(.Net4)からは、使用可能。(C# 4.0の仕様)
cf.
http://ufcpp.net/study/csharp/sp4_optional.html#optional
※その他、各言語間のキーワード比較は以下を参照。
http://msdn.microsoft.com/ja-jp/library/zwkz3536.aspx
http://dobon.net/vb/dotnet/vb2cs/vb2cstable.html
以下、現状、把握できているケース。
◆VBの引数付きプロパティは、C#に変換できない。
C#ではコレクションを返し、呼び出し側でハンドリングする事を想定していると思われる。
cf.
http://ufcpp.net/study/csharp/oo_property.html#indexed
◆VBのオプショナル引数を関数は、C#に変換できない。
VisualStudio2008(.Net3.5)までは、C#でオプショナル引数が使えない。(C# 3.0の仕様)
この為、オーバーロード関数などで対応する必要あり。
尚、VisualStudio2010(.Net4)からは、使用可能。(C# 4.0の仕様)
cf.
http://ufcpp.net/study/csharp/sp4_optional.html#optional
※その他、各言語間のキーワード比較は以下を参照。
http://msdn.microsoft.com/ja-jp/library/zwkz3536.aspx
http://dobon.net/vb/dotnet/vb2cs/vb2cstable.html
posted by rocknfields at 17:47| .Netコーディング (C#, VB etc)
BitMaskをenum定義する
EnumにFlags属性を付与すると、Bitデータとして定義する事ができ、Enumメンバーをビット演算やビットマスクに使用可能となる。
== C# =========================
[Flags]
public enum BitTest
{
LSB = 0x00,
2bit = 0x01,
3bit = 0x02,
4bit = 0x04,
5bit = 0x08,
:
}
== VB =========================
<Flags()> _
Public Enum BitTest
LSB = &H0
2bit = &H1
3bit = &H2
4bit = &H4,
5bit = &H8,
:
End Enum
cf.
http://www.atmarkit.co.jp/fdotnet/dotnettips/1052enumflags/enumflags.html
http://msdn.microsoft.com/ja-jp/library/cc138362.aspx
== C# =========================
[Flags]
public enum BitTest
{
LSB = 0x00,
2bit = 0x01,
3bit = 0x02,
4bit = 0x04,
5bit = 0x08,
:
}
== VB =========================
<Flags()> _
Public Enum BitTest
LSB = &H0
2bit = &H1
3bit = &H2
4bit = &H4,
5bit = &H8,
:
End Enum
cf.
http://www.atmarkit.co.jp/fdotnet/dotnettips/1052enumflags/enumflags.html
http://msdn.microsoft.com/ja-jp/library/cc138362.aspx
posted by rocknfields at 17:22| .Netコーディング (C#, VB etc)
2012年02月07日
「IIS メタベースにアクセスできませんでした」の対処方法
◆ASP.NET の version 確認
[AdministrativeTools]-[Internet Information Services]でWeb共有のプロパティを開き、[ASP.NET]タブの ASP.NET version を確認する。(多くの場合、2.0.50727 の筈。)
◆ASP.NET を再登録
コマンドプロンプトで以下を実行する。( 上記で確認したversionのASP.NETをIISに再登録する。)
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
[AdministrativeTools]-[Internet Information Services]でWeb共有のプロパティを開き、[ASP.NET]タブの ASP.NET version を確認する。(多くの場合、2.0.50727 の筈。)
◆ASP.NET を再登録
コマンドプロンプトで以下を実行する。( 上記で確認したversionのASP.NETをIISに再登録する。)
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
posted by rocknfields at 17:21| ASP.NET & IIS設定
2012年01月27日
AndroidでSOAP w/ 自己証明書HTTPSエラー回避
◆インターネット通信の許可
AndroidManufest.xmlに以下のエントリを追加。
<uses-permission android:name="android.permission.INTERNET /">
◆SOAP設定(ksoap2を使用)
・ダウンロード
ksoap2_jar_2.6.0
・デプロイ
eclipse/pluginフォルダにダウンロードしたjarをコピーし、プロジェクトのプロパティ「javaのビルドパス」にて「外部jar追加」を行う。
◆自己証明書HTTPS用の修正(Uncertificated errorの回避方法)
・ダウンロード
kosap2ソースをダウンロードし、以下のソースをプロジェクトに追加する。(各ソース冒頭のpackage名は適宜修正)
HttpsServiceConnectionSE.java
HttpsTransportSE.java
HttpTransportSE.java
ServiceConnection.java
ServiceConnectionSE.java
Transport.java
・全ての証明書を許容する為の修正
HttpsServiceConnectionSE.javaのコンストラクタに以下のコードを追加する。
public HttpsServiceConnectionSE(String host, int port, String file,
int timeout) throws IOException {
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null,
new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
},
new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.getMessage();
}
connection = (HttpsURLConnection) new URL(HttpsTransportSE.PROTOCOL, host, port, file).openConnection();
connection.setHostnameVerifier(new AllowAllHostnameVerifier());
updateConnectionParameters(timeout);
}
AndroidManufest.xmlに以下のエントリを追加。
<uses-permission android:name="android.permission.INTERNET /">
◆SOAP設定(ksoap2を使用)
・ダウンロード
ksoap2_jar_2.6.0
・デプロイ
eclipse/pluginフォルダにダウンロードしたjarをコピーし、プロジェクトのプロパティ「javaのビルドパス」にて「外部jar追加」を行う。
◆自己証明書HTTPS用の修正(Uncertificated errorの回避方法)
・ダウンロード
kosap2ソースをダウンロードし、以下のソースをプロジェクトに追加する。(各ソース冒頭のpackage名は適宜修正)
HttpsServiceConnectionSE.java
HttpsTransportSE.java
HttpTransportSE.java
ServiceConnection.java
ServiceConnectionSE.java
Transport.java
・全ての証明書を許容する為の修正
HttpsServiceConnectionSE.javaのコンストラクタに以下のコードを追加する。
public HttpsServiceConnectionSE(String host, int port, String file,
int timeout) throws IOException {
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null,
new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
},
new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.getMessage();
}
connection = (HttpsURLConnection) new URL(HttpsTransportSE.PROTOCOL, host, port, file).openConnection();
connection.setHostnameVerifier(new AllowAllHostnameVerifier());
updateConnectionParameters(timeout);
}
posted by rocknfields at 14:48| スマートフォン
2011年12月30日
CrashPlanでBackup (ARM CPU model w/ JRE)
以下、ARM系CPUモデルのNASでCrashPlanを使用する為の手順
◆ダウンロード
以下の3ファイルをダウンロードする。
・CrashPlan QPKG 3.0.3_18
・CrashPlan QPKG 3.2.21
・JRE QPKG
※解凍し、qpkgを取り出しておく。
・JRE (v1.6.0.10 linux arm5)
※Oracleサイトより最新のJREを取得してもインストールでエラーとなる(QPKGとの整合が取れていない模様)。
◆デプロイ
ダウンロード/解凍した3ファイルをNAS上の任意の共有フォルダにコピーする。
・ejre-1_6_0_10-ea-b39-linux-armv5-sflt-eabi-headless-eval-31_jul_2009.tar.gz
・JRE_6_arm-x19.qpkg
・CrashPlan_3.0.3_18_arm-x19.qpkg
・CrashPlan_3.2_21_arm-x19.qpkg
Note:
コピー先はデフォルト共有のPublicが推奨。
他のフォルダでは、インストールエラーとなる場合有り。
また、他のマシンの共有フォルダを使用した場合は、インストールエラーとなる。
◆インストール&起動(有効化)
以下の各qpkgファイルを順次、[INSTALL]&[ENABLE]する。
1.JRE QPKG
2.CrashPlan QPKG
・インストール方法:
管理画面の[Application Servers]-[QPKG Plugins]-[INSTALLATION]タブにおいてファイルを選択し、[INSTALL]ボタンを実行。
・イネーブル方法:
[QPKG INSTALLED]タブにおいて、当該の QPKG icon をクリックし、[ENABLE]を実行。
Note:
JRE QPKGのインストール時、同一フォルダにJREが存在すれば、同時に解凍/インストールを行ってくれる。
(言い換えると、有効なJREが存在しないと、インストールエラーとなる。)
◆バックアップ設定(クライアント画面の起動方法)
管理画面では設定等を行う事はできないので、他のPCより接続しNASのバックアップ設定を行う。
1. いずれかのPCにCrashPlanをインストールする。
2. テキストエディタで %ProgramFiles%\CrashPlan\conf\ui.properties を開き、serviceHostのIPアドレスを対象のNASに変更し、コメントアウトを外してセーブする。(名前解決できる環境ならばホスト名でも可。エントリはコメントアウトされているので行頭の#は削除が必要。)
3. PCのサービス(CrashPlan Backup Service)は不要なので停止する。(起動プロパティも[手動]か[無効]にしておく)
以上でスタートメニューよりCrashPlanを起動すれば、NAS上のClashPlanに接続できる。
(CrashPlanサイトではポート変更して、SSHをトンネルする方法が説明されているが、NASの設定を行う為だけであれば上記のみで充分。)
cf.
http://www.turbonas.com/phpBB3/viewtopic.php?f=18&t=870
http://forum.qnap.com/viewtopic.php?f=121&t=39078
※2012/03/20追記
2012/03/17頃より CrashPlan_3.0.3_18_arm-x19.qpkg にて接続不能となった。
CrashPlan_3.2_21_arm-x19.qpkg に更新し、復旧。
◆ダウンロード
以下の3ファイルをダウンロードする。
・CrashPlan QPKG 3.2.21
・JRE QPKG
※解凍し、qpkgを取り出しておく。
・JRE (v1.6.0.10 linux arm5)
※Oracleサイトより最新のJREを取得してもインストールでエラーとなる(QPKGとの整合が取れていない模様)。
◆デプロイ
ダウンロード/解凍した3ファイルをNAS上の任意の共有フォルダにコピーする。
・ejre-1_6_0_10-ea-b39-linux-armv5-sflt-eabi-headless-eval-31_jul_2009.tar.gz
・JRE_6_arm-x19.qpkg
・CrashPlan_3.2_21_arm-x19.qpkg
Note:
コピー先はデフォルト共有のPublicが推奨。
他のフォルダでは、インストールエラーとなる場合有り。
また、他のマシンの共有フォルダを使用した場合は、インストールエラーとなる。
◆インストール&起動(有効化)
以下の各qpkgファイルを順次、[INSTALL]&[ENABLE]する。
1.JRE QPKG
2.CrashPlan QPKG
・インストール方法:
管理画面の[Application Servers]-[QPKG Plugins]-[INSTALLATION]タブにおいてファイルを選択し、[INSTALL]ボタンを実行。
・イネーブル方法:
[QPKG INSTALLED]タブにおいて、当該の QPKG icon をクリックし、[ENABLE]を実行。
Note:
JRE QPKGのインストール時、同一フォルダにJREが存在すれば、同時に解凍/インストールを行ってくれる。
(言い換えると、有効なJREが存在しないと、インストールエラーとなる。)
◆バックアップ設定(クライアント画面の起動方法)
管理画面では設定等を行う事はできないので、他のPCより接続しNASのバックアップ設定を行う。
1. いずれかのPCにCrashPlanをインストールする。
2. テキストエディタで %ProgramFiles%\CrashPlan\conf\ui.properties を開き、serviceHostのIPアドレスを対象のNASに変更し、コメントアウトを外してセーブする。(名前解決できる環境ならばホスト名でも可。エントリはコメントアウトされているので行頭の#は削除が必要。)
3. PCのサービス(CrashPlan Backup Service)は不要なので停止する。(起動プロパティも[手動]か[無効]にしておく)
以上でスタートメニューよりCrashPlanを起動すれば、NAS上のClashPlanに接続できる。
(CrashPlanサイトではポート変更して、SSHをトンネルする方法が説明されているが、NASの設定を行う為だけであれば上記のみで充分。)
cf.
http://www.turbonas.com/phpBB3/viewtopic.php?f=18&t=870
http://forum.qnap.com/viewtopic.php?f=121&t=39078
※2012/03/20追記
2012/03/17頃より CrashPlan_3.0.3_18_arm-x19.qpkg にて接続不能となった。
CrashPlan_3.2_21_arm-x19.qpkg に更新し、復旧。
posted by rocknfields at 12:12| QNAP NAS
2011年12月17日
ファームウェアリカバリ方法
カスタマイズ失敗で起動不能になったケースなどでも、QNAP純正のファームウェアにリカバリ可能。
http://wiki.qnap.com/wiki/Firmware_Recovery
http://coaster-serv.com/2011/12/10/qnap-ts-219p-ii-fw%E6%9B%B4%E6%96%B0%E5%A4%B1%E6%95%97/
http://wiki.qnap.com/wiki/Firmware_Recovery
http://coaster-serv.com/2011/12/10/qnap-ts-219p-ii-fw%E6%9B%B4%E6%96%B0%E5%A4%B1%E6%95%97/
posted by rocknfields at 19:56| QNAP NAS
2011年12月08日
既存マシンを仮想マシンへ移行
下記ツールにて、既存マシンのDiskを仮想ドライブイメージ(VHD)へ変換可能。
このVHDをVirtualPCにて起動すれば、旧マシンや環境をホストマシンに集約できる。
・変換ツール
http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx
・参考
http://www.atmarkit.co.jp/fwin2k/win2ktips/1228disk2vhd/disk2vhd.html
http://hddnavi.jp/focus/windows7_2_2.html
http://windows.microsoft.com/ja-JP/windows7/install-and-use-windows-xp-mode-in-windows-7
このVHDをVirtualPCにて起動すれば、旧マシンや環境をホストマシンに集約できる。
・変換ツール
http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx
・参考
http://www.atmarkit.co.jp/fwin2k/win2ktips/1228disk2vhd/disk2vhd.html
http://hddnavi.jp/focus/windows7_2_2.html
http://windows.microsoft.com/ja-JP/windows7/install-and-use-windows-xp-mode-in-windows-7
posted by rocknfields at 11:09| Windows設定/環境構築
2011年11月10日
Windows7 Pro の言語変更
Windows7において標準で言語切り替え可能なのは、Ultimate と Enterprise のみ。
ProやHomeなどでも言語パックが有れば、基本的には、切り替え可能。
以下、日本語版Windows7Proを英語化する場合の例。
1.英語の言語パックを用意
言語パックのファイルを任意のフォルダに配置する。(以下、%langpack_path%と表記。)
2.言語パックの追加
コマンドプロンプトを管理者モードで開き、以下のコマンドを実行する。
dism /online /Add-Package /PackagePath:%langpack_path%\lp.cab
3.レジストリの変更
レジストリエディタで以下を変更する。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language]
Default=0409
InstallLanguage=0409
4.地域と言語の設定変更
コントロールパネルの「地域と言語」(Region and Language)にて、場所や入力方法などを適宜変更する。
(日本にいて、日本語入力をメインに使用するなら変更は不要の筈。)
5.起動時言語の変更
コマンドプロンプトを管理者モードで開き、以下のコマンドを実行する。
bcdedit /set {default} locale en-us
※備考
最大の問題は、言語パックの入手方法。
MS-TechNetに加入していれば、D/L可能。
ProやHomeなどでも言語パックが有れば、基本的には、切り替え可能。
以下、日本語版Windows7Proを英語化する場合の例。
1.英語の言語パックを用意
言語パックのファイルを任意のフォルダに配置する。(以下、%langpack_path%と表記。)
2.言語パックの追加
コマンドプロンプトを管理者モードで開き、以下のコマンドを実行する。
dism /online /Add-Package /PackagePath:%langpack_path%\lp.cab
3.レジストリの変更
レジストリエディタで以下を変更する。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language]
Default=0409
InstallLanguage=0409
4.地域と言語の設定変更
コントロールパネルの「地域と言語」(Region and Language)にて、場所や入力方法などを適宜変更する。
(日本にいて、日本語入力をメインに使用するなら変更は不要の筈。)
5.起動時言語の変更
コマンドプロンプトを管理者モードで開き、以下のコマンドを実行する。
bcdedit /set {default} locale en-us
※備考
最大の問題は、言語パックの入手方法。
MS-TechNetに加入していれば、D/L可能。
posted by rocknfields at 16:20| Windows設定/環境構築