Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
<ul>PySide/QWebkit  で 楽々 Slidehare Hack 第 7 回関東 Qt 勉強会 </ul><ul>Kazushige TAKEUCHI <li><@myb1126> </li></ul><ul>N9 買いました! ...
<ul>0. 自己紹介 </ul><ul><li>職業   :  NW SE/SIer( 元携帯 S/W 開発 ) </li><ul><li>NW の設計とか(内部用の)テストツールとか </li></ul><li>Twitter id :  ...
主な出現箇所: </li><ul><li>来月あたりに東京の東側にいくので,そっちの方で勉強会 </li></ul><li>興味 </li><ul><li>NW ツール
開発を楽にする仕組み </li><ul><li>CI/BTS  </li></ul></ul></ul>
<ul>0. 自己紹介 </ul><ul><li>買いました。 (∩´∀ ` )∩ </li></ul>
<ul>今日の発表の内容 </ul><ul>成果物 <ul><li>地下鉄通勤が暇なので、 Slideshare でもみて勉強して通勤したい!
そんな願望を元に作った Slideshare Downloader の紹介 </li></ul>発表流れ </ul><ul><ul><li>Python: どんな言語なの?
PySide:PySide  とは、 Qt SDK/PyQt との違い
Slideshare Downloader の紹介 </li></ul></ul>
1.Pythonとは <ul><li>Lightweight Language </li></ul><ul><ul><li>書いたらすぐ試せる。
プロトタイプ向け(だけではなく実用にも使える)
短いコード
GC:メモリ管理が容易(プロトタイプ用途ならとりあえず) </li></ul><li>C/C++同様のマルチパラダイム言語 </li><ul><li>関数型言語のパラダイムも使える。
短いコードで高度なことが出来るようになってる。 </li></ul><li>海外で人気があるためユーザが多数 </li><ul><li>ツールなどもかなり充実 </li><ul><li>海外製のツールが実はpython製でプラグインがpytho...
1.Pythonとは <ul><li>適用範囲が広い </li><ul><li>CLIアプリ </li><ul><li>Linuxの随所に!(pythonを削ってしまうと動かないOSもあるとか) </li></ul><li>デスクトップアプリケ...
1.Pythonとは <ul>Pythonistaは モテ ます らしいです。 </ul>
2.PySideとは
2.PySideとは <ul><li>ライセンス </li><ul><li>LGPL </li></ul><li>PySide Qt bindings allow both free open source and proprietary so...
商用ソフトウェア書けるよ ! </li></ul>
2.PySideとは <ul><li>これは何? </li><ul><li>LGPL  な  Qt python Binding (PyQt は GPL ) </li></ul><li>Python ver </li><ul><li>- 2.6...
2.PySide <ul>色々書きたいことはあるのですが, まとめきれなかったのでゴメンナサイ </ul>
3.Slideshare Downloader(以下,SD
3.Slideshare Downloader てめえは俺を怒らせた (Button) オラオラオラオラ (Button) やれやれだぜ (Button) アドレスバー( LineEdit ) スライド (WebView)
3.Slideshare Downloader <ul>Demo しようと思ったけど回線が細くて無理 <li>(´ ・ ω ・` )
どなたか, LAN / MicroUSB 貸してくだされば出来ます. </li></ul>
3.Slideshare Downloader <ul><li>Qwebkit を利用
Upcoming SlideShare
Loading in …5
×

PySide/QtWebkitで楽々 slideshare Hack

3,253 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

