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, ventiquattresima puntata

Torna JQuery come attore principale della 24 lezione!

Riassunto moduli sviluppati:

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

Riassunto articoli

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

Check-up GLOCAL allo stato dell’ arte

la WEB APP continua a crescere a ritmi sostenuti anche come contenuti

Abbiamo approfittato anche dei problemi di connessione per fare una carrellata generale sull’ applicazione e ci siamo accorti che il progetto dai 40 MB in difetto iniziali è cresciuto nel giro di un mese in maniera vertiginosa, siamo arrivati a oltre 200 MB di materiale

Generare fallimenti a ritmo continuo (ossia cose che non vogliono saperne di stare in piedi anche se poi ci si sforza di farle funzionare)? Fatto!

Niente paura! Se stai generando fallimenti è perché ti stai muovendo bene! Continua a generare altri fallimenti!

A fine febbraio una azienda dopo un esito favorevole del primo colloquio mi congedò dicendomi: mi telefoni martedì prossimo che parliamo di stipendio, dopodichè io telefonai e mi risposero SCUSI MA LEI CHI E? Ok, confesso di non averla presa bene. Anche perché tempo prima il famoso CED di Macerata riuscì a escludermi da un corso ADECCO con fruizione ON-LINE a causa secondo loro di troppe richieste di partecipazione. Per cui recentemente per consolarmi ho deciso di fare richiesta per partecipare alla nuova edizione del corso sul tema del web-design di oltre 100 ore di didattica a distanza sempre organizzati dai “fenomeni”, ma anche questa volta quelli del CED mi hanno liquidato proprio ieri con un SMS dicendo che malgrado l’interesse per il mio profilo al momento non rientravo nell’ adesione a causa dell’ alto numero di richieste. Pazienza! Essere un accumulatore seriale di fallimenti ha anche i suoi vantaggi, per esempio nel primo caso potrei muovermi facendo pervenire dei preventivi più bassi a potenziali PMI interessate a servizi digitali rispetto a quelli famosi del colloquio di fine febbraio e nel secondo potrei muovermi per fare io stesso corsi di formazione magari rastrellando con il web marketing nominativi sul maceratese, magari solo per fare dispettucci dovuti perché il Karma si suppone sia dinamico. Nel frattempo poi mi è capitato un tizio tra i piedi che si approcciato al sottoscritto per i suoi problemi su WP e Elementor con una “abbiamo copiato da un competitor e usiamo la versione base di Elementor” dopodichè di fronte a questo doppio strafalcione o autogoal non c’è bisogno di scrivere il significato delle numerose implicazioni e non si poteva fare altro che allontanarlo con garbo, dichiarando con una menzogna che a causa di un famoso corso CED organizzato da quelli di Macerata non avevo tempo disponibile per risolvere problemi su progetti altrui nati già con cattive premesse! Periodo fantastico di famose sostanze aromatizzate allo zenzero non c’è che dire, ma alla fine sopravvive solo un rubicondo e va bene, chi se ne frega? Vado avanti lo stesso anche con le tacche sulla cintura che parlano di esclusioni. Molte esclusioni, molto onore, non era proprio così ma mica la Champions la vinci al primo colpo eh?!

migliorare la parte di js sul proprio cv

Un nuovo modulo per nuovi sviluppi

Abbiamo messo in piedi per fini didattici (ecco il lato positivo delle esclusioni precedenti, che si trova la motivazione per trovare degli aspetti positivi malgrado tutto) un modulo esterno sempre lagato a GLOCAL nelle sue finalità (è uno spot turistico ma di fatto il tutto è utile per studiare JAVASCRIPT) all’ indirizzo http://umbriawayformazione.altervista.org/uwcode/spot_colle_nu/ .Ovviamente si appoggia ai CSS e come logica è facile capire che ci sono CLASSI ATTIVE di default e CLASSI che invece vengono rimosse. SI intuisce anche che viene usata la tecnologia FLEX nei fogli di stile. Ma come funziona lo script?

