The jonki

呼ばれて飛び出てじょじょじょじょーんき

Dockerでgithubのプライベートリポジトリをsshでcloneする

調べてみると色々方法があるようだったが,下記のリンクの方法が一番よかった.Dockerでcloneする用に鍵を作ってそれを利用する方法.英語読むのダリィという方のため(といいつつ自分の作業用メモ)この記事書いておきます.
tarunlalwani.com

Dockerでcloneする用のsshの鍵を作る

大体の人はデフォルトのパスにすでにid_rsaがあると思うので上書きしないよう注意.

$ mkdir keys
$ ssh-keygen -t rsa -b 4096 -C "xxxxxx@yyyyy.com"
Enter file in which to save the key (/home/jonki/.ssh/id_rsa): /home/jonki/keys/id_rsa
Enter passphrase (empty for no passphrase): 何も入力せずエンター
Enter same passphrase again: 何も入力せずエンター
Your identification has been saved in /home/jonki/keys/id_rsa. 

// known_hostsをid_rsa,id_rsa.pubがあるところに作っておく
$ ssh-keyscan github.com >> keys/known_hosts
公開鍵をgithubに登録

githubの設定から,[New SSH key]を押し,作成されたid_rsa.pubをコピーして貼り付ける.

cloneするDockerfileを準備

Imageは何でも良いのだが,入れるImageによってはgitのインストールコマンドも記述する必要がある.また作成した鍵を含むkeysディレクトリをDockerfileと同じディレクトリに置いておく.うまく行けば,「Successfully tagged ...」みたいなログが出るはず.

$ cd <your work space>
$ mv /home/jonki/keys .
$ vim Dockerfile
FROM python:3.6.3

# 作ったkeysディレクトリをコンテナ上にコピー
RUN mkdir -p /root/.ssh
COPY keys /root/.ssh

# 入れるImageによってはgitをインストールするコマンドを入れる必要がある
# RUN apt-get -y update && apt-get -y install --no-install-recommends git ssh みたいな

# git clone
WORKDIR /work
RUN git clone git@github.com:username/your-private-repo.git

CMD ["/bin/bash"]
実行して確かめる
$ docker build -t private-repo .
$ docker run -it private-repo
root@xxxxxxx:/work# ls
private-repo

海外からLightsailで日本国内にプロキシサーバーを立てる

f:id:jonki:20180310111817p:plain

私的利用のために必要になったので,書いておきます.日本国内(あるいは海外)にプロキシサーバーを自前で建てようとした場合,VPSの契約などが必要になると思います.そこで以前にもお世話になった某サイトでサーバーを借りようとした所,リソースが余っていないので無理!とまさかの契約出来ない自体になりました.大したことしないんで,AWSでもいいんですが,あの課金システムが心臓によく無い..と思ってたら,同じくAmazonLightsailというサービスを見つけました.正直ちゃんと説明読んで無いんですが,AWSの簡易版&固定料金版という感じです.固定料金に惹かれて月5ドルプランを契約しました.

使い方&セットアップ

使い方はめちゃくちゃ簡単で,マシンのリージョン,使いたいOSを指定するだけで終わります.SSHの設定などもデフォルト設定であればブラウザ上からいつでもできるので鍵の管理などしなくても大丈夫.私は東京にサーバーを建てたかったので「東京、ゾーン A (ap-northeast-1a)」を選択しました.さらにグローバルIPも追加料金なしで確保できたのでアタッチしました.ファイアウォールの設定が簡易化されいて,アクセス元IPアドレスは指定できずにポート番号の指定しかできないので,ガチガチに固めたい場合は不向きです.しかしこのUIの簡易さは捨てがたいものがあります.

プロキシはsquidで.squidのインストールは簡単です.私はUbuntu(16.04)を選択したのでUbuntuのコマンドおよび設定ファイルを書いておきます.Lightsail上では細かいファイアウォールは設定できないので,squidアプリ上ではしっかりアクセスコントロールしておきましょう.

$ sudo apt-get install squid
$ vim /etc/squid/squid.conf

# アクセスコントロール
acl my_home_net src xx.xx.xx.xx/24
http_access allow my_home_net
visible_hostname unkown

# プロキシ情報の隠蔽
forwarded_for off
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

http_access deny all

# プロキシポート
http_port 12345

ポートを解放する必要があるので,Lightsailのネットワーキング,ファイアウォールから,【Custom TCP 12345】と設定します.これでプロキシサーバーにうーん,簡単.

