Goのテストパッケージの末尾に_testをつけるかつけないか問題
一行
原則つけたほうが良い。
違い
末尾に_testを付ける場合
対象のパッケージとは別物と認識され、private methodを呼び出すことはできなくなる。
ここでprivate methodのテストができないじゃないか問題が発生するが、外部に公開している振る舞いのテストが担保されていれば問題ないという考え方をベースにすればprivate methodのテストを行う必要は無いため問題ない。public methodを呼び出すことでprivate methodを疎通させてカバレッジをカバーすれば良い。
private methodまでテストを書くと、継続的にリファクタリングや機能追加を攻めて行うためにテストコードを書いているのに、それのメンテコストがかかり足を引っ張ってしまうことになるっぽい。例えば機能追加をしようと思ったらテストコードめっちゃ書き換えないといけない・・・とか。
どうしてもprivate methodのテストを行いたい場合は、_internal_test.goとかいう名前のファイルを作り別だしにして書いている人とかいるみたい。
末尾に_testをつけない場合
実コードと同じパッケージとみなされるため、private methodも含めすべて参照できる。詳細なテストが可能。
闇雲にすべてのテストを書くと見通しが悪くなることがあるのと、メンテのコストも掛かるので気をつけるべし。
どうするのが良いのか(個人的な意見)
原則として_testをつけて、このパッケージの利用者観点で振る舞いのテストが行えればOK。
private methodのテストも行いたい場合は_testをつけずにファイル名を_internal_test.goとしてテストコードを書く。
private methodのテストがとても重要なら、_testをつけずに xxx_test.go などのファイルにテスト書いてしまってもいいと思う。
Vue.jsなアプリをnow.shにデプロイした
スゴイ。なんの設定もいらない。
project root でnowって打つだけ。
なんだこれ最強すぎる。
herokuの3倍簡単にアプリケーションを公開できる。
■
iDeco、受給時に税金がかかるから結局いくら節税になるのか考えるのがめんどくさくなり、その金で自分で運用したほうが儲かるんじゃないかと思って踏みとどまった。
運用中は非課税だから複利のメリットが大きいということでいいのかな?
少し調べてみると、受給時には控除枠が存在するらしい。
わしらプログラマーは退職金ないのが普通なので、控除額MAXまでは入れておいたほうがいいのかも。
https://style.nikkei.com/article/DGXMZO08497510Y6A011C1PPD001
勤続年数が30年であれば退職所得控除は1500万円
今から掛金MAXの23000円を預けても控除額に達しないな。よし、申し込も。
控除枠を使い切るのは節税の基本な気がした。という雑なメモ。
Install rbenv and nodenv
Amazon Linux2(CentOS7)
Rails5を動かすために。コマンドだけ貼っとく。
# 事前準備 yum -y install git yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel yum -y install mysql mysql-devel # rbenv install git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/bashrc echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/bashrc echo 'eval "$(rbenv init -)"' >> /etc/bashrc # ruby-build git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build rbenv install -v 2.6.0 rbenv global 2.6.0 rbenv rehash rbenv exec gem install bundler rbenv rehash # nodenv install git clone git://github.com/nodenv/nodenv.git /usr/local/nodenv echo 'export NODENV_ROOT="/usr/local/nodenv"' >> /etc/bashrc echo 'export PATH="${NODENV_ROOT}/bin:${PATH}"' >> /etc/bashrc echo 'eval "$(nodenv init -)"' >> /etc/bashrc # node-build git clone https://github.com/nodenv/node-build.git /usr/local/nodenv/plugins/node-build nodenv install 10.7.0 nodenv rehash nodenv global 10.7.0
nginx
sudo amazon-linux-extras install nginx1.12 -y sudo systemctl start nginx.service sudo systemctl status nginx.service sudo systemctl enable nginx.service
nginx config抜粋
upstream puma { server unix:///opt/xxx/shared/tmp/sockets/puma.sock; } server { listen 80; server_name localhost; location / { proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://puma; } }
firewalldが動いていたら止める
systemctl status firewalld.service systemctl stop firewalld.service
An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue.
エラー
An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.4.10'` succeeds before bundling.
解決方法
sudo yum install mysql mysql-devel