Figure professionali per il DEVELOPER PLATFORM usando il framework ASP NET: parte 3, personalizzare l’editor Visual Studio Code

Dopo aver visto i comandi da finestra terminale e da riga di comando con il comando dotnet seguito da qualche cosa e anche come installare pacchetti aggiuntivi con NuGet, approfondiamo Visual Studio Code, l’editor leggero e snello che ci consentirà di programmare in C# senza appesantire troppo il nostro hard disk, editor che abbiamo imparato a conoscere da https://umbriawayincrementa.wordpress.com/2020/09/03/figure-professionali-per-il-developer-platform-usando-il-framework-asp-net-parte-2-entrare-nel-vivo-con-i-comandi-dotnet-da-finestra-terminale-e-usifruire-di-pacchetti-aggiuntivi-con-nuget/. L’editor si può scaricare da https://code.visualstudio.com/ e l’errore che si fa spesso è quello di considerare questo editor in apparenza limitato alle potenzialità offerte da un ambiente integrato come Visual Studio. Grazie all’ uso di estensioni può supportare una enorme quantità di linguaggi e risolvere problemi tecnici tra i più svariati, nonchè migliorare la qualità della nostra programmazione manuale, basti pensare ad Emmet per esempio, indirizzo https://emmet.io/ ; Una volta aperto Visual Studio sulla sinistra presenta alcune voci di menù come la sezione HELP dove ci conviene dare una sbirciatina a INTRODUCTORY VIDEOS mentre sulla destra ci sono ulteriori approfondimenti da spulciare alla voce INTERACTIVE PLAYGROUND. Anche INTERFACE OVERVIEW è da visionare perchè spiega i cinque link a incona sulla barra laterale sinistra. Certamente l’ultimo riquadro delle estensioni è molto importante. Esiste una finestra terminale che si lancia con CTRL + ò da dove posso lanciare i miei comandi dotnet. Posso cambiare anche il tema e i colori anche usando la COMMAND PALETTE in alto e cercando THEME. Si lavora molto con gli short-cut ossia con le combinazioni di tasti. Per lavorare in C# devo installare l’estensione specifica e ricaricare per rendere effettiva l’installazione. Anche OMNISHARP va installato perchè invia il codice dall’ editor al compilatore funzionando da PONTE. In questo modo scrivendo il codice mi verrà suggerito il metodo che voglio applicare. Quando scrivo il codice se erro nella digitazione ho la possibilità di capire che cosa c’è che non funziona posizionandomi sopra e azionando omnisharp che indicherà l’anomalia da correggere. Poi abbiamo dei FIX utili per il refactoring con delle lampadine visualizzate che per esempio ci indicheranno delle using non più necessarie. Facciamo un piccolo riassunto sugli accessi rapidi:

  • con F1 apro la command palette di Visual Studio Code per le interrogazioni veloci
  • per aprire e chiudere il terminale integrato in Visual Studio Code CTRL+ò
  • Mostrare i fix per migliorare il codice e correggere gli errori si usa CTRL+.
  • Compilare l’applicazione CTRL + SHIFT + B
  • Per aumentare e ridurre lo zoom UI CTRL++ e CTRL +-