PySide/QtWebkitで楽々 slideshare Hack

  1. 1. <ul>PySide/QWebkit で 楽々 Slidehare Hack 第 7 回関東 Qt 勉強会 </ul><ul>Kazushige TAKEUCHI <li><@myb1126> </li></ul><ul>N9 買いました! </ul>
  2. 2. <ul>0. 自己紹介 </ul><ul><li>職業   : NW SE/SIer( 元携帯 S/W 開発 ) </li><ul><li>NW の設計とか(内部用の)テストツールとか </li></ul><li>Twitter id : @myb1126
  3. 3. 主な出現箇所: </li><ul><li>来月あたりに東京の東側にいくので,そっちの方で勉強会 </li></ul><li>興味 </li><ul><li>NW ツール
  4. 4. 開発を楽にする仕組み </li><ul><li>CI/BTS </li></ul></ul></ul>
  5. 5. <ul>0. 自己紹介 </ul><ul><li>買いました。 (∩´∀ ` )∩ </li></ul>
  6. 6. <ul>今日の発表の内容 </ul><ul>成果物 <ul><li>地下鉄通勤が暇なので、 Slideshare でもみて勉強して通勤したい!
  7. 7. そんな願望を元に作った Slideshare Downloader の紹介 </li></ul>発表流れ </ul><ul><ul><li>Python: どんな言語なの?
  8. 8. PySide:PySide とは、 Qt SDK/PyQt との違い
  9. 9. Slideshare Downloader の紹介 </li></ul></ul>
  10. 10. 1.Pythonとは <ul><li>Lightweight Language </li></ul><ul><ul><li>書いたらすぐ試せる。
  11. 11. プロトタイプ向け(だけではなく実用にも使える)
  12. 12. 短いコード
  13. 13. GC:メモリ管理が容易(プロトタイプ用途ならとりあえず) </li></ul><li>C/C++同様のマルチパラダイム言語 </li><ul><li>関数型言語のパラダイムも使える。
  14. 14. 短いコードで高度なことが出来るようになってる。 </li></ul><li>海外で人気があるためユーザが多数 </li><ul><li>ツールなどもかなり充実 </li><ul><li>海外製のツールが実はpython製でプラグインがpythonなんてことも </li></ul><li>ただし、マルチバイト文字の扱いが若干。。。 </li><ul><li>python3 も良いけど、(Webアプリでは)まだまだ </li></ul></ul></ul>
  15. 15. 1.Pythonとは <ul><li>適用範囲が広い </li><ul><li>CLIアプリ </li><ul><li>Linuxの随所に!(pythonを削ってしまうと動かないOSもあるとか) </li></ul><li>デスクトップアプリケーション </li><ul><li>フリージングで、exe/app化 </li><ul><li>.exeを生成可能でランタイムのインストール無しで配布されたアプリを実行可能(for Windows) </li></ul></ul><li>Webアプリ </li><ul><li>フレームワークが充実 </li><ul><li>Model / View / Controllerが多種多様で、色んな組み合わせで利用可能 </li></ul><li>Webサーバも規格化されており、互換性あり </li><ul><li>WSGIとかでぐぐってください。 </li></ul></ul><li>組み込み </li><ul><li>Python on a Chip </li><ul><li>(詳しく知らない。。。) </li></ul></ul></ul></ul>
  16. 16. 1.Pythonとは <ul>Pythonistaは モテ ます らしいです。 </ul>
  17. 17. 2.PySideとは
  18. 18. 2.PySideとは <ul><li>ライセンス </li><ul><li>LGPL </li></ul><li>PySide Qt bindings allow both free open source and proprietary software development
  19. 19. 商用ソフトウェア書けるよ ! </li></ul>
  20. 20. 2.PySideとは <ul><li>これは何? </li><ul><li>LGPL な Qt python Binding (PyQt は GPL ) </li></ul><li>Python ver </li><ul><li>- 2.6/2.7 (3.2 は experimental) </li></ul><li>Qt ver </li><ul><li>4.8 を beta support </li></ul><li>Url </li><ul><li>http://www.pyside.org/ </li></ul></ul>
  21. 21. 2.PySide <ul>色々書きたいことはあるのですが, まとめきれなかったのでゴメンナサイ </ul>
  22. 22. 3.Slideshare Downloader(以下,SD
  23. 23. 3.Slideshare Downloader てめえは俺を怒らせた (Button) オラオラオラオラ (Button) やれやれだぜ (Button) アドレスバー( LineEdit ) スライド (WebView)
  24. 24. 3.Slideshare Downloader <ul>Demo しようと思ったけど回線が細くて無理 <li>(´ ・ ω ・` )
  25. 25. どなたか, LAN / MicroUSB 貸してくだされば出来ます. </li></ul>
  26. 26. 3.Slideshare Downloader <ul><li>Qwebkit を利用
  27. 27. Windows ではMozilla Firefoxのプラグインが利用可能 </li><ul><li>参考URL </li></ul></ul>
  28. 28. QtWebKit <ul><li>Apple謹製HTMLレンダリングエンジン </li><ul><li>のQt Port </li></ul><li>プラグインもサポート </li><ul><li>Windowsの場合は、Firefoxのプラグインを兼用 </li></ul><li>HTML5 Support </li><ul><li>まだまだ実装中(らしい)
  29. 29. Win 64bit ではなぜか動かない時が </li><ul><li>なぜかWin 64bitでは、HTML5のスライドが表示出来なかった。(SDでは未対応とした)
  30. 30. 32bitなら出来た。 </li></ul></ul></ul>
  31. 31. QtWebkitの全クラス:ABC順 <ul>WebCore <li>QGraphicsWebView
  32. 32. QWebDatabase
  33. 33. QWebElement
  34. 34. QWebElementCollection
  35. 35. QWebFrame
  36. 36. QWebHistory
  37. 37. QWebHistoryInterface
  38. 38. QWebHistoryItem
  39. 39. QWebHitTestResult
  40. 40. QwebInspector </li></ul><ul><li>QWebPage
  41. 41. QWebPage.ChooseMultipleFilesExtensionOption
  42. 42. QWebPage.ChooseMultipleFilesExtensionReturn
  43. 43. QWebPage.ErrorPageExtensionOption
  44. 44. QWebPage.ErrorPageExtensionReturn
  45. 45. QWebPage.ExtensionOption
  46. 46. QWebPage.ExtensionReturn
  47. 47. QWebPluginFactory
  48. 48. QWebPluginFactory.MimeType
  49. 49. QWebPluginFactory.Plugin
  50. 50. QWebSecurityOrigin
  51. 51. QWebSettings
  52. 52. QWebView </li></ul>
  53. 53. QtWebkitの全クラス:分類別 <ul>□共通・全体 <ul><li>WebCore
  54. 54. QwebView
  55. 55. QgraphicsWebView </li></ul>□設定系 <ul><li>QWebSettings </li></ul>□プラグイン系 <ul><li>QWebPluginFactory
  56. 56. QWebPluginFactory.MimeType
  57. 57. QWebPluginFactory.Plugin </li></ul><li>□タブ,HTMLとかページ系 </li><ul><li>QWebElement
  58. 58. QWebElementCollection
  59. 59. QWebFrame
  60. 60. QwebInspector </li></ul><li>□??? </li><ul><li>QWebHitTestResult </li></ul></ul><ul>□ページ系 <ul><li>QWebPage
  61. 61. QWebPage.ChooseMultipleFilesExtensionOption
  62. 62. QWebPage.ChooseMultipleFilesExtensionReturn
  63. 63. QWebPage.ErrorPageExtensionOption
  64. 64. QWebPage.ErrorPageExtensionReturn
  65. 65. QWebPage.ExtensionOption
  66. 66. QWebPage.ExtensionReturn </li></ul>□セキュリティ系 <ul><li>QWebSecurityOrigin </li></ul><li>DB系 </li><ul><li>QWebDatabase </li></ul><li>履歴系 </li><ul><li>QWebHistory
  67. 67. QWebHistoryInterface
  68. 68. QWebHistoryItem </li></ul></ul>
  69. 69. Slideshare Downloaderの仕組み(1) <ul><li>WebView の設定を行う </li><ul><li>s = QtWebKit.QWebSettings.globalSettings()
  70. 70. s.setAttribute(QWebSettings.PluginsEnabled, True)
  71. 71. s.setAttribute(QWebSettings.JavascriptEnabled, True) </li></ul><li>SlideshareのAPIを叩く </li><ul><li>WebFrame#evaluateJavascript() </li><ul><li>Javascriptを評価します.
  72. 72. 値を返します. </li></ul></ul></ul>
  73. 73. Slideshare API:Player API <ul><li>jumpTo(slide_number):Void </li><ul><li>In the Slide-show jump to the specified slide number </li></ul><li>next():Void </li><ul><li>Move to the next slide </li></ul><li>previous():Void </li><ul><li>Move to the previous slide </li></ul><li>first():Void </li><ul><li>Move to the first slide in the slide-show </li></ul><li>last():Void </li><ul><li>Move to the last slide in the slide-show </li></ul><li>getCurrentSlide():Number </li><ul><li>Get the current slide number </li></ul></ul>
  74. 74. Slideshare Downloaderの仕組み(2) <ul><li>キャプチャの取得
  75. 75. WebFrame#render(QPainter) </li><ul><li>size = QSize(598, 441)
  76. 76. offscreen_image = QImage(size, QImage.Format_RGB32)
  77. 77. painter = QPainter(offscreen_image)
  78. 78. self.frame.render(painter) </li></ul></ul>
  79. 79. Slideshare Downloader(3) <ul><li>ZIPで固める(pythonでやってしまった.) </li></ul>zip_gen = os.walk(&quot;.&quot;) for zip_me in zip_gen: # [rootname, dirnamelist, filenamelist ] print zip_me for reg_file in zip_me[2]: # loop for finename print reg_file write_file = os.path.join(zip_me[0], reg_file) arc_name = write_file # print &quot;zip write: &quot;, write_file, arc_name try: zipf.write(write_file, arc_name); except: print &quot;ERROR: writing file =&quot;, write_file zipf.close()
  80. 80. これから <ul><li>完全自動化 </li><ul><li>HTTPClientのロード率がおかしい? </li></ul><li>バッチ処理 </li><ul><li>”○○”のキーワードの物を自動的にDL </li></ul><li>テスト
  81. 81. Watermark の付与(公開するなら) </li></ul>
  82. 82. その他、PySideを使って作ったアプリ <ul><li>Teratermっぽいコンソールアプリ </li><ul><li>Qconsoleの移植
  83. 83. Pythonでマクロ </li></ul><li>PC Link Tool 互換アプリ </li><ul><li>NEC製の携帯に積んであるWebサーバと通信
  84. 84. Growl でAndroidの新着情報をPCで </li></ul></ul>
  85. 85. 参考資料 <ul><li>PySide/QML on MeeGo Tutorial </li><ul><li>http://thp.io/2010/meego-python/ </li></ul><li>上記の翻訳(途中) </li><ul><li>http://erlang.web.fc2.com/pyside_tutorial/ </li></ul><li>後は独学 </li></ul>
  86. 86. <ul>ご清聴 ありがとうございました </ul><ul>N9 うまうま </ul>

×