Star Trek: Discovery, Attivare!

Il momento tanto atteso è giunto. Netflix ha appena pubblicato i primi due episodi della Sesta Serie di Star Trek!

L’attesa per alcuni è durata solo alcuni mesi (Maggio 2017, quando Netflix ha mostrato il suo primo trailer), per altri un po’ di più (Novembre 2015, quando è stata annunciata la serie). Altri ancora, come il sottoscritto, aspettano una nuova serie TV di Star Trek da quanto Star Trek Enterprise ha concluso la sua corsa con l’episodio “These are the Voyages…” andato in onda negli Stati Uniti il 13 Maggio 2005. Per quelle persone come me, l’attesa ha da pochi mesi superato i dodici anni.

Eppure, nonostante la gestazione un po’ travagliata, finalmente ci siamo.Non resta che aspettare trepidanti di loggare su Netflix e gustarci la nuova avventura.

Timoniere, rotta per Discovery…attivare!

 

Podcast sulla Fibra Ottica

Vi presento il seguente podcast sulla Fibra Ottica e sui vari mezzi trasmissivi 🙂 Potete leggere l’articolo (qui di seguito) oppure ascoltare il podcast su youtube o via mp3. Buona lettura/ascolto!

Podcast su Youtube:

Se invece volete ascoltarlo con il vostro lettore MP3, potete scaricarlo a questo indirizzo: Download MP3

Segue il podcast in forma scritta. Buona lettura!
Ciao a tutti, mi chiamo Artanis è con questo breve podcast vorrei parlarvi dei vari tipi di protocolli di comunicazione che adoperano la Fibra Ottica, con lo scopo di spiegare in maniera semplice e chiara quali sono le attuali possibilità per la banda ultra larga.


Per prima cosa, un chiarimento: non sono un tecnico di telecomunicazione, quindi alcune cose potrebbero essere imprecise. Si tratta di una sintesi delle ricerche che ho effettuato in questi mesi, incentivate dai recenti sviluppi in tema di banda ultra larga sul territorio italiano.


Se notate delle imprecisioni o degli errori, fatemelo presente nei commenti e pubblicherò le dovute correzioni!

Innanzitutto, occorre parlare dei vari tipi di connessione adoperanti la Fibra. In generale tutti i sistemi che fanno uso, parziale o completo, del mezzo trasmissivo in fibra ottica, si chiamano FTTX, le prime tre lettere stanno per “FIBER TO THE” (Fibra fino al) e la X, invece cambia a seconda della categoria e tipologia.


Partendo dalla meno performante a quella performante, ci sono le seguenti categorie:
FTTN (Fiber to the Node) – Fibra al nodo di scambio
FTTC (Fiber to the Cabinet) – Fibra fino all’armadio
FTTdp (Fiber to the Distribution Point) – Fibra fino alla chiostrina
FTTB (Fiber to the Building) – Fibra fino all’edificio
FTTH (Fiber to the Home) – Fibra fino a casa

La FFTN non indica una soluzione per l’utente finale, ma solo che la Centrale del proprio provider è connessa alla dorsale direttamente in fibra ottica. Sebbene questo passaggio sia necessario perché la stessa possa erogare gli altri servizi, non è un tipo di connessione cui l’utente può avere accesso se non appunto attraverso i servizi derivati.

La FTTC, la Fibra all’armadio ripartilinea (o cabinet) è il tipo di connessione che sta avendo maggiore sviluppo negli ultimi tempi in Italia. Bisogna innanzitutto chiarire che una connessione in FTTC non è una connessione vera in fibra ottica; infatti il mezzo trasmissivo è in fibra solo fino all’armadio ripartilinea. Da quel punto in poi, la connessione viaggia su rame e il protocollo di connessione è il cosiddetto VDSL. In Italia si è partiti direttamente con il protocollo VDSL2 che permette una banda totale dai 50 ai 300 mbps.

Questo protocollo di connessione ha a disposizione diversi profili. Il profilo più comune, è il cosiddetto profilo 17a. Questo profilo consente una velocità in download fino a 100mbps e una velocità in upload fino a 20 mbps (variazioni numeriche sono possibili a seconda dell’operatore).
Nel mese di Maggio 2017, Tim dovrebbe (o a seconda di quando ascoltate questo podcast, potrebbe aver già) iniziare la vendibilità del profilo 35b: il profilo ultimo del sistema VDSL2.
Il profilo consente di raggiungere una velocità in download fino a 300 mbps e una velocità in upload fino a 50mbps. Questi sono i valori massimi ottenibili con questo metodo di trasmissione.

Trattandosi però di connessione attraverso il rame, soffre di numerosi problemi:

  • La lunghezza del cavo in rame (e quindi la distanza fra abitazione e cabinet) influisce pesantemente sulla prestazione della linea (e quindi sulla banda fruibile). Oltre i 300 metri il valore ottenibile di banda cala sotto i 100mbps, arrivando sotto i 50 oltre i 500/600 metri.
  • La trasmissione su rame, soffre di disturbi causati dalle altre linee: la cosiddetta diafonia, in grado di abbattere il valore ottenibile massimo fino al 50% in presenza di numerose linee disturbanti. Le linee disturbanti sono praticamente quelle coppie di cavi in rame che percorrono lo stesso tratto insieme: se un vicino attiva la VDSL, entrambi finirete per subire la diafonia e perdere verosimilmente il 20/30% dell’ottenibile.
  • Il rame stesso è spesso un cavo molto vecchio (posato per la linea telefonica decenni fa) e quindi è usurato o rovinato, cosa che influisce ancora di più, abbattendo la banda massima ottenibile.

A causa di tutti questi problemi, e anche al fatto che buona parte delle abitazioni è distante dal proprio cabinet di riferimento, esistono altri sistemi.


