Technology Experience
Software

Aggiornamenti di Silverlight e problemi con Windows Update

Situazione iniziale:

  1. sul vostro PC avete installato Silverlight 3.0.40818.0
  2. aver perso in quel modo il file silverlight.msi che avete usato a suo tempo per l’installazione al punto (1)

Dunque, vedo di spiegarmi meglio. Quando installate Silverlight lo fate attraverso il file Silverlight.exe che avete scaricato dal sito ufficiale Microsoft. Dopo questo installer viene copiato dentro C:WindowsInstaller del vostro PC. Perchè? Perchè potrebbe servire successivamente, quando – ad esempio – volete disinstallare Silverlight, o quando – come è successo a me oggi pomeriggio – viene rilasciato un nuovo aggiornamento di Silverlight. Se avete cancellato (per sbaglio, volontà, stupidità, etc) questo file, o addirittura l’intera directory C:WindowsInstaller, siete fregati.

Windows Update già da ieri voleva installarmi la patch KB979202, un aggiornamento del 19 Gennaio scorso proprio riguardante Silverlight. Solo che non andava mai a buon fine. Nemmeno reinstallare da zero Silverlight serviva a qualcosa, perchè a metà strada l’installer mi chiedeva la posizione del file msi originale, che io non avevo più da nessuna parte sul mio hard-disk. Panico. L’ultima cosa che voglio è avere il mio PC con qualche malfunzionamento. 🙂

Soluzione, c’è sempre una soluzione
Tirare qualche parolaccia cruenta, perchè dà quella giusta carica per capire e trovare la soluzione.

Poi seguire i passi descritti a questo indirizzo. In breve: usate il tool Windows Install Clean Up per cancellare dal database di Windows Installer qualsiasi traccia di Silverlight, poi rimuovere dal registry qualsiasi traccia di Silverlight, poi cancellare manualmente la directory C:Program Files (x86)Microsoft Silverlight dal vostro PC.

Alla fine di tutto questo, ecco che magicamente l’installer scaricato dal sito riprende a funzionare: arriva fino in fondo senza problemi. E a questo punto anche la patch KB979202 viene installata tranquillamente.

Send to Kindle
Flight Simulation

[FSX] Collegarsi ad una sessione di volo in multiplayer

Questo post completa quello precedente, dove abbiamo visto come creare una sessione. In questo vedremo come collegarsi a questa sessione, chiaramente dopo che un altro pilota l’ha creata. Nota: a seconda del sistema operativo in uso, potresti trovarvi nella condizione di aprire le porte dei firewall software & hardware nel vostro sistema (questo sia che siate l’host che il client). Magari ce ne occuperemo in un altro momento in un altro post.

Adesso vediamo di arrivare al dunque.

Collegarsi ad una sessione di volo in multiplayer
La schermata iniziale di FSX è sempre la stessa:

Nel riquadro evidenziato in arancione digitate il vostro nome (che gli altri pilota vedranno accanto al vostro aereo), poi cliccate Accedi per proseguire.

Ok, a questo punto dovete indicare l’indirizzo IP del PC che sta ospitando la sessione in rete. Questo può essere sia un indirizzo IP locale interno alla vostra LAN, sia un indirizzo IP pubblico esposto su Internet. Nel primo caso, per conoscere l’IP dovete andare sul PC, e usare gli strumenti offerti dal sistema operativo installato (XP/Vista/7). Nel secondo caso, invece, l’IP vi deve essere detto da qualcuno. Ad esempio: i membri dei soci Piloti Virtuali Italiani hanno un server dedicato pubblico adibito proprio a questo scopo. L’IP mi è stato comunicato a suo tempo quando mi sono unito a questa associazione, tutto qua.

Inserito l’indirizzo IP, cliccate sul pulsante Trova Sessioni per proseguire. A seconda del grado di protezione impostato dall’host della sessione, potreste dover inserire la password di accesso.

Ok, qui ho evidenziato in fucsia qualche pulsante interessante. Qui dovete scegliere su quale aereo volare, e da quale aeroporto decollare. L’aeroporto può essere scelto tra queste tre opzioni:

  1. Da un aeroporto scelto dall’utente
    Nulla di nuovo, in questo caso. Potete scegliere nazione, città e aeroporto, esattamente come è stato visto in precedenza (cliccare qui per maggiori informazioni).
  2. In volo vicino all’ospite
    Supponiamo che l’host della sessione (che come abbiamo detto ieri, può volare anche lui), sia tranquillamente decollato da Sestri Levante (LIMJ) e, senza aspettarvi, si stia dirigendo a Milano Linate (LIML). Dopo un po’, vi collegate all’host, e lo fate mentre l’aereo dell’host è sopra Voghera (PV), diciamo…a 4500 piedi. Usando questa opzione, il vostro aereo viene posizionato accanto all’aereo dell’host (quindi sopra Voghera, a 4500 piedi). Non appena FSX vi mette nell’abitacolo dell’aereo, fate tutto quello che vi può servire per tenere l’aereo in volo. 🙂
  3. Dall’aeroporto più vicino all’aeromobile dell’ospite
    Consideriamo lo stesso scenario del punto (2) qui sopra. Usando questa opzione, il vostro aereo viene posizionato a terra, ma presso l’aeroporto di Voghera (LILH). Se l’aereo dell’host stesse sorvolando Torino, il vostro aereo verrebbe posizionato all’aeroporto di Torino. E così via.

