スキップしてメイン コンテンツに移動

投稿

注目の投稿

Vim のテキストオブジェクトと surround.vim で効率よく入力

Vim のテキストオブジェクトと surround.vim で効率よく入力 これは Vim 駅伝 の 13 本目の記事です。 テキストオブジェクトとは 皆さんは、テキストオブジェクトを活用しているでしょうか。 私は、特に HTML を書く時にテキストオブジェクトを活用しています。 テキストオブジェクトは、Vim7 から導入された新しい概念であり、記号などで囲まれたテキストをオブジェクトとして扱うことができる、Vim の機能です。 具体的には、カッコやダブルクオーテーションやタグ等で囲まれているテキストの削除、コピー、変更を簡単に行なう事が出来るようになります。 実際にテキストオブジェクトを使う場面 では、実例を考えてみましょう 例1)記号で囲われたテキストの中身を削除する 例えば、下記のようなコードがあったとします。 function (arg1,arg2,arg3) { } (arg1,arg2,arg3)と書かれた所を一気に削除したい事がありますよね。 通常の削除処理では dwdwdwdw と連打して消すとか、 5dw で消すというやり方が思い浮かぶかもしれませんが、テキストオブジェクトの場合、下記の操作で削除出来ます。 di( または di) 実際に、上記コードをコピペして、やってみてください。 ()内であればどこででもこの操作は有効です。 同じような例として const str = "Hello, World"; のように、ダブルクオーテーションで囲まれた文字列を削除したい場合は、 di" で削除する事が出来ます。 例2)記号で囲われたテキストの中身を変更する 例えば、下記のようなコードがあったとします。 function (arg1,arg2,arg3) { } (arg1,arg2,arg3)と書かれた所を一気に変更したい事がありますよね(デジャブかな?)。 そんな場合、下記の操作で変更出来ます。 ci( と入力すると、()の内側を消して、入力モードになります。 そのままタイプすれば、中身を変更することが出来ます。 同じような例として <h1>sample title</h1> のように、タグで囲まれた文字列を変更したい場合は、 cit と入力すると、
最近の投稿

帰宅した時に、Sesami4 を自動解錠するよう IFTTT で操作する

Sesami4 を IFTTT で操作する 先日、スマートロックの Sesami4 を購入した 。 使い始めて 1 ヶ月ちょいになり、不満点が出てきた。 手ぶらで解錠がロクに効かない Android のウィジェットが常時表示はウザい オートロックを有効にしてると締め出される(当たり前だよなぁ!?) と言った感じ。 この中では特に手ぶらで解錠がロクに効かないのには相当不満があった。 原因はシンプルで、BLE(Bluetooth Low Energy)が上手く動作していなかった。 観察した結果だが、動作する時はちゃんと動作するが、ダメな時はとことんダメ。 Sesami の作り込みが甘いのか、純粋に Android の反応が悪いだけなのか、どちらなのか判断は付けられない。 その両方である可能性もあるが、いずれにせよこれでは快適な生活が送れない。 Sesami は API を公開しているので、それを使ってリモートコントロールする事にした。 あ、一応 Sesami の WiFi モジュール は導入している前提。 これがないと今回の Tips は使えないので、気をつけるように。 今回は スマートロックのセサミをさらに便利にする(アレクサからパスコードレスで解錠&オートロック化) の記事をそのままパクってるだけなので、その記事を読めば概ね同じことが出来る。 Sesami API キー取得 公式ページ にアクセスし、メールアドレスを入力する。 認証コードが送られてくるので、それを入力すると API 取得画面が表示される。 スマホアプリの「このセサミの鍵をシェア」から QR コードのスクリーンショットを撮って、API 取得画面にアップロードする。 そうする事で、デバイスの UUID と SecretKey が取得出来る。 API キー デバイスの UUID デバイスの SecretKey GAS のエンドポイント認証用のハッシュ値を用意する 下記のコマンドを実行して、認証用ハッシュ値を取得する。 任意のパスワードは、IFTTT との連携に使用するので、メモしておく事 $ echo -n '任意のパスワード' | shasum -a 512 自分は WSL2 上で実行して取得した。 SHA512 Onl

WSL2にfishを導入した

