Windows11で、Windows Terminalの設定からsettings.jsonを開く

Windows11でWindows Terminalをカスタマイズしようと考えました。 Web上でよく見かける手順は Windows Terminalのプルダウンから 設定 を選択して、 settings.json を開く でした。 そこで、 と 設定 を選択したところ、 のようにGUIが表示されてしまいまし…

Google Apps Script を使って、Google Spreadsheet にあるデータを検索するWeb APIを作ってみた

Google Apps Script を使って、Google Spreadsheet にあるデータを検索するWeb APIが作れないか気になりました。 そこで、試してみたときのメモを残します。 目次 環境 Google Apps Script で、Google Spreadsheet のデータを検索する方法 TextFinderを使っ…

Railsにて、lock_versionカラムがあるモデルを同じ値で更新しても、lock_versionやupdated_atは更新されない

前回、Railsにて、同じ値でデータ更新した場合、タイムスタンプカラム( updated_at )が更新されないことを確認しました。 Railsにて、同じ値でデータ更新した場合、タイムスタンプカラム(updated_at)が更新されない - メモ的な思考的な そんな中、 lock_vers…

Railsにて、同じ値でデータ更新した場合、タイムスタンプカラム(updated_at)が更新されない

Railsにはタイムスタンプカラム( created_at / updated_at )があり、各カラムは データ作成時 created_at と updated_at が設定される データ更新時 updated_at が更新される という挙動になります。 2.2 スキーマのルール | Active Record の基礎 - Railsガ…

Python + Django + Highcharts + Coogle Cloud Cloud Run + Cloud Storage + Litestream で食べたリンゴの割合をグラフ化してみた

今まで、「食べたリンゴの割合をグラフ化するアプリ」をHerokuで動かしていました。 Python + Django + Highcharts + Herokuで食べたリンゴの割合をグラフ化してみた - メモ的な思考的な そんな中、個人的に使ってみたかったGoogle Cloudで動かせるか気にな…

Google Cloud Secret Manager にあるシークレットの値を、ローカル環境のPythonスクリプトで取得してみた

Google Cloud で機密情報を保管するときには Secret Manager が使えます。 Secret Manager | Google Cloud ためしに、Google Cloud Console で Secret Manager に値を保存した後、ローカル環境のPythonスクリプトで Secret Manager の値を取得しようとしてみ…

#pyconjp PyCon JP 2022に参加しました

10/14(金)・15(土)に、TOC有明コンベンションホールで開催された「PyCon JP 2022」に参加しました。 PyCon JP 2022 #pyconjp 着いて、ごはんいただいてた。おいしかった! pic.twitter.com/Ulg2rMNTv3— thinkAmi (@thinkAmi) 2022年10月14日 リアル参加は201…

Pundit + Rolify を使って、Rails製APIアプリでロールによる認可制御を行ってみた

Rails + ロールでの認可制御を調べたところ、以下のページに認可制御のgemがまとまっていました。 Category: User Authorization - The Ruby Toolbox まずは一番Githubのstarが多いgemからみてみようということで、 Pundit をさわってみることにしました。 v…

Django + google-authで、Google Cloud SchedulerからのHTTPリクエストのみ受け付けるAPIエンドポイントを作成する

Djangoアプリでのジョブをスケジューリングしたいと思い、Google Cloud Schedulerのドキュメントを読んだところ Cloud Scheduler では、作業単位のスケジュールを設定して、定義した回数または一定の間隔で実行できます。これらの作業単位は、一般的に cron …

Djangoアプリを、Coogle Cloud の Cloud Run + Cloud Storage + Litestream な環境で動かしてみた

以前、Djangoで作った個人アプリを Python 3.10 & Django 4.1 へとアップデートしました。 Python3.7 & Django 2.1 な個人アプリを Python 3.10 & Django 4.1 へとアップデートした - メモ的な思考的な その時、データベースをPostgreSQLからSQLiteに切り替…

Tweepyをアップデートしたタイミングで、使用するTwitter APIを v1.1 から v2 に切り替えてみた