Queste tre opzioni possono essere abilitate oppure no dall’host. Nel post precedente non abbiamo esplorato fino in fondo le possibilità, ma ci sono una serie di impostazioni che regolano appunto le libertà che può avere ogni partecipante della sessione in multiplayer. Le vedremo in futuro, se ci sarà bisogno.

Le altre impostazioni riguardano carburante & carico, piano di volo, nome ATC e così via. Notare che anche in questo caso ho lasciato spente le opzioni relative alle comunicazioni vocali.

Detto questo, fate le vostre scelte, poi cliccate su Ok per proseguire.

Abbiamo finito!! Non ci resta che cliccare Entra in sessione per entrare nel vostro aereo e volare con gli altri. Nella finestra sopra possiamo vedere l’elenco delle persone che si stanno connettendo (solo io, nell’esempio qui sopra). Oppure facciamo ancora in tempo a cambiare velivolo. Viene indicato da quanto tempo è attiva la sessione di FSX: in questo caso, 3 giorni, 13 ore, 7 minuti e 44 secondi (dopodichè Joshua lancerà le testate).

Tutto qua: sicuramente unirsi ad una sessione di volo è più semplice che crearla da zero. Ma ci sono tanti aspetti che varrebbe la pena di approfondire. Ad esempio, qualche domanda:

  1. ok, siamo connessi in 10 amici e siamo tutti all’aeroporto di Innsbruck. Come facciamo a riconoscerci?
  2. ok, vedo gli aerei degli altri, ma…come faccio a parlare con loro?
  3. è possibile volare in due sullo stesso aereo? magari io facendo il pilota, ed il mio amico il copilota?
  4. cosa succede se Tizio Caio acquista un aereo di terze parti, mentre io no? Come vedo quel determinato aereo sul mio PC, dal momento che localmente sul mio PC non ho la grafica di quell’aereo specifico?
  5. bla bla bla

Insomma, molte domande per adesso sono senza risposta. Ma le risposte ci sono, ovviamente, e verranno divulgate nei mesi a venire, pian piano e senza fretta.

Stay tuned!

Send to Kindle
Flight Simulation

[FSX] Ospitare una sessione di volo in multiplayer

Riprendiamo il discorso dedicato a Flight Simulator X. In questo post vi ho descritto come cominciare un volo libero. Essenzialmente, un volo libero è un volo che fate da soli, sul vostro aereo nel posto dove volete voi. A seconda delle impostazioni correnti di FSX (in futuro parleremo anche di questo) potreste vedere attorno diversi elementi: altri aerei pilotati dalla IA del vostro PC, automobili, camion, barche, traghetti, navi da crociera e via dicendo. Ma ci siete solo voi, con il vostro aereo, che potete combinare tutto quello che volete: dal volo pulito e lineare (consigliato), alle acrobazie più sfrenate con un Boeing 740 (non consigliato).

In questo contesto, il massimo grado di interazione che vi è concesso è quello di parlare con i vari controllori di volo messi a disposizione da FSX. E’ sufficiente sintonizzare la frequenza sul controllore di terra o sulla torre di controllo, ed ecco che potete richiedere il permesso di rullare, decollare, atterrare, etc. etc.: tutto quello che fareste su un aereo vero. Ma questi controllori sono solo simulati, e quindi comandati dalla IA del vostro PC.

Cosa succede se volete volare con altri amici nello stesso volo? E’ semplice: anche FSX ha una sezione multiplayer davvero molto evoluta. Potete quindi decidere di ospitare una sessione o di unirvi ad una sessione esistente.

In quest post descriveremo come creare una sessione in rete, disponibile ad altri piloti.

Come creare una sessione in rete
Avviate Flight Simulator X. Sul lato sinistro della schermata principale cliccate su “Sessione in rete”.

Se non volete utilizzare GameSpy (consigliato), attivate il pallino su Rete locale (LAN). Questa funzione – lo preciso subito – funziona anche via Internet. Inserite il vostro nome (io sopra ho inserito il mio codice ICAO). Poi fate clic sul pulsante Accedi in basso a destra per proseguire.

Nella schermata successiva cliccate sul pulsante Ospita una sessione (evidenziato in verde qui sopra).

Siccome siete gli amministratori di questa sessione in rete, qui cominciate a determinare un po’ le regole sulle quali creare questa sessione. Nella schermata qui sopra decidete quanto segue:

  • se la sessione deve ospitare un volo libero o una delle missioni pre-confezionate di FSX
  • il nome della sessione e la sua descrizione (in questo modo gli altri possono riconoscere la vostra sessione dalle altre eventualmente presenti)
  • una eventuale password per accedere alla sessione
  • le impostazioni nel riquadro Disponibilità sessione – lo dico onestamente – non le ho mai usate. Posso immaginare che determinano se la vostra sessione appare in elenco ai client (Rendi la sessione visibile a chiunque) oppure se invece è privata (in tal caso, il pilota che desidera connettersi vede sapere il nome esatto che avete impostato alla sessione)

Fate clic su Avanti per proseguire.

