Aptio BIOSでCD/DVDドライブから起動させる設定方法
一部のPCで用いられているAptio BIOSでは、DVDなどのディスクから起動しようとしても、「Boot Option」では以下の選択しか表示されない事がある。
UEFI: IP4 Realtek Ethernet Controller
UEFI: IP6 Realtek Ethernet Controller
Windows Boot Manager
Disabled
CD/DVDドライブから起動させるためには、以下の2つの設定が必要である。
1. 「Bios Features」メニューの中にある「Secure Boot」を「Enabled」から「Disabled」に変える
2. 同じく「Bios Features」メニューの中の「CSM Support」を「Never」から「Always」に変える
この設定を保存してBIOSを終了させると、再びBIOSを起動した際に「Boot Option」でCD/DVDドライブが選べるようになる。
ちなみに、参考にしたのは下記リンク先。
http://superuser.com/questions/561606/how-to-boot-from-a-cd-on-an-aptio-bios
著者:N.M
puttyで任意のセッションをバッチで起動する
puttyで管理するセッションがすごい量になってきました。
あのウィンドウって大きくならないですよね?(知らないだけ?)
設定情報はレジストリに入っているらしいので、そこを書き換えるバッチを作るのは面倒だしリスクが高そう。
でもやっぱりセッションを探してスクロールするのは煩わしいのでバッチで解決してみました。
start "" "C:\Program Files (x86)\PuTTY\putty.exe" -load "%~n0"
この一行をテキストファイルに書き込んで、ファイル名を「xxx.bat」としましょう。
コマンド内にある「%~n0」はファイル名の拡張子を除く部分を指します。つまりファイル名が「xxx.bat」の場合はセッション名が「xxx」のものを実行する動きになります。
つまり、上記のコマンドのバッチファイルを作成したら、後はコピーしてファイル名をセッション名に変えるだけで任意のセッションを実行するバッチがどんどん出来あがるということです。
「aaa.bat」「bbb.bat」…と中身は同じでファイル名だけ違う、でも「aaa.bat」はセッション名「aaa」で接続を試みることになります。
ちなみに start コマンドは非同期処理でputtyを実行する為に入れています。要するにコマンド実行中のウィンドウ(黒いウィンドウ)を出し続けない為のものです。
あと、puttyの実行ファイルのパスは任意のものに変更してくださいね。
同じ事で悩んでいる方の役に立てれば幸いです。
著者:t.n
Unityで#ifを使う
C#でプログラムを書いている前提で、Defineシンボルの定義によって実行コードを分岐される方法です。
C言語みたいな「#ifdef」ではなく「#if」になります。
(1)プログラム側
#if USE_AAA
:
#endif
(2)エディタ側
「File」→「Build Settings」→「Player Settings」
「Other Settings」の項目を開き「Configuration」「Scripting Define Symboles」に定義を記載する。
例> USE_AAA;USE_BBB
※複数ある場合はセミコロン
ちなみにここを変更すると
ProjectSettings/ProjectSettings.asset
が変わります。
著者:t.n
Selenium IDE を使ってみた
Webサービスのテストを行う際に商品や会員などをひたすら登録する単純作業が発生したら、Selenium IDE を検討してみてはいかがでしょうか。
Selenium IDE はブラウザ上の自動テストツールです。
手軽に使うには Firefox をインストールして、アドオンで Selenium IDE を追加します。色々と準備すれば他のブラウザもできるようですが、取り敢えず今回の要件はデータ入力なのでブラウザは問わないのです。
所感としては強力なような非力なような、標準でテストケースの繰り返し処理を入れて欲しかったが・・・、他のアドオンやコードの工夫で対応するしか無さそうですね。
1.まずは一連の動作を記録しよう
Selenium IDE は記録モード(赤い丸ボタン)があり、それをONにした状態でブラウザ上のコントロールをクリックしたり、テキストボックスに入力を行うと、1アクション→1行という単位で変換してくれます。
例えば「あいうえお」と入力したら
type | id=txtName | あいうえお
といった具合です。上記のパイプで繋ぐ表現は
コマンド | 対象 | 値
とご理解ください。
2.記録された内容を整理しよう
途中でクリックミスしたり誤入力したりすると、意図しない行が生成されるのでその辺りを削除するなどして必要なフローだけ残るようにしましょう。
3.コンボボックスに注意しよう
コンボボックスの中には画面内に捉えてないと失敗する事があります。
そんな時は画面をスクロールさせ、画面内に捉えてからクリック動作するように調整してみてはいかがでしょうか。
storeEval | selenium.browserbot.getCurrentWindow().scrollTo(0,1900) |
この1900が座標値ですが、この値は何回か試して出したものです。コントロールの位置やブラウザの画面サイズなどから計算する事もできるかもしれませんが、今回はそんなに多くなかったのでマジックナンバーで失礼。
4.上記2.の内容を関数化しよう
追加でアドオン「SelBlocks」を入れると関数化など便利なコマンドが追加されます。それを使って関数にしてしまえば、繰り返し処理も書き易いです。
function | 関数名 |
:
endFunction | |
これで関数ができました。繰り返しの呼び出し部を最初に持ってきて、関数を後に記述するといいかと思い、下記のようにしてみました。
for | i=0; i<10; i++ | i
call | 関数名 |
endFor
exitTest
function | 関数名 |
:
endFunction | |
ようやくやりたかった繰り返し処理ができました。
5.変数を使ってワンランク上の自動化を目指してみよう
ここまできたら商品IDなどユニークな文字列を動的に生成しつつイテレートしたいなぁ~と思うのが普通ですよね。
store | 値 | 変数名
※2番目が値である点に注意!Selenimu IDE の画面上は3番目のキャプションが「値」となっている!!
また、文字列と数値を結合したり、四則演算する場合は
storeEval | javascript | 変数名
という形でjavascriptに頼るのが一般的(?)らしいです。ベストプラクティスは他にもあるかもしれませんが…。
例えばユーザーIDの命名規則が'XYZ'に続けてゼロ埋め6桁数値で、forループ内のiを使って増加させていく場合、
store | 1234 | baseUserId
storeEval | 'XYZ'+('00000'+(parseInt(storedVars.baseUserId)+parseInt(${i}))).slice(-6) | userId
ここで1234はループ開始時のベース値として使っています。
変数を使う時は
clickAndWait | id=btn_itemid${itemId} |
という感じで ${変数名} で適用させます。
著者:t.n
SQL Server 遅いクエリの特定
MySQLなんかだと
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=5
とかで分かるのですが、SQL Server の場合のやり方を知らなかったのでメモします。環境が SQL Server 2000 なので参考にならないかもしれませんが、取り敢えず。
スタートメニューから「Microsoft SQL Server」→「プロファイラ」を順に選びます。
メニュー「ファイル」→「新規追加」→「トレース」を順に選びます。
「SQL Server の接続」ダイアログで接続対象や認証情報を入れて「OK」ボタン。
「トレース プロパティ」ダイアログで
【全般】
トレース名:お好きな名前をどうぞ
テンプレート名:SQLProfilerTSQL_Duration
【イベント】はそのまま
【データ列】
StartTime、EndTime、HostNameを追加しておくと便利
【フィルタ】
「Duration」→「Greater than or equal」にミリ秒を入れる
(例:3秒以上かかるものを対象とするなら3000)
で、「実行」ボタン。
これでリストに表示される。CSV出力ができないしカラムでソートできないのでリスト選択してコピー、エクセルにペーストしてフィルタかけるなりして閲覧した方が良いかもしれません。
最新の SQL Server はこの辺りどうなんでしょうかね、きっと便利になっているのでしょう。
トレースが終わったらツールバーの所にある停止を押して止めましょう。それなりに負荷をかけるでしょうから、必要最小限に留めたいですね。
著者:t.n
awsのCloudFrontを試してみる
awsのCloudFront、要するにCDNですね。
今持っているアカウントが無料期間中なので、せっかくだから試してみました。
今回用意したコンテンツ自体がテキスト数行だった為、その速度向上については触れる事ができません。
CloudFrontの設定で少しハマったのでその点について少しだけ。
まず、CloudFrontの設定を変えて思った通りに動かない時、DistributionのStatusがDeployedになっているかを確認しましょう。何か設定を変えると10分~20分くらいは更新処理で反映されていない点に注意!
せっかちな私は設定を変えて「Save」ボタンを押したらすぐに反映すると思いこんで、思った通りに動かず、あーでもないこーでもないと無駄に時間を費やしてしまいました…。
きっとあちこちにあるサーバーに情報を同期させる為、時間がかかってしまうのでしょうね。
次に設定を変更してもそもそもキャッシュされたままだと反映されないやつもある。取り敢えずDistributionの詳細からInvalidationsタブを選択し、Create Invalidationから任意のObject Pathsを指定してInvalidateしてみましょう。
ちなみにこの処理も結構時間がかかります。StatusがCompletedになるまでしっかりと待ってから次の行動に移すのが吉です。
CloudFrontを使う場合はEC2やS3と連動させると思いますが、Distributionの詳細からBehaviorsタブでBehaviorを追加する事で、任意のパターンファイルを任意のEC2やS3から取って来る形に構成する事ができます。
例えば *.jpg は S3 から、*.php は EC2 から、といった感じです。ちなみにphpはキャッシュして欲しく無いのでBehaviorの設定でObjectCachingをCustomizeにし、Minimum TTLを0としたのですが、保存しても設定が反映されません。気付かずに何度か無駄に更新してしまいました。
CloudFrontのキャッシュ時間(TTL)はどの程度なのか | Developers.IO
上記のリンクにあるページから、headerでCache-Controlを使うのが順当なやり方だと知り、phpに
<?php header("Cache-Control: no-cache"); ?>
を付ける形でキャッシュさせないようにできました。
とりあえずここまで
著者:t.n