<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5377810600179124996</id><updated>2025-04-17T08:38:32.529+02:00</updated><category term="prestashop"/><category term="magento"/><category term="e-commerce"/><category term="chrome"/><category term="symfony"/><category term="estensioni google chrome"/><category term="ubuntu"/><category term="adwords"/><category term="android"/><category term="applicazioni google chrome"/><category term="ionic framework"/><category term="symfony2"/><category term="background.html chrome extension"/><category term="chrome.extension"/><category term="chrome.tabs"/><category term="coffeescript"/><category term="creare estensioni chrome"/><category term="docker"/><category term="javascript"/><category term="marketing"/><category term="modulo prestashop"/><category term="mysql"/><category term="php"/><category term="social marketing"/><category term="strategia di marketing"/><category term="sviluppo modulo prestashop"/><category term="sviluppo prestashop"/><category term="twig"/><category term="web marketing"/><category term="&#39;/usr/bin/python&#39;"/><category term="/usr/bin/freemind: 228: /usr/bin/freemind: /usr/lib/jvm/java-7-oracle/jre/bin/java/bin/java: not found"/><category term="AngularJs Allow-Control-Allow-Origin"/><category term="Codice"/><category term="Exception printing is disabled by default for security reasons."/><category term="Fiscale"/><category term="HWIOAuthBundle"/><category term="IVA"/><category term="JQuery Pisces Slider 1.0"/><category term="Override .tpl files - PayPal Module"/><category term="Please"/><category term="Sql condizionale in Magento"/><category term="There has been an error processing your request"/><category term="Varien_Data_Collection_DB"/><category term="Your"/><category term="addAttributeToFilter"/><category term="addFieldToFilter"/><category term="admincontroller"/><category term="aggiornamento magento"/><category term="aggiornamento prestashop"/><category term="aggiornare magento"/><category term="aggiornare prestashop"/><category term="android studio"/><category term="angularjs sortablegrid angularjs"/><category term="apc"/><category term="apc ubuntu apc php"/><category term="app script"/><category term="associazione shop"/><category term="attivare inbox"/><category term="blablacar.it"/><category term="browsersync"/><category term="chrome.extension.getViews"/><category term="chrome.tabs.create"/><category term="codice fiscale prestashop"/><category term="collaboriamo.org"/><category term="commissioni paypal"/><category term="commissioni paypal e-commerce"/><category term="commissioni paypal prestashop"/><category term="composer"/><category term="controller prestashop"/><category term="controllo data di nascita prestashop"/><category term="controllo età anagrafica porestashop"/><category term="corrupted."/><category term="coworking"/><category term="create chrome extension"/><category term="datepicker"/><category term="debugging sql magento"/><category term="deploy prestashop"/><category term="develop prestashop module"/><category term="display link"/><category term="do-release-upgrade"/><category term="docker ubuntu"/><category term="docker.io"/><category term="doctrine"/><category term="droidcon Torino"/><category term="droidcon italia"/><category term="droidconit"/><category term="ebay"/><category term="ecommerce pinterest"/><category term="fablab"/><category term="film su google play"/><category term="fix"/><category term="flutter"/><category term="fosuserbundle"/><category term="freemind"/><category term="funzionamento di pinterest"/><category term="g+"/><category term="gmail"/><category term="gmail inbox"/><category term="gmail schede"/><category term="google app engine"/><category term="google apps"/><category term="google apps script"/><category term="google apps script iniziare"/><category term="google chorme"/><category term="google chrome"/><category term="google cloud italia"/><category term="google cloud platform"/><category term="google compute engine"/><category term="google developers italia"/><category term="google italia"/><category term="google play"/><category term="google spreadsheet custom menu"/><category term="google+"/><category term="gradle"/><category term="gtug"/><category term="gtug torino"/><category term="home page"/><category term="in"/><category term="inflate view"/><category term="inline translation"/><category term="install"/><category term="install language on osTicket"/><category term="is"/><category term="jQuery"/><category term="livereload"/><category term="locloc.it"/><category term="logitech"/><category term="logo"/><category term="logo png prestashop"/><category term="maento extension developer&#39;s guide"/><category term="magento 2"/><category term="magento error"/><category term="magento overview"/><category term="magento2"/><category term="memcached"/><category term="mgento entity"/><category term="modulo paypal prestashop"/><category term="mouse"/><category term="natural"/><category term="navigabilità"/><category term="negozio ebay"/><category term="nginx"/><category term="nivo slider"/><category term="nuova gmail"/><category term="opzioni estensioni chrome"/><category term="ordine di vendita prestashop"/><category term="ordine prestashop"/><category term="osticket"/><category term="osticket language install"/><category term="override prestashop"/><category term="parameter"/><category term="partita"/><category term="paypal"/><category term="paypal module prestashop"/><category term="paypal prestahsop"/><category term="phpstorm"/><category term="pinterest"/><category term="plesk"/><category term="png logo prestashop"/><category term="posizionamento Google"/><category term="preshop"/><category term="prestashop estrazione clienti"/><category term="prestashp"/><category term="processo prestashop"/><category term="pubblicità pinterest"/><category term="python"/><category term="query"/><category term="query builder"/><category term="recuperare i prodotti da magento"/><category term="sailsquare.it"/><category term="scopes"/><category term="scrolling"/><category term="sem"/><category term="seo"/><category term="server ubuntu"/><category term="services in twig"/><category term="sessioni magento"/><category term="sharing"/><category term="sql setup"/><category term="sviluppare moduli prestashop"/><category term="sviluppo"/><category term="sviluppo amgento"/><category term="sviluppo magento"/><category term="symlink."/><category term="tendenze e-commerce 2013"/><category term="test"/><category term="the"/><category term="toolbox torino"/><category term="traduzioni inline"/><category term="tutorial"/><category term="tutorial estensioni chrome"/><category term="twitter"/><category term="vendere su ebay"/><category term="vich upload"/><category term="virtualbox"/><category term="virtualbox headless"/><category term="web marketing pinterest"/><category term="where"/><title type='text'>Bwlab</title><subtitle type='html'>Laboratorio web per il business</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>95</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-3879520922095648262</id><published>2020-10-15T17:15:00.006+02:00</published><updated>2020-10-15T17:16:05.495+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android studio"/><category scheme="http://www.blogger.com/atom/ns#" term="flutter"/><title type='text'>Flutter e Android Studio - errore: No connected devices found; please connect a device, or see flutter.dev/setup for getting started instructions.</title><content type='html'>&lt;p&gt;E&#39; un problema di Flutter.&lt;/p&gt;&lt;p&gt;C&#39;è un thread in &lt;a href=&quot;https://stackoverflow.com/questions/49222658/device-list-doesnt-shows-in-android-studio-using-flutter&quot; target=&quot;_blank&quot;&gt;StackOverflow che aiuta a correggere&lt;/a&gt;. Questa è la correzione:&lt;/p&gt;&lt;pre class=&quot;lang-dart s-code-block hljs&quot; style=&quot;border-radius: 5px; border: 0px; box-sizing: inherit; color: var(--highlight-color); font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.30769; margin-bottom: calc(var(--s-prose-spacing) + 0.4em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline; width: auto;&quot;&gt;&lt;code style=&quot;border: 0px; box-sizing: inherit; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;flutter config --android-sdk /path/to/android/sdk
flutter config --android-studio-dir /path/to/android/studio&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/3879520922095648262/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2020/10/flutter-e-android-studio-errore-no.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3879520922095648262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3879520922095648262'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2020/10/flutter-e-android-studio-errore-no.html' title='Flutter e Android Studio - errore: No connected devices found; please connect a device, or see flutter.dev/setup for getting started instructions.'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-6743674887507552750</id><published>2018-05-31T10:08:00.001+02:00</published><updated>2018-05-31T10:08:32.166+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="display link"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>DisplayLinik Ubuntu</title><content type='html'>Ho trovato un progetto su github per l&#39;installazione di DisplayLink su Ubuntu&lt;br /&gt;
In quanto ho un notebook Dell XPS 13&quot; utilizzo anche l&#39;aggeggio di DisplayLink per connettere sorgenti esterne più datata, che hanno ad esempio la vecchia VGA&lt;br /&gt;
Con questo progetto git&amp;nbsp;&lt;a href=&quot;https://github.com/AdnanHodzic/displaylink-debian&quot;&gt;https://github.com/AdnanHodzic/displaylink-debian&lt;/a&gt;&amp;nbsp;è possibile installare in maniera automatica i driver di display link su ubuntu, ad oggi ubuntu 18.04&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/6743674887507552750/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2018/05/displaylinik-ubuntu.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/6743674887507552750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/6743674887507552750'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2018/05/displaylinik-ubuntu.html' title='DisplayLinik Ubuntu'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-5830189068972392448</id><published>2018-03-22T15:04:00.001+01:00</published><updated>2018-03-22T15:04:01.471+01:00</updated><title type='text'>Bulk remove docker image </title><content type='html'>&lt;p&gt;Simple command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker rmi $(docker images -f &quot;dangling=true&quot; -q)
&lt;/code&gt;&lt;/pre&gt;

</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/5830189068972392448/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2018/03/bulk-remove-docker-image.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/5830189068972392448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/5830189068972392448'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2018/03/bulk-remove-docker-image.html' title='Bulk remove docker image &lt;none&gt;'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-4873342608601870568</id><published>2017-11-13T15:22:00.004+01:00</published><updated>2017-11-13T15:22:44.150+01:00</updated><title type='text'>Install Intel i915 on ubuntu new</title><content type='html'>&lt;h1 id=&quot;how-to-install-intel-graphics-on-ubuntu-new&quot;&gt;How to install Intel Graphics on Ubuntu new&lt;/h1&gt;
&lt;p&gt;Per le nuove release non sempre, anzi mai, è pronto il l’Intel Graphics Tool fo Linux OS.
L’update tool si può scaricare da &lt;a href=&quot;https://01.org/linuxgraphics/downloads/intel-graphics-update-tool-linux-os-v2.0.6&quot;&gt;01.org&lt;/a&gt;
Guardando l’ultima release compatibile vediamo che c’è solo ubuntu 17.04
Se install il graphic tool e lo avvii, l’errore dato è sull’incompatibilità di versione.
In attesa del rilascio della release si può cercare di fregare il l’update tool modifica il file lsb-release&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/lsb-release
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;inserendo l’ultima release supportata&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10  &amp;lt;--  to 17.04
DISTRIB_CODENAME=artful  &amp;lt;-- zesty
DISTRIB_DESCRIPTION=&quot;Ubuntu 17.10&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo aver installato i driver, ricordati di ripristinare i dati dell’lsb-release :P
bye&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/4873342608601870568/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/11/install-intel-i915-on-ubuntu-new.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/4873342608601870568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/4873342608601870568'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/11/install-intel-i915-on-ubuntu-new.html' title='Install Intel i915 on ubuntu new'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-7690321968117511053</id><published>2017-11-12T22:50:00.002+01:00</published><updated>2017-11-12T22:50:33.567+01:00</updated><title type='text'>Vue.js inline component</title><content type='html'>&lt;hr&gt;
&lt;h2 id=&quot;title-componente-vue.js-inline-browsertags-vue.js-single-file-component-vue.js&quot;&gt;title: Componente Vue.js inline browser
tags: vue.js, single file component vue.js&lt;/h2&gt;
&lt;h1 id=&quot;come-creare-un-componente-con-vue.js&quot;&gt;Come creare un componente con Vue.js?&lt;/h1&gt;
&lt;p&gt;Come crearlo e come usarlo direttamente nella pagine?
Mi trovo in diversi progetti a bisticciare con jquery che ritengo un ottimo tool, ma non supremo.
In ogni progetto possono esistere più tecnologie per risolveere problemi diversi.
La SPA la preferisco con React o Angular, ma per creare dei componenti ad hoc o uso Polymer o Vue.
Senza scomodare l’intero scaffolding di progetto è possibile creare un semplice componente ed usarlo nella pagina del browser senza fare il transpiling.&lt;/p&gt;
&lt;h2 id=&quot;come-iniziare.&quot;&gt;Come iniziare.&lt;/h2&gt;
&lt;p&gt;Preparo la base di folder. Come server uso quello integrato in php.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir vuewjs
cd vuejs
php -S localhost:8080
touch index.html
google-chrome index.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Io uso Ubuntu e quelli sopra sono semplici comandi shell che creano un folder vuejs e dentro creano un file html e avviano il server presente in php7; infine apro con chrome la pagina index.hml.&lt;/p&gt;
&lt;h2 id=&quot;pagina-base&quot;&gt;Pagina base&lt;/h2&gt;
&lt;p&gt;Ora prepariamo la pagina base html. Modifichiamo index.html:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
  &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&amp;gt;
  &amp;lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;ie=edge&quot;&amp;gt;
  &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;caricamento-della-libreria&quot;&gt;Caricamento della libreria&lt;/h2&gt;
&lt;p&gt;Per il caricamento di vue, si usa il link &lt;em&gt;&lt;a href=&quot;https://unpkg.com/vue&quot;&gt;https://unpkg.com/vue&lt;/a&gt;&lt;/em&gt;
Oltre a Vue.js usiamo anche la libreria &lt;em&gt;&lt;a href=&quot;https://github.com/FranckFreiburger/http-vue-loader&quot;&gt;http-vuew-loader&lt;/a&gt;&lt;/em&gt;
Questo è il progetto che permette di caricare dinamicamente i componenti Vue e fare il transpiling live.
&lt;strong&gt;Attenzione&lt;/strong&gt;: questo metodo va bene per piccoli componenti, per piccoli progetti, non S.P.A.
Aggiungiamo dopo il body il caricamento delle librerie:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;....
&amp;lt;/body&amp;gt;
&amp;lt;script src=&quot;https://unpkg.com/vue&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://unpkg.com/http-vue-loader&quot;&amp;gt;&amp;lt;/script&amp;gt;
....
&amp;lt;html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;creazione-del-componente&quot;&gt;Creazione del componente&lt;/h2&gt;
&lt;p&gt;Creiamo nel progetto un &lt;em&gt;single file component&lt;/em&gt;: &lt;em&gt;hello.vue&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;template&amp;gt;
    &amp;lt;div class=&quot;hello&quot;&amp;gt;Ciao {{who}}&amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;
&amp;lt;script&amp;gt;
	module.exports = {
	    data: function() {
	            return {
	              who: &#39;world&#39;
	             }
	         }
	   }
&amp;lt;/script&amp;gt;
&amp;lt;style&amp;gt;
	.hello {
	    background-color: #ffe;
	}
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quindi ora abbiamo due file nella directory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;index.html&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;hello.vue&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;caricare-il-componente&quot;&gt;Caricare il componente&lt;/h2&gt;
&lt;p&gt;Ora carichiamo il componente nella pagina html:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;my-app&quot;&amp;gt;
    &amp;lt;my-component&amp;gt;&amp;lt;/my-component&amp;gt;
&amp;lt;/div&amp;gt;
....
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    new Vue({
        el: &#39;#my-app&#39;,
        components: {
            &#39;my-component&#39;: httpVueLoader(&#39;hello.vue&#39;)
        }
    });
&amp;lt;/script&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;‘my-component’: httpVueLoader(‘hello.vue’)&lt;/em&gt;  registra il componente my-component e gli abbina il componente presente in &lt;em&gt;hello.vue&lt;/em&gt; tramite &lt;em&gt;httpVueLoader&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;infine&quot;&gt;Infine&lt;/h2&gt;
&lt;p&gt;Ora aggiorniamo il browser: dobbiamo vedere il solito hello world.&lt;/p&gt;
&lt;h2 id=&quot;conclusione&quot;&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;La libreria &lt;em&gt;&lt;a href=&quot;https://github.com/FranckFreiburger/http-vue-loader&quot;&gt;http-vuew-loader&lt;/a&gt;&lt;/em&gt;  permette di caricare live il compoente, &lt;strong&gt;piccolo&lt;/strong&gt;, fatto con vue
Il caricamento deve essere fatto da server.&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/7690321968117511053/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/11/vuejs-inline-component.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7690321968117511053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7690321968117511053'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/11/vuejs-inline-component.html' title='Vue.js inline component'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-4590847946029065745</id><published>2017-09-29T15:13:00.001+02:00</published><updated>2017-09-29T15:13:11.533+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="&#39;/usr/bin/python&#39;"/><category scheme="http://www.blogger.com/atom/ns#" term="corrupted."/><category scheme="http://www.blogger.com/atom/ns#" term="do-release-upgrade"/><category scheme="http://www.blogger.com/atom/ns#" term="fix"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="is"/><category scheme="http://www.blogger.com/atom/ns#" term="Please"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="symlink."/><category scheme="http://www.blogger.com/atom/ns#" term="the"/><category scheme="http://www.blogger.com/atom/ns#" term="Your"/><title type='text'>Ubuntu: La propria installazione di python è danneggiata. Correggere il  collegamento simbolico «/usr/bin/python».</title><content type='html'>&lt;p&gt;Questa è un problema, soprattutto se si vuole aggiornare la distribuzione.+ &lt;br&gt;
Dì la verità: hai pacioccato con le versioni di python vero? Volevi usare la 3.5 e non 2.7 e così hai aggiunto alternatives o manipolato il symlink. &lt;br&gt;
No? io si. &lt;br&gt;
Così in fase di aggiornamento mi sono bloccato. &lt;br&gt;
Allora per risolverlo ecco la soluzione: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;elimina tuttle le eventuali alternative : &lt;em&gt;sudo update-alternatives –remove-all python&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;crea il symlink alla 2.7 &lt;em&gt;sudo ln -s /usr/bin/python3.5 /usr/bin/python&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;aggiorna i permessi: &lt;em&gt;sudo chmod 7777 /usr/bin/python&lt;/em&gt; &lt;br&gt;
Ora funziona tutto. &lt;br&gt;
La soluzione l’ho scovata qui: &lt;a href=&quot;https://askubuntu.com/questions/448926/do-release-upgrade-python-install-is-corrupted&quot;&gt;https://askubuntu.com/questions/448926/do-release-upgrade-python-install-is-corrupted&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/4590847946029065745/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/09/ubuntu-la-propria-installazione-di.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/4590847946029065745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/4590847946029065745'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/09/ubuntu-la-propria-installazione-di.html' title='Ubuntu: La propria installazione di python è danneggiata. Correggere il  collegamento simbolico «/usr/bin/python».'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-842539916395304519</id><published>2017-09-27T10:06:00.001+02:00</published><updated>2017-09-27T10:06:34.912+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="logitech"/><category scheme="http://www.blogger.com/atom/ns#" term="mouse"/><category scheme="http://www.blogger.com/atom/ns#" term="natural"/><category scheme="http://www.blogger.com/atom/ns#" term="scrolling"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Natural scrolling Ubuntu mouse logitech T620 and others</title><content type='html'>&lt;p&gt;Ho avuto un paio di problemi con il natural scrolling del mouse della Logitech T620 e Ubuntu Gnome Shell &lt;br&gt;
Diciamo che l’applicazione per la configurazione del mouse non funziona molto bene: l’attivazione o la disattivazione del natural scrolling non si ripercuote ne nel touchpad ne nel mouse &lt;br&gt;
Così ho trovato questa bellissima risposta su &lt;strong&gt;&lt;a href=&quot;https://askubuntu.com/questions/604002/mouse-wheel-scrolls-in-reversed-direction&quot;&gt;Ask Ubuntu&lt;/a&gt;&lt;/strong&gt;  &lt;br&gt;
A questo punto devo disabilitare sul mouse il natural scrolling.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;lista degli xinput&lt;/li&gt;
&lt;li&gt;identificare il mouse&lt;/li&gt;
&lt;li&gt;lista delle proprietà del mouse&lt;/li&gt;
&lt;li&gt;&lt;p&gt;disabilitare il natural scrolling&lt;/p&gt;

