たより

Zennの「Rust」のフィード

TCPって裏で何してるくれるの?UDPと比較してみた

yuyan

http3について理解したいが、その前にTCPとUDPの違いをイメージしておきたい。 TCPとUDPの代表的な違いは以下の通り TCP UDP 重視すること 正確さ・信頼性 速度・軽さ 考え方 ちゃんと届ける とりあえず送る 主な用途 SSH, HTTP DNS, VoIP, ゲーム 今までTCPを扱う上では、欠損や順序ずれが発生した場合はTCPが「いい感じ」になんとかしてくれていた。 しかし、HTTP/3を使うということは、UDPを使うため「いい感じ」に実装する必要がある。 とは言っても実際どんなもんなのかはイメージしにくいので順序ずれや欠損などが実際に発...

Zennの「Rust」のフィード

SDS文書とMHLW標準JSONを双方向変換するRustツールを作ってみた

kent-tokyo

sds-converter というツールを開発しました。 SDS(安全データシート)文書を厚労省の標準JSONに変換し、またその逆変換(JSON → Word文書)も行うRust製のCLI兼ライブラリです。LLMバックエンドは差し替え可能で、Claude・GPT・Gemini・ローカルLLM(Ollama等)に対応しています。 背景 安全データシート(SDS)は、化学製品を取り扱うすべての事業者が作成・提供を義務付けられている文書です。JIS Z 7253 に基づく16項目の情報(成分・危険有害性・応急措置・保管方法など)を記載します。 厚生労働省は2025年3月に「SDS情報交換の...

Zennの「Rust」のフィード

Rust + axum で画像掲示板を作る (1) プロジェクト初期化と Hello, axum!

聖永宗玄

はじめに 数年前に PHP で書いた画像掲示板を、Rust の勉強として axum で書き直してみることにした。 作りながら学んだことを、Zenn でステップごとに記事化していく。 第1回では、プロジェクトの土台を作り、axum で最小の Hello, axum! が返るところまで進める。 Rust 初学者として引っかかった点や、検索で出てきやすい axum 0.6 系の記事との違いも書き残しておく。 今回やることは次の4つだ。 Cargo.toml に axum と tokio を追加する src/main.rs に最小の axum サーバを書く .gitignore と ...

Zennの「Rust」のフィード

Pure Rust でフォントレンダリングが難しい理由

kent-tokyo

Rust で GUI アプリやドキュメント生成ツールを作ろうとして「テキストを描画したい」と思ったとき、実際には 4 つの独立した問題が積み重なっています。C のエコシステムにはそれぞれの解決策がありますが、Rust は層によって成熟度にばらつきがあり、クレート名が「C 依存かどうか」を判別しづらくしています。 4 層のスタック フォントレンダリングの処理は次の 4 段階に分かれます。 層 C ライブラリ 役割 フォント検索 fontconfig インストール済みフォントを名前・ファミリ・スクリプトで検索 テキストシェーピング HarfBuzz Unicode 文...

Zennの「Rust」のフィード

偏角ソート

qdot3

はじめに こちらの記事で浮動小数を使わない偏角ソートが紹介されています。実装がシンプルで良いのですが、2点問題があると感じました。 原点の順序が未定義 180 \degreeオープンでない 1つ目の問題点は利便性の観点から問題で、原点を含む格子点の列を偏角ソートする際にソート関数がpanicします[1]。2つ目は好みの問題ですが、atan2に合わせる方が自然です。 本稿では当該記事の実装を参考にしつつ、上記の問題点を解決します。 アルゴリズム 平面を図のように分割します。0を+0.0と解釈すると、原点の偏角は0 \degreeです。青色の領域にある点の偏角は正、赤色の領...

もっと見る

ソース