<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on oinume journal</title>
    <link>https://blog-lampetty-net.web.app/categories/python/</link>
    <description>Recent content in Python on oinume journal</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 21 Aug 2017 09:00:00 +0900</lastBuildDate>
    <atom:link href="https://blog-lampetty-net.web.app/categories/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>gcloudコマンドを使わずにGoogle Cloud Storageにファイルをアップロードする</title>
      <link>https://blog-lampetty-net.web.app/posts/upload-file-to-gcs-without-gcloud-command/</link>
      <pubDate>Mon, 21 Aug 2017 09:00:00 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/upload-file-to-gcs-without-gcloud-command/</guid>
      <description>&lt;h3 id=&#34;概要&#34;&gt;概要&lt;/h3&gt;&#xA;&lt;p&gt;gcloudコマンドを使わずにPythonと&lt;a href=&#34;https://pypi.python.org/pypi/google-cloud&#34;&gt;google-cloud&lt;/a&gt;を使ってGoogle Cloud Storage(GCS)に頑張ってファイルをアップロードしてみる。google-cloudはPython向けのGoogle Cloud Platformの何かを操作するためのクライアントライブラリ。GCPの以下の機能の操作がサポートされている。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Better Heroku Schedulerを探したらCustom clock processesにたどり着いた</title>
      <link>https://blog-lampetty-net.web.app/posts/heroku-custom-clock-processes/</link>
      <pubDate>Sun, 11 Dec 2016 23:12:19 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/heroku-custom-clock-processes/</guid>
      <description>&lt;p&gt;これは&lt;a href=&#34;http://qiita.com/advent-calendar/2016/heroku&#34;&gt;Heroku Advent Calendar 2016&lt;/a&gt;の11日目の記事です。&lt;/p&gt;&#xA;&lt;p&gt;Herokuでは&lt;a href=&#34;https://devcenter.heroku.com/articles/scheduler&#34;&gt;Heroku Scheduler&lt;/a&gt;というcronのようなサービスがあるのですが、使い込むうちに「Daily, Hourly, Every 10 minutesの単位でしかジョブを動かせない」という制限がつらくなってきたので、より良い代替である&lt;a href=&#34;https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes&#34;&gt;Custom clock processes&lt;/a&gt;を試してみたという話。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing MySQL&#39;s URL in Python3</title>
      <link>https://blog-lampetty-net.web.app/posts/parsing-mysqls-url-in-python3/</link>
      <pubDate>Mon, 14 Dec 2015 00:32:58 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/parsing-mysqls-url-in-python3/</guid>
      <description>&lt;p&gt;Just add &lt;code&gt;urllib.parse.uses_netloc.append(&amp;quot;mysql&amp;quot;)&lt;/code&gt; if you want to parse URL such as &lt;code&gt;mysql://root:pass@localhost/demo&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#!/usr/bin/env python&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import urllib.parse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;urllib.parse.uses_netloc.append(&amp;#34;mysql&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if __name__ == &amp;#34;__main__&amp;#34;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    url_str = &amp;#34;mysql://root:pass@localhost/demo&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    url = urllib.parse.urlparse(url_str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    print(&amp;#34;URL={0}&amp;#34;.format(url_str))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    print(&amp;#34;host={0}, user={1}, password={2}, database={3}&amp;#34;.format(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        url.hostname, url.username, url.password, url.path[1:]))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ python3 url_parse.python&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URL=mysql://root:pass@localhost/demo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;host=localhost, user=root, password=pass, database=demo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>DMM英会話でお気に入りの先生の空きレッスンが登録されたらメールで通知するヤツ作った</title>
      <link>https://blog-lampetty-net.web.app/posts/introducing-dmm-eikaiwa-tsc/</link>
      <pubDate>Mon, 07 Dec 2015 09:00:00 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/introducing-dmm-eikaiwa-tsc/</guid>
      <description>&lt;h3 id=&#34;20161125追記&#34;&gt;2016/11/25追記&lt;/h3&gt;&#xA;&lt;p&gt;後継のlekcijeというサービスを作ったのでぜひこちらをご利用下さい。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.lekcije.com/&#34;&gt;www.lekcije.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;動機&#34;&gt;動機&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;どのSkype英会話でもそうだと思うんだけど、人気のある先生はすぐ予約が埋まっちゃう&lt;/li&gt;&#xA;&lt;li&gt;でもスケジュールをいちいち検索してチェックするのはダルい&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;というわけで作りました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logging into dmm.com by Selenium</title>
      <link>https://blog-lampetty-net.web.app/posts/logging-into-dmmcom-by-selenium/</link>
      <pubDate>Mon, 26 Oct 2015 08:50:00 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/logging-into-dmmcom-by-selenium/</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;h3 id=&#34;login_dmmpy&#34;&gt;login_dmm.py&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#!/usr/bin/env python&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# encoding: utf-8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import os&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;from selenium import webdriver&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;driver = webdriver.PhantomJS()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#driver = webdriver.Firefox()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;driver.get(&amp;#34;https://www.dmm.com/my/-/login/=/path=DRVESVwZTldRDlBRRFdIUwwIGFVfVEs_&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;login_id = driver.find_element_by_id(&amp;#34;login_id&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;login_id.send_keys(os.environ[&amp;#34;DMM_LOGIN_ID&amp;#34;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;password = driver.find_element_by_id(&amp;#34;password&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;password.send_keys(os.environ[&amp;#34;DMM_LOGIN_PASSWORD&amp;#34;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;driver.find_element_by_tag_name(&amp;#34;form&amp;#34;).submit()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;print(driver.page_source)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;driver.quit()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;run&#34;&gt;Run&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ brew install phantomjs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pip install selenium&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ DMM_LOGIN_ID=your_id DMM_LOGIN_PASSWORD=your_password python ./login_dmm.py&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>gunicornをローカル開発環境のWebサーバとして使う</title>
      <link>https://blog-lampetty-net.web.app/posts/use-gunicorn-on-local-machine/</link>
      <pubDate>Sun, 12 Oct 2014 22:20:07 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/use-gunicorn-on-local-machine/</guid>
      <description>&lt;p&gt;--reloadオプションがバージョン19.0からサポートされたので、下記のような感じで起動するとローカルの開発サーバとして使える。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gunicorn&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;access&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logfile&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;w&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;--access-logfile: &amp;quot;-&amp;quot;を指定するとstderrにアクセスログが出る&lt;/li&gt;&#xA;&lt;li&gt;--log-file: ↑と同様に&amp;quot;-&amp;quot;を指定するとstderrにエラーログが出る&lt;/li&gt;&#xA;&lt;li&gt;--reload: ソースコードが変更されたらリロードする&lt;/li&gt;&#xA;&lt;li&gt;-b: bindするアドレスとポートの指定&lt;/li&gt;&#xA;&lt;li&gt;-w: ワーカー数&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4873116880/kazzhomeunixo-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51slC51WgOL._SL160_.jpg&#34; alt=&#34;Python文法詳解&#34; loading=&#34;lazy&#34; title=&#34;Python文法詳解&#34;&gt;&#xA;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flask &#43; BeakerでセッションデータをRedisに保存する</title>
      <link>https://blog-lampetty-net.web.app/posts/flask-beaker-session-redis/</link>
      <pubDate>Fri, 28 Mar 2014 01:47:13 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/flask-beaker-session-redis/</guid>
      <description>&lt;h1 id=&#34;やりたいこと&#34;&gt;やりたいこと&lt;/h1&gt;&#xA;&lt;p&gt;Redisをセッションデータの保存先にしたい&lt;/p&gt;&#xA;&lt;h1 id=&#34;beakerって&#34;&gt;Beakerって？&lt;/h1&gt;&#xA;&lt;p&gt;様々なデータストアにセッションデータを保存するWSGI Middleware。WSGIレイヤーなのでFlask以外のWAF(bottleとか)でも使えるはず。&lt;/p&gt;</description>
    </item>
    <item>
      <title>nodemonを使ってFlaskなWebアプリを自動でリロード</title>
      <link>https://blog-lampetty-net.web.app/posts/auto-reload-flask-app-with-nodemon/</link>
      <pubDate>Sat, 15 Mar 2014 18:12:28 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/auto-reload-flask-app-with-nodemon/</guid>
      <description>&lt;p&gt;最近のWebアプリケーションフレームワークだと、「開発している時はファイルの変更を検知して自動でアプリを再起動する」みたいな機能がある。PythonのFlaskで開発している場合は&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python3に対応したtomahawk 0.7.0をリリース</title>
      <link>https://blog-lampetty-net.web.app/posts/tomahawk-0.7.0-released/</link>
      <pubDate>Mon, 03 Mar 2014 01:37:59 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/tomahawk-0.7.0-released/</guid>
      <description>&lt;p&gt;久々に&lt;a href=&#34;https://github.com/oinume/tomahawk&#34;&gt;tomahawk&lt;/a&gt;の新しいバージョンをリリース。今回はずっと放置していたPython3対応(Python3.2+)をやっとこさ完了した。&lt;/p&gt;&#xA;&lt;p&gt;Python3はいろいろ変わり過ぎていてもう諦めようかなーと思っていたんだけど、去年のPyCon APACで&lt;a href=&#34;https://pypi.python.org/pypi/six&#34;&gt;six&lt;/a&gt;っていうモジュールを知って、「これ使えばけっこう簡単にPython3対応できるのかー」と思ってやってみた。でも実際はそんな簡単にはいかず、特にunicodeとbytesの違いでけっこうハマってしまったけど。&lt;/p&gt;&#xA;&lt;p&gt;あとは今回のバージョンから、&lt;a href=&#34;https://tomahawk.readthedocs.org/en/latest/&#34;&gt;ReadTheDocs&lt;/a&gt;でホスティングしてるドキュメントのテーマをReadTheDocs謹製のものにしてみた。おかげでドキュメントのかっこよさはだいぶ増したはず。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonで開発されている有名なサービス</title>
      <link>https://blog-lampetty-net.web.app/posts/services-developped-with-python/</link>
      <pubDate>Sat, 18 Jan 2014 12:41:57 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/services-developped-with-python/</guid>
      <description>&lt;p&gt;他にもあったらコメントで教えて欲しいっす。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dropbox.com/&#34;&gt;Dropbox&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://instagram.com/&#34;&gt;Instagram&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://disqus.com/&#34;&gt;Disqus&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.quora.com/&#34;&gt;Quora&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.pinterest.com/&#34;&gt;Pinterest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.reddit.com/&#34;&gt;reddit&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bitbucket.org/&#34;&gt;bitbucket&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.yelp.com/&#34;&gt;Yelp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.uber.com/&#34;&gt;Uber&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>traceモジュールを使ってPythonプログラムの挙動を把握する</title>
      <link>https://blog-lampetty-net.web.app/posts/python-trace-module/</link>
      <pubDate>Sun, 21 Jul 2013 09:57:18 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/python-trace-module/</guid>
      <description>&lt;p&gt;Pythonには&lt;a href=&#34;http://docs.python.jp/2/library/trace.html&#34;&gt;trace&lt;/a&gt;モジュールというものが標準ライブラリであって、これを使うとpythonプログラムを実行した時に、どのモジュールのどの関数を呼んでいるかの情報を出力することができる。使いどころとしては、使っているライブラリやツールが「これ実際どう動いてるんだろう？」っていうのを把握したい時に重宝すると思う。&lt;a href=&#34;http://docs.python.jp/2/library/pdb.html&#34;&gt;pdb&lt;/a&gt;なんかのデバッガでもいいんだけど、「ブワッとトレース実行した結果を出しておいてあとで一気に見る」みたいな時に特に有用だと思う。&lt;/p&gt;&#xA;&lt;h2 id=&#34;使ってみよう&#34;&gt;使ってみよう&lt;/h2&gt;&#xA;&lt;p&gt;ためしに&lt;a href=&#34;https://github.com/oinume/tomahawk&#34;&gt;tomahawk&lt;/a&gt;をtrace使って実行してみた。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ python -m trace -t /usr/local/bin/tomahawk -h localhost uptime&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;実行には -m trace と -t (--trace) オプションをつける。実行結果はこんな感じ。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;---&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;modulename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;funcname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;     &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bootstrap&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;except&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;     &lt;span class=&#34;k&#34;&gt;pass&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CommandMain&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;---&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;modulename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;funcname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tomahawk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;o&#34;&gt;---&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;modulename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;funcname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;やってみるとわかるけど、標準ライブラリのコードまで延々とトレース実行される... 「標準ライブラリの中はどうでもいいんだよ」ということであれば、&lt;code&gt;--ignore-module=os,sys&lt;/code&gt; みたいな感じで除外するモジュールをカンマ区切りで指定できる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Markdownをアメブロ向けのHTMLに変換するヤツ作った</title>
      <link>https://blog-lampetty-net.web.app/posts/md2ameblo/</link>
      <pubDate>Sat, 06 Jul 2013 01:41:55 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/md2ameblo/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://ameblo.jp/principia-ca/&#34;&gt;会社のエンジニアブログ&lt;/a&gt;を書いていて、あまりにもアメブロのエディタがしんどかったので&lt;a href=&#34;https://github.com/oinume/md2ameblo&#34;&gt;カッとなって作ってしまった&lt;/a&gt;。これでエンジニアブログ書くのが捗ると思う。heroku上のサンプルは&lt;a href=&#34;http://md2ameblo.herokuapp.com/&#34;&gt;ここ&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;使った技術&#34;&gt;使った技術&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Python 2.7&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://misaka.61924.nl/&#34;&gt;misaka&lt;/a&gt; - MarkdownをHTMLに変換するライブラリ&lt;/li&gt;&#xA;&lt;li&gt;heroku&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;herokuはGitリポジトリにpushするだけでディプロイ出来て便利だなーと思った。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonでローカル変数の値をprintfデバッグしたい</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/547/</link>
      <pubDate>Wed, 05 Jun 2013 14:06:54 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/547/</guid>
      <description>&lt;p&gt;a = 1&lt;/p&gt;&#xA;&lt;p&gt;b = 2&lt;/p&gt;&#xA;&lt;p&gt;print(&amp;quot;locals = &amp;quot; + str(locals()))&lt;/p&gt;&#xA;&lt;p&gt;こんな風に書くとローカル変数の値が簡単にデバッグできるかなーと思った。&lt;/p&gt;&#xA;&lt;p&gt;locals = {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;__builtins__&#39;: &amp;lt;module &#39;__builtin__&#39; (built-in)&amp;gt;, &#39;__file__&#39;: &#39;/Users/oinuma_kazuhiro/Dropbox/code/python/locals.py&#39;, &#39;__package__&#39;: None, &#39;__name__&#39;: &#39;__main__&#39;, &#39;__doc__&#39;: None}&lt;/p&gt;&#xA;&lt;p&gt;ただ、余計なものまで表示されてしまうので、特定の変数だけprintしたい場合は下記のようにする。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonで標準出力をキャプチャする</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/465/</link>
      <pubDate>Sun, 20 May 2012 08:05:57 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/465/</guid>
      <description>&lt;p&gt;Perlだと&lt;a href=&#34;http://search.cpan.org/~dagolden/Capture-Tiny/lib/Capture/Tiny.pm&#34;&gt;Capture::Tiny&lt;/a&gt;というCPANモジュールがあるのだけど、Pythonだとやり方がわからなかったので調べてみたところ、&lt;a href=&#34;http://stackoverflow.com/questions/5136611/capture-stdout-from-a-script-in-python&#34;&gt;Capture stdout from a script in Python - Stack Overflow&lt;/a&gt;で色々とやり方が紹介されている。&lt;/p&gt;&#xA;&lt;p&gt;普通に標準出力の内容を文字列として取りたいだけなら下記でいいんじゃないかと思われる。Python詳しくないのでもっとスマートな方法があれば教えてほしいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pythonbrewで新しいPythonをインストールできるようにする</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/456/</link>
      <pubDate>Sat, 14 Apr 2012 16:04:25 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/456/</guid>
      <description>&lt;p&gt;Python-2.7.3がリリースされたので早速入れようと思ったら&lt;/p&gt;&#xA;&lt;p&gt;$ pythonbrew install 2.7.3&lt;/p&gt;&#xA;&lt;p&gt;ERROR: Unknown python version: `Python-2.7.3`&lt;/p&gt;&#xA;&lt;p&gt;と言われて残念な気持ちになったので、どうすればpythonbrewで新しいPythonがインストールできるか調べてみた。&lt;/p&gt;</description>
    </item>
    <item>
      <title>python-mode &#43; auto-complete-mode &#43; ac-pythonでPythonのコード補完</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/443/</link>
      <pubDate>Wed, 18 Jan 2012 15:01:48 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/443/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://d.hatena.ne.jp/CortYuming/20111224/p1&#34; title=&#34;Pythonの補完をEmacsでシンプルに最小労力で手早く使えるようにする - 牌語備忘録 - pygo&#34;&gt;Pythonの補完をEmacsでシンプルに最小労力で手早く使えるようにする - 牌語備忘録 - pygo&lt;/a&gt;の通りなんですが、手っ取り早くEmacsでPythonのコード補完を実現できた。ちなみにpython-modeでもac-pythonは問題なく動いてる。これ設定したらコード書くスピードが今までの1.5倍ぐらい速くなったっす！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonでモジュール内のクラスを抽出する</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/433/</link>
      <pubDate>Sat, 26 Nov 2011 00:11:45 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/433/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://docs.python.org/library/inspect.html&#34;&gt;inspect&lt;/a&gt;を使えば簡単にできる。&lt;/p&gt;&#xA;&lt;p&gt;class MyClass(object):&lt;/p&gt;&#xA;&lt;p&gt;pass&lt;/p&gt;&#xA;&lt;p&gt;def func():&lt;/p&gt;&#xA;&lt;p&gt;pass&lt;/p&gt;&#xA;&lt;p&gt;な感じのmymodule.py があるとして&lt;/p&gt;&#xA;&lt;p&gt;#!/usr/bin/env python&lt;/p&gt;&#xA;&lt;p&gt;import inspect&lt;/p&gt;&#xA;&lt;p&gt;import mymodule&lt;/p&gt;&#xA;&lt;p&gt;for name, member in inspect.getmembers(mymodule):&lt;/p&gt;&#xA;&lt;p&gt;if inspect.isclass(member):&lt;/p&gt;&#xA;&lt;p&gt;print &amp;quot;%s is class.&amp;quot; % name&lt;/p&gt;&#xA;&lt;p&gt;みたいにやれば mymodule からクラスだけ抜き出せる。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://docs.python.org/library/inspect.html&#34;&gt;inspect&lt;/a&gt;というモジュールはリンク先のマニュアルをざっと見てもらえばわかるように、モジュールやクラスや関数のメタ情報を色々取れるので超絶便利である。これは本当にすごい。&lt;/p&gt;&#xA;&lt;p&gt;[tmkm-amazon]4048686291[/tmkm-amazon]&lt;/p&gt;</description>
    </item>
    <item>
      <title>pydoc -g でモジュールのドキュメントが読める</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/428/</link>
      <pubDate>Fri, 14 Oct 2011 17:10:00 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/428/</guid>
      <description>&lt;p&gt;Shellで&lt;/p&gt;&#xA;&lt;p&gt;$ pydoc -g&lt;/p&gt;&#xA;&lt;p&gt;ってやったら↓のようなダイアログが出てきて&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/8250493@N05/6243690687/&#34; title=&#34;pydoc -g&#34;&gt;&lt;img src=&#34;http://farm7.static.flickr.com/6180/6243690687_ff345a423f.jpg&#34; alt=&#34;pydoc -g&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&amp;quot;open browser&amp;quot; クリックしたら、ブラウザで標準モジュールやインストールされているモジュールのドキュメントが読めましたとさ。Pythonすげー。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flask &#43; python-oauth2 &#43; python-twitterでTwitter APIを叩く</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/426/</link>
      <pubDate>Sat, 10 Sep 2011 16:09:16 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/426/</guid>
      <description>&lt;p&gt;いろいろ面倒だった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pythonでファイルを読み込むスマートなやり方</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/418/</link>
      <pubDate>Mon, 13 Jun 2011 13:06:59 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/418/</guid>
      <description>&lt;p&gt;結論から言うと下記が最もスマートでモダンな書き方っぽい。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;with open(&amp;#39;/tmp/test.txt&amp;#39;) as f:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for line in f:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       print line&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;下記はファイルの中味が全部メモリに乗っちゃうから危険。&lt;/p&gt;&#xA;&lt;p&gt;f = open(&#39;/tmp/test.txt&#39;)&#xA;for line in f.readlines():&#xA;print line&#xA;f.close()&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQLでデータベースの全テーブルを強制的にInnoDBに変換するPythonスクリプト</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/401/</link>
      <pubDate>Mon, 21 Feb 2011 11:02:44 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/401/</guid>
      <description>&lt;p&gt;仕事でMyISAMなテーブルをInnoDBにしたかったのでこんなん書いた。&lt;/p&gt;&#xA;&lt;p&gt;$ ~/to_innodb.py -h localhost -u root mydatabase&lt;/p&gt;&#xA;&lt;p&gt;#!/usr/bin/env python&lt;/p&gt;&#xA;&lt;p&gt;# -*- coding: utf-8 -*-&lt;/p&gt;&#xA;&lt;p&gt;# INSTALL ====================&lt;/p&gt;&#xA;&lt;p&gt;# $ sudo easy_install argparse&lt;/p&gt;&#xA;&lt;p&gt;# $ sudo easy_install mysql-python&lt;/p&gt;&#xA;&lt;p&gt;import argparse&lt;/p&gt;&#xA;&lt;p&gt;import MySQLdb&lt;/p&gt;&#xA;&lt;p&gt;import os&lt;/p&gt;&#xA;&lt;p&gt;def main():&lt;/p&gt;</description>
    </item>
    <item>
      <title>AppEngine for PythonでImportError: No module named cgiとなる場合の対処方法</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/397/</link>
      <pubDate>Wed, 29 Dec 2010 11:12:36 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/397/</guid>
      <description>&lt;p&gt;おそらくvirtualenv使ってると発生するのだと思うのですが、AppEngine for Pythonで下記のようなエラーがでました。&lt;/p&gt;&#xA;&lt;p&gt;File &amp;quot;/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py&amp;quot;, line 61, in&lt;/p&gt;&#xA;&lt;p&gt;import cgi&lt;/p&gt;</description>
    </item>
    <item>
      <title>PythonからGrowlを利用する</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/394/</link>
      <pubDate>Fri, 10 Dec 2010 12:12:32 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/394/</guid>
      <description>&lt;p&gt;GrowlというMacの通知インターフェースをPythonから使ってみたというお話。&lt;/p&gt;&#xA;&lt;h3 id=&#34;growl-python-bindingをインストール&#34;&gt;Growl Python bindingをインストール&lt;/h3&gt;&#xA;&lt;p&gt;まずは&lt;a href=&#34;http://growl.info/&#34;&gt;Growl本家&lt;/a&gt;からGrowl SDKをダウンロードしてダブルクリックし、&lt;/p&gt;</description>
    </item>
    <item>
      <title>EmacsでPythonの設定</title>
      <link>https://blog-lampetty-net.web.app/posts/wp/380/</link>
      <pubDate>Sat, 03 Jul 2010 16:07:01 +0900</pubDate>
      <guid>https://blog-lampetty-net.web.app/posts/wp/380/</guid>
      <description>&lt;p&gt;最近Pythonいいなぁと思ってPython始めているのですが、コードを書くにあたってエディタの設定も多少しとかないと、ということでEmacsでPython回りの設定をしました。あんまりヘビーなことはしないので、とりあえず今回はpython-mode.elとflymakeの設定だけしています。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
