2015-01-01から1年間の記事一覧

2015 年振り返り

OSS480 全て Public Contribution で、今年前半は Python で bot フレームワークを書いていたから、コミット数が多い。 4ヶ月くらいで、ほぼ機能を作り終えたので、激減してるのが分かる。 思いつきで作り始めたけど、Blinker 使ってイベントを中心に動くよ…

鬼才デヴィン・タウンゼンド様

この記事は METALバンド Advent Calendar 2015 の 13 日目の記事です。 昨日は Yuya Takeyama さんの好きな Doom Metal のバンドを紹介していく - Born Too Late でした。 Black Sabbath はロニー在籍時代の Heaven And Hell が好きです。 その昔 Dio で Spi…

Orator という ORM

Orator という ORM があったので試してみた。 サイトには "The Orator ORM provides a simple yet beautiful ActiveRecord implementation. " とある。 ActiveRecord パターンで、PHP の Laravel framework からインスパイアされて、もっと Pythonic にした…

Flask-WTF のファイルアップロード

メモ。というかドハマりした。 Flask-WTF を使ってファイルをアップロードする際、こうやって書いたらファイルのみ受け取れなかって ??? となった。 from flask_wtf.file import FileField class PhotoForm(Form): photo = FileField('Your photo') @app.rou…

SQLAlcyemy で repr を自動で

メモ。 SQLAlchemy でモデルクラスを定義していて、__repr__ を毎回定義するのがダルい。 かといって定義しないと、デバッグ時(主にプリントデバッグ)に中身が出ないのも困る。 # -*- coding: utf-8 -*- from sqlalchemy import Column, Integer, String, Fo…

続 pex 諸々

pex で出来たバイナリにやはり Python 自体は入ってないよう。 ということでやはり Virtualenv で作った環境と自分のアプリケーションを 1 バイナリにしているという感じか。 ちょっと残念。 ふとおもったけど、pypy はバイナリで配布しているから、pex では…

pex を試してみる

ちょっと前に pex というものを知った。 tl;dr — pex 0.7.0-rc0 documentation pex って何かというと、公式サイトのドキュメントには以下のようにある。 PEX files are self-contained executable Python virtual environments. More specifically, they are…

Golang でのログローテション

前に試して、メモするの忘れてた。 Golang のロギングライブラリで、logrus を使ってるけど、これにはローテート機能が無い。 README には logrotate(8) でやれやとあるけど、ポータビリティに欠けるので、Golang にやらせたい。 lumberjack を使えばいけそ…

Kotoha の Vim plugin を作った

Vim

アニメの名言を簡単に引用できるChrome extension『Kotoha』作りました - Konifar's WIP window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createEl…

Flask でアプリケーションを作る際のメモ(2015 年版)

Flask でアプリケーションを作る際のメモ - Memo の 2015 年版ディレクトリ構造 . ├── __init__.py ├── app.py ├── configs │ ├── __init__.py │ └── settings.py ├── errors.py ├── extensions │ ├── __init__.py │ ├── injector.py │ └── permission.py ├─…

Splinter と PhantomJS を使って confirm() をフックする方法

Splinter — Splinter 0.10.0 documentation Splinter と PhantomJS を使うと E2E なテストを実現できる。 概ねこれで問題ないけど、サイトで JavaScript が window.confirm() を使って確認ダイアログを出している。 Splinter には get_alert() というインタ…

alembic でインデックスが 767 バイト以上の対策

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…

factory_boy 2.4.0 で仕様が変った

Python の Fixture ツールである factory_boy を最新版の 2.4.0 にアップデートしたら、今までテストが通っていたものが fail するようになった。 # -*- coding: utf-8 -*- from factory import Sequence from factory.alchemy import SQLAlchemyModelFactor…

Golang で Web アプリケーションを作る際のメモ

自分用メモ。ここら辺を参考にした。 Golang でのウェブ開発を考えてみる - Qiita cli GitHub - urfave/cli: A simple, fast, and fun package for building command line apps in Go ここら辺が鉄板。 ちょっとアレと思ったのが、グローバルオプションの位…

Mackerel の Python クライアント作った

きっかけはこれ。 簡単な Mackerel 用の Dynamic Inventory スクリプトを書いてみました。 Ansible は Python で書かれているので、本当は Python で書くのが筋がよさそうですが、Python クライアントがないので、とりあえず Ruby で書きました。 言語による…

Python でデコレートされているメソッドを取得する方法

Python でデコレーターでデコレートされている関数/メソッドを全て取得したい。 class Sample(object): @decorator def foo(self): pass @decorator def bar(self): pass def baz(self): pass この場合だと、foo(), bar() を取得したい。 inspect.getmembers…

APScheduler

Python で cron みたいなジョブスケジューラなライブラリが無いかと思って探してたら、APScheduler というのを見つけた。 Advanced Python Scheduler — APScheduler 3.5.3.post19 documentation Scheduler やジョブを登録する Job stores などを組み合わせて…