Home Blog Page 3

The 2018 Mighty Laravel Application 20 Optimization Ideas Checklist

0


Here we go! Your Laravel application is now in production. You are online, ready to start making a lot of mecha-gazillion dollars.

Roses are red, violets are blue, tests are green and you feel so cool.

First user. Ten users. One hundred users. A thousand users! Suddenly, the more you go forward, the more your application becomes slower.

What should you do? Well… Devil is in details.

After some searching, I decided to create this list of 20 tips you can use to boost your Laravel application to a new level.

Monitoring a Laravel Application with Telescope

2

I am always excited when a new Laravel ecosystem product comes out. I am not a fanboy, I have always been skeptic and critic about some parts of the framework when I don’t like them, but there is something (among many others) I love about Laravel: its pragmatism.

So, every single time they release something new I am 100% sure that it’s something that can be useful, no matter if paid or not (the cure the team put in it makes nearly impossible to feel the difference).

Today I want to talk a little bit about Laravel Telescope, a debugging tool for Laravel applications. On the Telescope Github page is defined as an “elegant debugger assistant”.

Dall’Actor Model alla Pratica – Giocando con I Processi in Elixir

0

Il mio viaggio in Elixir prosegue e, devo ammetterlo, è sempre più stimolante. Non soltanto da un punto di vista strettamente “tecnico” ma anche da quello legato alle inclinazioni personali, legate all’apprendimento (ed insegnamento) di qualcosa di nuovo.

Qualche settimana fa ho spiegato, partendo da un ottimo articolo in inglese, cos’è l’actor model. Qualche giorno fa, invece, ho spiegato come installare Elixir e configurare un primo progetto. Oggi mettiamo in pratica tutto quello che abbiamo visto: scriveremo del codice creando una piccola applicazione che fa uso di processi!

Ehm, cosa?

In Elixir, ogni singola riga di codice viene eseguita in un processo. Non parliamo dei processi “classici” a cui siamo abituati: parliamo invece di quelli della BEAM, la VM su cui gira il codice che noi scriviamo.

Ora, Elixir è un linguaggio fortemente orientato alla concorrenza e alla scrittura di applicazioni che fanno più cose contemporaneamente (per davvero). Un processo della BEAM è molto più leggero di quelli a cui siamo abituati, tant’è che su una macchina normalissima è possibile crearne centinaia di migliaia e farli lavorare contemporaneamente senza nessun problema.

Non perdiamoci in chiacchiere, iniziamo da cose semplicissime per poi renderle più interessanti!

Functional Developer Italiani – Un Nuovo Gruppo Facebook

0

Alcuni di voi sapranno che, da qualche tempo, sono uno degli amministratori di Web Developer Italiani, uno (se non il) gruppo più forte in Italia per tutto quello che riguarda (you don’t say) lo sviluppo web, che conta undicimila sviluppatori iscritti.

Qualche giorno fa ho fondato il “fratellino minore”, in un certo senso, del gruppo: Functional Developer Italiani!


>> Functional Developer Italiani <<

Il gruppo è pubblico e aperto! Ti aspettiamo!


Sarà dedicato TOTALMENTE allo sviluppo con linguaggi funzionali.

Il lancio è stato spaziale, abbiamo raggiunto velocemente più di 100 iscritti!

L’obiettivo è semplice:

  • creare un centro di discussione attivo sull’argomento, tirando in ballo un po’ tutti i linguaggi che abbracciano questo paradigma. Niente fondamentalismi, niente estremismi di sorta;
  • “accogliere” anche chi è totalmente a secco sull’argomento, attraverso la diffusione di risorse entry-level più adatte a chi il paradigma non lo mastica per niente;

Ti aspettiamo su Functional Developer Italiani! 🙂

Come Configurare un Primo Progetto Elixir (ed effettivamente è semplicissimo)

1

