<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3531952331379045915</id><updated>2024-08-31T17:54:08.795+09:00</updated><category term="Python"/><category term="ITfrogs活動"/><category term="Flask"/><category term="Twitter"/><category term="AOJ"/><category term="MongoDB"/><category term="ただの紹介"/><category term="MySQL Python"/><category term="Boo"/><category term="Facebook"/><category term="Forkwell"/><category term="ICT委員会"/><category term="JOI"/><category term="OIST"/><category term="RabbitMQ"/><category term="Unity"/><category term="python MongoDB Twitter Flask"/><category term="中二病でも恋したい"/><category term="六花ちゃん"/><title type='text'>暇人なプログラマの卵日記</title><subtitle type='html'>暇人なプログラマの卵がいろいろ言います。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-6557636502395046589</id><published>2014-05-14T12:13:00.001+09:00</published><updated>2014-05-14T12:13:43.954+09:00</updated><title type='text'>ターミナルでカメラプレビューしてみよう</title><content type='html'>こんにちは、僕です。&lt;br /&gt;
&lt;br /&gt;
aaskypeとかいうの作ってみました、全然すかいぷじゃないです。&lt;br /&gt;
&lt;br /&gt;
なんか、作ってみたら面白かったのでブログ記事書いてみます。&lt;br /&gt;
&lt;br /&gt;
もともとのアイディアは下の記事のパクリです。(思想から変換アルゴリズム)&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/tompng/20120601/1338550060&quot;&gt;http://d.hatena.ne.jp/tompng/20120601/1338550060&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
まあ、ざっくり何を下かというと。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;ターミナルでインカメの画像を濃淡AAにして確認できるようにしました。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
こんな感じです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgefo-9Qvh-jTPUpWWcY-0vRIPUCnsHp_74BzkkJRVkzJ26Mzh23FUkewir2XjVKQT-20-FtFI_oZtUt7fdJGv6AVfq9kBCTNkU0T0BniR9BbjtuJysaAbSpyig_zq8YObuxTlUdTzJVr8_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-05-14+10.00.42.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgefo-9Qvh-jTPUpWWcY-0vRIPUCnsHp_74BzkkJRVkzJ26Mzh23FUkewir2XjVKQT-20-FtFI_oZtUt7fdJGv6AVfq9kBCTNkU0T0BniR9BbjtuJysaAbSpyig_zq8YObuxTlUdTzJVr8_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-05-14+10.00.42.png&quot; height=&quot;371&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
なんか、インカメの画像をみれてる感ありますよね。&lt;br /&gt;
すこし解像度をあげてみます（文字サイズを小さくしてみます）&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMQ9psamcAc7Iv20-2WanI3DecQePWgvA4c58TWh_T1a_KYyJn11J3Jfs7yWmS8-1vnDxhkjcDkm5AnJMRF_TRsJlbHxcGu7yaj-jvcIiBPAJJUkZRQlloomFXTiEEmlKXlTgg4DclGXqn/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-05-14+10.01.47.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMQ9psamcAc7Iv20-2WanI3DecQePWgvA4c58TWh_T1a_KYyJn11J3Jfs7yWmS8-1vnDxhkjcDkm5AnJMRF_TRsJlbHxcGu7yaj-jvcIiBPAJJUkZRQlloomFXTiEEmlKXlTgg4DclGXqn/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-05-14+10.01.47.png&quot; height=&quot;372&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
濃淡AAの表現力ぱないですね。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
技術的なお話&lt;/h2&gt;
&lt;div&gt;
濃淡AAへの変換は本家のアルゴリズムとほとんど同じで以下の用になっています。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHUdAJioTAVzoTA2m7US-k859MCG7wuGGXqhwld8j2tDGVcBEthqzLaiQOMKgCMguaavF9whyphenhyphen3bstp_ofE3m6Waa6y5_Ng_pQQ8pzymeH5qaDrMbReyCQkXgoiyCgHdXCpmTqyQy7F759a/s1600/aaskype%E8%AA%AC%E6%98%8E.003.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHUdAJioTAVzoTA2m7US-k859MCG7wuGGXqhwld8j2tDGVcBEthqzLaiQOMKgCMguaavF9whyphenhyphen3bstp_ofE3m6Waa6y5_Ng_pQQ8pzymeH5qaDrMbReyCQkXgoiyCgHdXCpmTqyQy7F759a/s1600/aaskype%E8%AA%AC%E6%98%8E.003.jpg&quot; height=&quot;480&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
あとは最初はprintfで出力してたのですが、遅いってなってputsにかえて早くなりました。しかし、各フレームごとに順次書き出ししているので遅いです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ソースコードは以下にあるので時間がある人はみてみてください。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ソースコード：&lt;a href=&quot;https://github.com/higumachan/aaskype&quot;&gt;https://github.com/higumachan/aaskype&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
skypeという名前がついてるのに全然Skypeじゃないのは勘弁してください&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
夢のターミナル生放送&lt;/h2&gt;
&lt;div&gt;
このプログラムと&lt;a href=&quot;http://screenx.tv/&quot;&gt;http://screenx.tv/&lt;/a&gt;を組み合わせることによりターミナルを使った生放送ができました！！(実証済み)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
以上です。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/6557636502395046589/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/05/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6557636502395046589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6557636502395046589'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/05/blog-post.html' title='ターミナルでカメラプレビューしてみよう'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgefo-9Qvh-jTPUpWWcY-0vRIPUCnsHp_74BzkkJRVkzJ26Mzh23FUkewir2XjVKQT-20-FtFI_oZtUt7fdJGv6AVfq9kBCTNkU0T0BniR9BbjtuJysaAbSpyig_zq8YObuxTlUdTzJVr8_/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-05-14+10.00.42.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8972377093908246161</id><published>2014-04-09T11:46:00.000+09:00</published><updated>2014-04-09T11:46:39.829+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="RabbitMQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>高専プロコン競技部門練習場にツイッターボットを導入したお話</title><content type='html'>&lt;a href=&quot;http://procon2014-practice.oknct-ict.org/&quot;&gt;競技練習場&lt;/a&gt;のツイッターボット(&lt;a href=&quot;https://twitter.com/KPCP2014&quot;&gt;@KPCP2014&lt;/a&gt;)を作りましたー。&lt;br /&gt;
&lt;br /&gt;
別にそんなに難しい話じゃないんですけどね。&lt;br /&gt;
&lt;br /&gt;
一応、(自分なりに)お行儀よく書いてみたから記事にしておきます。&lt;br /&gt;
&lt;br /&gt;
TwitterのAPIを叩くためのライブラリはPythonで有名なTwitterライブラリであるtweepy(&lt;a href=&quot;https://github.com/tweepy/tweepy&quot;&gt;https://github.com/tweepy/tweepy&lt;/a&gt;)を使いました。(競技場はPythonで書かれています)&lt;br /&gt;
&lt;br /&gt;
ふつうにやった場合。&lt;br /&gt;
ー＞　HTTPの通信のレスポンスを返す間にTwitterのAPIにアクセスしてツイートする。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
＿人人人人人人人人＿&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
＞　お行儀が悪い　＜&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
￣Y^Y^Y^Y^Y^Y^Y￣&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
だって、HTTPのレスポンスを返す間に他のところにHTTPリクエストを送るとかなんかエグいじゃないですか。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
今回はツイートだけできればいいのでQueueにツイートをためておいて。Workerプロセスを立ち上げておくことでツイートを行う機構を作ってみました。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
今回使ったQueueを作るシステムは&lt;a href=&quot;https://www.rabbitmq.com/&quot;&gt;RabbitMQ&lt;/a&gt;を使いました。&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
今回作ったTweetBotシステムは&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div&gt;
├── bot_client.py&lt;/div&gt;
&lt;div&gt;
├── bot_server.py&lt;/div&gt;
&lt;div&gt;
└── messages&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; └── update_ranking.tpl&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ツイートのJinja2のテンプレートをmessagesの中に配置します。(Jinja2なのはWeb側に使ってるフレームワークがFlaskだからです)&lt;/div&gt;
&lt;div&gt;
あとは、ツイートサーバとなるbot_server.pyを&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
nohup python bot_server.py &amp;amp;&lt;/blockquote&gt;
みたいな感じで実行してやって。&lt;br /&gt;
&lt;br /&gt;
ツイートを行いたいPythonスクリプトにて&lt;br /&gt;
import bot_client&lt;br /&gt;
bot_client.tweet(テンプレートファイル名, パラメータ...)&lt;br /&gt;
みたいな感じで関数を呼んでやればツイートを行うことが出来ます。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
まとめ&lt;/h3&gt;
いつもみたいに適当にツイート機能を実装してしまえばよかったんですけど、そろそろ、Python+Flask環境から簡単に構築できるツイートボットシステムが欲しかったので作ってみました。作った奴はまとめてgithubにあげてあります。(&lt;a href=&quot;https://github.com/higumachan/python_tweet_bot&quot;&gt;https://github.com/higumachan/python_tweet_bot&lt;/a&gt;)暇があったら見てみてください。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8972377093908246161/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/04/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8972377093908246161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8972377093908246161'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/04/blog-post.html' title='高専プロコン競技部門練習場にツイッターボットを導入したお話'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-7158927300510209838</id><published>2014-04-02T20:26:00.001+09:00</published><updated>2014-04-02T20:26:48.053+09:00</updated><title type='text'>ICT委員会(team.老害)の勢力をあげて高専プロコン競技部門の練習場を作ってみた(爆速開発)</title><content type='html'>&lt;h1&gt;
ICT委員会(team.老害)の勢力をあげて高専プロコン競技部門の練習場を作ってみた(爆速開発)&lt;/h1&gt;
高専プロコン競技部門のルールも公開されたので&lt;br /&gt;
高専プロコン競技部門の練習場をICT委員会 team.老害で作ってみました。
&lt;a href=&quot;http://procon2014-practice.oknct-ict.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuYPZWtFn5YxU0Ylj4JQ257FtVhwQ6lujoMGwAgDdysWjjTjeMMw8m0dw3wqIhWfvHksdoiMw-QZpYf6gmVcrYOL8SwQvGwM1LH8GYgctviVPjnzZa9NroMSl5eo5-EnTAA8cdHWzbRSQ1/s320/%E3%82%B9%E3%82%AF%E3%83%AA%EF%BF%BD%25B%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-04-02+20.20.27.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
担当&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/orisano&quot;&gt;@orisano&lt;/a&gt; 問題作成プログラムを作成&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/maruuusa83&quot;&gt;@maruuusa83&lt;/a&gt; サーバの設定・デプロイ環境の構築などのインフラ担当&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/goya813&quot;&gt;@goya813&lt;/a&gt; 回答ファイルの評価プログラムを作成&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/higumachan725&quot;&gt;@higumachan725&lt;/a&gt; その他の開発と手動ソルバー&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/marin72_com&quot;&gt;@marin72_com&lt;/a&gt; 広報担当&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
実際にやったこと&lt;/h2&gt;
&lt;h4&gt;
ICT委員会いつもの構成(Python+Flask+MongoDB)でWebシステムを構築しました。&lt;/h4&gt;
具体的には&lt;a href=&quot;https://twitter.com/orisano&quot;&gt;@orisano&lt;/a&gt;や&lt;a href=&quot;https://twitter.com/goya813&quot;&gt;@goya813&lt;/a&gt;の作ったシステムを結合して。データベースのつなぎやWebUI等を作って。&lt;a href=&quot;https://twitter.com/maruuusa83&quot;&gt;@maruuusa83&lt;/a&gt;の構築してくれたサーバに置くお仕事です！&lt;br /&gt;
&lt;h4&gt;
普段あんまり好きじゃないCSSを書きました&lt;/h4&gt;
本当にCSSは好きじゃないです！&lt;br /&gt;
でも、必要だし今回は他の人に分担されてない仕事は僕がやるという暗黙の了解があったので書きました。&lt;br /&gt;
最初はbootstrapを使おうとしたのですが。そもそも、あんまりあのデザインが好きじゃないし使い方もすぐに腹落ちしてこなかったので、素で書くことにしました。&lt;br /&gt;
幸いにも&lt;a href=&quot;https://twitter.com/kasahara716&quot;&gt;かさはらさん&lt;/a&gt;が作ってくださっていた3年前のプロコンの時の&lt;a href=&quot;http://procon2011.kasahara716.com/&quot;&gt;練習場&lt;/a&gt;があったのでそのデザインを参考にしながらCSSを書くことで事なきを得ることが出来ました。　&lt;br /&gt;
&lt;h5&gt;
ありがとうございました！　&lt;a href=&quot;https://twitter.com/kasahara716&quot;&gt;かさはらさん&lt;/a&gt;！&lt;/h5&gt;
&lt;h4&gt;
手動ソルバーを書く&lt;/h4&gt;
今年の問題は問題だけ出されても画像処理が絡んでしまうのできっと練習場公開してからしばらくは誰も投稿してくれないだろうなと思いました。&lt;br /&gt;
そしたら&lt;br /&gt;
&lt;h2&gt;
悲しい&lt;/h2&gt;
じゃないですか…
それなので、手動ソルバーを作りました。&lt;br /&gt;
&lt;h4&gt;
開発言語はcoffeescriptです&lt;/h4&gt;
もしかしたら、なにそれ美味しいの？　って人もいるかもしれないですが、javascriptにコンパイルすることの出来る良い言語です。javascriptのレガシィっぽい部分を取り除きpythonみたいなコードを書くことが出来ます。更に僕は情弱なのでJavascriptのプロトタイプ?とかを使ってclassっぽいことをしている概念がよくわかりません。しかし、coffeescriptを使えばpythonみたいな感じでclassを使うことが出来ます。(書き方に少し癖がありますが…)&lt;br /&gt;
&lt;h4&gt;
とっても楽しいです&lt;/h4&gt;
&lt;h4&gt;
みなさんもぜひ試してみてください！！&lt;/h4&gt;
あと、canvasを自分でゴリゴリするのは嫌だったので&lt;a href=&quot;http://kineticjs.com/&quot;&gt;kineticjs&lt;/a&gt;というライブラリを使いました。このライブラリもよく使うライブラリなのですがcanvasの面倒くさいところを全部肩代わりしてくれるので大好きです。&lt;br /&gt;
&lt;h3&gt;
広告を厳選する&lt;/h3&gt;
せっかくだし、&lt;s&gt;ネタな&lt;/s&gt;競技部門の人に注目されやすい(要出典)商品をamazonさんから選んで貼り付けました！&lt;br /&gt;
&lt;h2&gt;
そんなこんなで出来たのが&lt;/h2&gt;
&lt;h2&gt;
&lt;a href=&quot;http://procon2014-practice.oknct-ict.org/&quot;&gt;高専プロコン競技部門練習場&lt;/a&gt;です&lt;/h2&gt;
&lt;h3&gt;
みなさんがいっぱい使ってくれると嬉しいなぁと思っています！&lt;/h3&gt;
</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/7158927300510209838/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/04/ictteam.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7158927300510209838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7158927300510209838'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2014/04/ictteam.html' title='ICT委員会(team.老害)の勢力をあげて高専プロコン競技部門の練習場を作ってみた(爆速開発)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuYPZWtFn5YxU0Ylj4JQ257FtVhwQ6lujoMGwAgDdysWjjTjeMMw8m0dw3wqIhWfvHksdoiMw-QZpYf6gmVcrYOL8SwQvGwM1LH8GYgctviVPjnzZa9NroMSl5eo5-EnTAA8cdHWzbRSQ1/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%EF%BF%BD%25B%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2014-04-02+20.20.27.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-388348770288545463</id><published>2013-12-09T21:35:00.000+09:00</published><updated>2013-12-09T21:35:00.963+09:00</updated><title type='text'>にゃおちゃんがかわいそうだ</title><content type='html'>
&lt;p&gt;※『ICTAdventCalender』参加中。9日目の記事です。&lt;/p&gt;

&lt;p&gt;皆さんこんばんは&lt;a href=&quot;https://twitter.com/higumachan725&quot;&gt;@higumachan&lt;/a&gt;です。&lt;/p&gt;

&lt;p&gt;本日はICTAdventCalenderの9日目ですね！なんか、昨日は一年生の後輩ちゃんがいい投稿してくれました。しかし、僕はそんなこと出来ないのでまた作ったもの紹介でもしようかなと思います。&lt;/p&gt;

&lt;p&gt;では、本日紹介するものを作った経緯はこの人です。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://pbs.twimg.com/profile_images/378800000621678186/3496a882f59335611e882374f6b4b67f.png&quot; alt=&quot;@orisano&quot; /&gt;&lt;/p&gt;

&lt;p&gt;顔画像だからNGっぽいけどコレTwitterアイコンなので…&lt;/p&gt;

&lt;p&gt;ICTAdventCalenderの最初のはてブの記事でこのような場面がありました&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifZt7vlI5dlxN-rCSIACRbKlwMFT-axJopUI0q4PiqsOBs__vOVBeqH5YkFDmsMHbO_4En47kuDQ9fuwJqmjuZqts_JbxRUJbCms2JKWihj6VMSKKCnYije9n-BB49Rip1jFEddYRNd16p/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+18.10.36+1.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifZt7vlI5dlxN-rCSIACRbKlwMFT-axJopUI0q4PiqsOBs__vOVBeqH5YkFDmsMHbO_4En47kuDQ9fuwJqmjuZqts_JbxRUJbCms2JKWihj6VMSKKCnYije9n-BB49Rip1jFEddYRNd16p/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+18.10.36+1.png&quot; /&gt;&lt;/a&gt;。&lt;br/&gt;
なっさまにちなんで725がにゃおちゃんのスターです。最初は連打ツール使ったのかと思ったんですけどね。&lt;/p&gt;

&lt;h1&gt;&lt;img width=&quot;50px&quot; height=&quot;50px&quot; src=&quot;http://pbs.twimg.com/profile_images/378800000621678186/3496a882f59335611e882374f6b4b67f.png&quot;/&gt;「全部手動でやってます」&lt;/h1&gt;

&lt;h1&gt;Oh…&lt;/h1&gt;

&lt;p&gt;「なぜ？」と聞いてみました。&lt;/p&gt;

&lt;h1&gt;&lt;img width=&quot;50px&quot; height=&quot;50px&quot; src=&quot;http://pbs.twimg.com/profile_images/378800000621678186/3496a882f59335611e882374f6b4b67f.png&quot;/&gt;「自動は愛が無いと言われた…」&lt;/h1&gt;

&lt;h3&gt;可哀想に…愛って…&lt;/h3&gt;

&lt;p&gt;にゃおちゃん…いつも可哀想… &lt;br/&gt;
椅子投げられそうになるし…(なっさまに) &lt;br/&gt;
プログラム書くか寝るか死ぬかどれかにしろって言われるし(まっさまに)&lt;/p&gt;

&lt;p&gt;ということなので、今回はにゃおちゃんを救って見ようかと思ってこんなの作ってみました。&lt;/p&gt;

&lt;h1&gt;命名:nyao_saver&lt;/h1&gt;

&lt;p&gt;綴りが間違ってるかも…&lt;/p&gt;

&lt;p&gt;今回は私事ながら最近はまってるChromeExtensionです。&lt;/p&gt;

&lt;p&gt;何をするものかというとですね…もうわかってますよね！&lt;/p&gt;

&lt;h1&gt;自動的にはてなスターを送れます&lt;/h1&gt;

&lt;p&gt;えっ？　愛がどうとかってどうなのかって？　部員が部員のために作ったもんだぞ！愛が無いわけ無いだろ！(注：僕はけっしてホモではありません)&lt;/p&gt;

&lt;p&gt;使い方!&lt;/p&gt;

&lt;pre&gt;
git clone git@github.com:higumachan/nyao_saver.git
&lt;/pre&gt;


&lt;p&gt;そして取り込んで！&lt;/p&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT5Oh9U0AAbNdr9NnLls13hOlWKMqKHRh_UdpRBWrKgYqnpjuUiQHSJjAsNpmXw-z6pbAxTabm8U8h09tXJjGuFBSGiNrKdBcKh_XWgZ6hQXZD5gC5LcC6qgOhH_TVc5MnRH53ybVGJYDJ/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-09+21.30.10.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT5Oh9U0AAbNdr9NnLls13hOlWKMqKHRh_UdpRBWrKgYqnpjuUiQHSJjAsNpmXw-z6pbAxTabm8U8h09tXJjGuFBSGiNrKdBcKh_XWgZ6hQXZD5gC5LcC6qgOhH_TVc5MnRH53ybVGJYDJ/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-09+21.30.10.png&quot; /&gt;&lt;/a&gt;
&lt;p&gt;適切なはてなブログに飛んで！(知らない人で試しちゃいけません)
&lt;/p&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaW_1uuJ8ye_5bjsMf_VfhdeSgr0mYHTK_oVvZRRWCHRQR8-I-AAJEcryjYz2wKqexIL58qy_6CMSSI9Quqx6gTzblQ_w_aRvwVJV39toWLCOtEIwjuNQuG_1eWq1-lV7c77g1LvV6vJqK/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-09+21.32.00.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaW_1uuJ8ye_5bjsMf_VfhdeSgr0mYHTK_oVvZRRWCHRQR8-I-AAJEcryjYz2wKqexIL58qy_6CMSSI9Quqx6gTzblQ_w_aRvwVJV39toWLCOtEIwjuNQuG_1eWq1-lV7c77g1LvV6vJqK/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-09+21.32.00.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;出てきたデフォルトっぽいアイコンをクリック
&lt;/p&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb-JCHCG5169nprASFJYlKEMqGs0Ia7uWnvctH6ddwDnFdxQoOKxb18295L2N25HEXyaXOrp7qSm8c4rXZ2CkdGZ7vzp-7FsTIOM7e_s2NKXtXfOUqfuP-t4abNBdyz2Q0f486NDxpZd4Z/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+21.19.42+1.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb-JCHCG5169nprASFJYlKEMqGs0Ia7uWnvctH6ddwDnFdxQoOKxb18295L2N25HEXyaXOrp7qSm8c4rXZ2CkdGZ7vzp-7FsTIOM7e_s2NKXtXfOUqfuP-t4abNBdyz2Q0f486NDxpZd4Z/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+21.19.42+1.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;送りたいスターの数を入力してSubmit
&lt;/p&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqdXTh9ukUt4yPWrkYjr0_1ppImZBWu3OKrHAWpVT2xx3VHDeODH36avTDVOs7c6vpBPpKrTcma5uA1p-FmIfaufER99ASudtM_gRuULqkFq2yXN4atSeEKBNYO1kvkGHYkBDOgcUMD83o/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+21.19.57.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqdXTh9ukUt4yPWrkYjr0_1ppImZBWu3OKrHAWpVT2xx3VHDeODH36avTDVOs7c6vpBPpKrTcma5uA1p-FmIfaufER99ASudtM_gRuULqkFq2yXN4atSeEKBNYO1kvkGHYkBDOgcUMD83o/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+21.19.57.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;エラー処理なんて微塵もやってませんだって、１時間で作った突貫工事ですもの！&lt;/p&gt;

&lt;p&gt;ちなみに僕のブログはBloggerなので試せませんごめんなさい…&lt;/p&gt;

&lt;h1&gt;ソースとかは&lt;a href=&quot;https://github.com/higumachan/nyao_saver&quot;&gt;ここ&lt;/a&gt;に載ってるので暇な人は見てください。(適当です)&lt;/h1&gt;

&lt;p&gt;以上支離滅裂なICTAdventCalender 9日目でした！&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/388348770288545463/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/12/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/388348770288545463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/388348770288545463'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/12/blog-post.html' title='にゃおちゃんがかわいそうだ'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifZt7vlI5dlxN-rCSIACRbKlwMFT-axJopUI0q4PiqsOBs__vOVBeqH5YkFDmsMHbO_4En47kuDQ9fuwJqmjuZqts_JbxRUJbCms2JKWihj6VMSKKCnYije9n-BB49Rip1jFEddYRNd16p/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-12-09+18.10.36+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-4222498074803163363</id><published>2013-03-13T15:04:00.000+09:00</published><updated>2013-03-14T13:58:29.648+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>かわいいぼたんジェネレータを作ってみた！</title><content type='html'>
&lt;h3&gt;&lt;a href=&quot;http://higumachan725-aoj.blogspot.jp/2012/12/web.html&quot;&gt;前作ったこれ&lt;/a&gt;を改造したものです&lt;/h3&gt;

&lt;p&gt;だれでも、簡単に◯◯ちゃんかわいいと呟くことの出来るボタンを作ることができます。&lt;/p&gt;

&lt;p&gt;どのように作るかと言いますと&lt;/p&gt;

&lt;p&gt;まずしたのページにてボタンを作るボタンをクリックします&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://kawaii.contents4you.com&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDazmhqaIsXJmci0tCz5KhSZIfi2TS6OwSAc7ZfMuBw1qqPDDn5LIKbFpDU41vvDt7_Pq8_iTbHj2ziCXz8LpZEanbBFWSurjFAGkc_u3cUFN82FkHL1rXyWX9uDCPy0kEKMDwwmRHT8W2/s320/index.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;次に１つだけの入力フォームにかわいいと呟きたい相手の名前を入力します（ちゃんは自動的につくので気をつけてください）&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://kawaii.contents4you.com/add&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHjpQIifuwHsSJOd9ThwRZsmo94c2b8uFyXQdgqPtPdyQdqK4vPYBCsVVNCzK61_GjNjH-FXxwetDDHzQlBeEPXDJrbygWegvm0cN7s0UK0DQGO13gR92Qg3pxfy0mEgWUzMTjlh8YWjlx/s320/input.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;すると、 &lt;br/&gt;
&lt;a href=&quot;http://kawaii.contents4you.com&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo2t1iQe-dE7vtMY9IaUxtltsUY4F2dkbzlt9bzllexoKzYITIWNr_aLO-c_WOu1wTkmG1tnbllU0eV3pWKUwVmbGxMs99rZ_G2s1K6MBm3IvUTQfbY8rnjLkNb7r8LmBxiv5wAvstjFuY/s320/finish.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;大体は前回と同じなのですが、今回実装した面白いことを２つほど紹介したいと思います。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;画像を自動的に取得してくる&lt;/li&gt;
&lt;li&gt;タイトル画像の自動生成&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;まず、１についてなのですが、&lt;a href=&quot;http://image.naver.jp/&quot;&gt;NAVER画像&lt;/a&gt;で項目について検索をかけてそのレスポンスをスクレイピングするだけです。&lt;/p&gt;

&lt;p&gt;ソースは以下のようになってます。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/anonymous/5149612.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;これは&lt;a href=&quot;http://higumachan725-aoj.blogspot.jp/2013/03/blog-post.html&quot;&gt;前回書いた記事&lt;/a&gt;のクローラファーム上で動いています&lt;/p&gt;

&lt;p&gt;これで、画像のurlを取得して表示という流れです。&lt;/p&gt;

&lt;p&gt;２つ目は文字列を受け取ってPILで処理して画像に変換！　…と言いたいところですが…今回はインチキをしましたｗ&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.simwebsol.com/imagetool/default.aspx&quot;&gt;このロゴジェネレータ&lt;/a&gt;さんを使ってまた、クローリングでかいけつしました。&lt;/p&gt;

&lt;p&gt;パラメータをつけてPOSTで送ってやるだけなんですけどね！&lt;/p&gt;

&lt;p&gt;少し、BaseCrawlerを書きなおして置かないとダメなところも出てきてしまったので。書きなおしたりもしてやりきりました。&lt;/p&gt;

&lt;p&gt;以下はソースです&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/anonymous/5149662.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;色とかも弄れるのでパラメータが多いですね…&lt;/p&gt;

&lt;p&gt;最近クローリングばっかりで問題解決してる気がするので。少し反省してちゃんとした解決方法も模索出来るようにして行きたいな〜と思っています。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/4222498074803163363/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/03/blog-post_13.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/4222498074803163363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/4222498074803163363'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/03/blog-post_13.html' title='かわいいぼたんジェネレータを作ってみた！'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDazmhqaIsXJmci0tCz5KhSZIfi2TS6OwSAc7ZfMuBw1qqPDDn5LIKbFpDU41vvDt7_Pq8_iTbHj2ziCXz8LpZEanbBFWSurjFAGkc_u3cUFN82FkHL1rXyWX9uDCPy0kEKMDwwmRHT8W2/s72-c/index.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-480090208684237399</id><published>2013-03-10T13:22:00.001+09:00</published><updated>2013-03-10T13:22:17.417+09:00</updated><title type='text'>クローラファームを作ってみたかった</title><content type='html'>&lt;h2&gt;なんだか久しぶりの更新な気がする&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;
今回はなんだか最近クローラを書く事が増えてきました。&lt;br/&gt;
なぜなんでしょうね？　まあ、TwitterAPIを常に監視したり、RSSリーダーで取って来たサイトの中にまで入ったり、アニメのデータベースが欲しいなーとか思ったり、様々な用途でクローラを書きます。&lt;/p&gt;

&lt;p&gt;そこで最近懸念しているのがサーバでクローラを動かすときに書いたスクリプトをサーバで勝手にnohupでデーモンっぽく動かしてる。&lt;br/&gt;
ほとんど処理同じなのに毎回書いたりしてたのです。(正直打鍵スピードのおかげであんまり時間は気になってなかったんだけど)&lt;/p&gt;

&lt;h3&gt;そこでその懸念の解決の為にちょっと、頑張って見ました。&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;まず、毎回同じ事を書いている事に対する解決として、ベースのクラスを作ってしまえばいいじゃん。&lt;/h4&gt;

&lt;p&gt;ってことで、こんな感じのクラスを作りました&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/higumachan/a8aee97412da92134785.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;これで、こいつを継承して、scrapingとpre_scrapingをオーバーライドしてやればおk&lt;/p&gt;

&lt;p&gt;こんかいは、HTMLのスクレイピングをする事を前提で作っちゃったのでBeautifulSoupを使ってスクレイピングしてますが。ゆくゆくはいろんなのを切り替えて使えるようにします。（必要になったら）&lt;/p&gt;

&lt;p&gt;まぁ、使ってる例はいくつかgithubに上げてるきがします。&lt;/p&gt;

&lt;h4&gt;次に、なんか一つ一つのクローラがデーモンっぽく動いてて気持ち悪いという問題&lt;/h4&gt;

&lt;p&gt;それは、クローラをまとめて置くデーモンっぽいものを作ってそれを常に動かしておくというたちを作ってみました。&lt;/p&gt;

&lt;p&gt;なんか、タスクキューとかも勉強してみたかったので&lt;a href=&quot;http://www.rabbitmq.com/tutorials/tutorial-four-python.html&quot;&gt;RabbitMQ&lt;/a&gt;を使ってみました。&lt;/p&gt;

&lt;p&gt;RabbitMQというのはタスクキューを作ってくれる奴ですね〜。公式のドキュメントがPythonを使ったサンプルが乗っていたのでこいつを選びました。&lt;/p&gt;

&lt;p&gt;こいつを使って、任意の位置にクローラのスクリプトを配置して、適当なスクリプトからクロール命令するとQueueに溜め込まれてクロールをして行くという、システムを構成しました。&lt;/p&gt;

&lt;pre&gt;

├── crawlers
│   ├── BaseCrawler.py
│   ├── BaseCrawler.pyc
│   ├── SampleCrawler.py
│   ├── SampleCrawler.pyc
│   ├── __init__.py
│   └── __init__.pyc
└── worker.py

&lt;/pre&gt;


&lt;p&gt;このように/crawlers以下にクローラを配置して行き。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/higumachan/632c97e2433a0e7d5521.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;このような感じでスクリプトを指定して、クロールするurlを入力すれば解決です。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/higumachan/CrawlerFarm&quot;&gt;ここに&lt;/a&gt;リポジトリを上げているので、気になる人はご覧ください(最小構成ですのであしからず)&lt;/p&gt;

&lt;h3&gt;これから&lt;/h3&gt;

&lt;p&gt;まだ、エンジンの指定が出来なかったり、クローラの追加がscpだったりして、あれなので。&lt;br/&gt;
1. HTMLだけじゃなくJSON,feedなどもスクレイピングできるようにする&lt;br/&gt;
2. Jenkinsとかとうまく連携してgit pushでクローラを追加するような仕組みにする&lt;/p&gt;

&lt;p&gt;というのが当面の目標ですかね。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/480090208684237399/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/03/blog-post.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/480090208684237399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/480090208684237399'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2013/03/blog-post.html' title='クローラファームを作ってみたかった'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-5381106799307488306</id><published>2012-12-31T19:05:00.000+09:00</published><updated>2012-12-31T19:05:38.082+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ICT委員会"/><title type='text'>みんなに触発されて僕も一年を振り返ってみます</title><content type='html'>&lt;p&gt;なんか、ICTの方々みんな一年振り返ってるので僕も振り返ろうと思います。&lt;/p&gt;

&lt;p&gt;しかし、僕は今年あんまり何にもやってないので自己嫌悪に陥りそうですｗｗｗ&lt;/p&gt;

&lt;h1&gt;高専プロコンへの参加&lt;/h1&gt;

&lt;h4&gt;こいつが今年で一番大きかったイベントですかね！&lt;/h4&gt;

&lt;p&gt;開発メンバーは &lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/Fokker_50&quot;&gt;@Fokker_50&lt;/a&gt;,さーりゃん,&lt;a href=&quot;https://twitter.com/norimoto1225&quot;&gt;@norimoto1225&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/tanishi345&quot;&gt;@tanishi345&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/harukin0213&quot;&gt;@harukin0213&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/XxxVr&quot;&gt;@XxxVr&lt;/a&gt; と僕の8人でした。　楽しいメンバーが揃ってたと思います。デスマをした夜も楽しかったです！&lt;/p&gt;

&lt;p&gt;僕の役目としてはネットワーク周りの絡む部分の設計から実装までをやりました。これのお陰でクローラー関連の技術には強くなりました。&lt;br/&gt;
そして、下に後輩(1年生)が二人ついて自分の下について開発してもらいました。最初は正直いって自分は実装だけしたかったし、人に何か教えたりするのは苦手なのであんまり気乗りしませんでした。&lt;br/&gt;
しかし、蓋を開けてみれば、ふたりともがんばって僕の定義したXMLのサブセットをガリガリ書いてくれましたし、&lt;a href=&quot;https://twitter.com/harukin0213&quot;&gt;@harukin0213&lt;/a&gt;はなんだかんだで僕に叱られつつ、ライブラリの一つの機能を仕上げてくれましたし、&lt;a href=&quot;https://twitter.com/XxxVr&quot;&gt;@XxxVr&lt;/a&gt;も僕に煽られながらも記事を一つ仕上げてくれました。&lt;/p&gt;

&lt;p&gt;ふたりともよく頑張ってくれたので本当に良かったです！ふたりともありがと！&lt;/p&gt;

&lt;p&gt;なんだかんだで、コンテストで賞とかとったことなかったのでそれがコンプレックスでした。でも今回のプロコンで優秀賞(準優勝)がとれてなんか肩の荷が降りた感じがしました。本当にチームのみんなには感謝していますし、結構ワンマンな気質のある自分ともうまくやって来れて本当にありがとうございました！&lt;/p&gt;

&lt;h1&gt;インターンシップ&lt;/h1&gt;

&lt;h3&gt;授業の一環で言ったインターンシップですが本当に大きな成長をすることができました。&lt;/h3&gt;

&lt;p&gt;僕はSummerTimeStudioという沖縄県内のゲーム開発会社へ行きました。
ゲーム会社ということもあり、人気があったのか沖縄高専から7人位行っていましたし、デザイナーの方のインターンもいたのでオフィスの中はすごく人が多かったですｗｗ&lt;/p&gt;

&lt;p&gt;インターンの内容はどれくらい話していいのかわからないので多くは語りません。&lt;/p&gt;

&lt;p&gt;でも、僕がICT委員会に入るきっかけとなったゆうすけ先輩と再会できましたし、自分の面倒を見て下さったえんじさんには本当に良い人でいろんな面白いお話を聞くことができました。&lt;/p&gt;

&lt;p&gt;ゲームを作る技術だけじゃなくて、働き方というのを多く学ばせていただきました。本当に良い体験ができましたありがとうございます！&lt;/p&gt;

&lt;h1&gt;ピンク先輩とのWebアプリ開発&lt;/h1&gt;

&lt;h3&gt;&lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;さんと一緒にいっぱいWebサービスを作りました&lt;/h3&gt;

&lt;p&gt;何を作ったかとか忘れてしまいましたがｗｗｗ、開発力の向上としてとても自分の力になりました。やはり、実装力だけあってもそれを使わなきゃ意味無いですし正直訛ってしまいます。なので、本当に湯水の如くアイディアを出してくれる&lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;には感謝していますし、正直&lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;さんがいなくなる来年に一抹の不安感じますｗｗｗまあ頑張りますが！　&lt;/p&gt;

&lt;h1&gt;逆求人フェスティバルに参加した&lt;/h1&gt;

&lt;h3&gt;&lt;a href=&quot;http://www.studenthunting.com/event/it/&quot;&gt;逆求人フェスティバル&lt;/a&gt;に謎のつてで参加させていただきました。&lt;/h3&gt;

&lt;p&gt;自分のプロフィールとかやってきたこととかを登録して、企業側がこの人に会いたいっていう感じで出して企業が学生を選ぶって形の求人イベントでした。正直初めての就職活動ですし、その時点でも自分はまだ就職にするか、進学にするかを決めていなかったので、場違い感がありましたし、しかも、学生一人ひとりにブースが用意されているのですが、自分のブースの両隣が東大生という始末ｗｗｗすこし運営に悪意を（ゲフンゲフン）&lt;/p&gt;

&lt;h3&gt;しかし、全部で9タームある面会が自分は全部埋まりました！&lt;/h3&gt;

&lt;p&gt;結構いま有名な企業さんとかも自分のところへ来ていただいて、とても良かったです！&lt;/p&gt;

&lt;p&gt;僕は進路を就職ではなく進学に決めてしまいましたが、この経験を次に生かしていきたいと思います！&lt;/p&gt;

&lt;h1&gt;xHago3に登壇&lt;/h1&gt;

&lt;h3&gt;忘れていました、なんかシステム作って意外と好評でした。&lt;/h3&gt;

&lt;p&gt;いつも、ローテクな感じのサービスをライブラリをジャブジャブ使って開発していて、開発速度は上がっているのですが、ガリガリとした実装力が落ちて来ている気がしました。なのでWebSocketのサーバをTCPレイヤのライブラリの上に実装してみました。といっても、プロトコルをちょいちょい実装するだけなのですが、それをうまく使いスライドの上にツイッターTLを流すようなシステムを作って発表しました。&lt;/p&gt;

&lt;h1&gt;まとめ&lt;/h1&gt;

&lt;p&gt;正直、後半に行くにつれて息切れしてる感がありますが今年はとても充実していて楽しい一年間でした。理由としてはやはりICT委員会がうまく周り出したということです。僕はこの委員会に入って4年ですが1年の時とは全然雰囲気が違って良い感じになっています。(正直今の一年生が羨ましいですｗｗ)しかし、ICT委員会は技術者集団としての色を失って来てしまいつつあるのでそこのところは少し心配です。やはり、僕らは技術力があってなんぼなので早く後輩達にも技術力をつけていって欲しいです。(まあ修行しろと)
そんな感じです。僕はあんまり目標とか立てないので来年の抱負とか書きませんｗｗｗ&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/5381106799307488306/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5381106799307488306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5381106799307488306'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/blog-post.html' title='みんなに触発されて僕も一年を振り返ってみます'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-6828394003035044761</id><published>2012-12-13T16:10:00.000+09:00</published><updated>2012-12-13T16:10:18.009+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="JOI"/><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>PythonとFlaskとMongoDBで後輩のお手伝いをした話</title><content type='html'>&lt;h2&gt;昨日は&lt;a href=&quot;http://www.ioi-jp.org/&quot;&gt;JOI&lt;/a&gt;(情報オリンピック)の予選の模擬試験を後輩(&lt;a href=&quot;https://twitter.com/kagamiz&quot;&gt;@kagamiz&lt;/a&gt;)がやるのをお手伝いしました&lt;/h2&gt;

&lt;p&gt;システム側の運営をやった感じです。（&lt;a href=&quot;https://twitter.com/kagamiz&quot;&gt;@kagamiz&lt;/a&gt;は問題を作りました）&lt;/p&gt;

&lt;p&gt;今回もMongoDB+Flaskで頑張りました。&lt;/p&gt;

&lt;h3&gt;実装&lt;/h3&gt;

&lt;p&gt;今回の主な実装となったのは&lt;br/&gt;
1. ログイン処理&lt;br/&gt;
2. 解答の提出処理&lt;br/&gt;
3. 採点スクリプト&lt;/p&gt;

&lt;p&gt;の3つです。&lt;/p&gt;

&lt;p&gt;1つ目はlogin用の使いまわしやすいモジュールを自分で書いてあるのでそれをクローンしてくるだけで瞬殺でした。&lt;/p&gt;

&lt;p&gt;MongoDBで
 {_id: int, username: string, passwd: string} みたいな感じのコレクションを用意しておいて
以下のように&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;!python

import functools
from flask import session

def require_login(func):
@functools.wraps(func)
def wrapeer(*args, **kwargs):
    if (session.has_key(&quot;username&quot;) == True and
    session.has_key(&quot;passwd&quot;) == True):
        user = g.db.users.find_one({&quot;username&quot;: session[&quot;username&quot;]});
        if (user == None):
            return (&quot;Invalid User&quot;);
        kwargs[&quot;user&quot;] = user;
    else:
        path = request.path;
        get_request = urllib.urlencode({
            &quot;redirect&quot;: path
        });
        return (redirect(&quot;/login?&quot; + get_request));

    return func(*args, **kwargs);
return wrapeer;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こんな感じで書いてこれをViewのデコレータにしてあげればデコレータをつけたViewに入るときにloginしていなければログイン画面へリダイレクトするという処理がかけます(うーん便利だなーデコレータは！)
Pythonのデコレータはすごく便利なので後日まとまって記事がかけるといいな〜と思っています。&lt;/p&gt;

&lt;p&gt;2つ目はフォルダのパーミッションに気をつけさえすればそんなに難しいことではありません。&lt;/p&gt;

&lt;p&gt;3つ目は頑張って書きました。
正直データベースからデータを引っ張ってきてゴニョゴニョするだけです。&lt;/p&gt;

&lt;h3&gt;参加状況&lt;/h3&gt;

&lt;p&gt;最初は&lt;a href=&quot;http://www.okinawa-ct.info/w/index.php?%E5%A7%94%E5%93%A1%E4%BC%9A%2FICT%E5%A7%94%E5%93%A1%E4%BC%9A&quot;&gt;ICT委員会&lt;/a&gt;(僕の入ってる部活のようなものです)内でやる厳かなものだと思ってたのですが&lt;a href=&quot;https://twitter.com/kagamiz&quot;&gt;@kagamiz&lt;/a&gt;くんがTwitterで一般の人にも告知したところ。なんと&lt;strong&gt;128&lt;/strong&gt;人も参加者が来ました（切りが良い！）
なんか、落としたらどうしようって感じで怖かったです。&lt;/p&gt;

&lt;h3&gt;トラブル&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;ソースファイルの提出が一時間できなくなった(そこまで致命的ではない)&lt;/li&gt;
&lt;li&gt;登録処理が5分間ほどできなくなった(致命的)&lt;/li&gt;
&lt;li&gt;採点する際に空ファイルを提出された時に正解と出してしまっていた(致命的)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;1に関しては些細なミスが招いたものですでに他の解凍ファイルを提出した状況下でしかテストをおこなっていなかったことに起因します。これからはテストをもっとしっかりやりたい。&lt;/p&gt;

&lt;p&gt;2に関しては登録した時の確認メールを送る処理の中でこけていました。原因の究明も大事なのですがかなり致命的な場所でのエラーだったので、一旦メール確認の機能を切ることにより対処しました。&lt;/p&gt;

&lt;p&gt;3は解答ファイルのほうが小さかった場合の処理のbrakeの前にフラグを折ってなかったことに起因しました。&lt;/p&gt;

&lt;p&gt;まあ、致命的な奴は5分くらいで対処できたので初めてにしては上出来なのではないでしょうか？&lt;/p&gt;

&lt;h3&gt;まとめ&lt;/h3&gt;

&lt;p&gt;正直、短時間で100人以上が同時に参加するサイトを管理するという。経験が少なかったので短い間でしたけどその体験ができてよかったです。&lt;/p&gt;

&lt;p&gt;まあ、いくつかトラブルがありましたが無事終了させることがあってよかったです。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/6828394003035044761/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/pythonflaskmongodb.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6828394003035044761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6828394003035044761'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/pythonflaskmongodb.html' title='PythonとFlaskとMongoDBで後輩のお手伝いをした話'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-2928028598485056818</id><published>2012-12-08T08:03:00.000+09:00</published><updated>2012-12-08T08:04:33.844+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><category scheme="http://www.blogger.com/atom/ns#" term="中二病でも恋したい"/><category scheme="http://www.blogger.com/atom/ns#" term="六花ちゃん"/><title type='text'>六花ちゃんが可愛いすぎて簡単なWebサービス作ってみました！</title><content type='html'>&lt;h3&gt;最近&lt;a href=&quot;http://www.anime-chu-2.com/&quot;&gt;中二病でも恋したい&lt;/a&gt;にはまっています！&lt;/h3&gt;

&lt;p&gt;なぜはまっているかというと&lt;/p&gt;

&lt;h1&gt;六花ちゃんが可愛いからです&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB1JOYeapMioazbkW-r7EacL1um6GHJM7hChetT7fRes6wc6zFss9NudZ39eSAhfzl5q1jGwrLFa-rD1R_FAH6Dte2AzoZlJDIrVZgEJhJZvoYbdNkjqj8Fz4dWkhI3EbGXdOYDZCuev1t/s320/rikka1.jpeg&quot; alt=&quot;りっかちゃん&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;もう一度言います&lt;/h3&gt;

&lt;h1&gt;六花ちゃんが可愛いからです&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjux9wniIDoQfQpDjEpQPxdUuUjTKZqE8k_fh7Bcgu2hpf95TA8xrhjKQaibj6RuYRw5gR1sVzfvTKBM011fCP5a6roVeTJB05jOZ4uktmnyimT23YzXgxywkIgDyXwHwJIwrsGqKHjoGUt/s320/rikka2.jpg&quot; alt=&quot;りっかちゃん&quot; /&gt;&lt;/p&gt;

&lt;p&gt;そんなそんな感じでただの萌豚な僕なのですが&lt;strong&gt;六花ちゃん&lt;/strong&gt;が可愛すぎてこんなもの作ってみました。&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;http://rikka.contents4you.com&quot;&gt;りっかちゃんかわいいぼたん&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;このボタンを押すとTwitterの認証へ飛び認証すると　「りっかちゃんかわいい」とともに六花ちゃんの画像をつぶやきます。&lt;/p&gt;

&lt;p&gt;開発言語はいつもの通りPythonです。
フレームワークもいつもの通りFlaskを使いました。&lt;/p&gt;

&lt;p&gt;今回のサービスは一応Twitter認証を行うので自分で作った&lt;a href=&quot;https://github.com/higumachan/flask_twitter&quot;&gt;Flask用のTwitterプラグイン&lt;/a&gt;を使いました。そのプラグインについては&lt;a href=&quot;http://higumachan725-aoj.blogspot.jp/2012/04/flasktwitteroauth.html&quot;&gt;この記事&lt;/a&gt;で詳しく書いてあります。&lt;/p&gt;

&lt;p&gt;別に今回は殆ど思いつきで何も考えずに作ったので何かすごい技術を使ったわけではありません。しかしマイクロフレームワークの強みを生かして本当にすぐに作りました。&lt;/p&gt;

&lt;h2&gt;みなさん！&lt;strong&gt;りっかちゃん&lt;/strong&gt;は可愛いです！&lt;/h2&gt;

&lt;p&gt;しかし、どうせ来季になると新しい嫁ができるので早いところ◯◯可愛いぼたんジェネレータにしていきたいと思います。&lt;/p&gt;

&lt;h2&gt;皆さんもぜひりっかちゃんかわいいと呟いて見ましょう&lt;/h2&gt;

&lt;h2&gt;&lt;a href=&quot;http://rikka.contents4you.com&quot;&gt;http://rikka.contents4you.com&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://rikka.contents4you.com&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH3mZ8cm10bgODYkWb-3n7CtERjO03S6ZPSCNMbDHMylEqxuqjE3yHcYmyYKBxXc-drJRXhfzl_hJ2pm4TS-qX7bcqRCX1qJ_kyqoE2cfL9ONGd3e7O5j5whFtM_fkcKD31vclJqObDD1g/s320/rikka3.jpg&quot; alt=&quot;http://blog-imgs-51.fc2.com/m/u/t/muttan0920/360bcb51-s.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/2928028598485056818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/web.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2928028598485056818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2928028598485056818'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/12/web.html' title='六花ちゃんが可愛いすぎて簡単なWebサービス作ってみました！'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB1JOYeapMioazbkW-r7EacL1um6GHJM7hChetT7fRes6wc6zFss9NudZ39eSAhfzl5q1jGwrLFa-rD1R_FAH6Dte2AzoZlJDIrVZgEJhJZvoYbdNkjqj8Fz4dWkhI3EbGXdOYDZCuev1t/s72-c/rikka1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-5735771467748108718</id><published>2012-11-17T22:23:00.000+09:00</published><updated>2012-11-17T22:29:49.198+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>RSS配信機能を書いてみよう</title><content type='html'>&lt;p&gt;今回は前回作ったアンテナサイトでRSSを配信したいとの要望が先輩@&lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;pinkroot&lt;/a&gt;からあったのでやってみました。&lt;/p&gt;

&lt;p&gt;使用言語は僕おなじみの&lt;em&gt;Python&lt;/em&gt;です。&lt;/p&gt;

&lt;p&gt;xmlをそのままごにょごにょしてもよかったのですが今回は&lt;em&gt;あるものは使え&lt;/em&gt;の要領でライブラリを探してみました。&lt;/p&gt;

&lt;p&gt;簡単に見つかりました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.dalkescientific.com/Python/PyRSS2Gen.html&quot;&gt;PyRSS2Gen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;これを使えば一瞬で出来てしまうのでは？&lt;/p&gt;

&lt;p&gt;そんなことありませんでした、クローラをちょっとごにょごにょしてクロールした記事をまとめて一つの記事にしてRSSで配信というロジックになってしまったので。データベースのテーブルを増やしたりとかちょっとめんどくさかったです（だから簡単なものを作るならMongoDBでやろうと[要出典]）。&lt;/p&gt;

&lt;p&gt;まあ、そんなこんなで作りました。&lt;/p&gt;

&lt;p&gt;googleリーダーで呼んでみた結果下のようにとれている感じがあるので大丈夫な感じがしました&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; height=&quot;116&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJSaI54ar3qPHUsu1_mtJGqlqTA6CT9AVFVFuYJgY8c8p6Fbm-GwGtrve_G0vvWzCR0cOATSz6-n68etjZ_JipY1Fry2CwINEhyphenhyphenj1YFzCBajyoFRZTw7HzYWUPhne2pftsumvfUtmtWmdB/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2012-11-17+22.17.16.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;今回はそんな感じです。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/5735771467748108718/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/11/blog-post_17.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5735771467748108718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5735771467748108718'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/11/blog-post_17.html' title='RSS配信機能を書いてみよう'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJSaI54ar3qPHUsu1_mtJGqlqTA6CT9AVFVFuYJgY8c8p6Fbm-GwGtrve_G0vvWzCR0cOATSz6-n68etjZ_JipY1Fry2CwINEhyphenhyphenj1YFzCBajyoFRZTw7HzYWUPhne2pftsumvfUtmtWmdB/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2012-11-17+22.17.16.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-6305010576013224320</id><published>2012-11-14T21:21:00.001+09:00</published><updated>2012-12-08T08:05:49.337+09:00</updated><title type='text'>Pythonでアンテナサイトのレコメンド機能書いてみた</title><content type='html'>&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, user-scalable=no&quot;&gt;
&lt;style&gt;
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote {
    margin: 0;
    padding: 0;
}
body {
    font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, Arial, sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: #737373;
    background-color: white;
    margin: 10px 13px 10px 13px;
}
table {
 margin: 10px 0 15px 0;
 border-collapse: collapse;
}
td,th { 
 border: 1px solid #ddd;
 padding: 3px 10px;
}
th {
 padding: 5px 10px; 
}

a {
    color: #0069d6;
}
a:hover {
    color: #0050a3;
    text-decoration: none;
}
a img {
    border: none;
}
p {
    margin-bottom: 9px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    color: #404040;
    line-height: 36px;
}
h1 {
    margin-bottom: 18px;
    font-size: 30px;
}
h2 {
    font-size: 24px;
}
h3 {
    font-size: 18px;
}
h4 {
    font-size: 16px;
}
h5 {
    font-size: 14px;
}
h6 {
    font-size: 13px;
}
hr {
    margin: 0 0 19px;
    border: 0;
    border-bottom: 1px solid #ccc;
}
blockquote {
    padding: 13px 13px 21px 15px;
    margin-bottom: 18px;
    font-family:georgia,serif;
    font-style: italic;
}
blockquote:before {
    content:&quot;\201C&quot;;
    font-size:40px;
    margin-left:-10px;
    font-family:georgia,serif;
    color:#eee;
}
blockquote p {
    font-size: 14px;
    font-weight: 300;
    line-height: 18px;
    margin-bottom: 0;
    font-style: italic;
}
code, pre {
    font-family: Monaco, Andale Mono, Courier New, monospace;
}
code {
    background-color: #fee9cc;
    color: rgba(0, 0, 0, 0.75);
    padding: 1px 3px;
    font-size: 12px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
}
pre {
    display: block;
    padding: 14px;
    margin: 0 0 18px;
    line-height: 16px;
    font-size: 11px;
    border: 1px solid #d9d9d9;
    white-space: pre-wrap;
    word-wrap: break-word;
}
pre code {
    background-color: #fff;
    color:#737373;
    font-size: 11px;
    padding: 0;
}
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:10px auto;
    }
}
@media print {
 body,code,pre code,h1,h2,h3,h4,h5,h6 {
  color: black;
 }
 table, pre {
  page-break-inside: avoid;
 }
}
&lt;/style&gt;
&lt;title&gt;方法は以下の通りです&lt;/title&gt;

