Rubyを使って、psqlとメッセージを交換できるPostgreSQL風TCPサーバを作ってみた

PHPカンファレンス福岡2024のトークを見て、自分も同じようなRDBMSライクなTCPサーバを作ってみたくなりました。 PHPでデータベースを作ってみた by 富所 亮 | トーク | PHPカンファレンス福岡2024 #phpconfuk - fortee.jp PHPでデータベースを作ってみた/cr…

Apple Silicon + macOS Sequoia にて、 mise で Ruby 3.0 系をビルドしたら maybe_unused のBUILD FAILEDになったため、対応した

今まで Ruby のバージョン管理に rbenv を使っていました。 そんな中、RubyMine で mise がサポートされたことから、ためしに rbenv から乗り換えてみることにしました。 RubyMine 2024.1: Full Line Code Completion, New Terminal, Improved AI Assistant …

RubyのSocket.tcp_server_loopでechoサーバを作り、その通信を ngrepで確認してみた

Rubyで echo サーバを作ろうと思い調べたところ、 TCPServer クラスがありました。 class TCPServer (Ruby 3.3 リファレンスマニュアル) リファレンスマニュアルには echo サーバの実装が記載されていました。 もう少し調べてみたところ、RubyKaigi 2009 の…

書籍「Database Design and Implementation」の SimpleDB をベースに、必要最低限の機能を持つ RDBMS を Ruby で実装してみた

2024年はカンファレンスや個人ブログにて自作RDBMSの話をよく見かけたこともあり、昔からあった「いつかはRDBMSを作りたい」という気持ちがさらに高まった年でした。 カンファレンス Kaigi on Rails 2024 作って理解する RDBMSのしくみ | Kaigi on Rails 202…

mac で Rabbit 3.0.3 を使ったLTした時のメモ

最近、会社の合宿でLTをする機会がありました。 以前、Rabbitを使ってLTした時はとても便利だったため、今回もRabbitを使うことにしました。 Macにrabbitをインストールし、プレゼンテーマを自作してみた - メモ的な思考的な ただ、上記の自分の記事を参考に…

RubyのStringScannerを使って、文字列をスキャンしてみた

最近、Rubyで文字列の字句解析を行う機会がありました。 何を使えばよいか考えたときに、最初に思い浮かんだのが Regexp#match でした。 class String (Ruby 3.3 リファレンスマニュアル) 他にもないか調べたところ、文字列スキャナクラス StringScanner が…

Cloudflare Pages + TanStack Router + TanStack Query + CSS Grid Layout で、りんごの系譜図を作ってみた

以前、食べたりんごをグラフ化するアプリを作りました。 Cloudflare Pages・Workers + Hono + React + Chart.js で食べたリンゴの割合をグラフ化してみた - メモ的な思考的な これで「今までどれくらい食べてきたのか」を知ることができ、とても便利です。 …

親子情報を持つテーブルとSQLの共通テーブル式(CTE)を使って、曽祖父母までの祖先を取得する

以前、SQLのCTEを使って階層構造を持つデータから、祖先のデータを取得してみました。 django-cteと共通テーブル式(CTE)を用いた再帰クエリにより、階層構造を持つテーブルからデータを取得する - メモ的な思考的な このときは django-cte の利用がメインだ…

IntelliJ Platform PluginのRailroadsについて、新しいバージョン 0.2.0 をGitHub Actionsでpublishしてみた

以前、rails routes を便利に扱う、IntelliJ Platform Plugin の Railroads を作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な http…

Cloudflare Pages・Workers + Hono + React + Chart.js で食べたリンゴの割合をグラフ化してみた

今まで、「食べたリンゴの割合をグラフ化するアプリ」をGoogle Cloud Runで動かしてきました。 Python + Django + Highcharts + Coogle Cloud Cloud Run + Cloud Storage + Litestream で食べたリンゴの割合をグラフ化してみた - メモ的な思考的な 運用する…

