Ubuntu: installare la patch italiana di Danganronpa 2

Se sei un utilizzatore di Linux di vecchia data conoscerai la situazione drammatica in cui versava il mondo del gaming sui sistemi open source. Fortunatamente dal 14 Febbraio 2013, con il rilascio di Steam su Ubuntu il supporto al gaming su Linux è cresciuto notevolmente arrivando al giorno d’oggi in cui molti giochi vengono rilasciati fin dal day-one anche su Linux.

Uno dei giochi con il supporto nativo a Linux è proprio Danganronpa 2: Goodbye Despair al quale volevo iniziare a giocare. Benché il gioco sia perfettamente compatibile con Ubuntu 20.04 (🎉) le uniche lingue ad essere supportate sono il Giapponese e l’Inglese (😑).
Sfortunatamente, non conoscendo la lingua del sol levante, ero pronto a giocare il titolo in inglese quando, per puro caso, mi sono imbattuto in una traduzione amatoriale del gioco realizzata dai ragazzi di All-Ice Team.

La patch fa riferimento all’installazione su Windows ma con mio grande piacere ho notato che funziona alla grande anche su Linux. Per cui ho pensato di scrivere due righe anche per chi volesse usufruire del gioco in italiano da Ubuntu.

Ma prima di vedere come applicare la patch italiana per Danganronpa 2 mi presento: sono Lorenzo Millucci e sono un ingegnere del software che ama lavorare con Symfony e a cui piace condividere in questo blog le cose che impara. Non perderti anche il mio canale Telegram in cui ogni martedì parliamo di news e curiosità legate al mondo della tecnologia!

Installazione della patch

L’unico requisito necessario a poter installare la patch è essere in possesso del gioco su Steam. Se ti serve puoi acquistarlo da qui.

ATTENZIONE: Nel momento in cui scrivo la patch è ancora in versione alpha il che significa che potresti incappare in qualche bug e/o errore di traduzione. Inoltre non essendo la versione definitiva saranno tradotti unicamente i testi mentre le immagini e i video rimarranno in inglese.

Fatte queste doverose premesse la prima cosa che devi fare è scaricare la patch direttamente dalla pagina del progetto:

Dopo aver terminato il download della patch devi aprire Steam, fare click destro sul gioco e selezionare la voce Proprietà -> File Locali -> Sfoglia i file locali

Apri la cartella con i file di gioco facendo click destro -> Proprietà -> File Locali -> Sfoglia i file locali

Oppure, se preferisci, puoi aprire la cartella direttamente andando al percorso:

~/.steam/debian-installation/steamapps/common

Una volta che hai aperto la cartella contente i file di gioco rinomina il file dr2_data_keyboard_us.wad in dr2_data_keyboard_us_old.wad in modo da poterlo ripristinare in caso di problemi con la patch. Questo passaggio non è fondamentale ma in caso di problemi con la patch ti permette di ripristinare le impostazioni iniziali senza dover eliminare e riscaricare il gioco.

A questo punto copia il file dr2_data_keyboard_us.wad contenuto nella patch all’interno della cartella del gioco

Copia il file dr2_data_keyboard_us.wad della patch all’interno della cartella di gioco

Fatto ciò non ti resta che avviare il gioco facendo attenzione a selezionare come metodo di controllo Keyboard Mouse

Accertati di selezionare Keyboard Mouse come metodo di controllo

E ora non mi resta che augurarti buon divertimento con Danganronpa 2: Goodbye Despair! 😀️

Goditi il gioco in italiano!

Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!

Generare i report di Lighthouse usando NodeJs

Qualche settimana fa ti ho parlato dell’importanza delle performance (misurate tramite i segnali Core Web Vitals) nel definire la posizione di un sito web all’interno dei risultati di ricerca di Google.

Nell’articolo dicevo che uno degli strumenti principali per l’analisi delle performance di un sito web in sviluppo è proprio Lighthouse che, per ogni pagina del sito, permette di eseguire tutta una serie di test da mobile e da desktop in modo da ottenere istantaneamente un report con le criticità da sistemare.

Poiché fare una scansione completa di un sito web richiede di far girare l’analisi di Lighthouse due volte (mobile e desktop) per ogni pagina i tempi necessari a compiere lo studio possono allungarsi notevolmente. Proprio per evitare di dover fare a mano questo lavoro macchinoso ti spiego come automatizzare il processo utilizzando poche righe di JavaScript.

