Python

pytestのkオプションは、マーカー名でマッチしているものもテスト対象だった

pytestでテストを実行する時、今までは -m オプションは、マーカー(@pytest.marker.xxx)に一致するもの -k オプションは、テストクラス名やテストメソッド名でマッチするもの を対象のテストコードとして実行するものと考えていました。 ただ、最近 -k オプ…

Werkzeugでレスポンスボディを後から差し替えてみた

Werkzeugでは werkzeug.wrappers.Response を使ってレスポンスオブジェクトを生成する際、 Response('Hello world') のようにコンストラクタの引数にレスポンスボディを渡します。 ただ、Responseオブジェクト生成後にレスポンスボディを修正する方法を知り…

RedisをJSONに差し替えて、Werkzeugの公式チュートリアルを写経してみた

前回・前々回と、Werkzeugをさわってみました。 Werkzeugでリクエスト・レスポンス・Cookieを試してみた - メモ的な思考的な WerkzeugでJSON等のいろいろなレスポンスを作ってみた - メモ的な思考的な 今回は、公式のチュートリアルを写経した時のメモを残し…

WerkzeugでJSON等のいろいろなレスポンスを作ってみた

前回、Werkzeugでいろいろと試してみました。 Werkzeugでリクエスト・レスポンス・Cookieを試してみた - メモ的な思考的な 今回は、WerkzeugでいろいろなHTTPレスポンスを作ってみました。 目次 環境 特定のHTTPメソッドのみレスポンスを許可 JSONレスポンス…

Werkzeugでリクエスト・レスポンス・Cookieを試してみた

Flaskでも使われているライブラリ Werkzeug でいろいろと試した時のメモです。 公式ドキュメントはこちらです。以下のサンプルでも公式ドキュメントへのリンクを記載しています。 http://werkzeug.pocoo.org/docs/0.14/ なお、curlでの動作検証時、以下が参…

Ubuntu18.04 + mod_python 3.3.1で、リクエスト・レスポンス・Cookieを試してみた

Ubuntu 18.04 に mod_python をセットアップし、いろいろと試した時のメモです。 mod_python - Apache / Python Integration なお、mod_pythonは 非WSGI 動作にはApacheが必要 なことに注意します。 ドキュメントは以下を参考にしました。 公式版:Mod_pytho…

「PythonユーザのためのJupyter実践入門」を写経しながら読みました

最近、Pythonを機械学習やデータサイエンス方面で使う機会がありました。 これまでPythonをWebアプリで使うことが多かったこともあり、最初のうちは各種ツールを雰囲気で使っていました。 ただ、使っていくうちに、ツールを基本的なところから理解したくなり…

DjangoのModelのFieldのオプション null と blank の違いについて

DjangoにてDBのNOT NULL 制約を外したい場合、nullとblankのどちらを使えばよいのか忘れることがあるため、メモしておきます。 目次 環境 違い 確認 Model マイグレーションファイルの作成 sqlmigrateで、発行されるSQLを確認 マイグレーションファイルを適…

Django2.0のプロジェクトのurls.pyにおける、include()での引数namespaceについて調べてみた

Django 2.0にて、プロジェクトの urls.py を from django.urls import path, include urlpatterns = [ path('old/', include('myapp.urls', namespace='old')), ... ] アプリの urls.py を from django.urls import path from django.views.generic import T…

Pythonで、super()で呼ばれる親メソッドの中で呼ばれるメソッドを、子でオーバーライドしてみた

良いタイトルが思い浮かばなかったのですが... 以下のソースコードを実行した時に、何がprintされるかを試した時のメモです。 class Parent: def reply(self): self.say() def say(self): print('parent!') class Child1(Parent): def reply(self): super().…

Djangoで、アプリ用ディレクトリを作成し、INSTALLED_APPSにAppConfigのサブクラスを設定してみた

Djangoでアプリの数が増えると見づらいかなと思い、アプリ用ディレクトリを作成してみました。 その時に INSTALLED_APPS に AppConfig を指定する場合で少し悩んだため、メモを残します。 なお、こんな感じでプロジェクトとアプリを作成しました。 # Django…

Raspberry Pi 2 Model B + docker-compose上に、Django + PostgreSQLなアプリをデプロイしてみた

Raspberry Pi 2 Model Bを使ってDjangoアプリを作ろうかなと思いました。 環境構築をどうするかと考えたところ、RaspbianでDockerを動かせると知りました。 Docker comes to Raspberry Pi - Raspberry Pi Dockerが動くならdocker-composeもいけるのではと思…

Python 3 エンジニア認定基礎試験に合格しました

5/18にPython 3 エンジニア認定基礎試験を受けてきました。 基礎試験 | 一般社団法人Pythonエンジニア育成推進協会 無事に合格したため、メモを残します。 受験した経緯 社内Slackにて試験話が盛り上がっていました。 自分もビッグウェーブに乗ろうとPython …

DjangoCongress JP 2018 に参加 & 発表しました #djangocongress

