Facebook SDK C#
http://facebooksdk.codeplex.com/
いいね!を押したか押してないかでページ切り替えでちょっと躓いたのでメモ。
前までは
var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest);
だったのだけれど、FacebookContextは廃止されて
var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookApplication.Current.AppSecret, SignedRequest);
となっている。
で、いいね!を押したかどうかの全体コード。
using Facebook; using Facebook.Web;
protected void Page_Load(object sender, EventArgs e) { if (Request.Params["signed_request"] != null) { var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookApplication.Current.AppSecret, Request.Params["signed_request"]); var RawRequestData = (IDictionary<string, object>)DecodedSignedRequest.Data; JsonObject RawPageData = (Facebook.JsonObject)RawRequestData["page"]; if((bool)RawPageData["liked"])) { //いいね押された } else { //おされてない } } }
例外チェック等はあまあまだけど、とりあえず。
Windows 2008 ServerでUPSと連動させた自動シャットダウン時のタスク実行
東日本大震災の被災者の方々に心からお見舞いを申し上げます。
まだまだ余震が続き、計画停電が続く中、UPSに接続したサーバシャットダウン時に別サーバ(UPSと非連動)へシャットダウンイベントを渡したくなった。
Windows 2008 Serverのタスクスケジューラをみても「シャットダウン時に実行」という項目が見当たらない。
調べてみるとWindows Vista以降のOSでは(Windows XPが手元にないのでVista前では未確認)シャットダウン時にタスクを自動実行できないようだ。
UPSの電源を抜き差ししながらイベントログを見ていると
警告:APC UPS Service 停電のためUPSはバッテリ運転に移行しました。 ログの名前:アプリケーション ソース:APC UPS Service イベントID:174 レベル:警告 ユーザ:SYSTEM
とでている。
また、電源を戻した際には
情報:APC UPS Service UPSは商用電源に移行しました。 ログの名前:アプリケーション ソース:APC UPS Service イベントID:61455 レベル:情報 ユーザ:SYSTEM
なので、下記のようなスクリプトを作成
shutdown.vbs
Dim ws Dim strProgram Dim lockFile Dim waitMilSec lockFile = "lock.txt" waitMilSec = 300000 'initialize Set ws = Wscript.CreateObject("Wscript.Shell") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strProgram = """C:\WINDOWS\system32\SHUTDOWN.EXE""" 'Create the lock file If objFSO.FileExists(lockFile) Then 'objFSO.DeleteFile(lockFile) Else objFSO.CreateTextFile(lockFile) End If 'Now we wait before shutdown WScript.Sleep waitMilSec 'If the lock file still exists If objFSO.FileExists(lockFile) Then 'Do whatever needed before shutdow ws(strProgram & " -s -t 0") Else 'aborted End If
abort.vbs
Dim lockFile lockFile = "lock.txt" 'initialize Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 'Delete the lock file If objFSO.FileExists(lockFile) Then objFSO.DeleteFile(lockFile) End If
スクリプトとしては、UPS運転に切り替わるとshutdown.vbsが実行され「lock.txt」を作成する。5分後に再度「lock.txt」が存在するか確認して、存在する場合はシャットダウンを行う。
UPSから通常電源に戻ると「lock.txt」を削除する。これでshutdown.vbsが実行されていても「lock.txt」が存在しないのでシャットダウンはされない。
次にタスクの登録。
タスクスケジューラで「タスクの作成」を行う。
トリガを新規作成し「タスクの開始」プルダウンから「イベント時」を選択する。
設定で下記のように設定を行う
ログ:アプリケーション ソース:APC UPS Service イベントID:174
これで上記shutdown.vbsを登録すればOK。同じようにabort.vbsも登録するが、こちらは下記のような条件で登録する
ログ:アプリケーション ソース:APC UPS Service イベントID:61455
UPSのコンセントを抜いたときに「lock.txt」が作成されれば動く。
Windows7のTunnel adapter Local Area Connectionを消す
Windows7(Vistaもか?)でipconfigをすると、Tunnel adapter Local Area Connection 番号と大量に表示されることがある。
これはこれで気持ち悪いし、コマンドプロンプトの表示上限を超えて表示するから肝心な情報が見れないし(バッファサイズを大きくすれば見れるが)、なによりリソース不足?になってExplorer接続できなくなることがある…。
なにもいいことない。
あ、IPv6を使ってるならいいことあるかも。
それぐらい。
で、対処法。
◆サービスの停止
[Windows]キーを押しながらR→「services.msc」でサービス一覧を表示。
「IP Helper」サービスが開始/自動になっているので停止/無効にする。
◆IPv6をオフ
[Windows]キーを押しながらR→「ncpa.cpl」でネットワークアダプタ一覧を表示。
利用しているアダプタのプロパティを開いて、「インターネットプロトコル バージョン6(TCP/IPv6)」のチェックをはずす。
◆デバイスの削除
デバイスマネージャーを開いて、「表示」→「非表示のデバイスの表示」にチェック。
ネットワークデバイスの下に番号付きでアダプタが大量表示されているので手動で削除。
Windows7上で管理者権限でコマンドプロンプトを開く
スタートの「プログラムとファイルの検索」に「cmd」と打って、control + shift + enter
Google Chromeが英語になってしまう
インストール後になぜかGoogle Chromeが英語になっている場合の修正方法
(特に問題はないけれど、日本語ページを表示するさいにフォントがいけてない)
C:\Users\ユーザ名\AppData\Local\Google\Chrome\User Data\Local State
上記ファイルのen部分を、Google Chromeを閉じた状態でjaに変更
"intl": { "app_locale": "en" },
ASP.NETでの国際化(ブラウザの言語設定を使う)
ASP.NETでの国際化は簡単だけど、ディフォルトではブラウザの言語設定が利用されないので、テストが難しい。
解決方法は簡単でWeb.configに一行追加するだけでブラウザの言語設定を使ってくれるようになる。
<page> //... <globalization uiCulture="auto" culture="auto"/> </page>
SQL Server 2008で設定の保存(上書き)ができない
SQL Server 2008のManagment Studio上でテーブルに変更を行った後に保存しようとした場合、
下記のようなエラーが表示されることがある。
変更の保存が許可されていません。 行った変更には、次のテーブルを削除して再作成することが必要になります。 再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。
これは、「テーブルの再作成を必要とする変更を保存できないようにする」がディフォルトでオンになっている為。
Management Studioのツール→オプション→デザイナーで該当チェックをはずせばOK。