時雨に舞う

プログラミングや技術情報などの備忘録

Portfowarderの活用

お客さんの開発環境に接続して、その先にあるDBをグラフィカルに確認したい!

そんなことありませんか?

WebサーバにSSHでつないでそこからさらにDBに接続する程度なら、Windows環境では、Navicat単体で簡単に実現できますね。

Linux環境と違い、もう一段SSHを噛ますと途端に面倒になります。

こんな時、少し古いソフトになりますが、Portfowarderが便利です。

※組み込みのOpenSSLのバージョンが古いので、使用環境は選びましょう。

続きを読む

UnityのTEAM LICENSEがUnity Proに付属?

2015/05/28現在、Unityのオンラインストアを閲覧すると「TEAM LICENSE:Unity Pro に付属」と書いてあり、取り敢えずアセットキャッシュサーバーを試してみたら使えたのでご報告です。(もちろんUnity Proライセンスでアクティベートしてある状態です)

以前は確か有料で別途購入が必要だったと思うのですが、どこかのタイミングで無料になったのでしょうか・・・?

 

●アセットキャッシュサーバーの取得および使い方は下記リンク先を参照

Unity - コラボレーション - Unity Team License

 

ちなみにキャッシュサーバーの設定をしてからSwitchPlatformしてはじめてキャッシュされるので、一回は泣くほど待たされると思います。

 

著者:t.n

サクラエディタのデフォルト文字コードをUTF-8にする

設定しないとだめなんですね。

コードを変えることがあるので、調べてみたらありました。(基本?)

忘れないように記載。

 

H.Y

blog2.k05.biz

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