Territorio, storia, cultura: conoscere le risorse che hai sotto casa con GLOCAL Web-App. Come mettere in moto un progetto con Codeigniter, puntata N 25

Glocal un progetto in …working progress

Riassunto delle puntate precedenti

Il periodo è caratterizzato dal punto di vista professionale da schiaffoni rubicondi, ormai nel mio caso non si parla più di resilienza ma di immortalità acquisità anche se vivo in un mondo alternativo opalescente da romanzo di fantascienza! Dopo un pò le creature degli abissi sviluppano la sconcertante capacità di adattarsi anche in contesti…particolari, ma in questo caso quando ti tolgono qualcosa (per la seconda volta quelli del CED di Macerata e di Adecco sono riusciti a discriminarmi per l’ammissione a un corso che avrei voluto fare a causa probabilmente della mia età anagrafica o di altre incapacità acquisite). Di fronte a questi “sgarbi” del modello globalizzato non resta che rispondere con i fatti e con rinnovato impegno per dimostrare che le loro valutazioni di mummificazione discriminanti sulla mia figura sono in realtà frutto di errate e infelici accostamenti. Per la serie come incanalare rabbia e infelici incazzature in favore di una crescita professionale! Intanto se vogliamo citare anche un film potremmo parlare di Qualcosa è cambiato con Jack Nicholson perchè si notera che il titolo da questo report si mostra con una differenza sostanziale pur restando sempre uguale. Segno che la nostra WEB-APP è arrivata a un punto di svolta!

Elenco moduli

http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/areas

Elenco Articoli

http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/posts
Il FORMAT del titolo è cambiato, segno che le cose si evolvono!

Ritrovata la motivazione per RI-partire? Bene allora cosa c’è di nuovo?

Abbiamo fatto cose nuove perchè c’è molto da lavorare per rafforzare il mio cv da web designer e portarlo verso quello di web developer! Per esempio questo modulo esterno con JS che fa il monitoraggio e traspone con i numeri l’impegno nelk quotidiano può diventare una felice integrazione con una tecnologia lato server come il framework codeigniter? Parliamo di:

http://umbriawayformazione.altervista.org/uwcode/glocal_counter/

Poi però abbiamo scoperto che JavaScript (lato client) e PHP stanno bene insieme, infatti è nata anche una nuova sezione dinamica dove i valori vengono passati grazie a una tabella di supporto:

http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/info

Qui è possibile sapere tutto dell’ applicazione, vita, morte e miracoli, un ciclo di vita che si concretizza estrapolando ore e giorni lavorati, cose fatte e in che quantità e persino il volume di crescita dell’ applicazione espresso in MB! Come si può vedere il glocal_counter con html+css+js+php+mysql è l’apeteosi della commistione valorizzata tra più tecnologie che cooperano all’ unisono in un MECCANISMO FONDAMENTALMENTE SEMPLICE DA STUDIARE con un approccio leonardesco (intendo la sua concezione di macchina, non certo il suo genio). Quindi vediamo come si esplica il totale di ore lavorate per esempio

Il Glocal Counter, come funziona?

Bella domanda, Leonardo sarebbe uscito di testa come entusiasmo per vedere quale magica interazione corre tra JS e CSS in questo script, vediamo il pezzettino di HTML statico che tira fuori le ore lavorate per esempio:

<div class="nome-container">
<i class="fas fa-user-clock fa-5x"></i>
<div class="timecounter" data-target="<?php echo  $array->hour ?>"></div>
<h4>Ore lavorate sul progetto fino al <?php echo  $array->time ?></h4>
</div>

Il database dal modello spara i dati al controller che spara i dati alla vista che materializzerà i frammenti di tabella (campi) interessati per una rappresentazione a video grazie alla logica degli array. Infatti rispetto al codice visto sopra, dobbiamo pensare che prima del div iniziale e dopo la fine del div dell’ ultima riga abbiamo i delimitatori di un ciclo FOREACH / ENDFOREACH che di fatto non fa altro che stampare a video i record nel punto indicato (istruzione echo). Javascript per fare le sue interazioni si appoggia interamente sul CSS che modella il nome delle classi dei DIV, vediamo la sua psicoespressione:

const counters = document.querySelectorAll('.timecounter')

counters.forEach(counter => {
    counter.innerText = '0'

    const updateCounter = () => {
        const target = +counter.getAttribute('data-target')
        const c = +counter.innerText

        const increment = target / 200

        if(c < target) {
            counter.innerText = `${Math.ceil(c + increment)}`
            setTimeout(updateCounter, 1)
        } else {
            counter.innerText = target
        }
    }

    updateCounter()
})

Qui ci sono molte cose interessanti da analizzare e da acquisire per capire JS a un primo livello. L’istruzione:

document.querySelectorAll