Ma prima di addentrarci nel codice mi presento: sono Lorenzo Millucci e sono un ingegnere del software che ama lavorare con Symfony e a cui piace condividere in questo blog le cose che impara. Non perderti anche il mio canale Telegram in cui ogni martedì parliamo di news e curiosità legate al mondo della tecnologia!

Creazione del report con JavaScript

La prima cosa da fare per iniziare è chiaramente quella di installare da npm il package di Lighthouse (è richiesta la versione di Node 12 o superiore):

npm install --save lighthouse

Una volta completata l’installazione del pacchetto puoi creare lo script che dovrà prendere in ingresso una lista di URL da analizzare e, per ognuno di essi, salvare il report generato da Lighthouse sia con la simulazione di navigazione da un dispositivo mobile che da uno desktop.

Questo è lo script che mi sono creato:

const fs = require('fs');
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

// L'elenco delle pagine da analizzare
const pages = [
    'https://www.lorenzomillucci.it/',
    'https://www.lorenzomillucci.it/lorenzo-millucci-chi/',
    'https://www.lorenzomillucci.it/2021/01/19/core-web-vitals-cosa-sono-a-cosa-servono-e-come-si-misurano/',
];

// Carica le stesse configurazioni usate da lighthouse web per il test da mobile e da desktop
const desktopConfig = require('lighthouse/lighthouse-core/config/lr-desktop-config.js');
const mobileConfig = require('lighthouse/lighthouse-core/config/lr-mobile-config.js');

(async () => {
  // Avvio di Chrome headless
  const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});

  // Opzioni specifiche per lighthouse
  const options = {
    logLevel: 'silent', 
    output: 'html',
    port: chrome.port
  };

  for (page of pages) {
    console.log('Testing mobile...');
    const runnerResultMobile = await lighthouse(page, options, mobileConfig);
    fs.writeFileSync(`mobile_${new Date().toUTCString()}.html`, runnerResultMobile.report);

    console.log('Testing desktop...');
    const runnerResultDesktop = await lighthouse(page, options, desktopConfig);
    fs.writeFileSync(`desktop_${new Date().toUTCString()}.html`, runnerResultDesktop.report);
  }

  await chrome.kill();
})();

Eseguendo questo script verranno salvati come file HTML i due report completi (performance, PWA, SEO, accessibilità e best practices) che lighthouse avrebbe generato per desktop e mobile per ogni pagina elencata.

I due report HTML generati dallo script

Se avessi la necessità di fare delle analisi più dettagliate e ti servisse avere i risultati del report in formato machine-readable puoi esportare il report in formato CSV o JSON. Per farlo basta cambiare l’opzione output come segue:

  const options = {
    logLevel: 'silent', 
    output: 'csv', // Oppure json
    port: chrome.port
  };

Ottenere solo i punteggi globali di ogni categoria di test

Nelle fasi di sviluppo di una pagina web può essere utile valutare solo l’impatto di ogni singola modifica sul punteggio globale senza la necessità di avere tutti i dati contenuti nel report. Per ottenere gli score assegnati ad ogni categoria puoi accedere direttamente alle seguenti proprietà del report:

console.log("Performances", runnerResultMobile.lhr.categories['performance'].score * 100);
console.log("Accessibilità", runnerResultMobile.lhr.categories['accessibility'].score * 100);
console.log("Best-practices", runnerResultMobile.lhr.categories['best-practices'].score * 100);
console.log("SEO", runnerResultMobile.lhr.categories['seo'].score * 100);
console.log("PWA", runnerResultMobile.lhr.categories['pwa'].score * 100);

Velocizzare l’analisi di Lighthouse

Un altro caso che può succedere in fase di sviluppo di un sito web è quello di avere la necessità di focalizzare l’attenzione solo su una certa tipologia di dati tra quelli contenuti nel report di Lighthouse (es. solo le performance) senza prendere in considerazione tutti gli altri test svolti dallo strumento. In casi come questo può essere utile configurare Lighthouse in modo da limitare la categoria di test effettuati in modo da guadagnare anche un po’ di tempo nel tempo di generazione del report.

Ad esempio, per limitare l’analisi alle sole performance ti basta è modificare l’oggetto options aggiungendo onlyCategories: ['performance'] nel seguente modo:

  const options = {
    logLevel: 'silent', 
    output: 'html', 
    onlyCategories: ['performance'], 
    port: chrome.port
  };

Naturalmente è possibile limitare il report ad una qualunque altra categoria di test o, addirittura, personalizzare il report combinando più categorie. Tutto ciò di cui hai bisogno è modificare opportunamente la chiave onlyCategories.

Conclusioni

Conosci la storia dei due boscaioli che si sfidano in una gara per determinare chi fosse riuscito a tagliare prima un albero? Se non la conosci la trovi qui.