Uno di questi è “il passaggio logico successivo” ovvero la FTTdp. La fibra alla chiostrina. Sostanzialmente la fibra ottica invece di fermarsi all’armadio ripartilinea (in media distante 300/400 metri dalle abitazioni), prosegue fino alla chiostrina ovvero un piccolo nodo di distribuzione che dispone il rame ad un numero limitato di abitazioni essendo l’ultimo nodo prima di raggiungere l’utente finale. Le chiostrine sono in genere entro 50 metri da ogni casa e tale distanza ridotta permette di fruire di un altro protocollo di comunicazione in sostituzione del VDSL: il G.fast. Quest’ultimo formato è in grado, su distanze limitate (entro quindi i 50 metri) di fornire fino a 1 gigabit. Disgraziatamente, essendo comunque un protocollo di comunicazione via rame, soffre degli stessi problemi della VDSL. Sebbene il problema distanza è in genere risolto dalla vicinanza delle abitazioni alla chiostrina, il problema diafonia è comunque presente con linee che “viaggiando assieme” finiscono per disturbarsi vicendevolmente.

Il passaggio successivo è la FTTB, la Fibra fino all’edificio. Nel caso di palazzi e condomini, la Fibra Ottica arriva fino alla base dell’edificio (in genere in cantina) per poi arrivare in casa attraverso sistemi alternativi (spesso cavi Ethernet). Questo sistema risolve tutti i problemi precedenti, e permette all’utente finale di ottenere tutta la banda erogata dall’operatore a seconda dei profili impostati, senza disperdere nulla per problemi di distanza o di disturbi.

Il passaggio finale e cioè la connessione in Fibra Ottica definitiva è la FTTH, cioè la Fibra fino a casa. In questo caso, infatti, la fibra ottica arriva fino all’appartamento/abitazione dell’abbonato e la terminazione ottica entra nel Modem Fibra dell’utente. Questo sistema, addirittura migliore dell FTTB consente di raggiungere velocità fino ai 10 gbps.

Di tutti i sistemi che usano la Fibra come mezzo trasmissivo di cui vi ho parlato, solamente il FTTB e il FTTH sono connessioni in fibra ottica, tutte le altre sfruttano il rame e protocolli trasmissivi diversi dalla fibra (il già discusso VDSL e G.fast). Se il vostro provider vi offre “la Fibra” assicuratevi che si tratti davvero di connessione in fibra ottica, perché la VDSL (attualmente la connessione che va per la maggiore in Italia) non offre le stesse caratteristiche della vera connessione in Fibra Ottica, né possiede le stesse potenzialità future di quest’ultima che ad oggi è la tecnologia di connessione migliore anche in prospettiva futura.

Star Trek: Discovery Podcast!

Spero che vi piacciano i Podcast, perché ho appena registrato l’episodio pilota del mio podcast dedicato a Star Trek: Discovery!

In questo primo episodio parlo genericamente della serie, di cosa sappiamo finora, e di alcune critiche che i fan non hanno mancato di farle nonostante la serie non sia ancora neppure andata in onda!

Spero che vi possa piacere. Se avete domande, commenti o altro, sapete cosa fare (commentate!).

Qui di seguito trovate il podcast in formato YouTube:

Se invece volete ascoltarlo con il vostro lettore MP3, potete scaricarlo a questo indirizzo: Download MP3

Star Trek: Discovery!

Ieri sera alle 23.00 durante il panel alla San Diego Comic Con dedicato al 50° anniversario di Star Trek, lo show runner Bryan Fuller ha finalmente annunciato il titolo della nuova serie di Star Trek in arrivo su NETFLIX a Gennaio 2017.

La nuova incarnazione di Star Trek in televisione si chiamerà STAR TREK: DISCOVERY.

yedhzj5Purtroppo Fuller è stato avaro di dettagli, ma contestualmente all’annuncio del titolo ha anche mostrato un breve teaser trailer (con CGI ovviamente placeholder) che mostra la USS Discovery NCC 1031 uscire da un asteroide:

Il design della Discovery è un po’ grezzo, tuttavia uno dei produttori esecutivi della serie ha affermato che non è ancora definitivo.

screen-shot-2016-07-23-at-6-15-31-pm-480x221

 

screen-shot-2016-07-23-at-6-15-58-pm-480x272

L’ultima informazione che Fuller ci ha concesso è stata la conferma che la serie sarà ambientata nel Prime Universe e non nella Kelvin Timeline:

Gli annunci ufficiali terminano qui, per il momento, ma ci sono alcune cose su cui si può iniziare a ragionare. Al di là del discorso fatto sull’inclusività durante il panel e dall’affermazione che donne e persone LBGT giocheranno un ruolo più importante rispetto al passato nella nuova incarnazione di Star Trek, il teaser ci da qualche piccolo dettaglio.

Per prima cosa, il numero di registro: NCC 1031. Analizzando strettamente il numero, sembrerebbe una nave costruita prima dell’Enterprise originale (NCC 1701), ma dopo l’Enterprise di  Archer (NX 01). Questo potrebbe posizionare temporalmente DSC prima della Serie Classica e dopo Enterprise.

Tuttavia, come avrete notato, ho parlato di “data di costruzione”: potrebbe essere, infatti, che la nave per quanto vecchia sia stata riutilizzata (ricordiamo il furto dell’Enterprise dal museo nei film) per qualche ragione.

Oppure, potrebbe trattarsi di una versione più nuova di una vecchia Discovery, mantenendone il numero di registro senza aggiungere lettere (come accade per la Defiant su Deep Space Nine).

Naturalmente la spiegazione più semplice potrebbe essere che in effetti la serie è ambientata prima della Serie Classica e prima di Kirk. Tuttavia, un indizio sul fatto che le cose non sono così semplici lo da Fuller stesso affermando che non vogliono ancora svelarci il periodo temporale, suggerendo che c’è qualcosa di più importante legato a questa scelta.

Potrebbe essere che la nuova serie di Star Trek racconti le avventure delle navi chiamate Discovery e che ogni stagione cambierà periodo temporale per seguire le avventure delle successive incarnazioni della nave, dando significato alla forma plurale del testo apparso nel primo teaser “New Crews“. Una prima stagione potrebbe seguire la Discovery originale, un’altra la Discovery B, un’altra ancora la Discovery D, e via dicendo, percorrendo la time line. Questo sembrerebbe in accordo con la risposta di Fuller di qualche mese fa alla domanda se incontreremo o meno personaggi noti: “prima o poi”.