è come una pinza meccanica (immaginiamo una autorimessa con vecchie auto da rottamare in una zona predisposta, per questo abbiamo citato in precedenza Leonardo, per la sua passione per le macchine) che va a identificare tutt gli elementi di classe definiti come timecounter. La costante dichiarata con const andrà ad agire in quell’ ambito di identificazione. Il contatore ovviamente parte da ZERO. A questo punto si capisce che per far scorrere un range di numeri avrò bisogno anmche di una costante che rappresenta il punto di arrivo per il ciclo che scorre e stampa a video i valori, per cui entra in scena una costante TARGET che va a prelevare l’informazione scritta nel data-target , ossia il valore finale da mostrare a video. A questo punto entrano in scena due nuove costante C che rappresenta il punto di inizio per lo scorrimento e INCREMENT che deve far ruotare il tutto fino al valore TARGET. Poi intuitivamente come va da sè pensare che ciclando tutte le mie costanti ottengo lo scorrimento dei dati! Da notare che c’è anche una funzione CEIL che di fatto restituisce un intero. FACILE NO? Lo script è molto utile perchè sono i numeri a determinare se qualcosa funziona oppure no in termini di sviluppo e di crescita da monitorare! ATTENZIONE: lo script va messo in un punto preciso della pagina altrimenti non funzionerà, sta allo sviluppatore di buona volontà scoprire dove!

L’integrazione fatta in http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/info è da applauso perchè passa i parametri dinamicamente tramite PHP che attinge con Codeigniter a un DataBase!

Mosse a tripla funzionalità!

Ok è proprio il caso di dire che GLOCAL sta ripartendo. Da un lato possiamo migliorare le nostre applicazioni e imparare cose nuove rafforzando il CV, dall’ altro possiamo investigare qualcosa sui contenuti (se c’è la storia di mezzo ricordiamoci che la scrittura creativa è sempre viva sotto le ceneri) e dall’ altro possiamo anche stare meglio con il fisico, visto che il portale parla di ecologia, trekking e alla fine anche di salute (indirettamente). Di solito negli scacchi ci sono mosse a doppia funzionalità, ma qui con GLOCAL, http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/colleview , si va oltre! A prposito, visto che dobbiamo studiare meglio JavaScript e il modo migliore di farlo é USARLO NELLA PRATICA, abbiamo tanto per iniziare scaldato i motori a http://umbriawayformazione.altervista.org/ci_project_glocal/index.php dove abbiamo caricato l’evento OLOAD con un ALERT direttamente nel BODY:

Dalla teoria alla pratica, quale modo migliore di consolidare JS se non…facendo?
<body onload="alert('Benvenuti nel progetto di valorizzazione territoriale Glocal!')">

questa riga di codice è più elegante rispetto al tradizionale:

<script>
alert ('benvenuto');
</script>
ok e nel frattempo i lavori di ricerca vanno avanti!

Cosa bolle in pentola nella prossima puntata?

All’ indirizzo http://umbriawayformazione.altervista.org/uwcode/colle_slider/ ne abbiamo combinata un’ altra, abbiamo messo in piedi per motivi didattivi un efficace background-slider, si tratterà di vedere in dettaglio come funziona nella pratica. Per esempio una istruzione come:

document.getElementById("start").innerHtml='scrivi questo testo in corrispondenza di un punto preciso';

può sparare come una pistola il testo desiderato in corrispondenza di una zona precisa che posso posizionare dove voglio con:

<div id="start"></div>

JavaScript è case sensitive e usa la classica notazione di scripting a gobba di cammello caratterizzata dalla prima parola chiave minuscola seguita subito dopo da una maiuscola. Per concatenare le stringhe non usa il punto come php ma il simbolo +; le variabili locali all’ interno di una funziona non sono riutilizzabili mentre quelle esterne definite globali si.

CONCLUSIONI

Malgrado riscontriamo ancora problemi con i protocolli di sicurezza sul sito hosting che ci ospita (da risolvere), di fatto dopo qualche inevitabile esperienza che ci vede parte angherizzata e oppressa dalla BCE a pozzanghere liquide (mitica rimane la selezione di fine febbraio dove prima ti dicono di richiamare dopo il superamento del primo step e poi ti bollano come eretico, bravi SPRING PINKO PALLO!) come da modello economico espresso da Bauman, siamo riusciti seppure ancora barcollanti a rimetterci in carreggiata. Basta vedere anche i contenuti espressi da questo articolo e confrontarli con quelli più scarni e di circostanza delle puntate precedenti. Segno che la WEB APP GLOCAL ottimizzata per risoluzione DESKTOP sta crescendo, malgrado tutto, su tutta la linea e gli argomenti da approfondire sono tanti, tipo il DOM per esempio che ci consente di modificare dinamicamente gli elementi-nodi della pagina!

