2021-02-01から1ヶ月間の記事一覧

WebAssemblyのvalidation(型検査)を書いている

WebAssemblyの仕様には、しっかりした(Soundnessが証明された)Validationが、まるまる一つの章をかけて定義されています。自分が作っている処理系では、興味はあったんですけど今まで実装は後回しになっていました。しかしよくよく見るとこれは型推論のロ…

WebAssemblyのEmbedderからのインターフェース一覧

WebAssemblyは単体で完結するよりは、ホスト環境に埋め込まれて使う用途が想定されているようです(ただし、最近はそれだけでもない)。例えば、JavaScriptが典型的なホスト環境だと言えます。specには、それらのEmbedderとWebAssemblyのインターフェースが…

WebAssemblyでクロージャ実現にWeak<T>を使ってみる

ラノベのような雰囲気のタイトルになってしまった。 順番にいきましょう。 RustのWeak<T> RustのWeak<T>に関しては、公式がすばらしい文章を日本語で出してくれています。本当に感謝しかないです。とにかく読みましょう。 doc.rust-jp.rs WebAssemblyのクロージャ </t></t>…

WebAssemblyのRuntime Structureを思い出す

一回インタプリタを作ったんですが、結構前なので忘れてるんですよね。というわけで仕様を再確認します。 WebAssemblyのVMはスタックマシンで、内部は大きくStoreとStackの2つに分かれます。 The store represents all global state that can be manipulated…

Slackアプリ周りの概念の整理

ironoir.hatenablog.com Slackアプリについて勉強を続けていたんですが、少し時間が空いてしまったので基本的な構成を忘れてるんですよね。というか結構ややこしいんですよね、概念が。というわけでせっかくなのでPlantUMLでまとめてみました。 まず、Slack…

PlantUMLでJSONを可視化する

シンプルなテキストファイルで UML が書ける、オープンソースのツール そのままです。結構衝撃でした。 概要 「以下のような、UML以外の図もサポートしてます。」という下に一覧があるんですが、これUMLで書ける種類よりも多いんですよね(UMLは9種類)。 JS…

プログラミングするときも、マネジメントするときも、そんなに変わらない

お休み前なので、元々調べてたことを放り出して、雑文を書きます(むしろ駄文?)。 わたしはプログラミング大好きですが、だからと言っていわゆる「マネジメントの何が面白いのかわからない」という人間ではありません。そもそも出自が学生時代からバリバリ…

WebAssemblyのload命令のロジックを確認してみる

作ってみたいものが決まりつつあるので、WebAssemblyの方に戻ってきました。 メモリ周辺の命令を実装したいので、まずはloadからじっくりと読み直しています。 仕様上、命令の実行時の動作が書かれているのは4章です。仕様上、複数の命令の動作がまとめて一…

MathMLのmfencedで集合の外延表記をつくる

先日にひきつづき、MathMLと戯れています。 ironoir.hatenablog.com 今回は以下のMathML数式組版入門という書籍を読んでいます。以前に技術書展で現地購入したので、かなり前ですね。次に東京で現地開催されるのはいつの日になるんでしょうか。ただ、書名で…

MathMLを使ってみている

TeXでいいじゃん、と感じられたあなた。まあ、確かにそうです。 ただ、家に以前買ったMathMLの書籍があるのと、それからプログラミングで取り扱うには、明示的なタグ構造を持ったMathMLの方が扱いやすいかな、という思いもあって調べてみることにしました。…

よい技術者リーダーとよい部下であること

www.oreilly.co.jp 先日のことで引き続き考えていたテーマがあって、今まで読んできた書籍には何か書いてあるかな、と思って再度手を取りました。 この書籍には、タイトル通り、IT技術者がマネジメントに関わっていく際の心構えが段階的に書いてあります。先…

タイガーブックと等式推論

