SlideShare a Scribd company logo
1 of 42
Download to read offline
projectzero.org
                          Zero complexity. Zero overhead. Zero obstacles.




Project Zero


   Rob Nicholson
   rob_nicholson@uk.ibm.com or nicholsr@php.net




                     Rob Nicholson - Project Zero

                   Copyright 2008 © IBM Corporation
projectzero.org
                                                           Zero complexity. Zero overhead. Zero obstacles.




Agenda

    What is Project Zero
    Why should I care?
    Creating Applications and REST web services - DEMO
    Assembling Applications - DEMO
    Deploying application
    Running an existing PHP application - DEMO
    Web IDE prototype DEMO




                            Rob Nicholson - Project Zero                                              2
projectzero.org
                                                                         Zero complexity. Zero overhead. Zero obstacles.




Introduction

     Project Zero is an IBM technology incubator project.
     Building a radically simplified platform to enable the productive
     development and deployment of rich internet applications.
                                TM
     System language is Java .
       Zero runs on a Java Virtual Machine.
                           TM




       Supports Linux, Mac and Windows.
     Application languages are PHP and Groovy.
       Zero contains a PHP 5 interpreter written in Java            TM




                                     Rob Nicholson - Project Zero                                                   3
projectzero.org
                                                                  Zero complexity. Zero overhead. Zero obstacles.




Some Simplifications We Are Aiming For

    Creating new agile web applications.
     Sharing assets from different languages.
     Implementing REST services.
     Building a rich user interface.
       I want to spend less time sorting out browser incompatibilities!
       Accessibility.
    Assembling applications and services.
    Deploying applications.
     Versioning dependencies.




                                   Rob Nicholson - Project Zero                                              4
projectzero.org
                                                                            Zero complexity. Zero overhead. Zero obstacles.




Top Level Architecture
                                                                                                       App components
 Applications built from loosely




                                                                                                 Runtime
 coupled components.                  Dojo                                            Events




                                                                                                  PHP
                                                                        HTTP server
                                                                                                               app
                                      Browser
                                                       REST
 Enabled by:
                                                                                      Global
   Event driven architecture.                                                         Context




                                                                                                 Runtime
                                                                                                               app




                                                                                                 Groovy
   Global Context.
   Virtual Directories.                              Local repository
                                                                             Package
                                                                                                           Java app
                                                    Remote repository        Manager
 Convention based configuration.
                                                    Remote repository     Zero Application
 RESTful web services and AJAX.
                                                                                           Java Virtual Machine
 IDE based around Eclipse and PDT
   Prototype web IDE.
   Command line for deployment.
 The application is the web server.


                                   Rob Nicholson - Project Zero                                                         5
projectzero.org
                                                                                          Zero complexity. Zero overhead. Zero obstacles.



PHP Runtime Architecture                                   • Runtime for PHP 5 scripts
                   CLI      PZ Http
  PHP Scripts
                                                           • Implemented in Java, runs on any Java 5.0+ VM
                           SAPI-J
                                                           • PHP language elements represented as Java objects

                          PHP Engine                       • Parse script to Intermediate Representation.(IR)
  Variables
                                    Cache                            • Cache and Interpret IR
                Parser

                                            Debug (DBGp)
    Stack                      IR
                  P8 Runtime                                         • Compile ->bytecode prototype
  Resources
                   Interpreter                             •Extensibility via XAPI
   Classes
                                                                     • XAPI-C for C extensions from php.net
   Objects               Runtime
                                                                     • XAPI-J for new Java extensions, native libraries
                                                                     invoked over JNI and Project Zero interface
                      XAPI-J
       XAPI-C
                                                                     • Extension language choice opaque to PHP script
                            Java
         C               Extensions   Native
     Extensions                        code                •Java Bridge
                     PZ Extensions                         •Debug using via DBGp using Eclipse with PDT




                                                           Rob Nicholson - Project Zero                                              6
projectzero.org
                                                                 Zero complexity. Zero overhead. Zero obstacles.




Virtualized Directories

     Resources searched across application and dependencies.
     Apps behave as if directories merged.
     Applies to all script directories.
          /public /app/resources, /app/scripts, /app/views etc.
     First-one-wins precedence.
          Order based on dependency order in ivy files.
          Default files searched within each directory first:
              {my application}/index.php
              {my application}/index.html
              {dependency1}/index.php
              {dependency1}/index.html



                                  Rob Nicholson - Project Zero                                              7
projectzero.org
                                                            Zero complexity. Zero overhead. Zero obstacles.




Demo – Your first Zero Application.




   See http://www.projectzero.org/wiki/bin/view/Documentation/Videos
                             Rob Nicholson - Project Zero                                              8
projectzero.org
                                                                    Zero complexity. Zero overhead. Zero obstacles.




Implementing REST Services
     Zero provides a really simple way to create REST services.
     REST services fit well with test-driven development.
     Convention for create/retrieve/update/delete operations (CRUD).
          You can also list the members in the collection.



   HTTP Method               URI                                  Description
   GET                       /people                              List members

   POST                      /people                              Create member

   GET                       /people/1                            Retrieve member

   PUT                       /people/1                            Update member

   DELETE                    /people/1                            Delete member




                                   Rob Nicholson - Project Zero                                                9
