SlideShare a Scribd company logo
1 of 16
Download to read offline
Trac


                  2010/10/01 Shibuya.trac   8


2010   9   30
wyukawa(Wataru Yukawa)

                          http://d.hatena.ne.jp/wyukawa

                Twitter   http://twitter.com/wyukawa

                                         SE
                            Java



2010   9   30
Trac

                Trac

                Trac




2010   9   30
Trac


                 Component

                             implements




2010   9   30
HelloWorld
   class HelloWorldPlugin(Component):
      implements(INavigationContributor)

            # INavigationContributor methods
            def get_active_navigation_item(self, req):
               return 'helloworld'
            def get_navigation_items(self, req):
               yield ('mainnav', 'helloworld',
                  html.A('Hello world', href= req.href.helloworld




2010   9   30
Trac

                Trac
                   AdminModule, TicketModule, WikiModule, ...
                       Eclipse




2010   9   30
2010   9   30
Component
                            ComponentMeta

                ComponentManager     Component



                             Interface

                ExtensionPoint

2010   9   30
w




                http://www.flickr.com/photos/
                      merec0/655780644
2010   9   30
Trac
                 TicketSubmitPolicyPlugin




            IAdminPanelProvider                     AdminModule

            TicketSubmitPolicyPlugin IAdminPanelProvider
            implements          (               get_admin_panels
                render_admin_panel          )
2010   9   30
IAdminPanelProvider
                 (get_admin_panels,
                render_admin_panel)   TicketSubmitPolicy
                                            Plugin
       AdminModule




2010   9   30
class TicketSubmitPolicyPlugin(Component):
                ... ...
                   implements(IAdminPanelProvider,...)
                ... ...
                   def get_admin_panels(self, req):
                ... ...
                     if req.perm.has_permission('TRAC_ADMIN'):
                         yield ('ticket', u'         ', 'policy', u'        ')




                class AdminModule(Component):
                ... ...
                    panel_providers = ExtensionPoint(IAdminPanelProvider)
                ... ...
                   for provider in self.panel_providers:
                    p = list(provider.get_admin_panels(req) or [])


2010   9   30
Trac




                orz



2010   9   30
Trac
2010   9   30
http://trac.edgewall.org/wiki/TracDev/
                PluginDevelopment

                http://trac.edgewall.org/wiki/TracDev/
                ComponentArchitecture


                Trac
                http://www.slideshare.net/terada/
                trac-1340355

2010   9   30
_m( )m_



2010   9   30

More Related Content

Similar to Shibuya.trac.8

Animating angular applications
Animating angular applicationsAnimating angular applications
Animating angular applicationsTomek Sułkowski
 
The Next Step in AS3 Framework Evolution
The Next Step in AS3 Framework EvolutionThe Next Step in AS3 Framework Evolution
The Next Step in AS3 Framework EvolutionFITC
 
JavaZone 2017 - The Hitchhiker’s guide to Java class reloading
JavaZone 2017 - The Hitchhiker’s guide to Java class reloadingJavaZone 2017 - The Hitchhiker’s guide to Java class reloading
JavaZone 2017 - The Hitchhiker’s guide to Java class reloadingAnton Arhipov
 
The Ring programming language version 1.9 book - Part 14 of 210
The Ring programming language version 1.9 book - Part 14 of 210The Ring programming language version 1.9 book - Part 14 of 210
The Ring programming language version 1.9 book - Part 14 of 210Mahmoud Samir Fayed
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010Fabien Potencier
 
The Ring programming language version 1.8 book - Part 12 of 202
The Ring programming language version 1.8 book - Part 12 of 202The Ring programming language version 1.8 book - Part 12 of 202
The Ring programming language version 1.8 book - Part 12 of 202Mahmoud Samir Fayed
 
クラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャクラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャTomoharu ASAMI
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to SwiftElmar Kretzer
 
Demoiselle 2.0 no JavaOne Brasil 2010
Demoiselle 2.0 no JavaOne Brasil 2010Demoiselle 2.0 no JavaOne Brasil 2010
Demoiselle 2.0 no JavaOne Brasil 2010Cleverson Sacramento
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019UA Mobile
 
C# Tutorial MSM_Murach chapter-13-slides
C# Tutorial MSM_Murach chapter-13-slidesC# Tutorial MSM_Murach chapter-13-slides
C# Tutorial MSM_Murach chapter-13-slidesSami Mut
 
Applet Architecture - Introducing Java Applets
Applet Architecture - Introducing Java AppletsApplet Architecture - Introducing Java Applets
Applet Architecture - Introducing Java Appletsamitksaha
 
Eclipse Summit Europe '10 - Test UI Aspects of Plug-ins
Eclipse Summit Europe '10 - Test UI Aspects of Plug-insEclipse Summit Europe '10 - Test UI Aspects of Plug-ins
Eclipse Summit Europe '10 - Test UI Aspects of Plug-insTonny Madsen
 
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...Codemotion
 
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...Publicis Sapient Engineering
 
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloadingJavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloadingAnton Arhipov
 

Similar to Shibuya.trac.8 (20)

Animating angular applications
Animating angular applicationsAnimating angular applications
Animating angular applications
 
The Next Step in AS3 Framework Evolution
The Next Step in AS3 Framework EvolutionThe Next Step in AS3 Framework Evolution
The Next Step in AS3 Framework Evolution
 
JavaZone 2017 - The Hitchhiker’s guide to Java class reloading
JavaZone 2017 - The Hitchhiker’s guide to Java class reloadingJavaZone 2017 - The Hitchhiker’s guide to Java class reloading
JavaZone 2017 - The Hitchhiker’s guide to Java class reloading
 
The Ring programming language version 1.9 book - Part 14 of 210
The Ring programming language version 1.9 book - Part 14 of 210The Ring programming language version 1.9 book - Part 14 of 210
The Ring programming language version 1.9 book - Part 14 of 210
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
Three20
Three20Three20
Three20
 
The Ring programming language version 1.8 book - Part 12 of 202
The Ring programming language version 1.8 book - Part 12 of 202The Ring programming language version 1.8 book - Part 12 of 202
The Ring programming language version 1.8 book - Part 12 of 202
 
クラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャクラウド・アプリケーション・アーキテクチャ
クラウド・アプリケーション・アーキテクチャ
 
Basic of Applet
Basic of AppletBasic of Applet
Basic of Applet
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to Swift
 
Demoiselle 2.0 no JavaOne Brasil 2010
Demoiselle 2.0 no JavaOne Brasil 2010Demoiselle 2.0 no JavaOne Brasil 2010
Demoiselle 2.0 no JavaOne Brasil 2010
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
 
C# Tutorial MSM_Murach chapter-13-slides
C# Tutorial MSM_Murach chapter-13-slidesC# Tutorial MSM_Murach chapter-13-slides
C# Tutorial MSM_Murach chapter-13-slides
 
Applet Architecture - Introducing Java Applets
Applet Architecture - Introducing Java AppletsApplet Architecture - Introducing Java Applets
Applet Architecture - Introducing Java Applets
 
Eclipse Summit Europe '10 - Test UI Aspects of Plug-ins
Eclipse Summit Europe '10 - Test UI Aspects of Plug-insEclipse Summit Europe '10 - Test UI Aspects of Plug-ins
Eclipse Summit Europe '10 - Test UI Aspects of Plug-ins
 
Learning Dtrace
Learning DtraceLearning Dtrace
Learning Dtrace
 
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...
Fabio Collini - Async code on Kotlin: RxJava or/and coroutines - Codemotion M...
 
Top Tips for Android UIs
Top Tips for Android UIsTop Tips for Android UIs
Top Tips for Android UIs
 
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
 
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloadingJavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
 

More from wyukawa

Presto conferencetokyo2019
Presto conferencetokyo2019Presto conferencetokyo2019
Presto conferencetokyo2019wyukawa
 
Strata2017 sg
Strata2017 sgStrata2017 sg
Strata2017 sgwyukawa
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-enwyukawa
 
Upgrading from-hdp-21-to-hdp-25
Upgrading from-hdp-21-to-hdp-25Upgrading from-hdp-21-to-hdp-25
Upgrading from-hdp-21-to-hdp-25wyukawa
 
Prometheus london
Prometheus londonPrometheus london
Prometheus londonwyukawa
 
Prometheus casual talk1
Prometheus casual talk1Prometheus casual talk1
Prometheus casual talk1wyukawa
 
My ambariexperience
My ambariexperienceMy ambariexperience
My ambariexperiencewyukawa
 
Prometheus
PrometheusPrometheus
Prometheuswyukawa
 
Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24wyukawa
 
Presto in my_use_case
Presto in my_use_casePresto in my_use_case
Presto in my_use_casewyukawa
 
Hive sourcecodereading
Hive sourcecodereadingHive sourcecodereading
Hive sourcecodereadingwyukawa
 
Hdfs write
Hdfs writeHdfs write
Hdfs writewyukawa
 
Osc mercurial-public
Osc mercurial-publicOsc mercurial-public
Osc mercurial-publicwyukawa
 
Dvcs study
Dvcs studyDvcs study
Dvcs studywyukawa
 
Hudson study-zen
Hudson study-zenHudson study-zen
Hudson study-zenwyukawa
 
Hudson tanabata.trac
Hudson tanabata.tracHudson tanabata.trac
Hudson tanabata.tracwyukawa
 

More from wyukawa (17)

Presto conferencetokyo2019
Presto conferencetokyo2019Presto conferencetokyo2019
Presto conferencetokyo2019
 
Strata2017 sg
Strata2017 sgStrata2017 sg
Strata2017 sg
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-en
 
Azkaban
AzkabanAzkaban
Azkaban
 
Upgrading from-hdp-21-to-hdp-25
Upgrading from-hdp-21-to-hdp-25Upgrading from-hdp-21-to-hdp-25
Upgrading from-hdp-21-to-hdp-25
 
Prometheus london
Prometheus londonPrometheus london
Prometheus london
 
Prometheus casual talk1
Prometheus casual talk1Prometheus casual talk1
Prometheus casual talk1
 
My ambariexperience
My ambariexperienceMy ambariexperience
My ambariexperience
 
Prometheus
PrometheusPrometheus
Prometheus
 
Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24
 
Presto in my_use_case
Presto in my_use_casePresto in my_use_case
Presto in my_use_case
 
Hive sourcecodereading
Hive sourcecodereadingHive sourcecodereading
Hive sourcecodereading
 
Hdfs write
Hdfs writeHdfs write
Hdfs write
 
Osc mercurial-public
Osc mercurial-publicOsc mercurial-public
Osc mercurial-public
 
Dvcs study
Dvcs studyDvcs study
Dvcs study
 
Hudson study-zen
Hudson study-zenHudson study-zen
Hudson study-zen
 
Hudson tanabata.trac
Hudson tanabata.tracHudson tanabata.trac
Hudson tanabata.trac
 

Shibuya.trac.8

  • 1. Trac 2010/10/01 Shibuya.trac 8 2010 9 30
  • 2. wyukawa(Wataru Yukawa) http://d.hatena.ne.jp/wyukawa Twitter http://twitter.com/wyukawa SE Java 2010 9 30
  • 3. Trac Trac Trac 2010 9 30
  • 4. Trac Component implements 2010 9 30
  • 5. HelloWorld class HelloWorldPlugin(Component): implements(INavigationContributor) # INavigationContributor methods def get_active_navigation_item(self, req): return 'helloworld' def get_navigation_items(self, req): yield ('mainnav', 'helloworld', html.A('Hello world', href= req.href.helloworld 2010 9 30
  • 6. Trac Trac AdminModule, TicketModule, WikiModule, ... Eclipse 2010 9 30
  • 7. 2010 9 30
  • 8. Component ComponentMeta ComponentManager Component Interface ExtensionPoint 2010 9 30
  • 9. w http://www.flickr.com/photos/ merec0/655780644 2010 9 30
  • 10. Trac TicketSubmitPolicyPlugin IAdminPanelProvider AdminModule TicketSubmitPolicyPlugin IAdminPanelProvider implements ( get_admin_panels render_admin_panel ) 2010 9 30
  • 11. IAdminPanelProvider (get_admin_panels, render_admin_panel) TicketSubmitPolicy Plugin AdminModule 2010 9 30
  • 12. class TicketSubmitPolicyPlugin(Component): ... ... implements(IAdminPanelProvider,...) ... ... def get_admin_panels(self, req): ... ... if req.perm.has_permission('TRAC_ADMIN'): yield ('ticket', u' ', 'policy', u' ') class AdminModule(Component): ... ...     panel_providers = ExtensionPoint(IAdminPanelProvider) ... ... for provider in self.panel_providers: p = list(provider.get_admin_panels(req) or []) 2010 9 30
  • 13. Trac orz 2010 9 30
  • 14. Trac 2010 9 30
  • 15. http://trac.edgewall.org/wiki/TracDev/ PluginDevelopment http://trac.edgewall.org/wiki/TracDev/ ComponentArchitecture Trac http://www.slideshare.net/terada/ trac-1340355 2010 9 30
  • 16. _m( )m_ 2010 9 30