<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>L&#039;ardoise eduvax</title>
	<link>https://www.eduvax.net/</link>
	<language>en</language>
	<description>Blog, free software projects, computer tips and more</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://www.eduvax.net/feed.php?rss" />
	<lastBuildDate>Sun, 01 May 2016 21:51:00 +0200</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>CTRunner: CPPUnit console test runner.</title> 
		<link>https://www.eduvax.net/index.php?article13/ctrunner-cppunit-console-test-runner</link>
		<guid>https://www.eduvax.net/index.php?article13/ctrunner-cppunit-console-test-runner</guid>
		<description>&lt;p&gt;Here is a simple console test runner for CPPUnit I&#039;ve created to ease running script from make target and display log progression on console using standard log presentation (one line per message: data, thread, severity, message content).&lt;/p&gt;&lt;p&gt;Source code is a single &lt;a href=&quot;https://www.eduvax.net/files/ctrunner.cpp&quot; title=&quot;ctrunner source&quot;&gt;c++ file&lt;/a&gt;. To compile this file, use the following command that should run on many linux systems:&lt;/p&gt;

&lt;pre&gt;g++ -o ctrunner ctrunner.cpp -I&amp;lt;path to cppunit include dir&amp;gt; -L&amp;lt;path to cppunit lib dir&amp;gt; -lcppunit -ldl&lt;/pre&gt;

&lt;p&gt;Once compiled, run ctrunner directly from your shell, scripts or makefiles:&lt;/p&gt;

&lt;pre&gt;ctrunner [-x &amp;lt;xml output file&amp;gt;] &amp;lt;test plugin&amp;gt; [&amp;lt;test plugin&amp;gt;]* [+|-f &amp;lt;regex filter&amp;gt;]*&lt;/pre&gt;

&lt;p&gt;Command arguments :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;lt;test plugin&amp;gt;: path to .so file containing the test suites to run. &lt;/li&gt;
&lt;li&gt;-x &amp;lt;xml output file&amp;gt;: paht to xml output file. CTRunner tries to math the JUnit task xml format. &lt;/li&gt;
&lt;li&gt;+f &amp;lt;regex&amp;gt;: run only tests having a name that matches the regex. &lt;/li&gt;
&lt;li&gt;-f &amp;lt;regex&amp;gt;: run only tests havinf a name that doesn&#039;t match the regex.&lt;/li&gt;
&lt;/ul&gt;</description>
		<pubDate>Sun, 01 May 2016 21:51:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Tinis - Tiny and simplistic Network Information System</title> 
		<link>https://www.eduvax.net/index.php?article12/tinis-tiny-and-simplistic-network-information-system</link>
		<guid>https://www.eduvax.net/index.php?article12/tinis-tiny-and-simplistic-network-information-system</guid>
		<description>&lt;p&gt;Tinis is a small script to suppport sharing of some data among few hosts of a small network. It is designed to be as simple as possible to avoid the management overload of the widely used network information systems such as NIS, DNS, LDAP, that are also sometime a bit tricky to setup.&lt;/p&gt;&lt;p&gt;If you have only a reduce set of host that have to share a few data table (typically some parts of /etc files like /etc/passwd for logins), and don&#039;t want to setup huge things trying to integrate nss, ldap, NIS or samba, tinis can help you. Tinis is just a script able to patch any file using tag in-closed in comments to insert data from another (remote) file section. It can update a single file or update a file set defined in the only configuration file /etc/tinis.conf.&lt;/p&gt;

&lt;p&gt;How to use tinis :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;download &lt;a href=&quot;https://www.eduvax.net/files/tinis&quot;&gt;tinis&lt;/a&gt; and copy it in an appropriate location of you file system (personally I choose /sbin) and set executable.&lt;/li&gt;
&lt;li&gt;for each file to be patched by tinis, add some tinis tags to define tinis managed sections :&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;#&amp;lt;&amp;lt; section\_name host:source\_file\_path
#&gt;&gt; section\_name&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;on the remote host provide source data, define inside each file containing to be shared data the shared section (yes you can share only part of a file) :&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;#&amp;lt;&amp;lt; section\_name 
... shared data ...
#&gt;&gt; section\_name&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;trigger a file update : &lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;$ tinis /path/of/file/to/update&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;trigger a file set (defined in /etc/tinis.conf, one file per line) &lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;$ tinis update&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;as tinis use scp to fetch remote files containg source data, you may need to share public key across your hosts to grant file copy without password entry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;automate file update : regarding the update policy you want to set up use cron or sysinit scripts to invoke automatically tinis update each time you need.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: Here is how to configure your /etc/hosts files to use tinis as a dummy DNS to share IP addresses of 3 host (alpha, beta and gamma), where alpha is the hosts name database master and plop the internal domain name.&lt;/p&gt;