Tutto è possibile a questo punto. Personalmente, dopo la buona notizia che conferma che DSC sia ambientata nel Prime Universe, la mia speranza sarebbe che fosse anche ambientata dopo Voyager/Nemesis e quindi interamente nel futuro, senza trattarsi di un ulteriore prequel. Tuttavia, credo che l’opzione che vede la serie seguire le varie navi chiamate Discovery sia piuttosto meritevole d’attenzione e che potrebbe risultare corretta.

Prima di chiudere un piccolo dettaglio: nel nuovo teaser, quando scompare il logo di Star Trek: Discovery per fare posto al messaggio che segnala che la serie sarà disponibile su CBS All Access si sente l’inconfondibile effetto sonoro di una nave che si occulta…

Non resta che aspettare le prossime rivelazioni, che accadranno probabilmente più vicini al mese di Settembre data per la quale inizieranno le riprese!

Star Trek Beyond – Recensione

Iniziamo con un ovvio avviso: Se non avete visto Star Trek Beyond, chiudete questa pagina poiché sarà ovviamente piena di spoilers.

Bene, cominciamo. Ieri sera ho visto Star Trek XIII, ovvero il terzo film della Kelvin Timeline, Star Trek Beyond. Giusto per dare un po’ di background sui miei gusti, diciamo così, ho apprezzato molto Star Trek XI (Star Trek 2009), ma dopo una prima impressione positiva, ho valutato negativamente Star Trek XII (Star Trek Into Darkness) per le assurde scelte, per i buchi di trama e per l’insensatezza generale del film (sebbene ci siano degli ottimi momenti).

Prima di approcciare Star Trek Beyond, reduce da Into Darkness, ero quindi un po’ cauto, rifiutando di lasciarmi andare a facili entusiasmi o facili critiche (nonostante il primo teaser del film sia la cosa più brutta mai legata al nome di Star Trek).

Durante la visione del film mi sono chiesto più volte “Mi sta piacendo?” e la risposta, stranamente, era “Boh.”. Quel “boh” chiarisce il problema del film. Non è un brutto film, ma non è neppure un film bello. Non suscita entusiasmo come un film bello che appassiona, ma non suscita neppure fastidio come un film che non piace. Il perché è presto detto: durante il film si susseguono momenti positivi e momenti negativi in modo che non si faccia in tempo a compiacersi di qualcosa che immediatamente si viene riportati sulla neutralità da un avvenimento o scelta di trama quanto meno discutibile.

Se la prima metà del film possa essere comunque descritta come un noioso susseguirsi di scene d’azione, la seconda metà migliora anche sensibilmente, ma in piena coerenza con il film, non fa altro che riportare l’asticella del voto sulla mera sufficienza.

Evitando una recensione pura e semplice (al di là di queste poche parole introduttive), analizziamo in forma di lista ciò che ha di buono il film e poi ciò che ha di negativo.

Positivi:

  • Gli effetti speciali. Senz’altro di prim’ordine, la scena della distruzione dell’Enterprise è quella che meglio esemplifica l’eccellente lavoro tecnico del film.
  • I character moments. Questo forse il punto più a favore del film: la chimica fra i personaggi, i dialoghi tra loro e il senso di famiglia fra l’equipaggio dell’Enterprise è catturato in maniera egregia come in nessun film della Kelvin Timeline al punto da non fare affatto rimpiangere i film del Prime Universe. Questo il miglior complimento che mi sento di fare a Star Trek Beyond, senza riserve.
  • Continuity. Il film ha dei momenti di continuity con Star Trek Enterprise, l’unica serie tv del Prime Universe che è canonicamente in comune ad entrambe le timeline. Si parla di MACO e degli Xindi (Stagione 3 di Enterprise), si vede una NX (La Franklin) che è molto simile come design all’Enterprise NX-01, si parla di motore a Curvatura 4 (costruita quindi prima della NX-01, nonostante il numero di registro sia successivo perché ricommissionata per le Guerre Romulane, che vengono citate).
  • L’omaggio a Leonard Nimoy. All’inizio del film, due vulcaniani informano Spock che l’Ambasciatore Spock è deceduto, consegnandogli un pacchetto con alcuni suoi effetti personali. All’inizio ci viene mostrata una fotografia con il viso dell’Ambasciatore e la data stellare di nascita e di morte. In seguito Spock ammette la sua tristezza per l’avvenimento con McCoy, pur dicendo che è illogico temere la morte. Alla fine del film, Spock apre il pacchetto contenente gli effetti personali dell’Ambasciatore e rinviene questa fotografia:
    8447127_orig
    Decisamente un momento toccante e fra i migliori del film.
  • Il finale con la celebre frase “Spazio, ultima frontiera” recitata da tutti i membri dell’equipaggio e la partenza dell’Enterprise-A.
  • Nonostante il trambusto causato sul web nei giorni scorsi della rivelazione, la scena in cui Sulu e il suo compagno si abbracciano con figlia al seguito sulla Yorktown l’ho trovata buona. Certo, è brevissima (4 secondi netti) e credo che il 90% del pubblico non farà 2+2, ma è un modo più che dignitoso di avere il primo personaggio LBGT in Star Trek. Sulu è gay e ha una figlia (Demora Sulu, futuro timoniere dell’Enterprise B). Almeno nel futuro non è una questione su cui discutere come ancora lo è nel 2016, specie in Italia!

Gli aspetti positivi, per quanto sicuramente interessanti, finiscono qui. Nessuno di essi (eccezion fatta per l’ottimo lavoro su personaggi e dialoghi tra loro) eccelle in maniera significativa.