A questo punto dobbiamo investigare le capacità di debugging dell’ editor. Un BUG è un errore che abbiamo commesso e che dobbiamo correggere. Il debugger è uno strumento software che va a scandagliare il codice a caccia di errori. L’interazione è anche bidirezionale perchè posso forzare la chiusura del flusso in punti specifici per capire se fino a quel punto vi erano anomalie. Con F5 si avvia l’applicazione di debug. In alto compare una barra fluttuante che ci consente di stoppare o riavviare l’applicazione. Il breakpoint è un punto di interruzione così il debug si arresterà proprio in quel punto. Con F9 fisso i punti di stop. In questo modo posso ispezionare gli oggetti anche nei sottolivelli di difficoltà composti da altri oggetti e da altre proprietà. CTRL + S salva le modifiche e F5 ripristina l’applicazione. CTRL + SHIFT + F5 ricompila il codice e rende effettive eventuali modifiche. I breakpoint sono così definiti in wikipedia: “nell’ambito dello sviluppo del software, un breakpoint è un punto di interruzione nel codice di un programma, normalmente usato per scopi di debugging. Un breakpoint è sostanzialmente uno strumento che consente di eseguire un programma con la possibilità di interromperlo in punto desiderato oppure quando si verificano determinate condizioni, allo scopo di acquisire informazioni su un programma in esecuzione. In particolare, il programmatore può analizzare eventuali file di log, lo stato delle variabili o dei registri, e così via, per verificare se il programma funziona come previsto o, in caso contrario, per risalire alla causa del malfunzionamento (bug)”. Il pannello WATCH sulla sinistra è molto importante perchè copiando il metodo sul pannello scopriamo se la condizione VERA per esempio e non crea problemi.Con CTRL + T posso cercare codice specifico all’ interno dei file con il simbolo del cancelletto. Cont CTRL + SHIFT + O ricerco con il simbolo di chiocciola ma non tutte le ricerche fanno uso di simboli come per esempio il contenuto dei file XML. Tutto ciò per migliorare la navigabilità dell’ applicazione al posto di impazzire manualmente cercando i file individualmente.Con CTRL + P non ho prefissi e simboli e posso cercare direttamente i file. CTRL + G posso cercare per riga di codice, ricerca molto utile quando il compilatore segnala errori su un file alla riga Numero X per esempio. ALT freccia a destra o ALT e freccia a sinistra posso navigare tra le classi e i rispettivi file che la utilizzano, tutto ciò ci responsabilizza sull’ enorme varietà di tecniche messe a disposizione dall’ editor per navigare il codice senza fare diecimila click sui file, con gli short-cut e le scorciatoie da tastiera possiamo davvero velocizzare la nostra programmazione. RIASSUMENDO con Umbriaway Consulting: per aprire un nuovo progetto, clicchiamo il menu File > Open Folder…, oppure premiamo i tasti Ctrl+K e subito dopo Ctrl+O (questo è quel che si chiama un “accordo”). Infine selezioniamo la directory principale del progetto ASP.NET Core, ovvero quella in cui si trova il file .csproj. All’apertura di un qualsiasi file C#, se abbiamo già installato l’estensione C#, ci verrà proposto di creare la configurazione necessaria per avviare e debuggare l’applicazione con Visual Studio Code. Accettando, verrà creata una sottodirectory .vscode che contiene tutta la configurazione di build e avvio del progetto corrente. L’applicazione può essere così avviata in debug con il tasto F5. Visual Studio Code possiede una Command Palette, che consiste di una casella di testo polivalente che è richiamabile con varie scorciatoie da tastiera. In base alla scorciatoia usata, la Command Palette offre funzionalità diverse: Con F1 si predispone alla ricerca ed esecuzione di uno dei comandi disponibili in Visual Studio Code. Alcuni di questi comandi sono anche richiamabili dai menu (ad esempio: impostazione del tema per cambiare i colori e lo stile dell’interfaccia); con Ctrl+P permette di cercare e aprire file in base al nome; con Ctrl+T si attiva la ricerca per simbolo in tutta l’applicazione. Un simbolo è un elemento nel codice sorgente che possiede un nome, come ad esempio una classe, un metodo, una proprietà, un campo privato, una costante, un’enumerazione, un’interfaccia e così via; con Ctrl+Shift+O si cerca tra i simboli locali, ovvero definiti nel file di codice C# attualmente aperto; con Ctrl+G si può saltare alla riga indicata del file attualmente aperto.

I 64 percorsi della salute MTB, itinerario “c7”: da Colle di Nocera Umbra a frazione Isola via Molina, passando all’ andata dalla strada dell’ ex stabilimento Merloni oggi JP Industries e al ritorno da via Carticina e Gaifana

