memo.xight.org

日々のメモ

Google Chrome で ERR_SSL_VERSION_INTERFERENCE が発生した時のワークアラウンド

Summary

Google Chrome を利用して Proxy経由で mail.google.com にアクセスした際、
ERR_SSL_VERSION_INTERFERENCE が発生する。

ERR_SSL_VERSION_INTERFERENCE

利用している Google Chrome のバージョンは 61.0.3135.4 (Official Build) dev (64-bit)

chrome://flags/ から
Maximum TLS version enabled の値を TLS1.2に変更することで、応急処置完了。

Maximum TLS version enabled - TLS1.2
Relaunch now

Reference

superusers.com - This site can’t be reached: “mail.google.com is currently unreachable”
https://superuser.com/questions/1217257/this-site-can-t-be-reached-mail-google-com-is-currently-unreachable

2017年 プロジェクトマネージャ試験の自分なりの解答

Summary

2017年 プロジェクトマネージャ試験を受けてきた。
午後Iは問1,3を選択
午後IIは問1を選択
まだ解答がでていないので、自分の解答を一部訂正して書いておく。

午前II

問1 エ
問2 ア
問3 イ
問4 ウ
問5 ウ
問6 エ
問7 エ
問8 ウ
問9 ア
問10 イ
問11 エ
問12 ウ
問13 ウ
問14 エ
問15 イ
問16 ア
問17 エ
問18 ア
問19 エ
問20 イ
問21 イ
問22 ウ
問23 エ
問24 イ
問25 エ

午後I 問1

設問1 製品の輸出に必要な認定を省き、製品輸出開始期日を厳守するため (30/30字)
設問2 ワークショップの出力となる差異一覧に漏れがあるとスケジュール遅延が発生するから (39/40字)
設問3
(1) K社作業員がワークショップに参加しないことによる要件定義遅滞を防止するため (38/40字)
(2) リソース : ワークショップにK社の人員を割くことが出来ない (23/25字)
(2) スケジュール: MESプロジェクトも増設工事も作業期間の余裕がない (25/25字)
設問4
AI活用の前提となる一定期間の履歴データが揃っていないから (29/35字)
AI活用の前提となる生産計画最適化の基準が明確になっていないから (32/35字)

午後I 問3

設問1 (1) 結合テストケース作成の入力となる内部設計書は、単体テスト完了まで修正される可能性があるから (45/45字)
設問1 (2) 過去に作成したモジュールに起因するバグ (19/20字)
設問2 (1) 修正が後工程になるほど修正コストが高くなるから (23/25字)
設問2 (2) a: ホワイトボックス, b: ブラックボックス
設問2 (3)
  分析対象: 見直し前後の見逃しバグの件数 (14/15字)
  評価結果: 見直し後に見逃しバグの件数が減っている (19/20字)
設問3 (1) 過去に作成したモジュールを活用しているかどうか (23/25字)
設問3 (2) 摘出された未修正バグの件数が多く、修正期間が足りないから (28/35字)
設問4 内部設計書の訂正箇所及び新規作成箇所に漏れがないよう確認 (28/30字)

機械学習アルゴリズム機能比較

Reference

Qiita - 2017-02-20 - 主要クラウドサービス別 機械学習アルゴリズム機能比較
http://qiita.com/iga-tomo/items/c3228700899f86a11508

Microsoft Azure - 2017-03-14 - Machine learning algorithm cheat sheet for Microsoft Azure Machine Learning Studio
https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-algorithm-cheat-sheet

RubyMine + IdeaVim

Summary

RubyMine を vim のキーバインドで使いたい。

$HOME/.ideavimrc

" clipboard sharing
set clipboard+=unnamed

RubyMine - [Preferences...] - [Keymap]

Plug-ins - IdeaVim - Scroll Half Page Down に Command+D
Plug-ins - IdeaVim - Scroll Half Page Up に Command+U
Plug-ins - IdeaVim - Redo に Ctrl+R

Reference

JetBrains - Plugins - IdeaVim
https://plugins.jetbrains.com/plugin/164-ideavim

Heroku app の作成

作成

$ heroku create
Creating app... done, ⬢ heroku-appname-00000
https://heroku-appname-00000.herokuapp.com/ | https://git.heroku.com/heroku-appname-00000.git


一覧表示

$ heroku list
=== user@example.com Apps
heroku-appname-00000
heroku-appname-11111
heroku-appname-22222


削除

$ heroku apps:destroy --app heroku-appname-00000 --confirm heroku-appname-00000
 ▸    WARNING: This will delete ⬢ heroku-appname-00000 including all add-ons.
 ▸    To proceed, type heroku-appname-00000 or re-run this command with --confirm
 ▸    heroku-appname-00000

> (ここに heroku-appname-00000 を入力)
Destroying ⬢ heroku-appname-00000 (including all add-ons)... done

削除 (確認なし)

$ heroku apps:destroy --app heroku-appname-00000 --confirm heroku-appname-00000
Destroying ⬢ heroku-appname-00000 (including all add-ons)... done

Railsでカラム名の変更

Terminal

rails generate migration fix_typo