const panels = document.querySelectorAll('.panel')

panels.forEach(panel => {
    panel.addEventListener('click', () => {
        removeActiveClasses()
        panel.classList.add('active')
    })
})

function removeActiveClasses() {
    panels.forEach(panel => {
        panel.classList.remove('active')
    })
}

la prima riga dichiara una COSTANTE che attraverso un metodo querySelectorAll va a catturare tutti gli elementi di classe PANEL, dopodiche su questi viene applicata una rotazione con un ciclo forEach che di fatto gli dice di ASCOLTARE e CATTURARE l’evento CLICK dell’ utente per applicare una funzione di rimozione e successivamente addizionarla all’ elemento. Naturalmente nella funzione di rimozione applichiamo il metodo REMOVE in modo proprio da ripulire l’elemento COVER presente di default con la classe ACTIVE per passare il testimone al nuovo elemento cliccato. Più difficile da descrivere che a guardarsi! E per il mobile?

@media (max-width: 480px) {
  .container {
    width: 100vw;
  }

  .panel:nth-of-type(4),
  .panel:nth-of-type(5) {
    display: none;
  }
}

Nel foglio stile bisogna anche scrivere delle istruzioni che tutelano la visualizzazione sul mondo mobile con una media query, dove la visibilità da 480 pixel cambia, nel caso specifico lo script impedisce la visibilità di due elementi (il 4 e il 5) ed estende la vision della cover sul cento per cento di altezza del display. Ovviamente prima della fine del body avremo il nostro aggancio sulla pagina HTML con:

<script src="script.js"></script>

e anche il CSS sarà agganciato sul nostro documento HTML sezione HEAD con:

<link rel="stylesheet" href="style.css" />

Entra in scena JQuery, standing ovation!

GLOCAL aveva un problema (ne ha ancora molti ma adesso ne ha uno in meno), sulla barra di vavigazione che è fissa e inclusa per tutte le viste il tasto di accensione della classe ATTIVA non era facilmente gestibile per i passaggi dinamici tra una pagina e l’altra. Quindi come si è risolto il tutto? Con JQuery che mantiene quello che promette, ossia fa il massimo a livello di funzionalità con il minimo sforzo. Le immagini iniziali coinvolte sono quelle sotto il titolo. Le cose da fare come istruzioni elementari sono essenzialmente due, rimuovi la classe da HOME e assegna la classe al nuovo elemento:

  <script>
    $("#elementi1").removeClass("active");
    $("#elemento2").addClass("active");
  </script>

Questo codice lavora sulla pagina richiamata dal link, per cui la prima cosa che fa è quella di accendere il bottone di posizione sulla barra di navigazione corrispondente! Fatelo santo subito questo JQuery!

Conclusioni

Tra la 23 esima puntata e la successiva che è questa sono successe un sacco di cose, abbiamo anche attivato il protocollo HTTPS oltre che la funzionalità CLOUDEFLARE sul sito che ci ospita (GRATIS ricordiamocelo!). Questo sposta anche il modo di approcciarsi ai link per esempio che fino a questo momento sono nati “distorti” sul http tradizionale. Senza avere le idee chiare rispetto a questa novità che comunque va a migliorare sicurezza e velocità dell’ hosting a costo zero, abbiamo in testa delle cose che dovremmo fare per portare avanti il progetto che non si limita solo alla parte tecnica ma anche a quella dei contenuti e delle prestazioni sportive (grazie alla nuova sezione trekking). Nel frattempo come se non bastasse i problemi di connessione si sono diversificati, se da un lato un nuovo modem dual banda garantisce stabilità e sicurezza per il collegamento alla banda grazie anche a una pwd che può cambiare autonomamente e non più gestita dalla centrale, i dipositivi esterni come Google Mini e ChromeCast non vogliono saperne di vedere la rete, un altro insondabile mistero da risolvere oltre a quelli pratici come http://umbriawayformazione.altervista.org/ci_project_glocal/index.php/ColleGalleryDynamic/bookcat?cat=storia dove si evince a giudicare dalle anomalie sulla lunghezza della pagina che c’è ancora molto da risolvere e implementare! E nel frattempo dovrà anche per forza migliorare l’impegno sul JS e JQ se non altro per fare un dispetto a quelli delle esclusioni mirate menzionati in questa puntata rubiconda, dove il film ripercorso è quello delle ALI DELLA LIBERTA’ e la frase rivolta all’ attore Morgan Freeman é: ma lei si sente riabilitato? Risposte di comodo di certo sono pentito etc etc e per ben due volte uno dei protagonisti si vede negare la libertà ricercata, grazie CED di Macerata in collaborazione con ADECCO per aver valorizzato questo best movie di Frank Darabont

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

