Skip to content
sauber edited this page Jan 21, 2012 · 1 revision

To start programming on this project it's necessary to understand the underlying technology. Here are 4 challenges that will gradually introduce the technologies. We expect you to complete challenge 1-3 on your own and demonstrate results. We expect you to communicate with us for challenge 4.

1) Install Perl

The language of choice is perl. It's necessary to have perl installed. The challenge is to install perl on own workstation and confirm that a simple perl script developed by yourself will run.

2) Module Installation

This project will make use of several modules from CPAN. One of them is Net::DAV::Server

The challenge is to install the module, run the example code from above website, and confirm with a webdav client (such as cadaver) that it works.

3) Event handling with POE

One of the components in the project is an event based system that handles events from a variety of sources. We have chosen POE as system to manage events. POE has three different abstraction layers of event handling; wheels, components and sessions.

The challenge is to understand how POE works, what the difference is between the different abstraction layers, and to make a simple client/server based system based on POE::Wheel::SocketFactory.

4) Filesys::Virtual::Proxy

Filesys::Virtual is s general purpose virtual filesystem. Virtual file system modules compatible with this API can be used by WebDav? and Fuse. Unfortunately it's a blocking API.

In this project and non-blocking backend will be used. The challenge is to brigde a blocking API frontend to a non-blocking backend. To do this, create a Filesys::Virtual::Proxy frontend module that hands over all file operations to a backend in a seperate process.

We prefer solutions based upon POE::Component::IKC::ClientLite, but other choices are acceptable.

In this particular challenge it's ok to use a blocking backend, such as Filesys::Virtual::Plain. The important part is to separate frontend and backend into two different processes.

Clone this wiki locally