python

Instagram Engineering Challengeを解いてみる

http://instagram-engineering.tumblr.com/post/12651721845/instagram-engineering-challenge-the-unshredder 以上のようにバラバラに切断された画象を以下のように戻せ、という問題。 画象の分割数は予め与えられれているものとする。(自動的に画象の分割…

PILでHalftonみたいなの

こんな感じですか?わかりません><。 Before After # -*- coding: utf-8 -*- from PIL import Image, ImageDraw def collect(img, h, w, y, x, interval): y2 = (y + interval) if (y + interval) < h else h - 1 x2 = (x + interval) if (x + interval) <…

Pythonでワイルドカードマッチング

Pythonでワイルドカードマッチングしたい!そんなあなたはfnmatchを使いましょう。 >>> fnmatch.fnmatch('http://www.google.com/', 'http://*/*') True >>> fnmatch.fnmatch('http://www.google.com/foo/baz/bar', 'http://*.google.com/foo*bar') True >>>…

Puhser + Google App EngineでリアルタイムWebアプリ その2

「WebSocketで目指せ“リアルタイムWeb”!」で取り上げられているRetrospectiveappのサーバサイド(Heroku + Sinatra)をGoogle App Engine + Bottleで実装してみる。 クライアントサイドは元ネタとほぼ同じ。 デモ : http://myretrospective.appspot.com/ Mod…

SHPAML : Haml for Python

Rubyで作られたマークアップ言語HamlがすごくてPythonにも同じようなのないかと探してみた。 見つけたのがSHPAML。 使い方 import shpaml print shpaml.convert_text(text) 入力 html head title test ul li hoge li hoge2 div piyo 出力 <html> <head> <title> test </title> </head> <ul> <li> hoge </li> <li></li></ul></html>…

appengine-rest-serverの出力形式をJSONに限定

GAEでRESTサービス作りたいなーと思ったときに一番最初に目につくのはappengine-rest-server。 中々使いやすいと思うんだけど、デフォルトの出力形式がxmlなのどうにかしたい!というわけで改造してみる。 1625行目からのメソッドdoc_to_output(self, doc)を…

Pusher + Google App EngineでリアルタイムWeb