Prossimo obiettivo legato a GLOCAL: rinforzare JS con un corso Udemy da completare nei prossimi giorni, con materiale da studiare e riadattare per le esigenze pratiche!

Territorio, storia, cultura: conoscere le risorse che hai sotto casa con GLOCAL Web-App. Come mettere in moto un progetto con Codeigniter, terza puntata

Glocal alle prese ancora con la parte statica

Il link del progetto in working progress
http://umbriawayformazione.altervista.org/ci_project_glocal/

Riassunto delle puntate precedenti

All’ indirizzo https://umbriawayinfo.wordpress.com/2021/03/06/territorio-storia-cultura-conoscere-le-risorse-che-hai-sotto-casa-con-glocal-web-app-come-mettere-in-moto-un-progetto-con-codeigniter-seconda-puntata/ abbiamo visto nella seconda puntata come sistemare un template adesso dobbiamo soddisfare le nostre curiosità legate alla parte statica.

Problem Solving

Quindi seguendo le modalità espresse dall’ articolo io posso agganciare qualsiasi altra pagina oltre alla index? Anche se ho per le mani una Ferrari (codeigniter framework) in questo momento desideriamo capire se almeno ai primordi del suo utilizzo posso almeno assicurare le funzionalità basiche al mio sito linkando pagine semplici statiche

La pratica

Quindi facendo riferimento alla fonte dei template indicata nel primo articolo prendiamo la nostra nuova pagina e la chiamiamo gallery.php con l’idea di vedere se dalla home posso visualizzarla con tanto di foto. Metto quindi il link sulla navbar in alto:

<li>
<a href="http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleNoceraUmbra/photos">Photos</a>
</li>

In questo link seguo la sintassi MVC voluta per convenzione dal fremowork che mi impone di inserire URL BASE seguita dalla index e dal NOME DEL CONTROLLER e dal METODO indicata dalla funzione, quindi sul CONTROLLER aggiungerò una function publica:

public function photos()
{
$this->load->view('gallery');
}

Apriamo una parentesi su come usare i link con codeigniter

Sopra abbiamo usato un link come http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleNoceraUmbra/photos ma è una operazione sacrilega, così non sfruttiamo la potenza del framework. Qui abbiamo a disposizione due modi alternativi per fare le cose ossia:

<a href="<?php echo site_url();?>/ColleNoceraUmbra/photos">Photos</a>

che equivale a:

<a href="http://umbriawayformazione.altervista.org/ci_project_glocal/ColleNoceraUmbra/photos">Photos</a>

e

<a href="<?php echo base_url();?>/index.php/ColleNoceraUmbra/photos">Photos</a> 

che riprende quanto contenuto nel file config.php presente nella cartella config:

$config['base_url'] = 'http://umbriawayformazione.altervista.org/ci_project_glocal/';

e che equivale a:

<a href="http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleNoceraUmbra/photos">Photos</a>

La differenza tra i due metodi consiste che site_url() include anche la pagina index.php mentre base_url() si porta dietro solo quanto memorizzato nella stringa del file config e index.php va aggiunto nel link. IN SOSTANZA usando SITE_URL() non abbiamo necessità di includere la pagina index che viene già catturata di default, mentre non è così per BASE_URL()

La costruzione del template

Per tirare su il template della gallery non facciamo altro che seguire i consigli delle puntate precedenti ma a questo punto ecco sopraggiungere una amara sorpresa: quando andiamo a visualizzare l’URL indicato dal link che porta alla gallery il sistema ci dice che non trova nessuna pagina, indicando proprio il fatto che non esiste.

PANICO ASSOLUTO, come COMBATTERE CONTRO LA STREGONERIA

In informatica succede spesso, ogni tanto qualcosa misteriosamente non funziona, allora come in questo caso vai a vedere in tutti gli angoli del controller e della vista se hai scritto giusto quello che dovevi scrivere o se non hai commesso qualche errore plateale. Hai rispettato le regole di codeigniter, hai aggiunto la nuova pagina al controller senza il MODEL perchè non abbiamo necessità di spedire nessun dato dal DB alla pagina ma anche facendo delle cose semplicissime non c’è verso di vedere nulla!

URL, la funzione che risolve i problemi!

Codeigniter usa delle funzioni contenute negli HELPER (una cartella presente dentro la cartella SYSTEM) per risolvere i problemi, ma se queste funzioni non vengono richiamate siamo al punto di partenza, crederò di essere vittima di un ritò vudù o di un attacco di ipotetici pirati della rete. Ma non è così, semplicemente devi andare sul file autoload.php presente nella cartella config e andare a scrivere in prossimità degli helper settati di default a vuoto:

$autoload['helper'] = array('url', 'form' , 'html', 'file');

