動かざることバグの如し

近づきたいよ 君の理想に

Google ColaboratoryでSSHできるようにする

import random, string, urllib.request, json
password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(20))

#Download ngrok
! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
! unzip -qq -n ngrok-stable-linux-amd64.zip
#Setup sshd
! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null
#Set root password
! echo root:$password | chpasswd
! mkdir -p /var/run/sshd
! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
! echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
! echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
! echo "LD_LIBRARY_PATH=/usr/lib64-nvidia" >> /root/.bashrc
! echo "export LD_LIBRARY_PATH" >> /root/.bashrc

#Run sshd
get_ipython().system_raw('/usr/sbin/sshd -D &')

#Ask token
print("Copy authtoken from https://dashboard.ngrok.com/auth")
import getpass
authtoken = getpass.getpass()

#Create tunnel
get_ipython().system_raw('./ngrok authtoken $authtoken && ./ngrok tcp 22 &')
#Print root password
print("Root password: {}".format(password))
#Get public address
with urllib.request.urlopen('http://localhost:4040/api/tunnels') as response:
  data = json.loads(response.read().decode())
  (host, port) = data['tunnels'][0]['public_url'][6:].split(':')
  print(f'SSH command: ssh -p{port} root@{host}')

参考リンク

競馬の馬券種類まとめ

個人的にはセレクトする馬の数で種類別したほうがわかりやすかったので以下にまとめてみる。

f:id:thr3a:20210509144432p:plain

1頭セレクトする場合

  • 単勝
    • 1着になれば当たり
  • 複勝
    • 1〜3着になれば当たり

2頭セレクトする場合

  • 枠連
    • 1〜8枠の馬を2つ選んで1,2着になれば当たり
    • ゾロ目の場合は1つの枠内で1,2着なら当たり
  • 馬連
    • 1,2着になれば当たり
  • ワイド
    • 1〜3着のいずれかに2頭入れば当たり

3頭セレクトする場合

  • 3連複
    • 1〜3着に順番不問で当たり
  • 3連単
    • 1〜3着に順番通りで当たり

ameshをDocker上でビルドする

東京の雨雲状況をターミナル上で確認できるameshという素晴らしいコマンドがある。

github.com

みんな大好き東京アメッシュ http://tokyo-ame.jwa.or.jp/CLIで表示

iterm2だとこんな感じ f:id:thr3a:20210501155445p:plain

だが、通常だとgo環境が入っていないとインストールできない。goではバイナリにビルドすれば動くのが強みなので自分でビルドしてみる。

ちなみにDockerイメージも公式でリリースはされているが、1コマンドに300MB近くも容量喰うのは微妙だし、何より起動までが遅い。

準備

まずはgolangが動かせる環境を用意する

成果物をMac側に持っていきたいのでカレントディレクトリをマウントする形になる。以下

docker run -it --rm -w /app -v $(pwd):/app golang:1-buster sh

Dockerコンテナ内でgit clone

git clone https://github.com/otiai10/amesh.git
cd amesh

ビルド

いざビルド

# GOOS=darwin GOARCH=amd64 go build -o amesh main.go
no required module provides package main.go: go.mod file not found in current directory or any parent directory; see 'go help modules'

必要なモジュールをインストールする必要があるらしい

以下のコマンドで依存パッケージのインストール

go get -v -t

再度

GOOS=darwin GOARCH=amd64 go build -o amesh main.go

今度はうまく行けた

あとはMac側で

mv amesh /usr/local/bin/

して、ameshコマンドがたたければ成功

Linuxでadbコマンドを使えるようにする

以下メモ

thr3a@thr3a-vc66:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 005: ID 8087:0a2b Intel Corp.
Bus 001 Device 003: ID 2e17:c032 Essential Products PH-1
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


SUBSYSTEM=="usb", ATTR{idVendor}=="2e17", MODE="0666", GROUP="plugdev"


service udev restart

thr3a@thr3a-vc66:~$ adb devices
List of devices attached
PM1LHMA830702648    device