SlideShare a Scribd company logo
1 of 87
Zugspitze
   alpha
The Menu
Sources
Testing
Examples
Upload Service
Repositories
Module: Foomo.Flash
Module: Foomo.Zugspitze
AS: Foomo
AS: Zugspitze Core
AS: Zugspitze Service
Easy Setup
Writing Code
What’s next
Sources
foomo.core        zugspitze.core
foomo.mx          zugspitze.as3
foomo.rpc         zugspitze.mx
                  zugspitze.spark
                  zugspitze.air.mx
                  zugspitze.air.spark
                  zugspitze.mobile
                  zugspitze.rpc
                  (zugspitze.flash)
foomo.core
foomo.mx
foomo.rpc
foomo.rpc




                              Call



                 MethodCall          MethodReply

     RPCClient                                     Server


                 MethodCall          MethodReply
zugspitze.core
zugspitze.as3




                @see Implementation.as
zugspitze.mx
zugspitze.spark
zugspitze.air.mx
zugspitze.air.spark
zugspitze.mobile
zugspitze.rpc
foomo.rpc




                                           Proxy



                    ProxyMethodCallEvent              ProxyMethodCall

       Controller                                                          RPCClient

                    ProxyMethodCallEvent              ProxyMethodCall




                                    ProxyErrorEvent

                                                                        - ProxyErrorEvent
                                                                          - Security
                                                                          - EndPoint
                                                                          - Null
zugspitze.flash
Testing
foomo.coreTests         zugspitze.coreTests
foomo.mxTests           zugspitze.rpcTests




                                       - separate project
foomo.coreTests
foomo.mxTests
zugspitze.coreTests
zugspitze.rpcTests
Examples


zugspitze.air.sparkExamples
zugspitze.as3Examples
zugspitze.mobileExamples
zugspitze.mxExamples
zugspitze.sparkExamples
zugspitze.air.sparkExamples
zugspitze.as3Examples
Upload Service



Sources

Examples
Sources




          - Not a core library

          - resources/includes
          - sharedVo
Examples
Repositories



ASLibraries (Sources)

FlexProjects (Examples)
ASLibraries


ASLibrary-foomo_core.git
ASLibrary-foomo_mx.git
ASLibrary-foomo_rpc.git
ASLibrary-zugspitze_air_mx.git
ASLibrary-zugspitze_air_spark.git
ASLibrary-zugspitze_as3.git
ASLibrary-zugspitze_core.git
ASLibrary-zugspitze_mobile.git
ASLibrary-zugspitze_mx.git
ASLibrary-zugspitze_rpc.git
ASLibrary-zugspitze_spark.git


                                    - naming conventions
FlexProjects


FlexProject-foomo_examples_todo.git
FlexProject-zugspitze_air_sparkExamples.git
FlexProject-zugspitze_as3Examples.git
FlexProject-zugspitze_mobileExamples.git
FlexProject-zugspitze_mxExamples.git
FlexProject-zugspitze_sparkExamples.git




                                              - naming conventions
Foomo.Flash


Foomo.Flash

Foomo.FlashVendor

Foomo.FlashLibrary Generator
Foomo.Flash




              - CliCallCompc
              - FlashCompilerConfig
              - FlashVendor
Foomo.FlashConfigs




                     @see Toolbox
Foomo.FlashVendor




                     @see project.xml
                     @see project.xsd
Foomo.FlashVendor
Foomo.FlashLibrary Generator




                                - Ant File

                                @see AntTests
Foomo.FlashLibrary Generator
Foomo.Zugspitze


Foomo.Zugspitze

Foomo.ZugspitzeScaffold

Foomo.ZugspitzeServices

Foomo.Zugspitze.Backport
Foomo.Zugspitze




                  - ProxyGenerator
                  - Scaffold
                  - Services
Foomo.ZugspitzeScaffold




                           @see Configuration
                           @see project.xml

                           -> might move to Flash
Foomo.ZugspitzeServices




                           @see Services

                           - Ant File
Foomo.ZugspitzeServices
Foomo.Zugspitze.Backport
Foomo.Zugspitze.Backport




                           @see Backport_docs.png
Foomo

Core

Utils

MemoryManager

LogManager

SessionManager
foomo.core
foomo.utils
foomo.managers
foomo.managers.MemoryManger
foomo.managers.MemoryManager




       public interface IMemoryManager
       {
       	    function gc():void;
       	    function unload(obj:Object):void;
       	    function addUnloader(type:*, unloader:IUnloader):void;
       	    function removeUnloader(type:*):void;
       }