Come wikipedia testimonia, “la mountain bike (spesso abbreviata in MTB, acronimo di Mountain/Trials Bike o Mountain Trail Bike; in italiano, rampichino) è una bicicletta strutturata in maniera da potersi muovere anche fuori da strade asfaltate, sia in salita che in discesa“. Qui parliamo di un percorso schematizzato come C7 davvero turistico da fare senza particolari patemi e sofferenze, se non l’ansia di scegliere dove fermarsi per fare una foto suggestiva. E’ un percorso che ha due varianti sostanzialmente, perchè al ritorno il ciclista condominiale (ossia quel particolare atleta che non ha esigenze particolari di battere qualche record) può anche ritornare verso Colle di Nocera Umbra seguendo la via dell’ andata. Sostanzialmente parliamo di un tragitto che se effettuato in indole turistica assorbe un oretta di tempo, con circa 10/15 km da percorrere su un strade agevoli per lunghi tratti asfaltate e comunque location interessanti da vedere, al di là dei classici cartelli vendesi che affiorano spesso durante il percorso sintomatici di visionari scenari futuri permeati di città fantasma (la popolazione di queste frazioni inserite nel CAP 06025 é prevalentemente anziana). Ma per fortuna la bicicletta di suo può mettersi in gioco e valorizzare il territorio anche se non è periodo di felici congiunture astrali dal punto di vista economico: giunge voce alla redazione di Umbriaway Consulting che è in progetto la realizzazione di una lunghissima via ciclabile che dovrebbe valorizzare tutto l’appennino da Fossato di Vico a Foligno passando da Gualdo e Nocera Umbra con un ente regionale disposto a stanziare cifre impegnative per dare impulso a nuove soluzioni per il turismo. Inutile dire che frazioni come Colle di Nocera Umbra o anche quelle citate nella gita segnalata come percorso random “c7” (con particolare riferimento a un riquadro di una delle sessantaquattro caselle contenute in una scacchiera composta da un quadrato contenente otto colonne e otto traverse, soluzione che abbiamo usato grazie alle coordinate incrociate per dare ordine alla toponomastica dei percorsi possibili) diventano nel periodo che va da Maggio a Settembre dei luoghi fantastici paragonabili al Nexus del Comandante Kirk (a capo della mitica astronave della old serie Star-Trek, denominata NCC 1701 A) quando in Generazioni lo vediamo immergersi con un’ ascia in mano in una insana beatitudine in un Nexus autoreferenziale formato da valli verdi e casette agricole con tanta legna da spaccare: https://it.wikipedia.org/wiki/Generazioni_(film) , in ogni caso la formula BICI + TURISMO da rivitalizzare ha un successo automatico. Ma torniamo al percorso. Fatta la discesa della zona industriale di Colle che tanti fasti e splendori distribuì in passato, lasciando poi la botte vuota e la vigna a secco senza nemmeno la moglie ubriaca, ci si immerge nel bivio prima di quello di San Biagio dove troneggia la segnalazione Molina che dopo un paio di KM dopo una segheria sulla destra porta alla piazza centrale che riassume anche un aggregato compatto di tutto il paesello (inutile quindi fare domande sceme alla barista del tipo: “mi scusi ma a Molina come ci si arriva” perchè la risposta potrebbe essere imprevedibile e scontata). Per gli affezionati del regime gastro intestinale da fagocitare sulle due ruote la buona notizia è che vocabolo MOLINA dispone appunto di un Bar sulla piazza principale e con un occhio periferico mentre la pizzetta viene strafocata ci si accorge che il paese è tutto intorno all’ unica piazza, tanto che a pochi metri sulla sx troviamo anche una chiesetta. In ogni caso il luogo ha anche un ampio parcheggio ed è un oasi di serenità e di pace, proprio come si riscontra guardando il comandante Kirk assuefatto dal Nexus in Generazioni. Fatta una pausa a Molina per scattare qualche foto si riprende in sella la bici e si attraversa il ponte dove un acqua verde gorgogliante allieta il passaggio e si svolta a sinistra. Siamo di fronte a un percorso prevalentemente pianeggiante e dopo due/tre km si arriva in località ISOLA riconoscibile dalla presenza di un sottopassaggio. Superato il sottopassaggio si va a sinistra e dopo un km si può andare a curiosare sulla frazione ISOLA BASSA dove esiste la chiesa locale che è stata completamente ristrutturata dopo il terremoto e dove a fianco c’è una antica fontana, forse anche essa ristrutturata in stile antico, dove il ciclista può rigenerarsi e ritrovare ristoro riempendo la sua borraccia. Sopra la chiesa c’è ISOLA ALTA che data la nostra avversione per le salite troppo intense che procurano emozioni troppo forti abbiamo deciso di evitare, ne consegue che il percorso va ulteriormente ampliato ed esplorato perchè alcune voci di corridoio ad esempio asseriscono che da qui è possibile raggiungere la frazione di Ponte Parrano dove costeggiando la ferrovia si può percorrere una strada molto agevole fino alla stazione di Nocera Umbra Scalo (verifica da inserire in agenda come nota per le prossime gite, perchè in effetti le stradine che si snodano da queste frazioncine sono tante e sembrano portare ovunque!). Ok ti sei rigenerato con la fontanella locale, hai fatto le foto, hai respirato aria buona, prima ti sei sparato anche cappuccino e brioches e pizzette di rito davvero non ti resta che telefonare a KIrk , alias William Shatner, https://it.wikipedia.org/wiki/William_Shatner , per dirgli che lo sostituiamo nel Nexus per l’eternità! A questo punto il ritorno è agevole e piacevole come all’ andata e tornando al crocevia Molina siamo a un bivio, dopo due km a destra torniamo a Colle di Nocera Umbra transitando davanti a JP Industries che tanto bene fece in passato mentre a sinistra si procede verso il ristorante il Mulino e via Carticina per arrivare dopo circa 3 Km circa a vocabolo Gaifana, dove oltrepassato il Ponte e la via Flaminia con cautela (la sicurezza viene prima di tutto quando si va in bici) ci si immerge verso la famosa salita di Colle San Angelo che tanti problemi causa a tutti i ciclisti condominiali (almeno idealmente per la scomoda prospettiva che offre in origine) ma che non risulta però proibitiva se la si fa sempre con un atteggiamento turistico. Da qui si rientra a Colle Alto tramite la stradina di campagna tematica sulla destra in fondo alla salita. In sostanza abbiamo fatto una bella scorribanda visitando due frazioncine carine ricche di storia locale da approfondire e di scorci suggestivi che non conoscevamo senza affaticare con crampi la nostra muscolatura da sportivi condominiali che hanno da poco ripreso a pedalare. Il percorso c7 ha difficoltà zero sostanzialmente, le criticità sono sempre legate alla gestione della via Flaminia principale dove le auto transitano veloci, ma che in questo caso dobbiamo solo attraversare un paio di volte con attenzione senza percorrerla.

