python

matplotlibのグラフをインタラクティブなまま保存する

savefig() で画像に保存しちゃうと、矩形拡大とかができないし、 show() しちゃうと閉じたら消える。インタラクティブなまま保存できたらよいのにと思って調べてみた。https://stackoverflow.com/questions/4348733/saving-interactive-matplotlib-figures h…

Python2/3でgmailからメールを送信する(gmailライブラリ使用編)

エントリPython2.7でGMailから日本語メールを送信するではテキストメールを送れるスクリプトを書きましたが、HTMLメールだとか添付ファイルはつけられないので、すぐに不満がでてくると思います。というか出てきました。手元では都度少しづつ改造して使って…

redashを使わなかった話、あるいは風呂敷を広げすぎない自戒

結論:新しいツールを導入しなくてもSQLの実行結果をメールで送信するだけで良かった 毎日決まった時間に動作するプログラムを書いて個人で運用しているのですが、動いた実績が日によって違うものなので、簡単に確認する手段が欲しくなりました。そこで新し…

Pythonでpickleを使って永続化する、期限付きメモ化デコレータ

止まっちゃうプログラムの応急処理として、pickleでキャッシュを永続化するメモ化関数を書いたのでついでにgistにあげました。いつかまた使う気がする。 メモ化する関数がコールバック関数を受け取るタイプの関数だったので、キャッシュのキーを作る段階で関…

windowsでxargs -Pがしたい

windowsでxargs -P 10 -n 2みたいなことをしたかったのですが、 powershellとかではそういうことができなさそう cygwinは入れたくない ということで自分で実装することにしました。 最低限必要な-P(--max-procs) -n(--max-args) {}(プレースホルダ)は実装さ…

python pipでインストール用ファイルをローカルに保存しておく

アプリケーションを別のサーバーに載せ替えたい等の理由で、インストールされているpythonパッケージを、別のマシンへ展開したいことがあります。 こういう時pipなら、pip freezeでパッケージ名とバージョンの一覧を出力して、他マシンでその一覧を元にinsta…

pythonのrequestsライブラリの更新に追従

http://d.hatena.ne.jp/yatt/20121017/1350480131requestsについて書いた記事ですが、既にAPIが変わってしまっていたので、 同じ動作をするコードを書きました。 対象はrequests 2.6.0です。 はてなダイアリーにログイン 変わりません。 #! /usr/bin/python2…

Pythonのdict内包表記でキー衝突が起きたらどうなるか

後勝ち? 不定? 重複した値はリストになる? 検証 # 1. 重複しないケース print {i:i for i in range(10)} # => {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} # 2. 重複するケース。昇順 print {i+(10-i):i for i in range(10)} # => {10…

Ping-tの学習履歴が即座にGCalに同期されるUserScript + Webサーバを書いた

Ping-tの学習履歴をGoogle Calendarに同期する仕組みを作ったの続き。リポジトリに、Chrome用のUserScriptとWSGIサーバを追加しました。https://github.com/yatt/gcal-sync-with-ping-t/tree/master/browser_pluginこれを使うと、Ping-tの学習履歴が、取組時…

Ping-tの学習履歴をGoogle Calendarに同期する仕組みを作った

Ping-tというeラーニングサイトの取り組み履歴をGoogle Calendarに同期する仕組みを作ったという話です。 Ping-tとGoogle Calendar 仕事しながら資格勉強をするとなると、手が空いている時間、特に通勤時間や昼休みを有効に活用する必要があります。 私は分…

nekofierをTwitter v1.1に対応させた

twitterlibのおかげで簡単に対応できました。参考: appengine pythonで数時間でtwitterのbotを作る https://github.com/yatt/nekofier

ジョークのシェル環境 - 実行コマンドをTwitterに垂れ流す

まとめ 引数またはstdinから渡された内容を呟く、tweetコマンドをつくったよ bashのDEBUGシグナルをトラップすると、コマンド実行前に何かしらの処理をできるよ 1と2を組み合わせて、実行するコマンドを逐一Twitterにつぶやくシェル環境を実現したよ 1. 引数…

radikorecでラジオ番組を録音してみた

Twitterのタイムラインにradikorecというツールが流れてきたので使ってみました。radikorec 1.1 - PyPI radikorecでらじるもらじこも独り占め! - テストステ論radikorecはradiko/らじる★らじるを録音するためのコマンドラインツールのようです。cronで定期…

Google AppengineのAPIクオータを確認するためのPythonスクリプトを書きました

appengine sdkを探してもそういうモジュールを見つけられなかったので、mechanizeとBeautifulSoupを使ってAPIの状態を確認するスクリプトを書きました。 これでAPIクオータ監視ができるようになりました。以下、ソースコード。

iPhone Mobile SafariでGPSトラッキングをした話

データベースに記録された緯度経度をマッピングした図。 iPhoneでGPS座標値を記録するためにはどうすればいいのか、という話。 最近、自転車を買ったので遊ぶために調査しました。 以下、iPhone4S, iOS6環境での話です。

