眠り始めて3分で爆睡

帰宅してソファに横になった直後記憶ありません。
スマートウォッチの睡眠モニターをチェックしたら
3分間の浅い眠りの直後に深い眠りになっていて
おそらく眠り始めて3分で爆睡だったのかなってかんじです。

詰め込み過ぎていない?
と心配された。
もう半年くらい前から、いろいろな人に心配される。
好きなことは熱中しやすいタチではあるけれども
確かに、ここまでのめり込むのなかなか無かったかもしれない。

あまり学んでいるとか、勉強している感覚ではなくて
「これなんか便利っぽいので試してみよう」
「なんかわからんけどできた」
「こういう部分で便利かもしれない」
「もしかしてこのツール最強なのでは?」←ここの感動にやみつきになる

って流れでやってきたので
初めてスマホを買ってもらって
いろいろなアプリを試しにDLして
スマホの便利さに感動している感覚に近いかもしれない。

高校生の頃は、Webサイトを作るのにハマったけれども
日々新しいタグを知ったり覚えたりすることが楽しみだったので
感覚としては近いのかなあと感じる。

Nginxの設定をAnsibleで展開

どんすわサーバー内に入って
Nginxの設定ファイルどこにあるのかなあと探して見つけました。

/etc/nginx$ cat nginx.conf

出てきたnginx.confをcopyして
ローカルのdon.suwa3.me-ansibleに追加したらGitHubにpushです。
https://github.com/suwa3/don.suwa3.me-ansible/blob/master/nginx.conf

ついでにyamlも追加

- hosts: all 
  tasks: 
    - name:nginx.conf 
      become: yes 
      template: 
        src: nginx.conf 
        dest: /etc/nginx/nginx.conf 
        owner: root 
        group: root 
        mode: 0644

そういえばポートを22222に変更していたので
ポート番号の変更を追記しました。

$ sudo vi ansible.cfg 
[defaults] 
hostfile = ./hosts 
remote_port = 22222

playbookしてみます。

$ ansible-playbook -i hosts nginx.yaml 
____________ 
< PLAY [all] > 
------------ 
        \   ^__^ 
         \  (oo)\_______ 
            (__)\       )\/\ 
                ||----w | 
                ||     || 

無事okでました〜
やったねえ

Django GirlsチュートリアルでつくったものでDockerfile作成

まずDocker Hubで使いたいイメージを探します。
公式のものなど、なるべく信頼できるイメージをつかった方が良さげです。
Django Girlsチュートリアルでつくったものはこちらです。

$ ls 
blog            manage.py        myvenv 
README.md        db.sqlite3        mysite            requirements.txt

元になるイメージはpython:3.7.5-slim-busterを選びました。
Django起動時に打ち込んでいるコマンドを
Dockerfileに書き込んでいきます。

$ vi Dockerfile 

FROM python:3.7.5-slim-buster 
COPY . /app/ 
WORKDIR /app 
RUN pip3 install -r requirements.txt 
RUN python3 manage.py collectstatic --noinput 
CMD python3 manage.py runserver 0.0.0.0:8000

イメージ名にはわかりやすい名前をつけて
タグにはバージョン(日付や0.1.0など)を指定してあげると良いです。
無記入だとlatestになります。

$ docker build -t [イメージ名]:[タグ] . 
例えば 
$ docker build -t djangogirls:0.1.0 .

最後のドットを忘れないように注意です。
一覧を出すには

$ docker images 
REPOSITORY        TAG          IMAGE ID             CREATED              SIZE 
djangogirls              latest        53a38ee83c1a      24 minutes ago 

Dockerを走らせる前に
ローカルで何か走っていないか確認します。
※特にローカルで走らせているものがなければ、以下読み飛ばしてもOKです。

$ ps -ef | grep runserver 
  502  2437   479   0 土02PM ttys000    0:00.60 /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python manage.py runserver 
  502  2438  2437   0 土02PM ttys000   58:01.79 /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python manage.py runserver 
  502 26677 13920   0  3:55PM ttys003    0:00.01 grep runserver

とても大まかに書くと

2437(子:Django)    479(親:shell) 
2438(子:Python)   2437(親:Django) 
26677 13920 => いま検索したgrepコマンドが走っているので無視

だいたいこんな感じです。
shellは殺さず、2437を殺せば親のDjangoもろとも子の2438も死ぬので
Djangoで走りっぱなしでいたrunserverをkillします。

$ kill 2437

killできたか確認。

$ ps -ef | grep runserver 
  502 26680 13920   0  3:55PM ttys003    0:00.01 grep runserver