Android Studio, Java e Stanley Kubrick: trova le differenze

web design umbria

All indirizzo https://it.wikipedia.org/wiki/Stanley_Kubrick facciamo conoscenza più da vicino con Stanley Kubrick, non è un caso che sia stato integrato come modello conoscitivo per spiegare chi è Android Studio e cosa fa. Sappiamo che oltre ad essere uno dei registi al top nella storia del cinema, Kubrick ha anche fatto numerosi mestieri, come lo scenografo, lo sceneggiatore, il montatore video etc etc, tutte attività che ruotano intorno al mondo del cinema. L’analogia é chiara: la IDE di Android studio fa tutti questi mestieri per costruire un App nativa con java o kotlin, ossia impacchettata e organizzata così bene il codice sotto ogni punto di vista che gli manca solo la funzionalità di raccogliere ordini vocali per far risparmiare la fatica all’ umano programmatore. La verità è che comunque iniziare a programmare per fare APP NATIVE con JAVA non é facile e conoscere la forma mentis di Android Studio richiede tempo, senza contare i problemi di hardware, vedere per esempio articolo https://umbriawayvendita.wordpress.com/2020/06/03/la-donna-che-programmo-due-volte-prima-in-java-e-poi-in-kotlin-perche-android-studio-e-piu-facile-da-inquadrare-di-un-film-di-hitchcock/ dove si chiarisce che per gestire tutto fluidamente servono almeno 16 di RAM, per esempio. La prima parte di configurazione dell’ ambiente è stata risolta con l’articolo citato da web design umbria (ad esempio i processori AMD inibiscono la funzionalità di studio android di poter disporre di un device virtuale), adesso bisogna sporcarsi le mani e costruire una APP concretamente per vedere che tipo di disagio si richiede al neofita che inizia a familiarizzare con l’ambiente. La prima difficoltà è palese: java che è che si è meritato il primo posto della lista come linguaggio di programmazione, perché sicuro e adatto al modello enterprise aziendale, ha una curva di apprendimento dispendiosa e non é certo javascript come approccio, accomodarsi alle sue grazie non si ottiene con uno schiocco di dita anche perchè è il RE del paradigma OOP. Imparare Java è la prima difficoltà da superare e non è semplicissimo, analizziamo il seguente codice:

package eu.umbriaway.greatkubrick;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

public void esaltami (View v)
{
EditText et= (EditText) findViewById(R.id.kubrick);
Toast.makeText (this, “Great cult movie ” +et.getText().toString(),Toast.LENGTH_LONG).show();
}
}

