<?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>iWebDev&#039;s blog &#187; to</title>
	<atom:link href="http://www.iwebdev.it/blog/?author=1&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.iwebdev.it/blog</link>
	<description>and everything goes around</description>
	<lastBuildDate>Sat, 06 Aug 2011 23:08:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Redmine as project management on OpenBSD</title>
		<link>http://www.iwebdev.it/blog/?p=229</link>
		<comments>http://www.iwebdev.it/blog/?p=229#comments</comments>
		<pubDate>Sat, 06 Aug 2011 23:06:55 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Ruby on rails]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=229</guid>
		<description><![CDATA[Redmine is a web-based project management and bug-tracking tool, it includes calendar and Gantt charts to aid visual representation of projects and their deadlines and supports multiple projects. The integration throughout the entire system is excellent and we can create nested subprojects and move issues/tickets from one project to another. For each project we are [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Redmine</strong> is a web-based project management and <strong>bug-tracking tool</strong>, it includes calendar and Gantt charts to aid visual representation of projects and their deadlines and supports multiple projects. The integration throughout the entire system is excellent and we can create nested <strong>subprojects</strong> and move issues/tickets from one project to another. For each project we are able to assign different users and turn certain functionality (milestones, time tracking, source control,..) on and off. This article describes how to install Redmine on <strong>OpenBSD 4.9</strong>. We will be using the official OpenBSD port from CVS. We will start by installing the prerequisites as binaries because if you have a fast internet connection, it is faster than building the ports from src. Lets install <strong>Ruby-On-Rails</strong>:</p>
<blockquote><p>pkg_add -i ruby-1.9.2.136p0</p>
<p>pkg_add ruby-gems</p></blockquote>
<p>Official releases include the appropriate Rails version in their <code>vendor</code> directory. So no particular action is needed. If we checkout the source from the Redmine repository, we can install a specific Rails version on your machine by running:</p>
<blockquote><p>gem18 install rails -v=2.3.11</p></blockquote>
<p>Install Rack:</p>
<blockquote><p>gem28 install rack -v=1.1.0</p>
<p>gem18 install -v=0.4.2 i18n</p>
<p>gem18 install mysql</p></blockquote>
<p><strong>Redmine</strong></p>
<p>It is recommended that the majority of users install the proper point releases of red mine. It is not recommended to install redmine from trunk.</p>
<p><strong>Installation procedure</strong></p>
<ul>
<li>Get the Redmine source code by either downloading a packaged release or checking out the code repository. See <a href="http://www.redmine.org/projects/redmine/wiki/Download">Download</a>.</li>
<li>Create an empty database and accompanying user named &#8221;redmine&#8221; for example.</li>
</ul>
<blockquote><p>create database redmine character set utf8;<br />
create user &#8216;redmine&#8217;@'localhost&#8217; identified by &#8216;my_password&#8217;;<br />
grant all privileges on redmine.* to &#8216;redmine&#8217;@'localhost&#8217;;</p></blockquote>
<ul>
<li>Copy <strong>config/database.yml.example</strong> to <strong>config/database.yml</strong> and edit this file in order to configure your database settings for &#8220;production&#8221; environment. Example for a MySQL database (we have also to specify the mysql socket file):</li>
</ul>
<blockquote><p>production:<br />
adapter: mysql<br />
database: redmine<br />
host: localhost<br />
port: 3307<br />
username: redmine<br />
socket: /var/www/var/run/mysql/mysql.sock<br />
password: my_password</p></blockquote>
<ul>
<li>Generate a session store secret.</li>
</ul>
<blockquote><p>rake generate_session_store</p></blockquote>
<ul>
<li>Create the database structure, by running the following command under the application root directory. It will create tables and an administrator account.</li>
</ul>
<blockquote><p>RAILS_ENV=production rake db:migrate</p></blockquote>
<ul>
<li>Insert default configuration data in database, by running the following command:</li>
</ul>
<blockquote><p>RAILS_ENV=production rake redmine:load_default_data</p></blockquote>
<ul>
<li>Test the installation by running WEBrick web server:</li>
</ul>
<blockquote><p>ruby script/server webrick -e production</p></blockquote>
<p>Once WEBrick has started, point your browser to <a href="http://localhost:3000/">http://localhost:3000/</a>. You should now see the application welcome page:</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/08/redmine-login.png"><img class="aligncenter size-medium wp-image-234" title="redmine-login" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/08/redmine-login-300x151.png" alt="redmine login" width="300" height="151" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=229</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fuzzy hashing PHP Extension on OpenBSD 4.9</title>
		<link>http://www.iwebdev.it/blog/?p=209</link>
		<comments>http://www.iwebdev.it/blog/?p=209#comments</comments>
		<pubDate>Thu, 30 Jun 2011 21:15:49 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[fuzzy hashing]]></category>
		<category><![CDATA[libfuzzy.so]]></category>
		<category><![CDATA[php hash extension]]></category>
		<category><![CDATA[ssdeep]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=209</guid>
		<description><![CDATA[For years, computer forensic investigators have put a great deal of stock in the effectiveness of MD5 hashing. Now to quantify that statement, I mean specifically using MD5 hashes to identify known malicious files. The key word in that sentence is known, but let&#8217;s take that one step further to add the word “unmodified” known [...]]]></description>
			<content:encoded><![CDATA[<p>For years, computer forensic investigators have put a great deal of stock in the effectiveness of MD5 hashing. Now to quantify that statement, I mean specifically using MD5 hashes to identify known malicious files. The key word in that sentence is known, but let&#8217;s take that one step further to add the word “unmodified” known files. One minor change to a file, and the MD5 hash is now completely different, rendering the investigators search totally ineffective. So, what&#8217;s the answer? Easy, <strong>fuzzy hashing</strong>.</p>
<p>Fuzzy hashing allows the discovery of potentially incriminating documents that may not be located using traditional hashing methods.	The use of the fuzzy hash is much like the fuzzy logic search; it is looking for <strong>documents that are similar but not exactly the same</strong>, called homologous files. Homologous files have identical strings of binary data; however they are not exact duplicates. An example would be two identical word processor documents, with a new paragraph added in the middle of one. To locate homologous files, they must be hashed traditionally in segments to identify the strings of identical data.</p>
<p>Download the <strong>ssdeep</strong> package from the following <a title="ssdeep on sourceforge" href="http://ssdeep.sourceforge.net/" target="_blank">link</a>. Once you downloaded it you have to extract and compile the package. The commands to perform these operations are:</p>
<blockquote><p>wget http://downloads.sourceforge.net/project/ssdeep/ssdeep-2.6/ssdeep-2.6.tar.gz?r=http%3A%2F%2Fssdeep.sourceforge.net%2F&amp;ts=1309466525&amp;use_mirror=ovh</p>
<p>tar zxvfp ssdeep-2.6.tar.gz</p></blockquote>
<p>and then</p>
<blockquote><p>./configure &amp;&amp; make &amp;&amp; make install</p></blockquote>
<p>Once you finished to install the tool you can perform this test: (ssdeep -V)</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_version.png"><img class="aligncenter size-medium wp-image-210" title="ssdeep check version" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_version-300x160.png" alt="" width="300" height="160" /></a>We have installed the ssdeep tool and it&#8217;s time to proceed to install the <strong>ssdeep PHP extension</strong>. Before to proceed you have to install the <strong>pear</strong> and the <strong>autoconf packages</strong> in order to allow you to use the pecl command:</p>
<blockquote><p>pkg_add -i pear-1.7.2</p>
<p>pkg_add -i autoconf</p>
<p>export AUTOCONF_VERSION=2.64</p></blockquote>
<p>After that you can try to install the PHP extension with the pecl system (<strong>pecl install ssdeep</strong>) but on my side I raised some issue related to the name of the <strong>libfuzzy.so</strong> and the error was</p>
<blockquote><p>checking for ssdeep&#8230; configure: error: &#8220;Could not find &#8216;libfuzzy.so&#8217;. Try specifying the path to the ssdeep build directory.&#8221;</p></blockquote>
<p>If you check in the <strong>/usr/local/lib</strong> folder you should find instead the <strong>libfuzzy.so.2.0</strong> library. In order to avoid this issue I decided to install the extension manually. I download the pecl package from the original path (here the <a title="pecl package ssdeep" href="http://pecl.php.net/package/ssdeep" target="_blank">link</a> to download it). Once you downloaded the package you have to extract it and run the command related to PHP. Here below the commands required:</p>
<blockquote><p>wget http://pecl.php.net/get/ssdeep-1.0.2.tgz</p>
<p>tar zxvfp ssdeep-1.0.2.tar.gz</p>
<p>cd ssdeep-1.0.2</p>
<p>phpize</p>
<p>./configure</p></blockquote>
<p>As you can see from the configure output you raised the same error, so you have to edit the configure file and change the name of the libfuzzy.so required with the <strong>libfuzzy.so.2.0</strong> at line 4174.</p>
<blockquote><p>SSDEEP_LIB_FILENAME=&#8221;lib$SSDEEP_LIB_NAME.so.2.0&#8243;</p></blockquote>
<p>Now you have to perform the make and make install command</p>
<blockquote><p>make &amp;&amp; make install</p></blockquote>
<p>You should get the following message from the shell:</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_php_extension.png"><img class="aligncenter size-medium wp-image-211" title="ssdeep php extension" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_php_extension-300x160.png" alt="" width="300" height="160" /></a></p>
<p>The last step is to add the <strong>ssdeep.so extension</strong> in the php.ini:</p>
<blockquote><p>nano /var/www/conf/php.ini</p></blockquote>
<p>and add the following line in the extension section:</p>
<blockquote><p>extension=ssdeep.so</p></blockquote>
<p>Once you saved the file you have to restart the Apache service:</p>
<blockquote><p>apachectl stop</p>
<p>apachectl start</p></blockquote>
<p>If you check the phpinfo file, you should get the following section:</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_extension.png"><img class="aligncenter size-medium wp-image-213" title="ssdeep check extension" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_extension-300x66.png" alt="" width="300" height="66" /></a>If you want to check the fully functionality of the extension installed you can copy the &#8220;example.php&#8221; file stored in the pecl package and run it into your webserver. In order to do that you have to perform this command (we supposed to be in ssdeep-1.0.2 folder):</p>
<blockquote><p>mv examples/example.php /var/www/htdocs/</p></blockquote>
<p>and the output should be this:</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_function.png"><img class="aligncenter size-medium wp-image-214" title="ssdeep check PHP function" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/06/ssdeep_check_function-300x25.png" alt="" width="300" height="25" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=209</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Event Format (CEF)</title>
		<link>http://www.iwebdev.it/blog/?p=186</link>
		<comments>http://www.iwebdev.it/blog/?p=186#comments</comments>
		<pubDate>Sat, 16 Apr 2011 14:59:57 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Log event]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[CEF]]></category>
		<category><![CDATA[Common Event Format]]></category>
		<category><![CDATA[Log management]]></category>
		<category><![CDATA[Syslog]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=186</guid>
		<description><![CDATA[Each vendor has its own format for reporting event information, these event formats often lack the key information necessary to integrate the events from their devices. The ArcSight standard attempts to improve the interoperability of infrastructure devices by aligning the logging output from various technology vendors. The Common Event Format (CEF) is an open log [...]]]></description>
			<content:encoded><![CDATA[<p>Each vendor has its own format for reporting event information, these event formats often lack the key information necessary to integrate the events from their devices. The ArcSight standard attempts to improve the interoperability of infrastructure devices by aligning the logging output from various technology vendors. The Common Event Format (CEF) is an open log management standard that improves the interoperability of security-related information from different security and network devices and applications. To simplify integration, the syslog message format is used as a transport mechanism. This applies a common prefix to each message, containing the date and hostname, as shown below.</p>
<blockquote><p>Mar 16 16:35:23 host <em>message</em></p></blockquote>
<p>If an event producer is unable to write syslog messages, it is still possible to write the events to a file. To do so:</p>
<ol>
<li>Omit the syslog header (show above);</li>
<li>Begin the message with the format show below</li>
</ol>
<blockquote><p>CEF:<em>Version</em>|<em>Device Vendor</em>|<em>Device Product</em>|<em>Device Version</em>|<em>Signature ID</em>|<em>Name</em>|<em>Severity</em>|<em>Extension</em></p></blockquote>
<p>After the mandatory CEF: prefix, the remainder of the message is formatted using a common prefix composed of fields delimited by a bar (&#8220;|&#8221;) character. The <em>Extension </em>part of the message is a placeholder for additional fields.</p>
<p><strong>Definitions of prefix fields</strong></p>
<p><em>Version </em>is an integer and identifies the version of the CEF format. Event consumers use this information to determine what the following fields represent.</p>
<p><em>Device Vendor</em>, <em>Device Product </em>and <em>Device Version </em>are strings that uniquely identify the type of sending device. No two products may use the same device-vendor and device-product pair. There is no central authority managing these pairs. Event producers have to ensure that they assign unique name pairs.</p>
<p><em>Signature ID </em>is a unique identifier per event-type. This can be a string or an integer. Signature ID identifies the type of event reported. In the intrusion detection system (IDS) world, each signature or rule that detects certain activity has a unique signature ID assigned. This is a requirement for other types of devices as well, and helps correlation engines deal with the events.</p>
<p><em>Name </em>is a string representing a human-readable and understandable description of the event. The event name should not contain information that is specifically mentioned in other fields. For example: “Port scan from 10.0.0.1 targeting 20.1.1.1” is not a good event name. It should be: “Port scan”. The other information is redundant and can be picked up from the other fields.</p>
<p><em>Severity </em>is an integer and reflects the importance of the event. Only numbers from 0 to 10 are allowed, where 10 indicates the most important event.</p>
<p><em>Extension </em>is a collection of key-value pairs. The keys are part of a predefined set. The standard allows for including additional keys as outlined under “The Extension Dictionary”. An event can contain any number of key- value pairs in any order, separated by spaces (“ “). The following example illustrates a CEF message using Syslog transport:</p>
<blockquote><p>Mar 16 16:43:10 host CEF:0|security|threatmanager|1.0|100|trojan successfully stopped|10|src=10.0.0.192 dst=12.121.122.82 spt=1232</p></blockquote>
<p><strong>Character encoding</strong></p>
<p>Because CEF uses the UTF-8 Unicode encoding method, please note the following:</p>
<ul>
<li>The entire message has to be <strong>UTF-8 </strong>encoded.</li>
<li>If a <strong>pipe </strong>(|) is used in the prefix, it has to be escaped with a backslash (\). But note that pipes in the extension do not need escaping. For example:</li>
</ul>
<blockquote><p>Mar 16 16:26:45 host CEF:0|security|threatmanager|1.0|100|detected a malware <strong>\| </strong>in message|10|src=10.0.0.192 act=blocked a | dst=12.1.1.1</p></blockquote>
<ul>
<li>If a <strong>backslash </strong>(\) is used in the prefix or the extension, it has to be escaped with another backslash (\). For example:</li>
</ul>
<blockquote><p>Mar 16 16:46:10 host CEF:0|security|threatmanager|1.0|100|detected a malware <strong>\\ </strong>in packet|10|src=10.0.0.192 act=blocked a \\ dst=1.1.1.1</p></blockquote>
<ul>
<li>If an <strong>equal sign </strong>(=) is used in the extensions, it has to be escaped with a backslash (\). Equal signs in the prefix need no escaping. For example:</li>
</ul>
<blockquote><p>Mar 16 16:46:10 host CEF:0|security|threatmanager|1.0|100|detected a malware <strong>\= </strong>in packet|10|src=10.0.0.192 act=blocked a \= dst=1.1.1.1</p></blockquote>
<ul>
<li><strong>Multi-line </strong>fields can be sent by CEF by encoding the newline character as <strong>\n </strong>or <strong>\r</strong>. Note that multiple lines are only allowed in the value part of the extensions. For example:</li>
</ul>
<blockquote><p>Mar 16 16:46:10 host CEF:0|security|threatmanager|1.0|100|detected a malware <strong>\n </strong>in packet|10|src=10.0.0.192 msg=blocked a <strong>\n</strong> No action needed dst=1.1.1.1</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=186</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preventing Duplicate Content</title>
		<link>http://www.iwebdev.it/blog/?p=175</link>
		<comments>http://www.iwebdev.it/blog/?p=175#comments</comments>
		<pubDate>Thu, 17 Mar 2011 15:00:50 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[301 Redirect]]></category>
		<category><![CDATA[Duplicate Content]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[Redirect]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=175</guid>
		<description><![CDATA[Duplicate content is a problem with many websites, and most webmasters don&#8217;t realise they are doing anything wrong. Most search engines want to provide relevant results for their users, it&#8217;s how Google got successful. If the search engine was to return five identical pages on the same page of the search results, it&#8217;s not likely to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Duplicate content is a problem with many websites</strong>, and most webmasters don&#8217;t realise they are doing anything wrong. Most search engines want to provide relevant results for their users, it&#8217;s how Google got successful. If the search engine was to return five identical pages on the same page of the search results, it&#8217;s not likely to be useful to the searcher. Many <strong>search engines have filters in place to remove the duplicate listings</strong> &#8211; this keeps their search results clean, and is overall a good feature. From a webmaster&#8217;s point of view however, you don&#8217;t know which copy of the content the search engine is hiding, and it can put a real damper on your marketing efforts if the search engines won&#8217;t show the copy you are trying to promote. A common request is to be able to remove or redirect the &#8220;index.php&#8221; from appearing in the url. This is possible only with server-side technology like <strong>&#8220;.htaccess&#8221; configuration files</strong> or your main server config by using the Mod_Rewrite Rewrite Module. Duplicate content occurs when the search engine finds identical content at different URLs like:</p>
<p><strong>www and non-www</strong></p>
<blockquote><p>http://www.iwebdev.it and http://iwebdev.it</p></blockquote>
<p>In most cases these will return the same page, in other words, a duplicate of your entire site.</p>
<p><strong>root and index</strong></p>
<blockquote><p>http://www.iwebdev.it (root) and http://iwebdev.it/index.php</p></blockquote>
<p>Most people&#8217;s homepages are available by typing either URL &#8211; duplicate content.</p>
<p><strong>Session IDs</strong></p>
<blockquote><p>http://www.iwebdev.it/project.php?PHPSESSID=24FD6437ACE578FEA5745</p></blockquote>
<p>This problem effects many dynamic sites, including PHP, ASP and Cold Fusion sites. Many forums are poorly indexed because of this as well. Session IDs change every time a visitor comes to your site. In other words, every time the Search engine indexes your site, it gets the same content with a different URL. Amazingly, most search engines aren&#8217;t clever enough to detect this and fix it, so it&#8217;s up to you as a webmaster.</p>
<p><strong>One page, multiple URLs</strong></p>
<blockquote><p>http://www.iwebdev.it/project?category=web&amp;product=design and http://www.iwebdev.it/project.php?category=software&amp;product=design</p></blockquote>
<p>A product may be allocated to more than one category &#8211; in this case the &#8220;product detail&#8221; page is identical, but it&#8217;s available via both URLs.</p>
<p><strong>Removing Duplicate Content</strong><br />
Having duplicate content on your site can make marketing significantly more difficult, especially when you are marketing the non-www version and Google is only showing the www version. Because you can&#8217;t tell the search engines which is the &#8220;original&#8221; copy, you must prevent any duplicate content from occuring on your site.</p>
<p><strong>www and non-www</strong><br />
I prefer to use the www version of my domain (no particular reason, it seems to look better on paper). If you are using Apache as your web server, you can include the following lines in your .htaccess file (change the values to your own of course).</p>
<blockquote><p>RewriteCond %{HTTP_HOST} ^iwebdev.it<br/>RewriteRule (.*) http://www.iwebdev.it/$1 [R=301,L]</p></blockquote>
<p>If your webhost does not let you edit the .htaccess file, I would consider finding a new host. When it comes to removing duplicate content and producing search engine friendly URLs, Apache&#8217;s .htaccess is too good to ignore. If your website is hosted on Microsoft IIS, I recommend ISAPI Rewrite instead.</p>
<p><strong>Remove all reference to &#8220;index.php&#8221;</strong><br />
Your homepage should never be referred to as index.htm, index.php, index.asp etc. When you build incoming links, you will always get links to www.iwebdev.it &#8211; your internal links should always be the same. One of my sites had a different pagerank on &#8220;/&#8221; (root) and &#8220;index.php&#8221; because the internal links were pointing to index.php, and creating duplicate content. Why go to the trouble of promoting two &#8220;different&#8221; pages at half strength when you can promote a single URL at full strength? After you have removed all references to index.php you should set up a 301 redirect (below) to redirect index.htm to / (root).</p>
<p><strong>Remove Session IDs</strong><br />
I can give advice for PHP users, ASP and CF users should do their own research on exactly how to remove these. With PHP, if the user does not support cookies, the Session ID is automatically inserted into the URL, as a way of maintaining state between pages. Most search engines don&#8217;t support cookies, which means they get a different PHPSESSID in the URL every time they visit &#8211; this leads to very ugly indexing. There is no ideal solution to this, so I have to compromise. When sessions are a requirement for the website, I would rather lose a small number of visitors who don&#8217;t have cookies, than put up with PHPSESSID in my search engine listings (and potentially lose a lot more visitors). To disable PHPSESSID in the URL, you should insert the following code into .htaccess</p>
<blockquote><p>php_value session.use_only_cookies 1 <br/>php_value session.use_trans_sid 0</p></blockquote>
<p>This will mean visitors with cookies turned off won&#8217;t be able to use any features of your site that use sessions, eg logging in, or remembering form data etc.</p>
<p><strong>Ensure all database generated page have unique URLs</strong><br />
This is somewhat more complicated, depending how your site is setup. When I design pages, I&#8217;m always wary of the &#8220;one page, one url&#8221; rule, and I design my page structure accordingly. If a product belongs to 2 categories, I ensure that both categories link to the same URL, or modify the content significantly on both versions of the page so it&#8217;s not &#8220;identical&#8221; in the eyes of the search engine.</p>
<p><strong>301 Redirections</strong><br />
A 301 redirect is the correct way of telling the Search engines that a page has moved permanently. When you still want the non-www domain name to work, you should 301 redirect the visitor to the www domain. The visitor will see the address change and Search Engines will know to ignore the non-www and use the www instead.  Use your .htaccess to 301 redirect visitors from index.htm to / and any other pages that get renamed. eg.</p>
<blockquote><p>redirect 301 /index.htm http://www.iwebdev.it/</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collect syslog events to database (second part)</title>
		<link>http://www.iwebdev.it/blog/?p=163</link>
		<comments>http://www.iwebdev.it/blog/?p=163#comments</comments>
		<pubDate>Thu, 10 Mar 2011 22:31:36 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Log event]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[destination]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[syslog-ng]]></category>
		<category><![CDATA[syslog-ng.conf]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=163</guid>
		<description><![CDATA[In the previous post you installed the syslog-ng 3.2.2. Now you have to configure our syslog-ng daemon to collect events to database; for this tutorial we choosed a MySQL and Postgres databases. First of all you have to configure the syslog-ng configuration file. nano /opt/syslog-ng/etc/syslog-ng.conf Syslog-ng receives log messages from a source. To define a [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post you installed the syslog-ng 3.2.2. Now you have to <strong>configure our syslog-ng daemon to collect events to database</strong>; for this tutorial we choosed a <strong>MySQL</strong> and <strong>Postgres</strong> databases. First of all you have to configure the syslog-ng configuration file.</p>
<blockquote><p>nano /opt/syslog-ng/etc/syslog-ng.conf</p></blockquote>
<p>Syslog-ng receives log messages from a <strong>source</strong>. To define a source you should follow the following syntax:</p>
<blockquote><p>source &lt;identifier&gt; { source-driver(params); source-driver(params); &#8230; };</p></blockquote>
<p>For example you have to define the following source:</p>
<blockquote>
<div>source my_source{ tcp ( port ( 614 ) ); };</div>
</blockquote>
<p>In syslog-ng log messages are sent to files. The <strong>destination</strong> syntax is very similar to sources:</p>
<blockquote><p>destination &lt;identifier&gt; {destination-driver(params); destination-driver(params); &#8230; };</p></blockquote>
<p>You will be normally logging to a file, but you could log to a different destination-driver: pipe, unix socket, TCP-UDP ports, terminals or to specific programs.</p>
<blockquote>
<div>destination my_dest{ file(&#8220;/var/log/mylog.txt&#8221;); };</div>
</blockquote>
<div>If you want to collect syslog to database you have to create mysql database and table</div>
<blockquote><p>CREATE DATABASE `syslog` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;</p>
<p>USE `syslog`;</p>
<p>CREATE TABLE IF NOT EXISTS `logs` (<br />
`id` bigint(20) unsigned NOT NULL auto_increment,<br />
`host` varchar(128) collate utf8_unicode_ci default NULL,<br />
`facility` varchar(10) collate utf8_unicode_ci default NULL,<br />
`priority` varchar(10) collate utf8_unicode_ci default NULL,<br />
`level` varchar(10) collate utf8_unicode_ci default NULL,<br />
`tag` varchar(10) collate utf8_unicode_ci default NULL,<br />
`datetime` datetime default NULL,<br />
`program` varchar(15) collate utf8_unicode_ci default NULL,<br />
`msg` text collate utf8_unicode_ci,<br />
`seq` bigint(20) unsigned NOT NULL default &#8217;0&#8242;,<br />
`counter` int(11) NOT NULL default &#8217;1&#8242;,<br />
`fo` datetime default NULL,<br />
`lo` datetime default NULL,<br />
PRIMARY KEY  (`id`),<br />
KEY `datetime` (`datetime`),<br />
KEY `sequence` (`seq`),<br />
KEY `priority` (`priority`),<br />
KEY `facility` (`facility`),<br />
KEY `program` (`program`),<br />
KEY `host` (`host`) )<br />
ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;</p>
<p>GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER ON `syslog` . * TO &#8216;syslog&#8217;@'localhost&#8217;;</p>
<p>SET PASSWORD FOR &#8216;syslog&#8217;@'localhost&#8217; = PASSWORD( &#8216;syslog&#8217; )</p></blockquote>
<p>Edit syslog-ng config appropriately; add these rows in the destination section (if you want to use Postgres you have to change mysql to pgsql):</p>
<blockquote><p>sql(type(mysql)<br />
host(&#8220;localhost&#8221;)<br />
username(&#8220;syslog&#8221;)<br />
password(&#8220;syslog&#8221;)<br />
database(&#8220;syslog&#8221;)<br />
table(&#8220;logs&#8221;)<br />
columns(&#8220;host&#8221;, &#8220;facility&#8221;, &#8220;priority&#8221;, &#8220;level&#8221;, &#8220;tag&#8221;, &#8220;datetime&#8221;, &#8220;program&#8221;, &#8220;msg&#8221;, &#8220;seq&#8221;)<br />
values(&#8220;$HOST_FROM&#8221;, &#8220;$FACILITY&#8221;, &#8220;$PRIORITY&#8221;, &#8220;$LEVEL&#8221;, &#8220;$TAG&#8221;, &#8220;$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC&#8221;, &#8220;$PROGRAM&#8221;, &#8220;$MSG&#8221;, &#8220;$SEQNUM&#8221;)<br />
indexes(&#8220;host&#8221;, &#8220;facility&#8221;, &#8220;priority&#8221;, &#8220;datetime&#8221;, &#8220;program&#8221;, &#8220;seq&#8221;));</p></blockquote>
<p>Syslog-ng connects sources, filters and destinations with <strong>log</strong> statements. The syntax is:</p>
<blockquote><p>log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };</p></blockquote>
<p>So you have to connect my_source with my_dest:</p>
<blockquote>
<div>log { source( my_source ); destination( my_dest ); };</div>
</blockquote>
<div>If you want to test the configuration you have to restart the syslog-ng daemon and try to send a syslog event with <a title="Kiwi syslog generator" href="http://www.kiwisyslog.com/kiwi-sysloggen-download/">Kiwi Syslog Gen</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=163</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collect syslog events to database (first part)</title>
		<link>http://www.iwebdev.it/blog/?p=148</link>
		<comments>http://www.iwebdev.it/blog/?p=148#comments</comments>
		<pubDate>Wed, 09 Mar 2011 22:05:32 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Log event]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[CEF syntax]]></category>
		<category><![CDATA[Common Event Format]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[event log]]></category>
		<category><![CDATA[syslog-ng]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=148</guid>
		<description><![CDATA[Syslog-ng is an open source implementation of the Syslog protocol for Unix and Unix-like systems. It extends the original syslogd model with content-based filtering, rich filtering capabilities, flexible configuration options and adds important features to syslog, like using TCP for transport. In syslog-ng starting from version 3.0 there is a great option of forward logs directly to database (Postgres, or for [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Syslog-ng</strong> is an open source implementation of the Syslog protocol for Unix and Unix-like systems. It extends the original syslogd model with content-based filtering, rich filtering capabilities, flexible configuration options and adds important features to syslog, like using TCP for transport. In syslog-ng starting from version 3.0 there is a great option of <strong>forward logs directly to database</strong> (Postgres, or for that matter to MySQL, Firebird or sqlite database). In comparison with the old way of doing that, namely using a pipe and executing either a wrapper script or mysql client directly, the new way saves a great deal of resources as syslog-ng does not need to start a process every time there is a log message to log. So if you want this features you have to install syslog-ng of version 3.0 or greater with <strong>use flag sql enabled</strong>. In order to install syslog-ng you have to download the right version from the <a title="BalaBit IT Security Syslog-ng" href="http://www.balabit.com/downloads/files/syslog-ng/sources" target="_blank">official site</a>. For our purpose we download the syslog-ng 3.2.2 version (3.2.2/setups/linux-glibc2.3.6-i386).</p>
<blockquote><p>wget http://www.balabit.com/downloads/files?path=/syslog-ng/sources/3.2.2/setups/linux-glibc2.3.6-i386/syslog-ng-3.2.2-linux-glibc2.3.6-i386.run</p></blockquote>
<p>Once you downloaded the file you have to grant execute permission to syslog-ng-3.2.2-linux-glibc2.3.6-i386.run.</p>
<blockquote><p>chmod +x syslog-ng-3.2.2-linux-glibc2.3.6-i386.run</p></blockquote>
<p>Now you are ready to install the syslog-ng.</p>
<blockquote><p>./syslog-ng-3.2.2-linux-glibc2.3.6-i386.run</p></blockquote>
<p>The first screen shows the path where the syslog-ng will be installed; you have to presso &#8220;continue&#8221;.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-2.png"><img class="aligncenter size-medium wp-image-151" title="Syslog-ng installation step 1" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-2-300x180.png" alt="" width="300" height="180" /></a>The second screen resumes the parameters about your system; press &#8220;yes&#8221; if the information are corrects.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-3.png"><img class="aligncenter size-medium wp-image-152" title="Syslog-ng installation step 2" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-3-300x180.png" alt="" width="300" height="180" /></a>The third screen suggest user to check if the &#8220;/opt/syslog-ng/bin&#8221; and &#8220;/opt/syslog-ng/sbin&#8221; directory are in the <strong>search PATH</strong>. In order to do so, please add the following line into the shell profile:</p>
<blockquote><p>PATH=/opt/syslog-ng/bin:$PATH</p></blockquote>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-4.png"><img class="aligncenter size-medium wp-image-153" title="Syslog-ng installation step 3" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-4-300x180.png" alt="" width="300" height="180" /></a>The fourth step checks if there is old version of syslog-ng installed. If the installer has detected a configuration file from a previous syslog-ng installation, the user can use this old configuration file. We choose &#8220;no&#8221;.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-5.png"><img class="aligncenter size-medium wp-image-154" title="Syslog-ng installation step 4" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-5-300x180.png" alt="" width="300" height="180" /></a>The installer generates a simple configuration file and asks if user wants to receive log messages from the network. We choose &#8220;yes&#8221;.</p>
<p><img class="aligncenter size-medium wp-image-155" title="Syslog-ng installation step 5" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-6-300x180.png" alt="" width="300" height="180" />The last step asks user if he wants forward the log messages to a remote server; we choose &#8220;skip&#8221;.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-7.png"><img class="aligncenter size-medium wp-image-156" title="Syslog-ng installation step 6" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-7-300x180.png" alt="" width="300" height="180" /></a></p>
<p>Congratulation, we installed syslog-ng 3.2.2.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-8.png"><img class="aligncenter size-medium wp-image-157" title="Syslog-ng installation final step" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/03/screen-capture-8-300x180.png" alt="" width="300" height="180" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=148</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X e il Quick Look (visualizzazione rapida)</title>
		<link>http://www.iwebdev.it/blog/?p=139</link>
		<comments>http://www.iwebdev.it/blog/?p=139#comments</comments>
		<pubDate>Sun, 09 Jan 2011 21:58:04 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[anteprima archivi]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Quick Look]]></category>
		<category><![CDATA[visualizzazione rapida]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=139</guid>
		<description><![CDATA[Una delle tante features maggiormente apprezzate del sistema operativo Mac OS X è la possibilità di visualizzare in anteprima il contenuto dei file senza nemmeno aprirli; questa funzione prende il nome di Quick Look, ossia &#8220;visualizzazione rapida&#8221;. Il programma Quick Look gestisce nativamente file dei formati: PDF, HTML, QuickTime, ASCII e RTF, Apple Keynote, Pages [...]]]></description>
			<content:encoded><![CDATA[<p>Una delle tante features maggiormente apprezzate del sistema operativo Mac OS X è la possibilità di visualizzare in anteprima il contenuto dei file senza nemmeno aprirli; questa funzione prende il nome di Quick Look, ossia &#8220;visualizzazione rapida&#8221;. Il programma Quick Look gestisce nativamente file dei formati: PDF, HTML, QuickTime, ASCII e RTF, Apple Keynote, Pages e Numbers, documenti ODF, Microsoft Word, Excel, e PowerPoint (incluso OOXML), immagini RAW. Sebbene il set di file possa sembrare molto riduttivo è utile sapere che la visualizzazione rapida lavora tramite plug-in e quindi è possibile estendere i formati gesti dal programma. Una mancanza che balza subito all&#8217;occhio è la &#8220;preview&#8221; degli archivi come ZIP, TAR, GZip, BZip2, ARJ, LZH, ISO, CHM, CAB, CPIO, RAR, 7-Zip, DEB, RPM, StuffIt&#8217;s SIT, DiskDoubler, BinHex, e MacBinary. Esiste un sito (<a title="Quick Look Plug-in" href="http://www.qlplugins.com/" target="_blank">qlplugins</a>) che raccoglie al suo interno tutta una serie di plug-in per caricare attraverso Quick Look le più disparate tipologie di file tra cui gli archivi. Accedendo al plug-in richiesto (<a title="Quick Look Archivi" href="http://macitbetter.com/BetterZip-Quick-Look-Generator" target="_blank">BetterZip</a>) procediamo al download e all&#8217;installazione del pacchetto. L&#8217;installazione avviene semplicemente copiando il file &#8220;BetterZipQL.glgenerator&#8221; all&#8217;interno della directory &#8220;/Library/QuickLook&#8221;.</p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/01/screen-capture.png"><img class="size-medium wp-image-143 aligncenter" title="Installare QuickLook" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/01/screen-capture-300x132.png" alt="" width="300" height="132" /></a></p>
<p>Dopo aver copiato il file, per utilizzare il nuovo plug-in è sufficiente aprire una cartella con qualsiasi file che corrisponda ad un archivio, accedere alla visualizzazione rapida ed ecco il contenuto dell&#8217;archivio selezionato.</p>
<p><a href="http://www.iwebdev.it/blog/wp-content/uploads/2011/01/screen-capture-1.png"><img class="aligncenter size-medium wp-image-146" title="anteprima QuickLook" src="http://www.iwebdev.it/blog/wp-content/uploads/2011/01/screen-capture-1-300x142.png" alt="" width="300" height="142" /></a></p>
<p style="text-align: center;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=139</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merry Christmas and Happy New Year</title>
		<link>http://www.iwebdev.it/blog/?p=129</link>
		<comments>http://www.iwebdev.it/blog/?p=129#comments</comments>
		<pubDate>Fri, 24 Dec 2010 15:48:15 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=129</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-130" title="merry christmas and happy new year" src="http://www.iwebdev.it/blog/wp-content/uploads/2010/12/xmas-300x109.png" alt="" width="300" height="109" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=129</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LAMPP vs LD_LIBRARY_PATH</title>
		<link>http://www.iwebdev.it/blog/?p=116</link>
		<comments>http://www.iwebdev.it/blog/?p=116#comments</comments>
		<pubDate>Tue, 14 Dec 2010 20:30:13 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[lampp]]></category>
		<category><![CDATA[ld_library_path]]></category>
		<category><![CDATA[tsk]]></category>
		<category><![CDATA[ubuntu 10.10]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=116</guid>
		<description><![CDATA[Al fine di velocizzare il processo di installazione di una web application spesso si ricorre a package già &#8220;pre-configurati&#8221; dove l&#8217;unica operazione necessaria è la decompressione dell&#8217;archivio. Finché l&#8217;applicazione web è &#8220;semplice&#8221; non si riscontrano problemi ma quando è necessario, per esempio, eseguire comandi nativi unix o comandi di terze parti (generatori di barcode, TSK, [...]]]></description>
			<content:encoded><![CDATA[<p>Al fine di velocizzare il processo di installazione di una web application spesso si ricorre a package già &#8220;pre-configurati&#8221; dove l&#8217;unica operazione necessaria è la decompressione dell&#8217;archivio. Finché l&#8217;applicazione web è &#8220;semplice&#8221; non si riscontrano problemi ma quando è necessario, per esempio, eseguire comandi nativi unix o comandi di terze parti (generatori di barcode, TSK, tool di scan o simili) iniziano i problemi legati alle librerie. L&#8217;errore a cui ci si trova di fronte è il seguente:</p>
<blockquote><p>/usr/local/bin/fls: /opt/lampp/lib/libcrypto.so.0.9.8: no version information available (required by /usr/local/lib/libafflib.so.0) /usr/local/bin/fls: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/local/lib/libewf.so.1) /usr/local/bin/fls: /opt/lampp/lib/libgcc_s.so.1: version `GCC_4.2.0&#8242; not found (required by /usr/lib/libstdc++.so.6)</p></blockquote>
<p>Il problema fa riferimento ad un conflitto di versione delle librerie  presenti all&#8217;interno della directory <strong>/usr/local/lib</strong> e <strong>/opt/lampp/lib</strong>. Da una prima analisi si potrebbe obiettare come l&#8217;alternativa più immediata sia quella di installare le singole componenti anziché un pacchetto pre-configurato; d&#8217;altro canto questa strada non è la soluzione al problema ma piuttosto un workaround. Durante la fase di debug si è visto come il seguente codice:</p>
<blockquote><p>putenv(&#8220;LD_LIBRARY_PATH=/usr/local/lib&#8221;);<br />
echo shell_exec(&#8220;/usr/local/bin/fls -V 2&gt;&amp;1&#8243;);</p></blockquote>
<p>risolvesse completamente il problema. Si è scoperto quindi che la natura del problema è da ricercarsi all&#8217;interno della variabile d&#8217;ambiente <strong>LD_LIBRARY_PATH</strong>. La variable d&#8217;ambiente associata alle librerie può essere modificata in diversi file del sistema operativo (/etc/ld.so.conf, bash.bashrc, .profile, putenv via PHP) ma per essere il meno invasivi possibili è stato scelto di modificare lo script di avvio del servizio LAMPP. Aprendo infatti il file <strong>/opt/lampp/lampp</strong>, nel dettaglio alla riga 100,  si legge l&#8217;istruzione:</p>
<blockquote><p>export LD_LIBRARY_PATH=/opt/lampp/lib:$LD_LIBRARY_PATH</p></blockquote>
<p>Modificando l&#8217;istruzione precedente in:</p>
<blockquote><p><strong>export LD_LIBRARY_PATH=/usr/local/lib</strong></p></blockquote>
<p>vengono risolti tutti i problemi dovuti alle dipendenze richieste durante l&#8217;esecuzione del comando d&#8217;esempio. Riavviando il servizio /opt/lampp/lampp restart infatti si ottiene l&#8217;output corretto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=116</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple TV: Ripristino impostazioni</title>
		<link>http://www.iwebdev.it/blog/?p=9</link>
		<comments>http://www.iwebdev.it/blog/?p=9#comments</comments>
		<pubDate>Sat, 11 Dec 2010 19:39:19 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Apple TV]]></category>
		<category><![CDATA[XBMC for Apple TV]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=9</guid>
		<description><![CDATA[Per ripristinare le impostazioni di fabbrica della vostra Apple TV è necessario premere i tasti &#8220;Menù&#8221; e &#8220;Fraccia Giù (-)&#8221; del Apple Remote per sei secondi finché il led di stato non lampeggia arancio. &#160; A questo punto l&#8217;Apple TV dovrebbe entrare in modalità &#8220;Apple TV Recovery&#8221;, selezionare la voce &#8220;Factory Restore&#8221; per ripristinare l&#8217;Apple [...]]]></description>
			<content:encoded><![CDATA[<p>Per ripristinare le impostazioni di fabbrica della vostra Apple TV è necessario premere i tasti &#8220;Menù&#8221; e &#8220;Fraccia Giù (-)&#8221; del Apple Remote per sei secondi finché il led di stato non lampeggia arancio.</p>
<p><img class="aligncenter size-medium wp-image-172" title="Apple TV Recovery" src="http://www.iwebdev.it/blog/wp-content/uploads/2010/12/recovery-menu-300x225.jpg" alt="" width="300" height="225" /></p>
<p style="text-align: center;">&nbsp;</p>
<p>A questo punto l&#8217;Apple TV  dovrebbe entrare in modalità &#8220;Apple TV Recovery&#8221;, selezionare la voce &#8220;Factory Restore&#8221; per ripristinare l&#8217;Apple TV alle impostazioni di fabbrica.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=9</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
