brand new note

技術録

今更わかばちゃんと学ぶgit

わかんないもんはわかんないんですよねの精神で入門し直すgit.

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

動機

  • カーネル触れる人になりたい(難しくて一枚岩で精緻で芸術的なところがすき)
  • しかし知ったかぶりしたり背伸びしたりする癖があることもなんとなくわかってきた
  • 勉強のコツや精神的余裕が生まれてきたこのタイミングで改めて謙虚になるべきだと思った
    • わからないものはわからないと正直に表明するのはコミュニケーションの初手ではきっと大事(自戒をこめて...)
  • 尊敬するみんなが当たり前のようにわかってるのにわかってないのはけっこうしんどい
  • わからないとけっこうクリティカルに仕事に支障が出る
  • 萌えキャラを受容するこころを最近手に入れた

git

これはおさらいです.

  • バージョン管理システムです
  • 変更毎のバックアップをまとまった操作でできます
  • いつでも好きな時点に戻すことができます
  • 各メンバの修正を合体出来ます

なぜgitがあったほうがいいのか

  • 手動でファイル名を日付にしてバックアップ取るのがしんどいため(作成も参照も)
  • みんなでどこをどう編集したのかがその場でわかったりまとめたりできるととてもうれしい
  • コマンドを覚えるといつのバージョンにも同じ手順で戻れる
  • なぜ過去にこの人はその編集をしたのか?が残せると開発では便利(なるほど)
  • コーディングを通したコミュニケーションの場所が提供される(そういえばずっとこれに憧れているんだった)

ホスティングサービス

GithubやBitbucketがある

The world’s leading software development platform · GitHub

Bitbucket | The Git solution for professional teams

そもそもホスティングサービスってふわっとしかわかってないけど...

f:id:frazz:20200829234446p:plain

https://wa3.i-3-i.info/word1335.html

サーバレンタルサービスですね.(うっそだろお前)

Bitbucket is more than just Git code management. Bitbucket gives teams one place to plan projects, collaborate on code, test, and deploy.

まあこの意味も後々わかるでしょう.まとめです.

  • githubやbitbucketは,gitで管理しているファイルのバックアップ先として使える場所
  • ただのファイル置き場ではなく,コミュニケーションの場である.

昔後輩に入門したのにそれさえついていけなかったのを思い出してふと....やはり自分以上のスピードで歯抜けで学習するのはつらいですね.余裕ができてほんとうによかった

sourcetreeのインストールとbitbucketのアカウント作成

sourcetreeはgitをGUIで使えるようにしたもの(としか本には書いてないのでそれ以上の理解はいったんおいておく)

手元のPCがwindowsなので本の通りインストール

Sourcetree | Free Git GUI for Mac and Windows

f:id:frazz:20200830000614p:plain

この英語さえ心理的障壁があったあの頃.

bitbucketは無料で非公開リポジトリをいくつでも作ることができるそう(5人までなら)

これ今はgithubでもできるんじゃなかったでしたっけ...?とりあえずアドバイスは世界を広げるために一度聞いておきます.

f:id:frazz:20200830000840p:plain

流れるようにアカウント登録

f:id:frazz:20200830002432p:plain

で,できました.なんてやさしいUIなんだ....

ああ,これで2000字ですね.まだ何もしてないけど....

所感

本はまだまだ前半.ここまで1時間くらいです.英語のサイトがつらいとか,勉強の進め方ってこれであってるんだろうかとか,久々に気力が戻ってみるといろんなもやもやが大体取り払えたのを感じます.一緒に手を動かそうよみたいなやつ,これまでなかなか挫折ばかりでうまくいった試しがなかったのですが(ゆえにただの読み物を大量に読んで点の知識ばかり身につけて紛らわしていた)なんだかそろそろそれも終わるんじゃないかなという気がしています.気のせいじゃないといいですね....

スラブアロケータってなに

単語がかっこいいのでめも.

前提

まずallocateは割り当てる,何かを与える,という意味.ニュアンスの違いは以下です.へえ.

http://medieigo.com/articles/-/1112.html

いずれも「(ある目的のために)何かを与える」という意味を持っています。 両者の違いは,allocate は「ある目的のために」が主体で,「そのために何かを与える」のですが,assign は「何かを与えること」が主体で,「与える人のためになっているかどうか」は考慮されません。