&lt;p&gt;alpha:/etc/hosts&lt;/p&gt;

&lt;pre&gt;127.0.0.1 alpha localhost
#&amp;lt;&amp;lt; plop
192.168.0.1 alpha alpha.plop
192.168.0.2 beta beta.plop
192.168.0.3 gamma gamma.plop
#&gt;&gt; plop
&lt;/pre&gt;

&lt;p&gt;beta:/etc/hosts&lt;/p&gt;

&lt;pre&gt;127.0.0.1 beta localhost
#&amp;lt;&amp;lt; plop 192.168.0.1:/etc/hosts
#&gt;&gt;&lt;/pre&gt;

&lt;p&gt;gamma:etc/hosts&lt;/p&gt;

&lt;pre&gt;127.0.0.1 gamma localhost
#&amp;lt;&amp;lt; plop 192.168.0.1:/etc/hosts
#&gt;&gt;&lt;/pre&gt;

&lt;p&gt;The Tinis script is free software, feel free to use, modify, and distribute, see &lt;a href=&quot;http://www.gnu.org/licenses/old-licenses/gpl-2.0.html&quot;&gt;GPL V2&lt;/a&gt; for detailed information about granted rights of use.&lt;/p&gt;</description>
		<pubDate>Mon, 24 Aug 2015 21:26:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Repaire a broken nvidia config after debian upgrade</title> 
		<link>https://www.eduvax.net/index.php?article11/repaire-borken-nvidia-config-after-debian-upgrade</link>
		<guid>https://www.eduvax.net/index.php?article11/repaire-borken-nvidia-config-after-debian-upgrade</guid>
		<description>&lt;p&gt;Sometime, when upgrading your debian linux disto, a new kernal is installed and after reboot, the X server no more starts. This is because, now using a new kernel, the nvidia kernel module is not properly recompiled to fit the new kernel. To solve this you can manually remove and reinstall the related package to force a fresh install that will fit your new kernel.&lt;/p&gt;&lt;p&gt;As usual when configuring and installing system components, log as root. Then just run those two commands:&lt;/p&gt;

&lt;pre&gt;# aptitude remove nvidia-glx nvidia-kernel-dkms
# aptitude install nvidia-glx nvidia-kernel-dkms&lt;/pre&gt;

&lt;p&gt;Maybe working with nvidia-kernel-dkms is enough but this way of doing worked fine for me.&lt;/p&gt;

&lt;p&gt;For more details about debian and nvidia graphics, visit the &lt;a href=&quot;https://wiki.debian.org/NvidiaGraphicsDrivers&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;debian wiki nvidia page&lt;/a&gt;&lt;/p&gt;</description>
		<pubDate>Sat, 13 Dec 2014 16:26:00 +0100</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Update debian in two command lines</title> 
		<link>https://www.eduvax.net/index.php?article10/update-debian-in-two-command-lines</link>
		<guid>https://www.eduvax.net/index.php?article10/update-debian-in-two-command-lines</guid>
		<description>&lt;p&gt;Just open shell as root and enter the two following commands :&lt;/p&gt;

&lt;pre&gt;# aptitude update
# aptitude upgrade&lt;/pre&gt;</description>
		<pubDate>Fri, 12 Dec 2014 16:43:00 +0100</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Re-Synthesized Reality Transportation Game</title> 
		<link>https://www.eduvax.net/index.php?article9/re-synthesized-reality-transportation-game</link>
		<guid>https://www.eduvax.net/index.php?article9/re-synthesized-reality-transportation-game</guid>
		<description>&lt;p&gt;How to make long transportation time more fun ? Let&#039;s make the transportation itself a game. Using geographic database synthetic world generator coupled with GPS, the traveler may play inside a fantasy world directly derived from the real locations he is going through. All the needed pieces to build such entertainment are already almost freely available: geographic data, portable device integrating GPS and advanced graphics capabilities. Let&#039;s try to think about what is feasible by linking all that stuff.&lt;/p&gt;&lt;h1&gt;The game concept&lt;/h1&gt;

