かなり困った。新しいPC(Windows10)に変えてから初めて保守しているシステムの改修をしているのだけど

SQLServerに接続できなくなっていた。エラーは下記。


Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
どうやらセキュリティ的な問題で繋げなくなっているらしく(1024bitがうんたら)、回避策を調べても見つけられず、、、
Java7の特定のVersion移行にすれば回避できるけどシステム的にそれをすると結構改修が必要となってしまいそう。
Windowsの特定のパッチを消せばいいという情報もあったけど対象のセキュリティパッチは見当たらずお手上げ。。。

Certified ScrumMasterに認定されました

[CSM]Certified ScrumMasterに認定されました

  • 認定されるには、3日間の腰痛との闘いになる研修と、研修後約一か月後の試験にパスする必要があります。スクラムマスターの役割とか、セレモニーとかそういった関連の記事は結構たくさんあるのでここでは書きません。試験で今回2問間違えてしまいましたので、その部分を理解する為に下記の整理をしておきます。
  • プロダクトオーナーがデイリースクラムに参加した方が良い理由
    • ここを間違えた理由は、デイリースクラムでプロダクトオーナーは進捗を確認しないのでは?と思ったからですが、エッセンシャルスクラムによると、プロダクトオーナーは話を聞いて、進捗を把握し、開発チームを支援できることがないかを見つけ出す。とあります。プロダクトバックログに不明瞭な点がある場合は明確化します。
  • スプリントレビューの主な目的
    • これを間違えた理由として、スプリントレビューはスクラムチームのみで実施するものと思い込んでいたからです。スクラムチーム以外のプロジェクト関係者が参加している時点で選択肢から除外してしまっていました。今まで作ってきたものを対象として確認をする場であり、より価値のあるものを作るため例えばステークホルダからのフィードバックを受けても良いです。

ということで、間違えた問題に関しては、どうなっているとより良いのか?という観点で考えると正解の選択肢に対して何の違和感もありませんでした。

健康診断で3年連続GPTが高いと結果がでた。そろそろ本気で何とかしようと思う。

  • 医療関係のドラクエ仲間に相談し、運動は、歩く、ストレッチ、ヨガを勧められた。イメージは中国拳法するみたいな感じらしい。
  • 食事は別の医療関係のドラクエ仲間に聞いたけど、肉は赤身であればOKらしい。あとは野菜、大豆とか鳥のムネ肉とかササミとか。
  • 取り合えず今日はお昼はSASAYA CAFEという錦糸町のお店でご飯をした。スカイツリー駅と錦糸町の間くらいにあって結構歩いた

http://www.sasaya-cafe.com/
そのあとSeasarConference2015へ参加。飯田橋から逆方向の道へ行ってしまってここでも少し歩いた。とりあえず一か月くらい食事と運動をして再検査へいく!

Serviceが起動しない

  • 既に別Projectで入っていたMySQLを消して、新しいMySQLを入れた時にServiceが起動しないではまったのでメモ
    • まずServiceからMySQLが消えなかった→コマンドプロンプトを右クリックで管理者で起動してsc delete MySQL
    • インストールしてサービス起動ができない→エラーが大量にでてて追い切れない
      • removeしても消えなかったファイル郡を全部けして再度インストールでうまく行った

Windowsなので
C:\MySQL hogehoge\みたいなフォルダ削除
C:\ProgramData\MySQLを削除
C:\Program Files\MySQLを削除

solrであれこれ苦戦

  • これを書いているのはsolr4.7.2利用の際の話です
  • solrの管理者画面的なのでqueryを投げる際に、データの_version_を見ると、IEchromeでデータが違った。そして、select?q=xxxxみたいなので取得すると、この値もまた違う値となった。どうやらブラウザで表示する場合は末尾が丸まっているのか?なんなのか最後が00で終わるようになっている。responseを受け取った時点では783のような末尾で終わる数字なのに、IEだと800になり、chromeだと700になっている。騙された。
  • rollbackがうまくいかない。どこかの記事にDBとは違うぜとあったけどそれともちょっと違う気がする。データを更新(add)して、コミットをしないでrollbackを実施した後に、同じデータに対して更新をかけるとversion conflictとなる。versionが00001と予想したけど実際は00002なんだぜみたいな感じ。selectで見てみると00001となっていて、サーバーを再起動してから見てみても00001になっている。add→rollback→commit→addとすると想定していた動きになっているようにみえる。