In pratica alla fine della sfida non vince il boscaiolo che d’impegno si era messo a tagliare l’albero senza mai fermarsi ma vince l’altro che nonostante si fosse riposato 10 minuti dopo ogni ora si era preso la briga di affilare l’ascia ad ogni pausa.

Analizzare un sito web con Lighthouse è un po’ come la sfida tra i due boscaioli in cui ci si può buttare a capofitto nel generare a mano i report per ogni pagina oppure ci si può fermare e “affilare l’ascia” creando uno script che esegua tutti i test in successione in una sola volta.

In questo articolo ti ho mostrato come fare a generare esattamente lo stesso report che è possibile ottenere con Lighthouse da Google Chrome. Naturalmente il modulo Node ha molte altre opzioni di cui non ho parlato che ti consentono di generare dei report su misura per il tuo caso specifico. Per saperne di più ti lascio il link diretto alla documentazione ufficiale del modulo.


Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!

Windows 10: come rimuovere l’icona “Riunione Immediata” dalla barra delle applicazioni

Windows 10 è un ottimo sistema operativo ma non sopporto l’idea di Microsoft di riempirlo di ogni sorta di pubblicità ai propri servizi.

“Riunione Immediata” è una funzione che sicuramente sarà molto utile a tutte quelle persone che hanno necessità di avviare una video-chiamata con pochi click ma a me disturba l’anima vedere un’icona indesiderata nella barra delle applicazioni.

Soprattutto perché non ho richiesto io di avere quell’applicazione ma me la sono trovata con gli aggiornamenti di sistema.

La mia reazione alla nuova icona

Ecco perché non appena ho visto la nuova icona nella barra ho subito cercato di capire come rimuoverla.

Ma prima di mostrarti come rimuovere dalla vista l’icona mi presento: sono Lorenzo Millucci e sono un ingegnere del software che ama lavorare con Symfony e a cui piace condividere in questo blog le cose che impara. Iscriviti anche al mio canale Telegram in cui, ogni martedì, commento una notizia curiosa legata al mondo tecnologico!

Come rimuovere l’icona “Riunione Immediata”

Fortunatamente rimuovere l’icona dalla barra delle applicazioni è semplicissimo ed esistono almeno due modi per farlo.

Un primo metodo pressoché istantaneo consiste nel fare click destro sull’icona e selezionare Nascondi dal menù.

Nascondi l’icona con un paio di click

L’altro modo è un po’ più lungo ma ugualmente efficace e prevede i seguenti passaggi:

  • Aprire il pannello con le Impostazioni
  • Selezionare la voce Personalizzazione
  • Selezionare la voce Barra delle applicazioni dal menù di sinistra
  • Selezionare la voce Seleziona le icone da visualizzare sulla barra delle applicazioni
  • Deselezionare Riunione immediata
Andare sul pannello di controllo è un po’ più lungo da fare ma ugualmente efficace

Nel caso in cui voglia riattivare l’icona nella barra delle applicazioni devi seguire la procedura appena descritta e abilitare la voce Riunione immediata.


Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!

Linux: trovare i file più grandi o più piccoli di una certa dimensione

Copertina: trovare i file con dimensione maggiore o minore di una dimensione specificata

Le immagini costituiscono circa il 21% del totale dei dati scaricati per visualizzare una pagina.

Nell’era in cui la velocità di caricamento di un sito è fondamentale il ruolo dell’ottimizzazione delle immagini è sempre più centrale per ottimizzare una pagina web in ottica SEO.

Proprio per questo motivo nei giorni scorsi mi sono trovato a dover cercare tutte le immagini di questo sito che avessero una dimensione eccessiva in modo da poterle comprimere accelerando il caricamento delle pagine.

Se hai mai utilizzato WordPress per creare un blog saprai già che ogni immagine caricata viene salvata all’interno di una cartella con l’anno che al suo interno ne contiene un’altra con il mese (es. /2020/11/myImage.jpg).

Fino a che il numero di immagini è basso si può anche pensare di cercare manualmente i file navigando tutte le cartelle ma dopo anni e anni di file caricati l’idea di passare tutte le cartelle una per una non mi sembrava percorribile. Per questo motivo mi sono messo a cercare se esistesse un modo più furbo di affrontare il problema. Fortunatamente Linux ci viene incontro con un comando da terminale in grado di trovare istantaneamente tutti i file con dimensione maggiore o minore di un peso dato.

