delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

Djangoでcreatesuperuserを自動化したいときに使えるオプション(--noinput)

概要 Djangoでプロジェクトを作成した後に、初期ユーザーを作成する際には $ python manage.py createsuperuserを実行する。このコマンドは、デフォルトでは対話モードで実行されるので、自動化してスクリプトの中で実行したいときに面倒である。私自身も、…

Python Developers Surveyの2020年版が公開された

少し前に、Python界にはPython Developers Surveyという年1の調査があるということを書いたが、先日、2020年版が公開されたようである。www.jetbrains.com2019年と比べると、以下がパッと目を引いた。 Fast APIが前回は名前がなかったが、今回は12%シェアが…

【Reactの勉強】チュートリアルをやってみる(「フォームの操作とイベントハンドリング」)

概要 前回に引き続き、以下の日本大学文理学部情報科学科の教授の方がクリエイティブ・コモンズで公開してくださっているチュートリアルをやっていく。zenn.devまた、適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.p…

RabbitMQのチュートリアルをやってみる(その1)

概要 以下のRabbitMQのチュートリアルをやってみることにした。 www.rabbitmq.comチュートリアルはいくつかの言語で公開されていて、Python版も公開されている。 背景 Python界隈ではCeleryというタスクキューのライブラリが使われているのをよく見かけるの…

isortのblack互換の設定にprofileオプションを使う

概要 Pythonプロジェクトのフォーマッターにisortとblackを使う場合、両者にはフォーマットルールが異なる部分があるので、isort側でblackと競合しないように設定する必要がある。これまでは、blackの公式ドキュメントに紹介されているisortの設定をコピーし…

MySQL8系ではデフォルトで文字コードがutf8mb4に設定されている

MySQL8系では、文字コードがデフォルトでutf8mb4に設定されていることを知った。 mysql> show variables like '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+----------…

自作アプリ(Django製)にGitHub ActionsによるCIを導入してみた

概要 GitHub Actionsを覚えたかったので、以前にDjangoの勉強用に作った自作アプリに導入してみることにした。github.com割とスムーズにできた。 やったこと 任意のブランチにpushした際に、GitHub Actionsで以下が実行されるようにする。 flake8 ユニットテ…

JSとPythonでは空のlist(Array)の真偽値が異なる

まとめ JS: True Python: False 経緯 JSで以下のようなコードを書いたら、arrが空のArrayの場合でもif文の中に入ってこないことに気づいた。 # arrはArray if (!arr) { console.log("arr is empty."); } Pythonでは空のlistはFalseになるので、検証してみた…

【Reactの勉強】チュートリアルをやってみる(「サーバーからのデータ取得」・「状態の変更」)

概要 前回に引き続き、以下の日本大学文理学部情報科学科の教授の方がクリエイティブ・コモンズで公開してくださっているチュートリアルをやっていく。zenn.devまた、適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.p…

【Reactの勉強】JSのimport/export時のESLintのエラー対応

概要 前回に引き続き、以下の日本大学文理学部情報科学科の教授の方がクリエイティブ・コモンズで公開してくださっているチュートリアルをやっていく。zenn.dev今回は「サーバーからのデータ取得」のセクションをやっていたところ、JSのimport/exportの書き…

【Reactの勉強】チュートリアルをやってみる(「条件分岐」まで)

概要 前回で最低限の環境構築が完了したので、以下の日本大学文理学部情報科学科の教授の方がクリエイティブ・コモンズで公開してくださっているチュートリアルをやっていく。zenn.dev今回は、「条件分岐」のセクションまでやったので感想・変更点・ハマった…

【Reactの勉強】環境構築(stylelintの設定)

概要 前回に引き続き、環境構築を行う。 今回はCSSのLinterであるstylelintを設定する。stylelint.io適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.pm バージョン 「Reactの勉強」で使用している主なソフトウェアの…

【Reactの勉強】環境構築(ESLintのエラーを解消する)

概要 前回に引き続き、環境構築を行う。 今回はESLintのエラーを解消する。適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.pm バージョン 「Reactの勉強」で使用している主なソフトウェアのバージョンは以下の通り。 …

【Reactの勉強】環境構築(Prettierの設定)

概要 前回に引き続き、環境構築を行う。 今回はPrettierの設定を行う。prettier.io適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.pm バージョン 「Reactの勉強」で使用している主なソフトウェアのバージョンは以下の…

VS Codeが使用するTypeScriptを変更する

概要 Reactの環境構築中にVS Code上で「Cannot use JSX unless the '--jsx' flag is provided.」というメッセージのエラーが発生して解決方法を調査していた。以下のissueと同じだと思われる。 github.comその時に、エラーを解消する過程で、VS Codeでデフォ…

【Reactの勉強】環境構築(ESLintの設定)

概要 前回に引き続き、環境構築を行う。 今回はESLintの設定を行う。ESLintは現時点(2021年1月)における、JS界のデファクトスタンダードのLinterのようである。eslint.org適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.boo…

【Reactの勉強】環境構築(Project基盤の作成)