WSL2にfishを導入した 最近、WSL2をカスタマイズするのにハマっている。 カスタマイズを始めると、色々とやりたくなるのは開発環境構築あるあるで、以前から気になっていた fish を導入することにした。 fish のインストール sudo apt install -y fish aptで入れるだけなので、簡単。 chsh which fishでパスを確認し、 chsh を実行する。 自分の場合は、「/usr/bin/fish」にインストールされていた。 fisher のインストール fishのプラグインマネージャーにはfisherを採用 curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher これもワンライナーでインストール出来るので楽ちん。 fisherプラグインを入れる テーマ まず、テーマを入れる。 fisher install oh-my-fish/theme-bobthefish これで、いい感じのテーマが入る。 今使っているLightlineライクなテーマで個人的には気にいっている。 もし、文字化けするようであれば、weztermのフォントを変えればOK。 weztermの設定に関しては、 前の記事 に書いてある。 z 補完を色々とやってくれるzも入れた。 fisher install jethrokuan/z 「z ディレクトリ名」を入力した後、TABキーで補完してエンター押せば一発移動してくれるので超便利。 オススメ。 他にも何かオススメのプラグインがあったら教えてください。 環境変数を適用する このままだと、何故かdenoを認識してくれなかったので、環境変数を適用する。 ファイルの場所は、 ~/.config/fish/config.fish 。 if status is-interactive # Commands to run in interactive sessions can go here # deno set -x DENO_INSTALL

Windows11 on WSL2 + wezterm + Neovim = 最強開発環境

Windows11 on WSL2 + wezterm + Neovim = 最強開発環境 これは、恥を忍んで書いている。 以下の点を守れば、Neovim使いにとって最強の開発環境を手に入れることができる。 開発用ディレクトリをWSL内に入れる Terminalをweztermにする wezterm内でNeovimを使う 開発用ディレクトリの位置 さて、まずは開発用ディレクトリの位置に関してだが、これはWSL内に入れると非常に快適に動作してくれる。 何を当たり前の事をと思われるかもしれないが、案外気が付かずに開発している人もいるかもしれないので、テキスト化する。 実は、自分は、 /mnt/d/hogehoge のようなディレクトリ下に開発用ディレクトリを置いていた(今もいくつか置いてある)。 これで問題なく開発できるプロジェクトもあるが、WSL経由でやろうとすると 死ぬほど遅い 開発体験になる。 もう既に識者の方は気がついていると思うが、/mnt/cや/mnt/d以下のアクセスはWindows経由でのアクセスになる。つまり、wsl→仮想ネットワーク→Windowsという遠回りをしてファイルにアクセスしているのと同義であった。 これは、非常に遅い開発体験になっても仕方がない。 自分は、開発ディレクトリを /home/ユーザ名/develop 以下に移動して、めちゃくちゃ快適な開発体験が出来るようになった。 yarn installがやけに遅かったり、yarn devでの起動が異様に遅かったのは、開発ディレクトリの位置が悪かったからという非常にお粗末な環境設定のせいだった。 もし、WSLで開発しようと思っている人は、ちゃんとWSL内にファイルを置いて開発する事。 試してないけれど、シンボリックリンクで/mnt/cとか/mnt/dに繋ぐと同じように遅延が発生すると思われるので、絶対辞めるように。 ちなみに、この情報は英語圏には大量に出回っており、既知の事実として知れ渡っている。 なんてこったい。 Weztermの設定 Cross Platformで使えるWeztermが非常に良い。 自分はとりあえず最小構成で使うようにしている。 local wezterm = require 'wezterm' local act = wez

Next.js でのハマりどころ

Next.js でのハマりどころ 自分用メモの羅列 firebase用の.envファイルのパラメータ命名 NEXT_PUBLIC_FIREBASE_API_KEY="" NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN="" NEXT_PUBLIC_FIREBASE_PROJECT_ID="" NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET="" NEXT_PUBLIC_FIREBASE_MESSAGE_SENDER_ID="" NEXT_PUBLIC_FIREBASE_APP_ID="" NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID="" 先頭のprefixに必ず NEXT_PUBLIC_ をつける事。これをつけないと、Next.js内で参照する事ができない。 process.env.~でアクセスするコードを書くと分かるが、コマンド実行しているコンソール内にはきちんと設定した環境変数が出力されるが、ブラウザのコンソール内にはundefinedが出てくる。 こういう謎のprefixをつけなきゃ見えないみたいな処理が入ってるのは、フレームワークあるあるの罠である。 ロード時間に死ぬほど時間が掛かる プロジェクトに recharts を追加してからyarn devしたら、読み込みに死ぬほど時間が掛かるようになった。 具体的には、1.8Mのjsファイルを読み込むのに1分ちょい掛かるというありえない開発体験をする事に。 「nextjs development loading very slow」みたいなキーワードで検索すると、検索トップに Super slow page load times in development environment みたいなgithub discussionページが引っかかった。 これをばーっと眺めていると、どうやらGoogle ChromeのPWA用キャッシュをクリアすると早くなるらしい。 半信半疑で、Application→Application→Storage→Clear site dataをクリックしたら、見事にロード時間が改善

