Python

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 のような形でライブラリを実行したくなりました。 そこで、どんなふうにすればよいか試してみたので、メモを残します…

書籍レビュアーとして参加した、エキスパートPythonプログラミング 改訂4版 が発売されました

書籍レビュアーとして参加した、「エキスパートPythonプログラミング 改訂4版」が、7/21に発売されました。また、電子書籍版も発売されています。 「エキスパートPythonプログラミング 改訂4版」MichalJaworski [PC・理工科学書] - KADOKAWA レビュアーと…

React + DjangoなWebアプリに対して、PlaywrightでいろいろなE2Eのテストコードを書いてみた

前回の記事で、Playwrightを使ってDjango + ReactのE2Eテストができると分かりました。 WSL2 + Playwrightな環境にて、codegen機能によりReactアプリやDjango管理サイト向けのテストコードを自動生成してみた - メモ的な思考的な 前回は自動生成したテストコ…

drf-spectacularを使って、Django REST frameworkの実装からOpenAPI 3.0系のスキーマを生成する

これは Djangoのカレンダー | Advent Calendar 2022 - Qiita 12/13の記事です。 Django REST framework(DRF)でOpenAPI 3系のスキーマを生成しようと考えた時、DRFの公式ドキュメントでは DRFの機能を使う Schemas - Django REST framework サードパーティパ…

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 の値を取得しようとしてみ…

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アプリの開発環境を構築してみたため、流れをメモに…

Python + requests-oauthlib にて、OAuth2.0の認可コードグラントフローでアクセストークンを取得し、リソースサーバのAPIからデータを取得してみた

前回、Rails + Doorkeeperを使ってOAuth2.0の認可サーバを、Rails + OmniAuth を使ってクライアントを作ってみました。 Rails + Devise + OmniAuthにて、Deviseで認証を、OmniAuthでOAuth2.0の認可コードグラントフローの認可だけを扱えるか試してみた - メ…

書籍レビュアーとして参加した、 #Python実践レシピ が発売になります

書籍レビュアーとして参加した「Python実践レシピ」が2022/01/13 (電子本)・2022/01/19 (物理本) に発売されます。 Pythonエンジニア育成推進協会監修 Python実践レシピ:書籍案内|技術評論社 先日、発売前の書籍をご恵贈いただきました。ありがとうござい…

Python + openpyxlを使って、月末日を除く五十日始まりのカレンダーを作成してみた

Pythonの標準モジュール calendar では、カレンダーを作るための便利な関数が用意されています。 calendar --- 一般的なカレンダーに関する関数群 — Python 3.9.4 ドキュメント 例えば、 monthcalendar で年月を指定すると週ごとに日付リストが得られるため…

SendGridでは、受信者メールアドレスの大文字小文字はどうなるか試してみた

メールアドレスの形式について調べる機会があったため、RFC5321(日本語訳)を見たところ、 動詞と引数の値(例えば RCPT コマンドにおける "TO:" または "to:" や拡張名キーワード)は大文字・小文字を区別されないが、メールボックスの local-part の指定が唯…

SendGridのEvent Webhookでメールを識別するため、X-SMTPAPIヘッダのUnique Argumentsを使ってみた

SendGridにはEvent Webhookがあり、メール送信のイベントをWebhookとして拾うことができます。 Event Webhook - ドキュメント | SendGrid Event Webhookでイベントを受信する - ドキュメント | SendGrid ただ、Webhookで取得できるデフォルトの項目が送信先…

Python + PuLP + ortoolpy による組合せ最適化を使って、行事の当番表を作ってみた

最近、行事の当番表を作る機会がありました。 行事の回数や当番対象の人数がそれなりだったこと、「今日の当番は何でこの組み合わせなの?」と質問された時に「プログラムが勝手にやりました」と答えたかったことから、プログラムを作って解決することにしま…

Raspberry Pi と python-cec で、HDMI CEC を経由してテレビの電源ON/OFFや音量調整を行う

先日Google Nest miniをお迎えしたので、家のテレビを操作してみようと思ったところ、手元のテレビでは直接の操作に対応していませんでした。 Google Nest mini以外でもテレビを操作する方法がないかを調べたところ、HDMI CECを使えばいけそうでした。 Consu…

ダンボールに入れた本を管理するDjangoアプリ「danborary」を作った

家の本棚スペースが限られているため、年末の大掃除であまり読まなくなった本をダンボールに詰めようと考えました。 ただ、何も考えずに詰めると、どの箱に何の本があるか分からなくなります。 そこで、今年さわった技術を使って、ダンボールに入れた本を管…

Djangoとyamdlにより、fixtureを使わずにYAMLとモデルを紐付ける

これは JSL(日本システム技研) Advent Calendar 2020 - Qiita の12/21分の記事です。 ちょっとしたDjangoアプリを作る中で、 モデルのデータソースはYAMLにしたい YAMLはマスタ的存在 モデル間のリレーションは存在しない YAMLを書き換えた場合、Djangoアプ…

django-cteと共通テーブル式(CTE)を用いた再帰クエリにより、階層構造を持つテーブルからデータを取得する

これは Django Advent Calendar 2020 - Qiita 兼 JSL(日本システム技研) Advent Calendar 2020 - Qiita の12/16分の記事です。 Djangoと共通テーブル式(Common Table Expression、CTE)を用いた再帰クエリを使って、階層構造を持つテーブルからデータを取得し…

Djangoで、SILENCED_SYSTEM_CHECKSを定義してSystem check frameworkのメッセージ出力を抑制する

これは JSL(日本システム技研) Advent Calendar 2020 - Qiita 12/15分の記事です。 DjangoにはSystem check frameworkがあり、Djangoプロジェクトの正しさをチェックしてくれます。 System check framework | Django ドキュメント | Django そんな中、特定の…

Django3系のORMでSQLのEXISTS句を使う

この記事は、 JSL(日本システム技研) Advent Calendar 2020 - Qiita 12/3の記事です。 以前、SQLをDjangoのQuerySet APIでどう実装するのかを書きました。 SQLのSELECT文を、DjangoのQuerySet APIで書いてみた - メモ的な思考的な SQLのINSERT, UPDATE文を、…

django-datatables-viewによるServer-side processingで、DataTable向けのクエリパラメータを追加する

django-datatables-viewによるServer-side processingで、DataTable向けのクエリパラメータを追加しようと考えた時に詰まったことがあったため、メモを残します。 目次 環境 やりたいこと 対応 フロントエンド バックエンド ソースコード 環境 Python 3.8 Dj…

django-datatables-viewによるServer-side processingで、フォームの入力値に基づいてDataTableの絞り込みを行う

django-datatables-viewで、フォームの入力値に基づいてDataTableの絞り込みを行おうと考えた時に詰まったことがあったため、メモを残します。 目次 環境 DataTableのSearchについて やりたいこと 実装 フロントエンド バックエンド 参考:Search機能との連…