Anche se state ospitando la sessione di volo, non è detto che dobbiate rimanere a terra dirigendo gli altri. Niente affatto. E difatti qua impostate gli stessi parametri di un normalissimo volo libero fatto in locale: aeromobile, aeroporto di partenza, tempo meteorologico, ora e stagione. Per maggiori informazioni consultate questo post. E non solo: carburante, carico, piano di volo, etc. etc. Quando avete fatto, cliccate sul pulsante Avanti per proseguire.

Altri parametri minore della sessione: numero massimo di piloti, tempo di timeout, etc. etc. Un piccolo consiglio: disattivare la comunicazioni vocali di FSX, come mostrato sopra. Perchè? In questo post, un breve accenno: useremo un software esterno (TeamSpeak), che ha qualche caratteristica che ci può essere utile. Quindi, per risparmiare banda e velocità, disattivate tutto quello che riguarda le comunicazioni vocali. C’è anche un’impostazione dedicata alla condivisione dell’aeromobile, che per adesso non ci interessa. Anche il pulsante Opzioni avanzate per adesso non ci interessa.

Cliccate su Avanti per proseguire.

Vi sembrerà strano, ma avete finito. Sul lato sinistro dello schermo vedete l’elenco dei piloti attualmente connessi: per adesso ci sono solo io, I-ALTN. Man mano che gli altri si collegheranno, vedrete apparire i loro nomi. Tutto qua, è sufficiente cliccare sul pulsante Inizia Volo, in basso a destra, per entrare nell’abitacolo del vostro aereo.

Questo è quello che deve fare chi ospita la sessione. Fatto questo, vedremo nel prossimo post cosa deve fare il pilota che desidera unirsi a questa sessione in multiplayer.

Send to Kindle
Flight Simulation

[FSX] Qualche precisazione sulle intenzioni future

Ho cominciato un paio di settimane fa a scrivere post della serie [1/n] Volare e programmare con Flight Simulator X. Lo scopo di quei post era quello di fornire una intro al mondo della simulazione del volo con FSX, per poi passare a qualcosa di più succulento, come la programmazione con .NET all’interno di FSX.

Le cose sono cambiate. Avevo già creato la categoria Flight Simulation dedicata, ma ho intenzione in futuro di espandere il discorso e di scrivere un certo numero di post (pressochè tendente ad infinito) dove si parlerà di tutti gli aspetti di FSX, in ogni ambito. Ho deciso quindi di:

  1. cambiare il titolo dei quattro post già scritti in precedenza, mettendo qualcosa di più preciso rispetto al contenuto del post stesso (già fatto)
  2. nei post dedicati all’argomento Flight Simulator X comparirà il prefisso [FSX], così li riconoscete velocemente e potete skipparli se non vi interessano (già fatto, e comunque sarà così anche nei prossimi post, chiaramente)

Quindi, in futuro, sentirete parlare sempre più spesso di FSX: teoria, pratica, volo in solitario o in multiplayer, software di terze parti, scenari, aerei, programmazione, etc. etc.

Per problemi tecnici – tra l’altro – ho trovato qualche difficoltà a creare il filmato che vi avevo promesso nell’ultimo post, perciò salteremo questo argomento e mi dedicherò alla stesura di un post dedicato al volo in multiplayer, ovvero non in solitaria, ma con un gruppo di piloti connessi tutti allo stesso server.

Allacciatevi le cinture, si decolla!

Send to Kindle
Software

Se avete problemi ad installare i Catalyst 9.12

I Catalyst sono da tempo immemore i drivers per le schede grafiche ATI. Se avete scaricato l’ultima versione disponibile, la 9.12, potreste avere qualche problema, nel senso che…

  1. lanciate l’eseguibile scaricato dal sito
  2. il tutto viene scompattato nella solita directory in C:ATI
  3. poi parte l’installer vero e proprio
  4. scegliete i (pochi) parametri di installazione
  5. poi il tutto si chiude con un errore non meglio precisato

siete cascati nel problema. Come risolvere? A questo indirizzo si spiega che praticamente è possibile installare i drivers anche manualmente, da prompt di dos. Il comando è il seguente:

ATISetup –install –output SCREEN

Ovviamente prima dovete essere entrati nella directory temporanea, che di solito è nel formato C:ATISupportxxxxin64 (dove xxxx è la versione dei drivers appena scaricata).

Lanciandoli da linea di comando avete un output molto più dettagliato del solito, ed un report HTML delle modifiche apportate al sistema.

Send to Kindle
OT del Venerdì (Reborn)

[OT] del Venerdì (16)

Ebbene sì, lo confesso. Ho una maledetta paura delle cimici. Quegli insetti schifosi, puzzolenti, stupidi, verdi e marroni a seconda del giorno. E per giunta completamente incapaci di volare: spiccano il volo solo perchè il rapporto peso/potenza è a loro favore, ma sono totalmente incapaci di mantenere una traiettoria lineare e pulita. Se potessi, credo che volerei meglio io aprendo le braccia.

Mi fanno schifo e purtroppo – vivendo in campagna – li incontro molto spesso. Ne ho appena catturato uno in camera mia: ditemi voi per favore cosa ci fa un cimice in pieno gennaio in camera mia.

E non guardatemi storto: Dorian Gray aveva paura di invecchiare, Superman aveva paura della criptonite e Indiana Jones ha paura dei serpenti, e Igor Damiani ha paura delle cimici. Non so dirvi nemmeno il motivo esatto, davvero, probabilmente anche io da bambino sono caduto in una buca piena di questi insetti e da allora ho rimosso tutto.