&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;最近mecabで遊んでみたいな〜と思う今日この頃です&lt;/p&gt;

&lt;p&gt;そこで、先輩(&lt;a href=&quot;https://twitter.com/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;)が2chまとめアンテナサイトを作っていたのでそれに今まで見た記事から別のまとめ記事をレコメンド機能を実装してみました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jigoq.com/&quot;&gt;地獄アンテナ&lt;/a&gt;
&lt;a href=&quot;http://jigoq.com/&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtJVO31MTSyLBsTpLU_UqsHI_WhTWPxNXD9gFg2ADhSgwh6nIb7nk5O1nnW6he7AaZov-ObwEVAqTY6vJXFRaFLl2TNaLu2dKEi2LOjxDrj2snNttoaWXxl_1MTgS8YpvQgydnvpTw3K-j/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2012-11-14+21.07.34.png&quot; width=&quot;600&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;方法は以下の通りです&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;RSSリーダーからとって来れるタイトルと概要をmecabで形態素解析にかける。&lt;/li&gt;
&lt;li&gt;品詞が名詞のものだけを抽出してキーワードとする。&lt;/li&gt;
&lt;li&gt;その記事のキーワードをカウンティングしてベクトルを作る&lt;/li&gt;
&lt;li&gt;記事をクリックしたらそのユーザの趣向ベクトルにその記事のベクトルを加算する&lt;/li&gt;
&lt;li&gt;レコメンドする時はユーザの趣向ベクトルと記事ベクトルの&lt;a href=&quot;http://wikiwiki.jp/cattail/?%CE%E0%BB%F7%C5%D9%A4%C8%B5%F7%CE%A5&quot;&gt;コサイン類似度&lt;/a&gt;にかけて上位を表示する。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;こんな感じでレコメンドが出来ました。&lt;br/&gt;
方法はかなり我流なところがあるのでできるのかわからないです。&lt;/p&gt;

&lt;p&gt;結果自体は自分のやつで試した結果「萌え」「美少女」のキーワードに敏感に反応するようになっていたので結構よかったのかな〜と思っています。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;今回は簡単なレコメンド機能を作る事でmecabの簡単な使い方とベクトルの類似度を求めるアルゴリズムに触れる事が出来たのでよかった。&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/6305010576013224320/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6305010576013224320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/6305010576013224320'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/11/blog-post.html' title='Pythonでアンテナサイトのレコメンド機能書いてみた'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtJVO31MTSyLBsTpLU_UqsHI_WhTWPxNXD9gFg2ADhSgwh6nIb7nk5O1nnW6he7AaZov-ObwEVAqTY6vJXFRaFLl2TNaLu2dKEi2LOjxDrj2snNttoaWXxl_1MTgS8YpvQgydnvpTw3K-j/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2012-11-14+21.07.34.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-2845156953391229696</id><published>2012-06-29T22:08:00.002+09:00</published><updated>2012-06-29T22:08:46.454+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Forkwell"/><title type='text'>キーボード(リアルフォース)が当たりました</title><content type='html'>&lt;a href=&quot;http://forkwell.com/&quot; rel=&quot;nofollow&quot;&gt;Forkwell&lt;/a&gt;というサイトのリニューアルキャンペーンに応募したら&lt;br /&gt;
&lt;br /&gt;
リアルフォースがあたってしまいました！！&lt;br /&gt;
&lt;br /&gt;
当たったのはこれです！&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS1=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=higumachan-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=qf_sp_asin_til&amp;amp;asins=B003XKNX76&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;&lt;/iframe&gt;


&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;結構、高級なキーボードなので嬉しいです！&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
これからもっと、プログラミング頑張って行きます。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/2845156953391229696/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/blog-post_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2845156953391229696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2845156953391229696'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/blog-post_29.html' title='キーボード(リアルフォース)が当たりました'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-5949854314397256898</id><published>2012-06-24T23:31:00.000+09:00</published><updated>2012-06-24T23:33:13.128+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Boo"/><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>[お勉強]Unityでコインプレッシャーを作る</title><content type='html'>私は今年の夏休みに&lt;b&gt;サマータイムスタジオ&lt;/b&gt;という会社にインターンに行きます。&lt;br /&gt;
&lt;br /&gt;
それなので、昨日インターンシップの説明会に言ってきました。&lt;br /&gt;
&lt;br /&gt;
そこで、インターンが始まる前までにコインプレッシャー(ゲーセンによくあるやつ)を作ってみてよと言われたので。最小構成を作ってみました。&lt;br /&gt;
&lt;br /&gt;
最小構成とは以下の通りです。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;コインを物理演算エンジンで動かす&lt;/li&gt;
&lt;li&gt;画面へのクリックでコインを出す。&lt;/li&gt;
&lt;li&gt;コインの状態や所持コイン数のセーブ&lt;/li&gt;
&lt;li&gt;コインの落ちた場所によって所持コインが増える場所と増えない場所がある事。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
今こんな感じです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN6KrnRp94fHaTcfDKU_ZJGqHwGYtpdoV1D2avSHNy9gepA6HlV_3ghytrLTqPc9WWBxUqm9gwqduhXHhPE0NIdVipjEUgfVNTFV8t79qJEorIra3rs1VGh1v8acztcvXONlQlai1Mxs1N/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-06-24+23.30.05.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN6KrnRp94fHaTcfDKU_ZJGqHwGYtpdoV1D2avSHNy9gepA6HlV_3ghytrLTqPc9WWBxUqm9gwqduhXHhPE0NIdVipjEUgfVNTFV8t79qJEorIra3rs1VGh1v8acztcvXONlQlai1Mxs1N/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-06-24+23.30.05.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
一日がんばって(実働３時間？)作ってみました。&lt;br /&gt;
&lt;br /&gt;
Unityは英語なので使い方覚えながらやるのは面倒くさかった。&lt;br /&gt;
&lt;br /&gt;
しかし、コインとかの物理演算は全部UnityEngineがやってくれるので。コードの量は本当に少なくてすみました。&lt;br /&gt;
&lt;br /&gt;
しかし、やはりまだUnityをしっかり理解できた訳ではなく設計も汚いのでもう一度作り直したいと思います。&lt;br /&gt;
&lt;br /&gt;
今回つまった所。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;transformとrigidBodyの使い分け。&lt;/li&gt;
&lt;li&gt;物理マテリアルの摩擦係数の設定。&lt;/li&gt;
&lt;li&gt;.NET系の経験がなかったためfloatじゃなくてsingleだったなんて思いもよらなかったこれのせいでセーブがめんどくさかった。&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
あとは、もうワンポイントの所をやるだけなのでもう少しがんばります。&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/5949854314397256898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/unity.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5949854314397256898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5949854314397256898'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/unity.html' title='[お勉強]Unityでコインプレッシャーを作る'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN6KrnRp94fHaTcfDKU_ZJGqHwGYtpdoV1D2avSHNy9gepA6HlV_3ghytrLTqPc9WWBxUqm9gwqduhXHhPE0NIdVipjEUgfVNTFV8t79qJEorIra3rs1VGh1v8acztcvXONlQlai1Mxs1N/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-06-24+23.30.05.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-3482978076574083890</id><published>2012-06-16T21:20:00.000+09:00</published><updated>2012-06-16T21:20:04.402+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python MongoDB Twitter Flask"/><title type='text'>ひどいサービスを作ってしまった...</title><content type='html'>&lt;p&gt;twitter　流速　スカウターを作って一週間&lt;/p&gt;

&lt;h1&gt;今度は酷いサービスを作ってしまった。&lt;/h1&gt;

&lt;p&gt;こんなやつです&lt;/p&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZS5zABlvFujgbPlY3zAL3PL5tKekLQn6GjZSaoL7qc3CRMJAtnOSkV-TUksiFN1QGUaLqgaN5EEm-1OCHJfLjOtXvudbX4zyb01fnyT0sScr4X8RRs-NqJd3VUoZau5fjInml7L4IUpZ/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882012-06-16+21.05.10%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZS5zABlvFujgbPlY3zAL3PL5tKekLQn6GjZSaoL7qc3CRMJAtnOSkV-TUksiFN1QGUaLqgaN5EEm-1OCHJfLjOtXvudbX4zyb01fnyT0sScr4X8RRs-NqJd3VUoZau5fjInml7L4IUpZ/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882012-06-16+21.05.10%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;

&lt;h1&gt; &lt;a href=&quot;http://contents4you.com/twicoku&quot;&gt;Twicoku&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;どんなサービスかというと、twitterで告白をしたり告白をされたりするサービスです。&lt;/p&gt;

&lt;p&gt;しかし、この告白する相手が&lt;b&gt;ランダム&lt;/b&gt;なんですよ&lt;/p&gt;

&lt;p&gt;しょうじき、誰に告白するかわからないこのサービスって誰が使うんでしょ...&lt;/p&gt;

&lt;p&gt;このサービスはテスト期間とかぶってしまったので作るのに二日もかかってしまいました&lt;/p&gt;

&lt;p&gt;構成は最近自分の中で鉄板となってきている構成であるPython + Flask + MongoDBで書きました&lt;/p&gt;

&lt;p&gt;正直誰も使わないと思ったのですが、以外と使ってくれる人がいてくれて訪問すうは一時間で400程度になりました。&lt;/p&gt;

&lt;p&gt;Twiterではこういわれていますwww&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;このサービスひでぇ　Now Browsing: twitter経由で簡単告白♪ - ついこく！ - &lt;a href=&quot;http://t.co/1SorBZAp&quot; title=&quot;http://bit.ly/Krmh43&quot;&gt;bit.ly/Krmh43&lt;/a&gt;&lt;/p&gt;&amp;mdash; アイナスさん (@a19th) &lt;a href=&quot;https://twitter.com/a19th/status/213583823831707648&quot; data-datetime=&quot;2012-06-15T10:48:46+00:00&quot;&gt;6月 15, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;twitter経由で簡単告白♪ - ついこく！ &lt;a href=&quot;http://t.co/wFXbHqqI&quot; title=&quot;http://contents4you.com/twicoku/&quot;&gt;contents4you.com/twicoku/&lt;/a&gt; なにこれこわい&lt;/p&gt;&amp;mdash; たかすなあさん (@histener) &lt;a href=&quot;https://twitter.com/histener/status/213627320412545024&quot; data-datetime=&quot;2012-06-15T13:41:36+00:00&quot;&gt;6月 15, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;最近は週に一度のペースで何か作って公開（後悔）することが出来ているので。この取り組みを続けていけたらな〜と思っています&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/3482978076574083890/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/blog-post.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/3482978076574083890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/3482978076574083890'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/blog-post.html' title='ひどいサービスを作ってしまった...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZS5zABlvFujgbPlY3zAL3PL5tKekLQn6GjZSaoL7qc3CRMJAtnOSkV-TUksiFN1QGUaLqgaN5EEm-1OCHJfLjOtXvudbX4zyb01fnyT0sScr4X8RRs-NqJd3VUoZau5fjInml7L4IUpZ/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882012-06-16+21.05.10%25EF%25BC%2589.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8500236520578860554</id><published>2012-06-09T19:24:00.001+09:00</published><updated>2012-06-09T19:26:15.571+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>早起きして Flask MongoDB を使ってWebアプリケーションを作ってみた</title><content type='html'>&lt;p&gt;昨日、一時間早起きして作ったサービスを今日公開しました。&lt;/p&gt;

&lt;a href=&quot;http://contents4you.com&quot;&gt;twitter 流速　スカウター&lt;/a&gt;

&lt;p&gt;内容はTwitterでの自分のタイムラインの流れる速さ(ツイート/時)を測ってランキングを作るというサービスです&lt;/p&gt;

&lt;p&gt;画面はこんなかんじです&lt;/p&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-HNdkMTYfwjlWb27mG1ogHkGrcqaUXxohu6h42VWwFUB3PyvGXShMfG81YxqYniTGWGJayTC_fxWM8uzjqDpiPyiIoyLudkP0oSewaAGjOrtWqax4mvsxQetFDkkpUz4abzU4kvy42N9c/s1600/sc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-HNdkMTYfwjlWb27mG1ogHkGrcqaUXxohu6h42VWwFUB3PyvGXShMfG81YxqYniTGWGJayTC_fxWM8uzjqDpiPyiIoyLudkP0oSewaAGjOrtWqax4mvsxQetFDkkpUz4abzU4kvy42N9c/s320/sc.png&quot; /&gt;&lt;/a&gt;

&lt;h3&gt;作ったフローは以下のようになっています&lt;/h3&gt;
&lt;ol&gt;

&lt;li&gt;眠い目を擦りながら、いつも使っているflaskの足場をコピペ&lt;/li&gt;
&lt;li&gt;少し、頭がすっきりしてきたと同時に&lt;a href=&quot;http://higumachan725-aoj.blogspot.jp/2012/04/flasktwitteroauth.html&quot;&gt;前に書いた記事&lt;/a&gt;で作ってあるFlask用のTwitterPluginをgithubからクローン！&lt;/li&gt;
&lt;li&gt;目が覚めて、ガリガリ書く(MongoDBなので最初にがっちりDBを決めなくてもいいから楽でいいです[ごめんなさい情弱で])&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;こんな感じで(全体的な)ロジックは書きあがりました。&lt;/p&gt;

&lt;p&gt;それを&lt;a href=&quot;https://twitter.com/#!/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;さんに丸投げしてHTMLとCSSと部品とかを作ってもらう&lt;/p&gt;

&lt;p&gt;なんか、tweepyの中のtwitterとの連携部分でバグって戸惑う&lt;/p&gt;

&lt;p&gt;しょうがないから寝る。&lt;/p&gt;

&lt;p&gt;次の日も早起きしてデバッグ。&lt;/p&gt;

&lt;p&gt;結局別ウィンドウで認証してたのが悪いらしい(3回に2回くらい401エラーが出てた状態)&lt;/p&gt;

&lt;p&gt;しょうがないから同じウィンドウで認証するように書きなおす&lt;/p&gt;

&lt;p&gt;出来たので、&lt;a href=&quot;https://twitter.com/#!/pinkroot&quot;&gt;@pinkroot&lt;/a&gt;に報告。@pinkroot「よし公開しよう」との事で公開&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/refiute&quot;&gt;@refiute&lt;/a&gt;くんが&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;このりゅうそくのやつランキングにすぐ飛べたらいいのに&lt;/p&gt;&amp;mdash; れふと＠りひゅーとさん (@refiute) &lt;a href=&quot;https://twitter.com/refiute/status/211321556415152128&quot; data-datetime=&quot;2012-06-09T04:59:19+00:00&quot;&gt;6月 9, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;p&gt;とのことです&lt;/p&gt;

&lt;p&gt;そこで&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; data-in-reply-to=&quot;211321556415152128&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;@&lt;a href=&quot;https://twitter.com/refiute&quot;&gt;refiute&lt;/a&gt; じゃあ作るよ。ちょっと待っててね&lt;/p&gt;&amp;mdash; Yuta Hinokumaさん (@higumachan725) &lt;a href=&quot;https://twitter.com/higumachan725/status/211321915099447297&quot; data-datetime=&quot;2012-06-09T05:00:45+00:00&quot;&gt;6月 9, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;14分後くらいかな&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; data-in-reply-to=&quot;211322054736224257&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;@&lt;a href=&quot;https://twitter.com/refiute&quot;&gt;refiute&lt;/a&gt; できた！！&lt;a href=&quot;http://t.co/qTZbymmv&quot; title=&quot;http://contents4you.com/ranking&quot;&gt;contents4you.com/ranking&lt;/a&gt;&lt;/p&gt;&amp;mdash; Yuta Hinokumaさん (@higumachan725) &lt;a href=&quot;https://twitter.com/higumachan725/status/211325433805930498&quot; data-datetime=&quot;2012-06-09T05:14:44+00:00&quot;&gt;6月 9, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;というわけです。結構がんばったので&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; data-in-reply-to=&quot;211325433805930498&quot; lang=&quot;ja&quot;&gt;&lt;p&gt;@&lt;a href=&quot;https://twitter.com/higumachan725&quot;&gt;higumachan725&lt;/a&gt; おお！！すごい！！はやい！！&lt;/p&gt;&amp;mdash; れふと＠りひゅーとさん (@refiute) &lt;a href=&quot;https://twitter.com/refiute/status/211327730812321793&quot; data-datetime=&quot;2012-06-09T05:23:51+00:00&quot;&gt;6月 9, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;という感じでお褒めの言葉をいただきました。&lt;/p&gt;

&lt;p&gt;ちなみに同じような感じでユーザの検索機能も追加しました！！&lt;/p&gt;

&lt;h3&gt;今回の反省点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;ちゃんと計測が何回行われたかわかるDBの設計にしなかった&lt;/li&gt;
&lt;li&gt;また、さーばを（ry&lt;/li&gt;
&lt;li&gt;ランキング機能くらいはちゃんと最初から作っておくべきだったな&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8500236520578860554/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/flask-mongodb-web.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8500236520578860554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8500236520578860554'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/06/flask-mongodb-web.html' title='早起きして Flask MongoDB を使ってWebアプリケーションを作ってみた'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-HNdkMTYfwjlWb27mG1ogHkGrcqaUXxohu6h42VWwFUB3PyvGXShMfG81YxqYniTGWGJayTC_fxWM8uzjqDpiPyiIoyLudkP0oSewaAGjOrtWqax4mvsxQetFDkkpUz4abzU4kvy42N9c/s72-c/sc.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8876206794522327171</id><published>2012-05-14T23:12:00.004+09:00</published><updated>2012-05-14T23:37:21.122+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Online Judge のようなものを作ってみる</title><content type='html'>最近、部活で後輩たちのテストを多くやるようになってきたので。&lt;br /&gt;
採点するのが結構大変かな〜と思って、AOJみたいな感じで問題作っておいて。&lt;br /&gt;
formからプログラムを送ると、コンパイルして実行までしてくれるシステムを作った。（もちろんUIはhoge）&lt;br /&gt;
&lt;br /&gt;
さて、どうやって実装したか。&lt;br /&gt;
&lt;br /&gt;
さすがに、プログラムが実行されるまでhttpのレスポンスが帰らないのはクソ実装すぎるので。&lt;br /&gt;
&lt;br /&gt;
別のThreadを使って見ることにした。&lt;br /&gt;
&lt;br /&gt;
Pythonで書いたのだが、モジュールがあったのですぐにかけた。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.python.jp/doc/2.5/lib/module-threading.html&quot;&gt;http://www.python.jp/doc/2.5/lib/module-threading.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://techno-st.net/2010/02/06/python-3.html&quot;&gt;http://techno-st.net/2010/02/06/python-3.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ここらへんを参考にすればいい。&lt;br /&gt;
&lt;br /&gt;
次に、外部のプログラムの実行。&lt;br /&gt;
forkを考えたが、ちょっと調べてみると。&lt;br /&gt;
&lt;br /&gt;
subprocessという標準ライブラリがあったのでそれを使ってみることにした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
import subprocess
subprocess.Popen([&quot;echo&quot;, &quot;hoge&quot;]);
&lt;/code&gt;
&lt;/pre&gt;
こんな感じで書けばecho　hogeが実行される。&lt;br /&gt;
&lt;br /&gt;
これは、stdinやstdoutの設定もできるし、そのコマンドが終わるまでプログラムが終わったりしないので、かなり便利だった。&lt;br /&gt;
一定時間まって、プロセスが終わっているかとかを確認して終わってなかったらKILLしてTLEにしてしまえばOK&lt;br /&gt;
&lt;br /&gt;
一応、ソースをgithubに上げておきました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/higumachan/oknct_judge&quot;&gt;https://github.com/higumachan/oknct_judge&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8876206794522327171/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/online-judge.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8876206794522327171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8876206794522327171'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/online-judge.html' title='Online Judge のようなものを作ってみる'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8822100774225019661</id><published>2012-05-05T00:42:00.002+09:00</published><updated>2012-05-05T00:43:27.306+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>PythonでFacebookAPIを使ってみよう</title><content type='html'>今日、昨日は主にFacebookへの認証周りを触っていました。もちろんPythonでです。&lt;br /&gt;
最終目標はTwitterの認証みたいな感じでFlask用の認証モジュールを作ることですね。&lt;br /&gt;
&lt;br /&gt;
今日は認証がとれてデータを引っ張ってくることができたのでログを残します。&lt;br /&gt;
&lt;br /&gt;
facebookもtwitterとほとんど同じですね。&lt;br /&gt;
違うのは認証ページからリダイレクトした先でさらにhttpアクセスしてアクセストークンを取得するというところです。&lt;br /&gt;
参考：&lt;a href=&quot;http://mmiyajix.appspot.com/entry/11004?view=full&quot;&gt;FacebookのWallへポストするWebアプリ&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
簡単に手順を書きますと。&lt;br /&gt;
&lt;br /&gt;
1.https://graph.facebook.com/oauth/authorize?client_id=[APP_KEY]&amp;amp;redirect_uri=[redirect_url]&amp;amp;scope=[permissions]にアクセスしてもらう。&lt;br /&gt;
2.redirect_uriのスクリプトでGETメソッドで与えられる。codeとSECRET_KEYを付け足してPOSTメソッドでアクセス。&lt;br /&gt;
3.access_tokenがかえってくる。&lt;br /&gt;
&lt;br /&gt;
このような流れになってます。かえってきたaccess_tokenを保存しておけば毎回認証してもらわなくても大丈夫です。&lt;br /&gt;
&lt;br /&gt;
認証をとった後のAPIへのアクセスなんですが、自分は最初pyfacebookというライブラリを使っていたのですが。ちょっと使いづらかったので、tweepyみたいな感じのライブラリfbpyを自分で実装してみました。一応githubにあげていますが、自分用なので、機能は自分が必要になったら実装するという感じですので、まだほとんど実装（ほぼ打ち込み業務）してません&lt;br /&gt;
&lt;br /&gt;
github:&amp;nbsp;&lt;a href=&quot;https://github.com/higumachan/fbpy&quot;&gt;https://github.com/higumachan/fbpy&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これが、今日昨日やったことです。&lt;br /&gt;
&lt;br /&gt;
fbpyの実装で関数を返す関数がとっても便利だって言う実感ができました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8822100774225019661/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/facebook.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8822100774225019661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8822100774225019661'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/facebook.html' title='PythonでFacebookAPIを使ってみよう'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-7326386824613857747</id><published>2012-05-01T21:47:00.002+09:00</published><updated>2012-05-01T21:47:24.554+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>WebベースのTwitterClientを作るまで</title><content type='html'>まず、どうして作ったのか。うちの学校では基本的に学内回線からTwitterできません（スマフォClient、テザリング、ポケットWiFiとか使えばいいんだけど）しかも、私はガラケーです。&lt;br /&gt;
&lt;br /&gt;
最後の望みで合ったTabtterの仕様期間も切れてしまったので、作ってみようかなと思いました。&lt;br /&gt;
&lt;br /&gt;
実装はPython＋Flaskです&lt;br /&gt;
&lt;br /&gt;
今回の実装は実装速度を重視したので、ステップの横に所要時間を書いて行きます。&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Twitterの認証：前々に紹介したFlaskでTwitter認証を行うモジュールで一瞬でした（１０分）&lt;/li&gt;
&lt;li&gt;TimeLineの取得：Tweepyというライブラリを使って瞬殺。（５分）&lt;/li&gt;
&lt;li&gt;Tweetする：Tweepyで瞬殺（３分）&lt;/li&gt;
&lt;li&gt;もう取得したTweetはTimeLineに表示しない：取得したTweetIDの最大を持っておいて次に取得したときそのさっきのTweetIDの最大より大きい間でWhileを回す。（8分）&lt;/li&gt;
&lt;li&gt;適当なHTMLを書く（８分）&lt;/li&gt;
&lt;li&gt;ajaxでTimeLineを更新するために適当なjavascriptを書く（８分）&lt;/li&gt;
&lt;li&gt;アイコンをtwitter.comから取得するのではなく、TwitterClientのサーバで通信を行いそれをクライアント側に返す（１０分）&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
以上で最小構成のTwitterクライアントが完成です。&lt;/div&gt;
&lt;div&gt;
Timelineが確認できて、TweetをPOSTできるだけですが。所要時間が所要時間ですし。&lt;/div&gt;
&lt;div&gt;
まあ、いいかなってかんじです。&lt;/div&gt;
&lt;div&gt;
なぜ、WebベースのTwitterクライアントなら学内からできるのかというと。&lt;/div&gt;
&lt;div&gt;
twitter.comとの通信をすべて自前のサーバに任せてしまえば、学内のネットからは自前のサーバに接続するだけなので、その自前のサーバがブロックされない限りはブロックされないようになるというしくみです。なので、アイコンもサーバから取得するようにするのです。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://pythonmongo-higumachan.dotcloud.com/&quot;&gt;http://pythonmongo-higumachan.dotcloud.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これが作ったクライアントです。&lt;br /&gt;
ちなみにデプロイで詰まってしまったのでデプロイでするのに実装時間の４倍かかってしまいました。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/7326386824613857747/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/webtwitterclient.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7326386824613857747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7326386824613857747'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/05/webtwitterclient.html' title='WebベースのTwitterClientを作るまで'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-7496593096548508140</id><published>2012-04-22T14:34:00.001+09:00</published><updated>2012-04-22T14:34:50.185+09:00</updated><title type='text'>自前LISPのGCの実装</title><content type='html'>昨日の続きで自分でLISPを実装した話をしていきます。&lt;br /&gt;
&lt;br /&gt;
今回の実装でいちばんバグが多かったのは今日話すガーベジコレクタ（GC)ですね&lt;br /&gt;
&lt;br /&gt;
GCとは動的に取ってきたメモリ領域を使われなくなった部分だけ開放するというものです。&lt;br /&gt;
&lt;br /&gt;
まず、このような処理系を実装するのは初めてなので自分は王道がわかりませんでした。&lt;br /&gt;
&lt;br /&gt;
それなので、静的記憶域、動的記憶域(スタック)と関数テーブルの中を探索してここは使われてますよっていう、チェックをつけました。&lt;br /&gt;
しかし、これだけでは変数が参照として持っているものが開放されてしまうので、チェックしたところの中の値を調べて参照ならまたその中を調べるを再帰的に繰り返すことで、必要なところ全てにチェックがつきました。&lt;br /&gt;
そして、これをコンパクションつまり、詰めて行きます。&lt;br /&gt;
&lt;br /&gt;
そして、実行したら動きました。&lt;br /&gt;
&lt;br /&gt;
しかし、GCを動かしたあとにたまに不具合が。&lt;br /&gt;
テストをいっぱいしていると不具合が起こるところに大体のパターンが見えてきました。&lt;br /&gt;
そのパターンはだいたいGCを走らせる前にヒープ領域の最初の方に入っていた変数たちです。&lt;br /&gt;
そして、よくよく考えるとコンパクションしたあとに変数に入っているポインタの値がコンパクションする前の値になってましたorzこれを直すとうまくうごきました。&lt;br /&gt;
&lt;br /&gt;
GCの実装はやっぱりポインタのいろんな使い方がわかったのでかなりやった価値があった気がします。&lt;br /&gt;
&lt;br /&gt;
現在ではGC自体の動作が重いのでどうにかして最適化していきたいな〜。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/7496593096548508140/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/lispgc.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7496593096548508140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/7496593096548508140'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/lispgc.html' title='自前LISPのGCの実装'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-2356064211862472014</id><published>2012-04-21T13:26:00.000+09:00</published><updated>2012-04-21T13:26:13.256+09:00</updated><title type='text'>[お勉強] 簡単なLISPのインタプリタを実装してみよう</title><content type='html'>&lt;br /&gt;
LISPに入門したいな〜と思ってはや半年。なんか、言ってるだけな気がして嫌気が刺してきましたので。入門しようとLISPとGoogleで検索したら。&lt;br /&gt;
&lt;a href=&quot;http://www.atmarkit.co.jp/fcoding/articles/gauche/01/gauche01a.html&quot;&gt;ちょっと変わったLISP入門&lt;/a&gt;　という、記事をみつけました。&lt;br /&gt;
この記事では、LISP 入門するついでに、LISPをC言語で実装しちゃおうという、ちょっとどころじゃなくかなり、変わった入門でした。&lt;br /&gt;
&lt;br /&gt;
という、経緯で始めたLISPインタプリタの実装なんですが。その記事通りに書いても面白くないので。&lt;br /&gt;
データ構造だけチラ見して、自分でほとんど一から実装しました。&lt;br /&gt;
&lt;br /&gt;
ひさしぶりに、C言語を使いました。(最近はもっぱらPython)次々とポインタを別のポインタにキャストしながら。実装していくこと。5時間程度。　&lt;br /&gt;
&lt;br /&gt;
LISP の式をリストに落として簡単にevalすることができるようになりました。&lt;br /&gt;
とはいえ、まだほとんどの機能が実装されていません。(書き方が変な電卓みたいな感じ)&lt;br /&gt;
&lt;br /&gt;
その後、四苦八苦しながらsetqを実装し、defunを実装しました。&lt;br /&gt;
&lt;br /&gt;
スタックはグローバルと分けて考えてスタックから先に探索するという方法をとりました。&lt;br /&gt;
&lt;br /&gt;
正直、スタックを考えたり、変数への束縛を考えたりするのは楽しかった。&lt;br /&gt;
今まで、書いてきたコマンドラインのプログラムの中で一番楽しいと言えるものかもしれない。&lt;br /&gt;
&lt;br /&gt;
一応Githubに上げて有ります。&lt;br /&gt;
&lt;a href=&quot;https://github.com/higumachan/easy_lisp&quot;&gt;https://github.com/higumachan/easy_lisp&lt;/a&gt;&lt;br /&gt;
しかし、ファイル分割もしてないですし、ましてやプロトタイプ宣言すらめんどくさがってしまった書き捨てのコードです。&lt;br /&gt;
&lt;br /&gt;
まだ、語ってないことにGC(ガーベジコレクタ)がありますが。長くなりそうなので。&lt;br /&gt;
これは、また明日書くことにします。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/2356064211862472014/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/lisp.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2356064211862472014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/2356064211862472014'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/lisp.html' title='[お勉強] 簡単なLISPのインタプリタを実装してみよう'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8157770151426611378</id><published>2012-04-07T23:47:00.000+09:00</published><updated>2012-05-01T22:09:18.521+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Flaskをmod_wsgiでデプロイ</title><content type='html'>今まで、避けていたwsgiでのデプロイを今日はやりました。&lt;br /&gt;
&lt;br /&gt;
まず、Flaskの公式(&lt;a href=&quot;http://flask.pocoo.org/docs/deploying/mod_wsgi/#installing-mod-wsgi&quot;&gt;http://flask.pocoo.org/docs/deploying/mod_wsgi/#installing-mod-wsgi&lt;/a&gt;)を見てApacheを設定してみる。&lt;br /&gt;
&lt;br /&gt;
動かなかったので、&lt;a href=&quot;http://zafiel.wingall.com/archives/2011110419102309.php&quot;&gt;http://zafiel.wingall.com/archives/2011110419102309.php&lt;/a&gt;の設定を真似てみました。&lt;br /&gt;
&lt;br /&gt;
そうしたら動きました。&lt;br /&gt;
&lt;br /&gt;
しかし、Flask.gとPitがうまく動かなかった。&lt;br /&gt;
Pitの方はDocumentRootの関係かと思われる。&lt;br /&gt;
&lt;br /&gt;
[まとめ]&lt;br /&gt;
できたこと&lt;br /&gt;
Flaskで書いたアプリがApache上で動いた。&lt;br /&gt;
出来てないこと&lt;br /&gt;
Pythonがエラー吐いて死んだ時のTraceがApacheのErrorLogに出てこない（print で出力した値は出てくる）&lt;br /&gt;
PitでのPassword管理が出来ていない。&lt;br /&gt;
Flask.gがまだうまく使えてない。</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8157770151426611378/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/flaskmodwsgi.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8157770151426611378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8157770151426611378'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/flaskmodwsgi.html' title='Flaskをmod_wsgiでデプロイ'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-5201556628992246032</id><published>2012-04-05T19:42:00.000+09:00</published><updated>2012-05-01T22:09:46.703+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Flask用のTwitterOAuthモジュール作ってみました</title><content type='html'>現在TwitterAPIを使うサービスを作っているのですが。&lt;br /&gt;
そこで、問題になるのが認証なんですね。&lt;br /&gt;
毎回毎回結構めんどくさいです。&lt;br /&gt;
&lt;br /&gt;
それなので、今回はFlaskでTwitterに簡単に認証するモジュールを作ってみました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/higumachan/flask_twitter&quot;&gt;https://github.com/higumachan/flask_twitter&lt;/a&gt;&lt;br /&gt;
使い方は結構簡単にしたつもりで、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
@app.route(&quot;/path/to&quot;)&lt;br /&gt;
@twitter_login&lt;br /&gt;
def view(api=None):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pass&lt;/blockquote&gt;
こんな感じでビューにデコレータを追加するだけで、Twitterに認証されてればそのビューに入り、認証されていなければ認証画面に入る。という感じです。&lt;br /&gt;
認証からのCallbackになってるビューにこのように書けばOKです&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
@app.route(&quot;/path/to&quot;)&lt;br /&gt;
@twitter_callback&lt;br /&gt;
def view():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return (make_response(&quot;ようこそ&quot;))&lt;/blockquote&gt;
&lt;br /&gt;
今回初めてデコレータを使ったのですが、今まで何に使うのかわからなかったのですがたしかに便利だな〜って感じがありました。&lt;br /&gt;
&lt;br /&gt;
TwitterのサービスをFlaskで作るときは使ってみてください。&lt;br /&gt;
&lt;a href=&quot;https://github.com/higumachan/flask_twitter&quot;&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/5201556628992246032/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/flasktwitteroauth.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5201556628992246032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5201556628992246032'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/flasktwitteroauth.html' title='Flask用のTwitterOAuthモジュール作ってみました'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-8634497780986132262</id><published>2012-04-04T20:08:00.000+09:00</published><updated>2012-05-01T22:10:06.688+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flask"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Djangoは重い(規模の大きさ的な意味で)のでflaskを始めました</title><content type='html'>Python大好きな私ですが、ちょっと、Djangoは重い(動作的な話ではありません)です。Djangoをやるのがだんだんめんどくさくなってしまいます。&lt;br /&gt;
いろんな、アプリケーションを起動したり、manage.pyを使ってやったり、modelをいちいち作ったりとちょっと、今やってる「早くモノを作る」というのは向かない気がしました。&lt;br /&gt;
今まではDjangoを使うまでもないやつはcgiで書いてました(情弱ですよねｗｗ&lt;br /&gt;
Sinatraでも始めようかと思いましたが、ちょっとこれからRubyの勉強するのもメンドクサイので、Sinatraから影響を受けていると言われているFlaskを初めて見ました。Djangoほどいろいろやってくれるわけではないですが、さっと作るにはとても便利だと思いました。&lt;br /&gt;
プラグイン入れないとO/Rワッパーがないらしいですが最近はもっぱらMongoDBなのでモウマンタイです。&lt;br /&gt;
&lt;br /&gt;
あと、FlaskでTwitterにsigninするモジュールを書いたので次はその話でも書きましょうかね</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/8634497780986132262/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/djangoflask.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8634497780986132262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/8634497780986132262'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/04/djangoflask.html' title='Djangoは重い(規模の大きさ的な意味で)のでflaskを始めました'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-5601975595652884767</id><published>2012-02-27T23:32:00.000+09:00</published><updated>2012-02-27T23:32:11.326+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL Python"/><title type='text'>またまたMySQL+Pythonの問題</title><content type='html'>そういえば、エスケープしてないことに気づいた情弱な俺。&lt;br /&gt;
escapeをしようとして。以下の文を書きました。&lt;br /&gt;
MySQLdb.escape_string(text);&lt;br /&gt;
よし、これで今日のお仕事終わり！！&lt;br /&gt;
とはいきませんでした。&lt;br /&gt;
なんと、これだとescape_stringはstr型を取る関数らしく。&lt;br /&gt;
unicode型を入れるとasciiに変換できないよ！！といわる。&lt;br /&gt;
UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position 3-5: ordinal not in range(128)&lt;br /&gt;
ちなみに今回登録したい文字列は&quot;なでこ&#39;かわいいよ&#39;なでこ&quot;です。&lt;br /&gt;
&lt;br /&gt;
すこし悩んだのですが&lt;br /&gt;
MySQLdb.escape_string(text.encode(&quot;utf-8&quot;));&lt;br /&gt;
とすると解決しました。&lt;br /&gt;
&lt;br /&gt;
ちょっと、めんどくさいと思った今日この頃</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/5601975595652884767/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/02/mysqlpython_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5601975595652884767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/5601975595652884767'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/02/mysqlpython_27.html' title='またまたMySQL+Pythonの問題'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3531952331379045915.post-3581859132994479222</id><published>2012-02-22T20:50:00.000+09:00</published><updated>2012-02-22T20:50:51.131+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL Python"/><title type='text'>MySQL+Pythonの文字コード問題</title><content type='html'>MySQL+Pythonといちゃいちゃしてたら。&lt;br /&gt;
&lt;br /&gt;
お前の使ってるcharsetはutf8じゃないよ。&lt;br /&gt;
日本語打てないよとか言ってきました。&lt;br /&gt;
&lt;br /&gt;
ちなみに登録したい文字列は撫子です！！&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ext.omo3.com/linux/mysql_character_set.html&quot;&gt;http://ext.omo3.com/linux/mysql_character_set.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このページに沿ってMySQLを設定しなおした。&lt;br /&gt;
しかし！！治らないってことでもう一度調べた結果。&lt;br /&gt;
Pythonのソースコード側も少し書き換えないといけないようです。&lt;br /&gt;
&lt;br /&gt;
MySQLdb.connct(host=&quot;localhost&quot;, db=&quot;hoge&quot;, &amp;nbsp;user=&quot;huga&quot;, passwd=&quot;pass&quot;, charset=&quot;utf8&quot;);&lt;br /&gt;
&lt;br /&gt;
このように書けば晴れてMySQLに撫子と登録することができました。</content><link rel='replies' type='application/atom+xml' href='http://higumachan725-aoj.blogspot.com/feeds/3581859132994479222/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/02/mysqlpython.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/3581859132994479222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3531952331379045915/posts/default/3581859132994479222'/><link rel='alternate' type='text/html' href='http://higumachan725-aoj.blogspot.com/2012/02/mysqlpython.html' title='MySQL+Pythonの文字コード問題'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04152852959707985824</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>