2015-02-06 今日のGlyphとLv10になった
会社を19:30頃出発。
ローソンでフライヤーを10枚印刷。
ドリプラでハックしていると、
昨日も遭遇した緑エージェントさんと再度出会う。
後、青のLv5エージェントさんをキャプチャ。
初フライヤー渡し。
Hack数:57
ポイント:389
累計ポイント:3482
まだやりたりないので静岡市街へ
ハックしたりワンコしたり、青エージェントさんを
リアルキャプチャしたりして、終わると2:00。
ハック数の記録はとり忘れたけど。
累計が4000くらいにはなってたので、
大分ハックしたとおもう。
フライヤーも2枚渡せて良かった。
2015-02-02 今日のGlyph
はてダを放置してそろそろ一年。
書かない癖脱出を目指して…
Ingressを始めて、半年が経った。
TranslatorのゴールドメダルGETが直近の目標(≧∇≦)
Hack数:33
成功数:25(76%)
ポイント:360
累計ポイント:2498
まだまだ修行が足りないな。
Disk2Vhdのコマンドラインでシステムで予約済みパーティションを含めつつドライブ指定をする
Windows Server 2008にはシステムで予約済みとかいう領域が勝手にできる。
この環境でVHDに含めたくないドライブがある場合、Disk2Vhdのコマンドラインが使えない。
しょうがないのでUWSCで実行した。
Option Explicit //============================================================================== // Disk2vhd自動化スクリプト // Disk2vhdのコマンドラインだとSystem Reservedを指定できないのでUWSCにて実行 // (アスタリスクもあるが、VHDに入れたくないドライブがある場合に対応できない) //------------------------------------------------------------------------------ // 13.06.06 shey_nassy 新規作成 //============================================================================== //============================================================ // 設定 //============================================================ //disk2vhdフルパス CONST C_D2V_PATH = "C:\Documents and Settings\SheyNassy\デスクトップ\Disk2vhd\disk2vhd.exe" //VHDファイル保存ディレクトリ(末尾\無し) CONST C_VHD_DIR = "F:\VHD" //VHDファイルプレフィックス CONST C_VHD_PREFIX = "bkup_vhd_" //バックアップ対象ドライブ(例.aryBackUpDrive[] = "C:\","D:\") Dim aryBackUpDrive[] = "C:\" //============================================================ // 定数 //============================================================ //チェックボックス状態 CONST C_CHECKBOX_NULL = -1 CONST C_CHECKBOX_OFF = 0 CONST C_CHECKBOX_ON = 1 CONST C_CHECKBOX_INVALID = 2 //ドライブレター用文字定数 CONST C_CHAR_C = 67 CONST C_CHAR_Z = 90 //============================================================ // メイン処理 //============================================================ Dim WindowId=Exec(C_D2V_PATH) If WindowId < 0 Then WindowId = GetId("Disk2vhd - Sysinternals: www.sysinternals.com","Disk2VhdClass") If WindowId < 0 Then ExitExit EndIf EndIf //VHDファイル名 GETTIME() Dim strVhdFileName = C_VHD_DIR + "\" + C_VHD_PREFIX + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + ".vhd" sendstr(WindowId,strVhdFileName,1,TRUE) //不要なドライブノチェックをはずす Dim DriveIdx Dim DriveLetter Dim BackUpDriveIdx For DriveIdx = C_CHAR_C to C_CHAR_Z DriveLetter = ChrB(DriveIdx) + ":\" For BackUpDriveIdx = 0 to Length(aryBackUpDrive) - 1 If DriveLetter <> aryBackUpDrive[BackUpDriveIdx] Then CheckOff(WindowId,DriveLetter) EndIf Next Next //実行 //clkitem(WindowId,"Create",CLK_BTN) //処理終了待ち合わせ //未実装 //終了 //clkitem(WindowId,"Close",CLK_BTN) //============================================================ // チェック解除 //============================================================ Procedure CheckOff(pWindowId,pTitle) Dim strCheckStatus strCheckStatus = clkitem(pWindowId,pTitle,CLK_LSTVEW) If strCheckStatus = C_CHECKBOX_ON Then //Check Off CLKITEM(pWindowId,pTitle,CLK_LSTVEW) //クリックで選択しかされないのでスペースを送る SCKEY(pWindowId,VK_SPACE) EndIf Fend //============================================================ // Memo //============================================================ //【起動オプション】 //オプションなしでスクリプト名と引数を指定した場合は、スクリプトを実行し、実行後はUWSC本体を終了します。 //UWSC.exe スクリプト名 [引数...] // ///L ///L オプションを付けると、実行はせずに、UWSC本体にファイルを読み込ませるのみとなります。 //UWSC.exe /L スクリプト名 [引数...] // ///K ///K オプションを付けると、スクリプトを実行し、実行後はUWSC本体を起動したままにします。 //UWSC.exe /K スクリプト名 [引数...] //
無効な viewstate です。に苦戦
元々、windows server 2003 IIS6.5で動いてるシステムを
windows server 2008 R2 IIS7.5に移植した時のお話。
稼動して半日、お昼休み明けに大量のExceptionが発生!!
System.Web.UI.ViewStateException: 無効な viewstate です。
System.Web.HttpException: viewstate MAC の検証フィールドです。このアプリケーションが Web Farm またはクラスタによってホストされている場合、<machineKey> 構成が同一の validationKey および検証アルゴリズムを指定していることを確認してください。AutoGenerate をクラスタで使用することはできません。
クラスタなんてしてないし、どうしたものかと。。。
現象を再確認
- 出力されるExceptionは上記2つ
- 作業し続けるとエラーは出ずに、30分以上放置してから再度画面を触るとエラーが発生
- POST時のみ
- でない場合もある
解決に至るまで
- MAC検証無効でよくね?
検証エラーのViewState受け入れちゃダメでしょ、とつっこまれこの手は使えず
チナミニ、下記みたいな注意もあるので、これは安易に手をつけなくて良かったかもしれない。
重要 : 問題の診断に役立てるときにだけ、ビューステートの MAC 機能をオフにしてください。ビューステートの MAC をオフにしたままにして問題を回避しないでください。そうした場合は、セキュリティ ホールをもたらす可能性があります。詳細については、以下の MSDN Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnaspp/htm/SecNetch08.asp
- 時間が立つとでるエラーだから、クッキーやらアイドルセッションやらの時間延ばせば。。。
意味無かった。。。
- formタグにactionとかあるんじゃ
ソース見たけどそんなものは無かった
終わってみて
なんかすごい時間掛けて調べた割りに、やってみれることは少なかった。
このエラーがでて困っている人がいたら。
@IT:.NETエンタープライズWebアプリケーション開発技術大全 Webアプリケーションの状態管理
クラスタならこの辺がんばるらしいし
(僕はクラスタでは無いのでろくに見てないけど)
何?このエラー ( ホームページ ) - とあるプログラマーのグチ - Yahoo!ブログ
formタグにactionとか書いてないか見直してみたり
それでも直らないなら、アプリケーションプール変えて見るといいかもね
CPU使用率の監視の設定とテスト
遅々として進まないZabbixの設定
なんか優先度上げにくい感じがなぁ
そんな中、今日はCPU使用率の監視とテストをしました。
テスト
下のコードをtest.jsとかにして実行する。
var x = 0; var y = 0; for (i = 0; i < 10000000; i++){ x = 0.000001; y = Math.sin(x); y = y + x; } WScript.echo("END");
CPUのコア数分実行すると、数分間CPU使用率が100%に張り付いてくれる。
途中で止めたいときはWScript.exeのプロセスを止めてあげる。
またしばらくZabbixと戯れる時間は取れそうもないなぁ
DataGridViewのコピペで苦戦
DataGridView上でコピペしたい!!と言われました。
で、ためしに「Ctrl+C」「Ctrl+V」してみたけど何もおこらない。
むぅ、しょうがないので、「Ctrl+V」が押されたらイベントを発火する
ユーザーコントロールを作ってみました。
Public Class MyDataGridView Inherits DataGridView ''' <summary> ''' ペースト後のイベント ''' </summary> Public Event AfterPaste As EventHandler Private Sub MyDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 'ペーストの時 If e.Control = True And _ e.KeyCode = Keys.V Then Me.SelectedCells(0).Value = Clipboard.GetText RaiseEvent AfterPaste(sender, e) End If End Sub End Class
で、呼出元で
Private Sub MyDataGridView1_AfterPaste(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyDataGridView1.AfterPaste Dim tmpDgv As MyDataGridView = DirectCast(sender, MyDataGridView) Dim intLastIdx As Integer = tmpDgv.Rows.Count - 1 If String.IsNullOrEmpty(tmpDgv.Rows(intLastIdx).Cells(0).Value) = False Then tmpDgv.Rows.Add() End If End Sub
としてみたのですが・・・
なぜか、新規行が一番下に追加されない。。。
で、ぐぐってみると
http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/f1424a11-08a1-4e3e-88a3-64177f5534c0/
素敵なことが書いてありました。
結局呼び出し元を下のようにして解決Private Sub MyDataGridView1_AfterPaste(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyDataGridView1.AfterPaste Dim tmpDgv As MyDataGridView = DirectCast(sender, MyDataGridView) Dim intLastIdx As Integer = tmpDgv.Rows.Count - 1 tmpDgv.BeginEdit(True) tmpDgv.NotifyCurrentCellDirty(True) tmpDgv.EndEdit() End Sub
これ、でも、CellValidatingが呼び出されていない感じ
1行ずつしかコピペしないなら最後にDataGridView.BeginEdit(True)呼べばいいかなぁ
この点についてはもう少し調べないとな。