以前、個人アプリを Python 3.10 & Django 4.1 へとアップデートしました。 Python3.7 & Django 2.1 な個人アプリを Python 3.10 & Django 4.1 へとアップデートした - メモ的な思考的な その際、 pip-review で他のライブラリのバージョンも最新に上げたた…

WSL2 + Ubuntu 22.04.1 な環境上のDockerへ、既存のDjangoアプリを載せてみた

前回の記事にて、個人アプリをDjangoを4.1にアップデートするついでに、DBをPostgreSQLからSQLiteへと移行しました。 https://thinkami.hatenablog.com/entry/2022/09/14/215942 DBをSQLiteに移行したことにより、DjangoアプリをDockerの1コンテナで起動でき…

Python3.7 & Django 2.1 な個人アプリを Python 3.10 & Django 4.1 へとアップデートした

前回の記事で環境を構築したアプリですが、動作環境は Python 3.7 & Django 2.1 でした。 Python3.4 & Django1.8な個人アプリを、Python3.7 & Django 2.1 へとアップデートした - メモ的な思考的な また、ブログには書いていませんでしたが、その後 Python 3…

WSL2 + Ubuntu 22.04.1 LTS上のDjangoアプリを、JetBrains Gateway + PyCharmにて開発し、Herokuにpushできるようにしてみた

しばらく前に ThinkPad P14s AMD Gen2 を購入し、使い始めました。 一通りのPCセットアップができたため、次は開発環境を構築することにしました。 そこで、WSL2 + Ubuntu 22.04 上に、過去作成したDjangoアプリの開発環境を構築してみたため、流れをメモに…

「作ればわかる!Androidプログラミング」をJetpack Composeで実装してみた

久しぶりに自分専用のAndroidアプリを作りたくなったため、最近のAndroid開発事情を調べてみたところ、 Jetpack Compose ViewModel Room など、色々と学びたくなるような技術を知りました。 ただ、学びながら自分専用のアプリを作り始めても挫折するだろうと…

Rails + React + OpenAPI な環境で、クエリパラメータに配列を指定する時に調べたことをまとめてみた

Rails + React + OpenAPI な環境で、クエリパラメータに配列を指定することがありました。 ただ、実装するまでにいろいろ調べたことがあったため、メモを残します。 目次 環境 わかったこと Railsでは ids=1&ids=2 な書式のクエリパラメータを受け取れる Ope…

React17 + MUI DateTimePicker + React Hook Form なアプリを yarn upgrade --latest したら破壊的変更が入っていたので修正した

以前、 React17 + MUI + React Hook Form なアプリを作り、以下のリポジトリとして保存していました。 https://github.com/thinkAmi-sandbox/react_mui_with_vite-sample 公開から時間が経過していたこともあり、せっかくなので最新のReactなどに追随するべ…

Rails + Active Job + Delayed::Jobにて、ジョブを作ってみたり、メールジョブと組み合わせてみたり、テストを書いてみたりしてみた

Rails + Active Job + Delayed::Jobな構成でジョブを作ってみた時に、色々調べたためメモを残します。 なお、記事が長いため、途中のソースコードは説明使う部分以外を省略しています。 必要に応じて、実際のソースコードを Github リポジトリでご確認くださ…

RubyMine 2022.1系にて、複数プロジェクトを開くとRailwaysプラグインが1つのプロジェクトにしか表示されないので、暫定対応してみた

RubyMineには、 Railways という bin/rails routes の結果を分かりやすく表示してくれるプラグインがあります。 Path・Action・Nameなどがひと目で分かるため、Railsアプリを書く時には重宝しています。 Railways - RubyMine Plugin | Marketplace https://g…

RubyMineで、「同一Rubyバージョンだけど、システム別に異なるgemバージョンを使いたい」場合の設定について調べてみた

RubyMineで開発をする中で、「同一Rubyバージョンだけど、システム別に異なるgemバージョンを使いたい」ことがあったため、メモを残します。 目次 環境 パターンごとの設定 rbenv-gemset を使用するパターン プロジェクトの vendor/bundle へ入れるパターン …