foomo.managers.LogManger
foomo.managers.LogManager




        public interface ILogManager extends IEventDispatcher
        {
        	    function get level():int
        	    function set level(value:int):void
        	    function isDebug():Boolean
        	    function isInfo():Boolean
        	    function isWarn():Boolean
        	    function isError():Boolean
        	    function isFatal():Boolean
        	    function removeLoggingTarget(target:*):Boolean;
        	    function addLoggingTarget(target:ILoggingTarget):String
        	    function log(category:*, level:int, message:String, parameters:Array):void;
        }

        # Set log level
        LogManager.level = LogLevel.DEBUG;

        # Log entry                                                                             @see SparkExamples
        if (LogManager.isDebug()) LogManager.debug(this, "Can't undo command - command in queue");
foomo.managers.SessionManager




        public interface ISessionManager
        {
        	    function get localIsAvailable():Boolean
        	    function get clientId():String
        	    function get sessionId():String
        	    function setLocalData(key:Object, value:*):*
        	    function getLocalData(key:Object, defaultValue:*=null):*
        	    function removeLocalData(key:Object):*
        	    function flushLocal():String
        	    function clearLocal():void
        }
foomo......
Zugspitze Core

MVC

Commands

CommandManager

StatusManager

Operations
zugspitze.core (MVC)
zugspitze.core (MVC)




                       - simple mvc
                       - use as is
zugspitze.core (commands)




                            - exec/undo/redo
                            - only exec usecases
CommandManager

public interface ICommandManager extends IEventDispatcher
{
	   function set historyName(value:String):void
	   function get historyName():String
	   function set historySize(value:int):void
	   function get historySize():int
	   function get undoAble():Boolean
	   function get redoAble():Boolean
	   function execute(command:ICommand):void
	   function undo():void
	   function redo():void
}

# Controller
this.executeCommand(new AddTodosCommand([todo], this.model, true));
StatusManager


public interface IStatusManager extends IEventDispatcher
{
	   function get stack():Array;
	   function get busy():Boolean;
	   function setBusyStatus(instance:Object):void;
	   function removeBusyStatus(instance:Object):void;
}

# Anywhere
StatusManager.setBusyStatus(this);
StatusManager.removeBusyStatus(this);
zugspitze.core (operations)




                              - async
                              - only result/error
                              - progress
Operations


public interface IOperation extends IEventDispatcher
{
	   function get result():*;
	   function get error():*;
}

public interface IProgressOperation extends IOperation
{
	   function get total():Number;
	   function get progress():Number;
}
Zugspitze Services


Upload Service

Generated sources

Proxy, Operations & Commands
Upload Service
Generated Sources
Proxy, Operations & Commands




                                            Proxy



                     ProxyMethodCallEvent              ProxyMethodCall

      Controller                                                         RPCClient

                     ProxyMethodCallEvent              ProxyMethodCall




                                     ProxyErrorEvent
Proxy, Operations & Commands


                                                Operation / Commands




                                            Proxy



                     ProxyMethodCallEvent              ProxyMethodCall

       Controller                                                           RPCClient

                     ProxyMethodCallEvent              ProxyMethodCall




                                                    OperationEvent
                                                                         @see ProxyMethodOp.as

                                                                         - Exception Handling
                                                                         - Messages
                                                                         - Result
Easy Setup


Setup Project

Scaffold Application

Download Libraries

Generate Services
Setup Project
Scaffold Application
Download Libraries
Generate Services
Writing Code


Pure MVC

Command based

Operation based (OperationChain)

Operations & Commands
                                   -   no right way
                                   -   many possibilities
                                   -   take notes!
                                   -   feedback?



                                   i.e.
                                   - operations in model
Pure MVC




           git checkout v.0
Command based




                git checkout v.1
Command based




   public class ApplicationController extends ZugspitzeController
   {
   	   //...
   	
   	   public function setCurrentState(state:String):void
   	   {
   	   	    this.executeCommand(new SetValueCommand(this.model, 'currentState', state, true));
   	   }

   	   public function editTodo(todo:Todo):void
   	   {
   	   	   this.executeCommand(new SetValueCommand(this.model, 'todo', todo, true));
   	   	   this.executeCommand(new SetValueCommand(this.model, 'currentState', ApplicationModel.STATE_EDIT,
   true));
   	   }

   	   public function addTodo(text:String):void
   	   {
   	   	    this.executeCommand(new AddTodoCommand(text, this.model));
   	   	    this.executeCommand(new SetValueCommand(this.model, 'currentState',
   ApplicationModel.STATE_OPEN_LIST, true));
   	   }
   	
   	   //...
   }
