ブックマーク / blog.ojisan.io (161)

  • styled-components を v6 に上げた時の話

    yug1224
    yug1224 2024/04/29
  • Next.jsを初心者向けツールとして捉えている自分が、実践 Next.js を読んでみて

    Next.jsを初心者向けツールとして捉えている自分が、実践 Next.js を読んでみて2024-03-28 この記事は 実践 Next.js書評です。 見誌を頂いた上での記事です。(PR記事?) tl;dr App Router のメリットを理解しつつも、学習コストに割り合わないと思っている人にオススメ!ドキュメントを読めるようになるし、学習コストが下がる。 はじめに 自分はどちらかというと今の Next.js に対しては否定的な感情の割合の方が高く、仕事で困らない程度の最低限の知識しか持っていない。 しかし、なんだかんだ勉強の必要性に駆られていて、そのキャッチアップとして同書の発売を楽しみにしていた。 そんな折に @takepepe さんから見誌をいただいたことで、この週末に読んだので書評を書きたい。 俺は今のNext.jsが好きではない 書評を書く前にポエム書かせてくれ!

    Next.jsを初心者向けツールとして捉えている自分が、実践 Next.js を読んでみて
    yug1224
    yug1224 2024/03/30
  • AlgoliaでOSSじゃない文書も実質タダで全文検索したい

    yug1224
    yug1224 2024/03/14
  • PHPerKaigi2024 で aiko のモノマネしました

    aiko のモノマネとは? いわゆるコールアンドレスポンスです。 aiko のライブに行くと「男子ー?」「女子ー?」「メガネー?」って言われて「いぇええ」って答えるのですが、それをしました。 理由としては当日の視聴者の層が分からなくて、DockerNginxといった直接PHPと関係ない話をどれほど前提にして話していいのかを知るためのアンケートが目的です。 半分くらいに別れるという想定だったのですが、会場の雰囲気的にはDocker使っている人がほとんどで少し驚きました。 なのでDockerの説明は結構端折って進めました。(その結果、5分くらい早く終わってしまった...) 資料自体ははてぶでバズっていたみたいなのですが、誰もaikoに言及していなくて悲しい気持ちになりました。 なにを話したのか LaravelDocker で動かす際に Apache や Nginx を要求されることに対

    PHPerKaigi2024 で aiko のモノマネしました
    yug1224
    yug1224 2024/03/12
  • FrankenPHP を CloudRun で動かして、1イメージだけでサーバーを実行できるのか試してみる

    FrankenPHP を CloudRun で動かして、1イメージだけでサーバーを実行できるのか試してみる2024-03-06 隙あらば自分語り1 3/8 14:40-15:20 に PHPerKaigi で話します。 PHPDocker に固めてデプロイするときに ApacheやらNginxが求められることに対して、そもそも Webサーバーとは何かという話をします。 FrankenPHPも、Dockerに固めてデプロイするときの解決策の一つとして紹介します。 see: https://fortee.jp/phperkaigi-2024/proposal/42d9e721-b3e8-4a7d-ae88-1727ccfabf9b 隙あらば自分語り2 年パスを持っていたので小さい頃ユニバによく行っていました。 ユニバにモンスター・メーキャップ っていうフランケンシュタインが出てくるアトラ

    FrankenPHP を CloudRun で動かして、1イメージだけでサーバーを実行できるのか試してみる
    yug1224
    yug1224 2024/03/07
  • 最近食べたラーメン(2024/2まで)

    普通こういうブログって一年の締めに書くようなものだが、ラーメンにハマったのが去年の後半だったというのと、最近自己紹介する時に「ラーメン好き」って言うと「どこが好き?」「どこ行った?」と聞かれるので、何か今までのまとめを作るかと思って書いている。今年の総集編は今年の末にやると思う。 最近ラーメンにハマった きっかけは同僚と行った駄目な隣人。 ググると SUSURU という Youtuber が行っていることを知り動画を見る。 SUSURUは毎日ラーメンべていることにかっこよさを感じ、そのままチャンネルを登録する。 そしてどはまりし、毎日更新される動画を毎日楽しみに見るようになってしまった。 日頃から過去動画も漁っており、店を認知した結果、SUSURUが行ったラーメン屋に行くようになる。 そして最後は自分でも開拓を始めるほどにハマった。 厚木家 家系の直系店。 醤油強め、動物強めといった明

    最近食べたラーメン(2024/2まで)
    yug1224
    yug1224 2024/02/27
  • レイヤードアーキテクチャでデータを作成・編集するときの設計が分からん

    定期的に DDD やクリーンアーキテクチャなどを題材にした記事が盛り上がっているのを見ていると、いま長年の疑問を書けば誰か答えてくれるのではと思って書いてみる。 何に困っているかというと、 いわゆるレポジトリ層が持つ create/update 関数の引数は Entity で待ち受けるべきか、プレーンなオブジェクトで待ち受けるべきか分からない ユーザーから POST Body されたデータにはビジネスルールを適用させるべきか(= 一度 Entity を作るべきか)分からない だ。 Entity を作らない場合、いわゆるトランザクションスクリプトと呼ばれているものに近づく。 そしてトランザクションスクリプトには結構否定的な意見も見られる。 しかし、自分は Entity を作ることが必ず正解とは思えず、レイヤードな設計とトランザクションスクリプトを組み合わせる設計の余地もあると思っていて、トラ

    レイヤードアーキテクチャでデータを作成・編集するときの設計が分からん
    yug1224
    yug1224 2024/02/08
  • 結合テストを書くときはコードベースを分離している

    新規開発の設計支援や古いコードベースを甦らせて欲しいという相談をもらったときに、最初にちょろっとコードだけお手的なコードを書いてから引き渡しているのだが、そのときに必ず結合テストを書くようにしている。 3, 4年前から僕と付き合いがある人からすると、 「「「あの sadnessOjisan がテストを書くだと!!!」」」 という感じだと思うのだが、最近はテストに思うところもあってちゃんと書いている。 そしてそのテストコードだが、基的にはアプリケーションから分離して書いている。その話をしたい。 OGP OGP は野方ホープで海苔が分離されて出てきた時の画像だ。 アプリケーションから分離したテストとはどういうことか 最終的にはテスト対象のサーバーを Docker コンテナで固めて、そのコンテナに対して HTTP リクエストを投げてその結果や DB の中身を検証するコンテナを docker

    結合テストを書くときはコードベースを分離している
    yug1224
    yug1224 2024/01/09
  • 今年サボった勉強を冬休みで全部取り戻す計画

    どうも、仕事を納めてしまうと、何も予定がない人になってしまった人です... てなわけで、公式ドキュメント、リリースノート、信頼できる情報源全部読んじゃうぞという計画を立てました。計画倒れしないようにちゃんと読むことをブログで宣言します! 何をするのか マジでやること何もないので、日頃サボったプログラミングの勉強を一気にしようと思っている。「勉強していない」なんていうと「嘘つけ」と言われそうだが、いつも必要になったことをその都度調べて誤魔化しているだけであり、読むのはや記事といった誰かの二次三次情報なので、実は一次情報には触れていない。なので以下に挙げるドキュメントは実はちゃんと読んだことがない。全て雰囲気で使っている。 そのため自分は歳の割には未知になっている範囲がとても多く(この構文ってフリーレンぽくてなんかかっこいいよね)、未知の未知にとても弱いため、わかっている人から見るとおかしな

    今年サボった勉強を冬休みで全部取り戻す計画
    yug1224
    yug1224 2023/12/29
  • fastifyでコントローラーを定義するときの手癖やフォルダ構造

    fastify で 0 -> 1 することが年に何回かあるのだけど、その都度やり方を忘れて調べているのでメモしておく。 OGPはFastifyをコントロールしている人のイラスト by DALLEだ。 Routing をプラグインで表現する root ファイルで fastify.get("/users/:id", (req, res) => { res.status(200).send(""); }); のようにしてもいいけど、機能毎にモジュール化しておいた方があとでスケーリング効くので、ルーティングはモジュールとして定義したい。 そのためには FastifyPluginAsync を定義すればよく、 export const userFindRouter: FastifyPluginAsync = async (f, opts) => { f.get("/:id", {}, async (

    fastifyでコントローラーを定義するときの手癖やフォルダ構造
    yug1224
    yug1224 2023/12/29
  • 2023年に読んだ本

    転職ドラフトからオライリーのたくさんもらったので欲しかったやつとりあえず全部読んでみた。 <pr> 紹介コード RVSC を使うとお互いにもらえるので気になる人は是非。 https://job-draft.jp/sign_up?utm_term=RVSC </pr> オブザーバビリティ・エンジニアリング 良い。トレーシングやOpenTelemetryのと思って買っていたが、実際はオブザーバビリティを確保するための色々な手法を紹介している。そのような手法が発達するまでの歴史の流れの解説も面白かった。従来のメトリクスとモニタリングだけでは現代の分散システムのデバッグが困難ということで、 オブザーバビリティ・エンジニアリングを導入する上での説得に使えそうな文言がたくさん散りばめられている。その手法の一つが、そもそも問題が起きてからデバッグのためにデバッガを挟み込んでデプロイしたくないという

    2023年に読んだ本
    yug1224
    yug1224 2023/12/28
  • 2023年に勉強した技術

    yug1224
    yug1224 2023/12/26
  • 自炊レクイエム

    yug1224
    yug1224 2023/12/24
  • Next.js の OpenTelemetry サポートを使う方法

    なんか今日、megumish が CNDT 2023Next.js と otel の話をする らしい。そこで話されてしまうと、下書きに入れてあった Next.js と otel の記事が二番煎じになって出しにくくなりそうだったので大急ぎで書いている。 OGPは小樽のnextの駅です。 Next.js が OpenTelemetry をサポートした Next.js v13 でサポートされている。 see: https://nextjs.org/docs/pages/building-your-application/optimizing/open-telemetry instrumentation.ts というファイルを置いて、ここで sdk-node を起動すれば計装されるという仕組みだ。計装には @vercel/otel というライブラリを使う。 ドキュメントは export as

    Next.js の OpenTelemetry サポートを使う方法
    yug1224
    yug1224 2023/12/13
  • OpenTelemetry の Node.js Example で SDKが何をしているのか

    OpenTelemetry Advent Calendar 2023 6日目は sadnessOjisan がやっていきます。 約2ヶ月ぶりのブログ。サボった最長記録達成してると思います。何をしていたかはそのうち書きます。今日は OpenTelemetry & JS についてです。 公式のExample を使うとすぐに tracing を試せるようになっていますが、一体どういう仕組みで、express サーバーへのリクエストがトレーシングされてログになるのかって不思議じゃないですか?てなわけで調べてみました。 OGP はモンキーパッチを DALLE に書いてもらいました。モンキーパッチが解答だからです。 公式のExample通りにSDKを使ってみよう Getting Start をまずはやってみましょう。 see: https://opentelemetry.io/docs/instrum

    OpenTelemetry の Node.js Example で SDKが何をしているのか
    yug1224
    yug1224 2023/12/07
  • tower は何を実現するのか

    宣伝 10/21 に rust.tokyo でカニさんタワーバトルという発表をする。その事前資料として axum の内部実装の解説を書いているのだが、その解説を読むためには axum の Router は tower の Service ということを知っておく必要があるので、そもそも Service とは何かという tower の導入記事を書く。 tl;dr Webサーバーはルーティング、認証、レートリミット、ロギングなどのmiddleware関数が積み重なったものと見做せる これらのmiddleware関数は Fn: (req: Request) -> Future<Response> と見做せ、そのmiddleware関数の中が別の関数を呼ぶことで積み重ねられる 関数の中にmiddleware関数をハードコートすると再利用性に乏しくスケーリングさせにくいので、Fn: (req: Req

    tower は何を実現するのか
    yug1224
    yug1224 2023/10/12
  • Laravel を Docker で動かしてホスティングするまで

    ひょんとしたことから PHP をやることになったのですが、Laravel を コンテナでホスティングするのが難しすぎて困っています。とりあえず今できていることをメモです。こうした方が良いよ的なアドバイスがあったら教えて欲しいです。 ちなみに当は昨日公開予定のブログでしたが、Xが急遽OGPに対する仕様を変えたのでそれを踏まえた新しいOGイメージでお送りします。 注意 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ この文章は PHP + Laravel歴 1週間ちょっとのペーペーによって書かれたものです。apache も fastcgi も初見です。書かれている内容を間に受けないでください。 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ tl;dr Docker で動かす最小構成がわからないのですが、とりあえずこう書けば動きはします。 FROM php:8.2-f

    Laravel を Docker で動かしてホスティングするまで
    yug1224
    yug1224 2023/10/06
  • AI で個人にあった学習を提案する技術

    はじめに とても前になるが、コグニカル というサイトが盛り上がっていた。 これは知識を体系的に記述されていて、分からない概念があればその概念の理解に必要な概念を逆引けるサイトだ。コンピュータ以外にも数学や理工学全般を学べる。 コメントを見ると、インターネットを使った学習で、自分の分からなかったことを辿れる学習や体系だっていることに対して価値を感じているようだ。「誰が何のためにどうやって作ったのか情報がぜんぜんなくて怖い」というコメントがあるが、同感だ。怖い。そして教育工学を専攻していた身としては地に足ついたアウトプットが人の役に立っていて羨ましくも思うし、尊敬する。 実はこのような教授手法は古くから研究されている。それは知識をネットワークで表現するだけでなく、個々人の学習履歴や成績を元に次に学ぶものを提案する方法も提案されている。コグニカルを知った時にその技術についてのブログを書こうと思っ

    AI で個人にあった学習を提案する技術
    yug1224
    yug1224 2023/09/28
  • HTTPサーバーを書くための言語が不在だと思う

    tl;dr 今ある選択肢で十分にHTTPサーバーを書ける 言語組み込みの機能のみでHTTPサーバーを書けるように、デザインされた言語はないと思う サーバー開発に特化した言語があってもいいのではとふと思った はじめに 最近いくつか新規開発をする機会があって言語の選定に頭を悩ませた。要件や状況やチームに応じて言語選択の正解は変わるとは思うので、現実に合わせて妥協するしかないのだが、選択に際してそもそも HTTP サーバーを書くことを意識して設計された言語がないような気がした。いま自分達がHTTPサーバーを作れているのは、汎用プログラミング言語とエコシステムの力、そして開発者の取捨選択と創意工夫のおかげだと思う。それで十分に間に合っていると思う。 なのにどうしてHTTPサーバー用の言語があるかどうかを気にするかと言うと、サードパーティのエコシステムに頼りたくないからだ。それは長期的なメンテナンス

    HTTPサーバーを書くための言語が不在だと思う
    yug1224
    yug1224 2023/09/27
  • hyper の仕組み

    宣伝 rust.tokyo で かにさんタワーバトル という題で発表する。そのときの補助資料として hyper の簡単なコードリーディングについて書きたい。当に書きたかった補助資料は axum のコードリーディングなのだが、先に hyper の腹を開いておく必要があったので書く。axum については後日また書く。 tl;dr axum は エントリポイントの serve(service).await が hyper そのものなので、axum を理解するには hyper を知る必要がある。 tower にある Serviceは汎用的なパターンであり、ルーティングやユーザーが書いたハンドラはservice として処理される。hyper 自体は HTTP の IO と Service の実行を行う。 IO の結果も、Service の実行結果も Poll 型であり、非同期に扱われる。その Ta

    hyper の仕組み
    yug1224
    yug1224 2023/09/22