in questo caso abbiamo incluso le funzioni url, form, html, file visto che c’eravamo, ossia un set di funzionalità che aiuteranno in futuro a gestire il codice in vari ambiti e non solo sulla gestione degli url. A questo punto portiamo tutto su server via FTP e dovrebbe funzionare tutto, se cliccando sul link della galleria dalla home page finisco di nuovo nel vuoto con errori in cui mi danno la pagina inesistente, significa o che devo aggiornare magari il browser con CTRL + F5 o che forse devo fare altro. In teoria così dovrei vedere tutto ma se proprio voglio essere sicuro richiamo gli helper specifici che mi servono anche dal metodo costruttore della classe del controller che diventa quindi nel nostro caso specifico:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class ColleNoceraUmbra extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
		$this->load->helper('url');
	}

	/**
	 * Index Page for this controller.
	 *
	 * Maps to the following URL
	 * 		http://example.com/index.php/welcome
	 *	- or -
	 * 		http://example.com/index.php/welcome/index
	 *	- or -
	 * Since this controller is set as the default controller in
	 * config/routes.php, it's displayed at http://example.com/
	 *
	 * So any other public methods not prefixed with an underscore will
	 * map to /index.php/welcome/<method_name>
	 * @see https://codeigniter.com/user_guide/general/urls.html
	 */
	public function index()
	{
		$this->load->view('index');
	}

	public function photos()
	{
		$this->load->view('gallery');
	}

}

Al momento attuale delle conoscenze acquisite pensiamo che questa sia una sorta di ridondanza ma contro la stregoneria non si sa mai, adesso scrivendo questa ulteriore cosa con il costruttore che prima non c’era rendiamo disponibile la gestione degli URL per tutte le nostre funzioni pubbliche e aggiornando i file sul server davvero andiamo a vedere quello che volevamo vedere, ossia la pagina graficamente colta nella sua lungimirante funzionalità:

Imparare cose nuove

Quando si lavora su un progetto si possono sperimentare dal vivo delle situazioni, nello specifico all’ interno della cartella HELPERS abbiamo creato un file che poi abbiamo richiamato anche nel file autoload.php presente nella cartella config e in questo file abbiamo scritto la famosa dichiarazione iniziale che è un controllo di sicurezza che dice ai contenuti di essere replicabili solo all’ interno della applicazione predefinita seguita da un set di istruzioni che stampano un testo a video e che ha un metodo che possiamo richiamare:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('test_method'))
{
    function test_method($var = '')
    {
        return $var;
    }
}

A questo punto abbiamo aggiunto l’helpers anche nel costruttore del controller e provato a stampare qualcosa:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class ColleNoceraUmbra extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
		$this->load->helper('url','fwd_helper');
	}

	/**
	 * Index Page for this controller.
	 *
	 * Maps to the following URL
	 * 		http://example.com/index.php/welcome
	 *	- or -
	 * 		http://example.com/index.php/welcome/index
	 *	- or -
	 * Since this controller is set as the default controller in
	 * config/routes.php, it's displayed at http://example.com/
	 *
	 * So any other public methods not prefixed with an underscore will
	 * map to /index.php/welcome/<method_name>
	 * @see https://codeigniter.com/user_guide/general/urls.html
	 */
	public function index()
	{
		$this->load->view('index');
		echo test_method('Hello World');
	}

	public function photos()
	{
		$this->load->view('gallery');
	}

}
helpers personalizzati

e vediamo l’effetto che fa, in questo modo ci rendiamo anche conto di quanto possiamo essere versatili nel personalizzare le nostre WEB APP costruendo delle funzioni personalizzate! Gli helper sono all’ inizio cercati dentro il path system/helpers se non vengono trovati vanno a prelevarli da dentro il path application/helpers. Dentro questa cartella possiamo anche sovrascrivere gli helpers di sistema aggiungendo nuovi funzioni semplicemente facendo una copia del file e inserendo all’ inizio il prefisso MY_seguitodanomefileinteresse; Il prefisso si può cambiare e personalizzare nel file config.php nel parametro:

$config['subclass_prefix'] = 'MY_';

Il discorso sugli helpers sarebbe riduttivo sbolognarlo con queste poche coordinate e anzi questi brandelli di informazione da approfondire stanno ad indicare la complessità di un mondo complesso e labirintico quale è Codeigniter!

Conclusioni

A questo punto abbiamo un cancello base come http://umbriawayformazione.altervista.org/ci_project_glocal/ e anche un modulo gallery a parte accessibile dalla home che é http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleNoceraUmbra/photos a questo punto dobbiamo interrogarci seriamente a che cosa serva una gallery statica fatta in questa maniera, ossia senza caratteristiche dinamiche che vengono offerte da codeigniter e che non stiamo sfruttando (non è meglio gestire tutto con un DB?)

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.