プロジェクト・ヘイルメアリーを読んだ

プロジェクト・ヘイルメアリーを読んだ アンディ・ウィアーの長編、プロジェクト・ヘイルメアリーを読んだ。 面白かった。 それに尽きる。 この作品の凄さ とあるレビューでは、科学的な嘘がたったの2つ程となっていたが、個人的には3個だったかなと思っている。 厳密に追求するともっとたくさん出てくるけれど、それに関しては省略。 いわゆる ハードSF という形を取っていて、SFうるさいおじさんをしっかり黙らせる構成になっている。 また、 エンタメ小説 の側面が非常に強く、難しい本を読んでいるというイメージは一切ない。語り口が軽妙で、難しい話もなるべく少なくなっている。 ある程度しっかり勉強している人なら、お、ちゃんと計算してるって分かる描写と、ど素人でも理解できる表現でそれをまとめているのは、流石といえる。 主人公の性格も救いだ。 火星の人 の時もそうだったが、主人公の楽観的な性格が物語の大変さをかなり軽減している。 もし、陰鬱な性格の主人公だったらこの作品は失敗していただろう。 この作品のダメな所 手放しで全部褒めてもいいが、ダメな所が無いわけでもない。 例えば、ピンチに次ぐピンチが続く描写があるのだが、(ある意味)単調に見えてしまう。何もかも上手くいくように見せかけて、大失敗をしてそれをさらに頑張ってしのぐみたいな展開が続く。 これは火星の人の時でもそうだったが、上手く行っている時ほどその後に大失敗が続く。言ってしまえばワンパターンの展開なのだ。 もちろん、ピンチの描写が非常に多彩なのでそれを「ワンパターン」という乱暴な言葉でくくる事が大変失礼だと思うが、あえてそうさせてもらった。これは、アンディ・ウィアーの癖のようなものかもしれない。 あと、たまに意味不明な文章が出てくる事がある。ある人は、誤訳だと指摘していて、なるほどと思った。 僕は原文を全部読んだわけではないので、誤訳がどれだけ含まれているか指摘はできないのだが、正確性が気になる人にとっては致命的な部分になるかもしれない。 一部そういう箇所があるだけで、全体は非常に読みやすく翻訳されているので、この翻訳がダメだったという気は毛頭ない。 総評 とても面白かった(小並感)。 ネタバレしたら面白さが全部半減するから、ほとんど書くことが無いのは確か。 息が詰まる様なピンチの連続から、最後の大

連城三紀彦の戻り川心中を読んだ

連城三紀彦の戻り川心中を読んだ 2023年初LooxUと初音ミクで行こう!は、ミステリ感想文から。 皆様こんにちは。あなたの隣に偏在するArc Cosineです。 さて、今更ながら連城三紀彦氏の戻り川心中を読みました。 以前から、傑作だという声は聴いていましたが、なかなか手を出せずにいました。 この正月休みで重い腰を上げて読み始めたのですが、すごいですね、これ。 収録されている短編は 藤の香 桔梗の宿 桐の柩 白蓮の寺 戻り川心中 の五編。どの作品も非常に色っぽい文体で、ミステリというよりかは純文学に近い感じを受けました。 表題作の戻り川心中が、対外評価も一番高い作品だと思うのですが、この中で一番ヤバかったのは 桔梗の宿 でした。 ネタバレになるのですが、桔梗の宿は日本人ならほとんど知ってる とある事件 が物語のトリックに使われていて、読後にはすぐに分かったのに、読んでいる最中は全くそんな気配を感じることができなかったのが、本当にすごかったです。 何よりも、ネタバラシの所に描かれている、匂い立つ色気に物凄く感動しました。 あー、そうそう、そうだよねー!と思いつつ、おいおいおいおい、お前かーい!という衝撃。 何のことか分からないかもしれませんが、書いている僕も良く分かっていません(笑)。 桔梗の宿作りは、男性よりも女性の方が絶対好みだなと思います。 男性はどちらかと言うと、桐の柩の方が好きなんじゃないでしょうか。 表題作の戻り川心中もかなりの意欲作且つ技巧作で、思いもよらないオチが用意されています。 古い作品ですが、今読んでも色褪せない魅力が詰まった作品です。 個人的なランキングとしては、 桔梗の宿 ≧ 戻り川心中 > 桐の柩 ≧ 藤の香 ≧ 白蓮の寺 という感じ。 どの作品も甲乙つけがたい傑作です。 なによりも、文体が良い。 もし、未読の方は、これをきっかけに読んでみるのはいかがでしょうか。