Vim Plugin Managerをvim-plugに変更

今まで使っていたShougo/neobundle.vimが今後はバグフィックスのみと聞いたので、気分転換も兼ねてプラグインマネージャをjunegunn/vim-plugにチェンジしてみました

1時間程で大まかな置換は完了してすんなり動いてくれて拍子抜けしたのですが、よく考えたらこれは Vundle → NeoBundle とプラグインマネージャを導入し続けてきた経験値があったからですね。 因みにvimrcのdiffはこんな感じです。

Change vim-plugin-manager And update vimrc · aoshiman/dotfiles@f512bae


[Python]Shizuoka.py #5 に参加しました

約一年半ぶりにShizuoka.pyが開催され参加及び発表をしてきました。色々なタイミングが合わず中々開催出来ずにいましたが、今回はその一年半がまるで充電期間だったかのように内容が濃い勉強会になりました。

発表スケジュールを見て頂ければ分かるのですが、Pythonらしいですね、データ解析、構成管理ツールとテスト、スタティックジェネレータ、AWS、クローラ、機械学習と守備範囲広いです。私はPythonのこの守備範囲の広さが好きで、自分が普段関わらない分野でPythonが使われている、すごく刺激を受けるのです。

因みに今回の私の発表はVagarant+DigitalOcean+AnsibleでPython開発環境を構築するというものでした。諸事情によりローカルディスク容量がかなり減ってしまい、このブログの作成環境をDigitalOceanへ外出ししたいことからVagrant、Ansibleの勉強が始まりました。

発表して判明したのですが、Vagrantの使用率って高いですね、是非DigitalOceanも使ってみてください。あとAnsibleのハマりどころに関しては、Qiitaなどにも掲載されているのですがやはり断片的なまとめが多いので、頑張って体系だってまとめてみました。あとついでなので普段使っているプロジェクト、Bitbucketの非公開リポジトリからGitHubの公開リポジトリへ引っ越ししました。そのままでは動きませんが、playbookは参考になるかもしれません。

今回の発表内容一覧です

  • Python、neo4j、Cytoscape.jsでデータ可視化入門 @oec014
  • Vagarant+DigitalOcean+AnsibleでPython開発環境を構築する @aoshiman
  • python-pelicanでブログを作る話 @hrs_sano645
  • 不適切だが違法ではないクローラー @fmkz___
  • Testinfra を使ってみた @ftnk
  • AWSで最近アツい話(AWS lambda) @sakibara
  • 静岡支部長がAWSの闇を語る @ando_ando_ando
  • joblibでキャッシング @fmkz___
  • 「みんなのPython勉強会」参加報告的なLT @bonohu
  • 日経平均予想上下予想botを作った話 @dokechin

よく4時間半で発表し終えたと思います(笑)

今回はじめて参加された方にも最後にお話しでき、楽しかったとおっしゃっててとても嬉しかったです。是非次回はなにか発表してみてください^^

最後に毎度のことながら会場確保など動いていただいている@fmkz___さんありがとうございました。


探検! Python Flask を読んだ

探検! Python Flask
Robert Picard, 濱野 司(訳)
達人出版会
発行日: 2015-05-08
対応フォーマット: PDF, EPUB

昨日この本を見つけて、速効で買いました。フォーマットがePubだったので、mobiに変換してKindleに取り込んで読んでいます。なんか一年前に出てたみたいですね、全然知らんかった(;一_一)

このブログをFlaskを使って作り直したのが2011年9月なので、Flaskはかれこれ5年程触っていますが、未だに好きなフレームワークです。今まで日本語のFlask本は(多分)出ておらず、使用にあたっては、チュートリアルやったり、Flaskのリポジトリのexampleを弄ってみたり、トラブルはStackOverflowで解決図ったりしてのらりくらりなんとか使ってきましたが、やはり日本語のFlask解説本、あると便利ですね。