Rails7で導入された構文を使って、ActiveRecord::Enumを使ってみた

Railsのモデルで「(いわゆる)マスタを作るほどでもないけど数値に名前をつけたい」という時に、 ActiveRecord::Enum (enum) が使えます。 ActiveRecord::Enum enum については、以下をはじめ、詳しく解説している記事がすでに存在します。 Railsのenumを使い…

Rails製APIにて、JavaScriptの fetch() に対してリダイレクト的なステータスコードを返したい時はどうすればよいか調べてみた

Railsのコントローラにてリダイレクトをしたい時は redirect_to が使えます。 2.3 redirect_toを使う | レイアウトとレンダリング - Railsガイド 以下の例では、コントローラの show() へルーティングされた時に after_redirect_erb_fruits_path へとリダイ…

Rails + RSpecで、メモ化しているメソッドをモックしたら RSpec::Mocks::ExpiredTestDoubleError になったので、調べてみた

Rubyでメモ化したい時、 ||= を使って書くことがあります *1。 以下のコードであれば、クラスメソッド twitter を使って、クラスインスタンス変数 @twitter に Api::External::Twitter.new のインスタンスを設定・メモ化しています。 class Api::External::C…

React Hook Form 7系と MUI 5系を組み合わせたフォームを作ってみた

React Hook Form 7系とMUI 5系を組み合わせてフォームを作る時に、色々悩んだことがあったのでメモを残します。 目次 環境 controlled component と uncontrolled component について Reactのフォームでは MUIでは React Hook Formでは 実装 フォームを作る …

React + Rails + Vite.js なSPAアプリを、RubyMineを使ってReactとRailsの両方をデバッグしてみた

JetBrainsの資料にある通り、RubyMineではRailsに加えてReactもデバッグできます。 Debug a React application - React | RubyMine Debugging React Apps Created With Create React App in WebStorm | The WebStorm Blog Reactのデバッグについては、公式…

Rails + Committeeで書いたテストコードが TypeError: no implicit conversion of String into Integer で落ちたため対応してみた

OpenAPIスキーマのあるRails製APIサーバにて、テストコードを Committee + Committer::Rails で書いていたところ、 TypeError: no implicit conversion of String into Integer というエラーが出ました。 エラーを解消するまでに少々悩んだため、メモを残し…

Ruby版のOpenAPI generatorで生成したAPIクライアントが、enumの定義にない値をレスポンスで受け取るとエラーになってしまうので、回避策を実施してみた

OpenAPIスキーマで enum を使うと、その項目が取り得る値を指定できます。 Enums - DataModels (Schemas) - OpenAPI Guide - swagger 例えば、以下のOpenAPIスキーマのようにレスポンスの型が定義されているAPIの場合、HTTPレスポンスボディの shop が取り得…

Railsで、wrap_parametersで追加されたキーに対し、Strong Parametersのrequireやpermitを使ってみた

Rails製のAPIに curl -X POST 'http://localhost:3000/wrap_parameter/outputs' -H "Content-Type: application/json" -d '{"name":"foo", "age": 20}' なリクエストを投げたところ、ログに Started POST "/wrap_parameter/outputs" for 127.0.0.1 at 2022-0…

Railsで、モデルとマイグレーションファイルのそれぞれにON DELETE CASCADEな設定をして挙動を確認してみた

DB上のテーブル間に外部キー制約があり、「親を消したら、親に関係する子も削除する」みたいな処理を行いたいとします。 この場合、テーブルの外部キー定義で ON DELETE を指定することで対応できます。 SQLite 4.3. ON DELETE and ON UPDATE Actions | SQLi…

Railsで、eager_loadのLEFT OUTER JOINにて、WHERE句とON句のそれぞれで絞り込みしてみた

Railsで eager_load を使う中で、 eager_load についてもうちょっと理解を深めたいと思いました。 eager_load についてはWeb上にいろいろな記事はあるものの、自分の理解を深めるためにためしたときのメモを残します。 今回は eager_load のLEFT JOINにて、W…