よむ

qiita.com

mallocやfreeのようなものがカーネル内にも存在していて,そういうカーネルが用意してるメモリの提供機能がスラブアロケータ

mallocやfreeっていうのはシステムコールでしたっけ.これってユーザランドのものなんですかね.ちょっとそこ不透明です.sat本を読みます.

honto.jp

この通販サイト昔使ってました(余談)

mallocはCの標準ライブラリの関数としてい入っているとの記述.つまりユーザランドで動作しているということ...??

スラブアロケータが提供しなければならないAPI

  • 準備系

kmem_cache_init, kmem_cache_init_late, __kmem_cache_create

  • 確保系

_kmalloc, __kmalloc_node_track_caller, kmem_cache_alloc, kmem_cache_alloc_bulk

  • 解放系

kfree , kmem_cache_free , kmem_cache_free_bulk , kmem_rcu_free, kmem_cache_release, kmem_cache_shrink, _kmem_cache_shutdown

  • その他

ksize

ここに書いてあるのが全てAPIというやつだってことでしょうか.kはカーネルでしょうね.準備はキャッシュを初期化するとかですね.確保ってのはどのくらいメモリを確保するかってことですね.allocが割当て.解放っていうのは使われているメモリを開放するってことですかね.freeとreleaseの違いが感覚だとわかりませんが.このハイフンから始まるのも謎ですね.なんとなく見たことがある気がするのはどこでだったかな.

f:id:frazz:20200828210804p:plain

表があった.

ハイフンはよくわかりませんが_kmallocで確保したメモリをkmem_cache_freeで開放したりしているので,やっぱりセットで使われるんですかね.当たり前か.当たり前のこともわからないものなのね.

特定のデータ型を扱うか汎用的なデータ型を扱うかによって使う関数が変わるとの記載.データ型に色々あるといわれてもプログラムが書けないのでイメージできない..(今後の課題)

実装のはなし

わからなくても楽しいと思えた時に読む,これがだいじ

f:id:frazz:20200828212350p:plain

はやいのとめっちゃはやいのと軽いのがあるんですかね.なるほど.

つくりかたは, どんなのをつくりたいか考える→できるのか考える→つくる→デバッグ

なるほど.ここまで書いてくれないとわからない自分がいるっていうのもあれですね.なんか目の前で起きていることが何もわからないのにデバッグを延々とやっていた時代をふと思い出しました.いかん.ちょっとここから先は難しいので黙読します.

...ああ,カーネルパニックって聞いたことありますね.なんだっけ.

f:id:frazz:20200828212857p:plain

つらそう

同期がうめいてたのはこれだったのか...

そういえばgoogleのゼロクリック検索が発展してwikipediaのアクセス数が減っているらしいです.そのうち寄付でもしよう.

page構造体...page構造体ってなんですかね...なぜこれが気になるんでしょう.きりがないから好奇心の赴くままにつまんでいく.

Linuxでのpage構造体群の配置 - Qiita

こっこれはいまのぼくには難しくてよめない.こういうときは世界って広いんだなと思って飛ばせって言われた気がする.表とかグラフとか書けるのかっこいい.憧れます.

あああ,この記事も下の方は難しいです,次回にします....

これでもう2000字ですね.なんかこう...昔は自分の考えてることをばーっと書いてそれを他人に見せるの嫌だったんですけど,こうやって気持ちが向かったときに趣味みたいにして書くのいいですよね.インプットしながらアウトプットするみたいなの.懐かしいです.

まとめ

ユーザランドでなく,カーネル側でもメモリ領域を提供する機能があって,それをスラブアロケータという.カーネル開発に興味が出たらこのあたりからやってみるといいとのこと

所感

研究室でカーネルの勉強がしたいと教授になんとなく言って,研究所のはんこがついたカーネルの本をしばらく借りていたのをふと思い出して,リベンジしている次第です.あのころ生きるか死ぬかみたいな感覚で爆速で勉強してた時はひたすら書き物してたなあなんて思いつつ.人に読ませるものではないので参考にされる必要はないのですが,もしかするとこれからひたすらこんなめもを書くのかもしれない.

一次情報

www.ibm.com

www.kernel.org

そのた