5/19に開催された、DjangoCongress JP 2018に参加 & 発表しました。 DjangoCongress JP 2018 場所は、サイボウズ株式会社の東京オフィスでした。 東京オフィス アクセスマップ | サイボウズ株式会社 ここが日本橋か pic.twitter.com/FiTUXSpXn1— thinkAmi (@…

Python3 + google-api-python-clientで、Google Drive APIを使ってpdfファイルをアップロードし、OCR処理をする

手元の画像pdfファイルをOCR処理したいことがありました。 手軽にOCR処理する方法がないかを調べたところ、Google DriveにOCR機能があることを知りました。 GoogleDriveのOCR機能を使って、大量の画像ファイルをテキストに変換する そこで、Google DriveのOC…

Django + django-localflavorで、フォームの郵便番号入力や都道府県選択を作成してみた

Djangoのフォームで 郵便番号入力 都道府県選択 を簡単に作る方法を調べたところ、 django-localflavor がありました。 django/django-localflavor: Country-specific Django helpers, formerly of contrib fame The “local flavor” app — django-localflavo…

Python2 + nfcpyで、「長野市バス共通ICカード KURURU(くるる)」の履歴を読んでみた

以前、Android + RubotoにてFeliCaのKURURUの履歴を読んでみました。 Rubotoを使い、Androidで「長野市バス共通ICカード KURURU(くるる)」の履歴を読んでみた - メモ的な思考的な そこで今回は Python2 + nfcpy でKURURUを読んでみます。 とはいえ、nfcpyでF…

Python2 + nfcpyで、W525DZのFeliCa Plugを読んでみた

毎年冬になるとつらいのが冷え性です。 今までは身体が冷えてるような気がするから冷え性だろうと思っていました。しかし、「推測するな計測せよ」という言葉を思い出しました。 そこで記録が手軽に残せる体温計を探してみました。すると、NFCでデータを転送…

Python2 + Scapyでマジックパケットを作成し、Wake on LANをしてみた

今まで、遠隔からPCの電源を入れる場合、Wake on LAN 用のツールを使っていました。 Wake-on-LAN - Wikipedia そこで今回、ScapyでWake on LANのマジックパケットを作ってみて、ツールの代替となるかを試してみました。 目次 目次 環境 ネットワーク構成 ネ…

Mac + Python2 + Scapyで、使用中のIPアドレスを探してみた

以前、Windowsにて現在のIPアドレス利用状況を知りたい時は、以下の記事のようにしていました。 Windowsで、使用中のIPアドレスを調査する:Tech TIPS - @IT Scapyを使えばARPパケットだけで同じことができるのではと思い、試してみました。 目次 環境 実装…

IntelliJのremote interpreter方式を使って、Raspbian上のScapyをリモートデバッグしてみた

Raspberry Pi 2 Model BでScapyを書いていると、リモートデバッグしたくなりました。 そこで、IntelliJのremote interpreter方式を使って、Raspbian上のScapyをリモートデバッグしてみた時のメモを残します。 目次 環境 公開鍵を使ったSSHを可能にするよう設…

最新のScapy(2.3.3.dev957)では、Macにpcapやdnetモジュールのインストールが不要っぽい

前回の記事の中で、MacへのScapyのインストールについて触れました。 Mac + Python2 + Scapyで、DHCPサーバを探してみた - メモ的な思考的な 公開後、Twitterにて Scapy works natively on macOS since 2.3.3. There is no need to install pcap and dnet mo…

Mac + Python2 + Scapyで、DHCPサーバを探してみた

Scapyを使ってDHCPサーバを探してみようと、実装方法を調べてみました。 すると、Scapyの公式ドキュメントにあったり、既に実装している方々がいました。 Identifying rogue DHCP servers on your LAN | Usage — Scapy 2.3.3-dev documentation Python(Scap…

Python2 + Scapyで、Raspberry Pi 2 Model B をNAT/NAPTルータ化してみた #router_jisaku

前回・前々回で、Python2 + Scapyで、Raspberry Pi 2 Model B をブリッジ化してみました。 Python2 + Scapyで、Raspberry Pi 2 Model B をブリッジにできるか試してみた #router_jisaku - メモ的な思考的な Scapy + Python2 + I/O多重化・ブロッキングI/O系…

Scapy + Python2 + I/O多重化・ブロッキングI/O系モジュールにて、Raspberry Pi 2 Model Bをブリッジ化する

前回、Scapyの bridge_and_sniff() 関数を使って、Raspberry Pi 2 Model B をブリッジ化してみました。 Python2 + Scapyで、Raspberry Pi 2 Model B をブリッジにできるか試してみた #router_jisaku - メモ的な思考的な ただ、 bridge_and_sniff() 関数を使…

Python2 + Scapyで、Raspberry Pi 2 Model B をブリッジにできるか試してみた #router_jisaku

以前、Windows10 + Scapyを簡単にさわってみました。 Windows10にScapyをインストールする - メモ的な思考的な もう少し詳しくScapyをさわってみたいと思い、何か作ろうと考えました。 作る題材を探していたところ、書籍「ルーター自作でわかるパケットの流…

Mac + IntelliJ IDEA + Python pluginにおける、pycharm-debug.egg のありかについて

IntelliJ IDEA + Python pluginでリモートデバッグをする際、 pycharm-debug.egg pycharm-debug-py3k.egg が必要です。 ただ、どこにあるか分からなかったため、調べた時のメモを残します。 環境 Mac OS X 10.11.6 IntelliJ IDEA 2017.3.1 Python plugin 201…

Python + tweepyにて、Video URLを取得する

TwitterのVideo URLの取得方法を調べる機会がありましたので、メモとして残します。 なお、Twitter用ライブラリは、 tweepy を使います。 目次 環境 tweepyでTwitter APIを操作する ツイートとVideo URLが140文字に収まる場合 ツイートとVideo URLが140文字…

Pythonで、Seleniumのfind_element系メソッドとPageObjectsを試してみた

PythonのSeleniumには find_element_by_xxx() find_elements_by_xxx() find_element() find_elements() などのメソッドが用意されています。 今回は、それらを試してみた時のメモを残します。 なお、途中からSeleniumのPage Objectsパターンが出てきます。 …

Python + pytestにて、pytestに独自のコマンドラインオプションを追加する

Python + pytestにて、コマンドラインオプションを追加して、コマンドラインから値を受け取った時のメモを残します。 目次 環境 pytestのコマンドラインオプションの追加方法 conftest.pyの実装 テストコードの実装 テストの実行 応用:コマンドラインオプシ…