La donna che programmò due volte, prima in Java e poi in Kotlin: perché Android Studio é più facile da inquadrare di un film di Hitchcock!

 

web design umbria

Il film inizia con un flashback: l’eroe, se così possiamo definirlo, si lancia alla conquista di Android Studio e Java per creare App native sullo store dedicato. Installa il software su Acer con 8 di ram a disco meccanico con una capacità di hard disk limitata e un processore AMD per scoprire dopo fasi tormentate che gli emulatori virtuali per simulare il funzionamento di una App non girano di default sugli AMD (ossia per usufruirne bisogna trovare degli escamotage complicati) e anche che il dinosauro non gira bene su una macchina con caratteristiche così limitate. Flash-forward: Netflix mostra un famoso incipit fumettistico con vortici  di antimateria che ruotano a inghiottire personaggi vittime di fobie oscure, come quella di James Stewart per il vuoto, segnata da un dramma ancora irrisolto. Da qui in poi il film diventa un guazzabuglio barocco teso a risolvere l’enigma della belissima Kim Novak che non sa bene chi sia (o ci fa?) e così il novizio spettatore capisce dopo essere rimbalzato malamente su Android Studio che la comprensione della trama dispiegata nel film è molto più complessa che imparare a fare APP Native con Java e il suo ambiente di sviluppo. Quindi si ricomincia da zero, questa volta procurandosi una macchina SSD con 16 di RAM da un tera, degna delle iperboli creative del famoso regista maestro di Truffeaut. Da questo momento in poi gli inganni e i baci dei due protagonisti, insieme vittime e carnefici, si perdono nell’immortalità di una pellicola che ha segnato la storia del cinema, la donna che visse due volte o anche VERTIGO, regia del maestro inglese del brivido Alfred Hitchcock, anno 1958, approfondimenti su https://it.wikipedia.org/wiki/La_donna_che_visse_due_volte ; siamo quindi alle prese con la fase di preparazione dell’ ambiente, molto delicata prima di iniziare a scrivere codice e a verificare la consistenza degli emulatori. Intanto la prima cosa che si impara dai titoli di testa è che Studio Android funziona con Java, quindi la prima cosa da fare è scaricare comunque il nostro pacchettone dal sito della Oracle, indirizzo https://www.oracle.com/java/technologies/javase-downloads.html senza entrare nei misteri della java virtual machine e del convertitore JRE, Java Runtime, altrimenti l’effetto sarebbe come quello del detective Fergusson che guardando in basso ad altezze vertiginose si fa imbrogliare dai due gaglioffi incastratori. Superata l’ebrezza del vuoto come l’eroe nella sequenza finale, non resta che recarsi all’indirizzo https://developer.android.com/studio/ e superare anche l’ultimo trauma. Fortunatamente il tutto avviene in automatico e nell’ IDE viene implicitamente inserito anche il download da quasi 900 MB di byte del pacchettone SDK, software developer kit, cassetta degli attrezzi indispensabile per far girare tutti gli ingranaggi. Ok si sceglie dove installare e la trama si snoda senza torbide colonne sonore a evidenziare i momenti topici di tensione. Alla fine si arriva fino in fondo usando solo intuizione e pochi semplici click. Come epilogo non mi tocca come premio lo squisito bacio della Novak ma avrò pur sempre qualcosa che sembra funzionare, perché andando sul menù TOOLS alla voce AVD (manager di gestione dei device virtuali o anche android virtual device), aprendo posso scegliere, configurare e lanciare l’emulatore, senza dover consultare un terapeuta per la paura delle grandi altezze. Prima di fare questa operazione abbiamo ovviamente configurato un progetto in bianco per prendere familiarità con l’ambiente e vedere cosa riservava anche la voce SDK presente sempre sulla barra dei menù sempre alla voce TOOLS, dove é possibile configurare le varie versioni in modo da coprire tutte le opzioni di programmazione offrendo versioni di sviluppo variegate per colmare ogni esigenza. La IDE cambia spesso impercettibilmente nel tempo, per cui la navigazione grafica e il modo di utilizzo del software è soggetto a dinamici cambiamenti e l’installazione che era proposta ieri come sequenza di operazioni per configurare il tutto, oggi spiazzerebbe qualsiasi intrepido scalatore di campanili, come proposto dal genio del brivido londinese.