Command based


   public class ApplicationModel extends ZugspitzeModel
   {
   	   //...
   	
   	   public var todoProxy:Service1Proxy = new Service1Proxy;

   	   public var currentState:String = STATE_LOADING;

   	   public var opentTodos:ArrayCollection;

   	   public var completeTodos:ArrayCollection;

   	   public var todo:Todo;

   	   public function setTodos(todos:Array):void
   	   {
   	   	   var open:Array = new Array;
   	   	   var complete:Array = new Array;
   	   	   for each (var todo:Todo in todos) {
   	   	   	    if (todo.complete) {
   	   	   	    	   complete.push(todo);
   	   	   	    } else {
   	   	   	    	   open.push(todo);
   	   	   	    }
   	   	   }
   	   	   this.completeTodos = new ArrayCollection(complete);
   	   	   this.opentTodos = new ArrayCollection(open);
   	   }
   	
   	   //...
   }
Command based




   public class AddTodoCommand extends AbstractAddTodoCommand
   {
   	   public var model:ApplicationModel;

   	   public function AddTodoCommand(text:String, model:ApplicationModel)
   	   {
   	   	   this.model = model;
   	   	   super(text, this.model.todoProxy, true);
   	   }

   	   override protected function methodCall_proxyMethodCallResultHandler(event:ProxyMethodCallEvent):void
   	   {
   	   	   this.model.setTodos(AddTodoCall(event.methodCall).result);
   	   	   this.dispatchCommandCompleteEvent();
   	   }
   }
Operation based




                  git checkout v.2
OperationChain
                                     OperationChain extends EventDispatcherChain




                                                    OperationClass




                                CompleteEvent                           ErrorEvent




          AddEventListener           AddCallback                Chain                Unload




       Controller        EventArgs                 ... rest




                                 OperationClass
OperationChain




    OperationChain
    	   .create(AddTodosOperation, this.todos, this.model.todoProxy)

        # EventArgs: event.operation.result
        # function setCreatedTodos(todos:Array):void
    	   .addOperationCompleteCallback(this.setCreatedTodos, ['operation.result'])
    	
        # GetTodosOperation(proxy:TodoProxy)
        .chainOnOperationComplete(GetTodosOperation, null, this.model.todoProxy)
    	   .addOperationCompleteCallback(this.model.setTodos, ['operation.result'])
    	   .addOperationCompleteCallback(this.model.setCurrentState, null, ComponentModel.STATE_OPEN_LIST)
    	
        .unloadOnOperationComplete();
    ;
Operation based



    public class ApplicationController extends ZugspitzeController
    {
       //...

    	    public function setCurrentState(state:String):void
    	    {
    	    	   this.model.currentState = state;
    	    }

    	    public function editTodo(todo:Todo):void
    	    {
    	    	   this.model.todo = todo;
    	    	   this.model.currentState = ApplicationModel.STATE_EDIT;
    	    }

    	    public function getTodos():void
    	    {
    	    	   OperationChain
    	    	   .create(GetTodosOperation, this.model.todoProxy)
    	    	   	    .addOperationCompleteCallback(this.model.setTodos, ['operation.result'])
    	    	   	    .addOperationCompleteCallback(this.setCurrentState, null, ApplicationModel.STATE_OPEN_LIST)
    	    	   	    .unloadOnOperationComplete();
    	    	   ;
    	    }

        //...
    }
Operation based


    public class ApplicationModel extends ZugspitzeModel
    {
    	   //...
    	
    	   public var todoProxy:Service1Proxy = new Service1Proxy;

    	   public var currentState:String = STATE_LOADING;

    	   public var opentTodos:ArrayCollection;

    	   public var completeTodos:ArrayCollection;

    	   public var todo:Todo;

    	   public function setTodos(todos:Array):void
    	   {
    	   	   var open:Array = new Array;
    	   	   var complete:Array = new Array;
    	   	   for each (var todo:Todo in todos) {
    	   	   	    if (todo.complete) {
    	   	   	    	   complete.push(todo);
    	   	   	    } else {
    	   	   	    	   open.push(todo);
    	   	   	    }
    	   	   }
    	   	   this.completeTodos = new ArrayCollection(complete);
    	   	   this.opentTodos = new ArrayCollection(open);
    	   }
    	
    	   //...
    }
Operations & Commands




                        git checkout v.5

                        @see todoFlex
What’s on my Todo List

Skinning workflow
LogService reimplementation
BusyStatus through operations
Flash/Reflex integration
Look at Signals
Filter for Logger
Debug menu
Hudson, Testing, UI Testing, .....
CHEERS & QAs

More Related Content