Cosa succede se ne vedo uno. Dipende dal luogo dove mi trovo:

  1. metropolitana: modalità codardo completo. Lo lascio lì dov’è e mi allontano il più possibile.
  2. treno: modalità codardo. Lo lascio lì dov’è, rimango impietrito e lo marco a zona. Ma prendo in considerazione l’idea di poter fare qualcosa.
  3. sui capelli di una ragazza: modalità devo fare qualcosa. Inserisco questa voce perchè mi è successo davvero. Mi avvicino gentilmente, la avviso e lo scaccio nello stesso modo con cui lancerei una biglia sulla sabbia (pollice e medio, usando quest’ultimo come molla).
  4. abitacolo dell’automobile. Qui la modalità dipende: se l’auto è la mia, accosto immediatamente e lo scaccio con il metodo più appropriato. Se l’auto non è la mia, lo tengo d’occhio accuratamente e rimango terrorizzato.
  5. durante una pedalata in bicicletta: modalità suicidio istintivo. Abitando in campagna, d’estate ogni tanto vado a pedalare, e quindi capita di prenderli a 20/25 km/h. Lo spavento è così tanto che rischio di ammazzarmi per terra. Una volta se ne è fermato uno sul braccio, mentre andavo, e mi si sono rizzati tutti i peli dalla paura, sbandando incontrollato.
  6. in camera mia: modalità terrore. Camera mia è di mia competenza, so che comando io, ma la paura mi blocca. Sorveglio il cimice ogni 60 secondi, e cerco di capire se intendo volare scappare via. Dopo un po’, agisco. Per scacciarlo prendo un po’ di carta igienica e lo catturo, poi lo butto nel water. Che schifo!!!

Oggi vi ho svelato un lato di me che magari non conoscevate. Ma mi stavo chiedendo…voi di che cosa avete paura? Qual’è la paura maggiore per la categoria dei programmatori? Vale anche il dentista (vero, Gabriele?). Escludendo ovviamente le questioni puramente informatiche, del tipo…dei continui rilasci del framework, che mi esploda l’hard-disk e roba simile, insomma.

Send to Kindle
My personal life

2013: Invertite la tendenza, finchè è possibile

Questo è un post un po’ strano, perchè l’ho scritto nel 2013.

Se i miei calcoli sono esatti, voi dovreste riuscite a leggerlo solo a partire dalla tarda serata del 12 Gennaio 2010. Ho fatto i salti mortali per riuscire ad accedere nuovamente al mio account, ma alla fine ce l’ho fatta e son riuscito a bloggare.

Sono Igor Damiani, e se riuscite a leggere queste parole, ho solo una cosa da dirvi:
Benvenuti nel mio tempo.

Il 28 Febbraio scorso ho compiuto 36 anni. Mia moglie Giulia darà alla luce il nostro primo figlio tra un paio di mesi; sappiamo che è femmina, e la chiameremo Giorgia. In testa ho sempre più capelli bianchi. Ma non sono qui per parlare di me e della mia vita personale: sono qui per parlare di voi e del vostro mondo.

Negli ultimi tre anni, quindi dal vostro 2010 fino al mio oggi, la tendenza è stata invertita. I consumi di petrolio sono scesi gradualmente ogni anno del 35% e sempre meno alberi vengono abbattuti nelle foreste di tutto il pianeta. Greenpeace ha affondato tutte le baleniere cinesi. Da allora i bracconieri comunque non esistono più: la caccia alle balene non rende più, e adesso pian piano stanno ritornando a prosperare nei mari. I ghiacci dell’Artico godono di buona salute e non si staccano più in enormi iceberg vaganti: l’effetto serra fa sentire sempre meno la sua influenza, e la temperatura media del pianeta è stabile. I climatologi prevedono che se il trend continuerà ad essere questo, pian piano scenderà fino alla norma. Le automobili non inquinano più: non ho le competenze necessarie perchè: nel 2013 faccio ancora il programmatore. L’azienda per la quale ho cominciato a lavorare all’inizio del 2010 come dipendente è quotata in borsa: uno dei prossimi progetti a cui lavoreremo è l’ottimizzazione di Bing (che anche nel mio presente continua ad essere una ciofeca). La richiesta di risorse che chiediamo al nostro pianeta – inoltre – diminuisce sempre più: combustili fossili, legname, acqua, flora e fauna. Questo è dovuto ad un approccio molto diverso da parte delle politiche dei grandi Paesi del mondo, delle case produttrici di beni materiali di ogni tipo, dall’abbandono di quella forma malata di consumismo che vi sta logorando ogni giorno.

Anche noi informatici abbiamo fatto del nostro. Perchè? Ci vorrebbero troppe pagine per spiegarvi come. Sarei noioso. Vi fornirò i punti chiave. Nel 2010 la crescita dell’hardware si è interrotta, e gli sviluppatori di software, da Microsoft a tutte le altre, hanno imparato a sfruttare l’hardware che avevamo. Il software è molto migliore.