Ma prima di mostrarti come fare per trovare tutti i file con una certa dimensione mi presento: sono Lorenzo Millucci e sono un ingegnere del software che ama lavorare con Symfony e a cui piace condividere in questo blog le cose che impara. Iscriviti anche al mio canale Telegram in cui, ogni martedì, commento una notizia curiosa legata al mondo tecnologico!

Trovare tutti i file con dimensione maggiore o minore di un certo valore

Per farlo ti basterà utilizzare un paio di opzioni aggiuntive del comando find.

Ad esempio per trovare tutti i file maggiori di 1Mb all’interno di una cartella (e di tutte le sue sottocartelle) basterà dare il comando:

find . -type f -size +1M

Per specificare la dimensione dei file da cercare puoi passare all’opzione -size le seguenti unità di misura:

  • c per indicare la dimensione in bytes
  • k per indicare la dimensione in Kilobytes
  • M per indicare la dimensione in Megabytes
  • G per indicare la dimensione in Gigabytes

Per esempio, eseguendo il comando sulla cartella con le immagini caricate in questo blog ottengo come risultato:

./2019/06/print_queue.gif
./2020/03/vue3_cover_lm.jpg
./2020/03/IMG_20200402_121709__01.jpg
./2020/05/webpack_performance.jpg
Tutti i file con dimensione maggiore di 1 Mb

NOTA: di default il comando cerca i file includendo anche tutte le sottocartelle. Se vuoi limitare la ricerca alla sola cartella attuale puoi aggiungere al comando l’opzione -maxdepth 1

Se invece avessi voluto trovare tutti i file con dimensione minore di 500Kb avrei dovuto modificare il comando in:

find . -type f -size -500k

Infine se avessi voluto cercare tutti i file compresi tra 500Kb e 1Mb il comando sarebbe stato:

find . -type f -size +500k -size -2M
Tutti i file con dimensione compresa tra 500Kb e 2Mb

Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!

Millewin: estrarre l’elenco degli ultimi pazienti visitati

Logo: millewin - estrarre l'elenco degli ultimi pazienti visitati

Visto il recente aumento di casi di COVID-19 può tornare utile avere un elenco di tutti i pazienti incontrati nello studio in un certo arco di tempo.

Per farlo basta eseguire una query da Millewutilità nel seguente modo:

  1. Aprire Milleutilità
  2. Aprire il menù Statistiche e selezionare Impostazione Estrazioni SQL Personali
  3. Aggiungere il codice SQL
    Premendo il pulsante Nuovo creare una nuova estrazione chiamata Ultimi contatti e incollare nel campo Comando SQL il codice riportato sotto. Una volta fatto salvare il tutto con il bottone Salva
  4. Eseguire l’estrazione
    Premere il tasto Applica per eseguire l’estrazione. Il programma chiederà su quali dati eseguire l’estrazione. In questo passo è importante selezionare l’intervallo di date di interesse su cui eseguire la query. Una volta deciso, proseguire con il comando Avanti.
    Si aprirà una nuova schermata da cui è possibile eseguire l’estrazione mediante il pulsante Esegui posto in alto a destra.
  5. Salvare i dati in formato Excel
    A seconda dell’intervallo di date selezionato e del numero di accessi allo studio medico il programma potrebbe impiegare più o meno tempo a fornire l’elenco di tutti i pazienti incontrati. Una volta che il processo di estrazione è terminato è possibile esportare i dati in formato Excel mediante il pulsante Salva in alto a sinistra.

Di seguito è riportato il codice da inserire nel campo Comando SQL descritto al punto 3:

select
	data_contatto,
	ora_contatto,
	cognome,
	nome,
	codfiscale,
	datanasc,
	tipo
from
	v_contatti
order by
	data_contatto,
	ora_contatto

BONUS: estrarre i pazienti con più contatti in un dato periodo

Facendo delle piccole modifiche alla query riportata poco sopra è possibile ripetere lo stesso procedimento per ottenere il numero di volte che un paziente di è presentato allo studio in un determinato intervallo di tempo. Per farlo la query da eseguire è la seguente:

select
	cognome,
	nome,
	codfiscale,
	tipo,
	count(*) as totale_contatti
from
	v_contatti
group by
	cognome, 
	nome,
	codfiscale,
	tipo
order by
	cognome,
	nome

Se questo post ti è stato utile puoi farmelo sapere lasciando un commento qui sotto oppure scrivendomi direttamente a t.me/lorenzomillucci.
Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!

Software engineer presso Slope.
Appassionato di videogame, nel tempo libero mi diletto a scrivere su questo blog.
Per non perderti nemmeno un post puoi seguirmi su Telegram!