Negativi:

  • Le scene d’azione si susseguono senza tregua al punto che sembra che il film abbia FRETTA di passare da una scena d’azione alla successiva, non dando minimamente il tempo di riflettere su ciò che sta accadendo e soprattutto sul perché. Da ciò consegue che le scene d’azione, per quanto molto ben fatte tecnicamente, abbiano un impatto emotivo trascurabile. Scorrono via senza infamia e senza lode.
  • Il momento di facepalm più violento al punto da sfiorare la commozione cerebrale è quando trasmettono a massimo volume la canzone dei Beastie Boys “Sabotage” per distruggere le “api” di Krall. Veramente, non ho parole per descrivere l’imbarazzo per quella scena. Potevano accontentarsi di averla trasmessa a bordo della Franklin quando Scotty e Jaylah stavano eseguendo le riparazioni, ma usarla come mezzo per distruggere decine di navi della flotta di Krall è veramente troppo.
  • Il cattivo di turno, Krall. Per tutto il film ci si chiede quali siano le motivazioni e per quasi tutto il film esse ci vengono negate. Sembra il solito cattivo, trito e ritrito, che vuole distruggere la federazione “perché si”. Quando, a film quasi finito, ero rassegnato al fatto che sarebbe restato un “mistero” ecco che vengono rivelate le sue motivazioni e la sua identità. Le sue motivazioni sono RIDICOLE e ASSURDE e la sua identità forzata in maniera che non ha eguali.
    Krall è un MACO, eroe che ha prestato servizio contro gli Xindi e durante le Guerre Romulane. Quando la Federazione è nata nel 2161, i MACO vengono tutti riassegnati (non essendoci più bisogno di un esercito, dato che la Federazione è un entità pacifica) e a Krall (Balthazar M. Edison, il suo nome umano) viene assegnato il comando della Franklin. Fin qua tutto bene no? Eroe di guerra a cui affidano nientemeno che una nave da comandare. Ebbene, a causa di “reasons” si schianta con la nave sul pianeta oggetto del film. L’incidente è grave, molti del suo equipaggio muoiono e chiede soccorso alla Federazione. Soccorso che non arriva.
    Bon! Ecco le sue motivazioni! Era un soldato e voleva restare a fare il soldato, la Federazione lo ha trasformato in un capitano (come osano!) e poi non sono andati a salvarlo perché “lo hanno ignorato”. Quindi ora li odia tutti e deve lanciarsi in una crociata (usando un’arma che non si sa bene come o perché abbia trovato e come mai parte di essa fosse in mano di Kirk senza che questi ne conoscesse il valore) per distruggere i mondi della Federazione. Per cortesia. Basta con queste assurdità. Se non siete capaci di creare un cattivo con motivazioni sensate, SMETTETE DI PROVARCI. Tralascio volutamente il fatto che abbia trovato un modo, su quel pianeta, di assorbire altri esseri viventi assumendone l’aspetto e prolungandosi la vita. Non mi va di sparare sulla croce rossa.
  • Mi rendo conto che lo Spock della Kelvin Timeline sia più emotivo dello Spock del Prime Universe poiché perdere la madre E il suo pianeta natale lo abbia sconvolto al punto da far sì che la sua parte umana ogni tanto emerga, ma è proprio necessario vederlo così emotivo in ogni film? Piange per la morte dell’Ambasciatore (pur notando, quantomeno, che sia illogico per lui farlo), Ride alla battuta di McCoy sul fatto che lui avrebbe fatto una festa se fosse morto Spock, Finge di non capire cosa voglia dire “Stronzate!”, ma poi dimostra di averlo capito benissimo in una forzata battuta di rimando a McCoy (si fossero fermati al “Non capisco cosa c’entrino gli escrementi con questa situazione” sarebbe stato invece perfetto). Vuole essere assegnato alla missione di salvataggio perché c’è Nyota (pur essendo illogico che lui, ferito, partecipi alla missione)… e altro. Spock è davvero poco riuscito in questo film anche se non al punto della furia omicida che lo assale alla fine del pessimo Into Darkness. Ammetto che se si voglia far passare che questo Spock sia più umano che vulcaniano, si potrebbero tralasciare questi difetti, ma il risultato è caricaturale. Spock della Kelvin Timeline risulta FINGERE di essere un Vulcaniano, quando in realtà non lo è.
  • Era proprio necessario distruggere l’Enterprise? Va bene che ne ha risultato un’ottima scena di combattimento, però questa necessità di distruggere di continuo l’Enterprise o di danneggiarla gravemente ad ogni film rende l’accadimento stesso privo di alcun mordente.
  • Dopo solo 3 anni di missione quinquennale Kirk vuole già abbandonare il comando per diventare Vice Ammiraglio della York Town (un lavoro d’ufficio)? Eh? Si è già scocciato? Poi, dopo l’avventura in Beyond, cambia improvvisamente idea? Capisco il voler affiancare i “dubbi di Kirk” con quelli, ben più legittimi, di Spock che meditava di abbandonare la Flotta Stellare (come per altro diceva di voler fare alla fine di Star Trek 2009) per aiutare la sua specie a Nuovo Vulcano… ma è assurdo che James T. Kirk, si sia annoiato di fare il Capitano dopo solo tre anni. Com’è assurdo che cambi  velocemente idea alla fine del film, in tempo per lanciarsi con l’Enterprise A verso una nuova avventura. Avrebbero fatto meglio a rimuovere queste scene invece che aggiungerle.

Alla fine momenti positivi e negativi si inseguono e si equivalgono, facendo sì che il film non decolli mai, ma che mai si affossi. Il mio voto, almeno all’attivo della prima visione, è un mero 6/10.
Star Trek Beyond è un film che, senza infamia e senza lode, lascia trascorrere 2 ore di tempo osservando effetti speciali, pregevoli character moments e… opinabili scelte di trama. 

Python e Selenium per Web Scraping

Introduzione

A volte può essere necessario consultare più volte lo stesso sito alla ricerca di qualche informazione aggiornata. Ad esempio per verificare le previsioni meteo di una determinata città, oppure per controllare la disponibilità di un servizio o articolo che si desidera acquistare.

Oltre a recarsi manualmente e personalmente sul sito in questione, c’è la possibilità di scrivere uno script che si occupi più o meno automaticamente di reperire le informazioni richieste. Questa procedura è chiamata Web Scraping.

Per la creazione di questo script si può usare qualsiasi linguaggio di programmazione, ma spesso – per semplicità e comodità – si adopera Python un linguaggio interpretato.

Vediamo come fare!

