Windowの標準バックアップツールで共有フォルダに保存したものをコマンドで復元

Windows Server 2008、Windows7標準のバックアップツールで共有フォルダにバックアップしたもを
コマンドwbadminで復元するのにハマりました。

基本的な情報は、以下のサイトにあります。
http://network.station.ez-net.jp/server/microsoft/windows/2008.core/backup/wsb-restore.asp

ボリュームで復元する手順には以下のようになります。
1. wbadmin get versionsで共有フォルダ上のバージョン情報を取り出す。
具体的には wbadmin get versions -backupTarget:共有名 -machine:バックアップを取ったサーバー名
バージョン情報は基本的に日付に関するもので”02/01/2014-19:00”などになります。
2. wbadmin get itemsでバージョン情報からボリューム情報を取り出す。
具体的には wbadmin get items -version:バージョン情報 -backupTarget:共有名 -machine:バックアップを取ったサーバー名
ドライブ情報はバックアップしたドライブごとに{35f0b218-1ed6-11e0-afb1-842b2b6aeed4}などで表示されます。
3. wbadmin start recoveryで復元する
具体的には wbadmin start recovery -version:バージョン情報 -backupTarget:共有名 -machine:バックアップを取ったサーバー名
-itemtype:Volume -items:\?Volume{上記2で表示されたバックアップされたドライブ情報} -recoveryTarget:復元先のドライブ番号 -quiet

Windowsアプリの自己自動更新ライブラリー

バグは作りたくなくても、入り込んでしまうものです。
そこで、サーバーに最新版をセットすれば、自動的にアップデートしてくれれば便利です。
バッチコマンドを無条件に実行させるのも方法ですが、利用者にアップデートされたことを
通知してくれれば親切です。
.NETにClickOnceがありますが、どこにインストールされたか分かりにくい曲者です。
そこで、自動更新してくれるツールがないか調べてもました。
以下のサイトに一覧があり、ほとんどオープンソースで、ソースを解析し、自分なりのものを
作ることもできます。
「自動更新ライブラリを比較する」
http://d.hatena.ne.jp/sixpetals/20130418/p1

十分調べていませんが、結論的には、どれも、しっくりこない感じです。
・NAppUpdate
http://www.mori-soft.com/2008-08-15-01-36-37/2009-08-02-15-37-17/134-net-nappupdate
結構アプリケーションの変更が大変。
・wyUpdate
http://code.google.com/p/wyupdate/
設定ファイルの設定が大変。有料のツールを使う?
・NetSparkle
http://netsparkle.codeplex.com/
ドキュメントが分からない。XMLの定義方法が不明。
・DDay.Update
http://sourceforge.jp/projects/sfnet_dday-update/
ClickOnceのサーバー設定を使う。これは実際動作確認。
・AutoUpdater.NET 1.2
http://autoupdaterdotnet.codeplex.com/releases/view/105236
1つのEXEだけ対応?

他の参考サイト(古い情報です)
・「ClickOnceの基本動作を見てみよう」
http://www.atmarkit.co.jp/ait/articles/0601/18/news112.html
・「NETアプリケーション自動更新技術の比較」
http://www.atmarkit.co.jp/fdotnet/special/autoupdate/autoupdate_02.html

Windowsでコマンドプロンプトでzipファイルができない?

Winodwsでエクスプローラーから、zipファイルの作成、解凍はできるのに、コマンドプロンプト
からできないようです。
一番簡単な方法は、7-Zip コマンドラインバージョンを使うようです。
http://sevenzip.sourceforge.jp/howto/non-install-compress.html

ちなみに、コマンドプロンプトでctrl+c、ctrl+vは効きませんが、近い方法はあるようです。
http://bata64.hatenablog.jp/entry/20090119/1232348259

Windowsでもセキュアなsftpを利用しましょう

レンタルサーバーなどに、せっかく、sftpサーバーがあるのであれば、クライアントのWindowsからも、sftp機能を利用しましょう。
いつも間違えるsftpとftpsの違いは以下のサイトを参照。
http://distacks.com/life/2012/05/000023.html
http://ja.wikipedia.org/wiki/SSH_File_Transfer_Protocol
http://ja.wikipedia.org/wiki/FTPS

クライアントのsftp対応ソフトでWindowsからも利用できるWinSCPが便利です。
オープンソースで、グラフィカルなインターフェース、および、コマンドラインからも利用できます。
http://winscp.net/eng/download.php
日本語化もできるようです。
http://winscp.net/eng/docs/lang:jp

コマンドラインから、定期的に実行させれば、フォルダの同期などもできます。
http://sourceforge.jp/magazine/10/04/20/1033216

VMware PlayerのMACアドレスに注意

VMware Playerは、非商用限定で無料です。仮想OSを作成するに便利です。
https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_player/6_0
(商用で使用するには有料のVMware Player Plusなどを使用します)
今日は、その設定で失敗談です。
WEBアプリケーションサーバー用のWindows Server 2008 R2仮想OSを作り(これをAサーバー)、
それをコピーして、DBサーバー用を作成(これをBサーバー)しました。
VMware Playerのネットワークはブリッジの設定をし、それぞれに固定IPアドレスをつけました。
Aサーバーからも、Bサーバーからも、ホストOS(仮想OSを動かす元のOS)へのpingは通るが、
AサーバーとBサーバー間でpingが通りません。いろいろ調べましたが原因がわからず七転八倒。
Aサーバー、Bサーバーの固定IPをやめ、自動取得にすると、なんと、両サーバーとも、同じIPアドレスが付与
されてるではありませんか。その理由は、1つめのサーバーの仮想OSを単純コピーしたため、ネットワークに
同じMACアドレスが付与されたためでした。MACアドレスを作成し直し、解決しました。