I processori Intel e AMD sono ancora quad-core, e sono gli stessi che avete voi sui vostri desktop.
ATI e nVidia hanno smesso di rilasciare nuove schede grafiche ogni 3 mesi.
Maxtor e Samsung hanno smesso di produrre hard-disk sempre più capienti.
Non ci crederete, ma … il FullHD nel mio 2013 è lo stesso che conoscete voi: 1920×1080.
Lo standard di comunicazione USB è ancora lo USB 3.0, e non sono previste nuove versioni.
Le fotocamere più evolute, Canon e Nikon, si sono fissate a 12MPixel.
Nokia, Apple, Sony-Ericsson, Samsung e tutte le altre hanno smesso di inventare nuovi cellulari.

Questi punti sopra non sono aspetti negativi, perchè – come dicevo – tutti noi programmatori abbiamo imparato a sviluppare molto meglio, a scrivere software più veloce e più efficiente, perchè conosciamo a menadito tutti i tips & tricks dei nostri ambienti di lavoro. Sto studiando l’assembler dei processori Intel: è di una complessità devastante, ma sapere che rimarrà lo stesso nei prossimi 8 anni, mi fa credere che è un investimento in tempo e denaro che possa convenire. Scriverò in codice assembler solo parti limitate dei miei applicativi, ma meglio di niente. Se ricordo bene, nel 2010 programmare in assembler era una pratica in disuso, giusto?

Tornando all’ecologia: avere hardware più stabile ha portato quindi a richiedere meno plastica, meno gomma e meno silicio al pianeta e ai produttori di hardware. Le aziende hanno smesso di creare prodotti e hanno smesso di infestare TV, giornali e città con pubblicità, convincendoci di aver bisogno dei loro prodotti. Il consumismo ha assunto connotati molto diversi, ed è molto diverso da quello che conoscete voi: so che anche il mio alter-ego (anche lui mi leggerà, ovviamente) è vittima di quel sistema.

La morale è che in soli tre anni, la Terra ci sta ringraziando e la qualità del nostro ecosistema migliora sempre più.

Cominciate il prima possibile, altrimenti questo post non potrà più essere valido. Entrerete in un futuro alternativo, dove nel 2013 le cose saranno ben diverse peggiori, dove non sono sposato con Giulia. E probabilmente la mia Giorgia non vedrà mai la luce. Se ce la farò, mi risentirete presto. Mi raccomando, confido in tutti voi.

Send to Kindle
My personal life

Da domani comincia una nuova avventura

Chi di voi conosce la mia vera storia? Forse qualcuno di voi sì. Vi faccio un riassunto breve breve.

Ho terminato le scuole superiori nel 1995, e sono uscito con un punteggio infimo, a causa delle regolari settimanali assenze, quando il venerdì pomeriggio c’era ginnastica, e io invece andavo a spasso per Lodi. Nel 1995 – dicevo – sono uscito dall’ITIS e un paio di anni fa dopo cominciavo a lavorare come dipendente. Causa tristi vicissitudini, nel 2001 mi sono licenziato (in realtà…la ditta è fallita) e mi sono messo in proprio. Nel 2001 è cominciata la mia attività di programmatore free-lance, sviluappatasi poi come vero e proprio consulente, saltando da un contratto all’altro fino a metà dell’anno scorso (2009). Tutte esperienze estremamente positive, a parte forse due mesi a giugno/luglio 2009.

In questo lungo periodo (2001-2009) ho ricevuto diverse proposte di assunzione, tutte rifiutate. Perchè? Perchè generalmente mi arrivavano da società di consulenza, e non da semplici software-house. Come consulente, uno è tenuto ad avere un certo bagaglio di conoscenze, deve continuamente rimanere aggiornato e – soprattutto – deve essere a disposizione per eventuali trasferte. Anche supponendo di lavorare come consulente/dipendente, magari tutti i giorni a Milano, c’è comunque un certo tran-tran che onestamente non ero più in grado di tollerare. Probabilmente i miei lettori più fedeli l’avranno intuito: sveglia alle 6:30 per essere in ufficio alle 9:00, uscita alle 18 per essere a casa un paio d’ore dopo circa. E tutto questo nelle condizioni migliori, quindi senza contare traffico, neve, scioperi, etc. etc. In qualche caso mi è capitato di scrivere qualcosa qua sul mio blog.

Quindi – morale – per tutta una serie di svantaggi, non ho voluto legarmi in modo particolare ad alcuna società.

A settembre ho avuto un magico incontro con alcuni vecchi amici di UGIdotNET. Quindi, allo scoccare della mezzanotte ridiventerò ufficialmente – dopo tanti anni – un dipendente. E i vantaggi non sono pochi: il progetto su cui lavorerò (in realtà ho già cominciato da diversi mesi) comprende fondamentalmente WPF + WCF + diverse conoscenze che mi piacciono perchè sono sufficientemente a basso livello. In più potrò lavorare al 90% da casa, tranne qualche trasferta in Valtellina.

Non pensate che mi vedrete sparire dal mio blog, anzi: la nuova avventura che sta per cominciare mi ha dato nuove energie e un nuovo modo di guardare al mio lavoro, perciò probabilmente sarò più attivo che mai

Stay tuned, insomma!!!

Send to Kindle
Flight Simulation

[FSX] Orientarsi nella cabina di pilotaggio: tasti, mouse e teoria

Se avete letto e seguito i passi che ho descritto nel mio post precedente, siete in grado di cominciare un volo libero, selezionando le quattro componenti minime e necessarie: velivolo, aeroporto di partenza, condizioni meteo e data/ora.

