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)を表示してみた - メモ的な思考的な 以前は部分一致のみ…

IntelliJ Platform Pluginの開発にて、ToolWindow上で、CellRendererを使ってテーブル(JBTable)の列に画像を表示してみた

前回、ToolWindow上にテーブル(JBTable)を表示してみました。 IntelliJ Platform Pluginの開発にて、ToolWindow上で、TextFieldの入力値に従って絞り込み可能なテーブル(JBTable)を表示してみた - メモ的な思考的な 今回は、テーブルの列に画像を表示できる…

IntelliJ Platform Pluginの開発にて、ToolWindow上で、TextFieldの入力値に従って絞り込み可能なテーブル(JBTable)を表示してみた

以前、「ToolWindow上に色々なコンポーネントを表示してみる」ことを試してみました。 IntelliJ Platform Pluginの開発にて、Kotlin UI DSL Version 2 や Swing を使って、ToolWindow上にコンポーネントを表示してみた - メモ的な思考的な そんな中、「TextF…

IntelliJ Platform Pluginの開発にて、ApplicationManagerやToolWindowManagerを使って、Actionの中でToolWindow上のlabelを更新してみた

IntelliJ Platform Pluginの開発にて、「ToolWindow上のボタンをクリックすると、ラベルの値が更新される」みたいなことを実装したくなりました。 ボタンとラベルを定義したのと同じファイル内であれば、 actionListener を使って以下のように実装できます。…

IntelliJ Platform Pluginの開発にて、RubyMineなどのIntelliJ IDEA以外のIDEがRun Pluginで起動するようにしてみた

IntelliJ Platform Plugin Template を使って IntelliJ Platform Pluginを開発している場合、 デフォルトでは Run Plugin すると IntelliJ IDEA Comunity JBR (JetBrains Runtime) はIDEに同梱されているもの https://github.com/JetBrains/JetBrainsRuntime…

IntelliJ Platform Pluginの開発にて、Kotlin UI DSL Version 2 や Swing を使って、ToolWindow上にコンポーネントを表示してみた

前回、IntelliJ Platform Plugin Templateを使って、JetBrains系IDEのプラグイン開発の Hello, world 的なことをやってみました。 IntelliJ Platform Plugin Templateを使って、「エディタのコンテキストメニューからダイアログを表示する」だけのJetBrains…

IntelliJ Platform Plugin Templateを使って、「エディタのコンテキストメニューからダイアログを表示する」だけのJetBrains系IDEプラグインを作ってみた

JetBrains系IDEを使って日常的にコードを書いていますが、ふとJetBrains系IDEプラグインを作ってみたくなりました。 とはいえ、JetBrains系IDEプラグインの作り方がよく分からなかったので調べてみたところ、 IntelliJ Platform Plugin Template というリポ…

Railsにて、1つのテーブルの複数列で同じテーブルを参照し、参照先を主キーもしくは主キー以外の属性としたい場合に、モデルやマイグレーションの定義方法を調べてみた

Railsを使っている中で、記事のタイトルのようなことがしたくなりました。 例えば、以下のようなことがしたくなりました。 applesとcolorsという2テーブルがある applesテーブルには以下の3列があり、いずれもcolorsと関連を持たせたい 列について 果実の色 …

Railsにて、トランザクションの中だとモデルのid列はいつ設定されるのか確認してみた

Railsを使っている中で、「トランザクションの中だとモデルのid列はいつ設定されるのか」が気になったことから、確認してみたときのメモを残します。 目次 環境 動作確認 余談:Railsのバージョンにより、トランザクション内での return 等の挙動が変わる ソ…

書籍「Solving Identity Management in Modern Applications - 2nd edition」を読みました

前回、SAML2のSP-initiated フローをためしてみました。 Python + Flask + pysaml2 でSP、KeycloakでIdPを構築し、SAML2 の SP-initiated フローでSAML認証してみた - メモ的な思考的な 書籍「SAML入門 - かなめりぜ」を読んだり手を動かしたりして、なんと…

Rubyのオブジェクト配列にて、各要素の同一属性で同じ値が何個あるかを数える

