2023/12/03

NeovimをさらにLuaLuaさせた

あれから一年近い月日が経った。ひとたび完結を見た僕のinit.luaはその後も進化し続け、ずいぶんIDE的な出で立ちに変貌を遂げた。当初のサブ武器としての位置付けはどこへやら、今ではすっかり長剣の顔をして鞘に収まっている。電脳空間を切り開くデジタルロードアウトはえてして可変長であり、所有者の意向次第で自在に特性を変えられるのだ。本稿では新たに増えたプラグイン群を紹介する。 jaq-nvim いわゆるタスクランナー。書いたコードを即時に実行してくれる。国内では応用の幅広さからvim-quickrunがとりわけ有名だが、元がVim用のプラグインなのでNeovim特有のUIに対応していない惜しさがあった。jaq-nvimは逆にNeovimでしか動かない代わりにfloat windowで表示できる。 設定では実行したい言語のコマンドを指定するほか、ウインドウの枠や位置を自分の好みに決められる。どうせターミナル上にいるのだからタブを開くなり、tmuxのpaneで別途実行するなりすればいいという意見もあるが(僕も昔はそう思っていた)、多少なりともワンクッションの手間を減らせる効能は意外にあなどれない。以下に設定例を示す。 Read more

2023/11/26

fzfと仲良く

言わずと知れたあいまい検索ツールfzf。日々、Vimを通してよろしくやってきた。しかし、元を正せばそもそもfzfはターミナル上で使う代物ではなかったか? そこへいくと僕の.zshrcに記されしかの設定群はいかにも心もとない。たぶん最初の出会い方が悪かったのだろう。今から言う昔話はちょっと気が早い人たちには心当たりがあるかもしれない。 初めてfzfをインストールした状態で、おもむろにfzfと打つ。すると、なにやら景気よくパァーッとファイルの一覧が表示される。ウオーッ、なんだかすごそうだ、選択したら一体どうなるんだ、などと期待に胸を膨らませつつ任意のファイルを選ぶと……普通に相対パスが標準出力される。 Read more

2023/11/12

あるはずのバックアップが全部消えていた

自分だけは、と思っていても起きる時は起きる。いつまでもあると思うな親と金とバックアップ。Cloudflare R2にcronで毎日アップロードしていたMastodonインスタンスのデータベースが、いつの間にか全部消えていた。AP実装においてデータベースはすべてである。これをなくしたらもはや取り返しはつかない。 だからこそインスタンスの運営者はデータベースの保全に気を配る。わざわざオブジェクトストレージにアップロードしているのもサーバ本体の破損にデータベースが巻き込まれるのを防ぐためで、ローカルよりもクラウド上の方が安全との判断からだ。にも拘らず、ちょっとした行き違いが重なると瞬時に死の刃が首元まで迫ってくる。かつて僕が書いた自動化スクリプトの例を以下に記す。 Read more

2023/11/05

とりあえずnone-ls.nvimでよくないか? / null-ls.nvimの保守的代替

夏真っ盛りのある日、Neovimの超有名プラグインが爆発四散した。null-ls.nvimはLSPの規格に合わないLinterやFormatterを言語サーバのように動作させられる画期的なクライアントだった。ほぼコピペの設定で完結する簡便さは同プラグインを事実上のデファクトスタンダードの座に押し上げた。 しかし、そんな圧倒的権勢を誇るプラグインは驚くべきことにたった一人の開発者によって維持されていた。極度の多忙さゆえ彼がギブアップを宣言した瞬間、null-ls.nvimのリポジトリはたちまちアーカイブせしめられ、我々は否が応にでも事態を悟らざるをえなくなった。貢献に相応しい報酬を受け取れないのは誠に遺憾ながらOSS開発の宿痾である。 さて、こうして一つの偉大な仕事が終焉を迎えた。Neovim本体のアップデートや環境の変化次第でnull-ls.nvimは早晩動かなくなるだろう。ユーザたちは移行作業に取り掛かりはじめた。僕の周りでは競合プラグインのefm-langserverに乗り換える者が多い。あるいは、まったく別の新しいプラグインを試す者もいた。 Read more