www.shoeisha.co.jp 次、どうしようかなということでふらふらと彷徨っているシリーズ続行中です。言わずと知れたタイガーブック。特に脈絡もなく手に取って、眺めています。 15章の「関数型プログラミング言語」で、興味深い記述を見つけました。 純関数型(…

「人に頼む技術」を読んでいたら

www.tokuma.jp 別に書籍紹介のブログを目指しているわけじゃないですが…実体験も含めてこの本の意義を感じた、という話です。 この本はまだ読んでいる途中ですが、前半では、ものごとを頼まれている側は決して嫌なことばかりではない、という話が展開されて…

「記述論理とWebオントロジー言語」を読んだ

www.ohmsha.co.jp 上記の書籍も飛ばし読みしてたんですけど、もう少しだけ読みました(ちゃんと読んだとはまだ言えない)。自分がどちらかというと数理論理学というよりは知識表現とかに興味が元々あったのもあって、とにかく買った気もします。というかAmaz…

クロスプラットフォームでGUI:Tauriを試してみる(1)

tauri.studio 少し前にどこかで見て、気になっていました。最近はデスクトップアプリケーションでGUIをどうやって作成するのかということにかなり興味があって、ここでは(まだ)取り上げてはないんですけど、いくつかのフレームワークを色々と見回っていて…

VS Code ExtensionをDockerコンテナの中で開発したい

自分でsyntax highlighterを作りたいなと思って環境構築をしています。 基本的にはnodeとyaomenが必要です。ということでいつものようにRemote Containersの機能を使って環境を作ります。 FROM node RUN npm install -g yo generator-code RUNしている内容は…

WebAssemblyのtrunc_sat命令

ようやくWebAssemblyのバイナリパーサを書き終えそうなので、次はそこへのコンパイラを書きたいな、と妄想しています。妄想するのは自由なので。ちなみにバイナリパーサに関してはまだ完全に終わったわけではありませんが、最も地道な作業と思われる、各Inst…

構造化したソースコードは読みにくい?

仕事中、コードレビューをしていて実際にあった話です。プログラマー経験数年の人から、「もう少しこの部分を共通化したいんですけど」という形で質問が来ました。「この部分」は単純に全く同じコードを何回もコピペしているだけだったので、わたしは「まず…

「数式組版」の難しさは、コンテキスト依存の多さが原因?

数式組版www.lambdanote.com 「数式組版」も積んでいた書籍でした。WebAssembly周辺のことが終わったら、次に何をしようかな、と考えているところで、いくつかの案の中から選んでいるところです。せっかく自分で動くVMが作れたなら、いろいろその上に乗っけ…

公開鍵暗号方式に喰らいつく

理解に自信がないので、違っていたらこっそり教えてください。 うん、公開鍵暗号方式というか、サーバ認証やSSL(TLS)のしくみですね。ときどきわからなくなって、その度に調べ直します。なにかいい覚え方はないですかね。一時期、「公開鍵は南京錠で、秘密鍵…

WebAssemblyのcode section

Binary Formatを読み込むパーサを書いていますが、ようやく、code sectionを残すだけとなりました。Text Formatよりも手順が少ないのですぐ書けますね(慣れてきたのもあります)。 とはいえ、一番肝心なsectionなので、ちょっとどういう仕様なのか、解読し…

Sphinx、良いんじゃないですか

業務で少し関係あるので調べていました。例によって書籍を入手(直販のみで、一般の書店では購入できないとのこと)。 www.oreilly.co.jp 開発用ドキュメントを作るのは、もっぱらMarkdownだったので、reStructuredTextもなんとなく、あんまり流行っていない…

GASでWebアプリ、プロ向けのかんどころ

ironoir.hatenablog.com 以前にも書きましたが、GASの勉強を続けています。いちおうLINEとSlackに通知を送ってみたりしていますが、Webアプリを作れることを全然知りませんでした。これは個人で使うちょっとしたツールとか、もしくはプログラミングを始めて…

令和にGoFデザインパターン

プログラミングの設計で勉強会をやろうと思って、ネタを集めています。とっかかりで便利なんですよね、いわゆる「デザパタ」。はい、いちいち書きませんけど、GoFデザインパターンのことだと読み替えてくださいね。「エンジニア」はこの記事内では、ソフトウ…

Rustのcargo.tomlを見ればパッケージがわかる

Rustのパッケージ管理についてはcrates.ioがあります。よく間違えてcrate.ioと入力してしまって違うページに飛んでしまう経験がありますよね(ない)。ややこしいんですが、ドメイン名にはcrateを冠しているものの、実際に管理している単位は「パッケージ」…

Docker Machineの今

業務上ではDockerを使っているものの、他の技術との兼ね合いでDocker for Windowsが入っておらず、Docker Toolboxで開発をせざるを得ない状態になっています。組織の規模から考えると、その状況はしばらく変わらなさそうです。VirtualBox内にホストを作って…

Design It!を読んだ

www.oreilly.co.jp 結構前に買って積んでたんですが、業務でアーキテクチャについて考える機会があって、そういえばまだ読んでなかったなと思って、ひとまず一気に目を通しました。最後のリファレンス的な手法紹介以外は結構サクサク読めて、それも意外でし…

Rustのエラーハンドリングにanyhowとthiserrorを使う

www.shuwasystem.co.jp 上記の歯車本、良い本でお世話になっていますが、エラー処理に関する部分について、今回じっくり読んでみました。そこで色々と考えることもあったので、紹介がてら書いてみます。 docs.rs docs.rs Rustのエラーハンドリングは、結構た…