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

<channel>
	<title>AlexJ &#187; programming</title>
	<atom:link href="http://alexj.info/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexj.info</link>
	<description>Computer Science Journal</description>
	<lastBuildDate>Thu, 26 Jan 2012 09:55:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>LXR</title>
		<link>http://alexj.info/2012/01/26/lxr/</link>
		<comments>http://alexj.info/2012/01/26/lxr/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 09:52:52 +0000</pubDate>
		<dc:creator>AlexJ</dc:creator>
				<category><![CDATA[Computer Science Dept.]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LXR]]></category>
		<category><![CDATA[source browsing]]></category>

		<guid isPermaLink="false">http://alexj.info/?p=1275</guid>
		<description><![CDATA[This week I want to pay tribute to an open source project called the LXR Cross Referencer. LXR is  a web tool that lets you browser the source code of a software project, navigating link by link based on included source files, functions or variables. LXR can be downloaded from the project&#8217;s website [1] and [...]]]></description>
			<content:encoded><![CDATA[<p>This week I want to pay tribute to an open source project called the <strong>LXR Cross Referencer</strong>. LXR is  a web tool that lets you browser the source code of a software project, navigating link by link based on included source files, functions or variables.</p>
<p>LXR can be downloaded from the project&#8217;s website <a href="http://lxr.sf.net/" target="_blank">[1]</a> and applied to any software project.</p>
<p>The most popular instance of LXR is found on the project&#8217;s initial page <a href="http://lxr.linux.no/">[2]</a> as an instance for the Linux Kernel. This site has a complete history of the Linux code since version 0.0.1 to latest stable version. Opening two windows of two different versions of a file, you can compare the code and see what&#8217;s been added or changed between the versions.</p>
<p>It&#8217;s very useful for finding where a function or a constant has been used, or to see in what header a function has been declared, defined and then used.</p>
<p>Note that all of the above can de done via command line tools like ctags or cscope alongside vim or emacs, with grep -r, diff and git. But the friendly part of lxr.linux.no is that everything is already on the site so you don&#8217;t need to download anything locally and you can use everything there as long as you have an Internet connection.</p>
<p><img class="aligncenter" title="lxr" src="http://lxr.linux.no/.static/gfx/lxray-large.png" alt="" width="300" height="250" /></p>
<p>[1] <a href="http://lxr.sf.net/" target="_blank">http://lxr.sf.net/</a></p>
<p>[2] <a href="http://lxr.linux.no/" target="_blank">http://lxr.linux.no/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://alexj.info/2012/01/26/lxr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Romanian/Bucharest Linux User Groups. Programmers day.</title>
		<link>http://alexj.info/2009/09/13/romanianbucharest-linux-user-groups-programmers-day/</link>
		<comments>http://alexj.info/2009/09/13/romanianbucharest-linux-user-groups-programmers-day/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 19:03:04 +0000</pubDate>
		<dc:creator>AlexJ</dc:creator>
				<category><![CDATA[Computer Science Dept.]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[Link-uri]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[BLUG]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmer's Day]]></category>

		<guid isPermaLink="false">http://alexj.info/?p=1009</guid>
		<description><![CDATA[După ce am tot găsit multe site-uri ale LUG-urilor din tot felul de orașe din lume, am fost curios dacă există un Linux User Group pe plan local. Așa că am dat un mic search pe Google și am găsit că există Bucharest LUG [1]. Am intrat pe site-ul lor, am văzut că au și [...]]]></description>
			<content:encoded><![CDATA[<p>După ce am tot găsit multe site-uri ale LUG-urilor din tot felul de orașe din lume, am fost curios dacă există un Linux User Group pe plan local. Așa că am dat un mic search pe Google și am găsit că există <strong>Bucharest LUG</strong> <a title="http://blug.ro" href="http://blug.ro" target="_blank">[1]</a>. Am intrat pe site-ul lor, am văzut că au și un canal de IRC ( #blug.ro pe FreeNode <a href="irc://irc.freenode.net/#blug.ro" target="_blank">[2]</a>) și am început să vorbesc cu oamenii de acolo.  În acest weekend am fost și la una din întâlnirile lor care a fost destul de interesantă (am aflat mai multe despre o distribuție numită ArchLinux și despre un soft de telefonie IP făcut în România, Yate).</p>
<p>Am mai căutat puțin și am găsit și o listă <a href="http://wiki.lug.ro/mediawiki/index.php/Comunit%C4%83%C5%A3i_Linux_din_Rom%C3%A2nia" target="_blank">[3]</a> de LUG-uri și Comunități Open Source din România (ROSEdu is one of them <img src='http://alexj.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>În alte știri, azi s-a sărbătorit Ziua Programatorului <a href="http://www.programmerday.info/" target="_blank">[4]</a>. Ziua a fost declarată oficial sărbătoare în Rusia <a href="https://news.slashdot.org/story/09/09/12/1548245/Russias-New-Official-Holiday-mdash-Program|" target="_blank">[5]</a>.</p>
<p>[1] <a href="http://blug.ro">http://blug.ro</a></p>
<p>[2] <a href="irc://irc.freenode.net/#blug.ro">irc://irc.freenode.net/#blug.ro</a></p>
<p>[3] <a href="http://wiki.lug.ro/mediawiki/index.php/Comunit%C4%83%C5%A3i_Linux_din_Rom%C3%A2nia">http://wiki.lug.ro/mediawiki/index.php/Comunit%C4%83%C5%A3i_Linux_din_Rom%C3%A2nia</a></p>
<p>[4] <a href="http://www.programmerday.info/">http://www.programmerday.info/</a></p>
<p>[5] <a href="https://news.slashdot.org/story/09/09/12/1548245/Russias-New-Official-Holiday-mdash-Program">https://news.slashdot.org/story/09/09/12/1548245/Russias-New-Official-Holiday-mdash-Program</a></p>
]]></content:encoded>
			<wfw:commentRss>http://alexj.info/2009/09/13/romanianbucharest-linux-user-groups-programmers-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diacritice(UTF-8) &amp; JDBC/mySQL/HTML</title>
		<link>http://alexj.info/2009/06/16/diacriticeutf-8-jdbcmysqlhtml/</link>
		<comments>http://alexj.info/2009/06/16/diacriticeutf-8-jdbcmysqlhtml/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 11:39:22 +0000</pubDate>
		<dc:creator>AlexJ</dc:creator>
				<category><![CDATA[Computer Science Dept.]]></category>
		<category><![CDATA[HOWTOs]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[diacritice]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://alexj.info/?p=961</guid>
		<description><![CDATA[Ce am dorit să fac: un program în Java ce capturează conversații de pe IRC și le stochează într-o bază de date mySQL; din acea bază de date se ia prin PHP și se afișează pe o pagină HTML. Deși pare destul de mult de făcut, necesită puțin cod, dar multă atenție la interconectarea elementlor: [...]]]></description>
			<content:encoded><![CDATA[<p>Ce am dorit să fac: un program în Java ce capturează conversații de pe IRC și le stochează într-o bază de date mySQL; din acea bază de date se ia prin PHP și se afișează pe o pagină HTML. Deși pare destul de mult de făcut, necesită puțin cod, dar multă atenție la interconectarea elementlor: programul Java, conectorul dintre Java-mySQL (JDBC), baza de date mySQL și script-ul PHP.</p>
<p>Am creat &#8216;topologoia&#8217; necesară și programul mergea ok. Dar am descoperit rapid o problemă: pagina web (HTML+PHP) nu afișa diacritice. Și am început să caut prin fiecare element să văd unde era problema ( oricare din componente putea să ducă la problema aceasta).</p>
<p>Am început prin modificarea paginii PHP/HTML și forțarea ca browserul să citeacă caracterele în format <strong>UTF-8</strong>. Codul nu depinde de PHP (am presupus că el transmite corect din baza de date în HTML) ci de headerul HTML.</p>
<blockquote><p>&lt;head&gt;  &lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243; /&gt;   [...]  &lt;/head&gt;</p></blockquote>
<p>Al doilea test a fost făcut pe mySQL. Implicit, baza de date codează folosind Latin.  Și tabela unde se făcea scrierea trebuia trecută pe UTF.</p>
<blockquote><p>CREATE TABLE `chats` ( [..] ) DEFAULT CHARSET=utf8;</p></blockquote>
<p>Cum programul Java imprima corect la stdout diacriticile, problema trebuia să fie la JDBC. Suportul pentru UTF a fost adăugat în JDBC, dar trebuia specificat la conectarea cu baza de date. Acest lucru se face pasând un parametru la  URL-ul bazei de date.</p>
<blockquote><p>jdbc:mysql://my_server/my_data_base?unicode=true&amp;characterEncoding=utf-8</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://alexj.info/2009/06/16/diacriticeutf-8-jdbcmysqlhtml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Smart Variable Swapping</title>
		<link>http://alexj.info/2009/05/31/smart-variable-swapping/</link>
		<comments>http://alexj.info/2009/05/31/smart-variable-swapping/#comments</comments>
		<pubDate>Sun, 31 May 2009 13:24:40 +0000</pubDate>
		<dc:creator>AlexJ</dc:creator>
				<category><![CDATA[Computer Science Dept.]]></category>
		<category><![CDATA[HOWTOs]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://alexj.info/?p=934</guid>
		<description><![CDATA[Mi-am adus aminte de un mic truc pe care îl foloseam în liceu şi dintr-un motiv necunoscut nu l-am mai folosit de mult, până la un laborator de Sisteme de Operare: schimbarea mai eficientă a unei variabile. Metoda clasică este folosirea unei variabile auxilitare în care se păstrează una din variabile. A două metodă este [...]]]></description>
			<content:encoded><![CDATA[<p>Mi-am adus aminte de un mic truc pe care îl foloseam în liceu şi dintr-un motiv necunoscut nu l-am mai folosit de mult, până la un laborator de Sisteme de Operare: schimbarea mai eficientă a unei variabile.</p>
<p>Metoda clasică este folosirea unei variabile auxilitare în care se păstrează una din variabile. A două metodă este folosirea <strong>XOR</strong> (sau exclusiv).</p>
<blockquote><p>var1 = var1 XOR var2<br />
var2  =var1 XOR var2<br />
var1 = var1 XOR var2</p></blockquote>
<p>Partea cea mai bună este că nu este dependentă de tipul de date şi teoretic s-ar putea schimba orice. Astfel, se poate crea uşor şi un macro pentru uz general. Folosind ultimul best practice învăţat despre macro-uri ( encapsularea codului funcţiei într-un do while(0) ), codul în C ar arăta aşa:</p>
<blockquote><p>#define swap(a, b)       \<br />
do                                   \<br />
{                                      \<br />
(a) = (a) ^ (b);               \<br />
(b) = (b) ^ (a);              \<br />
(a) = (a) ^ (b);              \<br />
}while(0)                     \</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://alexj.info/2009/05/31/smart-variable-swapping/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

