utamaro’s blog

誰かの役に立つ情報を発信するブログ

pythonを使ってファクトリメソッドパターンを実装する方法について

python を使ってファクトリメソッドパターンの実装をした際に試した内容です。 ファクトリメソッドパターンの作り方としては二通り知っていますが、そのうちの「カテゴリによって実行するインスタンスを決める」方法の実装を紹介します。 今回はデコレータを…

指定したキーをdictから再帰的に検索して削除する方法

Djangoを使っているなかで、apiのテストをする際に特定のkeyを取り除きたいということがありました。 例えば、レスポンスにcreated_atが含まれている場合、レコードが作成された日が入ると、assertDictEqualでは期待値と一致しないためエラーとなってしまい…

pythonを使ってツイートをlikeした人の一覧を取得する方法

twitter apiを利用して自身のツイートをいいねしたユーザの一覧を取得します。 このapiは2021年7月6日段階でtwitter-pythonライブラリには実装されていませんでした。 なのでrequestsライブラリとrequests_oauthlibを利用してAPIを実行します。 環境 Product…

2021年版 pythonの開発環境を整える

概要 pythonの開発環境を整えて、スクリプトを実行できるのを目標にします。 pythonの開発環境ですが、2021年7月現在で私が使用している構成を基にご紹介します。 私の場合は、pyenvで任意のバージョンをインストールし、venvを使ってローカル環境を作成して…

Bootstrap5を使ったレビュー一覧画面を作りました。

概要 2019年に作成したプログラムを改修し、bootstrap5を利用したレビューの一覧画面を作成しました。 テンプレートはWordPress用ではなく、自ら開発する方向けとなっています。 例えば、現在作成しているサービスのレビューサイトへ追加するといったことが…

「会社はムダが9割」という本を読んでみた感想

本のタイトルから気になって読んでみました。 エンジニアの立場からするとムダなことを簡略化して、無くすということを考えることがあります。 その参考にしようと思って読んでみました。 感想 1回読んだときは内容が頭に入ってきませんでした。 ISO?なにそ…

DjangoでPageNotFound時にjsonを返す方法

Djangoでapiを作っている際に、自分で定義していないpathをリクエストしたところ404ページが表示されました。 apiを使うため、これをjsonで返すように変更したいと考えて、実現する方法を調べてみました。 参考にしたページ一覧 Error handling https://docs…

alembicで環境別にマイグレーションファイルを分割する

alembicというマイグレーション管理ライブラリを利用したマイグレーションファイルの分割方法について。 実現したいのは、開発環境のrevisionと本番環境用のrevisionを分けたいということです。 分けることで、リリースタイミングですべてのテストが完了した…

Flaskで共通的なpath変数を検証する方法

/api/<lang_code>/sampleのようなurlが用意されている場合、lang_codeはすべてのurlで利用する場合を想定します。 このとき、controller側でパタメータを取得し、検証する方法もあります。 ただし、すべてのcontrollerで同じ処理を書いてしまうのは避けるべきことです。</lang_code>…

material-iconsをchrome拡張のcontent-scriptで使用する方法