Riprendiamo da questo punto. Avviate FSX e cominciate un volo libero con i seguenti parametri:

  • Aeroplano : Cessna C172SP Skyhawk. FSX vi propone quello con la livrea bianca. Attivate la casella Mostra tutte le varianti per vedere tutte le altre. Io ho scelto quella arancione/nera.
  • Aeroporto : Sestri Levante, a Genovia, Liguria, Italia. Impostate come posizione di partenza la pista 11, così eviteremo il rullaggio e potrete decollare subito.
  • Meteo : Tempo sereno. Così evitiamo nuvole, pioggia e altre condizioni pericolose.
  • Ora del giorno : giorno, così FSX vi mette a mezzogiorno con il bel tempo. Meglio di così non si può avere. 🙂

Fatto questo, cliccate su Inizia volo ed aspettate il caricamento. Entro pochi secondi (minuti?) FSX vi posizionerà sul vostro Cessna, sulla pista, con i motori accesi e pronti a partire:

 

Prima di decollare veramente, qualche informazione preliminare è d’obbligo
Dunque, ci sono alcune cose da dire. La vista predefinita di FSX è quella del cruscotto del vostro aereo. Per dirla banalmente, state vedendo attraverso gli occhi del pilota, così come succede con i moderni giochi FPS (first-person shooter), da Doom in poi. Da questa vista, potete vedere la pista davanti a voi (lo vedete il numero 11 sull’asfalto, giusto?) e parte del cruscotto. Per guardarvi attorno, tenete premuto SPAZIO e muovete il mouse delicatamente. Dirigerete lo sguardo nella cabina dove volete voi. Ecco ad esempio una vista del lato destro del cruscotto (cockpit):

Questa funzione di FSX si chiama cruscotto virtuale, ed è una novità rispetto alle versioni precedenti di Flight Simulator. FSX è già sul mercato da qualche anno, perciò parlare di novità è un po’ fuorviante. Anche X-Plane, diretto concorrente di FSX, ha una funzione che – da quello che ho visto – è estremamente molto più semplice paragonata a quella di FSX. Aerei di terze parti, sviluppati ad-hoc, hanno implementato il cockpit virtuale in modo molto più realistico e più dettagliato. Ogni singolo interruttore fa quello che farebbe realmente su quell’aereo, e non è un eufemismo: è proprio così. Persino accendere i motori (sugli aerei di default basta un semplice CTRL+E) può richiedere diversi passaggi (pushback, avviamento dell’APU, valvole di accensione, riscaldamento, etc. etc.).

Girare lo sguardo all’interno della cabina serve proprio a questo, cioè ad accedere a tutti i comandi previsti su quell’aereo. Oppure, se state volando con altri amici via LAN o via Internet, serve per volare in formazione: ogni tanto deve buttare l’occhio per vedere se state andando addosso a qualcuno. Oppure ancora, se state volando in solitaria in VFR dovete ogni tanto controllare ciò che vedete dal finestrino per non perdervi: quindi adocchiare città, laghi, fiumi, colline e via dicendo.

Detto questo, passiamo a vedere gli altri tasti fondamentali per volare con FSX:

  • SHIFT+Backspace e SHIFT+Enter permettono di alzare/abbassare lo sguardo. Rispetto al cruscotto virtuale di prima, c’è una differenza: quando usate CTRL+Spazio la vista ruota, esattamente come se steste ruotando la testa, ma non cambia di posizione. Con SHIFT+Backspace e SHIFT+Enter, invece, la vista si alza ed abbassa. Perchè? Io trovo utile questa funzione in fase finale di un atterraggio, quando magari gli strumenti non mi servono più, ma ho più interesse a tenere d’occhio la pista con gli occhi. Alzo lo sguardo…comincio a vedere il muso dell’aereo e ho un punto di vista migliore. Un po’ come quando si parcheggia con l’auto: si alza la testa per guardare il cofano, avanzando lentamente fino a sfiorare il muretto di fronte a noi. Ecco due screenshot:
Vista alzata
Vista abbassata

 

 

 

  • Premendo il tasto S ciclate una serie di viste esterne: cruscotto virtuale (vista sopra), vista osservatore, vista dalla torre di controllo più vicina e ala destra. Quelle che uso più spesso sono ovviamente il cruscotto virtuale e la vista osservatore. Quest’ultima si presenta nel modo seguente:

Carina, no? Da questa vista potete usare l’hat del vostro joystick per girare attorno all’aereo. Ho scelto questa bella inquadratura per farvi vedere la pista ed il mare di Genova.

  • Premendo i tasti “+” (più) e “-“ (meno) potete zoomare (ingrandendo o rimpicciolendo) la vista corrente. Ecco cosa succede se uso CTRL+Spazio per puntare un certo punto del cruscotto virtuale e poi premo “+” un certo numero volte, fino ad arrivare ad uno zoom di 2.0 (lo vedete in alto a destra sullo screenshot).