#KotlinFest Kotlin Fest 2024 に参加しました

6/22(土)に、ベルサール渋谷ファーストで開かれた「Kotlin Fest 2024」に参加しました。 Kotlin Fest 2024 会場入り #KotlinFest pic.twitter.com/Qn3PqhxbNd— thinkAmi (@thinkAmi) June 22, 2024 最近、Kotlinを使って IntelliJ Platform Plugin を作りま…

CloudflareのService Bindings RPC を使って、Bun + Hono な Pages と Workers を連携してみた

Cloudflare環境でアプリを作っていたところ、Cloudflare Workers(以降Workers) で Service Binding RPC が使えると知りました。 Service bindings - Runtime APIs · Cloudflare Workers docs Service bindings - RPC (WorkerEntrypoint) · Cloudflare Worker…

React + react-chartjs-2 + Chart.js を使って、デフォルトの Legend の代わりに HTML Legend を表示してみた

以前、React + react-chartjs-2 + Chart.js を使って、Pie chart を表示してみました。 React + react-chartjs-2 + Chart.js を使って、Pie chart を表示してみた - メモ的な思考的な その時は凡例 (Legend)のカスタマイズとして「凡例をPie chartの右隣に表…

Bun + TypeScript + @atproto/api で、Blueskyの自分の投稿を取得してみた

去年、Blueskyのアカウントを作りました。今のところブログの更新通知しかしてませんが。。。 https://bsky.app/profile/thinkami.bsky.social そんな中、Blueskyに自分が投稿したものを取得したくなったことから、ためしてみたときのメモを残します。 目次 …

JetBrains IDEで外部キーを表示できるよう、Cloudflare D1向けJDBC driver「d1-jdbc-driver」を修正するプルリクを作った

前回、自作のアプリを Cloudflare Pages + D1 に乗せてみました。 Hono + React + TanStack Router + TanStack Query + Chart.js + Drizzle ORMなアプリを、Cloudflare Pages と D1 に乗せてみた - メモ的な思考的な Cloudflare D1にあるテーブルの Cloudfla…

Hono + React + TanStack Router + TanStack Query + Chart.js + Drizzle ORMなアプリを、Cloudflare Pages と D1 に乗せてみた

少し前から、Hono + React + TanStack Router + TanStack Query + Chart.js + Drizzle ORM あたりをさわってきました。 Hono + React + Chart.js + TanStack Router + TanStack Query を使って、Hono製APIのレスポンスをPie chartとして表示してみた - メモ…

TypeScript + Bun + SQLite な環境にて、SQLのDDLをDrizzle ORM で書いてみたり、初期データの投入(seed)をしてみた

前回の記事では Drizzle ORM のマイグレーション機能を中心に色々試していました。 TypeScript + Bun + SQLite + Drizzle ORM な環境にて、Drizzle Kit の各コマンドを試してみた - メモ的な思考的な 今回は SQLite に対して、SQL の DDL を実行したり、初期…

TypeScript + Bun + SQLite + Drizzle ORM な環境にて、Drizzle Kit の各コマンドを試してみた

TypeScript + Bun な環境にて、SQLiteを操作したいことがありました。 Bunにはネイティブの SQLite driver があることから、そのまま bun:sqlite を使うこともできそうでした。 SQLite – API | Bun Docs ただ、日頃ORMでDBまわりを書いていることから、ORM的…

Hono + React + Chart.js + TanStack Router + TanStack Query を使って、Hono製APIのレスポンスをPie chartとして表示してみた

前回、Chart.jsのPie chartをReactで表示してみました。 React + react-chartjs-2 + Chart.js を使って、Pie chart を表示してみた - メモ的な思考的な その続きとして、次はバックエンドからのレスポンスを React + Charts.js で描画したくなりました。 バ…

React + react-chartjs-2 + Chart.js を使って、Pie chart を表示してみた

