<?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>server Archivi - Cesare Bordi | Innovation Manager &amp; Back-end Developer</title>
	<atom:link href="https://www.cesarebordi.it/tag/server/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cesarebordi.it/tag/server/</link>
	<description>Innovare con soluzioni software efficaci e gioco di squadra</description>
	<lastBuildDate>Mon, 23 Oct 2023 08:27:54 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>

<image>
	<url>https://www.cesarebordi.it/wp-content/uploads/2016/02/CB-logo-88x88.png</url>
	<title>server Archivi - Cesare Bordi | Innovation Manager &amp; Back-end Developer</title>
	<link>https://www.cesarebordi.it/tag/server/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Guida ai comandi Linux più utilizzati da Terminale</title>
		<link>https://www.cesarebordi.it/linux-shell-comandi-piu-utilizzati/</link>
					<comments>https://www.cesarebordi.it/linux-shell-comandi-piu-utilizzati/#respond</comments>
		
		<dc:creator><![CDATA[cesarebordi]]></dc:creator>
		<pubDate>Fri, 05 Jun 2020 09:46:00 +0000</pubDate>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[attività sistemistica]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shutdown]]></category>
		<category><![CDATA[terminale]]></category>
		<category><![CDATA[touch]]></category>
		<category><![CDATA[web developer]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wget]]></category>
		<category><![CDATA[zip]]></category>
		<guid isPermaLink="false">http://www.cesarebordi.it/?p=287</guid>

					<description><![CDATA[<p>Una utile guida ai comandi linux da terminale più utilizzati dai web developer che devono svolgere attività sistemistiche o di controllo su server linux utilizzando la console. Guida...</p>
<p>L'articolo <a href="https://www.cesarebordi.it/linux-shell-comandi-piu-utilizzati/">Guida ai comandi Linux più utilizzati da Terminale</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Una utile<strong> guida ai comandi linux da terminale </strong>più utilizzati dai <strong>web developer</strong> che devono svolgere <strong>attività sistemistiche</strong> o di controllo su <strong>server linux</strong> utilizzando la <strong>console</strong>.</p>



<span id="more-287"></span>



<h2 class="wp-block-heading">Guida comandi linux</h2>



<figure class="wp-block-table is-style-regular"><table><thead><tr><th class="has-text-align-left" data-align="left">COMANDO</th><th>UTILIZZO</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">INFO SUL SISTEMA</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">uname -m</td><td>mostra l&#8217;architettura del sistema</td></tr><tr><td class="has-text-align-left" data-align="left">uname -r</td><td>mostra la versione del kernel</td></tr><tr><td class="has-text-align-left" data-align="left">cat /proc/cpuinfo</td><td>mostra info sulla CPU</td></tr><tr><td class="has-text-align-left" data-align="left">cat /proc/meminfo</td><td>mostra info sulla memoria ram</td></tr><tr><td class="has-text-align-left" data-align="left">cat /proc/cpuinfo</td><td>mostra info sulla CPU</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">ARRESTO / RIAVVIO</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">shutdown <strong>-h</strong> now</td><td>arresto istantaneo del sistema</td></tr><tr><td class="has-text-align-left" data-align="left">shutdown <strong>-r</strong> now</td><td>riavvio istantaneo del sistema</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">OPERAZIONI DI BASE SU FILE / CARTELLE</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">cd /percorso</td><td>si sposta nella cartella indicata</td></tr><tr><td class="has-text-align-left" data-align="left">cd ..</td><td>risalire di un livello</td></tr><tr><td class="has-text-align-left" data-align="left">cd ../..</td><td>risalire di due livelli</td></tr><tr><td class="has-text-align-left" data-align="left">cp file1 file2</td><td>copiare un file</td></tr><tr><td class="has-text-align-left" data-align="left">cp -a dir1 dir2</td><td>copiare una directory</td></tr><tr><td class="has-text-align-left" data-align="left">rsync -av /path/sorgente/ /path/destinazione/</td><td>copia una directory e tutto il suo contenuto mantenendo i permessi e la proprietà dei file</td></tr><tr><td class="has-text-align-left" data-align="left">ln -s file1 lnk1</td><td>creare un link simbolico al file(o directory) &#8216;file1&#8217; chiamato lnk1</td></tr><tr><td class="has-text-align-left" data-align="left">ln file1 lnk1</td><td>creare un link fisico al file(o directory) &#8216;file1&#8217; chiamato lnk1</td></tr><tr><td class="has-text-align-left" data-align="left">ls -lh</td><td>visualizzare contenuto della directory</td></tr><tr><td class="has-text-align-left" data-align="left">ls -Flh (reverse: -Flhr)</td><td>distingue file e directory</td></tr><tr><td class="has-text-align-left" data-align="left">ls -Slh (reverse: -Slhr)</td><td>ordina per dimensione</td></tr><tr><td class="has-text-align-left" data-align="left">ls -a</td><td>visualizza file nascosti</td></tr><tr><td class="has-text-align-left" data-align="left">tree /percorso</td><td>visualizza file e directory in una rappresentazione ad albero</td></tr><tr><td class="has-text-align-left" data-align="left">mkdir dir1</td><td>creare la directory &#8216;dir1&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">mkdir dir1 dir2</td><td>creare due directory contemporaneamente</td></tr><tr><td class="has-text-align-left" data-align="left">mkdir -p /dir1/dir2</td><td>creare un albero di directory</td></tr><tr><td class="has-text-align-left" data-align="left">mv dir1 new_dir</td><td>rinominare/muovere una directory o file</td></tr><tr><td class="has-text-align-left" data-align="left">pwd</td><td>visualizzare il path della directory di lavoro</td></tr><tr><td class="has-text-align-left" data-align="left">rm -f file1</td><td>eliminare il file &#8216;file1&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">rm -rf dir1</td><td>eliminare ricorsivamente la directory &#8216;dir1&#8217; e sul contenuto</td></tr><tr><td class="has-text-align-left" data-align="left">rm -rf dir1 dir2</td><td>eliminare ricorsivamente due directory ed il loro contenuto con un solo comando</td></tr><tr><td class="has-text-align-left" data-align="left">rmdir dir1</td><td>eliminare la directory &#8216;dir1&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">find /dir1 -type f -name &#8220;*.ext&#8221; -delete</td><td>elimina tutti i file con una certa estensione cercando all&#8217;interno di una cartella e relative sottocartele.</td></tr><tr><td class="has-text-align-left" data-align="left">touch -t 1612011030 file1</td><td>modificare il timestamp di un file o directory &#8211; (YYMMDDhhmm)</td></tr><tr><td class="has-text-align-left" data-align="left">touch file1</td><td>utile pre creare un file vuoto</td></tr><tr><td class="has-text-align-left" data-align="left">touch -c file1</td><td>-c evita di creare nuovi file.</td></tr><tr><td class="has-text-align-left" data-align="left">find /percorso/ -name &#8220;file.ext&#8221; -delete</td><td>Cerca ed elimina tutti i file &#8220;file.ext&#8221; dal percorso (anche nelle sottocartelle)</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">DIMENSIONI FILE / CARTELLE</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">df -h</td><td>visualizzare l&#8217;elenco delle partizioni montate</td></tr><tr><td class="has-text-align-left" data-align="left">du -sh dir1</td><td>conoscere lo spazio su disco occupato dalla directory &#8216;dir1&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">du -skh /percorso/* &#8211;time | sort -h</td><td>visualizzare la dimensione dei file e delle directory ordinanti per dimensione</td></tr><tr><td class="has-text-align-left" data-align="left">ls -l | wc -l</td><td>conta gli elementi presenti nella cartella in cui ci si trova</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">RINOMINARE FILE</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">rename -n -v &#8216;s/^/PREFISSO/&#8217; *</td><td>Aggiunge un prefisso davanti al nome di i file contenuti in una cartella (NOTA:le opzioni -n -v eseguono una simulazione, rimuoverle per rendere il comando effettivo)</td></tr><tr><td class="has-text-align-left" data-align="left">rename -n -v &#8216;s/^(.{2})//&#8217; *</td><td>Rimuove i primi due caratteri dal nome di tutti i file contenuti in una cartella (NOTA:le opzioni -n -v eseguono una simulazione, rimuoverle per rendere il comando effettivo)</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">COMPRIMERE FILE</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">zip archivio.zip file1 file2 file3</td><td>comprime file specifici nell&#8217;archivio &#8216;archivio.zip&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">zip -r archivio.zip dir1</td><td>comprime la directory &#8216;dir1&#8217; nell&#8217;archivio &#8216;archivio.zip&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">zip -r9 archivio.zip dir1</td><td>comprime la directory &#8216;dir1&#8217; nell&#8217;archivio &#8216;archivio.zip&#8217; utilizzando la compressione massima.</td></tr><tr><td class="has-text-align-left" data-align="left">unzip archivio.zip</td><td>decomprime l&#8217;archivio &#8216;archivio.zip&#8217; nella posizione corrente</td></tr><tr><td class="has-text-align-left" data-align="left" colspan="2"><strong><mark style="background-color:#afcb08" class="has-inline-color">TRASFERIMENTO FILE / DOWNLOAD / WGET</mark></strong></td></tr><tr><td class="has-text-align-left" data-align="left">wget http://www.dominio.ext/file.ext</td><td>scarica &#8216;file.ext&#8217; nella posizione corrente</td></tr><tr><td class="has-text-align-left" data-align="left">wget http://www.dominio.ext/file.ext -O nuovoNome.ext</td><td>scarica &#8216;file.ext&#8217; rinominandolo in &#8216;nuovoNome.ext&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">wget http://www.dominio.ext/file.ext</td><td>scarica in background &#8216;file.ext&#8217; nella posizione corrente</td></tr><tr><td class="has-text-align-left" data-align="left">wget -i listaFile.txt</td><td>Scarica i file contenuti nel file &#8216;listaFile.txt&#8217;</td></tr><tr><td class="has-text-align-left" data-align="left">wget &#8211;limit-rate=500k http://www.dominio.ext/file.ext</td><td>Scarica &#8216;file.ext&#8217; limitando la velocità a 500 Kb</td></tr><tr><td class="has-text-align-left" data-align="left">wget -r &#8211;ftp-user=Username &#8211;ftp-password=Password ftp://ftp.dominio.ext/&#8230;</td><td>Scarica ricorsivamente tutto il contenuto a partire dalla posizione FTP indicata.</td></tr><tr><td class="has-text-align-left" data-align="left">scp -r -P 22 user@host:/percorso/sorgente/remota/ /percorso/destinazione/locale/</td><td><strong>Secure Copy</strong> (scp) copia ricorsivamente il contenuto da un server remoto nella cartella locale (o altro server emoto).</td></tr></tbody></table></figure>
<p>L'articolo <a href="https://www.cesarebordi.it/linux-shell-comandi-piu-utilizzati/">Guida ai comandi Linux più utilizzati da Terminale</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cesarebordi.it/linux-shell-comandi-piu-utilizzati/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Architettura REST per sviluppare Web Service</title>
		<link>https://www.cesarebordi.it/architettura-rest-per-sviluppare-web-service/</link>
					<comments>https://www.cesarebordi.it/architettura-rest-per-sviluppare-web-service/#respond</comments>
		
		<dc:creator><![CDATA[cesarebordi]]></dc:creator>
		<pubDate>Wed, 22 Apr 2020 17:55:01 +0000</pubDate>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Categorie]]></category>
		<category><![CDATA[Lezioni]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[TechNerd]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[architettura]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[lezioni]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[restfull]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">https://www.cesarebordi.it/?p=833</guid>

					<description><![CDATA[<p>L'architettura REST è oggi una delle più utilizzate nell'ambito dei Web Service. Ci si trova spesso a dover implementare api RESTful ed è importante avere una precisa conoscenza di questo modello di progettazione.</p>
<p>L'articolo <a href="https://www.cesarebordi.it/architettura-rest-per-sviluppare-web-service/">Architettura REST per sviluppare Web Service</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>L&#8217;<strong>architettura REST</strong> è oggi una delle più utilizzate nell&#8217;ambito dei <strong>Web Service</strong>. Ci si trova spesso a dover <strong>implementare api RESTful</strong> ed è importante avere una precisa conoscenza di questo modello di progettazione.</p>



<h2 class="wp-block-heading">Architettura REST: cos&#8217;è?</h2>



<blockquote class="wp-block-quote"><p>Additional constraints can then be applied to form a new architectural style that better reflects the desired properties of a modern Web architecture.</p></blockquote>



<p><strong>REST</strong> vede la luce dieci anni dopo la nascita del <strong>World Wide Web</strong>, piattaforma per la condivisione di documenti distribuiti su server connessi tra loro. L’acronimo REST (<strong><span style="text-decoration: underline;">RE</span>presentational <span style="text-decoration: underline;">S</span>tate <span style="text-decoration: underline;">T</span>ransfer</strong>) viene introdotto nel 2000 nella tesi &#8220;<em><a rel="noreferrer noopener" href="https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">Architectural Styles and the Design of Network-based Software Architectures</a></em>&#8221; di <a href="https://it.wikipedia.org/wiki/Roy_Fielding">Roy Fielding</a> definendo così uno&nbsp;<strong>stile architetturale</strong> basato sul Web che fissa un <strong>insieme di principi</strong> per la progettazione di un <a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/Sistema_distribuito" target="_blank">sistema hypermedia distribuito</a>.</p>



<p><strong>REST</strong> è quindi un modello di progettazione e non va confuso con un protocollo (non definisce messaggi) nè con una specifica (non definisce uno standard), ma opera ad un livello di astrazione superiore.<br />Non è quindi del tutto corretto confrontarlo con il <strong>protocollo <a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/SOAP" target="_blank">SOAP</a></strong> anche se entrambi sono oggi ampiamente usati nello <strong>sviluppo dei  Web Service</strong>.</p>



<p>In estrema sintesi:</p>



<blockquote class="wp-block-quote"><p>REST detta le regole per creare una piattaforma per l’elaborazione distribuita dei dati sfruttando l&#8217;architettura Web già dotata di tutto ciò che occorre: da una parte un&#8217;infrastruttura basata su protocolli ben definiti (<a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/Hypertext_Transfer_Protocol" target="_blank">HTTP</a> in primis) dall&#8217;altra le informazioni viste come risorse mappate univocamente (<a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/Uniform_Resource_Identifier" target="_blank">URI</a>).</p></blockquote>



<h2 class="wp-block-heading">I principi dell&#8217;architettura REST</h2>



<h3 class="wp-block-heading">Iniziare con un approccio &#8220;Null Style&#8221;</h3>



<p>Il &#8220;<strong>Null Style</strong>&#8221; è il punto di partenza: un sistema in cui non ci sono confini distinti tra i componenti (risorse) che andranno connessi. I seguenti <strong>principi dell&#8217;architettura REST</strong> rappresentano i <strong>vincoli</strong> per standardizzare l&#8217;accesso alle risorse distribuite in questo scenario.</p>



<h3 class="wp-block-heading">Client-Server </h3>



<p>L&#8217;<strong>architettura REST</strong> applica il paradigma <strong>SoC</strong> (<strong><span style="text-decoration: underline;">S</span>eparation <span style="text-decoration: underline;">o</span>f <span style="text-decoration: underline;">C</span>oncerns</strong>),  <em>&#8220;separazione dei compiti</em>“, al sistema di funzionamento Client-Server (<strong>Richiesta-Risposta</strong>). Il <strong>vincolo Client-Server</strong> favorisce un&#8217;architettura distribuita in cui lo sviluppo applicativo lato client è indipendente da quello lato server. Questo spiega anche perché REST non si preoccupa dei linguaggi e dei metodi di sviluppo.</p>



<h3 class="wp-block-heading">Stateless</h3>



<p>La comunicazione tra <strong>utente del servizio</strong> (<strong>client</strong>) ed il <strong>servizio</strong> (<strong>server</strong>) deve essere <strong>priva di stato</strong>: ogni richiesta del client deve contenere tutte le informazioni necessarie al server per comprendere la richiesta e non deve sfruttare informazioni di sessione memorizzate sul server. E&#8217; il client a gestire la sessione e, se necessario, dovrà ricevere opportune informazioni nella risposta del server.<br />Il <strong>vincolo stateless</strong> ha benefici sul monitoraggio delle richieste, sull&#8217;<strong>affidabilità</strong> e sulla <strong>scalabilità</strong>: non dovendo mantenere dati in sessione sarà più facile scalare orizzontalmente il servizio creando istanze parallele poste dietro ad un load balancer.</p>



<h3 class="wp-block-heading">Cache</h3>



<p>Nell&#8217;<strong>architettura REST</strong> il <strong>vincolo di Cache</strong> impone che le risposte siano etichettate come memorizzabili nella cache o meno. L&#8217;utilizzo della cache da parte di client, server o componenti middleware consente di ridurre le interazioni con la rete a tutto vantaggio delle performance.</p>



<h3 class="wp-block-heading">Uniform Interface</h3>



<p>L&#8217;<strong>architettura REST</strong> impone un <strong>vincolo di uniformità dell&#8217;interfaccia di accesso ai dati</strong> gestiti dal servizio, svincolandolo dalla specifica implementazione sottostante. Questo deve avvenire attraverso ulteriori sotto-vincoli.</p>



<h4 class="wp-block-heading"><span class="has-inline-color has-medium-gray-color">Identificazione delle risorse</span></h4>



<p>In REST ogni informazione è una<strong> risorsa</strong>, vista come qualsiasi cosa possa essere nominata: un documento, un&#8217;immagine, il meteo di oggi, &#8230;<br />Una risorsa può essere mutabile (l&#8217;ultima revisione di un documento) o immutabile nel tempo (la specifica revisione di un documento), l&#8217;unica cosa che deve essere statica è la semantica della sua mappatura, per questo motivo viene data una grande importanza all&#8217;<strong>identificazione univoca di una risorsa</strong> (<strong><a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/Uniform_Resource_Identifier" target="_blank">URI</a></strong>) e alla necessità di mantenerla nel tempo.<br />Tale sotto-vincolo sottolinea lo scopo organizzativo proprio dei nomi di domino Internet.</p>



<h4 class="wp-block-heading"><span class="has-inline-color has-medium-gray-color">Rappresentazione delle risorse</span></h4>



<p>Una risorsa può essere rappresentata in molti modi diversi (HTML, XML, JSON, SVG, JPG, &#8230;) attraverso <strong>dati</strong>, <strong>metadati</strong> descrittivi ed eventuali &#8220;<strong>control data</strong>&#8220;. I dati di controllo possono definire lo scopo di un messaggio di richiesta o risposta, il suo comportamento o stato. Ad esempio possono specificare come gestire la cache di una riposta o la necessità di creare una risorsa sulla base dei dati e delle caratteristiche presenti nella richiesta.<br /></p>



<h4 class="wp-block-heading"><span class="has-inline-color has-medium-gray-color">Collegamenti tra risorse</span></h4>



<p>L&#8217;architettura <strong>REST</strong> è pensata per <strong>connettere risorse tramite collegamenti ipertestuali</strong>. Questo principio è anche noto come <strong>HATEOAS</strong> (Hypermedia As The Engine Of Application State). Un Client deve quindi apprendere dalla rappresentazione di un risorsa fornita dal server (risposta) l&#8217;eventuale relazione con ulteriori risorse.<br />Ad esempio, richiedendo una fattura, la risposta dovrebbe contenere anche il link alla relativa anagrafica cliente.</p>



<h3 class="wp-block-heading">Layered System</h3>



<p>Un&#8217;architettura REST prevede più livelli architettonici, indipendenti l&#8217;uno dall&#8217;altro, frapposti fra client e server.<br />Gli strati intermedi possono avere scopi specifici durate il transito dei dati come ad esempio la sicurezza, il caching o il balancing.<br />I livelli potranno essere modificati in base all&#8217;evolversi dello scenario.</p>



<h3 class="wp-block-heading">Code-On-Demand</h3>



<p>L&#8217;ultimo <strong>vincolo di code-on-demand</strong> è facoltativo e consente ad un&#8217;implementazione REST di estendere le funzionalità del client scaricando ed eseguendo il codice sotto forma di applet o script. Ciò appare oggi abbastanza scontato e potrebbe rendere questo vincolo facoltativo quasi paradossale, ma non lo era nel 2000 quando i contenuti Web erano per lo più pagine statiche renderizzate dal browser.</p>



<h2 class="wp-block-heading">Differenza tra architettura REST ed servizio RESTful</h2>



<p>Eroneamente usati come sinonimi, <strong>REST</strong> è il nome dello “stile architetturale” mentre <strong>RESTful</strong> viene utilizzato per qualificare un Web Service che rispetta i vincoli dell&#8217;architettura REST.</p>



<h2 class="wp-block-heading">Architettura REST: i contro</h2>



<ul><li>L&#8217;architettura REST si può applicare solo in ambito Web a differenza del protocollo SOAP.</li><li>A causa del vincolo stateless c&#8217;è la possibilità di un aumento dei dati di ambiente restituiti ripetutamente in una serire di richieste (overhead per interazione). Il vincolo di Cache cerca di compensare questo aspetto.</li><li>A causa del vincolo stateless, spostando il controllo sul client si riduce il controllo da parte del server sul comportamento coerente dell&#8217;applicazione.</li></ul>
<p>L'articolo <a href="https://www.cesarebordi.it/architettura-rest-per-sviluppare-web-service/">Architettura REST per sviluppare Web Service</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cesarebordi.it/architettura-rest-per-sviluppare-web-service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress: escludere una cartella dal rewriting url di Apache</title>
		<link>https://www.cesarebordi.it/wordpress-escludere-una-cartella-dal-rewriting-url-di-apache/</link>
					<comments>https://www.cesarebordi.it/wordpress-escludere-una-cartella-dal-rewriting-url-di-apache/#respond</comments>
		
		<dc:creator><![CDATA[cesarebordi]]></dc:creator>
		<pubDate>Wed, 03 Aug 2016 10:16:39 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web developer]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">http://www.cesarebordi.it/?p=358</guid>

					<description><![CDATA[<p>Scenario: molti cms, primo fra tutti WordPress, permettono di impostare la generazione automatica di friendly url per migliorare il seo di un sito web. L&#8217;abilitazione di tale funzione,...</p>
<p>L'articolo <a href="https://www.cesarebordi.it/wordpress-escludere-una-cartella-dal-rewriting-url-di-apache/">WordPress: escludere una cartella dal rewriting url di Apache</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="text-decoration: underline;">Scenario</span>: molti <strong>cms</strong>, primo fra tutti <strong>WordPress</strong>, permettono di impostare la generazione automatica di <strong>friendly url </strong>per migliorare il <strong>seo</strong> di un <strong>sito web.</strong> L&#8217;abilitazione di tale funzione, che sfrutta il <strong>modulo rewrite</strong> (<strong>mod_rewrite.c</strong>) di <strong>Apache</strong>, è una delle configurazioni di base che ogni <strong>web developer</strong> dovrebbe eseguire in fase di installazione della <strong>piattaforma </strong>attraverso l&#8217;apposito <strong>file .htaccess</strong>.</p>
<p>Il <strong>codice</strong> proposto dallo stesso <strong>WordPress</strong> che solitamente si utilizza per <strong>abilitare il rewriting</strong> e far così scomparire dalla url &#8220;index.php&#8221; è il seguente:</p>
<pre class="brush: bash; title: ; notranslate">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - &#x5B;L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php &#x5B;L]
&lt;/IfModule&gt;
</pre>
<p>Questa regola eseguirà il rewrite di ogni percorso della url sott&#8217;intendendo la presenza di /index.php</p>
<p><span style="text-decoration: underline;">Problema</span>: può però essere necessario <strong>escludere una cartella</strong> (o più) da questa regola generale per caricare ad esempio file che devono essere accessibili attraverso un link diretto o script di varia utilità.</p>
<p><span style="text-decoration: underline;">Soluzione</span>: è possibile <strong>modificare la regola</strong> in modo da segnalare <strong>una directory</strong> (o più) che faccia <strong>eccezione</strong> rispetto alla regola generale attraverso la seguente istruzione:</p>
<pre class="brush: bash; title: ; notranslate">
RewriteCond %{REQUEST_URI} !^/(Cartella1|Cartella2|Cartella3).*$
</pre>
<p>Ecco come apparirà il blocco di codice completo:</p>
<pre class="brush: bash; title: ; notranslate">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - &#x5B;L]
RewriteCond %{REQUEST_URI} !^/(Cartella1|Cartella2|Cartella3).*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php &#x5B;L]
&lt;/IfModule&gt;
</pre>
<p>L'articolo <a href="https://www.cesarebordi.it/wordpress-escludere-una-cartella-dal-rewriting-url-di-apache/">WordPress: escludere una cartella dal rewriting url di Apache</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cesarebordi.it/wordpress-escludere-una-cartella-dal-rewriting-url-di-apache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache directory browsing: disabilitare la visualizzazione delle cartelle</title>
		<link>https://www.cesarebordi.it/apache-directory-browsing-disabilitare-la-visualizzazione-delle-cartelle/</link>
					<comments>https://www.cesarebordi.it/apache-directory-browsing-disabilitare-la-visualizzazione-delle-cartelle/#respond</comments>
		
		<dc:creator><![CDATA[cesarebordi]]></dc:creator>
		<pubDate>Mon, 22 Feb 2016 10:04:01 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[directory browsing]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[visualizzare cartelle]]></category>
		<category><![CDATA[webserver]]></category>
		<guid isPermaLink="false">http://www.cesarebordi.it/?p=155</guid>

					<description><![CDATA[<p>Scenario: abbiamo configurato il nostro webserver, ma ci accorgiamo che, in mancanza dei classici file di index, recandoci su un dominio configurato nei virtual host  il server mostra...</p>
<p>L'articolo <a href="https://www.cesarebordi.it/apache-directory-browsing-disabilitare-la-visualizzazione-delle-cartelle/">Apache directory browsing: disabilitare la visualizzazione delle cartelle</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="text-decoration: underline;">Scenario</span>: abbiamo configurato il nostro webserver, ma ci accorgiamo che, in mancanza dei classici file di index, recandoci su un dominio configurato nei virtual host  il server mostra ci consente la possibile di <strong>visualizzare le cartelle del nostro sito</strong> e navigare tra i file&#8230; A livello di sicurezza e riservatezza dei dati non è sicuramente il massimo!</p>
<p><span style="text-decoration: underline;">Problema</span>: come disabilitare il <strong>directory browsing</strong> di <strong>Apache2</strong>?</p>
<p><span style="text-decoration: underline;">Soluzione</span>: per prima cosa bisogna aprire il file della configurazione di default di apache2, nel mio caso denominato &#8220;000-default.conf&#8221; e rimuovere dalle options il modulo &#8220;Indexes&#8221; appunto.</p>
<p>Quindi troveremo una riga simile a questa:</p>
<pre class="brush: bash; title: ; notranslate">Options Includes Indexes FollowSymLinks MultiViews</pre>
<p>che diventerà:</p>
<pre class="brush: bash; title: ; notranslate">Options Includes FollowSymLinks MultiViews</pre>
<p>poi dovremo riavviare il servizio:</p>
<pre class="brush: bash; title: ; notranslate">sudo service apache2 reload</pre>
<p>Non sempre questo unico accorgimento risolve il problema, quindi consiglio di lanciare i seguenti comandi per <strong>disabilitare il modulo autoindex</strong> di Apache:</p>
<pre class="brush: bash; title: ; notranslate">
sudo a2dismod autoindex
sudo service apache2 restart
</pre>
<p>L'articolo <a href="https://www.cesarebordi.it/apache-directory-browsing-disabilitare-la-visualizzazione-delle-cartelle/">Apache directory browsing: disabilitare la visualizzazione delle cartelle</a> sembra essere il primo su <a href="https://www.cesarebordi.it">Cesare Bordi | Innovation Manager &amp; Back-end Developer</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cesarebordi.it/apache-directory-browsing-disabilitare-la-visualizzazione-delle-cartelle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
