<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eugeni&#039;s blog&#187; mandriva</title>
	<atom:link href="http://dodonov.net/blog/category/mandriva/feed/" rel="self" type="application/rss+xml" />
	<link>http://dodonov.net/blog</link>
	<description>One blog to rule them all. Kinda.</description>
	<lastBuildDate>Wed, 01 Sep 2010 13:42:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>KDE Hacking</title>
		<link>http://dodonov.net/blog/2010/09/01/kde-hacking/</link>
		<comments>http://dodonov.net/blog/2010/09/01/kde-hacking/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 13:42:44 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=769</guid>
		<description><![CDATA[So, after a take on Metacity , I just went ahead and implemented the same quick workspace switching feature for KDE (namely, kwin) &#8211; with great help from Nicolas Lécureuil (a.k.a. Neoclust) of course! Basically, it works essentially like the same feature in xfwm4 &#8211; when you switch to a different workspace via a keyboard [...]]]></description>
			<content:encoded><![CDATA[<p>So, after a take on <a href="http://dodonov.net/blog/2010/05/06/gnome-hacking/">Metacity</a> , I just went ahead and implemented the same quick workspace switching feature for KDE (namely, kwin) &#8211; with great help from Nicolas Lécureuil (a.k.a. Neoclust) of course!</p>

<p>Basically, it works essentially like the same feature in xfwm4 &#8211; when you switch to a different workspace via a keyboard shortcut, and press the same shortcut again while on this workspace, it will bring you back to the previous one. So you can press ctrl-f2 to switch to from workspace 1 workspace 2, and when you press ctrl-f2 again kwin will recognize that you want switch back, to whatever workspace you were before, and will do it. An extremely handy quirk which I cannot live without anymore <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>I have to assume that I have never ever coded anything for KDE until yesterday, but it turned out to be extremely simple. KDE has its flaws, its infrastructure with billions of libraries and processes everywhere is hard to understand, but I actually was surprised on how easy it was.</p>

<p>So, without further words, the patch for kdebase4-workspace which adds this functionality follows (sorry for the formatting, but kde has some very long lines of code..):</p>

<pre><code>diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.cpp.switchback kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.cpp
--- kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.cpp.switchback 2010-09-01 09:10:02.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.cpp    2010-09-01 09:21:13.000000000 -0300
@@ -184,6 +184,7 @@ void KWinDesktopConfig::init()
     connect( m_ui-&gt;popupHideSpinBox, SIGNAL(valueChanged(int)), SLOT(changed()));
     connect( m_ui-&gt;desktopLayoutIndicatorCheckBox, SIGNAL(stateChanged(int)), SLOT(changed()));
     connect( m_ui-&gt;wrapAroundBox, SIGNAL(stateChanged(int)), SLOT(changed()));
+    connect( m_ui-&gt;switchBackBox, SIGNAL(stateChanged(int)), SLOT(changed()));
     connect( m_editor, SIGNAL(keyChange()), SLOT(changed()));
     connect( m_ui-&gt;allShortcutsCheckBox, SIGNAL(stateChanged(int)), SLOT(slotShowAllShortcuts()));
     connect( m_ui-&gt;effectComboBox, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
@@ -252,6 +253,8 @@ void KWinDesktopConfig::defaults()

     m_ui-&gt;wrapAroundBox-&gt;setChecked( true );

+    m_ui-&gt;switchBackBox-&gt;setChecked( false );
+
     m_editor-&gt;allDefault();

     emit changed(true);
@@ -285,6 +288,9 @@ void KWinDesktopConfig::load()
     KConfigGroup windowConfig( m_config, "Windows" );
     m_ui-&gt;wrapAroundBox-&gt;setChecked( windowConfig.readEntry&lt;bool&gt;( "RollOverDesktops", true ) );

+    // Quick switching back to previous desktop
+    m_ui-&gt;switchBackBox-&gt;setChecked( windowConfig.readEntry&lt;bool&gt;( "SwitchBackDesktops", false ) );
+
     // Effect for desktop switching
     // Set current option to "none" if no plugin is activated.
     KConfigGroup effectconfig( m_config, "Plugins" );
@@ -341,6 +347,9 @@ void KWinDesktopConfig::save()
     // Wrap Around on screen edge
     KConfigGroup windowConfig( m_config, "Windows" );
     windowConfig.writeEntry( "RollOverDesktops", m_ui-&gt;wrapAroundBox-&gt;isChecked() );
+    //
+    // Quickly back to previous desktop
+    windowConfig.writeEntry( "SwitchBackDesktops", m_ui-&gt;switchBackBox-&gt;isChecked() );

     // Effect desktop switching
     KConfigGroup effectconfig( m_config, "Plugins" );
diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.ui.switchback kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.ui
--- kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.ui.switchback  2010-09-01 09:09:59.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/kcmkwin/kwindesktop/main.ui 2010-09-01 09:59:02.000000000 -0300
@@ -7,7 +7,7 @@
     &lt;x&gt;0&lt;/x&gt;
     &lt;y&gt;0&lt;/y&gt;
     &lt;width&gt;572&lt;/width&gt;
-    &lt;height&gt;310&lt;/height&gt;
+    &lt;height&gt;334&lt;/height&gt;
    &lt;/rect&gt;
   &lt;/property&gt;
   &lt;layout class="QHBoxLayout" name="horizontalLayout"&gt;
@@ -141,6 +141,16 @@
          &lt;/property&gt;
         &lt;/widget&gt;
        &lt;/item&gt;
+       &lt;item&gt;
+        &lt;widget class="QCheckBox" name="switchBackBox"&gt;
+         &lt;property name="whatsThis"&gt;
+          &lt;string&gt;Enable this option if you want to remember and recall previous desktop when switching via keyboard shortcuts. E.g., if you switched to desktop 2 by pressing its shortcut, pressing it again while on desktop 2 will bring you back to the previous desktop.&lt;/string&gt;
+         &lt;/property&gt;
+         &lt;property name="text"&gt;
+          &lt;string&gt;Remember and recall previous desktop when switching via keyboard shortcuts&lt;/string&gt;
+         &lt;/property&gt;
+        &lt;/widget&gt;
+       &lt;/item&gt;
        &lt;item&gt;
         &lt;widget class="QGroupBox" name="groupBox_3"&gt;
          &lt;property name="title"&gt;
diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/kwin.kcfg.switchback kdebase-workspace-4.5.65svn1165394/kwin/kwin.kcfg
--- kdebase-workspace-4.5.65svn1165394/kwin/kwin.kcfg.switchback    2010-09-01 09:10:56.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/kwin.kcfg   2010-09-01 09:16:20.000000000 -0300
@@ -41,6 +41,7 @@
   &lt;entry key="ShadeHover" type="Bool" /&gt;
   &lt;entry key="GeometryTip" type="Bool" /&gt;
   &lt;entry key="RollOverDesktops" type="Bool" /&gt;
+  &lt;entry key="SwitchBackDesktops" type="Bool" /&gt;
   &lt;entry key="FocusStealingPreventionLevel" type="Int" /&gt;
   &lt;entry key="Placement" type="String" /&gt;
   &lt;entry key="AutoRaise" type="Bool" /&gt;
diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/options.cpp.switchback kdebase-workspace-4.5.65svn1165394/kwin/options.cpp
--- kdebase-workspace-4.5.65svn1165394/kwin/options.cpp.switchback  2010-09-01 09:12:09.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/options.cpp 2010-09-01 09:26:40.000000000 -0300
@@ -87,6 +87,8 @@ unsigned long Options::updateSettings()

     rollOverDesktops = config.readEntry("RollOverDesktops", true);

+    switchBackDesktops = config.readEntry("SwitchBackDesktops", false);
+
     legacyFullscreenSupport = config.readEntry( "LegacyFullscreenSupport", false );

 //    focusStealingPreventionLevel = config.readEntry( "FocusStealingPreventionLevel", 2 );
diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/options.h.switchback kdebase-workspace-4.5.65svn1165394/kwin/options.h
--- kdebase-workspace-4.5.65svn1165394/kwin/options.h.switchback    2010-09-01 09:12:07.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/options.h   2010-09-01 09:22:14.000000000 -0300
@@ -215,6 +215,11 @@ class Options : public KDecorationOption
          */
         bool rollOverDesktops;

+        /**
+         * whether or not quick switching back to previous desktop is allowed via keyboard shortcuts
+         */
+        bool switchBackDesktops;
+
         // 0 - 4 , see Workspace::allowClientActivation()
         int focusStealingPreventionLevel;

diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/workspace.cpp.switchback kdebase-workspace-4.5.65svn1165394/kwin/workspace.cpp
--- kdebase-workspace-4.5.65svn1165394/kwin/workspace.cpp.switchback    2010-05-20 08:42:10.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/workspace.cpp   2010-09-01 10:10:02.000000000 -0300
@@ -95,6 +95,7 @@ Workspace::Workspace( bool restore )
     , desktopGridSize_( 1, 2 ) // Default to two rows
     , desktopGrid_( new int[2] )
     , currentDesktop_( 0 )
+    , prevDesktop_( 0 )
     , desktopLayoutDynamicity_( false )
     , tilingEnabled_( false )
     // Unsorted
@@ -1403,6 +1404,15 @@ bool Workspace::setCurrentDesktop( int n
     StackingUpdatesBlocker blocker( this );

     int old_desktop = currentDesktop();
+
+    // Eugeni: are we trying to switch back to previous desktop?
+    if (options-&gt;switchBackDesktops &amp;&amp; (old_desktop == new_desktop ) &amp;&amp; (prevDesktop() &gt; 0) )
+        {
+        // go back to previous desktop
+        new_desktop = prevDesktop();
+        kDebug(1212) &lt;&lt; "Switching back to " &lt;&lt; new_desktop;
+        }
+
     if (new_desktop != currentDesktop() )
         {
         ++block_showing_desktop;
@@ -1413,6 +1423,7 @@ bool Workspace::setCurrentDesktop( int n
         ObscuringWindows obs_wins;

         currentDesktop_ = new_desktop; // Change the desktop (so that Client::updateVisibility() works)
+        prevDesktop_ = old_desktop;

         for( ClientList::ConstIterator it = stacking_order.constBegin();
             it != stacking_order.constEnd();
diff -p -up kdebase-workspace-4.5.65svn1165394/kwin/workspace.h.switchback kdebase-workspace-4.5.65svn1165394/kwin/workspace.h
--- kdebase-workspace-4.5.65svn1165394/kwin/workspace.h.switchback  2010-08-11 07:08:13.000000000 -0300
+++ kdebase-workspace-4.5.65svn1165394/kwin/workspace.h 2010-08-31 23:34:01.000000000 -0300
@@ -245,6 +245,10 @@ class Workspace : public QObject, public
          */
         int currentDesktop() const;
         /**
+         * @returns The ID of the previous desktop.
+         */
+        int prevDesktop() const;
+        /**
          * Set the current desktop to @a current.
          * @returns True on success, false otherwise.
          */
@@ -314,6 +318,7 @@ class Workspace : public QObject, public
         QSize desktopGridSize_;
         int* desktopGrid_;
         int currentDesktop_;
+        int prevDesktop_;
         QString activity_;
         bool desktopLayoutDynamicity_;

@@ -1142,6 +1147,11 @@ inline int Workspace::currentDesktop() c
     return currentDesktop_;
     }

+inline int Workspace::prevDesktop() const
+    {
+    return prevDesktop_;
+    }
+
 inline int Workspace::desktopAtCoords( QPoint coords ) const
     {
     return desktopGrid_[coords.y() * desktopGridSize_.width() + coords.x()];
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/09/01/kde-hacking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 quick rpm quirks</title>
		<link>http://dodonov.net/blog/2010/06/17/5-quick-rpm-quirks/</link>
		<comments>http://dodonov.net/blog/2010/06/17/5-quick-rpm-quirks/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 03:17:23 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=763</guid>
		<description><![CDATA[Some rpm quirks that can come quite handy sometimes. Specially for the ones who do not know how the rpm and spec files work . The first one goes to a quick command which displays the top packages that use the most of your hard drive: rpm -qa --qf="%{size} %{name}\n" &#124; sort -n This will [...]]]></description>
			<content:encoded><![CDATA[<p>Some rpm quirks that can come quite handy sometimes. Specially for the ones who do not know how the rpm and spec files work <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>The first one goes to a quick command which displays the top packages that use the most of your hard drive:</p>

<pre><code>rpm -qa --qf="%{size} %{name}\n" | sort -n
</code></pre>

<p>This will list all installed packages, sorting them by size. There are some limitations for that (for example, it does not works nicely with hard links), but it gives you a big picture.</p>

<p>The second one goes to the:</p>

<pre><code>rpm -qf /path/to/some/file
</code></pre>

<p>This will display which package the file you are looking at belongs to.</p>

<p>The third complements the third, and it is:</p>

<pre><code>rpm -Vf /path/to/some/file
</code></pre>

<p>It will discover to what package the file belongs to, and verify if this package was changed since the install. So if something suddenly stopped working, and you are unable to figure out why by looking at the configuration file, this could come handy.</p>

<p>Next one goes to:</p>

<pre><code>rpm -qf --scripts /path-to-some-file
</code></pre>

<p>If you notice that some command gets executed right after a package is installed, and the only thing you know about this package is one file it provides, this will show all such commands.</p>

<p>Fifth is:</p>

<pre><code>rpm -qa --qf '%{license}\n' | sort | uniq
</code></pre>

<p>This will show you all the licenses of all packages you have installed on the system.</p>

<p>And a bonus one goes to:</p>

<pre><code>rpm -qf --changelog /path/to/a/file
</code></pre>

<p>which shows the whole package changelog for the package that contains a specific file. This helps you find someone to blame when a package stops working <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/06/17/5-quick-rpm-quirks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Having fun with gource</title>
		<link>http://dodonov.net/blog/2010/06/02/having-fun-with-gource/</link>
		<comments>http://dodonov.net/blog/2010/06/02/having-fun-with-gource/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 11:44:22 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=757</guid>
		<description><![CDATA[I just packaged the gource package for Mandriva Cooker, so therefore it will be available in Mandriva 2010.1 &#8211; which will be released in just few weeks. While doing so, I was playing a bit with it, and it is an impressive piece of software. I often receive comments asking about &#8220;who is really working [...]]]></description>
			<content:encoded><![CDATA[<p>I just packaged the <strong>gource</strong> package for Mandriva Cooker, so therefore it will be available in Mandriva 2010.1 &#8211; which will be released in just few weeks.</p>

<p>While doing so, I was playing a bit with it, and it is an impressive piece of software. I often receive comments asking about &#8220;who is really working on Mandriva-specific software&#8221;. So, just to illustrate it in details, here goes a detailed explanation of who had commited something into <strong>drakx-net</strong> (Mandriva network stack) over the past year and half:</p>

<p><object width="580" height="360"><param name="movie" value="http://www.youtube.com/v/EX7MNaf0Bxg&#038;hl=en_US&#038;fs=1&#038;rel=0&#038;border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/EX7MNaf0Bxg&#038;hl=en_US&#038;fs=1&#038;rel=0&#038;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="360"></embed></object>
The command to generate this video was (inside drakx-net source directory, checked out with git):</p>

<pre><code>gource -640x360 -s 0.1 --stop-at-end --disable-progress --output-ppm-stream - | \
ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - drakx-net.mp4
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/06/02/having-fun-with-gource/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gnome hacking</title>
		<link>http://dodonov.net/blog/2010/05/06/gnome-hacking/</link>
		<comments>http://dodonov.net/blog/2010/05/06/gnome-hacking/#comments</comments>
		<pubDate>Thu, 06 May 2010 21:10:45 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=749</guid>
		<description><![CDATA[Every time I try to switch to a different desktop environment/window manager, there is just one simple feature which always make me go back to xfce &#8211; the possibility to quickly switch back to previous virtual desktop. A simple but extremely addictive feature, which only xfwm4 was offering&#8230; &#8230;until yesterday! I became tired on metacity [...]]]></description>
			<content:encoded><![CDATA[<p>Every time I try to switch to a different desktop environment/window manager, there is just one simple feature which always make me go back to <strong>xfce</strong> &#8211; the possibility to quickly switch back to previous virtual desktop. A simple but extremely addictive feature, which only xfwm4 was offering&#8230;</p>

<p>&#8230;until yesterday! I became tired on metacity not offering this feature, so I just went ahead and implemented it overnight (learning a lot about gnome development during the process).</p>

<p>So, if anyone out there was missing this feature &#8211; feel free to grab this patch and apply it to the metacity source. Basically, it will add one new gconf entry (<strong>switch_to_previous_workspace</strong>), and will make metacity remember the last workspace. So you can press <strong>ctrl-f2</strong> to switch to from workspace 1 workspace 2, and when you press <strong>ctrl-f2</strong> again metacity will recognize that you want switch back, to whatever workspace you were before, and will do it.</p>

<p>Once again, this is the beauty of the open source. If there is something you need, but nobody implemented it, you always have the possibility of just doing it yourself. At least, sometimes <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<pre><code>diff -p -up metacity-2.30.1/src/core/prefs.c.switch metacity-2.30.1/src/core/prefs.c
--- metacity-2.30.1/src/core/prefs.c.switch 2010-03-30 11:35:40.000000000 -0300
+++ metacity-2.30.1/src/core/prefs.c    2010-05-06 17:47:14.000000000 -0300
@@ -97,6 +97,7 @@ static char *cursor_theme = NULL;
 static int   cursor_size = 24;
 static gboolean compositing_manager = FALSE;
 static gboolean resize_with_right_button = FALSE;
+static gboolean switch_to_previous_workspace = TRUE;
 static gboolean force_fullscreen = TRUE;

 static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
@@ -412,6 +413,11 @@ static MetaBoolPreference preferences_bo
       &amp;resize_with_right_button,
       FALSE,
     },
+    { "/apps/metacity/general/switch_to_previous_workspace",
+      META_PREF_SWITCH_TO_PREVIOUS_WORKSPACE,
+      &amp;switch_to_previous_workspace,
+      FALSE,
+    },
     { NULL, 0, NULL, FALSE },
   };

@@ -1757,6 +1763,9 @@ meta_preference_to_string (MetaPreferenc

     case META_PREF_FORCE_FULLSCREEN:
       return "FORCE_FULLSCREEN";
+
+    case META_PREF_SWITCH_TO_PREVIOUS_WORKSPACE:
+      return "SWITCH_TO_PREVIOUS_WORKSPACE";
     }

   return "(unknown)";
@@ -2719,6 +2728,12 @@ meta_prefs_get_mouse_button_menu (void)
   return resize_with_right_button ? 2: 3;
 }

+guint
+meta_prefs_switch_to_previous_workspace (void)
+{
+  return switch_to_previous_workspace;
+}
+
 gboolean
 meta_prefs_get_force_fullscreen (void)
 {
diff -p -up metacity-2.30.1/src/core/screen-private.h.switch metacity-2.30.1/src/core/screen-private.h
--- metacity-2.30.1/src/core/screen-private.h.switch    2010-01-14 22:31:32.000000000 -0200
+++ metacity-2.30.1/src/core/screen-private.h   2010-05-06 17:47:14.000000000 -0300
@@ -80,7 +80,7 @@ struct _MetaScreen
   MetaUI *ui;
   MetaTabPopup *tab_popup;

-  MetaWorkspace *active_workspace;
+  MetaWorkspace *active_workspace, *last_workspace;

   /* This window holds the focus when we don't want to focus
    * any actual clients
diff -p -up metacity-2.30.1/src/core/workspace.c.switch metacity-2.30.1/src/core/workspace.c
--- metacity-2.30.1/src/core/workspace.c.switch 2010-01-14 22:31:32.000000000 -0200
+++ metacity-2.30.1/src/core/workspace.c    2010-05-06 18:00:39.000000000 -0300
@@ -377,7 +377,31 @@ meta_workspace_activate_with_focus (Meta
                 meta_workspace_index (workspace));

   if (workspace-&gt;screen-&gt;active_workspace == workspace)
-    return;
+  {
+      meta_verbose("Switching to same workspace detected, going back to previous one!!\n");
+      if (meta_prefs_switch_to_previous_workspace()) {
+          if (workspace-&gt;screen-&gt;last_workspace) {
+              meta_verbose("Going to desktop %d\n", meta_workspace_index(workspace));
+              meta_workspace_activate_with_focus(workspace-&gt;screen-&gt;last_workspace,
+                      NULL, timestamp);
+              return;
+          } else {
+              meta_verbose("No old workspace..\n");
+              return;
+          }
+      } else {
+          meta_verbose("Last workspace switching disabled..\n");
+          return;
+      }
+  }
+  else
+  {
+      if (workspace-&gt;screen-&gt;active_workspace)
+          meta_verbose("Updating last workspace.. current: %d, new: %d\n",
+                  meta_workspace_index(workspace-&gt;screen-&gt;active_workspace),
+                  meta_workspace_index(workspace));
+      workspace-&gt;screen-&gt;last_workspace = workspace-&gt;screen-&gt;active_workspace;
+  }

   if (workspace-&gt;screen-&gt;active_workspace)
     workspace_switch_sound(workspace-&gt;screen-&gt;active_workspace, workspace);
diff -p -up metacity-2.30.1/src/include/prefs.h.switch metacity-2.30.1/src/include/prefs.h
--- metacity-2.30.1/src/include/prefs.h.switch  2010-01-14 22:31:32.000000000 -0200
+++ metacity-2.30.1/src/include/prefs.h 2010-05-06 17:47:14.000000000 -0300
@@ -60,7 +60,8 @@ typedef enum
   META_PREF_CURSOR_SIZE,
   META_PREF_COMPOSITING_MANAGER,
   META_PREF_RESIZE_WITH_RIGHT_BUTTON,
-  META_PREF_FORCE_FULLSCREEN
+  META_PREF_FORCE_FULLSCREEN,
+  META_PREF_SWITCH_TO_PREVIOUS_WORKSPACE
 } MetaPreference;

 typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
diff -p -up metacity-2.30.1/src/metacity.schemas.in.in.switch metacity-2.30.1/src/metacity.schemas.in.in
--- metacity-2.30.1/src/metacity.schemas.in.in.switch   2010-05-06 17:47:14.000000000 -0300
+++ metacity-2.30.1/src/metacity.schemas.in.in  2010-05-06 18:01:16.000000000 -0300
@@ -4,6 +4,24 @@
     &lt;!-- General preferences --&gt;        

     &lt;schema&gt;
+      &lt;key&gt;/schemas/apps/metacity/general/switch_to_previous_workspace&lt;/key&gt;
+      &lt;applyto&gt;/apps/metacity/general/switch_to_previous_workspace&lt;/applyto&gt;
+      &lt;owner&gt;metacity&lt;/owner&gt;
+      &lt;type&gt;bool&lt;/type&gt;
+      &lt;default&gt;false&lt;/default&gt;
+      &lt;locale name="C"&gt;
+         &lt;short&gt;Remember and recall previous workspace when switching via keyboard shortcuts&lt;/short&gt;
+         &lt;long&gt;
+           Set this to true to allow to switch to previous workspace when
+           using the current workspace keybinding. For example, if you switched
+           from workspace 2 to workspace 1 by pressing keyboard shortcut for
+           workspace 1, pressing the same shortcut again while on workspace 1
+           will switch to workspace 2.
+         &lt;/long&gt;
+      &lt;/locale&gt;
+    &lt;/schema&gt;
+
+    &lt;schema&gt;
       &lt;key&gt;/schemas/apps/metacity/general/mouse_button_modifier&lt;/key&gt;
       &lt;applyto&gt;/apps/metacity/general/mouse_button_modifier&lt;/applyto&gt;
       &lt;owner&gt;metacity&lt;/owner&gt;
diff -p -up metacity-2.30.1/src/metacity.schemas.in.switch metacity-2.30.1/src/metacity.schemas.in
--- metacity-2.30.1/src/metacity.schemas.in.switch  2010-04-06 07:10:38.000000000 -0300
+++ metacity-2.30.1/src/metacity.schemas.in 2010-05-06 18:01:06.000000000 -0300
@@ -4,6 +4,24 @@
     &lt;!-- General preferences --&gt;        

     &lt;schema&gt;
+      &lt;key&gt;/schemas/apps/metacity/general/switch_to_previous_workspace&lt;/key&gt;
+      &lt;applyto&gt;/apps/metacity/general/switch_to_previous_workspace&lt;/applyto&gt;
+      &lt;owner&gt;metacity&lt;/owner&gt;
+      &lt;type&gt;bool&lt;/type&gt;
+      &lt;default&gt;false&lt;/default&gt;
+      &lt;locale name="C"&gt;
+         &lt;short&gt;Remember and recall previous workspace when switching via keyboard shortcuts&lt;/short&gt;
+         &lt;long&gt;
+           Set this to true to allow to switch to previous workspace when
+           using the current workspace keybinding. For example, if you switched
+           from workspace 2 to workspace 1 by pressing keyboard shortcut for
+           workspace 1, pressing the same shortcut again while on workspace 1
+           will switch to workspace 2.
+         &lt;/long&gt;
+      &lt;/locale&gt;
+    &lt;/schema&gt;
+
+    &lt;schema&gt;
       &lt;key&gt;/schemas/apps/metacity/general/mouse_button_modifier&lt;/key&gt;
       &lt;applyto&gt;/apps/metacity/general/mouse_button_modifier&lt;/applyto&gt;
       &lt;owner&gt;metacity&lt;/owner&gt;
@@ -247,7 +265,7 @@
       &lt;applyto&gt;/apps/metacity/general/theme&lt;/applyto&gt;
       &lt;owner&gt;metacity&lt;/owner&gt;
       &lt;type&gt;string&lt;/type&gt;
-      &lt;default&gt;Clearlooks&lt;/default&gt;
+      &lt;default&gt;Ia Ora Steel&lt;/default&gt;
       &lt;locale name="C"&gt;
          &lt;short&gt;Current theme&lt;/short&gt;
          &lt;long&gt;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/05/06/gnome-hacking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Development news</title>
		<link>http://dodonov.net/blog/2010/04/27/development-news/</link>
		<comments>http://dodonov.net/blog/2010/04/27/development-news/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 13:56:26 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=741</guid>
		<description><![CDATA[As our version freeze for Mandriva 2010.1 approaches quickly, I felt it was the right time to release new versions of msec, netprofile and drakguard.. and, as always, blog a bit about each of them. Starting with msec. The last release introduced a security summary gui, which was very warmly welcomed by the community. This [...]]]></description>
			<content:encoded><![CDATA[<p>As our version freeze for Mandriva 2010.1 approaches quickly, I felt it was the right time to release new versions of <strong>msec</strong>, <strong>netprofile</strong> and <strong>drakguard</strong>.. and, as always, blog a bit about each of them.</p>

<p>Starting with msec. The last release introduced a security summary gui, which was very warmly welcomed by the community. This new release further improves this gui, and also adds some interesting and useful features.</p>

<div id="attachment_742" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/04/msec1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/04/msec1-300x190.jpg" alt="" title="msecgui" width="300" height="190" class="size-medium wp-image-742" /></a><p class="wp-caption-text">New GUI layout. Among new features, it now displays when each periodic check was lust run, allows to run it instantly and view last results</p></div>

<p>As you can see, new GUI switched the layout a bit, and also added features to improve the usage of periodic checks. Now it is possible to run each check instantly, instead of waiting from cron to run it on periodic base, and also view the results of the last check.</p>

<div id="attachment_743" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/04/msec2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/04/msec2-300x140.jpg" alt="" title="msec check results" width="300" height="140" class="size-medium wp-image-743" /></a><p class="wp-caption-text">Simple visualization of msec periodic checks</p></div>

<p>Besides that, a few bugs were fixed, and an interesting new feature was added, based on a patch from Tiago Marques from Caixa Magica: support for ACL. This features was added initially to allow drakguard application to work together with msec, in order to restrict users from running applications they should not have access to.</p>

<p>How does it works? Basically, besides the usual filesystem permissions for each file, it is possible to specify users who should have additional permissions. For example, permissions for <strong>/usr/bin/somescaryapp</strong> could be set to <strong>750</strong>, <strong>but</strong> via ACL you could say that users <strong>eugeni</strong>, <strong>guest</strong> and <strong>friend</strong> could have read and execution permissions for it. This way, it is possible to extend the traditional unix access rules in a quite flexible way.</p>

<p>As for <strong>drakguard</strong>, most credit goes to Tiago Marques (if he manages to read this post, thanks a lot!). Among new features are more efficient GUI for managing all drakguard issues, and support for application blocking for specific users.</p>

<div id="attachment_744" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/04/drakguard1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/04/drakguard1-300x245.jpg" alt="" title="drakguard1" width="300" height="245" class="size-medium wp-image-744" /></a><p class="wp-caption-text">New initial drakguard gui</p></div>

<div id="attachment_745" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/04/drakguard2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/04/drakguard2-300x245.jpg" alt="" title="drakguard2" width="300" height="245" class="size-medium wp-image-745" /></a><p class="wp-caption-text">New drakguard interface for restricting application usage for specific users</p></div>

<p>This is one of the things I like the most about open source and community. If there is some functionality you need or want, you could just grab the code and implement it right away.</p>

<p>And finally, <strong>netprofile</strong>. Among some trivial bugfixes, it has one nice feature: support for custom services configuration. Turns out that while the way netprofile was working before, simple restarting some specific services when switching profiles, was enough for most use cases, it is not adequate for some cases. For example, you could want to run ypbind, cups and postfix in one profile, and run neither of them in another. Now it is possible to do so.</p>

<p>For this to work, it is extremely easy. Just switch to a different profile and disable/stop the services you don&#8217;t want, or enable/start the services you want to run on this profile. This will be saved automatically, just like all other settings, and the next time you switch to a profile your configuration will be restored.</p>

<p>There are some bugs left, and some features to be implemented yet. But in any case, as always, feel free to leave your opinion, suggestions and comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/04/27/development-news/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Msec summary screen</title>
		<link>http://dodonov.net/blog/2010/02/26/msec-summary-screen/</link>
		<comments>http://dodonov.net/blog/2010/02/26/msec-summary-screen/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 16:38:51 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=734</guid>
		<description><![CDATA[One of the most asked features for msec was to provide a &#8220;summary&#8221; screen, which could show the current state of system security to the user without making him go through all the possible security options and system tools. Since today, this features was added to msecgui, showing the summary for three of the most [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most asked features for msec was to provide a &#8220;summary&#8221; screen, which could show the current state of system security to the user without making him go through all the possible security options and system tools.</p>

<p>Since today, this features was added to <strong>msecgui</strong>, showing the summary for three of the most important parts of system security: the <strong>firewall</strong> status, <strong>security</strong> overview and status of <strong>system updates</strong>.</p>

<div id="attachment_735" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/02/msec_summary.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/02/msec_summary-300x190.jpg" alt="" title="msec_summary" width="300" height="190" class="size-medium wp-image-735" /></a><p class="wp-caption-text">Summary screen for msec</p></div>

<p>Of course, we all know that it is cooker version, and it is by no means final point on the UI design and functionalities <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . And, as usual, comments are more than welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/02/26/msec-summary-screen/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>More on msec</title>
		<link>http://dodonov.net/blog/2010/02/18/more-on-msec/</link>
		<comments>http://dodonov.net/blog/2010/02/18/more-on-msec/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 19:24:51 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=730</guid>
		<description><![CDATA[As promised in one of the past blog posts, a few more news about msec. Since 2009.1, msec was supporting an arbitrary number of custom security levels, providing two levels by default: standard, focused on casual desktops, and secure, focused on security-concerned machines. Clearly, this was not covering all the possible use cases, and, while [...]]]></description>
			<content:encoded><![CDATA[<p>As promised in one of the past blog posts, a few more news about msec.</p>

<p>Since <strong>2009.1</strong>, msec was supporting an arbitrary number of custom security levels, providing two levels by default: <strong>standard</strong>, focused on casual desktops, and <strong>secure</strong>, focused on security-concerned machines. Clearly, this was not covering all the possible use cases, and, while it was possible to create custom security levels for different users needs, few users actually dared to do so.</p>

<p>Starting with <strong>2010.1</strong>, msec will provide a larger number of custom, task-oriented security levels. Among such levels, initially are the <strong>netbook</strong> (focused on low-end machines, running mostly on batteries, with a single local user and no remote accesses); <strong>fileserver</strong> (focused on a network server, such as SAMBA, NFS, or a database server, where only authenticated users are allowed), and <strong>webserver</strong> (focused on a web-facing server, attending unauthenticated and unknown users). The idea is to allow users to focus on their specific tasks (e.g., creating a web server, or configuring the netbook), without going too deep into the configuration options.</p>

<p>The msecgui UI was also improved to support those levels, among with user-created custom levels:</p>

<div id="attachment_731" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2010/02/msec_levels.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2010/02/msec_levels-300x233.jpg" alt="" title="msec_levels" width="300" height="233" class="size-medium wp-image-731" /></a><p class="wp-caption-text">Msec levels selection, including the provided levels among with user-created ones</p></div>

<p>Besides those changes, the UI was simplified a bit thanks to a great cooker discussion and comments from Fabrice Facorat (and will be further improved in newer versions), the support for configuring the log retention period was introduced, and a few bugs were fixed.</p>

<p>More changes are still to be implemented in msec, but I thought that the ones I described in this post are interesting enough to deserve a new msec release.</p>

<p>Stay tuned for future updates!</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/02/18/more-on-msec/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Improving system speed, disk life and everything else in one small command</title>
		<link>http://dodonov.net/blog/2010/02/11/improving-system-speed-disk-life-and-everything-else-in-one-small-command/</link>
		<comments>http://dodonov.net/blog/2010/02/11/improving-system-speed-disk-life-and-everything-else-in-one-small-command/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 16:06:08 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=722</guid>
		<description><![CDATA[I just noticed this days that, according to smartctl, the hard disk on my notebook has reached 365 days on Power_On_Hours variable. As the notebook itself has almost 2 years of age (I bought it in March of 2008), it is almost a double birthday-combo . However, at this age, it is obvious that the [...]]]></description>
			<content:encoded><![CDATA[<p>I just noticed this days that, according to smartctl, the hard disk on my notebook has reached 365 days on <strong>Power_On_Hours</strong> variable. As the notebook itself has almost 2 years of age (I bought it in March of 2008), it is almost a double birthday-combo <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>However, at this age, it is obvious that the hard disk of the notebook was not prepared to endure such challenges nicely. Both of its speed (5400 RPMs), durability, capacity, and so on were targeted on a more light use.</p>

<p>On the other hand, the system has 3GB of RAM, which is more than enough for most of my tasks. So after some thinking, I&#8217;ve been using some small script to automatically improve the system performance by offloading the most I/O-consuming stuff to RAM for the past few months.</p>

<p>How does it works? Simple. I have a small script which grabs content of a disk directory which I expect to receive heavy use (for example, <strong>/usr/lib/firefox</strong>, or the rpm <strong>BUILD/</strong> directories which receive lots of I/O when building packages, and so on), and converts them into a RAM disk. This way, when anything inside such directory is accessed, it requires absolutely no hard disk I/O, the seek times are non-existent as well, and the throughput is incredible.</p>

<p>For example, if I build <strong>mozilla-thunderbird</strong> by using real hard disk BUILD directory, it takes almost 2 hours to build. If I use ramdisk for just the BUILD directory, the time required for such task drops down to about 30 minutes. The <strong>firefox</strong> startup time (both cold and hot &#8211; e.g., the first execution and consecutive ones) have the same time of about 1 second; and so on.</p>

<p>So, without further words, this is the script I am using:</p>

<pre><code>#!/bin/bash
#
# This script remounts a directory in tmpfs (ramdisk) to speed it up
#

DIR=$1
SIZE=$2

if [ ! "$UID" = "0" ]; then
    # this script must run by root. Let's try sudo'ing to root..
    exec sudo $0 $*
fi

if [ ! -d $DIR ]; then
    echo "Usage: $0 &lt;full path to a directory&gt;"
    exit 1
fi

if [ "a$SIZE" = "a" ]; then
    OPTIONS=""
else
    OPTIONS="-o size=$SIZE"
fi

# first, copy everything somewhere to reuse it later
TMP=`mktemp`
tar cpf $TMP $DIR

# remount dir as ramdisk
mount -t tmpfs $OPTIONS $DIR $DIR

# unpack everything back
(cd / &amp;&amp; tar xpf $TMP)
rm -f $TMP
</code></pre>

<p>To use it, just save it under a name like <strong>toram</strong> and use it on the directory you want to move to ramdisk. The second optional parameter is the size of the ramdisk to use &#8211; as by default tmpfs mounts itself with 50% of available ram, sometimes you may want to use more or less memory.</p>

<p>Just some examples on how to use it:</p>

<pre><code># toram `pwd`/BUILD (will remount current BUILD directory in RAM)
# toram /usr/lib/firefox-3.6 (will remount firefox directory in ram)
</code></pre>

<p>I hope this could be useful to someone <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/02/11/improving-system-speed-disk-life-and-everything-else-in-one-small-command/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Msec updates getting (mostly) ready for 2010.1</title>
		<link>http://dodonov.net/blog/2010/02/08/msec-updates-getting-mostly-ready-for-2010-1/</link>
		<comments>http://dodonov.net/blog/2010/02/08/msec-updates-getting-mostly-ready-for-2010-1/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:13:28 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=713</guid>
		<description><![CDATA[It has been quite some time since I last posted here about msec. For the past few weeks, it received some attention and now I guess many of the features I wanted to push for Mandriva 2010.1 are implemented. So I&#8217;ll describe the most interesting ones in this blog post (and save some for later [...]]]></description>
			<content:encoded><![CDATA[<p>It has been quite some time since I last posted here about <strong>msec</strong>. For the past few weeks, it received some attention and now I guess many of the features I wanted to push for <strong>Mandriva 2010.1</strong> are implemented. So I&#8217;ll describe the most interesting ones in this blog post (and save some for later <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>

<p>First of all, starting with <strong>Mandriva 2010.1</strong>, msec will support user-defined periodicity for all periodic security checks. Therefore, it is possible to specify if each test should be executed daily (like in all previous msec versions), weekly or even monthly. In my opinion, this feature is one of the most interesting among all others, because it allows you to fine-tune the balance between security checks and daily I/O load caused by some expensive checks.</p>

<p>By default, checks which require lots of I/O (e.g., checking for unowned files, or world-writable files, and so on) will run weekly on the <strong>standard</strong> security level. Why so? Because this check was responsible for approximately 80% of all time required to run the periodic checks, and on most of the machines its results did not differ between consecutive days. Surely, it is nice to have a daily notification of all those changes, but the I/O cost of it is unacceptable high. Of course, you can define the periodicity of all such checks to be <strong>daily</strong> when you want, by using <strong>msecgui</strong> application of editing the configuration file manually <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>Another interesting feature was the de-duplication of variables between main msec configuration file (<strong>security.conf</strong>) and the level configuration file (for example, <strong>level.standard</strong>). On previous versions, all variables were defined in <strong>security.conf</strong>, even if they have exactly the same value as the default one for the current security level. This way, it was easier to see all the configuration at once by looking into <strong>/etc/security/msec/security.conf</strong> file. On the other hand, it lead to duplication of almost all variables..</p>

<p>So for 2010.1, the behavior when saving the configuration file was modified to be more logical (and similar to the one of <strong>msecgui</strong>, which displays variables that differ from the default values for the security level in different way). If you want to redefine a variable, just specify it in <strong>security.conf</strong> and this change will take effect. If you want to disable a variable completely, just define it to an empty value (like, <strong>CHECK_SOMETHING=</strong>), like in previous versions, and it will be disabled.</p>

<p>To simplify this, we could use the following analogy: in previous msec versions (e.g., 2009.1 and 2010.0), the <strong>security.conf</strong> file contains the whole security configuration of msec plus the name of the security level which is used as base. In 2010.1, it contains the reference to the base security level plus only the variables which must be overridden for this level. In other words, on Mandriva 2010.1 just by looking at the msec security file it is possible to say &#8220;this machine is configured to use the same configuration as on <strong>standard</strong> security level, except those three checks that should be disabled).</p>

<p>There is yet another reason for this change, which will be described in details when it gets implemented (probably in a few coming weeks). So stay tuned for more news <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>Another feature was the possibility of running the RedHat <strong>sectool</strong> checks periodically, among with all other msec checks. Just install <strong>sectool</strong> package from the contrib, and its checks will be executed automatically by msec.</p>

<p>Additionally, the integration between <strong>msec</strong> and <strong>msecperms</strong> applications was improved, making it easier to switch security levels and creating custom levels.</p>

<p>Besides those changes, several msec messages were improved to make them easier to understand by non-geek users <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and, like usual, several bugs were fixed.</p>

<p>Like always, I am very interested in your feedback on those changed. Please, feel free to drop me a note whether you like these features, dislike them, or any other kind of comments about msec.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/02/08/msec-updates-getting-mostly-ready-for-2010-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>2009 movies</title>
		<link>http://dodonov.net/blog/2010/01/06/2009-movies/</link>
		<comments>http://dodonov.net/blog/2010/01/06/2009-movies/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 00:13:24 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=710</guid>
		<description><![CDATA[Since I first heard about the filming of the Lord of the Rings movies, my life was almost divided into two stages: before I heard about it, and after that. The Lord of the Rings was the first book I read (at age 4 or 5, I don&#8217;t remember exactly), and I read it at [...]]]></description>
			<content:encoded><![CDATA[<p>Since I first heard about the filming of the Lord of the Rings movies, my life was almost divided into two stages: before I heard about it, and after that. The Lord of the Rings was the first book I read (at age 4 or 5, I don&#8217;t remember exactly), and I read it at least 50 times since that. So the waiting that movie was really, really expected.</p>

<p>After the last of the LOTR movies, I was a bit lost. There was no more need to wait for the next movies. I felt almost like &#8216;the cinema has got to its top, and I don&#8217;t think any other movie will entertain me, and allow me to go to the other worlds as the LOTR did&#8217;. For several years, I was waiting for the next LOTR movies like a child who is waiting for the Santa&#8217;s gifts at the end of the year. And suddenly I felt like all the wishes were fulfilled.</p>

<p>However, some new movies appeared and made me feel <strong>almost</strong> as when I was waiting for the Fellowship of the Ring, The Two Towers and The Return of the King &#8211; movies like the Spiderman series, The Jason Bourne series, the last episode in the Starwars movies (well, the 3rd episode to be correct), Pirates of the Caribbean, 300, the new Batman and The Dark Knight movies, and many others. However, most of those movies appeared before 2009, so I started the year thinking &#8216;oh my.. this year will be a really boring one, with nothing interesting to watch&#8217;.</p>

<p>Well, to sum it in a few words.. <strong>I was completely wrong</strong>. The year of 2009 brought me a <strong>lot</strong> more excellent movies that I could possible hope. Just to name a few: Watchmen (until the very end of the year, I thought it would be simple the best movie in a long long time), 500 Days of Summer, Zombieland, Terminator Salvation, Inglorious Bastards, Taken, Star Trek, Pandorum (almost-the-best SciFi movie in a long long time), District 9, and many many others. I have to say that all those movies were great, and left a mark in my memories.</p>

<p>And then Avatar came and put them all into the background.</p>

<p>I already expected a lot from this movie, and also was quite afraid that it would not live up to the expectations. However, I had a lot of trust in James Cameron &#8211; the cinema magician who created Terminator, Aliens, True Lies, Abyss and Titanic.. and he made yet another cinema miracle. In my opinion, Avatar is the biggest happening in the cinema world of this decade. And it is specially true for the ones out there who happen live some part of their life in different worlds &#8211; worlds created by writers, cinema guys, or RPG games.</p>

<p>The writers manage to create great worlds, and make you believe that they are real in your mind. Role-playing games put you in those worlds, and make you part of it. But with Avatar, James Cameron was the first guy to in fact create a different world, and let us to live in it for a while. That world feels so real, that you forget about all the computer-generated graphics, effects, and a (few) plot holes, so you just lose a few hours of your real life to spend them on Pandora.</p>

<p>So, to sum it all up &#8211; if you haven&#8217;t done it yet, go watch Avatar &#8211; and, if possible, watch it in 3D. You&#8217;ll probably feel the same feeling as the people in the beginning of the past century had, by watching the first movies ever.</p>

<p>I think that resumes pretty much everything I have to say about it <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/01/06/2009-movies/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mandriva support and updates // 2009 followup</title>
		<link>http://dodonov.net/blog/2010/01/04/mandriva-support-and-updates-2009-followup/</link>
		<comments>http://dodonov.net/blog/2010/01/04/mandriva-support-and-updates-2009-followup/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 17:57:13 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=698</guid>
		<description><![CDATA[From time to time, several questions appear asking about the support for Mandriva products &#8211; either with bugfix updates, or the security ones. According to the policy, each update is assigned a specific advisory, which can affect one or more distributions. Besides, each advisory could receive an errata, to correct a regression caused by a [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time, several questions appear asking about the support for Mandriva products &#8211; either with bugfix updates, or the security ones. According to the policy, each update is assigned a specific <a href="http://www.mandriva.com/security/advisories" onclick="urchinTracker('/outgoing/www.mandriva.com/security/advisories?referer=');">advisory</a>, which can affect one or more distributions. Besides, each advisory could receive an errata, to correct a regression caused by a previous update. Moreover, most of the updates fall into the <strong>bugfix</strong> (e.g., fixing some bad behavior or crash or simple improving the application), or <strong>security</strong> (fixing a security issue which could lead to remote compromising of the system, denial of service or other nasty effects) categories. We also have the <strong>general</strong> updates category, but this is not that different from <strong>bugfix</strong> updates, so I&#8217;ll count both of them together here.</p>

<p>Now that we are entering the year 2010, I thought that it would be interesting to give you some quick follow-up on how many updates were done during the last few years.</p>

<p>In <strong>2009</strong>, there were a total of <strong>436</strong> security updates for all Mandriva-supported packages (e.g., the packages in Main repository), and a total of <strong>288</strong> bugfix updates. The bugfixes are usually provided by the package maintainers, who are responsible for issuing the fix/patch, properly testing the updated package, and send it to the secteam. Secteam does the final validation, signs the package with the update key, and releases the advisory (which is sent to a mailing list and to the Mandriva web site). Later, the packages are sent to the mirrors, and become available to the users.</p>

<p>With security updates, it is a bit different. The entire process is usually handled by the secteam, which is responsible for identifying the security issue, locating the relevant patch or solution, updating and testing the fix, and releasing the updated packages. After that, those updates have a similar fate to the bugfix ones (e.g., signing, releasing the advisory, and so on).</p>

<p>If we look into the detailed numbers, things become quite more interesting:</p>

<ul>
<li>In <strong>2006</strong>, we had 67 bugfix updates and 250 security updates. In total, <strong>10769</strong> RPM files were provided as updates.</li>
<li>In <strong>2007</strong>, there were 144 bugfix updates and 262 security updates, with a total of <strong>17786</strong> updated rpm files</li>
<li>In <strong>2008</strong>, we had 213 bugfix updates and 264 security updates, totaling <strong>25718</strong> rpms provided as updates</li>
<li>And in <strong>2009</strong>, there were 288 bugfix updates and 436 security updates, with a total of <strong>41024</strong> rpms provided as updates.</li>
</ul>

<p>So I&#8217;d say that Mandriva users are pretty well supported <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2010/01/04/mandriva-support-and-updates-2009-followup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cleaning dust on photos: or &#8220;In Gimp We Trust!&#8221;</title>
		<link>http://dodonov.net/blog/2009/12/29/cleaning-dust-on-photos-or-in-gimp-we-trust/</link>
		<comments>http://dodonov.net/blog/2009/12/29/cleaning-dust-on-photos-or-in-gimp-we-trust/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 17:55:30 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=670</guid>
		<description><![CDATA[A few weeks ago I finally realized my old wish: I bought a real camera for me: a Nikon D40 &#8211; which is, according to many, many people, is the best DSLR out there. At least for non-professionals. With just a few pictures it was already possible to note the difference &#8211; I could not [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I finally realized my old wish: I bought a <strong>real</strong> camera for me: a <strong>Nikon D40</strong> &#8211; which is, according to many, many people, is the best DSLR out there. At least for non-professionals.</p>

<p>With just a few pictures it was already possible to note the difference &#8211; I could not ever EVER got close to those pictures with all my previous cameras (like Nokia N95 and Sony CyberShot W90):</p>

<p><a href="http://www.flickr.com/photos/eugeni_dodonov/4207561962/" title="Sunset at Angra dos Reis by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4207561962/?referer=');"><img src="http://farm3.static.flickr.com/2496/4207561962_015b5d0c7a_m.jpg" width="240" height="160" alt="Sunset at Angra dos Reis" /></a>
<a href="http://www.flickr.com/photos/eugeni_dodonov/4128519991/" title="A flower and a tiny bee by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4128519991/?referer=');"><img src="http://farm3.static.flickr.com/2775/4128519991_3a36e078be_m.jpg" width="240" height="160" alt="A flower and a tiny bee" /></a>
<a href="http://www.flickr.com/photos/eugeni_dodonov/4124872929/" title="Rancho Panorama by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4124872929/?referer=');"><img src="http://farm3.static.flickr.com/2575/4124872929_af241b6977_m.jpg" width="240" height="159" alt="Rancho Panorama" /></a>
<a href="http://www.flickr.com/photos/eugeni_dodonov/4100678645/" title="A beautiful flower by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4100678645/?referer=');"><img src="http://farm3.static.flickr.com/2731/4100678645_73ae0286ec_m.jpg" width="240" height="160" alt="A beautiful flower" /></a></p>

<p>However, after a few days with my new camera, I found out that it came with some dust on its sensor. Not much, but clearly visible on pictures with uniform colors (like sky or white wall). For example, it is possible to see the dust spot on the left half of the following picture &#8211; if you zoom in, you&#8217;ll clearly see that there is some dark spot covering part of a cloud and appearing in the sky:</p>

<p><a href="http://www.flickr.com/photos/eugeni_dodonov/4100676249/" title="A lonely tree among clouds by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4100676249/?referer=');"><img src="http://farm3.static.flickr.com/2737/4100676249_d31300faff_m.jpg" width="240" height="160" alt="A lonely tree among clouds" /></a>
<a href="http://www.flickr.com/photos/eugeni_dodonov/4101433558/" title="A lonely tree 3 by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4101433558/?referer=');"><img src="http://farm3.static.flickr.com/2770/4101433558_8bc4b350d9_m.jpg" width="240" height="160" alt="A lonely tree 3" /></a></p>

<p>One could say &#8216;Ahh, but that is just a small tiny spot.. nobody will notice it&#8217;. But&#8230; I do notice it, and I don&#8217;t like it. So I started looking for solutions for this issue.</p>

<p>In first place, I tried cleaning the sensor using a air blower (without luck). The dust spot moved a bit with the air flow (a few microns) and landed to its new place (permanently, I afraid). The next step was to ask the official Nikon support in Brazil, which is located in São Paulo city, about 250km from where I live. Their answer was is that the sensor cleaning should cost around R$ 100 (about 60 US$) + shipping. Quite expensive in my opinion.</p>

<p>So the next step was to start thinking like a computer geek. The photo is digital, so it is nothing more than a bunch of bits <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . So there SHOULD be some software or at least algorithm suitable for cleaning this all. After a quick research, I found that there is the <strong>Nikon Capture NX software</strong> which removes the dust pretty well. However, it is</p>

<ul>
<li>commercial</li>
<li>expensive</li>
<li>orders you to take photos in <strong>RAW</strong> only. I like RAW, but&#8230; the memory card is not infinite.</li>
</ul>

<p>So another option was to clean the dust in gimp. Manually&#8230; and it is needless to say that this approach is.. well.. boring, time-consuming and pretty much futile.</p>

<p>However, when all the hope was, apparently, lost, the Great Google Gods sent me a wonderful link to the <a href="http://www.logarithmic.net/pfh/resynthesizer" onclick="urchinTracker('/outgoing/www.logarithmic.net/pfh/resynthesizer?referer=');">Resynthesizer plugin</a> &#8211; which is <strong>AMAZINGLY EFFICIENT</strong> in solving the dust issues.</p>

<p>So, dear readers, without other words, I&#8217;ll show you the few needed steps to fix the dust on your photos:</p>

<ol>
<li><p><strong>Install resynthesizer plugin</strong>. On Mandriva systems, you can cheat and run a magic <strong>urpmi gimp2-resynthesizer</strong> command which will do the trick. On other systems, go to the <a href="http://www.logarithmic.net/pfh/resynthesizer" onclick="urchinTracker('/outgoing/www.logarithmic.net/pfh/resynthesizer?referer=');">resynthesizer web site</a>, download, compile and install the plugin. it is trivial, so I won&#8217;t go into additional details here.</p></li>
<li><p><strong>Grab your dust-damaged image and open it in gimp</strong>. As you can see, there is a horrible dust on the left part of the otherwise-blue sky:</p></li>
</ol>

<div id="attachment_679" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res1-300x187.jpg" alt="" title="1" width="300" height="187" class="size-medium wp-image-679" /></a><p class="wp-caption-text">Gimp with the dust-cleaning victim</p></div>

<ol>
<li><strong>Select a region around the dust to remove</strong>:</li>
</ol>

<div id="attachment_680" class="wp-caption aligncenter" style="width: 296px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res2.jpg" alt="" title="2" width="286" height="271" class="size-full wp-image-680" /></a><p class="wp-caption-text">Selecting the dust to remove</p></div>

<ol>
<li><strong>Press CTRL-X to remove the selected area</strong>:</li>
</ol>

<div id="attachment_681" class="wp-caption aligncenter" style="width: 276px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res3.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res3.jpg" alt="" title="3" width="266" height="256" class="size-full wp-image-681" /></a><p class="wp-caption-text">Removing the dust</p></div>

<ol>
<li><strong>Now, select a bit larger region around the white spot</strong>:</li>
</ol>

<div id="attachment_682" class="wp-caption aligncenter" style="width: 245px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res4.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res4.jpg" alt="" title="4" width="235" height="239" class="size-full wp-image-682" /></a><p class="wp-caption-text">Selecting some space around the dust spot</p></div>

<ol>
<li><strong>Go to Filters->Map->Resynthesize</strong> and run the <strong>Resynthesize</strong> filter:</li>
</ol>

<div id="attachment_686" class="wp-caption aligncenter" style="width: 393px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res5.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res5.jpg" alt="" title="5" width="383" height="406" class="size-full wp-image-686" /></a><p class="wp-caption-text">The Resynthesizer plugin in all its glory</p></div>

<ol>
<li><strong>Wait, wait, and&#8230;</strong>:</li>
</ol>

<div id="attachment_684" class="wp-caption aligncenter" style="width: 255px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res6.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res6.jpg" alt="" title="6" width="245" height="215" class="size-full wp-image-684" /></a><p class="wp-caption-text">Magic!</p></div>

<ol>
<li><strong>That&#8217;s it!</strong>:</li>
</ol>

<div id="attachment_685" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/res7.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/res7-300x187.jpg" alt="" title="7" width="300" height="187" class="size-medium wp-image-685" /></a><p class="wp-caption-text">A perfect clear sky!</p></div>

<p>Of course, it all could be done manually in gimp. However, the <strong>Resynthesizer</strong> plugin just makes it easier and better.</p>

<p>So what is the result? A bit more magic + some <strong>Hugin</strong> hacking and&#8230;:</p>

<p><a href="http://www.flickr.com/photos/eugeni_dodonov/4225158661/" title="Panoramic view of Ilha Bela/SP, Brazil by eugeni_dodonov, on Flickr" onclick="urchinTracker('/outgoing/www.flickr.com/photos/eugeni_dodonov/4225158661/?referer=');"><img src="http://farm5.static.flickr.com/4044/4225158661_7136603c9b.jpg" width="500" height="197" alt="Panoramic view of Ilha Bela/SP, Brazil" /></a></p>

<p>Yes, that&#8217;s right. Every image on panorama had a dust spot, which I cleared up with Resynthesizer. So next time you encounter some dust on your photo, remember that there is a <strong>GREAT</strong> open-source plugin for gimp out there to help!</p>

<p>Enjoy, and have a Happy New Year! <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/12/29/cleaning-dust-on-photos-or-in-gimp-we-trust/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>New year, new car.. a tribute to Renault Megane, and a Merry Christmas message</title>
		<link>http://dodonov.net/blog/2009/12/25/new-year-new-car-a-tribute-to-renault-megane-and-a-merry-christmas-message/</link>
		<comments>http://dodonov.net/blog/2009/12/25/new-year-new-car-a-tribute-to-renault-megane-and-a-merry-christmas-message/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 17:11:57 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=648</guid>
		<description><![CDATA[Another year is coming to an end, and, as everything in life, time comes to retire an old car and switch to a new one. And this time has come for me as well &#8211; after 4 years with my precioussss Renault Megane, I switched to a new car. So now I feel that the [...]]]></description>
			<content:encoded><![CDATA[<p>Another year is coming to an end, and, as everything in life, time comes to retire an old car and switch to a new one. And this time has come for me as well &#8211; after 4 years with my <em>precioussss</em> Renault Megane, I switched to a new car. So now I feel that the 4-years experience was quite enough to get a good opinion about the Megane.</p>

<div id="attachment_654" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/megane.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/megane-300x225.jpg" alt="The first photo ever of my megane, taken in 2005" title="megane" width="300" height="225" class="size-medium wp-image-654" /></a><p class="wp-caption-text">The first photo ever of my megane, taken in 2005</p></div>

<p>Well, first of all, this was definitely the <strong>best</strong> car I ever had or driven. It is extremely stable, fast, easy to control and comfortable. Yet by some reason, it seems to be quite an outcast here in Brazil, and it leads to problems related to the repair parts and their prices.</p>

<p><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/megane3.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/megane3-300x225.jpg" alt="" title="megane" width="300" height="225" class="aligncenter size-medium wp-image-655" /></a></p>

<p>During those 4 years I never ever had any serious problems with this car, and I can recall at least 5 times when it really saved my life when any other car would have been completely destroyed or at least seriously damaged. The car&#8217;s stability is phenomenal, and its easy of control at any speed and in all situations are remarkable.</p>

<div id="attachment_657" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/12/speed.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/12/speed-300x225.jpg" alt="Do not try this at home :)" title="speed" width="300" height="225" class="size-medium wp-image-657" /></a><p class="wp-caption-text">Do not try this at home <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>

<p>So this post is sort of a tribute to my old Renault Megane. It was amazing to have you, and thanks for the ride! <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

<p>And, as the year is coming an end, I&#8217;d also wish a Merry Christmas and a happy 2010 to everyone who read, commented or just passed by and looked at this blog! See ya!</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/12/25/new-year-new-car-a-tribute-to-renault-megane-and-a-merry-christmas-message/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>One year at @mandriva</title>
		<link>http://dodonov.net/blog/2009/11/10/one-year-at-mandriva/</link>
		<comments>http://dodonov.net/blog/2009/11/10/one-year-at-mandriva/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 21:53:38 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=638</guid>
		<description><![CDATA[Well, the title says it all! Yep, one year has passed since I started working at Mandriva. Since then, it has been about 1100 SVN commits, about 300 closed bugz on bugzilla, around 65 security and bugfix advisories, and hundreds of git commits all around. If you are using Mandriva 2009.1 or 2010.0, you have [...]]]></description>
			<content:encoded><![CDATA[<p>Well, the title says it all! Yep, one year has passed since I started working at Mandriva. Since then, it has been about <strong>1100</strong> SVN commits, about <strong>300</strong> closed bugz on bugzilla, around <strong>65</strong> security and bugfix advisories, and hundreds of git commits all around. If you are using Mandriva <strong>2009.1</strong> or <strong>2010.0</strong>, you have certainly seen at least a bit of such changes &#8211; in msec, drakx-net, netprofile, net_monitor, tomoyo-gui, initscripts, shorewall, and others.</p>

<p>Of course, there also were some cooker breakages as well during this year <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . But, on the other hand, cooker is not fun at all when it is stable (albeit I am using it on my machine constantly).</p>

<p>So far, I can say that it is being a very cool experience <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Mandriva distributions is getting <a href="http://www.makeuseof.com/tag/mandriva-linux-2010-perhaps-the-best-linux-release-all-year/" onclick="urchinTracker('/outgoing/www.makeuseof.com/tag/mandriva-linux-2010-perhaps-the-best-linux-release-all-year/?referer=');">better</a> <a href="http://distrowatch.com/weekly.php?issue=20091109#feature" onclick="urchinTracker('/outgoing/distrowatch.com/weekly.php?issue=20091109_feature&amp;referer=');">and</a> <a href="http://linuxcritic.com/stories/20-Mandriva-Linux-2010-Review-and-Commentary.html" onclick="urchinTracker('/outgoing/linuxcritic.com/stories/20-Mandriva-Linux-2010-Review-and-Commentary.html?referer=');">better</a>, and I am very proud of making part of Mandriva team and being able to contribute a bit to its development.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/11/10/one-year-at-mandriva/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>last.fm is scaring me..</title>
		<link>http://dodonov.net/blog/2009/10/29/last-fm-is-scaring-me/</link>
		<comments>http://dodonov.net/blog/2009/10/29/last-fm-is-scaring-me/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 18:34:08 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=632</guid>
		<description><![CDATA[I&#8217;d say that about 13000 tracks in this counter were played with mpd and a few custom scripts to control it..]]></description>
			<content:encoded><![CDATA[<div id="attachment_633" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/10/last_fm.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/10/last_fm-300x120.jpg" alt="The number of played tracks is scaring.." title="last_fm" width="300" height="120" class="size-medium wp-image-633" /></a><p class="wp-caption-text">The number of played tracks is scaring..</p></div>

<p>I&#8217;d say that about 13000 tracks in this counter were played with <strong>mpd</strong> and a few custom scripts to control it..</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/10/29/last-fm-is-scaring-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>net(.*) updates</title>
		<link>http://dodonov.net/blog/2009/10/15/net-updates/</link>
		<comments>http://dodonov.net/blog/2009/10/15/net-updates/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:54:54 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=622</guid>
		<description><![CDATA[As Mandriva 2010 final release data approaches, the final retouches are being worked out on some of the tools I am taking care of. Net_monitor has evolved a lot since its first/new release. The interface was compacted, more features added and overall look-and-feel improved considerable. netprofile also received a few updates &#8211; most notable, the [...]]]></description>
			<content:encoded><![CDATA[<p>As Mandriva 2010 final release data approaches, the final retouches are being worked out on some of the tools I am taking care of.</p>

<p><strong>Net_monitor</strong> has evolved a lot since its first/new release. The interface was compacted, more features added and overall look-and-feel improved considerable.</p>

<div id="attachment_623" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/10/net_monitor1.png"><img src="http://dodonov.net/blog/wp-content/uploads/2009/10/net_monitor1-300x214.png" alt="net_monitor monitoring a wired connection" title="net_monitor" width="300" height="214" class="size-medium wp-image-623" /></a><p class="wp-caption-text">net_monitor monitoring a wired connection</p></div>

<div id="attachment_627" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/10/net_monitor2.png"><img src="http://dodonov.net/blog/wp-content/uploads/2009/10/net_monitor2-300x214.png" alt="net_monitor monitoring a wireless ad-hoc connection" title="net_monitor_wifi" width="300" height="214" class="size-medium wp-image-627" /></a><p class="wp-caption-text">net_monitor monitoring a wireless ad-hoc connection</p></div>

<p><strong>netprofile</strong> also received a few updates &#8211; most notable, the support for <strong>save</strong>, <strong>load</strong> and <strong>reset</strong> action, and a simple yet functional <strong>plymouth</strong> integration during boot:</p>

<div id="attachment_625" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/10/plymouth1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/10/plymouth1-300x249.jpg" alt="Selecting a profile on boot" title="plymouth1" width="300" height="249" class="size-medium wp-image-625" /></a><p class="wp-caption-text">Selecting a profile on boot</p></div>

<p><a href="http://dodonov.net/blog/wp-content/uploads/2009/10/plymouth2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/10/plymouth2-300x249.jpg" alt="plymouth2" title="plymouth2" width="300" height="249" class="aligncenter size-medium wp-image-626" /></a></p>

<p>I don&#8217;t know how useful this integration is however (at least, for me). Most of the time my computer is either in suspend or hibernating mode, so I would see this screen about once a month <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/10/15/net-updates/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>net_monitor lives again</title>
		<link>http://dodonov.net/blog/2009/09/25/net_monitor-lives-again/</link>
		<comments>http://dodonov.net/blog/2009/09/25/net_monitor-lives-again/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 12:52:55 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=581</guid>
		<description><![CDATA[Working on Mandriva network tools, I looked on one of the most essential ones the network monitor (net_monitor). It was introduced a couple of releases before, and was mostly doing its job. However, it has a number of flaws and lack of features that motivated us to look closer at it. The net_monitor currently used [...]]]></description>
			<content:encoded><![CDATA[<p>Working on Mandriva network tools, I looked on one of the most essential ones the network monitor (<strong>net_monitor</strong>). It was introduced a couple of releases before, and was mostly doing its job. However, it has a number of flaws and lack of features that motivated us to look closer at it.</p>

<div id="attachment_588" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/old.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/old-300x194.jpg" alt="Our old friend net_monitor, present in your favorite Mandriva distro!" title="old net_monitor" width="300" height="194" class="size-medium wp-image-588" /></a><p class="wp-caption-text">Our old friend net_monitor, present in your favorite Mandriva distro!</p></div>

<p>The <strong>net_monitor</strong> currently used in all Mandriva versions is written in <strong>perl</strong>, is using internal drakx-net api (and is, therefore, only usable on Mandriva), and also have some issues such as memory leaks and non-usual interface. After a few thoughts and discussions we came to conclusion that it would be more adequate to project and rewrite it from scratch, turning it more modular, expansible and focused on common use cases.</p>

<p>Initially, I thought on using perl to write it, so it would still be part of <strong>drakx-net</strong> suite. However, after thinking on the code and the way it should work I felt that my brain was going to melt down <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (perl is a nice language, but it is certainly not that compatible with <strong>me</strong>). So I ended up with python, which is my language of choice (together with <strong>C</strong>). Also, I&#8217;ve received many comments saying that the <strong>net_monitor</strong> is no more relevant, as every desktop environment provides its own network monitoring tool, and it should be dropped from <strong>drakx-net</strong>. By combining those issues, we came to decision that it would be more proper to separate <strong>net_monitor</strong> into a different package &#8211; this way, it won&#8217;t depend on any <strong>drakx-net</strong> internal functionalities, and user could uninstall it if required and use his own network monitoring tool if he wants to. And, at the same time, users would still have a cute little network monitoring application on their machines.</p>

<p>So, as a picture says more than a thousand words, I guess I&#8217;ll just add some pictures here than additional KBs of text <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (<b>EDIT:</b> please note that the look and features of net_monitor have changed significantly in Mandriva since this post):</p>

<div id="attachment_582" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor1-300x214.jpg" alt="net_monitor monitoring a wireless connection" title="net_monitor1" width="300" height="214" class="size-medium wp-image-582" /></a><p class="wp-caption-text">net_monitor monitoring a wireless connection</p></div>

<div id="attachment_583" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor2-300x214.jpg" alt="net_monitor monitoring a connection for which network accounting was not enabled" title="net_monitor2" width="300" height="214" class="size-medium wp-image-583" /></a><p class="wp-caption-text">net_monitor monitoring a connection for which network accounting was not enabled</p></div>

<div id="attachment_584" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor3.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor3-300x224.jpg" alt="net_monitor displaying some statistics about your network usage (provided by vnstat)" title="net_monitor3" width="300" height="224" class="size-medium wp-image-584" /></a><p class="wp-caption-text">net_monitor displaying some statistics about your network usage (provided by vnstat)</p></div>

<div id="attachment_585" class="wp-caption aligncenter" style="width: 249px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor4.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor4-239x300.jpg" alt="looking at daily traffic statistics on my notebook for the past month" title="net_monitor4" width="239" height="300" class="size-medium wp-image-585" /></a><p class="wp-caption-text">looking at daily traffic statistics on my notebook for the past month</p></div>

<div id="attachment_586" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor5.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor5-300x228.jpg" alt="...and hourly statistics..." title="net_monitor5" width="300" height="228" class="size-medium wp-image-586" /></a><p class="wp-caption-text">...and hourly statistics...</p></div>

<div id="attachment_587" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor6.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/net_monitor6-300x228.jpg" alt="...and finding our when I killed my bandwidth.." title="net_monitor6" width="300" height="228" class="size-medium wp-image-587" /></a><p class="wp-caption-text">...and finding our when I killed my bandwidth..</p></div>

<p>Surely, this is just an early and preliminary version, with many missing features and such. If you want to give it a try, just install <strong>net_monitor</strong> package, and it will create <strong>/usr/bin/net_monitor</strong> executable for you. It won&#8217;t conflict with existent <strong>net_monitor</strong> from <strong>drakx-net</strong> which is installed in /usr/sbin, so both of them may coexist on your system. If you look at <strong>/usr/share/doc/net_monitor/TODO</strong>, you&#8217;ll see some of the ideas that I intend to add to it, but the idea is to keep it simple and not transform it into an <strong>emacs</strong> of network monitoring <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . And, of course, feel free to add your comments and suggestions (and bug reports) here!</p>

<p>P.S.: Just to prevent comments like &#8216;you should focus on fixing bugs instead of wasting time writing new things&#8217;. <strong>Net_monitor</strong> is present in Mandriva for years now, and if you look at <a href="https://qa.mandriva.com/buglist.cgi?quicksearch=net_monitor" onclick="urchinTracker('/outgoing/qa.mandriva.com/buglist.cgi?quicksearch=net_monitor&amp;referer=');">bugzilla list</a> it has a number of bugs and issues. So I am not creating a new app &#8211; I am bringing back from the land of the dead an old one <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>

<p>P.P.S.: Answering in advance to another question &#8211; yes, it would work on any Linux distro which has python and pygtk. You&#8217;ll just have to add some tricks into your network startup scripts to enable vnstat integration, but it will work just fine even without that.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/25/net_monitor-lives-again/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Improving website scalability: image sizes</title>
		<link>http://dodonov.net/blog/2009/09/24/improving-website-scalability-image-sizes/</link>
		<comments>http://dodonov.net/blog/2009/09/24/improving-website-scalability-image-sizes/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 03:56:22 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=571</guid>
		<description><![CDATA[One of non-trivial tricks involved in web site scalability is the optimization of all image files. One of the sites I am helping to take care of has a front page with more than 350KB in .jpeg images. And, obviously, it takes lots of time to load and, considering the number of accesses, the bandwidth [...]]]></description>
			<content:encoded><![CDATA[<p>One of non-trivial tricks involved in web site scalability is the optimization of all image files. One of the sites I am helping to take care of has a front page with more than <strong>350KB</strong> in .jpeg images. And, obviously, it takes lots of time to load and, considering the number of accesses, the bandwidth is huge. Usually, those images can be optimized in photo editor, or saved with higher compression or lower quality, but sometimes there is not much else you can do. Or you think so.</p>

<p>One quick trick to improve this situation is by converting some images to png with ImageMagick and running <strong>pngcrush</strong> on them. A simple script can be used to do so:</p>

<pre><code>    #!/bin/bash
    totalsize=0
    for file in *jpg; do
            # file.jpg becomes file.png
            newfile=${file/jpg/png}
            # convert to png
            convert $file 1.png
            # compact with pngcrush
            pngcrush -brute 1.png $newfile &gt; /dev/null
            # calculate old and new sizes
            newsize=$(wc -c &lt; $newfile)
            oldsize=$(wc -c &lt; $file)
            if [ $newsize -lt $oldsize ]; then
                    echo "$file: reduced from $oldsize to $newsize bytes"
                    # remove old jpg file
                    rm -f $file
                    # replace all references to old file everywhere
                    sed -i -e "s/$file/$newfile/g" *
                    totalsize=$[$totalsize + $oldsize - $newsize]
            else
                    # old file is smaller, remove new file
                    rm -f $newfile
            fi
    done
    echo "total reduction: $totalsize"
    # remove temporary file
    rm -f 1.png
</code></pre>

<p>By running it on the website in question, it managed to shrink the front page by about <strong>200KB</strong> of image data. Considering <strong>10000</strong> daily accesses, it would save about <strong>2GB</strong> of network traffic per day.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/24/improving-website-scalability-image-sizes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>One game to rule them all</title>
		<link>http://dodonov.net/blog/2009/09/12/one-game-to-rule-them-all/</link>
		<comments>http://dodonov.net/blog/2009/09/12/one-game-to-rule-them-all/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 15:41:24 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=566</guid>
		<description><![CDATA[The following picture pretty much explains this post title: If you enjoy state-of-the-art ASCII graphics, infinite gameplay, endless game possibilities and want to spend most of the rest of your life trying to understand how to play this game , you&#8217;ll certainly enjoy it! The game page is here, and if you want a direct [...]]]></description>
			<content:encoded><![CDATA[<p>The following picture pretty much explains this post title:</p>

<div id="attachment_567" class="wp-caption aligncenter" style="width: 504px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/Learning_curve.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/Learning_curve.jpg" alt="Dward Fortress learning curve" title="Dwarf Fortress" width="494" height="480" class="size-full wp-image-567" /></a><p class="wp-caption-text">Dward Fortress learning curve</p></div>

<p>If you enjoy state-of-the-art ASCII graphics, infinite gameplay, endless game possibilities and want to spend most of the rest of your life trying to understand how to play this game <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , you&#8217;ll certainly enjoy it!</p>

<p>The game page is <a href="http://www.bay12games.com/dwarves/index.html" onclick="urchinTracker('/outgoing/www.bay12games.com/dwarves/index.html?referer=');">here</a>, and if you want a direct link to latest Linux version it is <a href="http://www.bay12games.com/dwarves/df_28_181_40d15_linux.tar.bz2" onclick="urchinTracker('/outgoing/www.bay12games.com/dwarves/df_28_181_40d15_linux.tar.bz2?referer=');">here</a>. Ohh, and if you want some a bit more user-friendly UI, check out <a href="http://www.dwarffortresswiki.net/index.php/Graphics" onclick="urchinTracker('/outgoing/www.dwarffortresswiki.net/index.php/Graphics?referer=');">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/12/one-game-to-rule-them-all/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Landing on Linux-Planet</title>
		<link>http://dodonov.net/blog/2009/09/12/landing-on-linux-planet/</link>
		<comments>http://dodonov.net/blog/2009/09/12/landing-on-linux-planet/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 14:57:27 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[Linux-Planet]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=560</guid>
		<description><![CDATA[Following yoho&#8217;s post, I thought it would be a good idea to join the Linux Planet project. My blog (well.. at least its technical part) is quite in line of the project&#8217;s goals: it is in English, it is technical, its content is all written by me, and it has the most reliable information out [...]]]></description>
			<content:encoded><![CDATA[<p>Following <a href="http://yoho.wordpress.com/2009/09/11/now-on-linux-planet/" onclick="urchinTracker('/outgoing/yoho.wordpress.com/2009/09/11/now-on-linux-planet/?referer=');">yoho&#8217;s</a> post, I thought it would be a good idea to join the <a href="http://www.linux-planet.net/" onclick="urchinTracker('/outgoing/www.linux-planet.net/?referer=');">Linux Planet</a> project. My blog (well.. at least its technical part) is quite in line of the project&#8217;s goals: it is in English, it is technical, its content is all written by me, and it has the most reliable information out there about few opensource projects (for example, msec and netprofile <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>

<p>So, why not? From now on, this blog will land on Linux-Planet too! <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/12/landing-on-linux-planet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Few msec updates</title>
		<link>http://dodonov.net/blog/2009/09/09/few-msec-updates/</link>
		<comments>http://dodonov.net/blog/2009/09/09/few-msec-updates/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 02:46:51 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=553</guid>
		<description><![CDATA[Time has come for some msec updates. With base on previous post, I was working (among other things) on few msec ideas. And now it looks like a good time to put them out to cooker. First of all, I added support for exceptions into msec periodic check. I wanted to make it as flexible [...]]]></description>
			<content:encoded><![CDATA[<p>Time has come for some <strong>msec</strong> updates.</p>

<p>With base on <a href="http://dodonov.net/blog/2009/09/02/msec-future-and-plans/">previous post</a>, I was working (among other things) on few msec ideas. And now it looks like a good time to put them out to cooker.</p>

<p>First of all, I added support for <strong>exceptions</strong> into msec periodic check. I wanted to make it as flexible as possible, and I think I managed to implement everything I wanted. Right now, for each supported periodic check, it is possible to define as many exceptions as necessary. So, for example, if you run a local mandriva mirror with unsecure permissions on files, or want to exclude certain rules from firewall check, or some local users that appear unsafe to msec are safe to you, you can tell it to msec, and it will not bother you about it anymore.</p>

<p>For this, <strong>/etc/security/msec/exceptions</strong> file is used, and it is possible to define as many rules as necessary for each check there. The syntax is quite simple: <code>RULE_NAME exception</code>. To illustrate, that&#8217;s what I put into my local exception list on my machine:</p>

<pre><code>CHECK_UNOWNED /home/chroot
CHECK_UNOWNED /home/images/chroot
CHECK_WRITABLE /home/chroot
CHECK_WRITABLE /home/images/chroot
CHECK_OPEN_PORT /deluge
CHECK_USER_FILES gdm
CHECK_OPEN_PORT eugeni:ircd
</code></pre>

<p>This way, I won&#8217;t receive msec alerts about unowned and world-writable permissions in chroots, about gdm home directory being accessible to the world, and about network ports used by deluge or connected to local ircd server. Each exception is a regexp, so the possibilities are endless.</p>

<p>Of course, it is possible to do it in the gui:</p>

<div id="attachment_554" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/msec1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/msec1-300x184.jpg" alt="Showing the list of configured exceptions in msecgui" title="msecgui exceptions" width="300" height="184" class="size-medium wp-image-554" /></a><p class="wp-caption-text">Showing the list of configured exceptions in msecgui</p></div>

<div id="attachment_555" class="wp-caption aligncenter" style="width: 366px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/09/msec2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/09/msec2.jpg" alt="Adding a new exception" title="msecgui new exception" width="356" height="162" class="size-full wp-image-555" /></a><p class="wp-caption-text">Adding a new exception</p></div>

<p>Besides that, as suggested in the last post, I also added a summary to periodic msec checks. So if you want to have a quick look on the results, you don&#8217;t have to read the entire mail.</p>

<p>Also, a few annoying bugs were fixed and few features were added.</p>

<p>But, besides that, I also contacted <a href="http://linsec.ca/blog/2009/09/02/rsec-msec-sectool-hmmm-i-smell-opportunities/" onclick="urchinTracker('/outgoing/linsec.ca/blog/2009/09/02/rsec-msec-sectool-hmmm-i-smell-opportunities/?referer=');">vdanen</a>, the author of the <strong>rsec</strong> tool, and the <a href="https://www.redhat.com/archives/sectool-list/2009-September/thread.html" onclick="urchinTracker('/outgoing/www.redhat.com/archives/sectool-list/2009-September/thread.html?referer=');">sectool guys</a> about some possible interaction between our projects. Hopefully, we&#8217;ll have some news soon.</p>

<p>Meanwhile, enjoy new msec and (as always) feel free to give your feedback over it.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/09/few-msec-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>msec future and plans</title>
		<link>http://dodonov.net/blog/2009/09/02/msec-future-and-plans/</link>
		<comments>http://dodonov.net/blog/2009/09/02/msec-future-and-plans/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 03:20:11 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=543</guid>
		<description><![CDATA[With recent posts by vdanen and adamw, and a recent cooker mailing list thread, it became clear that msec is a very important project/package, and it should deserve much more attention and feedback. As you probably know, msec underwent a huge redesign for Mandriva 2009.1, and it is getting a lot of attention for 2010.0. [...]]]></description>
			<content:encoded><![CDATA[<p>With recent posts by <a href="http://linsec.ca/blog/2009/08/25/monitor-your-system-for-threats-with-rsec-alerts/" onclick="urchinTracker('/outgoing/linsec.ca/blog/2009/08/25/monitor-your-system-for-threats-with-rsec-alerts/?referer=');">vdanen</a> and <a href="http://www.happyassassin.net/2009/09/01/test-days-boog-and-more/" onclick="urchinTracker('/outgoing/www.happyassassin.net/2009/09/01/test-days-boog-and-more/?referer=');">adamw</a>, and a recent <a href="http://lists.mandriva.com/cooker/2009-08/msg01086.php" onclick="urchinTracker('/outgoing/lists.mandriva.com/cooker/2009-08/msg01086.php?referer=');">cooker mailing list thread</a>, it became clear that msec is a very important project/package, and it should deserve much more attention and feedback.</p>

<p>As you probably know, msec underwent a <a href="http://wiki.mandriva.com/en/2009.1_Notes#msec_redesign" onclick="urchinTracker('/outgoing/wiki.mandriva.com/en/2009.1_Notes_msec_redesign?referer=');">huge redesign for Mandriva 2009.1</a>, and it is getting <a href="http://dodonov.net/blog/2009/06/26/msec-updates/">a lot of attention for 2010.0</a>. But that&#8217;s still not enough &#8211; even if it became a quite flexible and extensible package, it still has its rough edges, and I intend to solve them all. Of course, it won&#8217;t became a perfect package that would rule-them-all, but I intend to get as close to this objective as far as it is humanly possible <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<p>So, please, if you use msec, or <a href="http://linsec.ca/blog/2009/08/25/monitor-your-system-for-threats-with-rsec-alerts/" onclick="urchinTracker('/outgoing/linsec.ca/blog/2009/08/25/monitor-your-system-for-threats-with-rsec-alerts/?referer=');">rsec</a>, or <a href="http://www.happyassassin.net/2009/09/01/test-days-boog-and-more/" onclick="urchinTracker('/outgoing/www.happyassassin.net/2009/09/01/test-days-boog-and-more/?referer=');">sectool</a> or any other security-concerned framework &#8211; please, speak about what you want to see in them, what are the points you are missing, and what features were left unimplemented for the time being.</p>

<p>As for me, I have the following items in the roadmap:</p>

<ul>
<li>implement skip list/exceptions for msec, for every possible test, in a similar way to <a href="https://qa.mandriva.com/show_bug.cgi?id=53307" onclick="urchinTracker('/outgoing/qa.mandriva.com/show_bug.cgi?id=53307&amp;referer=');">mandriva bug #53307</a></li>
<li>do my best to provide a nice common source base for both msec and rsec (I hope vdanen would be interested in that as well). Right now it is possible to configure msec to behave <strong>exactly</strong> as rsec, doing security checks and nothing besides that, but that is not that trivial to do (well.. it is for me, but not for any casual user out there <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), and it should be beneficial to both projects</li>
<li>provide support for sectool plugins in msec &#8211; either directly, or by converting them to msec-parseable format</li>
<li>work with rsec/sectool/checksecurity/seccheck developers to provide a similar set of features for all those projects. We live in opensource world, and advances in one projects would certainly benefit all of us &#8211; specially in such critical area as system security.</li>
</ul>

<p>So, if you have suggestions, ideas, features or any sort of comments &#8211; please, speak. We&#8217;ll hear you.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/09/02/msec-future-and-plans/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>chrome rpm</title>
		<link>http://dodonov.net/blog/2009/08/31/chrome-rpm/</link>
		<comments>http://dodonov.net/blog/2009/08/31/chrome-rpm/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 15:42:33 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=527</guid>
		<description><![CDATA[For some time now I was using binary chrome files, as distributed by chromium web site. I tried building chrome from the source, but its requirements (a few GBs of free disk space + lots of time to compile everything) made me gave up from the idea. Instead, I wrapped up a simple script+spec file [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now I was using binary chrome files, as distributed by chromium web site. I tried building chrome from the source, but its requirements (a few GBs of free disk space + lots of time to compile everything) made me gave up from the idea. Instead, I wrapped up a simple script+spec file to convert binary chromium distribution to a mandriva RPM.</p>

<p>Please note that it is <strong>NOT</strong> the right way to do it, and it is in fact a big big hack &#8211; I simply grab the binary .zip from chromium site, repackage it as rpm, and define some rpm hacks to work around different shared library names. But it works fine for me (on i586), so I decided to share it in case someone else could be interested.</p>

<p>To install it with urpmi, the following would do the trick:</p>

<pre><code>urpmi.addmedia --mirrorlist http://eugeni.dodonov.net/rpm eugeni i586
urpmi chrome
</code></pre>

<p>this will install the browser startup script in <strong>/usr/bin/chrome</strong>, and also add an entry to the menu. Please note that this is a dirty hack <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  , but it makes it a bit easier to test new chromium packages without lots of manual tricks.</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/08/31/chrome-rpm/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>netprofile screencast</title>
		<link>http://dodonov.net/blog/2009/08/17/netprofile-screencast/</link>
		<comments>http://dodonov.net/blog/2009/08/17/netprofile-screencast/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 15:19:28 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=511</guid>
		<description><![CDATA[After a very helpful feedback on cooker mailing-list, I decided to post a more in depth screencast which illustrates how netprofile works. Let&#8217;s think about a simple use case. You are using your notebook at home, and everything is fine. However, every time you have to go to work, you have to change several settings [...]]]></description>
			<content:encoded><![CDATA[<p>After a very helpful feedback on cooker mailing-list, I decided to post a more in depth screencast which illustrates how <strong>netprofile</strong> works.</p>

<p>Let&#8217;s think about a simple use case. You are using your notebook at home, and everything is fine. However, every time you have to go to work, you have to change several settings related to your network connection, proxy configuration and firewall. Of course, you can do it all manually, or even wrap out a script, but.. there is no need for it with the new <strong>netprofile</strong>!</p>

<p>So, the goal of this post is to illustrate how to accomplish this task with new <strong>netprofile</strong> and updated <strong>drakx-net</strong> applications.</p>

<p>The first thing you have to do is to go to <strong>draknetprofile</strong> application, and create a new network profile (<strong>Update:</strong> scroll down to the botton of the post to see the actual <strong>draknetprofile</strong> screenshots):</p>

<div id="attachment_512" class="wp-caption aligncenter" style="width: 370px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/1.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/1.jpg" alt="draknetprofile graphical interface" title="draknetprofile" width="360" height="490" class="size-full wp-image-512" /></a><p class="wp-caption-text">draknetprofile graphical interface</p></div>

<p>When you create a new profile, you have to give it a name (for example, <strong>work</strong>):</p>

<div id="attachment_513" class="wp-caption aligncenter" style="width: 382px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/2.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/2.jpg" alt="Creating new network profile" title="new profile" width="372" height="162" class="size-full wp-image-513" /></a><p class="wp-caption-text">Creating new network profile</p></div>

<p>After you are finished, this new profile will be created and, automatically, activated:</p>

<div id="attachment_514" class="wp-caption aligncenter" style="width: 429px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/3.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/3.jpg" alt="New network profile was created and activated" title="netprofile created" width="419" height="145" class="size-full wp-image-514" /></a><p class="wp-caption-text">New network profile was created and activated</p></div>

<p>From now on, whey you use other <strong>drakx-net</strong> application, they will detect that you have multiple network profiles, and show you some helpful text to let you know what profile you are using currently. So you can configure your firewall:</p>

<div id="attachment_515" class="wp-caption aligncenter" style="width: 630px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/4.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/4.jpg" alt="firewall configuration with new network profile" title="drakfirewall" width="620" height="434" class="size-full wp-image-515" /></a><p class="wp-caption-text">firewall configuration with new network profile</p></div>

<p>Your network connections:</p>

<div id="attachment_516" class="wp-caption aligncenter" style="width: 560px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/5.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/5.jpg" alt="Configuring network settings for new network profile" title="drakconnect" width="550" height="384" class="size-full wp-image-516" /></a><p class="wp-caption-text">Configuring network settings for new network profile</p></div>

<p>Your proxy settings:</p>

<div id="attachment_517" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/6.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/6-300x210.jpg" alt="proxy configuration for new network profile" title="drakproxy" width="300" height="210" class="size-medium wp-image-517" /></a><p class="wp-caption-text">proxy configuration for new network profile</p></div>

<p>And other network settings you want:</p>

<div id="attachment_518" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/7.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/7-300x263.jpg" alt="network center displaying currently used profile" title="draknetcenter" width="300" height="263" class="size-medium wp-image-518" /></a><p class="wp-caption-text">network center displaying currently used profile</p></div>

<p>When you go back home, you simply right-click on the <strong>net_applet</strong> tray icon and activate the <strong>default</strong> profile again:</p>

<div id="attachment_519" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/9.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/9-300x93.jpg" alt="net_applet switching profiles" title="net_applet" width="300" height="93" class="size-medium wp-image-519" /></a><p class="wp-caption-text">net_applet switching profiles</p></div>

<p>And this will (almost) instantly restore your settings stored on the <strong>default</strong> profile:</p>

<div id="attachment_520" class="wp-caption aligncenter" style="width: 310px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/8.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/8-300x263.jpg" alt="draknetcenter with default profile" title="draknetcenter" width="300" height="263" class="size-medium wp-image-520" /></a><p class="wp-caption-text">draknetcenter with default profile</p></div>

<p>You can repeat this procedure for any other profile and configuration. Of course, if you do not want to use <strong>netprofile</strong> at all, everything will just work.</p>

<p>I hope this clarifies a bit the <strong>netprofile</strong> application, and how it can help you to simplify your life in different network environment.</p>

<p><strong>EDIT:</strong> Updating this post, this is how <strong>draknetprofile</strong> looks in <a href="http://wiki.mandriva.com/en/2010.0_Beta" onclick="urchinTracker('/outgoing/wiki.mandriva.com/en/2010.0_Beta?referer=');">Mandriva 2010 Beta</a>:</p>

<div id="attachment_523" class="wp-caption aligncenter" style="width: 370px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/a.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/a.jpg" alt="Default netprofile view, with modules details hidden in Advanced section" title="draknetprofile" width="360" height="339" class="size-full wp-image-523" /></a><p class="wp-caption-text">Default netprofile view, with modules details hidden in Advanced section</p></div>

<div id="attachment_524" class="wp-caption aligncenter" style="width: 370px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/b.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/b.jpg" alt="Advanced view of draknetprofile, showing modules configuration" title="Advanced view" width="360" height="511" class="size-full wp-image-524" /></a><p class="wp-caption-text">Advanced view of draknetprofile, showing modules configuration</p></div>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/08/17/netprofile-screencast/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>netprofile 0.20: the empire strikes back</title>
		<link>http://dodonov.net/blog/2009/08/14/netprofile-0-20-the-empire-strikes-back/</link>
		<comments>http://dodonov.net/blog/2009/08/14/netprofile-0-20-the-empire-strikes-back/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 17:28:40 +0000</pubDate>
		<dc:creator>eugeni</dc:creator>
				<category><![CDATA[devel]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[mandriva]]></category>

		<guid isPermaLink="false">http://dodonov.net/blog/?p=501</guid>
		<description><![CDATA[After the last-year msec rewrite for Mandriva 2009.1, my goal was to do something similar with netprofile, yet another Mandriva-specific tool, with lots of unique functionalities, but.. abandoned for about 4 years. What is netprofile? The idea of this application is quite simple. For different network environments one requires different network settings. For example, you [...]]]></description>
			<content:encoded><![CDATA[<p>After the <a href="http://dodonov.net/blog/2009/02/04/first-post-for-planetmandriva/">last-year msec rewrite for Mandriva 2009.1</a>, my goal was to do something similar with netprofile, yet another Mandriva-specific tool, with lots of unique functionalities, but.. <a href="http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/netprofile/" onclick="urchinTracker('/outgoing/svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/netprofile/?referer=');">abandoned for about 4 years</a>.</p>

<p>What is <strong>netprofile</strong>? The idea of this application is quite simple. For different network environments one requires different network settings. For example, you may use a fixed IP at home, with firewall disabled, and no proxy. At work, you must use a corporate proxy and a DHCP address for your ethernet connection. And while at a LAN house or Internet cafe, a full-featured firewall must be used, your ethernet connection disabled and a tor proxy (for example) to be in effect.</p>

<p>How to achieve this in a working system? Usually you must manually reconfigure the network settings, edit configuration files for network, firewall and proxy, and so on. And this is where <strong>netprofile</strong> comes into action.</p>

<p>The <strong>netprofile</strong> uses the concept of network profiles to represent different network environments. You start with the &#8216;default&#8217; profile, and you may use your system normally. If you want to setup a different network environment, you may &#8216;switch&#8217; to a different profile (a new profile will be created if necessary). Your current settings will be saved to your previous profile, and all changes to system configuration will now apply to your new profile.</p>

<p>To illustrate:</p>

<ul>
<li>You configure your system to use fixed IP address and a specific firewall configuration.</li>
<li>You go to work, where different network environment takes place. You switch to the work profile (&#8216;netprofile switch work&#8217;, or using net_applet gui), and if it is the first time you use this profile, it is created with base on your current settings.</li>
<li>You configure your network card to use DHCP, configure your corporate-specific proxy and firewall settings, and continue using your machine normally.</li>
<li>When you come back home, you switch the profile back to default, and your previous settings are restored.</li>
</ul>

<p>You may also specify what network profile to use on boot, by passing the &#8216;PROFILE=<profile name>&#8216; option to the boot loader. If you have multiple profiles, and no boot parameter was specified, a menu dialog will appear on boot asking you to select the profile to use.</p>

<p>The new netprofile is based on modular architecture. While we have a core application (<code>netprofile</code>), all functionality is performed by modules. Right now we have the following modules:</p>

<ul>
<li>network &#8211; to store/restore network settings: ethernet, ppp, isdn, wireless and other connection settings.</li>
<li>firewall &#8211; to manage firewall (iptables and shorewall) settings</li>
<li>firewall6 &#8211; to manage firewall settings for IPv6 networks</li>
<li>proxy &#8211; to manage system-wide proxies.</li>
</ul>

<p>Also, I am thinking on the following modules:</p>

<ul>
<li>netfs &#8211; to manage remote shares and network file systems. For example, at work you may access a centralized NFS server, and at home a SMBFS/CIFS connection to your home server.</li>
<li>authentication &#8211; you may use local users at home, and ldap/yp authentication at work. Transparently. With one mouse click/command to switch between them <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</li>
</ul>

<p>The inevitable question: why do we need it if we have NetworkManager and similar apps? Well, I have a few arguments:</p>

<ul>
<li>NetworkManager is great, has a modular design, and also supports network profiles. However, it is focused on network settings only, and not on proxy, firewall, authentication, and so on.</li>
<li>NetworkManager is also based on a pluggable architecture. However, it is not that easy to write plugins for it.</li>
<li>Not all distributions support NetworkManager. Netprofile, on its turn, will work on any unix system (or, even better, on anything that support running shell scripts. Yes, you can use it on windows too, with a few hacks <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). Of course, it works better on Mandriva because it has <strong>drakxtools</strong> &#8211; Mandriva-specific scripts and applications. And we have <strong>draknetprofile</strong> as part of <strong>drakxtools</strong>, which works as shown on the following screenshot:</li>
</ul>

<div id="attachment_502" class="wp-caption alignnone" style="width: 370px"><a href="http://dodonov.net/blog/wp-content/uploads/2009/08/draknetprofile.jpg"><img src="http://dodonov.net/blog/wp-content/uploads/2009/08/draknetprofile.jpg" alt="draknetprofile application to control netprofile profiles in Mandriva Linux" title="draknetprofile" width="360" height="490" class="size-full wp-image-502" /></a><p class="wp-caption-text">draknetprofile application to control netprofile profiles in Mandriva Linux</p></div>

<p>That&#8217;s it for now. If you want to experiment with netprofile, feel free to download it and play with it. It should be available on next Mandriva Linux 2010.0 release together with many other exciting new features <img src='http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  !</p>
]]></content:encoded>
			<wfw:commentRss>http://dodonov.net/blog/2009/08/14/netprofile-0-20-the-empire-strikes-back/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