What's hot

Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache CamelHenryk Konsek
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...Vadym Kazulkin
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in rubyHiroshi Nakamura
 
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
If love is_blind_-_tiffany
If love is_blind_-_tiffanyIf love is_blind_-_tiffany
If love is_blind_-_tiffanytenka
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoinknight1128
 
Voxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistVoxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistAnton Arhipov
 
Riga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistRiga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistAnton Arhipov
 
Oredev 2015 - Taming Java Agents
Oredev 2015 - Taming Java AgentsOredev 2015 - Taming Java Agents
Oredev 2015 - Taming Java AgentsAnton Arhipov
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidenceJohn Congdon
 
Symfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendKirill Chebunin
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)Robert Swisher
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistAnton Arhipov
 
関西アンカンファレンス PHP ではじめるテストコード
関西アンカンファレンス PHP ではじめるテストコード関西アンカンファレンス PHP ではじめるテストコード
関西アンカンファレンス PHP ではじめるテストコードShinya Ohyanagi
 
How Functions Work
How Functions WorkHow Functions Work
How Functions WorkSaumil Shah
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistAnton Arhipov
 

What's hot (20)

Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache Camel
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
 
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Plack - LPW 2009
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009
 
If love is_blind_-_tiffany
If love is_blind_-_tiffanyIf love is_blind_-_tiffany
If love is_blind_-_tiffany
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoin
 
Voxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistVoxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with Javassist
 
Ruby HTTP clients
Ruby HTTP clientsRuby HTTP clients
Ruby HTTP clients
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
Riga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with JavassistRiga Dev Day 2016 - Having fun with Javassist
Riga Dev Day 2016 - Having fun with Javassist
 
Oredev 2015 - Taming Java Agents
Oredev 2015 - Taming Java AgentsOredev 2015 - Taming Java Agents
Oredev 2015 - Taming Java Agents
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
Symfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friend
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)
 
JavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with JavassistJavaOne 2015 - Having fun with Javassist
JavaOne 2015 - Having fun with Javassist
 
関西アンカンファレンス PHP ではじめるテストコード
関西アンカンファレンス PHP ではじめるテストコード関西アンカンファレンス PHP ではじめるテストコード
関西アンカンファレンス PHP ではじめるテストコード
 
How Functions Work
How Functions WorkHow Functions Work
How Functions Work
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With Javassist
 

Similar to Foomo / Zugspitze Presentation

Taking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the ExtremeTaking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the Extremeyinonavraham
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterHaehnchen
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesciklum_ods
 
Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.ILEran Harel
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and FriendsYun Zhi Lin
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js frameworkBen Lin
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleThierry Wasylczenko
 
RichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesRichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesPavol Pitoňák
 
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav DukhinFwdays
 
Google Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and BeyondGoogle Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and Beyonddion
 
Protractor framework architecture with example
Protractor framework architecture with exampleProtractor framework architecture with example
Protractor framework architecture with exampleshadabgilani
 
OB1K - New, Better, Faster, Devops Friendly Java container by Outbrain
OB1K - New, Better, Faster, Devops Friendly Java container by OutbrainOB1K - New, Better, Faster, Devops Friendly Java container by Outbrain
OB1K - New, Better, Faster, Devops Friendly Java container by OutbrainEran Harel
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationAjax Experience 2009
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptAmit Tyagi
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineRoman Kirillov
 

Similar to Foomo / Zugspitze Presentation (20)

Taking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the ExtremeTaking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the Extreme
 
ES6 metaprogramming unleashed
ES6 metaprogramming unleashedES6 metaprogramming unleashed
ES6 metaprogramming unleashed
 
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 
Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.IL
 
Red5 - PHUG Workshops
Red5 - PHUG WorkshopsRed5 - PHUG Workshops
Red5 - PHUG Workshops
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradle
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
RichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesRichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile Devices
 
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
 
Google Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and BeyondGoogle Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and Beyond
 
Serverless Java on Kubernetes
Serverless Java on KubernetesServerless Java on Kubernetes
Serverless Java on Kubernetes
 
Protractor framework architecture with example
Protractor framework architecture with exampleProtractor framework architecture with example
Protractor framework architecture with example
 
OB1K - New, Better, Faster, Devops Friendly Java container by Outbrain
OB1K - New, Better, Faster, Devops Friendly Java container by OutbrainOB1K - New, Better, Faster, Devops Friendly Java container by Outbrain
OB1K - New, Better, Faster, Devops Friendly Java container by Outbrain
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
JS everywhere 2011
JS everywhere 2011JS everywhere 2011
JS everywhere 2011
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
 

Recently uploaded

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

Foomo / Zugspitze Presentation