projectzero.org
                                                                  Zero complexity. Zero overhead. Zero obstacles.




REST Services in Project Zero
      Each REST service is implemented by a script (called a handler).
      Scripts live in the directory: <apphome>/app/resources
      Services are accessed using a standard URL convention:
           /resources/<collection name>[/member[/<path info>]]
      HTTP requests mapped to handler methods as follows:


 Resource           GET            PUT                         POST                   DELETE


 Collection         list           putCollection               create                 deleteCollection

 /people

 Member             retrieve       update                      postMember             delete

 /people/1




                                Rob Nicholson - Project Zero                                                10
projectzero.org
                                                                         Zero complexity. Zero overhead. Zero obstacles.




RESTful Resources

         Values of <memberID> and <pathInfo> are available for member
         operations:


Http       URI                     Invokes method in                 With event data (in global context)
Method                             <apphome>/app/resour
                                   ces/people.php
GET        /resources/people       list

POST       /resources/people       create

GET        /resources/people/1/a   retrieve                          /request/params/peopleId = 1
           ccounts                                                   /event/pathInfo = /accounts


PUT        /resources/people/1     update                            /request/params/peopleId' = 1

DELETE     /resources/people/1     delete                            /request/params/peopleId' = 1




                                      Rob Nicholson - Project Zero                                                 11
projectzero.org
                                                           Zero complexity. Zero overhead. Zero obstacles.




Demo – REST in Project Zero,




  See http://www.projectzero.org/wiki/bin/view/Documentation/Videos
                            Rob Nicholson - Project Zero                                             12
projectzero.org
                                                                  Zero complexity. Zero overhead. Zero obstacles.




