2017年12月28日木曜日

iptablesで通信量を測定

クラスタのノード間での通信量を測定するための仕掛けを探していたら、実はiptablesでできることが判明。 こちらのサイトが元ネタ。 要するに、各ノードごとにチェインを用意してやればよい。チェインごとの統計をiptablesで取得できる。 まずクリアしておいて、
sudo iptables -F
sudo iptables -X
対象ノードごとに下記のようにルールを設定する。
sudo iptables -N host
sudo iptables -A OUTPUT -j host
sudo iptables -A INPUT -i eth0 -j host
sudo iptables -A host -d 172.16.96.1/32
sudo iptables -A host -s 172.16.96.1/32
すると、下記のように通信量を取得できる。左端に出ているのがパケット数とバイト数。
> sudo iptables -v -n -L host
Chain host (2 references)
 pkts bytes target     prot opt in     out     source               destination         
   44  7068            all  --  *      *       0.0.0.0/0            172.16.96.1         
   74  5579            all  --  *      *       172.16.96.1          0.0.0.0/0   
これらのカウンタは下記でリセットできる。
 sudo iptables -Z
新しいものを入れる必要が無いので手軽といえば手軽だが、全部のノードに、ノード数分だけルール入れるの面倒くさい。。インターフェイスも2系統あったりするのでさらに。。

2017年10月5日木曜日

booktab


なんかtable を普通に使うとダサいのでbooktab というパッケージを使いましょう、ということに。
  • 縦の線は使わない
  • 横の線も一番上、下、ヘッダとの分離部分にしかつかわない。それぞれhlineではなく、
    \toprule \midrule \bottomrule を使う。
  • 行のまとまりを示す際には 線を入れずに \addlinespace とすればいよい。
  • \cline の代わりに\cmidrule{1-2} を用いる。
縦罫線の代わりに列間のスペースを調整する。
@{\hspace*{2mm}}
をlとかrとかの中に書く。


2017年8月16日水曜日

複数写真の切り出し

復数の写真を一気にスキャンしたものから、自動的に写真を切り出す方法を探していた。Photoshopならできるらしいが、手元にないので除外。
GIMPにスクリプトを入れてやるという方法 も試してみたがイマイチ上手くコントロールできない。

> multicrop -b white SRC.jpg Cropped.jpg
とかやると、Cropped001.jpg, Cropped002.jpg みたいにファイルを作ってくれる。-b で指定しているのは背景色。多分曲がっているのを直してくれたりはしないので、スキャンするときにある程度気を使う必要がある。
これで、手元の写真を整理できるかな。。

2017年8月15日火曜日

tmux で SSH_FORWARD

tmux を使っていると、ssh でauth forward していても、中のSHELLに環境変数がSSH_AUTH_SOCKが伝わらないため、git にアクセスできなかったりして不便。
解決策を検索したら見つかったのでメモ。
したのように.bashrc に書いておく。すると外部からログインした際に、.ssh/.ssh_authsock.txtにSSH_AUTH_SOCKがコピーされる。
function update_forward
{
    if [ -z "$STY" -a -z "$TMUX" ]; then
        echo $SSH_AUTH_SOCK > ~/.ssh/.authsock.txt
    else
        export SSH_AUTH_SOCK=`cat ~/.ssh/.authsock.txt`
    fi                                                 
}                                                      
update_forward
tmux の内部シェルでは、
> update_forward
としてやればSSH_AUTH_SOCKがアップデートされてgit とかにアクセスできるようになる。

2017年7月21日金曜日

pyenv 下のPythonを使って PySpark

conf/spark-defaults.conf に、
spark.pyspark.python   /home/XXX/.pyenv/versions/anaconda2-4.4.0/bin/python
みたいに直接書くとうまくいく。

2017年7月19日水曜日

cargo

rust のツールチェーンにcargoなるものが含まれている。makeみたいなものか?もう少し高度なのか。sbtぐらい?
プロジェクトディレクトリを自動的につくって、ソースとビルドファイルのテンプレートまで作ってくれる。驚いたことに、勝手に.gitができていてgit管理下になっている。便利。

Hidemotos-MacBook:rust nakada$ cargo new myProj --bin
     Created binary (application) `myProj` project
ディレクトリができて、その中にビルドファイルCargo.toml とsrcディレクトリができる。
$ ls myProj
Cargo.toml    src
Cargo.toml はこんな感じ。toml はTom’s Obvious, Minimal Language だそうだ。INIファイルとかに似てる?
$ cat myProj/Cargo.toml
[package]
name = "myProj"
version = "0.1.0"
authors = ["nakada"]

[dependencies]
srcの中にはmain.rsができる。
$ cat myProj/src/main.rs 
fn main() {
    println!("Hello, world!");
}
プロジェクトディレクトで、cargo build とすると、targetというディレクトリが作られて、target/debug/プロジェクト名 でバイナリができる。
cargo run とやるとbuild したあとそのまま実行するようだ。

Rust install mac

