よく寝てよりよく動けるようにしたい

年末くらいから寝る時間が遅くなっていた。だいたい深夜1時とか2時とか。 最近は毎朝英語の勉強をするために7時に起きているので睡眠時間が多分足りてない気がした。

睡眠時間が足りていないと気持ちが弱まって、気持ちが弱まるとネガティブになって、ネガティブになると挑戦をしなくなって、挑戦をしなくなると人生に飽きる。 なのでちゃんと寝ようと思った。

しっかり寝るためにはどうしたらいいか? 朝起きる時間は決まっているので、寝る時間を早くするといい。

なぜいつも寝る時間が遅くなるのか? YouTubeを見たりはてブを見たりしているからだ。 とくにYouTubeが一番ひどくてYouTube ショートで無限に時間を使ってしまうことがある。

会社のSlackでつぶやいたところ、「寝る時間になったらインターネットを落とせば?」というパワープレイのアドバイスをもらった。とてもいいアイデアなので実行することにする。 幸い最近のPCやスマホはペアレンタルコントロールなどでセルフMDMみたいなことができる。

iPhoneブラウジング用PCにそれぞれ22:00〜7:00の間の封印を施すことにした。

夜中にスマホでやるべきことなんてない

High Sierraなのでスクリーンタイムじゃなくてペアレンタルコントロール

この生活を始めて数日経つが、時間制限ができたことで使える時間を有意義に使おうという気持ちが芽生えた。 2023年いっぱいこの生活を試したいと思う。

「りあクト!②React基礎編 第4版」を読んだ

booth.pm

最近仕事でReactでの機能開発をやることがあって格闘していたところに社の同僚氏が貸してくれた。ありがたい。 サーバーサイドマンがReactを使えるようになるために、という語り口なので今のいいねにとってめちゃくちゃタイムリーな内容だった。

ずっとサーバーサイドのMVCフレームワークと戯れていたから視点とか思想が全然違うことに驚いた。 Vue.jsを使うにせよSvelteを使うにせよReactを使うにせよ、それらが生まれたフロントエンドの文脈から紹介してくれるのでその辺が疎い人は一気に歴史を辿れてお得。 またReactを使う上で必要なコンポーネント志向のメンタルモデルが仕入れられてよかった。

読書中のメモ

  • react-jsx知らなかったなあ
    • え!!!!!JSXって文字列じゃなくていいのか!!!!!
    • コード中のXMLをオブジェクトに変換してくれるのか。へ〜。知らなんだ
    • でもそっか、Vue.jsもvueファイルに急に<template>とか出てくるし一緒か
    • jsxの方が上から下に読んでいけばいいから目線上下しなくていい分Vue.jsのテンプレートより可読性がいいのかもなあ
    • へー!JSXってHTMLっぽく見えるからブラウザに依存するのかな?って思うけど、結局jsのオブジェクトに変換されるからレンダリング先はなんでもいいんだ
    • それでモバイルアプリとかでもできるんだなあ
    • あー、じゃあJSXコンポーネントはレンダラーを意識せず書いちゃっていいのか コンポーネント呼び側でReact-DOMなりを使ってレンダリングする感じかな
  • なるほど const elems = (<><div>a</div><div>b</div></>)
  • gulpってタスクランナーだったのか
  • CommonJSとES Modulesってなんだ
    • あ、requireとimportってそういう違いがあったんだ
  • あー、あくまで「コンポーネントが何を提供するか」という世界観なのでデータを起点に考えるのとは視点が違うんだな
    • テンプレートベースだとデータソースがベースになりそう
    • Vue.jsがサーバーサイドエンジニアフレンドリーとされてるのはそこか
    • Reactとサーバーサイドは遊戯王MtGくらい違う
  • ViteとDenoがごっちゃになる
  • PrettierってCSSとかも整形してくれるんだ
  • jQueryってブラウザごとの互換性の為に使われてたのか
    • 物心ついた頃にはES2015があったからよくわかってなかったな
  • あ〜、確かにコンポーネントベースだとGraphQLのような柔軟なデータソースの方がいいよね〜
  • そういえばVue.jsはViewModelがあったなあ
  • SolidってReact派生だったのか
  • 結構歴史的な文脈から追っていかないとわからないがち
  • あー、確かに コンポーネントがReactElementを吐き出すのも仮想DOMがブラウザに表示されるのもどっちもレンダリングって言うなあ
    • 前者と後者はタイミングが違うから「レンダリングのタイミングで〜」とか言うと混乱するから気をつけないといけないな
  • あー、interfaceか型エイリアスかってそういうことか 前にあったなあ
    • interfaceで定義すると拡張できちゃうから関数的じゃなくなるってことか
  • あ〜〜propsとstateごっちゃにしてたなあ。 別のpropsを渡して仮想DOMを再描画するのと、仮想DOM中のコンポーネント内のstateが変わって再描画されるのはちょっと違うのか…
  • レンダリングを待たずに複数回stateを更新したい時はちゃんと更新関数をセット関数に渡してあげないといけないのか
  • わ〜〜〜出たuseEffect
    • useEffectの第二引数に[]を渡すの、忘れそう〜
    • へー!コンポーネントのライフサイクルごとに処理を書くやり方からuseEffectの依存配列を監視するやり方に変わったのか