IEでBasic認証

  • IEの場合はwindow().alert()のaccept()が効かない為何か方法がないかとちょっと調べた感じIEの場合はレジストリいじるとか、諦めて手でBasic認証するとかいうのしか見つからなかった。レジストリは嫌だったのでRobotを利用して対応した。困った時にRobotはリーサルウェポンでござる。
//user
keyPress(KeyEvent.VK_U);
keyRelease(KeyEvent.VK_U);
keyPress(KeyEvent.VK_S);
keyRelease(KeyEvent.VK_S);
keyPress(KeyEvent.VK_E);
keyRelease(KeyEvent.VK_E);
keyPress(KeyEvent.VK_R);
keyRelease(KeyEvent.VK_R);
//tabで移動
keyPress(KeyEvent.VK_TAB);
keyRelease(KeyEvent.VK_TAB);
//pass
keyPress(KeyEvent.VK_P);
keyRelease(KeyEvent.VK_P);
keyPress(KeyEvent.VK_A);
keyRelease(KeyEvent.VK_A);
keyPress(KeyEvent.VK_S);
keyRelease(KeyEvent.VK_S);
keyPress(KeyEvent.VK_S);
keyRelease(KeyEvent.VK_S);
//tabで必要なだけ移動してEnter押す
keyPress(KeyEvent.VK_TAB);
keyRelease(KeyEvent.VK_TAB);
keyPress(KeyEvent.VK_TAB);
keyRelease(KeyEvent.VK_TAB);
keyPress(KeyEvent.VK_ENTER);
keyRelease(KeyEvent.VK_ENTER);

UTFlute使ってみた

  • ほとんど設定とかもないしあんまドキュメント読まなくてもテスト実行できるとこまではすぐでよかった。
  • 一点はまったのが、ConditionBeanを利用しているとこでNoSuchMethodExceptionが発生
    • hogeProjectとhogeDaoProjectがあって、hogeProjectがhogeDaoProjectを参照していて、hogeProject側でUTFlute(0.4.5)を使っていたのだけど、hogeDaoProject側はDBFluteの1.0.5Jを使っていて、UTFluteは1.0.5Fのruntimeを使っているみたいでそっちを参照するようになってしまっていた。setupEfpgというのが有る無しの差異があったみたいだ。とりあえずDao側を変えるのはめんどいのでJを参照するようにして実行。
  • ついでに今Seleniumでテストを作成してみているのだけど、結構なんでもできて良い感じ。
    • Webにログインして、データを登録、画面のイメージ保存、出力されたPDFの帳票の保存をするとこまではやって、登録されたDBデータの検証もやりつつ今度はPDFの帳票をどうにか検証できないかみているところ。少し調べたところPDFBoxというのがあるけど使えるかまだ見れていない。DiffPDFというのを軽く試したけど思ったようにはいかなかった。お金かけていいならAdobeのがあるみたいだけど。
    • PDFの保存は別ウィンドウでPDFを開いたのだけどWebDriverでウィンドウをPDF側のに切り替えて、なんとかしようとしたけどhtmlの要素がうまくとれなくて仕方ないからRobotを使って保存のショートカットをキーボード操作でするようにした。
keyPress(KeyEvent.VK_CONTROL);
keyPress(KeyEvent.VK_SHIFT);
keyPress(KeyEvent.VK_S);
//ここでちょっとwait
keyRelease(KeyEvent.VK_CONTROL);
keyRelease(KeyEvent.VK_SHIFT);
keyRelease(KeyEvent.VK_S);
//ここでちょっとwait
keyPress(KeyEvent.VK_ALT);
keyPress(KeyEvent.VK_S);
//ここでちょっとwait
keyRelease(KeyEvent.VK_ALT);
keyRelease(KeyEvent.VK_S);

こんな感じ。
で、PDFを開いていたウィンドウはもういらないので同じように

keyPress(KeyEvent.VK_ALT);
keyPress(KeyEvent.VK_F4);
keyRelease(KeyEvent.VK_ALT);
keyRelease(KeyEvent.VK_F4);
  • その他Tipsメモ
    • Seleniumでよくやらかすのが、画面の表示倍率を100%にしてなくてエラーになるやつ。。。
    • 画面のイメージの保存でうまく全体を残せない時
      • 画面をスクロールさせてキャプチャした。こんな感じ。
JavascriptExecutor je = (JavascriptExecutor) getDriver();
je.executeScript("scroll(0,0);");
//キャプチャ実施
je.executeScript("scroll(0,1000);");
//キャプチャ実施
  • InternetExplorerDriverが64bitの使うと動きがありえないくらい遅い。32bitを使うと快適