<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19599775</id><updated>2011-12-02T23:14:13.150+01:00</updated><category term='ibc'/><category term='xaml'/><category term='cab packaging'/><category term='vacation'/><category term='silverlight'/><category term='epiphany'/><category term='donation'/><category term='diacritice'/><category term='windows ce'/><category term='html5 video'/><category term='c#'/><category term='visual studio'/><category term='DirectShow'/><category term='android'/><category term='windows xp'/><category term='python'/><category term='romanian'/><category term='Qt'/><category term='windows'/><category term='.net'/><category term='Internet Explorer'/><category term='IECanvas'/><category term='mozilla'/><category term='windows mobile'/><category term='droid'/><category term='mono'/><category term='xiph'/><category term='htc leo'/><category term='c++'/><category term='JScript'/><category term='opera'/><category term='codeproject'/><category term='goosh'/><category term='google'/><title type='text'>Cristian Adam's</title><subtitle type='html'>technical weblog.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19599775.post-1489109084029759660</id><published>2011-10-31T16:28:00.000+01:00</published><updated>2011-11-01T13:03:17.702+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>(ro) Algoritmi Fundamentali – O perspectivă C++</title><content type='html'>Ne aducem aminte de algoritmi de obicei în preajma vreunui interviu, și atunci vrem ceva rapid și concis.&lt;br /&gt;&lt;br /&gt;În limba română sunt puține cărți care abordează această temă. Iar cele accesibile gratuit sunt și mai puține.&lt;br /&gt;&lt;br /&gt;O carte accesibilă gratuit este: Algoritmi Fundamentali – O perspectivă C++ publicată de Răzvan Andonie și Ilie Gârbacea la editura Albastră în 1995.&lt;br /&gt;&lt;br /&gt;Din păcate varianta accesibilă gratuit suferea de un mic defect – diacriticele lipseau cu desăvârșire.&lt;br /&gt;Eu țineam minte că atunci când am răsfoit cartea nu am avut nicio problemă în a o citi.&lt;br /&gt;&lt;br /&gt;După un mic dialog cu d-l Răzvan Andonie am aflat că varianta publicată într-adevăr avea diacritice, iar cea online nu. M-am oferit în a ajuta la restaurarea diacriticelor:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JizJQnh3lKs/Tq69HPRvS5I/AAAAAAAAAd4/8nHeCGkT_xY/s1600/algoritmi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-JizJQnh3lKs/Tq69HPRvS5I/AAAAAAAAAd4/8nHeCGkT_xY/s1600/algoritmi.png" /&gt;&lt;/a&gt;&lt;/div&gt;Cartea, erata și codul sursă al programelor C++ sunt accesibile de pe &lt;a href="http://www.cwu.edu/%7Eandonie/"&gt;pagina&lt;/a&gt; d-lui Andonie. Versiunea fără diacritice mai poate fi găsită pe &lt;a href="http://vega.unitbv.ro/%7Eandonie/"&gt;vechea pagină&lt;/a&gt; a d-lui Andonie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1489109084029759660?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1489109084029759660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1489109084029759660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1489109084029759660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1489109084029759660'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/10/ro-algoritmi-fundamentali-o-perspectiva.html' title='(ro) Algoritmi Fundamentali – O perspectivă C++'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-JizJQnh3lKs/Tq69HPRvS5I/AAAAAAAAAd4/8nHeCGkT_xY/s72-c/algoritmi.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2577876771386047597</id><published>2011-08-21T20:50:00.002+02:00</published><updated>2011-08-23T13:09:05.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows 7 and the Romanian language</title><content type='html'>Starting with Windows Vista, Romanian language became properly supported on Windows: two new keyboard layouts were added, and font families were updated to include &lt;a href="http://en.wikipedia.org/wiki/S-comma"&gt;S comma bellow&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/T-comma"&gt;T comma bellow&lt;/a&gt; characters.&lt;br /&gt;&lt;br /&gt;Unfortunately some older fonts have some problems with S-comma bellow and T-comma bellow characters, comma is not bellow the S and T letter, is part of the letter. This happens also on Windows 7.&lt;br /&gt;&lt;br /&gt;The two characters are part of Unicode's &lt;a href="http://www.unicode.org/charts/PDF/U0180.pdf"&gt;"Latin Extended-B"&lt;/a&gt;:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dbvcn1MfUec/TlAtwM0kKUI/AAAAAAAAAb0/lxArgW3ornI/s1600/unicode_latin_extended_b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-dbvcn1MfUec/TlAtwM0kKUI/AAAAAAAAAb0/lxArgW3ornI/s1600/unicode_latin_extended_b.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I have done a simple test, to see how many fonts (from the Latin &lt;a href="http://www.microsoft.com/typography/fonts/product.aspx?pid=161"&gt;Windows fonts&lt;/a&gt;) have the S and T comma bellow characters with actual comma bellow symbol.&lt;br /&gt;&lt;br /&gt;The simple test consists in a webpage rendered Internet Explorer 8 and 9 on Windows 7 with normal font size (96dpi) and with large font size (120dpi).&lt;br /&gt;&lt;br /&gt;The test includes besides the Romanian characters (ĂÂÎȘȚăâîșț) also the "deprecated" S and T cedilla characters (ŞŢşţ) and S and T dot bellow characters (ṢṬṣṭ). &lt;br /&gt;&lt;br /&gt;Test pages and screenshots for Internet Explorer 8, 9 and Firefox 5 can be found &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/fonts/Windows7-Fonts"&gt;here&lt;/a&gt;. The results for 96dpi are presented bellow:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_J2mIOsaAos/TlE0eyqBV-I/AAAAAAAAAb8/xl1gYOO2nUA/s1600/96dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-_J2mIOsaAos/TlE0eyqBV-I/AAAAAAAAAb8/xl1gYOO2nUA/s1600/96dpi.png" /&gt;&lt;/a&gt;&lt;/div&gt;"Franklin Gothic Medium" is the only font which does not have S and T comma bellow characters.&lt;br /&gt;"Tahoma", "Segoe UI" and "Microsoft Sans Serif" have S and T dot bellow characters which have the dot separated for the 9pt and 8pt font sizes, which is not true for S and T comma bellow characters.&lt;br /&gt;&lt;br /&gt;The same test pages on Windows 7 with large fonts (120dpi) displayed correctly the comma for all fonts (except Franklin Gothic Medium).&lt;br /&gt;&lt;br /&gt;Internet Explorer 9 comes with a &lt;a href="http://msdn.microsoft.com/en-us/library/hh237264%28v=vs.85%29.aspx"&gt;new font renderer&lt;/a&gt; (using DirectWrite and Direct2D APIs) which reveals another problem with the S and T comma bellow characters. The comma bellow from S is different from the one under T, as seen in the images bellow:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--UXQA2oRMhY/TlE_GmKmkAI/AAAAAAAAAcA/CY5d29O_5Zs/s1600/arial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--UXQA2oRMhY/TlE_GmKmkAI/AAAAAAAAAcA/CY5d29O_5Zs/s1600/arial.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XfUX_gq8aEY/TlFBPmR7PwI/AAAAAAAAAcE/67Z6SYId5-U/s1600/times+new+roman.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XfUX_gq8aEY/TlFBPmR7PwI/AAAAAAAAAcE/67Z6SYId5-U/s1600/times+new+roman.png" /&gt;&lt;/a&gt;&lt;/div&gt;Tahoma has a problem with A-Breve (ă), in the bold form, breve is slightly shifted to the right:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-C36fLvroFG0/TlFHgzWiM-I/AAAAAAAAAcI/V0miaWF6a2Y/s1600/tahoma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-C36fLvroFG0/TlFHgzWiM-I/AAAAAAAAAcI/V0miaWF6a2Y/s1600/tahoma.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;S and T cedilla characters, even tough not correct from the Romanian language point of view, are still heavily used in many documents / web pages etc. It is important that the cedilla should be drawn the same for S and T. This is not true for all Windows 7 fonts.&lt;br /&gt;&lt;br /&gt;Firefox starting with version 4 includes locale dependent text rendering, which means that if you have the Romanian locale set the S and T cedilla characters will be automatically rendered with S and T comma bellow characters. Not all the Windows 7 fonts come with this locale information. Read more about this feature on &lt;a href="http://en.wikipedia.org/wiki/Romanian_alphabet#OpenType_ROM.2Flocl_feature"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The results for S and T cedilla are illustrated bellow:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1Zm0hVcRpJo/TlFQ2BnS9EI/AAAAAAAAAcQ/_VsH1aY_ofo/s1600/cedilla_locale_information.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-1Zm0hVcRpJo/TlFQ2BnS9EI/AAAAAAAAAcQ/_VsH1aY_ofo/s1600/cedilla_locale_information.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;As you have seen there is room for improvement when it comes to Romanian language support on Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2577876771386047597?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2577876771386047597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2577876771386047597' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2577876771386047597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2577876771386047597'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/08/windows-7-and-romanian-language.html' title='Windows 7 and the Romanian language'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-dbvcn1MfUec/TlAtwM0kKUI/AAAAAAAAAb0/lxArgW3ornI/s72-c/unicode_latin_extended_b.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7268416823902375173</id><published>2011-07-29T23:58:00.001+02:00</published><updated>2011-08-01T13:16:26.541+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Starting development with Qt on Windows</title><content type='html'>The general advice when it comes to start develop using Qt on Windows is to download the &lt;a href="http://qt.nokia.com/downloads/"&gt;Qt SDK&lt;/a&gt;. The offline version has 1.7 Gbytes and you can start developing for Desktop (using MinGW or Visual C++ 2008 Express or higher), for Symbian ^1 or ^3 devices, or for MeeGo devices.&lt;br /&gt;&lt;br /&gt;People usually complain about the size of the offline Qt SDK. In comparison Visual Studio 2008 Standard Edition (x86) - DVD (English) has 2,8 Gbytes.&lt;br /&gt;&lt;br /&gt;Even though the offline Qt SDK has 1.7 GBytes, it doesn't include everything. The precompiled Qt demos are not included in Qt SDK. They are available though through the individual &lt;a href="http://qt.nokia.com/downloads/downloads#qt-lib"&gt;Qt Library installers&lt;/a&gt;, or more explicitly &lt;a class="internal-link" href="http://qt.nokia.com/downloads/windows-cpp-vs2008" title="Qt for Open Source C++ development on Windows (VS2008)"&gt;Qt libraries 4.7.3 for Windows (VS 2008, 228 MB)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After installation one can use Qt Creator to develop applications. I won't go into much detail here, one can browse through the official documentation - &lt;a href="http://doc.qt.nokia.com/qtcreator-2.2/index.html"&gt;Qt Creator Manual 2.2.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm going to describe how you can compile from &lt;em&gt;command line&lt;/em&gt; programs for Desktop - MinGW, Visual C++ 2008, and for Symbian^3.&lt;br /&gt;&lt;br /&gt;First we need to get a small "Hello World" example. Google pointed out at &lt;a href="http://doc.qt.nokia.com/4.3/tutorial-t1.html"&gt;Qt 4.3: Qt Tutorial 1&lt;/a&gt;.&lt;br /&gt;We need to start up a text editor and paste:&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #2f2f2f;"&gt;#&lt;/span&gt;&lt;span style="color: #2f2f2f;"&gt;include &lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #333333;"&gt;QApplication&lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #2f2f2f;"&gt;#&lt;/span&gt;&lt;span style="color: #2f2f2f;"&gt;include &lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #333333;"&gt;QPushButton&lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #575757; font-weight: bold;"&gt;int&lt;/span&gt; &lt;span style="color: #575757; font-weight: bold;"&gt;main&lt;/span&gt;&lt;span style="color: #555555;"&gt;(&lt;/span&gt;&lt;span style="color: #575757; font-weight: bold;"&gt;int&lt;/span&gt; argc&lt;span style="color: #555555;"&gt;,&lt;/span&gt; &lt;span style="color: #575757; font-weight: bold;"&gt;char&lt;/span&gt; &lt;span style="color: #555555;"&gt;*&lt;/span&gt;argv&lt;span style="color: #555555;"&gt;[&lt;/span&gt;&lt;span style="color: #555555;"&gt;]&lt;/span&gt;&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;{&lt;/span&gt;&lt;br /&gt;    QApplication app&lt;span style="color: #555555;"&gt;(&lt;/span&gt;argc&lt;span style="color: #555555;"&gt;,&lt;/span&gt; argv&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;span style="color: #555555;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    QPushButton hello&lt;span style="color: #555555;"&gt;(&lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;"&lt;/span&gt;&lt;span style="color: #4c4c4c;"&gt;Hello world!&lt;/span&gt;&lt;span style="color: #2a2a2a;"&gt;"&lt;/span&gt;&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;span style="color: #555555;"&gt;;&lt;/span&gt;&lt;br /&gt;    hello&lt;span style="color: #555555;"&gt;.&lt;/span&gt;resize&lt;span style="color: #555555;"&gt;(&lt;/span&gt;&lt;span style="color: #2e2e2e;"&gt;100&lt;/span&gt;&lt;span style="color: #555555;"&gt;,&lt;/span&gt; &lt;span style="color: #2e2e2e;"&gt;30&lt;/span&gt;&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;span style="color: #555555;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    hello&lt;span style="color: #555555;"&gt;.&lt;/span&gt;show&lt;span style="color: #555555;"&gt;(&lt;/span&gt;&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;span style="color: #555555;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #575757; font-weight: bold;"&gt;return&lt;/span&gt; app&lt;span style="color: #555555;"&gt;.&lt;/span&gt;exec&lt;span style="color: #555555;"&gt;(&lt;/span&gt;&lt;span style="color: #555555;"&gt;)&lt;/span&gt;&lt;span style="color: #555555;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;From Start Menu -&amp;gt; All Programs -&amp;gt; Qt SDK -&amp;gt; Desktop you can start the command prompt for "Qt 4.7.3 for Desktop (MinGW)". Unfortunately it lands into &lt;i&gt;c:\windows\system32&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Since I already use Total Commander for my file browsing I've decided to copy the properties from the Qt Command Prompts into Total Commander's &lt;a href="http://www.ghisler.ch/wiki/index.php/Internal_command#Startmenu"&gt;Start Menu&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;If we do not specify a "Start path" for an entry in Total Commander's Start Menu, Total Commander will use the current directory as start path, which together with a hot key will free me from useless mouse clicking and of some typing.&lt;br /&gt;&lt;br /&gt;"Qt 4.7.3 for Desktop (MinGW)" is a shortcut for "C:\Windows\System32\cmd.exe /A /Q /K C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qtenv2.bat". Copying the command line into Total Commander's Start Menu looses one functionality - the title of the command window becomes "c:\windows\system32\cmd.exe" compared with the Qt SDK's "Qt 4.7.3 for Desktop (MinGW)". This can be easily fixed by appending "title Qt 4.7.3 for Desktop (MinGW)" into "C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qtenv2.bat".&lt;br /&gt;&lt;br /&gt;Now that we have everything in place we can type into "Qt 4.7.3 for Desktop (MinGW)" command window the following commands (in the directory where we saved the "Hello World" source code):&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;code&gt;qmake &lt;span style="color: #555555;"&gt;-&lt;/span&gt;project&lt;br /&gt;qmake&lt;br /&gt;mingw32&lt;span style="color: #555555;"&gt;-&lt;/span&gt;make&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The result is presented bellow:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vgXRmmVJHlU/TjMT-Kq78oI/AAAAAAAAAa0/etTvn4Kjems/s1600/hello_world.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-vgXRmmVJHlU/TjMT-Kq78oI/AAAAAAAAAa0/etTvn4Kjems/s1600/hello_world.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I've done the same for "Qt 4.7.3 for Desktop (MSVC 2008)". The commands to build the "Hello World" application are almost the same, but instead of mingw32-make, nmake is to be used with MSVC 2008.&lt;br /&gt;&lt;br /&gt;But after running nmake the following message was displayed: &lt;br /&gt;&lt;blockquote&gt;'nmake' is not recognized as an internal or external command, operable program or batch file.&lt;/blockquote&gt;&lt;br /&gt;This is due to the fact that "C:\QtSDK\Desktop\Qt\4.7.3\msvc2008\bin\qtenv2.bat" does not setup the MSVC 2008 compiler. In order to fix this append the lines to the qtenv2.bat file:&lt;br /&gt;&lt;blockquote&gt;call "%programfiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" &lt;br /&gt;title Qt 4.7.3 for Desktop (MSVC 2008)&lt;/blockquote&gt;&lt;br /&gt;For Symbian^3 instead of making a shortcut to cmd.exe and pass the batch file as argument, there is a shortcut to the batch file: "C:\QtSDK\Symbian\SDKs\Symbian3Qt473\bin\qtenvS3.bat", which in turn makes a call to cmd.exe. Exactly the opposite. Edit qtenvS3.bat and replace the last line "cmd /A /Q /K" with the lines:&lt;br /&gt;&lt;blockquote&gt;popd&lt;br /&gt;title Qt 4.7.3 for Symbian^3 Command Prompt&lt;/blockquote&gt;&lt;br /&gt;Compiling the "Hello World" sample for Symbian^3 goes like this (helloqt.cpp needs to be on the same drive where Qt SDK was installed, e.g. c:\):&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;qmake &lt;span style="color: #555555;"&gt;-&lt;/span&gt;project&lt;br /&gt;qmake&lt;br /&gt;make release&lt;span style="color: #555555;"&gt;-&lt;/span&gt;gcce&lt;br /&gt;make sis&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After installing helloqt.sis on device, the result looks like this (admittedly not a very good looking screen shot):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SAd6p-MwPek/TjMiVthKtFI/AAAAAAAAAa4/kbMiobOeU7s/s1600/helloqt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-SAd6p-MwPek/TjMiVthKtFI/AAAAAAAAAa4/kbMiobOeU7s/s320/helloqt.png" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Compiling Qt applications from command prompt is important in cases in which we have to deal with &lt;em&gt;configure&lt;/em&gt; scripts, or when we want to do things "old school" :)&lt;br /&gt;&lt;br /&gt;I've opened up a bug report &lt;a href="https://bugreports.qt.nokia.com/browse/QTSDK-802"&gt;QTSDK-802&lt;/a&gt; with the issues presented in this blog entry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7268416823902375173?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7268416823902375173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7268416823902375173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7268416823902375173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7268416823902375173'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/07/starting-development-with-qt-on-windows.html' title='Starting development with Qt on Windows'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-vgXRmmVJHlU/TjMT-Kq78oI/AAAAAAAAAa0/etTvn4Kjems/s72-c/hello_world.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6049537906307809</id><published>2011-07-03T14:11:00.010+02:00</published><updated>2011-07-03T16:00:25.658+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>(ro) Firefox și diacriticele vechi și noi</title><content type='html'>Recent s-a lansat &lt;strike&gt;&lt;a href="http://www.ca%c8%9bavencii.ro/"&gt;www.cațavencii.ro&lt;/a&gt;&lt;/strike&gt; &lt;a href="http://www.catavencii.ro/"&gt;www.catavencii.ro&lt;/a&gt;, și pentru un sit nou nouț mi s-a părut înapoiată alegerea de a folosi diacriticele vechi cu sedilă, mai ales când există &lt;a href="http://cristianadam.blogspot.com/2010/10/ro-diacriticele-si-internetul.html"&gt;soluții tehnice&lt;/a&gt; pentru rezolvarea problemei pătrățelelor în navigatoarele mai vechi. Dar sedile din titlurile articolelor arătau foarte corect în Firefox.&lt;br /&gt;&lt;br /&gt;Am făcut două capturi de ecran pentru Firefox 5 și Google Chrome 12 și le-am pus într-un gif animat:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fCHF-TDcv7Y/ThBWxpdXOSI/AAAAAAAAAZs/F4ZoSkMplg8/s1600/catavencii.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-fCHF-TDcv7Y/ThBWxpdXOSI/AAAAAAAAAZs/F4ZoSkMplg8/s320/catavencii.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Google Chrome afișa pagina cu sedile, precum Opera 11.50 și Internet Explorer 9.0. Inițial am crezut că este vorba de un bug și l-am raportat &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=668996"&gt;#668996&lt;/a&gt;, dar s-a dovedit că nu este un bug ci un/o „feature”!&lt;br /&gt;&lt;br /&gt;Firefox începând cu versiunea 4 randează textul în funcție de limba aleasă pentru setările locale din sistem. Din păcate nu toate fonturile din Windows 7 vin cu această facilitate, asta explică de ce fontul „Times New Roman” din animația de mai sus și-a păstrat diacriticele cu sedilă.&lt;br /&gt;&lt;br /&gt;Alte situri precum &lt;a href="http://www.capisci.ro/"&gt;www.capisci.ro&lt;/a&gt; sunt desedilizate complet. Vezi articolul despre diacritice:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BAFGJTDu790/ThBZYTzykcI/AAAAAAAAAZw/Qr_lEpogCZQ/s1600/capisci.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/-BAFGJTDu790/ThBZYTzykcI/AAAAAAAAAZw/Qr_lEpogCZQ/s320/capisci.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cei de la capisci au această notă &lt;i&gt;„Textul articolului este scris intenţionat cu semne diacritice greşite la literele ş şi ţ pentru a permite citirea lui de către aceia care probabil sînt cei mai interesaţi de subiect, adică aceia care văd pătrăţele în locul literelor corespunzătoare cu diacritice corecte.” &lt;/i&gt;:)&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Pentru&lt;i&gt; &lt;/i&gt;a preveni înlocuirea automată codul html trebuie să conțină indicații despre limbă precum &lt;i&gt;lang="en".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;În viitorul apropriat sistemele de operare vor avea toate fonturile actualizate și cel puțin Firefox va afișa internetul românesc corect!&lt;br /&gt;&lt;br /&gt;Merită totuși menționat faptul că acest lucru se poate face &lt;i&gt;acum&lt;/i&gt; cu ajutorul extensiei &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/foxreplace/"&gt;FoxReplace&lt;/a&gt;! Eu am ales să fac conversia manual, apăsând tasta F2. Puteți importa direct &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/FoxReplace/FoxReplace.xml"&gt;fișierul meu de configurare.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6049537906307809?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6049537906307809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6049537906307809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6049537906307809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6049537906307809'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/07/ro-firefox-si-diacriticele-vechi-si-noi.html' title='(ro) Firefox și diacriticele vechi și noi'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fCHF-TDcv7Y/ThBWxpdXOSI/AAAAAAAAAZs/F4ZoSkMplg8/s72-c/catavencii.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3475983165052269833</id><published>2011-06-30T00:43:00.005+02:00</published><updated>2011-08-21T23:07:23.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>European Registrars</title><content type='html'>In May 2010 I've found out that the &lt;a href="http://nic.md/"&gt;Moldavian&lt;/a&gt; registrar (&lt;a href="http://en.wikipedia.org/wiki/CcTLD"&gt;ccTLD&lt;/a&gt;) allows Internet domain names containing Romanian characters. By contrast, the &lt;a href="http://rotld.ro/engleza/index_en.htm"&gt;Romanian&lt;/a&gt; ccTLD &lt;b&gt;does not&lt;/b&gt; allow Internet domain names containing Romanian characters.&lt;br /&gt;&lt;br /&gt;I've asked the Romanian ccTLD why is that so, and their &lt;a href="https://www.assembla.com/spaces/cristianadam/documents/cyascYOPSr4i--eJe4gwI3/download/cyascYOPSr4i--eJe4gwI3"&gt;reply&lt;/a&gt; was: (sorry for the Google translation, didn't feel like translating this)&lt;br /&gt;&lt;blockquote&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span class="hps" title="Click for alternate translations"&gt;Currently&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;we do not allow&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;diacritics&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;in&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;domain names&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;because&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; there are two&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;standards&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;(alphabetically&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;) for&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;Romanian,&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;ISO&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;-8859&lt;/span&gt;&lt;span class="atn" title="Click for alternate translations"&gt;-2 (&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;tilde&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;)&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;and&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; ISO&lt;/span&gt;-&lt;span class="hps" title="Click for alternate translations"&gt;8856-16&lt;/span&gt; &lt;span class="hps atn" title="Click for alternate translations"&gt;(&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;comma&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;)&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;,&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;Legacy&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;and&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;proper&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;Romania&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span class="hps" title="Click for alternate translations"&gt;keyboard&lt;/span&gt; &lt;/span&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span class="hps" title="Click for alternate translations"&gt;Standard,&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;and&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;is&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;impossible to work&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;with two&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;incompatible standards&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;between&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; them.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span class="hps" title="Click for alternate translations"&gt;&lt;br /&gt;At this point&lt;/span&gt; ISO&lt;span class="" title="Click for alternate translations"&gt;-8859&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;-2 is&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;depreciated&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;with&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;software&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;makers&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; obligation to&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;provide&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;support&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;for&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;ISO&lt;/span&gt;-&lt;span class="hps" title="Click for alternate translations"&gt;8856-16&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;.&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; However,&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;ISO&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;-8859&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;-2 is&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;currently&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;used&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;in&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;more than 90&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;%&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;and&lt;/span&gt;&lt;br /&gt;&lt;span class="hps" title="Click for alternate translations"&gt;expected&lt;/span&gt; to &lt;span class="hps" title="Click for alternate translations"&gt;decrease&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;below&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;50%.&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;We can not&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;predict&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;at this time&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;,&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; but when&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;most will&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;use the&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;correct character&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;set&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;will&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;Romanian&lt;/span&gt;&lt;span class="hps" title="Click for alternate translations"&gt; IDN&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;domains&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;allows&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;registering&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;the&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;subset&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;latin2&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;I've asked myself how many countries in Europe allow national characters in their Internet domain names, this was after I've found out that starting with &lt;a href="http://www.eurid.eu/en/content/eu-now-supports-all-official-eu-languages"&gt;10th of December 2009&lt;/a&gt; the European Union (.eu) registrar offered support for all official EU languages.&lt;br /&gt;&lt;br /&gt;After a bit of research I've come up with this map of Europe. Green is for Countries that allow national characters in domain names, Pink for those which allow only the &lt;a href="http://en.wikipedia.org/wiki/ASCII"&gt;&lt;b&gt;American&lt;/b&gt; Standard Code for Information Interchange&lt;/a&gt; (US-ASCII) characters.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-F7JpCCNlAYU/TguUisR2m0I/AAAAAAAAAZY/6dBMntahoD0/s1600/european_registrars.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://4.bp.blogspot.com/-F7JpCCNlAYU/TguUisR2m0I/AAAAAAAAAZY/6dBMntahoD0/s320/european_registrars.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I've took some notes which can be found &lt;a href="https://www.assembla.com/spaces/cristianadam/documents/cmTKmSOPSr4i12eJe5cbLr/download/cmTKmSOPSr4i12eJe5cbLr"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've learned that European Union (.eu) and Slovenian (.si) registrars allow domain names with proper (comma) Romanian characters, while the German (.de) and Moldavian (.md) registrars allow domain names with the deprecated (cedilla) Romanian characters.&lt;br /&gt;&lt;br /&gt;The last registrar to allow &lt;a href="http://en.wikipedia.org/wiki/Internationalized_domain_name"&gt;Internationalized Domain Names&lt;/a&gt; (IDNs) was the Estonian ccTLD:&lt;br /&gt;&lt;blockquote&gt;Starting from June 13, 2011 the Estonian Internet Foundation will bring letters with diacritical marks õ, ä, ö, ü, š and ž to national domains ending with the suffix .ee, which means that the .ee domain will be covered with the full range of the Estonian alphabet. The Estonian Internet Foundation in cooperation with the Association of the Estonian Patent Attorneys has introduced a period for reservation of .ee domain names containing letters with diacritical marks before commencement of general registration of such domain names.&lt;/blockquote&gt;&lt;br /&gt;The sad part is that the Romanian registrar announced on &lt;a href="http://portal.rotld.ro/news/archive/ro/2/"&gt;15th of June 2008&lt;/a&gt; that they've updated their system, the interesting part was at 11. (again sorry for the Google translation): &lt;br /&gt;&lt;blockquote&gt;&lt;span class="" id="result_box" lang="en"&gt;&lt;span class="hps" title="Click for alternate translations"&gt;&lt;b&gt;11.&lt;/b&gt; The new system&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;is ready to&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;allow the&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;registration of domain names&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;with diacritics&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;in Romanian&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;.&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;But&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;these&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;services will be&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;provided in a&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;later stage&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;once they have&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;established and accepted&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;rules of&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;domain registration&lt;/span&gt; &lt;span class="hps" title="Click for alternate translations"&gt;with diacritics&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Next time you pay for your domain name, don't forget to &lt;a href="http://webapps.rotld.ro/forms/contact/form_contact.php?lang=en"&gt;ask them&lt;/a&gt; about how long it will take to establish the rules of domain registration with diacritics. It's been more than three years since they announce it.&lt;br /&gt;&lt;br /&gt;P.S. One might think that the reason that the Romanian ccTLD doesn't allow the Romanian special characters could be the fact that it waits after ICANN to &lt;a href="http://www.icann.org/en/topics/idn/idn-announcements-archive.htm"&gt;approve&lt;/a&gt; the Romanian characters. This is not the case, as you can see &lt;a href="http://www.icann.org/en/topics/idn/fast-track/interest/cctld-romania.pdf"&gt;here&lt;/a&gt; signed by the hand of the «Head of .RO Registration Services», because of "NOT BEING ELIGIBLE FOR FAST TRACK. The Romanian diacritics are included in the Latin script".&lt;br /&gt;&lt;br /&gt;A Romanian&amp;nbsp; version of this post was published in &lt;a href="http://www.kamikazeonline.ro/2011/07/diacriticele-si-numele-de-domeniu-internationalizate/"&gt;Kamikaze Online&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3475983165052269833?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3475983165052269833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3475983165052269833' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3475983165052269833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3475983165052269833'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/06/european-registrars.html' title='European Registrars'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-F7JpCCNlAYU/TguUisR2m0I/AAAAAAAAAZY/6dBMntahoD0/s72-c/european_registrars.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-5247300828780109104</id><published>2011-06-21T08:53:00.000+02:00</published><updated>2011-06-21T08:53:41.861+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>A-Breve</title><content type='html'>At &lt;a href="http://developer.qt.nokia.com/groups/qt_contributors_summit/wiki"&gt;Qt Contributor's Summit&lt;/a&gt; in Berlin I've got the chance to meet the man behind Qt's port on Android.&lt;br /&gt;&lt;br /&gt;The first thing I've noticed was a small change on his ID tag. His name was spelled differently it was not "Bogdan Vatra" as seen everywhere but instead was "Bogdan Vatră", which makes more sense giving that he's Romanian.&lt;br /&gt;&lt;br /&gt;Now I've fixed the injustice of having no results on Google when searching the correctly spelled name!&lt;br /&gt;&lt;br /&gt;Bogdan, keep up the good work and don't be shy on using your correctly spelled name. &lt;a href="http://en.wikipedia.org/wiki/%C4%82"&gt;A-Breve&lt;/a&gt; is correctly displayed on all systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-5247300828780109104?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/5247300828780109104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=5247300828780109104' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5247300828780109104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5247300828780109104'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/06/breve.html' title='A-Breve'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-131201115831561539</id><published>2011-06-16T01:52:00.001+02:00</published><updated>2011-06-16T01:54:21.443+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Corruption</title><content type='html'>Corruption is everywhere, even in Berliner subway :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pVg4-ocF0KI/TflE6Bj3qAI/AAAAAAAAAZQ/1UMU5l77BkM/s1600/bvg1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://3.bp.blogspot.com/-pVg4-ocF0KI/TflE6Bj3qAI/AAAAAAAAAZQ/1UMU5l77BkM/s320/bvg1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-s4Kkk7Q0o-0/TflE8o9JqCI/AAAAAAAAAZU/3BHjpsNTTZ4/s1600/bvg2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://2.bp.blogspot.com/-s4Kkk7Q0o-0/TflE8o9JqCI/AAAAAAAAAZU/3BHjpsNTTZ4/s320/bvg2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-131201115831561539?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/131201115831561539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=131201115831561539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/131201115831561539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/131201115831561539'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/06/corruption.html' title='Corruption'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-pVg4-ocF0KI/TflE6Bj3qAI/AAAAAAAAAZQ/1UMU5l77BkM/s72-c/bvg1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6242161189863430862</id><published>2011-05-28T04:13:00.018+02:00</published><updated>2011-08-27T09:27:00.329+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><title type='text'>(ro) Tastaturi românești</title><content type='html'>Pe la începutul anilor 2000 am văzut prima tastatură cu aranjament românesc, era o tastatură BTC. comRACE încă mai &lt;a href="http://www.comrace.ro/Select.asp?GR=Keyboard&amp;amp;Prod=0"&gt;vinde&lt;/a&gt; acele tastaturi BTC. Aranjamentul era cel oferit de Microsoft în acei ani.&lt;br /&gt;&lt;br /&gt;Deși mi-am dorit o tastatură cu aranjament românesc nu am cumpărat-o, fiind obișnuit cu aranjamentul american (y era la y, z era la z).&lt;br /&gt;&lt;br /&gt;În timp lucrurile au evoluat astfel:&lt;br /&gt;- Apr 1993 Microsoft lansează Windows 3.1 pentru Europa Centrală și de Est (vezi cum arăta &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/keyboard/win_3_1_romanian.gif?rev=55"&gt;tastatura virtuală&lt;/a&gt;). &lt;br /&gt;- Jun 1993 IBM introduce aranjamentul &lt;a href="http://web.archive.org/web/20040509164556/http://www-306.ibm.com/software/globalization/topics/keyboards/KBD446.jsp"&gt;KBD446&lt;/a&gt;, aranjament folosit în sistemul de operare OS/2 &lt;br /&gt;- Ian 1998 &lt;a href="http://www.asro.ro/"&gt;ASRO&lt;/a&gt; (IRS pe vremea aceea) introduce standardul de tastatură românească &lt;a href="http://www.secarica.ro/std/sr_13392_1998.pdf"&gt;SR-13392:1998&lt;/a&gt;&lt;br /&gt;- Sep 1999 &lt;a href="http://www.fileformat.info/info/unicode/version/3.0/index.htm"&gt;Unicode 3.0&lt;/a&gt; atestă existența caracterelor ș și ț cu virgulă&lt;br /&gt;- Ian 2001 Cristian Secară publică &lt;a href="http://www.secarica.ro/html/ro_keyboard.html"&gt;aranjamente de tastatură&lt;/a&gt; mai omenești, având la bază standardul ASRO SR-13392:1998 (vezi pagina din &lt;a href="http://web.archive.org/web/20020605035716/http://www.secarica.ro/html/ro_keyboard.html"&gt;Iunie 2002&lt;/a&gt;)&lt;br /&gt;- Dec 2004 ASRO revizuiește standardul de tastatură - 13392:2004 (vezi versiunea „&lt;a href="http://www.secarica.ro/std/sr_13392_2004_08_03.pdf"&gt;final draft&lt;/a&gt;”) &lt;br /&gt;- Ian 2007 România intră în Uniunea Europeană&lt;br /&gt;- Ian 2007 Microsoft lansează Windows Vista cu suport pentru standardul ASRO 13392:2004, vechiul aranjament oferit de Microsoft rămâne sub denumirea „Legacy”&lt;br /&gt;- Mai 2007 Windows XP poate fi &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0ec6f335-c3de-44c5-a13d-a1e7cea5ddea&amp;amp;DisplayLang=ro"&gt;actualizat&lt;/a&gt; pentru a afișa ș și ț cu virgulă (doar fonturile, nimic de-a face cu tastatura)&lt;br /&gt;- Oct 2009 Microsoft lansează Windows 7. În Ian 2010 Microsoft declara Windows 7 cel mai bine vândut sistem de operare din istorie.&lt;br /&gt;- Mai 2010 Google adaugă o tastatură virtuală la &lt;a href="http://www.google.ro/"&gt;www.google.ro&lt;/a&gt;. Din păcate Google au ales aranjamentul IBM &lt;a href="http://web.archive.org/web/20040509164556/http://www-306.ibm.com/software/globalization/topics/keyboards/KBD446.jsp"&gt;KBD446&lt;/a&gt; ca model, ignorând cu succes standardul românesc. Am raportat problema &lt;a href="http://groups.google.com/group/google-ajax-search-api/browse_thread/thread/832109fa72860631/91727a13576a1833"&gt;aici&lt;/a&gt; (Nov 2010).&lt;br /&gt;- August 2011 Google renunță la tastatura virtuală de la &lt;a href="http://www.google.ro/"&gt;www.google.ro&lt;/a&gt;. Au renunțat la toate tastaturile virtuale, a se vedea &lt;a href="http://googlecode.blogspot.com/2011/05/spring-cleaning-for-some-of-our-apis.html"&gt;anunțul referitor la deprecierea API-urilor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.secarica.ro/misc/2005-03-02_230350.jpg"&gt;Cherry&lt;/a&gt; și &lt;a href="http://www.secarica.ro/misc/tastatura-RO-0.jpg"&gt;Fujitsu/Siemens&lt;/a&gt; au produs tastaturi conforme standardului ASRO &lt;a href="http://www.secarica.ro/std/sr_13392_1998.pdf"&gt;SR-13392:1998&lt;/a&gt; și în 2011 te-ai aștepta să găsești tastaturi conforme standardului ASRO SR-13392:2004. Laptopuri cu tastaturi s-au mai văzut (&lt;a href="http://groups.google.com/group/diacritice/attach/847b3e824da4bf9c/toshiba_ro.jpg?part=3&amp;amp;view=1"&gt;Toshiba&lt;/a&gt; este singurul exemplu) dar tastaturi pentru PC... nț.&lt;br /&gt;&lt;br /&gt;Am fost plăcut surprins să aflu că un producător de talie mondială - DELL - are o ofertă europeană completă de tastaturi, printre care și tastaturi „mioritice”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Dell"&gt;&lt;b&gt;Dell&lt;/b&gt;&lt;/a&gt; are patru tastaturi românești în ofertă:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/url?sa=D&amp;amp;q=http://accessories.euro.dell.com/sna/products/Laptop_Notebook_Accessories/productdetail.aspx%3Fc%3Ded%26l%3Den%26s%3Dcorp%26sku%3D580-13630"&gt;Tastatura multimedia 580-13630 (QWERTY)&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4zTU9rsRLak/TeAz_14XxKI/AAAAAAAAAY4/gju8j_DcmUI/s1600/580-13630.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="133" src="http://2.bp.blogspot.com/-4zTU9rsRLak/TeAz_14XxKI/AAAAAAAAAY4/gju8j_DcmUI/s320/580-13630.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://accessories.euro.dell.com/sna/products/Laptop_Notebook_Accessories/productdetail.aspx?c=ed&amp;amp;l=en&amp;amp;s=corp&amp;amp;sku=580-14797"&gt; Tastatura normală 580-14797 (QWERTZ)&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yFN-eu6-EKI/TeA0GVGuoNI/AAAAAAAAAY8/jIXGGsdzfn0/s1600/580-14198.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://2.bp.blogspot.com/-yFN-eu6-EKI/TeA0GVGuoNI/AAAAAAAAAY8/jIXGGsdzfn0/s320/580-14198.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://accessories.euro.dell.com/sna/products/Laptop_Notebook_Accessories/productdetail.aspx?c=ed&amp;amp;l=en&amp;amp;s=corp&amp;amp;sku=580-14246"&gt; Tastatura multimedia extra 580-14246 (QWERTY)&lt;/a&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hPO0PEnyXpk/TeA0c8QFaeI/AAAAAAAAAZA/i3UximVirrU/s1600/580_14246.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="http://4.bp.blogspot.com/-hPO0PEnyXpk/TeA0c8QFaeI/AAAAAAAAAZA/i3UximVirrU/s320/580_14246.jpg" width="320" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;a href="http://accessories.euro.dell.com/sna/products/Laptop_Notebook_Accessories/productdetail.aspx?c=ed&amp;amp;l=en&amp;amp;s=corp&amp;amp;sku=580-15060"&gt;Tastatura normală 580-15060 (QWERTY)&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GIehfmKPmho/TeA0mXe1ZSI/AAAAAAAAAZE/VgzkQzZLu0Q/s1600/580-15060.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://4.bp.blogspot.com/-GIehfmKPmho/TeA0mXe1ZSI/AAAAAAAAAZE/VgzkQzZLu0Q/s320/580-15060.jpg" width="320" /&gt;&lt;/a&gt; &lt;/div&gt;Din păcate tastaturile au poze generice și nu se poate observa ce aranjament este folosit. Trei din ele menționează faptul că ar fi QWERT&lt;b&gt;Y&lt;/b&gt; - adică respectând noul standard. Singura metodă de a afla a fost să comand o tastatură. &lt;br /&gt;&lt;br /&gt;Tastaturile pot fi comandate doar telefonic de la Dell, respectiv de la distribuitorii Dell din țara în care locuiți. Pentru Germania numărul de telefon este:  0 800 33 55 66 1, apelul fiind netaxabil. Teoretic o tastatură românească poate fi obținută în două săptămâni în orice țară în care Dell vinde calculatoare.&lt;br /&gt;&lt;br /&gt;Am comandat tastatura normală 580-14797 (22€), dar deoarece în descriere era menționat faptul că ar fi aranjamentul vechi (QWERT&lt;b&gt;Z&lt;/b&gt;), am schimbat comanda pentru tastatura multimedia extra 580-14246 (33€)&lt;br /&gt;&lt;br /&gt;Din păcate aranjamentul este tot cel vechi, chiar dacă în descriere este menționată descrierea QWERTY, precum se vede din poza de mai jos:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hKvNkiPVBng/TeA83KlddHI/AAAAAAAAAZI/Fh0JbLHAB-s/s1600/580_14140_live.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="http://3.bp.blogspot.com/-hKvNkiPVBng/TeA83KlddHI/AAAAAAAAAZI/Fh0JbLHAB-s/s320/580_14140_live.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;În poză nu se observă cele două porturi USB, foarte utile când avem de-a face cu memorii portabile USB sau cu noile telefoane cu alimentare prin cablul USB.&lt;br /&gt;&lt;br /&gt;Am contactat telefonic Dell și le-am comunicat faptul că există o problemă cu descrierea produsului. Din păcate Dell nu are în ofertă tastaturi cu noul standard. Vânzătorul a fost surprins să afle că aranjamentul oferit este vechi. Pentru necazul provocat Dell mi-a făcut cadou tastatura!&lt;br /&gt;&lt;br /&gt;Am obținut gratis o tastatură de 33€, o tastatură de care nu am nevoie și sunt dispus să o donez cuiva căreia i-ar fi folositoare. &lt;br /&gt;&lt;br /&gt;Producătorii de calculatoare ar avea de câștigat din vânzarea tastaturilor compatibile cu „Windows 7”, respectiv conforme standardului ASRO 13392:2004.&lt;br /&gt;&lt;br /&gt;Dragi producători ne-am săturat de tastatura Microsoft „&lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/keyboard/win_3_1_romanian.gif?rev=55"&gt;Legacy&lt;/a&gt;”!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P.S. Statele Unite ale Americii&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Se pare că tastatura 580-14246 are un alt cod în Statele Unite ale Americii și anume W316D. Pe &lt;a href="http://cgi.ebay.com/New-Dell-Romanian-Multimedia-Slim-USB-Keyboard-W316D-/160590875971"&gt;ebay&lt;/a&gt; se poate cumpăra o tastatură W316D la numai $19,95.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P.P.S. Alți producători&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Și firma &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Lenovo"&gt;Lenovo&lt;/a&gt;&lt;/b&gt;, firmă care a achiziționat divizia de calculatoare de la IBM în anul 2005, are în ofertă &lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:keyword-search?category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;keywords=romanian"&gt;tastaturi românești&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oferta conține cinci tastaturi:&lt;br /&gt;&lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:item.detail?GroupID=38&amp;amp;Code=73P2644&amp;amp;current-category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;&amp;amp;hide_menu_area=yes"&gt;IBM Enhanced Performance USB Keyboard (Business Black) - Romanian 446&lt;/a&gt; 73P2644&lt;br /&gt;&lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:item.detail?GroupID=38&amp;amp;Code=73P4754&amp;amp;current-category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;&amp;amp;hide_menu_area=yes"&gt;ThinkPlus Preferred Pro USB Fingerprint Keyboard - Romanian 446&lt;/a&gt; 73P4754 &lt;br /&gt;&lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:item.detail?GroupID=38&amp;amp;Code=73P2645&amp;amp;current-category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;&amp;amp;hide_menu_area=yes"&gt;IBM Enhanced Performance USB Keyboard (Business Black) - Romanian 096&lt;/a&gt; 73P2645 &lt;br /&gt;&lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:item.detail?GroupID=38&amp;amp;Code=51J0182&amp;amp;current-category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;&amp;amp;hide_menu_area=yes"&gt;Lenovo USB Smartcard Keyboard - Romanian&lt;/a&gt; 51J0182 &lt;br /&gt;&lt;a href="http://shop.lenovo.com/SEUILibrary/controller/e/roind/LenovoPortal/en_RO/catalog.workflow:item.detail?GroupID=38&amp;amp;Code=51J0183&amp;amp;current-category-id=E9ADAEB6787146E29B78400A33E7FE8A&amp;amp;&amp;amp;hide_menu_area=yes"&gt;Lenovo USB Smartcard Keyboard - Romanian&lt;/a&gt; 51J0183&lt;br /&gt;&lt;br /&gt;Tastatura ThinkPlus Preferred Pro USB Fingerprint arată astfel:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UVVoT1suRnI/Tgz6oeD18sI/AAAAAAAAAZg/CWoTNt7Jmxc/s1600/73P4754.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="134" src="http://3.bp.blogspot.com/-UVVoT1suRnI/Tgz6oeD18sI/AAAAAAAAAZg/CWoTNt7Jmxc/s320/73P4754.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Putem doar specula faptul că „Romanian 446” vine de la standardul &lt;a href="ftp://ftp.software.ibm.com/software/globalization/keyboards/KBD446.pdf"&gt;IBM KBD446&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Și firma &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/HP"&gt;HP&lt;/a&gt;&lt;/b&gt; are în ofertă cel puțin o tastatură românească, și anume „HP 2004 Standard Keyboad USB RO” DT528A#AKE. Se poate găsi la &lt;a href="http://www.amazon.de/Standardtastatur-2004-Tastatur-Tasten-Schwarz-silber/dp/B001B8T1LY/"&gt;Amazon DE&lt;/a&gt; la prețul de 19,49€&lt;br /&gt;&lt;br /&gt;Tastatura DT528A arată astfel:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-q54QlzRx8jE/Tgz3cGRDRYI/AAAAAAAAAZc/oQ8Q6mMTw_Q/s1600/DT528A.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://2.bp.blogspot.com/-q54QlzRx8jE/Tgz3cGRDRYI/AAAAAAAAAZc/oQ8Q6mMTw_Q/s320/DT528A.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Cu siguranță avem de-a face cu o tastatură „Legacy” deoarece în descrierea de pe pagina &lt;a href="http://www.amazon.co.uk/HP-Standard-Keyboard-carbonite-Romania/dp/tech-data/B001B8T1LY"&gt;Amazon UK&lt;/a&gt; este menționat la sistemul de operare „Microsoft Windows 2000 / XP”.&lt;br /&gt;&lt;br /&gt;Și firma &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Acer_Inc."&gt;Acer&lt;/a&gt;&lt;/b&gt; oferă tastaturi românești: &lt;br /&gt;&lt;br /&gt;Keyboard Romanian 105-key USB &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=46483"&gt;KB.USB0B.073&lt;/a&gt;&lt;br /&gt;Keyboard Romanian 105-key Wireless &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=46612"&gt;KB.RF403.057&lt;/a&gt;&lt;br /&gt;Keyboard Romanian 105-key RoHS USB &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=46137"&gt;KB.KUS03.260&lt;/a&gt;&lt;br /&gt;Keyboard Romanian 105-key Black USB &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=45925"&gt;KB.USB03.092&lt;/a&gt;&lt;br /&gt;Keyboard Romanian 105-key Black PS2 &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=45896"&gt;KB.PS20B.005&lt;/a&gt;&lt;br /&gt;Power Series SK50 &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=46022"&gt;KB.6880B.075&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aspire Z5600 &lt;a href="http://www.zandparts.com/acer/product_info.php?products_id=46537"&gt;KB.RF403.274&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MkPy1WMFTp4/Tg0L569bT6I/AAAAAAAAAZo/XTtaEcqQm28/s1600/acer-aspire_z5600.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-MkPy1WMFTp4/Tg0L569bT6I/AAAAAAAAAZo/XTtaEcqQm28/s320/acer-aspire_z5600.jpg" width="296" /&gt;&lt;/a&gt;&lt;/div&gt;Aspire X3600 &lt;a href="http://www.zandparts.com/acer/product_info.php?cPath=303_231902_241959_241966&amp;amp;products_id=46137"&gt;KB.KUS03.260&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XlBd1XawXng/Tg0H2cg8ErI/AAAAAAAAAZk/XxYzmjOQJxw/s1600/acer_aspire_x3600.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://3.bp.blogspot.com/-XlBd1XawXng/Tg0H2cg8ErI/AAAAAAAAAZk/XxYzmjOQJxw/s320/acer_aspire_x3600.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La tastaturile Acer nu am putut găsi detalii despre aranjamentul folosit, cel mai probabil avem de-a face de asemenea cu aranjamentul „Legacy”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6242161189863430862?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6242161189863430862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6242161189863430862' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6242161189863430862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6242161189863430862'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/05/ro-tastaturi-romanesti.html' title='(ro) Tastaturi românești'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-4zTU9rsRLak/TeAz_14XxKI/AAAAAAAAAY4/gju8j_DcmUI/s72-c/580-13630.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1706854283376944279</id><published>2011-05-23T22:27:00.003+02:00</published><updated>2011-05-24T15:30:53.314+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android is the new Windows Mobile</title><content type='html'>Firstly please excuse me for stating the obvious. I've reached the above conclusion after seeing Android ports of two Windows Mobile programs.&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;Windows&lt;/strike&gt; Total Commander has a &lt;a href="http://www.ghisler.ch/board/viewtopic.php?t=28813"&gt;beta version&lt;/a&gt; for Android. Total Commander for Windows Mobile is a nice addition to the native File Explorer, one feature I use often is the Registry Editor. On the desktop I use Total Commander daily, and I feel like missing one hand when I have to operate on desktops without it.&lt;br /&gt;&lt;br /&gt;The second application with an Android port (and also an iPhone port) is &lt;a href="http://www.birdiesync.com/"&gt;Birdie Sync&lt;/a&gt;, which allows synchronization between your mobile phone and Mozilla Thunderbird / Sunbird.&lt;br /&gt;&lt;br /&gt;It's nice to see that these applications are brought to life on a different platform. What Windows Mobile applications ported to Android have you encountered?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1706854283376944279?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1706854283376944279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1706854283376944279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1706854283376944279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1706854283376944279'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/05/android-is-new-windows-mobile.html' title='Android is the new Windows Mobile'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4036199900639478246</id><published>2011-05-04T01:00:00.002+02:00</published><updated>2011-11-08T22:08:20.694+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='droid'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Thank you Google!</title><content type='html'>Google has finally fixed the Droid font family with regard to Romanian language (&lt;a href="http://code.google.com/p/android/issues/detail?id=9808"&gt;reported as a bug here&lt;/a&gt;). The font family can be downloaded from &lt;a href="https://github.com/android/platform_frameworks_base/tree/master/data/fonts"&gt;here&lt;/a&gt;, and more information about the release can be found &lt;a href="https://github.com/android/platform_frameworks_base/commit/6a19759c0fae744e80c032ca3c23932e73e6d9d9"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mVkvli43les/TcCG-O96AoI/AAAAAAAAAYE/893YRZma0pA/s1600/droid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-mVkvli43les/TcCG-O96AoI/AAAAAAAAAYE/893YRZma0pA/s400/droid.png" width="305" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;strike&gt;What came as a surprise was the fact that &lt;a href="http://www.google.com/webfonts"&gt;Google Web Fonts&lt;/a&gt; had proper Romanian support for Droid font family. This was not the case in the past, and still not the case for other font families like Ubuntu&lt;/strike&gt; (&lt;a href="http://code.google.com/p/google-ajax-apis/issues/detail?id=557"&gt;reported as a bug here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ilElE3jdUSc/TcCHumvCn0I/AAAAAAAAAYM/yX0kOT0pl_0/s1600/droid_web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="323" src="http://3.bp.blogspot.com/-ilElE3jdUSc/TcCHumvCn0I/AAAAAAAAAYM/yX0kOT0pl_0/s400/droid_web.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Thank you Google!&lt;/b&gt; (I would have welcomed a comment in the bug report though)&lt;br /&gt;&lt;br /&gt;P.S. Google Web Fonts are not yet updated to cope with Romanian language. The picture above shows what one should expect (also when the font is installed in the system), and below is what one will really get.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qVVFvqfcwgU/TcCQOpmQU8I/AAAAAAAAAYU/ZWecwfbMyAk/s1600/droid_web_true_test.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="351" src="http://1.bp.blogspot.com/-qVVFvqfcwgU/TcCQOpmQU8I/AAAAAAAAAYU/ZWecwfbMyAk/s400/droid_web_true_test.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4036199900639478246?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4036199900639478246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4036199900639478246' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4036199900639478246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4036199900639478246'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/05/thank-you-google.html' title='Thank you Google!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mVkvli43les/TcCG-O96AoI/AAAAAAAAAYE/893YRZma0pA/s72-c/droid.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6143652530987957246</id><published>2011-02-27T17:04:00.001+01:00</published><updated>2011-02-27T17:18:55.365+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><title type='text'>Thank you Amazon!</title><content type='html'>In this post I'm focusing on Kindle for PC running on Windows XP and the Romanian language.&lt;br /&gt;&lt;br /&gt;Windows XP has been able to display correct Romanian characters after Romania joined the European Union in 2007, and it can do this after installing the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0ec6f335-c3de-44c5-a13d-a1e7cea5ddea&amp;amp;displaylang=en"&gt;European Union Expansion Font Update&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of Kindle for PC 1.2.1 displaying a book on Windows XP:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DrgBkspscPw/TWpve6boM8I/AAAAAAAAAWM/e5H954D6Pxo/s1600/kindle_1.2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://4.bp.blogspot.com/-DrgBkspscPw/TWpve6boM8I/AAAAAAAAAWM/e5H954D6Pxo/s400/kindle_1.2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here is a screenshot of Kindle for PC 1.3.0 displaying the same book:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QdGMWRXxekA/TWpvnOKdpNI/AAAAAAAAAWU/1iIWxviB5c4/s1600/kindle_1.3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://2.bp.blogspot.com/-QdGMWRXxekA/TWpvnOKdpNI/AAAAAAAAAWU/1iIWxviB5c4/s400/kindle_1.3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Noticed the squares? They are there because Amazon changed the font (which cannot be changed by user) from Times New Roman to Georgia. Unfortunately Microsoft has not included an updated version of Georgia in the "European Union Expansion Font Update".&lt;br /&gt;&lt;br /&gt;Here is a list of options for fixing this squares problem:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Upgrade from Windows XP to a newer Windows operating system&lt;/li&gt;&lt;li&gt;Report the problem to Microsoft and hope for a new version of&amp;nbsp; "European Union Expansion Font Update"&lt;/li&gt;&lt;li&gt;Report the problem to Amazon and hope for a new version of Kindle for PC&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The first option is not always feasible due to old hardware or lack of budget for newer Windows operating systems.&lt;br /&gt;&lt;br /&gt;The second option could have worked in 2007, but not in 2011. I'm saying this because the first version of "European Union Expansion Font Update" was dated 8 December 2006 and included font updates for Arial, Times New Roman, and Verdana families. The second version is dated 1 May 2007 which also added the Trebuchet font family to the updated font list.&lt;br /&gt;&lt;br /&gt;The third seems the most "doable" of them all. And it was.&lt;br /&gt;&lt;br /&gt;Here is a screemshot of Kindle for PC 1.4.1 running on Windows XP:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3mp5PSy-0oo/TWpzZi5yC0I/AAAAAAAAAWc/GvX4l_DIazQ/s1600/kindle_1.4.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="288" width="400" src="http://1.bp.blogspot.com/-3mp5PSy-0oo/TWpzZi5yC0I/AAAAAAAAAWc/GvX4l_DIazQ/s400/kindle_1.4.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Amazon reverted the reading font to Times New Roman. &lt;b&gt;Thank you Amazon&lt;/b&gt; for listening! (although feedback like "We fixed your problem in version x.y.z" would have been welcomed)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6143652530987957246?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6143652530987957246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6143652530987957246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6143652530987957246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6143652530987957246'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/02/thank-you-amazon.html' title='Thank you Amazon!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-DrgBkspscPw/TWpve6boM8I/AAAAAAAAAWM/e5H954D6Pxo/s72-c/kindle_1.2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2495542538916240193</id><published>2011-02-09T23:46:00.003+01:00</published><updated>2011-02-09T23:58:27.921+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><title type='text'>Reusing bits</title><content type='html'>I was cleaning my projects directory and I have stumbled upon a small piece of code which I thought might interest others.&lt;br /&gt;&lt;br /&gt;The small piece of code was about changing a private data member from outside the object, using normal C++, without using &lt;i&gt;reintepret_cast&lt;/i&gt; or hacks like &lt;em&gt;#define class struct&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;class Pi&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double pi_;&lt;br /&gt;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pi() : pi_(3.1514f)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double GetValue() const&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return pi_;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;struct Pie&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double pie_;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using std::cout;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using std::endl;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pi pi;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Pi: " &amp;lt;&amp;lt; pi.GetValue() &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Pie* p = new (&amp;amp;pi) Pie;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p-&amp;gt;pie_ = 4.0f;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Pi: " &amp;lt;&amp;lt; pi.GetValue() &amp;lt;&amp;lt; endl;&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;I have highlighted the line which does the trick. This trick is called &lt;a href="http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10"&gt;placement new&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2495542538916240193?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2495542538916240193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2495542538916240193' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2495542538916240193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2495542538916240193'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/02/reusing-bits.html' title='Reusing bits'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6875647957626455718</id><published>2011-01-18T20:41:00.001+01:00</published><updated>2011-01-19T01:50:01.242+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>Manifest this</title><content type='html'>In this blog entry I will talk about Visual Studio 2008 and the C runtime library.&lt;br /&gt;&lt;br /&gt;Firstly we create a new Win32 hello world console application:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; "Hello World" &amp;lt;&amp;lt; std::endl;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;The resulted hello.exe binary is 9KB large, and by using &lt;a href="http://www.dependencywalker.com/"&gt;Dependency Walker&lt;/a&gt; we find that is dynamically liked to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcp90.dll&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcr90.dll&lt;/span&gt;, and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kernel32.dll&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One might think that in order to deploy this hello application you will only need &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcp90.dll&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcr90.dll&lt;/span&gt; alongside the application, or to have them somehow installed in the system.&lt;br /&gt;&lt;br /&gt;The latter option is preferred by most applications, you only need to install &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&amp;amp;displaylang=en"&gt;Microsoft Visual C++ 2008 Redistributable Package&lt;/a&gt; and that's it.&lt;br /&gt;&lt;br /&gt;The redistributable package is 1.7MBytes in size, and is installed in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;c:\Windows\WinSxS&lt;/span&gt; directory, and it also includes MFC. But this is just a hello world application, surely we don't need to install MFC.&lt;br /&gt;&lt;br /&gt;The good news is that you can copy from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\&lt;/span&gt; only &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcp90.dll&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcr90.dll&lt;/span&gt;, and the funnily file named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Microsoft.VC90.CRT.manifest&lt;/span&gt;. You don't need to copy &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msvcm90.dll&lt;/span&gt; because this is required for "Managed" C++ applications.&lt;br /&gt;&lt;br /&gt;The manifest file is required because starting with Visual Studio 2005 the C runtime library (CRT) is packaged as &lt;a href="http://msdn.microsoft.com/en-us/library/aa376414%28v=VS.85%29.aspx"&gt;Side-by-side Assembly&lt;/a&gt;. Applications need to have also a bit of magic in order to work with the new CRT namely the RT_MANIFEST resource embedded in the executable.&lt;br /&gt;&lt;br /&gt;By using &lt;a href="http://en.wikipedia.org/wiki/Resource_Hacker"&gt;Resource Hacker&lt;/a&gt; we can take a peek at this RT_MANIFEST section:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;assembly manifestversion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;trustinfo xmlns="urn:schemas-microsoft-com:asm.v3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestedprivileges&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestedexecutionlevel level="asInvoker" uiaccess="false"&amp;gt;&amp;lt;/requestedexecutionlevel&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/requestedprivileges&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/trustinfo&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dependentassembly&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;assemblyidentity name="Microsoft.VC90.CRT" processorarchitecture="x86" publickeytoken="1fc8b3b9a1e18e3b" type="win32" version="&lt;b&gt;9.0.21022.8&lt;/b&gt;"&amp;gt;&amp;lt;/assemblyidentity&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dependentassembly&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/dependency&amp;gt;&amp;lt;/assembly&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;I have highlighted the version of&amp;nbsp; the CRT used.&lt;br /&gt;&lt;br /&gt;What happens if you decide to install &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en"&gt;Visual Studio 2008 SP1&lt;/a&gt;? You would expect that you should have a different CRT version. That was the case for Visual Studio 2005, Visual Studio 2008 uses the RTM version also when you install SP1, as described in this &lt;a href="http://blogs.msdn.com/b/vcblog/archive/2008/05/15/vc-runtime-binding.aspx"&gt;Visual C++ Team Blog&lt;/a&gt; article.&lt;br /&gt;&lt;br /&gt;The size of the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&amp;amp;displaylang=en"&gt;Microsoft Visual C++ 2008 SP1 Redistributable Package&lt;/a&gt; changed as well, from 1.7MB to 4.0MB due to &lt;a href="http://msdn.microsoft.com/en-us/library/bb982354%28v=VS.90%29.aspx"&gt;MFC Facelift... Feature Pack&lt;/a&gt; and C++ TR1 inclusion.&lt;br /&gt;&lt;br /&gt;In order to have the new CRT referenced one needs to set the following preprocessor define &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;_BIND_TO_CURRENT_CRT_VERSION&lt;/span&gt;. After doing so the CRT version becomes &lt;b&gt;9.0.30729.1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After Visual Studio 2008 SP1 there was another CRT update due to &lt;a href="http://msdn.microsoft.com/en-us/visualc/ee309358.aspx"&gt;&lt;span style="font-family: inherit;"&gt;ATL Security Update&lt;/span&gt;&lt;/a&gt;, which bumped the CRT version to &lt;b&gt;9.0.30729.4148&lt;/b&gt;. This version is referenced in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"c:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So we have build our hello application with version &lt;b&gt;9.0.30729.1&lt;/b&gt; and we distribute the CRT with version &lt;b&gt;9.0.30729.4148&lt;/b&gt;, which of course doesn't work in practice.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/microsoft.public.win32.programmer.tools/browse_thread/thread/16cae5f1305b05f5/"&gt;Others&lt;/a&gt; have encountered this problem and they have taken drastic measures like reinstallation of Visual Studio 2008 and/or manually change the CRT version in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"c:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h"&lt;/span&gt; header file.&lt;br /&gt;&lt;br /&gt;Since these manifest files are xml files why not just change them using the &lt;a href="http://msdn.microsoft.com/en-us/library/aa375649%28v=vs.85%29.aspx"&gt;manifest tool&lt;/a&gt;? &lt;br /&gt;&lt;br /&gt;The following two commands extract and repack the RT_MANIFEST resource:&lt;br /&gt;&lt;blockquote&gt;mt.exe -inputresource:hello.exe;#1 -out:hello.manifest&lt;br /&gt;mt.exe -outputresource:hello.exe;#1 -manifest hello.manifest &lt;/blockquote&gt;&lt;br /&gt;Now there is the issue of replacing "9.0.30729.1" to "9.0.30729.4148" in hello.manifest and since &lt;a href="http://en.wikipedia.org/wiki/Sed"&gt;sed&lt;/a&gt; is not present on a normal Windows machine I have created a &lt;a href="http://svn.xiph.org/trunk/oggdsf/build/NSIS/Release/replace_string.js"&gt;Javascript script&lt;/a&gt; which does this task, which is called like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;cscript.exe replace_string.js hello.manifest "9.0.30729.1" "9.0.30729.4148"&lt;/blockquote&gt;&lt;br /&gt;This way we can update the CRT files without having to wait for Visual Studio to catch up.&lt;br /&gt;&lt;br /&gt;They say Visual Studio 2010 has addressed the whole manifest nightmare and one can copy the CRT files alongside the executable file without any hacking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6875647957626455718?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6875647957626455718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6875647957626455718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6875647957626455718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6875647957626455718'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/01/manifest-this.html' title='Manifest this'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-5238340537383788622</id><published>2011-01-06T00:29:00.003+01:00</published><updated>2011-01-13T01:21:24.227+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html5 video'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>ActiveX &lt;video&gt; controls</title><content type='html'>The recently released &lt;a href="http://downloads.xiph.org/releases/oggdsf/opencodecs_0.85.17777.exe"&gt;OpenCodecs release&lt;/a&gt;, beside fixing bugs and updating audio and video codecs libraries adds support for "controls" attribute in the ActiveX &amp;lt;video&amp;gt; player.&lt;br /&gt;&lt;br /&gt;Without further ado here is a video showing this feature:&lt;br /&gt;&lt;video controls="controls" height="432" width="576" src="http://people.xiph.org/~cristian/Screencasts/OpenCodecs%20ActiveX%20Controls.ogv" xmlns="http://www.w3.org/1999/xhtml/video"&gt;Your browser does not support &amp;lt;video&amp;gt; tag&lt;/video&gt;&lt;br /&gt;&lt;br /&gt;The ActiveX &amp;lt;video&amp;gt; player uses DirectShow to render an URL. The DirectShow &lt;a href="http://msdn.microsoft.com/en-us/library/dd375642%28VS.85%29.aspx"&gt;"File Source (URL)"&lt;/a&gt; filter downloads a file from beginning to the end and it doesn't support seeking until has downloaded the whole file. This behavior is unfortunate and I hope I can fix this by writing my own "File Source (URL)" filter.&lt;br /&gt;&lt;br /&gt;The above video presents a Theora video, which at first it has 0:00 length and then it has the right duration. This is due the fact that the current DirectShow Ogg demuxer needs to have access to the whole file in order to build the seeking table, the ActiveX player knows when the download is completed and builds the seeking table at the end. WebM should not have this limitation.&lt;br /&gt;&lt;br /&gt;The UI was borrowed from Firefox and I've used &lt;a href="http://msdn.microsoft.com/en-us/library/ms533798%28v=vs.85%29.aspx"&gt;GDI+&lt;/a&gt; to draw the controls. I hope to use &lt;a href="http://cairographics.org/"&gt;Cairo&lt;/a&gt; in a future version, in order to have prettier controls and to share it with the &lt;a href="http://code.google.com/p/libkate/"&gt;Kate&lt;/a&gt; subtitles decoder.&lt;br /&gt;&lt;br /&gt;This should make the ActiveX player a bit more usable. In the next version besides having a new URL source filter I plan to add scripting support in order to control the ActiveX player from JavaScript code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-5238340537383788622?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/5238340537383788622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=5238340537383788622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5238340537383788622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5238340537383788622'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2011/01/activex-controls.html' title='ActiveX &amp;lt;video&amp;gt; controls'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4942336470063687585</id><published>2010-11-17T00:39:00.000+01:00</published><updated>2010-11-17T00:39:19.384+01:00</updated><title type='text'>Die Deutschen</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_sKFDQyaSuWc/TOMVWvz-aUI/AAAAAAAAATM/7VE0r1sQ2Ic/s1600/IMAG0164.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/TOMVWvz-aUI/AAAAAAAAATM/7VE0r1sQ2Ic/s320/IMAG0164.jpg" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sKFDQyaSuWc/TOMVX8q8oqI/AAAAAAAAATQ/TJeKtYdvgzU/s1600/IMAG0165.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/TOMVX8q8oqI/AAAAAAAAATQ/TJeKtYdvgzU/s320/IMAG0165.jpg" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TOMVYxsZXgI/AAAAAAAAATU/iWtOMEfU1VU/s1600/IMAG0167.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TOMVYxsZXgI/AAAAAAAAATU/iWtOMEfU1VU/s320/IMAG0167.jpg" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A nice way of spending &lt;a href="http://en.wikipedia.org/wiki/Geb%C3%BChreneinzugszentrale"&gt;GEZ&lt;/a&gt; money, these subway ads were funny :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4942336470063687585?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4942336470063687585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4942336470063687585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4942336470063687585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4942336470063687585'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/11/die-deutschen.html' title='Die Deutschen'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/TOMVWvz-aUI/AAAAAAAAATM/7VE0r1sQ2Ic/s72-c/IMAG0164.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-43962950248790781</id><published>2010-10-30T02:20:00.028+02:00</published><updated>2010-12-08T08:58:34.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>(ro) Diacriticele și internetul</title><content type='html'>În articolul „&lt;a href="http://cristianadam.blogspot.com/2009/09/browsere-moderne.html"&gt;Browsere Moderne&lt;/a&gt;” am testat comportamentul browserelor (Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Apple Safari) la afișarea paginilor web care conțin caractere (ș și ț cu virgulă) neexistente în fonturile din sistemul de operare Windows XP. &lt;br /&gt;&lt;br /&gt;Internet Explorer 6 a afișat pătrățele. Celelalte browsere au substituit fontul care nu conținea caracterele dorite cu alt font care conținea caracterele, dar această substituție se observă ușor și nu arată foarte bine.&lt;br /&gt;&lt;br /&gt;În articolul „&lt;a href="http://cristianadam.blogspot.com/2010/04/browsere-moderne-ii.html"&gt;Browsere Moderne II&lt;/a&gt;” am folosit o altă abordare, am încercat să afișez pagina cu alte fonturi decât cele existente în sistemul de operare Windows XP. &lt;br /&gt;&lt;br /&gt;Toate browserele (inclusiv Internet Explorer 6) au afișat corect paginile web. Dezavantajul la această abordare este gama foarte restrânsă de fonturi ce pot fi utilizate în acest fel și care să conțină diacriticele românești, la care se adaugă și timpul de descărcat fonturile de pe internet.&lt;br /&gt;&lt;br /&gt;Se spune că a treia încercare este cu noroc, în acest articol voi prezenta o modalitate de afișare a paginilor web cu diacriticele corecte, având posibilitatea de a afișa diacriticele cu sedilă pe sistemele de operare fără fonturi actualizate.&lt;br /&gt;&lt;br /&gt;Soluția este simplă, la încărcarea paginii se detectează dacă șirul "șȘțȚ" are aceeași lățime cu șirul "sStT", dacă au aceeași lățime nu se face nicio modificare a paginii, dacă nu atunci se înlocuiesc toate diacriticele cu virgulă cu diacriticele cu sedilă. Diferența de lățime vine de la faptul că șirul cu diacritice este înlocuit fie cu pătrățele (Internet Explorer 6), fie este substituit cu alt font (restul browserelor). &lt;br /&gt;&lt;br /&gt;Această soluție funcționează pentru fonturile cu lățime variabilă, fonturile cu lățime fixă (ex. Courier New) nu pot fi folosite deoarece fiecare caracter are aceeași lățime.&lt;br /&gt;&lt;br /&gt;Pentru ca o pagină web să poată folosi acest sistem de siguranță sunt necesari următorii pași:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;• pagina web trebuie să fie codificată unicode utf-8&lt;/li&gt;&lt;li&gt;• diacriticele folosite trebuie să fie cu virgulă&lt;/li&gt;&lt;li&gt;• &lt;b&gt;adăugarea unei singure linii de cod în secțiunea &amp;lt;head&amp;gt;&lt;/b&gt;, linia de cod indică calea la scriptul Javascript care face toată magia&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Exemplu (aici diacriticele au fost trecute sub formă de cod hexazecimal):&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;pre style="background: none repeat scroll 0% 0% rgb(241, 240, 240); color: black;"&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;html&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;head&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;meta&lt;/span&gt;&lt;span style="color: #074726;"&gt; &lt;/span&gt;&lt;span style="color: #074726;"&gt;http-equiv&lt;/span&gt;&lt;span style="color: #806030;"&gt;=&lt;/span&gt;&lt;span style="color: #e60000;"&gt;"Content-Type"&lt;/span&gt;&lt;span style="color: #074726;"&gt; &lt;/span&gt;&lt;span style="color: #074726;"&gt;content&lt;/span&gt;&lt;span style="color: #806030;"&gt;=&lt;/span&gt;&lt;span style="color: #e60000;"&gt;"text/html; charset=UTF-8"&lt;/span&gt;&lt;span style="color: #074726;"&gt; &lt;/span&gt;&lt;span style="color: #a65700;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;script type="text/javascript" src="diacritice.js"&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;script&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;head&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;body&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;p&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;Muzicolog&lt;span style="color: #074726;"&gt;&amp;amp;#x103;&lt;/span&gt; &lt;span style="color: #074726;"&gt;&amp;amp;#xee;&lt;/span&gt;n bej, v&lt;span style="color: #074726;"&gt;&amp;amp;#xe2;&lt;/span&gt;nd whisky &lt;span style="color: #074726;"&gt;&amp;amp;#x219;&lt;/span&gt;i tequila, &lt;br /&gt;     pre&lt;span style="color: #074726;"&gt;&amp;amp;#x21b;&lt;/span&gt; fix&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;p&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;body&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;html&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pagină de test: &lt;a href="http://goo.gl/4d98"&gt;http://goo.gl/4d98&lt;/a&gt;,  &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/webpages/diacritice/imn.html"&gt;codul sursă&lt;/a&gt; al paginii web, și &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/webpages/diacritice/diacritice_src.js"&gt;al scriptului Javascript&lt;/a&gt;. Mai jos am pus capturi de ecran ale unui sistem Windows XP: fără script, cu script dar fără fonturi actualizate și cu script și cu &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0ec6f335-c3de-44c5-a13d-a1e7cea5ddea&amp;DisplayLang=ro"&gt;fonturi actualizate&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_sKFDQyaSuWc/TP7HdHHYzSI/AAAAAAAAAUE/IfB9NMHbAls/s1600/imn_fara_protectie.png.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/TP7HdHHYzSI/AAAAAAAAAUE/IfB9NMHbAls/s320/imn_fara_protectie.png.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMtQ2BlimBI/AAAAAAAAAS4/9XocT3fnm4w/s1600/xp_f%C4%83r%C4%83_fonturi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMtQ2BlimBI/AAAAAAAAAS4/9XocT3fnm4w/s320/xp_f%C4%83r%C4%83_fonturi.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMtQ1uk9hlI/AAAAAAAAAS0/GdWx2eOUDMQ/s1600/xp_cu_fonturi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMtQ1uk9hlI/AAAAAAAAAS0/GdWx2eOUDMQ/s320/xp_cu_fonturi.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Un alt exemplu ar fi chiar acest blog. Configurarea am făcut-o astfel: în interfața Blogger am mers la "Design", apoi la "Edit HTML", unde conținutul scriptului &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/webpages/diacritice/diacritice_src.js"&gt;diacritice.js&lt;/a&gt; (în locul celor trei puncte) l-am pus deasupra lui &amp;lt;/head&amp;gt; sub forma:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;pre style="background: none repeat scroll 0% 0% rgb(241, 240, 240); color: black;"&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;script type="text/javascript"&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #c34e00;"&gt;//&amp;lt;![CDATA[&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #806030;"&gt;.&lt;/span&gt;&lt;span style="color: #806030;"&gt;.&lt;/span&gt;&lt;span style="color: #806030;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #c34e00;"&gt;//]]&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #400000; font-weight: bold;"&gt;script&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Am testat cu sucess soluția pe următoarele browsere:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;• Internet Explorer 6.0, 7.0, 8.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Mozilla Firefox 3.6.12&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Opera 10.53&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Apple Safari 5.02&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Google Chrome 7.0&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Soluția prezentată este ușor de folosit, beneficiază de suportul adus pentru limba română de sistemele de operare Windows Vista și Windows 7 și menține în același timp compatibilitatea cu veteranul Windows XP.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P.S.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Am făcut o serie de teste și pe Ubuntu 10.10 Maverick Meerkat pe următoarele browsere:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;• Mozilla Firefox 3.6.12&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Opera 10.53&lt;br /&gt;&lt;/li&gt;&lt;li&gt;• Google Chrome 7.0&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Mozilla Firefox și Opera au afișat pagina cu diacriticele corecte, Google Chrome a afișat pagina cu diacriticele cu sedile. &lt;br /&gt;&lt;br /&gt;Aceasta se datorează faptului că Google Chrome folosește fontul „Times New Roman” ca font implicit pe Linux, font care nu face parte dintr-o distribuție de Linux. Am raportat problema la Google &lt;a href="http://code.google.com/p/chromium/issues/detail?id=61366"&gt;aici - Issue 61366&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;În atenția utilizatorilor care instalează pe Linux pachetul de fonturi &lt;a href="http://en.wikipedia.org/wiki/Core_fonts_for_the_Web"&gt;corefonts&lt;/a&gt; pentru a avea o experiență asemănătoare cu cea oferită de sistemul de operare Windows. &lt;br /&gt;&lt;br /&gt;Toate fonturile din pachetul corefonts &lt;b&gt;nu conțin diacriticele corecte&lt;/b&gt;, fapt care va face din sistemul Linux (Ubuntu 10.10 este nou nouț la data scrierii acestui articol) un Windows 98 și soluția din acest articol va converti toate diacriticele cu virgulă în diacritice cu sedilă!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P.P.S.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Am actualizat scriptul pentru cazul în care avem de-a face cu fonturi care au parțial diacriticele corecte: ș cu virgulă, dar fără ț cu virgulă, dar ț-ul cu sedilă fiind implementat ca ț cu virgulă. În acest caz numai ț este schimbat în varianta cu sedilă.&lt;br /&gt;&lt;br /&gt;Android folosește familia de fonturi Droid care intră în categoria de fonturi descrisă mai sus.&lt;br /&gt;&lt;br /&gt;Droid nu este singura familie de fonturi care suferă de această „anomalie”, la &lt;a href="http://code.google.com/webfonts/preview#font-family=Cantarell"&gt;Google Font Directory&lt;/a&gt; am mai întâlnit familiile de fonturi: GFS Didot, GFS Neohellenic, Josefin Sans Std Light și Reenie Beanie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-43962950248790781?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/43962950248790781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=43962950248790781' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/43962950248790781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/43962950248790781'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/10/ro-diacriticele-si-internetul.html' title='(ro) Diacriticele și internetul'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/TP7HdHHYzSI/AAAAAAAAAUE/IfB9NMHbAls/s72-c/imn_fara_protectie.png.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4164584123993332452</id><published>2010-10-27T01:44:00.001+02:00</published><updated>2010-10-27T13:36:23.111+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='donation'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>MSDN Subscription Donation</title><content type='html'>I would like to thank Mozilla for buying me a MSDN Subscription license, with this license I will have access to a lot of Microsoft software.&lt;br /&gt;&lt;br /&gt;Activating a MSDN subscription is harder than one might think especially when you try to activate it on a different continent than the one where the subscription was bought.&lt;br /&gt;&lt;br /&gt;Thank you Mozilla!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4164584123993332452?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4164584123993332452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4164584123993332452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4164584123993332452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4164584123993332452'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/10/msdn-subscription-donation.html' title='MSDN Subscription Donation'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3016410881594673585</id><published>2010-10-22T12:19:00.002+02:00</published><updated>2010-11-17T00:54:59.781+01:00</updated><title type='text'>Menus</title><content type='html'>After playing a bit with Firefox 4.0b6 I have noticed that something was different in the new Firefox, and that was caused by the font rendering used in the UI.&lt;br /&gt;&lt;br /&gt;I know that Firefox is using Direct2D to render the UI on Windows 7, but in this area is not necessarily a step forward, and I hope that there is something to be done in this aspect (I have already given feedback using the build in feedback system)&lt;br /&gt;&lt;br /&gt;I have made screen shots of Firefox 3.6 vs Firefox 4.0b6:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFY7DmbpgI/AAAAAAAAASg/TsUkOeWVbD8/s1600/firefox_3.6_vs_4.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFY7DmbpgI/AAAAAAAAASg/TsUkOeWVbD8/s1600/firefox_3.6_vs_4.0.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I have also done screen shots of Internet Explorer 8 vs Internet Explorer 9beta:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFZVA9WyZI/AAAAAAAAASk/OUTh3sdad5Y/s1600/ie8_vs_ie9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFZVA9WyZI/AAAAAAAAASk/OUTh3sdad5Y/s1600/ie8_vs_ie9.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Notice that Internet Explorer 9 doesn't seem very different than Internet Explorer 8. I'm not sure that they did a better job at using Direct 2D than Firefox because they might not use Direct2D for menus all together.&lt;br /&gt;&lt;br /&gt;This reminds me how broken was text rendering in WPF applications, but Microsoft seems to have fixed that in WPF4, see this blog entry about &lt;a href="http://blogs.msdn.com/b/text/archive/2010/04/13/blind-comparison-vs2008-vs-vs2010.aspx"&gt;Visual Studio 2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also worth mentioning is that I have used the latest NVidia drivers for my graphics card:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFj0Qk_uWI/AAAAAAAAASo/pK4MXZZvQvg/s1600/graphics_driver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFj0Qk_uWI/AAAAAAAAASo/pK4MXZZvQvg/s1600/graphics_driver.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Edit: This behavior was reported as bug &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=594325"&gt;#594325&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3016410881594673585?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3016410881594673585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3016410881594673585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3016410881594673585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3016410881594673585'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/10/menus.html' title='Menus'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/TMFY7DmbpgI/AAAAAAAAASg/TsUkOeWVbD8/s72-c/firefox_3.6_vs_4.0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8235800225018408686</id><published>2010-10-17T21:07:00.002+02:00</published><updated>2010-10-25T18:33:22.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>SSL, Certum SSL</title><content type='html'>For the past year we at Xiph have been using a SSL certificate for the following subdomains: &lt;a href="https://svn.xiph.org/"&gt;svn&lt;/a&gt;, &lt;a href="https://git.xiph.org/"&gt;git&lt;/a&gt;, and &lt;a href="https://trac.xiph.org"&gt;trac&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The SSL certificate was kindly given to us by &lt;a href="http://certum.eu/certum/cert,eindex_en.xml"&gt;Certum&lt;/a&gt; at no cost.&lt;br /&gt;&lt;br /&gt;Usually users do not notice that the SSL certificate is in place, unless the SSL certificate is not recognized by the web browser, which will complain that the web site is not safe to browse.&lt;br /&gt;&lt;br /&gt;I would like to thank &lt;a href="http://certum.eu/certum/cert,eindex_en.xml"&gt;Certum&lt;/a&gt; for allowing us to have non scary user experience while browsing our web servers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit 25.10.2010&lt;/b&gt; The offer was valid for one year, this year we did not get the &lt;br /&gt;renewal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8235800225018408686?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8235800225018408686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8235800225018408686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8235800225018408686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8235800225018408686'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/10/ssl-certum-ssl.html' title='SSL, Certum SSL'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-5078273916293315756</id><published>2010-09-21T01:26:00.008+02:00</published><updated>2010-09-22T13:34:00.417+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='htc leo'/><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>(ro) Diacritice pe HTC Leo</title><content type='html'>De curând am intrat în posesia unui telefon HTC Leo (zis și HTC HD2), telefon care are ca sistem de operare Windows Mobile 6.5.&lt;br /&gt;&lt;br /&gt;Windows Mobile 6.5 nu poate afișa corect diacriticele românești, în special ș și ț cu virgulă. La introdus diacritice de la tastatură HTC HD2/Leo permite introducerea lui â, î, ş și ţ (varianta cu sedilă), dar lipsește &lt;b&gt;ă&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Diacriticele se introduc după ce se ține apăsată tasta a, i, s, respectiv t, după care se aleg din meniul prezentat. În practică mie mi s-a părut destul de greoi să țin apăsată tasta și apoi să aleg din meniu.&lt;br /&gt;&lt;br /&gt;Pentru a repara problema afișării diacriticelor am făcut un cab cu fontul Droid, font care este oferit de Google sub o licență care permite redistribuirea liberă. Fontul original Droid duce &lt;a href="http://code.google.com/p/android/issues/detail?id=9808"&gt;lipsa lui ț&lt;/a&gt;, am folosit o variantă modificată.&lt;br /&gt;&lt;br /&gt;Pentru problema introducerii diacriticelor am făcut un cab cu modificări aduse aranjamentului de taste implicit (două fișiere xml, unul pentru modul portret și unul pentru modul peisaj). Diacriticele se introduc direct ținând apăsat tastele a, q, i, s, t.&lt;br /&gt;&lt;br /&gt;Numerele și restul de simboluri care se introduceau în mod direct ținând apăsat tastele sunt accesibile din meniu. Am adăugat în mod implicit simbolul € pe tasta f, simbolul $ este accesibil din meniu.&lt;br /&gt;&lt;br /&gt;Rezultatul se află în captura de mai jos:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_sKFDQyaSuWc/TJfrNgVQKmI/AAAAAAAAASE/pA-Da4Dh-2A/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/TJfrNgVQKmI/AAAAAAAAASE/pA-Da4Dh-2A/s320/Screenshot.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Caburile se află aici: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/fonts/DroidFonts%20-%20Windows%20CE/Release/DroidFonts.cab"&gt;DroidFonts.cab&lt;/a&gt;, respectiv &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/htc-leo/Release/htc_leo_keyboard.cab"&gt;htc_leo_keyboard.cab&lt;/a&gt;. Ar mai fi de menționat faptul că este necesar un restart al telefonului, că s-ar putea să meargă doar pe HTC Leo și că nu funcționează cu T9.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit&lt;/b&gt; Am făcut o nouă versiune de &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/htc-leo/Release/htc_leo_keyboard.cab"&gt;htc_leo_keyboard.cab&lt;/a&gt;, versiune care nu mai are caracterul "â" și pe tasta "a" (în modul portret nu mai încăpea meniul pe ecran). De asemenea am inversat $ cu € pe tastatura numerică.&lt;br /&gt;&lt;br /&gt;Spor la tastat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-5078273916293315756?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/5078273916293315756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=5078273916293315756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5078273916293315756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5078273916293315756'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/09/ro-diacritice-pe-htc-leo.html' title='(ro) Diacritice pe HTC Leo'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/TJfrNgVQKmI/AAAAAAAAASE/pA-Da4Dh-2A/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-539758715761441006</id><published>2010-09-02T01:39:00.001+02:00</published><updated>2010-09-02T01:45:32.903+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='DirectShow'/><title type='text'>DirectX Error Lookup</title><content type='html'>DirectShow is a COM based technology. COM uses for error reporting the (in)famous HRESULTs.&lt;br /&gt;&lt;br /&gt;These HRESULTs are numbers like 0x80040227, but what do they mean? Visual Studio has a nifty MFC utility called "Error Lookup". But what happens if you lookup 0x80040227? "Message not found" pops up.&lt;br /&gt;&lt;br /&gt;It seems that the DirectShow HRESULTs are out of reach for "Error Lookup". "Error Lookup" has a button named "Modules", maybe we can add the DirectShow HRESULTs there.&lt;br /&gt;&lt;br /&gt;After adding "QUARTZ.DLL" in "Error Lookup" module list, 0x80040227 becomes "The operation could not be performed because the filter is in the wrong state." Sometimes the trick of adding quartz.dll doesn't work, then what?&lt;br /&gt;&lt;br /&gt;DirectX has some nice error lookup functions named &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.errorhandling.dxgeterrorstring%28VS.85%29.aspx"&gt;DXGetErrorString&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.errorhandling.dxgeterrordescription%28VS.85%29.aspx"&gt;DXGetErrorDescription&lt;/a&gt;, which give information about DirectX components and Win32 functions.&lt;br /&gt;&lt;br /&gt;I have made a small tool called &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/tools/dxerr/Release/dxerr.exe"&gt;dxerr&lt;/a&gt; (source code &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/tools/dxerr"&gt;here&lt;/a&gt;) which makes use of the two functions.&lt;br /&gt;&lt;br /&gt;You might be tempted to use these two functions in your programs, but note that these functions might increase your binary with a couple of hundred kilobytes, and you need to have the DirectX SDK installed.&lt;br /&gt;&lt;br /&gt;With the use of dxerr 0x80040227 has also a name: VFW_E_WRONG_STATE, which you might have found out by doing a Google search.&lt;br /&gt;&lt;br /&gt;Here is a screenshot displaying "Error Lookup" and "dxerr".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_sKFDQyaSuWc/TH7dwQh2GvI/AAAAAAAAARw/a1rTbLw3ek8/s1600/dxerr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/TH7dwQh2GvI/AAAAAAAAARw/a1rTbLw3ek8/s320/dxerr.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After creating the "dxerr" tool I've found out that there is a tool named "DXErr.exe" in the DirectX SDK under "Utilities\bin\x86". I had no idea about that, but now that I know about it, it doesn't make a big difference :) &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/tools/dxerr/Release/dxerr.exe"&gt;dxerr&lt;/a&gt; can be of use to those who do not have the DirectX SDK installed, to those who program with other programming languages than C++, or to those who program using C++ but with a compiler from a different vendor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-539758715761441006?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/539758715761441006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=539758715761441006' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/539758715761441006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/539758715761441006'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/09/directx-error-lookup.html' title='DirectX Error Lookup'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/TH7dwQh2GvI/AAAAAAAAARw/a1rTbLw3ek8/s72-c/dxerr.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1249110351386619765</id><published>2010-08-04T02:22:00.008+02:00</published><updated>2011-01-08T17:51:55.055+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>OpenCodecs, WebM, and Windows Mobile</title><content type='html'>Over a month ago I have released the first version of &lt;a href="http://xiph.org/dshow/"&gt;OpenCodecs&lt;/a&gt;. OpenCodecs is the new name of the OggCodecs DirectShow package after the addition of &lt;a href="http://www.webmproject.org/"&gt;WebM&lt;/a&gt; codecs.&lt;br /&gt;&lt;br /&gt;OpenCodecs was the first release to have an unified 32/64 bit installer package, the 64 bit components are installed only if the operating system is 64 bit.&lt;br /&gt;&lt;br /&gt;Today I have released a new OpenCodecs version, one for &lt;a href="http://downloads.xiph.org/releases/oggdsf/opencodecs_0.84.17359-wm5.cab"&gt;Windows Mobile 5.0 - 6.5&lt;/a&gt;. This is only a decoder package and WebM/VP8 decoders are not present.&lt;br /&gt;&lt;br /&gt;Seeking is also disabled for Ogg Vorbis, Theora and Speex, due to the way the seeking table is build (at beginning, reading the whole media file), which turns to be very slow on Windows Mobile.&lt;br /&gt;&lt;br /&gt;On my Palm Treo Pro (which is actually a rebranded HTC) the default video renderer "HTC DX Renderer" does not work with Theora, I had to change it with the Microsoft "Video Renderer" to have Theora working. &lt;br /&gt;&lt;br /&gt;This was done by changing the filter merit in Registry. I have used &lt;a href="http://www.ghisler.com/ce.htm"&gt;Total Commander&lt;/a&gt; for this task (it has a Registry editor) and &lt;a href="http://www.gdcl.co.uk/mobile/"&gt;View Graph&lt;/a&gt; to test which filters actually work (this is the Windows Mobile version of GraphEdit)&lt;br /&gt;&lt;br /&gt;I have made a recording showing "Big Buck Bunny" running on my Palm Treo Pro:&lt;br /&gt;&lt;br /&gt;&lt;video controls="controls" height="432" src="http://people.xiph.org/~cristian/Screencasts/Theora%20on%20Windows%20Mobile%206.1.ogv" tabindex="0" width="576" xmlns="http://www.w3.org/1999/xhtml/video"&gt;Your browser does not support &amp;lt;video&amp;gt; tag&lt;/video&gt;&lt;br /&gt;&lt;br /&gt;This version doesn't have any arm assembly optimizations for Vorbis, Theora, and for yuv2rgb conversion. My test video had a resolution of 320x180 (Palm Treo Pro has a 320x320 display) and I do not know how well it works with higher resolution video files.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit&lt;/b&gt;: In case you were thinking at changing the video renderer's filter merit, here is what you need to look after (beware that you might experience sudden system reboots):&lt;br /&gt;&lt;br /&gt;Palm Teo Pro:&lt;br /&gt;&lt;tt&gt;[HKEY_CLASSES_ROOT\CLSID\{70e102b0-5556-11ce-97c0-00aa0055595a}]&lt;br /&gt;@="Video Renderer"&lt;br /&gt;"Merit"=dword:00800000&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\CLSID\{016229F3-158F-4a0a-8656-85F894F1405D}]&lt;br /&gt;@="HTC DX Renderer"&lt;br /&gt;"Merit"=dword:00800100&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;HTC Touch Pro 2:&lt;br /&gt;&lt;tt&gt;[HKEY_CLASSES_ROOT\CLSID\{70e102b0-5556-11ce-97c0-00aa0055595a}]&lt;br /&gt;@="Video Renderer"&lt;br /&gt;"Merit"=dword:00800000&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\CLSID\{1ADAFBDB-2E09-447f-94C4-39B195860BC6}]&lt;br /&gt;@="HTC DDR(VO)"&lt;br /&gt;"Merit"=dword:00800005&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;You will have to swap the merits for those two filters. Normally Theora should also work with HTC Video Rendrers, but at the moment I do not know how to make them work.&lt;br /&gt;&lt;br /&gt;I'm planning (if I get my US visitor visa) to go to &lt;a href="http://openvideoalliance.org/"&gt;Open Video Alliance&lt;/a&gt;, and &lt;a href="http://www.foms-workshop.org/foms2010OVC/"&gt;FOMS&lt;/a&gt; in October.&lt;br /&gt;&lt;br /&gt;I have put a &lt;b&gt;Donate&lt;/b&gt; button (orange button on the right side) in the hope of financing the trip to New York for my wife.&lt;br /&gt;&lt;br /&gt;Thank you for your support and enjoy this OpenCodecs release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1249110351386619765?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1249110351386619765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1249110351386619765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1249110351386619765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1249110351386619765'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/08/opencodecs-webm-and-windows-mobile.html' title='OpenCodecs, WebM, and Windows Mobile'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-9050926200578334196</id><published>2010-05-16T22:32:00.008+02:00</published><updated>2011-01-08T17:51:19.553+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html5 video'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>rOGG on!</title><content type='html'>The "rOGG on!" title was borrowed from the FSFE campaign: &lt;a href="http://www.fsfe.org/news/2010/news-20100324-01.en.html"&gt;Radio stations granted awards for using Open Standards&lt;/a&gt;. I think FSFE should also "boo" radio stations which drop support for Open Standards (&lt;a href="http://www.radioswissjazz.ch/en"&gt;Radio Swiss Jazz&lt;/a&gt; used to have a Vorbis stream)&lt;br /&gt;&lt;br /&gt;In a &lt;a href="http://cristianadam.blogspot.com/2010/02/ie-tag-take-two.html"&gt;previous&lt;/a&gt; blog entry I was presenting a technical preview of the HTML5 &amp;lt;video&amp;gt; tag running on Internet Explorer. That version worked only in &lt;br /&gt;a few controlled cases.&lt;br /&gt;&lt;br /&gt;I have released a new Xiph.Org Ogg Codecs version (grab it from &lt;a href="http://xiph.org/dshow/"&gt;here&lt;/a&gt;) which makes the technical preview of the HTML5 &amp;lt;video&amp;gt; tag a bit more useful.&lt;br /&gt;&lt;br /&gt;In this version I have dropped the custom file/network reading code and now I rely on built in DirectShow filters to provide the same (better) functionality. Now one can listen to &lt;a href="http://www.absoluteradio.co.uk/listen/on_your_computer.html"&gt;Absolute Classic Rock&lt;/a&gt; behind a network proxy using Windows Media Player.&lt;br /&gt;&lt;br /&gt;Here are the improvements to the HTML5 &amp;lt;video&amp;gt; tag:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;URI support given by uriparser library&lt;/li&gt;&lt;li&gt;VMR9 support (instead of VMR7), this requires DirectX9&lt;/li&gt;&lt;li&gt;Internet Explorer Standards mode support, instead of just Quirks mode&lt;/li&gt;&lt;li&gt;width and height basic attribute support&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://bit.ly/diY1jx"&gt;Here&lt;/a&gt; is a modified "Patent Absurdity" web page, to give it a try.&lt;br /&gt;&lt;br /&gt;I have made a screen cast to illustrate the new features (better viewed full screen):&lt;br /&gt;&lt;video src="http://people.xiph.org/~cristian/Screencasts/Windows%207%20OggCodecs%200.83.ogv" width="574" height="430" controls="true" xmlns="http://www.w3.org/1999/xhtml/video"&gt;&lt;br /&gt;&lt;p&gt;Your browser does not support &amp;lt;video&amp;gt; tag&lt;/p&gt;&lt;br /&gt;&lt;/video&gt;&lt;br /&gt;The wallpaper picture was taken in the beautiful island of &lt;a href="http://en.wikipedia.org/wiki/Burano"&gt;Burano&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I would like to thank Philip Jägenstedt for his contribution, which speedup this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-9050926200578334196?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/9050926200578334196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=9050926200578334196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/9050926200578334196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/9050926200578334196'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/05/rogg-on.html' title='rOGG on!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8538385743642332216</id><published>2010-04-29T21:55:00.009+02:00</published><updated>2010-10-30T01:22:52.541+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>Browsere Moderne II</title><content type='html'>În articolul &lt;a href="http://cristianadam.blogspot.com/2009/09/browsere-moderne.html"&gt;Browsere Moderne&lt;/a&gt; am testat comportamentul browserelor Internet Explorer, Firefox, Chrome, Opera, Safari în privința randării textului folosind caractere (ș și ț cu virgulă) care nu se află în fonturile instalate în sistemul de operare (Windows XP).&lt;br /&gt;&lt;br /&gt;Rezultatele nu au fost foarte bune, caracterele lipsă arată corespunzător dar nu se integrează cu restul textului.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/S9nl_DExTII/AAAAAAAAAQY/qWXpcpYS4Lk/s1600/exemplu.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 349px; height: 139px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/S9nl_DExTII/AAAAAAAAAQY/qWXpcpYS4Lk/s400/exemplu.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465652494110641282" /&gt;&lt;/a&gt;&lt;br /&gt;În acest articol voi testa browserele folosind pagini web conținând fonturi stocate pe server (înglobate), fonturi care conțin caracterele ș și ț cu virgulă. Am ales familia de fonturi &lt;a href="http://dejavu-fonts.org/wiki/index.php?title=Main_Page"&gt;"DejaVu Sans"&lt;/a&gt; deoarece poate fi distribuită liber (familie de fonturi folosită pe sistemul de operare Linux, distribuită și în suita de software birotic "Open Office")&lt;br /&gt;&lt;br /&gt;Un font poate fi înglobat într-o pagină web folosind directiva CSS &lt;a href="http://www.w3.org/TR/css3-fonts/#font-resources"&gt;@font-face&lt;/a&gt;. Toate browserele suportă fonturile în format „TrueType (.ttf)”, excepție făcând Internet Explorer care suportă formatul „Embedded OpenType (.eot)”. Am convertit fonturile din formatul „TrueType” la formatul „Embedded OpenType” folosind &lt;a href="http://ttf2eot.sebastiankippe.com/"&gt;ttf2eot&lt;/a&gt;. Un exemplu de cum se folosește @font-face se găsește &lt;a href="https://developer.mozilla.org/en/CSS/@font-face"&gt;aici&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Paginile de web folosite la testarea browserelor sunt: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/pangrama.html"&gt;pangrama&lt;/a&gt; (codată &lt;a href="http://en.wikipedia.org/wiki/Utf-8"&gt;UTF-8&lt;/a&gt;), &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/pangrama-latin10.html"&gt;pangrama-latin10&lt;/a&gt; (codată &lt;a href="http://en.wikipedia.org/wiki/ISO-8859-16"&gt;ISO-8859-16&lt;/a&gt;), respectiv versiunile pentru Internet Explorer: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/pangrama-ie.html"&gt;pangrama-ie&lt;/a&gt; și &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/pangrama-ie-latin10.html"&gt;pangrama-ie-latin10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rezultatele obținute pe sistemul de operare Windows XP SP2, fără fonturi actualizate, și fără a avea familia de fonturi „DejaVu Sans” instalată local în sistemul de operare sunt:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internet Explorer 6: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/internet_explorer_6.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/internet_explorer_6.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Internet Explorer 7: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/internet_explorer_7.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/internet_explorer_7.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Internet Explorer 8: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/internet_explorer_8.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/internet_explorer_8.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mozilla Firefox 3.6.3: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/firefox_3.6.3.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/firefox_3.6.3.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Chrome 4.1: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/chrome_4.1.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/chrome_4.1.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Opera 10.52: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/opera_10.52.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/opera_10.52.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Safari 4.1: &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/utf-8/safari_4.1.png"&gt;UTF-8&lt;/a&gt;, &lt;a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/@font-face/results/latin10/safari_4.1.png"&gt;ISO-8859-16&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Resursele folosite pentru aceste teste se găsesc &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/@font-face"&gt;aici&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Toate&lt;/b&gt; browserele de mai sus afișează pagina codată UTF-8 perfect, pagina codată ISO-8859-16 este afișată incorect &lt;i&gt;doar&lt;/i&gt; de către Internet Explorer. &lt;br /&gt;&lt;br /&gt;Internet Explorer începând cu versiunea 7 &lt;a href="http://msdn.microsoft.com/en-us/library/ff536023%28VS.85%29.aspx"&gt;suportă codarea ISO-8859-16&lt;/a&gt;, dar din păcate parțial. Am raportat problema la Microsoft &lt;a href="https://connect.microsoft.com/IE/feedback/details/554861/iso-8859-16-codepage-support"&gt;#554861 - ISO-8859-16 codepage support&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Un dezavantaj al fonturilor incluse în pagina web poate fi mărimea lor (aproximativ 3 Mbytes), deoarece trebuie descărcate de pe server la accesare. Acest dezavantaj poate fi redus prin stocarea fonturilor, de către browser, pentru accesări ulterioare.&lt;br /&gt;&lt;br /&gt;Am arătat că se pot afișa pagini web, care conțin diacriticele corecte, pe sistemul de operare Windows XP, singura condiție este ca utilizatorul să ruleze un browser care suportă directiva CSS @font-face. &lt;a href="http://webfonts.info/wiki/index.php?title=@font-face_browser_support"&gt;Aici&lt;/a&gt; găsiți o listă cu aceste browsere.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actualizare&lt;/b&gt; Google a lansat serviciul &lt;a href="http://code.google.com/webfonts"&gt;Google Font Directory&lt;/a&gt;, serviciu care oferă fonturi pentru „toată lumea”. Tehnic @font-face este folosit, dar indirect, sub o formă care merge pe toate browserele.&lt;br /&gt;&lt;br /&gt;Am făcut &lt;a href="http://www.assembla.com/code/cristianadam/subversion/nodes/@font-face/webfonts"&gt;pagini de test&lt;/a&gt; pentru toate fonturile din Google Font Directory, din păcate foarte multe dintre ele au probleme cu diacriticele. Puteți vota pentru &lt;a href=" http://goo.gl/mod/ckA8"&gt;sugestia&lt;/a&gt; făcută de mine, poate Google va lua măsuri și va repara problema cu diacriticele.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8538385743642332216?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8538385743642332216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8538385743642332216' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8538385743642332216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8538385743642332216'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/04/browsere-moderne-ii.html' title='Browsere Moderne II'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/S9nl_DExTII/AAAAAAAAAQY/qWXpcpYS4Lk/s72-c/exemplu.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8471571029792061829</id><published>2010-02-22T01:30:00.011+01:00</published><updated>2011-01-08T17:50:33.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html5 video'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>IE &lt;video&gt; tag - Take Two</title><content type='html'>Recently I have released a new version of Xiph.Org Ogg Codecs (grab it from &lt;a href="http://xiph.org/dshow/downloads/"&gt;here&lt;/a&gt;), this new version includes a few Theora and FLAC bugfixes, better Windows 7 support and a Technical Preview of the &amp;lt;video&amp;gt; tag for Internet Explorer.&lt;br /&gt;&lt;br /&gt;By Technical Preview I mean only basic playback, no seeking, no controls, no HTML5 interfaces.&lt;br /&gt;&lt;br /&gt;I have made a screen cast showing this feature:&lt;br /&gt;&lt;br /&gt;&lt;video src="http://people.xiph.org/~cristian/Screencasts/IEVideo%20Win7%20RC.ogv" controls="controls" width="576" height="432" xmlns="http://www.w3.org/1999/xhtml/video"&gt;Your browser does not support &amp;lt;video&amp;gt; tag&lt;/video&gt;&lt;br /&gt;&lt;br /&gt;To enable &amp;lt;video&amp;gt; tag for Internet Explorer you need to add &lt;em&gt;xmlns="http://www.w3.org/1999/xhtml/video"&lt;/em&gt; attribute.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit:&lt;/b&gt; It works only when Internet Explorer is in &lt;a href="http://en.wikipedia.org/wiki/Quirks_mode"&gt;Quirks mode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mozilla's &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=435339"&gt;Bug 435339&lt;/a&gt; - DirectShow backend for HTML5 video element - has helped me a lot, to say the least (thank you Chris Pearce).&lt;br /&gt;&lt;br /&gt;The webpage used in screencast is: &lt;a href="http://people.xiph.org/~maikmerten/demos/bigbuckbunny-videoonly.html"&gt;http://people.xiph.org/~maikmerten/demos/bigbuckbunny-videoonly.html&lt;/a&gt; with the xmlns attribute for &amp;lt;video&amp;gt;. Note that I have copied the webpage and the movie on my webserver, that page does not have the xmlns attribute.&lt;br /&gt;&lt;br /&gt;Hope it works for you as it did for me in the screen cast above :) &lt;br /&gt;Download the 32bit version installer from &lt;a href="http://downloads.xiph.org/releases/oggdsf/oggcodecs_0.82.16930-win32.exe"&gt;here&lt;/a&gt; (1,09Mb).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit&lt;/b&gt;: In order to use the &amp;lt;video&amp;gt; tag on Internet Explorer 6.0 and 7.0 please read my first &lt;a href="http://cristianadam.blogspot.com/2010/01/ie-tag.html"&gt;IE &amp;lt;video&amp;gt; tag&lt;/a&gt; blog entry.&lt;br /&gt;&lt;br /&gt;I have found out that there is an incompatibility between Windows XP and VMware while using the DirectShow Video Mixing Renderer 7 filter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8471571029792061829?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8471571029792061829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8471571029792061829' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8471571029792061829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8471571029792061829'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/02/ie-tag-take-two.html' title='IE &amp;lt;video&amp;gt; tag - Take Two'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7720646744272890354</id><published>2010-02-11T00:44:00.009+01:00</published><updated>2011-01-08T17:49:34.058+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IECanvas'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>IECanvas build</title><content type='html'>In my previous blog entry I've mentioned Vladimir Vukićević's IECanvas experiment, but at that time my IECanvas build was not working.&lt;br /&gt;&lt;br /&gt;In the meantime I've made it work, added support for the new IE8 xml namespace, removed some of the ActiveX usage popups (there is only one infobar popup at first run), packaged it in a small installer.&lt;br /&gt;&lt;br /&gt;Souce code with all dependent libraries (cairo, pixman, libpng, zlib) is located &lt;a href="http://code.assembla.com/cristianadam/subversion/nodes/IECanvas"&gt;here&lt;/a&gt;. Download the 32bit installer from &lt;a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Installer/IECanvas.exe"&gt;here&lt;/a&gt; (329Kb)&lt;br /&gt;&lt;br /&gt;I've made a screen cast about how IECanvas experience looks like (nice beta fish background):&lt;br /&gt;&lt;br /&gt;&lt;video src="http://people.xiph.org/~cristian/Screencasts/IECanvas%20Win7%20RC.ogv" controls="controls" width="576" height="432" xmlns="http://www.w3.org/1999/xhtml/video"&gt;Your browser does not support the &amp;lt;video&amp;gt; tag.&lt;/video&gt;&lt;br /&gt;&lt;br /&gt;The two presented canvases are: &lt;a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Test/test.html"&gt;squares with alpha blending&lt;/a&gt; and &lt;a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Test/clock.html"&gt;clock&lt;/a&gt; (which should look a bit different in other browsers than in the video)&lt;br /&gt;&lt;br /&gt;One only needs to add the &lt;em&gt;xmlns="http://www.w3.org/1999/xhtml/canvas"&lt;/em&gt; attribute to a &lt;em&gt;&amp;lt;canvas&amp;gt;&lt;/em&gt; tag to have canvas working on IE, but the &lt;em&gt;&amp;lt;canvas&amp;gt;&lt;/em&gt; support in IECanvas is far from complete.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;lt;video&amp;gt;&lt;/em&gt; will have the same user experience as the IECanvas ActiveX,&lt;br /&gt;and it theory it should be able to coexist with the &lt;em&gt;&amp;lt;canvas&amp;gt;&lt;/em&gt; tag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7720646744272890354?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7720646744272890354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7720646744272890354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7720646744272890354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7720646744272890354'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/02/iecanvas-build.html' title='IECanvas build'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4600153759581428225</id><published>2010-01-15T21:09:00.006+01:00</published><updated>2010-01-16T00:38:00.431+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html5 video'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>IE &lt;video&gt; tag</title><content type='html'>I have started hacking a &amp;lt;video&amp;gt; tag implementation for Microsoft Internet Explorer, based on the work of Vladimir Vukićević's &lt;a href="http://blog.vlad1.com/2008/07/30/no-browser-left-behind/"&gt;IECanvas&lt;/a&gt; experiment. Source code is located &lt;a href="http://svn.xiph.org/trunk/oggdsf/src/lib/plugin/AxPlayer/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The AxPlayer will use the &lt;a href="http://xiph.org/dshow/"&gt;DirectShow OggCodecs&lt;/a&gt; for the actual video playback. At the moment it doesn't do much, it just displays a gray rectangle where the video should be, as seen below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/S1DU5tr9XPI/AAAAAAAAAI8/JFmpyATRLhw/s1600-h/axplayer_pre_ie8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 322px;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/S1DU5tr9XPI/AAAAAAAAAI8/JFmpyATRLhw/s400/axplayer_pre_ie8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427071638963051762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Internet Explorer versions 6.0 and 7.0 required the following syntax for Binary Element Behaviour components:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;html xmlns:html5&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;   &amp;lt;object id=&amp;quot;videoFactory&amp;quot; classid=&amp;quot;clsid:7cc95ae6-c1fa-40cc-ab17-3e91da2f77ca&amp;quot;&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;   &amp;lt;?import namespace=&amp;quot;html5&amp;quot; implementation=&amp;quot;#videoFactory&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;This is a header &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html5:video src=&amp;quot;http://videos.mozilla.org/firefox/3.5/meet/meet.ogv&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;your browser cannot handle video tag&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/html5:video&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;This is a footer &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Internet Explorer 8 has an improved syntax:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;This is a header &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;video src=&amp;quot;http://videos.mozilla.org/firefox/3.5/meet/meet.ogv&amp;quot; &lt;br /&gt;          xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;your browser cannot handle video tag.&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/video&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;This is a footer &amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The &amp;lt;object&amp;gt; information has been moved into Windows Registry instead of html code:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/S1DfT5yffRI/AAAAAAAAAJE/o9Bs1UxgXoY/s1600-h/registry.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/S1DfT5yffRI/AAAAAAAAAJE/o9Bs1UxgXoY/s400/registry.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427083084004556050" /&gt;&lt;/a&gt;&lt;br /&gt;The &lt;em&gt;xmlns&lt;/em&gt; needs to be there in order to link &amp;lt;video&amp;gt; tag to AxPlayer, but the code looks way better :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next steps would be: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Actually display a video instead of a gray rectangle&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Modify the OggCodecs source filter to proper handle videos from network&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implement the &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; W3C HTML5 tag specifications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Improve the user experience by implementing all it's needed for Internet Explorer not to display the ActiveX warning popups.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4600153759581428225?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4600153759581428225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4600153759581428225' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4600153759581428225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4600153759581428225'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2010/01/ie-tag.html' title='IE &amp;lt;video&amp;gt; tag'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sKFDQyaSuWc/S1DU5tr9XPI/AAAAAAAAAI8/JFmpyATRLhw/s72-c/axplayer_pre_ie8.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6346925783926145953</id><published>2009-11-22T16:03:00.005+01:00</published><updated>2009-11-23T10:32:16.725+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows xp'/><title type='text'>Windows Console and True Type Fonts</title><content type='html'>In a previous article (&lt;a href="http://cristianadam.blogspot.com/2008/04/pimpin-windows-xps-cmdexe.html"&gt;Pimpin' Windows XP's cmd.exe&lt;/a&gt;) I've presented a way to change the font for the Windows Console - hacking a font and name it Lucida Console.&lt;br /&gt;&lt;br /&gt;The above method is a hack, since Microsoft has presented with a dialog to change the font, surely they've thought on a method to add new true type fonts, and it turns out that they did.&lt;br /&gt;&lt;br /&gt;The console font configuration is done by the means of Registry, the following registry key is responsible for that: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;tt&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&lt;br /&gt;NT\CurrentVersion\Console\TrueTypeFont&lt;/tt&gt;&lt;/blockquote&gt;&lt;br /&gt;There you will find &lt;tt&gt;"Lucida Console"&lt;/tt&gt; as number &lt;tt&gt;"0"&lt;/tt&gt;, if you will add the value &lt;tt&gt;"1"&lt;/tt&gt; as &lt;tt&gt;"DejaVu Sans Mono"&lt;/tt&gt; nothing will happen, you need to add the second font as &lt;tt&gt;"00"&lt;/tt&gt;, third as &lt;tt&gt;"000"&lt;/tt&gt; and so on.&lt;br /&gt;&lt;br /&gt;Microsoft has a KB on how to add a &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q247815"&gt;font to the console&lt;/a&gt;. A button in the &lt;br /&gt;Windows Console property pages would have been far more useful than a KB page.&lt;br /&gt;&lt;br /&gt;Here is a screenshot showing "DejaVu Sans Mono" in the console font property page:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SwlZIzs8XQI/AAAAAAAAAIw/geH68NvaxBo/s1600/windows_console_fonts.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SwlZIzs8XQI/AAAAAAAAAIw/geH68NvaxBo/s400/windows_console_fonts.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5406950835487530242" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6346925783926145953?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6346925783926145953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6346925783926145953' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6346925783926145953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6346925783926145953'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/11/windows-console-and-true-type-fonts.html' title='Windows Console and True Type Fonts'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/SwlZIzs8XQI/AAAAAAAAAIw/geH68NvaxBo/s72-c/windows_console_fonts.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4763188724676273303</id><published>2009-10-08T20:07:00.004+02:00</published><updated>2009-10-08T20:55:48.849+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><title type='text'>Silverlight for Windows Embedded^H...^H C++</title><content type='html'>Microsoft has released &lt;a href="http://www.microsoft.com/windowsembedded/en-us/products/windowsce/silverlightforwe.mspx"&gt;Silverlight for Windows Embedded&lt;/a&gt;. OK, Silverlight runs also on Embedded Devices, not a big deal, not for me anyways, but the first thing that came to my eye was &lt;em&gt;"Silverlight for Windows Embedded is a native code (C++) UI framework".&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Native code (C++) UI framework, awesome! Here is a more wide description from the Overview video:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Is a C++ backend instead of managed, for performance and for footprint, but, also we've taken the toolchain from the Silverlight development process so you still get all the benefits of having the two disciplines of the designer and the developer. &lt;br /&gt;&lt;br /&gt;So with Expression Bend you are still able to design all of your UIs and all of the storyboards and animations and all the effects that encapsulate the UI are all still done by the designer and then the developer takes that XAML and instead of writing managed C# or VB they write C++ code.&lt;/blockquote&gt;&lt;br /&gt;Next I wanted to see how the code looks like, I've found this &lt;a href="http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2009/10/01/silverlight-for-embedded-tutorial.aspx"&gt;tutorial&lt;/a&gt; and a &lt;a href="http://download.microsoft.com/download/7/B/5/7B59464B-B9A8-4B89-9599-00A524EC5977/Create%20a%20User%20Control%20in%20Silverlight%20for%20Windows%20Embedded.pdf"&gt;document&lt;/a&gt; on how to "Create a Custom User Control in Silverlight for Windows Embedded".&lt;br /&gt;&lt;br /&gt;I don't see why this C++ Silverlight framework should not be available for Desktop, performance and small footprint are also important for Desktop applications. &lt;br /&gt;&lt;br /&gt;This would be a great addition for Visual Studio 2010 for native developers, besides the new Intellisense based on the EDG C++ frontend. But I guess the feature list for Visual Studio 2010 is frozen, maybe for Visual Studio 2012.&lt;br /&gt;&lt;br /&gt;If you think that having this technology brought to the Desktop is a good idea please sign this &lt;a href="http://www.petitiononline.com/SWE4DKTP/petition.html"&gt;petition&lt;/a&gt; and spread the word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4763188724676273303?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4763188724676273303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4763188724676273303' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4763188724676273303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4763188724676273303'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/10/silverlight-for-windows-embeddedhh-c.html' title='Silverlight for Windows Embedded^H...^H C++'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1322653438844756657</id><published>2009-09-30T00:03:00.002+02:00</published><updated>2009-09-30T00:41:17.881+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='JScript'/><title type='text'>Batch change script for Visual C/C++ Projects</title><content type='html'>Visual C/C++ projects are XML files but they have a different file extension (*.vcproj).&lt;br /&gt;&lt;br /&gt;Having to change an option to through tens of projects files each with more than one platform (Win32, Win64, Windows Mobile) and multiple configurations (Debug, Release) only by loading the projects in Visual Studio and clicking through the UI is not very appealing.&lt;br /&gt;&lt;br /&gt;Since we already know that the project files are XML files one can write a program / script to change the desired option, in my case the change of the C runtime library - dynamic / static.&lt;br /&gt;&lt;br /&gt;I have chosen &lt;a href="http://en.wikipedia.org/wiki/Windows_Script_Host"&gt;WSH&lt;/a&gt; JScript, &lt;a href="http://en.wikipedia.org/wiki/MSXML"&gt;MSXML&lt;/a&gt; 3.0 and &lt;a href="http://en.wikipedia.org/wiki/Xpath"&gt;XPath&lt;/a&gt; to write a script to change Visual C/C++ projects. My decision was due two arguments: JScript is present on Windows XP, and the scripts can be debugged by Visual Studio 2005+ (//X command line parameter).&lt;br /&gt;&lt;br /&gt;During the development I have stumbled on a XPath query problem, the function &lt;em&gt;contains&lt;/em&gt; was not found in msxml3.dll. The problem was due to the fact that MSXML 3.0 was not instructed to use XPath as selection language (&lt;em&gt;xmlDoc.setProperty("SelectionLanguage", "XPath");&lt;/em&gt;). Newer MSXML versions do not have this requirement though.&lt;br /&gt;&lt;br /&gt;The message boxes displayed when issued from command line like &lt;em&gt;change_runtime.js myproject.vcproj&lt;/em&gt; are due to the fact that JScript is not the default scripting language in WSH. One solution is to call the script like: &lt;em&gt;cscript change_runtime.js myproject.vcproj&lt;/em&gt;, which requires some typing, the other solution is to change the default scripting language in WSH, which can be accomplished by running &lt;em&gt;cscript //H:CScript&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;The source code can be found &lt;a href="http://code.assembla.com/cristianadam/subversion/nodes/JScript/change_runtime.js"&gt;here&lt;/a&gt;. Changing Visual C/C++ projects just become easier for me :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1322653438844756657?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1322653438844756657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1322653438844756657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1322653438844756657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1322653438844756657'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/09/batch-change-script-for-visual-cc.html' title='Batch change script for Visual C/C++ Projects'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8838276388431871780</id><published>2009-09-19T20:07:00.013+02:00</published><updated>2010-10-30T01:22:36.838+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><category scheme='http://www.blogger.com/atom/ns#' term='diacritice'/><title type='text'>Browsere moderne</title><content type='html'>Browserele web moderne (ultimile versiuni) știu să genereze caracterele lipsă din fonturi atunci când pagina web o cere.&lt;br /&gt;&lt;br /&gt;Am decis să testez această funcționalitate pe un sistem Windows XP SP2, cu setările implicite (Engleză SUA), și fără actualizări. În special am urmărit cum se descurcă cu caracterele ș și ț cu virgulă, care lipsesc din fonturile cu care vine Windows XP SP2 (pentru mai multe informații a se vedea pagina lui Cristian Secară &lt;a href="http://secarica.ro/html/s-uri_si_t-uri.html"&gt;ș-uri și ț-uri&lt;/a&gt;). Ulterior am testat și sistemul de operare Windows 7.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/f50f17b27"&gt;Pagina de test&lt;/a&gt; conține o &lt;a href="http://ro.wikipedia.org/wiki/Pangram%C4%83"&gt;pangramă &lt;/a&gt; (Muzicologă în bej, vând whisky şi tequila, preţ fix.) scrisă cu familiile implicite de fonturi serif, fără serif și monospațiat în forma normală și cursivă. Setul de caractere setat a fost UTF-8.&lt;br /&gt;&lt;br /&gt;Microsoft Internet Explorer 6&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUle6RWjtI/AAAAAAAAAHI/79cizR4cnaY/s1600-h/ie6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUle6RWjtI/AAAAAAAAAHI/79cizR4cnaY/s400/ie6.png" alt="" id="BLOGGER_PHOTO_ID_5383250142559637202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Microsoft Internet Explorer 7&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUmKvXjoVI/AAAAAAAAAHQ/8A0vqKrPkYY/s1600-h/ie7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUmKvXjoVI/AAAAAAAAAHQ/8A0vqKrPkYY/s400/ie7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383250895547113810" /&gt;&lt;/a&gt;&lt;br /&gt;Microsoft Internet Explorer 8 &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUmK6p6qDI/AAAAAAAAAHY/23N9It0FDx4/s1600-h/ie8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUmK6p6qDI/AAAAAAAAAHY/23N9It0FDx4/s400/ie8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383250898576910386" /&gt;&lt;/a&gt;&lt;br /&gt;Mozilla Firefox 3.5.3&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLt7RYjI/AAAAAAAAAHo/fqFtaMzJsRE/s1600-h/firefox.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLt7RYjI/AAAAAAAAAHo/fqFtaMzJsRE/s400/firefox.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383250912339911218" /&gt;&lt;/a&gt;&lt;br /&gt;Google Chrome 3.0&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLCYTLuI/AAAAAAAAAHg/oTCMw3kWZKw/s1600-h/chrome.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLCYTLuI/AAAAAAAAAHg/oTCMw3kWZKw/s400/chrome.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383250900650503906" /&gt;&lt;/a&gt;&lt;br /&gt;Opera 10.0&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLzRg82I/AAAAAAAAAHw/Gt6cYMowkNE/s1600-h/opera10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrUmLzRg82I/AAAAAAAAAHw/Gt6cYMowkNE/s400/opera10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383250913775383394" /&gt;&lt;/a&gt;&lt;br /&gt;Safari 4.0.3&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrUmumjiuVI/AAAAAAAAAH4/oyx5rX4-1Og/s1600-h/safari.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrUmumjiuVI/AAAAAAAAAH4/oyx5rX4-1Og/s400/safari.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383251511656757586" /&gt;&lt;/a&gt;&lt;br /&gt;Internet Explorer 6 a fost luat drept referință. Mozilla Firefox s-a descurcat cel mai bine la famillile de fonturi serif și fără serif în forma normală, forma cursivă și cea monospațiată a caracterelor ș și ț nu se integrează foarte bine cu restul caracterelor.&lt;br /&gt;&lt;br /&gt;Pentru a repara problema caracterelor ș și ț în fonturile serif și fără serif Microsoft în luna Mai 2007 a scos un &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0ec6f335-c3de-44c5-a13d-a1e7cea5ddea&amp;DisplayLang=ro"&gt;pachet de actualizare&lt;/a&gt; a unor fonturi din sistemele de operare Windows XP și Windows Vista.&lt;br /&gt;&lt;br /&gt;Familia de fonturi monospațiate nu a beneficiat de o actualizare, a se vedea captura de ecran de mai jos:&lt;br /&gt;&lt;br /&gt;Microsoft Internet Explorer 8 (cu pachetul de fonturi actualizate)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVXlxAlp5I/AAAAAAAAAIA/6YtBPuTnoUI/s1600-h/ie_8_fonturi_actualizate.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVXlxAlp5I/AAAAAAAAAIA/6YtBPuTnoUI/s400/ie_8_fonturi_actualizate.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383305235913877394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Windows 7 beneficiază de fonturi monspațiate care conțin caracterele ș și ț, a se vedea captura de ecran de mai jos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrVZQpVLXHI/AAAAAAAAAII/hroYu5mBUeM/s1600-h/ie8_win7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SrVZQpVLXHI/AAAAAAAAAII/hroYu5mBUeM/s400/ie8_win7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383307072098753650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Captura de ecran de mai sus arată o problemă în Internet Explorer 8 din Windows 7, problemă cu varianta implicită a fontului serif. Setarea "clear type" a fost activată, dar dintr-un motiv necunoscut textul este afișat foarte prost.&lt;br /&gt;&lt;br /&gt;Mozilla Firefox 3.5.3 afișează corect caracterele ș și ț rulând pe Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVbEgW2zKI/AAAAAAAAAIQ/W8CD0gZFDn0/s1600-h/firefox_win7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVbEgW2zKI/AAAAAAAAAIQ/W8CD0gZFDn0/s400/firefox_win7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383309062554700962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google Chrome 3.0 afișează corect caracterele ș și ț rulând pe Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SrVdg0TnRbI/AAAAAAAAAIY/di3Mr0lRzAA/s1600-h/chrome_win7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SrVdg0TnRbI/AAAAAAAAAIY/di3Mr0lRzAA/s400/chrome_win7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383311747969402290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Safari 4.0.3 afișează corect caracterele ș și ț rulând pe Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SrVdp8rHFRI/AAAAAAAAAIo/q4KUdZZSa0A/s1600-h/safari_win7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SrVdp8rHFRI/AAAAAAAAAIo/q4KUdZZSa0A/s400/safari_win7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383311904834262290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Opera 10.0 afișează corect caracterele ș și ț rulând pe Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVdpXNT_yI/AAAAAAAAAIg/q9rTH3aDcnM/s1600-h/opera_win7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SrVdpXNT_yI/AAAAAAAAAIg/q9rTH3aDcnM/s400/opera_win7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383311894777167650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Concluzie: în Windows 7 problema caracterelor ș și ț cu virgulă este deja rezolvată.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8838276388431871780?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8838276388431871780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8838276388431871780' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8838276388431871780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8838276388431871780'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/09/browsere-moderne.html' title='Browsere moderne'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/SrUle6RWjtI/AAAAAAAAAHI/79cizR4cnaY/s72-c/ie6.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-720075520058053516</id><published>2009-09-19T16:52:00.006+02:00</published><updated>2009-09-19T17:46:47.762+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Hidden stream</title><content type='html'>If you wondered why does a security dialog pop up when you try to run the oggcodecs installer (or every executable for that matter) after downloading it from the Internet, this post is for you.&lt;br /&gt;&lt;br /&gt;The security dialog looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrTw73tZdoI/AAAAAAAAAHA/GoHQ5VWBKqI/s1600-h/oggcodecs_security_warning.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SrTw73tZdoI/AAAAAAAAAHA/GoHQ5VWBKqI/s400/oggcodecs_security_warning.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5383192365971895938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you look at the file properties there is no checkbox like "this file came from the Internet" (CHM files have a check for this though), but this information is stored somewhere, in a NTFS Alternate Data Stream.&lt;br /&gt;&lt;br /&gt;To check if a file has a NTFS Alternate Data Stream one can use the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx"&gt;Streams&lt;/a&gt; utility made by By Mark Russinovich of Sysinternals fame.&lt;br /&gt;&lt;br /&gt;Running &lt;em&gt;streams oggcodecs_0.81.15562-win32.exe &lt;/em&gt; resulted: &lt;em&gt;:Zone.Identifier:$DATA       46&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;To view this "Zone.Identifier" stream I have used the &lt;em&gt;more&lt;/em&gt; command like &lt;em&gt;more &lt; oggcodecs_0.81.15562-win32.exe:Zone.Identifier&lt;/em&gt; which resulted:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[ZoneTransfer]&lt;br /&gt;ZoneId=3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Firefox is adding this extra information for every executable file downloaded. Does every web browser (I've tested only I few I know of) on Windows add this extra information?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mozilla Firefox 3.5.3 - yes (:Zone.Identifier:$DATA       46)&lt;br /&gt;&lt;li&gt;Microsoft Internet Explorer 8.0 - yes (:Zone.Identifier:$DATA       26)&lt;br /&gt;&lt;li&gt;Google Chrome 3.0 - yes (:Zone.Identifier:$DATA       24)&lt;br /&gt;&lt;li&gt;Safari 4.0.3 - yes (:Zone.Identifier:$DATA       26)&lt;br /&gt;&lt;li&gt;Opera 10.0 - no&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Interesting how the size of the stream varies with every browser. I have submitted a bug report to Opera, because they should also add this extra information to the downloaded files.&lt;br /&gt;&lt;br /&gt;Adding the &lt;em&gt;Zone.Identifier&lt;/em&gt; stream can be done easily with a batch file&lt;br /&gt;(from_internet.cmd)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;@echo off&lt;br /&gt;if [%1] == [] (&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;echo Usage: from_internet.cmd executable_name&lt;br /&gt;  &lt;br /&gt;) else (&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;echo [ZoneTransfer]&gt; %1:Zone.Identifier&lt;br /&gt;&amp;nbsp;&amp;nbsp;echo ZoneId=3 &gt;&gt; %1:Zone.Identifier&lt;br /&gt;  &lt;br /&gt;)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Deleting a stream can be done by using &lt;em&gt;streams -d&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-720075520058053516?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/720075520058053516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=720075520058053516' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/720075520058053516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/720075520058053516'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/09/hidden-stream.html' title='Hidden stream'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/SrTw73tZdoI/AAAAAAAAAHA/GoHQ5VWBKqI/s72-c/oggcodecs_security_warning.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1524224195337643328</id><published>2009-05-23T02:07:00.003+02:00</published><updated>2009-05-23T02:31:14.095+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='epiphany'/><title type='text'>Colorful Epiphany</title><content type='html'>I always thought that the RGB macro (Win32 GDI) which takes three arguments - red, green and blue - will create a 0xRRGGBB value.&lt;br /&gt;&lt;br /&gt;I was wrong! Win32 GDI uses BGR colors! &lt;img src="http://l.yimg.com/us.yimg.com/i/mesg/emoticons7/40.gif" alt="d'oh"&gt;&lt;br /&gt;&lt;br /&gt;Here is another assertion on the path of assertiveness (germ. Durchsetzungsvermögen)&lt;CODE&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;windows.h&amp;gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;assert.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;int&lt;/FONT&gt; main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COLORREF color_rgb = 0xBBAADD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert(color_rgb == RGB(0xBB, 0xAA, 0xDD));&lt;br /&gt;}&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;/CODE&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1524224195337643328?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1524224195337643328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1524224195337643328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1524224195337643328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1524224195337643328'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/05/colorful-epiphany.html' title='Colorful Epiphany'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6030458378222513374</id><published>2009-05-12T18:44:00.003+02:00</published><updated>2009-05-12T18:55:05.113+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='donation'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><category scheme='http://www.blogger.com/atom/ns#' term='opera'/><title type='text'>Visual Studio 2008 Donation</title><content type='html'>I would like to thank Opera Software for the retail package of Visual Studio 2008 Standard Edition I just received!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/Sgmn7P5vWgI/AAAAAAAAAGw/JYiTNHVC6FM/s1600-h/vs2008-small.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/Sgmn7P5vWgI/AAAAAAAAAGw/JYiTNHVC6FM/s400/vs2008-small.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5334979869919894018" /&gt;&lt;/a&gt;&lt;br /&gt;Thank you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6030458378222513374?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6030458378222513374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6030458378222513374' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6030458378222513374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6030458378222513374'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/05/visual-studio-2008-donation.html' title='Visual Studio 2008 Donation'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/Sgmn7P5vWgI/AAAAAAAAAGw/JYiTNHVC6FM/s72-c/vs2008-small.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4276475818871837299</id><published>2009-05-10T22:41:00.001+02:00</published><updated>2009-05-10T22:43:44.574+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>Thusneldastr</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/Sgc8Um4RLiI/AAAAAAAAAGo/CnsqRUUqJKc/s1600-h/thusneldastr.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/Sgc8Um4RLiI/AAAAAAAAAGo/CnsqRUUqJKc/s400/thusneldastr.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5334298608375246370" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4276475818871837299?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4276475818871837299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4276475818871837299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4276475818871837299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4276475818871837299'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/05/thusneldastr.html' title='Thusneldastr'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/Sgc8Um4RLiI/AAAAAAAAAGo/CnsqRUUqJKc/s72-c/thusneldastr.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1746538335583295119</id><published>2009-03-11T22:32:00.004+01:00</published><updated>2009-03-11T23:06:57.664+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>DirectShow oggenc v0.1</title><content type='html'>I have created a DirectShow oggenc clone, mainly due to &lt;a href="https://trac.xiph.org/ticket/1517"&gt;Ticket #1517 (How to calculate the OGG encoding complete percent correctly?)&lt;/a&gt;. It is a Visual C++ console application which renders an audio file, removes the audio renderer and inserts a Vorbis encoder and an Ogg muxer filter.&lt;br /&gt;&lt;br /&gt;The example also illustrates how to use the IVorbisEncodeSettings and IOggMuxProgress COM interfaces.&lt;br /&gt;&lt;br /&gt;During the development of the tool I have found out a few quirks of the COM interfaces, all of which I will address in future oggcodecs releases.&lt;br /&gt;&lt;br /&gt;The supported audio source file formats are: WAV, MP3, WMA. FLAC and OGG are not supported because I have used &lt;a href="http://msdn.microsoft.com/en-us/library/dd390180(VS.85).aspx"&gt;IMediaDet&lt;/a&gt; DirectShow interface, which is not supported by oggcodecs at this moment. &lt;br /&gt;&lt;br /&gt;One can use another methods of determining the length of the audio source file (seeking at the end of the file and getting the position), which would enable support for FLAC and OGG.&lt;br /&gt;&lt;br /&gt;Testing the tool showed that encoding a 4m50s audio wave file on Windows Vista 64bit took an average of 18.1 seconds for the 32bit version, while the 64bit version took on average 13.1 seconds, a speed improvement of ~27%.&lt;br /&gt;&lt;br /&gt;Source code can be found &lt;a href="http://svn.xiph.org/trunk/oggdsf/src/tools/oggenc/oggenc.cpp"&gt;here&lt;/a&gt;, binaries can be found &lt;a href="http://downloads.xiph.org/releases/oggdsf/dshow-oggenc-0.1-win32.zip"&gt;here (32 bit)&lt;/a&gt; and &lt;a href="http://downloads.xiph.org/releases/oggdsf/dshow-oggenc-0.1-x64.zip"&gt;here (64 bit)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1746538335583295119?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1746538335583295119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1746538335583295119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1746538335583295119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1746538335583295119'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/03/directshow-oggenc-v01.html' title='DirectShow oggenc v0.1'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7127145657715944474</id><published>2009-02-23T00:07:00.003+01:00</published><updated>2009-02-23T00:20:13.095+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>Windows 7</title><content type='html'>Today while doing a bit of research regarding &lt;a href="https://trac.xiph.org/ticket/1498"&gt;https://trac.xiph.org/ticket/1498&lt;/a&gt;&lt;br /&gt;I found out another limitation of the default audio renderer in DirectShow.&lt;br /&gt;&lt;br /&gt;The DirectSound audio renderer cannot play 192KHz, 24 bit audio samples. This behaviour was present on Windows XP SP3 and Windows Vista SP1.&lt;br /&gt;&lt;br /&gt;To my surprise Windows 7 (build 7000) doesn't have this limitation, Windows Media Player 12 was able to play the 192Khz 24bit sample FLAC file from &lt;a href="http://download.linnrecords.com/test/flac/test192.aspx"&gt;Linn Records&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Windows Media Player 12 also knows about Ogg Vorbis metadata, which came as a surprise as well.&lt;br /&gt;&lt;br /&gt;If somebody will ask me why he/she should upgrade to Windows 7 now I now what to answer :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7127145657715944474?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7127145657715944474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7127145657715944474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7127145657715944474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7127145657715944474'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/02/windows-7.html' title='Windows 7'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4623672359508151320</id><published>2009-01-21T22:48:00.007+01:00</published><updated>2009-01-22T02:21:15.694+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>Mono 2.2</title><content type='html'>Recently Mono 2.2 was &lt;a href="http://www.mono-project.com/Release_Notes_Mono_2.2"&gt;released&lt;/a&gt;. It has a bunch of new stuff, one of them is: SIMD (Single Instruction, Multiple Data) support in Mono.&lt;br /&gt;&lt;br /&gt;Miguel de Icaza has a blog &lt;a href="http://tirania.org/blog/archive/2008/Nov-03.html"&gt;entry&lt;/a&gt; where he describes the new SIMD support in Mono. He has ported to C# a C++ application, to illustrate the new SIMD stuff, and then he compares the results, the C++ program was rather slow. I had a look at the &lt;a href="http://tirania.org/tmp/simd-tests-1.tar.gz"&gt;source code&lt;/a&gt; an I've seen that the C++ program was compiled in &lt;b&gt;debug mode&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;I've decided to make a few tests for myself. I've used MinGW 4.3.2 and Visual Studio 2005, the tests where run on my Intel Mobile Core 2 Duo T7500.&lt;br /&gt;&lt;br /&gt;Here are the results (in seconds):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SXe1yO20raI/AAAAAAAAAFg/8MOJg9R6d6M/s1600-h/results.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 400px;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SXe1yO20raI/AAAAAAAAAFg/8MOJg9R6d6M/s400/results.png" alt="" id="BLOGGER_PHOTO_ID_5293899761583435170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The parameters for the above results were:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SXe4NgM-O5I/AAAAAAAAAFo/u20fhY1ejss/s1600-h/runtime.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 165px;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SXe4NgM-O5I/AAAAAAAAAFo/u20fhY1ejss/s400/runtime.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5293902429119462290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mono is not quite there yet (at least on Windows).&lt;br /&gt;&lt;br /&gt;I had to change the timing code for the C++ code, glib::GTimer is not a very good option on Windows. I've used the high-resolution performance counter, the code is presented below:&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#ifndef&lt;/FONT&gt; PERFTIMER_H&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#define&lt;/FONT&gt; PERFTIMER_H&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;windows.h&amp;gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;string&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;iomanip&amp;gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#include&lt;/FONT&gt; &amp;lt;sstream&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;class&lt;/FONT&gt; PerfTimer&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER start_;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER stop_;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER freq_; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;public&lt;/FONT&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PerfTimer()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryPerformanceFrequency(&amp;amp;freq_);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;void&lt;/FONT&gt; Start()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryPerformanceCounter(&amp;amp;start_);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;void&lt;/FONT&gt; Stop()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryPerformanceCounter(&amp;amp;stop_);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::string ToString()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;const&lt;/FONT&gt; &lt;FONT COLOR="#0000ff"&gt;int&lt;/FONT&gt; precision = 10000000;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;unsigned&lt;/FONT&gt; &lt;FONT COLOR="#0000ff"&gt;long&lt;/FONT&gt; time = &lt;FONT COLOR="#0000ff"&gt;static_cast&lt;/FONT&gt;&amp;lt;&lt;FONT COLOR="#0000ff"&gt;unsigned&lt;/FONT&gt; &lt;FONT COLOR="#0000ff"&gt;long&lt;/FONT&gt;&amp;gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     (stop_.QuadPart - start_.QuadPart) * precision / &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     freq_.QuadPart);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::ostringstream os;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setfill('0');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setw(2) &amp;lt;&amp;lt; time / precision / 3600 &amp;lt;&amp;lt; &lt;FONT COLOR="#ff0000"&gt;":"&lt;/FONT&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setw(2) &amp;lt;&amp;lt; time / precision % 3600 / 60 &amp;lt;&amp;lt; &lt;FONT COLOR="#ff0000"&gt;":"&lt;/FONT&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setw(2) &amp;lt;&amp;lt; time / precision %  60 &amp;lt;&amp;lt; &lt;FONT COLOR="#ff0000"&gt;"."&lt;/FONT&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setw(7) &amp;lt;&amp;lt; time % precision;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os &amp;lt;&amp;lt; std::setfill(' ');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;return&lt;/FONT&gt; os.str();      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }   &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#if&lt;/FONT&gt; 0&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;int&lt;/FONT&gt; main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; PerfTimer timer;&lt;br /&gt;&amp;nbsp;&amp;nbsp; timer.Start();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sleep(1250);&lt;br /&gt;&amp;nbsp;&amp;nbsp; timer.Stop();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; &lt;FONT COLOR="#ff0000"&gt;"Time: "&lt;/FONT&gt; &amp;lt;&amp;lt; timer.ToString() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;FONT COLOR="#0000ff"&gt;return&lt;/FONT&gt; 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#endif&lt;/FONT&gt;&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="#0000ff"&gt;#endif&lt;/FONT&gt; &lt;FONT COLOR="#008000"&gt;// PERFTIMER_H&lt;/FONT&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a few things I would like to point out about the Mono 2.2 Windows installer.&lt;br /&gt;&lt;br /&gt;1. The executable is not digitally signed by Novell.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SXevA7k_heI/AAAAAAAAAFI/FcUIGK-kNY4/s1600-h/mono1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 306px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SXevA7k_heI/AAAAAAAAAFI/FcUIGK-kNY4/s400/mono1.png" alt="" id="BLOGGER_PHOTO_ID_5293892317525018082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. The graphics are hideous, 16 colors dithering? why? Is anybody in their right mind running Windows in 16 colors?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SXevfrd1_yI/AAAAAAAAAFY/OxiNA7IYMws/s1600-h/mono3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SXevfrd1_yI/AAAAAAAAAFY/OxiNA7IYMws/s400/mono3.png" alt="" id="BLOGGER_PHOTO_ID_5293892845776011042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SXevfdPREeI/AAAAAAAAAFQ/2QRGhLX3TRs/s1600-h/mono2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SXevfdPREeI/AAAAAAAAAFQ/2QRGhLX3TRs/s400/mono2.png" alt="" id="BLOGGER_PHOTO_ID_5293892841956774370" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4623672359508151320?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4623672359508151320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4623672359508151320' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4623672359508151320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4623672359508151320'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/mono-22.html' title='Mono 2.2'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sKFDQyaSuWc/SXe1yO20raI/AAAAAAAAAFg/8MOJg9R6d6M/s72-c/results.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2854397746557489911</id><published>2009-01-18T21:11:00.003+01:00</published><updated>2009-01-18T21:53:26.610+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><category scheme='http://www.blogger.com/atom/ns#' term='windows ce'/><title type='text'>Windows CE</title><content type='html'>I've been busy with the port to Windows CE of libogg, libvorbis, libflac. This is only the beginning, there is still allot of work remaining.&lt;br /&gt;&lt;br /&gt;Also I've done a bit of restructuring, I've reduced the number of binaries from 30 to 20, by changing from dynamic link libraries to static libraries. I've changed the usage of the CRT, from dynamic to static linking, this has increased the size of the binaries but overall the installer has the same size, thanks to LZMA solid compression :-)&lt;br /&gt;&lt;br /&gt;The above changes will ease the usage of the libraries, for example only dsfOggDemux2.dll dsfVorbisDecoder.dll are needed for Vorbis decoding.&lt;br /&gt;&lt;br /&gt;I have created my first Windows CE "Hello World" program. I've wanted for a long time to do that. I've learned that Windows CE has only Unicode support, no more multi byte nightmare.&lt;br /&gt;&lt;br /&gt;Because you don't have a console attached the classical "Hello World" is a bit different, a bit WIN32 APIsh:&lt;br /&gt;&lt;p&gt;&lt;font size="-1" face="Monospace"&gt;&lt;br /&gt;&lt;font size="2" color="Blue"&gt;#include&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#a31515"&gt;&amp;lt;windows.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size="2" color="Blue"&gt;int&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;WinMain&lt;/font&gt;&lt;font size="2" color="Black"&gt;(&lt;/font&gt;&lt;font size="2" color="#010001"&gt;HINSTANCE&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;hInstance&lt;/font&gt;&lt;font size="2" color="Black"&gt;, &lt;/font&gt;&lt;font size="2" color="#010001"&gt;HINSTANCE&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;hPrevInstance&lt;/font&gt;&lt;font size="2" color="Black"&gt;, &lt;/font&gt;&lt;font size="2" color="#010001"&gt;LPWSTR&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;lpCmdLine&lt;/font&gt;&lt;font size="2" color="Black"&gt;, &lt;/font&gt;&lt;font size="2" color="Blue"&gt;int&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;nShowCmd&lt;/font&gt;&lt;font size="2" color="Black"&gt; )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font size="2" color="Blue"&gt;wchar_t&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;message&lt;/font&gt;&lt;font size="2" color="Black"&gt;[] = &lt;/font&gt;&lt;font size="2" color="#010001"&gt;L&lt;/font&gt;&lt;font size="2" color="#a31515"&gt;"Goodbye cruel adventure world!"&lt;/font&gt;&lt;font size="2" color="Black"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font size="2" color="Blue"&gt;wchar_t&lt;/font&gt;&lt;font size="2" color="Black"&gt; &lt;/font&gt;&lt;font size="2" color="#010001"&gt;caption&lt;/font&gt;&lt;font size="2" color="Black"&gt;[] = &lt;/font&gt;&lt;font size="2" color="#010001"&gt;L&lt;/font&gt;&lt;font size="2" color="#a31515"&gt;"Monkeys are listening"&lt;/font&gt;&lt;font size="2" color="Black"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;::&lt;/font&gt;&lt;font size="2" color="#010001"&gt;MessageBox&lt;/font&gt;&lt;font size="2" color="Black"&gt;(0, &lt;/font&gt;&lt;font size="2" color="#010001"&gt;message&lt;/font&gt;&lt;font size="2" color="Black"&gt;, &lt;/font&gt;&lt;font size="2" color="#010001"&gt;caption&lt;/font&gt;&lt;font size="2" color="Black"&gt;, &lt;/font&gt;&lt;font size="2" color="#010001"&gt;MB_OK&lt;/font&gt;&lt;font size="2" color="Black"&gt; | &lt;/font&gt;&lt;font size="2" color="#010001"&gt;MB_ICONINFORMATION&lt;/font&gt;&lt;font size="2" color="Black"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font size="2" color="Blue"&gt;return&lt;/font&gt;&lt;font color="Black"&gt;&lt;font size="2"&gt; 0;&lt;br /&gt;}&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;If you try to run an executable which is not digitally signed, you are being prompted by the operating system telling you that it's dangerous to run "unknown" software.&lt;br /&gt;&lt;br /&gt;Since I have a certificate from &lt;a href="http://www.certum.eu/certum/cert,eindex_en.xml"&gt;CERTUM&lt;/a&gt; I have signed the executable, but still the prompt was there. The problem was that my telephone doesn't have the root certificate from CERTUM installed. I've went to CERTUM's root certificate &lt;a href="https://www.certum.eu/certum/cert,certificates_authority_keys.xml"&gt;page&lt;/a&gt; and taken the "Public Key of Certum Level II", installed it and my program ran without any prompts from the operating system.&lt;br /&gt;&lt;br /&gt;And now the mandatory "screen shot":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SXOV7BMJ6JI/AAAAAAAAAFA/FO7Vfc6vuWs/s1600-h/hello_world.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SXOV7BMJ6JI/AAAAAAAAAFA/FO7Vfc6vuWs/s400/hello_world.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5292738828254701714" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2854397746557489911?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2854397746557489911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2854397746557489911' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2854397746557489911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2854397746557489911'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/windows-ce.html' title='Windows CE'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/SXOV7BMJ6JI/AAAAAAAAAFA/FO7Vfc6vuWs/s72-c/hello_world.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7724342206129237244</id><published>2009-01-15T22:39:00.005+01:00</published><updated>2009-01-15T23:24:24.208+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><title type='text'>Programming -- Principles and Practice Using C++</title><content type='html'>Is the name of Bjarne Stroustrup's &lt;a href="http://www.research.att.com/~bs/programming.html"&gt;latest book&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Here is a quote for the book's website:&lt;br /&gt;&lt;blockquote&gt;It is designed for classroom use, but written with an eye on self study. Drafts have been used as the basis for first programming classes for electrical engineer, computer engineer, and computer science students at Texas A&amp;M University for three years now.&lt;/blockquote&gt;&lt;br /&gt;The first thing that you notice when you open the book it's the color! The book is colored, and it has lots of pictures! You can notice that also in the sample chapters found on the book's website :)&lt;br /&gt;&lt;br /&gt;My guess is that it was the author's intention to make it more appealing for the students, having to read more than 1000 black and white pages can have a devastating effect on a student's pathos!&lt;br /&gt;&lt;br /&gt;This is the second colored programming book that I have, after "Windows Presentation Foundation Unleashed".&lt;br /&gt;&lt;br /&gt;This is Bjarne's first book about graphical user interface (GUI) applications development. He had chosen &lt;a href="http://www.fltk.org/"&gt;FLKT&lt;/a&gt; as a GUI library, and there are four chapters allocated (~160 pages).&lt;br /&gt;&lt;br /&gt;I can't say anything more because I haven't read it, but I can attach a picture:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SW-0cgCxc2I/AAAAAAAAAE4/UrdCt2uQVlk/s1600-h/programming.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 321px; height: 400px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SW-0cgCxc2I/AAAAAAAAAE4/UrdCt2uQVlk/s400/programming.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5291646488914522978" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7724342206129237244?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7724342206129237244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7724342206129237244' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7724342206129237244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7724342206129237244'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/programming-principles-and-practice.html' title='Programming -- Principles and Practice Using C++'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/SW-0cgCxc2I/AAAAAAAAAE4/UrdCt2uQVlk/s72-c/programming.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7142270104299863013</id><published>2009-01-12T23:13:00.004+01:00</published><updated>2009-01-13T00:09:33.156+01:00</updated><title type='text'>OptiPNG</title><content type='html'>When it comes to saving screen shots, PNG is the number one image format due to its lossless compression.&lt;br /&gt;&lt;br /&gt;JPEG has artifacts around text and washed colors because of lossy compression, GIF has a limited color palette (only 256 distinct colors).&lt;br /&gt;&lt;br /&gt;Normally PNG files a bit bigger than JPEG and GIF, but with &lt;a href="http://optipng.sourceforge.net/"&gt;OptiPNG&lt;/a&gt; you can decrease the size of a PNG file quite a bit.&lt;br /&gt;&lt;br /&gt;I have taken a screen shot of &lt;a href="http://www.vorbis.com/"&gt;vorbis.com&lt;/a&gt; and saved it under different file formats:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BMP - 2.956.854 bytes&lt;/li&gt;&lt;li&gt;PNG - 130.174 bytes (IrfanView level 9 compression)&lt;/li&gt;&lt;li&gt;PNG - 115.491 bytes (Microsoft Paint)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SWvITQxvcJI/AAAAAAAAAEY/h8F3xKaDXbY/s1600-h/vorbis.jpg"&gt;JPEG&lt;/a&gt; - 99.003 bytes (80% compression) &lt;/li&gt;&lt;li&gt;&lt;a href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SWvITI1rXpI/AAAAAAAAAEQ/NUBu00B1vNc/s1600-h/vorbis.gif"&gt;GIF&lt;/a&gt; - 90.024 bytes&lt;/li&gt;&lt;li&gt;PNG - 88.040 bytes (OptiPNG on Microsoft Paint's PNG file)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SWvIT-EffLI/AAAAAAAAAEg/t0cN9DbqfA4/s1600-h/vorbis_optipng.png"&gt;PNG&lt;/a&gt; - 87.967 bytes (OptiPNG on IrfanView's PNG file)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;OptiPNG has been created by Cosmin Truţa, yet another famous Romanian computer science engineer &lt;img src="http://l.yimg.com/us.yimg.com/i/mesg/emoticons7/79.gif" alt="star"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7142270104299863013?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7142270104299863013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7142270104299863013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7142270104299863013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7142270104299863013'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/optipng.html' title='OptiPNG'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6687692861578388708</id><published>2009-01-06T23:36:00.007+01:00</published><updated>2009-01-07T01:33:46.539+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><title type='text'>XAML in native C++</title><content type='html'>With the advent of &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt; and  &lt;a href="http://en.wikipedia.org/wiki/Xaml"&gt;XAML&lt;/a&gt; Microsoft has changed the way GUI Windows applications are developed, by introducing markup language into GUI development.&lt;br /&gt;&lt;br /&gt;Unlike previous GUI APIs, the core of the WPF is written entirely in managed code, there is nothing for native C++ developers, there is not even support for C++/CLI (one can do some workarounds, but no support from the IDE and Blend)&lt;br /&gt;&lt;br /&gt;Today I have found out that &lt;a href="http://www.codejock.com/"&gt;CodeJock&lt;/a&gt; has added support (see &lt;a href="http://www.codejock.com/public/assets/pdf/corporate/codejock_pr_05052008.pdf"&gt;press release&lt;/a&gt;) for XAML scripts in their &lt;a href="http://www.codejock.com/products/toolkitpro/"&gt;Xtreme ToolkitPro&lt;/a&gt; library.  They do not support everything from WPF, they started adding markup properties for various GUI elements, in time the support will continue to grow.&lt;br /&gt;&lt;br /&gt;The &lt;a href="https://forum.codejock.com/forum_topics.asp?FID=150"&gt;XAML&lt;/a&gt; section of their forums contains lots of information on the topic, which stuff is working, which is not. There I have found out sample applications, an early version of their &lt;a href="http://forum.codejock.com/uploads/temp/20080129_130732_MarkupPad.zip"&gt;MarkupPad &lt;/a&gt;(now an year old), which shows the capability of their XAML parser.&lt;br /&gt;&lt;br /&gt;I have made a screenshot with MarkupPad and &lt;a href="http://msdn.microsoft.com/en-us/library/ms742398.aspx"&gt;XAMLPad&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SWPjkwoCb-I/AAAAAAAAAEA/7mwsDvbZ-Io/s1600-h/screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SWPjkwoCb-I/AAAAAAAAAEA/7mwsDvbZ-Io/s400/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5288320608130723810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;They both look the same, then I have had a look with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt; and here is another picture with the results (see memory footprint):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SWPkFyWOxJI/AAAAAAAAAEI/HVKpTJvw0FE/s1600-h/memory.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 20px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SWPkFyWOxJI/AAAAAAAAAEI/HVKpTJvw0FE/s400/memory.png" alt="" id="BLOGGER_PHOTO_ID_5288321175528588434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am aware that the comparison is not fair, CodeJock doesn't have a full XAML parser (no Timeline, no 3D, no...), but these are facts which can be seen at the moment.&lt;br /&gt;&lt;br /&gt;Hats off for CodeJock for adding this functionality, I guess Microsoft could have done the same for MFC, but they don't care anymore about native GUI development, the latest new blood in MFC was bought from BCGSoftware, which doesn't have any support for XAML in their flagship products, namely &lt;a href="http://www.bcgsoft.com/bcgcontrolbarpro.htm"&gt;BCGControlBar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It would be nice to have an open source, cross platform, native C++ XAML parser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6687692861578388708?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6687692861578388708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6687692861578388708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6687692861578388708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6687692861578388708'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/xaml-in-native-c.html' title='XAML in native C++'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/SWPjkwoCb-I/AAAAAAAAAEA/7mwsDvbZ-Io/s72-c/screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3756490965544137880</id><published>2009-01-04T18:56:00.004+01:00</published><updated>2009-01-09T10:18:29.949+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python has a bin</title><content type='html'>I mainly use Python on Windows as a calculator. I can use expressions, variables, and it can handle really big numbers.&lt;br /&gt;&lt;br /&gt;When I need to transform decimals into hexadecimal I use &lt;em&gt;hex(number)&lt;/em&gt; function. On many occasions I've tried &lt;em&gt;bin(number)&lt;/em&gt; and failed because until Python 2.6 there was no &lt;em&gt;bin&lt;/em&gt; function, it took me some time to realize why it worked :) then I've read Python 2.6 change log.&lt;br /&gt;&lt;br /&gt;Python 2.6 is cooler now with the &lt;em&gt;bin&lt;/em&gt; function!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3756490965544137880?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3756490965544137880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3756490965544137880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3756490965544137880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3756490965544137880'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2009/01/python-has-bin.html' title='Python has a bin'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-9082222289315488981</id><published>2008-12-07T15:13:00.002+01:00</published><updated>2008-12-07T15:30:05.095+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>New oggcodecs release</title><content type='html'>I'm proudly presenting Oggcodecs "Nikolaus" release.&lt;br /&gt;&lt;br /&gt;This version has lots of bugfixes, particularly to Theora and FLAC. I've added support for Windows x64 versions. &lt;br /&gt;&lt;br /&gt;For Windows XP x64 you will need to use &lt;a href="http://www.start64.com/index.php?option=com_content&amp;task=view&amp;id=1376&amp;Itemid=72"&gt;Media Player Classic Home Cinema&lt;/a&gt; or some other 64 bit player, because Windows Media Player doesn't install the 64 bit version.&lt;br /&gt;&lt;br /&gt;If you want to use Windows Media Center on Windows Vista x64 you will need to point it to the 64 bit Windows Media Player. &lt;br /&gt;&lt;br /&gt;Windows Vista x64 has the 32 bit version of Windows Media Player set by default. For more information about this issue visit &lt;a href="http://www.mydigitallife.info/2007/01/19/switch-change-or-set-64-bit-windows-media-player-11-wmp11-in-windows-vista-x64-as-default/"&gt;this&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;Oggcodecs installer sets the file associations to the 64 bit version of Windows Media Player, so it will work out of the box without needing to switch on the 64 bit version.&lt;br /&gt;&lt;br /&gt;For more information about the release visit the Oggcodecs DirectShow &lt;a href="http://www.xiph.org/dshow/"&gt;homepage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-9082222289315488981?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/9082222289315488981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=9082222289315488981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/9082222289315488981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/9082222289315488981'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/12/new-oggcodecs-release.html' title='New oggcodecs release'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1676237898165195392</id><published>2008-11-02T01:40:00.004+01:00</published><updated>2008-11-02T01:53:49.607+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>A fish called Xiphophorus</title><content type='html'>The current unstable version of DirectShow OggCodecs is coming along nicely. In order to prepare for a release party (OggCodecs or Theora 1.0), I've asked my girlfriend if she could paint a T-Shirt with the "Fish".&lt;br /&gt;&lt;br /&gt;Here are some pictures documenting the process:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SQz4P_8XCEI/AAAAAAAAADU/N6Q8OuNsiu0/s1600-h/xiph_01.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SQz4P_8XCEI/AAAAAAAAADU/N6Q8OuNsiu0/s320/xiph_01.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5263855018235594818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SQz4QFpVa-I/AAAAAAAAADc/Skhfk1_LbI8/s1600-h/xiph_02.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SQz4QFpVa-I/AAAAAAAAADc/Skhfk1_LbI8/s320/xiph_02.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5263855019766410210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/SQz4Q5W99rI/AAAAAAAAADk/kL3Bm_7a7Cg/s1600-h/xiph_03.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/SQz4Q5W99rI/AAAAAAAAADk/kL3Bm_7a7Cg/s320/xiph_03.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5263855033648019122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thank you Alina-Simona!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1676237898165195392?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1676237898165195392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1676237898165195392' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1676237898165195392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1676237898165195392'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/11/fish-called-xiphophorus.html' title='A fish called Xiphophorus'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/SQz4P_8XCEI/AAAAAAAAADU/N6Q8OuNsiu0/s72-c/xiph_01.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6525873476230123361</id><published>2008-10-14T22:30:00.006+02:00</published><updated>2008-10-14T23:46:44.850+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>GMX Multimessenger uses(?) oggcodecs</title><content type='html'>Today I've installed a new Instant Messenger program - &lt;a href="http://service.gmx.net/de/cgi/g.fcgi/products/messenger"&gt;GMX Multimessenger&lt;/a&gt; (available only in German).&lt;br /&gt;&lt;br /&gt;By looking in the programs instalation folder (while trying to enable HTTP Proxy) I found out these familiar DLLs:&lt;br /&gt;&lt;blockquote&gt;dsftheoradecoder.dll&lt;br /&gt;dsftheoraencoder.dll&lt;br /&gt;libooogg.dll&lt;br /&gt;libootheora.dll &lt;/blockquote&gt;&lt;br /&gt;Those DLLs are part of oggcodecs! thus meaning that they use oggcodecs, or?&lt;br /&gt;&lt;br /&gt;Although they mention Theora in Settings page:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SPUOZgjzDII/AAAAAAAAADE/VbkoNPUtuXk/s1600-h/settings.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SPUOZgjzDII/AAAAAAAAADE/VbkoNPUtuXk/s400/settings.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5257123971424521346" /&gt;&lt;/a&gt;&lt;br /&gt;while trying to use Video Chat an Adobe Flash window was opened. Video Chat is done using Adobe Flash! &lt;br /&gt;&lt;br /&gt;I've tried to enable Theora Video Chat but failed, the above mentioned DLLs are not even loaded by the process.&lt;br /&gt;&lt;br /&gt;They mention Xiph.org, CSIRO and Zentaro Kavanagh in About dialog, but I don't know how they use Theora codec:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SPUPYRAPfrI/AAAAAAAAADM/U5ZBWmgLU8c/s1600-h/gmx.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SPUPYRAPfrI/AAAAAAAAADM/U5ZBWmgLU8c/s400/gmx.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5257125049580617394" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6525873476230123361?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6525873476230123361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6525873476230123361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6525873476230123361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6525873476230123361'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/10/gmx-multimessenger-uses-oggcodecs.html' title='GMX Multimessenger uses(?) oggcodecs'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/SPUOZgjzDII/AAAAAAAAADE/VbkoNPUtuXk/s72-c/settings.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3031712804307526598</id><published>2008-09-16T16:43:00.006+02:00</published><updated>2008-09-16T21:23:34.200+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>They don't make'em as they used to...</title><content type='html'>Why does &lt;em&gt;Thread&lt;span class="cs"&gt;.&lt;/span&gt;&lt;span class="vb"&gt;&lt;/span&gt;&lt;span class="cpp"&gt;&lt;/span&gt;&lt;span class="nu"&gt;&lt;/span&gt;Sleep Method (Int32)&lt;/em&gt; have a signed parameter for the duration of time? Can you go back in time with a negative value? Is this an undocumented method of undoing things?&lt;br /&gt;&lt;br /&gt;Compare &lt;a href="http://msdn.microsoft.com/en-us/library/d00bd51t.aspx"&gt;this&lt;/a&gt; (System.Threading.Thread.Sleep) with &lt;a href="http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx"&gt;this&lt;/a&gt; (Win32 Sleep).&lt;br /&gt;&lt;br /&gt;Usually INFINITE is set to the maximum value. For Win32 API this would be 2^32 -1, for .NET that would be 2^31-1. The .NET INFINITE is half of the Win32 API INFINITE.&lt;br /&gt;&lt;br /&gt;Instead of maximum sleep time of 49.71 days you get only 24.85 days... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3031712804307526598?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3031712804307526598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3031712804307526598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3031712804307526598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3031712804307526598'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/09/theyre-not-making-them-as-they-used-to.html' title='They don&apos;t make&apos;em as they used to...'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-996998595793537882</id><published>2008-09-14T00:36:00.003+02:00</published><updated>2008-10-07T15:40:23.567+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><category scheme='http://www.blogger.com/atom/ns#' term='ibc'/><title type='text'>IBC</title><content type='html'>Today I've visited &lt;a href="http://www.ibc.org/"&gt;IBC&lt;/a&gt; in Amsterdam. I must say that it was impressive. I have failed to cover everything in just six hours. Somehow I've missed the Fluendo booth, but had a short talk with a guy from BBC's Dirac booth.&lt;br /&gt;&lt;br /&gt;Next year I plan to visit more. No pictures at the moment, hopefully I can get some from one of my colleagues.&lt;br /&gt;&lt;br /&gt;Edit: And the promised picture is here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SOtl6ummTKI/AAAAAAAAAC0/EA3fiQA-zgU/s1600-h/adam_professional_audio.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SOtl6ummTKI/AAAAAAAAAC0/EA3fiQA-zgU/s320/adam_professional_audio.jpg" alt="" id="BLOGGER_PHOTO_ID_5254405449874558114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ADAM - Professional Audio (Ogg that is :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-996998595793537882?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/996998595793537882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=996998595793537882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/996998595793537882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/996998595793537882'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/09/ibc.html' title='IBC'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sKFDQyaSuWc/SOtl6ummTKI/AAAAAAAAAC0/EA3fiQA-zgU/s72-c/adam_professional_audio.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8117880472011567944</id><published>2008-08-20T00:35:00.004+02:00</published><updated>2009-01-09T10:19:01.497+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codeproject'/><title type='text'>First CodeProject Article!</title><content type='html'>My first CodeProject Article - &lt;a href="http://www.codeproject.com/KB/COM/regsvr42.aspx"&gt;regsvr42: Generate SxS Manifest Files from Native DLLs for Registration-Free COM&lt;/a&gt;. It was really fun to write, not to mention very useful. I wish I had this tool a few years ago, when I was hunting after COM interfaces into COM components.&lt;br /&gt;&lt;br /&gt;Don't forget to logon CodeProject and give a high mark! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8117880472011567944?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8117880472011567944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8117880472011567944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8117880472011567944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8117880472011567944'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/08/first-codeproject-article.html' title='First CodeProject Article!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4093106458377844521</id><published>2008-08-15T22:15:00.002+02:00</published><updated>2008-08-15T22:32:26.788+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><title type='text'>Boost 1.36.0</title><content type='html'>Boost 1.36.0 has been released and is available from &lt;a href="http://sourceforge.net/projects/boost/"&gt;SourceForge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This release include four new libraries:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accumulators: Framework for incremental calculation, and collection of statistical accumulators, from Eric Niebler.&lt;/li&gt;&lt;li&gt;Exception: A library for transporting of arbitrary data in exception objects, and transporting of exceptions between threads, from Emil Dotchevski.&lt;/li&gt;&lt;li&gt;Units: Zero-overhead dimensional analysis and unit/quantity manipulation and conversion, from Matthias Schabel and Steven Watanabe&lt;/li&gt;&lt;li&gt;Unordered: Unordered associative containers, from Daniel James.&lt;/li&gt;&lt;/ul&gt;Updated libraries include Asio, Assign, Function, Hash, Interprocess, Intrusive, Math, MPI, Multi-index Containers, PtrContainer, Spirit, Thread, Wave, and Xpressive.&lt;br /&gt;&lt;br /&gt;On the same note Microsoft released the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;first Service Pack&lt;/a&gt; for Visual Studio 2008. C++ gets &lt;a href="http://en.wikipedia.org/wiki/Technical_Report_1"&gt;TR1  &lt;/a&gt;(shared_ptr, regex and more!) and new MFC face lift classes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4093106458377844521?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4093106458377844521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4093106458377844521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4093106458377844521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4093106458377844521'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/08/boost-1360.html' title='Boost 1.36.0'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6606179958287654089</id><published>2008-08-14T22:27:00.003+02:00</published><updated>2008-08-14T23:06:14.636+02:00</updated><title type='text'>Visual C++ 2008 Keybinding Reference Poster</title><content type='html'>One thing I haven't studied since my first encounter with Visual Studio, and back then I haven't had such a nice pdf, is the Visual C++ Keybinding.&lt;br /&gt;&lt;br /&gt;Microsoft has nicely made &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4411bbfc-0e3c-42b3-bd05-af1d292c986f&amp;displaylang=en"&gt;this &lt;/a&gt;available for Visual C++ 2008! &lt;br /&gt;&lt;br /&gt;I did not know that CTRL+SHIFT+INS is the keymapping for Edit.CycleClipboardRing, I always used Visual Assist's CTRL+SHIFT+V functionality - a menu, not some selected text which you can cycle through. This functionality can come in handy when you don't have access to Visual Assist, either by being stranded in C# land where the landlord is named Resharper or by using the Express (no addons) edition.&lt;br /&gt;&lt;br /&gt;Don't forget to print the "Poster", you! might learn something new about Visual C++ Keybinding.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: Usually I'm OK with the default Visual C++ keybinding, but since Visual C++ 2003 they've changed the F7 keybinding from "Build Project" to "Build Solution". Visual C++ 2008 has F7 or CTRL+SHIFT+B mapped to "Build Solution". I've customized F7 to Build.BuildSelection (works somehow better than Build.BuildOnlyProject)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6606179958287654089?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6606179958287654089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6606179958287654089' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6606179958287654089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6606179958287654089'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/08/visual-c-2008-keybinding-reference.html' title='Visual C++ 2008 Keybinding Reference Poster'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-5450234622814761560</id><published>2008-06-22T21:28:00.002+02:00</published><updated>2008-11-13T13:26:04.040+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows xp'/><title type='text'>Windows XP Manifest File Maker</title><content type='html'>Windows XP has introduced a new theming API. You can make your applications to use this new theming API by the use of a .manifest file. This manifest file can sit alongside your application or in your applications resource part.&lt;br /&gt;&lt;br /&gt;Here is a batch file which creates such a manifest file:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;@echo off&lt;br /&gt;&lt;br /&gt;rem (c) 2008 Cristian Adam&lt;br /&gt;&lt;br /&gt;if [%1] == [] (&lt;br /&gt;&lt;br /&gt;echo Usage: make_manifest file.exe&lt;br /&gt;&lt;br /&gt;) else (&lt;br /&gt;&lt;br /&gt;if exist %1.manifest goto :EOF&lt;br /&gt;&lt;br /&gt;echo ^&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="yes" ?^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo ^&amp;lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo   ^&amp;lt;description^&amp;gt;Windows Forms Common Control manifest^&amp;lt;/description^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo   ^&amp;lt;dependency^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo     ^&amp;lt;dependentAssembly^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo       ^&amp;lt;assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo     ^&amp;lt;/dependentAssembly^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo   ^&amp;lt;/dependency^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;echo ^&amp;lt;/assembly^&amp;gt; &amp;gt;&amp;gt; %1.manifest&lt;br /&gt;&lt;br /&gt;)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And now a screenshot to show the before and after state:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SF6peLJEPqI/AAAAAAAAABU/PfskW5cCsRI/s1600-h/manifest_diff.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SF6peLJEPqI/AAAAAAAAABU/PfskW5cCsRI/s320/manifest_diff.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5214791754393599650" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-5450234622814761560?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/5450234622814761560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=5450234622814761560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5450234622814761560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5450234622814761560'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/windows-xp-manifest-file-maker.html' title='Windows XP Manifest File Maker'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sKFDQyaSuWc/SF6peLJEPqI/AAAAAAAAABU/PfskW5cCsRI/s72-c/manifest_diff.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2046512264354097236</id><published>2008-06-15T14:22:00.003+02:00</published><updated>2008-08-20T08:03:01.465+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>First release of oggcodecs</title><content type='html'>I've released my first release of oggcodecs:&lt;br /&gt;&lt;br /&gt;Current UNSTABLE Version &lt;a href="http://www.xiph.org/dshow/uploads/Main/oggcodecs_0.80.15039.exe"&gt;(0.80.15039)&lt;/a&gt; - 14.06.2008&lt;br /&gt;Changes this version&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    * Support for Microsoft Windows Vista&lt;br /&gt;   * Updated compiler to Visual Studio 2008 Express, which drops support for Windows 9x, NT 4.&lt;br /&gt;   * Updated libspeex to version 1.2 beta 1&lt;br /&gt;   * Updated libvorbis to version 1.2.1 (20080501)&lt;br /&gt;   * Updated libogg to version 1.1.3&lt;br /&gt;   * Updated libtheora to version 1.0beta3 (20080416)&lt;br /&gt;   * Updated libFLAC to version 1.2.1&lt;br /&gt;   * Fixed crash at the end of incomplete Theora files.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2046512264354097236?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2046512264354097236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2046512264354097236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2046512264354097236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2046512264354097236'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/first-release-of-oggcodecs.html' title='First release of oggcodecs'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1982125049278093777</id><published>2008-06-12T00:15:00.004+02:00</published><updated>2009-01-09T10:21:34.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goosh'/><title type='text'>Google Translate Learned Romanian</title><content type='html'>I found out recently that Google translate knows how to translate from Romanian to English and from English to Romanian.&lt;br /&gt;&lt;br /&gt;I've used &lt;a href="http://goosh.org/"&gt;Goosh&lt;/a&gt; - Google Shell - to translate a quote from a previous post:&lt;br /&gt;&lt;br /&gt;&lt;div class="input"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class="input"&gt;guest@goosh.org:/web&gt; &lt;span class="inputb"&gt;translate en ro This is a great victory for the glorious people of Romania!&lt;/span&gt;&lt;/div&gt;translating "This is a great victory for the glorious people of Romania!" from "english" to "romanian":&lt;br /&gt;&lt;br /&gt;&lt;span class="info"&gt;"Aceasta este o mare victorie pentru oamenii de glorie a Romaniei!"&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="info"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's pretty good, with time it will become better :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1982125049278093777?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1982125049278093777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1982125049278093777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1982125049278093777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1982125049278093777'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/google-translate-learned-romanian.html' title='Google Translate Learned Romanian'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-8813345458596326288</id><published>2008-06-11T23:23:00.010+02:00</published><updated>2008-08-20T15:15:51.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cab packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Why Microsoft? Why?!</title><content type='html'>Take the cab file format. It's present on every windows from Windows 95. If you use the LZW compression algorithm you get small archives. &lt;span style="font-size:100%;"&gt;&lt;blockquote&gt;986.875 oggcodecs.7z&lt;br /&gt;1.150.890 oggcodecs.cab&lt;br /&gt;1.618.917 oggcodecs.zip&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;It's better than zip and a bit worse as 7-zip.&lt;br /&gt;&lt;br /&gt;The problem with cab file format it's that it's hard to use it in command line.&lt;br /&gt;&lt;br /&gt;For example here is what you need to code to compress one directory into a cab file:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;blockquote&gt;for %%i in (oggcodecs\*.*) do echo "%cd%\%%i" &gt;&gt; files.ddf&lt;br /&gt;makecab /L .  /D CompresionMemory=21 /D CompressionType=LZX  /D DestinationDir=oggcodecs /F files.ddf&lt;br /&gt;del files.ddf&lt;br /&gt;move disk1\1.cab oggcodecs.cab&lt;br /&gt;rmdir disk1&lt;br /&gt;del setup.inf&lt;br /&gt;del setup.rpt&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;Pretty hard core. One might say that this is not a tool to be used from a command line as rar or other popular archiving programs. This is done only once by me in a script file, so I can live with it.&lt;br /&gt;&lt;br /&gt;The problem is with the extraction method. I have created a folder inside that cab file, which I can see with Total Commander, 7-zip File Manager etc, but with Windows Explorer I see directly the files, without the directory. There is one command line program which handles cab archives - expand.exe. Expand.exe doesn't know about directories in cab files, there is no switch to instruct him to preserve the directory structure from the cab file.&lt;br /&gt;&lt;br /&gt;Why Microsoft? Why?&lt;br /&gt;&lt;br /&gt;The solution is simple, create the destination folder first, d'oh!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;mkdir oggcodecs&lt;br /&gt;expand oggcodecs.cab -F:* oggcodecs\&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Why not use 7-zip and ignore all this trouble? A cab file I can digitally sign and you can see it's coming from me and you don't need a 3rd party program to unpack!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-8813345458596326288?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/8813345458596326288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=8813345458596326288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8813345458596326288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/8813345458596326288'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/why-microsoft-why_11.html' title='Why Microsoft? Why?!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7762220280705103129</id><published>2008-06-10T11:18:00.006+02:00</published><updated>2008-08-23T23:59:15.113+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Why Microsoft? Why?!</title><content type='html'>I haven't mentioned here that I lost my fate in Microsoft that they can deliver good development tools a long time ago, I guess that was when I saw Visual Studio .NET 2002 for the first time. The .NET age fuc*ed it up real good.&lt;br /&gt;&lt;br /&gt;At work I have Visual Studio 2003 and 2005 installed on D drive. Now I had to install Visual Studio 2008 on my system. I choose D drive, I verify every component that it should install on D drive and click Next, Next... Finish.&lt;br /&gt;&lt;br /&gt;To my surprise the C++ component (VC directory) was installed on C drive, I said to myself... hmm, maybe I've forgot to install it on D, but it was working and I've ignored the issue.&lt;br /&gt;&lt;br /&gt;The problem was when I've tried to compile something from the console. I've opened a console, setup the environment variables "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" and then hit nmake.&lt;br /&gt;&lt;br /&gt;It complained that it could not find rc.exe, WTF. Then I found out that rc.exe is part of the Microsoft SDK which was on D (D:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\). When I try to setup the environment variables for Microsoft SDK ("d:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\SetEnv.Cmd" ) it complains that it can not find a compiler...&lt;br /&gt;&lt;br /&gt;So now I'm installing everything on C drive, because for Microsoft, C++ should stay on C drive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit&lt;/span&gt;: It works now (everything is on drive D), I've uninstalled all the programs that had a connection with Visual Studio 2008. If at first you don't succeed then try again, and again, and again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7762220280705103129?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7762220280705103129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7762220280705103129' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7762220280705103129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7762220280705103129'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/why-microsoft-why.html' title='Why Microsoft? Why?!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3396110654472765463</id><published>2008-06-07T18:07:00.005+02:00</published><updated>2008-11-13T13:26:04.367+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>Authenticode</title><content type='html'>By using &lt;a href="http://msdn.microsoft.com/en-us/library/ms537361.aspx"&gt;code signing&lt;/a&gt; with a certificate provided by &lt;a href="http://certum.eu/certum/cert,eindex_en.xml"&gt;Certum&lt;/a&gt; I was able to change how the oggcodecs installer looks on Windows Vista from this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/SEqzPtkFJsI/AAAAAAAAABE/_nNKAqR-S_Y/s1600-h/vista_invalid.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/SEqzPtkFJsI/AAAAAAAAABE/_nNKAqR-S_Y/s320/vista_invalid.png" alt="" id="BLOGGER_PHOTO_ID_5209173001517737666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;to this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sKFDQyaSuWc/SEqzaNyIVWI/AAAAAAAAABM/RM-d7jXdtMw/s1600-h/vista_valid.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/SEqzaNyIVWI/AAAAAAAAABM/RM-d7jXdtMw/s320/vista_valid.png" alt="" id="BLOGGER_PHOTO_ID_5209173181965292898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The name of the installer looks different, but my name is displayed under :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3396110654472765463?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3396110654472765463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3396110654472765463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3396110654472765463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3396110654472765463'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/authenticode.html' title='Authenticode'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/SEqzPtkFJsI/AAAAAAAAABE/_nNKAqR-S_Y/s72-c/vista_invalid.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7078640552863582327</id><published>2008-06-07T15:26:00.004+02:00</published><updated>2011-06-21T08:06:42.022+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xiph'/><title type='text'>Maintainer for Directshow Filters for Ogg Vorbis, Speex, Theora and FLAC</title><content type='html'>I probably should have blogged sooner, but here it is: I'm the current maintainer for&lt;a href="http://www.xiph.org/dshow/"&gt; Directshow Filters for Ogg Vorbis, Speex, Theora and FLAC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you want a hardware Ogg Player you should consider buying a &lt;strike&gt;&lt;a href="http://www.trekstor.de/en/products/mp3.php"&gt;Trekstor&lt;/a&gt;&lt;/strike&gt; &lt;a href="http://www.samsung.com/sg/consumer/tv-audio-video/mp3-player/index.idx?pagetype=type_p2&amp;amp;"&gt;Samsung&lt;/a&gt; (most of their MP3 players support Ogg Vorbis and FLAC formats) product!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7078640552863582327?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7078640552863582327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7078640552863582327' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7078640552863582327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7078640552863582327'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/06/maintainer-for-directshow-filters-for.html' title='Maintainer for Directshow Filters for Ogg Vorbis, Speex, Theora and FLAC'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2069641458308306963</id><published>2008-05-31T18:38:00.002+02:00</published><updated>2008-05-31T18:44:42.597+02:00</updated><title type='text'>New beta version of  Y!M 9</title><content type='html'>Yahoo Messesnger 9.0 has reached version 9.0.0.1389. This version fixes the long standing bug with Romanian „ă” character inserted with AltGr-A which was interpreted as Ctrl-Alt-A.&lt;br /&gt;&lt;br /&gt;This is a great victory for the glorious people of Romania!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2069641458308306963?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2069641458308306963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2069641458308306963' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2069641458308306963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2069641458308306963'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/05/new-beta-version-of-ym-9.html' title='New beta version of  Y!M 9'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6973298311514453126</id><published>2008-04-29T23:18:00.004+02:00</published><updated>2010-12-21T11:49:00.076+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows xp'/><title type='text'>Pimpin' Windows XP's cmd.exe</title><content type='html'>I like the command line interface, not because I own a &lt;a href="http://www.daskeyboard.com/"&gt;Das Keyboard&lt;/a&gt; and I'm forced to look at the screen,   but because I like to type.&lt;br /&gt;&lt;br /&gt;Windows XP's cmd.exe was not one of my favorite consoles, it lacked configurability, especially in the font area. You have only two options when it comes fonts: raster fonts and "Lucida Console".&lt;br /&gt;&lt;br /&gt;I grew accustomed with "DejaVu Sans Mono" font from my Linux days and since then when I think about a monospaced font I think of "DejaVu Sans Mono".&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;One option is to use an &lt;a href="http://sourceforge.net/projects/console/"&gt;alternative&lt;/a&gt; console, but I found out that it's not as fast as cmd.exe.&lt;br /&gt;&lt;/div&gt;&lt;a href="http://sourceforge.net/projects/console"&gt;&lt;br /&gt;&lt;/a&gt;The solution is to replace "Lucida Console" with "DejaVu Sans Mono"! Just fire you &lt;a href="http://fontforge.sourceforge.net/"&gt;your favourite font editor&lt;/a&gt; and do the required changes, then install the new "Lucida Console" and that's it.&lt;br /&gt;&lt;br /&gt;Here is a screenshot with my pimped cmd.exe&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sKFDQyaSuWc/SBw92XH-T2I/AAAAAAAAAA8/M7-D9TIk0z8/s1600-h/cmd.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/SBw92XH-T2I/AAAAAAAAAA8/M7-D9TIk0z8/s320/cmd.png" alt="" id="BLOGGER_PHOTO_ID_5196096074208399202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the meantime I've found an easier way of changing the console font, read more about it &lt;a href="http://cristianadam.blogspot.com/2009/11/windows-console-and-true-type-fonts.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6973298311514453126?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6973298311514453126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6973298311514453126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6973298311514453126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6973298311514453126'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/04/pimpin-windows-xps-cmdexe.html' title='Pimpin&apos; Windows XP&apos;s cmd.exe'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sKFDQyaSuWc/SBw92XH-T2I/AAAAAAAAAA8/M7-D9TIk0z8/s72-c/cmd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1373127623322526647</id><published>2008-03-23T00:53:00.003+01:00</published><updated>2008-11-13T13:26:04.820+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><title type='text'>Hamburg</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/R-WdInZNVmI/AAAAAAAAAA0/O16kkDAw8IA/s1600-h/IMG_5087.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/R-WdInZNVmI/AAAAAAAAAA0/O16kkDAw8IA/s320/IMG_5087.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5180719717698852450" /&gt;&lt;/a&gt;&lt;br /&gt;Corner of ZDF in Hamburg ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1373127623322526647?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1373127623322526647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1373127623322526647' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1373127623322526647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1373127623322526647'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/03/hamburg.html' title='Hamburg'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/R-WdInZNVmI/AAAAAAAAAA0/O16kkDAw8IA/s72-c/IMG_5087.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-6175822460545249955</id><published>2008-03-09T04:06:00.003+01:00</published><updated>2011-10-04T12:26:07.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='romanian'/><title type='text'>Limba noastră-i o comoară</title><content type='html'>This post is intended to the Romanian audience.&lt;br /&gt;&lt;br /&gt;Astăzi am dat peste ceva la care nu m-am gândit niciodată, să traduc în limba română cuvintele cheie din C/C++. &lt;br /&gt;&lt;br /&gt;Soluţia este simplă, se foloseşte preprocesorul, iată un exemplu:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;#include "romanian.h"&lt;br /&gt;&lt;br /&gt;folosim spatiunume::std;&lt;br /&gt;&lt;br /&gt;int principal()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scrie("Salutare Lume!\n");&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Arată foarte interesant. Am văzut acest lucru la semnătura lui &lt;e&gt;Marian Dragomir&lt;/e&gt;, iar fişiereul "romanian.h" arată astfel:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#ifndef ROMANIAN_H&lt;br /&gt;#define ROMANIAN_H&lt;br /&gt;&lt;br /&gt;#define asm asm&lt;br /&gt;#define auto auto&lt;br /&gt;#define pausa break&lt;br /&gt;#define caz case&lt;br /&gt;#define cara char&lt;br /&gt;#define const const&lt;br /&gt;#define continua continue&lt;br /&gt;#define predefinit default&lt;br /&gt;#define fa do&lt;br /&gt;#define dublu double&lt;br /&gt;#define altfel else&lt;br /&gt;#define enum enum&lt;br /&gt;#define extern extern&lt;br /&gt;#define flotador float&lt;br /&gt;#define pentru for&lt;br /&gt;#define dutela goto&lt;br /&gt;#define daca if&lt;br /&gt;#define expandeaza inline&lt;br /&gt;#define int int&lt;br /&gt;#define lung long&lt;br /&gt;#define registru register&lt;br /&gt;#define restrict restrict&lt;br /&gt;#define intoarce return&lt;br /&gt;#define mic short&lt;br /&gt;#define semnat signed&lt;br /&gt;#define marimede sizeof&lt;br /&gt;#define static static&lt;br /&gt;#define structura struct&lt;br /&gt;#define comuta switch&lt;br /&gt;#define definestetip typedef&lt;br /&gt;#define tipde typeof&lt;br /&gt;#define uniune union&lt;br /&gt;#define farasemn unsigned&lt;br /&gt;#define vid void&lt;br /&gt;#define inflamabil volatile&lt;br /&gt;#define atitcit while&lt;br /&gt;/* definitii pentru C++ */&lt;br /&gt;#define bool bool&lt;br /&gt;#define prinde catch&lt;br /&gt;#define clasa class&lt;br /&gt;#define mold_const const_cast&lt;br /&gt;#define sterge delete&lt;br /&gt;#define mold_dinamic dynamic_cast&lt;br /&gt;#define explicit explicit&lt;br /&gt;#define export export&lt;br /&gt;#define fals false&lt;br /&gt;#define prieten friend&lt;br /&gt;#define mutabil mutable&lt;br /&gt;#define spatiunume namespace&lt;br /&gt;#define nou new&lt;br /&gt;#define operator operator&lt;br /&gt;#define privat private&lt;br /&gt;#define protejat protected&lt;br /&gt;#define public public&lt;br /&gt;#define mold_reinterpreteaza&lt;br /&gt;#define molda_static static_cast&lt;br /&gt;#define sablon template&lt;br /&gt;#define acesta this&lt;br /&gt;#define arunca throw&lt;br /&gt;#define adevarat true&lt;br /&gt;#define intentioneaza try&lt;br /&gt;#define numetip typename&lt;br /&gt;#define idtip typeid&lt;br /&gt;#define folosim using&lt;br /&gt;#define virtual virtual&lt;br /&gt;#define lchar_t wchar_t&lt;br /&gt;&lt;br /&gt;/* definitii de functii comune */&lt;br /&gt;#define principal main&lt;br /&gt;#define scrie printf&lt;br /&gt;&lt;br /&gt;#endif&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Spor la scris „poezii”! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-6175822460545249955?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/6175822460545249955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=6175822460545249955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6175822460545249955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/6175822460545249955'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2008/03/limba-noastr-i-o-comoar.html' title='Limba noastră-i o comoară'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-56829917577028522</id><published>2007-11-24T21:50:00.001+01:00</published><updated>2007-11-24T21:58:10.138+01:00</updated><title type='text'>Windows Time Sync</title><content type='html'>Sometimes you need to know if your computer has the correct time, what do you do to ensure that? &lt;br /&gt;&lt;br /&gt;On Windows XP you double click on the clock in the right corner of your screen select "Internet Time" and click "Update Now". All the times I did this I got an error. Windows has only two entries in that combobox, and both return errors, why?!&lt;br /&gt;&lt;br /&gt;Today I have gone a step further I googled for more Internet Time Servers, on &lt;a href="http://www.pool.ntp.org/zone/europe"&gt;this&lt;/a&gt; page I've found plenty. For example Germany has 214 servers in a time server pool (de.pool.ntp.org).&lt;br /&gt;&lt;br /&gt;It was about time ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-56829917577028522?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/56829917577028522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=56829917577028522' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/56829917577028522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/56829917577028522'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/11/windows-time-sync.html' title='Windows Time Sync'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-786871914995055596</id><published>2007-11-10T03:10:00.000+01:00</published><updated>2008-11-13T13:26:05.078+01:00</updated><title type='text'>New Updates to MFC in Visual Studio 2008</title><content type='html'>&lt;a href="http://channel9.msdn.com/showpost.aspx?postid=355087 "&gt;Here&lt;/a&gt; is an half an hour interview with Pat Brenner on the topic "New Updates to MFC in Visual Studio 2008".&lt;br /&gt;&lt;br /&gt;A very informative movie, my favorite quote is "we kinda moved out from the '90s"! &lt;br /&gt;&lt;br /&gt;And a quick summary:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;What's new for MFC developers:&lt;br /&gt;&lt;li&gt;Ribbon&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Customisable Menubar / Toolbar&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Visual Studio 2005 like Docking&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tabbed MDI&lt;/li&gt;&lt;br /&gt;&lt;li&gt;New status bar&lt;/li&gt;&lt;br /&gt;&lt;li&gt;and many more&lt;/li&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can get a full visual tour on what's new on the Visual C &lt;a href="http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx"&gt;blog entry&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Here is a screenshot of MFC demo made by the Wizard:&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sKFDQyaSuWc/RzUYiXNSgXI/AAAAAAAAAAk/e_syoCbJSDc/s1600-h/Wizard+Generated+with+accelerator+tips_2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_sKFDQyaSuWc/RzUYiXNSgXI/AAAAAAAAAAk/e_syoCbJSDc/s320/Wizard+Generated+with+accelerator+tips_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5131034329082921330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All this functionality is available now from 3rd party vendors, but this will be backed by Microsoft. Impressive!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Edit&lt;/u&gt; MFC Update powered by BCGSoft as you can read &lt;a href="http://msdn2.microsoft.com/en-us/visualc/bb892882.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-786871914995055596?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/786871914995055596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=786871914995055596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/786871914995055596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/786871914995055596'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/11/new-updates-to-mfc-in-visual-studio.html' title='New Updates to MFC in Visual Studio 2008'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sKFDQyaSuWc/RzUYiXNSgXI/AAAAAAAAAAk/e_syoCbJSDc/s72-c/Wizard+Generated+with+accelerator+tips_2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-5869355412136202298</id><published>2007-11-10T01:25:00.000+01:00</published><updated>2007-11-10T11:06:56.457+01:00</updated><title type='text'>Y!M 9.0 Without Ads</title><content type='html'>One way to disable the ads from the main window of Yahoo Messenger 9.0 is to cut access to one specific file. With this version it doesn't work any more the trick of clearing the file and making it read only.&lt;br /&gt;&lt;br /&gt;If you have installed Y!M on a NTFS file system you are lucky, you can remove the Read security attribute and the ads are gone (at least until they fix this too).&lt;br /&gt;&lt;br /&gt;Here is the code to remove the access to the file from the command line, or batch file:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cacls&amp;nbsp;"%PROGRAMFILES%\Yahoo!\Messenger\Cache\urls.xml" &amp;nbsp;/E&amp;nbsp;/P&amp;nbsp;%USERNAME%:N&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you want to bring the ads back because they were adding color to your contact list here is the command line to do just that:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;cacls&amp;nbsp;"%PROGRAMFILES%\Yahoo!\Messenger\Cache\urls.xml"&amp;nbsp; /E&amp;nbsp;/P&amp;nbsp;%USERNAME%:F&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I hope they won't read this blog and fix the hole until the final version 9.0 gets out next year ;-)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Edit&lt;/u&gt;: by upgrading to version 9.0.0.907 I found out that removing reading rights from the file was not enough, you need to fiddle with the Windows Registry e bit. Here is a batch file that does it for you:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;@ECHO OFF&lt;br /&gt;TITLE Remove ads from Yahoo Messenger 9&lt;br /&gt;&lt;br /&gt;&gt; %TEMP%.\noYMads.reg ECHO REGEDIT4&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO.&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO [HKEY_CURRENT_USER\Software\Yahoo\Pager\YUrl]&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "First Login Beacon"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Change Room Banner"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Finance Disclaimer"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Messenger Ad"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Chat Adurl"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Calendar Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Conf Adurl"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Mail Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "News Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Personals Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Stock Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Webcam Viewer Ad Medium"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Webcam Viewer Ad Big"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Webcam Viewer Ad"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Webcam Upload Ad"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Chat Transition Ad"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "N2Phone Adurl"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Webcam Viewer Ad Bid"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "IMVironment Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Auction Alert Ad URL"="noads.html"&lt;br /&gt;&gt;&gt;%TEMP%.\noYMads.reg ECHO "Login Mobile Ad"="noads.html"&lt;br /&gt;REGEDIT /S %TEMP%.\noYMads.reg&lt;br /&gt;DEL %TEMP%.\noYMads.reg&lt;br /&gt;&lt;br /&gt;cacls "%PROGRAMFILES%\Yahoo!\Messenger\Cache\urls.xml"  /E /P %USERNAME%:N&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-5869355412136202298?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/5869355412136202298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=5869355412136202298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5869355412136202298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/5869355412136202298'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/11/ym-90-without-ads.html' title='Y!M 9.0 Without Ads'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1576543621107309559</id><published>2007-11-09T00:04:00.001+01:00</published><updated>2007-11-09T00:31:39.914+01:00</updated><title type='text'>Yahoo Keyboard Patch!</title><content type='html'>Yahoo! Messenger had a very annoying problem, text selection with Ctrl-A was done when it shouldn't be done. &lt;br /&gt;&lt;br /&gt;For example Windows maps &lt;a href="http://en.wikipedia.org/wiki/AltGr_key"&gt;AltGr&lt;/a&gt; key to Ctrl-Alt keys combination, which is default behaviour. Yahoo! Messenger treats AltGr-A as Ctrl-Alt-A but then it gets the Ctrl-A part, whole text selection, and afterwards it goes to normal keyboard handling, which with a certain Romanian keyboard layout generates the character "ă", but because the text was selected before, "ă" was the only character left in the sentence you wrote.&lt;br /&gt;&lt;br /&gt;This was very annoying, but then by using the wonderful Microsoft technology called &lt;a href="http://research.microsoft.com/sn/detours/"&gt;Detours&lt;/a&gt; I was able to intercept certain WIN32 API Messages and prevent the text selection from happening. Yahoo! keyboard patch was created.&lt;br /&gt;&lt;br /&gt;Cristian Secară was very nice to host this patch on his &lt;a href="http://www.secarica.ro"&gt;webserver&lt;/a&gt;, also he made some very good suggestions which improved whole the quality of the software. &lt;br /&gt;&lt;br /&gt;The patch is available at &lt;a href="http://www.secarica.ro/html/y_m_si_a_si_s_si_t.html"&gt;this&lt;/a&gt; location (Romanian language only).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Note&lt;/u&gt;: this patch also works with other keyboard layouts, for example the Hungarian default keyboard layout can be used to generate the character "ä" now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1576543621107309559?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1576543621107309559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1576543621107309559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1576543621107309559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1576543621107309559'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/11/yahoo-keyboard-patch.html' title='Yahoo Keyboard Patch!'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-7465970293937161657</id><published>2007-10-29T23:29:00.000+01:00</published><updated>2007-11-04T22:34:19.899+01:00</updated><title type='text'>To C or Not to C</title><content type='html'>Today I was a bit puzzled by this code (test.c):&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;code&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;ceil(2.9f);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("i&amp;nbsp;is:&amp;nbsp;%d\n", i);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;I had compiled the code using the command &lt;tt&gt;cl test.c&lt;/tt&gt;, clean compile no warnings, no messages, after running the program the result was: &lt;tt&gt;i is: 1024&lt;/tt&gt;. WTF?!&lt;br /&gt;&lt;br /&gt;The proper compile command &lt;tt&gt;cl /W4 test.c&lt;/tt&gt; returned this: &lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;test.c(5) : warning C4013: 'ceil' undefined; assuming extern returning int&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;C assumes a bit too much.&lt;br /&gt;&lt;br /&gt;Next time I want to try a code snippet I won't use the .c extension, I'll use .cc, one character makes a big difference:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;test.cc(5) : error C3861: 'ceil': identifier not found&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;D'oh, I forgot to &lt;tt&gt;#include &amp;lt;math.h&amp;gt;&lt;/tt&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-7465970293937161657?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/7465970293937161657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=7465970293937161657' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7465970293937161657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/7465970293937161657'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/10/to-c-or-not-to-c.html' title='To C or Not to C'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-2497689671756239377</id><published>2007-07-13T00:34:00.000+02:00</published><updated>2007-07-13T00:45:47.452+02:00</updated><title type='text'>Pidgin gems</title><content type='html'>Pidgin keyboard shortcuts cannot be edited by using a configuration dialog, but they can be edited "by hand".&lt;br /&gt;&lt;br /&gt;I wanted two actions to remap: closing the conversation dialog with &lt;tt&gt;Escape&lt;/tt&gt; key and show/hide offline buddies with &lt;tt&gt;Control-H&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;This can be achieved by editing the &lt;tt&gt;".purple/accels"&lt;/tt&gt; file, which is located in your home directory on Linux and in &lt;tt&gt;"{drive letter}:\Documents and Settings\{user name}\Application Data"&lt;/tt&gt; on Windows, and inserting the following lines:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;(gtk_accel_path "&amp;lt;PurpleMain&amp;gt;/Buddies/Show Offline Buddies" "&amp;lt;Control&amp;gt;h")&lt;br /&gt;(gtk_accel_path "&amp;lt;main&amp;gt;/Conversation/Close" "Escape")&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-2497689671756239377?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/2497689671756239377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=2497689671756239377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2497689671756239377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/2497689671756239377'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/07/pidgin-gems.html' title='Pidgin gems'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4266709380831877426</id><published>2007-03-29T09:46:00.000+02:00</published><updated>2008-11-13T13:26:05.302+01:00</updated><title type='text'>CMake support for SciTE</title><content type='html'>I have added support for CMake in &lt;a href="http://scintilla.sourceforge.net/SciTEDownload.html"&gt;SciTE&lt;/a&gt; text editor. It should be available in the upcoming 1.73 release.&lt;br /&gt;&lt;br /&gt;Here is a picture of a rather small CMake script file:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/RgtvyT_JrZI/AAAAAAAAAAY/bO14MsqbLTI/s1600-h/cmake.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/RgtvyT_JrZI/AAAAAAAAAAY/bO14MsqbLTI/s320/cmake.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5047250717548064146" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4266709380831877426?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4266709380831877426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4266709380831877426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4266709380831877426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4266709380831877426'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/03/cmake-support-for-scite.html' title='CMake support for SciTE'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/RgtvyT_JrZI/AAAAAAAAAAY/bO14MsqbLTI/s72-c/cmake.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-4908123378014302980</id><published>2007-02-02T00:00:00.000+01:00</published><updated>2008-11-13T13:26:05.469+01:00</updated><title type='text'>Eclipse C++ Programming with MinGW</title><content type='html'>MinGW brings the powerful (free) GNU C++ compiler to the Windows world. The only drawback is that you get only command line tools, no GUI interface. While this is OK only for small programs, it becomes an issue when you need a debugger and / or the project contains more than one source file.&lt;br /&gt;&lt;br /&gt;That's where Eclipse kicks in. With the CDT plug-in you can edit, compile and debug your C++ programs.&lt;br /&gt;&lt;br /&gt;These are the required downloads (compiler, debugger and editor):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MinGW and GDB installers from &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=2435"&gt;here&lt;/a&gt; (I've downloaded MinGW-5.1.3.exe from MinGW-&gt;Current section) and from &lt;a href="http://www.mingw.org/download.shtml"&gt;here&lt;/a&gt; for the latter (I've downloaded  gdb-6.3-2.exe from Snapshot section)&lt;/li&gt;&lt;li&gt;EasyEclipse for C and C++ from &lt;a href="http://www.easyeclipse.org/site/distributions/cplusplus.html"&gt;here&lt;/a&gt; (I've downloaded release 1.2.1.1).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;After creating a C++ project in Eclipse you will notice that there is warning complaining that cygpath is not found, it's a benign warning since we're not using Cygwin to build programs.&lt;br /&gt;&lt;br /&gt;Eclipse expects that g++, make and gdb executables to be in PATH, since I don't like to pollute the global PATH environment variable with MinGW executables I've created a "launcher" for Eclipse that adds MinGW to PATH before running Eclipse.&lt;br /&gt;&lt;br /&gt;Here is the code (eclipse.js):&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;var&amp;nbsp;program&amp;nbsp;=&amp;nbsp;"eclipse.exe";&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;arguments&lt;br /&gt;for&amp;nbsp;(var&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&lt;&amp;nbsp;WScript.Arguments.length;&amp;nbsp;++i)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;program&amp;nbsp;+=&amp;nbsp;"&amp;nbsp;"&amp;nbsp;+&amp;nbsp;WScript.Arguments.Item(i);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var&amp;nbsp;shell&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ActiveXObject("WScript.Shell");&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;Add&amp;nbsp;mingw&amp;nbsp;to&amp;nbsp;path&lt;br /&gt;var&amp;nbsp;env&amp;nbsp;=&amp;nbsp;shell.Environment("PROCESS");&lt;br /&gt;var&amp;nbsp;path&amp;nbsp;=&amp;nbsp;"c:\\mingw\\bin;";&lt;br /&gt;path&amp;nbsp;+=&amp;nbsp;env("PATH");&lt;br /&gt;env("PATH")&amp;nbsp;=&amp;nbsp;path;&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;Execute&amp;nbsp;the&amp;nbsp;program&amp;nbsp;and&amp;nbsp;don't&amp;nbsp;wait&amp;nbsp;for&amp;nbsp;completion&lt;br /&gt;shell.Exec(program);&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Copy the "launcher" to Eclipse directory (c:\Program Files\EasyEclipse for C and C++ 1.2.1.1) and use it from now on to start Eclipse.&lt;br /&gt;&lt;br /&gt;We need one more step to get everything to work, change the C/C++ build command from make to mingw32-make (or rename mingw32-make it to make in c:\mingw\bin, if you want the eclipse project to be crossplatform) like in the picture bellow:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sKFDQyaSuWc/RcJ4anPdc0I/AAAAAAAAAAM/Mfw9H1jBH3s/s1600-h/mingw.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sKFDQyaSuWc/RcJ4anPdc0I/AAAAAAAAAAM/Mfw9H1jBH3s/s320/mingw.png" alt="" id="BLOGGER_PHOTO_ID_5026712532704654146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That was all. Now we have a full C++ IDE. Now we can develop console applications or Win32 C GUI applications. For C++ GUI applications we can use the free (GPL) &lt;a href="http://www.trolltech.com/products/qt/downloads"&gt;Trolltech Qt&lt;/a&gt; library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-4908123378014302980?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/4908123378014302980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=4908123378014302980' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4908123378014302980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/4908123378014302980'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/02/eclipse-c-programming-with-mingw.html' title='Eclipse C++ Programming with MinGW'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sKFDQyaSuWc/RcJ4anPdc0I/AAAAAAAAAAM/Mfw9H1jBH3s/s72-c/mingw.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-3741031963350774129</id><published>2007-01-15T01:07:00.002+01:00</published><updated>2010-12-21T11:44:24.838+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>It's not a bug, it's a feature</title><content type='html'>In my &lt;a href="http://cristianadam.blogspot.com/2007/01/my-first-c-bug.html"&gt;previous post&lt;/a&gt; I've said that I found a C# bug, now I've found out that it's not a bug, that behavior is by design.&lt;br /&gt;&lt;br /&gt;It's written in the &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm"&gt;C# standard&lt;/a&gt;, around page 88 (110 real page):&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[Note: As specified above, the declaration space of a block cannot share names with the declaration spaces of any nested blocks. Thus, in the following example, the F and G methods result in a compile-time error because the name i is declared in the outer block and cannot be redeclared in the inner block. However, the H and I methods are valid since the two i’s are declared in separate non-nested blocks.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class&amp;nbsp;A&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;F()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(true)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;G()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(true)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;H()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(true)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(true)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;I()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&lt;&amp;nbsp;10;&amp;nbsp;i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;H();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&lt;&amp;nbsp;10;&amp;nbsp;i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;H();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}}&lt;/code&gt;&lt;br /&gt;end note]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I hate compilers that impose stupid constrains.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-3741031963350774129?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/3741031963350774129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=3741031963350774129' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3741031963350774129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/3741031963350774129'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/01/its-not-bug-its-feature.html' title='It&apos;s not a bug, it&apos;s a feature'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-1956164782772630310</id><published>2007-01-10T08:02:00.003+01:00</published><updated>2010-12-21T11:43:48.486+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>My first C# bug</title><content type='html'>Consider this piece of code:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;code&gt;class&amp;nbsp;Foo&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Bar()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1; // CS0136&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Any C (C++, Java) coder will say that there is nothing wrong with that code.&lt;br /&gt;I thought that was the same in C# language, I was wrong.&lt;br /&gt;Here is the output from Visual Studio .NET 2003:&lt;br /&gt;&lt;blockquote&gt;test.cs(9,13): error CS0136: A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else&lt;br /&gt;&lt;br /&gt;test.cs(9,13): error CS0103: The name 'i' does not exist in the class or namespace 'Foo'&lt;/blockquote&gt;&lt;br /&gt;Here is the output from Visual Studio 2005:&lt;br /&gt;&lt;blockquote&gt;test.cs(9,13): error CS0136: A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;While VS2005 got better than VS2003, but it's still in error.&lt;br /&gt;&lt;br /&gt;Here is what MSDN has to say about error CS0136&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Compiler Error CS0136A local variable named 'var' cannot be declared in this scope because it would give a different meaning to 'var', which is already used in a 'parent or current' scope to denote something else&lt;br /&gt;A variable declaration hides another declaration that would otherwise be in scope. Rename the variable that is declared on the line that generated CS0136.&lt;br /&gt;The following sample generates CS0136:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;code&gt;&lt;br /&gt;//&amp;nbsp;CS0136.cs&lt;br /&gt;namespace&amp;nbsp;x&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;class&amp;nbsp;a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;i&amp;nbsp;=&amp;nbsp;'a';&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;CS0136,&amp;nbsp;hides&amp;nbsp;int&amp;nbsp;i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Well, in our case i variable was declared after the if block and not before it. It doesn't make any sense to say that the second i is in the if's i scope.&lt;br /&gt;&lt;br /&gt;I know it's a bad practice to reuse the same name for more variables in a function, but I don't expect that to be an error, just a warning at the highest warning level.&lt;br /&gt;&lt;br /&gt;What's sad is that the alternative C# implementation, naming Mono, has the same behaviour. Here is the output:&lt;br /&gt;&lt;blockquote&gt;test.cs(9,7): error CS0136: A local variable named `i' cannot be declared in this scope because it would give a different meaning to `i', which is already used in a `child' scope to denote something else&lt;br /&gt;test.cs(7,8): (Location of the symbol related to previous error)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;They've copied Microsoft's implementation bug by bug (for compatibility :). The sad part is that this bug was reported to Mono in 2003 but they've closed it saying it's not a bug. Here is the link to that &lt;a href="http://bugzilla.ximian.com/show_bug.cgi?id=49904"&gt;bug&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By the way I've posted a comment there, just to complain about it :)&lt;br /&gt;&lt;br /&gt;It seems that this is not a bug, but a feature, read more about it &lt;a href="http://cristianadam.blogspot.com/2007/01/its-not-bug-its-feature.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-1956164782772630310?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/1956164782772630310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=1956164782772630310' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1956164782772630310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/1956164782772630310'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2007/01/my-first-c-bug.html' title='My first C# bug'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-116674996623262287</id><published>2006-12-22T01:42:00.000+01:00</published><updated>2007-02-02T00:47:02.654+01:00</updated><title type='text'>NTFS3g on OpenSuse 10.2</title><content type='html'>I have installed openSuSE 10.2 on my brand new computer (bought more than a month ago).&lt;br /&gt;&lt;br /&gt;I'm happy with openSuSE 10.2, YaST has been improved, it gives more feedback to the user. Now there is an native KDE updater, so I don't have to install a GNOME Mono application, the source repository knows about YUM repositories, and so on and so forth.&lt;br /&gt;&lt;br /&gt;After installing it I've noticed that my Windows XP wasn't booting anymore. The fact was that I had two NTFS partitions, the first had the boot loader and boot.ini and the second had Windows files. The second partition number had shifted after creating two linux partitions, so Windows boot loader got confused and refused to work.&lt;br /&gt;&lt;br /&gt;Well I said, it's easy, all I have to do is to modify boot.ini and change multi(0)disk(0)rdisk(0)partition(2) to multi(0)disk(0)rdisk(0)partition(4). There was one problem, that the file resided on a NTFS file system. Linux has readonly access by default.&lt;br /&gt;&lt;br /&gt;Eeeek, but then I remembered that there is something new out there ntfs-3g that can mount read/write a NTFS file system.&lt;br /&gt;&lt;br /&gt;I've searched the net and found that I had to install fuse, fuse-ntfsprogs and ntfs-3g packages. The first two came with openSuSE 10.2, the latter from GURU 3rd party repository. GURU had a ntfs-3g version from 20061115, which was too old for fuse 2.6.0 that came with openSuSE 10.2. Eeeek.&lt;br /&gt;&lt;br /&gt;The solution was to get the latest and greatest sources and the RPM spec files from fuse and ntfs-3g to create my own rpm packages.&lt;br /&gt;&lt;br /&gt;I've got fuse 2.6.1 and ntfs-3g 20061218, after hacking the RPM spec files I've managed to create two nice rpm packages. The problem was that the command ntfs-3g /dev/hda1 /windows/C was still failing. Eeeek again.&lt;br /&gt;&lt;br /&gt;The problem was with the fuse kernel module, it was too old. openSuSE 10.2 fuse spec file didn't create a kernel module because kernel included the fuse module. I've hacked fuse RPM spec file to --enable-kernel-module, all nice until the very last step when the packages were to be created. Because fuse.ko module was still in RPM's database, RPM could not create a new module that contained fuse.ko because of some incompatibilities later on. Tired of eeeking.&lt;br /&gt;&lt;br /&gt;Solution was to copy the new fuse.ko module and store it somewhere, then put back --disable-kernel-module in fuse RPM spec and run a rpmbuild -ba fuse.spec. Then I've copied fuse.ko over the one from /lib/modules/linux-2.6.18.../kernel/fs/fuse/fuse.ko.&lt;br /&gt;After installing fuse and fuse-devel packages I've build ntfs-3g package, installed it and the command: ntfs-3g /dev/hda1 /windows/C was working!&lt;br /&gt;&lt;br /&gt;In order to always mount read/write I've modified /etc/fstab and instead of ntfs I've put ntfs-3g and removed the ro (read only) flag from the next option on the same line.&lt;br /&gt;&lt;br /&gt;After modifying boot.ini and a reboot I got my Windows XP back!&lt;br /&gt;&lt;br /&gt;In conclusion, I like openSuSE they didn't made all the things easy, most of them are easy but some issues are still to be fixed, like the one above. One can say that this is the price to pay for bleeding edge software, but every now and then it's fun to hack something, to remember the good old days of hacking Slackware to do the things you wanted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-116674996623262287?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/116674996623262287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=116674996623262287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116674996623262287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116674996623262287'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/12/linux.html' title='NTFS3g on OpenSuse 10.2'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-116514849166058268</id><published>2006-12-03T13:14:00.000+01:00</published><updated>2006-12-03T13:21:31.673+01:00</updated><title type='text'>The DaVinci Code</title><content type='html'>I've just finished reading The DaVinci Code by Dan Brown. I've done this after watching the movie twice, at the cinema and the director's cut on my computer.&lt;br /&gt;&lt;br /&gt;I've enjoyed the book more, in the movie they've made some hacks to keep the plot on the feet.&lt;br /&gt;&lt;br /&gt;If you haven't read the book please do so ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-116514849166058268?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/116514849166058268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=116514849166058268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116514849166058268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116514849166058268'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/12/davinci-code.html' title='The DaVinci Code'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-116271519236650880</id><published>2006-11-05T09:23:00.000+01:00</published><updated>2006-11-06T10:34:26.776+01:00</updated><title type='text'>Winter</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/757/1943/1600/IMG_1022.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/757/1943/320/IMG_1022.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Winter came too soon this year, I mean it's just 5 November! and the picture was taken in the morning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-116271519236650880?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/116271519236650880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=116271519236650880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116271519236650880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/116271519236650880'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/11/winter.html' title='Winter'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-115453768903383896</id><published>2006-08-02T18:49:00.000+02:00</published><updated>2007-02-02T00:51:03.193+01:00</updated><title type='text'>DVB-T Modulator</title><content type='html'>Recently I've got to play with Fabrice Bellard's low cost analog and digital tv &lt;a href="http://fabrice.bellard.free.fr/dvbt/"&gt;modulator&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;It took me a while to get it working, it didn't work with nvidia cards so I've tested a ATI Radeon 9200, like Fabrice mentiones on his webpage. What Fabrice doesn't say is that you need to use "radeon" driver, not vesa, not ati.&lt;br /&gt;&lt;br /&gt;I've used a Pinnacle 320e receiver, which can scan the two DVB-T channels but no preview.&lt;br /&gt;&lt;br /&gt;That was sad, I was expecting it to work, but now that it doesn't work, how to debug it? you can't, Fabrice didn't publish the source code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-115453768903383896?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/115453768903383896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=115453768903383896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/115453768903383896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/115453768903383896'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/08/dvb-t-modulator.html' title='DVB-T Modulator'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114633028588871325</id><published>2006-04-29T19:00:00.000+02:00</published><updated>2006-04-29T19:04:45.906+02:00</updated><title type='text'>Me, Myself and someone else...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/757/1943/1600/Picture%20106.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/757/1943/320/Picture%20106.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;A nice picture of me (Cristi) and my girl (Simona) don't you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114633028588871325?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114633028588871325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114633028588871325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114633028588871325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114633028588871325'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/04/me-myself-and-someone-else.html' title='Me, Myself and someone else...'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114415640659531311</id><published>2006-04-04T15:09:00.000+02:00</published><updated>2006-04-04T15:13:26.623+02:00</updated><title type='text'>MSDN</title><content type='html'>As a C++ programmer when you want to use MSDN just for C++ and STL the filter "Visual C++" is not helping. You get all sort of matches but not the ones you need.&lt;br /&gt;&lt;br /&gt;You need to filter just the right stuff. You need to go to Help-&gt;Edit Filters and create a new filter with these contents:&lt;br /&gt;&lt;tt&gt;("DevLangVers" ="kbLangCPP") or ("TechnologyVers" ="kbSTL")&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Now if you want to search for &lt;tt&gt;map&lt;/tt&gt;, you'll get the right match.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114415640659531311?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114415640659531311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114415640659531311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114415640659531311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114415640659531311'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/04/msdn.html' title='MSDN'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114367006662417980</id><published>2006-03-29T23:49:00.000+02:00</published><updated>2006-03-30T00:07:46.636+02:00</updated><title type='text'>Windows XPE</title><content type='html'>I have just finished hacking my first Windows Live setup - I have accelerated video drivers, audio, I can see movies using ffdshow, Mozilla Firefox, Total Commander, Norton Ghost, DirectX.&lt;br /&gt;&lt;br /&gt;I have used &lt;a href="http://www.nu2.nu/pebuilder/"&gt;BartPE&lt;/a&gt; and &lt;a href="http://oss.netfarm.it/winpe/"&gt;Sherpya WinPe Stuff&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The hard part was getting NVidia drivers to work and then the sound drivers. Now I can say that I have a better undestanding of manual loading of drivers on Windows XP :)&lt;br /&gt;&lt;br /&gt;Pretty nice stuff, but you have to work to get it working...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114367006662417980?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114367006662417980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114367006662417980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114367006662417980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114367006662417980'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/03/windows-xpe.html' title='Windows XPE'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114260091509717838</id><published>2006-03-17T14:03:00.000+01:00</published><updated>2006-03-17T14:08:35.110+01:00</updated><title type='text'>Viewing CHM files from a Network Drive</title><content type='html'>This issue was bugging me for a long time, now I found out how to fix it.&lt;br /&gt;&lt;br /&gt;All you need is this key: &lt;tt&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions&lt;/tt&gt;, with a DWORD entry &lt;tt&gt;MaxAllowedZone&lt;/tt&gt; set to 1.&lt;br /&gt;&lt;br /&gt;This was a side effect for a &lt;a href="http://support.microsoft.com/kb/896358"&gt;security patch&lt;/a&gt; from Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114260091509717838?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114260091509717838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114260091509717838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114260091509717838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114260091509717838'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/03/viewing-chm-files-from-network-drive.html' title='Viewing CHM files from a Network Drive'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114253619240340528</id><published>2006-03-16T19:18:00.000+01:00</published><updated>2006-03-16T20:09:52.416+01:00</updated><title type='text'>Root Power</title><content type='html'>Writing rootkits is fun. I needed to a device driver for Windows XP that could hide a process, disable keyboard and mouse and hide directories, these are some definitions for a rootkit.&lt;br /&gt;&lt;br /&gt;There are some inconveniences, like resetting the operating system because you did something wrong... things don't work like in userland.&lt;br /&gt;&lt;br /&gt;Tools like Compuware VToolsD (for Windows 9x) and Compuware Driver Studio (for Windows NT+) make your life way easier. For the first you don't have to write code in assembler, you can write code in C and C++ and for the latter you can write code in C++.&lt;br /&gt;&lt;br /&gt;I guess my next root kit, after the one for Windows 9x and the one for Windows XP, would be for Linux, but on Linux having access to the source code of the operating system is a big bonus.&lt;br /&gt;&lt;br /&gt;In the end it's not that hard, with proper tools and with proper knowledge you can do anything :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114253619240340528?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114253619240340528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114253619240340528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114253619240340528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114253619240340528'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/03/root-power.html' title='Root Power'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114196173984724955</id><published>2006-03-10T04:31:00.000+01:00</published><updated>2006-03-10T04:35:39.846+01:00</updated><title type='text'>Tarom</title><content type='html'>And now for m&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/757/1943/1600/IMG_5966.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/757/1943/320/IMG_5966.jpg" alt="" border="0" /&gt;&lt;/a&gt;y fist blog photo...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114196173984724955?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114196173984724955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114196173984724955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114196173984724955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114196173984724955'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/03/tarom.html' title='Tarom'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-114196110810096066</id><published>2006-03-10T04:13:00.000+01:00</published><updated>2006-03-10T04:25:08.113+01:00</updated><title type='text'>Brainbench</title><content type='html'>I've taken some &lt;a href="http://www.brainbench.com/"&gt;Brainbench&lt;/a&gt; tests, now I have more than "Typing Speed &amp; Accuracy" results :) &lt;a href="http://www.brainbench.com/xml/bb/transcript/public/viewtranscript.xml?pid=5295106"&gt;Here&lt;/a&gt; is my public transcript.&lt;br /&gt;&lt;br /&gt;And now for some pictures:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/757/1943/1600/cppprogrammer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/757/1943/320/cppprogrammer.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/757/1943/1600/linuxprogrammer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/757/1943/320/linuxprogrammer.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-114196110810096066?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/114196110810096066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=114196110810096066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114196110810096066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/114196110810096066'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/03/brainbench.html' title='Brainbench'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-113719793993611697</id><published>2006-01-14T01:01:00.000+01:00</published><updated>2006-01-14T01:18:59.946+01:00</updated><title type='text'>xterm fonts and colours</title><content type='html'>The default settings for &lt;span style="font-family:courier new;"&gt;xterm&lt;/span&gt; in OpenSUSE 10 are crappy, the font is small, white background, black foreground... yucky.&lt;br /&gt;&lt;br /&gt;Ok, it's not that obvious to configure X applications, they don't have menus, dialog boxes like the KDE applications. You have to edit &lt;span style="font-family:courier new;"&gt;~/.Xresources&lt;/span&gt; and add some lines and then run &lt;span style="font-family:courier new;"&gt;xrdb ~/.Xresources &lt;/span&gt;(you can use -merge to merge the settings). You can find out what lines to add to &lt;span style="font-family:courier new;"&gt;~/.Xresources&lt;/span&gt; by having a look at &lt;span style="font-family:courier new;"&gt;/user/X11R6/lib/X11/app-defaults/XTerm&lt;/span&gt; and by consulting the manual page (&lt;span style="font-family:courier new;"&gt;man xterm&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Here is what my &lt;span style="font-family:courier new;"&gt;~/.Xresources&lt;/span&gt; file contains:&lt;br /&gt;&lt;blockquote&gt;xterm*background: black&lt;br /&gt;xterm*foreground: white&lt;br /&gt;xterm*faceName: Andale Mono&lt;br /&gt;xterm*faceSize: 9&lt;br /&gt;xterm*geometry: 100x30&lt;/blockquote&gt;I usually use &lt;span style="font-family:courier new;"&gt;konsole&lt;/span&gt;, but some applications open &lt;span style="font-family:courier new;"&gt;xterm&lt;/span&gt; for shell access. &lt;a href="http://www.slickedit.com"&gt;SlickEdit&lt;/a&gt; is one of those applications ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-113719793993611697?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/113719793993611697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=113719793993611697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113719793993611697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113719793993611697'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2006/01/xterm-fonts-and-colours.html' title='xterm fonts and colours'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-113395843288820373</id><published>2005-12-07T13:21:00.000+01:00</published><updated>2005-12-07T13:59:24.033+01:00</updated><title type='text'>Portable Thunderbird</title><content type='html'>Now I can have all my emails, contacts, extensions, settings into one folder, all thanks to &lt;a href="http://johnhaller.com/jh/mozilla/portable_thunderbird/"&gt;Portable Thunderbird&lt;/a&gt;. Easy to backup, just archive one folder and that's it. Did your harddrive crash, your laptop stolen? No problem, just unpack the archive and you're back in business.&lt;br /&gt;&lt;br /&gt;You can find &lt;a href="http://johnhaller.com/jh/mozilla/portable%5Ffirefox/"&gt;Portable Firefox&lt;/a&gt; on the same site, and the story is the same: all your bookmarks, extensions, settings in one folder on your 1GB USB pen drive...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-113395843288820373?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/113395843288820373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=113395843288820373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113395843288820373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113395843288820373'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2005/12/portable-thunderbird.html' title='Portable Thunderbird'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-113385537933763396</id><published>2005-12-06T08:39:00.000+01:00</published><updated>2005-12-06T08:51:05.916+01:00</updated><title type='text'>8051 Programming is fun</title><content type='html'>I've completed the practical part of the microcontroller course at the University with a house alarm project. The objectives were to sense if the door or window was broken and to program how to arm the alarm. Feedback was given on a led display, input/output was done through the serial port.&lt;br /&gt;&lt;br /&gt;Man it was exciting!  The programming was done in assember, that was a pain in the... but the "firmware" was only 381 bytes long, I haven't tested a C program though.&lt;br /&gt;&lt;br /&gt;All that matters is that I had allot of fun programming the 8051 microcontroller! School is fun. Ha!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-113385537933763396?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/113385537933763396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=113385537933763396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113385537933763396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113385537933763396'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2005/12/8051-programming-is-fun.html' title='8051 Programming is fun'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19599775.post-113380641590692645</id><published>2005-12-05T18:50:00.000+01:00</published><updated>2005-12-05T19:51:15.253+01:00</updated><title type='text'>Portable Gaim</title><content type='html'>While reading the Gaim Windows &lt;a href="http://gaim.sourceforge.net/win32/index.php"&gt;section&lt;/a&gt; I've found out about &lt;span style="font-style: italic;"&gt;Portable Gaim&lt;/span&gt; (on the bottom of the page), it reminded me about the days when you had to reinstall Windows 95 every month  and the less applications  you had to reinstall the better.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"It is relatively easy to set up Gaim to run from a USB Drive. Most of Gaim is very good about not assuming that it is installed; a slightly customized launcher makes it all come together nicely."&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Gaim has these features that make it indispensable:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I can use the programmer's layout of the &lt;a href="http://www.secarica.ro/"&gt;official romanian keyboard layout&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it can use a spellchecker (this doesn't work at this moment in the portable version)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;it can handle multiple instant messanging protocols&lt;/li&gt;&lt;li&gt;it works on multiple operating systems&lt;/li&gt;&lt;li&gt;you can carry it on your USB pen drive&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I'm hoping for Gaim 2.0 as a Christmas gift.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19599775-113380641590692645?l=cristianadam.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cristianadam.blogspot.com/feeds/113380641590692645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19599775&amp;postID=113380641590692645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113380641590692645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19599775/posts/default/113380641590692645'/><link rel='alternate' type='text/html' href='http://cristianadam.blogspot.com/2005/12/portable-gaim.html' title='Portable Gaim'/><author><name>Cristian Adam</name><uri>http://www.blogger.com/profile/16735332457747999220</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_sKFDQyaSuWc/SKS8MswDpqI/AAAAAAAAACY/2-L8eCvDalE/S220/blogger.png'/></author><thr:total>0</thr:total></entry></feed>
