oinume journal

Scratchpad of what I learned

Python

gcloudコマンドを使わずにGoogle Cloud Storageにファイルをアップロードする

概要 gcloudコマンドを使わずにPythonとgoogle-cloudを使ってGoogle Cloud Storage(GCS)に頑張ってファイルをアップロードしてみる。google-cloudはPython向けのGoogle Cloud Platformの何かを操作するためのクライアントライブラリ。GCPの以下の機能の操作…

Better Heroku Schedulerを探したらCustom clock processesにたどり着いた

これはHeroku Advent Calendar 2016の11日目の記事です。 HerokuではHeroku Schedulerというcronのようなサービスがあるのですが、使い込むうちに「Daily, Hourly, Every 10 minutesの単位でしかジョブを動かせない」という制限がつらくなってきたので、より…

Parsing MySQL's URL in Python3

Just add urllib.parse.uses_netloc.append("mysql") if you want to parse URL such as mysql://root:pass@localhost/demo. #!/usr/bin/env python import urllib.parse urllib.parse.uses_netloc.append("mysql") if __name__ == "__main__": url_str = "m…

DMM英会話でお気に入りの先生の空きレッスンが登録されたらメールで通知するヤツ作った

DMM英会話でお気に入りの先生の空きレッスンが登録されたらメールで通知するヤツ作った。同期としては、人気のある先生はすぐ予約が埋まっちゃう、でもスケジュールをいちいち検索してチェックするのはダルい、という感じ。

Logging into dmm.com by Selenium

I use Selenium to log into dmm.com because dmm.com requires JavaScript enabled browser. Here is a sample code. You can see Firefox is launched and automatically logging into dmm.com if you use Firefox instead of PhantomJS. login_dmm.py #!/…

gunicornをローカル開発環境のWebサーバとして使う

--reloadオプションがバージョン19.0からサポートされたので、このような感じで起動するとローカルの開発サーバとして使える。gunicorn --access-logfile - --reload -b 127.0.0.1:3000 -w 1 app:app

Flask + BeakerでセッションデータをRedisに保存する

BeakerというWSGI Middlewareを使ってFlaskのセッションデータをRedisに保存するサンプル。

nodemonを使ってFlaskなWebアプリを自動でリロード

nodemonというツールを使うとPythonのWebアプリケーションの自動リロードがより便利になるという話。

Python3に対応したtomahawk 0.7.0をリリース

久々にtomahawkの新しいバージョンをリリース。今回はずっと放置していたPython3対応(Python3.2+)をやっとこさ完了した。 Python3はいろいろ変わり過ぎていてもう諦めようかなーと思っていたんだけど、去年のPyCon APACでsixっていうモジュールを知って、「…

Pythonで開発されている有名なサービス

Pythonで開発されている有名なサービスの一覧。Dropbox, Instagram, Disqusなど。

traceモジュールを使ってPythonプログラムの挙動を把握する

Pythonにはtraceモジュールというものが標準ライブラリであって、これを使うとpythonプログラムを実行した時に、どのモジュールのどの関数を呼んでいるかの情報を出力することができる。使いどころとしては、使っているライブラリやツールが「これ実際どう動…

Markdownをアメブロ向けのHTMLに変換するヤツ作った

会社のエンジニアブログを書いていて、あまりにもアメブロのエディタがしんどかったのでカッとなって作ってしまった。これでエンジニアブログ書くのが捗ると思う。heroku上のサンプルはここ。 使った技術 Python 2.7 misaka - MarkdownをHTMLに変換するライ…

Pythonでローカル変数の値をprintfデバッグしたい

a = 1 b = 2 print("locals = " + str(locals())) こんな風に書くとローカル変数の値が簡単にデバッグできるかなーと思った。 locals = {'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/Users/oinuma_kazuhiro/Dropbox/code/python/locals.py', '__packag</module>…

Pythonで標準出力をキャプチャする

PerlだとCapture::TinyというCPANモジュールがあるのだけど、Pythonだとやり方がわからなかったので調べてみたところ、Capture stdout from a script in Python - Stack Overflowで色々とやり方が紹介されている。 普通に標準出力の内容を文字列として取りた…

pythonbrewで新しいPythonをインストールできるようにする

Python-2.7.3がリリースされたので早速入れようと思ったら $ pythonbrew install 2.7.3 ERROR: Unknown python version: `Python-2.7.3` と言われて残念な気持ちになったので、どうすればpythonbrewで新しいPythonがインストールできるか調べてみた。 やり方…

python-mode + auto-complete-mode + ac-pythonでPythonのコード補完

Pythonの補完をEmacsでシンプルに最小労力で手早く使えるようにする - 牌語備忘録 - pygoの通りなんですが、手っ取り早くEmacsでPythonのコード補完を実現できた。ちなみにpython-modeでもac-pythonは問題なく動いてる。これ設定したらコード書くスピードが…

Pythonでモジュール内のクラスを抽出する

inspectを使えば簡単にできる。 class MyClass(object): pass def func(): pass な感じのmymodule.py があるとして #!/usr/bin/env python import inspect import mymodule for name, member in inspect.getmembers(mymodule): if inspect.isclass(member): …

pydoc -g でモジュールのドキュメントが読める

Shellで $ pydoc -g ってやったら↓のようなダイアログが出てきて "open browser" クリックしたら、ブラウザで標準モジュールやインストールされているモジュールのドキュメントが読めましたとさ。Pythonすげー。 [tmkm-amazon]4873112761[/tmkm-amazon]

Flask + python-oauth2 + python-twitterでTwitter APIを叩く

いろいろ面倒だった。

Pythonでファイルを読み込むスマートなやり方

結論から言うと下記が最もスマートでモダンな書き方っぽい。 with open('/tmp/test.txt') as f: for line in f: print line 下記はファイルの中味が全部メモリに乗っちゃうから危険。 f = open('/tmp/test.txt') for line in f.readlines(): print line f.cl…

MySQLでデータベースの全テーブルを強制的にInnoDBに変換するPythonスクリプト

仕事でMyISAMなテーブルをInnoDBにしたかったのでこんなん書いた。 $ ~/to_innodb.py -h localhost -u root mydatabase #!/usr/bin/env python # -*- coding: utf-8 -*- # INSTALL ==================== # $ sudo easy_install argparse # $ sudo easy_insta…

AppEngine for PythonでImportError: No module named cgiとなる場合の対処方法

おそらくvirtualenv使ってると発生するのだと思うのですが、AppEngine for Pythonで下記のようなエラーがでました。 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appeng…

PythonからGrowlを利用する

GrowlというMacの通知インターフェースをPythonから使ってみたというお話。 Growl Python bindingをインストール まずはGrowl本家からGrowl SDKをダウンロードしてダブルクリックし、 $ cd /Volumes/Growl 1.2.1 SDK/Bindings/python $ sudo python setup.py…

EmacsでPythonの設定

最近Pythonいいなぁと思ってPython始めているのですが、コードを書くにあたってエディタの設定も多少しとかないと、ということでEmacsでPython回りの設定をしました。あんまりヘビーなことはしないので、とりあえず今回はpython-mode.elとflymakeの設定だけ…