<?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-8632485387978385434</id><updated>2012-02-16T10:16:23.328+01:00</updated><category term='linux'/><category term='virtualization'/><category term='math'/><category term='java'/><category term='web'/><category term='wifi'/><category term='latex'/><category term='soa'/><category term='django'/><category term='networking'/><category term='tip'/><category term='private'/><category term='beamer'/><category term='rest'/><category term='phd'/><category term='python'/><category term='internet'/><category term='server'/><category term='windows'/><category term='lyx'/><category term='eclipse'/><category term='ubuntu'/><category term='academic'/><category term='science'/><category term='backup'/><title type='text'>Dariusz Dwornikowski</title><subtitle type='html'>Academic life on the wire</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3011453565575157681</id><published>2010-10-15T18:12:00.000+02:00</published><updated>2010-10-15T18:12:58.367+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows 2008 on KVM no disk solved (proxmox)</title><content type='html'>If you have problem finding it - windows 2008 does not play well with SCSI virtual disk in KVM. On the other hand, for VIRTIO you have to point Windows to additional driver iso with VIRTIO drivers. You can find them&amp;nbsp;&lt;a href="http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-1.1.11-0.iso"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Proxmox VE support forum for help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3011453565575157681?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3011453565575157681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/10/windows-2008-on-kvm-no-disk-solved.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3011453565575157681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3011453565575157681'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/10/windows-2008-on-kvm-no-disk-solved.html' title='Windows 2008 on KVM no disk solved (proxmox)'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-7932737439698163001</id><published>2010-09-30T19:32:00.000+02:00</published><updated>2010-09-30T19:32:22.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Dymo LabelWriter 400 on ubuntu</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.tensor.pl/dymo/LB400.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://www.tensor.pl/dymo/LB400.jpg" width="194" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Dymo LabelWriter 400&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Today I bought Dymo LabelWriter 400 printer for labels. Surprisingly it works like a charm on my ubuntu machine. It gets recognised as normal printer, all you have to do is to download cups driver from Dymo page and compile it. (do not forget to apt-get install libcups2-dev and libcupsimage2-dev). &lt;br /&gt;&lt;br /&gt;For a simple scenarios (nice word for lame label printing) I use&amp;nbsp;&lt;a href="http://www.glabels.org/"&gt;http://www.glabels.org/&lt;/a&gt;, buy my ultimate aim is to create Django app to store information about various devices we own in our research group. The problem on out university is that we cannot easily get rid of old assets, as the procedures take time and are painful (as in plenty-papers-forms-filling painful). That is why one can find SCO server from the 80s, many types of handhelds (like 1337 Sharp Zaurus - you all remember the fuss) and even super size IBM supercomputer with computing power equal to Pentium 100 (literally).&lt;br /&gt;&lt;br /&gt;Ok back to Dymo gadget. So my aim is to create and print labels from Django (Python) dynamically. And here I have a problem. I can see the paper size I use is "Large Address" 89x36mm size. When I try to print an image of that size (Gimp created) it results in taking only circa 2/3 of the label. I am still trying to figure out how it can be. Maybe image gets transformed into postscript and the size gets smaller ? Also surprisingly cups fit-to-page option does not work.&lt;br /&gt;&lt;br /&gt;Anyway. I will try to do it and try to post the result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-7932737439698163001?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/7932737439698163001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/dymo-labelwriter-400-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/7932737439698163001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/7932737439698163001'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/dymo-labelwriter-400-on-ubuntu.html' title='Dymo LabelWriter 400 on ubuntu'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-2197201148126058513</id><published>2010-09-28T16:40:00.000+02:00</published><updated>2010-09-28T16:40:07.438+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Custom registration form with django-registration</title><content type='html'>Following&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2601487/django-registration-django-profile-using-your-own-custom-form/2687377#2687377"&gt;StackOverflow question&lt;/a&gt;&amp;nbsp;I manage to customise registration form used with djang-registration application.&lt;br /&gt;&lt;br /&gt;The SOF answer not explanatory, so here it what you have to do:&lt;br /&gt;&lt;br /&gt;1. Copy imports and register method from django-registration default backend (it is in __init__.py) and paste it in step 3.&lt;br /&gt;2. Create your form, example below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;from registration.forms import RegistrationForm&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;class UserRegistrationForm(RegistrationForm):&lt;br /&gt;        first_name = forms.CharField()&lt;br /&gt;        last_name = forms.CharField()&lt;br /&gt;&lt;/pre&gt;3. Create a file in your APP HOME, in which you implement your own backend. I used regbackend.py, as in the example. Paste imports and register method from step 1, see code below:&lt;br /&gt;&lt;pre class="prettyprint"&gt;from django.conf import settings&lt;br /&gt;from django.contrib.sites.models import RequestSite&lt;br /&gt;from django.contrib.sites.models import Site&lt;br /&gt;from django.contrib.auth.models import User&lt;br /&gt;from registration import signals&lt;br /&gt;from PROJECT.APP.forms import UserRegistrationForm&lt;br /&gt;from PROJECT.APP.models import *&lt;br /&gt;from registration.models import RegistrationProfile&lt;br /&gt;class MyBackend(object):&lt;br /&gt;&lt;br /&gt;   def register(self, request, **kwargs):&lt;br /&gt;        username, email, password = kwargs['username'],kwargs['email'], kwargs['password1']&lt;br /&gt;        if Site._meta.installed:&lt;br /&gt;            site = Site.objects.get_current()&lt;br /&gt;        else:&lt;br /&gt;            site = RequestSite(request)&lt;br /&gt;        new_user = RegistrationProfile.objects.create_inactive_user(username, email,&lt;br /&gt;                                                                    password, site)&lt;br /&gt;        signals.user_registered.send(sender=self.__class__,&lt;br /&gt;                                     user=new_user,&lt;br /&gt;                                     request=request)&lt;br /&gt;        user = User.objects.get(username=username)&lt;br /&gt;        user.first_name=kwargs['first_name']&lt;br /&gt;        user.last_name=kwargs['last_name']&lt;br /&gt;        address_user = Address()&lt;br /&gt;        address_user.save()&lt;br /&gt;        contact_user = Contact(address=address_user,email=user.email)&lt;br /&gt;        contact_user.save()&lt;br /&gt;&lt;br /&gt;        address_company = Address()&lt;br /&gt;        address_company.save()&lt;br /&gt;        contact_company = Contact(address=address_company)&lt;br /&gt;        contact_company.save()&lt;br /&gt;        company = Company(contact=contact_company, admin=user)&lt;br /&gt;        company.save()&lt;br /&gt;        user_profile = UserProfile(user=user,contact=contact_user,position='',company=company  )&lt;br /&gt;        user_profile.save()&lt;br /&gt;        user.save()&lt;br /&gt;&lt;br /&gt;        return new_user&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Change your urls.py&lt;br /&gt;&lt;pre class="prettyprint"&gt;import PROJECT.regbackend&lt;br /&gt;from PROJECT.APP.forms import UserRegistrationForm&lt;br /&gt;from registration.views import register&lt;br /&gt;urlpatterns = patterns('',&lt;br /&gt;...&lt;br /&gt;url(r'^register/$', register, { 'backend': 'PROJECT.regbackend.MyBackend' }, name='registration_register'),&lt;br /&gt;...&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here you go. Now you can add custom fields to the form. Also you can use form validators from django-registration. They are placed in forms.py in the sources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-2197201148126058513?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/2197201148126058513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-registration-form-with-django.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/2197201148126058513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/2197201148126058513'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-registration-form-with-django.html' title='Custom registration form with django-registration'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-4039954726619501197</id><published>2010-09-22T09:17:00.000+02:00</published><updated>2010-09-22T09:17:47.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Custom js and css in Django forms</title><content type='html'>Just to remind myself. If you want to put custom js or css when your form displays, you have to write your own widget. This is obvious. However docs do not say about one important thing.&lt;br /&gt;&lt;br /&gt;You have to include {{forms.media}} tag in your template's head.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-4039954726619501197?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/4039954726619501197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-js-and-css-in-django-forms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/4039954726619501197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/4039954726619501197'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-js-and-css-in-django-forms.html' title='Custom js and css in Django forms'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-5069016263956301111</id><published>2010-09-21T00:21:00.000+02:00</published><updated>2010-09-21T00:21:19.318+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django and i18n</title><content type='html'>Just a note post to remember how to set up the i18n in Django for the templates. &lt;br /&gt;1. apt-get install gettext&lt;br /&gt;2. Add {% load i18n %} to the top of the templates. &lt;br /&gt;3. Add 'django.middleware.locale.LocaleMiddleware' to MIDDLEWARE_CLASSES &lt;br /&gt;4. Add 'django.core.context_processors.i18n' to TEMPLATE_CONTEXT_PROCESSORS&lt;br /&gt;5. Insert {% trans "VARIABLE_MSG" %} into your templates, where you need the translations. &lt;br /&gt;6. mkdir locale&lt;br /&gt;7. Run python manage.py makemessages -l LANG_CODE -a to generate po files&lt;br /&gt;8. Run python manage.py compilemessages to compile po files into mo files.&lt;br /&gt;&lt;br /&gt;That is it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-5069016263956301111?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/5069016263956301111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/django-and-i18n.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/5069016263956301111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/5069016263956301111'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/django-and-i18n.html' title='Django and i18n'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-8570098181417741499</id><published>2010-09-17T15:39:00.001+02:00</published><updated>2010-09-17T15:40:18.958+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='beamer'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>Simple animations with Beamer overlays</title><content type='html'>Sometimes you want to create a simple “animation” in beamer, for example to show step by step transitions in labelled transition system.&lt;br /&gt;&lt;br /&gt;In PowerPoint style tool, you would just use the internal drawing capabilities. In &lt;a href="http://pl.wikipedia.org/wiki/Beamer_(LaTeX)"&gt;Beamer&lt;/a&gt;&amp;nbsp;it is not so easy. Fortunately Beamer has overlays, so you can just create many figures, each one representing the next frame in your animation. Without overlays, you would create Beamer frame for each of these picture frame. However this method is not code efficient and you just end with thousands of LaTeX lines. With overlays you can create one beamer frame and control the order in which components are shown.&lt;br /&gt;Have a look at the example. Suppose, I want to show an animation of transitions in a labeled transition system. I created 4 pictures in Dia: &lt;i&gt;step1.pdf, step2.pdf, step3.pdf &lt;/i&gt;and &lt;i&gt;step4.pdf&lt;/i&gt;. I also want to show appropriate text on each animation frame. So what I have to do is to show step1.pdf only on frame 1, step2.pdf only on frame 2, etc. See the code.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;begin{frame}{Steps example}&lt;br /&gt;  \begin{figure}[H]&lt;br /&gt;    \begin{center}&lt;br /&gt;      % \only&lt;x&gt; shows component only on frame X of the animation&lt;br /&gt;      \only&lt;1&gt;{ \includegraphics[width=0.6\textwidth]{step1.pdf}}&lt;br /&gt;      \only&lt;2&gt;{ \includegraphics[width=0.6\textwidth]{step2.pdf}}&lt;br /&gt;      \only&lt;3&gt;{ \includegraphics[width=0.6\textwidth]{step3.pdf}}&lt;br /&gt;      \only&lt;4&gt;{ \includegraphics[width=0.6\textwidth]{step4.pdf}}&lt;br /&gt;    \end{center}&lt;br /&gt;  \end{figure}&lt;br /&gt; &lt;br /&gt;  \begin{block}{Labels for animation frames}&lt;br /&gt;    \begin{itemize}&lt;br /&gt;      % &lt;1-&gt; will show the text all frames from 1-X, &lt;2-&gt; on frames 2-X and so on&lt;br /&gt;      \item&lt;1-&gt; step 1 is the first &lt;br /&gt;      \item&lt;2-&gt; then goes step 2&lt;br /&gt;      \item&lt;3-&gt; and step 3&lt;br /&gt;      \item&lt;4-&gt; finally the step 4&lt;br /&gt;    \end{itemize}&lt;br /&gt;  \end{block}&lt;br /&gt;\end{frame}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-8570098181417741499?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/8570098181417741499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/simple-animations-with-beamer-overlays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8570098181417741499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8570098181417741499'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/simple-animations-with-beamer-overlays.html' title='Simple animations with Beamer overlays'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-8070743227231660249</id><published>2010-09-17T10:07:00.000+02:00</published><updated>2010-09-17T10:07:16.716+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>Custom IMAP in Vim LaTeXSuite</title><content type='html'>Vim LaTeXSuite uses IMAPS to ease &amp;nbsp;LaTeX documents creation. For example you can write EFI in insert mode and you automatically get:&lt;br /&gt;&lt;pre class="prettyprint"&gt;\begin{figure}[&lt;+htpb+&gt;]&lt;br /&gt;  \begin{center}&lt;br /&gt;    \includegraphics{&lt;+file+&gt;}&lt;br /&gt;  \end{center}&lt;br /&gt;  \caption{&lt;+caption text+&gt;}&lt;br /&gt;  \label{fig:&lt;+label+&gt;}&lt;br /&gt;\end{figure}&lt;++&gt;&lt;br /&gt;&lt;/pre&gt;You can navigate through the placeholders (&lt;+somthing+&gt;) with CTRL+J to fill them in. To create custom IMAP, you place it in ~/vim/ftplugin/tex/vim. Example for Beamer frame:&lt;br /&gt;&lt;pre class="prettyprint"&gt;:call IMAP('BFR',"\\begin{frame}\&lt;CR&gt;\\frametitle{&lt;++&gt;}\&lt;CR&gt;&lt;++&gt;\&lt;CR&gt;\\end{frame}", 'tex')&lt;br /&gt;&lt;/pre&gt;The first argument "BFR" is a name for the IMAP, the second one is a body to place when vim sees BFR typed in. 'tex' word attaches the IMAP only to tex type files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-8070743227231660249?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/8070743227231660249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-imap-in-vim-latexsuite.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8070743227231660249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8070743227231660249'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/custom-imap-in-vim-latexsuite.html' title='Custom IMAP in Vim LaTeXSuite'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-1382756805324549736</id><published>2010-09-17T10:02:00.000+02:00</published><updated>2010-09-17T10:02:50.971+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Hash serialisation in Python</title><content type='html'>I needed some serialisation for hashes in Python for my small UNIX userland project. I needed to store &lt;i&gt;name:path &lt;/i&gt;pairs in a convenient way. First I thought of Berkeley DB, but saw in the PyDocs that it will be deprecated in Python 3.0. I asked question on the Stackoverflow and got a nice answer. &amp;nbsp;&lt;a href="http://stackoverflow.com/questions/3724540/efficient-way-to-store-hash-in-a-file"&gt;Here is the link to the question&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So SOF users showed me shelve, a python serialisation module, which in fact uses BDB under the hood. The example below is directly taken from the SOF post:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;import shelve&lt;br /&gt;d = shelve.open('filename')&lt;br /&gt;d['name'] = 'path'&lt;br /&gt;d.close()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-1382756805324549736?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/1382756805324549736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/hash-serialisation-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1382756805324549736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1382756805324549736'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/hash-serialisation-in-python.html' title='Hash serialisation in Python'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-1264758267284005510</id><published>2010-09-17T09:57:00.000+02:00</published><updated>2010-09-17T09:57:23.009+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Text above arrows in LaTeX</title><content type='html'>Sometimes you need to place text above arrows. Let's say you need to write transitions for a labelled transition system. In fact in LaTeX this is not so obvious, especially if you want to have text above and under the arrow. I know of two easy ways to do it.&lt;br /&gt;&lt;br /&gt;First method:&lt;br /&gt;&lt;pre class="prettyprint"&gt;$$ E \xrightarrow{\alpha} F $$&lt;br /&gt;&lt;/pre&gt;... and the second one.&lt;br /&gt;&lt;pre class="prettyprint"&gt;$$ \mathop{\longrightarrow}^_{\alpha} $$&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-1264758267284005510?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/1264758267284005510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/text-above-arrows-in-latex.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1264758267284005510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1264758267284005510'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/09/text-above-arrows-in-latex.html' title='Text above arrows in LaTeX'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-8457669486951240693</id><published>2010-04-20T00:25:00.000+02:00</published><updated>2010-04-20T00:25:55.453+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>Proxmox clone virtual machines (with iSCSI scenario)</title><content type='html'>Proxmox VE is a great web front/system for underlaying KVM/qemu virtualisation environment. One of its greatest features is that it can work in a cluster mode. Add iSCSI storage to that and You end up with a nice cloud like solution for running your machines. One of flaws of Proxmox is that it does not have ability to clone virtual hard disks, it is especially hard when you use lvm groups for your images. Yesterday I found an easy and working solution for that problem. As always I was driven by a need - a request for 8 identical SUSE systems. &lt;br /&gt;&lt;br /&gt;My setup is as follow: &lt;br /&gt;- 4 Proxmox physical nodes connected into a cluster,&lt;br /&gt;- 1 BIG F** LUN on iSCSI (4TB),&lt;br /&gt;- every virtual disk is a LVM volume in this LUN (ofc Ive got an LVM Group too),&lt;br /&gt;- hard disks in raw format. &lt;br /&gt;&lt;br /&gt;The solution is easy as hell.&lt;br /&gt;&lt;br /&gt;1. You create a source/template virtual machine and install the system.&lt;br /&gt;2. You create virtual machines with exactly the same hd size as the source machine.&lt;br /&gt;3. You issue dd if=/dev/lvmgroup/vm-{$VMID_SOURCE}-disk-1 of=/dev/lvmgroup/vm-{$VMID_NEW}-disk-1&lt;br /&gt;4. You jump start new vms and configure unique IP address for them.&lt;br /&gt;5. Done :) &lt;br /&gt;&lt;br /&gt;PS: Ofc. {$VMID_SOURCE} is the ID for the source virtual machine, and {$VMID_NEW} is the id ofor the clone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-8457669486951240693?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/8457669486951240693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2010/04/proxmox-clone-virtual-machines-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8457669486951240693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8457669486951240693'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2010/04/proxmox-clone-virtual-machines-with.html' title='Proxmox clone virtual machines (with iSCSI scenario)'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6439023068438468419</id><published>2009-11-23T15:23:00.001+01:00</published><updated>2010-09-17T09:52:45.887+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>Custom kernel on Proxmox host</title><content type='html'>Proxmox is a great platform for KVM/kqemu and OpenVZ virtualization. It is generally a debian based system with web panel, that controls the creation and management of your virtual machines. It bases though on a little bit oldish kernel 2.6.24, due to support for openVZ. Normally it is not a problem, but in my server's case I needed kernel 2.6.31 to support newer hardware. &lt;br /&gt;&lt;br /&gt;In order to make proxmox work on vanilla kernel, one needs only to be sure, that KVM support is compiled in. So the first step is to compile kernel and reboot. The machines won't start, because of the lack of fairsched, saying:&amp;nbsp;&amp;nbsp;&lt;i&gt;unable to create fairsched node&lt;/i&gt;. In order to get rid of the message and make your machines work on vanilla kernel, you need to edit proxmox module called QemuServer.pm in /usr/share/perl5/PVE directory.&lt;br /&gt;Find the:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;if (!$use_virtio) {&lt;br /&gt;   push @$cmd, '-id', $vmid;&lt;br /&gt;   my $cpuunits = defined ($conf-&amp;gt;{cpuunits}) ?&lt;br /&gt;   $conf-&amp;gt;{cpuunits} : $defaults-&amp;gt;{cpuunits};&lt;br /&gt;   push @$cmd, '-cpuunits', $cpuunits if $cpuunits;&lt;br /&gt;   # fixme: cpulimit is currently ignored&lt;br /&gt;   #push @$cmd, '-cpulimit', $conf-&amp;gt;{cpulimit} if $conf-&amp;gt;{cpulimit};&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and comment out everything in the if block. Now the machines can start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6439023068438468419?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6439023068438468419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/11/custom-kernel-on-proxmox-host.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6439023068438468419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6439023068438468419'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/11/custom-kernel-on-proxmox-host.html' title='Custom kernel on Proxmox host'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6025853081265755190</id><published>2009-07-22T10:52:00.004+02:00</published><updated>2009-07-22T11:02:29.172+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phd'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Time Series and the whisper of the universe</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8oSGz6R0Hf4/SmbVTkpLCJI/AAAAAAAAAps/k7JibubcqlM/s1600-h/whaa.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 299px;" src="http://2.bp.blogspot.com/_8oSGz6R0Hf4/SmbVTkpLCJI/AAAAAAAAAps/k7JibubcqlM/s320/whaa.png" alt="" id="BLOGGER_PHOTO_ID_5361206938661750930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For some time now, I am investigating prediction in time series, in the context of proactive monitoring of distributed systems. So in general lots of math, statistics and R language. An additive model of time series defines that time series is a:&lt;br /&gt;&lt;br /&gt;Ts = T + S + Ls + E,&lt;br /&gt;&lt;br /&gt;where:&lt;br /&gt;T - is some trend,&lt;br /&gt;S  - seasonal nonrandom long term cyclic influence,&lt;br /&gt;Ls - seasonal nonrandom short term cyclic influences,&lt;br /&gt;E - random variable, deviations from ideal non stochastic model.&lt;br /&gt;&lt;br /&gt;I like to call E the whisper of the universe, as this is all the garbage left, after decomposition. For example in time series, that reflect the stock price, these can be influence of the sexual scandals of board members :) Whereas in computer systems, electrical current fluctuations, weather impact -&gt; sun explosions :)&lt;br /&gt;&lt;br /&gt;The words are not enough, so please look at the plot generated in R by doing stl() function, that decomposes the time series. The remainder is the thing I am talking about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6025853081265755190?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6025853081265755190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/time-series-and-whisper-of-universe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6025853081265755190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6025853081265755190'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/time-series-and-whisper-of-universe.html' title='Time Series and the whisper of the universe'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8oSGz6R0Hf4/SmbVTkpLCJI/AAAAAAAAAps/k7JibubcqlM/s72-c/whaa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6892479747241083199</id><published>2009-07-20T14:17:00.002+02:00</published><updated>2009-07-20T14:20:32.123+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>OpenSSH &lt;= 0day exploit</title><content type='html'>Just to inform, http://lists.grok.org.uk/pipermail/full-disclosure/2009-July/069752.html. Anti-sec group posted this threat thread. If it is fake I lost 5min for firewall configuration, if not Ill loose week for restore procedures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6892479747241083199?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6892479747241083199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/openssh-0day-exploit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6892479747241083199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6892479747241083199'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/openssh-0day-exploit.html' title='OpenSSH &lt;= 0day exploit'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6419979902982241499</id><published>2009-07-07T21:09:00.002+02:00</published><updated>2009-07-07T21:18:53.373+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>Java Coding Convention</title><content type='html'>I was thinking how to force students in the project to write elegant code. I gave them link to SUN's java code convention, but this won't "force" them. So I did a little research on the topic and found a perfect solution for Eclipse. It is called &lt;a href="http://eclipse-cs.sourceforge.net/"&gt;Eclipse-CS&lt;/a&gt; and it is a plugin for Eclipse which makes code checks with the help of &lt;a href="http://checkstyle.sourceforge.net/"&gt;Checkstyle&lt;/a&gt; - open source code style checker. Now I can force beautiful code. Will it be also usable ? I hope so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6419979902982241499?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6419979902982241499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/java-coding-convention.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6419979902982241499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6419979902982241499'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/07/java-coding-convention.html' title='Java Coding Convention'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-760220343396885958</id><published>2009-06-12T20:49:00.008+02:00</published><updated>2009-11-22T12:55:02.668+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Maven, Jersey, Tomcat = RESTful web service</title><content type='html'>I'm investigating the topic of monitoring and management of RESTful web service right now, so I decided to actually build one. Following my friend's advice I chose Jersey for my REST library. After close look development with it is fun and easy. I found a &lt;a href="http://blogs.sun.com/japod/entry/building_simple_jersey_web_app"&gt;Japod's post&lt;/a&gt; about how to run jersey with maven in tomcat (in fact you can substitute tomcat for jetty too or whatever you like ).  The blog post is quite old, some things are different now, so here is my pom.xml for latest jersey.&lt;br /&gt;&lt;pre class="brush: xml" name="code"&gt;&lt;project schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;&lt;br /&gt;&lt;modelversion&gt;4.0.0&lt;/modelversion&gt;&lt;br /&gt;&lt;groupid&gt;my.example.com&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;SimpleRESTApp&lt;/artifactid&gt;&lt;br /&gt;&lt;packaging&gt;war&lt;/packaging&gt;&lt;br /&gt;&lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;&lt;name&gt;SimpleRESTApp Maven Webapp&lt;/name&gt;&lt;br /&gt;&lt;url&gt;http://maven.apache.org&lt;/url&gt;&lt;br /&gt;&lt;repositories&gt;&lt;br /&gt;&lt;repository&gt;&lt;br /&gt;&lt;id&gt;maven2-repository.dev.java.net&lt;/id&gt;&lt;br /&gt;&lt;name&gt;Java.net Repository for Maven&lt;/name&gt;&lt;br /&gt;&lt;url&gt;http://download.java.net/maven/2/&lt;/url&gt;&lt;br /&gt;&lt;layout&gt;default&lt;/layout&gt;&lt;br /&gt;&lt;/repository&gt;&lt;br /&gt;&lt;/repositories&gt;&lt;br /&gt;&lt;dependencies&gt;&lt;br /&gt;&lt;dependency&gt;&lt;br /&gt;&lt;groupid&gt;asm&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;asm&lt;/artifactid&gt;&lt;br /&gt;&lt;version&gt;3.1&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;dependency&gt;&lt;br /&gt;&lt;groupid&gt;junit&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;junit&lt;/artifactid&gt;&lt;br /&gt;&lt;version&gt;3.8.1&lt;/version&gt;&lt;br /&gt;&lt;scope&gt;test&lt;/scope&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;dependency&gt;&lt;br /&gt;&lt;dependency&gt;&lt;br /&gt;&lt;groupid&gt;com.sun.jersey&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;jersey-bundle&lt;/artifactid&gt;&lt;br /&gt;&lt;version&gt;1.1.0-ea&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;build&gt;&lt;br /&gt;&lt;finalname&gt;SimpleRESTApp&lt;/finalname&gt;&lt;br /&gt;&lt;plugins&gt;&lt;br /&gt;&lt;plugin&gt;&lt;br /&gt;&lt;groupid&gt;org.codehaus.mojo&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;tomcat-maven-plugin&lt;/artifactid&gt;&lt;br /&gt;&lt;/plugin&gt;&lt;br /&gt;&lt;plugin&gt;&lt;br /&gt;&lt;artifactid&gt;maven-compiler-plugin&lt;/artifactid&gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;1.5&lt;br /&gt;&lt;target&gt;1.5&lt;/target&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/plugin&gt;&lt;br /&gt;&lt;/plugins&gt;&lt;br /&gt;&lt;/build&gt;&lt;br /&gt;&lt;/dependencies&gt;&lt;br /&gt;&lt;/project&gt;&lt;/pre&gt;&lt;br /&gt;Here I had to add explicitely:&lt;br /&gt;&lt;pre class="brush: xml" name="code"&gt;&lt;dependency&gt;&lt;br /&gt;&lt;groupid&gt;asm&lt;/groupid&gt;&lt;br /&gt;&lt;artifactid&gt;asm&lt;/artifactid&gt;&lt;br /&gt;&lt;version&gt;3.1&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then I edited the web.xml generated by maven, as shown on the &lt;a href="http://blogs.sun.com/japod/entry/building_simple_jersey_web_app"&gt;Japod's blog&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush: xml" name="code"&gt;&lt;web-app&gt;&lt;br /&gt;&lt;display-name&gt;Archetype Created Web Application&lt;/display-name&gt;&lt;br /&gt;&lt;servlet&gt;&lt;br /&gt;&lt;servlet-name&gt;Jersey Web Application&lt;/servlet-name&gt;&lt;br /&gt;&lt;servlet-class&gt;com.sun.jersey.spi.container.servlet.ServletContainer&lt;/servlet-class&gt;&lt;br /&gt;&lt;init-param&gt;&lt;br /&gt;&lt;param-name&gt;com.sun.jersey.config.property.resourceConfigClass&lt;/param-name&gt;&lt;param-value&gt;com.sun.jersey.api.core.PackagesResourceConfig&lt;/param-value&gt;&lt;/init-param&gt;&lt;br /&gt;&lt;init-param&gt;&lt;br /&gt;&lt;param-name&gt;com.sun.jersey.config.property.packages&lt;/param-name&gt;&lt;param-value&gt;com.example.my&lt;/param-value&gt;&lt;/init-param&gt;&lt;br /&gt;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;&lt;br /&gt;&lt;/servlet&gt;&lt;br /&gt;&lt;servlet-mapping&gt;&lt;br /&gt;&lt;servlet-name&gt;Jersey Web Application&lt;/servlet-name&gt;&lt;br /&gt;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;&lt;br /&gt;&lt;/servlet-mapping&gt;&lt;br /&gt;&lt;/web-app&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that you only have to wrote your example POJO object like that:&lt;br /&gt;&lt;pre class="brush: java" name="code"&gt;package com.example.my;&lt;br /&gt;import javax.ws.rs.GET;&lt;br /&gt;import javax.ws.rs.Produces;&lt;br /&gt;import javax.ws.rs.Path;&lt;br /&gt;&lt;br /&gt;@Path("/hello/")&lt;br /&gt;public class SimpleResource {&lt;br /&gt;&lt;br /&gt;@GET&lt;br /&gt;@Produces("text/plain")&lt;br /&gt;public String getGreeting() {&lt;br /&gt;return "Hi ! ";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The only difference in the new version is @Produces, instead of @ProduceMime. Also the import statement is changed. Now type mvn tomcat:run or mvn jetty:run and voila.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-760220343396885958?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/760220343396885958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/maven-jersey-tomcat-restful-webservice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/760220343396885958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/760220343396885958'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/maven-jersey-tomcat-restful-webservice.html' title='Maven, Jersey, Tomcat = RESTful web service'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3244853266753976676</id><published>2009-06-03T11:17:00.002+02:00</published><updated>2009-06-03T11:21:03.326+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Tools for testing web applications</title><content type='html'>&lt;span style="font-weight: bold;"&gt;JMeter: &lt;/span&gt;&lt;br /&gt;URL: &lt;!-- m --&gt;&lt;a class="postlink" href="http://jakarta.apache.org/jmeter/index.html"&gt;http://jakarta.apache.org/jmeter/index.html&lt;/a&gt;&lt;!-- m --&gt;&lt;br /&gt;Language: Java&lt;br /&gt;Features: GUI, jmeter-server, easy scenarios&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SLAMD: &lt;/span&gt;&lt;br /&gt;URL: &lt;!-- m --&gt;&lt;a class="postlink" href="http://www.slamd.com/"&gt;http://www.slamd.com/&lt;/a&gt;&lt;!-- m --&gt; ( Distributed Load Generation Engine  )&lt;br /&gt;Language: Java&lt;br /&gt;Features: WEB GUI, distributed, simple monitoring abilities&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Driver: &lt;/span&gt;&lt;br /&gt;URL: &lt;!-- m --&gt;&lt;a class="postlink" href="http://code.google.com/p/webdriver/"&gt;http://code.google.com/p/webdriver/&lt;/a&gt;&lt;!-- m --&gt;&lt;br /&gt;Language: Java&lt;br /&gt;Features: nice documentation, extensible, emulation of selenium, web browser emulation&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Selenium:&lt;/span&gt;&lt;br /&gt;URL: &lt;!-- m --&gt;&lt;a class="postlink" href="http://seleniumhq.org/"&gt;http://seleniumhq.org/&lt;/a&gt;&lt;!-- m --&gt;&lt;br /&gt;Language: XUL?&lt;br /&gt;Features: Firefox addon&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pylot:&lt;/span&gt;&lt;br /&gt;URL: &lt;!-- m --&gt;&lt;a class="postlink" href="http://www.pylot.org/"&gt;http://www.pylot.org/&lt;/a&gt;&lt;!-- m --&gt; (Performance &amp;amp; Scalability Testing - Web Services)&lt;br /&gt;Language: Python&lt;br /&gt;Features: Web Gui, SOAP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3244853266753976676?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3244853266753976676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/tools-for-testing-web-applications.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3244853266753976676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3244853266753976676'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/tools-for-testing-web-applications.html' title='Tools for testing web applications'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6360202113934327476</id><published>2009-06-02T21:38:00.002+02:00</published><updated>2009-06-02T21:43:12.214+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>What is this ESB ?</title><content type='html'>Today I gave a seminar lecture on ESB (Enterprise Service Bus) and JBI (Java Business Integrations) on example of Apache ServiceMix. There were many questions concerning the purpose of using ESBs in SOA environments, but the most important was : "What really is ESB usable for ?". I think that the lecture by Mark Richards recorder at NFJS can be the answer and a nice intro to ESB middleware. Watch the presentation &lt;a href="http://www.infoq.com/presentations/Enterprise-Service-Bus"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6360202113934327476?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6360202113934327476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/what-is-this-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6360202113934327476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6360202113934327476'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/06/what-is-this-esb.html' title='What is this ESB ?'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3662175724647748128</id><published>2009-04-26T11:36:00.002+02:00</published><updated>2009-04-26T13:24:03.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Backups with rdiff-backup</title><content type='html'>Recently I had to switch my small backup system from bacula to some other solution. The reason was that for relatively small environments, bacula was too problematic. Here is why:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;big load on db server ( postgresql )&lt;/li&gt;&lt;li&gt;db was about 19GB, indexing, vacuums were hell&lt;/li&gt;&lt;li&gt;problematic recoveries, bacula keeps it with own format&lt;/li&gt;&lt;li&gt;checking for files was too energy consuming for admins, bconsole, search, etc&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the backup jobs lasted too long, keeping the internal backbone occupied&lt;/li&gt;&lt;li&gt;surprisingly bacula was not storage efficient, it took whole backup server space, with only 1month history ( the policy was tuned, I did not store stupid things, only crucial data )&lt;/li&gt;&lt;li&gt;summing up: I had problematic solution, that took 100% of storage space with only 1 month backup history&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Before I introduce the solution, one has to understand the infrastructure I am talking about. It is a very small setup in my opinion ( I saw bigger with bacula live). I have got 12 backed up servers and one storage server with 2TB space. The whole rack runs Debians etch and lenny. No other oses. The internal network is 1Gbit with vlans, in way that every server is in separate VLAN, using separate NIC to communicate with storage server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What I wanted to achieve with new backup system?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Firstly I needed solution that will solve the problems that occurred with existing bacula system. In best scenario I had in mind some differential, fast backup system with clear insight in stored files. The natural solution seemed to be rsync or similar. I did an enquiry on google and found custom crafted solutions how to make differential backups with rsync and hardlinking. I was a little bit afraid to use it on production environment. One day though one of friends on #pplug channel sugested rdiff-backup, an application that did what I needed and more, as it appeared.&lt;br /&gt;&lt;br /&gt;What is rdiff-backup ? On its &lt;a href="http://www.gnu.org/savannah-checkouts/non-gnu/rdiff-backup/"&gt;homepage&lt;/a&gt; we can read:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rdiff-backup backs up one directory to another, possibly over a network. The target directory ends up a copy of the source directory, but extra reverse diffs are stored in a special subdirectory of that target directory, so you can still recover files lost some time ago. The idea is to combine &lt;strong&gt;the best features of a mirror and an incremental backup&lt;/strong&gt;. rdiff-backup also preserves subdirectories, hard links, dev files, permissions, uid/gid ownership, modification times, extended attributes, acls, and resource forks. Also, rdiff-backup can operate in a &lt;strong&gt;bandwidth efficient&lt;/strong&gt; manner over a pipe, like rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up to a remote location, and only the differences will be transmitted. Finally, rdiff-backup is &lt;strong&gt;easy to use&lt;/strong&gt; and settings have sensical defaults.&lt;/blockquote&gt;After some tests rdiff-backup appeared to be a great solution, here is how I did a setup with it:&lt;br /&gt;&lt;br /&gt;On a storage server I created directories with naming schema: /home/{SERVER_NAME}/{BACKED_DIR}. Then I add crontab lines:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;rdiff-backup  --remote-schema="ssh %s sudo rdiff-backup --server" backup_user@{server_ip}::/etc /home/{server_name}/etc&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Above is an example for /etc backup. The --remote-schema is the command to be executed on source server to backup the directory. I had to change it, due to my sudo setup used for authentication. On every machine I created unprivileged user backup_user and added it to sudoers file without password. I also copied ssh keys to the source machine, so the backup_user could connect without password from backup server. It is not very secure setup, but I manage all servers, there are no external people administrating them and the ssh is secured in a way, that you can only ssh to backup_user on the internal NIC and from the backup server. If You installed rdfif-backup on both machines, the above setup is all you need to backup differentially the machine. I repeated the steps for all machines and directories. After a month I switched off bacula and destroyed the backups. Result? Ive got now 3 months of backup history and 1.3TB free. The data growth is small, due to backing up only changes files. Also I can cd to /home/{server_name}/etc and just see the whole directory structure and copy files with cp command. If I need backup, let's say 10 days old, I can issue rdiff-backup command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;rdiff-backup -r 10D /home/{server_name}/{directory} /home/result&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The /home/result will have the 10days old version of directory or file. I can also see the history of backups, using:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;rdiff-backup -l /home/{server_name}/{directory}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or use rdiff-backup-statistics command. More usage examples on rdiff-backup homepage.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rdiff-backup works in environment since January. It never failed and fulfills all tasks I want. Do not get me wrong, bacula is also a great software, I have got 5+ years experience with it on many production environments, still for such setup as mine with small amount of servers, but still crucial data - rdiff-backup is better. Also company I cooperate with, developed nice and simple web application to monitor backups done with rdiff-backup, we have plans to expand it for management features. Now admins have to add crontab entries by hand, but this is not annoying - you do it once during setup.&lt;br /&gt;&lt;br /&gt;If you find this post useful please post a comment, also when you have any criticism. I understand my setup may not be best, so any creative comments will be welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3662175724647748128?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3662175724647748128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/backups-with-rdiff-backup.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3662175724647748128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3662175724647748128'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/backups-with-rdiff-backup.html' title='Backups with rdiff-backup'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3884390228850674600</id><published>2009-04-25T20:15:00.002+02:00</published><updated>2009-04-25T20:26:17.069+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04 jaunty jackalope on dell d420</title><content type='html'>Yesterday I upgraded my dell d420 laptop from Ubuntu 8.10 to 9.04. The upgrade I must admit went very smooth, using the update-manager -d method. As a Debian user on server machines for years I was a little bit anxious about GUI method, but hell, world goes forward and I cannot resist.&lt;br /&gt;Here is summary of how is the new Ubuntu working on my precious dell d420 ( btw. a very nice machine ):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Video:&lt;/span&gt; work fine with intel driver, I am not a great fan of compiz, so I use the default better appeareance not the additionally installed fusion with plugins etc. Anyways there is one problem, with AccelMethod "UXA", the laptop after suspend shows GDM login screen, so I suspect the Xorg is being restarted. I will file a bug on bugs.ubuntu and see how the guys can help.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Suspend/Hibernate:&lt;/span&gt;Works fine, besides the UXA bug. Oh, sometimes, there is no sound after I go back from suspend, the pidgin is blocking the sound card.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WIFI/BT:&lt;/span&gt; Works fine as always.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BuiltIn 3g card:&lt;/span&gt;Works fine with umstmon and wvdial. The network manager thing is still not working with it fine.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sound:&lt;/span&gt;works&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Special buttons:&lt;/span&gt;work, the CRT/LCD now started to work properly.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;External monitor:&lt;/span&gt; this got fixed really. It detects my all external LCDs properly and after detaching the proper resolution is restored. In 8.10 it happened from time to time, that the resolution was restored fine, but there was part of display blacked out.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Touchpad: &lt;/span&gt;works&lt;br /&gt;&lt;br /&gt;What was additionally fixed - saving of gnome sessions, now this at last works. Also the general responsiveness is better, the system really is faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3884390228850674600?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3884390228850674600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-904-jaunty-jackalope-on-dell.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3884390228850674600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3884390228850674600'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-904-jaunty-jackalope-on-dell.html' title='Ubuntu 9.04 jaunty jackalope on dell d420'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-6563547242274971087</id><published>2009-04-23T14:25:00.002+02:00</published><updated>2009-04-23T14:27:11.977+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04  released</title><content type='html'>Probably You know it, but in case you do not: the new Ubuntu has been released - 9.04 Jaunty Jackalope.&lt;br /&gt;&lt;br /&gt;It can be downloaded from : &lt;a href="http://releases.ubuntu.com/releases/9.04/"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hurray !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-6563547242274971087?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/6563547242274971087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-904-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6563547242274971087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/6563547242274971087'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-904-released.html' title='Ubuntu 9.04  released'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3171131353315102019</id><published>2009-04-17T12:09:00.000+02:00</published><updated>2009-04-17T12:08:20.271+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='lyx'/><title type='text'>Working with BibTeX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/3/30/BibTeX_logo.svg/180px-BibTeX_logo.svg.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 58px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/30/BibTeX_logo.svg/180px-BibTeX_logo.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/BibTeX"&gt;BibTeX&lt;/a&gt; is a software used for management of the bibliography and references in your texts, usually used with LaTeX documents. BibTeX uses .bib files to store reference info, using a format as follows:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;@ARTICLE{DWO09,&lt;br /&gt;title = {Title of The Book},&lt;br /&gt;author = { D.Dwornikowski },&lt;br /&gt;year = {2009},&lt;br /&gt;volume = {1},&lt;br /&gt;journal = {Home Journal},&lt;br /&gt;pages = {1-20}&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;The above snippet is an example of a BibTeX entry for an article. BibTeX defines some standard &lt;a href="http://en.wikipedia.org/wiki/BibTeX#Entry_Types"&gt;classes&lt;/a&gt; of documents ex. BOOK, ARTICLE, INPROCEEDINGS, MANUAL, PHDTHESIS, MASTERSTHESIS. They define fields that are required to be filled, so the entry is valid, the snippet above shows required fields for 'Article' entry. The DWO09 field is a key for the entry, it is how the ciation is referenced in the document:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;\cite{DWO09}&lt;/code&gt;&lt;/blockquote&gt;There is no recommended method of assigning keys to entries, but I use the way specified by our institute:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;if there are 3 authors, use first letters of their names and add 2 digit year code: ABC09&lt;br /&gt;&lt;/li&gt;&lt;li&gt;if there are more than 4 authors, use first letters of three names and add + and 2 digit year code: ABC+09&lt;/li&gt;&lt;li&gt;if there is one author, use first 3 letters of name and add 2 digit year code: DWO09&lt;/li&gt;&lt;li&gt;if the keys are not unique add letters a,b,c...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;You can imagine, that if you have many BibTeX files, containing hundreds of entries, the management of them is becoming simply a pain. However there are are couple of usable &lt;a href="http://en.wikipedia.org/wiki/BibTeX#Free_BibTeX-related_software"&gt;applications&lt;/a&gt;, that can help you with your collections of bibs. Personally I use &lt;a href="http://jabref.sourceforge.net/"&gt;JabRef&lt;/a&gt;, which is multi platform java program with many powerful features, like LyX integration, online search of citations and powerful bib management engine. There is also OSX application called BibDesk, Gnome Referencer and KBibTeX (try to pronouce it .. ) for KDE.&lt;br /&gt;&lt;br /&gt;PS: When talking about BibTeX, I have to mention&lt;a href="http://en.wikipedia.org/wiki/BibTeX#Bibliography_databases"&gt; online citation databases,&lt;/a&gt; where you can find publications and metadata for bib files ( some of them even generate ready to use BibTeX entries ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3171131353315102019?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3171131353315102019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/working-with-bibtex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3171131353315102019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3171131353315102019'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/working-with-bibtex.html' title='Working with BibTeX'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-445752748840999420</id><published>2009-04-16T15:23:00.003+02:00</published><updated>2009-04-16T16:06:36.608+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='lyx'/><title type='text'>LyX TIP: figures and pictures placement in text</title><content type='html'>A small TIP for all LyX users. While working with LyX, you often place pictures, diagrams and graphs into your document. The default behavior of a picture float field is such, that in most cases text, which in LyX is before the float field, in the PDF appears after it. This is however a normal behavior of float, even though we do not want it. Here is a TIP on proper and nice placing of figures in LyX.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;1. You place the Figure Wrap Float.&lt;br /&gt;2. Click on the settings of the float and switch on advanced placement settings:&lt;ul&gt;&lt;li&gt;top of page&lt;/li&gt;&lt;li&gt;bottom of page&lt;br /&gt;&lt;/li&gt;&lt;li&gt;here if possible&lt;/li&gt;&lt;/ul&gt;3. Insert image into float&lt;br /&gt;4. Click on image properties&lt;br /&gt;5. Put 100 in Set width and choose "Text Width %"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;A good manner is also to put a label just before the description in the figure wrap float.&lt;br /&gt;An example:&lt;br /&gt;&lt;br /&gt;Click to see bigger:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8oSGz6R0Hf4/Sec68X3Yz6I/AAAAAAAAAXc/JbZKMG17onQ/s1600-h/lyxwrap.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 268px; height: 92px;" src="http://3.bp.blogspot.com/_8oSGz6R0Hf4/Sec68X3Yz6I/AAAAAAAAAXc/JbZKMG17onQ/s320/lyxwrap.png" alt="" id="BLOGGER_PHOTO_ID_5325289893261791138" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-445752748840999420?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/445752748840999420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/lyx-tip-figures-and-pictures-placement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/445752748840999420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/445752748840999420'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/lyx-tip-figures-and-pictures-placement.html' title='LyX TIP: figures and pictures placement in text'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8oSGz6R0Hf4/Sec68X3Yz6I/AAAAAAAAAXc/JbZKMG17onQ/s72-c/lyxwrap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3731060551781440888</id><published>2009-04-14T14:09:00.007+02:00</published><updated>2009-04-14T13:16:26.825+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='lyx'/><title type='text'>My subjective view of a word processor idea</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I decided to write this blog entry to show my subjective view on editing and publishing documents using nowadays computer tools. It is also a blog entry showing that idea of what we know as word processor is wrong and no really useful. People just do not know nothing else. This post is a product of my recent work as an academic researcher, where my job is generally to write A LOT. I would like to share some thoughts and experience on the topic of documents writing and tools used for it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why is word processor a bad idea?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Word processor is a computer application, that generally lets you edit and create text documents. This fact is commonly known. Probably it is one of the mostly used computer applications in the world, as the history of computer - as an office tool has its direct origin in typewriters. People just switched from these mechanical devices to PCs with printers, as a more convenient and effective way of working with texts. Word processors evolved from very clumsy and poor featured notepad like applications to feature rich programs, parts of whole office suites. What did not evolve with them was the main idea of word processor - and when I say "word processor" I think of MS Word/OO Writer like application.&lt;br /&gt;&lt;br /&gt;Not taking under consideration the templating abilities of Word/Writer applications, generally word processors are 'WYSIWYG' ( &lt;span style="font-style: italic;"&gt;What You See Is What You Get &lt;/span&gt;) programs, this means that the document looks exactly the same as when edited. For most of people this can be an advantage, but if you think more about it this is a great shortcoming. Imagine you create a publication, let's say 200 pages big, using your own style. After some time, the template changes, ex. your company, school - whatever changed drastically the preferred layout. Everybody, who used Word, can problably feel the pain of copying and adjusting the text to the new template. This is due to not really usable or non-existent template system in word processors.&lt;br /&gt;&lt;br /&gt;Another annoying thing, and worth rethinking is collaborative work on documents, some time ago I &lt;a href="http://blog.kill-9.pl/2009/04/collaborative-work-on-documents.html"&gt;posted&lt;/a&gt; about a nice method to solve that in LyX/LateX environments. Modern word processors, due to the WYSIWYG feature are just not usable for collaborative work. You have common format of document ( ex. DOCX, ODT ) and theoretically it should look the same on all suites supporting them, but in most cases it does not. You end up on doing few hour lasting merge on one machine to have a consistent and nice looking version.&lt;br /&gt;&lt;br /&gt;The last most annoying thing in word processors is that the document is treated as one big stripe ( toilet paper ). When you add something the the beggining, the rest moves down. After that you have to go through the whole document and make changes, so you do not end up with blank pages, figures without descriptions and garbled tables. This is the feature inherited directly from typewriters, top bottom approach in editing texts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What is the answer to that ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my opinion the idea of word processors should be dramatically rethought and redesigned. Instead of having non usable WYSIWYG applications, we could work on texts using the WYSIWYM ( &lt;span style="font-style: italic;"&gt;What You See Is What You Mean&lt;/span&gt;&lt;span style="font-style: italic;"&gt;n )  &lt;/span&gt;idea, you just write what you 'mean' and the templating systems makes it look how you defined it. This is how LaTeX/LyX work and more or less the Pages application from Apple iWork. My intention is not to force to use LaTeX of course, I just really thing the pure idea of separation between data and presentation is great. We use it in programming, we use it in www, we use it almost everywhere, who not to use in publishing. The change would not be drastic, even transparent.&lt;br /&gt;Let's take LyX as example - being a graphical application, it still needs some LaTeX knowledge from the editor, but I think there is no limitation in creating an application, that will manage to present changes in on-line matter - you edit and instantly see the output document. ( in LyX/LaTeX environments, you have to clearly initiate the action of compiling to ex. PDF format ).&lt;br /&gt;&lt;br /&gt;I am a surprised by the fact that during last 20 years of home/office computing none of leading companies producing office suites ( Microsoft, Lotus, Sun ) did not try to change the main idea behind the word processors, the change would not affect drastically the users of the applications, and frankly they would not probably have much to say ( Microsoft has 90% of office suites market ).&lt;br /&gt;&lt;br /&gt;Any comments appreciated. Thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3731060551781440888?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3731060551781440888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/my-subjective-view-of-word-processors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3731060551781440888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3731060551781440888'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/my-subjective-view-of-word-processors.html' title='My subjective view of a word processor idea'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-8045794604645337271</id><published>2009-04-08T15:53:00.003+02:00</published><updated>2009-04-09T17:23:14.674+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>WS-* - would too many standards make WS end up like CORBA?</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Service Oriented Architecture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://csiwebservices.net/PublishingImages/j0433132%5B1%5D.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 244px; height: 244px;" src="http://csiwebservices.net/PublishingImages/j0433132%5B1%5D.jpg" alt="" border="0" /&gt;&lt;/a&gt;SOA - Service oriented architecture, a new and very trendy paradigm for building distributed IT systems is having it's 5 minutes in the enterprise IT world. Big software vendors like Microsoft, BEA, Sun and IBM, as well as many consulting companies develop more and more tools and platforms for SOA deployment. For most people, even those, who know more about service oriented architecture, the SOA term is associated only with Web Services and SOAP ( Simple Object Access Protocol ), they do not know that &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture"&gt;CORBA&lt;/a&gt;, &lt;a href="http://www.microsoft.com/com/default.mspx"&gt;DCOM &lt;/a&gt;, RMI or SunRPC can be also referred as SOA. I am not surprised though. While undertaking my research on SOA systems monitoring and management, I also got the impression, that everything that the industry is caring about is Web Services model. Just take a look at OASIS, the main standardization company for WS-* family and you will understand what I mean. There are plenty of different standards describing and trying to normalize WSs in heterogeneous systems. All for our good, but the question is : is it good for WSs itself?&lt;br /&gt;&lt;blockquote&gt;SOA ? You mean SOAP and web services?&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;A short CORBA story&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.softeam.com/images/corba.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 148px;" src="http://www.softeam.com/images/corba.jpg" alt="" border="0" /&gt;&lt;/a&gt;Back in the old days, when vendors used to be compatible only with their own standard, there came OMG ( &lt;span style="font-style: italic;"&gt;Object Management Group&lt;/span&gt; ) and created a specification for what industry took as a drug for their problems - CORBA ( &lt;span style="font-style: italic;"&gt;Common Object Request Broker Architecture&lt;/span&gt; ). CORBA was meant to be the glue, that combines various technologically different systems, using one concise and common interface, by standardization the way objects are described, serialized and transferred between systems. The idea was great, suddenly a great boom went off among vendors, clients and integrators. Many companies started to produce their CORBA implementations and ... it was the beginning of the end of poor CORBA. The problem was, that standardization was open, both software vendors and software users could participate in the process of standard creation and further modification. Of course both of these groups did not share common interests. Vendors did not want to change drastically their existing implementations, so they were trying to block major modifications in the standard, users wanted to ease development and opted for progress. The whole process was open, what according to Michi Henning in his article published in ACM Queue titled "&lt;a href="http://portal.acm.org/citation.cfm?id=1142044&amp;amp;coll=portal&amp;amp;dl=ACM&amp;amp;cfid=515653495&amp;amp;cftoken=515653495"&gt;The Rise and Fall of CORBA&lt;/a&gt;" was one of the major factors that made CORBA disappear.&lt;br /&gt;The second one, in my opinion, was the sophistication. Everyone who even tried to implement a simple CORBA application probably spent a few hours on simply trying to understand what is going on, not mentioning the complexity of the code. The last significant CORBA killer factor was that CORBA vendors used to choose from the specification parts they wanted to implement, omitting the problematic ones. Lack of some certification of such implementations led to the situation, where two different implementations could not connect to each other.... and we are talking about technology that was meant to be the cure for this problem...&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Web Services, OASIS and the future&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyone, who is into the Web Services technology is probably familiar with &lt;a href="http://www.oasis-open.org/home/index.php"&gt;OASIS&lt;/a&gt; ( &lt;span style="font-style: italic;"&gt;Organization for the Advancement of Structured Information Standards&lt;/span&gt; ), the consortium responsible for standardization of WS-*. Not everybody though, especially not developers, who use RAD tools, is familiar with WS standards, what is generally a very healthy approach.&lt;br /&gt;During my scientific work on different SOA environments I am obliged to understand the core of the problem, what in terms of WSs means reading and analyzing plenty of standards published under OASIS and other organizations, like ex. DMTF ( &lt;span style="font-style: italic;"&gt;Distributed Management Task Force &lt;/span&gt;). Im a big fan of SOA paradigm and distributed systems in general, as I can see it as the future of  computing, but cannot loose the impression, that WS-* are starting to become another CORBA. Of course Web Services are far better designed and implemented, than the Common Object Request Broker Architecture, most of the shortcomings of the latter are not simply present here, but still the "Keep It Simple Stupid" philosophy does not apply here. Too many optional standards is a threat to compatibility, and when this one is lost, WSs will start to lack its major advances - the interoperability, the scalability and the heterogeneous architecture. Let's hope vendors will try to keep their products compatible with each other and implement most of the standards. I might have got a wrong impression about the WS-*, so any comments are welcome :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Disclaimers:&lt;br /&gt;The image is from http://csiwebservices.net/Pages/Default.aspx page.&lt;br /&gt;The link to the ACM article may not work for non ACM members.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-8045794604645337271?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/8045794604645337271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ws-would-too-many-standards-make-ws-end.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8045794604645337271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/8045794604645337271'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ws-would-too-many-standards-make-ws-end.html' title='WS-* - would too many standards make WS end up like CORBA?'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-1116122965045557990</id><published>2009-04-06T13:48:00.000+02:00</published><updated>2009-04-06T13:59:38.037+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>FON a free wifi access</title><content type='html'>Today while browsing &lt;a href="http://engadget.com"&gt;engadget&lt;/a&gt; in my google reader feeds, I encountered an article about new FON wifi access point. I am generally  into networking, so I decided to read and know more about FON, the company providing free wifi access to the world.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does FON work?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With FON you can get free wifi ( or paid ) access wherever you see FON wifi around you. It bases on community of people willing to share part of their home internet connection to the surrounding. You can become a FON hotspot by buying the FON creafted access point or upgrading your Linksys firware. You also have to register to the site. What do you get in return? Undoubtly a joy of being a community member and a free hotspot, but also free access for yourself to other FON hotspots. Also you can sell your internet connection, but this seems to be non profitable ( the FON site says users make 3 EURO a month on average ).&lt;br /&gt;&lt;br /&gt;FON has three classes of members:&lt;br /&gt;- Foneros - those who give internet access for free&lt;br /&gt;- Aliens - those who use internet access for free&lt;br /&gt;- Bills - those who sell internet access&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can check FON hotspots around you using &lt;a href="http://maps.fon.com/"&gt;google maps.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-1116122965045557990?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/1116122965045557990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/fon-free-wifi-access.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1116122965045557990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/1116122965045557990'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/fon-free-wifi-access.html' title='FON a free wifi access'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3879017669818831241</id><published>2009-04-03T10:10:00.000+02:00</published><updated>2009-04-03T14:47:19.671+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='lyx'/><title type='text'>Collaborative work on documents</title><content type='html'>Scientific work in most cases is collaborative, that means more than one person creates and edits the document. In case when this involves only two editors, the problem is not so big, but when you have for example four or five of them, working on one document is becoming simply hell.&lt;br /&gt;&lt;br /&gt;Where normally people use Word or OO Writer, in such cases these types of programs are simply not usable at all. The .doc format or .odt even is not a real problem, but the idea of word processor alone is not very successful on the fields of scientific publications. From my experience, working on one Word compatible document collaboratively means continuous emailing and merging changes to have a valid working copy.&lt;br /&gt;Fortunately there is LaTeX, commonly used by academic societies for writing publications. For those who do not know what LaTeX is, wiki comes for help:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;LaTeX is most widely used by mathematicians, scientists, engineers, philosophers, scholars in &lt;a href="http://en.wikipedia.org/wiki/Academia" title="Academia"&gt;academia&lt;/a&gt; and the commercial world, and other professionals.&lt;sup id="cite_ref-0" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/LaTeX#cite_note-0" title=""&gt;&lt;span&gt;[&lt;/span&gt;1&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; As a primary or intermediate format (e.g. translating &lt;a href="http://en.wikipedia.org/wiki/DocBook" title="DocBook"&gt;DocBook&lt;/a&gt; and other &lt;a href="http://en.wikipedia.org/wiki/XML" title="XML"&gt;XML&lt;/a&gt;-based formats to &lt;a href="http://en.wikipedia.org/wiki/PDF" title="PDF" class="mw-redirect"&gt;PDF&lt;/a&gt;), LaTeX is used because of the high quality of &lt;a href="http://en.wikipedia.org/wiki/Typesetting" title="Typesetting"&gt;typesetting&lt;/a&gt; achievable by &lt;a href="http://en.wikipedia.org/wiki/TeX" title="TeX"&gt;TeX&lt;/a&gt;. The typesetting system offers programmable &lt;a href="http://en.wikipedia.org/wiki/Desktop_publishing" title="Desktop publishing"&gt;desktop publishing&lt;/a&gt; features and extensive facilities for automating most aspects of typesetting and desktop publishing, including numbering and cross-referencing, tables and figures, page layout and &lt;a href="http://en.wikipedia.org/wiki/Bibliography" title="Bibliography"&gt;bibliographies&lt;/a&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The biggest LaTeX/TeX advantage is that you focus on what you write, not on how it looks like, LaTeX styles and document classes define, how will your paper look like. You can also define your own styles, like article, book, etc. Also export to known formats, that look on every system the same is a powerful feature of TeX/LaTeX, you can export your work to PDF and be sure that people will see it the same ( taking under consideration, that they have fonts installed ).&lt;br /&gt;&lt;br /&gt;However writing in LaTeX is not so easy, for regular user it reminds programming, and basically it is. That is why there are many helping applications, but in my opinion the best of them is &lt;a href="http://www.lyx.org/"&gt;LyX&lt;/a&gt;, the GUI editor for LaTeX. It works on all of commonly used systems like Linux, Unix family, Windows and OSX. Under the nice GUI LyX format is a plain text file with more-or-less LaTeX like syntax. Why I mention this ? This is the reason it is easy to work collaboratively on LyX documents, using LyX built-in change tracking mechanism, or an external version control system like Subversion or GIT. This is in fact the method we use in out institute. Every publication has its own svn repository, where LyX files are stored. Working on one copy is just as easy as update/commit, and all changes are merged easily, as we still work on plain text underneath.&lt;br /&gt;&lt;br /&gt;Additionally if you use BibTeX, system for bibliografphy handling in LaTeX like systems, you can have separate repository used by everyone with bib databases to include easily in your publications.&lt;br /&gt;&lt;br /&gt;Summing up, I encourage everyone to use LaTeX/LyX for their publications, not only if You are a scientists, but in a normal regular work too.&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.lyx.org/"&gt;LyX homepage&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.latex-project.org/"&gt;LaTeX homepage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3879017669818831241?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3879017669818831241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/collaborative-work-on-documents.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3879017669818831241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3879017669818831241'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/collaborative-work-on-documents.html' title='Collaborative work on documents'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-3034021788814913104</id><published>2009-04-02T15:24:00.000+02:00</published><updated>2009-04-02T15:34:11.250+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu feelings</title><content type='html'>I was always linux enthusiast, but for last two years I used OSX on macbook pro. It is a nice combo, until it breaks. I went back to origins and bought dell d430 laptop and tried ubuntu for the first time. I was always a debian user, so ubuntu was more or less natural choice, as it strongly bases on it. My impression is simpy "wow". Everything works just out of the box on my dell, even the HDSPA built-in card from vodafone. After my 2 years absense in the topic of 'linux-on-desktop' I am simply shocked by what Canonical achieved with Ubu. I also stared to use gnome, and find it very usable ( I was always a KDE user ), but that does not mean I won't switch to kde 4 in future when it gets more stable. Now it is time when new ubuntu 9.04 goes live on 25th of april. I look forward especially to ext4 filesystem and new gnome, which improves some things I use. Of course there are some things that linux desktop lacks, and one of them is no nice IM application, like adiumX on OSX. Pidgin is nice, but... could be nicer. Im not a very demanding user, I generally need terminal, LyX, open office 3 , firefox and pidgin for normal work, the rest is just addition.&lt;br /&gt;&lt;br /&gt;PS. a nice thing i found in gnome is tracker, which is the answer for my needs of indexing plenty of sciencie publications in PDF. With tracker I can easily find an article, from which I remember only one word. Good job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-3034021788814913104?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/3034021788814913104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-feelings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3034021788814913104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/3034021788814913104'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/ubuntu-feelings.html' title='Ubuntu feelings'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632485387978385434.post-5650106760608336934</id><published>2009-04-02T14:24:00.001+02:00</published><updated>2009-04-02T14:34:48.690+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>New life, new blog</title><content type='html'>First post on my new blog, time to introduce myself. My name is Dariusz Dwornikowski and I live and work in Poznań beautiful city in western Poland. Recently I drastically changed my life, dropped business and decided to dedicate myself to science and go to back to Poznań University of Technology to work in Computer Science Institute as a researcher of SOA technologies. From september 2009 I am also starting offcially my PHD studies. Im thinking about thesis about distributed management of RESTful web services in SOA Grids, but that can change. Im also a great open source and linux enthusiast, using it in every day life. My interests besides distributed systems are networking, IT security, voip and unix operating systems. In my spare time I play table football and watch movies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8632485387978385434-5650106760608336934?l=dwornikowski.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwornikowski.blogspot.com/feeds/5650106760608336934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/new-life-new-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/5650106760608336934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632485387978385434/posts/default/5650106760608336934'/><link rel='alternate' type='text/html' href='http://dwornikowski.blogspot.com/2009/04/new-life-new-blog.html' title='New life, new blog'/><author><name>Dariusz Dwornikowski</name><uri>http://www.blogger.com/profile/16904108160109964022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_8oSGz6R0Hf4/Swha2x0CtvI/AAAAAAAAA1A/nLYpUH4Sbpk/S220/n629326488_1276209_6729.jpg'/></author><thr:total>0</thr:total></entry></feed>