Reactアプリで Pie chart (円グラフ)を表示したくなったので調べたところ、以下の記事がありました。 Front-end data tools — the awesome list LLMと相性のいいReactのChartライブラリを考察してみた | 株式会社AI Shift 上記では色々なライブラリが紹介さ…

routes.rbに色々なルーティングを定義したRailsアプリを作ってみた

先日 Railroads という、Rails開発向けのIntelliJ Platform Pluginを作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な そのプラグイ…

IntelliJ Platform Plugin開発にて、KotestやBasePlatformTestCaseを使ったテストコードを書いてみた

先日 Railroads という、Rails開発向けのIntelliJ Platform Pluginを作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な 最初に作った…

ESLintプラグイン eslint-plugin-security はReactアプリの実装にも反応してくれるか試してみた

Reactアプリを実装するとき、LinterとしてESLintを使っています。 また、Vite.jsを使ってReactアプリを実装する場合、デフォルトで導入される eslint-plugin-react-hooks eslint-plugin-react-refresh や eslint-plugin-react などを使ってたりします。 そん…

IntelliJ Platform Plugin開発にて、Plugin Signing を試してみた

IntelliJ Platform Plugin SDKのドキュメントを読んでいたところ、 Plugin Signing というページがありました。 Plugin Signing | IntelliJ Platform Plugin SDK そこで、自作のプラグイン Railroads にPlugin Signingしてみたときのメモを残します。 目次 …

RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました

JetBrainsのIDE (IntelliJ IDEA Ultimate や RubyMine) で Rails アプリ開発をする場合、 Railways プラグインが手放せません。 Railways - RubyMine Plugin | Marketplace 上記のプラグインページにあるように、Railwaysには rails routes の結果を一覧化す…

IntelliJ Platform Pluginの開発にて、Task.Backgroundableを使って重い処理をバックグラウンド実行してみた

以前、「ToolWindow上でボタンをクリックしたらラベルの値を更新する」をためしました。 IntelliJ Platform Pluginの開発にて、ApplicationManagerやToolWindowManagerを使って、Actionの中でToolWindow上のlabelを更新してみた - メモ的な思考的な しかし、…

IntelliJ Platform Pluginの開発にて、開発環境にある公開したくない情報を local.properties に定義してビルドする

IntelliJ Platform Pluginの開発をする中で、ローカルマシンのファイルパスなど、開発環境にある公開したくない情報を定義したくなりました。 ただ、どのようにすればよいのか分からなかったため、調べたときのメモを残します。 目次 環境 調査 実装 build.g…

IntelliJ Platform Pluginの開発にて、ToolWindow上で、Dialog・Balloon・StatusBarなどを使って改行ありのメッセージを表示してみた

IntelliJ Platform Pluginを作っている際、何らかの方法でメッセージをUI上に表示したくなりました。 実現方法を調べたところ、公式ドキュメントに Notification として記載がありました。 Notifications | IntelliJ Platform Plugin SDK そこで、各Notifica…

IntelliJ Platform Pluginの開発にて、ToolWindow上で、テーブルの絞り込み条件入力で使うコンポーネントを SearchTextField にしてみた

以前の記事では、テーブルの絞り込み条件を入力する項目として TextField を使っていました。 IntelliJ Platform Pluginの開発にて、ToolWindow上で、TextFieldの入力値に従って絞り込み可能なテーブル(JBTable)を表示してみた - メモ的な思考的な そんな中…

IntelliJ Platform Pluginの開発にて、ToolWindow上で、DialogWrapperとPropertiesComponentを使って、設定の保存と読み込みを行ってみた

以前、TextFieldの入力値により、テーブルの値を絞り込むことをためしてみました。 IntelliJ Platform Pluginの開発にて、ToolWindow上で、TextFieldの入力値に従って絞り込み可能なテーブル(JBTable)を表示してみた - メモ的な思考的な 以前は部分一致のみ…