Dockerを走らせます。djangogirlsはDocker IDでもOKです。

$ docker run -it --rm -p          djangogirls

下記にアクセス

http://127.0.0.1:8000/

できた👏

Tips
全体的に重かったので.dockerignoreを作成し、いったん無視するファイルを指定します。

$ vi .dockerignore 

myvenv 
db.sqlite3

myvenvは仮想環境なので不要です。
db.sqlite3はDockerに乗せるには今後重くなる可能性が高いので
もしデプロイする際にはMySQLなど外付けDBを使っても良いかもです。
ちなみにDBをignoreで無視するとDockerを走らせた際に赤文字で

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions. 
Run 'python manage.py migrate' to apply them.

このようにDBに問題ありなどと表示されます。
あえてignoreしている場合はスルーです。

manコマンドの日本語化

先日manコマンドを覚えたのですが
英語の表示を日本語にできるとの情報を仕入れたので
早速、manコマンドで表示される文字を日本語化してみました。

環境
OS: MacOS v10.13
Shell: bash

groffをインストール

groff(GNU roff)という文書整形を行うコマンドをインストールする

$ brew install groff

/usr/local/bin/groffが配置されます。
macではgroffが既に入っているので brew installしたgroffを参照するように設定を書き換えます。

$ sudo vi /etc/man.conf 

# 95行目 行頭に「#」を付けてコメントアウトするか削除する 
JNROFF  /usr/bin/groff -Tnippon -mandocj -c 
# 95行目 groff コマンドでインストールした最新版を使うようにする 
JNROFF  /usr/local/bin/groff -Dutf8 -Tutf8 -mandoc -mja -E 

# 105行目 行頭に「#」を付けてコメントアウトするか削除する 
PAGER  /usr/bin/less -is 
# 105行目 文書整形を日本語表示に対応させる 
PAGER  /usr/bin/less -isr 

# 106行目 行頭に「#」を付けてコメントアウトするか削除する 
BROWSER  /usr/bin/less -is 
# 106行目 同上 
BROWSER /usr/bin/less -isr

日本語のmanページをダウンロード

$ curl -O http://linuxjm.osdn.jp/man-pages-ja-20191015.tar.gz

毎月15日に更新されているようなので
URLは以下のページで確認してください。
http://linuxjm.osdn.jp/download.html

DLしたファイルを解凍、インストール

$ tar xfz man-pages-ja-20191015.tar.gz

解凍したディレクトリに移動する

$ cd man-pages-ja-20181015/

インストール前の設定を行う

$ make config 


Install directory   [/usr/share/man/ja_JP.UTF-8] ?: 
# =>インストール先は /usr/local/share/man/ja_JP.UTF-8 と入力する 


compress manual with.. 
# =>圧縮形式は 0 (none)  


uname of page owner [root] ?: 
# =>ユーザ名はrootと入力する 


group of page owner [root] ?: 
# =>グループ名は必ずwheelと入力する 


All OK? (Yes, [C]ontinue / No, [R]eselect) : 
# =>よければcと入力 


[INSTALL PACKAGE SELECTION] 
#   (just Return if you accept default choice) 
# =>デフォルトのままで良いので、120回ほど Enter を押して(長押しでOK)そのまま進める 


All OK? (Yes, [C]ontinue / No, [R]eselect) : 
# =>と入力して続行する 


[RESOLVE CONFLICTS] 
#   (just Return if you accept item 0) 
# =>デフォルトのままで良いので、171回ほど Enter を押して(長押しでOK)そのまま進める 


All OK? (Yes, [C]ontinue / No, [R]eselect) : 
# =>cと入力して続行する 


creating installation script...done 
now you can "make install" as user root.

インストールを実行します

$ sudo make install

usr/local/share/man/ja_JP.UTF-8/ディレクトリ配下に
ファイルが格納されました。

環境変数のLANGを修正

環境変数を確認してみます。

$ echo $LANG 
en_US.UTF-8

このように表示された場合、まだ英語表記を参照するようになってしまっているので修正します。

$ export export LANG=ja_JP.UTF-8
$ echo $LANG 
ja_JP.UTF-8

↑このように設定されているのが期待値です。

動作確認

参照しているマニュアルの階層を表示

$ man grep -w 
/usr/local/share/man/ja_JP.UTF-8/man1/grep.1

grepのマニュアルを確認してみます

$ man grep

わーい👏

Tips
manで解説を表示させた状態で
⌘+Fを押すと検索もできるので便利です。

