GithubのForkしたリポジトリをFork元プロジェクトに追従する

Fork元プロジェクトのリポジトリをリモートに追加します。 git@github.com の部分はGithubアカウントを複数運用している場合 git@hoge.github.com とかになるですね。なお追加したものは git remote remove upstream で削除できます。

git remote add upstream git@github.com/upstream/project.git

追加しただけでは情報がないんで

git fetch upstream

で情報を得たら

git branch -a

とかで確認して、あとはこんな感じでマージできます。

git merge remotes/upstream/master

PRラッシュでやってやりましょう。

UbuntuでPDFの特定のページを削除する

pdftk を使います。

sudo apt install pdftk

削除はどちらかと言うと必要なページ数を指定して、そのページで新たなPDFを作成するイメージになります。

例えば3ページある場合に書きのように、1 2 と書くと3ページ目は除去されたPDFが作成されます。

pdftk befgore.pdf cat 1 2 output after.pdf

これを 1 2 のところを 2 1 と書くとページは逆順になります。

Ubuntu 19のxrandrで4KとFull HDのマルチディスプレイ環境のScaleをそれぞれに合わせる

まず現在接続されているディスプレイ一覧を見る。DP-1が4Kで、DP-2がFull HDです。DP-1で1080px下に表示させることで、DP-2をDP-1の上に配置しているイメージになっています。

$ xrandr | grep -w connected
eDP-1 connected (normal left inverted right x axis y axis)
DP-1 connected primary 3840x2160+0+1080 (normal left inverted right x axis y axis) 621mm x 341mm
DP-2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 476mm x 268mm

今全体のWindowのスケールが1.5になっているので、3840に対して2560分の表示になっている。すると、DP-2には1280px分を表示しようとするので大きく見えてしまいます。

したがって、DP-2は2880であると認識させれば、Scaleがきいて1920px分かっちりの表示になるはずである。

ってことでこんな風に上下大きくしてあげます。

xrandr --output DP-2 --scale 1.5x1.5

DP-2が巨大化しましたね

$ xrandr | grep -w connected
eDP-1 connected (normal left inverted right x axis y axis)
DP-1 connected primary 3840x2160+0+1080 (normal left inverted right x axis y axis) 621mm x 341mm
DP-2 connected 2880x1620+910+0 (normal left inverted right x axis y axis) 476mm x 268mm

これでFull HD表示にはなるんですけど、ディスプレイが巨大化(1080px -> 1620px)することによって下のディスプレイの一部が表示されてしまいます。下のメインディスプレイDP-1を、もっと下に移動させてあげなければいけません。

xrandr --output DP-1 --pos 0x1620

これで優勝しました。

追記: マウスポインタが点滅したり消えたりする問題

あとから気づいたのですがマウスポインタが点滅します。これはxrandrを使用して特定のディスプレイのスケールを変更した際に発生し、スケールを変更しなければこの問題は起きません。

少しだけ症状がましになる方法として

xrandr --auto

を実行すると少し症状が緩和された気がします。

https://codeday.me/jp/qa/20190811/1428724.html

docker-composeでtty:trueを指定してコンテナを立ち上げっぱなしにする

コンテナを起動し続けるために適当なループするコマンドをシェルで実行したり、無意味にWebサーバーを立ち上げたりしていたが、docker-compose.yml にtty:trueと書くことで起動させっぱなしにできるようです。

version: '3.5'

services:
  app:
    image: ubuntu
    tty: true

docker psとすれば生き続けている事がわかり、docker-compose exec app bashで入れます。

Dockerコンテナ内でpipを使ってパッケージをインストールしようしたら名前解決できない場合の対策

変な環境で変なDockerコンテナを立ち上げてpipでパッケージをインストールしようとしたら

pip install hogehoge

下記の様に言われた

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by...

ちまちま調べたら名前解決がダメらしかった。仕方ないので自分でDNSを設定してあげます。

echo "nameserver 8.8.8.8" >> /etc/resolv.conf

これで解決。同じような問題の人がちょこちょこいるみたいでした。変な環境のせいだと思ってた。

https://qiita.com/tatamiya/items/d40dab5bb7b23be3548f

Alpine LinuxでShellを実行する

dockerコンテナ起動時にbash -cで処理を実行することがあるが、Alpine Linuxではashを使用する。

$ docker run --rm -ti alpine ash
/ # ls -la
total 64
drwxr-xr-x    1 root     root          4096 Jul 30 07:28 .
drwxr-xr-x    1 root     root          4096 Jul 30 07:28 ..
-rwxr-xr-x    1 root     root             0 Jul 30 07:28 .dockerenv
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 bin
drwxr-xr-x    5 root     root           360 Jul 30 07:28 dev
drwxr-xr-x    1 root     root          4096 Jul 30 07:28 etc
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 home
drwxr-xr-x    5 root     root          4096 Jul 11 17:29 lib
drwxr-xr-x    5 root     root          4096 Jul 11 17:29 media
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 mnt
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 opt
dr-xr-xr-x  375 root     root             0 Jul 30 07:28 proc
drwx------    1 root     root          4096 Jul 30 07:28 root
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 run
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 sbin
drwxr-xr-x    2 root     root          4096 Jul 11 17:29 srv
dr-xr-xr-x   13 root     root             0 Jul 30 07:28 sys
drwxrwxrwt    2 root     root          4096 Jul 11 17:29 tmp
drwxr-xr-x    7 root     root          4096 Jul 11 17:29 usr
drwxr-xr-x   11 root     root          4096 Jul 11 17:29 var

PythonでWebサーバーを立ち上げる

python3 -m http.server 8080 でサーバーを立ち上げることができる。下記で立ち上げると http://localhost:8080 からアクセスできるようになります。

$ python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
127.0.0.1 - - [30/Jul/2019 16:06:57] "GET / HTTP/1.1" 200 -

静的ファイルを確認する際などに役立つ。