環境を整える 開発環境を整えます。 今回使うライブラリは以下のものを使います。 "dependencies": { "css-loader": "^2.1.1", "file-loader": "^3.0.1", "jquery": "^3.4.1", "material-icons": "^0.3.1", "webpack": "^4.32.2", "sass-loader": "^7.1.0", …

リファクタリングを行うタイミングについて

最近リファクタリングについて考える機会がありました。 今回はリファクタリングを実施するタイミングについて、これまで経験したことを記事にしたいと思います。 記事の流れとしては以下のように書きたいと思います。 リファクタリングを行う理由 リファク…

属性付きセレクタを作成する関数を作った。

属性付きセレクタを作成する関数を作った。 jqueryである属性がついたタグを取得したいと思ったときに、セレクタをハードコーディングすることがあります。 例えば以下のようなものです。 $("div[id='hoge']") hogeという値が動的に指定できる場合はもう少し…

環境ごとに分けたtsconfigを作成する

環境ごとに分けたtsconfigを設定する 想定するのはdevelop環境とprod環境の2つの設定を分けて管理します。 dev環境では、sourceMap: trueで、prod環境ではsourceMap: falseとします。 製品として出すのに元のソースを出すのはかっこ悪いので。。。 devとpro…

mysqlclientを使ったらdyldエラーが起きた

from MySQLdb import _mysqlが書かれたpythonファイルを実行したら以下のエラーが発生しました。 Traceback (most recent call last): File "main.py", line 1, in <module> import MySQLdb as _mysql File "/lib/python3.8/site-packages/MySQLdb/__init__.py", lin</module>…

webpack4とelectronでfsモジュールが見つからないエラーの解決方法について

webpack4とelectronでfsモジュールが見つからない問題 webpack4とelectronを使って開発している場合にfsモジュールが見つからないエラーが出てきました。 まずfsモジュールについてですが、これはファイルシステムを使用する際に利用するものです。 fs.readF…

jwtを検証するアノテーションを作って認証済みか判定する

jwtを検証するアノテーションを作って認証済みか判定する jwtをcookieに追加してAPIの実行を管理したいと思いました。 そのときにやった内容です。 ざっと説明すると、ログインしていたらjwtがcookieに入っていて、そのcookieを検証することで認証を管理して…

テレビニュースで情報収集しなくなった理由

僕はテレビを使って情報収集するのをやめました。 やめた理由はいくつかあるのですが、一番の決めては「情報の検証が面倒」だからです。 テレビニュースの収入源はCMの広告費です。 テレビの合間に流れる邪魔な広告が大部分の収入源となっています。 テレビ…

JavaのOptionalを戻り値に使用することについて消極的な理由

僕は戻り値にOptionalを使用することに消極的です。 戻り値に使用する理由に対して以下の理由をよく聞きます。 メソッドを利用した際にnull値を返す可能性を明示する。 nullを考慮したコーディングを強制させる。 これらをやる理由が無いと考えているからで…

試行錯誤しながら転職に成功したときのはなし

はじめに 転職活動をする際に自分の入りたい企業を探して、アタックをすると思います。 アタックするのは1回しかチャンスがなく、落ちた直後に再アタックしても落ちる可能性が高いです。 そんなときに、1回のチャンスをどのように成功させるのか。 僕の実体…

githubの寄付提供プログラムが始まった件について

はじめに githubはご存知でしょうか。 アカウントは持っているのですが、私は使っていません。以前からprivateリポジトリの作成が無料なbitbacketを使ってます。 ブログの内容とか、一時的にpushしたいときに利用しています。 というのはどうでもよくて、以…

株式会社トランビが信金中央金庫グループとの業務提携が決定しました。

はじめに 株式会社トランビが信金中央金庫グループとの業務提携が決まりました。 株式会社トランビは後継者不足によって廃業される事業者がM&Aを行えるプラットフォーム「トランビ」を提供しています。 実際のプラットフォームへは以下のリンクからアクセス…

ファーウェイが独自のOSを提供する?

はじめに アメリカが華為技術(ファーウェイ)を本気で潰しにかかっていることはご存知だと思います。 世界市場的にはスマホで第2位を誇っており、中国市場でも大きなシェアを得ています。 規制によって何が起こるのかというと、アメリカにファーウェイ製品…

Chromium版EdgeのmacOS版がリリースされました。

アメリカにあるMicrosoft社が5月20日にmacOSに対応したChromium版Edgeをリリースしました。 こちらのページでダウンロードもできます。 https://www.microsoftedgeinsider.com/en-us/?form=MO12FS&OCID=MO12FS mac版のedgeが出てきたことによって何が起こる…

エンジニアになるためには何をすればよいか

概要 プログラミングを勉強する場合どのように勉強すると良いか、自分の経験から記事にしました。 これから勉強する方の一つの道標として役立てればと思います。 ※ この記事は過去ブログを作った際に載せていた内容を書き直しています。 最初に この記事では…

61.DjangoBasicAppsのCommentsを読んでみる

urls.pyには目新しいものがなかったのでスルーします。 urlを使ってbooksと同じように作成されていたのでスルーします。 1つだけわかったことは、viewの引数にはviews.py内のメソッドを入れるということ。 views.pyを確認する コメント時の日付をバリデーシ…

60.DjangoBasicAppsという数年前のプロジェクトのBooksを読んでみる

DjangoBasicAppsのリポジトリは↓です。 https://github.com/nathanborror/django-basic-apps その中にあるBooksを読んで、Djangoの書き方を確認したいと思いました。 https://github.com/nathanborror/django-basic-apps/tree/master/basic/books views.pyが…

59.DjangoのでTwythonを使ったOAuthのサンプルを読んでみた。

参考にしたプロジェクトは↓です。 https://github.com/ryanmcgrath/twython-django Twythonを使ってTwitterのAPIを利用することができるようです。 An example Django application to showcase how to use OAuth with Twitter in Django using Twython. と書…

Djangoのサンプルを覗いて使い方を勉強してみたときのメモ

django-realworld-example-appを参考にする このプロジェクトは一番最初に参考にしたものです。 Djangoのバージョンが1.10.0と古い(記事を書いている段階での最新は2.1.5が最新)です。 https://github.com/gothinkster/django-realworld-example-app このプ…

Djangoの管理画面でBootStrap臭がひどいので消すことにした。

管理画面のBootStrap臭がひどいので消すことにしました。 アドミン機能はとても便利です。 DB内のデータをモデルを使ってCRUD操作できるので、編集が簡単です。 でも、個人的にはDB内のデータを操作する際は、専用のクライアントツールを使いたい派です。 po…

Javaの個人的読みやすいコードフォーマット

個人的読みやすいコードフォーマット【Java版】 このサイトがわかりやすく、見やすいかと思いました。 future-architect.github.io ↑のページにかかれていること以外で、自分なりに気をつけていることをまとめます。 変数の定義時には型を省略しない int val…