Così avete un dettaglio infinitamente maggiore sui vari strumenti: velocità in volo, orizzonte artificiale, altimetro, virosbandometro, l’indicatore di prua e l’indicatore di velocità verticale. Basta premere “-“ zoomare all’indietro e tornare alla vista normale

  • Se in qualsiasi momento volete tornare alla vista normale, basta premere CTRL+Spazio ed il gioco è fatto.
  • F5/F6/F7/F8 impostano i flaps del vostro aereo.
    F5 : ritrazione completa dei flaps
    F6 : ritrazione di una tacca dei flaps
    F7 : estensione di una tacca dei flaps
    F8 : estensione completa dei flaps
  • F1/F2/F3/F4 impostano la potenza del motore (manetta).
    F1 : manetta al minimo
    F2 : leggera diminuzione della manetta
    F3 : leggero aumento della manetta
    F4 : manetta al massimo
  • Il tasto G (come Genova, appunto) ritrae/estende il carrello di atterraggio. Per questo volo non ci servirà, perchè il Cessna Skywawk C172CP ha il carrello fisso.
  • Shift+n, dove con “n” intendo un numero che va da 0 (zero) a 9 (nove). La funzione di questo tasto dipende dall’aereo che avete selezionato. Nel nostro caso, ad esempio Shift+2 apre il pannello delle radio, mentre Shift+3 apre il pannello GPS. Ecco ad esempio:

Piccola precisazione: il pannello radio, visibile in basso a destra sullo screenshot qui sopra, lo possiamo vedere e gestire anche attraverso il cruscotto virtuale. L’abbiamo visto prima: basta tener premuto Spazio, muovere il mouse e puntare sulla destra il pannello radio. Però in questo modo si perde la vista sull’ambiente circostante, per definizione. Così facendo, invece (e lo vediamo qui sopra) possiamo tenere gli occhi sul mondo davanti a noi, mentre in bella mostra possiamo impostare le frequenze radio, il transponder ed il pilota automatico, usando il pannellino aperto. Comodo!

Perchè si vede il mare?
Tornate per un attimo a qualche screenshot fa, dove si vede la pista ed il mare. Facciamo mente locale. Abbiamo detto prima che siamo sulla pista 11 dell’aeroporto di Genova. Pista 11 significa che ha direzione 110°. La pista opposta a questa è la 29, con direzione 290°. Attenzione: la pista è unica, solo che può essere utilizzata in entrambe le direzioni. Non contemporaneamente, ovviamente, altrimenti vedreste aerei schiantarsi in mezzo alla pista. Solitamente, gli aerei decollano controvento, e comunque sarà la torre di controllo che, quando vi autorizzerà al rullaggio vi dirà una cosa tipo: “Aereo Cessna, siete autorizzati al rullaggio, portarvi al punto attesa per la pista 11. Richiamare al punto attesa. Passo.”.

Torniamo a noi. Siamo a Genova e decolleremo con prua 110°, saremo diretti verso sud-est. Se avete anche una pur minima idea della geografia italiana, allora capite subito che alla nostra sinistra avremo le Alpi Apuane, mentre a destra avremo il Mar Ligure. Scaricando Plan-G, software gratuito che integra Google Map e FSX, le cose si fanno più chiare:

L’immagine qui sopra è linkata alla versione più grande. Si vede un aereo giallo presso la testata della pista 11: questo è il nostro aereo pronto al decollo, e come vediamo è puntato proprio verso sud-est, prua 110° circa. Si vedono altri tre aerei rossi: questi sono aerei simulati da FSX, pilotati dall’intelligenza artificiale. Se diamo potenza al motore (usando i tasti descritti sopra, oppure più semplicemente con la levetta sul joystick), l’aereo comincerà a prendere velocità. Plan-G aggiorna la vista automaticamente ogni 2 secondi, per cui vedremo l’aereo giallo cambiare la sua posizione man mano che il nostro volo procede.

Ecco, quindi, perchè si vede il mare nella Vista osservatore descritta un po’ più su. C’è il mare perchè è giusto che ci sia, e perchè lo vedrebbe un pilota in quel punto esatto.

Appuntamento al prossimo post, dove (magari con un bel video) faremo un bel girocampo ed atterreremo sulla stessa pista dalla quale stiamo decollati.

Send to Kindle
.NET WorldFlight Simulation

Ottenere la nazione date latitude e longitudine (con Google Map)

Qualche giorno fa ho postato sui miei account Twitter e Facebook una piccola richiesta di aiuto, subito accolta da tutti i miei amici, che mi hanno suggerito la soluzione. La espongo qua, perchè può essere utile a qualcun’altro. E siccome sono blogorroico, vi descriverò lo scenario all’interno del quale l’ha utilizzata.

Anche in questo caso c’entra Flight Simulator.
Vediamo come e perchè.

Supponiamo il diagramma seguente. Scusatemi, ma non ho avuto il tempo di farlo in scala (cit.), e quello che vedete qui sotto non rappresenta in alcun modo una cartina vera. E’ solo un esempio, ma basta ed avanza.

Il pallino verde è un aeroplano che sta volando da qualche parte nel mondo.
La freccia blu è la direzione che sta seguendo.
I confini rossi sono appena gli ipotetici confini di tre nazioni: nazione A, B e C.

Il diagramma sopra mostra quindi l’aereo che sta volando nello spazio aereo della nazione C. Ma sta volando nella direzione indicata, quindi prima o poi oltrepasserà i confini della nazione C ed entrerà in B.

Esiste un servizio Web che mi permette, date latitudine e longitudine, di sapere in quale nazione mi trovo?