web design umbriaA un primo impatto è come per Champollion decodificare i geroglifici, si vedono delle cose già abbastanza complicate come un ogetto che viene esteso con una classe su un figlio (AppCompatActivity) che eredità tutti i metodi principali e che ha potere di sovrascriverli con un @ovverride; ci vorrebbe una stele che semplifica il lavoro di criptazione! Forse l’unica cosa che si capisce è che chi ha fatto questa prima applicazione mobile sta lavorando su Kubrick per esaltarne il suo genio creativo con un activity che prende in ingresso una informazione immessa dall’ utente per restituirla tale e quale con qualche modifica in mezzo a un componente TOAST che nel mondo android è un metodo che spedisce a video un messaggio istantaneo. In sostanza il lavoro per mettere in piedi una APP primordiale è la prima volta duplice e ricorda un atleta che fa sollevamento pesi e che carica il suo fardello in due fasi distinte: da un lato cerca di sollevare il tutto da terra prima dell’ ultimo sforzo, poi raccoglie le energie e sincronizza il respiro per sollevarsi in posizione eretta e portare il peso in verticale sopra la testa. web design umbriaAnche noi dobbiamo procedere con questa logica: prima installare quello che serve, poi configurare l’ambiente con SDK e ADV in modo da avere anche un telefonino grafico per vedere come reagisce il nostro codice scritto e infine aprire un progetto, aprire la prima interfaccia grafica che vedrà l’utente appunto inserendo una nuova activity empty, poi collegare anche a questa activity la parte di codice java, il tutto senza dimenticare alcune sfumature: ad esempio quando si crea l’activity bisogna ricordarsi di fleggare in MainActivity presente nel file AndroidManifest.xml che è responsabile dell’ inclusione dei layout poi in fase di visualizzazione. Alla fine la nostra applicazione che cosa deve fare di fatto: saluta all’ inizio e dice qualcosa, poi propone al regista di segnalare il suo film migliore dopodichè la sua risposta sarà catturata in un contenitore variabile e riutilizzata come valore per estrapolare una frase simbolica tramite un COMPONENTE TOAST che ha la particolarità di lanciare un messaggio a video TEMPORANEO che può essere breve o lungo (qui abbiamo utilizzato la seconda cioé il metodo Toast.LENGTH_LONG ), solo per vedere se questa prima finalizzazione andrà in porto l’onere di costruire la prima APP come fa l’atleta con i pesi arrivando sul podio. Quindi quali elementi abbiamo bisogno di materializzare come prima APP? Lasciamo parlare direttamente l’activity_main presente nelle risorse alla voce layout:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:padding=”20dp”>

<TextView android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textSize=”20sp”
android:text=”@string/text”
android:layout_gravity=”center_horizontal” />

<EditText android:layout_width=”150dp”
android:layout_height=”wrap_content”
android:textSize=”20sp”
android:id=”@+id/kubrick”
android:layout_gravity=”center_horizontal” />

<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:onClick=”esaltami”
android:text=”Frasi Mitiche!” />

</LinearLayout>

Abbiamo quindi un LinearLayout, un componente TextView, un altro che riceverà i dati da memorizzare che si chiama EditText e servirà anche un pulsante BUTTON che farà il lavoro sporco utilizzando un evento da intercettare con il metodo onClick che metterà in moto una funzione che si chiama “esaltami” che vista in dettaglio suona come vista prima così:

public void esaltami (View v)
{
EditText et= (EditText) findViewById(R.id.kubrick);
Toast.makeText (this, “Great cult movie ” +et.getText().toString(),Toast.LENGTH_LONG).show();
}

ossia c’è una funzione pubblica che con il metodo VOID che richiama la superclasse View come argomento e che ritorna un valore di ritorno che è composto dalla invocazione della casella di testo et, variabile presente nell’ activity agganciata tramite un ID che va a pescare nella classe R identificativo id la risorsa di nome kubrik che dall’ altra parte , sull’ interfaccia grafica è dichiarata come android:id=”@+id/kubrick”. Ok respira , respira pensò l’atletà! Dopodiché l’istruzione seguente non fa altro che utilizzare il valore memorizzato per formare una stinga composita che viene materializzata in un FUGACE post. Quindi in realtà la difficoltà di tutta questa APP a livello di interazione dinamica sta tutta qua, anche se non è facile districarsi sulla parte di codice presente sul componente LinearLayout che ha come caratteristica quella di disporre gli elementi in orizzontale e in verticale. Per esempio queste due istruzioni iniziali sono molto importanti oltre che indispensabili dove match_parent sta a significare attaccati al parente genitore, ossia adatta la cornice al parent:

android:layout_width=”match_parent”
android:layout_height=”match_parent”

dopodichè possiamo anche dare un orientamento alla nostra cornice esterna con:

android:orientation=”vertical”

e posso anche impostare dei padding per esempio in dp che si usa per i layout

android:padding=”20dp”

mentre per la grandezza del font come testo si usa prevalentemente come unità di misura più performante sp, per esempio nel nostro EditText si legge:

android:textSize=”20sp”

si noti poi la differenza tra le seguenti due espressioni:

android:text=”Frasi Mitiche!” /> e
<string name=”text”>il tuo film migliore?</string>

web design umbriala seconda espressione attinge all’ armadio risorse, in un cassetto chiamato stringhe con un valore identificato come name=”text” mentre la prima crea al volo un testo senza estrapolare nulla da nessuna parte. Inutile dire che a livello di organizzazione di codice bisogna sfruttare la seconda soluzione. Del resto Android Studio dal punto di vista della compattazione del codice è impeccabile, tutto il contenuto di APP ha le sue sezioni specifiche cok repository e bisogna sare che espressioni del tipo setContentView(R.layout.activity_main); di fatto non fanno altro che estrapolare dalla cartella res, identificata tramite la casse R nella sezione layout l’activity che prende il nome di activity_main. Questo perchè abbiamo un luogo dove poter prendere elementi grafici, altri per settare i vestiti con i css, altri per inserire valori stringa e cassetti che si occupano di gestire i layout, insomma un universo complesso che all’ inizio crea molti dubbi del tipo: ma non ho modo più facile per creare APP? In questo ambiente mi sembra di avere a che fare non con una trama di un film di Kubrick ma con tutta la sua produzione contemporaneamente! Senza contare che l’interfaccia grafica di suo è molto complessa e che cliccando inavvertitamente nel posto sbagliato si finirebbe per modificare la stessa IDE con disorientamenti acuti a corredo e perplessità non facilmente risanabili. Android Studio è un pachiderma ma ha il vantaggio di essere molto sicuro e affidabile soprattutto se supportato dalla RAM! Qui di seguito segue la gallery che testimonia gli sforzi progettuali del neofita di fronte la sua iniziazione e il prodotto finale (alla fine è il risultato che conta) dove la centralità dell’ opera di Kubrick non può essere messa in discussione. Naturalemente siamo di fronte a un punto di partenza, qui è stato agganciato un solo evento senza traumi. Ma che succederà quando le complicazioni nel codice aumenteranno di intensità? Non resta che scoprirlo, cimentandosi alla conquista di pesi maggiori da valorizzare!

Questo slideshow richiede JavaScript.

Focalizza e migliora le tue competenze in qualsiasi ambito con la libreria javascript DRAGDEALER!

web designer umbria

Analizziamo il progetto implementato all’ indirizzo https://www.farwebdesign.com/projectdragdealer/ dove un gruppo di indicatori ognuno personalizzato ad indicare una disciplina, una materia, una conoscenza da far propria e assimilare si muovono FACENDO SOLO TRE PASSI una volta afferrati e trascinati (IN ALTERNATIVA si può ANCHE CLICCARE SULLA PARTE CENTRALE O FINALE PER SPOSTARLI senza dover trascinare gli elementi afferrandoli). Siamo di nuovo nell’ area di esplorazione tecnica del DRAG and DROP quindi, del trascina e rilascia, un tema caldo per tutti i frontend developer che devono sapersi destreggiarsi sull’ interattività dell’utente a video tramite javascript e jquery. A volte si hanno già a disposizione delle librerie esterne che se implementate diventano l’equivalente del signor WOLF di Pulp Finction, ossia risolvono i problemi in maniera indipendente (è questa la principale differenza tra framework e libreria, la prima mette a disposizione un ambiente di sviluppo connaturato al progetto che si deve mettere in piedi, vedi per esempio metodi messi a disposizione per bootstrap sulla parte grafica di stilizzazione o codeigniter per la parte di sviluppo php, mentre l’implementazione di una semplice libreria come per esempio https://github.com/fzaninotto/Faker che serve a generare contenuti fittizi per riempire dei prototipi, che magari arriveranno in produzione solo in un secondo momento, ha il solo e semplice scopo di risolvere un problema specifico). Prendiamo ad esempio la libreria DRAGDEALER scaricabile all’ indirizzo https://github.com/skidding/dragdealer che assolve a diverse funzioni di trascinamento, come si conviene alla sua traduzione letterale che ha a che fare appunto con l’invocazione che suona come commerciante di trascimanto (attenzione a non confonderlo con drugdealer!). Qui ci sono tutti i metodi in javascript per muovere degli oggetti (certamente l’uso di JQUERY UI è sempre da mettere in primo piano quando si vuole droppare qualcosa perchè il motto di questa tecnologia è scrivere meno, fare di più!) e ne vediamo un esempio lampante, dove il sottoscritto simulando una serie di competenze che fanno un percorso verso l’eccellenza (ci sono tre stedi, come i tre scatti del mouse durante il DRAG and DROP) passando dalle materie che sono da acquisire nel proprio skill per completare il proprio ruolo (nel mio caso quello di frontend developer ma può variare in base ai settori di competenza, non esclusi quelli sportivi dove le aree di miglioramento su dove intervenire non sarebbero penalizzate in una visualizzazione grafica, anzi, ne otterrebbero solo un grande beneficio) come punto di partenza per arrivare alla fascia intermedia dell’ approfondimento e delle conoscenza della tecnologia specifica, per approdare allo stadio finale dove il bruco diventa farfalla e ha assimilato nel suo iter in working progress tutti i target focalizzati nella mission iniziale. I movimenti del cursore grazie a una facile personalizzazione, sono facilmente variabili a seconda delle proprie esigenze, in questo caso la scelta di camminare solo tre volte per il bottone iniziale che si sposta orizzontalmente era in sintonia con la cover di sfondo che appunto contrassegna tre aree diverse di lavoro. In ultimo è stato inserito anche un operatore di avanzamento con caratteristiche diverse, che segnala la percentuale lungo il suo percorso in maniera dinamica. Questo è molto utile per fare una fotografia dello stato dell’ arte e rendersi conto a quale priorità dare alle materie che necessitano di interventi di acquisizione rapida per arrivare a centrare prima l’obiettivo. Il consiglio è quello di fare largo uso degli indicatori di avanzamento e molto altro messi a disposizione dalla libreria DRAGDEALER in tutti gli ambiti e le discipline, perchè la visualizzazione grafica sugli interventi da fare nel proprio settore per migliorare magari delle aree difettose è molto produttiva in termini di energie canalizzate nel modo migliore. L’esperimento di Umbriaway Consulting per implementare la libreria esterna e vedere l’effetto che fa all’ indirizzo https://www.farwebdesign.com/projectdragdealer/ ha finito anche per essere utile dal punto di vista pratico (il difetto delle scienze informatiche è che se sono disgiunte dalla quotidianità delle cose concrete perdono un pò il loro fascino e diventano noiose oltre che inutili in termini di tempo speso per imparare a padroneggiare la tecnologia) e non solo dal punto di vista didattico.

