SlideShare a Scribd company logo
1 of 23
Download to read offline
Pyhack でやったこと
  Contributing to Django

  2012/1/22 @hirokiky


13年1月24日木曜日
hackしていますか?


  ✤   ライブラリ、フレームワークを作る

  ✤   アプリケーション、ツールを作る

  ✤   OSSに参加する


13年1月24日木曜日
Python mini hack-a-thon



  ✤   Pythonのhack-a-thon

  ✤   今月は雪山での合宿でした



13年1月24日木曜日
私がpyhackでやったこと




  ✤   Contributing to Django




13年1月24日木曜日
pyhackでやったこと(話すこと)



  ✤   HttpResponseRedirectにurlというプロパティを追加

  ✤   decorator_from_middlewareで複数のMiddlewareを扱え
      るようにした




13年1月24日木曜日
HttpResponseRedirect.url



✤   response[‘Locale’]と書く必要があった

✤   response.urlってあったらテスト書きやすよね



13年1月24日木曜日
実装




  ✤   url = property(lambda self: self['Location'])




13年1月24日木曜日
それだけ



  ✤   ( ´ー`)フゥー...

  ✤   あとはテストをそれなりに書いておしまい



13年1月24日木曜日
Needs documentation




13年1月24日木曜日
Djangoのドキュメントを書くには



  ✤   Writing documentationを読みましょう
  ✤   https://docs.djangoproject.com/en/dev/internals/contributing/writing-documentation/




13年1月24日木曜日
書ける英文



 ✤   もともと大した機能じゃないからビビったわりには書けた

 ✤   翻訳をとおしてドキュメントの書き方を知っていたのが大きい




13年1月24日木曜日
Tips



         ✤    Ian M Lewisさんにみてもらう

         ✤    Jonas Obristさんにみてもらう



13年1月24日木曜日
Thanks to Jonas for the review




13年1月24日木曜日
decrator_from_middleware改良



  ✤   MiddlewareClassをビューごとに適応する

  ✤   単一のMiddlewareしか扱えなかった



13年1月24日木曜日
だめよ



        @decorater_from_middleware(Ritsu)
        @decorator_from_middleware(Mio)
        def k_on_view(request):
          ...


13年1月24日木曜日
間違った順番で呼ばれてしまう

      ✤   Ritsu.process_request           ✤   Ritsu.process_request

      ✤   Ritsu.process_view              ✤   Mio.process_request

      ✤   Mio.process_request             ✤   Ritsu.process_view

      ✤   Mio.process_view         正しくは   ✤   Mio.process_view

      ✤   k_on_view                       ✤   k_on_view

      ✤   Mio.process_response            ✤   Mio.process_response

      ✤   Ritsu.process_response          ✤   Ritsu.process_response

13年1月24日木曜日
こうしましょう



   @decorater_from_middleware(Ritsu, Mio)
   def k_on_view(request):
     ...



13年1月24日木曜日
実装: 単純にforループでまわした




              https://github.com/hirokiky/django/commit/2db135897f7dcc86861d4e3d6328e8d86a3ecf4c

13年1月24日木曜日
Dive into Django


  ✤   Djangoのソースコードを読み書きしましょう

  ✤   そしてパッチを投げましょう

  ✤   こわくない




13年1月24日木曜日
easy pickupから始めよう



  ✤   最初は簡単なチケットから初めるのがよいようです

  ✤   Trackerでチケットの検索条件に「easy pickup」を追加するだけ




13年1月24日木曜日
Loose Coupling Principle



  ✤   すべてのソースコードを理解する必要はない

  ✤   各コンポーネントはLoose Couplingなので問題なし

  ✤   私はHttpHandling, GenericViewあたりが好き




13年1月24日木曜日
Preston says...


  ✤   Dissecting the source code when you have the purpose to fix a
      problem, gives you a much better understanding of how things
      are working - as you NEED to understand them in order to
      properly fix/extend them.


               http://hirokiky.tumblr.com/post/40425743120/you-might-want-to-attempt-to-write-a-patch-for-an




13年1月24日木曜日
Enjoy hacking




13年1月24日木曜日

More Related Content

More from hirokiky

簡単な算数でできる文章校正
簡単な算数でできる文章校正簡単な算数でできる文章校正
簡単な算数でできる文章校正hirokiky
 
エンジニアが起業のアイディアを見つける方法
エンジニアが起業のアイディアを見つける方法エンジニアが起業のアイディアを見つける方法
エンジニアが起業のアイディアを見つける方法hirokiky
 
それ、公開しちゃおうよ - みんなのPython勉強会63登壇
それ、公開しちゃおうよ - みんなのPython勉強会63登壇それ、公開しちゃおうよ - みんなのPython勉強会63登壇
それ、公開しちゃおうよ - みんなのPython勉強会63登壇hirokiky
 
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017hirokiky
 
営業も広報もいない僕たちが11年間やってきたこと
営業も広報もいない僕たちが11年間やってきたこと営業も広報もいない僕たちが11年間やってきたこと
営業も広報もいない僕たちが11年間やってきたことhirokiky
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Pythonhirokiky
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015hirokiky
 
価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96hirokiky
 
Pycon2014 django performance
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performancehirokiky
 
gargant.dispatch, a flexible dispatcher for WSGI
gargant.dispatch, a flexible dispatcher for WSGIgargant.dispatch, a flexible dispatcher for WSGI
gargant.dispatch, a flexible dispatcher for WSGIhirokiky
 
Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013hirokiky
 
軽量のススメ
軽量のススメ軽量のススメ
軽量のススメhirokiky
 
django-websettingsの紹介
django-websettingsの紹介django-websettingsの紹介
django-websettingsの紹介hirokiky
 
pyramid_layoutと僕と、ときどきzope.interface
pyramid_layoutと僕と、ときどきzope.interfacepyramid_layoutと僕と、ときどきzope.interface
pyramid_layoutと僕と、ときどきzope.interfacehirokiky
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4hirokiky
 
個人の嗜好を学習し記事を推奨するフィードリーダ
個人の嗜好を学習し記事を推奨するフィードリーダ個人の嗜好を学習し記事を推奨するフィードリーダ
個人の嗜好を学習し記事を推奨するフィードリーダhirokiky
 
卒研中間発表資料:個人に最適化したフィードリーダの構築
卒研中間発表資料:個人に最適化したフィードリーダの構築卒研中間発表資料:個人に最適化したフィードリーダの構築
卒研中間発表資料:個人に最適化したフィードリーダの構築hirokiky
 

More from hirokiky (17)

簡単な算数でできる文章校正
簡単な算数でできる文章校正簡単な算数でできる文章校正
簡単な算数でできる文章校正
 
エンジニアが起業のアイディアを見つける方法
エンジニアが起業のアイディアを見つける方法エンジニアが起業のアイディアを見つける方法
エンジニアが起業のアイディアを見つける方法
 
それ、公開しちゃおうよ - みんなのPython勉強会63登壇
それ、公開しちゃおうよ - みんなのPython勉強会63登壇それ、公開しちゃおうよ - みんなのPython勉強会63登壇
それ、公開しちゃおうよ - みんなのPython勉強会63登壇
 
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
 
営業も広報もいない僕たちが11年間やってきたこと
営業も広報もいない僕たちが11年間やってきたこと営業も広報もいない僕たちが11年間やってきたこと
営業も広報もいない僕たちが11年間やってきたこと
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Python
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
 
価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96
 
Pycon2014 django performance
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performance
 
gargant.dispatch, a flexible dispatcher for WSGI
gargant.dispatch, a flexible dispatcher for WSGIgargant.dispatch, a flexible dispatcher for WSGI
gargant.dispatch, a flexible dispatcher for WSGI
 
Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013
 
軽量のススメ
軽量のススメ軽量のススメ
軽量のススメ
 
django-websettingsの紹介
django-websettingsの紹介django-websettingsの紹介
django-websettingsの紹介
 
pyramid_layoutと僕と、ときどきzope.interface
pyramid_layoutと僕と、ときどきzope.interfacepyramid_layoutと僕と、ときどきzope.interface
pyramid_layoutと僕と、ときどきzope.interface
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
 
個人の嗜好を学習し記事を推奨するフィードリーダ
個人の嗜好を学習し記事を推奨するフィードリーダ個人の嗜好を学習し記事を推奨するフィードリーダ
個人の嗜好を学習し記事を推奨するフィードリーダ
 
卒研中間発表資料:個人に最適化したフィードリーダの構築
卒研中間発表資料:個人に最適化したフィードリーダの構築卒研中間発表資料:個人に最適化したフィードリーダの構築
卒研中間発表資料:個人に最適化したフィードリーダの構築
 

My pyhack 1301

  • 1. Pyhack でやったこと Contributing to Django 2012/1/22 @hirokiky 13年1月24日木曜日
  • 2. hackしていますか? ✤ ライブラリ、フレームワークを作る ✤ アプリケーション、ツールを作る ✤ OSSに参加する 13年1月24日木曜日
  • 3. Python mini hack-a-thon ✤ Pythonのhack-a-thon ✤ 今月は雪山での合宿でした 13年1月24日木曜日
  • 4. 私がpyhackでやったこと ✤ Contributing to Django 13年1月24日木曜日
  • 5. pyhackでやったこと(話すこと) ✤ HttpResponseRedirectにurlというプロパティを追加 ✤ decorator_from_middlewareで複数のMiddlewareを扱え るようにした 13年1月24日木曜日
  • 6. HttpResponseRedirect.url ✤ response[‘Locale’]と書く必要があった ✤ response.urlってあったらテスト書きやすよね 13年1月24日木曜日
  • 7. 実装 ✤ url = property(lambda self: self['Location']) 13年1月24日木曜日
  • 8. それだけ ✤ ( ´ー`)フゥー... ✤ あとはテストをそれなりに書いておしまい 13年1月24日木曜日
  • 10. Djangoのドキュメントを書くには ✤ Writing documentationを読みましょう ✤ https://docs.djangoproject.com/en/dev/internals/contributing/writing-documentation/ 13年1月24日木曜日
  • 11. 書ける英文 ✤ もともと大した機能じゃないからビビったわりには書けた ✤ 翻訳をとおしてドキュメントの書き方を知っていたのが大きい 13年1月24日木曜日
  • 12. Tips ✤ Ian M Lewisさんにみてもらう ✤ Jonas Obristさんにみてもらう 13年1月24日木曜日
  • 13. Thanks to Jonas for the review 13年1月24日木曜日
  • 14. decrator_from_middleware改良 ✤ MiddlewareClassをビューごとに適応する ✤ 単一のMiddlewareしか扱えなかった 13年1月24日木曜日
  • 15. だめよ @decorater_from_middleware(Ritsu) @decorator_from_middleware(Mio) def k_on_view(request): ... 13年1月24日木曜日
  • 16. 間違った順番で呼ばれてしまう ✤ Ritsu.process_request ✤ Ritsu.process_request ✤ Ritsu.process_view ✤ Mio.process_request ✤ Mio.process_request ✤ Ritsu.process_view ✤ Mio.process_view 正しくは ✤ Mio.process_view ✤ k_on_view ✤ k_on_view ✤ Mio.process_response ✤ Mio.process_response ✤ Ritsu.process_response ✤ Ritsu.process_response 13年1月24日木曜日
  • 17. こうしましょう @decorater_from_middleware(Ritsu, Mio) def k_on_view(request): ... 13年1月24日木曜日
  • 18. 実装: 単純にforループでまわした https://github.com/hirokiky/django/commit/2db135897f7dcc86861d4e3d6328e8d86a3ecf4c 13年1月24日木曜日
  • 19. Dive into Django ✤ Djangoのソースコードを読み書きしましょう ✤ そしてパッチを投げましょう ✤ こわくない 13年1月24日木曜日
  • 20. easy pickupから始めよう ✤ 最初は簡単なチケットから初めるのがよいようです ✤ Trackerでチケットの検索条件に「easy pickup」を追加するだけ 13年1月24日木曜日
  • 21. Loose Coupling Principle ✤ すべてのソースコードを理解する必要はない ✤ 各コンポーネントはLoose Couplingなので問題なし ✤ 私はHttpHandling, GenericViewあたりが好き 13年1月24日木曜日
  • 22. Preston says... ✤ Dissecting the source code when you have the purpose to fix a problem, gives you a much better understanding of how things are working - as you NEED to understand them in order to properly fix/extend them. http://hirokiky.tumblr.com/post/40425743120/you-might-want-to-attempt-to-write-a-patch-for-an 13年1月24日木曜日