Visual Studio 2010で画面デザイン表示が異常に遅くなる

Visual Studio 2010 を使用していて、急に、画面デザイン表示が遅くなることが
あります。
下部のステータスバーに「パッケージ…からツールボックスを読み込んでいます…」が
表示され、そのまま、ハングアップしたように見えます。
Visual Studioに関連するソフトのインストールが引き金のようです。

Visual Studio 2010 のバグのようで、以下のサイトに解決方法があります。
http://d.hatena.ne.jp/gsf_zero1/20120409/p1

経験的には以下の状況です。
・Windowsフォーム、ASP.NETののどちらの画面デザインでも発生する
・Silverlight5関係がインストールさていなくても発生しする

USBメモリも暗号化してはいかがですか

USBフラッシュメモリも、Windowsで使用する場合、NTFSでフォーマットすれば、Windowsの暗号化機能が使用でできます。
データのバックアップなどで使用する場合は、十分有効です。
ハード的に暗号化できるUSBフラッシュメモリもありますが、高価です。
Windowsの暗号化ファイルシステム(EFS: Encrypting File System)については、以下のサイトが詳しく、
2台以上のパソコンで、暗号化用証明書を同一にする方法なども書かれています。
http://07.net/EFS/

Windowsの暗号化だけでは心配な方は、以下の様な、暗号化ソフトを併用されてはいかがでしょうか。
TrueCryptはWindowsとMacで同じように利用できるので便利です。
http://ja.wikipedia.org/wiki/TrueCrypt

Windowではログインパスワード解除ツール「Ophcrack」などがよく知られていますが、Macはファームウェアパスワードを
設定しないと、簡単にパスワードを解除できますのでご注意ください。
http://www.lifehacker.jp/2012/10/121019break_into_win.html
http://www.lifehacker.jp/2012/10/121019break_into_mac.html

SqlDependencyのSQL文にご注意

SQL Server 2005以降、テーブルが更新されると、それをイベントとしてアプリケーションが
受け取れる仕組みを作成するSqlDependencyクラスがあります。
これを使うと、サーバープログラムとクライアントアプリケーション間で、実装が面倒な
ソケット通信などの処理を作成すること無く、クライアントアプリケーションに通知する
仕組みが作成できます。
http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqldependency.aspx

具体的な実装方法は、以下のサイトを参照ください。
http://dotnet.dzone.com/articles/c-sqldependency-monitoring
http://www.dreamincode.net/forums/topic/156991-using-sqldependency-to-monitor-sql-database-changes/

大まかな流れは以下の通りです。
A SQL ServerでQUEUE等を作成
B アプリケケーションでテーブルの変化を通知してほしい、SQLECT SQL文を作り、そのSQL文の結果が
変化したとき実行されるメソッドを登録するイベントを設定
C 実行されるメソッドを定義

このBでのSQL文に制約があり、SqlDependencyクラスの制約にあっていないと、大量のイベントが
発生し、Cのメソッドの処理でCPUがフル状態となってしまいます。
以下のSQLは経験上ダメなのでご注意ください。他にもダメな場合があるかもしれません。
・外部結合(Outer Join)のSQL
・3つ以上を結合するSQL
もし、どうしてもこのような条件のSQLを使いたい場合、SqlDependencyクラスを使うため専用の
テーブルを作成するのもひとつの回避方法です。

Markdown記法

マークダウン記法は次のページを参照いただければ、説明の必要もありませんが、
プログラムのドキュメントなどで利用されている簡易マークアップ言語です。
http://kojika17.com/2013/01/starting-markdown.html

オープンソースのプログラムのドキュメントなどで拡張子”.md”のファイルがあれば
それは、マークダウン記法です。マークダウン記法のエディタ、ビューアもフリーで
ありますし、FireFoxのアドインなどもあります。

jQueryでinputの値取得はpropで

checkboxの値取得もattrを使っていましたが、input関係は1.6以降で追加されたpropの方がいいですね。
思い込みは怖いですね。
「jQueryにおけるattrとpropの違いと使いドコロまとめ」
http://qiita.com/kbyay_/items/7a7ce9547f29b34a63b1
「jQuery 1.9 .prop() 」
http://js.studio-kingdom.com/jquery/attributes/prop

ついでに、「input 要素の disabled 属性と readonly 属性の違い」
http://www.koikikukan.com/archives/2009/04/26-003300.php

そして、「readonly=”true”」と「readonly=”readonly”」
http://stackoverflow.com/questions/6172911/what-is-the-difference-between-readonly-true-readonly-readonly
なんと、readonlyは値は不要。

なお、最初の「qiita」は日本の半分のプログラマーが見ているという噂も。
http://itpro.nikkeibp.co.jp/article/NEWS/20131128/521324/?ST=develop&P=1
http://thebridge.jp/2013/05/qiita-gets-220k-monthly-user