<?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>Compdigitec Labs</title>
	<atom:link href="http://www.compdigitec.com/labs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.compdigitec.com/labs</link>
	<description>The place for interesting things</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:44:40 +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>Solving &#8220;Only Content controls are allowed directly in a content page that contains Content controls&#8221;</title>
		<link>http://www.compdigitec.com/labs/2012/02/03/solving-only-content-controls-are-allowed-directly-in-a-content-page-that-contains-content-controls/</link>
		<comments>http://www.compdigitec.com/labs/2012/02/03/solving-only-content-controls-are-allowed-directly-in-a-content-page-that-contains-content-controls/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 03:16:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[content controls]]></category>
		<category><![CDATA[master page]]></category>
		<category><![CDATA[user control.asp.net user control]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=265</guid>
		<description><![CDATA[While debugging and creating a new ASP.NET User Control, I stumbled across the following error, &#8220;Only Content controls are allowed directly in a content page that contains Content controls&#8221; that I did not encounter before. The culprit: an invalid assembly in the custom ASP.NET User Control registration section of &#8220;web.config&#8220;: The first thing I tried, [...]]]></description>
			<content:encoded><![CDATA[<p>While debugging and creating a new ASP.NET User Control, I stumbled across the following error, &#8220;<em>Only Content controls are allowed directly in a content page that contains Content controls</em>&#8221; that I did not encounter before. The culprit: an invalid assembly in the custom ASP.NET User Control registration section of &#8220;<em>web.config</em>&#8220;:</p>
<p>The first thing I tried, is, of course, to <a href="http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/de64e551-1441-4e1d-9956-277b352cd9b1">follow</a> <a href="http://www.codeproject.com/Questions/184240/Error-Only-content-controls-are-allowed-directly-i">the</a> <a href="http://www.fewlines4biju.com/2011/11/only-content-controls-are-allowed.html">advice</a> <a href="http://edinkapic.blogspot.com/2008/10/only-content-controls-are-allowed.html">on</a> <a href="http://stackoverflow.com/questions/679246/do-script-tags-and-link-tags-go-inside-aspcontent-or-outside">the</a> <a href="http://forums.asp.net/t/1579320.aspx/1">can</a> and remove any tag or text other than &#8220;&lt;asp:Content&gt;&#8221; tags from the page. But as, you can see, there are no other characters or tags on the page, and I had tried many times to regenerate the page or force VS to &#8220;re-parse&#8221; the page without success.</p>
<p><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror1.png"><img class="alignnone  wp-image-266" title="Only Content controls are allowed directly in a content page that contains Content controls" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror1.png" alt="" width="653" height="388" /></a></p>
<p>After some more debugging for a while, I found this error, which was related to an invalid assembly in the registering custom ASP.NET User Controls section of the web.config document:</p>
<div id="attachment_267" class="wp-caption alignnone" style="width: 830px"><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror2.png"><img class=" wp-image-267 " title="Found another error" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror2.png" alt="Found another error" width="820" height="388" /></a><p class="wp-caption-text">Found another error</p></div>
<p>And the answer? It turns out it was easy enough to fix after all, just fix the offending assembly reference!</p>
<div id="attachment_268" class="wp-caption alignnone" style="width: 566px"><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror3.png"><img class=" wp-image-268 " title="The culprit of the error, Only Content controls are allowed directly in a content page that contains Content controls" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror3.png" alt="The culprit of the error, Only Content controls are allowed directly in a content page that contains Content controls" width="556" height="140" /></a><p class="wp-caption-text">The culprit of the error, Only Content controls are allowed directly in a content page that contains Content controls</p></div>
<p>And <em>voila</em>, fixed:</p>
<div id="attachment_269" class="wp-caption alignnone" style="width: 291px"><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror4.png"><img class="size-full wp-image-269" title="Fixed!" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/contenterror4.png" alt="Fixed!" width="281" height="399" /></a><p class="wp-caption-text">Fixed!</p></div>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/02/03/solving-only-content-controls-are-allowed-directly-in-a-content-page-that-contains-content-controls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android codec benchmarks</title>
		<link>http://www.compdigitec.com/labs/2012/02/01/android-codec-benchmarks/</link>
		<comments>http://www.compdigitec.com/labs/2012/02/01/android-codec-benchmarks/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 21:07:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[benchmarking]]></category>
		<category><![CDATA[codec]]></category>
		<category><![CDATA[libav]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[vlc]]></category>
		<category><![CDATA[vorbis]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=261</guid>
		<description><![CDATA[VLC for Android pre-alpha benchmarks (Feb 1, 2012) for various audio codecs. Specs Motorola XT300 - Android 2.1, 500 Mhz, 256 MB, rooted with busybox, Qualcomm MSM7225 (ARM1136EJ-S core, ARMv6TEJ architecture, no NEON extensions) /proc/cpuinfo output Method Ogg files Comparing three popular codecs for decoding OGG vorbis files, libavcodec from libav, vorbis and tremor. Results [...]]]></description>
			<content:encoded><![CDATA[<p>VLC for Android pre-alpha benchmarks (Feb 1, 2012) for various audio codecs.<br />
<strong>Specs</strong><br />
Motorola XT300 - Android 2.1, 500 Mhz, 256 MB, rooted with busybox, Qualcomm MSM7225 (ARM1136EJ-S core, ARMv6TEJ architecture, no NEON extensions)</p>
<p><strong>/proc/cpuinfo output</strong></p>
<pre class="brush: plain; title: ; notranslate">
Processor       : ARMv6-compatible processor rev 2 (v6l)
BogoMIPS        : 525.92
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant     : 0x1
CPU part        : 0xb36
CPU revision    : 2

Hardware	: QCT MSM7x25 SURF
Revision	: 0000
Serial		: 0000000000000000
</pre>
<p><strong>Method</strong></p>
<pre class="brush: bash; title: ; notranslate">
adb shell &quot;/system/xbin/busybox ps aux | grep vlc&quot;
adb shell &quot;/system/xbin/busybox top -b | grep &lt;pid of VLC as above&gt;&quot;
</pre>
<h2>Ogg files</h2>
<p>Comparing three popular codecs for decoding OGG vorbis files, libavcodec from libav, vorbis and tremor.</p>
<p><strong>Results</strong></p>
<pre class="brush: plain; title: ; notranslate">
  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND
avcodec:
 5266   956 10072    S     163m 88.4   0 25.0 org.videolan.vlc.android
vorbis:
 5331   956 10072    R     166m 89.8   0 41.0 org.videolan.vlc.android
tremor:
 5174   956 10072    S     156m 84.5   0 32.4 org.videolan.vlc.android
</pre>
<p>So, it seems avcodec is the clear winner, followed by tremor and lagging in last place libvorbis.</p>
<h2>AC3 files</h2>
<p><strong>Test sample</strong><br />
First 30 seconds of <a href="http://people.videolan.org/~jb/ac3_the_other_side_44khz.wav">http://people.videolan.org/~jb/ac3_the_other_side_44khz.wav</a></p>
<p><strong>Results - Inconclusive?</strong></p>
<table>
<tbody>
<tr>
<td>liba52<br />
Mean: <strong>31.51667%</strong><br />
Median: <strong>27.15%</strong></td>
<td>libavcodec<br />
Mean: <strong>28.86667%</strong><br />
Median: <strong>29.25%</strong></td>
</tr>
</tbody>
</table>
<p><a href="/labs/wp-content/uploads/2012/02/codeccpu.png"><img class="alignnone size-full wp-image-263" title="CPU usage comaprison liba52 vs avcodec" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/02/codeccpu.png" alt="CPU usage comaprison liba52 vs avcodec" /></a></p>
<p><strong>ac3 with liba52</strong></p>
<pre class="brush: plain; title: ; notranslate">
-A dummy --codec=a52tofloat32
D/vlc     ( 6768): using decoder module &quot;a52&quot;
Over 30 seconds
  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND
 6768   956 10072    R     160m 86.7   0 52.6 org.videolan.vlc.android
 6768   956 10072    S     159m 86.1   0 30.5 org.videolan.vlc.android
 6768   956 10072    R     156m 84.5   0 25.6 org.videolan.vlc.android
 6768   956 10072    S     156m 84.5   0 27.4 org.videolan.vlc.android
 6768   956 10072    S     156m 84.5   0 26.9 org.videolan.vlc.android
 6768   956 10072    S     156m 84.5   0 26.1 org.videolan.vlc.android

Mean: 31.51667
Median: 27.15
Mode: N/A
</pre>
<p><strong>ac3 with libavcodec</strong></p>
<pre class="brush: plain; title: ; notranslate">
-A dummy --codec=avcodec
D/vlc     ( 6829): using decoder module &quot;avcodec&quot;
Over 30 seconds
  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND
 6829   956 10072    S     158m 85.5   0 32.3 org.videolan.vlc.android
 6829   956 10072    R     155m 83.8   0 30.0 org.videolan.vlc.android
 6829   956 10072    S     155m 83.8   0 26.3 org.videolan.vlc.android
 6829   956 10072    S     155m 83.8   0 30.0 org.videolan.vlc.android
 6829   956 10072    S     155m 83.8   0 28.5 org.videolan.vlc.android
 6829   956 10072    S     155m 83.8   0 26.1 org.videolan.vlc.android
Mean: 28.86667
Median: 29.25
Mode: 30.0
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/02/01/android-codec-benchmarks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://people.videolan.org/~jb/ac3_the_other_side_44khz.wav" length="27580460" type="audio/wav" />
		</item>
		<item>
		<title>Deepen an existing shallow clone with git</title>
		<link>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/</link>
		<comments>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 00:15:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[deepen]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[shallow]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=260</guid>
		<description><![CDATA[In git, the new revolutionary DVCS system, to shallow clone a repository means to check out only the latest snapshot of a git repository, unlike a normal clone which pulls the entire repository. A shallow git repository can save bandwidth and take up less space. However, let&#8217;s say that once you checkout the project, compile [...]]]></description>
			<content:encoded><![CDATA[<p>In git, the new revolutionary DVCS system, to shallow clone a repository means to check out only the latest snapshot of a git repository, unlike a normal clone which pulls the entire repository. A shallow git repository can save bandwidth and take up less space.</p>
<pre class="brush: bash; title: ; notranslate">git clone --depth=1 git://repo.example.com/mycoolapp</pre>
<p>However, let&#8217;s say that once you checkout the project, compile it and decide that you want to contribute to it, then a shallow clone would probably not suffice. In this case, one can deepen the repository by using the following command inside the git repository, where n = number of revisions to deepen to:</p>
<pre class="brush: bash; title: ; notranslate">git fetch --depth=n origin master</pre>
<p>Saves more than having to re-clone everything from scratch and lose your working tree.</p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VLC pre-alpha for Android 2.1 - Jan 2, 2012</title>
		<link>http://www.compdigitec.com/labs/2012/01/02/vlc-pre-alpha-for-android-2-1-jan-2-2012/</link>
		<comments>http://www.compdigitec.com/labs/2012/01/02/vlc-pre-alpha-for-android-2-1-jan-2-2012/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 22:17:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=252</guid>
		<description><![CDATA[Will post a how-to compile guide later, just wanted to upload the binaries that I am working on through GCI for purpose of testing, along with screenshots. If in doubt, download the first one (VLC-debug.apk). VLC-debug.apk (7.4MB, alternate download) VLC-debug-unaligned.apk (7.4MB, alternate download) Screenshots]]></description>
			<content:encoded><![CDATA[<p>Will post a how-to compile guide later, just wanted to upload the binaries that I am working on through GCI for purpose of testing, along with screenshots. If in doubt, download the first one (VLC-debug.apk).</p>
<ul>
<li><a title="VLC-debug.apk" href="https://docs.google.com/open?id=0B16DuZXP7bRbNzZkYWFhODAtMzdhOS00ZjE1LWEwZjAtMTU0MWQ1NTQzMThi">VLC-debug.apk</a> (7.4MB, <a href="/labs/files/VLC20120102/VLC-debug-unaligned.apk">alternate download</a>)</li>
<li><a title="VLC-debug-unaligned.apk" href="https://docs.google.com/open?id=0B16DuZXP7bRbOGU0MDkwZjUtYTQ2OS00ZGU5LWI4ZWUtMmZhZTA0ZDkyYmIz">VLC-debug-unaligned.apk</a> (7.4MB, <a href="/labs/files/VLC20120102/VLC-debug-unaligned.apk">alternate download</a>)</li>
</ul>
<p><strong>Screenshots</strong></p>
<p><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-playing.png"><img class="size-full wp-image-253 alignnone" title="VLC Playing something" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-playing.png" alt="" width="240" height="320" /></a><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-installing.png"><img class="alignnone size-full wp-image-254" title="Installing VLC for Android" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-installing.png" alt="" width="240" height="320" /></a><a href="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-firstrun.png"><img class="alignnone size-full wp-image-255" title="VLC on first run - Evidently, not very stable or usable at all" src="http://www.compdigitec.com/labs/wp-content/uploads/2012/01/vlc-firstrun.png" alt="" width="240" height="320" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/01/02/vlc-pre-alpha-for-android-2-1-jan-2-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operating systems and car dealerships</title>
		<link>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/</link>
		<comments>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 17:41:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=248</guid>
		<description><![CDATA[An excerpt from the essay In the Beginning was the Command Line (CC BY-SA 2.0) by Michael Foord. The analogy between cars and operating systems is not half bad, and so let me run with it for a moment, as a way of giving an executive summary of our situation today. Imagine a crossroads where [...]]]></description>
			<content:encoded><![CDATA[<p>An excerpt from the essay <em><a title="In the Beginning was the Command Line" href="http://www.voidspace.org.uk/technology/neal_beginning.shtml#mgbs-tanks-and-batmobiles">In the Beginning was the Command Line</a></em> (CC BY-SA 2.0) by <a href="http://www.voidspace.org.uk/">Michael Foord</a>.</p>
<blockquote><p>The analogy between cars and operating systems is not half bad, and so let me run with it for a moment, as a way of giving an executive summary of our situation today.</p>
<p>Imagine a crossroads where four competing auto dealerships are situated. One of them (Microsoft) is much, much bigger than the others. It started out years ago selling three-speed bicycles (MS-DOS); these were not perfect, but they worked, and when they broke you could easily fix them.</p>
<p>There was a competing bicycle dealership next door (Apple) that one day began selling motorized vehicles--expensive but attractively styled cars with their innards hermetically sealed, so that how they worked was something of a mystery.</p>
<p>The big dealership responded by rushing a moped upgrade kit (the original Windows) onto the market. This was a Rube Goldberg contraption that, when bolted onto a three-speed bicycle, enabled it to keep up, just barely, with Apple-cars. The users had to wear goggles and were always picking bugs out of their teeth while Apple owners sped along in hermetically sealed comfort, sneering out the windows. But the Micro-mopeds were cheap, and easy to fix compared with the Apple-cars, and their market share waxed.</p>
<p>Eventually the big dealership came out with a full-fledged car: a colossal station wagon (Windows 95). It had all the aesthetic appeal of a Soviet worker housing block, it leaked oil and blew gaskets, and it was an enormous success. A little later, they also came out with a hulking off-road vehicle intended for industrial users (Windows NT) which was no more beautiful than the station wagon, and only a little more reliable.</p>
<p>Since then there has been a lot of noise and shouting, but little has changed. The smaller dealership continues to sell sleek Euro-styled sedans and to spend a lot of money on advertising campaigns. They have had <strong>GOING OUT OF BUSINESS!</strong> signs taped up in their windows for so long that they have gotten all yellow and curly. The big one keeps making bigger and bigger station wagons and ORVs.</p>
<p>On the other side of the road are two competitors that have come along more recently.</p>
<p>One of them (Be, Inc.) is selling fully operational Batmobiles (the BeOS). They are more beautiful and stylish even than the Euro-sedans, better designed, more technologically advanced, and at least as reliable as anything else on the market--and yet cheaper than the others.</p>
<p>With one exception, that is: Linux, which is right next door, and which is not a business at all. It&#8217;s a bunch of RVs, yurts, tepees, and geodesic domes set up in a field and organized by consensus. The people who live there are making tanks. These are not old-fashioned, cast-iron Soviet tanks; these are more like the M1 tanks of the U.S. Army, made of space-age materials and jammed with sophisticated technology from one end to the other. But they are better than Army tanks. They&#8217;ve been modified in such a way that they never, ever break down, are light and manoeuvrable enough to use on ordinary streets, and use no more fuel than a subcompact car. These tanks are being cranked out, on the spot, at a terrific pace, and a vast number of them are lined up along the edge of the road with keys in the ignition. Anyone who wants [one] can simply climb into one and drive it away for free.</p>
<p>Customers come to this crossroads in throngs, day and night. Ninety percent of them go straight to the biggest dealership and buy station wagons or off-road vehicles. They do not even look at the other dealerships.</p>
<p>Of the remaining ten percent, most go and buy a sleek Euro-sedan, pausing only to turn up their noses at the philistines going to buy the station wagons and ORVs. If they even notice the people on the opposite side of the road, selling the cheaper, technically superior vehicles, these customers deride them cranks and half-wits.</p>
<p>The Batmobile outlet sells a few vehicles to the occasional car nut who wants a second vehicle to go with his station wagon, but seems to accept, at least for now, that it&#8217;s a fringe player.</p>
<p>The group giving away the free tanks only stays alive because it is staffed by volunteers, who are lined up at the edge of the street with bullhorns, trying to draw customers&#8217; attention to this incredible situation. A typical conversation goes something like this:</p>
<p>Hacker with bullhorn: &#8220;Save your money! Accept one of our free tanks! It is invulnerable, and can drive across rocks and swamps at ninety miles an hour while getting a hundred miles to the gallon!&#8221;</p>
<p>Prospective station wagon buyer: &#8220;I know what you say is true&#8230;but&#8230;er&#8230;I don&#8217;t know how to maintain a tank!&#8221;</p>
<p>Bullhorn: &#8220;You don&#8217;t know how to maintain a station wagon either!&#8221;</p>
<p>Buyer: &#8220;But this dealership has mechanics on staff. If something goes wrong with my station wagon, I can take a day off work, bring it here, and pay them to work on it while I sit in the waiting room for hours, listening to elevator music.&#8221;</p>
<p>Bullhorn: &#8220;But if you accept one of our free tanks we will send volunteers to your house to fix it for free while you sleep!&#8221;</p>
<p>Buyer: &#8220;Stay away from my house, you freak!&#8221;</p>
<p>Bullhorn: &#8220;But&#8230;&#8221;</p>
<p>Buyer: &#8220;Can&#8217;t you see that everyone is buying station wagons?&#8221;</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geany 0.21 Debian pacakge for Ubuntu/Debian</title>
		<link>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 23:08:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[.deb]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[debian package]]></category>
		<category><![CDATA[geany]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=246</guid>
		<description><![CDATA[The version of Geany provided with the repository in Ubuntu is a bit outdated (0.18) by two years, so we have also decided to produce an updated version (0.21) for use on Ubuntu 10.04 LTS and other versions of Ubuntu. Download Debian package (5.7 MB) RPM package (5.7 MB) Compiling]]></description>
			<content:encoded><![CDATA[<p>The version of <a href="http://www.compdigitec.com/labs/2008/08/28/geany-the-ultimate-ide-for-programming/">Geany</a> provided with the repository in Ubuntu is a bit outdated (0.18) by two years, so we have also decided to produce an updated version (0.21) for use on Ubuntu 10.04 LTS and other versions of Ubuntu.<br />
<strong>Download</strong></p>
<ul>
<li><a href="/labs/files/geany-compdigitec.deb">Debian package</a> (5.7 MB)</li>
<li><a href="/labs/files/geany-compdigitec.rpm">RPM package</a> (5.7 MB)</li>
</ul>
<p><strong>Compiling</strong></p>
<pre class="brush: bash; title: ; notranslate">
./configure --enable-binreloc --enable-socket --enable-vte --enable-the-force --prefix=/usr
make
make install
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated version of YASM v1.1.0 for Ubuntu</title>
		<link>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 11:07:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Mozilla firefox]]></category>
		<category><![CDATA[yasm]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=243</guid>
		<description><![CDATA[The version of YASM provided with Ubuntu 10.04 is a bit outdated (0.8, updated in 2009) and is not sufficient enough to compile Mozilla Firefox. Therefore we have decided to compile an updated package of YASM v1.1.0 instead. Download yasm-compdigitec-unofficial_1.1.0-1_i386.deb (Debian Package, 1.8MB) yasm-compdigitec-unofficial_1.1.0-1_i386.rpm (RPM Package, 1.8MB) Compile your own copy]]></description>
			<content:encoded><![CDATA[<p>The version of YASM provided with Ubuntu 10.04 is a bit outdated (0.8, updated in 2009) and is not sufficient enough to <a href="http://www.compdigitec.com/labs/2011/06/30/light-build-of-mozilla-firefox/">compile Mozilla Firefox</a>. Therefore we have decided to compile an updated package of YASM v1.1.0 instead.</p>
<p><strong>Download</strong></p>
<ul>
<li><a href="/labs/files/yasm-compdigitec-unofficial_1.1.0-1_i386.deb">yasm-compdigitec-unofficial_1.1.0-1_i386.deb</a> (Debian Package, 1.8MB)</li>
<li><a href="/labs/files/yasm-compdigitec-unofficial_1.1.0-1_i386.rpm">yasm-compdigitec-unofficial_1.1.0-1_i386.rpm</a> (RPM Package, 1.8MB)</li>
</ul>
<div><strong>Compile your own copy</strong></div>
<pre class="brush: bash; title: ; notranslate">
wget http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz -O- | tar zxvf -
cd yasm-1.1.0
./configure --disable-nls --prefix=/usr
make
make install
yasm --version
#yasm 1.1.0.2352
#Compiled on Oct 23 2011.
#Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
#Run yasm --license for licensing overview and summary.
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding custom profile fields in WordPress (fully automatic)</title>
		<link>http://www.compdigitec.com/labs/2011/10/17/adding-custom-profile-fields-in-wordpress-fully-automatic/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/17/adding-custom-profile-fields-in-wordpress-fully-automatic/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 01:22:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[fields]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=241</guid>
		<description><![CDATA[Custom profile fields are additional custom-defined fields in the WordPress usermeta database that permit us to store additional information about a user. To add custom profile fields, add the following line to your functions.php in your theme folder: Now create a new file called customfields.php in the theme folder (the same folder as function.php) with [...]]]></description>
			<content:encoded><![CDATA[<p>Custom profile fields are additional custom-defined fields in the WordPress usermeta database that permit us to store additional information about a user. To add custom profile fields, add the following line to your functions.php in your theme folder:</p>
<pre class="brush: php; title: ; notranslate">include('customfields.php');</pre>
<p>Now create a new file called <strong>customfields.php</strong> in the theme folder (the same folder as function.php) with the following contents:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

function get_extra_profile_list() {
return Array(
/* Add your custom fields, here like follows:
'slug_of_the_field_here' =&gt; 'Field name for display',
 */
'address' =&gt; 'Address',
'favouritecolour' =&gt; 'Favourite Colour'
);
}

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );

function extra_user_profile_fields( $user ) { ?&gt;
&lt;h3&gt;&lt;?php _e(&quot;Extra profile information&quot;, &quot;blank&quot;); ?&gt;&lt;/h3&gt;

&lt;table class=&quot;form-table&quot;&gt;
&lt;?php
foreach(get_extra_profile_list() as $key =&gt; $value) {
?&gt;
&lt;tr&gt;
&lt;th&gt;&lt;label for=&quot;&lt;?php echo $key; ?&gt;&quot;&gt;&lt;?php _e($value); ?&gt;&lt;/label&gt;&lt;/th&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;&lt;?php echo $key; ?&gt;&quot; id=&quot;&lt;?php echo $key; ?&gt;&quot; value=&quot;&lt;?php echo esc_attr( get_the_author_meta( $key, $user-&gt;ID ) ); ?&gt;&quot; class=&quot;regular-text&quot; /&gt;&lt;br /&gt;
&lt;span class=&quot;description&quot;&gt;&lt;?php _e(&quot;Please enter your $value.&quot;); ?&gt;&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;?php
}
?&gt;
&lt;/table&gt;
&lt;?php }

add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {

if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }

foreach(get_extra_profile_list() as $key =&gt; $value) {
update_usermeta( $user_id, $key, $_POST[$key] );
}
}
?&gt;
</pre>
<p>Now if you go to &#8220;Users&#8221; under your administration and edit a user, the additional profile fields will show up at the bottom of the edit page.</p>
<p><a href="http://www.compdigitec.com/labs/wp-content/uploads/2011/10/extraprofile.png"><img class="aligncenter size-full wp-image-242" title="Extra Profile Fields in WordPress" src="http://www.compdigitec.com/labs/wp-content/uploads/2011/10/extraprofile.png" alt="" width="619" height="102" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/17/adding-custom-profile-fields-in-wordpress-fully-automatic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WP No-bot Question plugin for WordPress</title>
		<link>http://www.compdigitec.com/labs/2011/10/09/wp-no-bot-question-plugin-for-wordpress/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/09/wp-no-bot-question-plugin-for-wordpress/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 01:46:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=238</guid>
		<description><![CDATA[Most spam on your WordPress blog is caused by automated robots (spambots) which keep submitting to your comment form to inflate some shady website&#8217;s rank. Short of completely disabling or turning on blog moderation and wasting your time filtering through the mess, you can now use the new WP No-bot Question plugin developed by Compdigitec [...]]]></description>
			<content:encoded><![CDATA[<p>Most spam on your WordPress blog is caused by automated robots (spambots) which keep submitting to your comment form to inflate some shady website&#8217;s rank. Short of completely disabling or turning on blog moderation and wasting your time filtering through the mess, you can now use the new <strong><a href="http://www.compdigitec.com/apps/wpnobot/">WP No-bot Question plugin</a></strong> developed by Compdigitec for WordPress - simply activate, set your question and answers and block all the spam bots! Best used in conjunction with other spam and server protection plugins such as <a href="http://www.svenkubiak.de/nospamnx-en">NoSpamNX</a> and <a href="http://www.bad-behavior.ioerror.us/">Bad Behaviour</a>. This plugin was inspired by the <a href="http://www.phpbb.com/community/viewtopic.php?f=70&amp;t=568673">Anti-Bot Question Mod for phpBB</a>, which is very effective against spambot user registration on phpBB.</p>
<p>See the <a href="http://www.compdigitec.com/apps/wpnobot/">plugin page</a> on Compdigitec for more details and screenshots/downloads.</p>
<p><a href="http://www.compdigitec.com/apps/wpnobot/screenshot1.png"><img class="alignnone" title="WP No-Bot Question" src="http://www.compdigitec.com/apps/wpnobot/screenshot1.png" alt="" width="680" height="272" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/09/wp-no-bot-question-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling GNU Bash 4.x for Android 2.x</title>
		<link>http://www.compdigitec.com/labs/2011/09/04/compiling-bash-for-android-2-x/</link>
		<comments>http://www.compdigitec.com/labs/2011/09/04/compiling-bash-for-android-2-x/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 21:33:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[ndk]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=230</guid>
		<description><![CDATA[Updated (2012-02-04): Updated to Bash 4.2 and included source code used to compile. GNU Bash (the GNU Bourne Again Shell) is the standard shell on most desktop and server distributions of Linux. As a result, we can download bash source code and compile the Bash shell for use on Android devices to replace default /bin/sh [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Updated (2012-02-04):</strong> Updated to Bash 4.2 and included source code used to compile.</p>
<p>GNU Bash (the GNU Bourne Again Shell) is the standard shell on most desktop and server distributions of Linux. As a result, we can download bash source code and compile the Bash shell for use on Android devices to replace default /bin/sh and busybox sh. Since the <a title="Android NDK" href="http://developer.android.com/sdk/ndk/index.html">Android NDK</a> doesn&#8217;t support the full glibc library (it lacks /etc/group and friends), a small patch is required to compile Bash for Android 2.x devices (probably caused by <a href="http://www.kbrandt.com/2009/06/how-to-cross-compile-the-bash-shell-for-android-15.html">changes since Android 1.5.x</a>).</p>
<p>If you don&#8217;t feel like compiling from scratch you can download <a title="Pre-built Bash for Android" href="/labs/files/bash-android.7z">a pre-built version</a>.</p>
<p><strong>Prerequisites</strong></p>
<ul>
<li><strong></strong>Android NDK set-up and functioning</li>
<li>Bash source (wget <a href="http://mirror.csclub.uwaterloo.ca/gnu/bash/bash-4.2.tar.gz">http://mirror.csclub.uwaterloo.ca/gnu/bash/bash-4.2.tar.gz</a>)</li>
<li>Host system development headers, etc (build-essential)</li>
<li><a title="Android Bash patch" href="/labs/files/bash-android.patch">Android Bash patch</a></li>
</ul>
<p>Once your prerequisites are set up and functioning properly (adjust all paths as required, such as ndk path)<strong>:</strong></p>
<pre class="brush: bash; title: ; notranslate">
export ANDROID_NDK=/opt/android-ndk-r7
export CC=&quot;${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=${ANDROID_NDK}/platforms/android-5/arch-arm/&quot;
patch -p0 &lt; bash-android.patch
./configure --host=arm-linux --enable-static-link --without-bash-malloc --disable-rpath --disable-nls
</pre>
<p>Once that is done, open Makefile and add -static to CFLAGS so it looks like so: &#8220;-g -O2 -static&#8221;</p>
<pre class="brush: bash; title: ; notranslate">
make
file bash
# bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
</pre>
<p>You will find bash sitting in the folder. Now you can deploy it and try it through adb or something similar:</p>
<pre class="brush: bash; title: ; notranslate">
adb push bash /data/local/bin/bash
adb -d shell
$ /data/local/bin/bash
bash-4.2$ /data/local/bin/bash --version
GNU bash, version 4.2.0(2)-release (arm-unknown-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &lt;http://gnu.org/licenses/gpl.html&gt;

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
bash-4.2$
</pre>
<p>Of course, once you have it ready and set up you should probably create a &#8220;.bashrc&#8221; file to make the terminal a bit more bearable, if you wish to.</p>
<div id="attachment_231" class="wp-caption aligncenter" style="width: 250px"><a href="http://www.compdigitec.com/labs/wp-content/uploads/2011/09/bash-android.png"><img class="size-full wp-image-231" title="Bash running on Android" src="http://www.compdigitec.com/labs/wp-content/uploads/2011/09/bash-android.png" alt="" width="240" height="320" /></a><p class="wp-caption-text">Bash running on Android 2.x</p></div>
<p style="text-align: center;">]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/09/04/compiling-bash-for-android-2-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

