なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

違うファイル同士でも git diff で差分を表示したい

Git

Windows だと diff コマンドがそもそも入っていなかったり、オリジナルの diff コマンドのパラメータ覚えてなかったりで、 git diff の形式で差分が見たいケースがあるとき。 そういうときは、次のようにすると何の関係の無いファイル同士でも差分が見られる…

System.CommandLine の Handler で DI 使いつつ InvocationContext もほしい

C#

System.CommandLine という Microsoft による .NET のコマンドラインライブラリがあります。 これを使うと (一生プレビュー版ではあるものの) わりと簡単にコマンドラインアプリを作れるのですが、今回はそれについての記事です。 各サブコマンドを定義後、…

ATOK の契約を切り替えたい

ATOK お使いでしょうか。 Google IME よりは優秀だと思っていた時期もあったんですが、最近はそうでもないですね。 ところで、 ATOK にはいくつかの契約形態があります。例えば、 ATOK Passport プレミアムプラン (月額) ATOK Passport プレミアムプラン (年…

Unity で動的に UXML を生成・読み込みしたい

Unity で UXML を動的に生成したいことってありますよね?わたしはあります。 例えば、 UXML で記述できる HTML もどきは仕様が古すぎて、 HTML Living Standard っぽく記述した物をトランスパイルするとか......。 ということで、その方法のメモ。 とはいっ…

Cloudflare Pages で Preview Deployment にもドメインを割り当てたい

Cloudflare Pages 便利ですよね。 push するだけでビルドするのはよくありますが、そこから Cloudflare がもつ世界中のサーバーに投げてくれるのはとても良いです。 ところで、 Preview Deployment として反映されているものにもドメインを割り当てたいと思…

wait-on が Node.js 18 で動かない

先週は忙しすぎて死んでいた......。 ということで、本題の話。 Storybook を GitHub Actions で動かしたいとき、サンプルに npx wait-on tcp:6006 として他プロセスのサーバーが起動するのを待つ、というものがあるんですが、それが Node.js 18 だと一生終…

GitHub でシンタックスハイライトを任意の言語として表示させたい

GitHub で認識できないけど JSON の拡張である hujson を GitHub 上で表示されると、シンタックスハイライトが効きません。 でもこいつは JSON なので、 JSON として認識させて、かつシンタックスハイライトもして欲しい! という場合は、 .gitattributes を…

VictoriaMetrics + Grafana で SwitchBot で取得した温度・湿度を可視化したい

SwitchBot 、便利ですよね。 そこそこ安くて、かつ一応 SwitchBot にロックインされるということもないので、わたしも使っています。 ところで、 SwitchBot の温湿度計やプラグでは、 API 経由で各種値が取得できます。 今回はそれらを VictoriaMetrics とい…

Alpine Linux に Tailscale を入れたい

VPS へ SSH した~い!けど Cloudflare 通してるので生 IP だしたくないし覚えてもな~い! というときに便利かもしれない Tailscale を入れてみましょう。 ということで、インストールしていきましょう。 公式的にはスクリプトがあるんですが、 sudo じゃな…

Cloudflare Workers を使って Web ページを段階的に移行したい

Web サービスリニューアルしたいことってありますよね? ただ、一度に一気にリニューアルすると、想定していない不具合が出てきたり、今の運用どうするの?っていう問題があったりします。 そこで、 Cloudflare Workers を使って段階的に移行する方法を紹介…

GitHub の Label を一括で管理したい

嬉しいことにわたしが持っているいくつかのリポジトリについて、 Issue をちらほらたててもらえるのですが、どれがすでに見たものか、などが分からないことが出てきました。 そこで、ラベルでうまいこと管理しようと思ったのですが、個人でかなりの数のリポ…

Contentful に Rich Text データを API 経由で登録したい

海外の大手 CMS に Contentful があるんですが、 API ドキュメントがびみょーに分かりにくいのでメモ。 例えば、ある Entry に対してデータを作成したい場合、こんな感じでリクエストを投げてね、とあります。 import { createClient, Environment } from "c…

React で子コンポーネントのテキストのみを取り出したい

React で children で渡ってきた子コンポーネントのうち、テキスト部分だけ取り出したいこと、ありますよね? そういうときに便利なのが React Children Utilities です。 こんな感じで使えます。 import Children from "react-children-utilities"; type Pr…

Cloudflare Pages に PNPM + Astro なウェブサイトをデプロイしたい

Cloudflare Pages の Web UI から、 PNPM + Astro なウェブサイトをデプロイするぞ! ということで、やり方のメモ。 やり方は、リポジトリを接続した後、以下のように設定すれば良い。 ビルドコマンド: # pnpm のインストールと、依存のインストール&ビル…

Mobile Safari がクラッシュした理由をもうちょっとだけ詳しく記録したい

iOS で WebView を使っている場合、何らかの理由で WebView のプロセスが死んだ場合は webViewWebContentProcessDidTerminate が呼ばれるんですが、原因が分からず、なんとも困った感じになります。 ということで、頑張ってなんでクラッシュしたのかの大まか…

Contentful JavaScript SDK を TypeScript で使いたい

いまさら JavaScript なんて書けるか!ということで、 Contentful JavaScript SDK を TypeScript で使います。 まずはライブラリのインストール: $ pnpm add contentful いれたあと、以下のようにライブラリを定義すると良い。 import contentful from "con…

Wasabi から Cloudflare R2 へ移行する

このたびアップロードよりダウンロードのほうが多いであろうファイルについて、 Cloudflare R2 へ移行したので、その方法のメモ。 ただし、 S3 を使っているなら公式のマイグレーションツールを使った方がおそらく良いので、そちらを使うべし。 まずは、 Was…

Visual Studio Code のわたしが使っている便利な拡張機能

たまにはちょっと気分転換として、わたしの開発環境の紹介でも書いてみようかな、という気分だったので、 普段わたしが使っているテキストエディターである、 Visual Studio Code に入れている拡張機能について紹介しようと思います。 Programming Language …

うさみみハリケーンで特定のメモリパターンを検索したい

わたしは趣味で Blender のアドオンを作っているのですが、そのときにうさみみハリケーンでメモリの状態を確認して、そこからアドオンを作る、ということをやっています。 そこで、特定のバイト列が存在するかどうかを調べたいことがあるのですが、ちょっと…

macaron で Media Query を使いたい

最近ゼロランタイム CSS-in-JS を触っていることがあるのですが、今回はラクスさんのブログで紹介していた macaron についての記事です。 macaron は、 styled-components などの CSS-in-JS とは異なり、ビルド時に静的な CSS を吐き出すいわゆるゼロランタ…

Vue3 でも React でいう useImperativeHandle をしたい

React で、子コンポーネントの関数を何らかの理由で呼び出したい場合、 useImperativeHandle を使います。 import React, { useImperativeHandle } from "react"; const SomeComponent = React.forwardRef((props, ref) => { useImperativeHandle(ref, () =>…

Vue3 の setup 構文でも named export をしたい

公式ドキュメントにちらっと書いてはいるけど、 script setup を使っていても、 named export したい! ということでやり方。 <script lang="ts" setup> type Colors = (typeof COLORS)[number]; type Props = { color: Colors; }; defineProps<Props>(); </script> <script lang="ts"> const COLORS = ["red", "…

pybind11 で C++ から Python クラスのインスタンスを作成したい

pybind11 は C++ と Python とで良い感じにやり取りができる C++ ライブラリです。 少し前の記事の記事でも紹介したとおり、わりと使いやすいライブラリです。 ただ、絶妙にドキュメントが足りなかったりして困るケースがあるので、今回はそれの補完用のメモ…

macOS で 1Password 経由で SSH したい

macOS で 1Password 経由で SSH 接続したかったのですが、うまく行かなかったのでメモ。 基本的なやり方は、公式ドキュメントを参照: SSH agent | 1Password Developer 設定後、 ssh -T git@github.com とするが、一向に繋がらない。 エラーとしては以下の…

Cloudflare Tunnels の再設定を行いたい

だいぶ前に Cloudflare Tunnels でやっていたのをプレビュー用に Localhost のサーバーをインターネットに公開する手順を書いたのですが、 その後再設定するときの手順。 ただし、その後 Cloudflare Tunnels の設定方法が変わってマイグレーションする必要が…

Google の PageSpeed Insights で全スコア100点を取る

趣味で取りました。 サイト構成としては以下の通り: Next.js TailwindCSS Vercel 基本キャッシュは Vercel がうまいことやってくれているので、 Next.js だけパフォーマンスなり変えていく感じになります。 で、やったこととしては以下の通り。 lang=ja の…

CMakeLists.txt で Visual Studio の PostEventBuild を指定したい

最近 Visual Studio 以外でも C++ プロジェクト触れると便利よねーということで、 CMakeLists.txt から C++ プロジェクトを生成していることが多いです。 ただ、そのとき、おそらく Visual Studio に依存していると思う Post Build Event についてどうすれば…

JavaScript で value が undefined な key を取り除いたオブジェクトがほしい

JavaScript で、例えば以下のようなオブジェクトがあったとして、 const obj = { a: false, b: undefined, c: 0, d: "", }; value が undefined なキー、つまりは今回の場合は b を除いた、以下のようなオブジェクトが欲しいケースがある。 const obj = { a:…

Lefthook の pre-push イベントでブランチ名を受け取る

Git

Lefthook という Git Hook をうまいこと管理してくれる Golang 製ツールがあります。 メリットとしては、 Node.js に依存しない、つまりはランタイムが必要ないことがあげられ、また設定も lefthook.yml を記述するだけなので、簡単に使えるという特徴があり…

PNPM で Unsupported environment (bad pnpm and/or Node.js version) と言われるのでなんとかしたい

最近 PNPM を使っているんですが、 node -v が v18.12.1 とかを返しているにもかかわらず、 Node 14 には対応してないよ!って言われる。 それの解決方法。 基本的には、このコメントにあるとおりの作業をすれば治る。 NPM is (still?) not correctly identi…