a tomato

トマトが大好きです

golang1.9 ReuseRecordでCSVのREADパフォーマンスが向上するかも!?

golangを1.9にアップデートしてみました。

Go 1.9 Release Notes - The Go Programming Language

f:id:kzdev:20170908010918p:plainf:id:kzdev:20170908010918p:plain

release noteを見ると機能の追加からパフォーマンスの向上まで色々ありますが、
今回は、CSVのREAD性能が向上したというので、ベンチマークを取ってどのくらい改善されたのか確認します。

続きを読む

MacにVisualStudioCodeを使ったpython開発環境の構築

Mac上(macOS Sierra)にVisualStuioCodeをインストールして、pythonの開発環境を構築していきます。
pythonは2系と3系がありますが、今回は3系を利用します。

前提

  • homebrewが導入済みであること
  • VisualStudioCodeがインストール済みであること

code.visualstudio.com

インストール

terminalを起動し、以下の手順でpythonをインストールします。

% brew install python3

% which python3
/usr/local/bin/python3

% which pip3
/usr/local/bin/pip3

以下は、pip3でインストールすることに注意して下さい。

参考

qiita.com

% pip3 install virtualenv
% pip3 install virtualenvwrapper

virtualenvwrapperを使うために、以下の環境変数を追加します。

$ vim ~/.basrh

補足 zshを利用している場合は、~/.zshrcに追加して下さい。

export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 

追加した環境変数を読み込みます。

$ source ~/.basrh

仮想環境の作成

virtualenvにより、システム側にインストールされたpython環境と切り離した環境を作る。

基本は、システム側に大量のpackageがインストールされてカオスになることを防ぐために、基本は案件毎に仮想環境を用意して開発した方が良いです。

% mkdir /Users/kzdev/python_env
% cd /Users/kzdev/python_env

# mkvirtualenv <option> <仮想環境の名前>
% mkvirtualenv --no-site-package venv1
    # --never-download        : ネットワークからDLをしない
    # --system-site-packages  : インストール済みモジュールを使用する
    # --no-site-packages      :  インストール済みモジュールを全て外した状態で仮想環境が作成される

# 作成された仮想環境がロードされた状態になる
(venv1)%

VisualStudioCode設定

  • Command + Shift + Pを押して、Command Paletteを起動
  • >shellと入力して、以下の画像赤枠の項目を選択実行する

f:id:kzdev:20170905033825j:plain

補足 上記の設定で、terminal上からcodeでVisualStudioCodeを起動することが出来る用になります。

  • Code-基本設定-設定を開き、以下の設定を追記する。
"python.pythonPath": "/Users/kzdev/python_env/venv1/bin/python"

VisualStudioCodeをterminal上から起動する。

(venv1)% code .

この状態で、仮想環境のpythonを使ってdebugが出来るようになります。
試しに、debug実行を試してみます。

f:id:kzdev:20170905035811j:plain

breakpointを指定して、プログラムを起動します。

f:id:kzdev:20170905035928j:plain

上記の通り、指定したbreakpointで停止していることが確認できました。
これでVisualStudioCodeを使ってpython開発ができるようになりました。

IntelliJ IDEAの動作が遅い時の対策

普段は、InteliJ IDEAを使って開発しているのですが、メモリの初期設定が以下のようにかなり少ないです。
初期状態で開発を行うと、アプリケーションの規模によっては内部indexの作成に時間がかかりかなりストレスが溜まります。
開発のストレスを少しでも軽減するために、設定の変更で利用するリソースを適切に調整して対処を行います。

-Xms128m
-Xmx2048m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops

そこで、端末のメモリ状況に合わせて、ヒープサイズを増やします。
Intelijを起動して上部のHelpメニューないから下記の項目を開きます。

f:id:kzdev:20170903212246j:plain

すると以下のようなファイルがIntelij内で開かれます。

f:id:kzdev:20170903212401j:plain

ここの数値を今回は、以下のように変更します。

-Xms2G
-Xmx4G
-XX:+UseG1GC
-XX:-UseParNewGC
-XX:-UseConcMarkSweepGC
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops
-XX:+OmitStackTraceInFastThrow
-Dsun.io.useCanonCaches=false

保存したら、InteliJを再起動して完了です。初期に比べて相当快適になりました。

参考

github.com

KEA-DHCPの構築

ISC-DHCPからKEA-DHCPに移行した際にサーバ構築を行いましたので、 構築手順をまとめます。今回の移行に至った経緯と現状の懸念事項は、以下の通りです。

採用理由

  • データベースを使ったIPリース状況の管理が出来る
  • ISC-DHCPに比べて高速
  • JSONによる無停止での設定変更
  • 大手企業でも利用されている実績が増えてきていること

懸念事項

  • DHCPフェイルオーバに未対応(RFC3074相当)

参考

f:id:kzdev:20170902055015p:plain

続きを読む