db/migrate/XXXXXXXXXXXXXXXX_fix_typo.rb

class ChangeColumnModelName < ActiveRecord::Migration[5.0]
  def change
	rename_column :modelname, :wrong, :correct
  end
end

Terminal

rake db:migrate

RubyMine + bundler + rails

環境整備

-- Terminal
bundle init
bundle install --path vendor/bundle --jobs 4
bundle exec rails new sample_app


RubyMine

RubyMineでアプリケーションのディレクトリ (sample_app) を開く
[Tools] - [Bundler] - [Install] --path vendor/bundle --jobs 4

[Run] - [Edit Configure...]
Rails, Rake, Ruby, RSpec の Bundler タブから
Run the script in context of the bundle (bundle exec) にチェックを入れる。

rails generate で error

gem install spring


[Tools] - [Run Rails Generator...] が表示されない場合

rm .idea


RubyMine を終了、再度起動

fish + tmux + ssh で ProxyCommand が動作しなくなった場合の対処

Summary

fish に乗り換えたら sshのプロキシが動作しなくなったのでその対処。

$HOME/.ssh/config

Host target.example.com
	HostName		target.example.com
	ProxyCommand	ssh -W %h:%p proxy.example.com

ssh に -v オプションを付けて実行してみる

ssh -v target.example.com
...
...
debug1: ssh_exchange_identification: \033Ptmux;\033\033]1337;CursorShape=0\033\\SSH-2.0-OpenSSH_5.3
...
...

ssh_exchange_identification でエスケープシーケンスが見える。

$HOME/.config/fish/config.fish

文字色を付けている部分を、インタラクティブモードで読み込ませないように変更。

if status --is-interactive
	...
	...
	...
end

ログインシェルはbashのままfishを利用したほうが良いかも

Qiita - 2016-10-04 - ログインシェルはbashのままfishを利用するにある通り、
fish は POSIX 非互換なので、インタラクティブシェルのときだけfishを利用するという手が良いかもしれない。

Reference

GitHub - fish-shell/fish-shell - Issues #2160
https://github.com/fish-shell/fish-shell/issues/2160

Qiita - 2016-10-04 - ログインシェルはbashのままfishを利用する
http://qiita.com/tak-onda/items/a90b63d9618d6b15c18c

様々なルートCA証明書を生成する

Summary

cURLに付属する mk-ca-bundle.pl を利用すると
様々なルートCA証明書を生成することができる。

ghq get curl/curl
perl (ghq root)/github.com/curl/curl/lib/mk-ca-bundle.pl

実行すると、実行したディレクトリに
certdata.txt がダウンロードされ、 ca-bundle.crt が生成される

Drupalのsmtp モジュール + PHPMailerのアップデート

Summary

DrupalのPHPMailerのリモートコード実行脆弱性対策を行う。

sites/all/libraries/PHPMailer

cd sites/all/libraries
git clone https://github.com/PHPMailer/PHPMailer
ln -s PHPMailer phpmailer


sites/all/modules/smtp/smtp.module

include するファイルを class.phpmailer.php から PHPMailerAutoload.php に変更する。

/**
 * Load the PHPMailer library.
 *
 * @return
 *   TRUE if the PHPMailer library is loaded, FALSE otherwise.
 */
function smtp_load_library() {
  // Include the PHPMailer class (which includes the SMTP class).
  if (!class_exists('PHPMailer')) {
	// First try using the libraries module.
	if (module_exists('libraries')) {
	   // $smtp_phpmailer_library = module_invoke('libraries', 'get_path', 'phpmailer') . '/class.phpmailer.php';
	   $smtp_phpmailer_library = module_invoke('libraries', 'get_path', 'phpmailer') . '/PHPMailerAutoload.php';
	 }
	 //If you aren't using libraries, then check a couple other places.
	 else {
	   //Look in the default libraries location
	   // $smtp_phpmailer_library = 'sites/all/libraries/phpmailer/class.phpmailer.php';
	   $smtp_phpmailer_library = 'sites/all/libraries/phpmailer/PHPMailerAutoload.php';
	   //If the default libraries doesn't exist, then try the old module location.
	   if (!file_exists($smtp_phpmailer_library)) {
		 // $smtp_phpmailer_library = drupal_get_path('module', 'smtp') .'/phpmailer/class.phpmailer.php';
		 $smtp_phpmailer_library = drupal_get_path('module', 'smtp') .'/phpmailer/PHPMailerAutoload.php';
	   }
	 }
	 //Now include whatever you found.
	 if (file_exists($smtp_phpmailer_library)) {
		require_once($smtp_phpmailer_library);
	 }
  }
  
  // Tell the caller if PHPMailer class exists.
  return class_exists('PHPMailer');
}


Reference

github.com - PHPMailer
https://github.com/PHPMailer/PHPMailer

Drupal.org - PHPmailer 3rd party library - DRUPAL-SA-PSA-2016-004
https://www.drupal.org/psa-2016-004

Qiita - PHPMailerのリモートコード実行脆弱性(CVE-2016-10033)の影響範囲
http://qiita.com/ichikaway/items/d2d9205c57f35b618951