Video Autoplay su iPhone e dispositivi apple non funziona? Ecco uno snippet che ti aiuterà.

Il problema è dovuto al fatto che iPhone e dispositivi Apple in generale hanno una politica stringente di risparmio energetico (visto chissà cosa combinano già in background), pertanto ignorano beatamente il tuo “autoplay” sul tag video HTML5.

Come aggirare il problema?
Bisogna “agganciarsi” ad un’azione dell’utente per far partire il video, altrimenti non c’è trippa per felini.

Come si fa? Via Javascript ovviamente, ecco uno snippet:

jQuery(document).ready(function(){
  // definisco l'attributo playing per capire se il video sta già andando o no
  Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
      get: function () {
          return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
      }
  });
  // alle azioni quali click, touchstart e scroll faccio partire il video se non sta girando
  jQuery('body').on('click touchstart scroll', function () {
      document.querySelectorAll('video').foreach( function(videoElement){
        if (videoElement.playing) {
            // video is already playing so do nothing
        }
        else {
            // video is not playing
            // so play video now
            videoElement.play();
        }      
      });
  });  
});

Diciamoci un poco di cose:

  1. La genialata di definire un attributo “playing” non è mia, ma di tale Shakti Singh Cheema
  2. Questo snippet fa partire tutti i video della pagina
  3. Ho mischiato javascript puro e jquery, ma tutto si può scrivere in entrambi i modi

Sentiti libero di fare del codice quello che vuoi e di segnalare eventuali problemi nei commenti.

Spero di essere stato utile.

Quale Linguaggio di Programmazione Imparare?

Imparare un linguaggio di programmazione può aprire un mondo di opportunità, sia che tu stia cercando di entrare nel campo della tecnologia per la prima volta o che tu stia cercando di migliorare le tue competenze esistenti.

Ma con così tanti linguaggi disponibili, quale dovresti imparare? In questo articolo, esploreremo alcuni dei linguaggi di programmazione più popolari e le loro applicazioni per aiutarti a prendere una decisione informata.

Molto dipende anche da qual è la tua aspirazione; intraprendere una carriera da sistemista o devOps potrebbe farti virare su scelte completamente differenti rispetto a quelle che faresti se volessi diventare uno sviluppatore mobile o un web developer. Anche il sistema operativo nel quale dovranno essere usate le tue applicazioni cambia, ovviamente, in maniera significativa il peso specifico dei linguaggi di sviluppo.

Questo articolo è indirizzato verso i principianti, ma offre spunto anche a quanti partono da altri settori e volessero chiarirsi le idee su altri linguaggi di programmazione.

Andremo ad analizzare Python, Javascript, C# e Java.

Python: Versatilità e Facilità di Uso

Python è uno dei linguaggi di programmazione più popolari e versatili del mondo. È noto per la sua sintassi chiara e leggibile, che lo rende una scelta eccellente per i principianti.

Applicazioni:

  • Sviluppo Web: Framework come Django e Flask.
  • Data Science: Librerie come Pandas, NumPy e scikit-learn.
  • Automazione e Scripting: Perfetto per automatizzare compiti ripetitivi.
  • Machine Learning e Intelligenza Artificiale: Supporto per librerie come TensorFlow e PyTorch.
PROCONTRO
Facile da imparare e usare.Non è il più veloce in termini di prestazioni.
Grande comunità di supporto.Non è sempre la scelta migliore per lo sviluppo mobile.
Ampia gamma di applicazioni.

JavaScript: Il Re del Web

JavaScript è il linguaggio di programmazione del web. È essenziale per lo sviluppo front-end e sta diventando sempre più importante anche per il back-end grazie a Node.js.

Applicazioni:

  • Sviluppo Web: Front-end (React, Angular, Vue) e back-end (Node.js).
  • Sviluppo Mobile: Framework come React Native.
  • Sviluppo di Giochi: Motori di gioco come Phaser.
PROCONTRO
Essenziale per lo sviluppo web moderno.Può essere difficile da debugare a causa della sua natura asincrona.
Grande ecosistema di librerie e framework.Problemi di sicurezza se non gestito correttamente.
Alta domanda di sviluppatori JavaScript.Difficoltà di apprendimento perché sia back-end che client-side.

Java: La Scelta dell’Impresa

Java è un linguaggio di programmazione robusto e sicuro, molto popolare nelle grandi imprese e per lo sviluppo di applicazioni Android.

Applicazioni:

  • Applicazioni Enterprise: Utilizzato da molte grandi aziende.
  • Sviluppo Android: Il linguaggio principale per lo sviluppo di app Android.
  • Sistemi Backend: Molti server e applicazioni backend sono scritti in Java.
PROCONTRO
Altamente scalabile.Curva di apprendimento ripida.
Forte gestione della memoria.Più verboso di altri linguaggi.
Alta domanda nelle grandi imprese.Necessita di strumenti più “pesanti” per essere sviluppato.

C#: La Potenza di Microsoft

C# è un linguaggio di programmazione sviluppato da Microsoft, ideale per lo sviluppo di applicazioni Windows e giochi con il motore Unity.

Applicazioni:

  • Sviluppo di Applicazioni Windows: Utilizzato con il framework .NET.
  • Sviluppo di Giochi: Uno dei principali linguaggi per lo sviluppo con Unity.
  • Sviluppo Web: Utilizzato con ASP.NET per creare applicazioni web.
