Your SlideShare is downloading. ×
0
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Python3でwebアプリ
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Python3でwebアプリ

4,012

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,012
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
18
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Python3でWebアプリケーション aodag PyConJP2012
  • 2. お前誰よAtsushi ODAGiriaodag@aodag株式会社ビープラウド
  • 3. Python3!Python3.2.3Python3.3rc2来週(9/22)に3.3finalの予定
  • 4. Python3での重要な変更標準ライブラリが整理されたstr,unicodeがbytes,strに。ユニコードと生データとの違いが明確に。相対importの扱いが変更された。相対モジュールをインポートするときは、 "from . "が必要に。
  • 5. Python3の情報PYPI Python3Packageshttp://pypi.python.org/pypi?:action=browse&c=533&show=all
  • 6. Python3の情報 Wall Of Shamehttp://python3wos.appspot.com/
  • 7. すでにPython3対応しているフレームワークPyramidBottleBoboCherryPyTornado
  • 8. Python3での課題PEP333(WSGI 1.0) であいまいな点が多い特に文字コード、ユニコード関連Python3では bytesとstrの違いが明確になった。WSGIでも明確に! -> PEP3333(WSGI 1.0.1)
  • 9. WSGIで行こうdef hello(environ, start_response): start_response([200 OK, (Content-type, text/plain)]) return [b"Hello"]from wsgiref.simple_server import make_serverhttpd = make_server(, 8080, hello)httpd.serve_forever()
  • 10. (´・ω・`)めんどくさいですねぇ
  • 11. とりあえず必要だと思うものリクエストオブジェクトルーティングHTMLテンプレートWSGIサーバー
  • 12. WebObで行こうfrom webob.dec import wsgify@wsgifydef hello(request): return "Hello"from wsgiref.simple_server import make_serverhttpd = make_server(, 8080, hello)httpd.serve_forever()
  • 13. WSGIサーバーcherrypywaitresstornado
  • 14. URLディスパッチWebDispatchWSGIアプリの様々なディスパッチをサポートURLパターンリクエストメソッド
  • 15. WebDispatchdispatcher = URLDispatcher()dispatcher.add_url(top, /, index)dispatcher.add_url(hello, /hello/{name}, hello)dispatcher.add_url(top, /good-by, bye)
  • 16. urlvarsurlパターン:/hello/{name}実際のurl: /hello/aodagurlvars: {name: aodag}@wsgifydef hello(request): name = request.urlvars.get(name, world) return "Hello, {0}".format(name)
  • 17. テンプレートエンジンJinja2MakoChameleonTempita...
  • 18. (`・ω・) 意外と充実!
  • 19. jinja2loader=PackageLoader(__name__, templates)env = Environment(loader=loader)
  • 20. jinja2@wsgifydef hello(req): name = req.urlvars.get(name, world) tmpl = env.get_template(index.html) return tmpl.render(name=name)
  • 21. (`・ω・) これで**MVC** できるね!
  • 22. CSSとか画像とかどうするの
  • 23. NGINXでやれよ!
  • 24. と、思いますが、開発中にNginx使うのも萎えるので。
  • 25. スタティックファイルを扱うwebob.static.FileAppwebob.static.DiectoryApp
  • 26. static_resource = pkg_resources.resource_file(__name__, static)static_app = DirectoryApp(static_resource)application.add_url(static, /static/*, static_app)
  • 27. (´・ω・`) データはどうしよう
  • 28. データベースアクセスドライバ: psycopg2ORM: SQLAlchemyマイグレーション: alembic
  • 29. (`・ω・) 予想以上に ちゃんと動くぞ!
  • 30. セッションBeakerBeaker自体は動くバックエンドは Memory, Fileは問題なしその他のバックエンドは依存ライブラリが対応しているか未確認
  • 31. 認証repoze.who (trunk)多分 2.1 でリリース使いたければ setup.py の dependency_links に以下を追加https://github.com/repoze/repoze.who/zipball/master#egg=repoze.who-2.1dev
  • 32. フォームライブラリdeformcolander問題なく利用可能。っていうか僕が対応しました(・∀・)
  • 33. 画像処理pillow はよ
  • 34. (´・ω・`) PILとかは 非公式パッチで動くらしいですねぇ
  • 35.        |   \  __  /   _ (m) _ピコーン      |ミ|    /  `´  \     (A`)     ノヽノヽ       くく
  • 36. 画像処理PyQtにQImageがあるじゃないか!
  • 37. PyQt説明しよう!PyQtとは!UNIX系のデスクトップ環境KDEで採用されていることで有名なGUIツールキットQtのPythonバインディングである!つまり!画像をリサイズするためだけに、GUIツールキットを使おうとしているのである!
  • 38. (゚д゚ )
  • 39. ( ゚д゚ )
  • 40. QImageを使うためにQImageがQtGUIモジュールにあるため、ヘッドレス不可能LinuxだったらX11が必要になりますQtをインストールPyQtをインストール
  • 41. ファイルアップロードからのサムネイル保存data = validated[image][fp].read()image = QtGui.QImage.fromData(data)thumbnail = image.scaled(128, 128, aspectRatioMode=Qt.KeepAspectRatio)thumbnail.save(thumbnail_filename)
  • 42. まとめ画像処理だけ難あり?他は結構でそろっているが、実際にはフレームワークを使うことになるでしょう。
  • 43. つまり、Django待ち
  • 44. 参考● Wall of Shame http://python3wos.appspot. com/● PyPI Python3 Packages http://pypi.python. org/pypi?:action=browse&c=533&show=all● Python Web Server Gateway Interface v1.0● http://www.python.org/dev/peps/pep-333/● Python Web Server Gateway Interface v1. 0.1 http://www.python.org/dev/peps/pep- 3333/

×