tmuxで指定したwindow/paneから始める方法 [再起動も安心]

PCの再起動後にTmuxのwindowやpaneを自動的にある所定のものにしたい。tmux-resurrecttmux-continuumを試した試したがうまい具合にシャットダウン前の状態にしてくれないケースがあったので、それなら常に同じ状態からスタートした方が効率が良い気がしてきたので、そのような運用にしてみる。

tmuxのwindow作成などはtmuxコマンドから呼べるので設定ファイルを書くことができる。starttmux.shというスクリプトを作ってこれを.bashrcから呼べば良い。

session="work"

tmux has-session -t $session 2>/dev/null
if [ "$?" -eq 1 ] ; then
  # set up tmux
  tmux start-server

  # create a new tmux session, starting vim from a saved session in the new window
  tmux new-session -d -s $session

  # Select pane 1, set dir to api, run vim
  tmux selectp -t 1
  tmux send-keys "cd ~/git/Gauss; rails s" C-m

  # Split pane 1 horizontal by 65%, start redis-server
  tmux splitw -v -p 50
  tmux send-keys "cd ~/git/Gauss; rails c" C-m

  # create a new windows
  tmux new-window -t $session:1
  tmux send-keys -t $session:1 "cd ~/git/Gauss; vim -S $HOME/.vim/sessions/gauss.vim" C-m

  tmux new-window -t $session:2
  tmux send-keys -t $session:2 "cd ~/git/Gauss" C-m

else
  echo "session found. connecting..."
fi


# return to main vim window
tmux select-window -t $session:2

# Finished setup, attach to the tmux session!
tmux attach-session -t $session

*C-mはtmuxでの改行

でこれを.bashrcの末尾追加すれれば毎回同じtmuxからスタートできる。

# attach automatically when it's opened
[ -z "$TMUX" ] && . "$HOME/starttmux.sh"

[Ubuntu] 古いバージョンのElasticsearchのインストール方法

本家のバージョンがどんどん上がっているくが、現状問題ないならあえて追従する必要はないように思う。(セキュリティに重大な問題等なければ)

新しい環境を設定するときに、古いバージョンをインストールするのは少し面倒臭い。

https://www.elastic.co/jp/downloads/past-releases でProductとVersionを選び。ダウンロードボタンをクリックし、該当リンクをコピペ。

$ curl -LO https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.4.1/elasticsearch-2.4.1.deb
$ sudo dpkg -i elasticsearch-2.4.1.deb && rm elasticsearch-2.4.1.deb

ちなみにconfigがないと怒られるので

$ sudo ln -s /etc/elasticsearch/ /usr/share/elasticsearch/config

またrootで起動できないとも言われるので

$ sudo /usr/share/elasticsearch/bin/elasticsearch -Des.insecure.allow.root=true

localhostにPublic IPをマップして、リモートでの開発をあたかもローカルで開発してるようにする方法

ずっと知りたかったlocalhostへのマッピング方法がやっとわかった。

例えば、リモートホスト上(IP 111.111.111.111)で rails s -p 32884 -b 0.0.0.0で開発していた場合、普段は問題ないのだが、OAuthのログインのリダイレクト/コールバック先がlocalhost:3000で決め打ちされている場合、ユーザ認証が失敗してしまう。ユーザアカウントのroleをうまく変更して対処するしかなかった。それが下記のようにSSHでポートフォワーディングすると、

$ ssh -L 3000:localhost:32884 ubuntu@111.111.111.111

もしくは通信の暗号化を気にしないならsocat でもできる。

$ socat TCP-LISTEN:3000,fork,reuseaddr TCP:111.111.111.111:32884

ローカルの開発機のブラウザでloalhost:3000をたたくとサーバ側の開発ポートにマッピングされる。これでOAuthのリダイレクトも問題なくなりリモートホストを意識しないで開発できる。

これ絶対探してる人多いはず。

参考:https://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

ASUS CHROMEBOX 3-N019U開封レビュー

ここ10年ぐらいOSXをメインコンピュータとして使ってきたが、教育向けデバイスのChromebook/ChromeOSが実際に実用に耐えうるかを使ってみて考察したいと思う。

選んだデバイスはChromebox。iMac miniのような弁当型のPC。詳しいスペックは下記リンクのAmazon.comを参考にしてもらえればと思うが、現行世代のInterl i3を積んでいて、4Kディスプレイに出力可能という品物。40インチ超えのディスプレイ[ 43UD79T-B]を使うで紹介した42.5インチのモニタに接続して使用中。 

注意点として、日本のアマゾンからは購入できないのでUSのアマゾンアカウントを作ってUSから配送してもらうようにしないといけない。日本では前の世代のChromebox2が売られているので間違えないように。

ASUS CHROMEBOX 3-N019U Mini PC with Intel Core i3, 4K UHD Graphics and Power Over Type C Port, Star Gray

8月22日に注文し、8月27日に届きました。box in box.

きちんと区切りしてある。Apple製品のような高級感はない。

必要最低限。本体。電源コード。VESAマウント用の取り付け器具。

HDMIとDisplay Port over USB type C があるので標準で2モニタで出力できる。

USBが5つ付いていてハブの必要はない。SDカードも使える。

ChromeOS自体初めてなので引き続きレビューをしていこうと思う。特に開発者視点で。