PROCONTRO
Ottima integrazione con i prodotti Microsoft.Principalmente limitato all’ecosistema Microsoft.
Forte comunità di sviluppatori.Meno popolare al di fuori del mondo Windows.
Ideale per lo sviluppo di giochi.

La scelta del linguaggio di programmazione da imparare dipende dai tuoi obiettivi e interessi specifici. Se sei un principiante, Python è una scelta eccellente per la sua facilità d’uso e versatilità. Se sei interessato allo sviluppo web, JavaScript è indispensabile. Per chi mira a entrare nel mondo aziendale, Java è una scelta solida, mentre C# è ideale per chi è interessato allo sviluppo di applicazioni Windows e giochi.

Se dovessi dare un consiglio universalmente valido io partirei da Javascript, che con NodeJS, è diventato un linguaggio di programmazione universale e molto potente.

Qualunque cosa andrai imparare ti sarà utile, comincia subito 😀

Ho chiesto a ChatGPT di fornirmi dei dati circa le curve di apprendimento di questi linguaggi, ma questo è un altro articolo.
A presto.

Introduzione alla CI/CD con GitHub: Possibilità, Limiti e Costi

Nel mondo dello sviluppo software moderno, l’efficienza e l’affidabilità sono essenziali. Una delle pratiche chiave per raggiungere questi obiettivi è l’adozione di CI/CD (Continuous Integration/Continuous Deployment). Vediamo insieme cosa significa, come funziona su GitHub e quali sono i costi e i limiti da considerare.

1. Cosa è una CI/CD e perché è importante usarla

Continuous Integration (CI) è la pratica di automatizzare l’integrazione del codice che sviluppatori diversi stanno scrivendo. Ogni modifica viene testata automaticamente, assicurando che nuove aggiunte non rompano il codice esistente.

Continuous Deployment (CD), invece, automatizza il processo di rilascio delle modifiche in produzione, riducendo il tempo di consegna del software e migliorando l’affidabilità grazie a test e verifiche continue.

Perché usarla?

  • Qualità del Codice: Identificazione rapida di bug e problemi.
  • Velocità: Riduzione dei tempi di rilascio.
  • Affidabilità: Processi ripetibili e verificati automaticamente.
  • Feedback Rapido: Feedback immediato sugli effetti delle modifiche.

2. Come funziona la CI/CD con GitHub

GitHub Actions è la soluzione di GitHub per implementare CI/CD. Consente di automatizzare, personalizzare e eseguire i workflow di sviluppo software direttamente nel repository GitHub. Ecco come funziona:

  • Workflow: Un insieme di comandi definiti in un file YAML che descrive cosa deve succedere quando avviene un evento specifico (es. push, pull request).
  • Action: Ogni step del workflow è rappresentato da un’azione. GitHub offre molte azioni predefinite, ma è anche possibile creare azioni personalizzate.
  • Eventi: Gli eventi che scatenano il workflow, come un push su un branch specifico o l’apertura di una pull request.

3. Altre info di contesto (workflow, azioni con contesto ed espressioni)

  • Workflow: Scritti in YAML e memorizzati nella directory .github/workflows/ del repository. Un workflow può contenere più job che vengono eseguiti in parallelo o in sequenza.
  • Azioni con Contesto: Ogni azione può accedere al contesto delle informazioni del repository, dell’evento scatenante e altro ancora.
  • Espressioni: Utilizzate per eseguire condizioni logiche all’interno dei workflow, come ${{ github.event_name == 'push' }} per eseguire un’azione solo su eventi di push.

4. Creare una CI/CD per un progetto: workflow per staging e produzione

Per creare una pipeline CI/CD che esegue diversi workflow su branch differenti, segui questi passi:

  1. Creare il file YAML del workflow:
    • Crea un file chiamato .github/workflows/staging.yml per il workflow di staging.
    • Crea un file chiamato .github/workflows/production.yml per il workflow di produzione.
  2. Configurare il workflow di staging:
    Ecco un esempio di un file YAML di staging.
name: CI/CD Staging

on:
  push:
    branches:
      - staging

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test
      - name: Deploy to staging
        run: echo "Deploying to staging server..."

  1. Configurare il workflow di produzione:
    Qui vediamo un esempio dello YAML di produzione
name: CI/CD Production

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test
      - name: Deploy to production
        run: echo "Deploying to production server..."

5. Costi e Limiti

GitHub Actions è gratuito per i repository pubblici, ma ha limiti di utilizzo per i repository privati. Ecco una panoramica dei costi e dei limiti:

  • Repository Pubblici: Gratuito con limiti di runtime mensili.
  • Repository Privati: Piani gratuiti con limiti di runtime, piani a pagamento disponibili per aumentare i limiti.
  • Limiti di utilizzo: 2000 minuti di runtime gratuiti al mese per i repository privati sul piano gratuito. Oltre questo, si pagano i minuti extra.

Implementare una CI/CD con GitHub Actions offre numerosi vantaggi in termini di qualità del codice, velocità di rilascio e affidabilità. È una pratica che, sebbene richieda un investimento iniziale in termini di tempo e risorse, ripaga ampiamente migliorando l’efficienza del team di sviluppo. Con una configurazione appropriata, è possibile automatizzare flussi di lavoro complessi e garantire rilasci sicuri e tempestivi.