ITから離れることになります
はいこんにちは。
わたくしIT業界から一度身を引くことになりました。
理由としては研究時代にのめりこみすぎた結果環境にうまく適応できないことが分かったことが大きいのですが、経歴ができてしまったが故にわりといろんなところで声をかけていただくことが多くて。それはとてもうれしいことであり本望だったのですが、実際に仕事を経験してみると自分の向き不向きやストレス源がどんな部分にあるのか、自分にとっては大きな責任を全うできるのかという部分が数多く出てきたことにより、あまり精神衛生上よろしくないということから、今回一度身体をめいっぱい動かす仕事に変えることとなりました。
いちおう仕事していない間は元気にしておりまして、コンピュータが嫌いになったわけでもコンピュータに触れている自分が嫌いなわけでもないので、マイペースに知識や技術は積み重ねていきたいと思っています。けれど、ハードルはあまり上げないようにするかなとは思います。
これまで関わってくださった方にもこれから関わってくださる方にも、最大限の感謝を込めて、この場で一度ご挨拶させていただきたいと思いました。身勝手ですが今後ともゆるい距離感でお付き合いいただけますと幸いです。
今後ともよろしくお願いいたします。
最近覚えたこととか
相変わらず自分の不器用なところは全然治らなくて,ここのところバタバタしていて仕事をしたりしなかったり辞めたり始めたり行ったり行った先で追い返されたりSNSアカウントを消したり作ったりしていました.
で,最近大事だなと思ったこと.
- 他人は頼る瞬間に頼ること.今の5倍くらいはやらないといけない.
- 自信を失わないこと.どれだけ無駄足でも無駄足じゃなくなる時がくる.
- 自分に足りないものを当てる勘は割と合っているので信じて動き続けること
- やることをやればどんな簡単なことでも感謝されそこに有意義な経験が生み落とされる
- 特に仕事においては簡単なことも難しいこともものの本質は同じである
- が,理解力と冷静さと言語化能力が高ければ高いほど幅が効くというだけ
- 好奇心は必要なことをやりやすくするための道具として非常に強力である
- 一方で,やるべきことをやるための道具でしかなく優先度は原則的に常に二番である
- これが逆転していると幸せになれるが,意図してこの状況を実現するには何年もかかる
- 何かを向上させるにはヒント探しと違和感探しのようなフィードバックが大事である
- ここは感覚と試行回数でも代替できるができるだけ言語化することが望ましい
- ものができるようになる過程のエビデンスが残る為,あと脳の回路が鍛えられる為
- 脳の回路を鍛えるのは筋肉と同じで,続けるとカロリー消費の際に疲労しにくく洗練されてくる
- 好きなことをやると何がどこかの誰かにとって喜びであるかが自然と分かる
- 感覚で好きになっても理屈が身体のどこかで分かってないと身にはつかない
- 誰に何が最後に伝わればいいかを意識してコミュニケーションする
- 言われたことを忠実に記憶してやることに意識の全てを持っていかれてはいけない
- 背景や周りの人の情報共有の状況,遂行すると何が嬉しいのかまで頭に入らないと本質は見えない
最後の方とかは特に最近思うのですが,おそらくここ数年一人で頭の限界に挑んでいるばかりで全く末端をなんとかやりきれるかどうかしか意識が割けておらず,歯が立たなかったように思います.それは今でもかもしれませんが,実際には難しいことを覚えることは仕事を覚えることの3割くらいでしかなく,その背景が残りの7割を占めているような気がするのです.そうすると専門職を極めていきたいというようなモチベーションの自我から,あえて意識の外にいる人たちを眺めた時,全くこういうことを考えない人たちがどのように,なぜ楽しそうに,ある意味割り切って仕事をしているのか,それは営みのためである,ということが見えてきました.私と私の周りの人達のために幸せになる,ただそれだけであるというような図式が見えてきて,ある種人間の根源に回帰しているような感じがするのです.
ろくに仕事もできないくせに何を言ってるんだと知り合いから罵られそうですが,ここにたどり着きたくてやってきた部分がありますし,もしかするともっと簡単な仕事をたくさんしたり色々な人と話して何か大事な共通点を見出したりすることがもっとできれば,もっとこのあたりの確信が洗練されていくような気はするので,人が苦手なりにもどうにかやりくりしてやりたいなと思います.
概念の覚えかたについて思ったこと
技術の勉強をしてると概念を覚えなきゃいけなくなるときがありますが,これが苦痛な場合には日頃からいろんな好きな話を見聞きしておくとちょっと有利になる気がします. つまり,知らない単語が出てきたときに会話中にそれを想像したり,知ってる単語を概念的に別の扱い方をするときなんかにそれを想像したり,そういうことが会話の中で定期的に行われていると多少は勉強が苦痛じゃなくなるのかもな,って思います.
カタカナを使ってばっかりでうんざりする頭のよさそうな人たちがいますが,あれを痛いと揶揄するのではなく,そういうものを必要な分だけ見聞きすることも重要な気がするのです.いろんな人の話を聞いて,これは本当に頭がいい人なんだなとなんとなく自分で見極めていくことも重要です.考え方がしっかりしているとか,自分の言葉で端的に表現できているとか,この言葉遣いを利用すると思考がうまくなるんだろうなとか,個人的には人の話を聞く際そういうところに注意を向けてしまいます.まあこれは余暇でやらないといけないんですが.
ただこれは勉強が器用になるかもしれないヒントでしかなくて,実際に手を動かしたり,誰かと協力してやることをやっていく中で必要になる社会人的なスキルとはまた別なのかもしれません.あればあったほうが楽だろうなと思ったのでメモしました.
なんか最近非認知能力というのが流行っているそうで,社会人になってこれすごく大事だなと思うばかりなのですが,概念を覚えるというのも一種の非認知能力で,下記で示すところの応用力なのかな?って思いました.
https://www.embot.jp/news/36501
このあたり,20歳を超えても伸びるらしいので,地頭の限界と仕事中の悪癖を知った自分としてはこのあたりに光があるんじゃないかなと思っているこの頃です.
オブジェクトキャッシュってなに
webサーバで使われるキャッシュの話をしたく。
memcache と redis が有名
これらはオープンソースのインメモリデータストア(ディスクではなくメモリ内にキャッシュする技術)。有効化することによってディスクベースのDBよりも迅速にデータを読み込むことができる。 redis, memcachedを利用する際にはwordpresプラグイン等ができている場合には有効化のスイッチを押すだけでいいんだけど、もしそうでなく自前で利用したい場合には少々コードを書く必要がある。が、最小限で動くように設計されてはいる。 データを複数ノードに分散することもできる(おそらく別々のメモリに同時にデータをキャッシュしても正しく動作するように設計されているという意味だと思われる)。つまりスケールアウトが可能。
Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、Goなどで動かせる。加えてredisは、String に加えて、List、Set、Sorted Set、Hash、Bit Array、HyperLogLog をサポートしている。一方でmemcachedはマルチスレッドであるため、コアを複数使ってより多くの操作を処理できるメリットがある。
その他にも機能や長所短所はあるらしいので詳しくは上のリンクを読んでみてください。
wordpressでの実装について
LS cache pluginの場合は構築しているサーバ上でMemcachedとredisがそれぞれ利用可能なのかがステータスとして表示されている。使える場合にはボタンスイッチで有効化できる。ホスト、ポート、キャッシュされたオブジェクトのデフォルトのTTL(メモリに残存する時間)、ユーザ名、パスワード、redisの場合データベースID、NWレベルでキャッシュされたグループ(いくつかある)のキャッシュの選択、キャッシュしないグループの選択、wp-adminのキャッシュ、キープアライブ機能を使ったmemcachedの高速化などを利用することができる。
topコマンドの込み入った使い方
topって見るだけで終わりやすいのでいじって何ができるのか試してみた。
画像で見比べる記事が欲しかったので書いた所もある。
1
CPUコアごとの使用率を表示できる。
2
NUMAをサポートしている場合NUMAノードごとの使用率を表示できる*1。
z
カラーマッピングの設定をONにする。見やすいね(?)
Z
で設定を変更できるのでもう少し見やすくできそうではある。
b
bold。running tasks
の訳が微妙にわからないけど、今CPUが処理しているプロセスにマーカーを引くってことだろうか。よく適当にbを押して自分出来てる感を演出したくなるのでこれはしっかり理解しておきたいところ。
B
boldをenableにする。マーカーだけだと思ってたら単に太字にする機能もあるらしい。こっちのがシンプルだしこれありきのマーカーなんだろうね。マーカーはmanでは"bold"
と記載してるので、そういうことだとおもう。
f
Filelds management。これびっくりしたんだけど、いつも見ている出力はもっと自分が見やすくしたいようにカスタムできるらしい。試しに説明の通りCOMMAND
を一番上に持っていくと、こんな感じになった。
全部有効化してみる
ああ〜
見切れるくらいなら最初から/proc見ればいいんじゃないかという気持ちになった。
ちなみに
こんな遊び方をしても一回デタッチすると元の出力に戻るので安心してほしい。でも、遊びじゃなくとも恒久的に出力を自分好みにするための編集ファイルがあるほうがなにかと便利なはずだ。探してみた。
When you save using W, notice top will display the path to the file it creates to save custom settings.
これだ。Wで保存する。
いえす!ファイルを確認する。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/.c/procps> head toprc top's Config File (Linux processes with windows) Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=2.0, Curwin=0 Def fieldscur=�������ķ��Ŧ���������������������������������������������_`abcdefghij winflags=193844, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=0 summclr=1, msgsclr=1, headclr=3, taskclr=1 Job fieldscur=�����(��Ļ�@<��)*+,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij winflags=193844, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0 summclr=6, msgsclr=6, headclr=7, taskclr=6 Mem fieldscur=���<�����MBN�D34��&'()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghij winflags=193844, sortindx=21, maxtasks=0, graph_cpus=0, graph_mems=0
うーんなんか若干文字化けしてるけどこれは別問題。
意外と簡素にまとまっていて、filelds managementでいじれる設定がこれを見る限りだとわからない。アルファベットが順に続いてるのはおそらく押して設定変更ができるキーのことを指してるんじゃないかと思う。このファイルをいじってカスタムするよりかは、topの実行中に好き勝手にやってみていいところで保存してくださいってことだろう。ともあれこれでtopを再度使っても自分好みの設定が持ち越されるようになった。デフォルトに戻したかったらファイルを消すだけだ。
s
脱線した。デフォルトでは3秒間隔でもろもろ出力されるけど、このインターバルはsで変更できる。きりがいいのでデータ取るときは1秒とかにすることがある。
n
デフォルトでは動作するすべてのプロセスを表示するようになっているけど、上位だけ表示することもできる。出力が減ると何が割りを食っているのか確認しやすい上に、ファイルに出力するときのデータサイズが軽くなるといったメリットがある。15から10にするときはこんな感じ。デフォルトは0、すなわち無制限である。
V
プロセスをツリー状に表示する。apacheとか使うとこの恩恵が多少わかるかもしれない。なんでVかと言われれば木っぽいからである(覚えられればいい)
m
メモリ使用率をバーで表示する。ここをどうするかは、ちゃんと使用量のデータを数値で取りたいか、その場で直感的に理解したいかで決めればよいと思う。普段使いならこっちのほうがかっこいいよね。
まあかっこよさだけならhtop使えって話ではあるんだけど。
最後に
こういう「出力が見えてから特定のコマンドを打ち込む操作」を「インタラクティブコマンド=対話コマンド」というらしい。manを見つけたので整形して再アップしてみた。テキスト探すの面倒じゃないみなさんはman読んでくれれば十分なんで、これが意味のある仕事かといわれればnoですけど、個人的に編集してて楽しかったので、型は今後につながるんじゃないかなあ、くらいに思ってます。
ubuntuにdockerをインストール - 2
前回:ubuntuにdockerをインストール - brand new note
先日半分までやってみて後半をやっていなかったのでやりながらメモ。
Ubuntu 20.04へのDockerのインストールおよび使用方法 | DigitalOcean
参考はこれ。まず前回作ったubuntuのコンテナイメージにログイン。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker run -it ubuntu root@b2421f52ba91:/#
アプリケーションのインストール
ここでは例としてnodejsをインストールしてる。
何に使うんですかと言われると困る。
root@b2421f52ba91:/# apt install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nodejs
root@b2421f52ba91:/# sudo apt update
bash: sudo: command not found
root@b2421f52ba91:/#
あれ?コンテナはsudoないんだね。いらないねよく考えたら
root@b2421f52ba91:/# apt update Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB] Get:3 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [297 kB]
root@b2421f52ba91:/# apt install nodejs
これで入った。途中でタイムゾーンを聞かれたのでtokyoとした。
バージョンを確認する。
root@b2421f52ba91:/# node -v v10.19.0
コンテナの管理
ログアウト。docker ps
で実行中のコンテナイメージが確認できる。
root@b2421f52ba91:/# exit exit ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
普通にexitするとコンテナはシャットダウンするようになってるのでここではなにも出力されてない。-a
を追加すると未実行のコンテナイメージも含めてイメージの状態を確認できる。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 83ef15493b01 ubuntu "/bin/bash" 10 seconds ago Exited (0) 4 seconds ago exciting_einstein b2421f52ba91 ubuntu "/bin/bash" 22 minutes ago Exited (0) 8 minutes ago nifty_wright e09ccc2414db ubuntu "/bin/bash" 29 minutes ago Exited (0) 29 minutes ago admiring_sanderson 6d9d8508a9ca ubuntu "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago charming_swartz 5f9574e596e0 ubuntu "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago admiring_chaplygin ca738446dafa ubuntu "/bin/bash" 6 days ago Exited (127) 6 days ago epic_feynman 63ab6e895499 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago recursing_ramanujan 937c1efdf209 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago confident_wu ab2f5e6adf0e hello-world "/hello" 6 days ago Exited (0) 6 days ago flamboyant_mclaren
今気がついたんだけどrun
はイメージを新規作成するコマンドなのでubuntu
が大量生成されていた。同じものを指定して再利用するには二回目以降で別のコマンドを使わなきゃいけない。凡ミス。
さっきnodejsを入れたコンテナイメージを指定して立ち上げる。docker start
。確認するとログインはできていないが立ち上がりはしている。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker start b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2421f52ba91 ubuntu "/bin/bash" 27 minutes ago Up 28 seconds nifty_wright
ログインにはdocker exec
を使うようだ。さっきnodejsを入れたイメージを指定して本当に当該イメージに入れているか確認する。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker exec -it b2421f52ba91 /bin/bash root@b2421f52ba91:/# node -v v10.19.0
よさそうなので今度は立ち上がっているイメージを落とすdocker stop
を試す。のだが、このままexit
するとそのタイミングで落ちてしまうのでデタッチをする。
Dockerのコンテナにログインする際は例えば以下のように実行します。 このあと、 ctrl + d で抜けるとコンテナは終了してしまいます。 コンテナを終了せずにログアウト(デタッチ)するには ctrl + p + ctrl + q を実行します。
root@b2421f52ba91:/# read escape sequence ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ [1]>
これでいいはず。落ちていないことを確認。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2421f52ba91 ubuntu "/bin/bash" 41 minutes ago Up 14 minutes nifty_wright
ここからdocker stop
。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker stop b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
大丈夫そうだね。
作ったイメージを削除するにはdocker rm
。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker rm b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 83ef15493b01 ubuntu "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago exciting_einstein e09ccc2414db ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago admiring_sanderson 6d9d8508a9ca ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago charming_swartz 5f9574e596e0 ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago admiring_chaplygin ca738446dafa ubuntu "/bin/bash" 6 days ago Exited (127) 6 days ago epic_feynman 63ab6e895499 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago recursing_ramanujan 937c1efdf209 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago confident_wu ab2f5e6adf0e hello-world "/hello" 6 days ago Exited (0) 6 days ago flamboyant_mclaren
これでnodejsを入れたb2421f52ba91
が削除された。
コンテナ内の変更をセーブして新しいイメージを作る
前回いろんなイメージの中から選択して好きなイメージをダウンロードしたけど、逆も可能で、自分が変更を加えたイメージを新たなイメージとして新規生成してdockerhubにアップロードすることもできる。まずdocker commit
コマンドを使う。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker commit -m "ekp commit" -a "ekp" 83ef15493b01 spsyk103/new_ubuntu sha256:1551dcbc8d23045ea00b00d33c5e109ea85f538f5691fbaaaaccbe9950a4560b
-m
はメッセージで-a
はauthor、作者。ここは任意だと思う。イメージのidと新しい名前を書いて、docker images
で新しいイメージが手元に作成できたか確認する。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker images REPOSITORY TAG IMAGE ID CREATED SIZE spsyk103/new_ubuntu latest 1551dcbc8d23 2 minutes ago 72.7MB ubuntu latest 7e0aa2d69a15 5 weeks ago 72.7MB hello-world latest d1165f221234 3 months ago 13.3kB
dockerhubに作ったイメージをアップロード
これをアップロードしてみる。dockerhubはgithubみたいなもので、個人アカウントを作って自分で作ったイメージをインターネット上に保存して管理できる。ログインをした後docker push
を使う。その後、少し待つ。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker login -u spsyk103 Password: WARNING! Your password will be stored unencrypted in /home/ekp/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker push spsyk103/new_ubuntu Using default tag: latest The push refers to repository [docker.io/spsyk103/new_ubuntu] 0ea9b9f8f036: Pushed 2f140462f3bc: Mounted from library/ubuntu 63c99163f472: Mounted from library/ubuntu ccdbb80308cc: Mounted from library/ubuntu latest: digest: sha256:1f9dfa9100dba94515b4c030beb98cee2b78a552647cee1fc230f57e4b604f6e size: 1150
※dockerhubアカウントの開設は割愛します。簡単なのでこの辺を見てください。
Docker Hub アカウントとリポジトリの作成 — Docker-docs-ja 1.13.RC ドキュメント
自分のdockerhubにアップロードできたことを確認。
以上
今回はここまでです。おつかれさまでした!