&lt;p&gt;09:55:25 ~ &lt;br&gt;
.Σ : xinput list &lt;br&gt;
⎡ Virtual core pointer                      id=2    [master pointer  (3)] &lt;br&gt;
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)] &lt;br&gt;
⎜   ↳ Logitech T620                             id=10   [slave  pointer  (2)] &lt;br&gt;
⎜   ↳ ELAN Touchscreen                          id=11   [slave  pointer  (2)] &lt;br&gt;
⎜   ↳ DLL0704:01 06CB:76AE Touchpad             id=13   [slave  pointer  (2)] &lt;br&gt;
⎜   ↳ SynPS/2 Synaptics TouchPad                id=16   [slave  pointer  (2)] &lt;br&gt;
⎣ Virtual core keyboard                     id=3    [master keyboard (2)] &lt;br&gt;
↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)] &lt;br&gt;
↳ Power Button                              id=6    [slave  keyboard (3)] &lt;br&gt;
↳ Video Bus                                 id=7    [slave  keyboard (3)] &lt;br&gt;
↳ Power Button                              id=8    [slave  keyboard (3)] &lt;br&gt;
↳ Sleep Button                              id=9    [slave  keyboard (3)] &lt;br&gt;
↳ Integrated_Webcam_HD                      id=12   [slave  keyboard (3)] &lt;br&gt;
↳ Intel HID events                          id=14   [slave  keyboard (3)] &lt;br&gt;
↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)] &lt;br&gt;
↳ Dell WMI hotkeys                          id=17   [slave  keyboard (3)] &lt;br&gt;
↳ Logitech T620                             &lt;strong&gt;id=18&lt;/strong&gt;   [slave  keyboard (3)]&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;10:01:45 ~ &lt;br&gt;
 .Σ : xinput list-props &lt;strong&gt;18&lt;/strong&gt; &lt;br&gt;
Device ‘Logitech T620’: &lt;br&gt;
    Device Enabled (138):   1 &lt;br&gt;
    Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 &lt;br&gt;
    libinput Accel Speed (275): 0.000000 &lt;br&gt;
    libinput Accel Speed Default (276): 0.000000 &lt;br&gt;
    libinput Accel Profiles Available (277):    1, 1 &lt;br&gt;
    libinput Accel Profile Enabled (278):   1, 0 &lt;br&gt;
    libinput Accel Profile Enabled Default (279):   1, 0 &lt;br&gt;
    &lt;strong&gt;libinput Natural Scrolling Enabled (280): 1&lt;/strong&gt; &lt;br&gt;
    libinput Natural Scrolling Enabled Default (281):   0 &lt;br&gt;
    libinput Send Events Modes Available (260): 1, 0 &lt;br&gt;
    libinput Send Events Mode Enabled (261):    0, 0 &lt;br&gt;
    libinput Send Events Mode Enabled Default (262):    0, 0 &lt;br&gt;
    libinput Left Handed Enabled (282): 0 &lt;br&gt;
    libinput Left Handed Enabled Default (283): 0 &lt;br&gt;
    libinput Scroll Methods Available (284):    0, 0, 1 &lt;br&gt;
    libinput Scroll Method Enabled (285):   0, 0, 0 &lt;br&gt;
    libinput Scroll Method Enabled Default (286):   0, 0, 0 &lt;br&gt;
    libinput Button Scrolling Button (287): 2 &lt;br&gt;
    libinput Button Scrolling Button Default (288): 2 &lt;br&gt;
    libinput Middle Emulation Enabled (289):    0 &lt;br&gt;
    libinput Middle Emulation Enabled Default (290):    0 &lt;br&gt;
    Device Node (263):  “/dev/input/event7” &lt;br&gt;
    Device Product ID (264):    1133, 16423&lt;/p&gt;

&lt;p&gt;10:02:45 ~ &lt;br&gt;
 .Σ : xinput list-props 18&lt;/p&gt;