conoscere il territorio

Working in progress sul progetto

http://umbriawayformazione.altervista.org/ci_project_glocal/

Riassunto delle puntate precedenti

All’ indirizzo https://umbriawaydesign.wordpress.com/2021/03/05/territorio-storia-cultura-conoscere-le-risorse-che-hai-sotto-casa-con-glocal-web-app-come-mettere-in-moto-un-progetto-con-codeigniter-prima-puntata/ abbiamo visto come inizializzare un progetto complesso, come fare delle valutazioni strategiche legate alla tecnologia da usare (usiamo codeigniter perché oltre ad essere un framework potente è anche leggero e facilmente modellabile) e ai contenuti da mostrare. Ci siamo lasciati con un problema, come mai non vedo contenuti? Perché dobbiamo agganciare le risorse del template originale, come fare?

Agganciare le risorse esterne pensando da Codeigniter

Bene per fortuna avendo all’ attivo già un progetto che ci ha dato da lavorare per due-tre mesi, indirizzo http://umbriawayformazione.altervista.org/ci_project_seicento/ adesso siamo in grado di risparmiare un sacco di tempo almeno sulle impostazioni base. Infatti lavorando con due editor possiamo importare il codice di un progetto in un altro usando un semplice copia e incolla

Lavorare sul file config.php

Il file config.php che si trova dentro APPLICATION/CONFIG va riaggiustato dopo la nostra prima stesura nel primo articolo perchè dobbiamo fare in modo di agganciare le risorse esterne. Quindi vediamo come diventa tenendo conto che la nostra cartella ASSETS che sta allo stesso livello di APPLICATION è composta da quattro directory interne che sono IMG/CSS/JS/FONTS:

$config['base_url'] = 'http://umbriawayformazione.altervista.org/ci_project_glocal/';
$config['assets'] = array (
'img' => $config['base_url'].'assets/img',
'css' => $config['base_url'].'assets/css',
'js' => $config['base_url'].'assets/js',
'fonts' => $config['base_url'].'assets/fonts'
);

Perfetto a questo punto siamo a metà dell’ opera, adesso dobbiamo lavorare tanto sul file index.php presente dentro la cartella VIEW presente in APPLICATION, in particolare dobbiamo trasformare tutti i link statici in dinamici, vediamo in dettaglio. Si trata di sostituire a

<link href="css/custom.css" rel="stylesheet">

l’informazione di aggancio dinamica:

<link rel="stylesheet" type="text/css" href="<?php echo $this->config->item('assets')['css']?>/custom.css">

e questa operazione va fatta con lo stesso criterio per tutti i nostri CSS che si trovano nel template. Poi ovviamente si lavora anche sull’inclusione per gli altri tipi di file. Per esempio i JS statici:

<script src="js/bootstrap.min.js"></script>

diventa:

<script src="<?php echo $this->config->item('assets')['js']?>/bootstrap.min.js"></script>

e si procede a sostituire tutti i riferimenti statici con lo stesso criterio. Fatte tutte queste conversioni d statico a dinamico rifacciamo FTP con il nostro FileZilla dopodichè torniamo a vedere come appare ora il nostro progetto:

Ancora qualcosina da rifinire!

Ok adesso è tutta un’ altra musica e qualcosa è cambiato senza citare il titolo di un film famoso. Ma ci accorgiamo che alcune immagini non riusciamo a visualizzarle come mai? Perchè dobbiamo fare lo stesso lavoro di puntamento di cui sopra, per esempio una immagine tradizionale come:

<img class="img-responsive img-circle center-block" src="images/phone.jpg" alt="">

dobbiamo convertirla in:

<img class="img-responsive img-circle center-block" src="<?php echo $this->config->item('assets')['img']?>/umbria.jpg" alt="web developer umbria">

Attenzione alla cache quando sbagliamo path e magari non vediamo le immagini , il comando per Browser Windows e Linux : CTRL + F5 può forzare il refresh della singola pagina consentendoci di aggirare il problema della visibilità sull’ aggiornamento dei fogli di stile

Se non funziona qualcosa è perché abbiamo sbagliato a non segnalare il nome della cartella giusta dove è contenuto il file, quindi occorre anche verificare sul file config.php che cosa esattamente abbiamo indicato come directory, in ogni caso alla fine siamo di fronte a un raro caso in questo anno idilliaco di “è andato tutto bene”, come testimonia la nostra home. Basta sincerarsi ad esempio che nel foglio di stile ci sia il puntamento corretto nella definizione della classe tipo per esempio:

.item {
	background: url('../img/umbria1.jpg');
	}

CONCLUSIONI

Bravo hai fatto funzionare tutta la parte statica con codeigniter, ma ti sei accorto che ora hai il problema di lavorare sui contenuti e non è roba da poco? Del resto se hai voluto la bicicletta pedala! Quindi l’ultimo passo è quello di aggiustare la homepage con contenuti coerenti e sensati, importando e personalizzando tutta la grafica che vuoi magari approvvigionandoti dal bellissimo https://unsplash.com/!

Se fosse un film sarebbe su Elena dei famosi cicli mitologici greci: i troiani accettano i cavalli lasciati sulla spiaggia dai greci in fuga e portano i gentili doni entro le mura di Troia senza conseguenze: Ulisse e Achille latitanti, partita Ranieri – Faraoni Enrico B32

In questa partita Ranieri(MF) vs Faraoni Enrico(cm) giocata il 2009.10.25, apertura B32, open Alfieri, il nero cerca un approccio troppo creativo basato su piccole concessioni di materiale un pò troppo ottimistiche e generose, con il risultato inevitabile che finito di bruciare tutti i ponti alle spalle il bianco che ha giocato alla Karpov (mangio tutto se non prendo matto poi vedo) é passato alla fine a raccogliere, la partita comunque risulta un ottima rivisitazione sia per studiare un pò di teoria ma anche per rafforzare scientificamente un concetto basato anche su quei famosi finali di alfiere di colore contrario dove spesso si pareggia anche con materiale in meno e cioé che la mossa Alfiere prende c3 produce un grave danno strutturale che porta concreti benefici in finale (fondamentalmente il nero può permettersi di giocare con un pedone in meno per pareggiare in molte linee, a condizione che non prenda lo scacco matto in g7 per esempio, su casa nera).

1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e5 5. Nf3 Nf6 6. Nc3 Bb4! 7. Bc4

(7.Bd3; 7. Bd2)

7… O-O

(7… Nxe4 !?)

8. O-O Bxc3

un grave danno strutturale, il B deve cercare gratificazioni sul medio gioco e sulle case nere

9. bxc3 Qa5

(9… Nxe4 !?)

10. Qd3 d5 ? Una novità teorica difficilmente ripetibile, il nero é in vena di esagerazioni surrealiste

