12:40

WEBコンソールのローカルデバッグ環境構築手順(備忘録)

  • ローカルでIIS
  • Web.configの認証情報を空文字にする
  • ?:\ConfigフォルダにUserInfo.xmlをコピーする

10:37

携帯電話のSIMを通常SIMからnano SIMに変えようと思い、501SHを購入したが Softbank店舗で予備のSIMを購入することができないという問題が。。。 先に予備のSIMがあるかどうか確認しておけばよかった。 したかったことは、次のようなこと。

  1. 今のガラケー(通常SIM)
  2. 501SHに機種変更(Nano SIM)
  3. DSDSスマフォ購入(通話用SIM, データ通信用SIM)

9:20

金曜日に次のような記事を見かけたので、参考に自分も作ってみた。 紙だと持ち歩かないといけないので、Google ドキュメントだけど。

blog.jnito.com

そして、JenkinsからGitBucketへのプッシュは、丸一日かけて試してみたが 認証を突破できなかったので出直すことにした。

17:18

Jenkinsを更新したかったのは、GitBucketにプッシュを行う時に認証エラーが起きるのを回避したからだったのだが、別にJenkinsを更新しなくても、認証情報を設定すれば良かったみたい。

qiita.com

というわけで、認証情報を設定してみたが、今度はGitPublishプラグインが古いと、認証情報を使わないという問題があるみたいで、結局、うまく動作させられなかった。

[JENKINS-21116] Git Publisher does not use Credentials - Jenkins JIRA

13:39

Jenkinsの自動更新を使って更新したいけど、動かなくなるのが怖かったので別PCで下記のようなテストを行った。相当古いバージョンから最新版に更新しても動作はするみたい。

本番環境と同じ環境を用意する

  1. 最新安定板である2.73.2をインストール (on Windows7)
  2. ブラウザでJenkinsへアクセスできることを確認する。
  3. サービスを停止する
  4. C:\Program Files\Jenkins のフォルダ名を C:\Program Files\JenkinsNewなどに変更
  5. 本番環境で使っているバージョン(1.537)のファイルをC:\Program Files\Jenkinsにコピー
  6. サービスを再開する
  7. ブラウザでJenkinsにアクセスできることを確認する。またバージョンが現行バージョンと同じことを確認する。

最新版に更新

  1. 自動アップデートを使用して最新版に更新
  2. Windowsを再起動
  3. ブラウザでアクセスするが、接続エラーとなる。
    サービスの起動に失敗していた。
    ログにJavaが古いというエラーが出ていたので、jenkins/jreの中身をJenkinsNewのモジュールに変更
  4. 再度、サービスを起動する
  5. ブラウザでアクセスできることを確認。
  6. プラグインを確認して、とりあえず警告がでているものだけ更新。
  7. OS再起動後、ブラウザでアクセスできることを確認。
    10分ほどたってもページが切り替わらないので、たぶん、ブラウザ再起動でも問題なかったと思う。

10:37

HDDへの書き込みについて、次のページが参考になった。 HDDキャッシュのフラッシュ(ディスクへの書き込み)が行われなければデータが消失するということだな。(キャッシュはWindowsにもあるが、これはHDDキャッシュとは独立している) ほぼ確実に防ぎたいのであれば、ディスクフラッシュが終了するまで電源を落とさない仕組みが必要ということか。

gigazine.net

パソコンの基礎知識 > ハードディスクドライブ > ハードディスクドライブの読み書き

www.putise.com

10:11

XMLファイルが壊れる(バイナリエディタで確認すると'00'で埋まっている)現象が発生。一年前にも発生したが、原因が不明のまま。ファイル記録の方法についてきちんと理解しないと分からなさそう。

09:04

Visual Studio 2010のCPPプロジェクトの出力フォルダを変更するのは、プロジェクトのプロパティの「構成プロパティ>>全般>>出力ディレクトリ」を変更すればよい。

15:14

以前、PowerShellを使うとリモートフォルダのアクセスに時間がかかるという書いていたが、それは間違いで MS-Build の終了に時間がかかっていた。

kyamawaki.hatenablog.com

調べた結果、次のことが分かった。

  • Start-Process に -NoNewWindow オプションを付けるとプロセスの終了に時間がかかる
  • PowerShellスクリプトはバッチファイルから呼び出しているのだが、バッチをコマンドラインから呼び出すときは時間がかからない。Jenkinsから呼び出すと時間がかかる

16:59

Start-Processで時間がかかる原因が分からなかったが、System.Diagnostics.Process を使うようにすることで問題が回避できることが分かった。 System.Diagnostics.Process.Start()も問題があるようなので、次のページを参考にスクリプトを修正した。

hidari-lab.hatenablog.com

#-- Create Process --
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
$buildArgs = "/t:rebuild /p:Configuration=Release App.sln"
$proc = New-Object "System.Diagnostics.Process"
$proc.StartInfo = New-Object "System.Diagnostics.ProcessStartInfo" @($msbuild, $buildArgs)
$proc.StartInfo.WorkingDirectory = (Get-Location).Path
$proc.StartInfo.RedirectStandardOutput = $True
$proc.StartInfo.RedirectStandardError = $True
$proc.StartInfo.UseShellExecute = $False

