0afbd54ab11117327dcb4682c38f28728dcb4dc6
[booh] / www / advanced.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3
4 <head>
5   <title>Booh - The Web-Album of choice for discriminating Linux users</title>
6   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
7   <style type="text/css" media="screen"
8          <!--
9              pre { background-color: #e0e0e0; }
10              tt { background-color: #e0e0e0; }
11            -->
12   </style>
13 <script type="text/javascript">
14 /* <![CDATA[ */
15     (function() {
16         var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
17         
18         s.type = 'text/javascript';
19         s.async = true;
20         s.src = 'http://api.flattr.com/js/0.5.0/load.js?mode=auto';
21         
22         t.parentNode.insertBefore(s, t);
23     })();
24 /* ]]> */
25 </script>
26 </head>
27
28 <body bgcolor="#FFFFFF" text="#000000" link="#0000ee" vlink="#551a8b" style="padding: 0em 3em; text-align: justify">
29
30    <table width="100%" cellspacing="0" cellpadding="0">
31      <tr>
32        <td width="25%" align="left" valign="top">
33          <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://booh.org/"></a>
34        </td>
35        <td width="50%" align="center">
36          <img src="images/logo.png" alt="booh logo"/>
37        </td>
38        <td width="25%" align="right" valign="top">
39                                      <img src="images/en.png" alt="this page is in english"/>
40          <a href="advanced.fr.html"><img src="images/fr.png" alt="cette page en fran├žais"/></a>
41        </td>
42      </tr>
43    </table>
44
45    <h1 align="center">Booh</h1>
46
47    <p align="center">[ <a href="index.html">home</a> |
48                        <a href="themes/cardu/">example web-album</a> |
49                        <a href="video-demo.html">video demo</a> |
50                        <a href="tutorial.html">tutorial</a> |
51                        advanced |
52                        <a href="discuss.html">discuss</a> |
53                        <a href="download.html">download</a> ]</p>
54
55    <a name="performance"><h2>Performance - web-album creation</h2></a>
56
57    <p>To improve performance when creating thumbnails - a long and
58    painful step when creating web-albums - Booh takes advantage of
59    multi-processor machines.</p>
60
61    <p>The following figures were obtained on a Pentium-4
62    hyperthreading 2.8 GHz with Linux 2.6.6 SMP 4G (note that this
63    is by no mean a real multi-processor machine) with the same
64    bunch of thumbnails to create:</p>
65
66 <pre>
67     Regular    2:10.81 elapsed
68     --mproc 2  2:01.44 elapsed
69 </pre>
70
71    <p>This is not bad, but clearly shows that an hyperthreading
72    machine is not a real SMP machine by far! Now let's try with a
73    6-way Pentium-3 Cascades 700 MHz:</p>
74
75 <pre>
76     Regular    2:58.07 elapsed
77     --mproc 2  1:32.48 elapsed
78     --mproc 3  1:03.34 elapsed
79     --mproc 4  0:49.12 elapsed
80     --mproc 5  0:40.86 elapsed
81     --mproc 6  0:39.03 elapsed  (I should have killed those useless apache processes!)
82 </pre>
83
84    <p>Now this multi-processor support Booh has is not a toy
85    feature.</p>
86
87    <p>More recent tests (not the same photos), on a Core i5
88    650 (dual core HT) 3.2 GHz with Linux 2.6.33.7 x86_64:</p>
89
90 <pre>
91     Regular    0:48.79 elapsed
92     --mproc 2  0:27.87 elapsed
93     --mproc 3  0:20.38 elapsed
94     --mproc 4  0:16.96 elapsed
95 </pre>
96
97
98
99    <a name="classifierperformance"><h2>Performance - <i>booh-classifier</i></h2></a>
100
101    <p>
102      A test has been conducted on a p4 2.8 GHz with 1G of memory
103      running GTK+ 2.12.9: loading 134 3456x2304 photos coming
104      from a Canon EOS 350D, worth a total of 396 MB. After all
105      the files are in the file system's cache, the time to show
106      a thumbnail for all the photos is measured with
107      <i>booh-classifier</i> against other widely used programs:
108    </p>
109
110    <ul>
111      <li>booh-classifier 0.9.0: 18.9 seconds</li>
112      <li><a href="http://gthumb.sourceforge.net/">gthumb</a> 2.10.8: 22.5 seconds</li>
113      <li><a href="http://www.gnome.org/projects/eog/">eog</a> 2.22.0: 28 seconds</li>
114      <li><a href="http://www.konqueror.org/">konqueror</a> 3.5.9: 1
115      minute and 40 seconds (konqueror is apparently very slow for that
116      large photos, while it's reasonably fast for smaller photos)</li>
117    </ul>
118
119    <p>
120      Notice that also, gthumb and eog don't preload neighbourghood
121      photos (konqueror neither, but that's not applicable anyway); eog
122      is not capable of showing videos; and konqueror don't even show
123      portrait photos (containing the proper EXIF orientation)
124      correctly rotated - though I suspect it might be related to
125      something with the compilation or the configuration which I
126      wasn't able to locate.
127    </p>
128
129
130
131
132    <h2>Disk usage</h2>
133
134    <p>To reduce disk space usage, web-albums including the original
135    images use hard links between the original image in the source
136    directory and the destination directory. Of course, this requires
137    you use a single disk and partition for the source and destination
138    directories; if this is not the case, the image is simply copied
139    (that's fully transparent to the end-user).</p>
140
141
142
143
144    <h2>Architecture and data processing</h2>
145
146    <p>
147      The web-album generating is fully done by a CLI program called
148      <tt>booh-backend</tt>. It generates and/or manipulates an XML
149      file. Editing is done by a graphical front-end (using GTK+) called
150      <tt>booh</tt>. Therefore, one can generate a web-album with no
151      editing (and actually no human input)
152      <a href="tutorial.html#fastest">only with the CLI program</a> if
153      necessary, or opposedly, only use the graphical program if so
154      enclined (which is the easiest and recommended way). The use of
155      the XML file in between allows for easy "scripting" or
156      "extension" with any XML processing tool if needed. The XML file
157      has a straightforward DTD and actually comprises a tree of
158      elements similar to the filesystem tree of the web-album.
159    </p>
160
161
162
163    <h2>Internals</h2>
164
165    <p>The web-album generated by Booh makes heavy use of javascript in
166    order to be able to perform clever preloading of next/previous
167    images, and to show all images within a single HTML page (saves a
168    download and prevent from changing your scrolling position in the
169    browser). It should work fine with the broken insecure dominant
170    web-browser, but it has been developed using Galeon. Also, notice
171    that the generated album is perfectly viewable without javascript
172    (specific HTML pages are generated for that matter), hence
173    javascript is not mandatory to browse the albums (a browser with
174    javascript disabled will still be able to browse the albums).</p>
175
176    <p>The default theme, 'simple', has been written to be simple,
177    slick and could probably look better (submissions welcome). It has
178    several sizes of thumbnails and fullscreens, carefully crafted to
179    fit the most out of 800x600, 1024x748, 1280x1024, 1400x1050 and
180    1600x1200 displays (you can select the list of sizes you want for
181    your web-albums - then, when users browse the albums, a javascript
182    autodetection of the best size to fit the actual browser window
183    size is used). People interested in HTML/CSS are welcome to submit
184    new themes - check out the file THEMES in the tarball for
185    documentation about it.</p>
186
187    <p>If you want to create a new theme, or make local modifications
188    to a theme, just have them in your <tt>~/.booh-themes</tt>
189    directory (Booh version 0.9.2 and more recent). For example, to
190    hack off 'dark':
191    </p>
192
193 <pre>
194 # mkdir ~/.booh-themes
195 # cp -a /usr/share/booh/themes/dark ~/.booh-themes/mine
196 </pre>
197
198    <p>Use a different name than original theme names (here I picked
199    the dummy name 'mine', choose a better one).</p>
200
201    <p>
202      Currently available themes: <a href="http://booh.org/themes/simple/">simple</a> -
203                      <a href="http://booh.org/themes/cardu/">cardu</a> -
204                      <a href="http://booh.org/themes/dark/">dark</a> -
205                      <a href="http://booh.org/themes/sbs/">sbs</a>.
206    </p>
207
208
209
210
211    <h2>Translations</h2>
212
213    <p>
214      Booh has full internationalization support. Additionally, Booh
215      can generate web-albums with multi-languages navigation, so
216      that the web-albums automatically adapt to the language of the
217      user who's browsing! If missing, please contribute a
218      translation to your native language! Check the directory 'po'
219      in the download archive.
220    </p>
221
222    <table cellspacing="0" cellpadding="0">
223    <tr>
224      <td>
225        Booh is already available in french, german, japanese and
226        esperanto (beside english, of course).
227      </td>
228      <td align="right" width="1%">
229        <nobr>
230          <img src="images/en.png" alt="english flag"/>
231          <img src="images/fr.png" alt="french flag"/>
232          <img src="images/de.png" alt="german flag"/>
233          <img src="images/ja.png" alt="japanese flag"/>
234          <img src="images/eo.png" alt="esperanto flag"/>
235        </nobr>
236      </td>
237    </tr>
238    </table>
239
240
241 <p align="right"><font size="-1">Wed Jun  1 17:53:58 2011</font></p>
242
243 </body>
244
245 </html>