<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Roller Coaster Ride</title>
	<atom:link href="http://rolcori.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rolcori.wordpress.com</link>
	<description>Traces to leave, thoughts to share.</description>
	<lastBuildDate>Mon, 28 Mar 2011 07:48:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='rolcori.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Roller Coaster Ride</title>
		<link>http://rolcori.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://rolcori.wordpress.com/osd.xml" title="Roller Coaster Ride" />
	<atom:link rel='hub' href='http://rolcori.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Xml Parsing (and Indexing)</title>
		<link>http://rolcori.wordpress.com/2010/05/30/xml-parsing-and-indexing/</link>
		<comments>http://rolcori.wordpress.com/2010/05/30/xml-parsing-and-indexing/#comments</comments>
		<pubDate>Sun, 30 May 2010 19:18:20 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[GFE]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[gfe]]></category>
		<category><![CDATA[mame]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=63</guid>
		<description><![CDATA[One of the idea behind GFE ([dje-fe], see previous post) is to be the less intrusive and the most reactive application. A front-end shouldnt need long processes stopping the user  about to play, nor any private files written on disk (especially if you want it running from a DVD). But GFE needs to display informations [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=63&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the idea behind GFE ([dje-fe], see previous post) is to be the less intrusive and the most reactive application. A front-end shouldnt need long processes stopping the user  about to play, nor any private files written on disk (especially if you want it running from a DVD).<br />
But GFE needs to display informations about the currently selected game (from a collection of 10000 items).</p>
<p>Such data exists and is usually  available through (big) xml files&#8230; They&#8217;re generated by Mame.exe, or available from the Net (google &#8216;dat file emulator&#8217;).</p>
<p>Hence the idea to parse like 40 Megs of xml data on the fly (at each run), and index/map the  document to avoid keeping the whole file in memory.</p>
<p>After two weeks studying the topic, it&#8217;s time for conclusions :</p>
<ol>
<li>Microsoft  Xml Pull Parser is fast. Written in .Net, but *correctly* written, it&#8217;s  generally a good tool for your xml needs. It&#8217;s a pull system, easier to manipulate than SAX, and probably faster (look at <a title="XmlTextReader" href="http://msdn.microsoft.com/fr-fr/library/7hh47ty4%28v=VS.80%29.aspx" target="_blank">XmlTextReader</a> for reference). It takes 750 ms to walk 40 megs of data (8800 records) on my computer.</li>
<li>Unfortunately you can&#8217;t bookmark the interesting parts of your document with it. We could rely on the line/character pair this parser is returning but then another text parser should extract text blocks from line/characters pairs. Maybe tricky to implement and we&#8217;ll lose some horsepower in the process.</li>
<li>Note that parsing xml files is easy as long as we don&#8217;t want document  validation or xpath support: state machine only has to handle 10-12 token types, c# is silently handling various character format.</li>
</ol>
<p>So what ? Why not writing a dedicated indexing-xml-pull-parser ?</p>
<p>Some results after a dozen hour of coding, a custom pull parsing implementation:</p>
<ol>
<li>It&#8217;s now as fast as MS XmlTextReader:  first version wasn&#8217;t <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  too much function calls is hitting very hard c# performance (8 times slower than the original !), solution is to pack the whole state machine into a single function: now it&#8217;s easily indexing  50 Megs of xml per second.</li>
<li>It&#8217;s able to give file stream position information about each element start and end: during some initialization pass, an indexer stores each record key and location values in a dictionnary, for further fast access.</li>
<li>When GFE needs a particular record info, the dictionnary is requested for the location of the fragment which is read from huge file, and loaded  into memory to be thoroughly parsed. Apparently it&#8217;s fast enough for 100 random requests per second. It&#8217;s 100 times enough <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>there is no 4.</li>
</ol>
<p>This &#8216;works&#8217; and fits a particular situation for a particular embedded application: no memory stress, no alien file creation. Currently it&#8217;s only limited by a minimal support of character types (it&#8217;s only handling ANSI+unicode).</p>
<p>But definitely it looks like an achievable way to go if you feel somewhat embarassed with existing implementation.</p>
<p>Below is the code source of the main state machine function: contact me for more implementation details.</p>
<p><pre class="brush: csharp;">
&lt;pre&gt;
public TokenType Next(TokenType notifs)
        {
        _insideElement:
            if (_currentType &lt; TokenType.END_ELEMENT)
            {
                for (; ; )
                {
                    //attribute
                    switch (_ioBuffer[_bufferIndex])
                    {
                        case ' ':
                        case '\t':
                        case '\r':
                        case '\n':
                            _bufferIndex++;
                            continue;
                        case '&gt;':	//end of start element
                            _bufferIndex++;
                            _depth++;
                            goto _beyondElement;
                        case '/': //empty element
                            _bufferIndex++;
                            if (_bufferIndex + 1 &gt; _dataLen)
                                PrefetchIO(1);
                            if (_ioBuffer[_bufferIndex] == '&gt;')
                            {
                                _bufferIndex++;
                                _tokenEndOffset = _bytesParsed + _bufferIndex;
                                _currentType = TokenType.END_ELEMENT; //EMPTY ELEMENT ! it starts and ends on the same token
                                if ((notifs &amp; TokenType.END_ELEMENT) != 0)
                                    return _currentType;
                                goto _beyondElement;
                            }
                            return DoExpected(&quot;&gt;&quot;);
                        case '&#092;&#048;':
                            if (!FillIOBuffer())
                                return TokenType.END_OF_STREAM;
                            continue;
                        default:
                            _currentType = ProcessAttribute((notifs &amp; TokenType.ATTRIBUTE) != 0);
                            if ((notifs &amp; TokenType.ATTRIBUTE) != 0)
                                return _currentType;
                            continue;

                    }
                }
            }
        //
        //beyond element: data, or comment, or pi, cdata
        _beyondElement:
            for (; ; )
            {
            _start:
                switch (_ioBuffer[_bufferIndex])
                {
                    case ' ':
                    case '\t':
                    case '\r':
                    case '\n':
                        ++_bufferIndex;
                        continue;
                    case '&#092;&#048;':
                        if (!FillIOBuffer())
                            return (_currentType = DoEndOfStream());
                        continue;
                    case '&lt;':
                        _tokenStartOffset = _bytesParsed + _bufferIndex;
                        ++_bufferIndex;
                        for (; ; )
                        {
                            switch (_ioBuffer[_bufferIndex])
                            {
                                case '!': //comment, cdata, doctype
                                    _bufferIndex++;
                                    if (_bufferIndex + 7 &gt; _dataLen)
                                        PrefetchIO(7);
                                    if ((_ioBuffer[_bufferIndex] == '-') &amp;&amp; (_ioBuffer[_bufferIndex + 1] == '-'))
                                    {
                                        _bufferIndex += 2;
                                        ProcessComment();
                                        goto _start;
                                    }
                                    if ((_ioBuffer[_bufferIndex] == '[') &amp;&amp; (_ioBuffer[_bufferIndex + 1] == 'C') &amp;&amp; (_ioBuffer[_bufferIndex + 2] == 'D') &amp;&amp;
                                        (_ioBuffer[_bufferIndex + 3] == 'A') &amp;&amp; (_ioBuffer[_bufferIndex + 4] == 'T') &amp;&amp; (_ioBuffer[_bufferIndex + 5] == 'A') &amp;&amp;
                                        (_ioBuffer[_bufferIndex + 6] == '['))
                                    {
                                        _bufferIndex += 7;
                                        ProcessCData();
                                        goto _start;
                                    }
                                    if ((_ioBuffer[_bufferIndex] == 'D') &amp;&amp; (_ioBuffer[_bufferIndex + 1] == 'O') &amp;&amp; (_ioBuffer[_bufferIndex + 2] == 'C') &amp;&amp;
                                        (_ioBuffer[_bufferIndex + 3] == 'T') &amp;&amp; (_ioBuffer[_bufferIndex + 4] == 'Y') &amp;&amp; (_ioBuffer[_bufferIndex + 5] == 'P') &amp;&amp;
                                        (_ioBuffer[_bufferIndex + 6] == 'E'))
                                    {
                                        _bufferIndex += 7;
                                        ProcessDocType();
                                        goto _start;
                                    }
                                    return DoUnexpected(&quot;-&quot;);
                                case '?': //pi
                                    _bufferIndex++;
                                    ProcessPI();
                                    goto _start;
                                case '&#092;&#048;':
                                    //--- fill data
                                    if (!FillIOBuffer())
                                        return (_currentType = TokenType.END_OF_STREAM);
                                    continue;
                                case '/': //end element &lt;/ ...&gt;
                                    _bufferIndex++;
                                    _currentType = ProcessEndElement((notifs &amp; TokenType.END_ELEMENT) != 0);
                                    if ((notifs &amp; TokenType.END_ELEMENT) != 0)
                                        return _currentType;
                                    goto _start;
                                default:  //new element
                                    //(notifs &amp; TokenType.START_ELEMENT) != 0);
                                    _currentType = ProcessStartElement(true);//always in full as element name may is extremely usefull to get
                                    if ((notifs &amp; TokenType.START_ELEMENT) != 0)
                                        return _currentType;
                                    goto _insideElement;
                            }

                        }
                    default: //element data. (probably.)
                        _currentType = ProcessData((notifs &amp; TokenType.DATA) != 0);
                        if ((notifs &amp; TokenType.DATA) != 0)
                            return _currentType;
                        goto _start;
                }
            }
        }
</pre></p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;overflow:hidden;">//Locking Undo/Redo<br />
ITURManager::Get()-&gt;Lock();</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=63&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2010/05/30/xml-parsing-and-indexing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>GFE, Game Front End</title>
		<link>http://rolcori.wordpress.com/2010/05/11/gfe-game-front-end/</link>
		<comments>http://rolcori.wordpress.com/2010/05/11/gfe-game-front-end/#comments</comments>
		<pubDate>Tue, 11 May 2010 18:36:45 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[frontend]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[mame]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=58</guid>
		<description><![CDATA[GFE Emu FrontEnd 0.5.0 Release...<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=58&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hey,</p>
<p>I spent the last months  fighting/juggling/coding with WPF. Not the easiest hobby in town, i  should i mention, anyway: this is GFE.</p>
<p>The idea behind  the project is to be able to&#8230; Play. No fuss, and more generally  minimal settings to be able to list and launch a vast collection of  games: emulated, freeware, flash, choice is vast.</p>
<p>Basically  GFE is listing a directory of&#8230; things (roms, zip, pics, you tell),  probably thousands of them. Background scanners are trying to match  every entry with snapshots and movies (furtherly stats and extra infos  from web). And apart from primary enumeration, everything else is  asynchronous for a smoother experience.</p>
<p>All settings  are guessed from a directory structure passed as application argument,  or preferably from a gameinfo.xml file.</p>
<p>It&#8217;s using low  level inputs, preferably a joystick, enabling some interaction with GFE  running in the background. And it&#8217;s a WPF project: so all the frontend  rendering is done through DirectX and accelerated hardware if available.</p>
<p>OK now, this is the very first version of GFE, and,  well: it&#8217;s usable, but probably not versatile or cute enough. I&#8217;m  working on that: you can help with suggestions, money, or simple  greetings.</p>
<p>Binary:  <a title="GFE 0.5" href="http://alimbourg.free.fr/GFE-0.5.0.zip">GFE-0.5.0.zip</a> (45 Ko)</p>
<p>Technical details:</p>
<p>Windows &#8211; .NET 3.5, works on  XP and Seven</p>
<p>Joystick (XInput compatible) or Keyboard</p>
<p>How  to run it:</p>
<p>Modify included GameInfo.xml and use it as the  application parameter.</p>
<p>Note: when in background, both LB+RB button (Ctrl+Back) is killing launched app and bring back GFE to front. LB+Y exits GFE.</p>
<p>alimbourg at gmail for any question.</p>
<p>This  is GFE Emu FrontEnd</p>
<p><a href="http://3.bp.blogspot.com/_9ERPnZJlPgc/S-hV5RNL6NI/AAAAAAAAACI/HK7gK6QYXE0/s1600/GFE.png"><img src="http://3.bp.blogspot.com/_9ERPnZJlPgc/S-hV5RNL6NI/AAAAAAAAACI/HK7gK6QYXE0/s640/GFE.png" border="0" alt="" width="640" height="400" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=58&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2010/05/11/gfe-game-front-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>

		<media:content url="http://3.bp.blogspot.com/_9ERPnZJlPgc/S-hV5RNL6NI/AAAAAAAAACI/HK7gK6QYXE0/s640/GFE.png" medium="image" />
	</item>
		<item>
		<title>OWL</title>
		<link>http://rolcori.wordpress.com/2010/03/10/owl/</link>
		<comments>http://rolcori.wordpress.com/2010/03/10/owl/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:58:32 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[owl wpf c# lucene]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/2010/03/10/owl/</guid>
		<description><![CDATA[Soon&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=57&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Soon&#8230;<br />
<a href="http://rolcori.files.wordpress.com/2010/03/jookpiknt72.jpg"><img src="http://rolcori.files.wordpress.com/2010/03/jookpiknt72.jpg" alt="" title="owl from an old man" width="193" height="194" class="alignleft size-full wp-image-56" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=57&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2010/03/10/owl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>

		<media:content url="http://rolcori.files.wordpress.com/2010/03/jookpiknt72.jpg" medium="image">
			<media:title type="html">owl from an old man</media:title>
		</media:content>
	</item>
		<item>
		<title>Relocating User Accounts Directories in Windows Seven</title>
		<link>http://rolcori.wordpress.com/2009/09/26/relocating-user-accounts-directories-in-windows-seven/</link>
		<comments>http://rolcori.wordpress.com/2009/09/26/relocating-user-accounts-directories-in-windows-seven/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 19:20:12 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[seven user account relocation]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/2009/09/26/relocating-user-accounts-directories-in-windows-seven/</guid>
		<description><![CDATA[Slightly off-dev-topic, but i&#8217;m leaving this here as a reminder. I took the habit to install my OS (currently windows seven) on a dedicated partition, easily formatted and replaced&#8230; But i was terribly stuck with the Users\ directory forcibly installed on the same partition than the system. So, finally, here is a recipe to relocate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=51&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Slightly off-dev-topic, but i&#8217;m leaving this here as a reminder.</p>
<p>I took the habit to install my OS (currently windows seven) on a dedicated partition, easily formatted and replaced&#8230; But i was terribly stuck with the Users\ directory forcibly installed on the same partition than the system.</p>
<p>So, finally, here is a recipe to relocate your users directory it on another drive:</p>
<ol>
<li>first boot on your installation disk (the CD Rom used to install your system): windows seven after booting for a while, and asking for your language, will propose you to &#8216;repair the system&#8217; on the Install dialog. Skip and cancel all the boot repair and automatic recovery pages, to end on a dialog offering you to open a cmd console.</li>
<li>robocopy your users directory from your currently (small) partition to the other (bigger) partition: warning all the drive letters have been shuffled around so you&#8217;ll have to investigate a bit, to end up probably with:<br />
<code>robocopy e:\Users f:\Users /mir /xj /w:1 /r:1</code><br />
/mir will mirror everything (like security attributes) from the input to the target<br />
/xj excludes junction point from copy (basically hard system &#8216;shortcuts&#8217;&#8230; we&#8217;ll see that later)<br />
/w and r concerns retries in case of copy failures.<br />
Once everything is copied&#8230;</li>
<li> del your original Users dir:<br />
<code>rd /s /q e:\Users</code></li>
<li> do a *Hard*Link (junction)  between the old location and the new one:<br />
<code> mklink /J e:/Users d:/Users</code><br />
the D:\ reference is wanted as it should reflect the target location after the system restarted (note that the symbolic link is not sufficient, you want use the *hard* one)</li>
<li>reboot</li>
</ol>
<p>This hard link (junction) method is fooling(?) the system pretty correctly as i&#8217;m writing right now. And this  may potentially be extended to the Program Files directories as well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=51&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/09/26/relocating-user-accounts-directories-in-windows-seven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing for MediaCenter (Seven)</title>
		<link>http://rolcori.wordpress.com/2009/08/05/developing-for-mediacenter-seven/</link>
		<comments>http://rolcori.wordpress.com/2009/08/05/developing-for-mediacenter-seven/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 18:32:10 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[MediaCenter]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[emulation]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[MCE]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=40</guid>
		<description><![CDATA[Learning from the pros<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=40&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Windows Media Center</p>
<p>You know, i&#8217;d like to have a game museum available. For the kids, for me: as a former game developer i&#8217;m utterly *delighted* to be able to run all the past games on (so many) abandoned platforms&#8230; Because sometimes fun is still there, nice game mechanics ARE eternal&#8230;<br />
Anyway for the last 30 years, that&#8217;s a lot of video games to reference and play, hence the need of a good frontend.<br />
And why not using MS MediaCenter (MCE) ?<br />
That program is cool, not *great*, it does not support emulation, but still, really cool.</p>
<p>Therefore we need to develop a plugin dedicated to mass-gaming. Fortunately MSoft provides a SDK. But&#8230; Wait&#8230; Did someone really tried to develop with such as thing ? It&#8217;s terrible, everything has to be done from scratch for strange reasons, because it&#8217;s flawed by design. Samples, public interfaces, resources, everything is forbidding you to access the LookNFeel of MCE: so, reinvent the wheel from scratch, or pass your way&#8230; Apparently.</p>
<p>Until 2 things:<br />
<a href="http://www.red-gate.com/products/reflector/">Reflector</a> : a MSIL disassembler, and <strong>decompiler</strong> , add an AddIn to batch decompile a complete assembly: all the MediaCenter sources at the palm of your hand.<br />
and<br />
<a href="http://www.restuner.com/">ResTuner</a> to extract the MCML resources from DLL/EXE. Hence MCML files (Markup files needed to design MCE interfaces), or <a title="ResourceExtract, NirSoft" href="http://www.nirsoft.net/utils/resources_extract.html">ResourceExtract, NirSoft</a> or <a title="Anolis Resource Extract" href="http://anolis.codeplex.com/">Alonis Resource Extract</a></p>
<p>Now 5Mo of C# code and MCML sources files to browse&#8230;<br />
Reverse engineering at its best&#8230;</p>
<p>Leave a message if you need details about this.<br />
Cheers Awen<img class="alignright size-full wp-image-42" title="WMC7" src="http://rolcori.files.wordpress.com/2009/08/wmc7.jpg" alt="WMC7" width="867" height="517" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=40&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/08/05/developing-for-mediacenter-seven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>

		<media:content url="http://rolcori.files.wordpress.com/2009/08/wmc7.jpg" medium="image">
			<media:title type="html">WMC7</media:title>
		</media:content>
	</item>
		<item>
		<title>Mame132 mods for automated avi creationw</title>
		<link>http://rolcori.wordpress.com/2009/07/10/mame132-mods-for-automated-avi-creationw/</link>
		<comments>http://rolcori.wordpress.com/2009/07/10/mame132-mods-for-automated-avi-creationw/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 14:04:18 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=32</guid>
		<description><![CDATA[This to create a special MAME build to allow automation via AutoIt, for example: i needed to find a way to send keys inputs and triggers AVI recording of my games, at will. As Mame is using &#8216;raw inputs&#8217; it cant be fooled by standard key messages. Fortunately this project is really really (really) easy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=32&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This to create a special MAME build to allow automation via AutoIt, for example: i needed to find a way to send keys inputs and triggers AVI recording of my games, at will.<br />
As Mame is using &#8216;raw inputs&#8217; it cant be fooled by standard key messages.</p>
<p>Fortunately this project is really really (really) easy to modify and build, so i patched some</p>
<p>Go there and follow every steps: <a href="http://mamedev.org/tools/">http://mamedev.org/tools/<br />
</a></p>
<p>Then modify some sources.</p>
<p>First More Wndows Message to allow communication (for key events, and avi recording)</p>
<p><code><br />
//in windows.c/winwindow_video_window_proc, around line 1361<br />
//declared asomewhere in windows.c:<br />
//  void rawinput_keyboard_fake_update(int dik_code, int pressed);<br />
case WM_USER+10:<br />
if (lparam&amp;0x80) MessageBeep(0);<br />
rawinput_keyboard_fake_update(wparam, lparam);<br />
break;<br />
case WM_USER+11:<br />
	if (!video_mng_is_movie_active(window-&gt;machine))<br />
	{<br />
		const char* filename = NULL;<br />
		if (lparam!=0)<br />
		filename = options_get_string(mame_options(), OPTION_MNGWRITE);<br />
		//video_mng_begin_recording(machine, NULL);<br />
		video_avi_begin_recording(window-&gt;machine, filename);<br />
		popmessage("REC START");<br />
	}<br />
	else<br />
	{<br />
		//video_mng_end_recording(machine);<br />
		video_avi_end_recording(window-&gt;machine);<br />
		popmessage("REC STOP");<br />
	}<br />
	break;<br />
</code></p>
<p>Then a tweak to bypass raw inputs</p>
<p><code><br />
//in input.c, around line 1964, before rawinput_keyboard_update<br />
//<br />
void rawinput_keyboard_fake_update(int dik_code, int pressed)<br />
{<br />
	device_info *devinfo;<br />
	for (devinfo = keyboard_list; devinfo != NULL; devinfo = devinfo-&gt;next)<br />
		if (devinfo-&gt;rawinput.device != NULL)<br />
		{<br />
			devinfo-&gt;keyboard.state[dik_code] = pressed?0x80:0x00;<br />
		}<br />
}<br />
</code></p>
<p>Build it and voila. You&#8217;ll have some new mame.exe listening for external messages.</p>
<p>I have such binary build available for the sking people.</p>
<p>Next post should be an explanation for the whole Mame Avi Move Maker build with AutoIt&#8230;</p>
<p>Regards (and eventually leave comments)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=32&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/07/10/mame132-mods-for-automated-avi-creationw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>SQLite and obese debug informations</title>
		<link>http://rolcori.wordpress.com/2009/06/02/sqlite-and-obese-debug-informations/</link>
		<comments>http://rolcori.wordpress.com/2009/06/02/sqlite-and-obese-debug-informations/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 09:04:34 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[QtCreator]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=24</guid>
		<description><![CDATA[SQLite.c is the &#8216;amalgemon&#8217; version of the Database: a huge .c file containing all the dependencies to compile SQLite into our projects. Using GCC, and standard mingw compilation option, we probably all notice the ton of compilation warning telling us that debug infos are too huge to be handled correctly (if you tried that, it&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=24&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SQLite.c is the &#8216;amalgemon&#8217; version of the Database: a huge .c file containing all the dependencies to compile SQLite into our projects.</p>
<p>Using GCC, and standard mingw compilation option, we probably all notice the ton of compilation warning telling us that debug infos are too huge to be handled correctly (if you tried that, it&#8217;s impossible to trace sqlite sources with gdb).</p>
<p style="text-indent:0;margin:0;">The problem is concerning the embedded debugging information in STABS format: GCC is handling more modern types of debugging info. We just have to tell it to use them (<a href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html" target="_blank">http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html</a>)</p>
<p>in your .pro file (assuming you&#8217;re using QtCreator), force these flags to be used:<br />
<code><br />
#remove standard debug generation for c files<br />
QMAKE_CFLAGS_DEBUG -= -g<br />
#(*= 'if not present'), force uber debug infos, perfect for gdb<br />
QMAKE_CFLAGS_DEBUG *= -ggdb<br />
</code></p>
<p>No more compilation warning=quickest compilation, and we&#8217;re now able to trace sqlite.c in gdb&#8230; Another win <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=24&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/06/02/sqlite-and-obese-debug-informations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>Qt and latest MinGW</title>
		<link>http://rolcori.wordpress.com/2009/06/02/qt-and-latest-mingw/</link>
		<comments>http://rolcori.wordpress.com/2009/06/02/qt-and-latest-mingw/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 08:53:47 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[gdb]]></category>
		<category><![CDATA[mingw]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=20</guid>
		<description><![CDATA[If you&#8217;re using QtCreator as a code IDE on Win32, you probably noticed the debugging overall sluggish-ness&#8230; Qt is using MINGW (V3.2 iirc) to compile projects. It&#8217;s an old flavor of mingw, and gdb.exe (the debugger) did grow up ever since. Go for http://sourceforge.net/project/showfiles.php?group_id=2435 to get: Automated MinGW Installer or MinGW API for MS-Windows + [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=20&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re using QtCreator as a code IDE on Win32, you probably noticed the debugging overall sluggish-ness&#8230;</p>
<p>Qt is using MINGW (V3.2 iirc) to compile projects. It&#8217;s an old flavor of mingw, and gdb.exe (the debugger) did grow up ever since.</p>
<p>Go for http://sourceforge.net/project/showfiles.php?group_id=2435 to get:</p>
<ul>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=240780">Automated MinGW Installer</a></li>
</ul>
<p>or</p>
<ul>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=11550">MinGW API for MS-Windows</a></li>
<li>+ <a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=82723">GCC Version 3</a></li>
<li>+ <a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=20507">GNU Source-Level Debugger</a></li>
<li>+ <a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=23918">GNU Make</a></li>
</ul>
<p>That should do. Install all this into a directory.</p>
<p>In QtCreator, tell locate the mingw you&#8217;re using via Tool-&gt;Options-&gt;Qt4-&gt;Qt Versions-&gt;Select the one you&#8217;re using-&gt; mingw directory</p>
<p>That&#8217;s it.  Latest mingw flavor  seems to work on for me. And gdb is not sluggish anymore.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=20&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/06/02/qt-and-latest-mingw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>Qt, SQLite and Full Text Search</title>
		<link>http://rolcori.wordpress.com/2009/05/28/qt-sqlite-and-full-text-search/</link>
		<comments>http://rolcori.wordpress.com/2009/05/28/qt-sqlite-and-full-text-search/#comments</comments>
		<pubDate>Thu, 28 May 2009 08:31:29 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[FTS3]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[UNIFACE]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/?p=5</guid>
		<description><![CDATA[Dammit. Done. I just managed to have my Qt application (some source repository search-as-you-type) doing some Full Text Search&#8230; Qt is an excellent  API to build Application With. It supports widgets, xml, database, network, etc. all you need really. I just wanted to use SQLite as a database to browse and index an important source [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=5&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dammit. Done.</p>
<p>I just managed to have my Qt application (some source repository search-as-you-type) doing some Full Text Search&#8230;</p>
<p>Qt is an excellent  API to build Application With. It supports widgets,  xml, database, network, etc. all you need really.</p>
<p>I just wanted to use SQLite as a database to browse and index an important source repository (it&#8217;s perfectly legal <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and thunderbird is doing exactly the same with your mails fe).SQLite has an extension to do Full Text Search (FTS3: it indexes each word of table columns). But as an extension, you have to tell SQLite to embed it during compilation.</p>
<p>Qt is offering SQLite services via its SQL drivers framework, but Trolltech/Nokia didnt deliver the dll with FTS3 support.</p>
<p>Miracle of opensource (thanks Nokia), you are able to recompile the sql driver to fulfill your needs: therefore using latest sqlite sources and/or deinfing the extensions it should embed.</p>
<p>This is how it works: from your Qt SDK installation, with QtCreator open D:\Qt\4.5.1\src\plugins\sqldrivers\sqlite\sqlite.pro (this is the sqlite sql driver)</p>
<p>And add this, after the first DEFINES += :</p>
<p><code>DEFINES += SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS</code></p>
<p>Eventually, change the source paths to a most recent version of SQLite sources (the &#8216;amalgamon&#8217; version)</p>
<p>Build and voila, now you are able do this in your projects:<br />
<code><br />
if (!query.exec("Select Path, Snippet(FTS3Component, '**','**','') as Snippet "<br />
"from FTS3Component WHERE "<br />
"Content MATCH 'file_dump'"))<br />
</code><br />
and<br />
<code><br />
if (!query.exec("CREATE VIRTUAL TABLE FTS3Component"<br />
" USING FTS3(Path TEXT, Content TEXT,"<br />
" tokenize simple 'dummy' ' .;:!,[]')"))<br />
</code></p>
<p>That&#8217;s it, Happy Indexing</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=5&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/05/28/qt-sqlite-and-full-text-search/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
		<item>
		<title>QtCreator Debug Helper&#8230;</title>
		<link>http://rolcori.wordpress.com/2009/05/27/qtcreator-debug-helper/</link>
		<comments>http://rolcori.wordpress.com/2009/05/27/qtcreator-debug-helper/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:41:00 +0000</pubDate>
		<dc:creator>alimbourg</dc:creator>
				<category><![CDATA[QtCreator Qt debug win32 mingw]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[QtCreator]]></category>

		<guid isPermaLink="false">http://rolcori.wordpress.com/2009/05/27/qtcreator-debug-helper/</guid>
		<description><![CDATA[QtCreator (1.1 for now) is great tool to work with&#8230; The whole Qt thing is, too. I&#8217;m sharing some experience with the beast. If you need some relevant debug infos concerning the Qt class guts, you need to instruct gdb on how to print them. It&#8217;s done via a &#8216;debugging helper&#8217;: some dll/plugin loaded by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=15&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:85%;"><span style="font-family:verdana;">QtCreator (1.1 for now) is great tool to work with&#8230;</span></p>
<p><span style="font-family:verdana;">The whole Qt thing is, too.</span></p>
<p><span style="font-family:verdana;">I&#8217;m sharing some experience with the beast.</span></p>
<p><span style="font-family:verdana;">If you need some relevant debug infos concerning the Qt class guts, you need to instruct gdb on how to print them.</span></p>
<p><span style="font-family:verdana;">It&#8217;s done via a &#8216;debugging helper&#8217;: some dll/plugin loaded by gdb on startup.</span></p>
<p><span style="font-family:verdana;">On my machine they didnt work without a rebuild after each Qt SDK every integration: </span><br /></span>
<ul style="font-family:verdana;">
<li><span style="font-size:85%;">   go to Tools-&gt;Options&#8230;-&gt;Qt4-&gt;Qt Versions, </span></li>
<li><span style="font-size:85%;">   check the active Qt SDK, and its path (QT_PATH).</span></li>
<li><span style="font-size:85%;">   *</span><span style="font-weight:bold;font-size:85%;">remove</span><span style="font-size:85%;">* the whole *</span><span style="font-weight:bold;font-size:85%;">QT_PATH/qtc-debugging-helper</span><span style="font-size:85%;">* directory via explorer</span></li>
<li><span style="font-size:85%;">   back to the Options Pane, select the active SDK, and press *Rebuild*</span></li>
<li><span style="font-size:85%;">   go to Options-&gt;Debugger-&gt;Debugging Helper, check &#8216;Use debugging helper&#8217;, uncheck &#8216;Use debugging helper from custom location&#8217;</span></li>
<li><span style="font-size:85%;">   next time you debug your qt app, you should get some &#8217;43 custom&#8230; loaded&#8217; from gdb</span></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rolcori.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rolcori.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rolcori.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rolcori.wordpress.com&amp;blog=7921523&amp;post=15&amp;subd=rolcori&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rolcori.wordpress.com/2009/05/27/qtcreator-debug-helper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/026209bccc701c900f9b99696ee9a154?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">alimbourg</media:title>
		</media:content>
	</item>
	</channel>
</rss>
