Menu

Come ottenere la miglior qualità da un microfono a clip per computer

Cosa ho imparato oggi: come ottenere la miglior qualità da un microfono a clip per computer.

Nelle ultime settimane mi è capitato di usare Skype più del solito e per chiamate molto brevi. Solitamente per l’attività di consulenza mi affido a un microfono USB a condensatore professionale (es. il Rode Procaster) ma per chiamate brevi, dato l’ampio ingombro, preferisco usare un semplice lavalier a clip collegato all’ingresso della scheda audio. La maggior parte dei questi microfoni hanno delle performance piuttosto scarse anche a causa delle interferenze elettriche generate dai laptop. Dopo varie prove ecco la configurazione che utilizzo per ottenere un risultato decente per veloci chiamate Skype.

La procedura è molto semplice:

  1. aprire le impostazioni Audio del Pannello di Controllo;
  2. nella scheda Registrazione fare doppio click sul microfono che si sta utilizzando;
  3. nella scheda Livelli, impostare la Preamplificazione al massimo e ridurre il livello del Microfono quanto basta per mantenere i picchi che si raggiungono parlando normalmente intorno ai -9 / -11 dB;
  4. nella scheda Miglioramenti abilitare la Modalità immediata e abilitare Soppressione dei disturbi lasciare il resto deselezionato.

Questa configurazione funziona meglio rispetto, ad esempio, avere la preamplificazione a zero e un livello del microfono alto perchè solitamente il preamplificatore è più efficiente nell’amplificare segnali deboli senza introdurre troppo rumore di fondo.

Continua

[Update] Come ottenere il 100 / 100 di PageSpeed

Cosa ho imparato oggi: un semplice “trucco” per ottenere il 100 / 100 (mobile e desktop) sul Google PageSpeed.

Oltre a seguire le solite indicazioni (caching, minifying, compressione), ho spostato tutti i riferimenti ai CSS esterni DOPO il tag </HTML> e ho usato il tool Critical Path CSS Generator di sitelocity per generare un estratto di codice CSS per i soli elementi strutturali da inserire in un tag STYLE nell’HEAD.

Visto che in giro ci sono tanti “geni” che pensano sempre di saperne di più ho dovuto aggiornare questo post.

  1. La pagina ottimizzata è “semplice”. Si tratta di una pagina basata sul Jumbotron di Bootstrap 4 beta 2. Di default il PageSpeed mi dava un valore intorno ai 50 (su mobile), cosa che ho ritenuto folle così mi sono messo a studiare per migliorarlo.
  2. Ho fatto tutte le ottimizzazioni suggerite da Google, inclusa quella di mettere i riferimenti ai CSS dopo l'</HTML> (Si, hai letto giusto, e si lo dice Google nella documentazione italiana del PageSpeed). Perchè ho usato questa soluzione invece di un late loading tramite Javascript? Perchè è un progetto messo in piedi in mezza giornata e non avevo voglia di perdere altro tempo (vedi sotto).
  3. Dopo aver fatto tutto questo, ottenevo comunque intorno al 70 / 100 perchè l’above the fold non veniva renderizzato senza appoggiarsi al CSS esterno. Inoltre il rendering era “progressivo”, la pagina prima appariva senza stile e dopo qualche istante veniva renderizzata correttamente (cosa alquanto fastidiosa). Cercando ancora un po’ ho trovato il tool Critical Path CSS Generator di sitelocity per generare un estratto di codice CSS per i soli elementi strutturali da inserire in un tag STYLE nell’HEAD. L’ho implementato e, oltre ad aver risolto il problema relativo al rendering progressivo, ho raggiunto il 100 / 100.

Con questo non sto dicendo che il PageSpeed sia una metrica su cui basarsi nelle decisioni di business, ne che uno ci si debba ammattire, ne che sia facile da ottimizzare su ogni sito. Il mio obiettivo iniziale non era ottenere 100 / 100 ma di migliorare un po’ l’usabilità della pagina e magari far felice l’algoritmo di Google (non mi aspettavo di certo di ottenere questo risultato). Dall’altro canto, se uno sviluppa un progetto da zero, la strategia migliore dovrebbe essere quella di partire tenendo a mente il PageSpeed ed evitando di introdurre del codice (anche solo dal punto di vista di come lo si sviluppa) che agli occhi di Google penalizza l’esperienza utente.

Post Scriptum

Per tutti coloro che la menano con il discorso che un codice HTML così non è valido (etc. etc.), per prima cosa non sono io ad averlo “inventato”, ho seguito l’esempio offerto da Google, in seconda istanza, c’è sempre la soluzione Javascript / No Script. Per cui:

<noscript data-css="true">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link rel="stylesheet" href="/css/narrow-jumbotron.min.1.css">
<link rel="stylesheet" href="/font/css/open-iconic-bootstrap.min.1.css">
</noscript>
...
<script>
document.addEventListener("DOMContentLoaded", function(event) {
 document.getElementsByTagName('head')[0].insertAdjacentHTML('beforeend', document.querySelector("noscript[data-css]").innerText);
});
</script>

Post Post Scriptum

La cosa più importante del “trucco” alla base di questo articolo era l’utilizzo del tool di sitelocity per generare i CSS strutturali da integrare all’interno dell’HTML ma chissà com’è che molti si sono fissati con il discorso dell’HTML. Giuro, non capisco…

Quando incontro qualcosa che viola le mie aspettative positivamente cerco di capire per quale motivo è successo. Negli ultimi anni, invece, continuo a vedere gente che fa di tutto per cercare di abbattere in un modo o nell’altro chi ha mostrato loro che esistono delle alternative al loro modo di pensare.

La prossima volta che vedi qualcosa online che ti fa scattare l’invidia, invece di chiederti “come faccio a sputtanarne l’autore”, prova a domandarti “come diavolo ci è riuscito” e “come posso farlo anche io”. Ti assicuro, ciò ti darà molta più soddisfazione e crescita nel lungo periodo rispetto aver provato a sbugiardare il primo che ti capita a tiro.

Continua

Come collegarsi a una rete WiFi dal prompt di Windows

Cosa ho imparato oggi: come collegarsi a una rete WiFi dal prompt di Windows.

REM List profiles
netsh wlan show profile

REM Connect
netsh wlan connect name="ez Share"

Continua

Eager loading in Laravel selezionando specifici campi

Cosa ho imparato oggi: effettuare un eager loading di una relazione in Eloquent selezionando solo specifici campi.

Post::with(['relationship' => function ($query) {
    $query->select('id', 'foreign_key', 'field1', 'field2');
}]);

E’ necessario includere sia la chiave locale (solitamente id) che la foreign_key (es. user_id) per permettere ad Eloquent di collegare i record tra le varie tabelle.

Continua

Come generare un PreSignedUrl in Amazon S3

Cosa ho imparato oggi: come generare un PreSignedUrl in Amazon S3 che forza il download di un file.

Fonti:

$client = S3Client::factory([
    'credentials' => [
        'key'    => config('filesystems.disks.s3.key'),
        'secret' => config('filesystems.disks.s3.secret'),
    ],
    'version' => '2006-03-01',
    'region' => config('filesystems.disks.s3.region'),
]);

$cmd = $client->getCommand('GetObject', [
    'Bucket' => config('filesystems.disks.s3.bucket'),
    'Key'    => 'folder/file.pdf',
    'ResponseContentDisposition' => 'attachment; filename="FileName.pdf"',
]);
$request = $client->createPresignedRequest($cmd, '+10 minutes');
$url = (string) $request->getUri();
print($url);

Continua