Home About Contact
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
Robolectric で Android の SQLiteOpenHelper のテストを書く

Android Studio を起動するのが億劫なので、 コマンドラインだけで開発できる環境をつくろうとしている。 そこで避けて通れないのがテスト環境。

Robolectric で SQLiteOpenHelper のテスト方法 を書き残します。

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

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

A broom

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

» Read More
Termux を試す / Galaxy Tab 8+ Book Cover Keyboard は 簡単に Caps key を Ctrl に設定できる

なんとなく避けてきた Termux を試した。 簡単に導入できた。

まず emacs での執筆環境を整えようとしたが、 いきなり Caps Lock を Ctrl にする方法がわからなくてあきらめそうになった。 もう物理的にはじめから Ctrl キーが正しい位置( A キーの隣り)にある HHKB を買うべきなのかとも考えはじめた。 しかし、結論としては Galaxy Tab S8+ Book Cover Keyboard は、 普通に Android の設定から Caps Lock を Ctrl に変更することができた。 (そのほかのいくつかのキーも設定変更できるようだが、詳しくは見ていない。)

» Read More
無印良品のスタッキングシェルフに ASUS Mini PC をマウント(LABRICOを使用)

無印のスタッキングシェルフ の内側にラブリコを使って柱をたて そこに付属のVESAマウント用のプレートを設置し、ASUS Mini PC(PN42) を設置した。

muji-stacking-shelf-and-asus-minipc

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

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

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

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

» Read More
簡単なエディタをつくる試み lexical を調べる(その7)

今回は emacs keybindings などを実現するための下準備として キーボードショートカットへの対応方法を調べます。

たとえば、 Ctrl + S したら検索(または保存処理)を実行、などという 機能を実現するために、そのキーイベントに反応させるには どうしたらいいかを調べます。

» Read More
簡単なエディタをつくる試み lexical を調べる(その6)

前回 Markdown Preview を追加したときに、bold や italic の マークアップは問題なくレンダリングできたのですが、 たとえば、リストアイテムのマークアップを入れると 意図通り作動しなくなっていました。

この問題を解決します。

» Read More
簡単なエディタをつくる試み レイアウトを実行時に変更

React を使って、ボタンを押すとレイアウトが変わる仕組みをつくりたい。

初期状態はこれ。

state 1

» Read More
簡単なエディタをつくる試み lexical を調べる(その5)

前回 から 引き続き作業していきます。

今回は、Markdown Preview を追加しようと思います。

方針として、現状は Editor での編集結果を textarea へ渡していましたが、 それをやめて、代わりに React の Preview コンポーネントへ渡し Markdown テキストを良い感じにレンダリングさせます。

今回作成する React Preview コンポーネントは、 lexical のエディタ(LexicalComposer)を editable false の状態にして使います。 幸い、lexical は Markdownテキスト のレンダリングに最初から対応しているので、 それを活用します。

» Read More