Installazione

  1. Installiamo la versione 3.5 di Python, scaricando dal sito ufficiale la versione più recente. Questo tutorial usa la versione 3.5 (32 bit).
  2. Dopo l’installazione, è necessario installare la libreria Selenium che si occupa di Web Scraping & Automation su Python. La libreria si installa semplicemente aprendo il prompt dei comandi, digitando:
    pip install Selenium
    

    “pip” è un utility inclusa nell’installazione base di Python. Se digitando il comando di sopra, non si avvia l’installazione c’è un problema di impostazione del PATH di Python. Nulla di grave, per risolvere rapidamente, portatevi con il prompt dei comandi alla cartella SCRIPTS contenuta dentro la vostra installazione di Python (esempio: C:\Users\NOMEUTENTE\AppData\Local\Programs\Python\Python35-32\Scripts) e rilanciate il comando; troverete pip.exe che vi consentirà di lanciare la procedura di installazione di Selenium.

  3. Scarichiamo ChromeDriver, una versione “semplificata” di Chrome che verrà adoperata da Selenium per il Web Scraping.
  4. Creiamo una cartella dove andremo a posizionare il nostro script python e copiamo il file chromedriver.exe che abbiamo scaricato al punto 3.

Siamo pronti!

Lo Script

È il momento di scrivere il nostro script. Per questo esempio, andremo a reperire informazioni dal sito https://fibra.click/, comodissimo sito per verificare la copertura FTTC di Tim.

Prima di cominciare una parola di avvertimento: la procedura di Web Scraping, se portata all’eccesso (numerosissime richieste in un arco limitato di tempo) è chiaramente malvista poiché va ad appesantire spesso inutilmente il sito in questione (alla stregua di un attacco DDOS). Diversi siti cercano attivamente di scongiurare questa pratica, anche per questa ragione. Lo script che faremo con questo tutorial, comunque, utilizza una vera e propria pagina web per inviare le richieste di dati, procedura comunque lenta (si simula l’intevento di un utente) che non provoca alcun disagio al sito in questione, ma comunque ricordiamoci di non sovraccaricare i siti che andiamo ad analizzare.

Per prima cosa creiamo un nuovo file di testo, chiamiamolo WebScrapeTutorial.py e salviamolo nella cartella in cui abbiamo messoil file chromedriver.exe. Possiamo usare un qualsiasi editor di testo per scrivere il codice dello script, da blocco note, passando per Notepad++ fino a IDLE il piccolo editor incluso con Python. Scegliete lo strumento che volete.

Iniziamo quindi a digitare il codice:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import os
import time
import sys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

 

Queste prime linee si occupano di impostare l’encoding di testo (per poter usare le lettere accentate) e di caricare le librerie che andremo ad utilizzare.


application_path = os.path.dirname(__file__)
chromedrv_path = application_path+"\chromedriver.exe"

Qui dichiariamo due variabili. La prima memorizza il path in cui è posizionato il file .Py, la seconda invece crea il percorso completo per il file chromedriver.exe necessario a Selenium per operare correttamente.


# FUNCTIONS
def GiveInfo():
    print("CENTRALE: \n" + central_planned + "\n") 

    # Format the cabinets data
    try:
        lines = cabinets_planned.splitlines()
        lines.remove('torna alla lista delle centrali')
        lines.remove('Clicca qui per scoprire')
        lines.remove('come identificare l\'armadio')
        lines.remove('torna alla lista delle centrali')
        for item in lines:
            if item:
                print(item)
    except:
        print("\nNon ci sono armadi pianificati. Spiacente!")

    print("\n" + lastUpdate + "\n")

Definiamo una semplice funzione chiamata GiveInfo() il cui compito è quello di mostrare a schermo le informazioni raccolte dal nostro script. Dopo un print() iniziale che formatta il testo da mostrare a schermo, si apre un blocco try…except.
Nel blocco try si prende la variabile cabinets_planned (che vedrete più avanti nel codice) e la si divide in diverse linee, andandola quindi a memorizzare nella variabile lines.
Quindi si cerca di rimuovere da questa variabile, le linee che non vogliamo mostrare a schermo perché inutili; sono linee che appaiono sul sito che andremo a “scrapare”, ma che non servono per l’output finale.
A questo punto, con un ciclo for, stampiamo a schermo le linee restanti: esse saranno le informazioni riguardo tutti gli armadi ripartilinea pianificati.
Il blocco except si occupa di intercettare un errore (cioè l’impossibilità di trovare le linee che cerchiamo di rimuovere) e di mostrare a schermo un messaggio che spiega che non ci sono armadi pianificati.


print ("Inserisci la città per la quale verificare la copertura FTTC: ")
city = input()

if not city:
    print("Città default: Melegnano\nIn lavorazione...\n")
    city = "Melegnano"
else:
    print("Città scelta: " + city + "\nIn lavorazione...\n")

Con questo codice inizia lo script vero e proprio. Con il comando print() mostriamo a schermo il testo nel quale chiediamo all’utente di inserire il comune per il quale vuole verificare la copertura (il campo COMUNE che bisogna inserire sul sito fibra.click), mentre con il comando input() raccogliamo l’input dell’utente e lo mettiamo nella variabile city.

A seguire facciamo un controllo mediante if…else per verificare se l’utente ha digitato o meno una città. Se non l’ha digitata, inseriamo una città default (così si evita di incorrere in un errore, ma è anche comodo nel caso si voglia controllare frequentemente lo stesso comune), in caso contrario (else) mostriamo a schermo la città scelta.


driver = webdriver.Chrome(chromedrv_path)
driver.set_window_position(-5000, 0)
driver.get('https://fibra.click/');

time.sleep(1) # Pausa di 1 secondo prima del prossimo comando

