Python
ちょっと Python 書いてないかったからリハビリ兼ねて。py-pixela 一応現時点で全ての API には対応してる。 お仕事の Django アプリケーションは mixin がたくさんあり、また今まであんまり mixin しなかったけど練習がてら。
忘備録。 古い Django で作られたシステムがあって、訳あってローカルで動かしたい。 docker-compose があったので、動かした際にハマった問題。 version: '3.3' services: db: image: 'mysql:5.7.22' restart: always ports: - '3306:3306' environment: MY…
freezegun を使ってテストをした際に使っているテストで illegal hardware instruction が出た。 https://github.com/spulec/freezegun/issues/222 環境的には Virtualenv で Python3.6.2(ちょっと古い)で発生。 CI とか他の環境ではでない。 ググったり、上…
同僚氏が noqalign と言うツールを作った。 今のお仕事では Python の `__init__.py` にモジュールを import する。 import だけしてるので flake8 対策として `# noqa: F401` をつけるが、これを面倒と感じた同僚氏が自動で入れるようなツールを作った。 お…
お仕事で Django を使ってて便利だなーと思ったのが fixtures。 初期データを突っ込むのに便利。 Providing initial data for models | Django documentation | Django yaml で初期データの定義を書いて、コマンド経由で DB にデータを入れられる。 Flask で…
tl;dr Flake8 と Mypy のチェックが動く Vim プラグイン作った。 Flake8 のプラグインは何個あるんだって感じだが、GitHub - kevinw/pyflakes-vim: on the fly Python checking in Vim with PyFlakespyflakes-vim はとっくに deprecated だし、Python3 の ty…
Ruby の Infrataster ではなく Testinfra。 Testinfra aims to be a Serverspec equivalent in python and is written as a plugin to the powerful Pytest test engine https://github.com/philpep/testinfra ってある通り Python 版 Serverspec。 テストラ…
Flask 0.11 がリリースされた。 Flask 0.11 Released | The Pallets Projects # ちなみにどうでもいいけど、Flask のコードネームは酒の名前 後方互換がいくつかなくなってるので、まとめてみる。 # 漏れがあったら追記する予定 とりあえず自分のプロジェク…
ここ数ヶ月 SQLAlchemy を使って開発をしている。 開発当初は特に問題もなく調子よく行っていたが、自分のローカル環境の MySQL の設定を本番に近づけたため、SQLAlchemy がエラーをはいた - Memo が出た。 pool_recycle の値を短くすれば解決と思ったが、解…
WTFormsのSelectFieldで選択値(selected)を保持する方法 - Life is Really Short, Have Your Life!! WTForms で Select 関連は default を外部から設定できない。 SelectField や QuerySelectField は上記にある。 QuerySelectMultipleField で DB から読み…
Python で Web アプリケーションを作っていて、ログイン後しばらく放っておいて、他の画面に遷移すると以下のようなエラーが出た。 sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconn ect until invalid transaction is ro…
Orator という ORM があったので試してみた。 サイトには "The Orator ORM provides a simple yet beautiful ActiveRecord implementation. " とある。 ActiveRecord パターンで、PHP の Laravel framework からインスパイアされて、もっと Pythonic にした…
メモ。というかドハマりした。 Flask-WTF を使ってファイルをアップロードする際、こうやって書いたらファイルのみ受け取れなかって ??? となった。 from flask_wtf.file import FileField class PhotoForm(Form): photo = FileField('Your photo') @app.rou…
メモ。 SQLAlchemy でモデルクラスを定義していて、__repr__ を毎回定義するのがダルい。 かといって定義しないと、デバッグ時(主にプリントデバッグ)に中身が出ないのも困る。 # -*- coding: utf-8 -*- from sqlalchemy import Column, Integer, String, Fo…
pex で出来たバイナリにやはり Python 自体は入ってないよう。 ということでやはり Virtualenv で作った環境と自分のアプリケーションを 1 バイナリにしているという感じか。 ちょっと残念。 ふとおもったけど、pypy はバイナリで配布しているから、pex では…
ちょっと前に pex というものを知った。 tl;dr — pex 0.7.0-rc0 documentation pex って何かというと、公式サイトのドキュメントには以下のようにある。 PEX files are self-contained executable Python virtual environments. More specifically, they are…
Flask でアプリケーションを作る際のメモ - Memo の 2015 年版ディレクトリ構造 . ├── __init__.py ├── app.py ├── configs │ ├── __init__.py │ └── settings.py ├── errors.py ├── extensions │ ├── __init__.py │ ├── injector.py │ └── permission.py ├─…
Splinter — Splinter 0.10.0 documentation Splinter と PhantomJS を使うと E2E なテストを実現できる。 概ねこれで問題ないけど、サイトで JavaScript が window.confirm() を使って確認ダイアログを出している。 Splinter には get_alert() というインタ…
MySQL5.6 で alembic を使った場合に、 "Warning: Specified key was too long; max key length is 767 bytes" が出る場合の対策メモ。 $ alembic upgrade head INFO [alembic.migration] Context impl MySQLImpl. INFO [alembic.migration] Will assume non…
Python の Fixture ツールである factory_boy を最新版の 2.4.0 にアップデートしたら、今までテストが通っていたものが fail するようになった。 # -*- coding: utf-8 -*- from factory import Sequence from factory.alchemy import SQLAlchemyModelFactor…
きっかけはこれ。 簡単な Mackerel 用の Dynamic Inventory スクリプトを書いてみました。 Ansible は Python で書かれているので、本当は Python で書くのが筋がよさそうですが、Python クライアントがないので、とりあえず Ruby で書きました。 言語による…
Python でデコレーターでデコレートされている関数/メソッドを全て取得したい。 class Sample(object): @decorator def foo(self): pass @decorator def bar(self): pass def baz(self): pass この場合だと、foo(), bar() を取得したい。 inspect.getmembers…
Python で cron みたいなジョブスケジューラなライブラリが無いかと思って探してたら、APScheduler というのを見つけた。 Advanced Python Scheduler — APScheduler 3.5.3.post19 documentation Scheduler やジョブを登録する Job stores などを組み合わせて…
リフレッシュ休暇中で、出かけようと思ったけど天気悪いし、寒いし、雪降るし…なので docomo が提供している API の Python クライアントを作った。 元ネタ。 docomoが提供している雑談対話APIを利用し、docomoruというライブラリを使いながらBOTと雑談する…
お仕事で自社製の分散 KVS の環境構築をやっている。 運用試験や負荷試験を行うんだけど、負荷試験を行うのにツールを使いたい。 Python 製の locust.io を使う。 locust.io を選んだ理由は クライアントを自分で作れる(負荷試験ツールは HTTP でしかお話で…
主に仕事で必要になりそうと思ったので、requests に対応した。 仕事で Java の API サーバを書いていて、応答が JSON のみで、 リクエストとレスポンスを自動でドキュメントに出して楽をしたかったので、 以前作った Py-Autodoc を使おうとした。 自分で作…
Injector の仕様変更 - Memo また変更があった。 $ python manage.py runserver /path/to/virtualenvs/project/lib/python3.4/site-packages/flask_injector.py:146: UserWarning: init_app and post_init_app are deprecated in favour of FlaskInjector. P…
@mitsuhiko 先生の新作の pluginbase が便利そうというお話。 Python は他の Python なファイルをモジュールとして動的に読み込む場合は import があるから少し面倒。 例えば今作ってる Flask を使ったアプリケーションで、WSGI ミドルウェアを読み込む時に…
ほぼ [twitter:@voluntas] さんが書かれた MQTT コトハジメ と Mac OS X に Mosquitto をビルドする - Qiita の通り。 $ curl -O http://mosquitto.org/files/source/mosquitto-1.2.3.tar.gz $ tar xvfz mosquitto-1.2.3.tar.gz $ cmake $ make allインスト…
Flask を使ってアプリケーションを開発している。 テストを書いていてどこまで書くかに悩んでる。 例えばユーザー登録の画面があって、Form ライブラリを使っている。 Form にはバリデーションのルールの一つに正規表現を使ったルールを書いた。 その正規表…