「WebSocketで目指せ“リアルタイムWeb”!」(http://www.atmarkit.co.jp/fcoding/articles/websocket/02/websocket02b.html) これ読んで面白そうだと思ったので、とりあえずTwitterのpublic timelineを表示していくWebサイトを作ってみるよ。 Pusherに登録 ht…

pythonでアスペクト指向メモ

pythonでアスペクト指向プログラミングするために、いろいろライブラリがあるみたい。 適当に目についたのを試してみる。 aspyct from Aspyct.aop import * class MyAspect(Aspect): def atCall(self, cd): print 'called with args', cd.args def atReturn(…

WTFormsメモ

WTForms(http://wtforms.simplecodes.com/) form要素のレンダリングとかバリデーションをやってくれるライブラリ。flask,tipfyあたりで使われてる。 なかなか良い感じだけど、日本語の情報は全く見つからなかったんで適当にメモしていく。 まずFormを定義 fr…

WindowsでPyPiにアップロードするメモ

PyPiに自作のライブラリアップしたよー。 http://pypi.python.org/pypi/python-nikeplus/0.21ってことでWindows環境でPyPiにアップするのにつまった点をメモ。 > python setup.py register > python setup.py upload sdist hoge とすると「Upload failed (40…

GAE上で動くブログエンジンまとめ

Google App Engine(for Python)で動作するブログエンジンをまとめてみました。 cpedialog http://code.google.com/p/cpedialog/ デモ:http://blog.cpedia.net/ bloggart http://github.com/Arachnid/bloggart デモ:http://bloggart-demo.appspot.com/ Bloog…

face.comのapiつかってみた

http://developers.face.com/ 画像から顔情報を検出・認識してくれるface.comのapiを使って、笑い男で顔のマスキング的なことをやってみた。まあおなじみですね。 適当に使ってみたのはこの画像。 ライブラリはPILとface.comのpythonクライアント(http://git…

NikePlus用のライブラリつくた

Nike Plus用のライブラリをpythonで作ってみた。 http://github.com/ninoseki/nikeplus-python 作りながら「うーん、こんな感じでいいのかな・・・?」と悩みまくりんぐ。 他のライブラリ読んで勉強しないとね。もうちょっと改良したい。 使い方はこんな感じ…

BeautifulSoupでCDataをぬきぬき

BeautifulSoupでCDataを取り扱うのにちょっと苦労したんでメモ。 text = """<test></test>""" soup = BeautifulSoup(text) print soup.text.string >>>> えー、"some data here"が出力されるんじゃないの?ソースを見ると class CData(NavigableString): def __str__(sel…

PythonでNike+の非公式APIを使ってみよう

みなさんNike+(http://nikerunning.nike.com/nikeos/p/nikeplus/ja_JP/)って知ってる? 最近ナイキのランニング用シューズを買ってその存在を知ったんだけど、これが結構な優れもの! 対応製品を購入して、センサーを靴の底にセットして走りだすと、ランニン…

人材獲得作戦・4

TLで見かけた問題を解いてみた。 http://okajima.air-nifty.com/b/2010/01/post-abc6.html ん・・・これだとLv.3になるのかな?いや大丈夫だよね。 file_name = "maze.txt" f = open(file_name, 'r') maze = [] start = None goal = None x = 0 y = 0 for li…

辞書をGoogle App EngineのDatastoreに突っ込む

Datasotreに辞書を入れたいなーと思う。 問題は辞書型用のプロパティクラスが用意されてないこと。 これを解決するために pickleで辞書をバイナリ化 BlobPropertyのモデルを作る Blobにバイナリを入れる を行えばおk。 こんな感じですな。 class DictModel(…

pydbgでAnti-Anti-Debugging

マルウェアなどがデバッグを難しくするためのテクニックの1つにAnti-Debuggingといわれるものがあります。 その名の通りデバッグを中止させるためのテクニックです。 Windows Anti-Debug Reference リンク先で紹介されているIsDebuggerPresent()を用いたAnti…

Python 2.5でPyDbgを動かす

リバースエンジニアリングフレームワークPaiMei(http://pedram.redhive.com/PyDbg/docs/)の中に含まれているピュアPythonなWindowsデバッガーPyDbgがPython 2.5で動かない! Traceback (most recent call last): File "C:\Python25\test.py", line 2, in <module> fr</module>…

pefileとpydasm

pythonのライブラリ pefileとpydasmの日本語情報があんまり見つからなかったんで紹介記事書いてみるテスト。 まず、何ができるの? pefileはWindowsの実行形式Portable Executableの解析を手助けしてくれるライブラリ。 pydasmはx86の逆アセンブルができるラ…

Last.fm APIを使ってアルバムアートを入手

外部ツールでリッピングすると、WMPのライブラリに入れてもWMPがアルバムアートを取得してくれないんでムカムカしてアルバムアートを取得するスクリプトを書いた。 Last.fmのAPIからアルバムアートのURLを取得し、そのURLから画像を.jpgで保存する。 ライブ…

Windows上で実行中のプロセスを表示

Deviare(http://www.nektra.com/products/deviare-api-hook-windows/) Python Win32 Extensions(http://python.net/crew/mhammond/win32/Downloads.html) 実行するにはこの二つがインストされてること。 Deviareの練習がてらに書いてみました。 import win32…

MSHTMLでHTMLパース

なにこれ面白い。 WindowsならMSHTML COMコンポーネントを使ってHTMLをパースできちゃう。 import win32com.client import urllib2 data = urllib2.urlopen("http://www.python.org").read() html = win32com.client.Dispatch("htmlfile") html.write(data) …

PythonでWin APIをフック

WindownのAPIをフックしたい、と思ったけどC/C++だと覚えないといけないことが多くて面倒。 なのでAPI Hook(DLLインジェクション)ができるライブラリDeviare(http://www.nektra.com/products/deviare-api-hook-windows/)を使ってPythonでAPIをフックしてみる…

Last.fmのAPIを利用してアルバムアートのURLを取得

すげー適当に書いた。 後悔はしていない。 #!-*- coding: utf8 -*- import urllib2 import re api_key = APIのキー artist = アーティストの名前 album = アルバムの名前 #アーティストとアルバムは1対1で対応していること for i in range(len(artist)): art…

いもげスレtoXML

PHPとPythonの勉強を兼ねて、id:vert771さんのコード(http://imgscraper.sourceforge.jp/)をPython(3.1)に置き換えて見た。 正規表現とか文字コードとか色々適当です。うげえ。 きっともっと効率のよいやり方があるはず。あと'>'の処理も適当。本文抽出も適…

HTMLタグを取り除く

http://www.codereading.com/codereading/python/strip-html-tags.html ここを参考にしてHTMLタグを取り除こうと思ったら、Python 3.x系からはsgmllibが無くなってるみたいなので少し書き換え。といってもライブラリのところを置換しただけですが。 import h…

ISBN13をISBN10に変換

ISBNコード(とASIN)のまとめ http://www.marusankakusikaku.jp/archives/2007/01/06-isbn-asin.html これを参考にしてISBN13をISBN10に変換してみる。 ・13桁のコードから上3桁とチェックデジット1桁を無視する ・ISBN10の計算方法でチェックデジットを計算…

JANコードで商品検索

http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html Yahoo!ショッピングのAPIを利用してJANコードを用いて商品の情報(今回は書名とURL)を手に入れてみる。 市販のバーコードリーダーを使ってそこいらにあった本のJANコードを読み込…

ピクセルにアクセス

画素値を直接いじろうとしてつまった。 CvScalarフィールドにアクセスするインターフェースが見つからない\(^o^)/ 調べてみたら、IPLをPILに変換して画素値をあれこれする方法があるらしい。 ということで試してみた。IPL→PIL→画素値をいじる→IPLって処理…