2022年の振り返り

目次

2022-01

2022-02

  • 選考が本格的に始まったので自己分析などをしつつ暮らす
    • 実はちゃんとした入社選考を受けるのが殆ど初めてだったのでバリバリ緊張した
  • 無事現職の内定をもらう🎉

2022-03

  • 有休消化をした
    • ワクチンの副反応が重くてほとんど潰れてしまった
    • 想夫恋の焼きそば食べにゆふいんの森号で日田に行った。天ヶ瀬の温泉がよかった。
    • 梅ヶ枝餅を食べに太宰府のお石茶屋に行った
  • Surface Pro7の一番スペックの低いやつを買う
    • スペックが低すぎてChrome動かすのが精一杯だった。ちょっと失敗した。
  • リモートワークでパフォーマンス出すためにも仕事部屋を整えた。
  • 「実践ドメイン駆動設計」を読みおわる
  • 会計知識の勉強をする
  • 「LUNARiA -Virtualized Moonchild-」をプレイ とてもよかった

2022-04

  • サーバーサイドエンジニアとして今の会社に入社
    • Slackの活気がすごくてびびった
    • 2009年頃のツイッターみたいで楽しい
    • 自分より遥かに優秀な人ばかりでびびる
  • 社内LT会でエヴァンス本の紹介LTしてみた。結構評判が良かった。(うれしい)
  • 「ミッドサマー」を見た
  • 「ヘレディタリー-継承-」を見た

2022-05

  • GWに琵琶湖をレンタサイクルで一周する通称ビワイチを試みた。
    • 時間配分ミスったせいで北部の山道ゾーンで夜に突入しちゃって遭難するかと思った。
    • とりあえず自分が動かないと遭難して死ぬ!という体験ができた
  • 博士の異常な愛情/または私は如何にして心配するのを止めて水爆を愛するようになったか」を見た
  • 「三体」を読み終わる めちゃくちゃ良かった
  • 会社のEffective Ruby読書会に参加してみた
    • この時はRuby不慣れなのでほとんど分からなかったけど後にRubyに慣れてくるにつれて知識が効いてきた

2022-06

  • GraphQLのキャッチアップを色々した。REST APIとの違いに苦労する。
  • 天神西通りのツナパハでスリランカカレーデビュー
    • おいしいけどめちゃくちゃ辛い
  • 仕事部屋にクーラーが無いのでスポットクーラーを購入
    • 音がでかいけどすずしい。音はAirPodsProのノイキャンでなんとかなる。
  • 久しぶりにSkyrimの環境を整える。LEなので古くて大変だった。めちゃくちゃ綺麗になってびびる。
  • リワインドのYoutube動画の影響でC3ヨーヨーデザインのクラウンを購入。社の同僚も一緒にはじめてくれたので社にヨーヨー部ができる。たのしい。
  • 「セメント樽の中の手紙」を読んだ
  • FF14 暁月のフィナーレ」をクリア 良すぎた

2022-07

2022-08

  • 体温調整が苦手で常に夏バテ状態だった
  • 会社の勉強会の運営に加わってみた。ちょっと忙しいがちになっていい感じ
  • FGO 2部6章アヴァロン・ル・フェ」がとても良かった。FGOで唯一ちゃんと面白かった。
  • セブンイレブンの大盛ペペロンチーノにハマる

2022-09

  • 英語勉強をはじめる
    • 友人を巻き込んで毎朝仕事前に1時間勉強することにした(土日祝も。慈悲はない)
  • 歯茎が腫れて頭痛がするので10年ぶりくらいに歯医者さんに行く
    • なんやかんやで親知らずを一本抜くことになった
    • 治療の際に口を引っ張られたことで口内炎が3箇所くらいできて地獄の思いをした
  • スプラトゥーン3」をプレイ

