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

  • 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
  • ドキュメントを書く仕事を探している

    飲み会で「お前、次の転職どうするよ?」的な話をするときはいつも これまでは自分が一番下手くそなバンドメンバーになれる職場を意図的に探していたし、今の職場もその基準で選んだが、そろそろ俺の音楽をやりたい プログラミングそのものをドメインとした仕事をしたい ドキュメントやチュートリアルの整備をしたい。あわよくば今 blog.ojisan.io を書いていること自体が仕事になるようなことをしたい 的なことを言っている(はず、アルコールが入っているので記憶が定かでない)。 で、この最後の 「ドキュメントやチュートリアルの整備をしたい」というのはここ1年くらい言っている気がするのだが、そろそろ当に動き出そうと思って最近ふわふわ考えていることを書いてみようと思う。そういう仕事をしている人の目に止まってくれると嬉しい。 どうしてドキュメントを書くような仕事をしたいのか いまこういったブログを運営してい

    ドキュメントを書く仕事を探している
    yug1224
    yug1224 2023/09/19
  • ブログのビルド時間が25分くらいかかるので作り直したい

    最近ブログのビルドで色々なトラブルがある これまでブログを Markdown で書いて GitHub に Push したら 2分くらいで番環境に反映されていた。フルビルドでも10分くらいだった気がする。しかし最近は20分以上ビルドに時間がかかったり、そもそもビルドに失敗したりビルドの調子が悪い。 フルビルドに25分かかる たとえば https://github.com/sadnessOjisan/blog.ojisan.io/actions/runs/6105281276 は 24分かかっている。これはlockfile を更新したのでキャッシュを使わずにビルドしている。つまりフルビルドを走らせると 24分かかる。 Gatsby なので日頃は incremental build すればいいと思うかもしれないが、いまビルドキャッシュは 1週間しか残らない。そのため1週間ブログを書くのをサボっ

    ブログのビルド時間が25分くらいかかるので作り直したい
    yug1224
    yug1224 2023/09/17
  • クソコードを読ませない

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

    クソコードを読ませない
    yug1224
    yug1224 2023/09/12
  • ありのままのコンテナを使って E2E テストを GitHub Actions 上で行う

    コンテナでサーバーを動かして、それに対するリクエストをするE2Eテストを GitHub Actions 上で動かすことに苦労したので書く。 成果物repo: https://github.com/sadnessOjisan/e2e-gha お題となるサーバー コンテナに固めるから別に何言語でも良いので、まずはちょっとしたエコーサーバーを書いてみよう。 import Fastify from "fastify"; const fastify = Fastify({ logger: true, }); fastify.get("/", async function handler(req, res) { const q = req.query["q"]; res .status(200) .headers({ "content-type": "application/json", }) .se

    ありのままのコンテナを使って E2E テストを GitHub Actions 上で行う
    yug1224
    yug1224 2023/09/08
  • private 関数にもテストを書きたいとき

    「private 関数にはテストを書かない」というのが多数派だと思う。だが昨日、仕事で In-source testing を書いていたらふと private 関数にテストを書きたくなった。そこで、In-source testingができる環境下でもprivate 関数にテストを書くべきかを X で聞いてみたら何か盛り上がっていた。 (In-source Testing: https://vitest.dev/guide/in-source.html) 反応を見る限り、やはり「private 関数にはテストを書かない」の方が主流だった。Kent Beck先生の http://shoulditestprivatemethods.com を紹介するツイートにもそういった反応が寄せられていた。(ぶんぶんさん、教えてくれてありがとうございます。) (このサイト面白すぎますよね・・・) 自分の立場を

    private 関数にもテストを書きたいとき
    yug1224
    yug1224 2023/08/25
  • Rust での tracing

    axum を始め、tower 系列でサーバーを作っているといくらでも例が出てきそうな話ではあるが、「ちょっと君、明日からRust でトレーシングしたまえ」って言われた時に欲しいまとまった情報は意外とない気がしたので書く。 基的に tower 系列や、tower に準ずる様な Service トレイトを持つ様なFWであれば同じ様な話であり、tracing crate 自体は Agnostic なものなので、ここでは axum を例にあげて書く。 axum と tracing subscriber まず、簡単に HTML を返すサーバーを作る。 use axum::{response::Html, Router}; use std::net::SocketAddr; #[tokio::main] async fn main() { let app = Router::new().route(

    Rust での tracing
    yug1224
    yug1224 2023/08/25
  • Rust の hyper は何が嬉しいか

    Rust でWebサーバーを書く時の技術選定をするときに調べていると hyper に必ず出会うと思う。これは黎明期から存在しているライブラリで、Webサーバーにしては珍しく version 1 まで到達している老舗だ(1に到達してたら安心って考え方が正しいかはさておき...)。このライブラリは actix-web や axum のような他のライブラリとは毛色が違い、かなり primitive だ。そのため axum のベースに使われてもいて、hyper はそのまま使わないライブラリなのかもしれない。 サンプルコードから存在意義がわかりにくい さて、そんな hyper だが公式の example はこのようになっている。 #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>>

    Rust の hyper は何が嬉しいか
    yug1224
    yug1224 2023/08/21
  • ホストマシンで開発できないものを、ホストマシンのフォルダを同期させてコンテナ内で開発する

    ホストマシンで開発できないものを、ホストマシンのフォルダを同期させてコンテナ内で開発する2023-08-19 KLab という会社のインターン課題を夏休み中にやると「詳解TCP/IP Vol.2」を貰えるらしい。 https://twitter.com/pandax381/status/1688414447466139649 このはプロトコルスタックを自作するための教科書として有名なようだ。実は自分は自作プロトコルスタックには興味があり、 Webサーバーアーキテクチャ進化論2023を書いた時に 「SYN Queue と Accept Queue に積まれる実体って何? Linux カーネル読むしかねぇ!うぉ〜挫折〜〜〜〜〜〜!」となっており、この辺は自分の中で宿題となっている。 自分は最近までこのを知らなかったのだが、 Encraft #2 サーバーとクライアントを結ぶ技術 に登壇した

    ホストマシンで開発できないものを、ホストマシンのフォルダを同期させてコンテナ内で開発する
    yug1224
    yug1224 2023/08/19
  • Go言語を習得するために、Goちゃんねるを作った

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

    Go言語を習得するために、Goちゃんねるを作った
    yug1224
    yug1224 2023/08/19
  • A Tour of Go やってみた TIL

    OGPは白川郷だ。石川県に住んでいたときよく白山白川郷ホワイトロードをドライブして遊びに行っていた。早くに閉まるから帰りは富山側に出て日海側で美味しい魚をべて石川に戻っていた。あのときは楽しかったなぁ。 今年、ISUCONに挑戦するつもりの夏休みの過ごし方をしているので Go の勉強を始めた。自分には既にNode.js とRustが Main/Sub weaponになっているので、別にISUCON向けに勉強しなくていいと思っていたが、どうも上位勢は軒並みGoっていうのと、彼らの解法ブログを読み解くためにはGoをやっていた方がよさそうだったのでGoの勉強を始めた。 ちなみにGoは生涯で3行しか書いたことがない(うち2行はHTMLテンプレート)生粋の素人だ。いや正確には遥か昔に勉強に挑戦したことがあってを一冊買った覚えはあるが、A Tour of Go の冒頭で「ほぇ〜大文字でexpor

    A Tour of Go やってみた TIL
    yug1224
    yug1224 2023/08/12
  • actions-rs/cargo が非推奨とは言うものの

    yug1224
    yug1224 2023/08/11
  • WebRTC と React を組み合わせるなら Flux 設計が有効

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

    WebRTC と React を組み合わせるなら Flux 設計が有効
    yug1224
    yug1224 2023/06/12
  • 自己紹介としての、読んで欲しいブログ記事一覧

    6/13 に アウトプットからはじまるエンジニアのキャリア論 〜IDE さんと katei さんの場合〜 というイベントに出ます。自分のブログを紹介する回なのですが、最近色々雑多に描きすぎたせいでまとまりがなくなってしまい、紹介しにくいです。はてなブックマークの検索結果 が気合を入れて書いたものリストとしては機能もしているのですが、完全ではないのとふざけた記事も多いので、せめて自分が読んで欲しいなと思うものをまとめて置くページを作りました。このイベントだけに限らず最近自己紹介としてブログを出すことがあるので、自分のアイデンティティにしたいようなものはここにまとめていきます。定期的に更新していきます。 2023/06/13 更新 ちなみにブログにお気に入り記事だけをまとめる仕組みはあったりもする。(昔あった) 選出基準 自分はこういうことに関心がありますとアピールしたいもの 頑張って書いたも

    自己紹介としての、読んで欲しいブログ記事一覧
    yug1224
    yug1224 2023/06/11
  • モノレポにすべきか、レポジトリを分割すべきか

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

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

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

    Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる
    yug1224
    yug1224 2023/05/21
  • ライブラリに頼らず Cookie を扱うためには

    簡単な開発をしたいときにちょっとだけ Cookie を使いたいときがあると思う。私は日頃から Web 標準な何かをするときはライブラリを使うことに抵抗があり、Cookie 周りの操作もライブラリを使わずにやりたい。が、そんなちょっとカッコ良い発言をしている裏で、私はこっそり「Cookie 付けるのってどうするんだっけ?」「Cookie のフォーマットってどんなんだっけ?」といつも Google で調べている。もちろん Set-Cookie くらいは覚えているが、「順番は?どういうデリミタで?どういうパーサーが必要で?」というのは結構忘れているし、意外と皆さんもすっとは出てこないのではないだろうか。あ、私だけですか、すみません。。。と、私は毎回調べているが、毎回調べるのはめんどくさいのでメモを書いておこうと思う。 OGP は クッキーに見せかけた空気だ。「こいつ最近 OGP でふざけてるし、

    ライブラリに頼らず Cookie を扱うためには
    yug1224
    yug1224 2023/05/10