サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
jyoshiori.hatenadiary.org
try: hogehoge() except: print sys.exc_info()[0] って書こうとしてたら id:nishiohirokazu 先生に exceptionType, exceptionValue, exceptionTraceback = sys.exc_info() ってやるといいよ [0]は1年後に困る羽目になるから と教えていただいた!!! 1年後の自分が「なんじゃこりゃ」って言うという意味で 絶対言う、僕なら間違いなく言う。 あと「0番目が何なのかドキュメント見て調べるのめんどい」ともいいそう すいませんでした>< 僕も言うと思うので書き直します!!!
いつのまにやら Twitter に Follow 制限とか出来て 色々な人の発言が見たいのに Follow 追加出来なくなって コンピュータの癖に人間様の処理能力に制限かけるんじゃねーよと お怒りのみなさまこんにちは オープンソースとバザールモデルの御祭に参加出来なくてさみしい僕ですが、 みなさんいかがおすごしですか? そんなこんなで Twitter にむかついても 「サポートに連絡しても制限解除するつもりはネーYO!!」 と言われてしまいますし、 かといってむかついたままなのも精神衛生上良くないので 60 日以上発言の無いユーザを remove するスクリプト書きますた。 pit と simplejson が入ってれば動くはずですwwww #!/usr/bin/env python # -*- coding: utf-8 -*- import sys, simplejson, urlli
僕、良くわかってないのですが、大変です!! 美人時計の画像を自分のサーバに保存して公開してる人がいます!! http://image.baidu.jp/i?tn=baiduimage&ct=201326592&cl=2&word=site%3Abijint.com&lm=-1&z=0 これってすっごく不味いですよね!! 良くわかりませんけど>< 権利に基づいた対応をとらせて頂くべきだと思います!!! 担当/東條 2009/03/12 02:28 いつも美人時計を拝見して頂き、ありがとうございます。 拝見させて頂きました。 現在、当社はプライバシーポリシーに違反する誘導、使用の取りやめのご協力をお願いしております。 3日以内に公開、使用の取りやめ行わない場合、権利に基づいた対応をとらせて頂く場合がございます。 ご協力宜しくお願いします。 東條 info@bijint.com http://d
http://d.hatena.ne.jp/Yamashiro0217/20090310/1236674979 のはてぶのタグに何故か Python タグがあったので、 これは Python で書けって事かなぁと思って書いてみました。 import sys,os,urllib,time;[[[globals().__setitem__('url','http://www.bijint.com/jp/img/photo/%02d%02d.jpg' % (i, j))] and [globals().__setitem__('file',open(os.path.basename(url), 'wb'))] and [file.write(urllib.urlopen(url).read())] and [file.close()] and [time.sleep(5)] for j in r
http://d.hatena.ne.jp/a2c/20090301/1235909666 を読んで…… >>> def func(userid,password): ... print userid , password ... >>> hoge= {'userid':'foo','password':'bar'} >>> func(**hoge) foo bar >>> def func2(foo,bar): ... print foo , bar ... >>> hoge=[1,2] >>> func2(*hoge) 1 2 関数を呼び出す側でも使える!!!! これは超便利!!! >>> value = '2008-03-10' >>> datetime(*map((lambda x: int(x)),value.split('-'))) datetime.datetime(2008
ナウでヤングな Pythonista はテストは nose を使うみたいなのです。 良くわかりませんがそういうものです。 事前処理と事後処理 DB の初期化とかテストの事前処理や事後処理はないと困っちゃいますが、 nose ではこんな風に書きます。 def setup_func(): # ... def teardown_func(): # ... @with_setup(setup_func, teardown_func) def test(): # ... デコレータ以外にも色々やり方はあります。 http://somethingaboutorange.com/mrl/projects/nose/0.9.3/ pit と併用して使う 外部の API と連携してるテストなどをやりたい時に いつも使ってる pit の環境汚したく無いなぁなんて時は プロファイルを切り変えられるので それを呼
Python の atompub で使いやすいライブラリがみつからなかったので 自前でゴリゴリ #!/usr/bin/env python # -*- coding: utf-8 -*- # http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%c0%a5%a4%a5%a2%a5%ea%a1%bcAtomPub import base64 import random import sha import urllib2 import urllib from datetime import date,datetime import sys # 2.5 までは 201 がエラー扱いになっちゃうので if sys.version_info[0] < 3 and sys.version_info[1] < 6: def __http_response
http://d.hatena.ne.jp/mopemope/20090220/p4 で、pip って何!? pip http://pip.openplans.org/ pip is a replacement for easy_install. It uses mostly the same techniques for finding packages, so packages that were made easy_installable should be pip-installable as well. easy_install っていうか package の管理をもっと便利にするぜっていう認識でOK? とりあえずインストール $ sudo easy_install pip 自分の環境にインストールしてる package の一覧取得 $ pip freeze で出来る http:
なんか色々方法はあるのですが、準備がめんどくさかったので MozRepl 使って自分でさくっと #!/usr/bin/env python # -*- coding: utf-8 -*- import sys,os,telnetlib,time class MozRepl: def __init__(self, host='localhost',port=4242): self.tn = telnetlib.Telnet(host,port) self.tn.read_until("repl>") def reload(self): self.tn.write('content.location.reload(true)') def close(self): self.tn.write('repl.quit()') self.tn.close() def getMtime(filename
そういえばソース公開してなかったので…… 自分用なので色々実験したりしててきちゃないコードです>< 何か入力するとクロスポストして、 何も入力せずに Return で replies が表示されます。 replies にいる ID は tab 補完が出来ます。 Outputz に文字数を投稿します。 #!/usr/bin/env python # -*- coding: utf-8 -*- import sys, simplejson, urllib2, urllib, twitter as tw, readline from pit import Pit #source = 'profile_answer' source = '清楚なクライアント' class Wassr: def __init__(self, user, passwd): self.user = user self.p
ni! Python から はてなグラフapi を弄るモジュールを書きました♪ id:secondlife 謹製の Ruby版 を パクリつつ手を抜いて移植した感じです。 (だって、0 も True になる Ruby と違って boolean の変換処理とかいらないかなぁと思って) というわけで、CodeRepos にあげてあります♪ http://coderepos.org/share/browser/lang/python/hatenaapigraph/ つかってみてくだしあ>< あと、あけましておめでとうございます。
もう Twitter には戻れない!! まだ Twitter なの?童貞っぽいね!! 全米ナンバー1ヒット!! で有名な Wassr に匿名で投稿出来る AnonymousWassr というのを作ってみました。 http://gree.appspot.com/ 作成にいたる流れ 朝、おきる。 ↓ なんかやる気が出ないのでグダグダ ↓ 気がついたら Emacs 開いてたのでなんとなく作りはじめる。 ↓ プライベートメッセージ受け取ったら書きこむ的な bot にしよう と思って作りはじめたのにプライベートメッセージ取得の API が無い事に気づく ↓ しょうがなくwebサービスにする事にする。 ↓ サーバ用意するのがメンドイので Google App Engine で作り始める。 ↓ 骨組出来たところで GAE だと urllib 系が使えない事がわかる。 ↓ そろそろやばいので出社する。 ↓
空前の wassr ブームですがみなさんいかがおすごしでしょうか? ところで、wassr には Twitter に無い機能も色々もりだくさんで楽しんでます!! 注目の足跡機能 でも、足跡ついてても購読されてないと凄く寂しいですよね? 気弱な僕は 「あ、興味ないですか?」 「あの一言が駄目だったかなぁ」 「お口にあいませんでしたか?」 「あ、それともシャイで申請できなかったのかな?」 とか考えちゃいます>< でも折角だから仲良くなりたい!! そんなシャイな僕でも折角みてもらったんだから 仲良くなりたい!! 一期一会 だよね!! と思ったら Python で出来ました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import simplejson, urllib2 from pit import Pit print 'start' def ge
id:cho45 制作の Pit を Python に移植してみますた。 Pit って何? account management tool です。 http://subtech.g.hatena.ne.jp/cho45/20080102/1199257680 ここに詳しく書いてあります。 ちなみに Ruby(id:cho45),Perl(id:cho45),PHP(halt) とあるのです。 設定ファイル共有なので便利です>< 使い方 Pypi に登録してあるので $ sudo easy_install pitでインストール出来ます。 from pit import Pit config = Pit.get('twitter.com',{'require' : {'email':'','password':''}}) print config['email'] print config['
ふつうに Python の logging モジュールが使えます!! http://www.python.org/doc/2.5/lib/module-logging.html すごいですね!! でも、サーバに ssh とか出きないけど どうやってログみるかというと…… こんな風に管理画面から見えます!! 鼻血が出るほどすごいですね!!! local の開発環境だと debug レベルが出力されないんじゃ!! そんなときは logging.getLogger().setLevel(logging.DEBUG) って書けばOK def main(): application = webapp.WSGIApplication( [('/',MainPage), ('/edit',EditPage), ('/photo/([^/]+)',Photo)], debug=True) logging.
Google Developer Day 2008 に行ってきました。 で、基調講演聞いたあと、Google App Engine のコードラボに参加してきました。 まぁ簡単に言うと Hackathon です。 画像掲示板つくってみる ユーザ登録&認証 コメント付加 古いデータは消す な画像掲示板を書いてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import wsgiref.handlers, cgi from google.appengine.api import images from google.appengine.api import users from google.appengine.ext import webapp,db class ImageAndText(db.Model): user = db.User
urllib で POST でアクセスする場合は params = { x : "1", y : "2" } urllib2.openurl(url,urllib.urlencode(params)) で、GET でアクセスする時、パラメータはどうするんだろう? とか思ってたら、id:nishiohirokazu さんに教えてもらった params = { x : "1", y : "2" } params = urllib.urlencode(params) // x=1&y=2 なので urllib2.openurl(url + "?" + params) で良いらしい。 凄い素直といえば素直だけど…… PUT とか DELETE とかはどうするんだろう?
「基本、follow されたらし返すから、自動でいいじゃん」とか思いはじめたので、こんな感じで自動 follow するようにしました。 Twitter でイチイチ follow するのが面倒くさい - にぽたん研究所 を Gmail に IMAP でアクセスしてやるっていうのを お友達がRubyでやろうとしてたので 「それ Python でやったほうが早いよ(バッテリ付属的な意味で」 と、思ったのでやってみた。 #!/usr/bin/env python # -*- coding: utf-8 -*- gmailuser='dankogai@gmail.com' gmailpasswd='kogaidan' twitteruser = 'dankogai' twitterpasswd = 'kogaidan' from imaplib import IMAP4_SSL import re,
Jython を DL yoshiori@macbook-air $ wget http://downloads.sourceforge.net/jython/jython_installer-2.2.1.jar さくっとインストール yoshiori@macbook-air $ java -jar jython_installer-2.2.1.jar 標準だと、 $HOME/jython2.2.1 にインストールされるので そこだけ $HOME/opt/jython2.2.1 に変更した。 あと、今後のバージョンアップも考えてシンボリックリンクはっておく yoshiori@macbook-air $ cd opt yoshiori@macbook-air $ ln -s jython2.2.1 jython パスをとおしておく yoshiori@macbook-air $ ln -s /
Google のおかげで一気に Python の人気がでてきそうですね! Python は教育言語なんて側面もあるので、言語仕様も小さくて覚えやすいんだけど、 少し一般的でなくて嵌ることもあります。 折角なので僕が Python をやって嵌ったところを書いてみます。 switch 文は無い 無いです。 default が有る時点で邪悪だって誰かが言ってました。 substring は文字列に配列としてアクセスすればOK Java や js の substring、Perl の sbstr みたいなの >>> 'hogehoge'[5] 'o' >>> 'hogehoge'[5:7] 'og' >>> 'hogehoge'[5:] 'oge' >>> 'hogehoge'[:5] 'hogeh' >>> ちなみに一文字でも文字列なのでこんな事も出来ます。 >>> 'hogehoge'[5][
こんにちは!! デブサミベストタイムキーパーを目指している jYoshiori です. デブサミの竹迫アワー(通称「ネットコミュニケーション2.0」)は すごく楽しかったです>< そこで id:otsune さんが 観測範囲が狭い不幸 「twitterのfollowingが100人を超えると 読めなくなるから、それ以上増やさないよ うにする」 もったいない!! もったいない!! twitterのfollowボタンを押して 矢印が回っているまでの数秒 あなたの寿命はかなり縮んでる! と言ってました>< void GraphicWizardsLair( void ); // デブサミ2008「ネットコミュニケーション2.0」でライトニングトークをした 衝撃を受けました. 反省しておもしろそうなお話をしている人がいたら その人の follow している人を全部 add するスクリプトを書きました
なんかまめこさんが Twitter の bot を作るために Ruby を勉強するとか言ってたので せっかく Django で Python に触れたのにもったいない!!と思って書いてみるよ!! python-twitter のインストール♪ ぱいぱいから♪ $ sudo easy_install python-twitter post してみる import twitter api = twitter.Api(username='username', password='password') api.PostUpdate(u'おなかすいた') こんなに簡単だお!!! たぶん、Perl も Ruby も似たようなもんだよ!! せっかく少し覚えたんだから Python 使ってみると 楽しいと思うよ!!
setup.py を適当に書いてたら怒られなくなったので pypi へ登録するのとかを試してみる。 ユーザー登録 http://pypi.python.org/pypi/ へアクセスして 右上の方の 「Register」をクリック ユーザーネーム、パスワード、メールアドレスを入力。 (PGP は省略可能) これだけでユーザー登録完了♪ 簡単すぎ>< ユーザー登録 2 setup.py を書いたら $ python setup.py register とすごい勢いで打ちこみます。 最初の一回だけ ユーザー情報を入力しろと言われるので とりあえず入力…… 「メールを送ったから見ろ!」と言われるので メールを見て URL にアクセス!! もう一回上記コマンドを打つと 「OK、ログイン情報を記憶しても良いかい?」 って聞かれるので「y」をそっと押しました。 モジュールの登録 $ python se
iKnow の進捗を Python から取得できるようにしてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from BeautifulSoup import BeautifulSoup import re class Iknow: def __init__(self,username): b = BeautifulSoup(urllib.urlopen("http://www.iknow.co.jp/user/"+username)) iknow = b.find('div',id="study_badge_div").find('script').string self.iknow_study = int(re.search(r"int_left.*?(\d+)", iknow).group(1)) s
適当にアプリを作っていると modelの変更が頻繁に出てきます。 駄目人間の証ですね>< でも、そんな駄目人間にも優しいDjangoです。 後からカラム追加したり、ユニークにしたかったりインデックス貼りたかったりして models.pyを変更した後、絶望にくれてませんか? 更にその後、 >python manage.py reset appNameとか打っちゃってadminにすらログインできなくなって 泣きそうになっていませんか? 俺は両方経験しました。 おっぱいマニア*1を目指す人間として軸がぶれている気がします>< さて、そんな時ですが、実は便利なコマンドがあります。 >python manage.py sqlreset appName | mysql -D dbName -u user -p もちろん大事なデータが入っているときにはやってはいけませんが 作成途中の時はこんな感じでガン
なんか前回、前々回とまじめすぎて おっぱいとかかけなくて欲求が溜まっているので 今回は軽めのお話♪ Djangoは setting.py に色々なセッティングをかくのですが MEDIA_ROOTやTEMPLATE_DIRSは絶対パスでかかねばなりません。 でも、複数人や色々なマシンで開発していると ディレクトリの場所はまちまちですよね。 そういう時はめんどくさいので import os BASE_PATH = os.path.dirname( __file__ ) TEMPLATE_DIRS = ( os.path.join(BASE_PATH, 'templates'), ) とかけば、プロジェクトの中のパスを取得できます。 これだと空になるときがあるみたいです。 import os BASE_PATH = os.path.dirname(os.path.abspath(__file__
Djangoでユーザー登録 ユーザー登録で良くあるパターンとして ユーザーネームとパスワード、メールアドレスを入力する 認証のメールが届く メールに書いてあるURLにアクセスするとアカウントが有効になる という処理が良くあります。 これをやるためのモジュール(テンプレート?)が 実は用意されています。 django-registration - Google Code これを使ってみましょう django-registrationをインストールしてみる さっそく先ほどのdjango-registrationのサイトの右の方の 「Featured Downloads:」からダウンロードして解凍します。 そして解凍したディレクトリで >sudo python setup.py installをするだけでインストール終了です。 django-registrationをプロジェクトに取り込む まず
settings.pyに下記のように書きました。 EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'youremail@gmail.com' EMAIL_HOST_PASSWORD = 'yourpassword' EMAIL_PORT = 587 で、 python manage.py shellでsettingを読み込んだshellを起動して動作確認してみます。 In [1]: from django.core.mail import EmailMessage In [2]: email = EmailMessage('hello','test',to = ['yoshiori@gmail.com']) In [3]: email.send() 駄目でした……orz というわけで、解決方法必死に探
チュートリアルも無事に終わったので 一番使いそうな機能、ユーザー登録を作ってみたいと思います。 フォームとフィールド,マニピュレータ : Django オンラインドキュメント和訳 ここで説明しているフォーム/マニピュレータシステムは,次の Django リリース では別のシステムに置き換えられる予定です.スクラッチで新たなアプリケーショ ンを開発するつもりなら,このシステムを学ぶために時間を浪費しないよう強く勧 めます.その代わりに,新たなフォームシステムである django.newforms の使 い方を学んで利用しましょう. newforms のドキュメント は現在整備中です. http://michilu.com/django/doc-ja/forms/ と書いてありますので newforms を使ってみたいと思います。 まず、forms.py を書いてみる。 # -*- encod
次のページ
このページを最初にブックマークしてみませんか?
『Djangoへの片思い日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く