E chissà se qualcuno leggerà, visto che i blog sono morti, e i feed RSS non sono più quelli di una volta.
Che cosa mi ha spinto fuori dal sarcofago? Una frase letta oggi in un articolo a proposito di valutazioni di fine anno e obiettivi:
Non guardare soltanto all’anno passato, guarda dov’eri 10 anni fa”.
Dieci anni fa scrivevo decisamente più spesso sul blog, avevo appena finito il mio secondo anno di partita IVA, con ben 11 clienti all’attivo. La situazione è cambiata così drasticamente che faccio fatica a capacitarmene:
Se potessi dare un consiglio al “giovane” me stesso, sarebbe quello di fidarmi di più del mio istinto. Ogni cambiamento presenta rischi e richiede sforzi, ma una soluzione si trova in un modo o nell’altro. Farsi paralizzare dalla paura non porta da nessuna parte.
Sul piano personale non c’è molto da dire. Sempre il solito orso, un po’ più tatuato.
Dieci anni fa non avrei mai pensato di essere così attivo. La scimmia di correre non se n’è ancora andata (oltre 1300 km nel 2019), e da quando vivo a Berlino mi è tornata la voglia di uscire in bicicletta per ore. Negli ultimi mesi ho pure aggiunto un po’ di yoga per combattere l’età che avanza, e ogni anno dedico religiosamente una settimana all’escursionismo nelle Alpi (ultimamente Val Gardena).
Ho praticamente abbandonato la fotografia. Ho ancora un po’ di materiale, ma non ho più lo stimolo di usarlo, e soprattutto di viaggiare con una valigia dedicata. La maggior parte delle volte uso il cellulare, o una compatta.
Il mio coinvolgimento in Mozilla Italia è decisamente più limitato rispetto a un tempo. A questo punto mi limito a dare una mano con le attività di traduzione, dove Sara fa un lavoro di coordinazione magistrale, e raramente visito il forum.
Questi giorni scrivo e parlo praticamente solo in inglese, e sto cercando di imparare il tedesco. Chissà che non mi venga voglia di tenere questo blog un po’ aggiornato, non fosse altro per ricordarsi come si scrive in italiano.
]]>Dal punto di vista personale, è stato incredibile vedere la positività che ha circondato questo lancio, sia all’interno dell’azienda che all’esterno. Tante persone vogliono vedere Mozilla fallire, chissà mai perché, e sono state fatte tante scommesse, primo su tutti il passaggio obbligato a WebExtensions per le estensioni. È un dato di fatto: se stravolgi il modo di lavorare di alcune persone, si lamenteranno, e la loro voce sarà sempre più alta di chi invece si trova a proprio agio con il nuovo browser. Eppure, considero quella scommessa vinta (non ne sarei stato così sicuro un anno fa).
Confesso di essere anche positivamente sorpreso dalla stabilità del browser, visto il numero impressionante di modifiche: a 10 giorni dall’uscita non c’è stato bisogno di una dot release (57.0.1). Forse ha aiutato l’aumento esponenziale di utenti nella versione Beta e Nightly interessati a provare Quantum in anteprima.
Questi sembrano essere i principali problemi al momento:
Primo punto: che patente vi serve? Ce ne sono due: il Modello Ginevra 1949 (validità 1 anno) e il Modello Vienna 1968 (validità 3 anni). Per gli Stati Uniti varia da stato a stato: in alcuni basta la patente italiana, ma tanto vale mettersi al sicuro e fare quella con validità di un anno. Alcune agenzie di noleggio auto vi chiederanno comunque la patente internazionale.
Materiale da preparare prima di recarsi in motorizzazione:
I bollettini prestampati per i due versamenti sono disponibili negli uffici postali.
Il modello è stata la parte più complicata:
Ulteriori note sulle informazioni trovate online:
Allo sportello vi consegneranno un riferimento per il ritiro del documento e vi indicheranno i tempi necessari (una settimana a Brescia).
Ultimo fondamentale disclaimer: se leggete tra qualche mese, controllate sul sito della direzione generale di competenza che importi e moduli siano ancora validi. Ad esempio, ecco la pagina del DGT del Nord Ovest.
]]>Inevitabilmente la mia esperienza in materia è limitata alla zona tra Milano e Verona:
A differenza di altre città europee, atterrare a Charles de Gaulles (CDG) o Orly (ORY) non fa molta differenza, sono entrambi ben serviti dai mezzi e relativamente vicini alla città.
Siete scesi dall’aereo e dovete raggiungere la città. Come fare?
Discorso biglietti: per entrare in città servono biglietti da 5 zone (sono in comune tra treno e metro), per viaggiare in città bastano quelli da 3 zone. All’entrata di ogni metropolitana ci sono i terminali per acquistare i biglietti, cercate sempre di acquistare i carnet da più biglietti (più convenienti), non i biglietti singoli.
Un’altra opzione, specialmente se avete in programma di usare molto i mezzi, è quella di acquistare i biglietti Paris Visit, anche online (ad esempio li ho acquistati su questo sito). Fate i vostri conti in base al programma.
Consigli in ordine sparso:
Il mio consiglio personale, a meno che abbiate intenzione di visitare un solo museo, è quello di acquistare il Museum Pass. A differenza del Paris Visit, è praticamente sempre più conveniente rispetto ai biglietti singoli.
Cosa visitare? A voi la scelta:
4 giorni sono l’ideale per riuscire a infilare tutte le visite nel programma.
Parigi è cara, mettetevi il cuore in pace. Per colazione tenete conto che spesso i bar aprono tardi (dopo le 7.30), e quasi mai sono aperti la domenica.
Il consiglio è di cercare un bar dove hanno il menu petit dejeuner: con 9/10 € di solito vi danno una bevanda calda (caffé latte, tè o cioccolata), croissant, baguette con burro/marmellata, succo d’arancia. Un cappuccino può tranquillamente costare 5/6 €, meglio berlo quando tornate a casa. In zona Opéra conosco il Café de l’Opéra, oppure poco più in là ce n’è uno all’incrocio tra Rue la Fayette e Rue du Faubourg Montmartre (di fronte a “Au Général La fayette”). L’alternativa è cercare una pasticceria (boulangerie) che faccia anche il caffè (sembrano essere aumentate di recente).
Un ristorante caratteristico a prezzo molto economico per gli standard parigini è Le Bouillon Chartier: è sempre aperto (dalle 11.30 fino alle 24), e molto frequentato. In zona Grand Boulevards c’è solo l’imbarazzo della scelta per quanto riguarda i ristoranti. Evitate la pizza, a meno che non riusciate a vederne una ordinata da altri clienti prima di entrare nel ristorante
]]>Vivaldi è un progetto interessante e coraggioso, per cui sono davvero curioso di vedere se avrà successo, al contrario di Brave (per quanto rispetto abbia per Brendan): non credo che il loro modello di business – sostituire pubblicità brutte, sporche e cattive con le proprie – sia eticamente apprezzabile. Personalmente ho anche qualche dubbio sulla legalità dell’approccio – la tua pubblicità viene visualizzata tra i contenuti del mio sito, e non è la pubblicità che io ho scelto di mostrare, mi stai privando di un ritorno economico e stai guadagnando in qualche modo dalla visualizzazione dei miei contenuti – ma visto che nessuno ha ancora fatto causa ad AdBlock Plus, immagino non sia un problema così facile da definire.
E leggo oggi:
A group of the biggest US newspaper publishers — including Dow Jones, The Washington Post, and The New York Times Co. — have cosigned a cease and desist letter (read it in full below) sent to the former Mozilla CEO’s new browser company.
Mi chiedo che bisogno ci fosse di buttare in mezzo Mozilla nel titolo, ma tant’è.
]]>Primo momento di smarrimento: per aprire il .dmg è obbligatorio accettare un accordo di licenza (EULA). Francamente non ricordo l’ultima volta che sia successo per un browser. Firefox, ad esempio, ha about:rights, ma si tratta di una barra informativa visualizzata al primo avvio e non impedisce all’utente di utilizzare il software.
Siccome l’EULA non è lunghissima, decido di leggerla. Ed ecco il secondo momento di smarrimento:
Without limiting the foregoing, you are neither allowed to (a) adapt, alter, translate, embed into any other product or otherwise create derivative works of, or otherwise modify the Software ; (b) separate the component programs of the Software for use on different computers; (c) reverse engineer, decompile, disassemble or otherwise attempt to derive the source code for the Software, except as permitted by applicable law; or (d) remove, alter or obscure any proprietary notices on the Software, or the applicable documentation therefore.
Uhm, OK. Poco sopra dicono che il browser è Open Source (EDIT: vedi commenti, in realtà dicono che Vivaldi utilizza codice Open Source di altri progetti, ma NON è Open Source), andiamo a cercare il codice: niente GitHub o link a VCS (male), c’è un link per scaricare un malloppo di quasi 600 MB, e non è nemmeno la versione che ho installato (1.0.303 vs 1.0.435).
Poi subentra la deformazione professionale: qualche stringa in inglese qua e là nelle preferenze, inconsistenze e piccoli errori (es. “Cerca Bing” invece di “Cerca con/in Bing” nella barra di ricerca), qualche decisione non condivisibile (“trasferimenti”, “dati riservati”), ma tutto sommato al di sopra delle mie aspettative per un browser appena nato.
Ho anche provato a cercare i file della localizzazione all’interno del sorgente (superficialmente), ma non sono riuscito a trovare nulla.
La prima impressione? La quantità di opzioni è devastante. Ricorda molto i primi tempi di Firefox, dove tutto era personalizzabile, perfino all’eccesso.
Vivaldi è un progetto interessante e coraggioso, per cui sono davvero curioso di vedere se avrà successo, al contrario di Brave (per quanto rispetto abbia per Brendan): non credo che il loro modello di business – sostituire pubblicità brutte, sporche e cattive con le proprie – sia eticamente apprezzabile. Personalmente ho anche qualche dubbio sulla legalità dell’approccio – la tua pubblicità viene visualizzata tra i contenuti del mio sito, e non è la pubblicità che io ho scelto di mostrare, mi stai privando di un ritorno economico e stai guadagnando in qualche modo dalla visualizzazione dei miei contenuti – ma visto che nessuno ha ancora fatto causa ad AdBlock Plus, immagino non sia un problema così facile da definire.
]]>Visto il tipo di lavoro che faccio (sedentario) devo fare attività fisica, e la corsa rappresenta la soluzione ideale in termini di tempi (1-2 ore al massimo) e forma (esci all’aperto, staccati dalla tecnologia, libera la testa).
Dal mio ultimo post sull’argomento sono anche riuscito a togliermi qualche soddisfazione.
Mi sono reso conto di aver raggiunto un punto di stasi a inizio 2016, in cui faticavo a raggiungere 10 km di corsa, per cui ho iniziato a seguire un piano di allenamento su Strava per la mezza maratona per darmi uno stimolo. L’obiettivo è di correre la distanza sotto le 2 ore, poi magari penserò anche a iscrivermi a qualche gara (se riesco a decifrare il delirio tutto italiano su certificati agonistici, iscrizione ad associazioni sportive, ecc.). Il record attuale in allenamento è 2:02:06.
Ho anche avuto la fortuna di correre in giro per il mondo durante le trasferte di lavoro:
Ho anche fatto le mie prime ripetute. Meglio non aggiungere commenti su questo strumento del demonio
]]>Che cos’è “Let’s Encrypt”: un’autorità di certificazione indipendente e aperta che permette al proprietario di un sito web di ottenere gratuitamente dei certificati. Per ulteriori dettagli consiglio la lettura del post inaugurale del blog.
Veniamo al dunque: come ottenere un certificato per il dominio che ospita questo blog e configurare nginx per utilizzarlo.
Per prima cosa bisogna clonare il repository (non esiste ancora un pacchetto per Ubuntu):
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Come spiegato nella documentazione: letsencrypt-auto
è un wrapper che si occupa di installare le dipendenze e creare un ambiente virtuale per Python, e il plugin per nginx è ancora altamente sperimentale (al contrario di Apache).
Nel mio caso voglio:
Questo è il contenuto del file di configurazione per evitare una linea di comando infinita (modificare l’indirizzo email)
# Use a 4096 bit RSA key instead of 2048 rsa-key-size = 4096 email = YOUREMAIL@EXAMPLE.COM # Standalone authenticator on port 443 authenticator = standalone standalone-supported-challenges = tls-sni-01
E questo il comando da lanciare (modificare il dominio e il percorso al file di configurazione)
./letsencrypt-auto certonly --config /root/cli.ini -d EXAMPLE.COM
La prima volta verrà chiesto di accettare le condizioni di servizio. Dopo pochi istanti il certificato verrà salvato in una sottocartella di /etc/letsencrypt/live/
.
A questo punto bisogna aggiornare la configurazione del dominio in nginx. Personalmente ho utilizzato il generatore messo a disposizione da Mozilla, modificando
ssl_dhparam /etc/nginx/dhparam.pem; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
E rimuovendo la linea ssl_session_tickets off;
(non compatibile con la mia versione di nginx).
Per utilizzare questa configurazione, la prima volta bisogna generare una chiave Diffie-Hellman:
cd /etc/nginx openssl dhparam -out dhparam.pem 2048
Se riuscite a leggere questo post, significa che non è esploso nulla.
]]>La prova è semplice: prendi una VM con risorse limitate (1 core, 2GB di RAM), installaci sopra WordPress (per la precisione un backup di questo blog), e prova a vedere come gira.
$ siege -c 100 -r 10 -b http://localvm/blog Transactions: 2000 hits Availability: 100.00 % Elapsed time: 3.24 secs Data transferred: 14.23 MB Response time: 0.16 secs Transaction rate: 617.28 trans/sec Throughput: 4.39 MB/sec Concurrency: 96.03 Successful transactions: 2000 Failed transactions: 0 Longest transaction: 0.69 Shortest transaction: 0.00
Poi mi è venuto in mente di provare a disattivare WP Super Cache.
$ siege -c 100 -r 10 -b http://localvm/blog Transactions: 2000 hits Availability: 100.00 % Elapsed time: 138.59 secs Data transferred: 14.15 MB Response time: 6.61 secs Transaction rate: 14.43 trans/sec Throughput: 0.10 MB/sec Concurrency: 95.39 Successful transactions: 2000 Failed transactions: 0 Longest transaction: 14.90 Shortest transaction: 0.00
Mentre nel primo caso il load era intorno a 0.2, nel secondo ha raggiunto piuttosto rapidamente 5. Morale della favola: utilizzate un plugin per la cache, c’è l’imbarazzo della scelta.
]]>Da quando ho iniziato a correre la fascia è sempre stata un punto dolente, specialmente durante i mesi estivi: durante l’inverno l’intimo funzionale contribuisce a tenerla ferma, in estate “saltella” insieme a te. Il risultato sono dolorose abrasioni sul torace, specialmente nella zona centrale in cui si concentra il peso del sensore. In parte avevo risolto il problema passando dalla fascia originale Garmin Premium a una della Polar (il collegamento del sensore è uguale, per cui è sufficiente trasferire il sensore), ma il fastidio rimaneva. Anche quando viaggi è sempre un oggetto in più da portarsi appresso, a meno di rinunciare ai dati del cardio.
Tornando al Forerunner 225: ormai lo sto utilizzando da quattro mesi e ne sono veramente soddisfatto. La velocità con cui allinea i satelliti è favolosa rispetto al precedente, niente più “pinza” per scaricare i dati o caricarlo (credo sia l’interfaccia più assurda mai creata), contapassi incluso. Ottenere buoni risultati dal sensore ottico è stato un po’ più complicato, per cui ecco qualche suggerimento banale ma pratico se riscontri letture ballerine:
Nel mio caso ho optato per tenerlo interno sul braccio destro: i pulsanti sono orientati verso il gomito, meno rischi di premerli muovendo la mano, e lo sento meno strano rispetto al braccio sinistro.
Ecco un esempio di scarsa e buona lettura (in blu il passo, in rosso la frequenza cardiaca).
P.S. Nel caso abbiate qualche dubbio, non è un post sponsorizzato. Non solo il dispositivo è stato pagato, ma è stato acquistato a prezzo pieno visto che non volevo aspettare i primi sconti.
]]>Provato nell’ordine a:
Il log di errori, accessibile via Pannello di controllo hosting Linux → Strumenti e impostazioni → Mostra log degli errori, riporta “End of script output before headers” per ogni pagina di errore visualizzata.
A questo punto ho aperto un ticket di assistenza con scarse speranze di soluzione.
Nel frattempo l’illuminazione è arrivata via Twitter da San Beggi: controlla la versione di PHP.
L’ho trovata impostata a 5.2.x, e visto che il tutto ha sempre funzionato dubito sia mai stata impostata a quel valore, considerato anche questo post di “solo” 4 anni fa.
Morale della favola: controllate la versione di PHP, anche a prescindere da eventuali errori.
]]>Il computer è “onesto”, l’area della tastiera sembra un po’ troppo flessibile ma in generale ha un buon rapporto qualità/prezzo. Tutto bene, finché non scopri cosa tocca fare per sostituire l’hard-disk (non esiste un cassetto estraibile con l’hard-disk o uno scomparto per la RAM):
Personalmente credo di non aver mai visto un notebook progettato in modo più assurdo. Come detto il computer è onesto per il prezzo, ma decisamente sconsigliato se vi spaventate di fronte a questo tipo di operazione, soprattutto su una macchina nuova.
]]>Ecco il codice aggiornato e ripulito. Il videoId è disponibile direttamente nell’XML del feed.
<?php include_once(ABSPATH . WPINC . '/feed.php'); $get_videos = function ($feed_data) { $output = "<ul>\n"; if (! $feed_data) { $output .= "<li>Nessun video disponibile</li>\n"; } else { foreach ($feed_data as $item) { $youtubetitle = $item->get_title(); $video_id = $item->get_item_tags( 'http://www.youtube.com/xml/schemas/2015', 'videoId' ); $youtubeid = $video_id[0]['data']; $output .= "<li>\n"; $output .= '<iframe width="240" height="176" src="https://www.youtube.com/embed/' . $youtubeid . '?controls=0&showinfo=0" frameborder="0"></iframe>'; $output .= "<span>{$youtubetitle}</span>\n"; $output .= "</li>\n"; } } $output .= "</ul>\n"; return $output; }; ?> <h3>Video</h3> <?php $url = **** URL del feed RSS****; $rss = fetch_feed($url); if (! is_wp_error($rss)) { // Verifica se l'oggetto è stato creato correttamente // Individua il numero di video presenti, al massimo leggine 3. $maxitems = $rss->get_item_quantity(3); // Crea un array di tutti gli elementi (il primo elemento ha indice 0). $rss_items = $rss->get_items(0, $maxitems); } echo $get_videos($rss_items) ?>]]>
Per il momento il 2015 segna 326 km di corsa, 618 km in mtb. Per quest’ultimo dato la differenza sostanziale è il dislivello totale: 10.127 m (fatti in buona parte su sterrato), contro i 13.401 m (per 1.121 km) del 2014.
]]>Passo 1: generare la chiave
ssh-keygen -t rsa
Personalmente assegno un nome diverso rispetto al predefinito (id_rsa) per capire al volo di che cosa si tratta.
Passo 2: copiare la chiave sul server
Copiare il file via FTP o direttamente via scp
scp /home/UTENTE/.ssh/id_rsa.pub UTENTE_REMOTO@SERVER_REMOTO:.
Effettuare l’accesso al server via SSH (con nome utente e password) e copiare il contenuto della chiave pubblica in .ssh/authorized_keys
cat /home/UTENTE/id_rsa.pub >> /home/UTENTE/.ssh/authorized_keys
Se necessario creare la cartella .ssh prima di lanciare questo comando. Dovrebbe funzionare anche con sss-copy-id, ma su Mac va installato (es. con homebrew).
ssh-copy-id -i /home/UTENTE/.ssh/id_rsa UTENTE_REMOTO@SERVER_REMOTO
Passo 3: modificare .ssh/config in locale per utilizzare la chiave
Host SERVER_REMOTO User UTENTE_REMOTO IdentityFile ~/.ssh/id_rsa
Nel file config è possibile utilizzare wildcard, particolarmente utile per le innumerevoli macchine virtuali
]]>