È il momento di utilizzare Selenium! Creiamo una variabile chiamata driver e quindi carichiamo un web driver Chrome passando come parametro il percorso in cui si trova il chromedriver.exe. Posizioniamo la schermata di Chrome al di fuori dello schermo (per non mostrarla all’utente, dato che lo script si occuperà di automatizzarne le interazioni, e poi con il comando GET andiamo a caricare il sito in questione.
In chiusura il comando time.sleep() permette di aspettare un secondo prima dei prossimi comandi, per dare il tempo a Selenium di aprire la pagina scelta. Questo valore potrebbe dover aumentare nei siti più complessi e pesanti.


search_box = driver.find_element_by_class_name('input_home')
search_box.send_keys(city)
search_box.send_keys(Keys.RETURN)

time.sleep(3) # Pausa di 3 secondi prima del prossimo comando

Adesso inizia la “magia”. Cerchiamo l’elemento “input_home” nel sito e lo memoriziamo nella variabile search_box.
Andando ad aprire il codice sorgente del sito fibra.click, possiamo infatti vedere che il campo dove inserire il nome del comune si chiama proprio INPUT_HOME. Così facendo possiamo dire a Selenium qual è il campo col quale dovrà interagire.

Ecco infatti una parte del codice HTML del sito in questione:


<div class="block1 centered">
			<h2>Con FibraClick puoi verificare la<br>
				copertura della fibra FTTC di TIM</h2>
			<br>
			<img class="home_artwork" alt="" src="/resources/home_artwork.png">
			<br>
			<p>Inserisci il nome del comune<br>per effettuare la ricerca.</p>
			<br>
			<div class="input_ricerca">
				<input type="text"
					   class="input_home"
					   placeholder="Esempio: Trento"
					   v-model="cap"
					   v-on:keypress.13="search">
				<a class="button" v-on:click="search"><img src="resources/search_icon.png" style="width:25px;margin-top:5px"></a>
			</div>
			<br><br>
		</div>

Si vede che la “class” della casella di testo si chiama proprio input_ricerca.
Il comando send_keys() serve proprio a inviare il testo alla casella di testo, nello specifico il nome della città chiesta all’utente all’inizio dello script.

Il successivo send_keys(Keys.RETURN) fa proprio quello che sembra: preme il pulsante INVIO, dando il via alla ricerca!


try:
    planned = driver.find_element_by_xpath('//*[@id="risultati_centrali"]/table/tbody/tr/td[2]')
    central_planned = planned.text  #get the planned data for central
    planned.click()     #click on the central to get the cabinets
    time.sleep(3)       #give some time to load info
except:
    print("Non ho trovato alcuna centrale pianificata per " + city)
    central_planned = "Non pianificata"

Qui inizia un blocco try…except nel quale andiamo a cercare il campo sul sito che mostra la data (se presente) di pianificazione della centrale per il comune ricercato.

In questo caso, invece di usare find_element_by_class, utiliziamo un altro sistema: by_xpath.
XPATH è il “nome” di un elemento specifico che magari non ha una sua classe o nome specificato. Trovare l’XPATH in questione è semplice: basta aprire il sito in questione con Chrome, cliccare col destro sul campo / dato per il quale si vuol conoscere l’XPATH (nel nostro caso la riga in arancione o verde con su scritto “Pianificato/Attivo per/il DATA”) e cliccare su ISPEZIONA. A questo punto apparirà una finestrella a lato, li basta cliccare con il pulsante destro del mouse sulla linea già evidenziata (che mostrerà il testo in questione) e fare click su Copy > Copy XPATH. Ora abbiamo l’XPATH dell’elemento che ci serve, e possiamo quindi inserirlo come argomento della funzione find_element_by_xpath().

Subito dopo, creiamo una variabile chiamata central_planned (che già abbiamo visto nella funzione GetInfo()) e vi mettiamo il testo del campo che abbiamo trovato con la funzione di cui sopra.
Il comando click() che segue serve a cliccare sopra l’elemento in questione, che nel sito fibra.click serve per allargare la centrale scelta per andare ad analizzare gli armadi pianificati.
Segue la classica attesa (in questo caso di tre secondi).

Il blocco except che viene chiamato in causa se non viene trovato l’elemento in questione (nel caso, ad esempio, di assenza totale di pianificazione per il comune scelto) si occupa di dare un messaggio d’errore all’utente, senza causare però alcun crash.


# get the cabinets

try:
    cabinets = driver.find_element_by_xpath('//*[@id="risultati_armadi"]')
    cabinets_planned = cabinets.text
except:
    print("Non ho trovato alcun armadio pianificato per " + city)
    cabinets_planned = "Non pianificati"

In questo blocco successivo, si fa esattamente la stessa cosa, andando però a cercare l’XPATH dell’elemento che mostra i risultati degli armadi pianificati. Come prima, si procede manualmente sul sito e si ricerca l’XPATH che ci serve.


#get date
try:
    updated = driver.find_element_by_xpath('//*[@id="block2"]/span')
    lastUpdate = updated.text
except:
    lastUpdate = "Non sono riuscito a trovare la data dell'ultimo aggiornamento."

L’ultimo blocco ha lo scopo di andare a reperire la nota in fondo alla pagina che mostra, nel nostro caso, a quale versione corrispondono i dati TIM di questa ricerca.


GiveInfo()

print ("Premi invio per chiudere!")
check = input()

driver.quit()

Ecco finalmente la chiamata alla funzione che abbiamo definito all’inizio. Ora abbiamo tutte le variabili colme di informazioni e la funzione GiveInfo() può mostrarle in maniera pulita e ordinata all’utente.

Segue quindi la richiesta di chiusura seguita dall’attuale chiusura del driver e dello script.

Ecco nella sua interezza il codice completo dello script:


#!/usr/bin/env python
# -*- coding: latin-1 -*-

import os
import time
import sys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

application_path = os.path.dirname(__file__)
chromedrv_path = application_path+"\chromedriver.exe"

# FUNCTIONS
def GiveInfo():
    print("CENTRALE: \n" + central_planned + "\n") 

    # Format the cabinets data    
    try:
        lines = cabinets_planned.splitlines()
        lines.remove('torna alla lista delle centrali')
        lines.remove('Clicca qui per scoprire')
        lines.remove('come identificare l\'armadio')    
        lines.remove('torna alla lista delle centrali')  
        for item in lines:
            if item:
                print(item)
    except:
        print("\nNon ci sono armadi pianificati. Spiacente!")

    print("\n" + lastUpdate + "\n")

print ("Inserisci la città per la quale verificare la copertura FTTC: ")
city = input()

if not city:
    print("Città default: Melegnano\nIn lavorazione...\n")
    city = "Melegnano"
else:
    print("Città scelta: " + city + "\nIn lavorazione...\n")

driver = webdriver.Chrome(chromedrv_path)  
driver.set_window_position(-5000, 0)
driver.get('https://fibra.click/');

time.sleep(1) # Pausa di 1 secondo prima del prossimo comando

search_box = driver.find_element_by_class_name('input_home')
search_box.send_keys(city)
search_box.send_keys(Keys.RETURN)

time.sleep(3) # # Pausa di 3 secondi prima del prossimo comando

try:
    planned = driver.find_element_by_xpath('//*[@id="risultati_centrali"]/table/tbody/tr/td[2]')        
    central_planned = planned.text  #get the planned data for central
    planned.click()     #click on the central to get the cabinets
    time.sleep(3)       #give some time to load info
except:
    print("Non ho trovato alcuna centrale pianificata per " + city)
    central_planned = "Non pianificata"

# get the cabinets

try:
    cabinets = driver.find_element_by_xpath('//*[@id="risultati_armadi"]')
    cabinets_planned = cabinets.text
except:
    print("Non ho trovato alcun armadio pianificato per " + city)
    cabinets_planned = "Non pianificati"

#get date
try:
    updated = driver.find_element_by_xpath('//*[@id="block2"]/span')
    lastUpdate = updated.text
except:    
    lastUpdate = "Non sono riuscito a trovare la data dell'ultimo aggiornamento."

GiveInfo()

print ("Premi invio per chiudere!")
check = input()

driver.quit()

Spero che questo breve tutorial vi sia stato utile! Happy scraping! 🙂

Personaggi che potrebbero tornare nella nuova serie di Star Trek

Anche se si tratta per il momento solo di un rumor, la prossima serie di Star Trek sarà a quanto pare antologica, basata nel Prime Universe e la sua prima stagione sarà ambientata dopo The Undiscovered Country (Star Trek VI – Rotta verso l’Ignoto) e prima di Star Trek: The Next Generation.
Da ciò consegue la possibilità dell’apparizione durante la prima stagione, dei seguenti personaggi:
1) James Tiberius Kirk (William Shatner)
Se è ambientato dopo TUC e prima del varo dell’Enterprise B, Kirk è vivo e vegeto e non è ancora finito nel Nexus. Sono quasi certo che apparirà nell’episodio pilota. Sarebbe un’opportunità troppo perfetta per mancarla.
2) T’Pol (Jolene Blalock)
I Vulcaniani sono molto longevi e non è una novità. T’Pol è nata nel 2088, mentre TUC si svolge nel 2293. Superare i 200 non è raro per i vulcaniani (Sarek supera i 200 anni prima di morire di malattia), quindi potrebbe apparire una vecchia T’Pol.
3) Hikaru Sulu (George Takei)
Capitano della U.S.S. Excelsior, Sulu ha un ruolo decisamente di rilievo in The Undiscovered Country. Mi aspetto una sua apparizione ad un certo punto della stagione.
4) Tukok (Tim Russ)
Ufficiale a bordo della U.S.S. Excelsior, prima di essere, tanti anni dopo, Capo della Sicurezza della U.S.S. Voyager, potrebbe tranquillamente apparire nella serie, come potrebbe farlo la U.S.S. Excelsior stessa.
5) Curzon Dax
Curzon si unisce al simbionte Dax nel 2286, quindi 6 anni prima degli eventi di The Undiscovered Country. Potrebbe quindi apparire anche lui, dando un pezzetto di Deep Space Nine alla nuova serie.
6) Q (John de Lancie)
Non fare apparire Q sarebbe criminale. Essere onnipotente, Q è già apparso in diverse incarnazioni di Star Trek (secondo una teoria, persino in TOS nella forma di Trelane), quindi non resta che schioccare le dita e farlo apparire nella nuova serie! Potrebbe essere un personaggio stabile che appare in qualsiasi stagione, vista la sua natura.
7) Wesley Crusher (Wil Wheaton)
Wesley è con il Viaggiatore ed è in grado di trascendere i confini di spazio e tempo. Un altro personaggio che potrebbe apparire anche nelle stagioni future.
8) Doctor Noonian Soong (Brent Spiner)
Non è impensabile, anche se l’attore dovrebbe essere per forza di cose un altro, l’apparizione di un giovanissimo dottor Soong.
9) Colonel Worf (Michael Dorn)
Il Colonnello Worf ha difeso Kirk e McCoy al processo che si concluse con il loro imprigionamento su Rura Penthe proprio in The Undiscovered Country. Anche se non è imparentato con Worf di The Next Generation, è comunque un personaggio che potrebbe apparire.
Personaggi che potrebbero apparire, ma che non appariranno per decesso dell’attore:
1) Spock (Leonard Nimoy)
In vita da TOS fino all’ultimo istante del prime universe (prima di entrare nell’anomalia temporale), è l’unico personaggio che vive abbracciando tutte le serie trek con la sola unica eccezione di Star Trek Enterprise. Purtroppo Nimoy ci ha lasciato, ma se fosse ancora in vita, sarebbe stato un no-brainer averlo, considerando anche il ruolo di Spock in TUC. Peccato.
2) Leonard H. McCoy (DeForest Kelley)
In vita da TOS fino almeno al primo episodio di Star Trek: The Next Generation, sarebbe potuto apparire senza alcun problema. Purtroppo l’attore è morto ormai da tanti anni.
3) Montgomery “Scotty” Scott (James Doohan)
In vita da TOS fino a dopo il varo dell’Enterprise B (poi restato in animazione sospesa nel buffer del teletrasporto fino a Star Trek: The Next Generation) sarebbe potuto tranquillamente apparire. Purtroppo l’attore è venuto a mancare 11 anni fa.
Ho dimenticato qualche personaggio che potrebbe apparire? Fatemelo sapere nei commenti!