&lt;p&gt;A 3D shoot them up game without predefined levels: levels are built live using your location and geographic data. Of course, such game targets the passengers only, The player has no control over the movements of its in game vehicle. It&#039;s in game location is driven by its real location according the GPS sensor feed. He can only control an embedded device like a turret to lock and shoot targets. This would result to some kind of &lt;a href=&quot;http://www.system16.com/hardware.php?id=699&amp;amp;page=1#1860&quot;&gt;Rail Chase&lt;/a&gt; game where the track is drawn upon the road you are traveling on.&lt;/p&gt;

&lt;p&gt;Other possible variations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.arcade-museum.com/game_detail.php?game_id=10499&quot;&gt;bombing game / vertical scroll shoot them up&lt;/a&gt;, more suited for in plane use.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Trailblazer_%28video_game%29&quot;&gt;running and avoidance game&lt;/a&gt;, for in car or in train use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Security issues&lt;/h1&gt;

&lt;p&gt;The game use should push safe behavior of the car driver transporting the players. Then the game shall not become more challenging when the driver breaks the speed limit. It just have to become unplayable. Such system should not be used for building any kind of racing game.&lt;/p&gt;

&lt;h1&gt;What&#039;s need to be done&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;drive in game position from GPS (quite easy)&lt;/li&gt;
&lt;li&gt;build a live synthetic world using geographic data&#039; that is a kind of 3D skinning of geographic data. &lt;a href=&quot;http://www.openstreetmap.org&quot;&gt;OpenStreetMap&lt;/a&gt; data is freely available for such use and contains many &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Map_Features&quot;&gt;featured object&lt;/a&gt; from which game objects may be derived.&lt;/li&gt;
&lt;li&gt;setup a cool gameplay by integrating location management with the synthetic world.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;More advanced functions and features&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;record GPS track to replay at home.&lt;/li&gt;
&lt;li&gt;exchange cool recorded tracks between users over internet.&lt;/li&gt;
&lt;li&gt;multi-player: at home while replaying recorded tracks or live while traveling for the ones that can share a network link (group of travelers in train or bus using wifi, strangers crossing using 3/4G)&lt;/li&gt;
&lt;li&gt;more immersion in the re-synthesized world by using other sensors (gyro/accelerometers) to also also integrate a line of sight, not only the location.&lt;/li&gt;
&lt;li&gt;improved and advanced accuracy of the re-synthetised world in the case of availability of more accurate and complete data (especially the 3rd dimension and complete buildings&#039; layout) compared to what is freely available from &lt;a href=&quot;http://www.openstreetmap.org&quot;&gt;Open Street Map&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
		<pubDate>Sun, 07 Sep 2014 15:47:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Anti Visual (Meta) Programming</title> 
		<link>https://www.eduvax.net/index.php?article8/anti-visual-meta-programming</link>
		<guid>https://www.eduvax.net/index.php?article8/anti-visual-meta-programming</guid>
		<description>&lt;p&gt;More than ten years after the delivery of the first really useable UML software engineering tools, it&#039;s time to look backwards and think about the real gains enabled by those tools. It appears that the promises are not yet there and finally many have failed to increase significantly software engineers productivity than just using paper and pen. Most coders are skilled in thinking of classes and writing line of codes, not drawing. But good drawing are really useful, those are only too costly to build and maintain. Then imagine if you can drawing by coding. The same coders that didn&#039;t produce any documentation before the availability of doc extractors like &lt;a href=&quot;http://www.doxygen.org&quot;&gt;doxygen&lt;/a&gt; won&#039;t no more refuse to present diagrams if their drawing does no more require overwork.&lt;/p&gt;&lt;h1&gt;Assumptions&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Designing software by drawing and aligning boxes using the mouse and editing properties through forms is not efficient.&lt;/li&gt;
&lt;li&gt;Keeping code and diagram synchronized is time consuming and in most practical cases, synchronization is definitely broken as soon as the real implementation starts.&lt;/li&gt;
&lt;li&gt;most coders are more skilled at typing text than drawing nice diagrams.&lt;/li&gt;
&lt;li&gt;whiteboard, paper and pen remain the best tool to support software engineers brainstorming.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;First proposition - reverse the process&lt;/h1&gt;

&lt;p&gt;Instead of drawing many diagrams and then generate code, why not do just the opposite: write some code and interactively, while entering text, let the tool render automatically some diagrams of the edited code. For most coder, it is quicker to just enter &quot;class MyClass&quot; than drag and drop a class widget, then click, then enter class name... Instead of opening forms when selecting a box on the graphical view, locating the cursor to the textual definition location of the pointed entity is enough to navigate the code and enable the coder to edit the entity’s properties. This of course does not forbid to keep some cool toolbar to have some one click template application features.&lt;/p&gt;

&lt;h1&gt;Second proposition - a true and complete textual (extended) UML&lt;/h1&gt;

&lt;p&gt;Think about software as a high dimensional space. Then any UML diagram is in fact a projection of the wide space into a narrower one. Then there is many information loss from the full space to the projected one. The implemented code itself is also a projection with information loss (for instance: think about how to implement aggregation and composition using a language like java or C#, no really visible difference). Then today software engineering remains a very difficult task because it consist in defining a very complex object only through restricted and limited views. And many coders still think only the code view matters.&lt;/p&gt;

&lt;p&gt;UML stands for Unified Modeling Language. But in fact, where is the language? We only have some kind of graphical grammar, not so easy to process. Indeed, XMI has been introduced, but it was designed only to support modeling tools interoperability (that is still so limited than finally it is rarely use). It is so hard to read (by human), so don&#039;t think about edit XMI files by hand. However a modeling &lt;em&gt;language&lt;/em&gt; like what anyone may imagine when thinking about what the &lt;em&gt;language&lt;/em&gt; word means in any acronym ending by L letter is a great idea. So why not define one? A real textual language not just only hieroglyphs. Think about why most humans today use alphabets to tell stories in place of some shiny little icons sequences! May be because images is not enough to let people understand each other. Don&#039;t be too focus on the learning curve. The most easy to learn tool is rarely the most powerful and efficient. Something like actual UML diagram should be a view and only a view. Such view shall be defined as a query from the high dimensional space :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the list of entity it shall display.&lt;/li&gt;
&lt;li&gt;the projection direction, e.g. the diagram type (class, sequence, collaboration, etc)&lt;/li&gt;
&lt;li&gt;some rendering options: layout, coloring, filtering some details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A complete modeling language should be able to describe the whole high dimensional space defining software, not only what is describe by the today known projections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;main entities as UML does: package, classes, relations...&lt;/li&gt;
&lt;li&gt;algorithms, processes and equations (are you really able to design any algorithm using sequence or state diagrams?)&lt;/li&gt;
&lt;li&gt;threading and synchronization (I simply don&#039;t know how to figure threading aspects meaningfully with UML).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;documentation&lt;/em&gt; (documentation of entities may also be rendered live as the diagrams).&lt;/li&gt;
&lt;li&gt;etc: there&#039;s surely many missing things that didn&#039;t came in my mind while writing this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It&#039;s sad to say we still need another language. Too many people lose time in creating new languages while most of them really need only a good new library of an existing one. Then, if something that looks like what is describe here already exists, please leave a comment. I&#039;d rather like to extend or improve if needed something already there than implementing something completely new.&lt;/p&gt;

&lt;h1&gt;Third proposition - meta programming&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Design_Patterns&quot;&gt;Design patterns&lt;/a&gt; are to me the best improvement in the scope of object oriented software engineering of the last years. Then our next generation software engineering shall support design patterns. It shall also support some way of programming automation. Think about how many time you write the same lines of code, specially when applying &lt;a href=&quot;http://en.wikipedia.org/wiki/Programming_style&quot;&gt;coding standards and rules&lt;/a&gt;: most private class members will need the same getter and setter. Having a collection requires to the enclosing class to have also members to add/remove/check members. Writing all this common stuff can involve more than half the coding effort of a class. Then such definitions should be implemented automatically just by defining some attributes to the class properties that need it.&lt;/p&gt;

&lt;h1&gt;What is already available&lt;/h1&gt;

&lt;p&gt;Most of the basic features needed to implement a tool such as the one described above are already available from the &lt;a href=&quot;http://www.eclipse.org&quot;&gt;eclipse&lt;/a&gt; platform and its many plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;advanced text editors with automatic completions.&lt;/li&gt;
&lt;li&gt;structural model extraction from plain text (or XML) files.&lt;/li&gt;
&lt;li&gt;synchronized views&lt;/li&gt;
&lt;li&gt;UML drawing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://www.plantuml.com&quot;&gt;Plantuml&lt;/a&gt; is a good example of how to draw diagram by text. It is in fact today my favorite UML drawing tool. It is for me the fastest one. And since it use text file, it is easy to manage under revision control aside the code as any source file. But it remains far away what I dream for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is finally a drawing tool only. It is not designed to do anything else even I don&#039;t see anything preventing the addition of some cool feature looking like the ones described above.&lt;/li&gt;
&lt;li&gt;the syntax is not so convenient. It is quite easy to learn because it tries to match the UML drawing. Going back to real UML concepts should be better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the case I can&#039;t find any existing relevant base language, prototyping the ideas above will probably make use of my own &lt;a href=&quot;http://www.eduvax.net/jdev/net.eduvax.heml&quot;&gt;HEML&lt;/a&gt;.&lt;/p&gt;</description>
		<pubDate>Mon, 01 Sep 2014 09:51:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Eduvax projects and sites summary</title> 
		<link>https://www.eduvax.net/index.php?article6/eduvax-projects-and-sites-summary</link>
		<guid>https://www.eduvax.net/index.php?article6/eduvax-projects-and-sites-summary</guid>
		<description>&lt;p&gt;&lt;a href=&quot;http://www.eduvax.net/jdev&quot;&gt;JDev&lt;/a&gt; - &lt;a href=&quot;http://grant.eduvax.net&quot;&gt;Grant&lt;/a&gt; - &lt;a href=&quot;http://naja.eduvax.net&quot;&gt;NaJa&lt;/a&gt; - &lt;a href=&quot;http://gsp.eduvax.net&quot;&gt;GSP&lt;/a&gt; - &lt;a href=&quot;http://records.eduvax.net&quot;&gt;Records&lt;/a&gt;&lt;/p&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th align=&quot;center&quot;&gt;
      &lt;/th&gt;
      
      &lt;th align=&quot;center&quot;&gt;
        Title
      &lt;/th&gt;
      
      &lt;th align=&quot;center&quot;&gt;
        Description
      &lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://www.eduvax.net/jdev&quot;&gt;&lt;img src=&quot;http://www.eduvax.net/jeduvax.png&quot; /&gt;&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://www.eduvax.net/jdev&quot;&gt;Eduvax Jdev&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        Free java applications and libraries
      &lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://grant.eduvax.net/&quot;&gt;&lt;img src=&quot;http://www.eduvax.net/grant.png&quot; /&gt;&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://grant.eduvax.net/&quot;&gt;Grant&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        Grid computing with adaptive and distributed load balancing.
      &lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://naja.eduvax.net&quot;&gt;&lt;img src=&quot;http://www.eduvax.net/naja.png&quot; /&gt;&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://naja.eduvax.net/&quot;&gt;Naja&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        a Java like C++ API
      &lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://gsp.eduvax.net&quot;&gt;&lt;img src=&quot;http://www.eduvax.net/gsp.png&quot; /&gt;&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://gsp.eduvax.net&quot;&gt;General Server Page&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        preprocessor that make any lancguage CGI writing as easy than JSP or ASP page.
      &lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://records.eduvax.net&quot;&gt;&lt;img src=&quot;http://www.eduvax.net/eduvax-records.png&quot; /&gt;&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        &lt;a href=&quot;http://records.eduvax.net&quot;&gt;Eduvax records&lt;/a&gt;
      &lt;/td&gt;
      
      &lt;td align=&quot;center&quot;&gt;
        Free home made music recordings (creative commons licence)
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</description>
		<pubDate>Fri, 15 Aug 2014 18:44:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Install grub manually to make disk bootable</title> 
		<link>https://www.eduvax.net/index.php?article7/install-grub-manually-to-make-disk-bootable</link>
		<guid>https://www.eduvax.net/index.php?article7/install-grub-manually-to-make-disk-bootable</guid>
		<description>&lt;p&gt;Use this procedure to repair a broken boot of a system disk boot or to make a new restored system disk bootable. To run the procedure you need an already running linux. If not available, use a live CD or USB key. The disk to make bootable must already contain a partition with almost complete linux system: in particular drub binaries and /boot directory with kernel and grub configuration.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;first ensure what is the partition containing the /boot directory. In the following it&#039;s considered to be /dev/sdb1. Check this partition has the bootable flag and add it if not (defaulty use &lt;em&gt;fdisk&lt;/em&gt; to proceed).&lt;/li&gt;
&lt;li&gt;mount the root partition, and special file system at the right place relatively to the future root partition mount point.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;# mount /dev/sdb1 /mnt/
# mount -t proc none /mnt/proc
# mount -o bind /dev /mnt/dev
# mount -t sysfs sys /mnt/sys&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;start a chrooted shell into the future root file system and install grub from it.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;# chroot /mnt/ /bin/bash
# update-grub
# /usr/sbin/grub-install --recheck --no-floppy /dev/sdb&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;terminate chroot shell and unmount partitions properly and the disk is ready to boot.&lt;/li&gt;
&lt;/ul&gt;</description>
		<pubDate>Thu, 14 Aug 2014 14:24:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Dump and restore full file system</title> 
		<link>https://www.eduvax.net/index.php?article4/dump-and-restore-full-file-system</link>
		<guid>https://www.eduvax.net/index.php?article4/dump-and-restore-full-file-system</guid>
		<description>&lt;p&gt;Tar and other file archiver may miss some specific file attributes and special files. At least for ext2/3/4 file systems, old fashion BSD dump and restore utilities (debian package simply named &lt;em&gt;dump&lt;/em&gt;) remains a perfect solution to backup an entire file system. The following procedure may help to move a filesystem from a disk to another.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;backup root filesystem to a file. Beware! Avoid to put the backup file on the filesystem to be dumped:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;# dump -0z -f /mnt/backup/rootfs.dump.gz&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;to restore the filesystem, first create a new fresh partition and empty file system (fdisk + mkfs). Then use &lt;em&gt;restore&lt;/em&gt; command to unpack the dump file into the new file system.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;# cd /mnt/newfs
# restore -f /mnt/backup/rootfs.dump.gz&lt;/pre&gt;</description>
		<pubDate>Wed, 13 Aug 2014 22:57:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Mount MTP USB device</title> 
		<link>https://www.eduvax.net/index.php?article3/mount-mtp-usb-device</link>
		<guid>https://www.eduvax.net/index.php?article3/mount-mtp-usb-device</guid>
		<description>&lt;p&gt;Since mass storage device is not always available, exchange files using MTP becomes mandatory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1st, install jmtpfs package or simular (mtpfs, go-mtpfs). fuse is needed.&lt;/li&gt;
&lt;li&gt;add users that need to mount such device to the fuse group.&lt;/li&gt;
&lt;li&gt;create a new directory that will be used as mount point (for instance ~/mtpdev).&lt;/li&gt;
&lt;li&gt;For each file exchange session: 

&lt;ul&gt;
&lt;li&gt;plug your USB device (beware, connection some android phone will fail if in standby mode, unlock your device first).&lt;/li&gt;
&lt;li&gt;mount device: &lt;code&gt;$ jmtpfs ~/mtpdev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;do wathever you want on the mounted file system (unfortunately, much slower than any mass storage device).&lt;/li&gt;
&lt;li&gt;Once all exchanges are completed, unmount file system: &lt;code&gt;$ fuser -u ~/mtpdev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The device is ready to unplug.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
		<pubDate>Tue, 12 Aug 2014 13:48:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Use an android phone as internet gateway</title> 
		<link>https://www.eduvax.net/index.php?article2/use-an-android-phone-as-internet-gateway</link>
		<guid>https://www.eduvax.net/index.php?article2/use-an-android-phone-as-internet-gateway</guid>
		<description>&lt;li&gt;Plug through USB the phone to the linux host.&lt;/li&gt;
&lt;li&gt;Share the connexion on the phone : go to parameters / More / connexion sharing / USB (may be not exact item labels, my phone runs a french cyanogenmod).&lt;/li&gt;
&lt;li&gt;setup the net usb interface on the linux host :&lt;/li&gt;
&lt;pre&gt;$ modprobe usbnet
$ ifconfig usb0 up
$ dhclient usb0&lt;/pre&gt;</description>
		<pubDate>Tue, 12 Aug 2014 13:35:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
</channel>
</rss>