プログラミング
Markdown を React でレンダリングして表示するための react-markdown というライブラリがある。Markdown には HTML を直接記述可能で、どのようにして任意の HTML 文字列を React コンポーネントに埋め込んでいるのか気になった。 というのも、真っ先に思い…
機械学習などの数値計算で使われる Python ライブラリの NumPy (ナンパイ)、DSL が独特で面白いので紹介します。 基本の ndarray とブロードキャスト NumPy のクラスでよく使うのは、N次元配列を表現する ndarray (N-dimension Array) です。 例えばシンプル…
ふたつのキャスト BigQuery には値をキャストする関数として CAST() と SAFE_CAST() の二つがある。 このように動作する。 SELECT CAST('0xDEADBEEF' AS INT64) AS number; /*------------* | number | +------------+ | 3735928559 | *------------*/ SELEC…
最近は Google Agent Developer Kit (通称: ADK) でエージェントを自作して遊んでいます。 サブエージェントにタスクを委譲ってやつをやってみました。そしたら思ってたんと違ったので書き記します。 サブエージェントが思ってたんと違った ADK ではとても簡…
先日、高松市から徳島市までの約80kmを歩いて旅をした。 実際の経路と歩いた距離 こういう長距離の徒歩旅は以前にもやっていて、このブログに記事が残っている。 blog.mudatobunka.org 歩きながら写真を撮ったものにコメントをそえてまとめている。これらの…
何気なく @chokudai さんのタイムラインを見ていたら「セグ木」という言葉が目にとまった。 セグ木だけやたらみんな解けるようになってる話、ちょっと考えれば、「もっと高度なデータ構造であるmapを使った問題」がもっと解かれているのだから、標準ライブラ…
書くのも読むのも難しい Grass 言語のインタプリタを書きました。Rust 実装です。 github.com cargo install --git https://github.com/todays-mitsui/rusty-grass.git でインストールして遊べます。 モチベーション Grass 言語は言語仕様がカッチリしていて…
この記事は Rust Advent Calendar 2025 の15日目の記事です。 大遅刻、すみませんすみません。 Rust ではオリジナルの構造体を println!() で印字しようとしても、デフォルトでは印字できません。 // 二次元平面上の点を表現する構造体 struct Point { name:…
メリークリスマス! この記事は はてなエンジニア Advent Calendar 2025 の3日目の記事です。 大遅刻ですね。すごいことですよこれは。 さて、Rust ネタです。 ご存知の通り Rust には GC がありません。代わりに所有権システムがあり、所有権を持つ変数がス…
Grass 言語というプログラミング言語があります。 esolangs.org オリジナルの製作者 (UENO Katsuhiro さん) のサイトが2025年1月頃を最後に消えているので参照先が海外の Wiki しかない... 今回は Grass 言語に入門してみます。まずは Hello,world! を表示す…
Web アプリケーションフレームワークの Hono にはさまざまなミドルウェアが提供されています。その一つが Hono GraphQL Server Middleware で、Hono をベースとした GraphQL サーバーを構築できます。 www.npmjs.com 「よし Hono で GraphQL サーバー書くぞ…
先週 に引き続いて AI エージェントにコードを書かせてみた。 テーマとしてとてもとても典型的で既存のコード例がインターネットに溢れていそうな「テトリス」を選定した。 (選定したというか、職場の id:koudenpa さんが「テトリスでも作らせてみなはれ」と…
ココピー (cocopy) というブラウザ拡張機能がある。 chromewebstore.google.com Webページを見ていて URL やページタイトルなどをコピー&ペーストしたくなったとき、ココピーを使うと思い思いの形式でクリップボードへのコピーができて便利だ。 ココピーに…
CSS では様々な色記法が認められています。 例えば私が好きなコーンフラワーブルーは、 cornflowerblue #6495ed rgb(100, 149, 237) hsl(218.54, 79%, 66%) hwb(218.54 39% 7%) lab(61.2% 2.4% -40.2%) これらどの記法でも同じ色が表示されます。 ぜんぶ同じ…
JavaScript を使って画面上の要素を入れ替えたとき、スクロール位置が勝手に動いて画面がカクつくという現象に遭遇しました。調査して分かったことをまとめます。 まずはデモをご覧ください todays-mitsui.github.io カラフルな <div> が並んでいて、右上のボタン</div>…
JavaScript から wasm の関数に文字列を渡して呼び出す方法を書き残します。 この記事は二本立てです 後編はこちら。 blog.mudatobunka.org 前後編のコードを全部まとめたリポジトリがここにあります。 github.com 前提知識 wasm に文字列型は無い wasm で扱…
JavaScript から wasm の関数を呼び出して結果の文字列を受け取る方法を書き残します。 この記事は二本立てです 前編はこちら。 blog.mudatobunka.org 前後編のコードを全部まとめたリポジトリがここにあります。 github.com 前提知識 まずは 前の記事 にも…
React と SolidJS のリアクティブシステムがそれぞれ対照的で面白い。React は冪等性を前提にしていて SolidJS は副作用を前提にしている。真逆だ。詳しく見てみよう。 3行まとめ React は冪等で純粋なコンポーネントをベースにしている、副作用はバーチャル…
この記事は Rust Advent Calendar 2024 の 8日目の記事です。 wasm-bindgen で wasm に型を付ける Rust は wasm にコンパイルできるよう意図された言語でもあります。Rust コードを wasm にコンパイルしてしまえば、ブラウザをはじめとした wasm ランタイム…
この記事は はてなエンジニア Advent Calendar 2024 の 2 日目の記事です。 昨日は id:hogashi さんの「querySelectorAllの結果をmapしたいときはArray.fromすると良い」でした。 どうも、趣味で関数型言語をやっている者です。 長らく関数型言語をやってな…
配列がとある要素を含むかどうか調べるには Array.prototype.includes を使います。 const arr = [1, 2, 4, 8, 16]; arr.includes(4); // => true arr.includes(7); // => false ところで、JavaScript には Set というデータ型があり、同じように Set.protot…
wasm-bindgen で生成したコードに対してテストを書くときの話題です。 Rust からコンパイルした wasm に対してテストを書くとき wasm-bindgen-test がおすすめされがちです。 wasm-bindgen-test は Rust でテストを書き wasm にコンパイルして実行します。た…
wasm-bindgen を使うと Rust の構造体から TypeScript の型情報を生成して wasm で受け渡しできるようになる。 やるべきことは #[wasm_bindgen] 属性をつけるだけで、wasm-bindgen がよしなにしてくれる。 // Rust use wasm_bindgen::prelude::*; #[wasm_bin…
wasm-bindgen では Rust に組み込みの型だけでなくユーザーが定義した型を関数の引数・返り値に使うことができます。 例えば下記のように User 構造体を定義して、 // Rust #[wasm_bindgen(getter_with_clone)] pub struct User { pub name: String, pub age…
Rust で wasm を書くときの話題です。 Rust で書いたプログラムは wasm にコンパイルすることが可能です。さらに wasm-bindgen を使うと JavaScript から呼び出しやすいインターフェースを自動生成してくれます。 例えば下記のようなコードを書くと、 // Rus…
どうも、趣味で JavaScript を書いている三井です。 先日、 JavaScript つまみ食い LT 会 というイベントを主催しまして。 そのメインの LT 会後の懇親会で「懇親会 LT」と銘打ったゆるゆる LT をやりました。 私も参加して「JavaScript で Hello,world! に…
TypeScript は便利だ。型検査で値が保証されるのはとても頼もしい。 とはいえ場合によっては型検査を通すために不必要にタイプ量が増えてしまうことがある。 例えば下記のような型が 外部ライブラリによって生成される としよう。 type User = { __typename:…
みなさま ラムダ計算 をご存知でしょうか。 ラムダ計算はある種の関数型プログラミング言語の体系で、変数と関数, そして関数適用というミニマルな構成要素だけでチューリング完全な表現力を持っています。 この記事では、ラムダ計算の中でも特に単純な 型無…
Rust は「コストのかかるコードは書くのが苦痛であるべき」という思想のもとデザインされている気がする。 というのも Rust を書いていると「意図的にショートカットが用意されていない」と思える場面があるからだ。 いくつか例を挙げてみようと思う。 文字…
どうも id:todays_mitsui です。この記事は はてなエンジニア Advent Calendar 2023 の23日目の記事です。 昨日は id:cateiru さん、明日は id:motemen さんです。 『達人プログラマー』という有名な書籍があって、そのなかで毎年少なくとも一つの言語を学習…