Buddy memory allocation - Wikipedia

Windows10 で文字を入力する画面上に 「あ」 や 「A」 が表示される - パソコンじいちゃん

リモートでも仕事に集中する為に最近始めたこと

メンタルがそんなに強くない人でも独力でできる方法...のはず...です。

身につけるものを変える

五感はリラックスの度合いや緊張感に大きく影響するらしいです。思考の邪魔になる不快感はできれば排除できたほうがいいです。普通のシャツからゆるめのTシャツにし、畳のスリッパを買ったらかなり無駄な緊張感が減って楽になりました。窓を開けると幸い近所の緑の香りがするので、夏はこれもいいです。蚊取り線香の香りも好きなので、今度虫除けがてら買います。

もしかすると服の着心地は椅子の座り心地と同じくらい大事なのかもしれない。

梅雨は特に。

PCのカメラをつけておく

誰かに監視される必要はないですが、気疲れしやすい人ほど一人でいるときには気が抜けるそうです。ぼくもそれは否めないので片隅にPCのカメラを起動させてみたところ、気づいたらちょっとさぼってたみたいな瞬間も、作業が進んでないのになぜか力が入りすぎてすごい形相している瞬間も、全部自覚できます。鏡は身だしなみを整えるものではなく理想の自分を見るもの、みたいな文言もどこかで見たので、たぶんこうなりたいみたいな自分を逐一見て襟を正す効果もあるのかもしれません。物理出社が始まる前に自分がどんな顔して仕事してるのかは覚えておくと、自分にとって丁度いい緊張感も自分の印象もわかってくるかと思います。

もっというと、たぶん人って細かいこと考えてるときにすごい形相するのかもしれないです。思考や文章の推敲してるときはそういう顔で作業してもいいですが、真面目になってずっとその顔してても作業はあんまり進まなかったりします。こういうときは力抜いたほうがいいかもしれない。

manの素晴らしさに気づいた話

これを書くことによって,この情報を必要としてる人がいい影響を受けてすぐ変化するかというとそれは違う気もしますが,メモです.

UNIXコマンドを学ぶならmanをちゃんと読んだほうがいいよ,という話です.

なんで

なぜ改まってこんなことを言うのかというと,「読みやすい入門webサイトを差し置いて,なぜ初心者にとっては読みにくいmanを読むことにメリットがあるのか」という話が今回の本来の主旨だからです.

その理由は,「間違いがないから」です.

なんだそんだけかと思うかもしれませんが,読みやすいwebサイトから情報を仕入れて学びを進めている人ほど,公式ドキュメントの「間違いのない情報」を読むことには価値があります.

ここで勘違いしないで頂きたいのは,入門サイトの情報が間違っているということを言いたいのではありません.情報としてはほぼ正しいと思っていただいていいですし,独学にケチをつけたいわけでも,書き手の方をどうこう言うつもりもありません.ただ,「文章の洗練度合いによって,読み手が掴むべき情報を間違った解釈,あるいは間違った順番で解釈してしまう危険性がランダムに発生する」のです.これは有り余るインターネット上の情報から自分にとって見やすいものだけを見ているとどうしても陥りやすい現象です.

例えば

こちらの説明を見てみます.

touchはファイルのタイムスタンプを変更するコマンドだ。

また、存在しないファイル名を指定することで、内容の入っていないファイルを新規作成する機能も持っている。

タイムスタンプには3種類の日時がある。

日時はファイルの内容を書き換えた日時がmtimeと呼ばれる更新日時がある。

更新日時にプラスして、ファイルのアクセス権設定などを変更した日時ctimeがある。

最後にatimeという、所有者がファイルを読み取り以外の操作をした場合に変更となる日時がある。

touchコマンドは、mtimeとctimeを書き換える。

この情報は全て正しいのです.では,この文章に対して脳内で相槌を打ってみたらどうでしょうか.

touchはファイルのタイムスタンプを変更するコマンドだ。

ほう.

タイムスタンプには3種類の日時がある。

ほう.

日時はファイルの内容を書き換えた日時がmtimeと呼ばれる更新日時がある。

ほう.

更新日時にプラスして、ファイルのアクセス権設定などを変更した日時ctimeがある。

ほう.