参考
MacOS の man を日本語化する – Corredor
manコマンドの表示を日本語化した話 – Qiita

やりたいこと

本日のTODOです。

ぼちぼちできた。

Lodgeに行って作業したよ。
なんだかLodgeに行くといつも頭痛がするの。
集中しすぎてしまうのかなあ。
建材アレルギーな可能性もある。

そういえばDjango Girlsで知り合った子が
AWSやりたい!と言っていたので
AWSに触りたい有志を集めて小さく勉強会などしたいなあ
とおもいました。実現できたら楽しそう。

本日、Blogの内容がてんこ盛りなので
三つに分割しました。

manコマンドの日本語化
Django GirlsチュートリアルでつくったものでDockerfile作成
Nginxの設定をAnsibleで展開

体力的にはAWSのチュートリアルも全然やれそうだったのだけれども
さすがにやりすぎ感あったので
少し物足りない程度で終わっておきました。

今後できれば半年以内にやりたいなあとおもっている内容です。

  • LT慣れする
  • ハッカソン参戦
  • チューターやってみる
  • 技術的な何かで30pほど書く&製本
  • AWSの資格挑戦してみる
  • OS自作
  • ラズパイで何か作る

上から順にガンガン挑戦したいとおもいます。やるぞ〜

ハンズオン続き

DjangoGirls主催の
PythonでWebアプリケーションをつくるハンズオンに参加してきました。
https://tutorial.djangogirls.org/ja/deploy/
ここを参考に進めました。
前回のハンズオンで書いたコードやDBの設定などを読み返して復習しつつ
チュートリアルに沿ってPythonAnywhereにデプロイしました。

流れとしてはGitHubにアップは済ませてあったので

  • PythonAnywhere APIトークンの作成
  • PythonAnywhere のbashコンソール内でサイトの設定をする
$ pip3.6 install --user pythonanywhere
$ pa_autoconfigure_django.py https://github.com/<github-username>/<blog-name>.git

これらを実行することで

  • GitHubからコードをダウンロード
  • PythonAnywhere上にvirtualenvを作成する。
  • 一部のデプロイメント設定で設定ファイルを更新する
  • manage.py migrateコマンドを使ってPythonAnywhere上のデータベースをセットアップする
  • 静的ファイルの設定
  • APIを通じてPythonAnywhereがWebアプリケーションを提供するように設定

上記が自動で設定されます。PythonAnywhereすごーい!

CSSをいじったら

$ python manage.py collectstatic

collectstaticコマンドで
アプリが管理している静的ファイルを
Nginxが参照できる場所(ディレクトリ)へ
ひとつにまとめることができるの。
参照: https://qiita.com/saira/items/a1c565c4a2eace268a07

手動でがんばる。

とりあえず目標だったデプロイまでできたし
.env以下に

# set environment variable to tell django where your settings.py is os.environ['DOTENV'] = '/home/suwa3/suwa3.pythonanywhere.com/.env'

これらを追記してsettings.pyのSECRET_KEYの値、直書きしていたのを

SECRET_KEY = os.environ['SECRET_KEY']

に書き換えました。
キリの良いところまでいったので
とりあえずこれでよしとします!

あしたのやりたいことをリスト化しました。

できたらいいなあ

気絶

帰宅してから記憶がないのでベッドで気絶したとおもわれます!
肩凝りがキツいのでこっそりピップエレキバン貼ります🙋

土曜日はDjango girls主催の
PythonでWebアプリケーションをつくるハンズオンに参加してきます。
先月も参加していて、GitHubにソースコードを上げるまでは出来ているの。
Pythonのversionを上げるのと細かな修正、あとデプロイまで出来たら良いかなぁってかんじです。
時間が余ったら見た目の装飾を整えよう。

日曜日はLodgeか適当な作業カフェでもくもくする予定です。
Laravelの続きと、Dockerサラッと、Nginxファイルのgit管理とAnsible展開までしたいなぁ。

ハッカソンに誘われたの。
今回はDjango girlsと重なっていたので参加を見送った。
ハッカソン怖い。
でもいつか参加してみたいなぁ。
「やらかしても怒られないから仕事より怖くないよ」と言われた。
そういうものなのかなぁ。

読書と食虫植物について

家事をやっつけたりボーッとして過ごしました。
久しぶりに予定のない1日だったかもしれない。
少しだけ読書したの。

もう半年くらい前に買った本だよ。
独学が不安だったの。