Livello di Mario Maker

Da un paio di giorni ho iniziato a giocare a Super Mario Maker, l’editor di livelli di Super Mario su Nintendo Wii U.

Sebbene non abbia ancora avuto moltissimo tempo a disposizione, ho creato un livello abbastanza lungo e (pare) abbastanza difficile.

Il livello si chiama Back and Forth ed è già disponibile! Una ventina di giocatori hanno provato a completarlo, senza riuscirci.

fd1f-0000-017b-49b8

Se ci provate fatemi sapere! Sto pensando di renderlo più facile, ma forse è bene aspettare un po’ prima di procedere al nerf.

Ciò detto, potete raggiungere la mia pagina autore sul sito ufficiale dedicato a Super Mario Maker, da lì potrete accedere anche agli altri miei livelli (ce ne sono altri 4, ma sono molto brevi e semplici, fatti per provare un po’ l’editor).

Buon divertimento (spero)!

Risolvere problemi di connessione con Windows 10

Windows 10, il nuovo sistema operativo di casa Microsoft, è sicuramente un ottimo successore di Windows 7 essendosi rivelato un sistema solido e funzionale.

Tuttavia, Windows 10 non è privo di problemi. Vediamo come risolvere uno dei più fastidiosi: l’assenza di connessione a Internet.