最後にatimeという、所有者がファイルを読み取り以外の操作をした場合に変更となる日時がある。

ほう.

touchコマンドは、mtimeとctimeを書き換える。

ほう.

お判りでしょうか,読み手が思考を途中から放棄していることが....すごくわかりやすく情報が端的に抜き出されており,なんもわからん状態の読み手にとってこの上ないほどありがたい文章になっています.ゆえにトラップなのです.この伝え方になるともう学習者にとっては暗記ゲーと同じで,学習効率はその学習者の短期記憶のスペックと気合に依存するのです.暗記ゲーで習得しても,使わなければいずれ忘却してしまい,学習の積み上げ効果は薄くなります.これが積もり積もって挫折になる経験を自分自身が何度も経験しています.まあ...勉強の仕方を理解する為にはその経験も必要だったんですが,いかんせん無駄が多すぎました....

じゃあどうすんの...

これを踏まえて.man touch(1)を上から順に眺めてみます.

f:id:frazz:20200609000452p:plain

touch - ファイルのタイムスタンプを変更する

ん???これしか書かれてないの…?まあこれが一番上に来るってことは一番大事な挙動はこれなんだろうな(タイムスタンプってなんだ).

touch [OPTION]..[FILE]...

ん???まあコマンドを最初に書いて,次にオプションを書いて(オプションってなんだ),ファイルを書くのか(ファイルって自分であるやつを指定する感じだよな).この書式ってのは他のコマンドでもだいたい共通な気がする.

各FILEのアクセス日時と更新日時を現在時刻に更新します.

ん???あ,この日時って一番上で言ってたタイムスタンプのことっぽいな.しかもなんか2個あるな.それぞれの日時に更新する方法とそれを確認する方法がほしいから,少なくとも手を動かして確かめるために4通りくらい実行パターンあるなたぶん.

引数FILEが存在しない場合...(中略)...からファイルが作成されます.

ん???あ,ファイルがないってことは時刻情報もなにもそもそも情報を付与する対象がないから,1から作るってことなのか.


お判りでしょうか,わからないなりに読み手の思考が連鎖していることが.これがmanおよびあらゆる公式ドキュメントの強さです.上から読めば一番大切な本質情報から順に理解でき,わからないことはそのあとから解決できるように文章構成がされているのです.これは良いドキュメントですね!!!ぼくはこれを真の学習と呼ぶのだと腹落ちして深く感動しました.

え?しませんか??

公式DOCを読もう

最初はね,ぼくも皆さんが築き上げた読みやすい記事をひたすら読んでいたのです.しかし学習は積みあがらず,なぜか実力は伸び悩んでいました.

Terraform

インフラストラクチャをコードとして使用して、クラウド、インフラストラクチャ、またはサービスをプロビジョニングおよび管理する

こんなトップページの売り文句もなんだかぱっとわからなくて, すごく苛立ちを感じていたのですが,今となってはこの文章が最も大事な本質情報であるとわかります.この大切さに気付けると一歩進めますよ.というお話でした.

カーソル指定した所を翻訳してくれるchrome拡張

久しぶりに書き物する気力が湧いてきました.私事ですが晴れて修士論文を書き上げ,無事大学院を卒業することができました.夢だったインフラエンジニアにもなれました.色々思う所がありピークの頃ほど良い記事はまだ書けそうにないのですが,できるだけいいものを皆様の目に届けたいという気持ちは変わらずありますので,ほんとに拙いですが少しずつ更新していきます.ゆっくりですがいっぱしの技術者になれるよう努めますので,何卒よろしくお願い致します.

本題

日本人のスタックオーバーフローの入門: How to use Stack Overflow for Japanese People - Qiita

英語で調べ物するときにgoogle翻訳のタブを一つ常に開いてるのしんどいなあ,と思っていたらこんなのがありました.

chrome.google.com

カーソルを合わせるとその場所を翻訳してくれるchrome拡張です.

使い方の具体例は引用元のqiitaを見るとわかりやすいかもしれません.拡張なのでブラウザの右上からいつでも翻訳機能が呼び出せるというだけで便利なのですが,選択した箇所をその場で翻訳する機能を使うとさらに便利です.レンチのマークから設定画面に移り,"auto translate text in clipboard"にチェックを入れてください.

