なつねこメモ

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

Cloudflare Workers で GraphQL バックエンドを快適に開発したい

Cloudflare Workers で GraphQL バックエンドを構築する際、最初はサンプルなどから簡単に始められますが、実際の開発では「スキーマをコード内に書きたくない」「型安全性が欲しい」といった課題に直面します。 この記事では、Cloudflare Workers の制約の…

Contentful の GraphQL API でコンテンツの更新日時を取得したい

ハマったのでメモしておく。 更新日時は sys.publishedAt、公開日時は sys.firstPublishedAt を使う。 どちらも DateTime が返される。 query SomeQuery { articleCollection(limit: 1) { items { sys { id " このプロパティを使う!" publishedAt firstPubl…

Roslyn で ISymbol から SyntaxNode を得たい

みなさん Roslyn いじってますか? Roslyn(正式名称:.NET Compiler Platform)は、C# をはじめとする .NET 系言語のコンパイラであり、同時に強力なコード解析 API でもあります。JavaScript/TypeScript エコシステムでいえば、ESLint や Prettier のよう…

HonoX で Next.js PagesRouter の getStaticPaths をしたい

みなさん、HonoX はお使いでしょうか? HonoX は、手軽に SSR(Server-Side Rendering)や Island Architecture を試せる優秀なパッケージです。シンプルな API で現代的な Web アプリケーションを構築できるのが魅力ですね。 Next.js の getStaticPaths と…

SignalR のリアルタイム通信で 32KB 以上のパラメータを受信したい

C#

ASP.NET Core 版の WebSocket 実装である SignalR では、 C# 側で実装したメソッドを、 JavaScript フロントエンドから呼び出すことができます。 その際、例えばバイナリの Base64 String を送るなどでパラメータサイズが 32KB を超える場合、以下のようなエ…

続:Cloudflare Workers でも画像のメタデータを取得したい:PNG の iTXt 編

前回の記事では、Cloudflare Workers で EXIF/XMP データを取得する方法について解説しました。 tech.natsuneko.blog 今回は PNG ファイルに焦点を当て、iTXt チャンクに埋め込まれたメタデータを取得する方法を紹介します。 まず、 PNG ファイルには任意の…

Cloudflare Workers でも画像のメタデータを取得したい

例えばサーバーレスな環境で、非同期的に画像のメタデータを取得してごにょごにょしたいこと、ありませんか?わたしはあります。 今回は、Cloudflare Workers を使って、画像のメタデータを取得してみようと思います。 まず最初に思いつくのが、Node.js 用画…

hanko.io の Flow API を使ってユーザー登録を実現したい

hanko.io という ID プロバイダーがある。 Passkey ネイティブ対応で、 Passkey の他に SNS アカウントでの認証 (X はない)、 OTP での認証など様々な認証形式をサポートしている。比較的最近 MFA にも対応していた。 そんな Hanko だが、 Hanko による認証…

ShareLink で Preview をカスタムしたい場合、 subject/message も指定しないと共有先のアプリが受け取ってくれない

Swift では、 ShareLink を使うことで、簡単に共有メニューを作ることが出来ます。 しかし、テキストを共有したいが、プレビューは編集したいとき、次のように ShareLink を定義すると、共有先のアプリではアイテムを受け取ってくれません: ShareLink( item…

HStack の要素を Flexbox のようにうまいこと改行させたい

HStack に並べている要素を下の画像のように、上手いこと改行させたい (要素毎に改行させるのではなく、最後の要素のみ改行させたい) 場合のやり方。 SwiftUI の標準の HStack では上手いこと改行されないので、自分でコードを書くか、ライブラリを使う必要…