La risposta è ovviamente sì. Mi è stato ovviamente suggerito Google Map, e così ho fatto, ottenendo il risultato che volevo. Per la documentazione del caso, rivolgetevi a questo url.

La versione breve è questa. Richiamando (anche da un semplice browser) il seguente URL:

http://maps.google.com/maps/geo?q=45,9&output=kml&sensor=false&key=your_api_key

ottenete uno Stream di risposta in codice KML.

Il parametro q nella querystring sono latitudine/longitudine, separate da “,” (virgola). Latitudine 45, Longitudine 9 è un qualche punto della Lombardia, precisamente Voghera (PV). Il parametro output indica il formato di output che vogliamo in risposta: kml va più che bene. Il parametro sensor è messo a false. Il parametro key deve riportare l’api key che avete richiesto direttamente a Google.

KML non è nient’altro che XML che, opportunamente parserizzato, vi restituisce tutta una serie di informazioni, tra cui anche il country name.

Prima vediamo il codice della mia classe GoogleMapLookupCountry:

   1:      public class GoogleMapLookupContry : ILookupCountry
   2:      {
   3:          KmlParser parser = new KmlParser();
   4:   
   5:          public string GetCountry(double latitude, double longitude)
   6:          {
   7:              string apiKey = "your_api_key";
   8:   
   9:              string countryName = string.Empty;
  10:   
  11:              string outputFormat = "kml";
  12:              string stringLatitude = latitude.ToString().Replace(',', '.');
  13:              string stringLongitude = longitude.ToString().Replace(',', '.');
  14:              string url = string.Format("http://maps.google.com/maps/geo?q={0},{1}&output={2}&sensor=false&key={3}",
  15:                  stringLatitude, stringLongitude, outputFormat, apiKey);
  16:              HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
  17:   
  18:              string kml = ServiceHelper.GetStringResponse(request.GetResponse());
  19:   
  20:              return parser.GetCountryName(kml);
  21:          }
  22:      }

La prima cosa da fare è registrarvi su Google e richiedere un’API key, da incollare alla riga 7 del codice qui sopra.

Il metodo GetCountry ottiene in ingresso latitudine e longitudine (in formato double). Alla riga 14 costruisco l’url da richiamare via HttpWebRequest. Notare che l’output che vogliamo ottenere da Google Map deve essere in formato KML: il parametro {2} all’interno dell’url indica proprio il formato di output, che nel codice è cablato a “kml” (riga 11).

Alla riga 18 nascondo un po’ di complessità: passo la WebResponse (ottenuta da request.GetResponse()) al metodo statico GetStringResponse che prende il byte[] e mi ritorna la stringa in caratteri ASCII. Tutto ciò finisce nella variabile string kml (riga 18).

Alla riga 20 passo il codice KML al metodo GetCountryName che restituisce appunto il nome in chiaro della nazione in cui mi trovo. Ecco il codice della classe KmlParser:

   1:  public class KmlParser
   2:      {
   3:          XmlNamespaceManager nsmgr;
   4:   
   5:          public KmlParser()
   6:          {
   7:              nsmgr = new XmlNamespaceManager(new NameTable());
   8:              nsmgr.AddNamespace("google", "http://earth.google.com/kml/2.0");
   9:              nsmgr.AddNamespace("address", "urn:oasis:names:tc:ciq:xsdschema:xAL:2.0");
  10:          }
  11:   
  12:          public string GetCountryName(string kmlCode)
  13:          {
  14:              string countryName = string.Empty;
  15:   
  16:              XmlDocument document = new XmlDocument();
  17:              document.LoadXml(kmlCode);
  18:   
  19:              XmlNode node = document.SelectSingleNode("//address:CountryName", nsmgr);
  20:   
  21:              if (node != null) countryName = node.InnerText;
  22:   
  23:              return countryName;
  24:          }
  25:      }

Non sto qui a descrivervi il codice riga per riga. Voglio solo fare questa annotazione: il codice KML restituito da Google dichiara il namespace specificato alla riga 8 del codice qui sopra (“http://earth.google.com/kml/2.0”). Prima di poter fare il SelectSingleNode (riga 19), dovete quindi istanziare un XmlNamespaceManager ed aggiungere i vari namespace che ci servono (nel nostro caso due). La ricerca tramite XPath, quindi, deve utilizzare “//” per selezionare il primo nodo che si chiama CountryName, indipendentemente da dove questo si trovi all’interno dell’KML, ma deve anche specificare il prefix per il namespace (“address”) e l’istanza di XmlNamespaceManager creata nel costruttore della classe.

Conclusione

Supponiamo di interrogare FSX ogni 60 secondi per chiedere la posizione dell’aereo. Otterremo la sua latitudine e la sua longitudine ogni 60 secondi. E’ sufficiente una piccola chiamata al servizio di Google Map ed otterremo la nazione in cui ci troviamo. Esempio pratico: decollate da Trieste ed otterremo ovviamente “Italia”. Dopo aver preso quota, virate verso est (direzione 90°) e quando entrerete in Slovenja, ecco che magicamente il servizio Google Map ci dirà – guarda caso – proprio “Slovenja”.

Detta così è una cosa banale e stupida, ma vi posso assicurare che si possono tirar fuori un certo numero di cose interessanti.

Send to Kindle