https://www.rustup.rs/ にしたがって、
curl https://sh.rustup.rs -sSf | sh
とやる。なにか.bash_profile とか書き換えているようで、ちょっと嫌な感じ。cargoなど一切合切ツールチェーンもインストールされる。
$ rustc --version
rustc 1.18.0 (03fc9d622 2017-06-06)
無事インストールできたようだ。
fn main() {
    println!("Hello, world!");
}
をtest.rs としてセーブして、
$ rustc test.rs
とやると test というバイナリができる。
これを実行すると
$ ./test
Hello, world!
となる。a.out になったりしないあたりが偉い。
$ ls -al test
-rwxr-xr-x  1 XXXXXX  staff  400552 Jul 19 16:22 test
400Kbytesもある。いまどきこんなもんか。

tensorflow server

https://tensorflow.github.io/serving/serving_basic TensorFlowサーバなるものがあるらしい。 学習済みのモデルをエクスポートする。 これをサーババイナリ(C++で書かれている模様)に与えると、 grpcのサーバができるので、ネットワーク越しにgrpcで呼び出して 予測をさせる事ができる、ということらしい。

2017年6月21日水曜日

python UnicodeEncodeError


 UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
この手のエラー、
export PYTHONIOENCODING=utf-8
とやるとうまくいく場合がある模様。Python3で確認

2017年4月17日月曜日

vnc4server

linux のVNCサーバとしては標準的なvnc4server だとmacのOS組み込みのVNCビューアとなにか相性が悪いらしく、文字をタイプするとフリーズする。

tightvncserverをインストールしたら正常に動作するようになった。めでたい。

2017年4月3日月曜日

HammerSpoon

Officeの類でemacsバインドじゃないと編集がくるしい、ということで、これまでkarabiner にお世話になっていたのだが、Sierraでは使えない。Karabiner Elementという後継プロジェクトがあるのだが、こちらはまだマチュアではなく、単体キーの入換えしかできない。

ということで、こちらを参考に HammerSpoolなるものを入れてみた。luaで設定ファイルを書くというのがなんともアレだが。。とりあえず、カーソル移動と行頭行末、バックスペースだけなんとかした。これだけできれば発狂しないですむだろう。

local function keyCode(key, modifiers)
   modifiers = modifiers or {}
   return function()
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post()
      hs.timer.usleep(1000)
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post()
   end
end

local function remapKey(modifiers, key, keyCode)
   hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode)
end

remapKey({'ctrl'}, 'b', keyCode('left'))
remapKey({'ctrl'}, 'n', keyCode('down'))
remapKey({'ctrl'}, 'p', keyCode('up'))
remapKey({'ctrl'}, 'f', keyCode('right'))
remapKey({'ctrl'}, 'e', keyCode('end'))
remapKey({'ctrl'}, 'a', keyCode('home'))
remapKey({'ctrl'}, 'h', keyCode('delete'))

2017年2月28日火曜日

Ubuntuセットアップもろもろ

Ubuntu でCaps/ctrl 入れ替え
dconf reset /org/gnome/settings-daemon/plugins/keyboard/active
dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:swapcaps']"
英語フォルダを置き換える。
LANG=C xdg-user-dirs-gtk-update
keybindをemacsに
sudo apt install gnome-tweak-tool
でgnome-tweak-toolをいれて設定

2017年2月23日木曜日

emacs epg

Gnupg 2がでてから毎度トラブっている。
前回は、gpg1 を入れて
 (custom-set-variables '(epg-gpg-program  "/usr/local/bin/gpg1"))
とすればOKだったのだが、今回はだめ。。
homebrew で入るのは2.0なのだけど、これではだめ、とのことなので、

brew tap homebrew/versions
brew install gnupg21
としてgnupg 2.1 を入れて、
(custom-set-variables '(epg-gpg-program  "/usr/local/bin/gpg2"))
(setf epa-pinentry-mode 'loopback)
とすると、なぜか /usr/local/bin/gpg がない、とかいうエラーがでる。
ので、/usr/local/bin で ln -s gpg2 gpg としてリンクを作ったらうまく動いた。
なんなんだ。

2017年2月19日日曜日

mac emacs 25.1

このページのとおり。

- https://oku.edu.mie-u.ac.jp/~okumura/macosx/

wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.1.tar.xz
wget ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-25.1-mac-6.0.tar.gz
tar xvzf emacs-25.1.tar.xz
tar xvzf emacs-25.1-mac-6.0.tar.gz
cd emacs-25.1
patch -p1 < ../emacs-25.1-mac-6.0/patch-mac
cp -R ../emacs-25.1-mac-6.0/mac .
cp ../emacs-25.1-mac-6.0/src/* src/
cp ../emacs-25.1-mac-6.0/lisp/term/mac-win.el lisp/term/
cp nextstep/Cocoa/Emacs.base/Contents/Resources/*.icns mac/Emacs.app/Contents/Resources/
./configure --without-x
make 
make install


cp -r mac/Emacs.apps /Applications

init.el で
(mac-auto-ascii-mode 1)