Qualche giorno fa ho scritto un post per spiegare, in più o meno poche righe, cosa diamine è l’actor model. Come già scritto proprio in quelle righe, negli ultimi tempi mi sto (ri)avvicinando ad Elixir. Stavolta, però, ho deciso di trovare quello che poteva essere un buon modo di imparare ad usarlo (senza dover partire dalle basi più banali) e nel contempo tenere un “diario” dell’avventura.

Ho una mia teoria sui “diari” nello sviluppo. Se ben tenuti, è molto più semplice scrivere materiale che sarà, a sua volta, molto più semplice da consultare per il lettore. Del perché, tuttavia, parleremo un’altra volta, oggi non siamo qui per questo.

Va bene, quindi cosa succede oggi?

Ecco cosa faremo:

  • innanzitutto, installeremo Elixir e tutto quello che serve per iniziare a lavorarci;
  • una volta installato tutto scopriremo Mix, uno dei tool più importanti di Elixir;
  • scopriremo un po’ di comandi aggiuntivi interessanti;
  • vedremo come mettere su un ambiente di lavoro decente in cui scrivere il nostro codice;

Cosa diamine è l’Actor Model, spiegato in poche righe

2

Prefazione (salta pure se vuoi, non è essenziale)

L’idea di questo post/traduzione mi è venuta leggendo un articolo di Brian Storti.

Di tanto in tanto cerco di (ri)avvicinarmi ad Elixir, per poterci mettere le mani in maniera sensata e tirare fuori un po’ di codice con cui divertirmi. Chi mi conosce bene tra l’altro sa che ho sempre avuto il pallino per le spiegazioni semplici. Sono convinto che l’apprendimento non debba essere una cosa noiosa, per quanto possibile, e che la capacità di sintesi è una cosa importante. Stasera, troppo stanco per scrivere del codice, mi sono detto: “ok, magari trovo qualche articolo interessante in giro“.

Mi sono messo così a pensare ai vari talk che ho sentito in giro ultimamente, alle discussioni che leggo sui vari forum/slack/chat e così via. Si parla spesso di Actor Model. Un concetto spesso descritto come “semplicissimo” (e lo è) ma raramente spiegato davvero. Non so dire con precisione perché, anche se una mezza idea ce l’ho: tendiamo a dare un sacco di cose per scontate, quando cerchiamo di spiegarne altre.

Ad ogni modo, del mio metodo di lavoro/studio/scrittura parlerò in un altro post. Torniamo all’articolo dell’ottimo Brian.

Ho trovato la domanda a cui rispondere: che cosa diamine è l’actor model? Il post che ho trovato è secondo su Google. La parte divertente arriva adesso però: cercando pagine in Italiano per “actor model”… non trovo nulla! Anzi, ad essere onesti ho trovato:

  • un link ad un libro su Amazon (in inglese);
  • un altro link ad un libro su Amazon (in inglese);
  • un link ad un account instagram (non riguarda l’actor model, ovviamente, ma un tizio che fa l’attore ed il modello);

Insomma…

Cos’è l’Actor Model (ecco, leggi qui)

Partiamo da un principio semplicissimo. Fino a qualche anno fa le nostre CPU raddoppiavano di potenza senza problemi a ritmo quasi regolare. Adesso le cose sono cambiate e il miglioramento non segue lo stesso trend. Succede una cosa diversa: aumentano il numero dei core. Di conseguenza, per trarre il maggior vantaggio dai nostri software dobbiamo riuscire a scrivere del codice che può essere eseguito su più core. Concurrency, la chiamano.

Il mio nuovo package per Laravel 5.6: Circuit Breaker!

0

Di tanto in tanto mi capita di buttare giù due righe in PHP e scrivere dei package “ispirati” a qualcosa che ho visto a lavoro, o di cui magari ho avuto necessità nella stesura di questo o quel side-project. Qualche giorno fa, a lavoro, mi sono ritrovato a parlare con un collega del Circuit Breaker pattern, di cui si può trovare un’ottima spiegazione qui.

Circuit What?

