# READMORE.txt (2004-02-29, 03-10, 03-14, 04-20, 05-21, 06-18, 07-13, # 2005-01-21, 01-23) # L. Zhao So you want to know more of JWebPresenter! I'm happy to see that :-). Introduction This is part of the JWebPresenter project. It is the "simple solution". An advanced solution which supports something like MC (motion compensation) is being considered (oh! I found MC is not useful for presentaions, so don't expect 2005-01-23). Change log 2004-02-29, ver 1.0, finally I chose the GPLv2 as the license. 2004-03-10, ver 1.01, remove the useless mcMode test. 2004-03-14, ver 1.02, document improvement. 2004-04-20, ver 1.1, major enhancement (Swing code, popup menu) 2004-05-21, ver 1.2, major change (dynamic URL, new menu, etc) 2004-06-18, ver 1.21, minor enhancement (Reset function) 2004-07-13, ver 1.22, minor enhancement (document improvement) 2005-01-21, ver 1.23, minor enhancement (pre-defined window size) 2005-01-21, ver 1.3, major enhancement (embeded applet mode) Technical details You already know that JWebPresenter is based on bitmap images: server (presenter) changes the slide image at pre-defined URL, while client (audience) fetches the image periodically. This basically works, and is the default behavior of JWebPresenter. However, in practice, it is better to tell the client the next: 1) presentation protocol, 2) sequence number, 3) the next fetch time, 4) 2004-05-21 the slide URL 5) 2004-05-21 the next ctlURL (see follows) By 1), client can know how to treat the presenting. By 2), client can know the sequence number of slide. I know that there is a "Last-Modified" header in the HTTP protocol, but it does not always work, at least in my preliminary test, due to implementation difference and the cache mechanism of browsers or Java VMs. So I decided to use a separate control message -- presented at the "ctlURL". This can maximize the compatibility: a minimal HTTP server works well; an FTP server also works fine. The troubles due to cache problem can be avoided too. By 3), client can have a hint of how fast the presenting is. This may help client to arrange the slide fetch process. By 4), client can know where to fetch the slide, and by 5), client can know where to get the next control message. In the versions before 1.2, I used two static URLs (i.e., slideURL and ctlURL are invariant), which sometimes get in trouble due to the cache mechanism of Browser, Proxy or Java VM. Therefore, from version 1.2, I decided to use dynamic slideURL and ctlURL. For new clients, I still keep a link from initial slideURL and ctlURL to the current ones. Besides, for slow clients, a list of presented slides is kept during presenting (they can be skipped though). Hence JWebPresenter client fetches control message from ctlURL, then extract slide URL and next ctlURL from the fetched messages. Currently, I simply skip the fetch of image if the "Seq" parameter did not change. But a more clever client can use its own cache to do things more efficiently. For more implementation details, please read the sources -- Believe me, they are not difficult and are well commented. If you modified the Java program source, new jar file can be obtained by "jar cvfm jwp.jar MANIFEST *.class" after compile. If you are interested in more details, contact me please! Multiple sources JWebPresenter has no limit on the maximum number of concurrent presentations (notice that it does not mean the maximum number of concurrent clients). In such a case, you can define slideURL and ctlURL as many as the number of concurrent presentations. For this, you first need to prepare your presentation in images name them slide-1-1.png, ..., slide-1-n.png for the first source; ... slide-n-1.png, ..., slide-n-m.png for the nth source. The number of slides in a source needs not to be same. Mixed image types are also OK, actually the file with minimal size is chosen automatically if there are several ones of the same name except the extension! More details can be find in slideshow.pl. Question/suggestion/advice If you have questions, suggestions, advices or, even more, want to help me in developing this project, please feel free to contact me. Thanks. I'm not a crazy programmer, yet I like programming. Your feedback could improve JWebPresenter! Thank you!