f:id:frazz:20200511223826p:plain
ああ~便利なんじゃ~

メリットは翻訳用のタブを別で開く手間が省けること(これが一番だと思います),google翻訳の機能を引用しているので翻訳の質がある程度高いこと,指定した箇所をピンポイントで翻訳できること(そのページをまるまる翻訳されると翻訳ミスによる解釈違いのリスクが上がる為),だと思います.

デメリットは,英語で検索ワードを入れたいなと思ったときに「あれ,この単語は英語でどうやって言うんだっけ...」というケースでは使えないことですね.まー英文をその場で翻訳したいというニーズに沿ってるので当たり前なんですが,英語を翻訳したいっていう欲求が2種類あることに初めて気付いたもんで....それと,chromeで開いたPDFファイルの翻訳には対応していません.あくまでも,汲み上げることができるのはブラウザから直に見えているテキストのみです.

えーと,それと,このbokura jishoはfirefoxには対応していません.しかしfirefoxでもgoogle翻訳拡張機能は使えますので,そちらをお使いいただければよいかと思います.若干直感的な操作はできなくなりますが,先に挙げたデメリットはなくなります.google翻訳のタブが浮かんで出てきますので(画像は割愛させて頂きますけど).

そんだけ

英語が読めるようになる努力も大事だけど,こういうのも頼って時間節約していきたいね~

インプットとアウトプットはどちらが先か

晦日になりました。歩いてたら考え事が出てきたのでメモします。

ぼくは勉強が好きです。いや、好きな勉強をするのが好きです。ずっとそうやって暮らしていきたいなと思ってます。

なんだそりゃって感じなんですけど、それが前提にないとこれ以降が書けないので。

それと、ぼくにとって人としゃべるのは結構苦痛です。嫌じゃないんですけど、現段階の自分にとって過不足なくインプットができる状態って、そうそう他人を介しているとできません。自分と同じことを考えて共感してくれる人は時々居ますが、共感を第一目的にして生きてるわけじゃないし、そこに依存してるとやるべきことやれないので。

とはいえ、新しい刺激は他人からでないとほぼ得られません。なので人付き合いを完全に断って何かを勉強することはできません。一人でできるのは自分の持っているものを整理することだけです。

で、インプットとアウトプットの話なんですけど。

ぼくは何となく

  1. インプット
  2. アウトプット
  3. 1日が終わって寝る

だと思ってたんですけど、これ自分に合ってないんじゃないかなと思って。

そもそも知識ってちょっと寝かせて、思い出して、そのとき整理ができて、ちょっと深みが増すものだと思うんですね。朝風呂入って考え事してると昨日見た動画のことが体に定着したりするんですよ。で、これが最近ずっと癖になって、もしかすると

  1. アウトプット
  2. インプット
  3. 1日が終わって寝る

のほうが性に合ってるんじゃないかと思い始めていて。 人間起きてから2時間後くらいが一番集中力が高いんだそうです。だから、それでいうと思考を整理してそれをそっくり誰かに話す、というのを一日の初めにやるのがいいのかな。それで、そこから言いたいこと言って頭がすっきりして、器が空いて、フィードバックが来て、人の話を聞いて、次の知りたいことを日中に知って、よくわからんけど悶々としたまま寝る。で、次の日の朝、聞いた話が自分の体に繋がる。

今は直接的には本業に関係しない考え事をこのサイクルでやってるんですけど、これを本業に使えるようになったらだいぶ楽しいんじゃないかなとか妄想してます。これでしばらくやってみようと思います。うん。

今年は一人でこんなことばっかり考えてました。おそらく人生で一番マイペースに考え事をした年だったと思います。別に本業で結果が出たとか、友達が増えたとか、そういうことはあまりなかったかもしれません。ただ、自分の中のいろんなものを整理した年だったのかなと思っていて、そこに関してあまり後悔はなく、これからまた頑張っていくために必要な段階だったのかなと思います。ただ、マイペースに付き合わせてしまった周囲の方々には深くお詫びしなければなりません。

誰も見ちゃいないと思いますが、一応頭の中を若干公開するだけの勇気が出たので、以上をもって1年の締めくくりに変えさせていただきます。 皆様よいお年をお迎えください。来年もがんばっていきましょう。僕はこれから論文を書きます。