<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Javascript on Enrico Rossomando</title><link>https://www.mrred.it/tag/javascript/</link><description>Recent content in Javascript on Enrico Rossomando</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 07 Jan 2021 13:29:00 +0000</lastBuildDate><atom:link href="https://www.mrred.it/tag/javascript/index.xml" rel="self" type="application/rss+xml"/><item><title>Angular direttive strutturali e scope delle variabili del template</title><link>https://www.mrred.it/angular-direttive-strutturali-e-scope-delle-variabili-del-template/</link><pubDate>Thu, 07 Jan 2021 13:29:00 +0000</pubDate><guid>https://www.mrred.it/angular-direttive-strutturali-e-scope-delle-variabili-del-template/</guid><description>&lt;p&gt;Ho sempre sottovalutato l&amp;rsquo;utilizzo di alcuni tag in Angular, come ad esempio &lt;ng-container&gt;, &lt;ng-template&gt; e le variabili template, quelle che si inizializzano all&amp;rsquo;interno dei file HTML con #nomeVariabile.&lt;/p&gt;
&lt;p&gt;Per non parlare poi delle direttive strutturali, abituati ad usare i soliti *ngIf e *ngFor, a volte si tende a dimenticare tutte le altre che possono essere molto comode, soprattutto per mantenere il codice HTML pulito e ordinato.&lt;/p&gt;
&lt;h2 id="structural-directive"&gt;Structural directive&lt;/h2&gt;
&lt;p&gt;I due elementi chiavi delle direttive strutturali sono ng-container e ng-template, che vengono usate da angular per tutte le altre direttive strutturali, ad esempio, quando si scrive *ngIf, Angular non fa altro che piazzare in ng-template prima del tag e metterci un attributo input [ngIf].&lt;/p&gt;</description></item><item><title>AdBlock Plus e Mixpanel: come aggirare il filtro</title><link>https://www.mrred.it/adblock-plus-e-mixpanel-come-aggirare-il-filtro/</link><pubDate>Sat, 05 Oct 2013 03:54:49 +0000</pubDate><guid>https://www.mrred.it/adblock-plus-e-mixpanel-come-aggirare-il-filtro/</guid><description>&lt;p&gt;&lt;a href="https://adblockplus.org" title="AdBlock Plus"&gt;&lt;strong&gt;AdBlock Plus&lt;/strong&gt;&lt;/a&gt; è uno dei plugin più scaricati per Google Chrome, Firefox ed Explorer. Principalmente viene utilizzato per bloccare la pubblicità durante la nostra navigazione, ma può fare molto di più: tra le opzioni presenti nella versione Plus troviamo &amp;ldquo;Malware Blocking&amp;rdquo; che blocca tutti i domini conosciuti infetti da qualche malware; Remove Social Media Buttons che, come si può intuire, blocca il codice di caricamento dei bottoni di share come Facebook, Twitter ecc&amp;hellip; ed infine troviamo &lt;strong&gt;&amp;ldquo;Disable Tracking&amp;rdquo;&lt;/strong&gt; che blocca tutti i più comuni tool di tracciamento come &lt;strong&gt;Google Analytics&lt;/strong&gt; ed appunto &lt;a href="https://mixpanel.com"&gt;&lt;strong&gt;Mixpanel&lt;/strong&gt;&lt;/a&gt;. &lt;img alt="AdBlock Plus, malware protection, social buttons and tracking" loading="lazy" src="https://www.mrred.it/wp-content/uploads/sites/41/2013/10/adblockplus-malware-tracking-social-buttons.png"&gt; AdBlock Plus, malware protection, social buttons and tracking A volte bloccare il sistema di tracciamento su di una web application potrebbe compromettere il funzionamento del servizio che si sta utilizzando. Se vi trovate dall&amp;rsquo;altra parte della barricata e siete un programmatore che ha l&amp;rsquo;esigenza di utilizzare un servizio di tracciamento, come Mixpanel, per il corretto funzionamento dell&amp;rsquo;applicazione allora potete utilizzare questo metodo per &lt;strong&gt;bypassare&lt;/strong&gt; il blocco di default di &lt;strong&gt;AdBlock Plus&lt;/strong&gt; e continuare a tracciare i dati dell&amp;rsquo;utente per un corretto funzionamento dell&amp;rsquo;applicazione. AdBlock Plus basa le sue regole per bloccare un servizio attraverso l&amp;rsquo;url di script e file esterni che vengono caricati dalla pagina, quello che andremo a fare è mappare attraverso un nostro URL tutto ciò che arriva dal sito di Mixpanel, in maniera tale da bypassare le regole di default presenti in AdBlock Plus. Per prima cosa creiamo un &lt;a href="http://en.wikipedia.org/wiki/CNAME_record"&gt;Record DNS CNAME&lt;/a&gt; nel nostro gestore DNS mappando ad esempio il sotto dominio &amp;ldquo;mp.yourdomain.com&amp;rdquo; a &amp;ldquo;api.mixpanel.com&amp;rdquo; attraverso il tipo di record CNAME. &lt;img alt="Add CNAME DNS api.mixpanel.com" loading="lazy" src="https://www.mrred.it/wp-content/uploads/sites/41/2013/10/add-cname-dns-mixpanel.png"&gt; Add CNAME DNS api.mixpanel.com Fatto questo salviamoci la libreria di Mixpanel &lt;a href="http://cdn.mxpnl.com/libs/mixpanel-2.2.min.js"&gt;&lt;strong&gt;&amp;rsquo;//cdn.mxpnl.com/libs/mixpanel-2.2.min.js&amp;rsquo;&lt;/strong&gt;&lt;/a&gt; in locale rinominandola &amp;lsquo;mp-2.2.min.js&amp;rsquo; ed apriamola con un il nostro editor di testo preferito, cerchiamo la stringa &lt;strong&gt;api.mixpanel.com&lt;/strong&gt; e sostituiamola con mp.yourdomain.com &lt;img alt="Mixpanel AdBlock Plus hack" loading="lazy" src="https://www.mrred.it/wp-content/uploads/sites/41/2013/09/mixpanel-javacript-lib-adblock-hack-650x456.png" title="Mixpanel AdBlock Plus hack"&gt; Mixpanel AdBlock Plus hack step 1 A questo punto carichiamo sul nostro server il file Javascript appena modificato ed andiamo a sostituire nel blocco di codice che &lt;a href="https://mixpanel.com/docs/integration-libraries/javascript"&gt;importava la libreria Mixpanel&lt;/a&gt; nel nostro sistema il nuovo URL del file appena caricato. &lt;img alt="Mixpanel AdBlock Plus hack step 2" loading="lazy" src="https://www.mrred.it/wp-content/uploads/sites/41/2013/09/mixpanel-javascript-adblock-hack-650x319.png" title="Mixpanel AdBlock Plus hack step 2"&gt; Mixpanel AdBlock Plus hack step 2 A questo punto se proviamo a navigare sul nostro sito con AdBlock Plus attivo Mixpanel non verrà più bloccato con le regole di default presenti nel plugin e tutto funzionerà correttamente.&lt;/p&gt;</description></item><item><title>From Adobe Illustrator to HTML5 Canvas</title><link>https://www.mrred.it/from-adobe-illustrator-to-html5-canvas/</link><pubDate>Sat, 11 May 2013 17:07:00 +0000</pubDate><guid>https://www.mrred.it/from-adobe-illustrator-to-html5-canvas/</guid><description>&lt;p&gt;Il fenomeno &lt;strong&gt;HTML5&lt;/strong&gt; cresce sempre di più col passare del tempo, se ne discute molto in rete e sembra non terminare mai la battaglia tra HTML5 e &lt;strong&gt;Flash.&lt;/strong&gt; Se poi si finisce sul mobile iniziano i confronti tra WEB e NATIVO, ma non è di questo che voglio parlare.&lt;/p&gt;
&lt;p&gt;Così come cresce la moda di HTML5 iniziano a proliferare anche diversi strumenti e framework. Quello che segue è uno strumento che attribuisce al canvas un potenziale enorme per lo sviluppo di animazioni ed interfacce vettoriali che prima era molto complicato ottenere e che funzionano bene su tutti i moderni browser e dispositivi mobili.&lt;/p&gt;</description></item><item><title>The concepts of WebGL</title><link>https://www.mrred.it/the-concepts-of-webgl/</link><pubDate>Sat, 27 Apr 2013 16:06:00 +0000</pubDate><guid>https://www.mrred.it/the-concepts-of-webgl/</guid><description>&lt;p&gt;Interessante articolo su hacks.mozilla.org che introduce e chiarisce alcuni concetti fondamentali dietro le WebGL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is WebGL?&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;WebGL is a Web API that allows low-level graphics programming. “Low-level” means that WebGL commands are expressed in terms that map relatively directly to how a &lt;a href="http://en.wikipedia.org/wiki/Graphics_processing_unit"&gt;GPU&lt;/a&gt; (graphics processing unit, i.e. hardware) actually works. That means that WebGL allows you to really tap into the feature set and power of graphics hardware. What native games do with OpenGL or Direct3D, you can probably do with WebGL too.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Link all’articolo su &lt;strong&gt;hack.mozilla.org&lt;/strong&gt;: &lt;a href="https://hacks.mozilla.org/2013/04/the-concepts-of-webgl/"&gt;The concepts of WebGL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hacks.mozilla.org/2013/04/the-concepts-of-webgl/"&gt;&lt;img loading="lazy" src="http://media.tumblr.com/c20c584edd7f1f9ccd58847499d7c596/tumblr_inline_mlx8ltpVQs1qz4rgp.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L’articolo non si pone come un ennesimo tutorial, infatti, alla fine, segnala delle risorse molto utili per iniziare a programmare con le WebGL.&lt;/p&gt;</description></item><item><title>CanvasLoader Creator</title><link>https://www.mrred.it/canvasloader-creator/</link><pubDate>Tue, 05 Mar 2013 23:49:00 +0000</pubDate><guid>https://www.mrred.it/canvasloader-creator/</guid><description>&lt;p&gt;&lt;a href="http://heartcode.robertpataki.com/canvasloader/"&gt;CanvasLoader Creator&lt;/a&gt; è una piccola libreria javascript (5.8kb minificata) che vi permette di riprodurre nel &lt;canvas&gt; un animazione di caricamento (loader) senza utilizzare gif animate.&lt;/p&gt;
&lt;p&gt;Sul sito c’è un piccolo pannello di controllo che vi permette di settare i diversi parametri e vedere il risultato in tempo reale.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://heartcode.robertpataki.com/canvasloader/"&gt;&lt;img alt="image" loading="lazy" src="http://media.tumblr.com/25972b2f20a925785334477ac193585e/tumblr_inline_mhy6cqgVi41qz4rgp.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I vantaggi dell’utilizzare una libreria del genere sono diversi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;5kb sono meno di una gif animata (circa 100x100)&lt;/li&gt;
&lt;li&gt;Il colore, la velocità e tanti altri parametri possono essere cambiati in tempo reale e quindi riprodurre effetti più carini a seconda delle situazioni&lt;/li&gt;
&lt;li&gt;La dimensione può essere cambiata e quindi adattata alle diverse interfacce&lt;/li&gt;
&lt;li&gt;Il codice necessario per utilizzarla è semplicissimo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://heartcode.robertpataki.com/canvasloader/"&gt;&lt;img alt="image" loading="lazy" src="http://media.tumblr.com/c849a9d8e4107bc1c76012ab2c891e8c/tumblr_inline_mhy6pu3hAw1qz4rgp.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>HTML5 | Javascript canvas experiments</title><link>https://www.mrred.it/html5-javascript-canvas-experiments/</link><pubDate>Sun, 03 Feb 2013 01:02:06 +0000</pubDate><guid>https://www.mrred.it/html5-javascript-canvas-experiments/</guid><description>&lt;p&gt;&lt;a href="http://www.dhteumeuleu.com/index" title="Canvas Experiment"&gt;&lt;img loading="lazy" src="http://media.tumblr.com/6766010971a29fb8d5ddbcb182a44f90/tumblr_inline_mhjuq20kZI1qz4rgp.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.dhteumeuleu.com/"&gt;&lt;/a&gt;&lt;a href="http://www.dhteumeuleu.com/"&gt;http://www.dhteumeuleu.com/&lt;/a&gt;&lt;/strong&gt; una raccolta di diversi esperimenti in HTML5 che fanno uso del Canvas senza nessun aiuto da parte di plugin come Flash…&lt;/p&gt;
&lt;p&gt;Per ogni esperimento è possibile visualizzare anche il &lt;strong&gt;codice sorgente&lt;/strong&gt; per capire come è stato implementato. Molto utile per scoprire nuove tecniche di &lt;strong&gt;animazione&lt;/strong&gt; e di gestione del &lt;strong&gt;canvas&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://media.tumblr.com/4313d967329c4bcf7613575153554a5f/tumblr_inline_mhjv4t0B3m1qz4rgp.png"&gt;&lt;/p&gt;</description></item><item><title>Javascript Cross Domain API</title><link>https://www.mrred.it/javascript-cross-domain-api/</link><pubDate>Sat, 02 Feb 2013 01:01:00 +0000</pubDate><guid>https://www.mrred.it/javascript-cross-domain-api/</guid><description>&lt;p&gt;I moderni browser implementano la cosiddetta &lt;strong&gt;same-domain-policy&lt;/strong&gt; che impedisce a qualsiasi richiesta HTTP fatta con l’oggetto &lt;strong&gt;XmlHttpRequest&lt;/strong&gt; di accedere a risorse su server con un dominio diverso da quello in cui risiede lo script chiamante. Questo può sembrare una policy molto limitante ma impedisce alle pagine di caricare codice pericoloso e accedere a sessioni non autorizzate. Questa limitazione peròc risulta fastidiosa quando si sviluppano applicazioni web in &lt;strong&gt;localhost&lt;/strong&gt; che fanno uso di API che non risiedono sulla propria macchina. Questo è &lt;strong&gt;l’errore&lt;/strong&gt; che compare quando si tenta di accedere da localhost ad un dominio diverso tramite l’oggetto XmlHttpRequest: &lt;img alt="image" loading="lazy" src="http://media.tumblr.com/cc1c8180c5c2aacd30079a843d9cb64d/tumblr_inline_mhhg3dOi6x1qz4rgp.png"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;XMLHttpRequest cannot load &lt;a href="http://192.168.0.123/dengenchronicles-backend/api/user/login/test?username=test&amp;amp;password=test"&gt;http://192.168.0.123/dengenchronicles-backend/api/user/login/test?username=test&amp;amp;password=test&lt;/a&gt;. Origin &lt;a href="http://127.0.0.1"&gt;http://127.0.0.1&lt;/a&gt; is not allowed by Access-Control-Allow-Origin.&lt;/p&gt;</description></item><item><title>CanvasSwirl: An animated spirograph experiment in JavaScript and Canvas</title><link>https://www.mrred.it/canvasswirl-an-animated-spirograph-experiment-in/</link><pubDate>Thu, 31 Jan 2013 01:02:00 +0000</pubDate><guid>https://www.mrred.it/canvasswirl-an-animated-spirograph-experiment-in/</guid><description>&lt;p&gt;CanvasSwirl è un bellissimo esperimento implementato in javascript che unisce ad un sistema di particelle la logica dello spirografo.&lt;/p&gt;
&lt;p&gt;Lo &lt;a href="http://it.wikipedia.org/wiki/Spirograph" title="Lo Spirograph è uno strumento che produce un tipo di curve chiamate ipotrocoidi e epicicloidi"&gt;spirografo&lt;/a&gt; è uno strumento che produce delle curve chiamate &lt;a href="http://it.wikipedia.org/wiki/Ipotrocoide"&gt;ipotrocoidi&lt;/a&gt; e &lt;a href="http://it.wikipedia.org/wiki/Epicicloide"&gt;epicicloidi&lt;/a&gt;. Ve lo ricorderete perché sicuramente lo avete utilizzato a scuola quando eravate piccoli.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;ipotrocoidi&lt;/strong&gt; è una rulletta ottenibile come curva tracciata da un punto fissato ad una certa distanza dal centro di un cerchio mobile che ruota all’interno di un altro cerchio immobile. La figura animata chiarirà meglio il concetto :)&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" loading="lazy" src="http://media.tumblr.com/079e9d8c872300c1c79a952286b3f892/tumblr_inline_mhgau5bxwf1qz4rgp.gif"&gt;&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;epicicloidi&lt;/strong&gt; invece si basano sullo stesso concetto delle ipotrocoidi ma il cerchio mobile ruota all’esterno del cerchio immobile.&lt;/p&gt;</description></item><item><title>HTML5 CanvasSwirl testato su iPhone</title><link>https://www.mrred.it/html5-canvasswirl-testato-su-iphone/</link><pubDate>Wed, 30 Jan 2013 18:36:25 +0000</pubDate><guid>https://www.mrred.it/html5-canvasswirl-testato-su-iphone/</guid><description>&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=EajfmmrKMX4"&gt;http://www.youtube.com/watch?v=EajfmmrKMX4&lt;/a&gt; &lt;a href="http://jsswirl.com/" title="CanvasSwirl: An animated spirograph experiment in JavaScript and canvas by xhva.net"&gt;CanvasSwirl&lt;/a&gt; testato su iphone 3GS (in alto a sinistra), iPhone 4 (in basso a sinistra), iPhone 4S (in alto a destra) e iPhone 5. La velocità dell’iPhone 5 che monta il nuovissimo chip A6 ovviamente non è paragonabile con i precedenti modelli, ma la cosa che sorprende è la poca differenza di performance tra iPhone 3GS e iPhone 4, nonostante quest’ultimo monti il chip A4, fatto da Apple su misura per la nuova linea di iPhone.&lt;/p&gt;
&lt;p&gt;(Source: &lt;a href="http://www.youtube.com/"&gt;http://www.youtube.com/&lt;/a&gt;)&lt;/p&gt;</description></item><item><title>Furball in WebGL</title><link>https://www.mrred.it/furball-in-webgl/</link><pubDate>Wed, 30 Jan 2013 07:32:32 +0000</pubDate><guid>https://www.mrred.it/furball-in-webgl/</guid><description>&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=De8A4jDWe40"&gt;http://www.youtube.com/watch?v=De8A4jDWe40&lt;/a&gt; Un bellissimo esperimento fatto completamente con le WebGL. Guardate il video oppure se avete un browser abilitato alle WebGL potete vederlo live a questo indirizzo: &lt;a href="http://www.theoberg.com/things/furball/"&gt;http://www.theoberg.com/things/furball/&lt;/a&gt; Grazie a @theo_t&lt;/p&gt;
&lt;p&gt;(Source: &lt;a href="http://www.youtube.com/"&gt;http://www.youtube.com/&lt;/a&gt;)&lt;/p&gt;</description></item></channel></rss>