Home About
独自にマークアップしたテキストをAST経由で何かに変換する

以前のエントリー 改善版) kotlin でパーサーコンビネータを実装する の続きです。

そもそもの動機としては、 マークアップがネストしていたときにパーサーコンビネータを使ってパースするにはどうすればいいのだろうか? とか考えはじめた結果の覚え書きです。

パーサーコンビネータ部分の説明は省きます。(以前のエントリーを必要なら参照のこと)

» Read More
木構造のノード出現順(深さ優先順)に番号を振る話 EPUB playOrder

EPUB の toc.ncx ファイルで naviPoint の playOrder 属性を指定する必要がある。 プログラム的にこれを設定する方法を実装したので、覚え書きとして書き残します。

» Read More
Kotlin multiplatform 1.9.22 Kotlin/JS Hello, World!

久しぶりに Kotlin/JS に取り組もうと 過去のエントリー やりなおし Kotlin/JS Hello, World! 生成した js を HTML から使う / Node.js から使う などを見たが、すっかり状況が変わっていて動かない。

Kotlin のコードを(ただし Hello, World!標準出力するだけ)Node.js で動くようにビルドする方法を書き留めます。

おそらくは、このあたりを丁寧に読んでいけば済む話なのではないかと思う。 https://kotlinlang.org/docs/js-project-setup.html

» Read More
Kotlin 関数の部分適用(またはカリー化)

ときどき Haskell のように気軽に部分適用したくなることがある。 例のための例になるが、ARGB のカラーを生成する場合を考えてみる。

» Read More
Kotlin Sealed クラスの便利さ

Sealed クラスの使い途をネットで調べると色の RGB と CMYK の例などが出ていてなるほど と思っていたが、今つくっているアプリで、エディタのコマンドごとに処理を分岐させる部分で Sealed クラスを使うとわかりやすくコードを表現できたので、それを書き残す。

» Read More
リストを n個ごとに分割する kotlin 編 その2

以前にもこのリストのサブリストをつくる件は書いた。 いまつくっているアプリでちょうどリスト分割する機会があったので書き残す。

» Read More
PipedInputStream / PipedOutputStream を Kotlin で使う

ときに、 巨大になる可能性のある文字列とか画像(バイナリデータ)を返したいなどの理由により、 関数が返す値として InputStream を使いたくなることがある。

そんなときは PipedInputStream と PipedOutputStream を使えば解決できるのだが、 そのとき PipedInputStream を読む処理と PipedOutputStream を書く処理は 別々のスレッドでなければいけない、という制約がある。

Javaなら普通に Thread をつくって対処してもよいのであろうが、 Kotlinには Coroutines があるので、それを使って解決する方法を調べた。

» Read More
Kotlin Script, Kotlin compiler v1.9.22 を使う

スクリプトとして Kotlin を使うエントリーは何回か書いたのですが、 現時点での最新の v1.9.22 であらためて使い方を復習します。

コマンドラインで Kotlin を使う方法は ここ https://kotlinlang.org/docs/command-line.html に書いてあります。

» Read More
SVG のパスコマンドをつかってアイコンデータをつくる

こんなホウキの絵のアイコンをつくりたい。

A broom

手動で点を算出した上であとから調整(拡大縮小や回転)するので、 Kotlin Script を使う。

» Read More
木構造の再帰を使った巡回

少し前に 特定のディレクトリ以下全部のファイルとディレクトリをリストにするというエントリーを書いたのですが、 その応用です。

» Read More
SQLite を使う、コネクションプールは HikariCP

いままで Spring Boot 経由で H2 Database Engine を使って個人的なメモを保存してきたが、 データベース部分だけを切り離して別モジュールにできないか、と考え始めた。 コネクションプールは Spring Boot の内部でも使用されているらしい HikariCP を使う。 おいおい FTS の機能も使ってみたいので、 データベースは SQLite を選択する。

» Read More
曖昧な処理のためにレーベンシュタイン距離を使う

レーベンシュタイン距離 という二つの文字列がどの程度異なっているかを示す距離の計算をするJavaのライブラリがあるので、それを使う。

» Read More