The document discusses connecting web and desktop applications using WebDAV. It provides an introduction to HTTP and WebDAV, which allows for distributed editing of web content by extending HTTP. The author then discusses some of the development challenges with WebDAV integration and introduces the Zeta WebDAV component, which aims to simplify WebDAV integration.
TYPO3 Flow 2.0 in the field - webtech Conference 2013die.agilen GmbH
Slides of the talk: "TYPO3 Flow 2.0 in the field" / webtech Conference 2013 by Patrick Lobacher (CEO typovision GmbH) / http://webtechcon.de / 29.10.2013
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
The document discusses quality assurance for PHP projects through implementing tools like Git or SVN with pre-commit hooks, PHP tools like PHPDepend and PHPUnit, and continuous integration servers like Jenkins. It provides an overview of how to set up these tools and implement common practices like pre-commit hooks, continuous integration, and deployment strategies.
What is Http2? How is it supported in Java? How easy is to implement it? Why is it so much faster? This session is the answer and a practical demonstration of how easy it is to migrate to the next gen of http
We'll see several live http2 sessions as examples and we'll analyze them
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)Igalia
This document discusses lightweight 4over6 (lw4o6), an IPv6 transition technology. It describes lw4o6 as moving network address translation (NAT) to customer premises equipment (CPE) and using softwire mappings between IPv4 and IPv6 addresses. Open-source implementations of lw4o6 are available in Snabb and FD.io VPP. Experimental results show that lw4o6 can support a variety of applications.
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
This document discusses the new features of HTTP/2 and how it will be supported in Java technologies. It provides an overview of HTTP/2, including its key features like request/response multiplexing and server push. It describes how Servlet 4.0 may expose these HTTP/2 features. It also discusses planned support for HTTP/2 in Java SE 9 and the current status. The overall agenda covers HTTP/2 capabilities, how Servlet could leverage them, Java SE 9 integration, and a summary.
The document introduces HTTP/2 and discusses limitations of HTTP 1.1 including head of line blocking, TCP slow start, and latency issues. It describes key features of HTTP/2 such as multiplexing requests over a single TCP connection, header compression, and server push to reduce page load times. The presentation includes demos of HTTP/2 in Chrome dev tools and Wireshark to troubleshoot HTTP/2 connections.
TYPO3 Flow 2.0 in the field - webtech Conference 2013die.agilen GmbH
Slides of the talk: "TYPO3 Flow 2.0 in the field" / webtech Conference 2013 by Patrick Lobacher (CEO typovision GmbH) / http://webtechcon.de / 29.10.2013
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
The document discusses quality assurance for PHP projects through implementing tools like Git or SVN with pre-commit hooks, PHP tools like PHPDepend and PHPUnit, and continuous integration servers like Jenkins. It provides an overview of how to set up these tools and implement common practices like pre-commit hooks, continuous integration, and deployment strategies.
What is Http2? How is it supported in Java? How easy is to implement it? Why is it so much faster? This session is the answer and a practical demonstration of how easy it is to migrate to the next gen of http
We'll see several live http2 sessions as examples and we'll analyze them
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)Igalia
This document discusses lightweight 4over6 (lw4o6), an IPv6 transition technology. It describes lw4o6 as moving network address translation (NAT) to customer premises equipment (CPE) and using softwire mappings between IPv4 and IPv6 addresses. Open-source implementations of lw4o6 are available in Snabb and FD.io VPP. Experimental results show that lw4o6 can support a variety of applications.
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
This document discusses the new features of HTTP/2 and how it will be supported in Java technologies. It provides an overview of HTTP/2, including its key features like request/response multiplexing and server push. It describes how Servlet 4.0 may expose these HTTP/2 features. It also discusses planned support for HTTP/2 in Java SE 9 and the current status. The overall agenda covers HTTP/2 capabilities, how Servlet could leverage them, Java SE 9 integration, and a summary.
The document introduces HTTP/2 and discusses limitations of HTTP 1.1 including head of line blocking, TCP slow start, and latency issues. It describes key features of HTTP/2 such as multiplexing requests over a single TCP connection, header compression, and server push to reduce page load times. The presentation includes demos of HTTP/2 in Chrome dev tools and Wireshark to troubleshoot HTTP/2 connections.
Improving performance by changing the rules from fast to SPDYCotendo
SPDY was proposed by Google back in November 2009 to reduce the latency and load time of web pages. It was provided as part of the Chromium open-source project and is enabled in Chrome by default.
We at Cotendo took on the challenge, implemented the server side, and extended our proxies to support SPDY, providing SPDY to HTTP “translation”. Guess what? It really speeds things up. But like all new good things, there is still work to do. We will share insights from our implementation, optimization of SSL-based traffic and present performance data both from Google’s and our customers’ deployment.
What’s next?
We believe the introduction of SPDY as a new application layer presents a unique opportunity to rethink web design concepts and front-end-optimization (FEO) techniques. We will discuss some optimizations we developed and suggest some guidelines on how you can approach these new types of optimizations.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
Boston Web Performance Meetup, April 22, 2014
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave. In this talk we'll start with the basics and get progressively insane. We'll go over several front-end performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
Schedule: 6:30, pizza
7:15: talk
This document provides an overview of hybrid mobile application development using HTML5, CSS and JavaScript. It discusses frameworks like PhoneGap and jQuery Mobile that allow building cross-platform apps for iOS, Android and other mobile platforms from a single codebase. Key points include how these frameworks integrate with native SDKs while exposing native device APIs to web technologies, and examples of building demo hybrid apps targeting iPhone and Android.
This document provides an overview of Oracle's core technology stack and evolution from mainframe to multi-tier architectures. It discusses Oracle database, middleware, and development products. Case studies on Amazon.com and GE Power Systems are presented showing migrations to multi-tier environments. Job roles that interact with Oracle technologies are defined, including administrators, developers, and end users. Product families and typical career paths for different roles are outlined.
Frontend Performance: Expert to Crazy PersonPhilip Tellis
The document outlines steps for front-end performance optimization, beginning with basic techniques like caching, compression and domain sharing and progressing to more advanced strategies involving preloading, parallel downloads, and predicting response times. It was presented by Philip Tellis at WebPerfDays New York and includes references for further reading on topics like CDNs, TCP tuning, and the page visibility API.
This document provides an overview and agenda for an open mic session on best practices, tips, and tricks for installing Sametime 9. It discusses the installation of the Sametime Video MCU, including prerequisites, hardware requirements, and validation steps. It also covers the installation of the Video Manager and troubleshooting techniques such as collecting logs.
The document discusses the history and installation steps of several web browsers and media players, including Opera, Firefox, Internet Explorer, and VLC Player. It provides an introduction and overview of each along with when they were developed and released. Step-by-step instructions with screenshots guide the reader on how to install each one. The conclusion reiterates that browsers allow users to access the internet and view web pages, while software enables interaction with computers.
HTML5 - The Python Angle (PyCon Ireland 2010)Kevin Gill
HTML5 is a new platform for web development that includes features like offline application caching, 2D drawing with Canvas, local storage, web workers, notifications, and web sockets. Python can be used in the HTML5/RIA space through frameworks like Pyjamas that compile Python to JavaScript. However, for client-side development JavaScript will likely continue growing in popularity over Python due to its seamless integration and the lack of compelling reasons to replace JavaScript with Python in browsers.
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
Talk by Leon Anavi at Embedded Linux Conference North America 2020
Automotive Grade Linux (AGL) is a leading embedded Linux distribution for the automotive industry. The AGL Unified Code Base (UCB), using the Yocto Project and OpenEmbedded, has been already adopted by automotive manufacturers and it is present in vehicles like Toyota Camry and all-new 2020 Subaru Outback and Subaru Legacy.
Since 2016 AGL has been ported to Raspberry Pi which nowadays is a prefer getting started platform among the community. The presentation will explore the current status of AGL on Raspberry Pi, reveal war stories and practical experiences for supporting Wayland, PipeWire, libostree for software over the air updates as well as various hardware peripherals.
Guidelines and step by step instructions for building AGL image for Raspberry Pi will be revealed. We will do a deep dive in internals, such as integration of meta-raspberrypi BSP layer, Linux kernel and Mesa versions with firmware KMS to support both HDMI and the official Raspberry Pi touch screen DSI display.
The talk is appropriate for anyone, including beginners. No previous experience is required. Hopefully, the presentation will encourage more people to try AGL on Raspberry Pi and join our community.
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
Frontend Performance Beginner to Expert to Crazy Person
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
La performance front-end de débutant, à expert, à fou furieux !
La toute première condition nécessaire à une bonne expérience utilisateur est de pouvoir obtenir les octets de cette expérience avant que l'utilisateur ne se lasse et parte.
Nous débuterons cette conférence avec les bases pour progressivement devenir démentiel. Nous aborderons plusieurs des meilleurs pratiques de la performance front-end, quelques anti-patterns à éviter, le raisonnement derrière les règles, et comment ces dernières ont changé au fil des ans. Nous regarderons d'un peu plus près quelques très bon outils qui peuvent vous aider.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
There’s no such thing as fast enough. You can always make your website faster. This talk will show you how. The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.In this talk we’ll start with the basics and get progressively insane. We’ll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they’ve changed over the years. We’ll also look at some great tools to help you.
This document provides an overview of the Phalcon PHP framework. It discusses how Phalcon works as a C extension for high performance, how it compares to other PHP frameworks in terms of performance, and how to install, configure and create projects with Phalcon. Key aspects covered include Phalcon being written in C for optimized performance, its loose coupling allowing use of individual components, and its integrated ORM for database interactions.
How to set up an IPv6 LAN with Linux. Using IPv6 requires two steps, firstly setting up the local LAN to support IPv6 and secondly connecting to the internet. The exact mechanism to connect to the Internet depends on your ISP. If you have an IPv4 address of IPv6 and whether you trying to access an IPv4 or IPv6 host.
Jumping Bean offers IPv6 training for businesses (http://www.jumpingbean.co.za/ipv6-training)
This document describes an Ansible role for deploying projects. It discusses the need for continuous deployment, easy maintenance, and reuse of deploy procedures between projects. It then provides details on the role, including example variables, tasks to update code, install dependencies, handle shared resources, build, and finalize deployments. An example playbook demonstrates how to use the role to deploy a Symfony application to production.
Ch 22: Web Hosting and Internet Serverswebhostingguy
Web hosting involves providing space on a server for websites. Linux is commonly used for hosting due to its maintainability and performance. A web server software like Apache is installed to handle HTTP requests from browsers. URLs identify resources on the web using protocols like HTTP and FTP. CGI scripts allow dynamic content generation but pose security risks. Load balancing distributes server load across multiple systems. Choosing a server depends on factors like robustness, performance, updates, and cost. Apache is widely used and configurable using configuration files that control server parameters, resources, and access restrictions. Virtual interfaces allow a single server to host multiple websites. Caching and proxies can improve performance and security. Anonymous FTP allows public file downloads.
The main goal of the HDF browser plug-in is click-and-view HDF files remotely and locally from popular web browsers. Different options of how to implement the plug-in will be presented for comments.
This document discusses URLs and URL design. Some key points covered include:
- URLs should be meaningful and describe the content or functionality behind them. File structure and naming conventions in URLs can help with this.
- URL rewriting techniques like Pretty URLs can make URLs cleaner and more readable for users and search engines.
- Namespaces, routing conventions, and RESTful design principles can help organize URLs and map URLs to application functionality.
- Vanity URLs, long URLs, and duplicate or dangling URLs should generally be avoided for usability and maintenance reasons.
Adobe is from Mars, Microsoft is from Uranus. A look at two competing web st...Eric Fickes
Here is the powerpoint for the mega session given by Jun Heider and Eric Fickes at 360Flex 2010 at eBay Headquarters in San Jose, CA.
This talk was a technical comparison of the latest production offerings from Adobe and Microsoft in the Rich Internet Application space. Eric and Jun built a web based video player application using Adobe Flex, and Microsoft's Silveright. Then to add life, backend data services where created using Adobe's Coldfusion 9, and Microsoft's WCF, part of the .NET Framework.
----------------------------------------------------------------
presentation resource download page :
http://www.iheartair.com/?page_id=604
----------------------------------------------------------------
200 - Jun Heider - Adobe is from Mars,
Microsoft is from Uranus: A View from
the Client
200 - Eric Fickes - Adobe is from Mars,
Microsoft is from Uranus: A View from
the Server
This course teaches applied web development using PHP. Students will learn to set up a local development environment with XAMPP, build databases with PHPMyAdmin, and create dynamic, data-driven web applications using PHP and frameworks like Bootstrap. Students will also learn source control with GitHub and how to deploy applications to the internet using Heroku.
Improving performance by changing the rules from fast to SPDYCotendo
SPDY was proposed by Google back in November 2009 to reduce the latency and load time of web pages. It was provided as part of the Chromium open-source project and is enabled in Chrome by default.
We at Cotendo took on the challenge, implemented the server side, and extended our proxies to support SPDY, providing SPDY to HTTP “translation”. Guess what? It really speeds things up. But like all new good things, there is still work to do. We will share insights from our implementation, optimization of SSL-based traffic and present performance data both from Google’s and our customers’ deployment.
What’s next?
We believe the introduction of SPDY as a new application layer presents a unique opportunity to rethink web design concepts and front-end-optimization (FEO) techniques. We will discuss some optimizations we developed and suggest some guidelines on how you can approach these new types of optimizations.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
Boston Web Performance Meetup, April 22, 2014
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave. In this talk we'll start with the basics and get progressively insane. We'll go over several front-end performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
Schedule: 6:30, pizza
7:15: talk
This document provides an overview of hybrid mobile application development using HTML5, CSS and JavaScript. It discusses frameworks like PhoneGap and jQuery Mobile that allow building cross-platform apps for iOS, Android and other mobile platforms from a single codebase. Key points include how these frameworks integrate with native SDKs while exposing native device APIs to web technologies, and examples of building demo hybrid apps targeting iPhone and Android.
This document provides an overview of Oracle's core technology stack and evolution from mainframe to multi-tier architectures. It discusses Oracle database, middleware, and development products. Case studies on Amazon.com and GE Power Systems are presented showing migrations to multi-tier environments. Job roles that interact with Oracle technologies are defined, including administrators, developers, and end users. Product families and typical career paths for different roles are outlined.
Frontend Performance: Expert to Crazy PersonPhilip Tellis
The document outlines steps for front-end performance optimization, beginning with basic techniques like caching, compression and domain sharing and progressing to more advanced strategies involving preloading, parallel downloads, and predicting response times. It was presented by Philip Tellis at WebPerfDays New York and includes references for further reading on topics like CDNs, TCP tuning, and the page visibility API.
This document provides an overview and agenda for an open mic session on best practices, tips, and tricks for installing Sametime 9. It discusses the installation of the Sametime Video MCU, including prerequisites, hardware requirements, and validation steps. It also covers the installation of the Video Manager and troubleshooting techniques such as collecting logs.
The document discusses the history and installation steps of several web browsers and media players, including Opera, Firefox, Internet Explorer, and VLC Player. It provides an introduction and overview of each along with when they were developed and released. Step-by-step instructions with screenshots guide the reader on how to install each one. The conclusion reiterates that browsers allow users to access the internet and view web pages, while software enables interaction with computers.
HTML5 - The Python Angle (PyCon Ireland 2010)Kevin Gill
HTML5 is a new platform for web development that includes features like offline application caching, 2D drawing with Canvas, local storage, web workers, notifications, and web sockets. Python can be used in the HTML5/RIA space through frameworks like Pyjamas that compile Python to JavaScript. However, for client-side development JavaScript will likely continue growing in popularity over Python due to its seamless integration and the lack of compelling reasons to replace JavaScript with Python in browsers.
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
Talk by Leon Anavi at Embedded Linux Conference North America 2020
Automotive Grade Linux (AGL) is a leading embedded Linux distribution for the automotive industry. The AGL Unified Code Base (UCB), using the Yocto Project and OpenEmbedded, has been already adopted by automotive manufacturers and it is present in vehicles like Toyota Camry and all-new 2020 Subaru Outback and Subaru Legacy.
Since 2016 AGL has been ported to Raspberry Pi which nowadays is a prefer getting started platform among the community. The presentation will explore the current status of AGL on Raspberry Pi, reveal war stories and practical experiences for supporting Wayland, PipeWire, libostree for software over the air updates as well as various hardware peripherals.
Guidelines and step by step instructions for building AGL image for Raspberry Pi will be revealed. We will do a deep dive in internals, such as integration of meta-raspberrypi BSP layer, Linux kernel and Mesa versions with firmware KMS to support both HDMI and the official Raspberry Pi touch screen DSI display.
The talk is appropriate for anyone, including beginners. No previous experience is required. Hopefully, the presentation will encourage more people to try AGL on Raspberry Pi and join our community.
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
Frontend Performance Beginner to Expert to Crazy Person
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
La performance front-end de débutant, à expert, à fou furieux !
La toute première condition nécessaire à une bonne expérience utilisateur est de pouvoir obtenir les octets de cette expérience avant que l'utilisateur ne se lasse et parte.
Nous débuterons cette conférence avec les bases pour progressivement devenir démentiel. Nous aborderons plusieurs des meilleurs pratiques de la performance front-end, quelques anti-patterns à éviter, le raisonnement derrière les règles, et comment ces dernières ont changé au fil des ans. Nous regarderons d'un peu plus près quelques très bon outils qui peuvent vous aider.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
There’s no such thing as fast enough. You can always make your website faster. This talk will show you how. The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.In this talk we’ll start with the basics and get progressively insane. We’ll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they’ve changed over the years. We’ll also look at some great tools to help you.
This document provides an overview of the Phalcon PHP framework. It discusses how Phalcon works as a C extension for high performance, how it compares to other PHP frameworks in terms of performance, and how to install, configure and create projects with Phalcon. Key aspects covered include Phalcon being written in C for optimized performance, its loose coupling allowing use of individual components, and its integrated ORM for database interactions.
How to set up an IPv6 LAN with Linux. Using IPv6 requires two steps, firstly setting up the local LAN to support IPv6 and secondly connecting to the internet. The exact mechanism to connect to the Internet depends on your ISP. If you have an IPv4 address of IPv6 and whether you trying to access an IPv4 or IPv6 host.
Jumping Bean offers IPv6 training for businesses (http://www.jumpingbean.co.za/ipv6-training)
This document describes an Ansible role for deploying projects. It discusses the need for continuous deployment, easy maintenance, and reuse of deploy procedures between projects. It then provides details on the role, including example variables, tasks to update code, install dependencies, handle shared resources, build, and finalize deployments. An example playbook demonstrates how to use the role to deploy a Symfony application to production.
Ch 22: Web Hosting and Internet Serverswebhostingguy
Web hosting involves providing space on a server for websites. Linux is commonly used for hosting due to its maintainability and performance. A web server software like Apache is installed to handle HTTP requests from browsers. URLs identify resources on the web using protocols like HTTP and FTP. CGI scripts allow dynamic content generation but pose security risks. Load balancing distributes server load across multiple systems. Choosing a server depends on factors like robustness, performance, updates, and cost. Apache is widely used and configurable using configuration files that control server parameters, resources, and access restrictions. Virtual interfaces allow a single server to host multiple websites. Caching and proxies can improve performance and security. Anonymous FTP allows public file downloads.
The main goal of the HDF browser plug-in is click-and-view HDF files remotely and locally from popular web browsers. Different options of how to implement the plug-in will be presented for comments.
This document discusses URLs and URL design. Some key points covered include:
- URLs should be meaningful and describe the content or functionality behind them. File structure and naming conventions in URLs can help with this.
- URL rewriting techniques like Pretty URLs can make URLs cleaner and more readable for users and search engines.
- Namespaces, routing conventions, and RESTful design principles can help organize URLs and map URLs to application functionality.
- Vanity URLs, long URLs, and duplicate or dangling URLs should generally be avoided for usability and maintenance reasons.
Adobe is from Mars, Microsoft is from Uranus. A look at two competing web st...Eric Fickes
Here is the powerpoint for the mega session given by Jun Heider and Eric Fickes at 360Flex 2010 at eBay Headquarters in San Jose, CA.
This talk was a technical comparison of the latest production offerings from Adobe and Microsoft in the Rich Internet Application space. Eric and Jun built a web based video player application using Adobe Flex, and Microsoft's Silveright. Then to add life, backend data services where created using Adobe's Coldfusion 9, and Microsoft's WCF, part of the .NET Framework.
----------------------------------------------------------------
presentation resource download page :
http://www.iheartair.com/?page_id=604
----------------------------------------------------------------
200 - Jun Heider - Adobe is from Mars,
Microsoft is from Uranus: A View from
the Client
200 - Eric Fickes - Adobe is from Mars,
Microsoft is from Uranus: A View from
the Server
This course teaches applied web development using PHP. Students will learn to set up a local development environment with XAMPP, build databases with PHPMyAdmin, and create dynamic, data-driven web applications using PHP and frameworks like Bootstrap. Students will also learn source control with GitHub and how to deploy applications to the internet using Heroku.
The Apache HTTP Server is open source web server software that played a key role in the early growth of the World Wide Web. It became a viable alternative to other web servers and is now one of the most widely used, running on Unix-like operating systems. Apache is developed by an open community under the Apache Software Foundation and is available for many platforms.
Docker network Present in VietNam DockerDay 2015Van Phuc
The document discusses Docker networking. It begins with an introduction to Docker and why networking is important for communication between containers. It then covers the libnetwork project, Docker networking features in version 1.7 like the docker0 bridge and linking containers, and experimental features like multi-host networking and services. Drivers and plugins for providing networking are described. The document concludes with a call for users to try experimental Docker and contribute to networking projects.
The document summarizes a presentation about using PHP on the Microsoft web platform. It discusses how to easily install PHP applications on Windows, develop PHP applications using tools like Expression Web and Visual Studio, and manage PHP applications using IIS web server. The presentation demonstrates these tools and platforms and provides resources for learning more about developing PHP applications on Windows.
The document discusses configuring web servers like Apache and IIS. It explains how web servers work using HTTP, and how to host multiple websites using port numbers, IP addresses, or host names. Virtual directories are also configured to make directories appear below the root even if they are physically located elsewhere.
The document discusses configuring web servers like Apache and IIS. It explains how web servers work using HTTP, and how to host multiple websites using port numbers, IP addresses, or host names. Virtual directories are also configured to make directories appear below the root even if they are physically located elsewhere.
The document discusses configuring web servers like Apache and IIS. It explains how web servers work using HTTP, and how to host multiple websites using port numbers, IP addresses, or host names. Virtual directories are also configured to make directories appear below the root even if they are physically located elsewhere.
Hear how to develop and implement WebRTC using the new IETF and W3C standards. This session will overview the concepts and structure of WebRTC and how it is defined in the emerging standards. The session will bring everyone up to a clear understanding of WebRTC for the technical discussions in the next session.
This workshop will include specific examples of how to code and create real-time interactions. The session will be interactive, allowing for open and clear discussion.
Sascha Corti
With Internet Explorer 9, Microsoft has entered the league of HTML 5 browsers and with its active participation in the W3C working groups, the company proves its engagements towards the new and emerging standards. Developers however are often left wondering where the boundaries are drawn between HTML5 web site, plug-in based rich internet application and smart client or “app”.
This session intends to answer this question and uses many examples to show you some of the most important enhancements introduced by HTML5, CSS3, SVG, DOM, WOFF and ECMA script. You will learn now the standards are still evolving and how Microsoft is contributing.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/introduction-to-html5.html
This document discusses the purpose, background, and implementation status of web sockets. It describes how web sockets enable bidirectional communication between web applications and servers through a single TCP connection. This overcomes limitations of traditional HTTP where communication was typically one-way from server to client using polling. The document outlines the web socket protocol specification process involving the W3C and IETF and lists some potential application areas.
Presented at Open CF Summit 2012. Discusses options for adding WebSockets support to the different ColdFusion engines, both open source and commercial.
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
RAUC is a safe and secure open source software solution for A/B updates of embedded Linux devices. It supports the Yocto Project and OpenEmbedded, Buildroot and PTXdist. Upgrades are performed through RAUC bundles which can be installed either through the network or using the old-fashioned way with a USB stick.
In 2020 layer meta-rauc-community was created to provide examples how to integrate the lightweight update client RAUC on various machines. Initially it supported Raspberry Pi. In 2021 the layer was moved to the RAUC organization in GitHub and over the time it was ported to new machine, including qemux86-64, sunxi (Allwinner) and NVIDIA Jetson TX2.
The presentation is appropriate for anyone interested in software upgrades. We will talk about the evolution of meta-rauc-community and provide guidelines for porting to new machines using Yocto and OpenEmbedded BSP layers.
WebRTC provides a standardized profile for real-time communication that enables interoperability between browsers without plugins. It defines client-side APIs for audio and video calling as well as other real-time communication capabilities. The WebRTC architecture includes the API, codecs, transport mechanisms like STUN and TURN, and network I/O that allow real-time apps to run directly in browsers. Signaling is required to establish connections between users, and the standardization of WebRTC aims to improve interoperability compared to proprietary solutions. However, interoperability is not always in the best interests of businesses. Ultimately, the API is more important than the underlying protocols it uses.
HTTP/2 is a new version of the HTTP network protocol that makes web content delivery faster and more efficient. It introduces features like multiplexing, header compression, and server push that fix limitations in HTTP/1.1 like head-of-line blocking and slow start. HTTP/2 is now supported in all major browsers and servers and provides performance improvements over HTTP/1.1 without requiring workarounds. The presentation provided an overview of HTTP/2 concepts and how to troubleshoot using developer tools.
Similar to Connecting Web Application and Desktop, confoo 2011, qafoo (20)
The document discusses introducing OpenCV, an open source computer vision library originally developed by Intel. It was designed with over 500 algorithms for real-time computer vision. The talk introduces some basic usage of OpenCV in PHP, including loading and saving images, image processing techniques like smoothing and morphology, edge detection algorithms, template matching to find objects in images, and using histograms for color matching. Examples of applications mentioned include object recognition, gesture tracking, and structure from motion.
The document discusses various tools for sharing code snippets online, including pastebins, GitHub Gists, JS Bin, JS Fiddle, and IDE One. It also covers tools for beautifying and validating JavaScript code like JS Beautifier and JSLint. Finally, it briefly mentions the /etc/hosts file for local DNS overrides and netstat for viewing network connections.
The document discusses Subgraph Technologies, an open source security startup based in Montreal. It introduces the company and its founders' backgrounds in security. The main topics covered are:
- Kerckhoffs' principle of security through open scrutiny rather than secrecy.
- How open source development has benefited the security research community and led to important tools through collaboration.
- Both advantages and disadvantages of commercial and open source web security software. While commercial tools have better usability, open source allows for transparency and avoids vendor lock-in.
- The existing landscape of both commercial and open source web security tools, noting some open source tools lack integration or are outdated.
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011Bachkoutou Toutou
The document discusses several tools for improving application performance, including Gearman for distributing jobs across worker processes, Memcached for caching data in memory, and Sphinx for indexing and searching large amounts of data. It provides examples of how each tool works and can help address bottlenecks. Alternatives to each tool are also mentioned, along with some implementation details and considerations.
Rob Allen gave a presentation on the key changes and goals for Zend Framework 2.0. Some of the main points discussed were improving documentation, addressing inconsistencies, simplifying code, improving performance up to 200% over ZF1, adding PHP 5.3 features like namespaces and autoloading for better separation of concerns and ease of use. The development process is more open using git and a community review team assists new contributors. The release timeline is uncertain but milestones include MVC, testing and internationalization work. The overall aim is evolution, not revolution, from ZF1 to provide a more consistent and productive framework.
Connecting web Applications with Desktop, confoo 2011Bachkoutou Toutou
The document discusses WebDAV, which extends HTTP to allow for distributed authoring and editing of resources over the web. It provides an introduction to HTTP and WebDAV, outlines some of the development challenges in working with WebDAV including ambiguities in the RFC specifications and misbehaving clients, and introduces the Zeta WebDAV component for addressing these challenges.
99 problems but the search aint one, confoo 2011, andrei zmievskiBachkoutou Toutou
1. Elasticsearch is a search engine based on Lucene that allows for indexing, searching, and analyzing large volumes of data. It is distributed, RESTful, and scalable.
2. Documents are indexed in Elasticsearch by submitting JSON documents. Searches can be performed across all fields and returns results with scores indicating relevance.
3. Elasticsearch is distributed by sharding indices across nodes for performance and availability. Shards can be automatically routed and nodes discovered through zero-configuration mechanisms like multicast.
Derick Rethans gave a talk about using PHP on mobile devices. He discussed his experiences building Twitter and transport status apps for a phone using PHP and GTK. He also talked about cross-compiling PHP to run on a Kindle and the challenges of accessing hardware without proper APIs. In conclusion, mobile devices have limitations that make PHP challenging to use effectively for applications.
The document discusses Webshell, a command line tool for making HTTP requests and processing responses. It allows sending GET and POST requests, following redirects, and provides methods for parsing JSON responses. Webshell provides an interactive shell interface for working with HTTP, similar to cURL but with added JavaScript capabilities for manipulating responses.
This document discusses automated deployment strategies for web applications. It recommends using source code control and branching features to keep the codebase organized. Database migrations and configuration management allow deployment to different environments. Tools like Phing can automate the deployment process through tasks like exporting code, uploading files, and database migrations. Rollbacks are important and can be facilitated by changing symlinks or deleting deployed directories. Overall, automated deployment prevents mistakes and makes rollbacks easy.
The document discusses using APC (Alternative PHP Cache) and Memcached together for high performance caching. It provides an overview of APC for opcode and user caching and how it can accelerate PHP script performance. Memcached is presented as an alternative for user caching that offers a distributed caching system accessible from PHP through an object-oriented interface. Examples are given for basic usage of storing, retrieving, and deleting from the caches. Features like multi-server environments, data segmentation, and delayed data retrieval with Memcached are also covered.
This document provides an introduction and overview of Derick Rethans, an expert in PHP development. It summarizes that he is a Dutchman living in London who has authored several PHP extensions, contributed to open source projects, and works as a freelance PHP developer. He will be giving a presentation on using Xdebug to debug and profile PHP applications.
The document is a slide presentation titled "Advanced OO Patterns" given by Tobias Schlitt, a co-founder of Qafoo GmbH. It discusses object-oriented design patterns like lazy initialization, dependency injection, and the service locator pattern. The presentation provides code examples and motivations for using these patterns to achieve goals like modularity, flexibility, reusability and testability in object-oriented software design.
Connecting Web Application and Desktop, confoo 2011, qafoo
1. Connecting web and desktop: WebDAV
ConFoo 2011
Tobias Schlitt <toby@qafoo.com>
March 10, 2011
2. Connecting web and desktop: WebDAV 2 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
3. Connecting web and desktop: WebDAV 3 / 49
About me
Degree in computer sience
More than 10 years of
professional PHP
Open source enthusiast
Apache Zeta Components
Arbit
PHPUnit
...
4. Connecting web and desktop: WebDAV 3 / 49
About me
Degree in computer sience
More than 10 years of
professional PHP
Open source enthusiast
Apache Zeta Components
Arbit
PHPUnit
...
5. Connecting web and desktop: WebDAV 3 / 49
About me
Degree in computer sience
More than 10 years of
professional PHP
Open source enthusiast
Apache Zeta Components
Arbit
PHPUnit
...
6. Connecting web and desktop: WebDAV 3 / 49
About me
Degree in computer sience
Co-Founder of
More than 10 years of Qafoo GmbH
professional PHP http://qafoo.com
Open source enthusiast
Apache Zeta Components Qafoo
passion for software quality
Arbit
PHPUnit
...
7. Connecting web and desktop: WebDAV 3 / 49
About me
Degree in computer sience
Co-Founder of
More than 10 years of Qafoo GmbH
professional PHP http://qafoo.com
Open source enthusiast
Apache Zeta Components Qafoo
passion for software quality
Arbit
We help people to produce
PHPUnit
...
high quality PHP code.
8. Connecting web and desktop: WebDAV 4 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
10. Connecting web and desktop: WebDAV 5 / 49
The concept
POST /some/resource
???
11. Connecting web and desktop: WebDAV 5 / 49
The concept
PUT /some/resource
???
12. Connecting web and desktop: WebDAV 5 / 49
The concept
Please file that document
under /some/resource
Done.
13. Connecting web and desktop: WebDAV 5 / 49
The concept
Please create a new col-
lection of documents
under /some/more
Done.
14. Connecting web and desktop: WebDAV 6 / 49
HTTP
Network protocol driving the web
Current version: 1.1
RFC 2616 (June 1999)
http://tools.ietf.org/html/rfc2616
Inventor: Sir Tim Berners-Lee
Client / server based
Stateless communication
Defines
Request / response
Headers / body
Formats / actions
15. Connecting web and desktop: WebDAV 6 / 49
HTTP
Network protocol driving the web
Current version: 1.1
RFC 2616 (June 1999)
http://tools.ietf.org/html/rfc2616
Inventor: Sir Tim Berners-Lee
Client / server based
Stateless communication
Defines
Request / response
Headers / body
Formats / actions
16. Connecting web and desktop: WebDAV 6 / 49
HTTP
Network protocol driving the web
Current version: 1.1
RFC 2616 (June 1999)
http://tools.ietf.org/html/rfc2616
Inventor: Sir Tim Berners-Lee
Client / server based
Stateless communication
Defines
Request / response
Headers / body
Formats / actions
17. Connecting web and desktop: WebDAV 6 / 49
HTTP
Network protocol driving the web
Current version: 1.1
RFC 2616 (June 1999)
http://tools.ietf.org/html/rfc2616
Inventor: Sir Tim Berners-Lee
Client / server based
Stateless communication
Defines
Request / response
Headers / body
Formats / actions
18. Connecting web and desktop: WebDAV 7 / 49
WebDAV
HTTP Extensions for Distributed Authoring
RFC 2518 (February 1999)
http://tools.ietf.org/html/rfc2518
HTTP Extensions for Web Distributed Authoring and
Versioning
RFC 4918 (June 2007)
http://tools.ietf.org/html/rfc4918
IETF Standard
Extension to HTTP
Allows distributed editing
19. Connecting web and desktop: WebDAV 7 / 49
WebDAV
HTTP Extensions for Distributed Authoring
RFC 2518 (February 1999)
http://tools.ietf.org/html/rfc2518
HTTP Extensions for Web Distributed Authoring and
Versioning
RFC 4918 (June 2007)
http://tools.ietf.org/html/rfc4918
IETF Standard
Extension to HTTP
Allows distributed editing
20. Connecting web and desktop: WebDAV 7 / 49
WebDAV
HTTP Extensions for Distributed Authoring
RFC 2518 (February 1999)
http://tools.ietf.org/html/rfc2518
HTTP Extensions for Web Distributed Authoring and
Versioning
RFC 4918 (June 2007)
http://tools.ietf.org/html/rfc4918
IETF Standard
Extension to HTTP
Allows distributed editing
21. Connecting web and desktop: WebDAV 7 / 49
WebDAV
HTTP Extensions for Distributed Authoring
RFC 2518 (February 1999)
http://tools.ietf.org/html/rfc2518
HTTP Extensions for Web Distributed Authoring and
Versioning
RFC 4918 (June 2007)
http://tools.ietf.org/html/rfc4918
IETF Standard
Extension to HTTP
Allows distributed editing
22. Connecting web and desktop: WebDAV 7 / 49
WebDAV
HTTP Extensions for Distributed Authoring
RFC 2518 (February 1999)
http://tools.ietf.org/html/rfc2518
HTTP Extensions for Web Distributed Authoring and
Versioning
RFC 4918 (June 2007)
http://tools.ietf.org/html/rfc4918
IETF Standard
Extension to HTTP
Allows distributed editing
WebDAV allows your users to edit web content easily.
23. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
24. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
25. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
26. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
27. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
28. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
29. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
30. Connecting web and desktop: WebDAV 8 / 49
Request methods
HTTP WebDAV
GET MKCOL
POST COPY
HEAD MOVE
PUT PROPFIND
DELETE PROPPATCH
OPTIONS LOCK
TRACE UNLOCK
CONNECT
Significant for WebDAV
31. Connecting web and desktop: WebDAV 9 / 49
Request headers
HTTP WebDAV
Accept[-*] Depth
Authorization Destination
If-[None-]Match If
If-[Un]Modified-Since Overwrite
User-Agent Timeout
...
32. Connecting web and desktop: WebDAV 9 / 49
Request headers
HTTP WebDAV
Accept[-*] Depth
Authorization Destination
If-[None-]Match If
If-[Un]Modified-Since Overwrite
User-Agent Timeout
...
33. Connecting web and desktop: WebDAV 9 / 49
Request headers
HTTP WebDAV
Accept[-*] Depth
Authorization Destination
If-[None-]Match If
If-[Un]Modified-Since Overwrite
User-Agent Timeout
...
Significant for WebDAV
34. Connecting web and desktop: WebDAV 10 / 49
Response headers
HTTP WebDAV
Accept-Ranges DAV
Content-Length Lock-Token
Content-Type Timeout
ETag
Location
Retry-After
Server
WWW-Authenticate
...
35. Connecting web and desktop: WebDAV 10 / 49
Response headers
HTTP WebDAV
Accept-Ranges DAV
Content-Length Lock-Token
Content-Type Timeout
ETag
Location
Retry-After
Server
WWW-Authenticate
...
36. Connecting web and desktop: WebDAV 10 / 49
Response headers
HTTP WebDAV
Accept-Ranges DAV
Content-Length Lock-Token
Content-Type Timeout
ETag
Location
Retry-After
Server
WWW-Authenticate
...
Significant for WebDAV
37. Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
HTTP
Request body mostly not significant
Only PUT method needs body (to be stored)
Response body usually content to deliver (unspecified)
Error responses may contain arbitrary content
38. Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
WebDAV
Bodies are significant
Many methods require XML bodies
Request Response
PROPFIND PROPFIND
PROPPATCH PROPPATCH
COPY (optional) LOCK
MOVE (optional) Potentially others
LOCK (multi-status)
39. Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
WebDAV
Bodies are significant
Many methods require XML bodies
Request Response
PROPFIND PROPFIND
PROPPATCH PROPPATCH
COPY (optional) LOCK
MOVE (optional) Potentially others
LOCK (multi-status)
40. Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
WebDAV
Bodies are significant
Many methods require XML bodies
Request Response
PROPFIND PROPFIND
PROPPATCH PROPPATCH
COPY (optional) LOCK
MOVE (optional) Potentially others
LOCK (multi-status)
41. Connecting web and desktop: WebDAV 12 / 49
Properties
Concept introduced by WebDAV
Store meta information about content
Usually not directly visible to the user
Live properties Dead properties
creationdate Arbitrary data
displayname Custom namespace
get* XML favored
lockdiscovery
...
42. Connecting web and desktop: WebDAV 12 / 49
Properties
Concept introduced by WebDAV
Store meta information about content
Usually not directly visible to the user
Live properties Dead properties
creationdate Arbitrary data
displayname Custom namespace
get* XML favored
lockdiscovery
...
43. Connecting web and desktop: WebDAV 12 / 49
Properties
Concept introduced by WebDAV
Store meta information about content
Usually not directly visible to the user
Live properties Dead properties
creationdate Arbitrary data
displayname Custom namespace
get* XML favored
lockdiscovery
...
44. Connecting web and desktop: WebDAV 13 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
45. Connecting web and desktop: WebDAV 14 / 49
Development challenges
Server development in general
WebDAV RFCs are a BBOM
Unstructured
Ambiguous
Design fails
Misbehaving clients
Ignore the specification
Different interpretations of RFCs
Proprietary BS
Exchangeable back ends
46. Connecting web and desktop: WebDAV 15 / 49
Outline
Development challenges
RFC problems
Client problems
Back end flexibility
47. Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
Errors on COPY
“[...] if an error occurs while copying an internal collection,
the server MUST NOT copy any resources identified by
members of this collection (i.e., the server must skip this
subtree) [...]” [?]
MOVE
“[...] is the logical equivalent of a copy (COPY), followed by
consistency maintenance processing, followed by a delete of
the source,[...]” [?]
MOVE errors
“[...] after detecting the error, the move operation SHOULD
try to finish as much of the original move as possible [...]” [?]
48. Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
Errors on COPY
“[...] if an error occurs while copying an internal collection,
the server MUST NOT copy any resources identified by
members of this collection (i.e., the server must skip this
subtree) [...]” [?]
MOVE
“[...] is the logical equivalent of a copy (COPY), followed by
consistency maintenance processing, followed by a delete of
the source,[...]” [?]
MOVE errors
“[...] after detecting the error, the move operation SHOULD
try to finish as much of the original move as possible [...]” [?]
49. Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
Errors on COPY
“[...] if an error occurs while copying an internal collection,
the server MUST NOT copy any resources identified by
members of this collection (i.e., the server must skip this
subtree) [...]” [?]
MOVE
“[...] is the logical equivalent of a copy (COPY), followed by
consistency maintenance processing, followed by a delete of
the source,[...]” [?]
MOVE errors
“[...] after detecting the error, the move operation SHOULD
try to finish as much of the original move as possible [...]” [?]
50. Connecting web and desktop: WebDAV 17 / 49
The If header
Makes operations conditional.
Apply operation only if
all conditions are met
no condition is met
1 No−tag − l i s t = L i s t
2 Tagged− l i s t = R e s o u r c e 1∗ L i s t
3 Resource = Coded−URL
4 List = ”(”
5 1 ∗ ( [ ” Not ” ] ( S t a t e −t o k e n | ” [ ” e n t i t y −t a g ” ] ” ) )
6 ”)”
7 S t a t e −t o k e n = Coded−URL
8 Coded−URL = ”<” a b s o l u t e U R I ”>”
51. Connecting web and desktop: WebDAV 18 / 49
The If header
Can contain
lock tokens
entity tags
1 I f : (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n >
2 [ ” I am an ETag” ] ) ( [ ” I am a n o t h e r ETag” ] )
52. Connecting web and desktop: WebDAV 19 / 49
The If header
Conditions can apply to
single resources
sets of resources
all affected resources
1 <h t t p : // e x a m p l e . com/ r e s o u r c e 1 >
2 (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n > [W/ ”A weak ETag” ] )
3 ( Not [ ” s t r o n g ETag” ] )
Required own parser implementation
Parser is about 150 LOC
53. Connecting web and desktop: WebDAV 20 / 49
Locking
2 different types of locks
Exclusive
Shared
Lock conditions must be validated before anything else
Timeout refresh on every lock use (successful or not)
(Fixed in RCF 4918)
Not specified how to associate principles with lock tokens
Lock-Null-Resources
(Partly fixed in RFC 4918)
Do not behave like real resources
Must vanish when the lock is released
A collection can be created on them
54. Connecting web and desktop: WebDAV 20 / 49
Locking
2 different types of locks
Exclusive
Shared
Lock conditions must be validated before anything else
Timeout refresh on every lock use (successful or not)
(Fixed in RCF 4918)
Not specified how to associate principles with lock tokens
Lock-Null-Resources
(Partly fixed in RFC 4918)
Do not behave like real resources
Must vanish when the lock is released
A collection can be created on them
55. Connecting web and desktop: WebDAV 20 / 49
Locking
2 different types of locks
Exclusive
Shared
Lock conditions must be validated before anything else
Timeout refresh on every lock use (successful or not)
(Fixed in RCF 4918)
Not specified how to associate principles with lock tokens
Lock-Null-Resources
(Partly fixed in RFC 4918)
Do not behave like real resources
Must vanish when the lock is released
A collection can be created on them
56. Connecting web and desktop: WebDAV 20 / 49
Locking
2 different types of locks
Exclusive
Shared
Lock conditions must be validated before anything else
Timeout refresh on every lock use (successful or not)
(Fixed in RCF 4918)
Not specified how to associate principles with lock tokens
Lock-Null-Resources
(Partly fixed in RFC 4918)
Do not behave like real resources
Must vanish when the lock is released
A collection can be created on them
57. Connecting web and desktop: WebDAV 20 / 49
Locking
2 different types of locks
Exclusive
Shared
Lock conditions must be validated before anything else
Timeout refresh on every lock use (successful or not)
(Fixed in RCF 4918)
Not specified how to associate principles with lock tokens
Lock-Null-Resources
(Partly fixed in RFC 4918)
Do not behave like real resources
Must vanish when the lock is released
A collection can be created on them
58. Connecting web and desktop: WebDAV 21 / 49
Outline
Development challenges
RFC problems
Client problems
Back end flexibility
59. Connecting web and desktop: WebDAV 22 / 49
Konqueror / Nautilus
Konqueror (KDE)
Does not decode URLs properly
Requires Apache like error messages for 404
Nautilus (Gnome)
Cannot cope with charset="..." info in MIME types
60. Connecting web and desktop: WebDAV 22 / 49
Konqueror / Nautilus
Konqueror (KDE)
Does not decode URLs properly
Requires Apache like error messages for 404
Nautilus (Gnome)
Cannot cope with charset="..." info in MIME types
61. Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
At least 3 different WebDAV user agents in Windows
Loaded depending on how you initialize connection
Transparently switched occasionally
Requires custom header MS-Author-Via on every response
Requires custom namespaces set on live properties
Requires special namespace shortcut to be used (sic!)
Requires different shortcuts for DAV: namespace
62. Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
At least 3 different WebDAV user agents in Windows
Loaded depending on how you initialize connection
Transparently switched occasionally
Requires custom header MS-Author-Via on every response
Requires custom namespaces set on live properties
Requires special namespace shortcut to be used (sic!)
Requires different shortcuts for DAV: namespace
63. Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
At least 3 different WebDAV user agents in Windows
Loaded depending on how you initialize connection
Transparently switched occasionally
Requires custom header MS-Author-Via on every response
Requires custom namespaces set on live properties
Requires special namespace shortcut to be used (sic!)
Requires different shortcuts for DAV: namespace
64. Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
Cannot cope with non-significant white spaces in XML bodies
Requires newline at the end of every XML body
Occasionally sends invalid PROPFIND requests
65. Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
Cannot cope with non-significant white spaces in XML bodies
Requires newline at the end of every XML body
Occasionally sends invalid PROPFIND requests
66. Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
Cannot cope with non-significant white spaces in XML bodies
Requires newline at the end of every XML body
Occasionally sends invalid PROPFIND requests
67. Connecting web and desktop: WebDAV 25 / 49
Outline
Development challenges
RFC problems
Client problems
Back end flexibility
68. Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
Exchangeable back end
File system
Memory (testing)
SQL Database?
Subversion?
Independent of client issues
Protocol enhancements back end independent
Easy implementation
69. Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
Exchangeable back end
File system
Memory (testing)
SQL Database?
Subversion?
Independent of client issues
Protocol enhancements back end independent
Easy implementation
70. Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
Exchangeable back end
File system
Memory (testing)
SQL Database?
Subversion?
Independent of client issues
Protocol enhancements back end independent
Easy implementation
71. Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
Exchangeable back end
File system
Memory (testing)
SQL Database?
Subversion?
Independent of client issues
Protocol enhancements back end independent
Easy implementation
72. Connecting web and desktop: WebDAV 27 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
73. Connecting web and desktop: WebDAV 28 / 49
Outline
Zeta Webdav component
Background
Usage
Customization
End note
75. Connecting web and desktop: WebDAV 29 / 49
Apache Zeta Components
apache
Zeta
Components
76. Connecting web and desktop: WebDAV 30 / 49
History: eZ Components
Developed since 2004 by eZ Systems AS
Makers of enterprise OSS CMS eZ Publish
http://ez.no
Initial goal
Refactor and cleanup core libs of eZ Publish
Pull out standalone, general purpose library
Objectives
High quality code
Well thought out API
Backwards compatibility
Extensive documentation
77. Connecting web and desktop: WebDAV 31 / 49
History: The break
March 2010
All eZ Components developers left eZ Systems
Still, we wanted to . . .
put voluntary efforts into the project
push it further
ensure it is not broken
Discussion with eZ Systems
Spin off the project to become independent
Look for or create a foundation
Result: Propose code to Apache Software Foundation
78. Connecting web and desktop: WebDAV 32 / 49
Apache Software Foundation
http://apache.org
Well knwon OSS foundation
Home of OSS projects like
Apache HTTP server
Subversion
CouchDB
http://zeta-components.org
79. Connecting web and desktop: WebDAV 33 / 49
The Webdav component
General purpose WebDAV server
Easy integration and customization
Work around client issues
80. Connecting web and desktop: WebDAV 34 / 49
Zeta Webdav architecture
Transport layer Plugins
Microsoft Nautilus
RFC conform compatible Lock plugin
compatible
transport transport
transport
Your
custom plugin
Server layer
Your
authentication / Plugin API
authorization
Back end layer
Simple backend (base class)
File system eZ Publish Your custom
back end back end back end
81. Connecting web and desktop: WebDAV 35 / 49
Outline
Zeta Webdav component
Background
Usage
Customization
End note
82. Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
3 dirname ( FILE ) . ’ / backend ’
4 );
5
6 $ s e r v e r − andle ( $backend ) ;
>h
83. Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
3 dirname ( FILE ) . ’ / backend ’
4 );
5
6 $ s e r v e r − andle ( $backend ) ;
>h
84. Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
3 dirname ( FILE ) . ’ / backend ’
4 );
5
6 $ s e r v e r − andle ( $backend ) ;
>h
85. Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
3 dirname ( FILE ) . ’ / backend ’
4 );
5
6 $ s e r v e r − andle ( $backend ) ;
>h
86. Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 require once ’ c u s t o m l o c k a u t h . php ’ ;
2
3 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
4
5 $ s e r v e r − u t h = new myCustomLockAuth (
>a
6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e
7 dirname ( FILE ) . ’ / t o k e n s . php ’
8 );
9
10 $server− luginRegistry− e g i s t e r P l u g i n (
>p >r
11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )
12 );
13
14 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
15 // Your WebDAV d i r e c t o r y h e r e
16 dirname ( FILE ) . ’ / backend ’
17 );
18
19 $ s e r v e r − andle ( $backend ) ;
>h
87. Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 require once ’ c u s t o m l o c k a u t h . php ’ ;
2
3 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
4
5 $ s e r v e r − u t h = new myCustomLockAuth (
>a
6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e
7 dirname ( FILE ) . ’ / t o k e n s . php ’
8 );
9
10 $server− luginRegistry− e g i s t e r P l u g i n (
>p >r
11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )
12 );
13
14 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
15 // Your WebDAV d i r e c t o r y h e r e
16 dirname ( FILE ) . ’ / backend ’
17 );
18
19 $ s e r v e r − andle ( $backend ) ;
>h
88. Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 require once ’ c u s t o m l o c k a u t h . php ’ ;
2
3 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
4
5 $ s e r v e r − u t h = new myCustomLockAuth (
>a
6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e
7 dirname ( FILE ) . ’ / t o k e n s . php ’
8 );
9
10 $server− luginRegistry− e g i s t e r P l u g i n (
>p >r
11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )
12 );
13
14 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
15 // Your WebDAV d i r e c t o r y h e r e
16 dirname ( FILE ) . ’ / backend ’
17 );
18
19 $ s e r v e r − andle ( $backend ) ;
>h
89. Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 require once ’ c u s t o m l o c k a u t h . php ’ ;
2
3 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
4
5 $ s e r v e r − u t h = new myCustomLockAuth (
>a
6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e
7 dirname ( FILE ) . ’ / t o k e n s . php ’
8 );
9
10 $server− luginRegistry− e g i s t e r P l u g i n (
>p >r
11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )
12 );
13
14 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
15 // Your WebDAV d i r e c t o r y h e r e
16 dirname ( FILE ) . ’ / backend ’
17 );
18
19 $ s e r v e r − andle ( $backend ) ;
>h
90. Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e A n o n y m o u s ( ezcWebdavAnonymousAuth $ d a t a ) ;
4 }
1 i n t e r f a c e ezcWebdavBasicAuthenticator e x t e n d s ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;
4 }
1 i n t e r f a c e ezcWebdavDigestAuthenticator extends ezcWebdavBasicAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;
4 }
91. Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e A n o n y m o u s ( ezcWebdavAnonymousAuth $ d a t a ) ;
4 }
1 i n t e r f a c e ezcWebdavBasicAuthenticator e x t e n d s ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;
4 }
1 i n t e r f a c e ezcWebdavDigestAuthenticator extends ezcWebdavBasicAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;
4 }
92. Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e A n o n y m o u s ( ezcWebdavAnonymousAuth $ d a t a ) ;
4 }
1 i n t e r f a c e ezcWebdavBasicAuthenticator e x t e n d s ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;
4 }
1 i n t e r f a c e ezcWebdavDigestAuthenticator extends ezcWebdavBasicAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;
4 }
93. Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e A n o n y m o u s ( ezcWebdavAnonymousAuth $ d a t a ) ;
4 }
1 i n t e r f a c e ezcWebdavBasicAuthenticator e x t e n d s ezcWebdavAnonymousAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;
4 }
1 i n t e r f a c e ezcWebdavDigestAuthenticator extends ezcWebdavBasicAuthenticator
2 {
3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;
4 }
94. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
95. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
96. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
97. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
98. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
99. Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthorizer
2 {
3 c o n s t ACCESS READ = 1 ;
4 c o n s t ACCESS WRITE = 2 ;
5
6 p u b l i c f u n c t i o n a u t h o r i z e ( $ u s e r , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;
7 }
1 i n t e r f a c e ezcWebdavLockAuthorizer extends ezcWebdavAuthorizer
2 {
3 p u b l i c f u n c t i o n assignLock ( $user , $lockToken ) ;
4
5 p u b l i c f u n c t i o n ownsLock ( $ u s e r , $ l o c k T o k e n ) ;
6
7 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $lockToken ) ;
8 }
100. Connecting web and desktop: WebDAV 40 / 49
Outline
Zeta Webdav component
Background
Usage
Customization
End note
101. Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2
3 $ p a t h F a c t o r y = new e z c W e b d a v B a s i c P a t h F a c t o r y (
4 ’ h t t p : / / e x a m p l e . com/ webdav / i n d e x . php ’
5 );
6
7 foreach ( $server− o n f i g u r a t i o n s as $conf )
>c
8 {
9 $ c o n f− a t h F a c t o r y = $ p a t h F a c t o r y ;
>p
10 }
11
12 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
13 dirname ( FILE ) . ’ / backend ’
14 );
15
16 $ s e r v e r − andle ( $backend ) ;
>h
102. Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2
3 $ p a t h F a c t o r y = new e z c W e b d a v B a s i c P a t h F a c t o r y (
4 ’ h t t p : / / e x a m p l e . com/ webdav / i n d e x . php ’
5 );
6
7 foreach ( $server− o n f i g u r a t i o n s as $conf )
>c
8 {
9 $ c o n f− a t h F a c t o r y = $ p a t h F a c t o r y ;
>p
10 }
11
12 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
13 dirname ( FILE ) . ’ / backend ’
14 );
15
16 $ s e r v e r − andle ( $backend ) ;
>h
103. Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
2
3 $ p a t h F a c t o r y = new e z c W e b d a v B a s i c P a t h F a c t o r y (
4 ’ h t t p : / / e x a m p l e . com/ webdav / i n d e x . php ’
5 );
6
7 foreach ( $server− o n f i g u r a t i o n s as $conf )
>c
8 {
9 $ c o n f− a t h F a c t o r y = $ p a t h F a c t o r y ;
>p
10 }
11
12 $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
13 dirname ( FILE ) . ’ / backend ’
14 );
15
16 $ s e r v e r − andle ( $backend ) ;
>h
104. Connecting web and desktop: WebDAV 42 / 49
The back end
ezcWebdavFileBackend
ezcWebdavMemoryBackend
Write your own
ezcWebdavSimpleBackend
ezcWebdavBackend
ezcWebdavBackendPut
ezcWebdavBackendChange
ezcWebdavBackendMakeCollection
ezcWebdavLockBackend
105. Connecting web and desktop: WebDAV 42 / 49
The back end
ezcWebdavFileBackend
ezcWebdavMemoryBackend
Write your own
ezcWebdavSimpleBackend
ezcWebdavBackend
ezcWebdavBackendPut
ezcWebdavBackendChange
ezcWebdavBackendMakeCollection
ezcWebdavLockBackend
106. Connecting web and desktop: WebDAV 42 / 49
The back end
ezcWebdavFileBackend
ezcWebdavMemoryBackend
Write your own
ezcWebdavSimpleBackend
ezcWebdavBackend
ezcWebdavBackendPut
ezcWebdavBackendChange
ezcWebdavBackendMakeCollection
ezcWebdavLockBackend
107. Connecting web and desktop: WebDAV 42 / 49
The back end
ezcWebdavFileBackend
ezcWebdavMemoryBackend
Write your own
ezcWebdavSimpleBackend
ezcWebdavBackend
ezcWebdavBackendPut
ezcWebdavBackendChange
ezcWebdavBackendMakeCollection
ezcWebdavLockBackend
108. Connecting web and desktop: WebDAV 43 / 49
ezcWebdavSimpleBackend
Proper method handling
Authorization
Handling of If[-*] headers
about 1600 LOC
No deeper knowledge on WebDAV required
109. Connecting web and desktop: WebDAV 44 / 49
New clients
Adjust transport layer
Needs some patience
Use Wireshark!
Extend one or more of
ezcWebdavTransport
ezcWebdavHeaderHandler
ezcWebdavPropertyHandler
110. Connecting web and desktop: WebDAV 44 / 49
New clients
Adjust transport layer
Needs some patience
Use Wireshark!
Extend one or more of
ezcWebdavTransport
ezcWebdavHeaderHandler
ezcWebdavPropertyHandler
1 $ n e w C l i e n t C o n f = new e z c W e b d a v S e r v e r C o n f i g u r a t i o n (
2 ’ (My. ∗ Webdav s+C l i e n g t ) i ’ ,
3 ’ myCustomTransportTransport ’
4 // . . .
5 );
6
7 $server− o n f i g u r a t i o n s − n s e r t B e f o r e ( $newClientConf , 0 ) ;
>c >i
111. Connecting web and desktop: WebDAV 44 / 49
New clients
Adjust transport layer
Needs some patience
Use Wireshark!
Extend one or more of
ezcWebdavTransport
ezcWebdavHeaderHandler
ezcWebdavPropertyHandler
1 $ n e w C l i e n t C o n f = new e z c W e b d a v S e r v e r C o n f i g u r a t i o n (
2 ’ (My. ∗ Webdav s+C l i e n g t ) i ’ ,
3 ’ myCustomTransportTransport ’
4 // . . .
5 );
6
7 $server− o n f i g u r a t i o n s − n s e r t B e f o r e ( $newClientConf , 0 ) ;
>c >i
112. Connecting web and desktop: WebDAV 45 / 49
Plugins
Hook into requests / responses
Handle unknown requests
Issue unknown responses
Send requests to the back end
113. Connecting web and desktop: WebDAV 46 / 49
Outline
Zeta Webdav component
Background
Usage
Customization
End note
114. Connecting web and desktop: WebDAV 47 / 49
Join the team!
Come and contribute!
Highly technical discussions
Open minded people
Apache Software Foundation
http://zeta-components.org
115. Connecting web and desktop: WebDAV 48 / 49
Q/A
Are there any questions left?
116. Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk at
http://joind.in/2808
and / or give me some feedback right now!
117. Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk at
http://joind.in/2808
and / or give me some feedback right now!
This is very important for . . .
Speakers
Organizers
You!
118. Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk at
http://joind.in/2808
and / or give me some feedback right now!
Stay in touch
Tobias Schlitt
toby@qafoo.com
@tobySen / @qafoo
Rent a PHP quality expert:
http://qafoo.com