30代男が日傘を買った
TL;DR
日傘はいいぞ
モチベーション
男が日傘なんてかっこ悪いかなーと思ったのですが、今夏の暑さに耐えかねて結局買いました。 日焼け止めとかも今夏からしっかり塗るように。
買った日傘
色々悩んだんですが、結局WPCのizaを買いました。軽くて持ち運びやすくいい感じです。
感想
かなりいい感じです。日焼けしない実感は今のところあんまりないですが、快適さがとにかく違う。 「持ち歩く日陰」とはよく言ったものです。
Next.js + Vercelでまとめサイトのまとめもどきを作ってみた。
TL;DR
使った技術スタックとしては以下です。
- Next.js
- Vercel (最初はNetlify使おうとしたのですが、後述する理由でやめました。)
- Bootstrap 5
フロントエンドと私
今までインフラ系エンジニアとして働いていたのですが、フロントエンドには苦手意識しかなかったです。
何故か。美的センスがゼロに等しいので・・・
ただまあ、フロントエンドの技術自体は結構面白いなーと思っていたし、わかりやすく成果を示せるのでいつか作ってみたいと思っていました。
JavaScriptもNext.jsもVercelも何もわからん状態から始めたので結構時間かかりましたが、最低限の機能(RSS取ってきて表示しているだけですが)ができたので、公開してみます。
まとめサイトのまとめと私
2chまとめ系サイトが結構好きで、よくサーフィンしていました。こういうの、いつか作ってみたいと思っていたのでやってみました。
Next.jsとVercelと私
なんとなく最近よく聞くなーというくらいの雑な選定基準でNext.jsを選びました。 SSRだのISRだのよくわからん・・・という状態から始めたので結構ハマりました。
- 定期的にRSSを取得して、勝手に更新するサイトにしたい
- あれ、サーバーサイドレンダリングだと、一度Staticなファイル作っちゃうとその後更新されないのでは?
- あれ、ISRなるものがあるらしい。これで勝つる!
- よっしゃ、できたので Netlify にデプロイだ!
- あれ、思ったように更新されない・・・
- ISRはNetlify で使えない・・・だと・・・ (https://github.com/netlify/netlify-plugin-nextjs/issues/151 . experimentalなプラグイン入れればできるのかもだがよくわからん)
- やむなし、Next.js 開発元のVercelだと動くっぽいし、これでいいか・・・
- なんとなく動いた(←今ここ)
こんなグダグダ感。
今後について
Next.jsやってみたいから、これだけでRSS取得→整形→表示までやっていますが、正直若干失敗したと思っていて、RSSを取得する部分は別出しにするべきでした。
なぜかというと、今のままだと更新のたびにRSS取りに行ってしまうので、効率悪い気がしているためです。
素直に、RSSのリストをもとにクロールするスクリプトを別に書いて、その情報をRDBにでも入れておいて、Next.jsはそのRDBを見に行くほうが良かったかなと考えています。
まあ、Next.jsしか使ってないから(ほぼ)無料でサイト作れているので、とりあえずそこは良かったかなと思いますが。 今後暇を見て更新しようかなと思いますが、気がついたらぜんぜん違うサイトになっているかもしれない。
転職しました
ぼかして書いています。あしからず。
前職とそこまで外れていないような、ぜんぜん違うようなことをやっています。 職場が自宅からかなり離れてしまいましたが、このコロナのご時世でリモートワークできているのでそこまで不都合には感じていません。
Kuberentesを勉強していきたいと思っています。あやつ結構難しい。
大した実力のないインフラエンジニアの生存戦略
今後の行く末、あるいは転職活動を再開した件について
白状すると、今年のはじめ辺りに転職活動していて、ありがたいことに2社から内定を頂いていたのですよ。 2社とも今の会社よりも将来性ありそうで、そもそも遥かに巨大だし、待遇面でも言うことないくらいのところ。 しかし、どちらもお断りして今の会社に残ることを決断しました。
なぜか。これがうまく言い表せないのです。
お前は何を言っているんだ、という感じかと思います。私自身そう思います。
自分の考えを言語化する、自分自身で納得するというのは想像以上に難しいことなのだなと理解しました。
なぜ転職?キャリアプランは?給料増やしたい?今までの人間関係は?残された仕事は?本当にその会社でやっていけるのか?
そんな考えがずっとぐるぐる駆け巡っていました。
そんなことを考える前に転職活動するな、というご意見はごもっともです。内定を頂いて、お断りした会社には申し訳ない気持ちでいっぱいです。 白状すると、転職活動の動機は「社外でどう評価されるのか」ということを知りたかったからです。それ以上でもそれ以下でもない。 つまり、内定を頂いた時点で目的は達成できていた、ということでもある気がします。
そろそろ人生を考える時が来た
改めて、そう思います。30を目前としていて、そろそろ自分の人生にも責任を持つべきだと思いました。 最終的には自分しかいないのです。自分くらい、自分の判断を信じてみようという気になりました。
そんなこともあり、また転職活動しています。
どういうところを大事にするべきか
正直、自分自身は新しい何かを作れるような才覚はないと思っています。 ただ、他の人のサポートは楽しいなぁ、と思えています。そのようなところを大事にしていきたいです。
仕方ないからトレーニングチューブを買った
TLDR
ベンチプレスMAX90kg、フルスクワット120kgくらいの僕でも結構効きます。おすすめです。
経緯
東京都がやっと感染者数が収まってきたので、自粛要請が解除されようとしている。
やっとジム行ける!と思ってたら
ジムの優先度低すぎワロタ。なんでゲーセンやパチンコより優先度低いんだ。。。
この調子だと、制限解除されたとしても、まともにジムに通えるのは7月くらいになりそ・・・
ということで、トレーニングチューブを買ってきました。
懸垂とかは近くの公園でできるので、割と上半身はそこまで衰えていないんですが、下半身がねー。
トレーニングチューブ、初めて買って使ってみたけどいい感じです。
その他
本当はBodybassとか買おうかなと思っていたけど、届くのおそすぎ。上記のトレーニングチューブは注文して次の日来ました。
MyProteinのインスタントオーツを初めて買った
2020-05-05に買ったMyProtein (マイプロテイン) の
- インスタントオーツ5kg
- プロテイン (今回はブルーエリーチーズケーキ味) 5kg
が届いたのでレビューします。
値段
上記2つ買って\8,891とさすがのお安さでした。
MyProteinのGWセールと、毎月やっているゾロ目セールが重なる日ということもあり、普段以上の割引率で買えました。これだけの割引率で買えるのは5/5と、あとはブラックフライデーセールと呼ばれる11月の時期くらいしかないようです。
味
プロテイン
ブルーベリーチーズケーキ味、人気だという話も聞いていたので期待していたのですが、、、正直私には微妙でした。なんというか、味が薄いんですけど自己主張だけ激しいみたいな、なんとも言いしれないお味。。。 飲めないわけではないのですが、5kgも買ったことを若干後悔😣
以前買ったナチュラルストロベリー味のほうが私は好みでした。
インスタントオーツ
本当はロールドオーツのほうが欲しかったのですが、売り切れていたのでこちらを購入。違いとしては、ロールドオーツのほうがいわゆるシリアルっぽい形が残っているのに比べ、インスタントオーツのほうはプロテインみたいに粉になっています。 栄養成分はどっちも大差ないんですが、ロールドオーツのほうが安かったんですよね。
いろいろなフレーバーがあるのですが、今回はノンフレーバーで買いました。なので、単体の味は未評価です。
プロテイン + インスタントオーツ
今回は、試しにまだ残っていたナチュラルストロベリー味のプロテインと、インスタントオーツを混ぜて飲んでみました。 インスタントオーツは付属のスプーンに2杯と少し入れるみたいですが、ちょっと多すぎかなーと思ったので1杯半くらい、プロテインは1杯入れてシェイク。
味は悪くなかったです。食感は若干ドロッとした感じになりますが、お腹にたまる感じ。忙しい朝にはちょうどよいかもしれないです。
全体的な感想
コスパは最強の組み合わせかなーと思います。インスタントオーツは水に溶けるか心配だったのですが、意外とあまりダマにもならず飲めました。
マイプロテインでプロテインを買ったことがある人は多いと思うのですが、インスタントオーツを買ったことがない人は参考にしてみてください。
その他
今回、届くまでに2週間弱かかってしまいました。まあ、このご時世なので致し方ない。。
普段は一週間くらいで届く印象です。
JavaのUnmodifialeMapの使い道について
自分向け備忘録
下記のコードの問題点を考える。
class CustomerRecords { private Map<String, Customer> records; public Map<String, Customer> getCustomers() { return this.records; } }
getCustomers()
がreferenceを返してしまっているので、カプセル化に失敗していますね。
では、以下ではどうでしょうか。
class CustomerRecords implements Iterable<Customer> { private Map<String, Customer> records; public Map<String, Customer> getCustomers() { return this.records; } @Override public Iterator<Customer> iterator() { return records.values().iterator(); } }
マシですが、実はiteratorにはremove
メソッドがあるので、これも完璧なソリューションではないです。
なら、コピーしたオブジェクトを返せばいいのでは??
class CustomerRecords implements Iterable<Customer> { private Map<String, Customer> records; public Map<String, Customer> getCustomers() { return new Map<String, Customer>(this.records); } @Override public Iterator<Customer> iterator() { return records.values().iterator(); } }
これも完璧ではない。なぜなら、コピーしたオブジェクトが更に参照しているオブジェクトは、同じ参照を保持している可能性があるから。
ということで、UnmodifiableMapを使いましょう。
class CustomerRecords { private Map<String, Customer> records; public Map<String, Customer> getCustomers() { return Collections.unmodifiableMap(this.records); } }