コンフィグを編集し終えたらサービスを再起動(ちょっと時間かかります).またサービスが自動起動するようにしておきましょう.うまく言ってるかどうかは,ログを眺めてればわかると思います.

$ sudo service squid restart
$ sudo update-rc.d squid defaults
$ sudo tail -f /var/log/squid/access.log


プロキシを設定したら診断くんで,IPが変わっているか確認しましょう.私の環境で,「疑惑 ~20%:proxy の可能性もわずかにあります。」と出ました.

まとめ

Lightsailめっちゃ簡単でびっくりしました.また月額固定金も割り切ってて私には合っていました.またプロキシも十分に働いてくれています.(変な使い方はしないようにね)

Chrome extensionでarXivの情報をコピーする

chrome.google.com

arXivのページを見てる時に,私はメモとしてタイトル,筆者,URLをコピーして,Evernoteとかにまとめてたりするんですが,量が多いとそのコピー作業が面倒です(2回コピーしないといけないので).ということで,久しぶりにChrome extensionを作りました.arxivの論文のページでこの拡張のアイコンをクリックすると,下記のような情報をクリップボードにコピーします.はい,それだけです.使う人はまずいないと思いますが,ストアに公開しておきました

Generative Adversarial Networks
Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1406.2661


ソースコードはこちら.この拡張はpage actionとして,動いているのでarxivのページでしか動作しません.今日サクッと作ったので対してテストしてませんので悪しからず.

github.com

Visual Studio CodeでIntegrated/ExternalのTerminal/Consoleを使う

`launch.json`に書けば良い.pythonで`input`によるテキスト入力を受けたい時に,デバッグコンソールでは入力できないことに気づきこの設定を探した.


VS Code内のIntegrated Terminalで実行したい場合

"console": "integratedTerminal"


VS Code外のTerminalで実行したい場合

"console": "externalTerminal",
"externalConsole": true 
参考

github.com

HHKB proからErgodoxに乗り換えた話

巷で話題のErgodoxに乗り換えてみました.というのも最近猫背で肩こりがひどいし,血行が悪いせいか目の疲れもひどいのです.これまで使っていたのはHHKB proのUS配列のものです.タイピングは最高ですが,やっぱり手を中心にもってくるためどうしても肩が丸くなります.


買ったのはErgodoxを完パケにして売ってるErgodox EZの赤軸モデルです
ErgoDox EZ: An Incredible Mechanical Ergonomic Keyboard
注文してから2週間ぐらいで届きました.打鍵感はFilcoの赤軸と差異はさいんじゃないかな.普段使ってないから厳密には比較できないですが.また静電容量無接点式と比べてデグレード感は個人的にはそんなにないです.また打鍵の音もうるさいという感じはありません.


そして何よりも胸を開いて打鍵できることがこんなにも楽だとは思いませんでした..いい..


とりあえずカスタマイズしたキーマップを晒しておきます.本家がカスタムツールを公開したので楽ちんになりました.Cコードで自分でコンパイル,というのもいいんですが,できるだけ変態な機能は使わずHHKBからの乗り換えコストは少なくできるようにしました.
またMacで使う気はなく完全にWindows専用です.

http://configure.ergodox-ez.com/keyboard_layouts/kbvjzr/edit



工夫した点

  • 日英切り替えをMacのように左右の親指で(Ctrl+space,Ctrl+Shift+spaceをIMEの切り替えに充ててます)
  • Layer 2でマウスやカーソル操作を集中させる.マウスシミュレーションは地味に便利です
  • カーソル操作はvimと合わせる
  • Resetキーを誤って押さないようなところにおいておき,ファームウェアの書き換えを簡単に

妥協点

  • 括弧[], {}は右手側に余分なキーがないので真ん中に.ちょっと遠い.
  • バックスペースはLayer 1に.こちらも右手側に余分がないので.Layer 1はこれにしかつかってない...

課題点

  • 調子に乗って無印にしたので記号はタイポしまくり
  • Windowsならではのカーソルキーによるウインドウ操作などはまだ慣れが必要
  • 右手端の記号系もまだタイポが多い


と,まだまだ改良の余地だらけですがひとまずベースラインが決まりました.この記事はErgodoxで書いているのでまだ慣れていないのでいつにもまして記事が雑です.


またプログラマであればコードがスムーズに書けるかが心配になると思いますが,いろいろな言語のタイピング練習ができるところを見つけました.一般のタイピングと異なりプログラミングでは記号を多用するのでかなり便利です.まさかこの歳になってからタイピングの練習をするとは思いませんでした(笑)
typing.io