最小限の持ち物で勉強できるのか?iPadで開発 《第3弾》~救世主現る~


おさらい

目的

  • 机の上には最小限のものだけで勉強する!!
  • iPad Pro でどこまで開発の勉強ができるか?

こんな人向け

  • iPad ひとつでなんでもやりたい人
  • 持ち歩くものを減らしたい人
  • PCの買い替えはもう嫌な人
  • 新しい勉強の仕方を開拓したい人

環境

  • iPad Pro 2018 11inch
  • Apple 純正 Smart Keyboard
  • モバイルルータ
  • さくらのVPS (CentOS7)

更新が遅れていた理由

簡単です。全部うまくいかなかったからです(つω-`)
でもご安心ください。iPad に救世主が現れました。

救世主とは

iPad OS です!!
さらにいうと、、、
Safari が PC版の表示 となったことです。

何がそんなにいいの

何がそんなにいいのと疑問かと思いますが、
今までですと、web ブラウザ経由で使う
Cloud9Jupyter Notebook での操作がうまくいかなかったのですがこれが改善されます!
(Smart Keyboard のカーソルの操作が効かないなど苦労しました。。。)
ということで今回は Jupyter Notebook を表示させてみたいと思います。

手順

VPSを立ち上げる

さくらのVPSコントロールパネルに入り「起動」を押す

SSH クライアントを用いてサーバーに入る

現在のおすすめ: Termius

セキュリティを考え鍵認証でのSSH接続にしたときに簡単にできました

Jupyter のイメージを取得する

Docker が入っていることの確認

$ docker --version
Docker version 1.13.1, build b2f74b2/1.13.1

イメージをダウンロード

docker pull jupyter/datascience-notebook

パスワードを作成

ハッシュを作るために仮起動(--rm つけるのでコンテナから出たら勝手に消えます)

$ docker run -it --rm  jupyter/datascience-notebook /bin/bash

jovyan@xxxxxxx のようにコンテナ内に入れたら、
コンテナ内の Python3 をお借りしてパスワードのハッシュ作成(今回は test 、お好きなもの安全なものに変えてお使いください)

$ python3 -c 'from notebook.auth import passwd;print(passwd())'
Enter password: 
Verify password: 
sha1:43dd030f7f29:bfa2d32e343582447c4ddf176911a8417bc64cc0 ←これをあとで用いる

コンテナから抜ける(Control+D でも可)

$ exit

起動!

パスワードには先ほど作成したハッシュを用います

引数の簡単な説明
-d: バックグラウンドで動かすよ
--name: コンテナ名は jupyter という名前だよ
-p: 外部からポート 8888 にアクセスされたらコンテナ内の 8888 に繋いだことになるよ
-u: root ユーザーで使うよ

$ docker run -d --name jupyter -p 8888:8888 -u root jupyter/datascience-notebook start-notebook.sh --NotebookApp.password='sha1:43dd030f7f29:bfa2d32e343582447c4ddf176911a8417bc64cc0'

一応動いてることの確認

$ docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
5f9c6b139eae        jupyter/datascience-notebook   "tini -g -- start-..."   3 seconds ago       Up 2 seconds        0.0.0.0:8888->8888/tcp   jupyter

ドキドキのブラウザからアクセス

自分のサーバーの IPアドレス:8888でアクセスすると。。。。
できました(ノ∀\*)

パスワード test を入れると。。。。
入れました!

Python 使えるかの確認
上記の矢印で示したように「New」から「Python 3」を選ぶと

思った通りの挙動に!!!最高!!

補足) xxx.xxx.xxx.xxx:8888 で入れなかった場合

ポートが解放されてない可能性があります。

まずファイヤーウォールの設定を確認

$ sudo firewall-cmd --list-all
[sudo] password for rgoto: 
public (active)
~ 抜粋 ~
  ports: 8080/tcp 8888/tcp

ここに 8888/tcp がないと拒否されています。追加しましょう。
(docker run のポートフォワードで好きなポートを選べますので、推測されないものを使う方が安全だと思います。)

$ sudo firewall-cmd --add-port=8888/tcp --permanent

(/tcp 忘れると追加できなくて焦ります)

まとめ

やっとまともに使えるようになったと思います!
iPad の CM で少年が
「What's a computer?」
といったようにドヤれるよう試行錯誤してみます。

参考

DockerでJupyter Notebookを使う
さくらのVPSでCentOS7のポートを開放する