既存システムの実装を「事実上の仕様」とみなし、それを形式化することで 「テストでは踏めないバグ」と「実装が暗黙に決めている仕様」を炙り出すための手順書。 仕様書が無い / あてにならない / 仕様と実装がずれている、という現場を前提にする。
| name | japanese-tech-writing |
|---|---|
| description | 日本語の技術文書・書籍原稿の文章規範。段落と論証の構成(パラグラフライティング)、論証の厳密さ(ツッコミどころの除去)、読み手の負荷の管理、視点と語り、演出の抑制、LLM っぽい空句の禁止、翻訳調の比喩と擬人化の禁止(「運ぶ」「効く」「開かれた問い」など)、冗長の排除を定める。日本語で技術書の章、草稿、記事、解説文を書くとき、または推敲・リライトするときに使用する。 |
| license | Unlicense(https://gist.github.com/k16shikano/67625f2a7d96e3bbdfae8d571a936063) |
日本語で技術的な原稿(書籍の章、記事、解説文)を書く・推敲するときは、以下の規範に従う。
I've spent way too much time building an Elixir-wrapper for
libtailscale and an accompanying
chat app, because Elixir and
libtailscale seem meant for each other.
I've been following Tailscale for a while now. Obviously, they're darlings of HN, their business strategy appeals to me and the product is great. I'm using it both for my personal servers and for managing
Here's a much more complete description of how I do SSA, beyond just how I do Phis.
This describes how I do SSA form, which avoids the need to have any coupling between CFG data structures and SSA data structures.
Let's first define a syntax for SSA and some terminology. Here's an example SSA node:
A = Add(B, C)
In reality, this will be a single object in your in-memory representation, and the names are really addresses of those objects. So, this node has an "implicit variable" called A; it's the variable that is implicitly assigned to when you execute the node. If you then do:
DEPRECATION WARNING: This document is now deprecated. The new version is available here.
TLDR: All language constructs regarding unsafe Rust (including those that do not exist yet) can be explained by a single concept: the proof type (see first section). Understanding this concept is enough to understand unsafe.
I always assumed the content of this document to be obvious, but came to realize while discussing
アプリやサービスをソフトウェアエンジニアが作るときに「ここはSaaSで賄いましょう」「ここは自作しましょう」みたいな判断を迫られがちです。
プロダクトごとに背景が違うので一般論は述べにくいですが、最近の僕の気持ちはこんな感じ、というのをまとめておきます。
// 極論すると、99%くらいのソフトウェアはSaaSを使ったから(勝った|負けた)みたいな短絡的な要素は無くて、それ以外のところで勝敗が決まることが多いです。なので好きにしたら良いという気もする。
- ふつうの人間は、内製した方がえらい、というバイアスがある
- 要はバランス、ではあるが僕は内製箇所を少なくする方を提案することが多い
In this article, I'll explain why implementing numbers with just algebraic datatypes is desirable. I'll then talk about common implementations of FFT (Fast Fourier Transform) and why they hide inherent inefficiencies. I'll then show how to implement integers and complex numbers with just algebraic datatypes, in a way that is extremely simple and elegant. I'll conclude by deriving a pure functional implementation of complex FFT with just datatypes, no floats.