タグ

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

  • 日本経済新聞社を退職しました

    業務委託期間を含めて4年在籍した日経済新聞社を退職しました。 日経に入るまで 自分が日経に入った理由は3つあり、 そろそろ健康保険が切れそうだったから Web標準への理解が求められる仕事をしたかったから 情報を編纂すること、発信すること自体に興味があり、興味と事業ドメインがマッチするから です。なんと自己中な・・・ 前の会社を辞めてフリーランス(と名乗ってはいたがどちらかというと無職の方が実態には近かった)になったときの話も書いておくと、元々は営業から入社した職場で活躍できず逃げるようにエンジニアになったものの、その道で進んでいこうにも未経験で基礎的な能力が無かったので勉強期間を作りたくなって辞めました。当時社会人を経験して思ったのは、社会では期待される人に成長できる仕事が任されていくので、ブートストラップに失敗した自分はこれから常に不利な戦いを強いられ続けそうだということです。なので勉

    日本経済新聞社を退職しました
  • 最近食べたラーメン(2024/2まで)

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

    最近食べたラーメン(2024/2まで)
  • 2023年に読んだ本

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

    2023年に読んだ本
  • 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 サポートを使う方法
  • Laravel を Docker で動かしてホスティングするまで

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

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

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

    AI で個人にあった学習を提案する技術
  • クソコードを読ませない

    クソコードを読ませない💩 https://uit.connpass.com/event/291443/ 免責事項 「クソコードという言葉を使うな」と思った人、いると思います。 攻撃的で、解像度も荒くて、建設的でない言葉だと私は思っています。 一方で、目にすることも多い言葉であり、具体例に関してはふわりとした共通認識が持たれているのと、そういったコードに対するダメージコントロールの話なので、便宜上クソコードという言葉を使います。とあるソースコードに対してクソコードと呼ぶのはよくないですが、クソコードという概念そのものについて話すことに対しては有益だと思います。 自己紹介 sadnessOjisan JS/TS, Rust, 最近 Go, PHP マイブーム: 優光というラーメン屋 クソコードとは何か クソコードとは何でしょうか? 知りません。 インターネットミーム? https://tog

    クソコードを読ませない
  • Go言語を習得するために、Goちゃんねるを作った

    先週、A Tour of Go やってみた TIL というブログを書いてみた通り、Go言語を始めた。 で、ちまちま勉強をしていたのだが、つい最近たまたま ISUCON の過去問をやる機会があって Go のスコアを見たら初期値ですら、チューニング済みの他の言語のスコアを超えていて、絶対に習得するぞの気持ちにさせられた。 ちなみに私はどう言うわけかフロントエンドのソースコードをビルドしたら vite が走ってファイルハッシュが全部変わって、ベンチマークからアクセスできなくなって0点でした。対戦ありがとうございました。 なにはともあれ、番は絶対にGoでやるぞの気持ちを新たに Go の習得に励んでいた。前のブログでは、文法が分かったから HTTPサーバー DB Connection / Migration 境界値チェックや型推論 テスト スキーマ駆動開発 コンテナデプロイ あたりをやってみたいと

    Go言語を習得するために、Goちゃんねるを作った
  • WebRTC と React を組み合わせるなら Flux 設計が有効

    この前ポジショントークしたらそれなりに反響があったので書いてみる。 これまでの人生を振り返ると毎年ラジオや電話や配信サービスを作っている気がするし、なんかそういう仕事が回ってくることが多い気がする。 最近自分なりに答えが出たかなと思ったことがあるので言語化してみようと思う。 OGP は Flux ぽい画像だ。 注意・免責事項 ここにあるソースコードは不完全です。これは私が元々手元で実験していたボイラープレートであるとはいえ、いろんな仕事で培ったノウハウ的なものも含まれているので、念には念を入れて意図的に要件が透けそうな箇所は削除しています。 その結果元々のボイラープレートと乖離してしまい、動作しないコードになっています。ただ概念を伝えるには十分なコードになっているはずなので、脳内補完してください。質問は Twitter のメンション、もしくは Issue でのみ受け付けます。 (完全版を書

    WebRTC と React を組み合わせるなら Flux 設計が有効
  • モノレポにすべきか、レポジトリを分割すべきか

    先日 フロントエンドの Monorepo をやめてリポジトリ分割したワケ というブログがバズっていた。そのおかげか、Twitter でもモノレポに関する言及がちょこちょこあった。一家言あるドメインなので書きたい。ただの一家言(a.k.a お気持ち)なのでぜひ皆さんの意見も聞いてみたい。 tl;dr 別に自分はどっち派とかではなく、どっちも選ぶ。強いて言うならリポジトリ分割派で、依存更新がしんどくなったら monorepo 派。 免責 モノレポに対する一家言を書きたいだけであって、内容自体はフロントエンドの Monorepo をやめてリポジトリ分割したワケ と全く関係なく、そのブログで述べられている施策については何も言及しません。ただ一つ言及するとしたら肉の部位がコードネームに採用されているのは良いと思いました。🍖🍖🍖 モノレポにしたくなる状態の前提にあるもの 前提は元記事と同じように

    モノレポにすべきか、レポジトリを分割すべきか
  • Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる

    自分のブログを辿ってみたところ Rust を 2020 年には書いているようだが、初心者を名乗らせていただく。なぜならブログのネタにする以外で Rust 書いたことないし、これも調べながら書いているからだ。もっと練習したい、どこかに Rust を書ける機会ないかな〜チラッチラッ 👀 なぜありふれていそうな題材で書くか 題材はありふれているし解説もたくさんあるが、それらを読んで理解できるのか?という疑問がある。というのも、所有権、借用、ライフタイム自体についての説明は至る所で見るが、これらが無いと何が大変なのか、導入することで何が解決されるかがよく分からないと思うからだ。勿論、そのような点まで解説してくれているものもたくさんあるが、正直なところ Not for Me だった。何が Not for Me だったかというと、C++ の知識やコンピュータサイエンスの知識があることが前提になってい

    Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる
  • WebRTC を理解するためにカメラ映像を送るだけの最小実装を探る

    GW なんも予定がなくてブログ書くかソシャゲやるか昼から酒飲むしかやることがないです。だから予定があったら使っていたであろうお金ソシャゲに課金したらめちゃくちゃ強くなりました。やったー。友達にはドン引きされましたが、GW に予定がある人よりかは節約できていると思います。そんなソシャゲもやることなくなって暇なので酒飲みながらブログを書きます。今日は WebRTC です。 免責 筆者は RFC を読んでいません。これは「そもそも WebRTC それ自体 の RFC なんてものは存在しないもんね〜」という意味でなく、ICE や SDP の RFC すら読んでいないという意味です。そのため WebRTC そのものの解説として読むと良くない表現が含まれるかもしれません。ただし自分が WebRTC でカメラ映像を送る実装を動作させ、そのコードの解説という点では間違ったことは書いていないはずです。動作

    WebRTC を理解するためにカメラ映像を送るだけの最小実装を探る
  • Next.js v13 で app directory を有効にして Static Generation する

    Next.js v13 で app directory を有効にして Static Generation する2023-04-17 OGP は Astro 回でトロをべてしまったので罪悪感で具無しホットドックをべている画像だ。新年度、もうすぐ健康診断だ。そろそろ走り始めないといけない。 前回までのあらすじ 原神の TODO リストを Astro Component 使って書いたら辛かった ので、React on Astro するか Next にするか悩んだ。 選ばれたのは Next でした 結局 Next を使った。Astro ver は丸一日くらいかかっていたのが i18n 含めて 1 時間くらいで移行できた。Next 最高! 移行の最中、Static Generation が App Dir に対応したと知ったのでせっかくなので App Dir で SSG してみたログを書く。 a

    Next.js v13 で app directory を有効にして Static Generation する
  • Astro でクライアント側の処理を書いたら辛かった

    画像は明日トロに見せかけた昨日トロだ。iPhone の謎のカメラ設定使ってみた。この OGP を作るために昨日大急ぎで閉店前にくら寿司に駆け込んだ。びっくらポンは全部外れた。 古来よりゲームの攻略ツールを作ることでプログラミングができるようになるとある。そのような期待を持ち、paimon.moeで満足できなくなった私は原神の TODO リストを最近作り始めた。原神はリポップの時間がイベントやアイテムでバラバラなのでそれを管理するためのツールだ。iOS 向けの Push 通知のサンドボックスだったり、OSS として公開して yaml で入稿する口を用意することで自分でセルフホストして自分に都合の良い TODO リストを作れるようにもしようとしていた。が、技術選定を間違えたなと思っていま作り直している。その間違いについて書く。 原神は去年の11月くらいからすっかりハマっている。 FYI: ht

    Astro でクライアント側の処理を書いたら辛かった
  • C10K 問題、実は理解していない

    お願い 「C10K 問題とは何か」がわかる方は是非 Issue や Twitter などで教えてください。 追記: 自分の立場 1req ごとに 1 native thread を割り当てていたら、クライアントの数が増えれば増えるほど負荷が高まるのは当然だ。ただハードウェアの性能的に余裕があっても性能が劣化することがあり、それを C10K 問題と呼ぶ。C10K 問題は fd, pid の枯渇、スレッドを固定長サイズで確保することによるメモリの無駄遣い、コンテキストスイッチコストを含む。これを解決する方法が 1req ごとに 1 native thread を割り当てない技術で、シングルスレッド+イベントループ+IO 多重化といったテクニックや M:N モデルにつながる。 追記: @naoya_ito さんに解説してもらった当時の歴史的背景 https://twitter.com/naoya

    C10K 問題、実は理解していない
  • Webサーバーアーキテクチャ進化論2023

    はじめに 最近プログラマーとしてのキャリアに一区切りつけようと思っており、これまでのプログラミングの勉強の集大成となるブログを書きたくなったので書く。初めてプログラミングをして、フロントエンド開発をして、サーバーから値が返ってきたときは「どういう仕組みで値が返ってきたんだ?」と疑問に思っていた。ずっと理解したくて理解できていなかった。だからずっと勉強していた。そして最近になってようやく自分の言葉で説明できるようになった気がしたのでブログを書きたい。 2015 年版が自分の原点であり、この記事を書くモチベーションになった このような記事は実は過去に存在している。 FYI: https://blog.yuuk.io/entry/2015-webserver-architecture その記事はサーバーがどういう仕組みで動いていて、どのように進化し、2015 年に至るかを解説してくれた記事だ。自

    Webサーバーアーキテクチャ進化論2023
  • YAPC 2023 に登壇しました

    YAPC::Kyoto 2023 にで話します!そしてチケットを今すぐに購入しましょう!! にある通り YAPC に登壇しました。 デカデカと垂れ幕にあったりクロージングトークが言うには「ブログを書くまでが YAPC」らしく、まだ書いていないことを思い出したので書きます。やっと YAPC が終わる(?) なにを話したのか そもそも Perl エンジニアでもない僕が YAPC に申し込んだのはサブタイトルが Try::Catch だったからです。というのもここ 3 ヶ月ほどエラーやアラートだけ見続けるという仕事をしていまして、エラーやアラートに一家言あったからです。 元々その取り組みについては で話したりしていました。 またそのときに理想のエラーハンドリングはどうあるべきかを考え、 My new error... や Sentry SDK 完全理解 を書いていました。 しかしエラーハンドリン

    YAPC 2023 に登壇しました
  • DIP(依存性逆転の原則)を守っていない話

    一昨日くらいに 「DIP してもどうせ辛くなるよね」的なことを適当にツイートしたら引用 RT や RT 後言及やエアリプで言及された上に「こいつは設計を何も理解しとらん」みたいなことを言われた。「俺は当に何も理解していないのか?」と不安になったので、自分の考えをちゃんと書いておこうと思った。先に自分の立場を言うと、なんたらアーキテクチャとか SOLID 原則は有用だし自分も使うが、それを厳守しようとは思っていないと言う立場だ。 DIP とはなんだったか DIP(依存性逆転の原則)は SOLID 原則の一つで、一言で言うと「抽象に依存させると依存関係が逆転する」といったものだ。何のことやらという風になるので例だけ挙げると、UserRepository と UserService があってこのように定義すると class UserRepository { get() { return dat

    DIP(依存性逆転の原則)を守っていない話
  • My new error...

    2023 年度の僕のエラーハンドリング について書きたい。 昨日Safe Data Fetching in Modern JavaScriptを読んでいて、fetch に限った話ではないが一家言ある内容だったので書きたくなった。 おそらくやりすぎだとか非効率と言われる点はあると思うので、みんなの一家言も教えて欲しい。 対象は Typescript での サーバー開発想定だが、TS であればクライアント開発にもほとんどに当てはまる話だと思う。 例外のスローではなく Result 型を使う Result は失敗するかもしれないという文脈を与えてくれる型 エラーハンドリングの戦略として例外を投げるのではなく、Result 型を返すやり方がある。 Result 型というのは export type Result<T, E> = Ok<T> | Err<E>; export interface Ok

    My new error...
  • dotfiles 振り返り2022

    まだまだ 2022 年の振り返りが終わらないぜということで今日は dotfiles の振り返り。dotfiles はその変遷を見ると面白いので、毎年やろうと思い早速やっていきたい。 ちょっと前に M2 の MBA 買って、dotfiles を一新した。 これが今の dotfiles だ。 https://github.com/sadnessOjisan/dotfiles コンセプト 自分は Mac しか使わない が、WSL 環境も持ってるのでシェル周りの環境は移せるように作っておく(原神しかしないけど・・・) make all だけでセットアップが完結する 手作業はしない なるべく標準に準拠し、プラグインやライブラリへの依存を減らす。入れる場合も単体で剥がせるものを選ぶ。 シンボリックリンクを貼って、dotfiles の変更が即時に反映されるようにする .config など XDG に準拠

    dotfiles 振り返り2022