Sharing Assets - Events

    All behaviour in the system is modelled as a set of events.
      Events are programming language agnostic.
    Fired by an application using fire_event().
      fire_event('my_event', array(‘data'=>'foobar'));

    Event handlers are defined in the Zero configuration file:
      /config/handlers += {
          quot;eventsquot; : my_event,
          quot;handlerquot; : test.php
      }

    Request Processing events
      requestBegin, secure, GET, PUT, POST, DELETE, log, requestEnd
    Application specific events
      Fired by your application.


                                   Rob Nicholson - Project Zero                                             13
projectzero.org
                                                             Zero complexity. Zero overhead. Zero obstacles.




Sharing Assets - Rendering

     Zero provides renderers for generating output.
       Renderers are programming language agnostic.
     View renderer serves up script output:
       zput('/request/view', 'hello.php');
       render_view();

     XML, JSON and ATOM for well known data types:
       zput(quot;/request/viewquot;, quot;JSONquot;);
       zput(quot;/request/json/outputquot;, $obj);
       render_view();

     Error renderer serves up standard error pages.




                              Rob Nicholson - Project Zero                                             14
projectzero.org
                                                               Zero complexity. Zero overhead. Zero obstacles.




Global Context

    Event handlers are stateless
      interesting applications contain state
    GC provides access/management of application state.
      It is NOT persistent. Persistent data goes into the database.
    Conceptually a map of data.
    Divided into a set of zones with different data lifecycles.
    Understands and provides intelligent access to certain data
    types.
    Externalizes state from the application logic.
      Enables clustering and scaling to be added transparently.



                                Rob Nicholson - Project Zero                                             15
projectzero.org
                                                             Zero complexity. Zero overhead. Zero obstacles.



Global Content Zones

    Divided into zones representing different data lifecycles
         Zone             Scope/Visibility                                  Lifecycle
  Config          All requests all users.                       Loaded from config
                                                                files.
  Application     All requests for all users of the             Life of the application,
                  application                                   but not “persistent”
  User            All request for a particular user             For first access until
                  (HTTP Session equivalent)                     user times out
  Request         All handlers along the path of a              For the duration of a
                  single request                                single request
  Event           All handlers for a single event               The duration of a single
                                                                event



                              Rob Nicholson - Project Zero                                             16
projectzero.org
                                                                       Zero complexity. Zero overhead. Zero obstacles.




Accessing the Global Context
 Action                            PHP Example                            Java Example

 Get HTTP Request URI              zget (/request/uri)                    GlobalContext.get(quot;/request
                                                                          /uriquot;

 Get value of user-agent request   zget                                   GlobalContext.get(quot;/request
 header                            (/request/headers/in/User-             /headers/in/User-Agentquot;)
                                   Agent)
 Get list of request parameters    list_keys('/request/para               GlobalContext.get(quot;/request
                                   ms', false)                            /paramsquot;)

 Get value of request parameter    zget                                   ((String [])
 parmName                          (/request/params/ParmName)             GlobalContext.get(quot;/request
                                                                          /params/parmNamequot;))[0]

 Set status                        zput (/request/status,200)             request.status = 200




   Of course PHP (super)globals are also available.



                                        Rob Nicholson - Project Zero                                             17
projectzero.org
                                              Zero complexity. Zero overhead. Zero obstacles.




Meerkat Demo




               Rob Nicholson - Project Zero                                             18
projectzero.org
                                             Zero complexity. Zero overhead. Zero obstacles.




Java Bridge




              Rob Nicholson - Project Zero                                             19
projectzero.org
                                                                 Zero complexity. Zero overhead. Zero obstacles.




Building A Rich User Interface

     Dojo is the preferred Ajax/JavaScript toolkit for Zero.
     Open source toolkit to simplify rich web applications.
         http://www.dojotoolkit.org
         v1.0 released on 5th November 2007.
     Addresses key problem with browser compatibility.
     Dijit library provides rich set of user interface widgets.
         Accessibility built in
         Internationalised
         Theme 100% customisable
     DojoX adds experimental and specialised extensions.
         Wire, XML, cryptography, network




                                  Rob Nicholson - Project Zero                                             20
projectzero.org
                                                       Zero complexity. Zero overhead. Zero obstacles.




Input controls – buttons, combo box, sliders, text areas.
Layout – accordion, split/stack containers, tabs.
Command – button, menu, toolbar.
User assistance and feedback – progress bar, tooltip, dialog.
Advanced editing and display – editor, tree, colour palette




                        Rob Nicholson - Project Zero                                             21
projectzero.org
                                                                  Zero complexity. Zero overhead. Zero obstacles.




Dojo Core Widget Set (Dijit) Accessibility

     ARIA specification implemented in all widgets.
       Fully keyboard accessible in Firefox and Internet Explorer.
       Screen reader accessible in Firefox.

     Works in operating system high-contrast mode (system colours).
     Works with images off (regular <img> tags).
       Currently only auto-detected in Firefox.
       Must be in high contrast mode for image-off support in Internet Explorer.

     More information available from: http://www.w3.org/WAI/intro/aria.




                                   Rob Nicholson - Project Zero                                             22
projectzero.org
                                                                Zero complexity. Zero overhead. Zero obstacles.




Deploying Applications
 The application is the server

             JVM

             Web server

           Application Code

          Language runtimes



  Hundreds of applications per box.
  Applications started on demand – inetd style
  Applications isolation
  Quality of service and management built in.
                                 Rob Nicholson - Project Zero                                             23
projectzero.org
                                                                            Zero complexity. Zero overhead. Zero obstacles.




Deploying on the command line
     Package the app from eclipse:
        File->export.




      Download Zero command line from projectzero.org, unzip on target machine.
      Unzip application.
      Zero run :
   C:zofficemonitor-all>zero run
   Resolving C:zofficemonitor-allconfigivy.xml
   zeroinit apphome=C:zofficemonitor-all
   zeromake zerohome=C:zerozero-1.0.6169.M2 apphome=C:zofficemonitor-
   all appname=officemonitor
   2007-10-29 20:58:20 zero.core.cfadapter.ZeroServer::writePid Thread-10
           INFO [ PID file written to C:zofficemonitor-alllogszero.pid]
   2007-10-29 20:58:20 zero.core.cfadapter.ZeroServer::run Thread-10
           INFO [ C:/z/officemonitor-all running on port 8080 ]

   See http://www.projectzero.org/wiki/bin/view/Documentation/Videos

                                             Rob Nicholson - Project Zero                                             24
projectzero.org
                                                             Zero complexity. Zero overhead. Zero obstacles.




Versioning Dependencies

    Modules are the building blocks of an application.
    A module is simply a collection of files packaged together.
        Includes a module name, version and author details.
    An application declares the modules it depends on.




    Versioning ensures applications don’t break!
        Specific versions can be set (v1.1.34).
        Versions upwards from a particular release (v1.0+).
        Ranges of acceptable versions (v1.0 – v1.5).
    Remote catalog servers at PZ.net and maven2
                              Rob Nicholson - Project Zero                                             25
projectzero.org
                                                           Zero complexity. Zero overhead. Zero obstacles.




Visual assembly of feeds and flows - Assemble




    http://www.projectzero.org/wiki/bin/view/Documentation/Videos
                            Rob Nicholson - Project Zero                                             26
projectzero.org
                                                      Zero complexity. Zero overhead. Zero obstacles.




PHP Application Demo




                       Rob Nicholson - Project Zero                                             27
projectzero.org
                                                    Zero complexity. Zero overhead. Zero obstacles.




Web tool prototype




                     Rob Nicholson - Project Zero                                             28
projectzero.org
                                                                Zero complexity. Zero overhead. Zero obstacles.




Installing Project Zero

     Get a Java 1.5 JDK.
     Get the PHP Development Tools (PDT) Eclipse all-in-one.
     Install Zero for PDT using the eclipse update manager.
       From the project zero download site.
     Links and walkthrough on www.projectzero.org.
     Community, blogs, questions, answers, opinions and thoughts:
       http://www.projectzero.org/wiki/bin/view/Community/WebHome




                                 Rob Nicholson - Project Zero                                             29
projectzero.org
                                                          Zero complexity. Zero overhead. Zero obstacles.




Features of Zero we have not covered today
    File Serving
    Error Handling
    Logging/Tracing/Debugging
    Client Programming with Dojo
    Security
    Nested resources




                           Rob Nicholson - Project Zero                                             30
projectzero.org
                                                                                    Zero complexity. Zero overhead. Zero obstacles.



PHP Runtime Architecture
                                    CLI        PZ Http
                   PHP Scripts

                                              SAPI-J



                                            PHP Engine
                   Variables
                                                          Cache
                                 Parser




                                                                     Debug (DBGp)
                    Stack                          IR
                                   P8 Runtime
                  Resources
                                    Interpreter
                   Classes

                   Objects                Runtime


                                        XAPI-J
                        XAPI-C

                                             Java
                          C               Extensions            Native
                      Extensions                                 code
                                       PZ Extensions




                                 Rob Nicholson - Project Zero                                                                 31
projectzero.org
                                                Zero complexity. Zero overhead. Zero obstacles.




XAPI-J example




                 Rob Nicholson - Project Zero                                             32
projectzero.org
                                                             Zero complexity. Zero overhead. Zero obstacles.




What we learned

    PHP is reference implementation based language.
    PHP has no spec.
    Documentation is good for users.
      But not precise enough for language implementers.
    Test suite is the real spec.
    Many surprises.




                              Rob Nicholson - Project Zero                                             33
projectzero.org
                                                             Zero complexity. Zero overhead. Zero obstacles.




Quantum mechanics in PHP

    In this example we see how observing a value can change how it
    behaves.
    Counter-intuitive to non physicists.
      But similar in some ways to quantum physics.




                              Rob Nicholson - Project Zero                                             34
projectzero.org
                                                                                    Zero complexity. Zero overhead. Zero obstacles.




Quantum Mechanics in PHP (simple case)
1. $a=array(“foo”);                                               4. $b[0]=“bar”;

                                                                                                     PHP String
                                   PHP String                                          0
                          0                                                                            “foo”
            $a
                                        “foo”
                                                                               $a

                                                                                                    PHP String
                                                                                       0
2. // do nothing                                                                                      “bar”
                                                                           $b




3. $b=$a;

                              PHP String                    Pictures show PHP programmer’s view. (Not
                      0
        $a                      “foo”
                                                            internals).
                                                            Observe that $b and $a are independent.
                              PHP String
                      0
       $b
                               “foo”



                                                Rob Nicholson - Project Zero                                                  35
projectzero.org
                                                                                    Zero complexity. Zero overhead. Zero obstacles.




Quantum Mechanics in PHP (observing changes behaviour)
1. $a=array(“foo”);                                               4. $b[0]=“bar”;

                                                                                                     PHP String
                                   PHP String                                          0
                          0                                                                            “bar”
            $a
                                       “foo”
                                                                               $a


 2. $c=&$a[0];                                                                         0
                                  PHP String                               $b
                          0
            $a
                                       “foo”




            $c

3. $b=$a;

                      0
                              PHP String                    All we did was observe the value of $a[0]
        $a                     “foo”
                                                            Now $a and $b are not independent.

                      0
       $b


                                                Rob Nicholson - Project Zero                                                  36
projectzero.org
                                        Zero complexity. Zero overhead. Zero obstacles.




PROJECT ZERO COMMUNITY
   WWW.PROJECTZERO.ORG




         Rob Nicholson - Project Zero                                             37
projectzero.org
                               Zero complexity. Zero overhead. Zero obstacles.




Rob Nicholson - Project Zero                                             38
projectzero.org
                                                          Zero complexity. Zero overhead. Zero obstacles.




Summary

   Project Zero is incubating technologies to build web applications
     Simply!
   Project zero contains a PHP runtime which runs on a JVM.
   Project Zero enables same process interoperability between
   PHP, Java and Groovy.




                           Rob Nicholson - Project Zero                                             39
projectzero.org
                                            Zero complexity. Zero overhead. Zero obstacles.




Questions?




             Rob Nicholson - Project Zero                                             40
projectzero.org
                                Zero complexity. Zero overhead. Zero obstacles.




Thank You!




 Rob Nicholson - Project Zero                                             41
projectzero.org
                                                                Zero complexity. Zero overhead. Zero obstacles.




Legal Notices

     Java and all Java-based trademarks and logos are trademarks of Sun
     Microsystems, Inc. in the United States, other countries, or both.
     Microsoft, Windows, Windows NT, and the Windows logo are
     trademarks of Microsoft Corporation in the United States, other
     countries, or both.
     Intel and Pentium are trademarks or registered trademark of Intel
     Corporation or its subsidiaries in the United States and other countries.
     UNIX is a registered trademark of The Open Group in the United States
     and other countries.
     Linux is a trademark of Linus Torvalds in the United States, other
     countries, or both.
     Other company, product, or service names may be trademarks or
     service marks of others.



                                 Rob Nicholson - Project Zero                                             42

More Related Content

What's hot

Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiCédric Hüsler
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SEdogangoko
 
Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules omorandi
 
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
 Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank... Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...ThoughtWorks
 
Workshop OSGI PPT
Workshop OSGI PPTWorkshop OSGI PPT
Workshop OSGI PPTSummer Lu
 
Aop, Metaprogramming and codegeneration with PHP
Aop, Metaprogramming and codegeneration with PHPAop, Metaprogramming and codegeneration with PHP
Aop, Metaprogramming and codegeneration with PHPSerge Smertin
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2day
 
Localization (l10n) - The Process
Localization (l10n) - The ProcessLocalization (l10n) - The Process
Localization (l10n) - The ProcessSundeep Anand
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceguest301ea
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvmdeimos
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platformdeimos
 
Titanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceTitanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceomorandi
 
Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Rubydeimos
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 

What's hot (18)

Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGi
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules Extending Titanium with native iOS and Android modules
Extending Titanium with native iOS and Android modules
 
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
 Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank... Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
Ruby on Rails versus Django - A newbie Web Developer's Perspective -Shreyank...
 
Workshop OSGI PPT
Workshop OSGI PPTWorkshop OSGI PPT
Workshop OSGI PPT
 
Aop, Metaprogramming and codegeneration with PHP
Aop, Metaprogramming and codegeneration with PHPAop, Metaprogramming and codegeneration with PHP
Aop, Metaprogramming and codegeneration with PHP
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
 
Localization (l10n) - The Process
Localization (l10n) - The ProcessLocalization (l10n) - The Process
Localization (l10n) - The Process
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practice
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
 
Dan Haywood
Dan HaywoodDan Haywood
Dan Haywood
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platform
 
Android NDK
Android NDKAndroid NDK
Android NDK
 
Inside JVM
Inside JVMInside JVM
Inside JVM
 
New Dot Net SDK
New Dot Net SDKNew Dot Net SDK
New Dot Net SDK
 
Titanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performanceTitanium Mobile: flexibility vs. performance
Titanium Mobile: flexibility vs. performance
 
Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Ruby
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 

Similar to Project Zero Php Quebec

IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...Robert Nicholson
 
Web development meetingup
Web development meetingupWeb development meetingup
Web development meetingupPiTechnologies
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Jason McGee
 
Mixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphereMixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSpherejdlea
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011Tiempo Development
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsSpike Brehm
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend TechnologyShip Hsu
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stackALDAN3
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)dpc
 
A Tale of a Server Architecture (Frozen Rails 2012)
A Tale of a Server Architecture (Frozen Rails 2012)A Tale of a Server Architecture (Frozen Rails 2012)
A Tale of a Server Architecture (Frozen Rails 2012)Flowdock
 
Web App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 ENWeb App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 EN光一 原田
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...jaxconf
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009Stefane Fermigier
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architecturessgleadow
 

Similar to Project Zero Php Quebec (20)

IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
 
Web development meetingup
Web development meetingupWeb development meetingup
Web development meetingup
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
 
Mixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphereMixing Java and PHP with Sugar and WebSphere
Mixing Java and PHP with Sugar and WebSphere
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011New Ways To Engage With Tiempo 2011
New Ways To Engage With Tiempo 2011
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend Technology
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stack
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
 
A Tale of a Server Architecture (Frozen Rails 2012)
A Tale of a Server Architecture (Frozen Rails 2012)A Tale of a Server Architecture (Frozen Rails 2012)
A Tale of a Server Architecture (Frozen Rails 2012)
 
Crx 2.2 Deep-Dive
Crx 2.2 Deep-DiveCrx 2.2 Deep-Dive
Crx 2.2 Deep-Dive
 
Web App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 ENWeb App Framework at SwapSkills vol28 EN
Web App Framework at SwapSkills vol28 EN
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
 
NetWeaver Gateway- Gateway Service Consumption
NetWeaver Gateway- Gateway Service ConsumptionNetWeaver Gateway- Gateway Service Consumption
NetWeaver Gateway- Gateway Service Consumption
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architectures
 
Nodejs
NodejsNodejs
Nodejs
 

More from Robert Nicholson

IBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceIBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceRobert Nicholson
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceRobert Nicholson
 
IBM Hybrid Integration Platform
IBM Hybrid Integration PlatformIBM Hybrid Integration Platform
IBM Hybrid Integration PlatformRobert Nicholson
 
IBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingIBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingRobert Nicholson
 
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastPlatform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastRobert Nicholson
 
Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Robert Nicholson
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182Robert Nicholson
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183Robert Nicholson
 
Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Robert Nicholson
 
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixMessaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixRobert Nicholson
 
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Robert Nicholson
 
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...Robert Nicholson
 

More from Robert Nicholson (13)

IBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech ConferenceIBM Cloud Integration Platform Introduction - Integration Tech Conference
IBM Cloud Integration Platform Introduction - Integration Tech Conference
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech Conference
 
IBM Hybrid Integration Platform
IBM Hybrid Integration PlatformIBM Hybrid Integration Platform
IBM Hybrid Integration Platform
 
IBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud MessagingIBM Interconnect 2016 - Hybrid Cloud Messaging
IBM Interconnect 2016 - Hybrid Cloud Messaging
 
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South CoastPlatform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
Platform as a Service - CloudFoundry and IBM Bluemix - Developer South Coast
 
Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
 
Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014Mq light For Guide Share Europe 2014
Mq light For Guide Share Europe 2014
 
MQ Light for WTU
 MQ Light for WTU MQ Light for WTU
MQ Light for WTU
 
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM BluemixMessaging in the Cloud with IBM MQ Light and IBM Bluemix
Messaging in the Cloud with IBM MQ Light and IBM Bluemix
 
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
Session 1897 messaging in the cloud with elastic mq mq light and bluemix-impa...
 
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
IBM IMPACT 2009 Session 3100 - Dynamic Scripting and Rich Web 2.0 Interfaces ...
 

Recently uploaded

VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒anilsa9823
 
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyThe Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyEthan lee
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMANIlamathiKannappan
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdfRenandantas16
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageMatteo Carbone
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.Aaiza Hassan
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear RegressionRavindra Nath Shukla
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesDipal Arora
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...Any kyc Account
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756dollysharma2066
 
Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Roland Driesen
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsP&CO
 
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxB.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxpriyanshujha201
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...lizamodels9
 

Recently uploaded (20)

VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒VIP Call Girls In Saharaganj ( Lucknow  ) 🔝 8923113531 🔝  Cash Payment (COD) 👒
VIP Call Girls In Saharaganj ( Lucknow ) 🔝 8923113531 🔝 Cash Payment (COD) 👒
 
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case studyThe Coffee Bean & Tea Leaf(CBTL), Business strategy case study
The Coffee Bean & Tea Leaf(CBTL), Business strategy case study
 
Forklift Operations: Safety through Cartoons
Forklift Operations: Safety through CartoonsForklift Operations: Safety through Cartoons
Forklift Operations: Safety through Cartoons
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear Regression
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...
 
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pillsMifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
Mifty kit IN Salmiya (+918133066128) Abortion pills IN Salmiyah Cytotec pills
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxB.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 

Project Zero Php Quebec

  • 1. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Project Zero Rob Nicholson rob_nicholson@uk.ibm.com or nicholsr@php.net Rob Nicholson - Project Zero Copyright 2008 © IBM Corporation
  • 2. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Agenda What is Project Zero Why should I care? Creating Applications and REST web services - DEMO Assembling Applications - DEMO Deploying application Running an existing PHP application - DEMO Web IDE prototype DEMO Rob Nicholson - Project Zero 2
  • 3. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Introduction Project Zero is an IBM technology incubator project. Building a radically simplified platform to enable the productive development and deployment of rich internet applications. TM System language is Java . Zero runs on a Java Virtual Machine. TM Supports Linux, Mac and Windows. Application languages are PHP and Groovy. Zero contains a PHP 5 interpreter written in Java TM Rob Nicholson - Project Zero 3
  • 4. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Some Simplifications We Are Aiming For Creating new agile web applications. Sharing assets from different languages. Implementing REST services. Building a rich user interface. I want to spend less time sorting out browser incompatibilities! Accessibility. Assembling applications and services. Deploying applications. Versioning dependencies. Rob Nicholson - Project Zero 4
  • 5. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Top Level Architecture App components Applications built from loosely Runtime coupled components. Dojo Events PHP HTTP server app Browser REST Enabled by: Global Event driven architecture. Context Runtime app Groovy Global Context. Virtual Directories. Local repository Package Java app Remote repository Manager Convention based configuration. Remote repository Zero Application RESTful web services and AJAX. Java Virtual Machine IDE based around Eclipse and PDT Prototype web IDE. Command line for deployment. The application is the web server. Rob Nicholson - Project Zero 5
  • 6. projectzero.org Zero complexity. Zero overhead. Zero obstacles. PHP Runtime Architecture • Runtime for PHP 5 scripts CLI PZ Http PHP Scripts • Implemented in Java, runs on any Java 5.0+ VM SAPI-J • PHP language elements represented as Java objects PHP Engine • Parse script to Intermediate Representation.(IR) Variables Cache • Cache and Interpret IR Parser Debug (DBGp) Stack IR P8 Runtime • Compile ->bytecode prototype Resources Interpreter •Extensibility via XAPI Classes • XAPI-C for C extensions from php.net Objects Runtime • XAPI-J for new Java extensions, native libraries invoked over JNI and Project Zero interface XAPI-J XAPI-C • Extension language choice opaque to PHP script Java C Extensions Native Extensions code •Java Bridge PZ Extensions •Debug using via DBGp using Eclipse with PDT Rob Nicholson - Project Zero 6
  • 7. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Virtualized Directories Resources searched across application and dependencies. Apps behave as if directories merged. Applies to all script directories. /public /app/resources, /app/scripts, /app/views etc. First-one-wins precedence. Order based on dependency order in ivy files. Default files searched within each directory first: {my application}/index.php {my application}/index.html {dependency1}/index.php {dependency1}/index.html Rob Nicholson - Project Zero 7
  • 8. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Demo – Your first Zero Application. See http://www.projectzero.org/wiki/bin/view/Documentation/Videos Rob Nicholson - Project Zero 8
  • 9. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Implementing REST Services Zero provides a really simple way to create REST services. REST services fit well with test-driven development. Convention for create/retrieve/update/delete operations (CRUD). You can also list the members in the collection. HTTP Method URI Description GET /people List members POST /people Create member GET /people/1 Retrieve member PUT /people/1 Update member DELETE /people/1 Delete member Rob Nicholson - Project Zero 9
  • 10. projectzero.org Zero complexity. Zero overhead. Zero obstacles. REST Services in Project Zero Each REST service is implemented by a script (called a handler). Scripts live in the directory: <apphome>/app/resources Services are accessed using a standard URL convention: /resources/<collection name>[/member[/<path info>]] HTTP requests mapped to handler methods as follows: Resource GET PUT POST DELETE Collection list putCollection create deleteCollection /people Member retrieve update postMember delete /people/1 Rob Nicholson - Project Zero 10
  • 11. projectzero.org Zero complexity. Zero overhead. Zero obstacles. RESTful Resources Values of <memberID> and <pathInfo> are available for member operations: Http URI Invokes method in With event data (in global context) Method <apphome>/app/resour ces/people.php GET /resources/people list POST /resources/people create GET /resources/people/1/a retrieve /request/params/peopleId = 1 ccounts /event/pathInfo = /accounts PUT /resources/people/1 update /request/params/peopleId' = 1 DELETE /resources/people/1 delete /request/params/peopleId' = 1 Rob Nicholson - Project Zero 11
  • 12. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Demo – REST in Project Zero, See http://www.projectzero.org/wiki/bin/view/Documentation/Videos Rob Nicholson - Project Zero 12
  • 13. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Sharing Assets - Events All behaviour in the system is modelled as a set of events. Events are programming language agnostic. Fired by an application using fire_event(). fire_event('my_event', array(‘data'=>'foobar')); Event handlers are defined in the Zero configuration file: /config/handlers += { quot;eventsquot; : my_event, quot;handlerquot; : test.php } Request Processing events requestBegin, secure, GET, PUT, POST, DELETE, log, requestEnd Application specific events Fired by your application. Rob Nicholson - Project Zero 13
  • 14. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Sharing Assets - Rendering Zero provides renderers for generating output. Renderers are programming language agnostic. View renderer serves up script output: zput('/request/view', 'hello.php'); render_view(); XML, JSON and ATOM for well known data types: zput(quot;/request/viewquot;, quot;JSONquot;); zput(quot;/request/json/outputquot;, $obj); render_view(); Error renderer serves up standard error pages. Rob Nicholson - Project Zero 14
  • 15. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Global Context Event handlers are stateless interesting applications contain state GC provides access/management of application state. It is NOT persistent. Persistent data goes into the database. Conceptually a map of data. Divided into a set of zones with different data lifecycles. Understands and provides intelligent access to certain data types. Externalizes state from the application logic. Enables clustering and scaling to be added transparently. Rob Nicholson - Project Zero 15
  • 16. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Global Content Zones Divided into zones representing different data lifecycles Zone Scope/Visibility Lifecycle Config All requests all users. Loaded from config files. Application All requests for all users of the Life of the application, application but not “persistent” User All request for a particular user For first access until (HTTP Session equivalent) user times out Request All handlers along the path of a For the duration of a single request single request Event All handlers for a single event The duration of a single event Rob Nicholson - Project Zero 16
  • 17. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Accessing the Global Context Action PHP Example Java Example Get HTTP Request URI zget (/request/uri) GlobalContext.get(quot;/request /uriquot; Get value of user-agent request zget GlobalContext.get(quot;/request header (/request/headers/in/User- /headers/in/User-Agentquot;) Agent) Get list of request parameters list_keys('/request/para GlobalContext.get(quot;/request ms', false) /paramsquot;) Get value of request parameter zget ((String []) parmName (/request/params/ParmName) GlobalContext.get(quot;/request /params/parmNamequot;))[0] Set status zput (/request/status,200) request.status = 200 Of course PHP (super)globals are also available. Rob Nicholson - Project Zero 17
  • 18. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Meerkat Demo Rob Nicholson - Project Zero 18
  • 19. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Java Bridge Rob Nicholson - Project Zero 19
  • 20. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Building A Rich User Interface Dojo is the preferred Ajax/JavaScript toolkit for Zero. Open source toolkit to simplify rich web applications. http://www.dojotoolkit.org v1.0 released on 5th November 2007. Addresses key problem with browser compatibility. Dijit library provides rich set of user interface widgets. Accessibility built in Internationalised Theme 100% customisable DojoX adds experimental and specialised extensions. Wire, XML, cryptography, network Rob Nicholson - Project Zero 20
  • 21. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Input controls – buttons, combo box, sliders, text areas. Layout – accordion, split/stack containers, tabs. Command – button, menu, toolbar. User assistance and feedback – progress bar, tooltip, dialog. Advanced editing and display – editor, tree, colour palette Rob Nicholson - Project Zero 21
  • 22. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Dojo Core Widget Set (Dijit) Accessibility ARIA specification implemented in all widgets. Fully keyboard accessible in Firefox and Internet Explorer. Screen reader accessible in Firefox. Works in operating system high-contrast mode (system colours). Works with images off (regular <img> tags). Currently only auto-detected in Firefox. Must be in high contrast mode for image-off support in Internet Explorer. More information available from: http://www.w3.org/WAI/intro/aria. Rob Nicholson - Project Zero 22
  • 23. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Deploying Applications The application is the server JVM Web server Application Code Language runtimes Hundreds of applications per box. Applications started on demand – inetd style Applications isolation Quality of service and management built in. Rob Nicholson - Project Zero 23
  • 24. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Deploying on the command line Package the app from eclipse: File->export. Download Zero command line from projectzero.org, unzip on target machine. Unzip application. Zero run : C:zofficemonitor-all>zero run Resolving C:zofficemonitor-allconfigivy.xml zeroinit apphome=C:zofficemonitor-all zeromake zerohome=C:zerozero-1.0.6169.M2 apphome=C:zofficemonitor- all appname=officemonitor 2007-10-29 20:58:20 zero.core.cfadapter.ZeroServer::writePid Thread-10 INFO [ PID file written to C:zofficemonitor-alllogszero.pid] 2007-10-29 20:58:20 zero.core.cfadapter.ZeroServer::run Thread-10 INFO [ C:/z/officemonitor-all running on port 8080 ] See http://www.projectzero.org/wiki/bin/view/Documentation/Videos Rob Nicholson - Project Zero 24
  • 25. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Versioning Dependencies Modules are the building blocks of an application. A module is simply a collection of files packaged together. Includes a module name, version and author details. An application declares the modules it depends on. Versioning ensures applications don’t break! Specific versions can be set (v1.1.34). Versions upwards from a particular release (v1.0+). Ranges of acceptable versions (v1.0 – v1.5). Remote catalog servers at PZ.net and maven2 Rob Nicholson - Project Zero 25
  • 26. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Visual assembly of feeds and flows - Assemble http://www.projectzero.org/wiki/bin/view/Documentation/Videos Rob Nicholson - Project Zero 26
  • 27. projectzero.org Zero complexity. Zero overhead. Zero obstacles. PHP Application Demo Rob Nicholson - Project Zero 27
  • 28. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Web tool prototype Rob Nicholson - Project Zero 28
  • 29. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Installing Project Zero Get a Java 1.5 JDK. Get the PHP Development Tools (PDT) Eclipse all-in-one. Install Zero for PDT using the eclipse update manager. From the project zero download site. Links and walkthrough on www.projectzero.org. Community, blogs, questions, answers, opinions and thoughts: http://www.projectzero.org/wiki/bin/view/Community/WebHome Rob Nicholson - Project Zero 29
  • 30. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Features of Zero we have not covered today File Serving Error Handling Logging/Tracing/Debugging Client Programming with Dojo Security Nested resources Rob Nicholson - Project Zero 30
  • 31. projectzero.org Zero complexity. Zero overhead. Zero obstacles. PHP Runtime Architecture CLI PZ Http PHP Scripts SAPI-J PHP Engine Variables Cache Parser Debug (DBGp) Stack IR P8 Runtime Resources Interpreter Classes Objects Runtime XAPI-J XAPI-C Java C Extensions Native Extensions code PZ Extensions Rob Nicholson - Project Zero 31
  • 32. projectzero.org Zero complexity. Zero overhead. Zero obstacles. XAPI-J example Rob Nicholson - Project Zero 32
  • 33. projectzero.org Zero complexity. Zero overhead. Zero obstacles. What we learned PHP is reference implementation based language. PHP has no spec. Documentation is good for users. But not precise enough for language implementers. Test suite is the real spec. Many surprises. Rob Nicholson - Project Zero 33
  • 34. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Quantum mechanics in PHP In this example we see how observing a value can change how it behaves. Counter-intuitive to non physicists. But similar in some ways to quantum physics. Rob Nicholson - Project Zero 34
  • 35. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Quantum Mechanics in PHP (simple case) 1. $a=array(“foo”); 4. $b[0]=“bar”; PHP String PHP String 0 0 “foo” $a “foo” $a PHP String 0 2. // do nothing “bar” $b 3. $b=$a; PHP String Pictures show PHP programmer’s view. (Not 0 $a “foo” internals). Observe that $b and $a are independent. PHP String 0 $b “foo” Rob Nicholson - Project Zero 35
  • 36. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Quantum Mechanics in PHP (observing changes behaviour) 1. $a=array(“foo”); 4. $b[0]=“bar”; PHP String PHP String 0 0 “bar” $a “foo” $a 2. $c=&$a[0]; 0 PHP String $b 0 $a “foo” $c 3. $b=$a; 0 PHP String All we did was observe the value of $a[0] $a “foo” Now $a and $b are not independent. 0 $b Rob Nicholson - Project Zero 36
  • 37. projectzero.org Zero complexity. Zero overhead. Zero obstacles. PROJECT ZERO COMMUNITY WWW.PROJECTZERO.ORG Rob Nicholson - Project Zero 37
  • 38. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Rob Nicholson - Project Zero 38
  • 39. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Summary Project Zero is incubating technologies to build web applications Simply! Project zero contains a PHP runtime which runs on a JVM. Project Zero enables same process interoperability between PHP, Java and Groovy. Rob Nicholson - Project Zero 39
  • 40. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Questions? Rob Nicholson - Project Zero 40
  • 41. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Thank You! Rob Nicholson - Project Zero 41
  • 42. projectzero.org Zero complexity. Zero overhead. Zero obstacles. Legal Notices Java and all Java-based trademarks and logos are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. Intel and Pentium are trademarks or registered trademark of Intel Corporation or its subsidiaries in the United States and other countries. UNIX is a registered trademark of The Open Group in the United States and other countries. Linux is a trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. Rob Nicholson - Project Zero 42