「アセンブリ言語で書かれたコードをPythonで書くとこうなります」
ってところにテンションが上がった。
アセンブリ言語、何書かれているのか分からな過ぎて良いな。

「プログラミングできるということは、しばらく座っていれば新しいアイディアを実際に実現できるということ」
というの、制約のあるなかで決められたパーツを組み合わせるのレゴブロックのようだなぁとおもった。
組み合わせを工夫することで、レゴブロックのように仕組みや構造をつくることができるの。

夕方以降はアニマルプラネット観ていた。
南アフリカにあるテーブルマウンテン近辺に住む
野生動物や食虫植物について詳しくなった。
正直今回は生き物の生態よりか、テーブルマウンテンの地理的背景や歴史のほうが気になった。笑

調べたら、大昔に地軸の上に位置していたため大陸分裂時にここだけ取り残されてしまったらしい。
その後は氷河期があったのだけれども、ここだけは気候変動の影響をほとんど受けないで固い岩盤が残ったとのこと。
そのせいで独特な植物も多いとのことだけれども、それで食虫植物に繋がるのか〜。
というか食虫植物、蚊一匹でも数ヶ月食事しなくて良いのね。
ラクで羨ましい。

寝る

帰りがけバタバタ急いでいたら
お父さんから電話が来て
おばあちゃんの認知症が急に進んで
おばあちゃんの中でわたしは小学生になっているらしい。
たまに意識がハッキリする瞬間もあるので
タイミングをみて帰って来て欲しいとのことでした。
週末の予定を調節しないと!

夏に会ったときは普通に会話できていたのになあ。
本当に急で驚いたの。

職場でリクルートの話になって
「勉強会で知り合った子で、『一緒に働きたいな』と思える子がいたら紹介してね」
と言われたの。

そういえば一人たくさん話して、良い子そうな子いたなぁ
と思い出したので声を掛けてみた。
一緒に働けるといいなあ。

新しい職場になって2週間だけれども
「まだ2週間?もう一ヶ月くらい居る感覚だった」
と言われた。
わたしは時間があっという間すぎて
時間の感覚が完全にマヒしています😃

今までの職場のなかでも
ダントツではやく馴染んでいるかもしれない。
塾講師のときもすぐ馴染んだけれども
あのときは、ほぼスタートアップメンバーだったので
全員後輩だったしなぁ。

いまの職場みたいに笑ったり
冗談を言えたりするようになるまで
だいたい半年〜1年かかるの。

キャラが濃い方がたくさんいるので
変に気を遣わなくて良いのが、とても働きやすい。

環境がガラッと変わって
だんだん冬になってきて
体調崩さないように気合い入れよー
ってところに色々と降ってきて
「キャパオーバー感じる〜〜〜」
って感じだったけれども

やることを書き出したり
ひとにバーーッと不安だったり大変だったりすること話して
スケジュール見直していたら
なんだか落ち着いてきたので
お洗濯して早めに寝まあす🙋‍♀️おやすみ〜

マグカップ

職場間の移動中にマグカップを持ち歩くことが多くて
お茶をいれたまま持ち歩くと
信号を待ちながらマグカップでお茶すすっているの
流石に奇行っぽさあるのでやめようとおもいました。

「どうしてスクールに行こうと思わなかったのか?」
って話題になったの。

「これ作りたい、何がなんでも作る」
ってものが出来たのが先だったので
それならとりあえず挑戦してみて
わかりそうな人に聞いた方が良さそうだと思ったの。

あとは、たぶんスクールの講師になるような人たちって
きちんとプロになれなかった人たちなのかなぁ
って偏見があって
実際に現場で働いている人たちから、話を聞く方が良いな
と考えたのもある。

Webサービスを構築するにあたって
どこのサーバーを使うか考えたときも
VPSやレンタルサーバーなども候補としてはあったの。
でも、今後仕事をしたいのであれば
AWSを覚えたいなとおもったし
(完全にオーバースペック感あったけれども)
メディアストレージやメールサーバーの選定でも
数百円でAWSのサービスを学べるなら安い🐰
ということで、無名の最安ツールは使わずに
できる限りAWSのなかで完結させるのを目標にした。

周囲の人からは
「どうしてわざわざAWSで?」
「クラウドは正直おすすめしないよ」
などと言われたけれども
結果とても勉強になったし良かったなぁとおもう。

後からひとのせいにするの嫌なので
なるべく判断は自分でしたいし
判断出来るだけの情報集めに努めたいの。
でもファミレスで何頼むかとか考えるのは面倒臭い。
隣のひとと同じのでお願いしますって言っちゃう〜