<?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>Daniele Demichelis &#187; Aneddoti Informatici</title>
	<atom:link href="http://www.danidemi.com/mainwww/category/aneddoti-informatici/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danidemi.com/mainwww</link>
	<description>There are 10 types of people in the world: Those who understand binary, and those who don&#039;t...</description>
	<lastBuildDate>Wed, 14 Apr 2010 08:14:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SSH Cheat Sheet</title>
		<link>http://www.danidemi.com/mainwww/2010/02/ssh-cheat-sheet/</link>
		<comments>http://www.danidemi.com/mainwww/2010/02/ssh-cheat-sheet/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 11:39:00 +0000</pubDate>
		<dc:creator>danidemi</dc:creator>
				<category><![CDATA[Aneddoti Informatici]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.danidemi.com/mainwww/2010/02/ssh-cheat-sheet/</guid>
		<description><![CDATA[Task: login to remote host with username and password
<p>Login to host:</p>



ssh &#160;-l &#160;[login] -p [port]



Task: login to remote host using a configured alias
<p>First of all you need to configure the alias. The SSH configuration file is normlly stored in ~/.ssh/config. This is an example.</p>

host


&#160;Hostname [hostname]



&#160;Port [port]



&#160;ForwardAgent [yes&#124;no]



&#160;ForwardX11 [yes&#124;no]



&#160;User [login]



<p>Once you have an alias, you can [...]]]></description>
			<content:encoded><![CDATA[<h2>Task: login to remote host with username and password</h2>
<p>Login to host:</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">ssh &nbsp;-l &nbsp;[login] -p [port]</div>
</li>
</ol>
</div>
<h2>Task: login to remote host using a configured alias</h2>
<p>First of all you need to configure the alias. The SSH configuration file is normlly stored in ~/.ssh/config. This is an example.</p>
<div class="geshi no shell">
<div class="head">host</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;Hostname [hostname]
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;Port [port]
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;ForwardAgent [yes|no]
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;ForwardX11 [yes|no]
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;User [login]</div>
</li>
</ol>
</div>
<p>Once you have an alias, you can specify the alias name instead of specify all the options as parameters.</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">ssh [alias]</div>
</li>
</ol>
</div>
<h2>Task: login to remote host using key authentication</h2>
<ul>
<li>Put your private key in ~/.ssh/id_rsa</li>
<li>Ensure nobody can access it. After all it&#8217;s your private key.</li>
<li>Transfer your public key in your remote host home directory</li>
<li>On the remote host append the public key to the list of authorized ones with the following command.
<div class="geshi no shell">
<div class="head">cat  [public_key_file] &gt;&gt; ~/.ssh/authorized_keys</div>
<ol>
<li class="li1">
<div class="de1">&lt;/pre&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;li&gt;Pay attention to the fact that the authorized_key file should be writeable only by the owner. If you forget that, the key based authentication will definitely fail.&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/ul&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;h2&gt;Task: copy a local file to a remote host&lt;/h2&gt;
</div>
</li>
<li class="li1">
<div class="de1">Copying file to host:
</div>
</li>
<li class="li1">
<div class="de1">&lt;pre lang=&quot;shell&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">scp [local_file] [remote_user]@[remote_host]:[path]</div>
</li>
</ol>
</div>
<p>Copy the local file &#8220;readme.txt&#8221; on your remote host folder (don&#8217;t forget the &#8220;~&#8221;) using the &#8220;john&#8221; username. Let&#8217;s suppose the remote host is called &#8220;wonderland.org&#8221;.</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">scp readme.txt john@wonderland.org:~</div>
</li>
</ol>
</div>
<p>Copying file from host:</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">scp scp [remote_user]@[remote_host]:[remote_file_path][local_file_path]</div>
</li>
</ol>
</div>
<div class="flockcredit" style="text-align: right; color: #ccc; font-size: x-small;">Blogged with the <a style="color: #999; font-weight: bold;" title="Flock Browser" href="http://www.flock.com/blogged-with-flock" target="_new">Flock Browser</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.danidemi.com/mainwww/2010/02/ssh-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Affidabilità dei sistemi informatici bancari</title>
		<link>http://www.danidemi.com/mainwww/2009/11/affidabilita-dei-sistemi-informatici-bancari/</link>
		<comments>http://www.danidemi.com/mainwww/2009/11/affidabilita-dei-sistemi-informatici-bancari/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 23:17:02 +0000</pubDate>
		<dc:creator>danidemi</dc:creator>
				<category><![CDATA[Aneddoti Informatici]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[sviluppo]]></category>

		<guid isPermaLink="false">http://www.danidemi.com/mainwww/?p=34</guid>
		<description><![CDATA[<p>Stavo lavorando in una banca ad un porting verso tecnologie attuali di un sistema esistente da qualche anno. Nell’ambito di tale progetto dovevo realizzare un modulo del sistema il cui compito era sostanzialmente quello di estrarre da DB dei record con un campo data maggiore o uguale alla data di odierna, eseguire alcune elaborazioni e [...]]]></description>
			<content:encoded><![CDATA[<p>Stavo lavorando in una banca ad un porting verso tecnologie attuali di un sistema esistente da qualche anno. Nell’ambito di tale progetto dovevo realizzare un modulo del sistema il cui compito era sostanzialmente quello di estrarre da DB dei record con un campo data maggiore o uguale alla data di odierna, eseguire alcune elaborazioni e scriverli in un file da inviare ad un sistema a valle per una successiva elaborazione.</p>
<p>Il campo che conteneva la data era un campo CHAR di 8 caratteri e ci era stato assicurato che tutte le date erano nel formato YYYYMMDD. In questo modo per selezionare i record con una data maggiore di quella odierna si poteva sruttare l’ordinamento alfabetico e ad esempio scrivere una condizione del tipo</p>
<pre>data &gt;= '20052310'</pre>
<p>Facendo qualche test mi sono però accorto che in realtà nel db c’erano record con date nel formato DD/MM/YY. La condizione restituiva perciò anche record con valori pari ad esempio a “23/12/98″, “20/10/89″ ed in generale qualsiasi data il cui giorno fosse maggiore o uguale a 20. Questo perchè, in ordine strettamente alfabetico, “23/12/98″ segue “20052310″. I record che avrebbero dovuto essere stati estratti erano qualche decina, invece la presenza delle date nel formato inatteso, ne faceva salire il numero a qualche centinaio.</p>
<p>Dopo un consulto con un programmatore che lavorava alla manutenzione del sistema decidemmo di lasciare i dati scorretti sul DB ma eliminarli nella query di selezione. E quindi in dettaglio la condizione diventò&#8230;</p>
<pre>data &gt;= '20052310' AND data not like '__/__/__'</pre>
<p>Tutto sembrava andare per il meglio, il file contenente i risultati divenne molto più corto e l’elaborazione successiva ne avrebbe certamente giovato.</p>
<p>Mi pareva comunque strano come per i sette o otto anni precedenti il sistema a valle avesse elaborato ogni giorno centinaia di record inutili senza che sollevare il minimo problema.</p>
<p>In fase di test un file campione genenrato dal nuovo sistema doveva essere caricato dal sistema successivo. Il giorno del test ricevetti una telefonata ed il tecnico all’altro capo del filo mi disse che il test era fallito poichè alcuni record contenuti nel file non trovano riscontro nei dati di altre tabelle. Pronto ad affrontare una noiosissima sessione di debug mi accorsi che nel file prodotto non trovavo minimamente traccia dei record errati a cui si era riferito il tecnico.</p>
<p>Dopo una ricerca trovai i record incriminati nel file che era stato prodotto non dal nostro nuovo sistema ma dal vecchio sistema correntemente in produzione. Insomma, per una svista, il tecnico aveva sottoposto a test non il file prodotto dal nuovo sistema, ma quello prodotto quotidianamente, ormai da anni, dal sistema in produzione. E ci aveva trovato pure degli errori!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danidemi.com/mainwww/2009/11/affidabilita-dei-sistemi-informatici-bancari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
