Clean Shot X

https://cleanshot.com [[Skitch]] の代替アプリ。 `brew install cleanshot` で入る。 有料なのがちょっとあれだけど、スクロールしながら撮影できたりして便利。

何人も判断するよりはむしろ信ずることを願う

https://todays-list.com/i/?q=/ubghulhbhb/1/4/ [[セネカ]] の言葉。 [[ショーペンハウエル]] の [[読書について]] で引用されていた。

科学者とあたま

[asin:4001145103:detail] https://www.aozora.gr.jp/cards/000042/files/2359_13797.html [[寺田寅彦]] の有名なエッセイ。たまに読み返したくなる。 - 「科学者になるには『あたま』がよくなくてはいけない」 - 「科学者はあたまが悪くなくてはいけない」 という2つの命題は両立する。 頭がよくないと論理展開ができない。 頭のいい人が考えて、**はじめからだめにきまっている**ような試みを、一生懸命につづけられるのは「あたまが悪い」からである。しかしそういったところにこそ、なにかがある。

h2o

kazuho san の http server の [h2o](https://h2o.examp1e.net/) が日本国内では有名だけど。 最近は [ML Platform の h2o](https://www.baeldung.com/h2o-introduction) も出てきているようだ。

64p.org を github pages でちゃんと治す!

https://github.com/tokuhirom/64p.org にある https://64p.org/ はもともと DigitalOcean の VPS でホスティングされていたと思うのだが、、なんか落ちていた。多分使ってないとおもって消したんだけど。。 [[github pages]] でホスティングするようにする。 64p.org は [[Apexドメイン]] (サブドメインついてないやつ)なので、ちょっと普通のサブドメインよりも手間が必要。 以前は Apex ドメインは github pages は対応してなかったと思うんだけど、なんか今みたら対応してるのね。 https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-an-apex-domain 64p.org の A レコードに以下のデータを入れておく。 ``` 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 ``` ガイドラインにそって、CNAME で www.64p.org に tokuhirom.github.io をあてておく。 いやはや便利な時代ですねえ。

普段使ってる Mac OSX アプリのリスト 2025 年初

[[2008年末に osx にいれてるソフトウェアについてのまとめ]] からだいぶ変わった。 - [[Visual Studio Code]] - slack - なんかいくつかのグループに入っている - LINE - 妻との連絡用 - [[NeoJot]] - 自分で作ったメモアプリ - MindNode - mindmap を書くためのツール - たまに使う - [[PowerPoint]] - Box でプレビュー出来ないから PowerPoint ということに。。 - 今後はまた Keynote や markdown ベースとかに戻してもいいかもしれず。 - [[wezterm]] - Mac/Linux 等でも使えて統一的に扱える点が好ましいと思っている。 - あんまり terminal app にこだわりはないんで、なんとなく使ってるだけという感じではあります。 - [[ghostty]] も気になりつつ、wezterm で困ってない。 - Chrome - メインのブラウザは chrome を利用している。 - 1password - lastpass からの移行組。 - lastpassの方が優れていたことも多かったなぁと思ったりはしつつ。。 - [[Pixelmator]] - ちょっとしたレタッチなどにたまーに使う。 # あんまりもう使ってないもの 会社辞めた結果、多分 JVM 言語使わなそうなので、このへんは封印されそう。 (JVM 使うなら使うけど) - [[Jetbrains Toolbox]] - JetBrains 社製の IDE のインストーラ - IntelliJ IDEA と RustRover を使っていた - [[Visual Studio Code]] でいいなということになったので使わないことにした。 - IntelliJ IDEA - 便利 - [[Vivaldi]] - ちょっと試してみたけど、あんま使ってない

ゆびあみ

2024年12月29日。ふと思い立って本を買った。 [asin:4834766276:detail] 子供向けなので僕にも出来るはず。。 [asin:B0BQN7SV7L:detail] パステルカラーの毛糸も買ってみた。超太、みたいな毛糸を買ったほうが良かったかもしれず。 --- とりあえず、マフラーは簡単にできた。 基本のマフラー的なのを巻き閉じにしていけば、割と何でも作れるが、それをやるなら最初から棒編みの方が楽という説もある。。 まきとじをやるのダルくて、多分やらなそう。かぎ針のほうがいいかも。

sveltkit を使うときはサーバー用の共通ライブラリは $lib/server/ におく

sveltekit では、サーバーサイドとクライアントサイドでコードを共通化できるのが便利。 なんだけど、実際にはサーバー側でしか動作しないようなコードももちろんあるわけで。 それだけならいいんだけど、クライアントサイドで動くと意味不明なエラーを出して来るやつもいるので、間違えてインポートしないように分けておいた方が良い。 通常、共通コードは `src/lib/` 以下に置けばよいのだが、サーバー側でしか動かないコードは `src/lib/server/` 以下に置くようにする。こうしておくとクライアントサイドのコードからは import できなくなって良い。 詳しくはこのへん参照のこと。 https://kit.svelte.jp/docs/server-only-modules 実際に [[Blog3]] での実装は以下のようにしたのだった。 https://github.com/tokuhirom/blog3/pull/837

Blog3 の html 形式のエントリを markdown に変換する

[[Blog3]] は歴史がありすぎて、はてなダイアリーから取り込んだデータが含まれている。 はてなダイアリーからエクスポートしたデータは HTML になっていました。 これまでは過去のデータを振り返ることはなかったので困っていなかったのだけど、Blog3 の大幅書き直しに伴い、Scrapbox みたいな UI にしたんですよね。で、結果として過去の記事を振り返る機会が増えたのです。 検索機能とかもめっちゃ使いやすくなったし、過去の記事へのリンクも貼りやすくなった。 しかし、結果的に過去の記事を振り返ろうと思うと、HTML が textarea に表示されるのはしんどいな、と。 そういうわけで過去データをついに markdown に強制変換しようかな、と。 相当に古い記事なので多少ぶっ壊れることを覚悟で一括で強制変換してしまうという手もあるんだけど、せっかくなので、マイグレーションツールみたいなのをでっち上げることにする。 - `/admin/htmltomd/` で html 形式と markdown と、markdown を HTML にレンダリングされたフォーマットでサイドバイサイドでレンダリング。 - `POST /admin/htmltomd/{PATH}/commit` で markdown 形式を保存する というような構成で実装しようかなぁ。 今は、ローカルからも本番に繋げる構成になってるので、手元で内容見ながら1個ずつ動かすという感じにしよう。 最初は [[turndown]] を使っていたのだが、これは一個だけ要件を満たさなかった。 ``` <pre class="code" data-unlink="data-unlink">&gt; our $n=3; 3 &gt; $?PACKAGE.WHO&lt;$n&gt; 3</pre> ``` という記法が code block に変換されない。 [[html-to-md]] というライブラリだとできたので、こっちを採用。 ``` import html2md from 'html-to-md' const html = ` <pre class="code" data-unlink="data-unlink">&gt; our $n=3; 3 &gt; $?PACKAGE.WHO&lt;$n&gt; 3</pre> <p>他の HTML 部分。</p> `; const markdown = html2md(html); console.log(markdown); ``` で、以下のような確認画面を作って、ちゃんとフォーマットできてるかをざっと確認して、コンバートしていく。 ![Image](https://blog-attachments.64p.org/1735866754875-image.png) 結果としてはこういうコードを書いた。 https://github.com/tokuhirom/blog3/pull/832

最近使ってる vim plugin 2025年版

[[vim]] もはやメインのエディターとしては使ってないので、だいぶ使うプラグインは減らしてしまいましたが。。 - [[vim-plug]] でプラグインの管理をしています。 - [[vim-airline]] でステータスラインを見やすく - colorscheme は [[gruvbox]] - ファイル間移動は [[ctrlp]] - [[rainbow_parentheses.vim]] でカッコの色をそれぞれ変える - [[quickfixstatus]] で、quickfix の該当箇所にカーソルを移動させるとエラー内容がコマンドウィンドウに出力される - [[editorconfig-vim]] で .editorconfig を使うように - [[minibufexpl.vim]] でタブっぽく表示 といったところが 2025 年現在使っているやつです。 わりと普通ですね。

markdown-it で HTML コメントを除去したい

[[Blog3]] では、公開用の [[markdown]] のレンダリングには [[markdown-it]] を使っている。 デフォルトでは HTML コメントが除去されないので、以下のようにして HTML コメントを除去するようにした。 これで、ネタバレとかを除外できるようになった。 ```javascript const MarkdownIt = require('markdown-it'); const md = new MarkdownIt({ html: true, }); md.core.ruler.push('ignore_html_comments', (state) => { state.tokens = state.tokens.filter((token) => { if (token.type === 'html_block' || token.type === 'html_inline') { return !token.content.trim().startsWith('<!--'); } return true; }); }); const markdownString = ` # Heading <!-- This is a comment --> Content here. <div>This HTML block remains</div> `; console.log(md.render(markdownString)); ``` [[Blog3]] での実装は以下のようになった。 https://github.com/tokuhirom/blog3/pull/825/commits/0339b38cb70b8e793debf77dd4946c88faac141a --- と、思ったけどいま RSS の description には markdown をそのままのせているので、おかしなことになる。 よって、HTML を text に戻したものを description に載せることにした。 [html-to-text](https://www.npmjs.com/package/html-to-text) を使えば簡単にできた。 https://github.com/tokuhirom/blog3/pull/826

Blog3 の公開、非公開エントリの切り替え

confirm すらなく切り替えられてしまうので、誤タップにより想定してないエントリが公開されてしまっていた。 元々、公開されたら困るようなことはブログシステムに登録していないので良いんだけど。。 単純にメモ的に使ってて、主にネタバレありのメモとか書いてる途中のエントリが非公開エントリになっているので、間違って公開するのは良くないので、confirm を入れるようにした。 https://github.com/tokuhirom/blog3/pull/824

xmlbuilder2とCDATAとこのブログのRSS

@hsbt さんに指摘頂いたのだが、当サイトの RSS 2.0 の content:encoded が壊れていたようだ。 [[ChatGPT]] が生成したコードを使っていたのだが、それが失敗だった様で。。 https://stackoverflow.com/questions/53238406/unable-to-create-cdata-section-in-xml-using-xmlbuilder-node-js-module に書いてあるように、.dat メソッドを使うように変えて解決。 https://github.com/tokuhirom/blog3/pull/823

2025年に読んだ本

[[BOOX Palma2]] で読むのメイン。 今年は新書、小説などふくめていろいろ読みたい。 - [[本好きの下剋上]]

2024年に買ってよかったもの

# スマホっぽいもの ## [[BOOX Palma 2]] [asin:B0DNVYNZ2M:detail] スマホサイズの[[電子ペーパー]]端末。年末年始の読書に大活躍。ふとした瞬間にスッと取り出して本が読めるのが最高。持っていくかどうかで悩まずにポケットに常に入れておける幸せよ。 ## [[Pixel 9 Pro Fold Pro]] [[Google]] が出してる Foldable 端末の。漫画を効率よく読むことを最重視して、最近は Foldable 一択。Galaxy Z Fold から Pixel 系に。Galaxy は良い端末だけど使わない Samsung アプリが多い上に消せないのがちょっとストレスではあったので。。それが無いのは嬉しいな、と。。 本当は開いたときにすぐに見開きで漫画が読めるといいんだけど。。Kindle 側の最適化に期待したいところではある。 ケースはこれ。 [asin:B0DLB1J8BF:detail] # ウェアラブルデバイス ## [[Xiaomi Smart Band 9]] [asin:B0DK6ZC5ZC:detail] 睡眠時間を計測したい、という一点でこれ。何世代か前のやつも持ってたはずだったけど、、なんか見当たらないので購入。。 そんなに高くないのと、毎日充電しなくても睡眠時間が計測できるというのが良い。 # 子ども向け [[New Amazon Fire HD 8 キッズモデル (8インチ) ブルー / 3GB RAM (2024年発売)]] 元々あったんだけど、下の子用に追加購入。ある程度ペアレンタルコントロールできつつ、遊べるのでなにかと便利。 # その他のもの ## [[ミズノ WORK 安全靴用 靴下]] [asin:B0CR1KG5N3:detail] なんか安全靴用ということだけど、普通にはいてる。涼しくていいです。 ## [[リズム(RHYTHM) 掛け時計]] [asin:B00Y7RG9A2:detail] 見やすい壁掛け時計が欲しかったので購入。ゲームをやってるときにモニターの上に時計があると便利!

Bluesky のポストを github actions で取得して保存する bsky-to-markdown を公開した

https://github.com/tokuhirom/bsky-to-markdown [[rss-to-twitter]] と同様の発想で rss からデータをとってきて github に保存するということも可能かもしれない。 1. [[github actions]] で cron 実行する。 2. bluesky の rss を取得する 3. 取得した rss をパースする 4. 各エントリを foreach する * エントリの日付のファイルを開く(なければ作る) * 202412.md のようなフォーマットとする。 * markdown の表の一行のようなフォーマットを 1 エントリとする * URL を重複排除キーとして、上書きしていく。 * git add して、変更されたファイルをすべて書き込んでいく。 この方法で [[bluesky]] の投稿もすべて記録しておくことができる。 お金はかからない。最高。 github actions は nodejs なら docker image 使わなくて( ・∀・)イイ!!ので、実装言語は nodejs とする。まずは nodejs のスクリプトを実装しよう。 [azu/rss-to-twitter](https://github.com/azu/rss-to-twitter) で使われていた [gh-actions-template](https://github.com/technote-space/gh-actions-template) をテンプレートとしてプロジェクトを開始してみようかなと思った。が、ちょっといろいろと設定が入りすぎてて理解が大変そうだ。久々の github actions なのでイチから実装することとする。そのほうが結局理解が早そう。 [rss-parser](https://www.npmjs.com/package/rss-parser) を使って rss をパースすることにしてみる。他に良い物があるのかもしれないが、chatgpt がおすすめしてきたので一旦これで。 - esbuild - vitest - prettier とか、割と使い慣れてる技術スタックで実装していく。 実際、使うには以下のようにすれば良い。簡単ね。 ``` name: Bluesky to Markdown on: schedule: - cron: "*/15 * * * *" workflow_dispatch: permissions: contents: write jobs: take-logs: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - uses: tokuhirom/bsky-to-markdown@v1 with: rss_url: "https://bsky.app/profile/did:plc:lxhl5eomhtxsraduecf3n6p3/rss" - name: Push built files run: | git config user.name "GitHub Actions" git config user.email "[email protected]" git add logs/ if ! git diff --cached --quiet; then git commit -m "Add built files" git push origin HEAD else echo "No changes to commit" ``` 実際に動かしてみると以下のようになる。 https://github.com/tokuhirom/bsky-logs/blob/main/logs/202412.md これで、[[Twilog]] 的なことができるようになりました。 本当は RSS じゃなくて API を使うようにしたほうが画像とかも取れていいかもだけど、まぁ一旦これで僕の要望は満たされた感じある。

shopt: globstar: invalid shell option name

https://stackoverflow.com/questions/55066992/mac-vscode-bash-shopt-globstar-invalid-shell-option-name ``` /Users/tokuhirom/.bashrc: line 10: shopt: globstar: invalid shell option name ``` というエラーが出た。 ぐぐってみると、Mac に入っている bash がめっちゃ古いというだけだった。 ``` $ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin24) Copyright (C) 2007 Free Software Foundation, Inc. ``` globstar は [[bash]] 4.0 以後。~~Macbook Pro 13-inch, 2019 を使っている結果か。。~~ [[GPL3]] を[[Apple]] が嫌ってるからじゃないかとのこと https://x.com/sora_h/status/1873884563824664665?t=vy5P52SoViySQ-fgHtpsNg&s=19 Bash 4.0 が出たのは February 20, 2009 なので、さすがに、という感じもしつつ。 `brew install bash` して最新の bash を入れて解決。 ``` $ bash --version GNU bash, version 5.2.37(1)-release (x86_64-apple-darwin23.4.0) Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ``` 最新!

SECOND BRAIN(セカンドブレイン) 時間に追われない「知的生産術」

![Image](https://blog-attachments.64p.org/1735516386161-image.png) [asin:B0BSWZ9PZL:detail] 長らく積んでて、20241229 読み始めて読み終わった。後半は流し読み。 Amazon のレビューが割れてるのもまぁわかるな〜って感じ。この手の本を読んでる人からすると新しい知見は割と少なくて、とはいえこの手の本を初めて読む人には知見多そうだなぁ、という。 いわゆる パーソナルナレッジマネジメント([[PKM]]) についての本。ということなのだけど。 > マイクロソフト社の研究では、アメリカの平均的な社員は、行方不明のメモやアイテム、ファイル探しに年間 76 時間を費やしています > インターナショナルデーターコーポレイションのレポートでは、典型的な知的労働者(ナレッジ・ワーカー)は、1日の労働時間のうち 26 パーセントを、さまざまなシステムに分散された情報を探して一元化するのに使っているといいます というのはちょっと面白かった。なんかそんなことに時間使ってるのねえ、と。 著者は PKM ツールとしての要件を以下のようにしている。 - ① マルチメディアであること - ② 形式張っていない - ③ オープンエンド(制限のない自由形式) https://www.buildingasecondbrain.com/ が著者のサイトだそうなので、興味ある人は読んでみるといいかもしれない。 [[セカンドブレイン]] の用途を以下の3つと定義している。 - 記憶の補助 - アイデアを結びつける - 新しいものをつくり出す あと、この本の中で提唱されている概念で面白いかなぁと思ったのは CODE。 - キャプチャー(Capture) - オーガナイズ(Organize) - ディスティル(Distill) - エクスプレス(Express) の頭文字を取ったものなのだけど。Distill に重きをおいてるのはちょっとおもしろいかも。既存のメモに対して重要部分をハイライトしたり、[[エグゼクティブサマリー]] を作ったりすることを大事にしているようだ。 あとは [[PARA]] のルールというのも初めて見たかも。 「情報の4つのカテゴリー」( P =プロジェクト、 A =エリア、 R =リソース、 A =アーカイブ)に分類してメモを保存していくのだそうで。 [[GTD]] 的といえばそうかも知れない。得てして、日本で流行っているメモ術って、分類するな!!!!! っていうのが多いのだけどこの本では分類してフォルダ分けすることを推奨していて、そこはちょっと目新しかった。 CODE

WezTerm

ターミナルアプリ。[[ghostty]] や [[iTerm2]] などもちょこちょこ触ってみたものの、WezTerm が一番しっくりくる。 [[lua]] で設定書けるのもよい。 2024年現在、使ってる設定は以下のような感じ。ほんのちょっとの設定という感じ。 ```lua local wezterm = require 'wezterm'; return { -- font = wezterm.font("Cica"), -- 自分の好きなフォントいれる use_ime = true, font_size = 14.0, -- https://wezfurlong.org/wezterm/colorschemes/index.html color_scheme = "OneHalfDark", -- hide_tab_bar_if_only_one_tab = true, -- adjust_window_size_when_changing_font_size = false, -- show underline for link -- https://github.com/wez/wezterm/issues/2496 selection_word_boundary = " \t\n{}[]()<>\"'`,;:=", mouse_bindings = { -- Default behavior is to follow open links. Disable, just select text. {event={Up={streak=1, button="Left"}}, mods="NONE", action=wezterm.action.CompleteSelection("PrimarySelection")}, -- and make CTRL-Click open hyperlinks (even when mouse reporting) {event={Up={streak=1, button="Left"}}, mods="CTRL", action="OpenLinkAtMouseCursor", mouse_reporting=true}, {event={Up={streak=1, button="Left"}}, mods="CTRL", action="OpenLinkAtMouseCursor"}, -- Since we capture the 'Up' event, Disable 'Down' of ctrl-click to avoid programs from receiving it {event={Down={streak=1, button="Left"}}, mods="CTRL", action="Nop", mouse_reporting=true}, }, } ``` マウス周りの設定がおしゃれポイントっぽい。どこかから拾ってきた設定っぽいけど。

rss-to-twitter

https://efcl.info/2023/05/28/rss-to-twitter/ [[blog3]] でせっかくブログを書いたとて、読んでもらわなければしょうがない。 前は IFTTT で twitter にポストさせていたのだが、IFTTT への twitter へのポストはいまや有料となった。 そこで、azu さんが開発した rss-to-twitter を使って rss から twitter にポストさせることにした。 pubDate が過去15分以内のものをポストするという仕様になっているようだ。 で、問題は [[blog3]] では pubDate という概念がないってこと。 [[blog3]] は entry table の created_at を pubDate としているが、これはエントリが作成された日時であって公開された日時ではない。だから、実際に feed に乗ったタイミングではすでに 15分をとっくに経過しているということになる。 これは微妙なので、普通に pubDate を実装するのが必要だろう。 [[Blog3 に pubDate を実装する]] をやって、ちゃんとうごくようになった。

Blog3 に pubDate を実装する

[[rss-to-twitter]] を使うために [[Blog3]] に pubDate という概念を実装していく。 今までは created_at を ATOM feed の pubDate に埋めていた。実際には下書き状態で書いていくので create_at と pubDate の乖離があったのだが、フィードリーダーで読む分には困らんだろということで気にしていなかった。 [[rss-to-twitter]] ではこのカラムをつかって重複排除することになるのでちゃんとした値を入れる必要が出てきた。 本来実装すべきものなのでちゃんと実装する気にやっとなったというワケ。 まずは alter をして、カラムを追加する。 ```mysql alter table entry add published_at datetime DEFAULT NULL after format; alter table entry add index published_at (published_at); ``` 次に、既存のエントリに対して埋めていく。もはや初回の publish date などわからないんで、、公開されているエントリにたいして created_at を埋めていく。 ```mysql update entry set published_at=created_at where visibility='public' and published_at is null; ``` トリガーで今後は埋めるようにしても良いのだが、MariaDB のトリガーは後々存在忘れてめんどくさいことになるかもしれないので普通にアプリケーションコードで実現していく。 トリガーで実装するほうが簡単だなぁと思ったのだけど、同様の処理を [[github copilot]] に実装させたらできたので、別にコードで実装すれば良いなとなった。 トップページの表示とかも published_at 順に変えて完成。 Pull-request を出した。[[Visual Studio Code]] だとコミットメッセージを自動生成して auto-merge 状態で PR を出すっていうのが簡単にできるんで個人開発が捗る。。 https://github.com/tokuhirom/blog3/pull/810 というわけで完成。

落語家の本音

[asin:4022520221:detail] [[BOOX Palma 2]] で読了。 昭和の大名人から現代の落語家までのインタビューが詰まっててとても良い本でした。 昭和の大名人のインタビューとか本って結構読んだんだけど、最近の人の話ってあんま読む機会がないので新鮮。

Ghosttyを試していく

https://github.com/ghostty-org/ghostty mitchellh氏が一から作ったということで、注目のターミナルエミュレータである Ghostty が出たので試す。 Mac だったら `brew install ghostty` で普通にインストールできる。 ちょっと使ってみた感じ、[[wezterm]] とそんなに変わらないので移行するメリットは感じられなかった。[[iTerm2]] 使ってる人だったら、使ってみると良いと思う。 メリットとしてはアイコンが可愛いっていうのはあるかも。 Ctrl-m を押したときに制御コードが入ってしまうという問題があるようだ。 まぁこれはすぐ治りそう。 ![Image](https://blog-attachments.64p.org/1735436164094-image.png) 個人的には wezterm のママでいいなぁという結論となった。

BOOX Palma 2 を購入

[asin:B0DNVYNZ2M:detail] ![Image](https://blog-attachments.64p.org/1735394083077-image.png) 2024年12月28日に到着。SKT の公式ストアで購入しました。 一言でいうと **ポケットに入る電子ペーパー端末**。 [[BOOX Palma 2]] をなんで買ったかというと、夜寝る前にスマホ見たりとか、夜中に目がさめたときにスマホ見たりすると目が冴えちゃうみたいなのがあるんで。。 というのと、普通に読書時間を確保しようと思うとスキマ時間を活用したいわけだけど、現実的には Kindle Paperwhite とかだと常に携行するのは難しいという問題があり。その点、BOOX Palma 2 であれば、ポケットに常に入れておけるので良い。普通に文庫をポケットにいれてる感覚に近いです。値段はちょっと高めだけど、スキマ時間での読書が捗ると思うと安い。 Android 13 が動作します。色々アプリ動かせるし、思ったより動く。が、結局は SIM も入らないってのもあり、動かすアプリは最小限。電池もちよくしたいのもあり。 BOOX Palma 1 との違いは指紋認証と Anrdoid のバージョンぐらいらしいです。なお、指紋認証を DIS ってる記事がちらほらあるんだけど、実際あんま精度は高くないです。普通のスマホでこんなに認証失敗することはないと思う。。が、まぁ無いよりはいいかなと思う。BOOX Palma 1 のほうが安いので、1 買うというのも悪くはないのかもしれない。が、今更 Android 11 の端末買うのはリスクではある。。微妙なところ。 # 惜しいところ 残念なところとしては、防水じゃないってところと SIM が刺さらないってことかな。 風呂に持っていける程度の防水があると理想的ではある。が、別に普通のスマホが防水なのでそれを持っていけばいいという話ではありつつ。 eSIM は刺さったほうが良いとは思いつつ、読書に集中できる気もするんでまぁそんなに困ってない。スマホからホットスポットすればいいし。 # 使うアプリ 電池持ちを良くしたいのもあり、そもそも電子ペーパーだからというのもあってあんまりたくさんアプリを入れる予定はない。 そもそもモノクロだし、 SIM が刺さらないのと GPS がないとか制約もあるので、使い物にならないアプリも多い。 ## [[GBoard]] 日本語入力するために。別にそんなに日本語入力する予定はないんだけど一応。 ## Amazon Kindle やっぱり、Amazon Kindle で小説、新書、などを読むのが主な用途になってくるので、これはいれる。 音量ボタンでページ送りとかもちゃんと動く。 BOOX Palma 2 をスリープから戻すと Kindle が終了しちゃうので、スマートボタン二連打で Kindle を起動するようにしてる。。これ、終了しないように設定出来ないかなぁ。 ## Bluesky SNS を一種類だけ入れておこうかなぁと。 寝る前に X 読むとイライラするので Bluesky にした。 ## Slack なんか、寝る前でも見るので。。[[soozy]] slack ぐらいしかもう見てないんだけど。 1年に一回ぐらい [[yoichiro]] slack も見てます。 ## [[Pocket]] miyagawa san が [[Instapaper]] 使うと便利っぽい感じを出してたので入れたんだけど、なんか chrome 拡張がうまく動かなかったので [[Pocket]] にした。 ## [[読書尚友]] 青空文庫リーダー。使うかなぁ、とおもって入れてみた。使うかは謎! # 一旦入れてみたけど抜いたもの ## YouTube 一応見れる。思ったよりは見れる。が、5分たつと電源が切れるので微妙かも。この設定は変えられるけど、電子ブックリーダーとしては5分で切れたほうがいいので微妙なところ。 # まとめ 使い始めて2日しかたってないので、まだまだ評価途中なのだが、ファーストインプレッションとしてはこんな感じ。

Blog3 の DB 移行(DigitalOcean から さくらのエンハンスドデータベース へ)

このブログをさくらのエンハンスドデータベースに移行する。さくらのエンハンスドデータベースは MariaDB なのだけど、Labs 機能なので無料なのが良い。どうせ多少落ちてもいいし、バックアップは mysqldump したものを暗号化してさくらのオブジェクトストレージにアップロードするようにしたのでデータが失われるようなこともあるまい。 [[DigitalOcean]] から mysqldump して mysql コマンドで [[さくらのクラウド]] の方に入れていく。 インポート先は MariaDB であることに留意が必要。 ``` mysql> select version(); +---------------------+ | version() | +---------------------+ | 10.11.2-MariaDB-log | +---------------------+ 1 row in set (0.03 sec) ``` ``` ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, BINLOG ADMIN privilege(s) for this operation ``` というエラーが出た。 [[GTID]] 関連の権限が足りていないようなので権限を調整する。 mysqldump に `--set-gtid-purged=OFF` をつけることで解決する。 See https://dev.mysql.com/doc/refman/8.0/en/replication-multi-source-provision-replica.html 次は以下のようなエラーが出てきた。 ``` ERROR 1128 (HY000) at line 25: Function 'ngram' is not defined ``` FTS 周りの問題が出てきたようだ。 ```shell perl -pe 's/WITH PARSER `ngram`//;s/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' ~/Documents/20241228-blogbackup.sql ``` とかして削除すれば良さそう。 ということで、移行完了。 コンピューティングノードは DigitalOcean のシンガポールのデータセンターなので接続が遅い。 ので、コンピューティングノードも国内に移動させたい。

obsidian-2hop-links-plugin

https://github.com/tokuhirom/obsidian-2hop-links-plugin Obsidian に Scrapbox のような 2hop link を追加するプラグイン。 もはや作者の @tokuhirom が [[Obsidian]] を使っていないためメンテされていない。。 別の作者の方による [obsidian-2hop-links-plus](https://github.com/L7Cy/obsidian-2hop-links-plus) があるのでこっちを使うのがおすすめ。

Sveltekit

[[Svelte]] をベースにしたウェブフレームワーク。 サーバーサイドとクライアントサイドを両方とも [[TypeScript]] でかけて便利。 サーバーサイドとクライアントサイドの連携についてごちゃごちゃ考えなくていいのが楽。 adapter-node を使うと、サーバーサイドを node で動かせて良い。 セッションの管理とかはないので、そういう用途には向いてないかも。サードパーティのライブラリとかはいくつかあるけれど。 僕の [[Blog3]] では、現在 Sveltekit を採用してる。

Obsidian

https://obsidian.md/ ノートテイキングアプリの一つ。 プラグインが豊富なのが魅力。国内外で人気がある。 Commerical Use の場合だと有料ライセンスが必要なことに注意。 昔はこれをメインで使っていたが、[[NeoJot]] をメインで使うように変更してしまった。 過去には [[obsidian-2hop-links-plugin]] を作ったりしていた。