#-- 標準出力受信用StringBuilder作成 --
$stdOutBuilder = New-Object -TypeName System.Text.StringBuilder
$stdErrBuilder = New-Object -TypeName System.Text.StringBuilder

#-- 標準出力受信イベント設定 --
$action = {
    if(![string]::IsNullOrEmpty($EventArgs.Data)){
        $Event.MessageData.AppendLine($EventArgs.Data)
    }
}
$stdOutEvent = Register-ObjectEvent -InputObject $proc -Action $action -EventName "OutputDataReceived" -MessageData $stdOutBuilder
$stdErrEvent = Register-ObjectEvent -InputObject $proc -Action $action -EventName "ErrorDataReceived" -MessageData $stdErrBuilder

#-- ビルドプロセス開始 --
$proc.Start() | Out-Null
$proc.BeginOutputReadLine()
$proc.BeginErrorReadLine()
$proc.WaitForExit()

#-- 標準出力受信イベント解除 --
Unregister-Event -SourceIdentifier $stdOutEvent.Name
Unregister-Event -SourceIdentifier $stdErrEvent.Name

#-- 標準出力表示 --
echo $stdOutBuilder.ToString() 
echo $stdErrBuilder.ToString() 

if ($proc.ExitCode -ne 0)
{
    exit 1
}

Start-Process で応答が帰らない問題も、標準出力のバッファが枯渇することが原因な気がしてきた。標準出力バッファサイズを変更できれば確認できそうだけど。

17:34

Visual Studio単体テストでもプロジェクトのプロパティで「アンマネージコードデバッグを有効にする」をチェック入れておけば、C++のコードもデバッグできる。(通常のプロジェクトでも同じだから当たり前といえば当たり前)

wcstombs_s()で日本語を取り扱う場合はsetlocale(LC_ALL, "Japanese")が必要。

15:09

DLLを作成して関数をExportしようとしていたが、なかなかExportされずに困った。 最初はヘッダファイルに関数を作っていたが、これではExportされなかった。

// test.h
__declspec(dllexport) int __stdcall func()
{
    return 0;
}

検索するうちに、なんとなくcppファイルに書かないといけないんではないかと思ってcppファイルに実装したら Exportされるようになった。(何かの記事に載ってたかと思って調べなおしたが、見つけられなかった。)

// test.h
__declspec(dllexport) int __stdcall func();

// test.cpp
__declspec(dllexport) int __stdcall func()
{
    return 0;
}

10:54

動画ファイルの先頭を削っていったらフィルターグラフが作成できるのでは? という情報をいただいたのでバイナリエディタを使って、動画ファイルの編集を試みる。。。が、保存が遅くて困っちゃう。188バイト単位で削除しようと思ったが、もう少し大きい単位で削除していこう。 と思ったら、先頭の188バイトを削除したらフィルターグラフが作成された。

10:49

昨日、C:\Program Files (x86)\Windows Kits\8.1\Include\sharedをインクルードディレクトリに追加すると、下記エラーが発生した。

c:\program files\microsoft sdks\windows\v6.1\include\ws2tcpip.h(69) : error C2011: 'addrinfo' : 'struct' 型の再定義
c:\program files (x86)\windows kits\8.1\include\shared\ws2def.h(876) : 'addrinfo' の宣言を確認してください。

もともと、SDKの6.1は使用していたが、hidsdi.hを使っていた記憶はなかったので、C:\Program Files (x86)\Windows Kits\8.1\Include\shared もインクルードディレクトリには設定していなかったと思うんだが。 ともかくビルドできないと先に進めないので、hidsdi.hが必要なプロジェクトだけ C:\Program Files (x86)\Windows Kits\8.1\Include\shared をインクルード対象とするように設定することで、ビルドできるようになった。

11:04

ビルドは通ったが、デバッグできない。メインアプリはビルドできたが、サブモジュールを再作成できない問題が。結局、インストールイメージからモジュールをコピーして、その環境にビルドモジュールを上書きすることでデバッグできるようにした。

13:05

パソコン画面の解像度を大きくできないなあと思っていたら、Intelのグラフィックドライバーの設定がマルチディスプレイになってたためのようだった。シングルディスプレイに変更すると解像度を変更できた。そっか、低い方に引きずられるんだな。

17:30

同一装置で録画したm2tファイルで一つはDShowのフィルターグラフができて、もう一つはフィルターグラフが作成されない。ファイルが悪いんだろうということは分かったが、ファイルのどこに問題があるかは分からないという状態。久々にXPを使うとUIの違いに戸惑うなあ。

18:04

フィルターグラフが作成されないのはDemuxerの不具合だろうという結論になった。(新しいDemuxerに変えると動作したので) MPEG-TSファイルは188バイト単位で編集(削除)していけば、再生に影響がないことを教えてもらった。