どんなことが書かれているかはページサンプルを見て頂ければと思いますが、個人的にはBlueprintsの解説がしっかりと書かれていたので嬉しかったです。プロダクトでも社内管理システムでもFlaskで作ろうとするならばBlueprints無いと大変だと思うので。

使ったことがないエクステンションが幾つかあったので時間があったら勉強がてら、このブログに採用してみたいなと思いました。


Pythonista for iOS で Nowplaying する

image

Apple Music で今聴いている曲をTwitterで共有する場合の定型文みたいなやつがちょっとダサい

以前はサードパーティ製アプリを使って今聴いている曲をツイートしていたのですが、使用する場合そのアプリをいちいち起動させなくてはならなくて使い勝手がイマイチなのでPythonista for iOSでスクリプトを書いてみました

そもそものPythonista for iOSに関してはこちらの記事がとても詳しいです。


このスクリプトをPythonistaのDocumentsなどの適当なフォルダに保存して共有時に呼び出せるようにします。

image

「曲を共有」ボタンを押すと「Run Pythonista script」が出てきます

image

「Run Pythonista script」を押すとNowplayingのアイコンが出てくるのでそれを押します(前もってスクリプトのショートカット登録をしてあります)

image

ツイート文が表示されるのでDoneを押してツイートします

image

こんな感じでちょっとしたPythonスクリプトが動くのが嬉しいです(いつストアから削除されてもおかしくないような気もしますが(;一_一))


参考サイト


[Python][Twilio]特定の件名のメールを受信したら電話をコールさせる

タイトルの通りですが、特定の件名のメールを受信したら電話をコールさせたくてimaplibとtwilio-pythonを使って実装しました。

用途的には子供の習い事などで利用するバスの到着通知メールをうっかり見逃さないようにすることなのですが、もしかしたらサーバの障害通知などにも利用できるかもしれません(やらないけど)。リポジトリを貼っておくのでご参考にどうぞです。



前準備として以下のものを用意

  • Twilioのアカウントを取得して(発信元になる)電話番号を取得、アカウント作成によって生成されたAPIトークンを使用
  • あらかじめ特定の件名のメールを受信したら専用のラベルを貼るようにしておく(GmailやGoogle Appsを使用することが前提です)


処理の流れ

  1. Google Appsのメールボックスにimaplibでログインする
  2. 専用のラベル(ボックス)にメールがあるかどうかチェック
  3. メールがない場合はなにもしない
  4. メールがあり、且つタイトルが特定の件名と一致した場合、日付をチェックして今日のメールだったらあらかじめ設定してある電話番号に電話をかける、ついでにそのメールからラベルをはがす

2~4の処理を無限ループで実行し、15秒程のスリープを挟んでいます。スクリプトのデーモン化にはUpstartを使用


Twilioの運用ポイント

Twilioでコールする場合、本来はコール後に電話を取ってもらい音声案内等の処理に繋げていくものですが、今回はコールすることが目的で電話を取る必要はない。

なのでtimeoutパラメータの数値を低く設定して数コールで切れるようにしています。

Twilio Docs: Make outgoing phone calls with Twilio's REST API

実際のコードだとこんな感じ

def makecall(sid, secret, target, from_, url, timeout=10):
    try:
        client = TwilioRestClient(sid, secret)
        call = client.calls.create(
                to=target,
                from_=from_,
                url=url,
                timeout=timeout
                )

        log.info(call.sid)

    except TwilioRestException as e:
        log.exception(e)

因みに、コールするだけの場合、Twilioは料金が発生しないので電話番号の維持費だけで運用することが可能です(のはず)

通話が成立しない場合料金はかかりますか? : Twilio for KDDI Web Communications


また、自宅の電話にはTwilioの番号を登録し、読み仮名に「バスガトウチャクシマス」などと登録しています。するとその番号から電話がかかってくると読み上げてくれるので、より注意を引くことが出来ます


今後の課題

今はもともと借りていた某OpenVZなVPSで動かしているので、AWS Lambdaで同じようなことが出来るか調べようと思っています


参考にさせていただいたサイト


PAGE TOP