2023/10/08

Nextcloudでなんかもう色々と所有する

時に単体のサービスでは奥深い機能が多すぎて使いきれなかったり、逆に賢くまとまりすぎていて連携力に乏しい場合がある。そんな状況下ではセルフホスト型でもあえて統合的なプロダクトの利用が検討される。Nextcloudはセルフホスト界の四天王――四天王のうちでどの位置かは人によるとしても――に相応しい強力な網羅性を持つ。 さしずめ、Google Workspaceのオープンソース版と言ったところか。ストレージがあり、フォトギャラリーがあり、カレンダーがあり、チャットがあり、オフィススイートがある。僕が知らないだけでたぶんもっと色々ある。それらを全部使うことも、一つか二つを選んで使うこともできる。 Read more

2023/10/01

MatrixでDiscord/Slackを所有する

先日のDiscordの障害は華金を電脳空間で過ごそうと決めていた人々を絶望の淵に叩き込んだ。きょうびオンラインゲームをやるとなったらボイスチャットはほぼ必須であり、とりわけDiscordは当該の分野で支配的な地位を占めている。ちなみに、僕は独りで黙々とCounter-Strike2のランクマッチを回していたので関係なかった。静謐。 しかし他に寄辺のない異常独身男性が集結せしDiscordサーバを運用している立場としては、一つのサービスの死がコミュニケーションの喪失を引き起こしかねない現状はまったく好ましくない。彼らは他のSNSをあまり使わない。以前から代替ツールを模索してはいたが、企業運営の類似サービスでは面白みに欠けるし、かといってセルフホスト型だと「そのためだけのアカウント」が余分に増えてしまう。なにしろ従来の形態ではサーバごとに別のアカウントを作らなければならないのだ。 Read more

2023/09/03

Forgejo+WoodpeckerでCI/CD環境を所有する

逆になにができないのか判らないほど多機能と化したGitHubだが、その機能性が仇となって限られた用途で使用するにはいささか煩雑な画面操作が増えたように思う。ghコマンドは確かに有用ではあるものの圧の強いUIと格闘するかCLIかの二択は少々極端なきらいが否めない。 そこで、自前の計算資源を持っている人間にはリモートリポジトリのセルフホスティングが検討される。世の中には絶対にissueやPRを受け付ける気がない雑多なコード片や、ごく個人的、ないしは見知った少人数のみのプロジェクトが存在する。そういった趣旨のリポジトリを管理するには、いっそGitHubよりもミニマルに設計されたサービスの方が快適に用を足せる見込みがある。 Read more

2023/08/26

MailuでWeb UI付きのメールサーバを所有する

初夏の頃にはこんなことを言っていたが、VPSの計算資源が余っているのでやはり自前でメールサーバを建てた。なにしろ幾多の艱難辛苦に晒された10年前と現在では状況がずいぶん違う。今やDockerが普及しており、手の行き届いたOSSが用意されており、培ってきたトラブルシューティングの知識が備わっている。躓いたらコンテナを破棄してやり直せばいい。サーバを建てるたび実行環境の至るところに引っかき傷を残していた過去とはもうおさらばだ。 MailuというOSSがある。メールサーバの構成要素が統合されていて全部よしなにやってくれる上にWeb UIまで付いてくるすごいやつだ。こんなのがあるんだったらVPSを契約している身でわざわざ他所に金を払っている場合ではない。こうして、僕は意気揚々と構築作業に乗り出したのだった。とはいえ相変わらずメールサーバは手強い。本稿ではDockerを利用したMailuの構築方法について記す。 ファイルの取得と編集 dockerおよびdocker-composeはすでに導入されているものとする。専用のユーザでホーム直下にディレクトリを作成した後は通常、docker-compose.ymlの雛形をコピペする形が典型的だが、MailuはWeb上のセットアップユーティリティでユーザの意図に適った設定ファイルを出力してくれる。これらのファイルはdocker-compose.ymlと.envファイルなのでいつでも編集できる。 Read more

©2011 Rikuoh Tsujitani | Fediverse | Keyoxide | RSS | 小説