CONCLUSIONI di web design umbria: se hai problemi con le altezze, guardati VERTIGO ma se hai problemi con Studio Android per imparare a fare APP Native in Java, non pensare che non ci hai capito nulla perché a volte le trame a un primo impatto sono difficili da decodificare e servono almeno due tentativi, come la donna del titolo che installò due volte. A questo punto non rimane che sporcarsi le mani (nel senso propositivo del termine) con il codice, perché la fase di preparazione dell’ ambiente di sviluppo è felicemente completata. Per esempio potremmo cimentarci con le basi, il codice seguente per esempio é una classe che rappresenta un entry point che lancia la nostra prima activity (definizione di interfaccia grafica), ossia un layout di nome activity_main che è presente come risorsa all’interno dell’ oggetto R. Si noti come l’estensione della classe di lavoro AppCompatActivity presenta una sovrascrittura dei metodi presenti nella superclasse MainActivity che estende tutti i suoi superpoteri alle classi figlie estese:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Federer quando la fa facile e vince i tornei del Grande Slam con disinvoltura é simile a un carrello elettronico progettato con php, mysql e paypal?

Quante operazioni mentali compie Federer quando colpisce la palla? Sta giocando il tie-break decisivo del quinto set in un Grande Slam e ha un match point. L’avversario ha un servizio potente e imprevedibile, Federer aguzza lo sguardo da diventare un falco pronto a reagire alla minima sollecitazione. Quando la palla impatta verso il centro del campo Federer fa un balzo felino e calcola la traiettoria di arrivo: non solo, il corpo e i sensi si prepara non con l’esperienza e la migliore percezione di un superoe della Marvel a decidere in un istante la sorte della palla. Che cosa vuoi fare Federer limitarti solo a mandare la palla al di là della rete per deciderla al prossimo colpo? O vuoi tentare una magia che chiude il match? Federer scegli  in un millesimo di secondo la seconda opzione, sistema i piedi nel modo migliore, riesce a portare il colpo nel posto giusto al momento giusto trovando in velocità la postura corretta e il punto di rimbalzo della palla viene calcolato alla perfezione: il lungo linea che ne scaturisce è da urlo e passa l’avversario che aveva tentato di portarsi a rete per pareggiare l’incontro ma la palla finisce sull’ incrocio delle righe e Federer vince l’ennesimo torneo internazionale facendo sembrare tutto semplice, tempestivo e armonico quando in realtà la complessità che ha dovuto superare per arrivare all’ obiettivo non è roba su cui si può sorvolare. Immaginiamo adesso un utente che non trova un vino in commercio nel quotidiano e vuole acquistarlo on-line. Trova un e-commerce che gode di ottima reputazione in rete, si registra sul portale e seleziona i prodotti dal carrello elettronico. Ne prende diversi, poi ci ripensa, poi cambia le quantità e cancella alcuni ITEM e infine usando la carta di credito paga l’importo e deve solo attendere il corriere in settimana che gli consegnerà il tutto. Ci sono così tante differenze tra quello che ha fatto Federer in una frazione di secondo e quello che fa l’utente acquistando in rete completando un ordine velocemente con qualche click? Anche qui sembra tutto facile, ma quanta complessità ritroviamo tra le due situazioni? Nel primo caso abbiamo la percezione di un umano che fa un gesto atletico straordinario scegliendo in un istante tutta una serie di parametri che gli consentono di scoccare un colpo vincente (calcolo della traiettoria di arrivo, posizionamento del corpo dopo una corsa, imprimere forza sulla palla angolando in maniera perfetta la racchetta verso un punto che viene scelto con cura) mentre nel secondo caso abbiamo un utente che clicca sul pulsante abbinato al prodotto, passa una query pari all’ ID del prodotto, recupera le informazioni di prezzo dal database e aggiungo il prodotto alla variabile di sessione carrello/idprod con valore qta=1 e aggiorno la variabile di sessione tot_prezzo: infine mostro il contenuto del carrello. Ma non finisce qui perché poi recupero la variabile di sessione tot_prezzo. Aggiorno la variabile di sessione carrello/idprodotto con la nuova qta associata. Aggiorno la variabile di sessione tot_prezzo. Cancello la variabile di sessione tot_prezzo. Carico la pagina con il modulo d’ordine. Questo lungo parallelismo ci porta dove volevamo arrivare, le cose non sono mai facili come sembrano e anche quando sembra che sia tutto semplice andando a scavare nel backstage scopri che le dinamiche che fanno funzionare quel prodotto (che sia Federer o un oggetto come un carrello elettronico poco importa) sono sempre complesse anche quando ridotte all’ osso e con un click porti a casa l’ordine. Grazie all’ Ing. Copelli WEBSU https://su.video-corsi.com/ ottima piattaforma didattica abbiamo dato un occhiata a quello che significa in pratica questa complessità. Nel tutorial dove si simula la costruzione di un e-commerce usando tecnologie come php-mysql e paypal, abbiamo familiarizzato sulla cura e la meticolosità che servono per far nascere un progetto simile, qualsiasi cosa si voglia vendere. Tralasciando gli aspetti legali, burocratici e amministrativi che sono tanti e tutti da conoscere prima di rendere il proprio carrello elettronico un servizio pubblico, la fase di preparazione deve essere accurata e analizzata al dettaglio altrimenti si rischia di incappare nel blocco del programmatore, simile a quello dello scrittore, dove si sa come partire ma non si hanno le idee chiare su dove arrivare. Dovrò in sostanza pianificare una serie di azioni e mettere in piedi pagine, pulsanti e azioni che dovranno rispondere a esigenze ben precise. Dovrò inizializzare una variabile di sessione che al suo interno dovrà contenere alcune variabili come tot_prodotto e tot_prezzo e anche un array di dati composto da informazioni recuperate da un database di supporto come idprod1, id prod2 e le rispettive quantità. Dovrò preoccuparmi di tenere la variabile tot_prezzo aggiornata. Lo stesso ddevo fare per tot_prodotto. Dovrò prevedere una inclusione di pagine nel mio pragetto che in ogni fase mi mostrerà a video i dati aggiornati durante la mia navigazione, insomma una VISION è fondamentale prima di mettere in piedi un meccanismo vincente come il colpo deciso da Federer in una minuscola frazione di secondo. Stiamo parlando ovviamente di un tutorial didattico proposto da uno dei più validi formatori in circolazione sul territorio che dobbiamo considerare come ridotto all’ osso e vettoriale nella sua forma grezza, essenziale e minimalista alla Carver. Insomma figuriamoci a quante grane vado incontro se dovessi costruire un satellite che deve raggiungere Plutone! Memorizzando le variabili di sessione che sono una sorta di territorio protetto che conservano la flora e la fauna delle informazioni, in questo caso i nostri dati selezionati, svincolandoci dalle problematiche dei database che a noi servono solo per recuperare le informazioni unitarie, abbiamo così trovato la soluzione ai nostri problemi. Ma certamente la fase di preparazione non è ancora finita perché dovrò prevedere diverse funzioni in cui gli utenti risponderanno per fare delle cose. Gli utenti selezionano e aggiungono. Gli utenti in base alle loro scelte aggiornano il carrello. Gli utenti hanno dei ripensamenti e cancellano. Gli utenti infine decidono che ne hanno avuto abbastanza e comprano usando paypal e carta di credito. Fine della storia. Quindi per costruire il mio accrocchio avrà bisogno di particolari funzioni che svolgeranno compiti precisi:

una function add_prodotto()

una function update_prodotto()

una function del_prodotto()

una function show_carrello()

una function show_totale()

come ci suggeriscono i nomi delle funzioni add sta per aggiungere, update per aggiornare i dati dopo l’inserimento, del per cancellare a seconda dei ripensamenti dell’ utente e le due funzioni di mostra sono interattive come interfaccia grafica per l’utente che avrà sempre modo di modificare le sue selezioni. Non solo ma dovrò prevedere delle situazioni in cui le azioni sono guidate dalle scelte fatte dall’ utente: quinsi se l’utente fa x tu fai questo, se sceglie y, fai quest’ altro, se opta per x allora dirottalo su quella procedura a seconda dei casi update, delete o add. Ancora convinti che le cose semplici non siano anche complesse? Dovrò immaginare delle variabili di ingresso che entrano nelle pagine in base ai criteri sscelti dall’ utente e che queste variabili debbano essere cattuate e veicolate verso azioni specifiche in base a un meccanismo di trasmissione che avviene sulla url con il metodo get e di cattura. Vediamo ad esempio cosa troviamo in Home Page come contenuti:

-In alto per prima cosa ha le sue sessioni attivate, un pò di inclusioni e poi la funzione set_session() che dovrà abbracciare il valore delle nostre selezioni, accudire i dati selezionati e aggiornarli di volta in volta:

<?php
session_start();
include(‘include/libreria_carrello.php’);
include(‘include/db_inc.php’);
set_session();
?>

sempre in alto nella zona dedicata al carrello ci ritroviamo un <p class=”alignr”><?php show_totale(); ?></p> che tiene aggiornato il totale delle nostre spese. Sotto ci sarà una banale (si ha un pò di paura a usare questo termine dopo aver processato il braccio di Federer!) SELECT che fa ruotare i campi della tabella contenuta nel database mysql, collegato grazie all’ inclusione db_inc.php precedente, con la voce critica aggiungi al carrello. Questa voce è vitale perché:

<p class=”alignr”><a href=”mostra_carrello.php?action=add&idp=<?php echo $idp?>” >Aggiungi al carrello</a></p>

passerà a una pagina di nome mostra_carrello.php tramite il metodo get del punto di domanda una azione di richiamo funzione che prende l’id del prodotto selezionato e lo va a inserire nella nostra variabile di sessione che registra i nostri movimento per approdare infine al carrello. A questo punto è chiaro che abbiamo bisogno di una libreria di appoggio che conterrà delle funzioni ognuna delle quali impiegata per un compito specifico il file appunto incluso da include(‘include/libreria_carrello.php’); il nome da dare a queste funzioni dovrà essere esplicativo del lavoro che svolgerà lo snippet di codice, così su php show_totale(); non abbiamo nessun dubbio su dove vogliamo andare a parare. A questo punto senza vedere le altre pagine che fanno il lavoro sporco, ci siamo resi conto di avere raggiunto il nostro obiettivo che era quello di capire cosa c’è dentro la testa di Federer quando sferra un colpo vincente e porta a casa una partita e magari con essa anche un torneo di grande prestigio. In rete sulla storia di questo grande campione abbiamo molto materiale da sviscerare, vedere per esempio http://www.faccebook.eu/wp/2016/09/28/roger-federer-perche-e-il-piu-grande-di-roberto-dingiullo-recensione/ . Per questo turial di sperimentazione di Umbriaway Consulting é tutto. Per gli approfondimenti legati alla costruzione di un prototipo di carrello elettronico primordiale si consiglia l’iscrizione alla piattaforma del bravo Ing.Copelli https://su.video-corsi.com/

“Non ho mai battuto Federer, è troppo per me.
Ma magari quando lo affronterò nel Senior Tour …”
(David Ferrer, ex numero due del mondo, commentando l’inquietante conteggio negli scontri diretti con Federer: 0-16)

Blog su WordPress.com.

Su ↑