Rubyのオブジェクト配列にて、各要素の同一属性で同じ値が何個あるかを数えたくなる機会がありました。 例えば class Apple attr_reader :name, :grower def initialize(name, grower) @name = name @grower = grower end end apples = [ Apple.new('シナノ…

Python + Flask + pysaml2 でSP、KeycloakでIdPを構築し、SAML2 の SP-initiated フローでSAML認証してみた

以前、OpenID Connect によるシングルサインオン環境を構築しました。 Railsとdoorkeeper-openid_connectやOmniAuth を使って、OpenID Connectの OpenID Provider と Relying Party を作ってみた - メモ的な思考的な OpenID Connect以外でシングルサインオン…

Python + playsound の動作環境を整備して、macからmp3ファイルの音を鳴らしてみた

mac + Pythonな環境で、mp3ファイルの音を鳴らしたいことがありました。 調べてみたところ、いくつかパッケージがあるようでした。 Playing and Recording Sound in Python – Real Python Pythonでサウンドを扱う #Python - Qiita 今回の場合は単に鳴らせれ…

Python + nfcpy + PaSoRi RC-S380 + launchdで、macにログイン後「FeliCaのIDmを通知センターへ出力する」処理を自動起動してみた

以前、Raspberry Pi 2 + PaSoRi RC-S380 + nfcpyにて、FeliCaを読み込んでみました。 Raspberry Pi 2 + PaSoRi RC-S380 + nfcpyにて、FeliCa読み取り時にPowerOffし、Slackへ通知してみた - メモ的な思考的な そんな中、「RC-380はmacには対応していないけど…

Pythonを使って、BOOTHで販売している英辞郎のテキストデータをMDict化し、BOOX Leaf2 の辞書に登録してみた

去年くらいから、 E-Inkディスプレイ搭載のAndroid端末 BOOX Leaf2 で、KindleやO’Reillyアプリの電子書籍を読んでいます*1。 BOOX Leaf2 – SKT株式会社 普通のAndroidタブレットで電子書籍を読むのに比べたら、 Leaf2 は目はあまり疲れない感じです。 また…

Pythonで、実行時のmオプションやpyproject.toml の project.scripts の指定による、実行可能なライブラリを作ってみた

Pythonで自作ライブラリを作った時に python -m <パッケージ名> 例: $ python -m hello <ライブラリで指定したコマンド名> 例: $ hello のような形でライブラリを実行したくなりました。 そこで、どんなふうにすればよいか試してみたので、メモを残します…

Railsにて、ActiveSupport::TaggedLoggingやActiveSupport::ErrorReporterを使って、Request-IDをログへ出力してみた

Railsをproductionモードで動かしている時、ログに I, [*** #237177] INFO -- : [95c95a65-608b-45d3-aa02-bcf61950e7c2] Completed 204 No Content in 1ms と、 [95c95a65-608b-45d3-aa02-bcf61950e7c2] のようなHTTPリクエストを識別できるようなタグがつ…

Djangoにて、ASGIミドルウェアのasgi-correlation-idを使って、HTTPリクエストごとの識別子(Request-ID) をログに出力してみる

前回の記事では、 Django + django-log-request-id という構成で、HTTPリクエストごとの識別子(Request-ID) をログに出力してみました。 また、記事ではRequest-IDをログに出力するサードパーティライブラリを調べました。その中にASGIミドルウェアの asgi-c…

Djangoにて、 django-log-request-id を使ってHTTPリクエストごとの識別子(Request-ID) をログに出力する

OpenTelemetryやログ集約などが不要そうな小さなシステムであっても、HTTPリクエストごとの識別子がログに含まれていると、何かあった時に「どのHTTPリクエストによりログが出力されたのか」を追いかけやすいです。 そこで、DjangoでHTTPリクエストごとの識…

2023年の振り返りと2024年の目標

例年通り、2023年の振り返りと2024年の目標っぽいものを書いてみます。 目次 2023年の振り返り 身近な技術の素振り・深堀りをして、技術のキャッチアップを継続 Ruby / Rails / React まわり OpenTelemetry / Redash / Playwright まわり JetBrains IDEまわ…

React + react-jsonschema-form にて、 JSON Schemaを元にしたフォームからデータを送信し、バックエンドのDjango REST frameworkに保存してみた

これは react-jsonschema-formのカレンダー | Advent Calendar 2023 - Qiita Djangoのカレンダー | Advent Calendar 2023 - Qiita の25日目の記事です。 ここまでの react-jsonschema-form (RJSF) の Advent Calendar では、JSON Schema を元にしてフォーム…