平方数の判定を高速にやりたい

ある数が平方数かどうか(整数を2乗した整数かどうか)判定して、平方数ならその平方根を得たい。 しかも、大きな数(例えば、3^256)でも正しく判定できることが条件。 という観点で試行錯誤したのでメモ。考えた後で思ったけどPARI/GPとかになら組み込みで超高…

python向けHTTP関連モジュールのrequestsが便利すぎる

(追記 2015/04/19) コードは既に互換性が無くなっているので、以下を参考に読み替えて下さい。 pythonのrequestsライブラリの更新に追従 大幅に改善強化されたurllib2ことrequestsモジュールを使ってみたら便利すぎて驚いたので報告。 urllib2で面倒だった処…

pythonからgdataライブラリでGoogle Calendarを操作する際に302 Redirect RequestError: Moved Temporarilyが発生する問題

pythonのgdataライブラリでGoogle Calendar APIを叩くと、ステータスコード302が返ってくる場合があるので調べたらこんな内容が。http://code.google.com/p/gdata-python-client/issues/detail?id=268要は、連続的にカレンダーの登録などを呼び出した場合に…

ヒープの変化

http://d.hatena.ne.jp/yatt/20120525/1337959944 で描いたモジュールで、heapqモジュールで作られたヒープの変化を出力した. 珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造作者: ジョンベントリー,Jon Bentley,小林健一郎出版社/メーカー: …

pythonのdictでいちいちブラケット[]を書きたくないでござるの巻

特殊メソッドのオーバーライドで実現します。 class edict(dict): def __getattr__(self, name): return self.get(name, None) def __setattr__(self, key, val): self[key] = val d = edict() d.hello = 'foo' d.world = 'bar' print d # {'world': 'bar', …

逆FizzBuzz問題をPythonで解いた

逆FizzBuzz問題 (Inverse FizzBuzz)初めは検討もつかず。 連続数列のどこが始まりか分からないし、どこが終わりかも分からないし、どこからどう調べればいいかまったく分からないといった感じ。しかし、ご飯を食べたり散歩しながらぼんやり考えている内にひ…

pythonで直積集合を取る

pythonで、set型同士の直積集合を簡単に得るにはどうすればいいだろうと悩んでいたところ、アドバイスを頂きました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)…

ファイルがvalidなjsonかどうか簡単にチェックする方法

pythonを使いましょう。標準モジュールjson.toolを-mオプション付で起動すると、jsonのプリティープリントをしてくれます。このとき、標準出力をすべて捨てて標準エラー出力だけ出すようにすれば、簡単にjsonのvalidationができるのです。 # unix like $ pyt…

appengine pythonで数時間でtwitterのbotを作る

一日につぶやいた数を毎日23:55に自動でつぶやくbot, nekofierをappengine上で作りました。 以下、その時のメモです。簡単な仕組みなのでbotを作成する際の参考になれば。 nekofierってなに? 一日につぶやいた数を毎日23:55に自動でつぶやきます。この時、…

pythonでskip list

skip listというデータ構造をpythonで実装しました。listとありますが、実際には探索木のような構造で、 要素の挿入時に木をバランスさせる必要が無い lock-free なアルゴリズムだそうです。バランス操作が不要だと、並列プログラムと相性がよさそうというの…

python+pydotで木構造を画像出力

木構造のデバッグって大変ですよね。深さをスペースで表現してコンソールに出力してもいまいちピンとこない。できれば画像で出力できると良いのだけれど、画像処理ライブラリで硬派に処理するのは面倒だなぁ・・・前々からそんなことを考えていました。 最近…

素因数分解を高速にやるには

こんなコードを書いたけど、n以下の素数のリストを得ずに、例えば素数テストを使ってもっと早く計算できたりするのかなぁ。 # coding: utf-8 import primetable def factory(n = 10**7): ps = primetable.primelist(n) # n以下の素数をリストで返す memo = {…

sqlite3がダブルクォートでエスケープされているcsvをインポートしてくれない件

どうしよう。 ODBC経由で接続 専用のプログラムを作る sqlite3を修正 とりあえず、CSVを読んでトランザクションを実行する書き捨てプログラムを書いて解決した。時間があったらsqlite3用のドライバとか入れて、サードパーティーのツールを使ってODBC経由で流…

pythonのsqlite3モジュールでトランザクションする方法メモ

pythonのsqlite3モジュールでトランザクションする方法をメモしておきます。なんか、ネットで調べてもなかなか日本語のサンプルが出てこなかったので。sqlite3.connect()のisolation_levelオプション引数に分離レベルに対応する値を渡すだけです。こんな形に…

msgpack-rpcをインストールして試した

試すだけなのでvirtualenvで仮想環境を作ってそこにインストールした。 不要になったら丸ごと消して終わりにできるので便利だ。 $ mkdir tmp $ cd tmp $ virtualenv formsgpack $ cd formsgpack $ git clone git://github.com/msgpack/msgpack-rpc-python $ …