2022-10

  • 毎夏恒例のSummer Pocket巡礼 瀬戸内巡りをした
    • もう5回目くらいだけど最高だった
    • 前年から予約していた石井商店さんの直島で一泊した
    • 今回は初の男木島での一泊をした
      • 夕〜夜の男木島は良すぎた
  • 「終のステラ」をプレイ めちゃくちゃ良かった
  • 書いた RubyMineに開発用コマンドを登録してチームで共有しよう

2022-11

  • 社内でリファクタリングワークショップ的なイベントがあってOSSコントリビュートする感覚で時折リファクタリングするようになった
    • コミット数が爆増するし経験値はつくしでとてもいい
  • 英語学習の最初の目標だったTOEIC L/R 700点達成(えらい)
  • 太宰府天満宮ポンペイ展に行く
    • 人の暮らしがそのまま展示されているので、アートと違ってスッと共感することができた
    • 1000年前の人々の暮らしや嗜好も今とあまり変わらないんだなあってびっくりした
  • 友達が車を買ったのでいろんなところに連れていかれるようになった
    • 普段行かない九州の津々浦々に行けるようになってたのしい
  • 書いた 【RubyMine】direnvの環境変数を読み込む方法(EnvFile)

2022-12

今年の感想

4月に入社した今の会社がとても良い。
Slackはワイワイしているし、意欲があればなんでも挑戦させてもらえる。
貰ってばっかりになっているので貢献する側になっていきたい。

転職、ヨーヨー、ビワイチ、歯医者、英語などとにかく色々活動的な一年だった。
一旦2022年はやり切ったなという満足感がある。

来年やりたいこと

  • TOEIC L/Rで800点を取る、PROGOSでB2を取る
  • Railsでのアプリケーション開発に慣れてきたのでパフォーマンスチューニングに取り組んでいきたい
  • OSSコントリビュートデビューしたみ
  • ロックマンエグゼコレクションやりたい
  • FFピクセルリマスターやりたい

【WSL】Docker環境構築メモ

WSLでのDocker開発環境構築のメモ

WSLのセットアップ

wsl --install

docs.microsoft.com

.wslconfigにメモリ使用量設定

[wsl2]
memory=1GB
swap=0

WSLにDockerをインストール

Docker

docs.docker.com

Compose V2 docs.docker.com

make install

sudo apt install make
sudo apt install make-guile

WSLシェルのルートディレクトリを/home/****に変更

mseeeen.msen.jp

GitHubsshのconfig

Host github.com
  IdentityFile ~/.ssh/鍵ファイルの名前
  User git

WSLの公開ポートへのアクセス

localhostにアクセスするとWSLのIPへルーティングしてくれる

https://localhost:3000/

みたいにアクセス

【Laravel】FROM句にサブクエリを入れて集計したい

type total subtotal
1 10 0
1 0 20
2 100 0
2 0 200

LaravelでUNION ALLしたこういう結果表を集計したいときは以下のように書く。

DB::table(DB::raw('(' . $subQuery->toSql() .') AS s1'))
    ->mergeBindings($subQuery)
    ->selectRaw(
    'SUM(s1.total) + SUM(s1.subtotal)'
)
->groupBy(['s1.type'])
->get();

【Docker】apt-getで The following signatures couldn't be verified because the public key is not available: NO_PUBKEY エラー

mysql 5.7 imageでのapt-get updateがなんか失敗するようになった。

 ERROR [2/2] RUN apt-key update &&     apt-get update &&     apt-get install -y locales &&     rm -rf /var/lib/apt/lists/* &&     echo "ja_JP.UTF-8 UTF-8" > /etc  14.2s
------

~~~

#5 14.16 W: GPG error: http://repo.mysql.com/apt/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY << pubkey >>

pubkeyが登録されていないらしいので、する。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys << pubkey >>

【Rails】EC2インスタンスがRailsのWebpacker周りでフリーズする

rails webpacker:installとかrails assets:precompile RAILS_ENV=productionとかしたらよくコンパイルの途中にEC2インスタンスがフリーズする。
開発環境やステージング環境でt2.smallなどを選択すると頻発するので注意。

なってしまったら諦めてEC2コンソールからインスタンスの停止→開始をする必要がある

アセットコンパイルはローカルで行ってEC2インスタンスにpushするとかを検討したほうがいいかもしれない。

qiita.com