Niente di complesso, ad essere onesti. Fondamentalmente si tratta di un pattern grazie al quale è possibile, in parole poverissime, “wrappare” una funzione/oggetto in modo tale da poterne monitorare lo “stato di servizio”. Per capirci meglio facciamo un esempio:

  • immaginiamo di avere un’integrazione con un gateway di pagamenti per il nostro store/applicazione;
  • in caso di malfunzionamenti abbiamo un meccanismo di fallback, che ci permette di segnare gli ordini che non possono essere processati se il gateway è giù;

Implementando un circuit breaker monitoriamo l’esito delle chiamate al gateway di pagamento. Se più di X chiamate in un certo periodo T non vanno a buon fine, allora possiamo marcare per un certo lasso di tempo il nostro gateway come “failed” ed usare direttamente il meccanismo di fallback, senza dover aspettare tutte le volte il gateway che, sappiamo, ormai è andato.

Abbiate pazienza, è sabato sera e non ho una gran fantasia.

Interessante! Cosa c’entra con Laravel?

C’entra perché chiunque può sviluppare la propria “versione” di un circuit breaker. Nel mio caso, ho deciso di creare un package per Laravel (dalla 5.6 in poi) che mi permetta di realizzare velocemente una cosa del genere.

Watson Text-to-Speech vs. Google Cloud Text-to-Speech, ecco com’è andata

0

Qualche giorno fa ho pubblicato un articolo dedicato al nuovo servizio di text-to-speech basato su WaveNet offerto da Google. Com’è andata? Una bomba. Ho così deciso di far girare un po’ l’articolo, soprattutto per ricevere dei feedback e capire se c’è un servizio che se la cava meglio.

In tanti mi hanno consigliato di dare uno sguardo a IBM Watson e al mondo che ci gira intorno. Così ho scoperto che anche IBM ha la sua API di Text-to-Speech.

Perché non provarla?

“What You Give Is What You Get” – Costruire una Community – Articoli Atomici ed Interconnessi

0

Ok, vediamo di riprendere in mano questa serie di post dedicata alla costruzione di una community. Oggi continuiamo il discorso che abbiamo iniziato la scorsa volta, sui contenuti. Si è parlato di serie e di come gestirle, oggi parliamo di singoli articoli e del fatto che debbano essere il più possibile atomici ed interconnessi.

Immagine trovata su Hackernoon

Cosa significa?

Partiamo dalle due definizioni dei termini in questione.

  • Atomico: In alcune correnti filosofiche contemporanee, è usato talora con il sign. generico di elementare, non riducibile a parti più semplici.
  • Interconnessione: connessione tra due o più fatti, avvenimenti, fenomeni. Nella tecnica, connessione tra due o più sistemi, che rende possibile l’interazione.

Ho praticamente detto tutto ma vedo di spiegarmi meglio.

Ho provato Google Text-to-Speech (con PHP) ed è una vera bomba

1

Alcuni di voi sanno che circa tre mesi fa ho lanciato un piccolo esperimento / side project, cryptoaud.io. Si tratta di un semplice aggregatore di notizie del mondo cryptocurrency con l’aggiunta di un insieme di integrazioni che si occupano di creare un riassunto della notizia e “leggerla” all’utente usando la sintesi vocale di Amazon Polly.

Il mondo della sintesi vocale mi ha sempre appassionato ed è stato molto piacevole scoprire un servizio come Polly, che fa molto bene il suo lavoro nonostante ci sia ancora tanta ricerca da fare in questo campo.

Poi, nemmeno una settimana fa, durante il mio consueto giro mattutino di lettura delle notizie, un articolo su TheVerge ha catturato la mia attenzioneGoogle ha da poco rilasciato un suo servizio di cloud TTS (text-to-speech). Indoviniamo il nome? Cloud Text-to-Speech.

Such originality, tuttavia non è per il nome che ho deciso di scrivere questo articolo. L’elemento fondamentale che mi ha fatto drizzare le orecchie, infatti, è che a differenza degli altri sistemi in circolazione questo ha un motore, nel cofano, da non sottovalutare: WaveNet, prodotto creato dall’inglese DeepMind.

Dovevo provarlo