概要 前回に引き続き、環境構築を行う。 今回はProject基盤の作成を行う。(Project基盤の作成 = Create React Appコマンド(後述)の生成物をGitにコミットするまで)適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.pm …

【Reactの勉強】環境構築(nodeのインストールまで)

概要 Reactの勉強をしようと思ったが、まず、モダンなフロントエンド用の開発環境をちゃんと構築したことがなかったので、そこから始める。適宜、以下の本を参考にさせて頂きながら進める。(以下、『りあクト!』)oukayuka.booth.pm バージョン 「Reactの勉…

Pythonのエコシステムの情勢が分かる調査(Python Developers Survey)

概要 『りあクト!』を読んでいたら、JSの世界には「The State of JavaScript」という、JavaScript周りの各種エコシステムの情勢を調査したものが存在することを知った。2019.stateofjs.comPythonの世界には同じような調査はないのかな?と思って調べてみた…

VS CodeでPylanceを試してみる

概要 数ヶ月前からVS CodeでPythonのProjectを開くと「Pylanceという拡張機能をインストールしますか?」というポップアップが表示されるようになった。 まだpreview版らしい。 どんな機能が追加されるのか把握できてない。 今のVS CodeのPython開発環境に特…

【自分用メモ】テーブル設計のカタログサイト

色んな業界のシステムのテーブル設計がまとまっているカタログサイトがある。www.databaseanswers.org私が最初にこのサイトを知ったのは、以下のt_wadaさんのTweetだった。DB設計のカタログサイト。新しくテーブル設計する際には必ず一度ここを見る。見た目…

Djangoのエラーハンドリングに関して覚えておくべきこと

はじめに この記事はDjango Advent Calendar 2020 22日目の記事です。22日目の記事を担当しますdelhi09と申します。 本記事では「Djangoのエラーハンドリングに関して覚えておくべきこと」というタイトルで書かせて頂きます。 概要 Djangoはエラーハンドリン…

MySQLでCASE式を使うUPDATE文を使うと複合ユニーク制約を回避できるのか検証

概要 SQLでは、以下のようにCASE式を使うと1回のSQL実行で複数のUPDATEを実行することができる。 UPDATE article_image_url SET display_order = ( CASE id WHEN 1 THEN 2 WHEN 2 THEN 3 WHEN 3 THEN 1 END ) WHERE id in (1, 2, 3); MySQLでこれを使うと複…

DjangoのLOGGINGの設定についてちゃんと勉強した

概要 DjangoのLOGGINGの設定について、今までは割と適当に書いていたが、今回、ちゃんと調べて意味を理解しながら設定を書いたので、経緯を記事にしてみたいと思う。 結論 最終的なsettings.pyのLOGGINGの設定は以下のようになった。 #ログ出力先のディレク…

『Two Scoops of Django』のDjango3系対応版が実は既に出ていた

概要 『Two Scoops of Django』というDjangoの界隈で有名な中級者以上向けの英語の本がある。 ※ 日本語訳は存在しない世間的に知られている & Amazonで売られているのは、2017年に発売された以下のDjango1.11対応の版である。 www.amazon.co.jp私も上記が現…

DRF(Django REST Framework)でビジネスロジックをどこに書くか問題(雑記)

※ 本記事は意見や解決策は一切提示しません。 DRF(Django REST Framework)は、単純なCRUDのREST APIを実装する際にはかなりコーディングレスに実装できる点は長所だと思う反面、DRF自体の設計思想の特殊性ゆえに、ある程度のビジネスロジックを書かなければ…

【自分用メモ】VS Codeで新しいファイルを開くと以前に開いていたファイルのタブが消える事象

掲題の件。 そういえば、開発時に前からストレスに感じていたのに解決方法を調べてなかった。以下の記事で説明してくださっている方法で直せた。qiita.com qiita.com 自分もよく「cmd + p」でファイル検索してからファイル開くのだけれど、メニューバーから…

【自分用メモ】isort5系から-rcオプションがいらなくなった

概要 isort5系からディレクトリを対象にしてrecursiveにフォーマットしたい場合に、「-rc」オプションが不要になった。・5系より前 $ isort -rc target_dir・5系以降 $ isort target_dir※ 従来通り「-rc」を付けても挙動は同じだが、警告が出る。 経緯 新規…

Djangoで末尾スラッシュなしのURLがリダイレクトされる事象について(APPEND_SLASHの設定)

概要 Djangoのアプリケーションでは、末尾にスラッシュがないURLでアクセスするとスラッシュ有りのURLに301でリダイレクトされるという事象がある。これはsettings.pyのAPPEND_SLASHという設定値がデフォルトでTrueになっていることに依る。 docs.djangoproj…

Djangoのテンプレート上でVue.jsを使う際のはまりどころ

概要 Djangoのテンプレート上でVueを使う方法について書く。※ 尚、本記事はDjangoのテンプレートをテーマにしているが、サーバーサイドのテンプレートエンジンとVue.jsを両方使う場合に汎用的な話だと思う。 何も気にせずに、Djangoのテンプレート上にVue.js…