<?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>evilsocket.net &#187; C++</title>
	<atom:link href="http://www.evilsocket.net/category/programmazione/sorgenti/cpp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evilsocket.net</link>
	<description>If you can't understand it, it doesn't mean it's wrong ...</description>
	<lastBuildDate>Wed, 21 Jul 2010 00:16:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Hybris memory lookup, now Google powered!!!</title>
		<link>http://www.evilsocket.net/936/hybris-memory-lookup-now-google-powered.html</link>
		<comments>http://www.evilsocket.net/936/hybris-memory-lookup-now-google-powered.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 00:32:26 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Craig Silverstein]]></category>
		<category><![CDATA[dense hash]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hash map]]></category>
		<category><![CDATA[hash table]]></category>
		<category><![CDATA[hashing]]></category>
		<category><![CDATA[hybris]]></category>
		<category><![CDATA[lookup]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[sparse hash]]></category>
		<category><![CDATA[vmem]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=936</guid>
		<description><![CDATA[No, non ho inserito un motore di ricerca dentro Hybris (sarebbe figo però vero? XD) ! Mi spiego &#8230; profilando un po l&#8217;interprete, mi è parso evidente che una delle funzioni che veniva richiamata più spesso durante l&#8217;esecuzione di uno script, come è facile immaginare, è quella per il look up delle variabili in memoria. [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/1024/google-0-io-1.html' rel='bookmark' title='Permanent Link: Google : 0, Io : 1'>Google : 0, Io : 1</a></li>
<li><a href='http://www.evilsocket.net/1296/come-hackerare-google-e-rimanere-indisturbato-per-un-anno.html' rel='bookmark' title='Permanent Link: Come hackerare Google e rimanere indisturbato per un anno.'>Come hackerare Google e rimanere indisturbato per un anno.</a></li>
<li><a href='http://www.evilsocket.net/928/gestione-%e2%80%9csmart%e2%80%9d-della-memoria-in-hybris-parte-ii.html' rel='bookmark' title='Permanent Link: Gestione “Smart” Della Memoria In Hybris : Parte II .'>Gestione “Smart” Della Memoria In Hybris : Parte II .</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>No, non ho inserito un motore di ricerca dentro <a href="http://www.hybris-lang.org/" target="_blank">Hybris</a> (sarebbe figo però vero? XD) !</p>
<p>Mi spiego &#8230; profilando un po l&#8217;interprete, mi è parso evidente che una delle funzioni che veniva richiamata più spesso durante l&#8217;esecuzione di uno script, come è facile immaginare, è quella per il look up delle variabili in memoria.</p>
<p>In pratica è la funzione che, dato il nome di una variabile (quindi una chiave), deve trovare l&#8217;oggetto associato all&#8217;interno del&#8217;array associativo che rappresenta la memoria virtuale di Hybris .</p>
<p>Così ho pensato a come ottimizzare l&#8217;algoritmo di ricerca, che prima si limitava a scorrere l&#8217;array contemporaneamente dall&#8217;inizio verso la fine e dalla fine verso l&#8217;inizio (in realtà un espediente abbastanza inutile quando ci sono poche variabili, ma quando sono molte si fa sentire) e ho capito che mi conveniva utilizzare una <a href="http://it.wikipedia.org/wiki/Hash_table" target="_blank">hash table</a> .</p>
<p>Questo tipo di struttura è tanto efficiente quanto difficile da realizzare e, pensando che avrei impiegato giorni, se non settimane, per buttare giù un implementazione ottimizzata al massimo, mi son messo a cercare online se ne esistevano già di pronte e soprattutto di facilmente integrabili con quanto scritto fin&#8217;ora .</p>
<p>E che ti vado a scoprire?</p>
<p><span id="more-936"></span>Scopro che gli ingegneri di Google Inc., in particolare il Sig.<a href="http://www.google.it/search?source=ig&amp;hl=it&amp;rlz=&amp;q=Craig+Silverstein&amp;btnG=Cerca+con+Google&amp;meta=lr%3D" target="_blank"> Craig Silverstein</a>, hanno realizzato un implementazione open source di hash table e hash map denominate &#8220;<a href="http://code.google.com/p/google-sparsehash/" target="_blank">Google Sparse Hash</a>&#8220;, implementazioni che si dividono in due interfacce C++, una ottimizzata per il consumo della memoria ed un altra per l&#8217;elaborazione (quella che interessava a me), e una <a href="http://code.google.com/p/google-sparsehash/source/browse/#svn/trunk/experimental" target="_blank">libreria C</a> ma portabile anche per il C++ sempre configurabile per i due comportamenti .</p>
<p>Decido di sfruttare la libreria C poichè l&#8217;approccio procedurale risulta più facilmente integrabile nell&#8217;interprete di Hybris e così mi metto a testarla.</p>
<p>Son rimasto così &#8212;&#8211;&gt; O____O</p>
<p>Con chiavi di tipo stringa, su 10.000.000 di record, ci mette appena un <strong>nano secondo </strong>per effettuare una ricerca e restituire un puntatore al valore mappato, ancora di meno con qualche ulteriore ottimizzazione che ho fatto io e la giusta combinazione delle direttive di pre compilazione.</p>
<p>Li per li, oltre allo stupore ed all&#8217;immenso rispetto per l&#8217;autore, ho avuto qualche dubbio per quanto concerne la licenza dei sorgenti e la relativa compatibilità della licenza GPL 3 di Hybris .</p>
<p>La licenza della libreria di Google riporta :</p>
<blockquote><p>/* Copyright (c) 1998 &#8211; 2005, Google Inc.<br />
* All rights reserved.<br />
*<br />
* Redistribution and use in source and binary forms, with or without<br />
* modification, are permitted provided that the following conditions are<br />
* met:<br />
*<br />
*     * Redistributions of source code must retain the above copyright<br />
* notice, this list of conditions and the following disclaimer.<br />
*     * Redistributions in binary form must reproduce the above<br />
* copyright notice, this list of conditions and the following disclaimer<br />
* in the documentation and/or other materials provided with the<br />
* distribution.<br />
*     * Neither the name of Google Inc. nor the names of its<br />
* contributors may be used to endorse or promote products derived from<br />
* this software without specific prior written permission.<br />
*<br />
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS<br />
* &#8220;AS IS&#8221; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br />
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR<br />
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT<br />
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,<br />
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br />
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE<br />
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />
*/</p></blockquote>
<p>In pratica significa :</p>
<blockquote><p>&#8220;Fateci quello che vi pare, basta che riportiate questo disclaimer e non utilizziate il marchio Google Inc per pubblicizzare un vostro prodotto.&#8221;</p></blockquote>
<p>Ok mi dico, da &#8220;questo lato&#8221; la cosa sembra decisamente elastica &#8230; poi però mi son ricordato che la GPL 3 ha delle restrizioni molto severe per quanto riguarda la distribuzione di codice di terze parti con licenze diverse dalla GPL stessa, ed è proprio questo il caso dato che la licenza della libreria di Google NON è GPL .</p>
<p>Viene in mio aiuto il buon merlok, che mi pasta su messenger un passaggio della GPL 3 che riporta :</p>
<blockquote><p>If you found some code and wanted to incorporate it into a GPLed project, GPLv2 said that the license on the other code was not allowed to have any restrictions that were not already in GPLv2. As long as that was the case, we said the license was GPL-compatible.</p>
<p>However, some licenses had requirements that weren&#8217;t really restrictive, because they were so easy to comply with. For example, some licenses say that they don&#8217;t give you permission to use certain trademarks. That&#8217;s not really an additional restriction: if that clause wasn&#8217;t there, you still wouldn&#8217;t have permission to use the trademark. We always said those licenses were compatible with GPLv2, too.</p></blockquote>
<p>E&#8217; proprio questo il mio caso! Una licenza diversa dalla GPL, ma estremamente permissiva tranne per la questione dell&#8217;utilizzo del marchio registrato, quindi anche su questo fronte no problem.</p>
<p>Ebbene, dopo qualche ora di coding per l&#8217;integrazione di questa libreria nella classe <a href="http://github.com/evilsocket/Hybris/blob/master/include/map.h" target="_blank">Map</a> e qualche ottimizzazione qua e la, Hybris è arrivato ad un <strong>guadagno netto di più del 20% sui tempi di elaborazione </strong>.</p>
<p>Purtroppo ci sono alcuni limiti che non mi consentono di eliminare del tutto il vecchio comportamento della classe Map, poichè oltre ad un associazione [chiave -&gt; valore] utilizza anche altre associazioni [indice -&gt; chiave], [chiave -&gt; indice] e così via che non sono gestibili dalla hash table, tutta via sono fiducioso che in futuro, magari entro il rilascio (che è vicinissimo) della 1.0, troverò il metodo per risolvere o quanto meno aggirare questo problema.</p>
<p>Che dire, grazie Google ma soprattutto <strong>grazie </strong><a href="http://www.google.it/search?source=ig&amp;hl=it&amp;rlz=&amp;q=Craig+Silverstein&amp;btnG=Cerca+con+Google&amp;meta=lr%3D" target="_blank"><strong>Craig Silverstein</strong></a> !</p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=936">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=936&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/1024/google-0-io-1.html' rel='bookmark' title='Permanent Link: Google : 0, Io : 1'>Google : 0, Io : 1</a></li>
<li><a href='http://www.evilsocket.net/1296/come-hackerare-google-e-rimanere-indisturbato-per-un-anno.html' rel='bookmark' title='Permanent Link: Come hackerare Google e rimanere indisturbato per un anno.'>Come hackerare Google e rimanere indisturbato per un anno.</a></li>
<li><a href='http://www.evilsocket.net/928/gestione-%e2%80%9csmart%e2%80%9d-della-memoria-in-hybris-parte-ii.html' rel='bookmark' title='Permanent Link: Gestione “Smart” Della Memoria In Hybris : Parte II .'>Gestione “Smart” Della Memoria In Hybris : Parte II .</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/936/hybris-memory-lookup-now-google-powered.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gestione “Smart” Della Memoria In Hybris : Parte II .</title>
		<link>http://www.evilsocket.net/928/gestione-%e2%80%9csmart%e2%80%9d-della-memoria-in-hybris-parte-ii.html</link>
		<comments>http://www.evilsocket.net/928/gestione-%e2%80%9csmart%e2%80%9d-della-memoria-in-hybris-parte-ii.html#comments</comments>
		<pubDate>Sat, 20 Mar 2010 22:20:46 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[garbage collection]]></category>
		<category><![CDATA[gc]]></category>
		<category><![CDATA[htree_exectute]]></category>
		<category><![CDATA[hybris]]></category>
		<category><![CDATA[hybris_vg_isgarbage]]></category>
		<category><![CDATA[H_GC_COLLECT]]></category>
		<category><![CDATA[memory leaks]]></category>
		<category><![CDATA[valgrind]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=928</guid>
		<description><![CDATA[Come detto nell&#8217;ultimo articolo, negli ultimi commit di Hybris è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell&#8217;interprete . Nell&#8217;articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l&#8217;utilizzo della memoria durante l&#8217;esecuzione di [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/925/gestione-smart-della-memoria-in-hybris.html' rel='bookmark' title='Permanent Link: Gestione &#8220;smart&#8221; della memoria in Hybris .'>Gestione &#8220;smart&#8221; della memoria in Hybris .</a></li>
<li><a href='http://www.evilsocket.net/980/hybris-rivoluzionato-il-sistema-di-gestione-dei-tipi-ed-il-garbage-collector.html' rel='bookmark' title='Permanent Link: Hybris : Rivoluzionato il sistema di gestione dei tipi ed il garbage collector.'>Hybris : Rivoluzionato il sistema di gestione dei tipi ed il garbage collector.</a></li>
<li><a href='http://www.evilsocket.net/936/hybris-memory-lookup-now-google-powered.html' rel='bookmark' title='Permanent Link: Hybris memory lookup, now Google powered!!!'>Hybris memory lookup, now Google powered!!!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Come detto nell&#8217;<a href="http://www.evilsocket.net/925/gestione-smart-della-memoria-in-hybris.html" target="_blank">ultimo articolo</a>, negli ultimi commit di <a href="http://www.hybris-lang.org/">Hybris</a> è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell&#8217;interprete .</p>
<p>Nell&#8217;articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l&#8217;utilizzo della memoria durante l&#8217;esecuzione di uno script, aveva lo svantaggio di diminuire anche le prestazioni complessive dato com&#8217;era strutturato l&#8217;algoritmo per determinare se un dato oggetto era deallocabile durante l&#8217;esecuzione dello script stesso, algoritmo che effettuava diversi controlli, tra i quali due loop (quelli che rappresentavano maggiormente il collo di bottiglia) sul frame della funzione chiamante e su quello della memoria principale.</p>
<p>Ebbene, <strong>sono un coglione</strong> XD .</p>
<p>Si avete letto bene, sono un coglione perchè avevo strutturato l&#8217;algoritmo ragionando &#8220;a posteriori&#8221; senza pensare che prevenendo questo controllo si poteva risolvere il problema ed aumentare anche le prestazioni rispetto a prima .</p>
<p><span id="more-928"></span></p>
<p>Quello che intendo è che nella classe Object, ho inserito una bitmask chiamata &#8220;attributes&#8221; che, come suggerisce il nome stesso, rappresenta gli attributi di quell&#8217;oggetto in particolare, ovvero se è un alias, una costante e soprattutto se è deallocabile .</p>
<p>Quest&#8217;ultimo flag in particolare, viene impostato alla creazione dell&#8217;oggetto a 1, quindi nello stato iniziale qualunque oggetto è de allocabile, successivamente, resetto il flag se e solo se si verificano le condizioni di non deallocabilità immediata, cioè se :</p>
<ol>
<li>L&#8217;oggetto viene definito in un qualunque frame (sia di una funzione che quello principale) come variabile .</li>
<li>L&#8217;oggetto è una costante .</li>
</ol>
<p>Quindi, impostando questo flag nella maschera binaria solo quando serve, al processo di garbage collection basta controllare a posteriori se sono impostati o meno i flag giusti per determinare se è possibile deallocare l&#8217;oggetto, eliminando così il problema dei due loop e del controllo complesso che prima rallentava di parecchio l&#8217;esecuzione di uno script.</p>
<p>Insomma come dire, a volte basta ragionare in modo &#8220;speculare&#8221; a come si ragiona in partenza per risolvere un problema <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong>Nota</strong>: <em>Quando parlo di calo di prestazioni significante, mi riferisco comunque a rallentamenti nell&#8217;ordine di <strong>millisecondi</strong> in algoritmi molto complessi che, per motivi di test, sono strutturati appositamente per allocare molta memoria e &#8220;stressare&#8221; l&#8217;interprete . In realtà, in programmi &#8220;normali&#8221; che non richiedono chissà quale elaborazione avanzata, la differenza non si nota nemmeno .</em></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=928">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=928&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/925/gestione-smart-della-memoria-in-hybris.html' rel='bookmark' title='Permanent Link: Gestione &#8220;smart&#8221; della memoria in Hybris .'>Gestione &#8220;smart&#8221; della memoria in Hybris .</a></li>
<li><a href='http://www.evilsocket.net/980/hybris-rivoluzionato-il-sistema-di-gestione-dei-tipi-ed-il-garbage-collector.html' rel='bookmark' title='Permanent Link: Hybris : Rivoluzionato il sistema di gestione dei tipi ed il garbage collector.'>Hybris : Rivoluzionato il sistema di gestione dei tipi ed il garbage collector.</a></li>
<li><a href='http://www.evilsocket.net/936/hybris-memory-lookup-now-google-powered.html' rel='bookmark' title='Permanent Link: Hybris memory lookup, now Google powered!!!'>Hybris memory lookup, now Google powered!!!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/928/gestione-%e2%80%9csmart%e2%80%9d-della-memoria-in-hybris-parte-ii.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kerby &#8211; Light weight video surveillance system.</title>
		<link>http://www.evilsocket.net/754/kerby-light-weight-video-surveillance-system.html</link>
		<comments>http://www.evilsocket.net/754/kerby-light-weight-video-surveillance-system.html#comments</comments>
		<pubDate>Wed, 17 Jun 2009 13:30:48 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[alix]]></category>
		<category><![CDATA[kerby]]></category>
		<category><![CDATA[Light weight video surveillance system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[v4l]]></category>
		<category><![CDATA[video surveillance]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=754</guid>
		<description><![CDATA[Con mio grande piacere ho avuto modo di constatare che l&#8217;installazione di una webcam v4l compliant sulla mia scheda Alix Ã¨ estremamente semplice, cosÃ¬ mi Ã¨ venuto in mente di riadattare un mio vecchio sistema di video sorveglianza per questa scheda, migliorandone le prestazioni, ottimizzandolo, etc . CosÃ¬ Ã¨ nato Kerby, per ora Ã¨ poco [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/91/v4l-e-webcam-esempio-di-implementazione.html' rel='bookmark' title='Permanent Link: V4L e WebCam &#8211; Esempio di implementazione'>V4L e WebCam &#8211; Esempio di implementazione</a></li>
<li><a href='http://www.evilsocket.net/748/ed-infine-arrivo-la-alix.html' rel='bookmark' title='Permanent Link: Ed infine arrivÃ² la Alix'>Ed infine arrivÃ² la Alix</a></li>
<li><a href='http://www.evilsocket.net/758/nuovo-equipaggiamento-per-la-alix.html' rel='bookmark' title='Permanent Link: Nuovo equipaggiamento per la Alix'>Nuovo equipaggiamento per la Alix</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.zwtm.com/wp-content/uploads/2007/12/wireless-spy-camera-remote.jpg" alt="" width="104" height="70" />Con mio grande piacere ho avuto modo di constatare che l&#8217;installazione di una webcam v4l compliant sulla mia scheda Alix Ã¨ estremamente semplice, cosÃ¬ mi Ã¨ venuto in mente di riadattare un mio vecchio sistema di video sorveglianza per questa scheda, migliorandone le prestazioni, ottimizzandolo, etc .</p>
<p>CosÃ¬ Ã¨ nato <strong>Kerby</strong>, per ora Ã¨ poco quello che fa (ho appena eseguito il primo commit su github), mostra semplicemente la percentuale di movimento che il software rileva dalla webcam, ma presto diventerÃ  qualcosa di molto + utile <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://github.com/evilsocket/Kerby/tree/master" target="_blank">Pagina del progetto</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=754">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=754&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/91/v4l-e-webcam-esempio-di-implementazione.html' rel='bookmark' title='Permanent Link: V4L e WebCam &#8211; Esempio di implementazione'>V4L e WebCam &#8211; Esempio di implementazione</a></li>
<li><a href='http://www.evilsocket.net/748/ed-infine-arrivo-la-alix.html' rel='bookmark' title='Permanent Link: Ed infine arrivÃ² la Alix'>Ed infine arrivÃ² la Alix</a></li>
<li><a href='http://www.evilsocket.net/758/nuovo-equipaggiamento-per-la-alix.html' rel='bookmark' title='Permanent Link: Nuovo equipaggiamento per la Alix'>Nuovo equipaggiamento per la Alix</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/754/kerby-light-weight-video-surveillance-system.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pubblicato Eigetron</title>
		<link>http://www.evilsocket.net/197/pubblicato-eigetron.html</link>
		<comments>http://www.evilsocket.net/197/pubblicato-eigetron.html#comments</comments>
		<pubDate>Sun, 31 May 2009 18:12:55 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=197</guid>
		<description><![CDATA[Come anticipato nell&#8217;articolo di ieri, ho realizzato un sistema di riconoscimento facciale che ora ho pubblicato . Eigetron Ã¨ un sistema di riconoscimento facciale completamente scritto da zero che utilizza l&#8217;algoritmo delle facce di Eigen per un matching abbastanza preciso rispetto ad un database precedentemente calcolato . Per la decomposizione degli eigenvalues e eigenvectors ho [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/181/adotta-un-hacker-d.html' rel='bookmark' title='Permanent Link: Adotta un hacker ! :D'>Adotta un hacker ! :D</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.eeel.nist.gov/oles/images/biomface.jpg" alt="" width="65" height="88" />Come anticipato nell&#8217;<a href="http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html" target="_blank">articolo di ieri</a>, ho realizzato un sistema di riconoscimento facciale che ora ho pubblicato .</p>
<p>Eigetron Ã¨ un sistema di riconoscimento facciale completamente scritto da zero che utilizza l&#8217;algoritmo delle <a href="http://en.wikipedia.org/wiki/Eigenface" target="_blank">facce di Eigen</a> per un matching abbastanza preciso rispetto ad un database precedentemente calcolato . Per la decomposizione degli eigenvalues e eigenvectors ho utilizzato l&#8217;algoritmo di Jacobi che rende la procedura, su matrici simmetriche, molto molto veloce .</p>
<p><span id="more-197"></span><a href="http://github.com/evilsocket/Eigetron/tree/master" target="_blank">Pagina del progetto su github</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=197">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=197&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/181/adotta-un-hacker-d.html' rel='bookmark' title='Permanent Link: Adotta un hacker ! :D'>Adotta un hacker ! :D</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/197/pubblicato-eigetron.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pubblicato BioIdentify</title>
		<link>http://www.evilsocket.net/191/pubblicato-bioidentify.html</link>
		<comments>http://www.evilsocket.net/191/pubblicato-bioidentify.html#comments</comments>
		<pubDate>Fri, 29 May 2009 23:28:43 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=191</guid>
		<description><![CDATA[Dopo qualche mese dalla sua stesura ho deciso di pubblicare e condividere il mio primo progetto open che include tutte le funzioni necessarie al fine di elaborare delle impronte digitali . BioIdentify (o bioid) Ã¨ un applicazione da riga di comando che consente di estrarre le features dalle impronte digitali e salvarle in un file [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/207/iphone-hacking-with-pirni-aggiornamento.html' rel='bookmark' title='Permanent Link: iPhone Hacking with Pirni (aggiornamento !)'>iPhone Hacking with Pirni (aggiornamento !)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dopo qualche mese dalla sua stesura ho deciso di pubblicare e condividere il mio primo progetto open che include tutte le funzioni necessarie al fine di elaborare delle impronte digitali .</p>
<p>BioIdentify (o bioid) Ã¨ un applicazione da riga di comando che consente di estrarre le features dalle impronte digitali e salvarle in un file &#8220;BIR&#8221; (<strong>B</strong>iometric<strong> I</strong>dentification <strong>R</strong>ecord), eseguire matching tra due impronte o identificare il padrone di un impronta all&#8217;interno di un database di BIRs precedentemente elaborato dall&#8217;applicazione stessa .</p>
<p><span id="more-191"></span></p>
<p>C&#8217;Ã¨ ancora un bel po da fare, non tanto nella fase di estrazione che si puÃ² dire pressochÃ¨ completa (a parte qualche accorgimento qua e la che devo fare), ma piÃ¹ che altro nella parte di matching, che ha una precisione di circa l&#8217;88% (meglio alzarla no ? ^^) e nell&#8217;efficienza complessiva .</p>
<p><a href="http://github.com/evilsocket/BioIdentify/tree/master" target="_blank">Pagina github del progetto</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=191">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=191&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/207/iphone-hacking-with-pirni-aggiornamento.html' rel='bookmark' title='Permanent Link: iPhone Hacking with Pirni (aggiornamento !)'>iPhone Hacking with Pirni (aggiornamento !)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/191/pubblicato-bioidentify.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SoftWire : Runtime x86 Assembler</title>
		<link>http://www.evilsocket.net/161/softwire-runtime-x86-assembler.html</link>
		<comments>http://www.evilsocket.net/161/softwire-runtime-x86-assembler.html#comments</comments>
		<pubDate>Mon, 25 May 2009 00:56:49 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d rendering engine]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[nicolas capens]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[runtime assembler]]></category>
		<category><![CDATA[softwire]]></category>
		<category><![CDATA[transgaming]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=161</guid>
		<description><![CDATA[Tempo fa, cercando tutt&#8217;altro, scoprii un proggetto a dir poco eccezionale . Un certo Nicolas Capens aveva realizzato una libreria scritta in C++ in grado di assemblare a runtime del codice assembly dentro un buffer che puÃ² essere chiamato come funzione, supportando l&#8217;intero instruction set x86 sia a 32bit che a 64bit . Cercando i [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/26/geode.html' rel='bookmark' title='Permanent Link: Geode'>Geode</a></li>
<li><a href='http://www.evilsocket.net/34/shellcode-generator.html' rel='bookmark' title='Permanent Link: Shellcode Generator'>Shellcode Generator</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tempo fa, cercando tutt&#8217;altro, scoprii un proggetto a dir poco eccezionale .</p>
<p>Un certo Nicolas Capens aveva realizzato una libreria scritta in C++ in grado di assemblare a runtime del codice assembly dentro un buffer che puÃ² essere chiamato come funzione, supportando l&#8217;intero instruction set x86 sia a 32bit che a 64bit .</p>
<p><span id="more-161"></span>Cercando i sorgenti di questa favolosa libreria ho scoperto la brutta storia che c&#8217;era dietro &#8230; <a href="http://www.transgaming.com/business/swiftshader/" target="_blank">una nota societÃ </a>, trovando nella rete questo proggetto, ha offerto al nostro Nicolas un sacco di soldi per tenerlo &#8220;privato&#8221; ed implementare le successive release all&#8217;interno del loro <a href="http://it.wikipedia.org/wiki/Shader" target="_blank">software shader</a> &#8230; Nicolas ovviamente ha accettato e da quel momento ha rimosso il progetto da SourceForge &#8230; fortunatamente sono riuscito a reperire i sorgenti dell&#8217;ultima versione open di SoftWire e a dargli una sistemata per aggiornarlo agli standard attuali (si tratta di un proggetto scritto parecchi anni fa) &#8230; proverÃ², per quanto mi Ã¨ possibile, a portare avanti io stesso SoftWire libero, dato che avendo prelevato una release coperta da GPL posso farlo, perchÃ¨ ?</p>
<p>PerchÃ¨ mi sono rotto i coglioni di vedere i migliori motori di rendering 3D scritti per Windows mentre il mio OS preferito viene snobbato dalle grandi societÃ  !!!</p>
<p>Eccovi il link di github per seguire le evoluzioni <a href="http://github.com/evilsocket/SoftWire/tree/master" target="_blank">http://github.com/evilsocket/SoftWire/tree/master</a> .</p>
<p>PS: Se qualcuno volesse collaborare Ã¨ + che benvenuto data la complessitÃ  del sistema <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=161">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=161&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/26/geode.html' rel='bookmark' title='Permanent Link: Geode'>Geode</a></li>
<li><a href='http://www.evilsocket.net/34/shellcode-generator.html' rel='bookmark' title='Permanent Link: Shellcode Generator'>Shellcode Generator</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/161/softwire-runtime-x86-assembler.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TED &#8211; Network Event Daemon</title>
		<link>http://www.evilsocket.net/157/ted-network-event-daemon.html</link>
		<comments>http://www.evilsocket.net/157/ted-network-event-daemon.html#comments</comments>
		<pubDate>Sun, 24 May 2009 23:21:36 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[eventi di rete]]></category>
		<category><![CDATA[libnotify]]></category>
		<category><![CDATA[network event daemon]]></category>
		<category><![CDATA[proggetti]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[ted]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=157</guid>
		<description><![CDATA[SarÃ² paranoico io, o sarÃ  che la sicurezza in ambito informatico non Ã¨ mai troppa, ma ho sentito la necessitÃ  di avere uno strumento che mi avvisasse degli &#8220;eventi&#8221; della mia rete, come connessioni (o tentativi) dall esterno verso il mio pc o nuovi pc connessi sulla mia rete (non sia mai qualcuno dovesse attaccarsi [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>SarÃ² paranoico io, o sarÃ  che la sicurezza in ambito informatico non Ã¨ mai troppa, ma ho sentito la necessitÃ  di avere uno strumento che mi avvisasse degli &#8220;eventi&#8221; della mia rete, come connessioni (o tentativi) dall esterno verso il mio pc o nuovi pc connessi sulla mia rete (non sia mai qualcuno dovesse attaccarsi alla mia wifi XD) .</p>
<p><span id="more-157"></span>Sono sicuro al 100% che esiste giÃ  un tool che faccia queste cose, ma a me piace scrivermi da solo i miei strumenti, cosÃ¬ sta nascendo <strong>TED</strong>, acronimo (un po incasinato a dire il vero) di ne<strong>T</strong>work <strong>E</strong>vent <strong>D</strong>aemon .</p>
<p>Il demone che Ã¨ sempre in esecuzione in background, controlla per l&#8217;appunto la presenza di nuovi pc che si connettono sulla sua rete cosÃ¬ come i tentativi di connessione dall&#8217;esterno, loggando il tutto su dei file di testo ordinati per data e mostrando un comodo box di notifica in basso a destra nello schermo tramite libnotify (tra l&#8217;altro molto figa, nn pensavo <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) .</p>
<p>Eccovi uno screenshot della primissima versione (ancora non Ã¨ proprio pronta per il &#8220;grande pubblico&#8221; ma lo sarÃ  presto)</p>
<p><a href="http://www.evilsocket.net/wp-content/uploads/2009/05/ted_screenshot.png" target="_blank"><img class="aligncenter size-medium wp-image-158" title="ted_screenshot" src="http://www.evilsocket.net/wp-content/uploads/2009/05/ted_screenshot-300x240.png" alt="ted_screenshot" width="300" height="240" /></a></p>
<p>Ed eccovi l&#8217;url di git hub per seguire le evoluzioni e scaricare il sorgente <a href="http://github.com/evilsocket/TED/tree/master" target="_blank">http://github.com/evilsocket/TED/tree/master</a> .</p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=157">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=157&type=feed" alt="" />

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/157/ted-network-event-daemon.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>MSP &#8211; Multi-Dimensional Space Processing Library</title>
		<link>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html</link>
		<comments>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html#comments</comments>
		<pubDate>Tue, 19 May 2009 00:03:36 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[biometry]]></category>
		<category><![CDATA[blurring]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[convolution]]></category>
		<category><![CDATA[deviance]]></category>
		<category><![CDATA[edge detection]]></category>
		<category><![CDATA[edges]]></category>
		<category><![CDATA[entropy]]></category>
		<category><![CDATA[fingerprints]]></category>
		<category><![CDATA[frequency map]]></category>
		<category><![CDATA[gabor]]></category>
		<category><![CDATA[histogram]]></category>
		<category><![CDATA[hit n miss]]></category>
		<category><![CDATA[impronte]]></category>
		<category><![CDATA[lowpass filter]]></category>
		<category><![CDATA[mask]]></category>
		<category><![CDATA[msp]]></category>
		<category><![CDATA[Multi-Dimensional Space Processing Library]]></category>
		<category><![CDATA[orientation]]></category>
		<category><![CDATA[prewitt]]></category>
		<category><![CDATA[retina]]></category>
		<category><![CDATA[softening]]></category>
		<category><![CDATA[thinning]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=122</guid>
		<description><![CDATA[Uno dei rami che mi affascina di piÃ¹ della programmazione Ã¨ la biometria, ovvero detto in parole povere, quella scienza informatica che studia i metodi di interazione tra mondo reale e mondo virtuale . Scanner dell&#8217;impronta digitale, della retina, rilevatori di movimento &#8230; tutti questi concetti fanno parte della biometria . PiÃ¹ volte mi sono [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/1004/redis-client-library-for-hybris.html' rel='bookmark' title='Permanent Link: Redis client library for Hybris'>Redis client library for Hybris</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
<li><a href='http://www.evilsocket.net/12/neural-network.html' rel='bookmark' title='Permanent Link: Neural Network'>Neural Network</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Uno dei rami che mi affascina di piÃ¹ della programmazione Ã¨ la biometria, ovvero detto in parole povere, quella scienza informatica che studia i metodi di interazione tra mondo reale e mondo virtuale .</p>
<p>Scanner dell&#8217;impronta digitale, della retina, rilevatori di movimento &#8230; tutti questi concetti fanno parte della biometria .</p>
<p><span id="more-122"></span>PiÃ¹ volte mi sono trovato a dover implementare diversi algoritmi in proposito, anche molto complessi, per poi archiviare il pezzo di codice e lasciarlo li come un piccolo file a se stante .</p>
<p>CosÃ¬ ho pensato di scrivere un unica grande classe C++ che racchiudesse la maggiorparte degli algoritmi biometrici o cmq dell&#8217;analisi digitale dei segnali, rappresentando l&#8217;oggetto principale come uno spazio N-dimensionale a discrezione di colui che usa la libreria .</p>
<p>In questa classe template, oltre alle normali operazioni matriciali/vettoriali, ho implementato tra i tanti i seguenti algoritmi :</p>
<ul>
<li>Applicazione di maschere di sottrazione o addizione .</li>
<li>Caricamento e salvataggio sia di matrici &#8220;raw&#8221; che di qualsiasi formato immagine .</li>
<li>Redimensionamento adattivo e/o selettivo .</li>
<li>Filtering passa basso e passa alto .</li>
<li>Filtering della maschera di orientamento .</li>
<li>Operatore di Gabor .</li>
<li>Calcolo dell&#8217;entropia .</li>
<li>Rilevatore di bordi tramite algoritmo di Prewitt .</li>
<li>Thinning tramite l&#8217;algoritmo Hit-and-miss .</li>
<li>Calcolo della mappa delle frequenze e dell&#8217;istogramma associato allo spettro dei colori .</li>
<li>Blurring e softening .</li>
<li>Dilatazione matriciale .</li>
<li>Erosione matriciale .</li>
<li>Media, variazione, etc .</li>
<li>Binarizzazione e normalizzazione della matrice .</li>
<li>Trasposizione della matrice .</li>
<li>Integralizzazione della matrice .</li>
<li>Calcolo delle &#8220;features&#8221; di un impronta digitale .</li>
</ul>
<p>La classe, contenuta in un unico file .hpp, Ã¨ totalmente documentata seguendo lo standard doxy cosÃ¬ da poter essere facilmente implementabile .</p>
<p><strong>Scarica</strong> <strong><a href="http://www.evilsocket.net/sources/msp.hpp.txt" target="_blank">msp.hpp</a></strong></p>
<p>Inoltre vi fornisco tre programmi di esempio, tanto per farvi capire le potenzialitÃ  di questa classe .</p>
<ol>
<li><a href="http://www.evilsocket.net/sources/msp_ex1.cpp.txt" target="_blank">Creazione di una rete neurale a perceptron e relativa fase di training su un pattern noto .</a></li>
<li><a href="http://www.evilsocket.net/sources/msp_ex2.cpp.txt" target="_blank">Acquisizione video da una webcam e sensore di movimento nell&#8217;inquadratura .</a></li>
<li><a href="http://www.evilsocket.net/sources/msp_ex3.cpp.txt" target="_blank">Calcolo delle features di un impronta digitale e preparazione al matching con un database noto .</a></li>
</ol>
<p>Spero che vi piaccia <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=122">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=122&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/1004/redis-client-library-for-hybris.html' rel='bookmark' title='Permanent Link: Redis client library for Hybris'>Redis client library for Hybris</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
<li><a href='http://www.evilsocket.net/12/neural-network.html' rel='bookmark' title='Permanent Link: Neural Network'>Neural Network</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C/C++ Code Optimization</title>
		<link>http://www.evilsocket.net/66/cc-code-optimization.html</link>
		<comments>http://www.evilsocket.net/66/cc-code-optimization.html#comments</comments>
		<pubDate>Wed, 13 May 2009 07:28:58 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Papers]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[code optimization]]></category>
		<category><![CDATA[codice]]></category>
		<category><![CDATA[ottimizzazione]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=66</guid>
		<description><![CDATA[Alcune semplici regole da seguire per scrivere codice C/C++ ottimizzato e performante, senza inutili sprechi di risorse quali cpu, ram e quant&#8217;altro . Scarica Related posts:C/C++ Function Pointers Estrazione delle features dalle impronte digitali


Related posts:<ol><li><a href='http://www.evilsocket.net/54/cc-function-pointers.html' rel='bookmark' title='Permanent Link: C/C++ Function Pointers'>C/C++ Function Pointers</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Alcune semplici regole da seguire per scrivere codice C/C++ ottimizzato e performante, senza inutili sprechi di risorse quali cpu, ram e quant&#8217;altro .</p>
<p><a href="http://www.evilsocket.net/papers/ottimizzazione.pdf" target="_blank">Scarica</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=66">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=66&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/54/cc-function-pointers.html' rel='bookmark' title='Permanent Link: C/C++ Function Pointers'>C/C++ Function Pointers</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/66/cc-code-optimization.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C/C++ Function Pointers</title>
		<link>http://www.evilsocket.net/54/cc-function-pointers.html</link>
		<comments>http://www.evilsocket.net/54/cc-function-pointers.html#comments</comments>
		<pubDate>Wed, 13 May 2009 07:17:24 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Papers]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[function pointers]]></category>
		<category><![CDATA[puntatori a funzione]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=54</guid>
		<description><![CDATA[In questo paper spiego cosa sono i function pointers, o puntatori a funzione, nel C/C++, come utilizzarli e qualche implementazione di esempio per rendere il tutto piÃ¹ chiaro ed intuitivo . Scarica Related posts:StackHack C/C++ Code Optimization Estrazione delle features dalle impronte digitali


Related posts:<ol><li><a href='http://www.evilsocket.net/76/stackhack.html' rel='bookmark' title='Permanent Link: StackHack'>StackHack</a></li>
<li><a href='http://www.evilsocket.net/66/cc-code-optimization.html' rel='bookmark' title='Permanent Link: C/C++ Code Optimization'>C/C++ Code Optimization</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In questo paper spiego cosa sono i function pointers, o puntatori a funzione, nel C/C++, come utilizzarli e qualche implementazione di esempio per rendere il tutto piÃ¹ chiaro ed intuitivo .</p>
<p><a href="http://www.evilsocket.net/papers/cpp_e_puntatori_a_funzione.pdf" target="_blank">Scarica</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=54">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=54&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/76/stackhack.html' rel='bookmark' title='Permanent Link: StackHack'>StackHack</a></li>
<li><a href='http://www.evilsocket.net/66/cc-code-optimization.html' rel='bookmark' title='Permanent Link: C/C++ Code Optimization'>C/C++ Code Optimization</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/54/cc-function-pointers.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
