タグ

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

  • クソコードを読ませない

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

    クソコードを読ませない
    jay-es
    jay-es 2023/09/08
    ドキュメント、仕様書、コメント、型、テストなどを十分に書いて実装コードを読まなくてもいいように整備する。「後から読む人は何があると嬉しいか」を意識する
  • Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる

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

    Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる
    jay-es
    jay-es 2023/05/19
    力作。ライフタイム難しいですよね
  • zod ではなく ajv を使っている話

    encraft #2 までの間、スキーマスキーマした話をたくさん書きたい。好き好きスキーマと言いたいところだが、zod に対しては人気に対して逆張り意見的なのを持っているのでそれを書いていきたい。 OGP は Ajv ユーザーと焼肉をしたときの画像だ。網もスキーマが大事ってことですね。 独自性の高いスキーマを使うのは危険だと思っている zod は便利だ。とても流行っている。その結果 yup や joi で作られたものが負債扱いされているような気までする。だが思い出してほしいのだが、yup だって出てきた当初はとても便利なものとして人気があった気がする。特に Formik と組み合わせるのは一種のパターンになっていたような気もする。しかし最近はそれらが zod に取って代わられてしまったと思っている。エコシステムの選択や対応を見ていると zod 一強だ。 (ちなみに npm trends で

    zod ではなく ajv を使っている話
    jay-es
    jay-es 2023/04/21
    “zod に限らず正直なところ何を使っても負債扱いされると思っているので、移植性を重きに置いた技術選定をしようと思った”
  • Webサーバーアーキテクチャ進化論2023

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

    Webサーバーアーキテクチャ進化論2023
    jay-es
    jay-es 2023/03/31
    熱量がすごい
  • DIP(依存性逆転の原則)を守っていない話

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

    DIP(依存性逆転の原則)を守っていない話
  • ありの〜ままの〜 React 見せるのよ〜

    最近 React のコードリーディングに付き合ってくださる方がいらっしゃいましてコードを読んでいるのですが、読むにあたってはそもそもユーザーが書いた React がどう実行されるかエントリポイントをはっきりさせたくなりました。 たとえば const App = () => { const [state, setState] = React.useState(0); return ( <div> <p>state: {state}</p> <button onClick={() => { setState(state + 1); }} >click me</buttn> </div> ); }; のようなコードを実行したときのエントリポイントは分からないわけです。 なので JSX で書いたコードを変換かけて読む環境を作りました。 babel での変換 まず一般的に JSX は React

    ありの〜ままの〜 React 見せるのよ〜
    jay-es
    jay-es 2023/01/21
    コードリーディングのため、Babel の変換結果をバンドルすることなくブラウザで動かす方法
  • 色々知りたいことがあってmoment を読んだ

    moment.js アドベントカレンダー -1 日目は sadnessOjisan が担当します。 必要性に駆られて moment を理解する必要があったので読んでみました。 エントリポイントはどこか package.json の main は moment.js だが、これはビルド済みファイルであり、CONTRIBUTING.md に Starting from version 2.10.0 the code is placed under src/. moment.js, locale/*.js, min/*.js are generated only on release. DO NOT submit changes to the generated files. Instead only change src/**/*.js and run the tests. とある。なのでコー

    色々知りたいことがあってmoment を読んだ
    jay-es
    jay-es 2022/12/26
    複数形 API(monthと months など)の実体は同じ。dayjs にはないので(移行で困らないように)単数形を使うのがベターとのこと
  • React ユーザー向けの Next.js ガイド

    最近会社で Next.js のチュートリアルを担当することがあったり、これからもあるので資料として記事をしたためておこうと思う。 対象は、React は知っているけどこれから Next を学ぼうとする人が想定。 つまり React 単体と Next の差分をまとめる。 React そのものから学びたい人は別の資料にアクセスした方が良いだろう。 Next の学習教材 とりあえず公式だけ読めば良い。(これでいまブラウザバックされたら面白いな・・・) 主に二つあり、 ドキュメントや API: https://nextjs.org/docs/getting-started チュートリアル: https://nextjs.org/learn/foundations/about-nextjs を読むと良い。 Next は何を解決しているか、何が嬉しいか 元々は SSR のための煩雑な手続きをしなくてい

    React ユーザー向けの Next.js ガイド
  • 多コピーの原罪

    Rust 分かんないッピ ・ε・ Rust の文字列周りのプラクティスを基礎から勉強してみようと思って勉強したのでそのときのメモをまとめます。 Rust は GC を持たない なぜ Rust の文字列周りの型があんなに大変なことになっているかは、Rust のメモリモデルと Copy の仕組みを学ぶことで理解できた気がしたので、メモリの話から始めます。 FYI: https://www.reddit.com/r/rustjerk/comments/ovx0uq/the_two_major_ways_rust_changed_my_life/ GC とは まずは GC からです。 GC とは Wikipedia をそのまま引用すると ガベージコレクション(英: garbage collection; GC)とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に

    多コピーの原罪
    jay-es
    jay-es 2022/03/22
    Rust の文字列どれを使うか
  • 実質無料で使える Hosting Service の比較や使い分けの紹介 2021 (Firebase Hosting, Cloudflare Pages, Vercel, Netlify, GitHub Pages, Amplify, CloudRun)

    実質無料で使える Hosting Service の比較や使い分けの紹介 2021 (Firebase Hosting, Cloudflare Pages, Vercel, Netlify, GitHub Pages, Amplify, CloudRun)2021-10-04 ホスティングサービスに何を使えばいいのか分からないという話はよく目にしますし、僕もたまに思います。 そこでこれまで自分が使ったサービスの特徴や for me, not for me な点を紹介します。 静的ページ、および NextJS を前提としたサービス選定で、Firebase Hosting, Cloudflare Pages, Vercel, Netlify, GitHub Pages, Amplify, CloudRun を紹介します。 また、それらはフリープラン前提の話であり、not for me な点は課

    実質無料で使える Hosting Service の比較や使い分けの紹介 2021 (Firebase Hosting, Cloudflare Pages, Vercel, Netlify, GitHub Pages, Amplify, CloudRun)
    jay-es
    jay-es 2021/10/04
    ホスティングサービスまとめ
  • Prettier と ESLint の組み合わせの公式推奨が変わり plugin が不要になった

    前に書いた ESLint と Prettier の共存設定とその根拠について が公式推奨が変わったことにより一部間違った情報になっているのでその訂正記事です。 該当記事に書いた内容は Prettier と ESLint の関係を読み解く上で役立つ情報だと思うので、警告とこのページへのリンクを書いた上でそのまま残しておきます。 (追記) この記事の内容も間違った内容を書いていました。なので一度大幅な訂正をしています。prettier-eslint も推奨ではありません。 変更点の要約 Prettier と ESLint の組み合わせについて公式 の推奨方法が変わりました。 きっといつかこの情報も古くなるので直リンクではなく、ドキュメントの GitHub のリンクを貼っておきます。 ドキュメント自体のリンクはこちらです。 新しいドキュメントを要約すると、 LinterFormatter

    Prettier と ESLint の組み合わせの公式推奨が変わり plugin が不要になった
    jay-es
    jay-es 2020/09/24
    "赤いニョロニョロ"
  • 1