アウトプットの箱庭

基礎から学習しなおしてる現役エンジニアの勉強記録です

「新しいLinuxの教科書」12章 + react-hooksの学習

6/30 学習分

学習内容

12章 テキスト処理のコマンドについて

  • sortコマンド
    • 標準入力を行単位で、並び替え、結果を標準出力へと出力するためのコマンド。
    • sort {ファイル名などの入力}の形で使用する(アスキーコードの順番で並ぶ?)

補足

コマンドのオプションとして、 -n で数字順、-rで逆順、-k {数字}で「何番目の単語に対してソートするかの指定」が紹介されていた

  • uniqコマンド
    • 行単位での重複を消すためのコマンド。ただし、連続した行に対してしか使えないため、一般的にはsortコマンドの後で使用する
    • uniq {ファイル名などの入力}の形で使用する

補足

sortには-uオプションが用意されており、これをつけるとuniqと同じことができる

 

  •  cutコマンド

    • 標準入力に対し、行ごとの単語単位で、値を削除するためのコマンド?(曖昧)
    • cut {ファイル名などの入力}の形で使用する
  • ファイル内の文字を行ごとの単語単位で取り出すコマンド(名前忘れた) これがcutコマンドでした

    • 行の中で、単語の区切りを判定するための文字と何番目の単語を取り出すかを指定することで、それだけ取り出せる(ex. csvであれば,を指定する)
    • {コマンド名} {区切りの文字} {取り出す番号(複数可)} {ファイルなどの入力} {コマンド名} -d {区切りの文字} -f {取り出す番号(複数可)} {ファイルなどの入力}の形で使用する
  • 行ごと文字列の内容を確認し、指定した文字と置き換えるコマンド(名前忘れた) trコマンド

    • 名前の通り入力を確認し、その中の指定の単語を別の指定した単語と置き換える(ex. 小文字のアルファベットを大文字に置き換える)
    • これだけ、ファイル指定はできない (純粋な標準入力に対してのみ実行可能)。 純粋な標準入力に対してじゃなくて、「純粋なフィルタとして実装されている」だった
    • {コマンド名} {指定した文字} {置き換えたい文字} tr {置換前文字} {置換後文字} の形で使用する

漏れていた項目

  • wcコマンド
    • ファイルの行数、単語数、バイト数を数えるコマンド
    • wc {ファイル名}の形で使用する
    • よく使われるオプションは、-lで、行数のみを表示したいときに使う。
  • tailコマンド
    • ファイル(標準入力?)の末尾から指定した行数標準出力へと出力するコマンド(デフォルトは10)
    • tail {ファイル名}の形で使用し、-fオプションをつけると、ジョブがフォアグラウンドで動き続ける => ファイルに追記があったとき、追記内容を標準出力へと出力するようになる

react-hooksについて

  • createContextuseContext

    • プロバイダーで囲んだ子以下の要素内で、共有する値を作成/使用するためのもの
    • コンテキストの作成: createContext("ContextName")
    • プロバイダーの利用と値の設定: <ContextName.Provider value={"shared value"}>子要素</ContextName>
    • 値の使用: value = useContext("ContextName")
  • useReducer

    • stateの状態を管理するためのもの
    • useReducerの使い方: 「reducer関数」, と「initialState」を引数として渡すと、「現在のstate」と「dispatch関数」が返される関数
      => 一般的にはconst { state, dispatch } = useReducer(reducer, initialState)の形で使用する
    • initialStateについて: stateの初期値にしたい値を渡す
    • reducer関数について: 「現在のstate」と「action」を引数として受け取り、それらを用いて「次のstateの値」を決定し、戻り値として返す関数のこと。
      => これは自分で定義する必要がある
      =>ex. (state, action) => { const nextState = action === "Add" ? state + 1 : state; return nextState }
    • dispatch関数について: この関数の引数にactionを渡すことで、reducer関数の中身が実行される。
      => ex. const state = dispatch("Add") // => (現在のstateの値が1であれば)2となる
  • useReduer x useContextの利用

    • useReducerのdispatch関数現在のstateの値をuseContextの値として持つことで、擬似reduxのようなことができる
  • useMemo

    • 関数の結果をキャッシュしておくもの。
      => 第一引数に対象となる関数を、第二引数に配列の形でstateを渡すことで、stateの値が変化した時だけ関数を実行し、変化していない場合はキャッシュした値を返す
    • 使い方: const memo = useMemo(() => { sleep(500000); return 'お疲れ様でした' }, [state])
  • useCallback

    • 子要素にproprsとして渡している関数に対して定義することで、結果をキャッシュし、無駄なレンダリングを防ぐためのもの
      => 引数はuseMemoと同様の形
    • 使い方: 定義の方法はuseMemoと同じ。定義の対象が違う
  • React.memo

    • これはhooksではないが、useCallbackと併用して使うことが多い。
      -useCallbackは関数を対象とするが、これは文字列などの静的な値(propsとchildren)を対象として、それらに変更がなければ再レンダリングされないようにするもの
    • 使い方: コンポーネントをexportするときに使う > export default React.memo(ComponentName)

その他感想など

細かいコマンド名について忘れていることが多いんですが、これは何度も使ううちに覚えていくし、使わないコマンドについては覚えてもあまり意味がないので、とりあえずあまり気にせず行きます


react-hooksの学習は、本当に基本的な使い方の部分だけ分かってきました

ただ、まだほとんど実践をしていないということもあり、自分としても身についたとは言えないので、上と同じく何度も使うことでしっかりと落とし込みたいです。