Può capitare, improvvisamente che l’icona della connettività di Internet mostri un punto esclamativo giallo:

189674d1379305645t-yellow-triangle-network-icon-access

A questo segue l’impossibilità di utilizzare Microsoft Edge per navigare su Internet e alcune applicazioni potrebbero non riuscire a connettersi alla rete.

Qual è il problema? Alcune volte si tratta, naturalmente, di problemi reali di connessione (il cavo Ethernet si è disconnesso, il Router è spento, c’è reale assenza di linea, eccetera), ma il problema che vado ad analizzare ora è interamente software. Se potete navigare regolarmente (usando un altro browser, come Chrome o Firefox) nonostante la presenza di quest’icona, si tratta proprio di questa casistica.

La causa è più semplice di quanto non si possa pensare: qualcosa o qualcuno ha impostato la Rete come Rete Pubblica:

vedere2brete2bpubblica2bsu2bwindows2b8

Può essere stata l’installazione di un software, una cattiva impostazione del Windows Firewall, o un errore umano. Fatto sta che impostare la propria connessione a Internet come “Pubblica” ha questo inconveniente. Non sempre appare la dicitura “Rete pubblica” nel Centro Connessioni di Rete e Condivisione, ma anche l’assenza di una qualsiasi informazione sotto “Reti attive” è spesso indice di questo problema.

Fortunatamente la risoluzione non è complicata, anche se lascia perplessi l’assenza di un’opzione chiara nel pannello di controllo.

Ecco due sistemi per risolvere il problema.

Sistema Uno: Risoluzione Problemi attraverso Gruppo Home

  1. Aprire il Menu Start
  2. Digitare “Gruppo Home”
  3. Cliccare su “Avvia Risoluzione dei Problemi di Gruppo Home
    63541d1370860443-domanda-accesso-hard-disk-immagine
  4. Cliccare su Avanzate e togliere la spunta a “Esegui operazioni di ripristino automaticamente
  5. Cliccare Avanti
  6. Cliccare su “Risoluzione dei Problemi“.

 

Sistema Due: Utilizzo dell’Editor di Registro di Configurazione

  1. Aprire il Menu Start
  2. Digitare “Regedit
  3. Andare in HKEY_Local_Machine>Software>Microsoft>Windows nt>Current Version>Network List>Profiles>{GUID}”Category”
  4. Trovare il profilo corretto della propria rete nella lista che apparirà, quindi cambiare il valore “Category” da 1 a 0.

A questo punto verrà reimpostata la connessione come Privata e il problema sarà risolto.

 

Star Wars: Il Risveglio della Forza – L’identità di Rey

Per prima cosa: questo articolo contiene degli SPOILERS su Star Wars: Il Risveglio della Forza. Se non lo avete ancora visto, fermatevi ora e non leggete!

Siete ancora qui? Sicuri? Io vi ho avvertiti!

Una delle domande più pressanti scaturite dalla visione di Episodio VII è riguardo l’identità di Rey.

Ci sono due possibili teorie.

Rey potrebbe essere figlia di Luke Skywalker, specialmente perché toccando la sua spada ha la visione della Forza che riguarda sia lei sia Luke (evidenziando un forte legame fra i due), ma soprattutto perché nel primo trailer del film, Luke dice “La Forza scorre potente nella mia famiglia. In mio padre, in me, in mia sorella… e quei poteri li hai anche tu.” lasciando intendere che ci sia un nuovo membro della famiglia Skywalker.

1401x788-luke

La seconda teoria, invece, riguarda la possibilità che Rey sia invece sorella di Ben Solo e quindi figlia di Han e Leia.

han-and-leia-force-awakens-leia-and-han-solo-38968484-612-380

 

I motivi che spingono verso questa teoria sono diversi:

  • Quando il Millennium Falcon atterra su Takodana, Rey commenta su quanto non abbia mai visto “tutto quel verde”. Lo sguardo di Han sembra estremamente colpevole e triste.
    Come mai? Si sente responsabile della sua vita disagiata perché l’ha abbandonata su Jakku (per proteggerla da Snoke, in maniera del tutto simile a quanto accadde a Luke e Leia)? Sembra una ragione valida per mandare in crisi il rapporto fra Han e Leia.
  • Ben Solo appare ossessionato dalla “ragazza” sin da subito, in maniera che non sembra trovare giustificazioni. Che sia perché sa che si tratti di sua sorella?
  • Il punto principale che avvalora questa tesi risiede nell’abbraccio estremamente affettuoso e triste fra Rey e Leia alla fine del film. Risulta molto strano poiché Leia e Rey si vedono per la prima volta in quel momento. Sono due perfette sconosciute e sembra molto strano un abbraccio così affettuoso.
    Che Rey abbia capito di essere loro figlia quando Han muore (sia lei che Leia lo percepiscono anche attraverso la Forza)? Solo così si spiega l’abbraccio che altrimenti non avrebbe veramente senso.
  • Leia, poco prima che Rey parta alla ricerca di Luke, le dice “Che la Forza sia con te”, ma l’unico a sapere che Rey è Force Sensitive è Ben Solo! Leia lo percepisce perché entrambe sono delle Skywalker? Quanto detto riguardo alla possibilità che sia figlia di Luke vale anche nel caso in cui fosse figlia di Leia, naturalmente! Sono sempre parte della famiglia “Skywalker”!

L’attesa per Episodio VIII non sarà facile!