Ho comprato 3 libri di scacchi sulla pirc e 6 sulla owen per distribuirli ai miei alunni: allora stai programmando con un linguaggio che non è scomparso con i dinosauri!

Python è un linguaggio largamente diffuso e anche antico se vogliamo. Nato tra gli anni ottanta e novanta il suo modo di esprimersi ispira anche aggettivi come PYTHONIC per indicare un gergo incisivo. Si tratta di un linguaggio non compilato, quindi INTERPRETATO, viaggia su tutte le piattaforme e possiamo anche pensare di programmare ad oggetti. Pyton ha una struttura dati intermente basata su oggetti. Posso anche inserire moduli esterni nella nostra piattaforma di lavoro é quindi estensibile. Viene definito general-purpose ossia fuori dai contesti tradizionali, quindi si può integrare in qualunque campo. Può dare qualsiasi contributo in ogni tipo di progetto. E’ molto usato nei big data, flussi e analisi dati su larga scala. Usa i database e Python non è mai escluso ancora oggi dall’ utilizzo pratico. Si usa molto nel Machine Learning per obbligare una macchina a compiere le nostre acrobazie. Python ha una sintassi particolare, scarnificata all’ osso, non si vedono parentesi graffe per definire blocchi di codice, con la sola identazione si definiscono le istruzioni. Quindi salta subito all’ occhio una maggiore leggibilità. Usa in maniera invasiva solo i due punti e questo significa maggiore velocità nello scrivere codice e anche facilità di comprensione nel leggerlo. Python usa una console interattiva e questo rende felice molti programmatori che potranno invocare con il comando pyton la nostra interfaccia shell. Ci verrà mostrata la versione e siamo già pronti all’ utilizzo, ad esempio possiamo usare lo spazio come una calcolatrice del tipo 2 + 3 che definisce uno spazio di elaborazione. Per stampare in output una stringa usiamo print (‘ciao mondo’). Poi molto diffusa é la funzione help() che ci supporta per compiere determinate operazioni. Con quite() siamo di nuovo usciti dalla shell interattiva di Python. Quindi se volessi stampare a video il mio primo programma ufficiale nella forma più distorta per esempio? Ecco: print(‘il mattino ha l’oro in bocca’) . Ok ma ripartiamo dall’ inizio intanto andare su https://www.python.org/ dove c’è la sezione download e scarichiamo la versione giusta per noi che ci viene proposta dove alla fine si indirizza l’installatore verso https://docs.python.org/3.8/tutorial/ ; Il programma verrà installato in C:\Users\nomeutente\AppData\Local\Programs\Python\Python38-32 ; quando siamo sulla macchina ci accorgiamo che sul menù lista delle applicazioni in basso a sinistra ha aggiunto Pyton e che dentro ci sono varie opzioni oltre al manuale e la shell ide oltre la tradizionale finestra richiamabile da cmd. Noi clicchiamo sulla shell ideo o l’altra e siamo dentro. Se per esempio vorrei delucidazioni su come usare il comando print posso digitare:

>>> help(print)
Help on built-in function print in module builtins:

print(…)
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
>>

il vantaggio di lavorare sulla ide è che posso avere in alto la famosa barra dei menù dove posso produrre per esempio dei file esterni digitando per esempio nuovo e scrivendo al suo interno le istruzioni, per esempio print (‘il mattino ha l’oro in bocca’), scelgo dove salvare e per eseguire faccio open semplicemente da ide (ambiente di sviluppo integrato). Per eseguire il programma devo andare sul menù RUN e scelgo la prima azione RUN MODULE al chè lui parte ad elaborare il contenuto della nostra istruzione che in fase di esecuzione di darà errore! Perché? Ci segnala una anomalia sull’ apostrofo che ovviamente crea conflitti con gli altri due apostrofi che delimitano la stringa. Noi che conosciamo PHP a livello condominiale abbiamo intuito che per risolvere il problema bastava inserire un carattere di escape correggendo l’istruzione in print(‘il mattino ha l\’oro in bocca’) e a video comparirà come per magia il risultato finale di tutte le nostre elucubrazioni:

================== RESTART: C:\Users\Nomeutente\Desktop\oro.py ==================
il mattino ha l’oro in bocca
>>>

Ricordiamo che in rete ci sono ottimi siti che spiegano bene questo primordiale linguaggio di programmazione, come per esempio https://www.w3schools.com/python/default.asp; il comando eseguibile può essere lanciato anche dall’ esterno per esempio desktop digitando pyton nomefileconestensionepy oppure in altri casi python seguito da nome versione e nome file. Può accadere che in fase di installazione vengano riscontrate delle problematiche sul path del file windows che manda in esecuzione i programmi. In questo caso come consigliano sempre i tecnici più pagati che quando vengono interpellati suggeriscono di spegnere e accendere il computer per resettarlo, noi ci limitiamo a suggerire di cercare in rete le risposte da parte di chi ha affrontato l’analogo problema. Bè adesso possiamo alzare il tiro, facciamo un programma serio che chiede una informazione e mi rispedisce indietro una affermazione, scriverò quindi nel mio file caruana.py:

name = input(‘Ciao, come ti chiami?\n’)
print (‘Bravo se non andavi in America restavi terza naz eh %s.’ % name)

quando mando in esecuzione il tutto lui prima mi chiede il nome e poi arriverà una frase di ritorno come un boomerang, a video vedrò:

================ RESTART: C:\Users\Umbriaway\Desktop\caruana.py ================
Ciao, come ti chiami?
Fabiano
Bravo se non andavi in America restavi terza naz eh Fabiano.
>>>

Portentoso questo linguaggio sembra di giocare con il basic dell’ era dinosauri! Adesso ci stiamo provando gusto proviamo qualcosa di più forte:

prices = {‘pircbook’: 12.40, ‘owenbook’: 11.50}
my_purchase = {
‘pircbook’: 3,
‘owenbook’: 6}
book_bill = sum(prices[book] * my_purchase[book]
for book in my_purchase)
print (‘I owe the pusher $%.2f’ % book_bill)

sostanzialmente sono andato dal libraio di fiducia a comprare un pò di libri di scacchi da distribuire ai miei alunni e a video verrà emessa la fattura:

================== RESTART: C:/Users/Umbriaway/Desktop/wow.py ==================
I owe the pusher $106.20
>>>

per una analisi dettagliata della sintassi base di Python rimandiamo a una prossima sintassi con un altro post tematico sui portali Umbriaway Consulting, per ora abbiamo fatta parecchia strada, abbiamo visto come installare, come scrivere i primi programmi, come salvarli su file esterni e mandarli in esecuzione. Roma non è stata costruita in un giorno. Per sparare un satellite su Plutone con Pyton serve ancora da guardare in dettaglio la sintassi!