&lt;p&gt;Fine.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/842539916395304519/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/09/natural-scrolling-ubuntu-mouse-logitech.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/842539916395304519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/842539916395304519'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/09/natural-scrolling-ubuntu-mouse-logitech.html' title='Natural scrolling Ubuntu mouse logitech T620 and others'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-7206236812138509496</id><published>2017-07-11T11:33:00.001+02:00</published><updated>2017-07-11T12:49:33.681+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="memcached"/><category scheme="http://www.blogger.com/atom/ns#" term="plesk"/><category scheme="http://www.blogger.com/atom/ns#" term="prestashop"/><title type='text'>5 step semplici per velocizzare PrestaShop</title><content type='html'>se hai plesk installato sul server e hai accesso diretto al tuo server tramite ssh e il tuo server è basato su Ubuntu, ecco le istruzioni per installare memcached da usare con &lt;strong&gt;PrestaShop&lt;/strong&gt;&lt;br /&gt;
&lt;h2 id=&quot;step-1-installare-le-librerie-ubuntu-per-compilare-memcached&quot;&gt;
step 1: installare le librerie ubuntu per compilare memcached&lt;/h2&gt;
installare le libreiria di compiliazione (versione ubuntu)&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;apt install php7.0-dev git pkg-config build-essential libmemcached-dev
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;step-2-clonare-il-repo-di-php-memcached&quot;&gt;
step 2: clonare il repo di php-memcached&lt;/h2&gt;
clone del repository php-memcached sul server&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/php-memcached-dev/php-memcached.git
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;step-3-compilare-e-installare-il-modulo-php-di-memcached&quot;&gt;
step 3: compilare e installare il modulo php di memcached&lt;/h2&gt;
cambiare branch&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;cd php-memcached
git checkout php7
phpize
./configure --disable-memcached-sasl
make
make test
make install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;step-4-configurare-plesk&quot;&gt;
step 4: configurare plesk&lt;/h2&gt;
la libreria &lt;em&gt;memcached.so&lt;/em&gt; dovrebbe essere stata installata sotto &lt;em&gt;/usr/lib/php/20151012/&lt;/em&gt;. Per un check veloce&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;ll /usr/lib/php/20151012/
&lt;/code&gt;&lt;/pre&gt;
infine all’interno del dominio plesk configurare memcached&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3BxS0rKt-Xnv7Y2rUuRSal5B30YNrsrGP3oH7bfBznK4lHZ-glhAFKjia7ZOXP1lALVU3St8lMj3TJVpERkRUvvGXhOzj8ou0MsQfoARY0jPAKJSouxf3bTMJCueuauuOywMBENEESFIV/s1600/config_plesk0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;236&quot; data-original-width=&quot;653&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3BxS0rKt-Xnv7Y2rUuRSal5B30YNrsrGP3oH7bfBznK4lHZ-glhAFKjia7ZOXP1lALVU3St8lMj3TJVpERkRUvvGXhOzj8ou0MsQfoARY0jPAKJSouxf3bTMJCueuauuOywMBENEESFIV/s320/config_plesk0.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
poi...&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7FDq8TVDEsLurRUYqIbOs78A2HQYwrXyVgfxQRK7lzEThcngvG5GnnKjCHDC3mHrFoVBKlWn1rsidfoEOyoSTWAOGc7yyW7OXz8VH_SAMSAdNcRjtEwM_hWk1OWFqyxRaYZruwilcCDu_/s1600/config_plesk.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;279&quot; data-original-width=&quot;954&quot; height=&quot;93&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7FDq8TVDEsLurRUYqIbOs78A2HQYwrXyVgfxQRK7lzEThcngvG5GnnKjCHDC3mHrFoVBKlWn1rsidfoEOyoSTWAOGc7yyW7OXz8VH_SAMSAdNcRjtEwM_hWk1OWFqyxRaYZruwilcCDu_/s320/config_plesk.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 id=&quot;step-5-configurare-prestashop-con-memcached&quot;&gt;
step 5: configurare PrestaShop con Memcached&lt;/h2&gt;
nel BO di PrestaShop vai su &lt;em&gt;parametri avanzati &amp;gt; prestazioni&lt;/em&gt; &lt;br /&gt;
1. seleziona memcached &lt;br /&gt;
2. clicca aggiungi un server &lt;br /&gt;
3. inserisci l’indirizzo ip 127.0.0.1 &lt;br /&gt;
4. clicca su &lt;em&gt;aggiungi server&lt;/em&gt; &lt;br /&gt;
infine salva&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheEwsYzMr_dES9Ptii9epzfZOClm1W1VLtCyI7sBxPITKXXcubJ6cM7BRfnke-w1h652Z4F9w3OwfTUzryDtmumyRTVfJecdJ_up6vSHPKLdVwOR12bxY9z2w57ZMP3tXPofxveSpxxo5N/s1600/config_prestashop.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;536&quot; data-original-width=&quot;962&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheEwsYzMr_dES9Ptii9epzfZOClm1W1VLtCyI7sBxPITKXXcubJ6cM7BRfnke-w1h652Z4F9w3OwfTUzryDtmumyRTVfJecdJ_up6vSHPKLdVwOR12bxY9z2w57ZMP3tXPofxveSpxxo5N/s320/config_prestashop.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 id=&quot;step-5-configurare-prestashop-con-memcached&quot;&gt;
alternativa&lt;/h2&gt;
se si volgliono usare i moduli plesk, la compilazione parte dall&#39;installazione di php-dev di plesk: &amp;nbsp;&lt;i&gt;apt install plesk-php70-dev git pkg-config build-essential libmemcached-dev&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
poi clonato il progetto da git, il phpize deve essere eseguto con plesk:&amp;nbsp;&lt;i&gt;/opt/plesk/php/7.0/bin/phpize&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
infine lanciare il &lt;i&gt;configure&lt;/i&gt;&amp;nbsp;con i seguenti flag:&amp;nbsp;&lt;i&gt;./configure --disable-memcached-sasl --with-php-config=/opt/plesk/php/7.0/bin/php-config --with-libmemcached-dir=no&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
procedere con l&#39;installazione normale&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/7206236812138509496/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/07/5-step-semplici-per-velocizzare.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7206236812138509496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7206236812138509496'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/07/5-step-semplici-per-velocizzare.html' title='5 step semplici per velocizzare PrestaShop'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3BxS0rKt-Xnv7Y2rUuRSal5B30YNrsrGP3oH7bfBznK4lHZ-glhAFKjia7ZOXP1lALVU3St8lMj3TJVpERkRUvvGXhOzj8ou0MsQfoARY0jPAKJSouxf3bTMJCueuauuOywMBENEESFIV/s72-c/config_plesk0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-8135548689647283939</id><published>2017-06-12T12:35:00.000+02:00</published><updated>2017-06-12T12:35:19.455+02:00</updated><title type='text'>1 mododo per fare il debug smarty in prestashop</title><content type='html'>Si sa, la prestashop 1.6 non ha più il popup di debug richiamabile da prerfoemance&lt;br /&gt;
Ma ciò non vuol dire che non ci sia più il debug.&lt;br /&gt;
Samrty lo &lt;a href=&quot;http://www.smarty.net/docs/en/language.function.debug.tpl&quot;&gt;ricomprende fra i sui tag&lt;/a&gt;. Quini basta usarlo.&lt;br /&gt;
&lt;b&gt;Ecco 1 modo per fare il debug smarty in PrestaShop&lt;/b&gt;&lt;br /&gt;
Apri il template prestashop che ti interessa; inserisci all&#39;ainizio del file o alla sua fine il debug smarty {debug}, salva e ricarica la pagina.&lt;br /&gt;
ll gioco è fatto.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/8135548689647283939/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/06/1-mododo-per-fare-il-debug-smarty-in.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/8135548689647283939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/8135548689647283939'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/06/1-mododo-per-fare-il-debug-smarty-in.html' title='1 mododo per fare il debug smarty in prestashop'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-2804406535667702748</id><published>2017-02-17T09:58:00.001+01:00</published><updated>2017-02-17T09:58:10.542+01:00</updated><title type='text'>Trasferimento server to server (LINUX) della casella email</title><content type='html'>&lt;p&gt;Oggi ho scoperto un tool veramente molto utile per il trasferimento server to servevr delle caselle email. Ed è acnhe veloce. &lt;br&gt;
Si chiama imapsync [rif: &lt;a href=&quot;https://imapsync.lamiral.info/&quot;&gt;https://imapsync.lamiral.info/&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;In pratica il tool da linea di comando si connette via imap al server email precedente e trasporta tutto al server di destinazione&lt;/p&gt;

&lt;p&gt;Lo uso  quando faccio migrazioni di vps.&lt;/p&gt;

&lt;h1 id=&quot;come-funziona-imapsync-per-sincronizzare-e-email&quot;&gt;Come funziona imapsync per sincronizzare e email&lt;/h1&gt;

&lt;p&gt;Internet è una risorsa. Da questo blog ho preso tutte le indicazioni &lt;a href=&quot;https://www.jverdeyen.be/ubuntu/imapsync-on-ubuntu/&quot;&gt;https://www.jverdeyen.be/ubuntu/imapsync-on-ubuntu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uso una distribuzione ubuntu 14.04. Non esiste un pacchetto precompilato da installare. imapsync si basa su perl. Ve lo ricordate?  Mica è andato in disuso.&lt;/p&gt;

&lt;h2 id=&quot;primo-si-installano-le-dipendenze-di-imapsync-per-la-migrazione-mail-server-to-server&quot;&gt;Primo: si installano le dipendenze di imapsync per la migrazione mail server to server&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;sudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl
&lt;/code&gt;&lt;/pre&gt;



&lt;h2 id=&quot;secondo-si-scarica-il-progetto-da-git&quot;&gt;Secondo: si scarica il progetto da git&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;git clone git://github.com/imapsync/imapsync.git
&lt;/code&gt;&lt;/pre&gt;



&lt;h2 id=&quot;terzo-si-compila-il-pacchetto&quot;&gt;Terzo: si compila il pacchetto&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;cd imapsync
mkdir dist
sudo make install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ora in fase di compilazione ci potrebbero essere degli errori. E’ necessario installare i moduli perl richiesti. &lt;br&gt;
Per installare i moduli per, installare il pacchetto cpanminus:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt install cpanminus
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A questo punto l’errore in fase di compilazione potrebbe essere così&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here is a cpanm command to install missing Perl modules:  &lt;br&gt;
  cpanm “Authen::NTLM Readonly Test::Pod”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;L’errore indica già cosa fare: &lt;strong&gt;cpanm “Authen::NTLM Readonly Test::Pod”&lt;/strong&gt; ergo da linea di comando installare i moduli:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cpanm Authen::NTLM Readonly Test::Pod
&lt;/code&gt;&lt;/pre&gt;



&lt;h2 id=&quot;terzo-avvio-della-sincronizzazione&quot;&gt;Terzo: avvio della sincronizzazione&lt;/h2&gt;

&lt;p&gt;Completato il compile del sistema, è necessario avviare la sincronizzazione&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;imapsync --host1 &amp;lt;server1&amp;gt; --user1 &amp;lt;user@server1&amp;gt; --password1 &amp;lt;user1password&amp;gt; --ssl1  --host2 server2 --user2 &amp;lt;user@server2&amp;gt; --password2 &amp;lt;user2password&amp;gt; --ssl2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Naturalmente server1, user1, password1 sono del server di partenza. &lt;br&gt;
Naturalmente server2, user2, password2 sono del server di arrivo.&lt;/p&gt;



&lt;h2 id=&quot;infine&quot;&gt;Infine&lt;/h2&gt;

&lt;p&gt;Su plesk alcune volte ho difficoltà a settare correttamente i dns. Quindi il l’host2 è di solito il nome del dominio senza nessun prefisso.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Come sempre se hai suggerimenti o modifiche etc, bhe commenta. Spero questa guida ti sia stata utile. Condividi, ciao! &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/2804406535667702748/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/02/trasferimento-server-to-server-linux_17.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2804406535667702748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2804406535667702748'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/02/trasferimento-server-to-server-linux_17.html' title='Trasferimento server to server (LINUX) della casella email'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-3939263841060753269</id><published>2017-01-13T09:12:00.001+01:00</published><updated>2017-01-13T09:12:41.905+01:00</updated><title type='text'>Installare php-mcrypt in centos 7 64bit</title><content type='html'>&lt;pre class=&quot;code-pre &quot; style=&quot;background-color: rgba(0, 0, 0, 0.0470588); border-radius: 3px; box-sizing: border-box; color: #3a3a3a; font-family: monospace, monospace; font-size: 14px; margin-bottom: 12px; margin-top: 15px; overflow: auto !important; padding: 9px; word-wrap: normal;&quot;&gt;&lt;code langs=&quot;&quot; style=&quot;background-color: transparent; border-radius: 3px; font-family: monospace, monospace; line-height: 22px; margin: 0px; padding: 0px;&quot;&gt;# install EPEL with yum
yum -y install epel-release
# install php-mcrypt
yum -y install php-mcrypt&lt;/code&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/3939263841060753269/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2017/01/installare-php-mcrypt-in-centos-7-64bit.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3939263841060753269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3939263841060753269'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2017/01/installare-php-mcrypt-in-centos-7-64bit.html' title='Installare php-mcrypt in centos 7 64bit'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-7500299056433245974</id><published>2016-09-26T22:50:00.002+02:00</published><updated>2016-09-26T22:50:53.921+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><category scheme="http://www.blogger.com/atom/ns#" term="vich upload"/><title type='text'>Vich Uploader: due note per ricordare un apio di aspetti</title><content type='html'>la documentazione del bundle symfony &lt;a href=&quot;https://github.com/dustin10/VichUploaderBundle&quot;&gt;vich uploader&lt;/a&gt; è chiara, anche se non è perfetta&lt;br /&gt;
quindi ecco un paio di note per non incappare in errori sciocchi che però fanno perdere tempo.&lt;br /&gt;
la configurazione in config.yml contiene le specifiche di come devono essere trattati i files in upload&lt;br /&gt;
la configurazione ha un nome e si chiama mapping. nella documentazione del bundle è product_image&lt;br /&gt;
nell&#39;entity che conterrà l&#39;immagine è necessario specificare due campi: imageFile e imageName&lt;br /&gt;
imageFile contiene il riferimento alla classe symfony File, che è il file effettivo in upload. Il campo è definito come UploadableField e richiede due cose: il nome del mapping, ossia il nostro precedente product_image (!importantissimo) e il nome di una proprieta dove mettere il nome del file&lt;br /&gt;
Il form che effettua l&#39;upload del file deve inserire nel builder un campo di tipo &lt;i&gt;vich_file &lt;/i&gt;o &lt;i&gt;vich_image&lt;/i&gt;&amp;nbsp;e il nome di questo campo deve essere imageFile.&lt;br /&gt;
in fase di caricamento il bundle crea in automatico le cartelle specificate in configurazione, ma attenzione che il proprietario della cartella di livello superiore deve essere corretto</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/7500299056433245974/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2016/09/vich-uploader-due-note-per-ricordare-un.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7500299056433245974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7500299056433245974'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2016/09/vich-uploader-due-note-per-ricordare-un.html' title='Vich Uploader: due note per ricordare un apio di aspetti'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-1879598237244416219</id><published>2016-08-29T23:50:00.001+02:00</published><updated>2016-08-29T23:50:04.126+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ionic framework"/><title type='text'>IONIC FRAMEWORK: cache </title><content type='html'>Ionic ha un sistema di cache per le varie view.&lt;br /&gt;
Supponiamo di avere dei dati salvati su websql, tramite PouchDB, ebbene ogni volta che c&#39;è un&#39;aggiornamento dei dati la vista non si aggiorna.&lt;br /&gt;
A causa della cache.&lt;br /&gt;
Per la vie di visualizzazione, supponiamo un carrello, basta usare &lt;b&gt;cache: false&lt;/b&gt;&amp;nbsp;nello state della route&lt;br /&gt;
Maggiori info su&amp;nbsp;http://ionicframework.com/docs/api/directive/ionNavView/&lt;br /&gt;
&lt;img alt=&quot;save image&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAj4AAADnCAYAAAAenFxiAAAgAElEQVR4Xuy9f1Bc15n3+XEsN8SmbSUQS2DHIhUPOFVioyrsfY3iWqFKCvQmwGoE2Rchzao1UYHyhtao1LgmtKqWZqvUeGu6tR41mTGUPbTfSI22QitaNXlXUHGpVRuDZ62uchZqIxi/VS3FaZDTeKRcnHBbWNq6/QOa341oSRf76b9sce85z/k8p/t87/M859xH7t69exf56JbA1Q//MMe2F55/Rre2imFCQAgIASEgBPRO4BERPvp2kQgffftHrBMCQkAICIH1RUCEj879JcJH5w4S84SAEBACQmBdERDho3N3ifDRuYPEPCEgBISAEFhXBET46NxdInx07iAxTwgIASEgBNYVARE+OneXCB+dO0jMEwJCQAgIgXVFQISPzt2VbuGjjrho8m7Hbi3GqPOxi3lCQAgIASEgBNJNQIRPuommub30CZ8wPnMVrYMRsgwwSTZbyhx4bEVkJNusBrBWdVLW00Hp/VJGa+xDGXJjbfMxQQaqqkJOIfmGAswuE/np5K8EsDfYCKgGMjIywFiMxWGhOIlLuM9EQ6AZj7VwLseV7FCHcB2x8nYgwpaC7Oi9qqJgLLPjMhc9eFGaqk/UIO4jZjrD1Xi8aea9ErOU/q7gb6ik+0AfHdvnzOyU7v78XBSiz2alczSifUtQ1QzytC9HZQeudHyxw31Yj5xkILuFPtf21c39ZSCHPCZajQ46KnNmr1J/z9Hzfs5jYONnsO2/r8T9/OOzfw95aHBmc8JZTtJdnx9XykjSTkCET9qRprfBtAmfoBuTMxeHK/7jEPbjDhRgKs+bZ3CIPtcghfXV5N+3dWMNfYQ8mMxjWDwWiuL2aVGsOmsEu8dCYRptVvxmrKodV/nSClAd8tA9UYap9B5+cjWxYQ1xzFkZ/8FWCNjM+Ko7sCUGl97ptNySk7rf1RGc1gDVzrr0Cs20jFUl6OtkqNhM5fypnZb210Mj2jwy4S524ZqBEMZvPUh3mYeOdAgfDYPSh8VmxO5Mk/BR/FhMfuo8Nopnvscq/nfO4y7YjfvrGTB9g6PeAKW7v8/umWsU+hpMDDZ6HsL3Zj3MB7FxPgERPjqfE2kTPtqPSlOA6pZGtuctpg5Ugp4mrL0TKCEjFt8iEZ9QH1ZzO0MYMEQiRLJLsbkSEZAwfdYGWgM5FGWFCGcYQVHIM3Xgqk6sQCn0QRi/vYnO4ciMZwwGA0XNHVgKYcR1hN7SU1jmCAOV0MgE2YV5sSfPNdsZwme10j00SpB88qO6x0hxc1K/YT+2pk5GlQmUIgc98yNnqIxoPL1aXEphYjKbHSUK/YEcqu2nMGv2LxA+oPgtWFVbTGyFvFia3AyqZXRYod3WT9gAkbx6OlyVaFTDA3aOtA2iGGI+yShu5JQtJm6DXgvmtssoW0ow2R2YCsfwWqx0Xh7FUNyI45SJwoyVfaIMuWiyan0boj7JK60jd1SlzpUQPvHowlCEjAwVVYG8vXYcdYkomELA3oRzcARjYwcVl610DoHWWrHdg3UlkadF3sxWzg0b2FphwWErJSNgx2w7x/DEFsrsHdhLc1CHnBxpC6AoIYwW3yIL/DJ2KgNYa47Qb9hBS4czLpric7p/guITPbjKc0AZwtVkw69kxKMcCiGjBV9H6cpROmUAu6mJcxMGso3a98NAQWGEYNhAhO04EmJeHcJ5pI2AkvgKGClrOYUprurDfWaqjg+SveMEXc7yKAtTwznGipvp6agmT+mjoSnCiY6EoI63owST5rP2PTtO5/BMJ+RW23FWJ8VMlQAuq5PBiYQdBgxqNvUeJ9FgmtKH2TyIITJEUKOhqOTXu3DOiC2VoNeK1TumxTNR1QgZhfU4WipZ7Cco5DXRFLLhMSfZMB3i8P/1MUcrt/FC3Izx/+88hx//j5xPejJTA1aqXDs4414q6qMy4qxiX/cEW5ov4J35TdL5AiDm3RcCInzuC9b0NZo24aOZpAbxe30ExpTo4lS410L1ghCJyoDVSqTZOTfVpQ5hP9hJod1BdfwHRx1ycbDNiN0TT3kofhpqvFR0ueILRwhPg5P8U/EfyhksS/ShLdbuOtoMDjrqEmJJYcBmxl/dgbUogt9iA9s825Jxp9FOTYTYsOFc7glZEyfdBdgtc1OG2r0N/mo6bNtjC2LIh7nGicHVhzPxODtf+GgLY107eR0eTDNacQR71T7OZR+gq8NMUXLwKeiizmakpUMTMFEHE/QewTrSSJc1Zo8yYKUp2DjLM+yj4TgLF0WW8Il2/ZEh6jus8RSfwpCzjoP+anp8mt9VhuxH6C93YJnJASoEnA14ijvmsFP8DexsCrKjpQt7ZVykpvxV0eZSO/kOO9ujDOL9Vp/CMm8OL+63le2cFZ0QcHWi7LVQmuHHbFWxu8qjftSigE0TzXQkFk4lgNMFjdbilNI96oCZg4P1dFmKUPoaODLWTJcpnzGPGU+RY3ERqAkMawZ216y4UoacmNrA1tGI0duAZdREh700FjkMurH4S3GaVpP41VLhJ8nW+MaeHvCamgg1d2FO8NUifQfbKelwxXyg9GGqPEelp4MYjpiPCk/ZoxGb6NwbPcAp02waOOy30TRQTUd8fs66P0yf6SCDlp65URs1yO534Oz388mMXzwV/K/UTn+X888nPcApfkyVbkw+95Ipek1YVbWNUuLoS0+6L+W5KxfqjYAIH715ZJ49aRU+cwRCAHvTSNJTe+KPiy+AasBGU7A+KXqTWHyaGKpzUaf9xmpRpaguSfxAK0sIlaWETxCP2UuRYzaNNRfHUu3NXpVOO+9d+Gh2WlGbXWhBgsQn6DLRub0De5LwsVRZCWZrNT4qqqGQuuaWuWJUW2ya+qlwmBek8YJuM94Sx7yFP4TH7KbIYY2lAtURXEe8lJ6K/X/Q3UBngQN7TD0kfRb3idJnxpphn7tQqANYGkYxu03ka0KzpomAMVanNKttFdTtDjyW2UUvldThcl/HsK+B45yI1X9EI5ghLB110chX8mdRv6ViZ9iHpT0Pe2OIhqo2IpYeurZ6sQYqcUYnuDbHtYiPkwAZGLNyKSitZG9lccq1JeqABWskJqaT7Qz5LHTm2bFpc0MN4muz4Y5G0DQfThAyHsPnjomvxEcZslN38ByRslP02OMCW/tjSsJHYcRjo9UbJN4JE6EcmhOR3nAf5rYM7DPf5UU8syDVlfz9VBgwV9IayiN77sRggmq6PPP8FvWPk6IuN8nlPRqLlIQPQVzVVoxOD6vSe8tNOPnb55aACB+duzZdwkcrGmzTFrD4k6pWF3OwLQ+Hu3rewvFwhY/b7KXEsVStjhpNdXlLTy2ZHllvwmdujc8ik3GZepqUhI/2HO5toC3bgaskiP2In7oO8yK1OfcofLQFx+Si2OWMR2KW/kKlJCSX+z6qAWxHhjB1mMjyNnA86wQdycoyfu/i/aRgZ5x1WellOiN7MPZPsLciQHe2HfsihdKqEmS4343Tl49dE4Ep/JasLHwiDFhMeEtds1ExdQCrVaHZmSx8tO/CQZqGjRjCW7C6ExG5WCSmoWmSEx3VSwqysE8ryjfRYYtHiZj3UBH2YW7LxrFc/c6ywkclYG3Af0BLUadQeKcOYatxUjxf+Cya6vJx+PGyOakuEsLHlRQtneeP8EiA0cksCooLUxaqKbhULlmHBET46Nxp6RI+YZ+Vk4MKE8EgIxMG8gu2U99iYfuCmtylU122g50UOxxUxhP06oibg63MSXWtLeKj5eEP0p7vmBNZCvXZ6YyYsGm1A2E/lgYfpU47lYkcf6gPS9Mgpi4bRQyRLjtTWqiXS3VFQ/qrSHUtNheXKyReJNUV8jbRNFI/k+qKRSn8mJsmaNzj5+RkUppmTn+pprpUhpw1SakuLcBQjTlowZNI62nthgbwjuZTXTobj1mZZxi/uYqmwQKaL7jj6ZO5ULSIlbugkfy3vRSdSi6CTYqELJGiXNlOBb+5Ae+EkYoOBzltZjqDRvacSkTuVAK2JoL1riTbgnhMTvJcrjkpFu3Bombf20QquriQVP+1svBRYikneyKlp5WsWWk4twNPR0L4qAy5DmKbaMRt245Be4ixKlhmxE9MFLVGLHRYEsdWKAy5zLTn2emozmbE1UR/mWMmjaUGvTSZ+6n2JGr7QnjqmphoSUp1EWbAdZJgpT0e4Z1f3DxXPKlDdmq0FF1PUgRXDdLXO0Fx9fwoWRif6SCB+akupvG/839ytqCCN+LFzT/1/j9sq6ykNmljlzbHl011qQOYdx5hMLsxnqLV+Q+/mHdfCYjwua941954uoTPjCVBDxZvMfakFET0byEfVms3wQgowSDk50fD6tllLTgSOXrtmmhxc1a8uLmEZpc19qQfTak00T0ExY0uHHX5RAZsmJr6obSFDns5Oan0gVZY3ETnCBi1qL+qklNsotlSObvLTGunyc0IWoGpikohJkfLjCCLjmUtdka3mrcxGEoqBjXks9duj9cuaQvPEdoGFVBDjF4zUlBgBEMB9Q4bsQ1eycXNKkpGIXvLFEaLHPF0xrzt7MZimk/NTfGFvBas3lGGRyfILYj5w1jSzCnzbD1R2G/niDNW3EwkgrGoEYe9fEEUb8heQ0N/Hvb5Resp+GROcXNkEorKyA/4CG4143JqEUOFgMuMrV8hWrOrRMBYRL29JSZOtToYLT00j+cBu525mwpDeKqrOHktlwM9PpJrXGfmb9hH3a421EYP3jk5jSAei43esegEniniNeTvxW6PFYKzkp1asbi3jirfAfrc5RgCFspteXT0JCKQKgOWGtonjBCvvVcXFPTGLNWKbXc29BMpdnApUficKG6OlEQLqEtHG6h05WLrsFFwuY46bzGuLgu5gzYanENkZBsxRBQiuXkog6MYy45xylbMsKWGpstQUGHjVLTQ24nZ2s2wUkxLT0d8jmpCpwmbX4lnslSMpVYc5rgQCvmwmDsJZmRjREExFJI/4Wc0uwKbKx49Cvuxa35TjLGiddVIYV0zzdWFGLUC7IYmukcN7LC4cFbnEnQ3Ye4MQFF9vHBee06xccQZQDUaQIkQMWRTYnZgXWQXZLS4WbHhmZ+rUn/P4fP/N+9teBT+DNtK5m1n13gPWalx7sAzLx2YmDeaP8obAlSeuZBaBGrtP93Sgo4JiPDRsXM009IufLQIhXcrdvMqz53ROaf1YF7YZ4k+cUfrOOQjBITAXAJaZNLkxzRnO3sqkLRInQl//VLb2VWGbFU04ZgTfUulZbnm80lAhI/O/Zp24aPz8X5+zQvjbWiClsVTOJ/fccvIhEDqBBY9wHCl21M4wFAZGULJL1p0G/1KzcvfP38ERPjo3KcifHTuoOXMS5z1E9FOZVbJNzmxV+entO15HY9aTBcCQkAI6JqACB9du+c+pLp0Pl4xTwgIASEgBITA/SQgwud+0k1D2xLxSQNEaUIICAEhIASEQJyACB+dTwURPjp3kJgnBISAEBAC64qACB+du0uEj84dJOYJASEgBITAuiIgwkfn7hLho3MHiXlCQAgIASGwrgiI8NG5u0T46NxBYp4QEAJCQAisKwIifHTuLhE+OneQmCcEhIAQEALrioAIH527S4SPzh0k5gkBISAEhMC6IiDCR+fuEuGjcweJeUJACAgBIbCuCIjw0bm7RPjo3EFinhAQAkJACKwrAiJ8dO4uET46d5CYJwSEgBAQAuuKgAgfnbvrw+A409OfzVj5wvPP6NxiMU8ICAEhIASEgH4JiPDRr2+ilk1+OsUfJ/6EGrkd/X8RPjp3mJgnBISAEBACuiYgwkfX7hHjhIAQEAJCQAgIgXQSEOGTTprSlhAQAkJACAgBIaBrAiJ8dO0eMU4ICAEhIASEgBBIJwERPumkKW0JASEgBISAEBACuiYgwkfX7hHjhIAQEAJCQAgIgXQSEOGTTprSlhAQAkJACAgBIaBrAiJ8dO0eMU4ICAEhIASEgBBIJwERPumkKW0JASEgBISAEBACuiYgwkfX7hHjhIAQEAJCQAgIgXQSEOGTTprSlhAQAkJACAgBIaBrAiJ8dO0eMU4ICAEhIASEgBBIJwERPumkKW0JASEgBISAEBACuiYgwkfX7tG3ceGAh+5gEabqIoz6NlWsEwJCYEkCIfxuL0ppPZX5GcJJCHzuCYjw+dy7+H4NUGXEWcM+fzU9PhP5K3az2utXbPDhXKD4adjZhOHUu7i2r/9FQg1YKW8IYrnooTLn4SCVXh8yATWAZWcDEy2XcJfLI8xD9oZ0/wAIiPB5AJDX2oU6ZKP8YC+T8xvKymVrcQll1Saqt+exYBlWR3DWHKS/yEGPfXuaozKrFTKrvX6t1O7T/etB+AQ9mOo6MTb34FpBzaxG+IR9ZmraFOo9bupWVrr3yQHS7IoEVuH/aFsifFZEKhd8vgiI8FkH/owJn0G2n3CwNy9ucEQhFAww2N9Pf2AMw9a92B0Wts95ag/htVjxFzXjMBUuFEZrGvtqhcxqr1+Tcffv5vUgfMJ+bMe7MdY7sBTHn+CVEbzuALl76+bMkdUIHyXgpKlTYe8JG6UPKjq0hN0pO3it96fckY4uXMz/y5knwkdHzhNTHgQBET4PgvIa+4gJnwDVPT7MizxpKyNerA1tDGaUcarHzvYHEq1erZBZ7fVrhHa/bl8PwmexsYe91O1yUdDVh61oNja4GuFzv5Au2+4Sdqdsy1rvT7mjdXyhCJ917Dwx/V4IiPC5F2oP+J6VhE80Wh30cLDmJKGyDnz24jSntRYb8GqFzGqvf8CQU+1OhE+qpNJz3VqFy1rvT88o9N2KCB99+0esSzsBET5pR5r+BlMRPqAyZK/i4Ll8TlzqIFajGMJTXcXb289wwZJIdYUJuNtwui8zqhUNZRWwo7oeS30pefFAgBrso9P1Nr2Do0xEAEMuxdWNtDSWz1yj9Zcobj7TUcBgezvd/tj1htytlO41c6yumNmMyNLCR9sd1u7qpn94DK27rC07qDZbqC9dpG5pAV6Fkb5O2t/uJzA6QQQD2VtL2VvfyN5E3ZMygq+zHXd/gGvRAWWxZUc1lmbzvNQgEA7gOemie2CYsSifLZSUmWg0V1KoMU0IH8cZqofacXkHuTapjbmYaksLltJELnLW0HsZn9LXwM7jcOJiB+UzEMP4TLtoDVbQ1WdjJnATreXaR3/JGS5YC8lQ/Jh2WsnuuIRz6zDWnQ30a8NO/hS0cNFTiTFR3HymkYm32+nuH2UiyrCMRlvznF0+asDCzoYJ7JfclEbnl0rAWo55wkZP4wSdzk76hzUfZFNQUU9LczWFK9R/a3PN2dZOb0DzvYHcrWWYLBaqC0aXtTuHMEPedto9fgKaA4DsgjIONDdTV2SM1q0sN+4oUjVIX7uTTl/Mh9o831pmwmKpRmti6Y/KkK2cg6NmehzZ+Jyd9F7WuEFWbjGlpkYsc3Y6znLy1Adx2d1cvjbJ1hMXcUedqxLs68T1di+D0TmsTbtiyuoaMc+0E8JbV0Wb8QQXO8qTvlfa7SPYq/ZxuSz+PU/2f3GSAxLj7R/kWsxYisvqOVafTWfVkYXFzSnxWWls6f89lBaFwFoJiPBZK8EHcH9qwgdi1/kpnUlnLBQ+YZ+JqjbYa2+meqsRZbifdlsnE/U9eOq0RVsh4LTiNZRRXVbMlmwDk2ODeNrauJyfXCQdFzJeI1uMCvl7LZjKtpLLBKODXtqd5wiVtOBxVhKTAosLn3CfhZrjg+TtacZSV8wWg8Jwfztt7UMUtKxUnKsQsNfRcA52NFowlW4l1zBGwNtOW7dKfY8bbUjhPhutg/lUVJdSlJsFk9cY7LThHCqlq8cyszirQS9H6toYKthDs7mO4i0GIqODuJ1OBrUCcdt2jHHhM5KbTXZRPdb6HWwxjEXba+2NcOBMD+ak1f6exxfuw7SrFaOjD1dMZUDYF/23YbKp6Lowm7IKuqmucVOU8Pu8hU9VFCITPkw1nRSe6qFZU0wGI8YMTR9ou7r8GLOzyd/bTGNZAUZlmO42K93BMjp8NhJlQosJn6gA8OeRm2Gg9JiF6qJs1FEvJ61vM1LiwOcsXTr6qA5hrzrI5eJm7PUl5DJGwG2nzV+Iw2enmKXtJujF6hxha3Ul2wtyydLmnb+T1vYxDvR4on5fbtyaWHAd3MfbEyU0NjdSttVI5FoAj7ONc2o1XR7LrLBc8B2PCx9/PgUZCvkHzBwo3Up2dO5342zrZbLMwRl7aVygJK6PcSpp1LaNZ2PMLyTfqH3fTDR0R2JzeOY7lGjnBGfsMaET7mtg13GF5gseqpP0dcyHI5h6vJi0VPhiwkcdwnXwYHS8B47VU1mci2HyGgGPi/bBCIaxUbJPJO3qSpnPcmN7AD+O0oUQuAcCInzuAdqDviVV4UPQTWVNO/kzW63nC5/Y01nDhI1LHUkLkhJGNeYsW/wctaFBwXnJSewhMi5kuhXKHD7sicU5DkcdclJz0Ev+iQu44k+1C7a/K37M5U0Eq7vosRTN6T/orqbGXUhHnz3e30LqCaFX7OjBOa/aVlUhY7logyZgytvY0nUBa1SohPCaqmhTGjnjMc2LVKioZMTsiwufQEEzFzzVcVEXe+p2Vu3DV9JFny0+ljWNLxbdacs+RZ8ztiMv3Geiqr2A+rxeurd0cMEa6yfkraPKlU9Xnz22WC+28C1b49OP8cAZesxJBfAhD9VV7eSd6sMVLxpbUvj0ZrBH45hUOxT21rGrzcCJS+549HGRb03IS12Vm+IzPVhmxKJKWMkgJxFxWVWqKoy3bheeigt4oyJeg7Z4bVPQVUlNdz4tF1xzt/ErfiyVTYyZL+BJVhdzzI8v9r0ZVHT0YEsow/g1ypCdmoO9bHX04Yx+L2avn89JHbJTdbCfrYvN4fnfIWUAS+URgqYevFGFE52QDFjKOTLRzEV3ZUxoLeL/2HjzaOnpoHJOUFIl6Gmg5uQwW5OET+p8lh7bg/6dlP6EQKoERPikSuohXpeq8Ekp4tNnpur4KMV7G9lbUUxx4SLpJGUIX6cb78Awo9dioffYZ2vSQhYXPgPV9HgXO8cnjK9uF61GR1xkLYz4KH4zO5smaFnsDJmQl+qqTorPJITJfAfEf3AD1ZzxmSlc1j9hAp5O3L2DDAXHmJwZkIEdWjpIU3JhH3XRCMslOuaJuDlNx4WP0nIRz5yt4goD5p0cURxccsdE5drGN1/QhOlrqKJ9q4euIidVbbl0XLBSlBETSM68DvrsxTPibCbVlUh1LCt8hhYWzqtD2MoPMmS+gDcuAJYUPoOVnLkwGzmLyuIRJ1X7/FQsUZAfZapFFWr28bahjGP11WzfXkz+/BTTksJHJeTvptPbT2AoyNisU8neE0/5LSl8grgqa/AWJ4nUGSfHHw5CmpCYl1JKuiaR6pojfmf+HktLOTXR6tJEa3yuLuCUmMOVnPFZFpnDC79D0XT2YAU9PnPs7KxwHw1VrRjsSZHBBcInPt6ipDmSPKkX1Pishs9SY3uIP5jStRBYgYAIn3UwRVITPrM1Po5LHfEajMVqfFRCA146u3sZ1Gp4yKZ4TyPHLJWxKEfYj7Wmif7sMhrrqykpKqAwz4g6Yqdq3yjHZp7gY0Lm4KiFvuToUfICYtlJQ9DCBa8WGVkofKKRirZRMBgwLPBDhEjEwI5Tl3AuelCggr9hJ03qiWUWKK3REL6GGlqH8qnQUgzbt7I1P4eM6I+9GVxx4TPipHJfPyXzIhcLzFqyuFkloI13ooVL7vKo8Fnb+LQGtKjL2zHxl+2noaqdrR4fZu2/tWhVxwWs+YM0lFvJ0qILie18q474LHKAYTyCNXBgNnqypPAZMsd9nEQrGn30Urac8NEu1+qv3J14+wcZHotE67tMlmZMiXMZFhU+KiPug+xrD1G818zesmK2FuSTk6HQZ9rJyYIVhI9W/1PeQL9Wm2VYZOZFIrClkQte02xEb85E0Bb7KsyKnT5nXGzO+/uA+TscmYjVUeUkhM8CTivN4ficCmq21MVsiXLtnpmnWup6lzNvbmR0vv/j4x2ZEylKNjiIu7IOf2Nf7ADDVfGJC5/F5sA6+G0VE7+YBET4rAO/pyJ8Ft/VtZjwmfOoFxVBTutJAsWn8Dm3o2o/pK0Z84pqQR2wsPPIBC3zhM++geolFoh4IW7G8hGf8qYIzT0nKMla3BEZOTlL1IioDFnLOTi0QsQnXv9S2OHDnpySiNfQRAuAoxEfLSXSlnLEZ+HJzQuFjxbxuffxxUSbVpzeXXqGjoKT1LQXxGuSFPoayjm5pYMzpW6qmiI4+lyzxxg8aOEzap6b9ptZoFMQPsluD4/Q19nK8XMqjYl6lcWET7w2aLDsDD0zRfuzvN4uTi3i01vSQVf9lkVEN5BhJEcrglr0M1vcfNFTPbfQOHr9EhGfBZySIj5JtWazXc6P+MTbNlXhikb4cvEu2LywWKorEfHpos8+N6Uc7SteCB6aObk5dn1qfGZZLB79Wgc/sGLiF46ACJ914PKVhI92jo+toY3LC87xWSh81PAIYxlaUeXswIPuSmq8sVdPGLQojDOXjplanuhjOX5LOU2XCxamurQan1M+7PMOD1JHXNTs606hxseKYunBPb+eQgkyouRSmNhqtoif1IBWd+Rn+yI1Rqja4hVLudTs66f0zIWkOhItGqMVeY/Oprrii1UbjfR0mZj7yqKFNT6pCB+t1sJcfu/ji+kHzTclNGb30l3UNbM7Tyt0rTqZTePWAdojNvpcyTVbSbu65qW68jv6sCft9FnyHJ/VRHzuWfgoBEdUcguT6suUgWjdF45LsVeCxIXPHLsTEYz6pFqe6CYtN3U17UwukuqaP+5oDUtvCR091pni7dgUUwmNjGEszF/mSIikupaOHqzzanwS9W0F82t8FuGkfberDvpTq/GJfweigtoKdlcBzgY/ey94o8XcM58FwldlxFXDvsVqmqKRSe27sEiNT0p8RPUqat0AACAASURBVPisgyVETJxHQITPOpgSy57c7O+nf3AM4ic3z63xnS98QnjqqjiplnHMcoDSAiPKqJ/O1pMMl3RxQSvKDbqornkb9pzAbtpOHiEGuttoD0RQRkl6p1NiV5eBXEOEAlNiR8ok1wIenG3nCBW34HGtvKtr3/FAdFdYY3UJuQbtfh/u9rcZ2nqCHudSdRYxQTZgq+NIb2xXV31ZfGeN/23a2kco6/Jgzh/FVnWQ/twD2Jv3UpwdITjYSVvnKOpEkLzEAhtdOOfv6soiMjaI1+nEl22jx1lKzipSXZqF2q6uex+fpnxcVNa8zRjZ7Emud9JqO3YdJwAUn7hER/I7lhaL+GiFseVHGC49wanGIjIiRvLzjfFdXWtMdd2j8FECViobBijUdpNVF8d2dXnbaO02YLngju1cWtRuYkI8UMwxu4Wyoiwmh/pxOb1MRMYYK+6IzeXoFFl83DO7uma+C9kwMYy/u5P2XpW9ZzxzdufN/ZmY3cm0JUOlcN6urnZnL6GS5Lm7nDiYu6trZg4PdqO1M1E6u6trxoa48BswGohkN3MhUdScuGBR/w/hNB2ke3IHjc0myrbmRnc3BrydtPeHYeIauYvt6lqRjwifdbCEiIkifNbfHFjuXV0FRSVU7K2jenv+IruyFkl1KUPRhdzdP8xY4oyeikaaLeUzUY7wgIs2pzd61kj0HJtKM817Vaw1nZR64ltmk8/xceXT75o9y8SQrZ3jU88x0/aUzvFRhrw4293RV29EzzDRzkLZW0/jnHOAlvKbwoivk3a3j8H4eS5ZW0qoNjfPnAOknRXT3taON9q+doaPdlZLKUFzHf31F+JnqcTbDw/gPtmJ1z/LZ87ZLqsUPtG1dy3ji0deutlDV7SYOcEhTJ9pF8eHt3LiojvprJ8ldnVpkYy+NpraeqPnN2WXnYq+v82w1EtKH0jERytQ7sTZ6eVy9FCp2Fk8ey3HMBUnDi9a3G6jVhvkbKO9fzh6dpR27tAByzGKfPswj7VEi4pjqJa4P/qnIP5OF529lxnVzrUxZFNQUsYBcyPly76lPOkcH3s2vuS5n7uVsr3meXN3JXGgnePTjuvtfi5HDVnsHJ/k+a89dFSxr1uhJPm4g+WET3y8888tKtbOqKrPxV2z+Dk+K/NZaWzr7/dWLP78E5CIz+ffxzJCISAE0kpAFvu04pTGhMADJiDC5wEDl+6EgBBY7wRE+Kx3D4r9X2wCIny+2P6X0QsBIbBqAiJ8Vo1MbhACOiIgwkdHzhBThIAQWA8ERPisBy+JjUJgKQIifGRuCAEhIASEgBAQAl8YAiJ8vjCuloEKASEgBISAEBACInxkDggBISAEhIAQEAJfGAIifL4wrpaBCgEhIASEgBAQAiJ8ZA4IASEgBISAEBACXxgCIny+MK6WgQoBISAEhIAQEAIifGQOCAEhIASEgBAQAl8YAiJ8vjCuloEKASEgBISAEBACInxkDggBISAEhIAQEAJfGAIifL4wrpaBCgEhIASEgBAQAiJ8dD4HJj+d4o8Tf0KN3I5a+sLzz+jcYjFPCAgBISAEhIB+CYjw0a9vopb9t+A4t6c/m7FShI/OHSbmCQEhIASEgK4JiPDRtXvg6od/mGOhCB+dO0zMEwJCQAgIAV0TEOGja/eI8NG5e8Q8ISAEhIAQWGcERPjo3GES8dG5g8Q8ISAEhIAQWFcERPjo3F0ifHTuIDFPCAgBISAE1hUBET46d5cIH507SMwTAkJACAiBdUVAhI/O3SXCR+cOEvOEgBAQAkJgXREQ4aNzd4nw0bmDxDwhIASEgBBYVwRE+OjcXSJ8dO4gMU8ICAEhIATWFQERPjp3lwgfnTtIzBMCQkAICIF1RUCEj87dJcJH5w4S84SAEBACQmBdERDho3N3ifDRuYPEPCEgBISAEFhXBET46NxdInx07iAxTwgIASEgBNYVARE+OndXuoWPOuKiybsdu7UYo87HLuYJASEgBISAEEg3ARE+6Saa5vbSJ3zC+MxVtA5GyDLAJNlsKXPgsRWRkarN6gju1mHK7NXkpXrP/OvCPqxv59NiWUW/yW0EPZjN7QxOZFOQr0k3FUXJoKT5FNbtOfdq1T3fF+4z0RBoxmMtXJ5jyIfF7GS40MUF+z2O/Z6tXOHGtfoEUPwWbAYbzu3pkdMhj4lWo4OOyrk+vTP0Otd3/Iq7f+3gube+zaNpZvLZ+//EWOMAd5/KgqkIEOHRljfI+25WvKcIfz52gjstrWQ9dY+dT33IxE+uYnyrAsM9NqHddr9ZzJgW8tLQ4KXA3oWlKOVfizWMTG4VAveXgAif+8t3za2nTfgE3ZicuThc5USXkrAfd6AAU/kqJIw6gtMaoNpZR/69jizkxeIuwG6998Vfi1pZBytxmuJWqCO4DrZT1OGiND3rbsqjU4c8dE+UYSpNQXSlYewpG7aaC9NgV1T4YMOZDgcofiwmP3UeG8Xz19lbl/joG3buOn/O1w9uXs0oV7526kP++MNf8sTpV3k8KmoiqK8fYaLIMUf4fPqjFu6cbMO4BuHzx0NXePJ0beoPHYtZfz9ZJPWn+M3YsKfHtyt7Qa4QAvedgAif+454bR2kTfhoi0lTgOqWRrbnLf7UFvJZaXIHmfk1VlSKHR4shRmgLY5Nbi6PTpBbkB9LkxlyqbY5qU6oIHUI55E2AkpizEbKWk5h0u6Pai0bTS4/w9eMFBTEFUp2CS0OM/FLIDyA83g7A2HNDBUlkkOZzYG5eFbRLBA+qAzZmxiqc1GXrxCwN+EcHMHY2EHFZSudQ0SfrIvtHqzRJ1aFIVcT1v4QBoOBSAQKTE7s1flkKAHsZivnhg1srbDgsJWSEbBjtp1jeGILZfYO7JrICfuxNXUyqkygFDnoWRA5Uwl6mrB0B8Gg9W5ku6mU4FAxjrjoU4bcWNt8TGgjVRUiGSVYTlmZ0VBx5oNqGR1WaLf1EzZAJK+eDldlalE3ZQhXkw2/khF3q0LIaMHXURr1YSo+0eaFtTuIFv+Iur3gAA5bXECT4D1EkHyiQThttFstOGbSqSpBrxWrdywaoVPVCBmF9ThaKllsKoa8JppCNjzmReT11PuMfcPKndO/5JlEFObW+9yobOHTjw18SYvU3DBgKIpw+2Mg40We7j/KlzO1SM3fMt4NX7bb2XTwOb409Tv++MMWlCubeOqyk+znfseN/b/jKz21s5GYqUmmyWJDJqBFavY7mHz3v8FffZMvaf/GYzz2d61s/sFX43Q+YfJYCzeHb0f//+4UbDhojfWnRWmu93Lj0H/hL1cm2bD1OR6JtrGJJ9tbeaog8b0ZRzl2gptXPo21ocIGk5VNP35+boRrMRZr+7lZ9O5YNM+Oc7tEe+4DXmnyIRAQ4fMQoK+my7QJH61TNYjf6yMwpqAqULjXQvWM4gjhaWgn32Enka0I+ewMFlmThM0qIz5KH2ZrBnZXbJGNfpaNLgRxm93kt9hmF38tvdZwEqOjg+p4UGW+8FFH3DRYJ2j2WGYElOJvYGdTkB0tXdgr8+Y8WWsLq3nEjHtmYQ7TZz3C5YoO7NHBz2ehCasj9FefionA5I82nu4C7PNSd8qAlYbeMk7ZS2MRNjWI52ANnfld9GmprrAPS1sEizMpbailw1onMHeYZiNq6gj2qn2cyz5AV4eZolVGtLSn9aaJZjqq45E9JYDTBY3W4lkmq4z4BN1mfCUOzEkslov4aCyaRg9wyjSbDowKroFqOhZE/sL0mQ4yaOnBtmhaZZxblVZuO/+FnBmhAJ+900zonf+ZPPu3uHvOwtj1v+OZo88x/c/N3Hyxladf0sTndSYq3yLzdCtPxKM1tz1mPqaVZ+piwuX2uRPc6PqER5/7Jl/+7nd4/LvfxjAnshNhdRGfT/jT/n/m0TeP80RU5MQE1NIRnwh/sTYz+f1WvvZKIr02yZ+tTdz6roPcmZSb1tDiLFbz+5LKtSJ8UqEk16wnAiJ8dO6ttAqf5LGqAexNI9S5ZtNW0Sd77wQZGVlkFxRTVl1NaX7SQr9SqksN4muz4R6KkKHdpk4QMh7D5y5PTfiEPNTVdDMTNkjYq0yQ23xh5olTHXFS0+DHmBer8SG3kmabaY4o0BZ8q2rHVT5fKWi1Tm1k250zAi/aTbgPc+usSAv7GjjOiViNSTRaFsLSUbcwyrKo8FEYsFiZaHaRXKKi2d3QXUaHrYhIXwOV7QrRISR9lAkjjT0dzJitMW/qpyI5KraaORuN+DgJkIExK5eC0kr2VhbHxFjis4LwUQIurE4/IWJRIyU0QZHzAvakPNTSwkdhwFxJayiP7DmaUWWCaro885iqQ9hrnBR1ueewW2nIn73TwsdTr5L7g6yoCPqY41GRcNvTzCd/1cqmqPCB6XMWbtx6lWe0NNnUh4R/+Ese/8WrPJ4QJfGOPrvxIVPv+PnTGwN8yX6KTTMiZCXhM8lU1z8Q7vo9dzO1PiPcGf0K2VedZKUifKZ+x8c7mpnK2ByPBiXE0iR3X7HxrP35aOToQX3UoI9WSzcFTg+JzPKD6lv6EQL3i4AIn/tFNk3tpkv4aMWibRl2XPEnfy1qcrAtD4d7sUJllfDIIN3tLsb2uuNREE1jLBfx0RZ7E95S12yERR3AalVodqYofMI+Go7DiY7KuQvzPJYLU10LYS+9EKcmfFAD2I4MYeowkeVt4HjWCTrKF6njWUL4+C1WlOWEj9+MOdSMu26FGquVxOYq5pmqBBnud+P05WN3J0WVlhM+QTd11gksHRYS2caQz0Jnnh1bSsJHJWBtwH+gY2G0bDHb1SFsNU6K75PwiUZbfthL1i+O8tg7zdzQIkM/jtcK3brOFM+RmRzhuXWJ0E8MbDr9nXiaaXnho0WQxq7UknvyOzwWHd8kk/tPwJttqQkfPiRc+XO+/IvW2QjRKnyc7kujwsfcTYFLhE+62Up7D4+ACJ+Hxz6lntMlfMI+KycHFSaCQUYmDOQXbKe+xcLMRigt9dKejc22fSY6o/itNIUa6ZhZnLVUlIdih5WZLIQSQjHmYUQTFCfJtielyvqsNJzbgacjSfiEfZjbjNids+kvJRTGkJdDhtZGw0H8ezpwJhVdhwNeBrMrqIxHn9YmfLRs28JUl996BF9Fx5xdSUF3A+6CRvLf9lJ0apFCW82Dq0l1NdTRmdcRS3UpA1jqOil2dVA3E1VTGPH1Q1n1bM1TCsJH41Gz720iFV1cmFNrpBKwNRGsd5HIdEEQj8lJniupEHwZn6ClqcYaZwQzyhBus5VRc8+8iI8Zq9KCaybEpRIOQ05OBuqQnRot5dljmZ03apC+3gmKq+dFn7Q5YDpIYMlU1+Jfm1QjPtrdt7vMfJxxiCe6z7LhdNvM7iwtUvRRVxnPnN7Jhng3079qYfzK35DXkoi0aLVCzUSOOtn4XCIa8wm31a/y2FMRplpbUPa08rWiWITpzmgv4z+8xJP/mhTx0VJuNed4/LRWexRr486tce48tTnar/r63zL+bz/mmZ+9NGPHnevvogx9k6d+sIqC7qCb6pp2rhU0c8Fz7zsxJdWV0k+1XLSOCIjw0bmz0iV8ZoYZ9GDxFmO3zNt+rW1ZNXtREukIVUUxbsfmmn3Sj67zPgsNnUGMRq0gV4WcUqwOczQaoNVtNDiHyMg2YogoRHLzUAZHMZYd49RMMWwYv60B51AGxgyt0BWMxWYc1kQtzAiepia6Q0aMKCgRrZh2L3ZbHYVaWmjednZDQX20AHkmFqPVsGipnVBwttjWkM8Bu51ZLaUVN5ux9k8sLG5Ong9hH3W72lAbPXjnxPlVhlxHaBtUQA0xmijWNhRQ70jUJ6mMeJqiRcFacXNkMkJBRQlB7yA5Jke03oWgD6ulk1GMGFCIRAzklVlxmGNnLIW8FqzeUYaTCsqNJc2cMs/dEacGrOxs6CdS7OBSvGg5NgyVAUsN7RNGLeMS+xdFJb/ehbMyOdK0jE/UIO4jZnyKEaMBFMVIYV4QfzCfvY5Ts3U+yhDOBisDGKNF6aqaQaHJEY3+aR9tbhxxBlCjjUSIGLIpMTuwLrIbLlrcrNjwpJpbSRQ3qy+Rc6GVJ4Yt/L51Mzm+V8k4d5g/dL3ApmiBc0KovM/4f2ghsucUz84IGvjsNycY65qEf/t37kaLmSe5+3QFT5+uJTMpFXZn9Cxjf9PLnfiW97ts4omftZKtiZ3rfYz98OdMP5XFI1qaK+ObPPbxu0SeLuNrp4/Gd4sRTcGN/eMNHnnKENs2//SLZL/1n+N/n+TPrc388b9+ypcytOLmCDz1LTa2v8qTBalvgA9566hqUzhwxoe58N5/6ET43Ds7uVOfBET46NMvM1alXfhoEQrvVuzmFc6d0TkXMe9zTEDxYzb5MS22nT0tw/6EP1W2cPdNF09tSkuDOmwkjK9uF225p+hzzkZx78VQ2c5+L9TkHj0TEOGjZ+8AaRc+Oh+vmCcEopHFJQ4wTAedO6NvMvaPL7H5Z+k/ADEd9qWlDXUAS3k72z2epDTnPbYc8mI66KXIIQcY3iNBuU1nBET46Mwh880R4aNzB4l564RAhL+0NhN+99+5O/p7pjf9dzzZ3kZOfLfXOhmEmCkEhEAaCIjwSQPE+9mECJ/7SVfaFgJCQAgIgS8aARE+Ove4CB+dO0jMEwJCQAgIgXVFQISPzt0lwkfnDhLzhIAQEAJCYF0REOGjc3eJ8NG5g8Q8ISAEhIAQWFcERPjo3F0ifHTuIDFPCAgBISAE1hUBET46d5cIH507SMwTAkJACAiBdUVAhI/O3SXCR38OCvXZsZ48x/AEYMhiS4kZp7N69o3qS5ocpq+hiuOB+DHKxae41LG2w+X0R0csEgJCQAjom4AIH337Rw4w1Jt/wn007DpOgCxyt2SjvUAgI78au3P2LfdLm6wS8nfjHhhltLef4SIRPnpzr9gjBITA55+ACB+d+1giPmHeOH2an44/j/9oBdsSb498SH5TR+xU7eunpKsP28ybWldrTAhvXRVtRhE+qyUn1wsBISAE1kpAhM9aCd7n+0X4aIDDvH76CqW1ux6i8JmXpprx+xYOnPHEXtapDOFpc+IdGObapJYG28KOehs2U9HMG+9jty0nfMIMuNtwui9H2zBkF5BvUNhq78EaFVpa1KidNpePQe2CrC2UVJppbiwlL/GC2fs8J6V5ISAEhMB6JiDCR+fe07/wmSb4wXlqfzMOG7RwzHSU6MZt+7n48kZgkovnz2Ibj/0709NsfrGW8y/PvE995pqffjRFptbGNGRugJcrDvHas1qbYV53X+QqN/FPwkammdq8C3/NC2g9aJ+bH/0a0/mrBGOdMLUhn9f272Z3VrKDVUacVezrnmBL8wW81clvKF9pIsTTVD4f5y5fY8uOPRRnQ4axiDJTJUXa69TDfVgb2gnmFFCwJZvItcv0B2DPmQtYNWE081la+GgvhCxvGsRYXEZJLkwM+Rm8FmGr4xLuUiMhbwM1bQEMBTsoLTASGQvgD4xhKDuFzy71Qit5Uf4uBISAEBDho/M5oHfhMxU8T+l7z3O+diub4yzHr7ipnd6NPyp85n8mcbt7yd9fS2k0bTXN1V+/yeGsGvwzYmiKiz1uLr58iNfjwue1djcflB7m7FZNyUzzXu9p/C/u56ebN8DNK+zuhddrXyQ/kQrT/q3nJq8d+h4vJEsOr4mqtlFKHH24SjW1srpPLNV1mbIzF7DMETOxdtTwEP5+P8PBCGSE6O++TO6JS7jLk/taRvj0NbDz+BBb99RTWVxAQWE2Id8gGXtNlBqHsJUfpJetlJUVkNB0E4FzXL5WQPOFNLyQcnU45GohIASEwLojIMJH5y7Tt/CZ5r3zZ/mgdD+HF9M4UbZTfPDeeQ5fCTMFZALjk5m8cfQQu7T/iaax3uPl2gpeXrJ+Z2Gq6+YHpzmaVYv7+Q3cHH6TFy5OkR9tb/ZzczIT29FD1M7797W4fDnhowTsmBrOcW1eB1tXIXy0NFifs5V2X4AxLV2mZcwK9mA/ZaU0ow/TzuMMLzqAbPZ0XYinw9YyQrlXCAgBIfD5JiDCR+f+1bvw8Z8/S7B0P6YlhM/4lTcpDb4STUvFIkJTXDzdAzX7Y8JnOsxrZ6+wa9n6nZWEj5vdk0tFmNLr4KWFTxB3dQ3tkQpOOBopLTQSGfFi2ncS4yqET9jvpt9QQd32HC18RHC4H6f5JEOlXfS1QJsW8ck7Ro9n3i4yVYUMKfJJr7elNSEgBD6PBET46Nyr+hY+MPVhD6VXtnK+NiFsYCp8hcO/yeL13c8TvHias9v285qWktJkT/gKte5hDjea4hGfaT64+CY/zanl4osJ9TRNcLgX23Qp7m3avy0vfJi6Sm27n5dNhziakwgbTfHBlWHY9uKcguhQPNW1w9GHc1WpLoUhrxvfgH9ujU/+dvbWlZJHCE91FSfHCthRVoBRGSMwGGAsAlkle2m2NFKeNYy328+IMhHbzm4ooaIsF6OxiApTJYXGMH2mXRwfNrClpJSiXAORawH6A2Nk7z3DBUshY546ak6OYthSQmlRLobIGKOBQUYncjnQ48OcH5/QQTfVNe1cK2jmgqea1VQz6fwrIeYJASEgBNZEQITPmvDd/5v1LnyiNTrvnaX2vZsQ1xyZWc/z093fY/fGeP2N+zcEMzOjRck3N+TwwuSHvJe1Dff+CkqjUZ+bnO05jS2sFS7D1DRszH+FNyq28cIGrTjaTe1vJ9hcWI2/disbg73s6gnw3oZv8sb+/ZhyYoLKdNbPB2SSOT3NFBvIf2EXZ3c9P1MAre2IuufiZnUEe80+zo3N87mhhBMXXJRrAZqgj1ark/5RLUeVRW5BNhOj19COKyw4doGuwnbKG/qJZ7CSGtrCgR4v5nyVgLUK84BW7z0RvQ9DLsUVjTRbysmPBnQ0AebE2dnP8IR2hYHsLUUUl+6lsX52Z1fIW0dVm8KBMz7Mhfd/nkoPQkAICIH1QkCEj849pX/ho3OAX0jzwvjqdtGWe4o+p+z0+kJOARm0EBACSxIQ4aPzySHCR+cO0qN56gCW8na2e2SXlx7dIzYJASHwcAmI8Hm4/FfsXYTPiojkAiEgBISAEBACKRMQ4ZMyqodzoQifh8NdehUCQkAICIHPJwERPjr3qwgfnTtIzBMCQkAICIF1RUCEj87dJcJH5w4S84SAEBACQmBdERDho3N3ifDRuYPEPCEgBISAEFhXBET46NxdInx07iAxTwgIASEgBNYVARE+OneXCB+dO0jMEwJCQAgIgXVFQISPzt0lwkfPDprkL+d+x2N7XkocWq1nY8U2ISAEhIAQAET46HwaiPDRr4PujL5J6B+/Te7PXuJR/ZoplgkBISAEhEASARE+Op8OXwjhM3mVw6d/zXuTk0y9sJ8PKp5Fe4XXw/jcGXqd6zt+xd2/dvDcW99eRtBMMrm/GfV/cZFdkCZLb1xivOof+PPUc2Ts+TtyW77OX44188k7V5l+6gds8h3l8adS6OvWu9zY/xbqx59w97ttfN3+Lb60yG2pjzWFPuUSISAEhMA6ISDCR+eO+kIIn4QPbr5H7XvP4t718IQPty7x0Tfs3HX+nK8f3Lz07Lh+jo+sX2Hz6Z1pTXN99k4zH3Oc3O9mzfT92a+a+TizldzvGlY3W6+fY6zrW2xqWVz4pDzW1fUqVwsBISAEdE1AhI+u3QO6Fj5TVzns7uX8hgqCh14gc/ojfnr6PGfHM3nj6CF2Rd+8Ps5rp3t4YzyT10yv8N75Xi5OZ8J0Dq8fro1dky7ho/TRsPM4gawyuvrsFEXfZr7Kz9T7jH3Dyp3Tv+SZJPExt5UIfz5m4dODTr5WFBMjd4b+iT+U/ZLbGU/w6CYDd/g6howbfKZG4MVXeUZLh13v5Q//wz9yu+AHfO0XR3niKbjtaWHMMsCd79t49q3v8MhKwmfqQyb2O5gcfoyv/KKWKcs/MzVl4K76dXL6W6NtznxWEj4pjXWV/ORyISAEhIDOCYjw0bmDdC18NHZTV9ndA2f3vxBPT01x8XQP1OxPEjXTXHS/xn/8aDP/+yETRzdvWJz6WiM+agBbeQO9xgOc6TFTeC/Ch3FuVVq57fwXcpZKYd3o5aNDsMlXwWMzI4kwZT3Cv3/HQe4PYLLmCH/++zd4+qUISs0JHjndRlYmfParFsav/4hnfvxc7M6p3/HxDy/x5C/+M5na31cSPtGbIny6fzc3fvMtvuprY2NcfC2AupLwSWWsOv9+iHlCQAgIgdUSEOGzWmIP+PrPjfA5e5rxChOm2QzOQpJrFT4PxDcRplot3Pq+k00vJaeetH9vYWpvGxsLInz6oxY+s7fx5CatFugEvBkTPvAh4cpf8vgvXuVxLfB1zsL4rVd5Np5WS1n4/KiZz+xOnty0zKBXFD4PBJh0IgSEgBDQFQERPrpyx0JjPj/C5yxTu/eze7mq5fUgfG5dIrT/38nx7WFuxU2qwkdLb5n5mFaeqZtkovLnZJ4+PpOi0oTPjanj5P1gViHe9jTzyXOtbHol0WNMWN052YZxuWJnET46/3aLeUJACDwMAiJ8Hgb1VfS5LoTP2SneMG0jWgp8cxiT+wq1h01zU11nH4DwSaS6sg/Q4zWTvwrOqV6qvm7mk6K2OcXHsXtTFz5M/ZaPf/guWUf/nX8f+htyjz43u+tKS6P9cJyc/kPR1Ff02rKzPO5rI2tG5DwY4RP21bGrdZTcxh58pvtBM1Xqcp0QEAJCIH0ERPikj+V9aUn3wodp3ut9g9oPYXMmTLGR/MkgV5+twF+7jY3jv6b2/FU+uDEB2dls1vZAbdyGu/ZlXoiW+kzz3kU3Rz+cYmr6Jr+9lcm3szPJzHwWW+1udi2XGptPPB3Fzct58db7jO//LV/xHWJ++VCiuPmzF39Erm8P0/v/J8IZPyb3re8QqdnPJ5teJe9n35nZARbp+ls+shjI+d0bC9JVwvrFYgAAIABJREFU07/6B8asv+XupiwemXqCLztbyXkpBuLO0FnGLf3cHvo9/NU3+VImPPJ0GV87vSduU4S/tDYTfvdTuDXO7esGHiv6KmR8k6+cfjVJPK00XRX6TDs5Hiyjw2en2LjS9fJ3ISAEhMD6ICDCR+d+0r/w0TnANJo3fU7bav4qeXu+uuZW77z/OqFflpO3xBk7a+5grQ0ofhp2NqG0XMRTmbPW1uR+ISAEhIBuCIjw0Y0rFjdEhI/OHXRP5k2i7NeKk11sjG/uuqdm7uNN6oiTGqsB131KGd5H06VpISAEhMCyBET46HyCiPDRuYNWY971PsZ/8ktu3/qE28Pw2N4fsfln5Ulb4lfTmFwrBISAEBAC90JAhM+9UHuA94jweYCwpSshIASEgBD43BMQ4aNzF4vw0bmDxDwhIASEgBBYVwRE+OjcXSJ8dO4gMU8ICAEhIATWFQERPjp3lwgfnTtIzBMCQkAICIF1RUCEj87dJcJH5w4S84SAEBACQmBdERDho3N3ifDRuYPEPCEgBISAEFhXBET46NxdInx07iAxTwgIASEgBNYVARE+OneXCB+dO0jMEwJCQAgIgXVFQISPzt21HoTP1NXTmKjh7AvLvXr9/oKe+qiXXeeD3JyaJL+iifOxF4Gt7nPzA2rfy8G961lWPZLpMG+cfpMfX9vAf/jmy7hrX2HjcA+7/Vf511s5/H3DIV7bnIpNN3GfPcvr4UmCvMIHjS/fl5etpgRm6n1C37Ay9fRf88y//mcyVg0lpV6Wv+hGH+NvPMfTLd+afZFrGppdVRO33uXG/rdQP/6Eu99t4+v38pqRqQ+Z+MlVjG9VYFhV56ld/NlvXmfsJ34eOXmaZ767zAvu1sxznD/9yMatf/uE6cxanu3fs+gBnHeGXuf6jl9x968dPPfWt3k0tWHIVULggRAQ4fNAMN97J+tF+NRSw/mHKHwShGMirJaz9yR8rrDbn8PZ3fmrFz6aATcXuT/8G3ZfyefsasXU9EccPTvO0f0vPjzhw3Um/sOPuPW0lS2+nQ9n8brey9jrX2fTyW8/POGTmFzXzzHW9S023YsIm/qQPx66wpOnaxe84Pbefx3m3vnZO9q75I6Tu5zwSRfPqd/xx5/8Nza+VbH4yeO3LvHRN+zcdf6crx/cnK4hSjtCIC0ERPikBeP9a0TfwmcKf+9pjl79A1fJZls0IrCBzPzvcb7ieTZGsUxz9b0eTFfCTEX/dxo2v8L5mhfJ33CTs2fdmEYm2fhEFhunp9j47EZuhqdgOpPDpsMc3fABprO/5uKG5ymdvIp/OhMtcDKV+Tyv769Y8Pb2JYXPdJCfnr6IP2oETE1nUrt7Pz99NhaFGR/uofbXH3L51obY2+G196hnPc8b+7/HtkSgZvJDjp5NtDHN1HQWu3fv57X8eChkReGT4BVm8679mIbP89NxyJyGXbWHeT1uSwzbWoVPCE91FSev5XKgx4c5/17m6CSTlX9N+DkHz/1sVnioXRbGLP8vd5/8Co8+Ncmd577Fox/f4C4RNvz9G9GXuE7/qoXf/80Aj+61kvuznTzGJJ8ea+KP7usY2v+FvLqVF8Pbv/oHbvyv7xJJvGEeeOTJF8k5fYjMOPLP3j/LjeP9fBb1a4S7md/mqz9/laxNsKKd3/kt43/zz0xlvETGx++i8lW+lBGBzBfJ/sVRnnhqHrMlhc8nTB5r4ebw7egNd6dgw0Ermw4+FxVrd673cuPQf+EvVybZsPU5Honavokn21t5qiDRxzjKsRPcvPJprA0VNpisbPrx8ykLTk34jL3zVfjN77ibCXdvfYUnft5GdkEsxrQsT/V9blS28OnHBr70VBbcMGAoinD7YyDjRZ7uP8qXkyN+KwmfqfcZ+4aVO6d/uXwE6l6mpdwjBNZIQITPGgHe79v1LXziIuLqaZaK+Ny8epbaj0o5/73NM1GUm1d72H31ZS7ufpbMqavscn/E64e+xws3f83LPVmcPfwym4PnqR1/hfMv58DkB7zs/DXb9jXyxvOxX9+pjy7ycm8W5w+/MiciknLEZ2qYXT1wdv/WuEBbImIz4+Awr7v95NfUsDuRSZge57U3e9lcewiTpvJWFD4JXm/y5f8jzH/6Hw/j3rZx8ejSmoVPGL+5iqbBApovuKnOu5eZGkFtPcwf/8rBs3XJb6Qf52blCR75mYunnv4tN8rO8oSvjSzeJfSTCJtOa9GhCH+xWpjc6+RrRbGF987oWcb+t2+y+a2XUl7MWS5CcaOPMcttsk/Ppo+iIuMnk3zVp0VWUrDzRh8fbXuLx37xL2x6JebYz97/J/5wfDOb+/fMTUulHPH5hD/t/2ceffM4TyTEwrIRH41VM5Pfb+VrcRtgkj9bm7j1XcfyEZwkt372joXrrd8itz8uDG/08oefPMHmnqRo3TI8NeEUeud/Js/+Le6eszB2/e945uhzTP9zMzdfbOXpl5KSdCsJH8a5VWnltvNfyJkRd/cyB+UeIZB+AiJ80s80rS2ub+EzxUX36xyezGLu8/004xtexK+Jlqmr7I4KkBfI1ITDr3M4W5MPH12kNvgi51+JCZ9dPRs4a0oSKUxz8expxitMmJJKGpaO+IRxn+/h9fFpMjdsgOlJrmZ+j+ChbakJn5u/YVv7e7BRiwbNfqampnhh91HOPr9hFcLnNLXTNZzfukzRzJqFT1qn4bzGxrm1/yyGN4/yZbQUjp8nTx8iY+p9xg9NknN6pxYvg+vn+MOxr7CpR/v/ST79SQtTf+ckO7oQfsKtsv/ExJX5dm7iqfdOx6/R2lg61fXZr8z83vopj25KrpqJcOf6V/jqvzoxPpWCnTf6CFmy2HT6O0liLMKnP2rhM3sbT25Ksm9J4TPJVNc/EO76PXczNVsi3Bn9CtlXnWSlInymfsfHO5qZytgcjwbF+5ya5O4rNp61P59Smm9Bqmvqt9w4NM5XTye9CHdZ4dPCx1OvkvuDLJLbuu1p5pO/amXTqoTP/Zx/0rYQWBsBET5r43ff717fwmca/9k3uVi6TGHvPQufKS6ePZui8NGufRP3C/tnIyzTH1J7doo3Uo343LxC6XlNfG2bJ+KSpsDkB+zuzeJs7fMz4mhq/CK1w9uiEa/ERxNnK9ZEfR6EjyZ2ftTM1N+7yH6qlz8ceoxNvvKYKEr1s6zwsTD28as8u2QNyb0KH83uEykLn9seM2NXask9+Z14vcskk/tPwJttqQkfPiRc+XO+/IvW2QhRqnzmRHzm1fiI8LkHinLLF4GACB+de3m9CJ/dU7u5uG0mB8T4Tdi8cQNTH51nW88G3I0VvJxY8abDnL9yk9KXn2djisJnQaor2MvLF3M4f3jurqfFIz43cbsvsrm2ll3RJ/BpgsM97HrvBd5LjvhokaXzmdHoU6w+CW7enCRzYxaZ3MT95pucf/EQ57cl/grjH17Bv3EbtTna4MK89oaW+jLFUl9Mcv7saS6+fIg38meX+wcjfNKR6lrqy5GCoIjfGk1v/ePX+crT55j8ftvcdEkq371FIjKfXf+ER577Kl+69T5jZf+FL//cycZ4HYvGfMrjhz0VZGamYGc81WX4xb/w9D2luiJMtbag7GlNSun1Mv7DSzz5r0kRH61QvOYcj5+erZW5c2ucO09tjgpB9fW/ZfzffswzP3tpRhjeuf4uytA3eeoHs6L5ztA/8dGOX3LH5ODrJ+fulkop4rMMz7vvSMQnlSkp16x/AiJ8dO7D9SB8mApy1H0+WniciVb0u4Ftr9TifjEmEMaHz7P7YpCpTC3FNM0UWez6Xg2vbyVW3PzhBkw1h3hj8we8/MYVXq49zGsbLrLt9Dgmk4mfZg1T2/v/t3e+MY1l5x3+TTtrjxKcndYkGUgVLCUyEwnUSt5KhVQa01ZmPgxWNHbVhUk1RpEgae3JakxU4ZGC+YCtqHiUYEuNrVZ42mD2g71dYVSNLVV4qi58qCylMlICSiRPmsDMrr2a7mVT7Jlsqnv9BwMGDJjhevzzp93h+p73PO+9vo/Pec9xBpqtVby7dRGXsI1nl67ih6Xi5hdP8P2338Xbz15geztbLLS+iEutbyD4ZmFVlFhXpH/4BJekGLaBy614ln6Cy1ev411zV3EUZwsPw0G89QSS+Gy/AC5r/gJvf+1q4e8vfonv/yiMHz67iEsXxX6i0Ib5T4uF3cU6n2ACP73Ygst4gStvmPH2nxTrm0ROYoH1s6c7xeAXr+CtN814s+hSz376Lr6W+CW2X2zjx9kX0KhbcPliC/TXxSLq44yV1KO4ufrNUSga/gl+99sefOHvXkPm2hjylhm0Dz/Fkz/6AS58dxpt5eLlD/GR4a+Q2f4W/uA/9tTM1HTvfYitvx3DhykFLlzKQ6yQv/DGN3Dl/lclQfjkFzE8/fq/4DkUuJDL4xMo8Nrgt/G5t/4Qv6klzj//CTYdT3Hx/UX8+n0FLmALv329F63l4uY8/m9yHJn3Pgb+9wmelwqtlV/C7/3oO2gRC6B/EcPmX/4LXrzeggviNJfyS3jt/feQ/5wBn/3RW/hUsUhanDLa/MFTXHhdAWzngc+9AfU//U3x71v49eQ4Pvi3j/E7SrG4OQ+8/hVc9n0HnylLHfDJf07gsXEZv/0zB74oTSEWXqJgPvnrf8Y2voLP/KMbrd0f4qNvjCHzr1tQfHMSba6SJB3Ac0KBrFjcnPtjtC5M4tOrdvzP5BW0Rr8D5TvfxK9mr+Lz8bfw2nt/j6ff+zk+2f4Qz1fzuPjGFVzAp3Fpyo3PVk6F1ZRbHkQC50OA4nM+3GtutSHEp+benPDArR/jzYeXETSfcJn5CZvl2+pDIP8PNmS/6JZqR2T3erqEze/9vjyWy8sODgMigVeTAMVH5nml+IgzRhQfmV+mB4e3/d94/+v/JRU/l5agy6ovFB9ZpYPBkMDLIEDxeRmUT9FG04vPs8I+Pm8/Ba5+/gosX3sTb9W0A/IpoPOtpybw4t+LUyJPf47n738el77rwpVvFfa1kc3r6ZK0j8+vU8Br3V/Cp3yT5T1vZBMjAyEBEqg7AYpP3ZHW94RNLz71xcmzkQAJkAAJNDkBio/MLwCKj8wTxPBIgARIgAQaigDFR+bpovjIPEEMjwRIgARIoKEIUHxkni6Kj8wTxPBIgARIgAQaigDFR+bpovjIPEEMjwRIgARIoKEIUHxkni6Kj8wTxPBIgARIgAQaigDFR+bpovjIPEEMjwRIgARIoKEIUHxkni6Kj8wTxPBIgARIgAQaigDFR+bpOrX4bERhHw1C7QrB0a3c19tMbBRj2QkEh9plToLhkQAJkAAJkMDpCVB8Ts/wTM9wavERo0uHYI/q4LJ1Yp/65JJwDgWhD3qhV51pV3hyEiABEiABEjh3AhSfc0/B4QHURXw2IrDPd8FlryI+ohd5TXCovQhx1EfmVwPDIwESIAESOC0Bis9pCZ7x++snPlq47N37R3wA5FJOmD06zAYH0HrG/eHpSYAESIAESOA8CVB8zpN+DW3XRXyEZdgt8+h2TMCiq6I2mSgsw0nYw05UKQOqIUoeQgIkQAIkQAKNQYDiI/M8UXxkniCGRwIkQAIk0FAEKD4yT1ddxEeq8eFUl8xTzfBIgARIgAReAgGKz0uAfJom6ic+hxQ3B4fgVE0jaOKS9tPkiu8lARIgARKQPwGKj8xzVBfxOXQ5ewrOoQCXs8v8OmB4JEACJEAC9SFA8akPxzM7y6nFhxsYnllueGISIAESIIHGI0DxkXnOTi0+Mu8fwyMBEiABEiCBl0mA4vMyaZ+gLYrPCaDxLSRAAiRAAiRwAAGKj8wvDYqPzBPE8EiABEiABBqKAMVH5umi+Mg8QQyPBEiABEigoQhQfGSeLoqPzBPE8EiABEiABBqKAMVH5umi+Mg8QQyPBEiABEigoQhQfGSeLoqPzBPE8EiABEiABBqKAMVH5umi+Mg8QQyPBEiABEigoQhQfGSeLoqPzBPE8EiABEiABBqKAMVH5umi+Mg8QQyPBEiABEigoQhQfGSeLoqPzBPE8EiABEiABBqKAMVH5umi+Mg8QQyPBEiABEigoQhQfGSerp+ln+DFi9+Uo7z65S/IPGKGRwIkQAIkQALyJUDxkW9upMi2Pt7GB9mPkMs/l/6f4iPzhDE8EiABEiABWROg+Mg6PQyOBEiABEiABEigngQoPvWkyXORAAmQAAmQAAnImgDFR9bpYXAkQAIkQAIkQAL1JEDxqSdNnosESIAESIAESEDWBCg+sk4PgyMBEiABEiABEqgnAYpPPWnyXCRAAiRAAiRAArImQPGRdXoYHAmQAAmQAAmQQD0JUHzqSZPnIgESIAESIAESkDUBio+s08PgSIAESIAESIAE6kmA4lNPmjwXCZAACZAACZCArAlQfGSdHgZHAiRAAiRAAiRQTwIUn3rS5LlIgARIgARIgARkTYDiI+v0yDu4TDKE+XQ3LKZuqOQdKqMjgdMTyKURDSSgMFnQ33760/EMJEAC50OA4nM+3F+BVnNY85hxK2FCOGqB5sgeHff4I094PgcICYz2jUEx8x68vcrziaGOreaSDvSPpmF/GMJAax1P/Cqe6hXL/auYIvaJBGohQPGphdI5H5NLOdE/vIitvXG0tKFL1wODyQJTbzv2PYZza/CYhxHvnkbY1VvnUZnjisxxjz9n6Ac13wgPv3QIlqEAVONheI+wGYrPAYmudu80Qu5letswLBKQEwGKj5yycdBnsCQ+K+idmsZgaYg9L2AjncRKPI54chOKrkG4pu3o3fWtfQMRuwOJ7nFMWzr3i9Gp+n5ckTnu8acK7uze3AgPv0wCznvzUI1Mw64rTkIKa4gEk2gbHNp1jbxy4pOOIphQwGDpR+Vs1EYiiIjQg5GBWu+DKvfOmeY+g2RoHuluC0zdnDg+uxuYZyYBgOLTAFdBYcQnCVM4CluVOSVhLQLHqBsrSgNmwi70vpTPzeOKzHGPl2lizvThd4Z9zkQwdN0L7WwMzu6dscFXTXyExCj6xhSYec+LnZnIHFKOfgyn7XgYGsCJZ/TONPdpeAfMiJvCiFqOnjg+wyuFpyaBV54AxacBUnyU+IhdyKVDGDbfx4bBj6hLV+dprWqQjisyxz1epok504ffGfaZ4kPxOcPLi6cmgUYiQPFpgGzVIj5ADimXEcPvaDC15Ee/NOqzgZDJiAe9c1iwl4b4M0gG3fAEH2FdLBpq0eKaaQT2ET3aiwMBuXQMAe8DLK6sI5sHoGiDzmTFhLW/fIzYXqm4ec6vxYrPh/lE4XhFWxf0gzbcHdJVfLs+WHzE1WE+7zziq5sQm2vpuAaTzY4RfZW6pX35ErAWC8D3II7kehZ5KKDu0mNwxIrBUt2TsIZowIdgPInHUoda0HHNBPu4bc/UIIBMEqH7Xswvr2JT4tOBHoMFVtsAOkWmJfGZnoMp5YM3soLHW2KfdTDZJ2DX71/uc5L+CbFR9N0Dph760V8eosggarmOyfQNzMacKA/cSPUotxDvmcOCoxNKIQFLnwNq/xI8Xatw9I0iLna78qWdkEY/VKXi5jkrsg98mI+vIysxNMDqHMeA5ogC7hrZSiMxzjb4QwNI+Tzldtp0N2CdsKO/dPEddD8e0U5uzQPjrXlk97z/s/p2fJDY2POvLbghjnxp0xK3pCWMcQTgDsSxnu2ANRyBRVPl3ilL70NYswH4gnGsiMkXr6eeAYzYreiv5LURgsn4AL1zC7B3VnLMIDp0HR7NLGIuDVYsfRhb3dvxnopRKwFrUS/uB+JIFi5KdOgMsIzbj85PA3y+MUQSeNkEKD4vm/gJ2qtNfIDCcQnoy9MZ+z+8M1ELjG5g0DUOU5cKwmocPmcA2ZEwQkPiQ1tA0uNARGGAyaBDh1qBrc0VhNxuPNJUFkkXRSaiQodKgGbQDouhC23IYn0lAp/nHWz0TCDkGSjWWlQXn0zMDvO9FbTfHId9SIcOhYDVuA9uXwraiaOKcwUkXUMYfQe4ZrXDou9Cm2ITyYgP7vkcRsJBiF3KxJyYXNHghkmP7rYWYOsxVgJOeFJ6zIbtKD2TcukI7gy5kdLexLhtCLoOBfLrKwh6PFgRC8SdvVAVH35rbWqou0fgGLmGDsWmdL7JxTxuz4Vhq3jInbh/mRgs1yehmo7Bqy/OXWai0r+tQo0bsws7U1bpIEzmILpLea8UH50SOUFAPhuFxRxA50wY46IxKVRQKYHCVFcCKrUamsFxWA1aqIRVzLsdmE8b4I86USoTqnbp1sx22Ya+O+vQqBVQD9oL7WRTmHffw3z2JmYXHDsiV6Who9vJISfkkV22wXhPiamH09JUl0KlQF4QkHIacWfTjrDfADUUUKiUUCKN4IAZAUUbVEodRkZM0KoVaOvuRGu1Lw3F3Ke1bYCiB1bpGmlBfnMViYAbvpUWDM4GYS/V6NQkPt1Q5gQIQhqBW8NI3JjFrEUDJRRQiQmCgGXXEO68AxjujuO2XszPOhIP3LifUONuyI+ho+T0BJ85fAsJvMoEKD4NkN1axQfpIAbMPmjKS633ik8OSUc/RrNOLPn1O9NhQgY5Veuhxc9SDKMCPEse6KQvr0WRmRdgmI7CVXo4F3nmUh6YhyPQTC3AKw1ZVBEfIQFb/xjSplmE7d272k8HTTAHO+GPuYrt7U9USfR002F49LsrN3I5QHnYYIX4EOt3o2N2AQ5JVDYQsRjhFqyYC1nKMlRoNYccxAflzohPUjuOhZBpp4BWHHUx3kK0ZxYxZ7Evp+pfYXTHrZ5BzFNYkZeJWWD0aTHSvoj5Dj8WHIV2NiJDMHo1mI25CvKwR3ykLhw61RWH6vYcwraKwl/poe1D+0wM3uMWje1jC+SWbfjqnRV0WMOIVNawpL0YMM9DK45OFS6s2l9V2jlejU9BfHzCNcxEPXtq4w4e8UlqrQjPWrDbNzKI2Yy4lzZhriTTtYqP1OPqNT6la7x3JgrXrjxkEB01wq2YwIK3/+R1S7XT5pEk8MoQoPg0QCprFZ+aRnxi4jfidegGrRi8oYOus8p0kpBCNBBEZHkV64/F6aPSqwtTS8HiNFpRZJZNCEeq7eNTGM6fVE0XJWu/+AgJG/rGspiotofMRgQmYwC6uZKY7E1UDilnP4aTJsxFbeg8NI/iipkAgosrSKU3sVXukALXSg/cTBRD0gjLEvx7JG7XqYvf+oWJhwjtWiouYNnWhzvCNJaCBak8Xf/2Ck0GsVEjfF0hzHZ7YHS3wS+NkhQEydPuR8ylK8tZeaqrJBOHik9qf+F8LgVn/zBStgVETIft1lcDW1EdJfHZwN2FiDQKV37lkrD3jWJzfC/PvQmtrZ2TiE9A68eSp8iu3OxB4uNAy0wMnioyuO8+PbX4lK5xS9W9sqS+OlrgL38ZaYAPM4ZIAjIgQPGRQRKOCqE28dmp8Zle8qPw7K5W45PDxnIEgflFrIg1PFBDd9OKu/aBwihHJgGHeQxxtQHWERN6urXobFcht+aC8dY67u4Rn+F1O2KVo0c7TzQk7X0YTduxEBFHRvaLjzRS4V4HFAoo9kHII59X4NrMEjxVNwoUkBjtw1huCg+Dh33j3UB01IzJlAY3rCMY6O1Cl6YVSumBawO8xZGGNQ8GbsXRI44AVax62hfWgcXNuUJ/sxNYCvZL4nO6/oknKNSISPKnTmDU6ENXKAqb+N/iaJV/AQ7NCkb7HWiZrngYH3vEp8oGhsURrOXbC4jsMpVKIjWyLYuPgOmlYPHaLJ6nKFjrtocImQ5ab1V7OycRn3l9ZQ1cqX8HiE+/p5CDaguviqNknf4luEThPLX4FK/xpFhnV+UeyeeRR+WXkaM+Sfh3EiABkQDFpwGug1rEp/qqrmriU9nhggR5HPeR1M0g6ulFLmrB9UmxRqKyqFb8xm5H350sJqqM+CxELLv2TCm0UCzEVR4+4tM/lsd4eAo9LdUToWxtPWCFWnGJcuqIEZ9i/UunPwpXZbFKsYZGKgAWH1LSiIi75hGf/Ts37xcfccTn5P3bEVfxwezX3ofZpy3WJAmIjfbjfocfc/ogjGN5TMe8O1M1L0t8amVbFp88dqT8GOJzjHZOIj4R/RzC5eL/I8Sn77gjPoGd2qvyJV6Y1op0i8XNpSnealNdxRGf1AjmpNqkai8lVK2qOu/R1QAfigyRBE5BgOJzCngv661HiY+4j49z1I1H+/bx2S8+ucwaNpWd0FTs9ZMODsAcKfz0hEIchfG07Rk+F5Cw92PskXb/VJdY47Ov/gDIrXlhvjVfQ42PA4I9jODe6RQhjTWhDZ2HrPbJJcW6owR6q9QYIQeITwNxtY/5Vhz6PStrNiJikff6zlSXWOMzZIQb1eo39tf41CI+Yq2Nrf/k/ROvr0JuemBVL2K+e7a8Oi8TG4XxvhrWrmX48k7EvJU1WxWruvZMdWn8scJoRMk7DvrJihpGfGpnW5rqOpn4HKcdYXkUfXewR7BK+/jYdtdlFYubjyc+Y0hq7yI8O3R0jY+Y/74xbNzdPWpWuDceQDBUER/DHKK2nYlb8d43DqdwYy60q2heTF9uI4VNVfeue/llfSaxHRJoZAIUnwbIXkF8Dti5ORFHfGUTKO7cvLvGd6/4bCA0ZMT9nAF37beh16ogrCcQmLyP1Z5ZLIhFuWkvTOYHwM0puCy9aMcGlufd8CXzENZR8ZtOpVVdCrQp8tBaSqu6tvA4GYLH/Q42dBMIeY9e1XXrXlJaFWY19aBNIb4/iqDvAVJdUwh7DpvGErDsHMKdxcKqrhFDF9TiqrLEA7h9azDMhmDTrMNpHEa87TZc44PQqfNIr4hLl9eRy6bRPr1U/s2t/au6xBU7K4h4PIiqnQh79Gg9xlSXNO4Vs+Pk/RPNRyz+fYBNqHGzst4pE8Po9XsQZ0F0U0vwF/YvKLyqjfgIy7D338Gqfgoz1m4o8ypoNKriqq4TTnWJ01S1spVqfE4I2q16AAADVklEQVQmPjhOOykXjMOL0I77Md6jQl7RBk2rElKxvE8Jq38aBnUeaNOgXVkobj6u+Kx1tEGp2lnVhc1VxINu+B7tWdUlrshyDOBOQoPbLicGuxTIrkZw3x1HJreJbG9FXVZphDQ7iBnvIDTIQ6XRQFVa1bWowk27HUM9HWjJbyKZCMLnW4F6vMqXhgb4TGOIJHCeBCg+50m/xrYP+60ubXcPbgwOwdQrLoHd+6pWp5CSHuTB+Co2S3v03LBi3N5f/gabWfbC7YngkbhHibiPzYAN44M5OMwB6EPiHifS982dfXy8GsS9ASw+EmuGAIVa3MdnBHctvTXt4yOkIvD4gtJPb0i77LTppPdbd+0DdBAscY8TcU+VaHFPFTHkHphs4+V9gMR9iXxuHyLS+cU9fCyw2/VI24YQH1lAcGejHCCzjOD9ACKJHT5dBvF4E6RVyscUH8lDTtO/4sjLPPYu+c4gZrmOe6tdmHoYrNjr5wDxQQ4bMTfG3IvS/k1qw4z0+22KU4z4SFdBjWwLxc0nFJ9jtCNOsS577mFyPoksWtBT2hJBSCHocCCwsom8ogvWUBAWzcnERzGzgJHNwj4+SekmKuzjYxFryKTNnipe4i+6u53wLa5K94Zaa8BtuxWakBlj+WkseXvL921O3IHd4cGjx3mg4yZmQ6Ul/oV9fHb2DaqyV1WNnyU8jARIgDU+vAZIgARIgARIgASaiABHfJoo2ewqCZAACZAACTQ7AYpPs18B7D8JkAAJkAAJNBEBik8TJZtdJQESIAESIIFmJ0DxafYrgP0nARIgARIggSYiQPFpomSzqyRAAiRAAiTQ7AQoPs1+BbD/JEACJEACJNBEBCg+TZRsdpUESIAESIAEmp0AxafZrwD2nwRIgARIgASaiADFp4mSza6SAAmQAAmQQLMToPg0+xXA/pMACZAACZBAExGg+DRRstlVEiABEiABEmh2AhSfZr8C2H8SIAESIAESaCICFJ8mSja7SgIkQAIkQALNToDiI/MrYOvjbXyQ/Qi5/HMp0qtf/oLMI2Z4JEACJEACJCBfAhQf+eZGiuzn6Sd4/uI35SgpPjJPGMMjARIgARKQNQGKj6zTA/z0Z7/aFSHFR+YJY3gkQAIkQAKyJvD/lXbPWMsW35AAAAAASUVORK5CYII=&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/1879598237244416219/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2016/08/ionic-framework-cache.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1879598237244416219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1879598237244416219'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2016/08/ionic-framework-cache.html' title='IONIC FRAMEWORK: cache '/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-8720626775445526877</id><published>2016-08-29T23:46:00.002+02:00</published><updated>2016-08-29T23:46:24.848+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ionic framework"/><title type='text'>IONIC: debug device con google chrome</title><content type='html'>Sono impazzito per capire come leggere il log della console di chrome su web device.&lt;br /&gt;
Ebbene ho scoperto che è sufficiente agganciare il device con usb al pc oppure lanciare l&#39;emulatore e richiamare i DevTools di Chrome&lt;br /&gt;
C&#39;è una funzione nascosta:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBz1QkR6bRyU6rtLDz4fPYRg2Rl_ttlCdo3xQ1bHF_g5_bhRiLV0bZxaVJDfQjhmK3DupyLHnKU3Z9K2kdFLEteFaQiv0S2NWsbKXLjtVS0zU_HyhvsoIdh_t2pgXtyu4Z6y8LqVCpNrP/s1600/Spazio+di+lavoro+1_319.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBz1QkR6bRyU6rtLDz4fPYRg2Rl_ttlCdo3xQ1bHF_g5_bhRiLV0bZxaVJDfQjhmK3DupyLHnKU3Z9K2kdFLEteFaQiv0S2NWsbKXLjtVS0zU_HyhvsoIdh_t2pgXtyu4Z6y8LqVCpNrP/s320/Spazio+di+lavoro+1_319.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYH_LlnLPHoqosgjD0h9s38ziuzdWPXLzgj2nwgYQf2y_fUoOZcqHVyzI0dA3ALHljCcv-HKL6mfvE8Ws9oZgezoAGOCDfPw1bEt3ZVCJGNyiFqTf5f_ZpdtlPr0hSApaKp4LclCsKjKJP/s1600/Selezione_320.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYH_LlnLPHoqosgjD0h9s38ziuzdWPXLzgj2nwgYQf2y_fUoOZcqHVyzI0dA3ALHljCcv-HKL6mfvE8Ws9oZgezoAGOCDfPw1bEt3ZVCJGNyiFqTf5f_ZpdtlPr0hSApaKp4LclCsKjKJP/s320/Selezione_320.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
ora premere inspect e voilà&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikE10ZntFi27_JgVQwO93RHstR-pA-bhltdW8leiJKGmZDEYz91Rig1WgwYRiunB1-8WU1uhwhCZVCXLV9q-9Uz8NqFbmg4Gd2Z1-fVvS5NRLohWFsWTJGLyWCpKo3bLMLVLQs4LsyIRkE/s1600/Developer+Tools+-+file%253A---android_asset-www-index.html--app-menu_321.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikE10ZntFi27_JgVQwO93RHstR-pA-bhltdW8leiJKGmZDEYz91Rig1WgwYRiunB1-8WU1uhwhCZVCXLV9q-9Uz8NqFbmg4Gd2Z1-fVvS5NRLohWFsWTJGLyWCpKo3bLMLVLQs4LsyIRkE/s400/Developer+Tools+-+file%253A---android_asset-www-index.html--app-menu_321.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/8720626775445526877/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2016/08/ionic-debug-device-con-google-chrome.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/8720626775445526877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/8720626775445526877'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2016/08/ionic-debug-device-con-google-chrome.html' title='IONIC: debug device con google chrome'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBz1QkR6bRyU6rtLDz4fPYRg2Rl_ttlCdo3xQ1bHF_g5_bhRiLV0bZxaVJDfQjhmK3DupyLHnKU3Z9K2kdFLEteFaQiv0S2NWsbKXLjtVS0zU_HyhvsoIdh_t2pgXtyu4Z6y8LqVCpNrP/s72-c/Spazio+di+lavoro+1_319.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-7058172652531515981</id><published>2016-04-16T23:08:00.001+02:00</published><updated>2016-04-16T23:08:00.724+02:00</updated><title type='text'>React: domanda&amp;risposta</title><content type='html'>&lt;p&gt;questo semplice progetto di studio su reac lo potete trovare su &lt;a href=&quot;https://embed.plnkr.co/VOyBXxCoyuLxTpp3lDf6/&quot;&gt;Plunker&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;progetto&quot;&gt;progetto&lt;/h2&gt;

&lt;p&gt;data una domanda, l’utente ha due risposte disponibili, due bottoni.  &lt;br&gt;
quando l’utente preme una risposta, la risposta è visualizzata. &lt;br&gt;
non si deve testare la correttezza della risposta, ma si deve stampare la risposta data dall’utente&lt;/p&gt;

&lt;h2 id=&quot;interazioni-fra-componenti&quot;&gt;interazioni fra componenti&lt;/h2&gt;

&lt;p&gt;il progetto permette di studiare cosa sono gli stati, le proprietà e i metodi del componente. &lt;br&gt;
sono creati 3 componenti: &lt;br&gt;
 - Domanda &lt;br&gt;
 - Risposta &lt;br&gt;
 - Contenuto &lt;br&gt;
il Contenuto contiene la Domanda, le due Risposte possibili e stampa la risposta dell’utente &lt;br&gt;
La domanda è un semplice testo statico &lt;br&gt;
Mentre il Contenuto e la Risposta dialogano in quanto il valore della risposta è contenuto in Risposta e questo valore deve essere stampato in contenuto&lt;/p&gt;

&lt;h2 id=&quot;soluzione&quot;&gt;soluzione&lt;/h2&gt;

&lt;p&gt;il componente Risposta ha due proprietà handler e valore. Il valore è il valore da stampare mentre handler è l metodo da richiamare quando l’utente fa click su una risposta. &lt;br&gt;
quando l’utente fa click su una risposta viene esploso l’evento onCLick. &lt;br&gt;
il metodo legato all’evento &lt;em&gt;passa all’handler il valore della risposta&lt;/em&gt; &lt;br&gt;
essendo handler e valore due proprietà, esse dovono essere valorizzate dal componente che richiama Risposta, ossia contenuto. &lt;br&gt;
Contenuto assegna ha handler il proprio metodo &lt;em&gt;setRisposta&lt;/em&gt; che ha un parametro in ingresso.  &lt;br&gt;
al suo interno imposta il proprio stato risposta con il valore del parametro. &lt;br&gt;
Ergo,  &lt;br&gt;
Contenuto passa il riferimento di &lt;em&gt;set risposta&lt;/em&gt; a &lt;em&gt;handler&lt;/em&gt; quando chiama il componente Risposta &lt;br&gt;
Risposta all’evento onClick richiama il metodo evento che al suo interno richiama la proprietà handler e passa il valore di risposta&lt;/p&gt;

&lt;p&gt;un po’ arzigogolato ma funziona perfettamente e dimostra l’interoperabilità dei componenti in React&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/7058172652531515981/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2016/04/react-domanda.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7058172652531515981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7058172652531515981'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2016/04/react-domanda.html' title='React: domanda&amp;risposta'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-1684379135138951671</id><published>2016-01-17T21:58:00.003+01:00</published><updated>2016-01-17T21:58:54.806+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fosuserbundle"/><category scheme="http://www.blogger.com/atom/ns#" term="HWIOAuthBundle"/><title type='text'>Integrate HWIOAuthBundle With FOSUserBundle</title><content type='html'>riprendo il post di&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/&quot;&gt;Mun Mun Das &quot;Integrate HWIOAuthBundle With FOSUserBundle&quot;&lt;/a&gt;&lt;br /&gt;
l&#39;integrazione di&amp;nbsp;HWIOAuthBundle con FOSUserBundle è spiegata benissimo ma mi sono ritrovato nella situazione in cui avevo precedentemente già implementato FOSUserBundle&lt;br /&gt;
quindi mi sono ritrovato con due firewall: uno main e uno secure_area&lt;br /&gt;
ebbene errato.&lt;br /&gt;
il firewall deve essere uno solo. al suo interno esiste già l&#39;integrazione con FOSUserBundle</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/1684379135138951671/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2016/01/integrate-hwioauthbundle-with.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1684379135138951671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1684379135138951671'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2016/01/integrate-hwioauthbundle-with.html' title='Integrate HWIOAuthBundle With FOSUserBundle'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-1277647299517401525</id><published>2015-12-22T12:52:00.002+01:00</published><updated>2015-12-22T12:52:45.377+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="prestashop"/><title type='text'>NGINX &amp; Prestashop</title><content type='html'>NGINX lo ritengo un web server eccezionale: veloce e leggero. Ma soprattutto facile da configurare.&lt;br /&gt;
o appena implementato implementato da un cliente per il suo shop Pretsashop, riscontrando naturalmente qualche problema&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Friendly URLs&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
questa parte è stata la più facile. Basta seguire la guida ufficiale&amp;nbsp;&lt;a href=&quot;http://doc.prestashop.com/display/PS16/System+Administrator+Guide#SystemAdministratorGuide-NginxfriendlyURLs&quot;&gt;http://doc.prestashop.com/display/PS16/System+Administrator+Guide#SystemAdministratorGuide-NginxfriendlyURLs&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location &amp;nbsp;/ {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; index /index.php;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #rewrite per immagini&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$$&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$$&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try_files $uri $uri/ /index.php?$args;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; error_page 404 /index.php?controller=404;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;
Cacing immagini del template&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
analizzando delle pagine a campione tramite Google Page Speed ho scoperto che non tutte le immagini erano messe in cache.&lt;/div&gt;
&lt;div&gt;
così per fare prima ho impostato delle location fisse&lt;/div&gt;
&lt;br /&gt;
ad esempio:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;location /js/jquery/plugins/bxslider/images/bx_loader.gif {&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; expires 2592000s;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Multi lingua&lt;/h3&gt;
un problema grosso è stato dato dalla multilingua&lt;div&gt;
alcuni link invece di essere riscritti presentavano la forma &amp;lt;dominio&amp;gt;/it/index.php?...&lt;/div&gt;
&lt;div&gt;
seguendo i forum o scoperto che c&#39;era da aggiungere un rewrite&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
rewrite ^/[a-z][a-z]/index.php(.*)$ /index.php$1 last; &amp;nbsp;(*)&lt;/blockquote&gt;
ma non ha funzionato. &lt;br /&gt;
quindi dopo alcune prove mi sono accorto che i friendly url nel BO di prestashop non erano impostati.&lt;br /&gt;
dopo aver impostato i friendly url, corretto la maggior parte degli errori&lt;br /&gt;
tranne uno in fase di checkout&lt;br /&gt;
&lt;h3&gt;
checkout e frienly url&lt;/h3&gt;
&lt;div&gt;
in fase di checkout, al momento del login, l&#39;utente deve effettuare il login&lt;/div&gt;
&lt;div&gt;
peccato che nginx mi sputava sempre un 404: invece di andare sulla friendly url precedentemente impostata, riceveva questa url:&amp;nbsp;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;dominio&amp;gt;/it/index.php?controller=....&amp;amp;back=http.....&lt;/blockquote&gt;
in pratica il sistema effettua il login e poi redireziona l&#39;utente alla pagina impostata come default dopo il login&lt;br /&gt;
a parte che è una cavolata di prestashop in quanto se sono al checkout mi attendo che mi rimandi alla pagina del checkout che stavo completando&lt;br /&gt;
comunque....&lt;br /&gt;
l&#39;url non veniva effettivamente riconosciuta correttamente a causa della lingua &quot;/it/&quot; e il rewrite precedente (*) non funzionava nella location del rewrite delle immagini&lt;br /&gt;
leggendo attentamente il log dopo un po&#39; ho capito che nginx non effettuava nessun rewrite e cercava una sotto cartella &quot;it&quot;&lt;br /&gt;
ergo la soluzione è stata semplice: fastcgi&lt;br /&gt;
in pratica il rewrite era da aggiungere alla location che si collega al fastcgi:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;location ~ \.php {&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try_files $uri =404;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; include /etc/nginx/fastcgi_params;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fastcgi_pass unix:/var/lib/php5-fpm/web1.sock;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fastcgi_index index.php;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #rewrite di controller&lt;/b&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rewrite ^/[a-z][a-z]/index.php(.*)$ /index.php$1 last;&lt;/b&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fastcgi_intercept_errors on;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;div&gt;
voilà, completata tutta la configurazione di nginx per prestashop&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code&gt;
&lt;/code&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/1277647299517401525/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/12/nginx-prestashop.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1277647299517401525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1277647299517401525'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/12/nginx-prestashop.html' title='NGINX &amp; Prestashop'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-3059290256720761523</id><published>2015-09-28T22:55:00.002+02:00</published><updated>2016-02-09T10:46:47.140+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><title type='text'>Creare un ambiente di sviluppo PHP SYMFONY MYSQL DOCKER</title><content type='html'>Preferisco &lt;a href=&quot;http://www.docker.com/&quot;&gt;Docker&lt;/a&gt; a Vagrant, più leggero. Ognuno naturalmente ha le sue preferenze.&lt;br /&gt;
Docker lo trovo più facile e veloce da configurare.&lt;br /&gt;
Non conosci Docker, vai sul sito e scoprirai un tool fantastico per &quot;virtualizzare&quot; le macchine, anche se non è il termine corretto.&lt;br /&gt;
Docker crea un contenitore all&#39;interno del tu S.O. senza però virtualizzare l&#39;infrastruttura hardware.&lt;br /&gt;
A me piace sviluppare con Symfony: W Symfony2!&lt;br /&gt;
&lt;br /&gt;
[update: ho trovato questa serie di post nuovi per lo sviluppo con symfony su docker&lt;br /&gt;
&lt;a href=&quot;https://blog.vandenbrand.org/2016/02/03/developing-symfony-applications-with-docker-series-part-i-getting-started/&quot;&gt;https://blog.vandenbrand.org/2016/02/03/developing-symfony-applications-with-docker-series-part-i-getting-started/&lt;/a&gt;&lt;br /&gt;
]&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Per un nuovo progetto mi sono deciso di creare un sistema per la condivisione dello stack (si dice così? scusate non sono un ingegnere) di sviluppo&lt;br /&gt;
&lt;h3&gt;
Lista della spesa&lt;/h3&gt;
Partiamo con la lista della spesa:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;database: ho scelto MySql. Per ora è sufficiente, finchè non ho finito la migrazione del vecchio sistema&lt;/li&gt;
&lt;li&gt;APACHE e PHP&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Ora vediamo come creare un container per MySql&lt;/div&gt;
&lt;h3&gt;
Docker &amp;amp; Mysql&lt;/h3&gt;
&lt;div&gt;
Partiamo dallo scaricare il container: docker pull mysql&lt;/div&gt;
&lt;div&gt;
Finito. Semplice e veloce&lt;/div&gt;
&lt;h4&gt;
Un paio di considerazioni&lt;/h4&gt;
&lt;div&gt;
I dati del DB, ossia databases (come si chiama in italiano?) e tabelle, i files fisici, li voglio sulla mia macchina&lt;/div&gt;
&lt;div&gt;
Voglio configurare una password per accedere&lt;/div&gt;
&lt;div&gt;
L&#39;utente è sufficiente quello standards&lt;/div&gt;
&lt;div&gt;
Voglio un indirizzo ad hoc&lt;/div&gt;
&lt;h4&gt;
Iniziamo&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
Sull&#39;&lt;a href=&quot;https://hub.docker.com/_/mysql/&quot;&gt;hub di Mysql&lt;/a&gt;&amp;nbsp;ci sono tutte queste indicazioni e se aggiungiamo anche qualche comando aggiuntivo dalla documentazione ufficiale, smarchiamo la lista della spesa&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
I dati del DB, ossia databases (come si chiama in italiano?) e tabelle, i files fisici, li voglio sulla mia macchina&lt;/blockquote&gt;
&lt;br /&gt;
In Docker si chiamano volumi e si settano con l&#39;opzione &lt;b&gt;-v&lt;/b&gt;&lt;br /&gt;
Sull&#39;hub dice:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-v /my/own/datadir:/var/lib/mysql&lt;/blockquote&gt;
&lt;br /&gt;
Io ho una cartella temp, uso Ubuntu, in /opt ne consegue&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-v /opt/temp/:/var/lib/mysql&lt;/blockquote&gt;
&lt;br /&gt;
Tutti i files di Mysql saranno salvati li&lt;br /&gt;
Per la &lt;b&gt;password&lt;/b&gt;&amp;nbsp;invece&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-e MYSQL_ROOT_PASSWORD=my-secret-pw&lt;/blockquote&gt;
Quindi uso l&#39;opzione -è&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-e &amp;nbsp;MYSQL_ROOT_PASSWORD=bwlab&lt;/blockquote&gt;
Eh, naturalmente &lt;i&gt;bwlab&lt;/i&gt; non E&#39; la mia password&lt;br /&gt;
&lt;br /&gt;
Per l&#39;indirizzo ad hoc uso l&#39;opzione &lt;b&gt;&lt;a href=&quot;https://docs.docker.com/userguide/dockerlinks/&quot;&gt;-p&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;-p 127.0.0.1:80:5000&lt;/blockquote&gt;
significa che la porta 80 di localhost, ossia la mia macchina, punta alla porta 5000 dell&#39;immagine&lt;br /&gt;
Mysql usa la porta di default 3306 quindi:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-p 127.0.0.1:3306:3306&lt;/blockquote&gt;
Attenzione a non avere altre istanze di Mysql attive perchè andrebbe in conflitto con la porta 3306&lt;br /&gt;
&lt;h4&gt;
Build del comando&lt;/h4&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
docker run -p 127.0.0.1:3306:3306 --name &amp;lt;nome di fantasia del container mysql&amp;gt; -v   /opt/temp/:/var/lib/mysql - e  MYSQL_ROOT_PASSWORD=bwlab -d mysql:latest&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
L&#39;opzione &lt;b&gt;-d mysql:latest&lt;/b&gt;&amp;nbsp;dice a docker di utilizzare l&#39;ultima versione&lt;/div&gt;
&lt;div&gt;
Nell&#39;hub ci sono le versioni che sono utilizzabili&lt;/div&gt;
&lt;div&gt;
E&#39; importate che l&#39;opzione -p sia subito dopo run&lt;/div&gt;
&lt;h3&gt;
Apache&amp;nbsp;+ PHP&lt;/h3&gt;
&lt;div&gt;
per il web server devi rimboccarti le maniche e studiarti il Dockerfile&lt;/div&gt;
&lt;div&gt;
è necessario creare un web server ad hoc&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
lo creerò su Ubuntu 15.04&lt;/div&gt;
&lt;div&gt;
l&#39;immagine avrà il necessario per lavorare&lt;/div&gt;
&lt;div&gt;
ecco il Docker file per creare un web server php&lt;/div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;FROM ubuntu:15.04&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;RUN apt-get update&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;RUN apt-get install nano&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;RUN apt-get install -y \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; ca-certificates curl libpcre3 librecode0 libsqlite3-0 libxml2 \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; curl wget \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; --no-install-recommends&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;RUN apt-get install -y \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; apache2 \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; --no-install-recommends&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;RUN apt-get install -y \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; php5 php5-dev php5-mcrypt php5-json php5-mysql php5-mongo php5-xdebug \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; php5-curl php5-gd php5-intl php5-imap php5-xsl \&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; --no-install-recommends&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;EXPOSE 80&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
la macchina che creo effettua solo l&#39;installazione dell&#39;editor a terminale mio preferito, nano, poi il web server apache e infine le estensioni necessarie per php e xdebug&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
creata l&#39;immagine, docker&amp;nbsp;&lt;i&gt;build -t &amp;lt;nome immagine&amp;gt;:&amp;lt;tag&amp;gt; . &amp;nbsp;&amp;nbsp;&lt;/i&gt;,è necessario fare un paio di modifiche relative al php.ini&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;impostare la date.timezone&lt;/li&gt;
&lt;li&gt;impostare i parametri di configurazione di xdebug&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
per impostarli avviamo l&#39;immagine momentaneamente&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;i&gt;docker run -t -i -p 8080:80 &amp;nbsp;&amp;lt;nome immagine&amp;gt;:&amp;lt;tag&amp;gt; /bin/bash&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
in questo modo avremo la shell e quindi via a modificare: &lt;i&gt;nano /etc/....&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
prima di uscire con exit da un altro terminale fai il commit delle modifiche:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;ol&gt;
&lt;li&gt;recuperi l&#39;id container&lt;/li&gt;
&lt;li&gt;poi &amp;nbsp;docker&amp;nbsp;&lt;i&gt;commit &amp;lt;id container&amp;gt; &amp;lt;nome immagine&amp;gt;:&amp;lt;tag&amp;gt;&lt;/i&gt;&amp;nbsp;e qui potresti dare una release superiore&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
a questo punto l&#39;immagine e pronta e basta collegarla alla root di progetto&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
docker run -p 8080:80 --name &amp;lt;nome container&amp;gt; &amp;nbsp;-v &amp;lt;root di progetto symfony&amp;gt;:/var/www/html -d &amp;lt;nome immagine&amp;gt;:&amp;lt;tag&amp;gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Mysql e Server&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ora che sono dentro il container del server web installo mysql-client senza fare commit aggiuntive, non mi interessa avere il client installato perchè il web serer deve essere leggero&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
provo a connettermi al db&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
mysql -h localhost -u root - p ....&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
non funziona!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
certo, il container del db è esterno a quello del server web. avrei potuto installarli assieme ma preferisco avere delle istanze diverse per fare prove con release diverse&lt;br /&gt;
comunque docker permette di collegare due container tramite l&#39;opzione link&lt;br /&gt;
quindi rieseguo l&#39;avvio del container precedente con l&#39;opzione link e il nome del container mysql precedentemente creato&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;code&gt;docker run -p 8080:80 --name &amp;lt;nome container&amp;gt; &amp;nbsp;--link &lt;b&gt;&amp;lt;nome di fantasia del container mysql&amp;gt;&lt;/b&gt;&amp;nbsp;-v &amp;lt;root di progetto symfony&amp;gt;:/var/www/html -d &amp;lt;nome immagine&amp;gt;:&amp;lt;tag&amp;gt;&lt;/code&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ora di nuovo a testare il link al db:&amp;nbsp;&lt;i&gt;mysql -h localhost -u root - p ....&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Non funziona. &lt;a href=&quot;https://docs.docker.com/userguide/dockerlinks/&quot;&gt;Perchè&lt;/a&gt;? La documentazione ufficiale parla chiaro:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #050e1a; font-family: &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 16px; letter-spacing: 1px; line-height: 25.6px;&quot;&gt;Docker creates several environment variables when you link containers. [grazie &lt;a href=&quot;https://plus.google.com/u/0/+AndreaTosatto/about&quot;&gt;Andrea Tosatto&lt;/a&gt;]&lt;/span&gt;&lt;/blockquote&gt;
Ok, allora basta digitare env nel container del server web&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&amp;lt;nome mysql container&amp;gt;_PORT_3306_TCP_ADDR=172.17.0.2&lt;/b&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_ENV_MYSQL_VERSION=5.6.26&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_PORT_3306_TCP=tcp://172.17.0.2:3306&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
PWD=/&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_ENV_MYSQL_MAJOR=5.6&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_ENV_MYSQL_ROOT_PASSWORD=xxxx&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_PORT=tcp://172.17.0.2:3306&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
SHLVL=1&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
HOME=/root&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_PORT_3306_TCP_PORT=3306&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nome mysql container&amp;gt;_PORT_3306_TCP_PROTO=tcp&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
_=/usr/bin/env&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;
Quindi l&#39;ip creato da docker durante il link è &lt;b&gt;172.17.0.2&lt;/b&gt;&amp;nbsp;ergo&amp;nbsp;&lt;i&gt;mysql -h 172.17.0.2 -u root - pxxxx --&amp;gt; &lt;/i&gt;FUNZIONAAAAA!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7wgPUoJ6RAA9PklNcyVw2pIyuLM0NpZneehjMVS6ukK14N3j53xB6tbkgtnwpkmxo35fpr5yRER3n2N1zEGG9miti7Owsm0yQeKFyJSUlpMG8rvmufxsLRHVu_GqkOwAQNESMbbcZnGbq/s1600/Selezione_074.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7wgPUoJ6RAA9PklNcyVw2pIyuLM0NpZneehjMVS6ukK14N3j53xB6tbkgtnwpkmxo35fpr5yRER3n2N1zEGG9miti7Owsm0yQeKFyJSUlpMG8rvmufxsLRHVu_GqkOwAQNESMbbcZnGbq/s640/Selezione_074.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
quindi la mia applicazione web per il db dovrà puntare a &lt;b&gt;172.17.0.2&lt;/b&gt;&lt;br /&gt;
le variabili &lt;b&gt;env&lt;/b&gt; possono essere recuperate in fase di run del container, come da documentazione&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp;docker run --rm --name web2 --link db:db training/webapp env&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; . . .&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_NAME=/web2/db&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_PORT=tcp://172.17.0.5:5432&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_PORT_5432_TCP=tcp://172.17.0.5:5432&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_PORT_5432_TCP_PROTO=tcp&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_PORT_5432_TCP_PORT=5432&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; DB_PORT_5432_TCP_ADDR=172.17.0.5&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ma possono anche essere impostate come opzione in fase di run:&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul style=&quot;background-color: white; box-sizing: inherit; color: #050e1a; font-family: &#39;Helvetica Neue&#39;, Helvetica, Roboto, Arial, sans-serif; font-size: 16px; line-height: 1.6; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: inherit; letter-spacing: 1px; line-height: 2; margin: 0px; padding: 0px;&quot;&gt;the&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border: 1px solid rgb(255, 203, 148); box-sizing: inherit; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; padding: 0.125rem 0.3125rem 0.0625rem;&quot;&gt;-e&lt;/code&gt;,&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border: 1px solid rgb(255, 203, 148); box-sizing: inherit; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; padding: 0.125rem 0.3125rem 0.0625rem;&quot;&gt;--env&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border: 1px solid rgb(255, 203, 148); box-sizing: inherit; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; padding: 0.125rem 0.3125rem 0.0625rem;&quot;&gt;--env-file&lt;/code&gt;&amp;nbsp;options on the&amp;nbsp;&lt;code style=&quot;background-color: #f8f8f8; border: 1px solid rgb(255, 203, 148); box-sizing: inherit; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; padding: 0.125rem 0.3125rem 0.0625rem;&quot;&gt;docker run&lt;/code&gt;command when the source container is started&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
oppure recuperate con&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp;docker exec training/webapp env&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
comunque in base alla &lt;a href=&quot;https://docs.docker.com/userguide/dockerlinks/&quot;&gt;documentazione&lt;/a&gt; docker aggiorna il file /etc/hosts con il gli indirizzi ip dei container linkati:&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&amp;lt;indirizzo ip&amp;gt; &amp;nbsp; &amp;nbsp; &amp;lt;nome container&amp;gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
quindi il modo più semplice per usare il db è quello di usare il nome del container mysql&amp;nbsp;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;lt;nome di fantasia del container mysql&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;
Dulcis In Fundo...&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Un po&#39; arzigogolata la spiegazione ma capito il meccanismo è molto veloce da gestire.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/3059290256720761523/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/09/work-in-progress-creare-un-ambiente-di.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3059290256720761523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3059290256720761523'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/09/work-in-progress-creare-un-ambiente-di.html' title='Creare un ambiente di sviluppo PHP SYMFONY MYSQL DOCKER'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7wgPUoJ6RAA9PklNcyVw2pIyuLM0NpZneehjMVS6ukK14N3j53xB6tbkgtnwpkmxo35fpr5yRER3n2N1zEGG9miti7Owsm0yQeKFyJSUlpMG8rvmufxsLRHVu_GqkOwAQNESMbbcZnGbq/s72-c/Selezione_074.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-1060551407165635495</id><published>2015-09-13T23:57:00.001+02:00</published><updated>2015-09-13T23:57:17.029+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="services in twig"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony2"/><category scheme="http://www.blogger.com/atom/ns#" term="twig"/><title type='text'>Utilizzare i servizi nei templates twig</title><content type='html'>Nello sviluppo di un&#39;applicazione web spesso ci si imbatte nel dover progettare un&#39;architettura dinamica&lt;br /&gt;
L&#39;implementazione di un tema grafico è tutt&#39;altro che che banale&lt;br /&gt;
Twig viene in aiuto con l&#39;estensione dei template, i blocchi, gli include e i render controller&lt;br /&gt;
Inoltre c&#39;è la possibilità di scrivere estensioni ad hoc per il proprio progetto&lt;br /&gt;
Partiamo dal presupposto che il tema grafico non deve essere fisso, ossia può essere cambiato col tempo&lt;br /&gt;
La progettazione del tema grafico richiede di renderlo il più possibile staccato dal controller&lt;br /&gt;
Quindi in twig è necessario fare un build di vari frammenti e dati&lt;br /&gt;
In linea generale i dati devono essere richiamati da twig e non viceversa&lt;br /&gt;
Partendo da questo presupposto, in fase di generazione del template il controller deve inserire tutti i dati, ma proprio tutti&lt;br /&gt;
Il controller però in questo caso diventa monolitico&lt;br /&gt;
Non è la soluzione migliore&lt;br /&gt;
L&#39;altra opzione è inserire in twig i render controller, ma i due oggetti si legano troppo rendendo difficile e lungo una sostituzione della veste grafica&lt;br /&gt;
L&#39;ultima opzione è un&#39;idea che mi &amp;nbsp;venuta strada facendo e di cui non conoscevo l&#39;esistenza, anche perchè la documentazione non è molto chiara&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/13243638/symfony2-how-to-access-service-from-template&quot;&gt;Richiamare in twig i servizi&lt;/a&gt;&lt;br /&gt;
Il gioco è semplice&lt;br /&gt;
&lt;code&gt;
twig:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; strict_variables: &quot;%kernel.debug%&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #engines: [&#39;twig&#39;, &#39;php&#39;]&lt;br /&gt;
&amp;nbsp; &amp;nbsp; globals:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;......&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dati_servizio: @mio_servizio&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
in twig ora è utilizzabile il servizio in maniera molto semplice:&lt;br /&gt;
&lt;code&gt;
&amp;nbsp;{% for dato in&amp;nbsp;dati_servizio.getList() %}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;option&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {{ dato.nome }}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;{% endfor %}
&lt;/code&gt;
&lt;br /&gt;
In questo modo è possibile richiamare i metodi del servizio all&#39;interno di Twig e recuperare i dati</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/1060551407165635495/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/09/utilizzare-i-servizi-nei-templates-twig.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1060551407165635495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/1060551407165635495'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/09/utilizzare-i-servizi-nei-templates-twig.html' title='Utilizzare i servizi nei templates twig'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-3975616668735097794</id><published>2015-09-03T14:38:00.002+02:00</published><updated>2016-08-27T16:37:57.019+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="ionic framework"/><title type='text'>Ionic Framework &amp; Gradle</title><content type='html'>Ho riscontrato delle difficoltà nel build della web app con ionic&amp;nbsp;+ gradle, sopratutto dopo aver aggiornato cordova all&#39;ultima version che non usa più ant&lt;br /&gt;
&lt;div&gt;
Prima con ant era facile&lt;/div&gt;
&lt;code&gt;ionic build -- --ant&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
con gradle invece è sufficiente dare &lt;i&gt;ionic build&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
peccato che nel tentativo di deploy mi sia imbattuto in questo errore:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;FAILURE: Build failed with an exception.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;* What went wrong:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;A problem occurred configuring root project &#39;android&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;gt; A problem occurred configuring project &#39;:CordovaLib&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;gt; Could not resolve all dependencies for configuration &#39;:CordovaLib:classpath&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt; Could not resolve com.android.tools.build:gradle:1.0.0+.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Required by:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:CordovaLib:unspecified&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;gt; Could not resolve com.android.tools.build:gradle:1.0.0+.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt; Failed to list versions for com.android.tools.build:gradle.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;gt;&lt;b&gt; Unable to load Maven meta-data from https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;gt; Could not GET &#39;https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml&#39;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;gt; peer not authenticated&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
le righe importanti sono quelle in grassetto&lt;/div&gt;
&lt;div&gt;
che ci sia maven o&amp;nbsp;bintray, dopo una mia modifica, non importa.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
se notate all&#39;inizio dell&#39;indirizzo c&#39;è https&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
praticamente gradle non riesce a scaricare le info per scaricare i pacchetti perchè è &lt;b&gt;peer not authenticate&lt;/b&gt;, ossia manca il certificato su java&lt;/div&gt;
&lt;div&gt;
cos&#39; dopo un po&#39; di analisi e ricerche questa è stata la soluzione: impostare lindirizzo da https a http&lt;/div&gt;
&lt;h3&gt;
come fare?&lt;/h3&gt;
&lt;div&gt;
in tutti i files build.gradle del progetto cercate:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;repositories {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; centralMaven()&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
oppure&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp;repositories {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; jcenter()&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
e sostituite con&lt;/div&gt;
&lt;div&gt;
repositories {&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; maven{&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;url &#39;http://repo1.maven.org/maven2&#39;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
oppure&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
repositories {&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; jcenter{&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;url &#39;http://jcenter.bintray.com&#39;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ricordate che gradle è legato alla versione dell&#39;sdk android che si usa&lt;/div&gt;
&lt;div&gt;
quindi gradle-2.2.1 con android 22 (cercare file con stringa distributionUrl)&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/3975616668735097794/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/09/ionic-framework-gradle.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3975616668735097794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3975616668735097794'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/09/ionic-framework-gradle.html' title='Ionic Framework &amp; Gradle'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-2319838349238735603</id><published>2015-07-02T23:42:00.001+02:00</published><updated>2015-07-02T23:42:02.697+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJs Allow-Control-Allow-Origin"/><title type='text'>AngularJs Allow-Control-Allow-Origin</title><content type='html'>Vuoi caricare i dati da un server remoto ma stai sviluppando in locale?&lt;div&gt;
Non desideri aggiungere gli header per disabilitare il Control Origin?&lt;/div&gt;
&lt;div&gt;
Allora devi intervenire su Chrome&lt;/div&gt;
&lt;div&gt;
O disabiliti il controlli in configurazione, oppure usi questa fantastica estensione:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/allow-control-allow-origi&quot;&gt;https://chrome.google.com/webstore/detail/allow-control-allow-origi&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/2319838349238735603/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/07/angularjs-allow-control-allow-origin.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2319838349238735603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2319838349238735603'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/07/angularjs-allow-control-allow-origin.html' title='AngularJs Allow-Control-Allow-Origin'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-3633351460625421694</id><published>2015-06-12T15:23:00.000+02:00</published><updated>2015-06-12T15:23:03.271+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="phpstorm"/><category scheme="http://www.blogger.com/atom/ns#" term="scopes"/><title type='text'>Inserire gli scopes in phpstorm</title><content type='html'>Gli scope sono utili perchè permettono di vedere solo l&#39;albero di codice che interessa invece di tutto il progetto&lt;br /&gt;
Sono anche comodi per filtrare i TODO da visualizzare solo per il codice che ci interessa&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPmW6qRzKzATYhXdTUG2kmeak9Ffdy3KIDfHipzSRliy7RhuPDkwO9p2rmK2D5Kct0aoOWWKdOookVTFQhnq03hr9fK63lggtfmqXgVHk45skoIsO1dqE7JxV28pX07AdbNQE81QU-ERTP/s1600/Menu_093.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPmW6qRzKzATYhXdTUG2kmeak9Ffdy3KIDfHipzSRliy7RhuPDkwO9p2rmK2D5Kct0aoOWWKdOookVTFQhnq03hr9fK63lggtfmqXgVHk45skoIsO1dqE7JxV28pX07AdbNQE81QU-ERTP/s1600/Menu_093.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Nella configurazione è presente la voce &quot;Appearence &amp;amp; Behavior&quot; &amp;gt; Scope&lt;br /&gt;
Vediamo velocemente come funzionano.&lt;br /&gt;
Effettuiamo un filtro sui file&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxU08UPAyqKbANIAWJ3stUfkNmONyX6jXHZL6tDBkXWbl6qq2Pc6F9XOknod6X_jSMQPzzZ9R8u8kK3Q5BI3tqNyMko3qxcrQVn2Nt0woqgl34JZ5bLs3BAPaSugAoQM6IvD-2RVcQPRV/s1600/Scopes_094.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxU08UPAyqKbANIAWJ3stUfkNmONyX6jXHZL6tDBkXWbl6qq2Pc6F9XOknod6X_jSMQPzzZ9R8u8kK3Q5BI3tqNyMko3qxcrQVn2Nt0woqgl34JZ5bLs3BAPaSugAoQM6IvD-2RVcQPRV/s400/Scopes_094.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Lo scope funziona con i pattern (o regex?)&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Sono con u progetto symfony quindi voglio filtrare solo i files sotto src&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
In pattern inserisco:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; file:src//*&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
e voilà, phpstorm mi presenta solo la cartella src che posso espondere. a questo punto con i vari tasti include o exclude, include recursive o exclude recursive posso includere o escludere porzioni singole di codice&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Un guida utile alla configurazione degli scopes si trova qui:&amp;nbsp;&lt;a href=&quot;http://www.jetbrains.com/phpstorm/help/scopes.html&quot;&gt;http://www.jetbrains.com/phpstorm/help/scopes.html&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/3633351460625421694/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/06/inserire-gli-scopes-in-phpstorm.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3633351460625421694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/3633351460625421694'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/06/inserire-gli-scopes-in-phpstorm.html' title='Inserire gli scopes in phpstorm'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPmW6qRzKzATYhXdTUG2kmeak9Ffdy3KIDfHipzSRliy7RhuPDkwO9p2rmK2D5Kct0aoOWWKdOookVTFQhnq03hr9fK63lggtfmqXgVHk45skoIsO1dqE7JxV28pX07AdbNQE81QU-ERTP/s72-c/Menu_093.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-7360521209747315034</id><published>2015-05-27T15:40:00.001+02:00</published><updated>2015-05-27T15:59:50.636+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="prestashop estrazione clienti"/><title type='text'>Estrarre i dati da prestashop dei clienti che non ordinano da un certo tempo</title><content type='html'>Ecco un breve snippet sql per estrarre i dati da PrestaShop che non ordinano da un X di mesi&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
SELECT customer.firstname, customer.lastname, customer.email, customer.date_add as registrata, addr.city,addr.postcode, state.name&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;FROM ps_customer as customer&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;left join ps_address as addr on addr.id_customer = customer.id_customer&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;left join ps_state as state on state.id_state = addr.id_state and state.id_country = addr.id_country&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;WHERE customer.id_customer NOT IN (SELECT id_customer FROM ps_orders where date_add &amp;gt; &#39;&lt;b&gt;2015-02-27&lt;/b&gt;&#39;)
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Attenzione che la data&amp;nbsp;&#39;2015-02-27&#39; indica la data di partenza su cui fare l&#39;analisi&lt;br /&gt;
Quindi lo snippet tra tutti i clienti esistenti estrae solo quelli che hanno NON ordinato dopo la data &#39;2015-02-27&#39;&lt;br /&gt;
Spero possa esservi di aiuto e se avete necessità contattatemi&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/7360521209747315034/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/05/estrarre-i-dati-da-prestashop-dei.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7360521209747315034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/7360521209747315034'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/05/estrarre-i-dati-da-prestashop-dei.html' title='Estrarre i dati da prestashop dei clienti che non ordinano da un certo tempo'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-6744374018282493698</id><published>2015-03-03T14:38:00.000+01:00</published><updated>2015-06-17T13:48:32.907+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="browsersync"/><category scheme="http://www.blogger.com/atom/ns#" term="livereload"/><title type='text'>BrowserSync o LiveReload?</title><content type='html'>Sviluppando in AngularJs on anche mettendo in piedi un semplicissima pagina statica, è utile vedere in realtime il risultato dell&#39;editing&lt;br /&gt;
Utilizzando un edito come Atom o SublimeText è possibile solo se si attiva un sistema che controlla la modifica dei file del progetto e che fa un aggiornamento automatico della pagina&lt;br /&gt;
A questo riguardo c&#39;è un progetto LiveReload che può aiutare&lt;br /&gt;
Ma preferisco parlarvi di &lt;a href=&quot;http://www.browsersync.io/&quot;&gt;BrowserSync&lt;/a&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: #1b2032; color: white; font-family: &#39;Titillium Web&#39;, &#39;Lucida Grande&#39;, &#39;Lucida Sans&#39;, sans-serif; font-size: 24px; line-height: 36px; text-align: center;&quot;&gt;BrowserSync makes your tweaking and testing faster by synchronising file changes and interactions across multiple devices. It’s wicked-fast and totally free&lt;/span&gt;&lt;/blockquote&gt;
&lt;h3&gt;
Installazione&lt;/h3&gt;
&lt;div&gt;
L&#39;installazione è veloce e semplice utilizzando npm&lt;/div&gt;
&lt;div&gt;
&lt;pre style=&quot;background: rgb(27, 32, 50); border-radius: 3px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 16px; line-height: 24px; margin-bottom: 12px; overflow: auto; padding: 6px 12px; white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 3px; border: 0px; box-sizing: border-box; font-size: 1.125rem; line-height: 1.25; padding: 0px;&quot;&gt;npm install -g browser-sync&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
finito...&lt;/div&gt;
&lt;h3&gt;
Come funziona&lt;/h3&gt;
&lt;div&gt;
E&#39; necessario lanciare un ascoltatore, alla fine è un server, che controlla la modifica dei file. Per i files statici, in questo caso CSS:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre style=&quot;background: rgb(27, 32, 50); border-radius: 3px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 16px; line-height: 24px; margin-bottom: 12px; overflow: auto; padding: 6px 12px; white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 3px; border: 0px; box-sizing: border-box; font-size: 1.125rem; line-height: 1.25; padding: 0px;&quot;&gt;browser-sync start --server --files &quot;css/*.css&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Ma è possibile anche puntare ad un progetto web:&lt;/div&gt;
&lt;div&gt;
&lt;pre style=&quot;background: rgb(27, 32, 50); border-radius: 3px; box-sizing: border-box; color: white; font-family: monospace, monospace; font-size: 16px; line-height: 24px; margin-bottom: 12px; overflow: auto; padding: 6px 12px; white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 3px; border: 0px; box-sizing: border-box; font-size: 1.125rem; line-height: 1.25; padding: 0px;&quot;&gt;browser-sync start --proxy &quot;myproject.dev&quot; --files &quot;css/*.css&quot;&lt;/code&gt;&lt;/pre&gt;
Vi assicuro che è un tool semplice da usare ed anche veloce&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Aggiunta&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
per monitorare ricorsivamente tutti i files dell&#39;applicazione&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp;browser-sync start --server --files &quot;app/**&quot;&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/6744374018282493698/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/03/browsersync-o-livereload.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/6744374018282493698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/6744374018282493698'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/03/browsersync-o-livereload.html' title='BrowserSync o LiveReload?'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5377810600179124996.post-2268090823632704845</id><published>2015-02-21T22:42:00.001+01:00</published><updated>2015-02-21T22:42:09.858+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="prestashop"/><title type='text'>Estrarre le descrizioni dei prodotti da PrestaShop</title><content type='html'>Ecco uno snippet sql per estrarre facilment le descrizioni in lingua dei prodotti da PrestaShop:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://pastebin.com/embed_iframe.php?i=pxMkJb0j&quot; style=&quot;border:none;width:100%&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://bwlabit.blogspot.com/feeds/2268090823632704845/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://bwlabit.blogspot.com/2015/02/estrarre-le-descrizioni-dei-prodotti-da.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2268090823632704845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5377810600179124996/posts/default/2268090823632704845'/><link rel='alternate' type='text/html' href='http://bwlabit.blogspot.com/2015/02/estrarre-le-descrizioni-dei-prodotti-da.html' title='Estrarre le descrizioni dei prodotti da PrestaShop'/><author><name>Luigi Massa</name><uri>http://www.blogger.com/profile/07250977187932959369</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>