<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5900800470959220604</id><updated>2011-11-28T02:19:51.812+01:00</updated><category term='tech'/><category term='Microsoft'/><category term='javascript'/><category term='login'/><category term='cloud computing'/><category term='documentation'/><category term='bugs'/><category term='merry christmas'/><category term='gjs'/><category term='boo'/><category term='onBI'/><category term='postfix'/><category term='ssh'/><category term='hacking'/><category term='wine'/><category term='JS'/><category term='business intelligence'/><category term='sendmail'/><category term='compile'/><category term='happy new year'/><category term='parseint'/><category term='bi'/><category term='visual web developer 2005'/><category term='Open Source'/><category term='gnome'/><category term='gutsy'/><category term='cracking'/><category term='mail server'/><category term='alert'/><category term='WEB 2.0'/><category term='zimbra'/><category term='DRM'/><category term='bacula'/><category term='mono 2'/><category term='asp.net'/><category term='gcc'/><category term='asp.net 2.0'/><category term='ubuntu'/><category term='mono'/><category term='cron'/><category term='vchanger'/><category term='seed'/><category term='printers'/><category term='monodevelop'/><category term='google'/><category term='backup'/><title type='text'>Simone 2.0</title><subtitle type='html'>Auto privacy's infringement</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-3435763192853013753</id><published>2009-06-29T20:00:00.000+02:00</published><updated>2009-06-30T11:13:56.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>flaming Mono war</title><content type='html'>These days it seems that the 'flaming Mono war' has raised to a new DEFCON level. For me, I think that it's silly to avoid this very good framework.&lt;br /&gt;Anyway, it's also good to discuss it and go deep into legal diatribes... if they remains polite.&lt;br /&gt;I had read thousands of words(yes, sometimes good and honest) against the framework, but today I've finally read this excellent post titled &lt;a href="http://www2.apebox.org/wordpress/rants/124/"&gt;Here we go again – why Mono doesn’t suck&lt;/a&gt;.&lt;br /&gt;I can only suggest you to read it &lt;a href="http://www2.apebox.org/wordpress/rants/124/"&gt;too, now&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-3435763192853013753?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www2.apebox.org/wordpress/rants/124/' title='flaming Mono war'/><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/3435763192853013753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=3435763192853013753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/3435763192853013753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/3435763192853013753'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2009/06/flaming-mono-war.html' title='flaming Mono war'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-4259813041610277037</id><published>2009-04-27T20:00:00.003+02:00</published><updated>2009-04-27T20:00:00.202+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Cloud computing, the next bursting bubble?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__YiscTiYDWw/SfW63l1KvVI/AAAAAAAAAE4/NisUJ6j1fdM/s1600-h/Pacifier_051021124741118_wideweb__300x375.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 160px;" src="http://4.bp.blogspot.com/__YiscTiYDWw/SfW63l1KvVI/AAAAAAAAAE4/NisUJ6j1fdM/s320/Pacifier_051021124741118_wideweb__300x375.jpg" alt="" id="BLOGGER_PHOTO_ID_5329371198273535314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud computing&lt;/a&gt;: I've begun to follow this new market wave a few months ago. I was skeptical concerning all of the big characters announcements shouted out by many 'big' companies. Now that I know a bit more about what it means, well... I'm more skeptical than nine months ago. It had been a fast labor and it seems to me that this child is an old well-known guy: an old friend, with a pacifier within his teeth.&lt;br /&gt;Fortunately today I've discovered that I'm not the only one that has to see this terrific picture every time that somewhere in the world the terms 'cloud computing' are pronounced.&lt;br /&gt;Today I've read &lt;a href="http://www.maya.com/file_download/126/The%20Wrong%20Cloud.pdf"&gt;The Wrong Cloud&lt;/a&gt;, a good white paper from &lt;a href="http://www.maya.com/the-feed/the-wrong-cloud"&gt;MAYA&lt;/a&gt; about the bad sides of cloud computing. I can only suggest you to read it carefully: it could helps you to stay away from the chameleons, they are dangerous, they could burst!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-4259813041610277037?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.maya.com/the-feed/the-wrong-cloud' title='Cloud computing, the next bursting bubble?'/><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/4259813041610277037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=4259813041610277037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4259813041610277037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4259813041610277037'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2009/04/cloud-computing-next-bursting-bubble.html' title='Cloud computing, the next bursting bubble?'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__YiscTiYDWw/SfW63l1KvVI/AAAAAAAAAE4/NisUJ6j1fdM/s72-c/Pacifier_051021124741118_wideweb__300x375.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-8309549289271901308</id><published>2009-01-20T20:00:00.002+01:00</published><updated>2009-01-20T20:00:01.711+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='JS'/><category scheme='http://www.blogger.com/atom/ns#' term='seed'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='gjs'/><title type='text'>JavaScript for GNOME</title><content type='html'>As reported by &lt;a href="http://tech.slashdot.org/article.pl?sid=09%2F01%2F19%2F2350235"&gt;Slashdot&lt;/a&gt;, &lt;a href="http://live.gnome.org/Seed"&gt;Seed&lt;/a&gt; and &lt;a href="http://live.gnome.org/Gjs"&gt;Gjs&lt;/a&gt; are two new projects that try to provide support for building and extending Gnome applications with JavaScript.&lt;br /&gt;In this way, in the near future, those projects could take dozens of small applications and plugins into Gnome. A nice step towards.&lt;br /&gt;For more info read this &lt;a href="http://arstechnica.com/articles/paedia/javascript-gtk-bindings.ars"&gt;well written Seed tutorial&lt;/a&gt;.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-8309549289271901308?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/8309549289271901308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=8309549289271901308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8309549289271901308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8309549289271901308'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2009/01/javascript-for-gnome.html' title='JavaScript for GNOME'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-8158978118519620552</id><published>2008-12-23T18:00:00.000+01:00</published><updated>2008-12-23T18:00:01.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merry christmas'/><category scheme='http://www.blogger.com/atom/ns#' term='happy new year'/><title type='text'>Merry Christmas</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-family: verdana; font-weight: bold; color: rgb(153, 0, 0);"&gt;Christmas is coming, Santa is ready to go and the 2008 is older than before.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold; color: rgb(153, 0, 0);"&gt;I wish you a merry Christmas and a wonderful new year!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__YiscTiYDWw/SVDWkXN5QiI/AAAAAAAAAEA/VbxpMg5cNSs/s1600-h/70260-1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;" src="http://1.bp.blogspot.com/__YiscTiYDWw/SVDWkXN5QiI/AAAAAAAAAEA/VbxpMg5cNSs/s320/70260-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5282958283101520418" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-8158978118519620552?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/8158978118519620552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=8158978118519620552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8158978118519620552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8158978118519620552'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/12/merry-christmas.html' title='Merry Christmas'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__YiscTiYDWw/SVDWkXN5QiI/AAAAAAAAAEA/VbxpMg5cNSs/s72-c/70260-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-4595412794409981588</id><published>2008-12-17T20:00:00.004+01:00</published><updated>2008-12-17T20:00:00.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><title type='text'>Compiling Wine 0.9.*</title><content type='html'>Just a short note.&lt;br /&gt;If you have to compile oldest versions of Wine (0.9.49,0.9.50 and similar), you could encounter a compiler error in signal_i386.c.&lt;br /&gt;If gcc says that VIF_MASK and VIP_MASK are undefined, you can easily solve your problem by editing  signal_i386.c and adding the following two lines at the beginning  (next to the others define):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define VIF_MASK 0x00080000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define VIP_MASK 0x00100000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Put them, save it, and make again.&lt;br /&gt;If your are lucky (like me, of course), you'll end with your hot wine ready to use.&lt;br /&gt;That's all folks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-4595412794409981588?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/4595412794409981588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=4595412794409981588' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4595412794409981588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4595412794409981588'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/12/compiling-wine-09.html' title='Compiling Wine 0.9.*'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-8998388978113338145</id><published>2008-12-02T21:00:00.003+01:00</published><updated>2008-12-02T21:00:01.088+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mono 2'/><category scheme='http://www.blogger.com/atom/ns#' term='visual web developer 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>ASP.NET 2 with Mono, a success story</title><content type='html'>Sorry for the long delay from the last post, but I've been very busy doing my first commercial web site. Not so complicated, only a reserved portal where customers and agents can control&lt;br /&gt;their situation by viewing invoices, orders and so on...&lt;br /&gt;It took me two weeks to have that portal ready, but now I can say that I'm almost satisfied.&lt;br /&gt;&lt;br /&gt;Three weeks ago, after a lot of study on many frameworks (including &lt;a href="http://www.zope.org"&gt;Zope&lt;/a&gt; and &lt;a href="http://plone.org/"&gt;Plone&lt;/a&gt; of course), I've decided to take a look at ASP.NET. &lt;a href="http://www.mono-project.com/"&gt;Mono 2.0&lt;/a&gt; was released and now it supports ASP.NET 2, so ASP.NET 2 could be an open choice.&lt;br /&gt;Unfortunately, the &lt;a href="http://www.mono-project.com/"&gt;Mono website&lt;/a&gt; does not provide too much documentation so I've browsed the &lt;a href="http://www.asp.net/"&gt;Microsoft's web pages&lt;/a&gt; where I've found a lot of &lt;a href="http://www.asp.net/learn/"&gt;videos with good tutorials&lt;/a&gt; on many aspects of this framework. The next step was: ok, it seems to be the right choice, now, what system I have to use to develop? What IDE?&lt;br /&gt;&lt;a href="http://monodevelop.com/"&gt;MonoDevelop&lt;/a&gt; does not provide a visual designer for asp pages: bad point. Finally I've opted for a mixed solution using the free Microsoft IDE called &lt;a href="http://www.microsoft.com/express/2005/"&gt;Visual Web Developer 2005&lt;/a&gt;&lt;br /&gt;(no, not the &lt;a href="http://www.microsoft.com/express/vwd/"&gt;2008&lt;/a&gt; one, because it supports .NET 3.5, which isn't officially supported by Mono: first stages, first experience, my little brain fiend suggested me to reduce troubles with an older IDE ).&lt;br /&gt;After viewing a dozen of video tutorials I've installed Visual Web Developer 2005 and opened many sample projects downloaded from the ASP.NET site.&lt;br /&gt;&lt;br /&gt;Two weeks later I've finished my first web site using this technique:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Develop on Windows with Visual Web Developer 2005.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Test it immediately with Mono (installing the Mono framework on the same Windows machine).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Deploy the whole thing on a Debian test server where I can see it in action with a real Apache web server environment.&lt;/li&gt;&lt;/ol&gt;Now I can confirm that this is a good solution that let you rapidly write good quality websites: ASP.NET is a well done framework and you can finish with a structured project that works in an open source environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-8998388978113338145?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/8998388978113338145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=8998388978113338145' title='105 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8998388978113338145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8998388978113338145'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/12/aspnet-2-with-mono-success-story.html' title='ASP.NET 2 with Mono, a success story'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>105</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-4925155101674635577</id><published>2008-10-07T20:00:00.001+02:00</published><updated>2008-10-07T20:00:01.065+02:00</updated><title type='text'>Mounting a remote folder with ssh</title><content type='html'>Mounting a remote folder via ssh is not simple and clear as it should be, so I wrote down the main points to get work the whole thing.&lt;br /&gt;- install sshfs ( with debian/ubuntu: &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;apt-get install sshfs&lt;/span&gt;&lt;/span&gt; )&lt;br /&gt;- add the user that will do the mount to the fuse group ( ex: '&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;fuse:x:106:simone&lt;/span&gt;&lt;/span&gt;' in /etc/group )&lt;br /&gt;- create the folder where you want to mount (ex: &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;mkdir /mnt/ssh_folder&lt;/span&gt;&lt;/span&gt; )&lt;br /&gt;- remember to set correct permissions to the folder you've created&lt;br /&gt;- mount the remote folder using sshfs ( ex:&lt;span style=";font-family:courier new;font-size:85%;"  &gt; sshfs root@10.1.1.1:/var/opt/shared /mnt/ssh_folder -o allow_other&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;In order to have a permanent connection you can use fstab:&lt;br /&gt;- Add the ssh key of your user to the remote machine, in order to remove password request during the connection. The key must be generated with ssh-keygen and the id_rsa.pub file (normally located in the ~/.ssh/ folder) must be copied to the remote machine and added under the home dir of the remote user used for the connection: &lt;span style="font-family:courier new;"&gt;~/.ssh/authorized_keys&lt;/span&gt; ( ex: '&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;cat id_rsa.pub &gt;&gt; /home/john/.ssh/authorized_keys&lt;/span&gt;&lt;/span&gt;' if you connect to the remote machine with john@machine )&lt;br /&gt;- Add a new line to fstab, for example:&lt;br /&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sshfs#root@10.1.1.1:/var/opt/shared /mnt/ssh_folder fuse defaults,allow_other 0 0&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;You can try fstab without restarting using '&lt;span style="font-family:courier new;"&gt;mount -a&lt;/span&gt;'&lt;br /&gt;&lt;br /&gt;That's all folks! ... maybe...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-4925155101674635577?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/4925155101674635577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=4925155101674635577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4925155101674635577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4925155101674635577'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/10/mounting-remote-folder-with-ssh.html' title='Mounting a remote folder with ssh'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-7301867312655417719</id><published>2008-09-18T20:00:00.000+02:00</published><updated>2008-09-18T20:00:01.629+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='alert'/><title type='text'>Log ssh accesses</title><content type='html'>After that our mail server was hacked I've worked in order to increase security and controls of all our public servers.&lt;br /&gt;One of the ideas that popped into my head was an alert that could notifies me every time someone successfully login into a public server. Searching the web I'd found a useful idea to put a line in bashrc that sends an email every time someone opens a session.&lt;br /&gt;I've improved that line a bit and the result is a script that reads from an external file the patterns of addresses for which not to send emails (such as the IP of your desktop, for example).&lt;br /&gt;&lt;br /&gt;The script is something like that:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#!/bin/sh&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# Send login alert&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;#&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# This script is useful to send an alert email when someone log in with&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# the monitored user&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# Remember to alias the root account to a valid mail box&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;#&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# Thinked by Simone Tregnago (simonetregnago@grivaonline.com)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#this file provides the patterns of hosts for whic&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;h you don't want to send messages&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;acl_patterns="./acl_patterns"&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;whologged=$(who -m | cut -d"(" -f2 | cut -d")" -f1)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;if [ -z "$(echo $whologged | grep -f $acl_patterns )" ]; then&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;(echo "ALERT - Access to "$(hostname -f)" on:" $(date);echo;echo "who output:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;";echo $(who -T)) | mail -s "Subject: Alert: access from "$whologged root&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;The acl_patterns is the file that contains the patterns parsed by grep. If the pattern matches the script exits without the alert.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;myadress.com&lt;br /&gt;"^10.1"&lt;br /&gt;&lt;/span&gt;will match for accesses made from myaddress.com or from ip under 10.1.x.x , so it doesn't sends alerts for this origins.&lt;br /&gt;&lt;br /&gt;With those two files, following those simple steps, you can have emails alerts for every user:&lt;br /&gt;- Put the script and the patterns files in a place accessible by the user that you want to monitor&lt;br /&gt;- Set the script as executable&lt;br /&gt;- Add a line in the .bashrc of the monitored user. This line will call the script, nothing else:&lt;br /&gt;for example: ./sendalert.sh&lt;br /&gt;- Be sure that emails sent to root are forwarded to a valid user&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-7301867312655417719?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/7301867312655417719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=7301867312655417719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/7301867312655417719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/7301867312655417719'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/09/log-ssh-accesses.html' title='Log ssh accesses'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-5356879897497076099</id><published>2008-09-08T20:00:00.003+02:00</published><updated>2009-01-23T12:17:11.868+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vchanger'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><title type='text'>Bacula with USB disks, vchanger altered</title><content type='html'>Last month I've successfully implemented a new backup solution using &lt;a href="http://www.bacula.org/"&gt;Bacula.&lt;/a&gt; The old backup consist in a combination of Linux and Windows scripts; we had abandoned tapes two years ago, in favor of USB removable disks.&lt;br /&gt;Now I've wanted to re implement everything using &lt;a href="http://www.bacula.org/"&gt;Bacula&lt;/a&gt; for all the backup process: starting from db dump scripts and similar, ending with the writing of the backup on the USB disks. I've also wanted Bacula to alert someone every day, in order to regularly rotate disks with daily frequency.&lt;br /&gt;&lt;a href="http://www.bacula.org/"&gt;Bacula&lt;/a&gt; doesn't natively support a system to cycle USB disks, which is a lack when removable disks with big capacities are cheap and they're lowering their price every day. Anyway: it can use tapes autochangers, and someone started to write fake scripts that uses USB disks as tapes , simulating the autochanger.&lt;br /&gt;It was difficult to find a script that works well: after a few study and research I've found one written by Josh Fisher in 2006. It seemed to me that was the best one so I'd started to implement it. Unfortunately I've found something wrong with this script, so I've altered 2 or 3 lines of code in order to make it work.&lt;br /&gt;I've started to test it two weeks ago and it seems to works very well.&lt;br /&gt;Below is the altered script, you can find other useful informations with the Joe's howto posted &lt;a href="http://sourceforge.net/docman/display_doc.php?docid=47704&amp;amp;group_id=50727"&gt;there.&lt;/a&gt;&lt;br /&gt;Enjoy:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;#  Bacula interface to virtual autochanger using removable disk drives&lt;br /&gt;#&lt;br /&gt;#  Based (somewhat) on the "disk-changer" script from bacula 1.39.26&lt;br /&gt;#&lt;br /&gt;#  Vchanger is a Bacula autochanger script that emulates a conventional&lt;br /&gt;#  magazine-based tape library device using removable disk drives.&lt;br /&gt;#  Partitions on the removable drives are used as virtual magazines,&lt;br /&gt;#  where each "magazine" contains the same number of virtual slots. Each&lt;br /&gt;#  "slot" holds one virtual tape, where a "tape" is a regular file that&lt;br /&gt;#  Bacula treats as a "Device Type = File" volume.&lt;br /&gt;#&lt;br /&gt;#  This script will be invoked by Bacula using the Bacula Autochanger&lt;br /&gt;#  Interface and will be passed the following arguments:&lt;br /&gt;#&lt;br /&gt;#  vchanger "changer-device" "command" "slot" "archive-device" "drive-index"&lt;br /&gt;#                 $1            $2       $3          #4             #5&lt;br /&gt;#&lt;br /&gt;#  See the Bacula documentation for Autochanger Interface details&lt;br /&gt;#&lt;br /&gt;#  Copyright (C) 2006 Josh Fisher&lt;br /&gt;#&lt;br /&gt;#  Modified by Simone Tregnago on 07-20-2008&lt;br /&gt;#&lt;br /&gt;#  Permission to use, copy, modify, distribute, and sell this software&lt;br /&gt;#  and its documentation for any purpose is hereby granted without fee,&lt;br /&gt;#  provided that the above copyright notice appears in all copies.  This&lt;br /&gt;#  software is provided "as is" without express or implied warranty.&lt;br /&gt;#&lt;br /&gt;#  This software is distributed in the hope that it will be useful,&lt;br /&gt;#  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# log whats done&lt;br /&gt;#&lt;br /&gt;dbgfile="/var/bacula/vchanger.log"&lt;br /&gt;# to turn on logging, uncomment the following line&lt;br /&gt;touch $dbgfile&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Write to a log file&lt;br /&gt;#    To log debugging info, create file /var/bacula/vchanger.log&lt;br /&gt;#    with write permission for bacula-sd user. To stop logging,&lt;br /&gt;#    delete file /var/bacula/vchanger.log&lt;br /&gt;#&lt;br /&gt;function debug()&lt;br /&gt;{&lt;br /&gt;if test -e $dbgfile; then&lt;br /&gt;echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" &gt;&gt; $dbgfile&lt;br /&gt;fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Return length of string $1&lt;br /&gt;#&lt;br /&gt;function strlen ()&lt;br /&gt;{&lt;br /&gt;expr length $1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Prepend zeros to $1 and return a string that is $2 characters long&lt;br /&gt;#&lt;br /&gt;function mklen ()&lt;br /&gt;{&lt;br /&gt;o1=$1&lt;br /&gt;while [ `eval strlen ${o1}` -lt ${2} ]; do&lt;br /&gt;o1="0${o1}"&lt;br /&gt;done&lt;br /&gt;echo $o1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Initialize autochanger's state directory if not already initialized&lt;br /&gt;#&lt;br /&gt;function init_statedir() {&lt;br /&gt;debug "Initializing $statedir"&lt;br /&gt;# Create state dir if needed&lt;br /&gt;if [ ! -d "${statedir}" ]; then&lt;br /&gt;mkdir "${statedir}"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Could not create ${statedir}"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;chmod 770 "${statedir}"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo "Could not chmod ${statedir}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;# Create nextmag file to hold max magazine index used&lt;br /&gt;if [ ! -f "${statedir}/nextmag" ]; then&lt;br /&gt;echo 1 &gt;"${statedir}/nextmag"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Could not create ${statedir}/nextmag"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;chmod 660 "${statedir}/nextmag"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;echo "Could not chmod ${statedir}/nextmag"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;# Check nextmag value&lt;br /&gt;nextmag=`cat "${statedir}/nextmag"`&lt;br /&gt;if [ $? -ne 0 -o "${nextmag}" == "" -o $nextmag -lt 1 -o $nextmag -gt 99 ]; then&lt;br /&gt;echo "${statedir}/nextmag has invalid value"&lt;br /&gt;return 1&lt;br /&gt;fi&lt;br /&gt;# Create 'loaded' files for each virtual drive that hold the slot&lt;br /&gt;# number currently loaded in that 'drive'&lt;br /&gt;i=0&lt;br /&gt;while [ $i -le $maxdrive ]; do&lt;br /&gt;if [ ! -f "${statedir}/loaded${i}" ]; then&lt;br /&gt;  echo "0" 2&gt;/dev/null &gt;"${statedir}/loaded${i}"&lt;br /&gt;  if [ $? -ne 0 ]; then&lt;br /&gt;     echo "Could not create ${statedir}/loaded${i}"&lt;br /&gt;     exit 1&lt;br /&gt;  fi&lt;br /&gt;  chmod 660 "${statedir}/loaded${i}"&lt;br /&gt;  if [ $? -ne 0 ]; then&lt;br /&gt;     echo "Could not chmod ${statedir}/loaded${i}"&lt;br /&gt;     exit 1&lt;br /&gt;  fi&lt;br /&gt;fi&lt;br /&gt;i=`expr ${i} + 1`&lt;br /&gt;done&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Initialize magazine if not already initialized&lt;br /&gt;#&lt;br /&gt;function init_magazine() {&lt;br /&gt;debug "Initializing magazine"&lt;br /&gt;# Get max magazine index that has been used&lt;br /&gt;nextmag=`cat "${statedir}/nextmag"`&lt;br /&gt;if [ $? -ne 0 -o "${nextmag}" == "" ]; then&lt;br /&gt;echo "Failed to read ${statedir}/nextmag"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;# Check magazine for existing index&lt;br /&gt;if [ -f "${mountpoint}/index" ]; then&lt;br /&gt;# retrieve existing magazine index&lt;br /&gt;mi=`cat "${mountpoint}/index"`&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Failed to read ${mountpoint}/index"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;# must be 1-99&lt;br /&gt;if [ $mi -lt 1 -o $mi -gt 99 ]; then&lt;br /&gt;  echo "Magazine has invalid index ${mi}"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;else&lt;br /&gt;# new magazine, so assign it the next avail index&lt;br /&gt;mi=`expr ${nextmag} + 1`&lt;br /&gt;if [ $mi -lt 0 -o $mi -gt 99 ]; then&lt;br /&gt;  echo "Max magazines exceeded"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;echo $mi 2&gt;/dev/null &gt;"${mountpoint}/index"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Failed to write ${mountpoint}/index"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;# make sure max index used is up to date&lt;br /&gt;if [ $mi -gt $nextmag ]; then&lt;br /&gt;echo $mi 2&gt;/dev/null &gt;"${statedir}/nextmag"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Failed to update ${statedir}/nextmag"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;# make magazine index 2 digits&lt;br /&gt;magindex=`eval mklen ${mi} 2`&lt;br /&gt;# setup slot files (ie. virtual tapes)&lt;br /&gt;i=1&lt;br /&gt;while [ $i -le $magslots ]; do&lt;br /&gt;s=`eval mklen ${i} 3`&lt;br /&gt;f="${mountpoint}/m${magindex}s${s}"&lt;br /&gt;if [ ! -f "${f}" ]; then&lt;br /&gt;  touch "${f}" 2&gt;/dev/null &gt;/dev/null&lt;br /&gt;  if [ $? -ne 0 ]; then&lt;br /&gt;     echo "Failed to create ${f}"&lt;br /&gt;     exit 1&lt;br /&gt;  fi&lt;br /&gt;fi&lt;br /&gt;i=`expr ${i} + 1`&lt;br /&gt;done&lt;br /&gt;return 0&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# check parameter count on commandline&lt;br /&gt;#&lt;br /&gt;function check_parm_count() {&lt;br /&gt;pCount=$1&lt;br /&gt;pCountNeed=$2&lt;br /&gt;if test $pCount -lt $pCountNeed; then&lt;br /&gt;echo "usage: vchanger ctl-device command [slot archive-device drive-index]"&lt;br /&gt;echo "    Insufficient number of arguments arguments given."&lt;br /&gt;if test $pCount -lt 2; then&lt;br /&gt; echo "  Mimimum usage is first two arguments ..."&lt;br /&gt;else&lt;br /&gt; echo "  Command expected $pCountNeed arguments"&lt;br /&gt;fi&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Setup arguments&lt;br /&gt;ctl=$1&lt;br /&gt;cmd="$2"&lt;br /&gt;slot=$3&lt;br /&gt;device=$4&lt;br /&gt;drive=$5&lt;br /&gt;&lt;br /&gt;# Setup default config values&lt;br /&gt;magslots=10&lt;br /&gt;maxdrive=0&lt;br /&gt;statedir="/var/bacula/vchanger"&lt;br /&gt;mountpoint=&lt;br /&gt;&lt;br /&gt;# Pull in conf file&lt;br /&gt;if [ -f $ctl ]; then&lt;br /&gt;. $ctl&lt;br /&gt;else&lt;br /&gt;echo "Config file ${ctl} not found"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# check for required config values&lt;br /&gt;if [ "${mountpoint}" == "" ]; then&lt;br /&gt;echo "Required variable 'mountpoint' not defined in ${ctl}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;if [ "${magslots}" == "" -o $magslots -lt 1 -o $magslots -gt 999 ]; then&lt;br /&gt;echo "Ivalid value for 'magslots' in ${ctl}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;if [ "${maxdrive}" == "" -o $maxdrive -lt 0 -o $maxdrive -ge $magslots ]; then&lt;br /&gt;echo "Invalid value for 'maxdrive' in ${ctl}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;if [ "${statedir}" == "" ]; then&lt;br /&gt;echo "Invalid value for 'statedir' in ${ctl}"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Initialize state directory for this autochanger&lt;br /&gt;init_statedir&lt;br /&gt;&lt;br /&gt;# Check for special cases where only 2 arguments are needed,&lt;br /&gt;#  all others are a minimum of 5&lt;br /&gt;#&lt;br /&gt;case $2 in&lt;br /&gt;list)&lt;br /&gt;check_parm_count $# 2&lt;br /&gt;;;&lt;br /&gt;slots)&lt;br /&gt;check_parm_count $# 2&lt;br /&gt;;;&lt;br /&gt;*)&lt;br /&gt;check_parm_count $# 5&lt;br /&gt;if [ $drive -gt $maxdrive ]; then&lt;br /&gt;echo "Drive ($drive) out of range (0-${maxdrive})"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;if [ $slot -gt $magslots ]; then&lt;br /&gt;echo "Slot ($slot) out of range (1-$magslots)"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;debug "Parms: $ctl $cmd $slot $device $drive"&lt;br /&gt;&lt;br /&gt;case $cmd in&lt;br /&gt;unload)&lt;br /&gt;debug "Doing vchanger -f $ctl unload $slot $device $drive"&lt;br /&gt;ld=`cat "${statedir}/loaded${drive}"`&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Failed to read ${statedir}/loaded${drive}"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;if [ $slot -eq $ld ]; then&lt;br /&gt;  echo "0" &gt;"${statedir}/loaded${drive}"&lt;br /&gt;  if [ $? -ne 0 ]; then&lt;br /&gt;     echo "Failed to write ${statedir}/loaded${drive}"&lt;br /&gt;     exit 1&lt;br /&gt;  fi&lt;br /&gt;  unlink "${device}" 2&gt;/dev/null &gt;/dev/null&lt;br /&gt;  exit 0&lt;br /&gt;fi&lt;br /&gt;if [ $ld -eq 0 ]; then&lt;br /&gt;  echo "Drive ${drive} Is Empty"&lt;br /&gt;else&lt;br /&gt;  echo "Storage Element ${slot} is Already Full"&lt;br /&gt;fi&lt;br /&gt;exit 1&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;load)&lt;br /&gt;debug "Doing vchanger $ctl load $slot $device $drive"&lt;br /&gt;ld=`cat "${statedir}/loaded${drive}"`&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Failed to read ${statedir}/loaded${drive}"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;if [ $ld -eq 0 ]; then&lt;br /&gt;  unlink "${device}" 2&gt;/dev/null &gt;/dev/null&lt;br /&gt;  # make sure slot is not loaded in another drive&lt;br /&gt;  i=0&lt;br /&gt;  while [ $i -le $maxdrive ]; do&lt;br /&gt;     if [ $i -ne $drive ]; then&lt;br /&gt;        ldi=`cat "${statedir}/loaded${i}"`&lt;br /&gt;        if [ $ldi -eq $slot ]; then&lt;br /&gt;           echo "Storage Element ${slot} Empty (loaded in drive ${i})"&lt;br /&gt;           exit 1&lt;br /&gt;        fi&lt;br /&gt;     fi&lt;br /&gt;     i=`expr ${i} + 1`&lt;br /&gt;  done&lt;br /&gt;  init_magazine&lt;br /&gt;  if [ $? -ne 0 ]; then&lt;br /&gt;     echo "Magazine Not Loaded"&lt;br /&gt;     exit 1&lt;br /&gt;  fi&lt;br /&gt;  s=`eval mklen ${slot} 3`&lt;br /&gt;  ln -s "${mountpoint}/m${magindex}s${s}" "${device}"&lt;br /&gt;  echo $slot &gt;"${statedir}/loaded${drive}"&lt;br /&gt;  exit 0&lt;br /&gt;else&lt;br /&gt;  echo "Drive ${drive} Full (Storage element ${ld} loaded)"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;list)&lt;br /&gt;debug "Doing vchanger -f $ctl -- to list volumes"&lt;br /&gt;init_magazine&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  echo "Magazine Not Loaded"&lt;br /&gt;  exit 1&lt;br /&gt;fi&lt;br /&gt;i=1&lt;br /&gt;while [ $i -le $magslots ]; do&lt;br /&gt;  s=`eval mklen ${i} 3`&lt;br /&gt;  echo "${i}:m${magindex}s${s}"&lt;br /&gt;  i=`expr ${i} + 1`&lt;br /&gt;done&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;loaded)&lt;br /&gt;debug "Doing vchanger -f $ctl $drive -- to find what is loaded"&lt;br /&gt;cat "${statedir}/loaded${drive}"&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;slots)&lt;br /&gt;debug "Doing vchanger -f $ctl -- to get count of slots"&lt;br /&gt;echo $magslots&lt;br /&gt;exit 0&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;# eof&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is the config of the 1st changer(vchanger1.conf):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;# /etc/bacula/vchanger1.conf&lt;br /&gt;baculasd="backup-sd"&lt;br /&gt;baculasd_user=bacula&lt;br /&gt;bconsole=/usr/bin/bconsole&lt;br /&gt;&lt;br /&gt;magslots=1&lt;br /&gt;maxdrive=0&lt;br /&gt;&lt;br /&gt;mountpoint=/mnt/vchanger1/magazine&lt;br /&gt;statedir=/var/bacula/vchanger1&lt;br /&gt;# eof&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;P.S.: remember to take care of file permissions, since Bacula needs to read them from its user; so I suggest to chown the USB disks and vchanger folder with user 'bacula' and group 'tape' (or whatever you use to run the bacula-sd daemon ). For example, considering the folder used in the config above, you could run:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;chown bacula:tape /mnt/vchanger1/magazine/ -R&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;and&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;span&gt;chown bacula:tape /var/bacula/vchanger1/ -R&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;You can download script and configuration files using the following links:&lt;br /&gt;&lt;a href="http://www.grivaonline.com/stuff/vchanger"&gt;vchanger&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.grivaonline.com/stuff/vchanger1.conf"&gt;vchanger1.conf&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-5356879897497076099?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/5356879897497076099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=5356879897497076099' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/5356879897497076099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/5356879897497076099'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/09/bacula-with-usb-disks-vchanger-altered.html' title='Bacula with USB disks, vchanger altered'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-7446460971855548491</id><published>2008-08-04T20:00:00.001+02:00</published><updated>2008-08-04T20:00:01.262+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='parseint'/><category scheme='http://www.blogger.com/atom/ns#' term='JS'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><title type='text'>Have you read the API docs? Really? Seriously?</title><content type='html'>This morning one of the JavaScript procedures that had run every night for a few months, clamorously failed.&lt;br /&gt;Why? It worked like a charm until today!&lt;br /&gt;Someone changed something? None.&lt;br /&gt;Has data changed in someway? Only the month, august instead of july.&lt;br /&gt;It took a long time before I was able to discover the mystery: I had used a JS API, a simple parseInt() function, without reading docs carefully: that  leaded me to a bad bug.&lt;br /&gt;If you use the javascript parseInt embedded function, you've to know that it takes two parameters: the first is the string to parse, the second is the radix. OK, if you reason like me you may think: if I don't provide the radix, which is an optional argument, the function implicitly convert using base 10, right? Then you make some try, maybe you will use a JS command line in order to try something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;parseInt("1")&lt;br /&gt;1&lt;br /&gt;parseInt("5")&lt;br /&gt;5&lt;br /&gt;parseInt("12")&lt;br /&gt;12&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ok, at this point you may think that you've understood how to use it. After that you can make some tests, some debugging, as I do. Then your procedure could work well for months, as mine did.&lt;br /&gt;Until now.&lt;br /&gt;What have I discovered, after dozens of minutes of debugging? After identifying that the problems was in the parseInt function I've found that parseInt("08") returns 0, while parseInt("07") returns 7.&lt;br /&gt;Without anymore thinking I googled the magic keywords and readed this FAQ's entry:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.faqts.com/knowledge_base/view.phtml/aid/8108"&gt;&lt;span style="font-style: italic;font-family:lucida grande;" &gt;Why parseInt(08) &amp;amp; parseInt(09) is showing the value 0 ?&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Arg! This article says that parseInt assumes the base from the content of the string. If the string contains a leading '0' character, then parseInt identify the value as octal and do the relative conversion! That means that, in octal, converting '07' returns 7, but converting '08' or '09' doesn't mean anything in octal, so the function returns 0.&lt;br /&gt;Without considerations of what the Javascript's architects had smoked when they had designed the APIs, I've learned another big point: read the docs carefully, always! Even if it seems that the things works, take time to study carefully if you want to write solid software.&lt;br /&gt;OK Javascript guys, I've learned the lesson! Now you can return to write less cryptic functions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-7446460971855548491?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/7446460971855548491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=7446460971855548491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/7446460971855548491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/7446460971855548491'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/08/have-you-read-api-docs-really-seriously.html' title='Have you read the API docs? Really? Seriously?'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-4455790393109160666</id><published>2008-07-31T20:00:00.004+02:00</published><updated>2008-08-04T17:08:29.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='cracking'/><category scheme='http://www.blogger.com/atom/ns#' term='mail server'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>Mail server... hacked!</title><content type='html'>Monday morning my colleagues have found the mail server broken. When I've arrived at the office they've had already restored the situation by restarting the server from the console. Something's broken the sockets of the networking of the OS. Strange... very strange for a Linux kernel.&lt;br /&gt;I've started my inspections reading the logs, obviously. Reading and reading, getting back line after line, I've found the time when the sockets got broken: I was horrified reading that someone, at the same time, two minutes before, logged in via ssh with the zimbra user (a program's user, that normally don't have any password, in order to disable remote ssh logins ).&lt;br /&gt;Deep inspection of access logs reported that someone has used this user to login remotely, for a month or two. That was very bad. The IP used for the login changed every time, but the class was the same: all the IP's was pulled from the pool of the Romtelecom company, a rumanian company.&lt;br /&gt;That was a very stupid security flaw: someone of us putted a too simple password for the zimbra user during a test and after the tests he forgotten to remove it.&lt;br /&gt;The result was that a simple scanner was able to discover the too short password.&lt;br /&gt;The next question was: what the hell does the hacker with my mail server?&lt;br /&gt;I've found the answer in the /var/tmp directory: the only one opened for writing to all users. Our bad guy used this folder as a place to store, download and compile various scanner/knocking softwares, that was done in order to use our email server as a base for scanning very large set of ip's classes.&lt;br /&gt;Our bad guy doesn't have any other interest, so, in order to hide his presence, he hadn't touched anything else: in this way he could perform his tasks for days, weeks... until he made the bad step that broken the sockets.&lt;br /&gt;He was ingenuous too, and he doesn't removed the history, he never cleared anything, so now I can reconstruct everything: what was installed, what was his activities, what sites he used to download software: everything. I don't have interests to continue my inspections, but If I would... especially helped with a claim presented to the italian's police... I could easily follow him, and maybe one or two of the groups behind that.&lt;br /&gt;I will report some of the software he downloaded, useful if someone want to study a little:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;l3iliboi.hub.io/nonmin.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;mafiot.clan.io/pass.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;personales.ya.com/q1w2/nonmin.tgz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;personales.ya.com/q1w2/nonmin.tgz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;mafiot.clan.io/webmin.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://www.transfer.ro/storage/staykuS-f953a.tar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://www.transfer.ro/storage/VIP-c2a6a.tgz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://nasa-undernet.ucoz.org/screen.tgz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://Linux-Help.clan.su/download/2008.TGZ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;http://&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;w.wtf.la/xpl/26roott&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://www.transfer.ro/storage/FidoScan-3fcb0.tgz&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you want to know something more, such as user and passwords lists, classes of scanned ip,&lt;br /&gt;or if you want the full programs, in order to study them: feel free to ask me.&lt;br /&gt;Oh, I've also wrote to the romanian telecommunication company. Here's their reply:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Thanks for Contacting Romtelecom's Abuse Team . Our customer will be notified .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Marius Nastase&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; AbuseTeam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; abuse@romtelecom.ro&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very pleased to see all this interest to stop eastern's cracking groups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-4455790393109160666?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/4455790393109160666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=4455790393109160666' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4455790393109160666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/4455790393109160666'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/07/mail-server-hacked.html' title='Mail server... hacked!'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-2805342905697099668</id><published>2008-07-02T21:00:00.001+02:00</published><updated>2008-08-04T17:08:09.267+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='cron'/><category scheme='http://www.blogger.com/atom/ns#' term='postfix'/><title type='text'>sendmail from cron with Zimbra</title><content type='html'>Today I've faced the problem of sending admin emails from cron, in a machine with Zimbra installed. Zimbra comes with a Postfix installation so, using a 2nd Postfix( or exim, or sendmail) in parallel with the Zimbra's one, could lead you to dangerous places.&lt;br /&gt;With this in mind I've found a simple and fast way to send emails without the needs to touch any system configuration.&lt;br /&gt;Supposing that you want to launch the "ls /" command with the root user, you can write this line:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;span style="font-style: italic;"&gt;* * * * * root (echo "Subject: Cron &lt;root@zimbrams.com&gt; ls /";echo;ls /) | /opt/zimbra/postfix/sbin/sendmail admin@zimbrams.com&lt;/root@zimbrams.com&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Within round brackets there's the subject, followed by the output of the command, followed by the recipient.&lt;br /&gt;Simple, fast, secure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-2805342905697099668?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/2805342905697099668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=2805342905697099668' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/2805342905697099668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/2805342905697099668'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/07/sendmail-from-cron-with-zimbra.html' title='sendmail from cron with Zimbra'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-1479329656565936253</id><published>2008-05-09T11:40:00.004+02:00</published><updated>2008-08-04T17:09:04.873+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bi'/><category scheme='http://www.blogger.com/atom/ns#' term='business intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='onBI'/><title type='text'>onBI: multiple email recipients</title><content type='html'>Added multiple email addresses capability. In order to use it you have to separate each address by comma or semicolon.&lt;br /&gt;for ex: onbiadmin@myadm.com;onbivice@myadm.com&lt;br /&gt;Sources are released. I will release a new binary version as soon as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-1479329656565936253?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://onbi.sourceforge.net/' title='onBI: multiple email recipients'/><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/1479329656565936253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=1479329656565936253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/1479329656565936253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/1479329656565936253'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/05/onbi-multiple-email-recipients.html' title='onBI: multiple email recipients'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-498423868375006554</id><published>2008-05-08T21:49:00.001+02:00</published><updated>2008-05-09T11:47:38.681+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google search engine bug</title><content type='html'>Today I found a bug on the Google search engine, very easy to reproduce.&lt;br /&gt;1) Search "Simone Tregnago" with quotes. As you can see in the following picture the search will return 269 results: 10 pages.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/__YiscTiYDWw/SCMXVrz8HSI/AAAAAAAAACQ/Sow-w-yYph4/s1600-h/img1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/__YiscTiYDWw/SCMXVrz8HSI/AAAAAAAAACQ/Sow-w-yYph4/s400/img1.png" alt="" id="BLOGGER_PHOTO_ID_5198024056220949794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At the bottom of the page you can select any of the 10 pages. Ok, try to go to the 10th clicking directly on the number 10.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__YiscTiYDWw/SCMXWLz8HTI/AAAAAAAAACY/1Bs_-lJyCpk/s1600-h/img2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__YiscTiYDWw/SCMXWLz8HTI/AAAAAAAAACY/1Bs_-lJyCpk/s400/img2.png" alt="" id="BLOGGER_PHOTO_ID_5198024064810884402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ops! Google now showed the 5th page instead of the 10th, and actually is the last page! Also note that the results become 42 instead of 269!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/__YiscTiYDWw/SCMXWrz8HUI/AAAAAAAAACg/sWNHQWNx2fc/s1600-h/img3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/__YiscTiYDWw/SCMXWrz8HUI/AAAAAAAAACg/sWNHQWNx2fc/s400/img3.png" alt="" id="BLOGGER_PHOTO_ID_5198024073400819010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;That's a bug, sure. I have to immediately write to Google's guys :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-498423868375006554?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/498423868375006554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=498423868375006554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/498423868375006554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/498423868375006554'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/05/google-search-engine-bug.html' title='Google search engine bug'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/__YiscTiYDWw/SCMXVrz8HSI/AAAAAAAAACQ/Sow-w-yYph4/s72-c/img1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-8975321791328021767</id><published>2008-05-06T10:35:00.003+02:00</published><updated>2008-08-04T17:09:33.612+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='printers'/><category scheme='http://www.blogger.com/atom/ns#' term='gutsy'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Printers on Gutsy</title><content type='html'>If you have printers that doesn't come with a Linux driver, and Ubuntu doesn't provide you the correct driver to print with them, you can try the PPD alternative.&lt;br /&gt;I've successfully printed on a Ricoh Aficio SP C410 that doesn't print correctly with the drivers that comes with Ubuntu Gutsy.&lt;br /&gt;Ricoh doesn't supply the Linux driver but you can download the Windows Postscript driver installation. Launching the .exe with Wine will expand the installation files in a temporary folder. Here you can find the necessary .ppd files. Now, in Ubuntu, you can install your Ricoh printer with the Postscript .ppd files.&lt;br /&gt;This solution worked well for me and I think it could work for a large set of printers.&lt;br /&gt;Remember: Postscript is your friend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-8975321791328021767?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/8975321791328021767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=8975321791328021767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8975321791328021767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8975321791328021767'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/05/printers-on-gutsy.html' title='Printers on Gutsy'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-6408549359815529104</id><published>2008-05-06T09:58:00.008+02:00</published><updated>2008-08-04T17:10:01.051+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='boo'/><category scheme='http://www.blogger.com/atom/ns#' term='gutsy'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Monodevelop 0.19 + Boo, very well on Gutsy</title><content type='html'>I've successfully installed latest Monodevelop on Gutsy. It works very well, including Boo syntax highlighting and inline MonoDoc references ( pressing F1 key)&lt;br /&gt;The light comes up to me when I've found &lt;a href="http://bloggiver.blogspot.com/2008/02/monodevelop-debs-para-ubuntu-gutsy.html"&gt;this post&lt;/a&gt;&lt;br /&gt;So, from there I've downloaded the &lt;a href="http://www.savefile.com/files/1364889"&gt;mono-addins&lt;/a&gt; and &lt;a dragover="true" href="http://www.savefile.com/files/1382852"&gt;mono-0.19&lt;/a&gt; .deb packages.&lt;br /&gt;After that I've downloaded monodevelop-boo.rpm from &lt;a href="http://software.opensuse.org/search?p=1&amp;amp;baseproject=openSUSE%3A10.3&amp;amp;q=monodevelop"&gt;openSuse&lt;/a&gt; and converted it to a deb package.&lt;br /&gt;For monodoc i've downloaded the &lt;a href="http://www.backports.org/debian/pool/main/m/monodoc/monodoc_1.2.6-2%7Ebpo40+1_all.deb"&gt;monodoc_1.2.6-2~bpo40+1_all.deb&lt;/a&gt; backport package.&lt;br /&gt;Latest boo deb package was downloaded directly from the &lt;a href="http://groups.google.com/group/boolang/files/"&gt;official site&lt;/a&gt;, it works well.&lt;br /&gt;I've installed my 5, fresh, Mono and Boo packages and... voilà, I've got a perfect MonoDevelop installation, with a working Boo addin with syntax highlighting and a MonoDoc browser correctly linked with the IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-6408549359815529104?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/6408549359815529104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=6408549359815529104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/6408549359815529104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/6408549359815529104'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/05/monodevelop-019-boo-very-well-on-gutsy.html' title='Monodevelop 0.19 + Boo, very well on Gutsy'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-8891036585538895365</id><published>2008-03-28T20:01:00.000+01:00</published><updated>2008-05-09T11:45:33.792+02:00</updated><title type='text'>Giornalismo finito</title><content type='html'>Due giorni fa, qualche minuto prima di cena, ho guardato un telegiornale... ho impiegato due giorni a digerirlo. Chi fosse passato lì vicino avrebbe potuto osservarmi impietrito, mentre ascolto con orrore la trasmissione delle telefonate dei poveri operai della Thyssen nel momento della tragedia. Gente che grida, persone vere che &lt;span style="font-weight: bold;"&gt;stanno per morire&lt;/span&gt;.&lt;br /&gt;Il mio pensiero va subito a mia figlia, fortunatamente troppo piccola per capire certe cose. Poi mi figuro i poveri familiari degli operai di cui si udivano le voci, la loro sofferenza nell'udire i propri cari usati per puro &lt;span style="font-weight: bold;"&gt;business mediatico&lt;/span&gt;. Più tardi ho anche pensato che forse al loro posto non avrei mantenuto la loro dignità: sarei andato a Roma a sfasciare a sprangate l'ingresso della sede del telegiornale, sarei finito in carcere per questo.&lt;br /&gt;Il servizio termina, lasciandomi basito, scandalizzato e pensieroso. Il &lt;span style="font-weight: bold;"&gt;servo giornalista&lt;/span&gt; passa al servizio successivo, e ci mostra un bel primo piano di Carla Bruni &lt;span style="font-weight: bold;"&gt;completamente nuda.&lt;/span&gt; Bello, la vita dopo la morte. La bellezza dell'estetica di una&lt;span style="font-weight: bold;"&gt; donna curata&lt;/span&gt; dopo la bruttezza dei corpi di &lt;span style="font-weight: bold;"&gt;operai carbonizzati.&lt;/span&gt;&lt;br /&gt;Mi viene da vomitare. Spengo la televisione. Guardo mia figlia pensando che non voglio che lei tra qualche anno possa assistere ad un simile scempio della dignità dell'uomo. Il TG a casa mia &lt;span style="font-weight: bold;"&gt;non entrerà più&lt;/span&gt;. Le informazioni le trarremo da Internet, per quel che sarà possibile; insegnerò a mia figlia a fare altrettanto.&lt;br /&gt;Basta. Basta. Basta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-8891036585538895365?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/8891036585538895365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=8891036585538895365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8891036585538895365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/8891036585538895365'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/03/giornalismo-finito.html' title='Giornalismo finito'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-5848912685009875650</id><published>2008-03-03T20:50:00.000+01:00</published><updated>2008-05-09T11:45:52.088+02:00</updated><title type='text'>L'enunciato del giorno</title><content type='html'>A tutti i sostenitori degli inceneritori, ricordo un classico postulato della fisica meccanica, le cui origini risalgono ad 800 anni fa circa. Postulato dimostrato nel 18° secolo che però ancora oggi non viene considerato a dovere. Dovrebbe essere il punto di partenza per ogni discorso sugli inceneritori.&lt;br /&gt;&lt;a href="http://it.wikipedia.org/wiki/Legge_di_conservazione_della_massa"&gt;http://it.wikipedia.org/wiki/Legge_di_conservazione_della_massa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Coniglio di leggere la versione English, più discorsiva&lt;br /&gt;&lt;br /&gt;Se avete un amico giornalista, consigliategli di enunciarlo prima di ogni 'servizio' sui 'termovalorizzatori'. Probabilmente lo rimuoverebbero dall'ordine in una settimana.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-5848912685009875650?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/5848912685009875650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=5848912685009875650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/5848912685009875650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/5848912685009875650'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2008/03/lenunciato-del-giorno.html' title='L&apos;enunciato del giorno'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-3964620751531456477</id><published>2006-11-28T20:00:00.000+01:00</published><updated>2008-05-09T11:46:09.424+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DRM'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Libertà tecnologica</title><content type='html'>Si comincia a &lt;span style="text-decoration: underline;"&gt;sperimentare &lt;/span&gt;&lt;a href="http://www.programmazione.it/index.php?entity=eitem&amp;amp;idItem=34878"&gt;nella pratica&lt;/a&gt; la difficoltà di bypassare i sistemi di protezione di Windows Vista e Office 2007. E siamo appena agli inizi. Presto vedremo utenti che urlano rabbiosi di fronte ad un monitor che non ne vuol più sapere di visualizzare le immagini a causa dei nuovi sistemi di DRM. Utenti obbligati a pagare centinaia di Euro per scrivere due righe con il word processor e ascoltare un brano di musica neanche tanto bello.&lt;br /&gt;La mia speranza cresce, comincio ad intravedere all'orizzonte la possibilità di un cambio di mentalità. Sono speranzoso che finalmente, l'utente comune, parsimonioso, attento alle sue scarse finanze, cominci a guardarsi attorno. Che si ricordi di quelle parole sentite ed ignorate tempo addietro: Linux... Open Source... Thunderbird... Open Office...&lt;br /&gt;Chissà che non sia la volta giusta; che finalmente la spinta sia abbastanza forte da spingere anche l'utente comune, pigro per definizione, ad impegnarsi un po' di più, ad imparare qualcosa di nuovo, per poter acquistare un po' di libertà tecnologica ed economica.&lt;br /&gt;Io nel frattempo continuo ad incitare la Microsoft, li invito ad alzare i prezzi, a sviluppare sistemi di protezione sempre più difficili da violare.&lt;br /&gt;Come diceva quel detto? Più si stringe il pugno più sabbia esce dalle dita?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-3964620751531456477?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/3964620751531456477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=3964620751531456477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/3964620751531456477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/3964620751531456477'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2006/11/libert-tecnologica.html' title='Libertà tecnologica'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5900800470959220604.post-1187645252380732615</id><published>2006-11-21T08:00:00.000+01:00</published><updated>2006-11-21T12:59:26.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEB 2.0'/><title type='text'>Documenti online</title><content type='html'>E' da qualche tempo che utilizzo la gestione &lt;a href="http://docs.google.com/"&gt;documenti online&lt;/a&gt; di Google: l'ho trovata molto interessante, perciò ho cominciato a promuoverla tra gli amici nonché in ufficio.&lt;br /&gt;La contestazione che ricevo è sempre la stessa, appena si comincia ad utilizzarlo seriamente: &lt;span style="font-style: italic;"&gt;"Ma come mi posso fidare? Mettere i documenti importanti su un computer che non sia il mio? Ho paura..."&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;E' sempre lo stesso problema che si ripete, proviamo ad imparare qualcosa dal passato.&lt;br /&gt;70 anni fa era naturale tenere i pochi risparmi nel materasso, o sotto la mattonella della cucina; fu un passaggio lungo e difficile quello operato dalle banche per convincere la gente che era più sicuro affidare i soldi a loro anziché tenerli in casa. Oggi fa quasi paura tenere troppi contanti in casa, l'utente si sente più sicuro quando i suoi soldi sono su un conto corrente, registrati su un record di un database di Oracle.&lt;br /&gt;Bene, oggi la battaglia per questo nuovo passaggio mentale sta incominciando; il futuro è online, i nostri dati sono più sicuri su un server di Google, sotto backup, con firewall che a casa difficilmente possiamo gestire; Google non ha interesse a rubarceli, come la banca non ha interesse a rubare dai conti corrente. Il loro guadagno sarà in canoni di abbonamento, piuttosto che pubblicità varie.&lt;br /&gt;Il futuro è online, ci sta aspettando, la prima battaglia sarà il cambio di pensiero negli utenti, la seconda nell'avere infrastrutture decenti che permettano un accesso veloce, sempre, ovunque.&lt;br /&gt;Ma la seconda battaglia non può partire fino a quando non sarà vinta la prima; quando la gente comincerà a vedere i vantaggi dei servizi online.&lt;br /&gt;E finalmente avremo un sistema operativo online, i nostri dati e servizi sempre accessibili: dal computer del frigorifero, dal navigatore dell'auto, dal palmare, dal cellulare...&lt;br /&gt;Dati sempre condivisibili, con chi vorremo noi; così tutti i nostri amici potranno vedere le foto che stiamo scattando durante la nostra vacanza in Brasile senza neanche aspettare che torniamo. Penserà la nostra macchina fotografica a pubblicare le foto che ci piacciono sul nostro spazio condiviso con loro.&lt;br /&gt;&lt;br /&gt;Attendo pazientemente, combattendo la mia battaglia...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5900800470959220604-1187645252380732615?l=tregnago.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tregnago.blogspot.com/feeds/1187645252380732615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5900800470959220604&amp;postID=1187645252380732615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/1187645252380732615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5900800470959220604/posts/default/1187645252380732615'/><link rel='alternate' type='text/html' href='http://tregnago.blogspot.com/2006/11/documenti-online.html' title='Documenti online'/><author><name>Simone Tregnago</name><uri>http://www.blogger.com/profile/15353306733388538311</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