[10… h6 11. a4 Rd8 12. Rd1 d5 13. Bxd5 Bf5 14. Qc4 Nxd5 15. exd5 Be6 16. Bxh6 Rxd5; 10… d6 11. Bg5 (11 Cg5 h6 12 Cf7 é meglio il nero) Ce8 con posizione solida del nero]

11. Bxd5

(11. exd5 e4 12. Qe3 exf3 13. dxc6 fxg2 meglio il nero)

11…Bg4 12. Bg5 Nxd5 13. exd5 Rae8 14. Nd2! e4 15. Qg3 h5 16. Bf4 ?

(16. Qd6! Ne5 17. Nxe4 Bf3 18. Nf6+ gxf6 19. Qxf6 Qb6 20. gxf3 Qxf6 21. Bxf6 Nxf3+ 22. Kg2 Nd2 23. Rfe1)

16… Qxd5

il nero rientra in partita ma alla mossa 18 ci mette del suo per tornare a riperderla ah ah!

17. h3 Bf5 18. Nb3 e3 ?

un tratto decisamente assurdo l’unica giustificazione potrebbe essere l’idea Ac2 che però più tardi NON viene effettuata ! Il nero aveva molte mosse buone ma sbrocca e cerca di complicare di nuovo a tutti i costi senza necessità

(18… Rc8 19. Rfd1 Qc4 20.Nd4 Bg6; 18… f6; 18… Rd8)

19. Bxe3 Re6

(19..Ac2? 20 Ad6 Ce7 é chiaro vantaggio bianco)

20. Rad1 Qc4 21. Qf4 Qxf4 22. Bxf4 g5 ?

(22… Re4 simple chess 23. Be3 Rc4 24. Rd5 g6 25. Na5 Nxa5 26. Rxa5 Rxc3 27. Rxa7 Rxc2 28. Rxb7 Rxa2 patta; 22..Ac2 arisimplechess =)

23. Be3 ?

(23. Bxg5 +-)

23… g4 !?

(23… Bxc2 24. Rd5 f6 25. Nc5 Re7 26. Rd6 Kf7 27. Nxb7 Rxb7 28. Rxc6 Re8 29. Rc5 meglio il bianco ma probabilmente non basta per vincere secondo i motori che danno una valutazione molto prossima allo zero)

24. hxg4 Bxg4 25. Rd5 Rg6 ?

(25… Rd8 26. Rxd8+ Nxd8 27. Bxa7 Ra6 28. Be3 Rxa2 29. Nd4 Bd7 con gioco equilibrato). La partita a questo punto si conclude con un inevitabile massacro che conclude il ciclo creativo troppo generoso del nero

26. f3 Re8 27. Bd4 Bh3 28. Rf2 h4 29. Rh5 Nxd4 30. cxd4 a5 31. Rxh4 Re1+ 32. Kh2 Be6 33. Nxa5 Bxa2 34. Nxb7 Bb1 35. c4 Bd3 36. c5 Rd1 37. Nd6 Ba6 38. Nf5 Re6 39. Ra2 f6 40. c6 Bc8 41. Ra8  1-0

La morale di questa partita potrebbe essere che va bene complicare per creare squilibri e cercare opportunità di vittoria al limite della regolarità ma ogni tanto anche fare mosse normali non guasta (22..Te4 per esempio solo per citarne una) dopo aver creato un pò di kaos tattico. Al bianco per vincere questa partita é bastato accettare i cavalli maestosi lasciati sulla spiaggia dei greci e portarli entro le mura di Troia senza timori perché di Ulisse e del Prode Achille non si sono viste le tracce nemmeno facendo festa fino a notte fonda! Se il nero voleva entrare nella storia della B32 per cercare come Achille l’immortalita con la novità teorica 10..d5? c’è riuscito, anche se la valutazione della posizione basata sul fatto che i pedoni c2 e c3 fanno così pietà che anche a giocare con qualcosina in meno la si fa franca. Poi però ci sono anche le analisi concrete e i dettagli. E lì bisognerà intervenire…prima o poi!