Insert, select, update, delete: le basi strategiche delle query mysql per le esplosioni tattiche di php!

seo UmbriaKarpov era in gran forma a Torino nel 1982 e arrivò primo sbaragliando la concorrenza. Qui lo vediamo in azione vs Ljuboievic dove il nero viene devastato e le sue postazioni ridotte a cumuli di macerie, partita http://www.chessgames.com/perl/chessgame?gid=1068331. Poi cerchiamo di dare una risposta alla domanda si può dare la regina in cambio di una sola torre? Bisognerebbe chiederlo a Ligternik che giocò contro Nunn a Marbella nel 1982 dove a un certo punto il nero nel corso di una benoni si ritrova un Ce5 inchiodato sulla donna in e8, il materiale é tutto pari ma adesso il nero dovrebbe abbandonare perché la perdita di materiale é inevitabile ma…il nero sacrifica la regina per una sola torre e tutto ciò era stato previsto, il bianco prende il gentile dono e poi incredibilmente la perde questa game, anche se i dubbi sulla correttezza del sacrificio rimangono anche per seo Umbria! Certo che fa una certa impressione a vedere un 20 ..b5 che lascia il nero con una pressione posizionale mica da ridere in vista di un Alfiere f5 che viene dal cuore e che il bianco é costretto ad evitare dando un altro pedone con g4. Ci vuole una certa sensibilità per percepire il ritmo e il respiro di una posizione e Nunn con lo schema Ad4, Cf2 l’ha studiata proprio bene sta mossa di cavallo che regala il cavallo di Troia al nemico, che presto si accorge tra le sue mura che ha ben poco da festeggiare, fa notare seo Umbria. Da notare che cadrà anche b2 per cui a quel punto il nero ha la donna in meno ma qualcosa in cambio che equivale convenzionalmente otto come intero, per compensare i dieci in meno! Complimenti a Nunn e al suo genio creativo cercare appunto la Ligterink – Nunn Marbella 1982 per assistere a questa psettacolare carambola di fuochi di artificio. E torniamo a bomba! Dopo aver visto che la connessione fisica del database mysql si ottiene con la funzione mysql_connect(parametri server, user e pwd) e dopo aver visto che la selezione al DB la posso fare tramite la funzione mysql_select_db(“name”); non mi resta che interrogare i dati con SQL dove abbiamo una funzione che é mysql_query(query, [connect_id]) dove query é la stringa che contiene la stringa dei comandi che vogliamo eseguire e come per la funzione mysql_select_db anche qui ci troviamo a che fare con una coppia di valori VERo o FALSO per indicare rispettivamente la riuscita operazione e quindi il successo o l’insuccesso. Analizziamo il seguente codice:

$sql = CREATE TABLE joke (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joketext TEXT,
jokedate DATE NOT NULL
);
if (@mysql_query($sql)) {
echo ‘<p>joke table successfully created!</p>;
} else {
exit(‘<p>Error creating joke table: ‘ .
mysql_error() . ‘</p>’);
}

Usiamo di nuovo il trucco @ per evitare ogni messaggio di errore prodotto da mysql_query e lo sostituiamo con un messaggio di errore più amichevole. La funzione mysql_error qui ha avuto come responso una stringa di testo che descrive l’ultimo messaggio di errore che é stato inviato dal server MySQL. Per le query DELETE, INSERT e UPDATE (che sono utilizzate per modificare i dati immagazzinati) MySQL conserva una traccia del numero dlele righe di tabelle (record) che sono state interessate dalla query. Modifichiamo la data di tutte le barzellette che contengono la parola “chicken”:

$sql = “UPDATE joke SET jokedate=’1994-04-01′ WHERE joketext LIKE ‘%chicken%’;

Quando eseguiamo questa query, possiamo usare la funzione mysql:affected_rows per vedere il numero di righe che sono interessate da questo aggiornamento:

if (@mysql_query($sql)) {
echo ‘<p>Update affected ‘ .mysql_affected_rows() .
‘ rows.</p>’;
} else {
exit (‘<p>Error performing update: ‘ . mysql_error() .
‘</p>’);
}

Le query con SELECT devono essere trattate in modo leggermente differente, perché possono interessare una grande quantità di dati e PHP deve fornire dei modi per gestire queste informazioni. Il problema che si pone seo Umbria é come gestire i set di risultati del comando SELECT per l’appunto. Per la maggior parte delle query di SQL, la funzione mysql_query ha come risultato o TRUE sinonimo di successo o FALSE che significa insucceso. Per le query SELECT questo non é sufficiente in quanto noi utilizziamo questo comando per visualizzare i dati immagazzinati nel database. PHP oltre ad indicare se la query ha avuto successo o meno, deve anche ricevere i risultati della query. QUindi quando processa la query SELECT, mysql_query ha come risultato un numero che identifica una serie di risultati e che contiene l’elenco delle righe (RECORD) che si sono avute come risultato della query. Il risultato FALSE viene dato se la query fallisce per qualche ragione.

$result = @mysql_query (‘SELECT JokeText FROM Jokes’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .mysql_error() .
‘</p>’);
}

Dopo essersi assicurato che non é stato incontrato nessun errore nel processare la query, il codice posizionerà un numero all’ interno della variabile $result. Questo numero corrisponde al SET DEI RISULTATI che contiene il testo di tutte le barzellette nella tabella degli scherzi. Non essendoci nessun limite pratico al numero di scherzi nel database, il risultato può essere considerevolmente grande. Il ciclo while é una struttura di controllo che gestisce grandi quantità di dati. Quello che segue é un possibile abbozzo di codice che processerà le righe di un set di risultati uno alla volta:

while ($row = mysql_fetch_array($result)) {
// process the row
}

La condizione per il ciclo while probabilmente non assomiglia alla condizionea cui siete abituati quindi lasciateci spiegare come funziona. Considerate la condizione come una dichiarazione separata:

$row = mysql_fetch_array($result);

La funzione mysql_fetch_array accetta il numero del set di risultati come un parametro (immagazzinato nella variabile $result in questo caso) e mostyra come risultato la riga successiva nel set di risultati come in un array. Quando non ci sono più righe nel set di risultati, mysql_fetch_array dà come risultato FALSE. La dichiarazione assegna un valore alla variabile $row ma, allo stesso tempo, l’intera dichiarazione prende lo stesso valore. Questo é ciò che vi permette di usare la dichiarazione come una condizione nel ciclo while. Poiché un ciclo while continuerà a lavorare finché la sua condizione viene valutata FALSA, questo ciclo avverrà tante volte quante sono le righe nella serie di risultati. Se $row é una riga del nostro set di risultati, allora $row[‘joketext’] é il valore della colonna joketext di quella riga. Ed ecco come dovrebbe apparire il nostro ciclo while se volessimo stampare il testo di tutte le barzellette nel nostro database:

while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

E ora che seo Umbria ha reso meno ermetico il codice facciamo un bel riassunto della pagina in modo da visualizzare nel mio browser tutto il mio repertorio di artista recitatore di barzellette all’ interno del TAG BODY:

<?php

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

?>
<p>Here are all the jokes in our database:</p>
<blockquote>
<?php

// Request the text of all the jokes
$result = @mysql_query(‘SELECT joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ . mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

?>
</blockquote>

Adesso che ci siamo connessi, che ci siamo dialogati con il DB, che dal DB siamo in grado di estrapolare i dati, cerchiamo di vincere la seguente sfida con seo UMBRIA: come faccio a inserire i dati? Intanto il visitatore ha bisogno di un FORM per inserire i dati e quindi da esperti sviluppatori quali siamo non dovrebbe essere un problema estrapolare il seguente codice:

 

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

Come abbiamo già visto una volta inviato questo FORM caricherà la stessa pagina (poiché abbiamo la variabile $_SERVER[‘PHP_SELF’] per l’attributo di azione del form) con una differenza: una variabile sarà compresa nella richiesta. La variabile joketext conterrà il testo della barzelletta come é stato digitato nell’ area di testo e apparirà negli array $_POST e $_REQUEST creati da PHP. Per inserire la barzelletta inviata al DB usiamo la funzione mysql_query per eseguire una query INSERT, utilizzando il valore immagazzinato in $_POST[‘joketext’] per completare la colonna joketext nella query:

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

Il nuovo trucco in questo esempio é mostrato in CURDATE() che viene usata qui per assegnare la data corrente come valore della colonna joketext. MySQL effettivamente ha dozzine di queste funzioni che sono possibili da reperire in rete. Abbiamo il codice che ci permetterà di digitare una barzelletta e aggiungerla al nostro database. Tutto quello che rimane da fare é inserirla nella nostra pagina esistente in modo efficace. Poiché la maggior parte degli utenti vorrà visualizzare le barzellette, non vogliamo rovinare la nostra pagina con grandi caratteri a meno che l’utente non esprima interesse nell’ aggiungere nuove barzellette. Per quest aragione la nostra APPLICAZIONE WEB é ben progettata per IMPLEMENTARE pagine MULTIUSO. Ecco il codice completo da inserire nel body:

<?php if (isset($_GET[‘addjoke’])): // If the user wants to add a joke
?>

<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<label>Type your joke here:<br />
<textarea name=”joketext” rows=”10″ cols=”40″>
</textarea></label><br />
<input type=”submit” value=”SUBMIT” />
</form>

<?php else: // Default page display

// Connect to the database server
$dbcnx = @mysql_connect(‘localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
exit(‘<p>Unable to connect to the ‘ .
‘database server at this time.</p>’);
}

// Select the jokes database
if (!@mysql_select_db(‘ijdb’)) {
exit(‘<p>Unable to locate the joke ‘ .
‘database at this time.</p>’);
}

// If a joke has been submitted,
// add it to the database.
if (isset($_POST[‘joketext’])) {
$joketext = $_POST[‘joketext’];
$sql = “INSERT INTO joke SET
joketext=’$joketext’,
jokedate=CURDATE()”;
if (@mysql_query($sql)) {
echo ‘<p>Your joke has been added.</p>’;
} else {
echo ‘<p>Error adding submitted joke: ‘ .
mysql_error() . ‘</p>’;
}
}

echo ‘<p>Here are all the jokes in our database:</p>’;

// Request the text of all the jokes
$result = @mysql_query(‘SELECT joketext FROM joke’);
if (!$result) {
exit(‘<p>Error performing query: ‘ .
mysql_error() . ‘</p>’);
}

// Display the text of each joke in a paragraph
while ($row = mysql_fetch_array($result)) {
echo ‘<p>’ . $row[‘joketext’] . ‘</p>’;
}

// When clicked, this link will load this page
// with the joke submission form displayed.
echo ‘<p><a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?addjoke=1″>Add a Joke!</a></p>’;

endif;
?>

Sostanzialmente con un singolo file che contiene un pò di codice PHP siamo in grado di vedere le barzellette esistenti e aggiungerne di nuove. Ma adesso ci attende una sfida entusiasmante che riprenderemo in uno dei prossimi post di Umbriaway Consulting!

Annunci

Da terza nazionale a GM con PHP e la programmazione OOP: seo specialist Umbria e i segreti delle classi prototipo

Posso diventare GM anche se sono scarso? Se perdo al Saliniello é colpa di un destino cinico e baro? Con il CEO di Umbriaway Consulting Faraoni Enrico alias di seo specialist Umbria scandagliamo in questo tutorial i misteri della programmazione ad oggetti. Sostanzialmente cerchiamo di superare con le versioni dal 5 in poi di PHP i limiti strutturali imposti dalla programmazione procedurale, che seppure flessibile grazie alla sua inclusione di file funzionali non é in grado di avvicinare l’uomo ai modelli tridimensionali ed appunto ecco che dalla versione 5 PHP strappa le catene che lo vedeno limitato per andare incontro a classi, metodi (e non funzioni come vuole il perfetto copione della giovane marmotta procedurale) proprietà e prototipi, passando per public, new, class piuttosto che static , private o protected, un viaggio in una foresta oscura che solo Virgilio in versione seo specialist Umbria accompagnando Dante potrebbe districare in maniera indelebile. Iniziamo quindi una serie di avvicinamenti o overview su quella che é la programmazione ad oggetti. Prima però coerenti con il modus operandi di Faraoni Enrico che lega e connette i problemi di strategia digitale a quelle che sono le problematiche di sviluppo (anche se definirle problematiche non é potenziante), diamo un occhiata alla partita Polugaevsky – Petrsjan giocata a Mosca nel 1981 indirizzo web http://www.chessgames.com/perl/chessgame?gid=1107309 in quanto riteniamo utile segnalare come gli schemi di attacco canonici (un cavallo in g5 con una donna in h4 possono recare grave disturbo alla salute avversaria) possano una volta memorizzati ripetersi o anche ispirare strategie di attacco basate sul rafforzamento dei principi di base, infatti assistiamo in questa partita insieme a seo specialist Umbria a un progressivo, graduale strangolamento dove la conquista del centro diventa preludio per un attacco vincente ad est. In ogni caso ricordiamo che lo studio dei classici soprattutto di questo mostri sacri del dopoguerra che hanno monopolizzato la disciplina sportiva sia importante come substrato culturale per attingere risorse ed importanti informazioni di replicabilità. Amen ed ora Faraoni Enrico proporrà un esercizio PHP basato sul diventa GM in sette giorni passando dal procedurale alle classi. Iniziamo dai fondamentali. La classe é un oggetto e dobbiamo pensarlo proprio come un oggetto nel senso che se faccio il prototipo di un motorino questa classe avrà al suo interno metodi come messa in moto ad esempio e proprietà come var=”2 ruote”; per esempio. In questo modo noi riusciamo a crearci un mega archivio riutilizzabile di informazioni in cui i singoli cassetti rappresentano le singole classi. Iniziamo quindi a fare dei ragionamenti. Per creare una classe si usa semplicemente la parola chiave class seguita dal nome della classe ricordandosi che la prima lettera deve essere maiuscola. Ad esempio aprendo un file php al suo interno potrò scrivere la classe class GM aperte graffe (i blocchi di istruzione) che dichiara esplicitamente la creazione di un cassetto dove al suo interno andremo a mettere tutti i metodi (attenzione non funzioni) di quella classe e le relative proprietà. E’ chiaro che tutto il nuovo paradigma ruotando intorno al concetto di classe ci costringe a un cambiamento didattico o di forma mentis perché l’architettura dei file é completamente diversa rispetto al sistema procedurale. L’esperimento che propone Faraoni Enrico é proviamo a creare una classe e vediamo se possiamo usufruirne come una risorsa permanente. seo specialist UmbriaEsisteranno delle classi predefinite no? Allora ci posso mettere dentro anche la mia classe GM appena entrata? Avere dei modelli reali o delle classi o degli oggetti che diventano reali ci semplifica la vita a livello concettuale. OOP subentra per allargare il punto di vista del procedurale ed espandere nuove prospettive su vari orizzonti. Certamente il consiglio che diamo é quello di sostenere i pesi di questo sforzo di apprendimento in due momenti distinti, nel corso del primo approccio lo studente si avvicina curioso a un primo overview mentre poi come un atleta che partecipa a una gara di sollevamento pesi si dovrà lavorare per assimilare i concetti in profondità. La classe é un modello una sorta di template ma poi l’oggetto per essere creato va istanziato tramite la parola chiave new. Ma basta chance fedeli all’ approccio di Faraoni Enrico e di seo specialist Umbria che vede nella pratica i suoi approfondimenti iniziamo a scrivere con un editor: class Grandemaestro {} come detto prima la G deve essere maiuscola per convenzione ma anche come regola namespace, fatto questo che abbiamo fatto? Abbiamo creato un cassetto in un armadio e nel modello ci andremo a mettere una serie di metodi e di proprietà che serviranno a noi neofiti terza nazionale di approvvigionarci a qauesto salutare proptotipo per scalare subito i vertici della classifica mondiale. Ok e adesso esiste davvero un infinito spazio da noi ribattezzato Grandemaestro? Certo che si, verifichiamolo con una funzione di php che si chiama get_declared_classes che é un pò l’equivalente del procedurale php_info(); Lasciando lo spazio del cassetto vuoto senza metodi e proprietà vediamo se adesso possiamo accedere a questa nuova risorsa. Quindi creiamo un qualcosa tipo $lista = get_declared_classes(); e cicliamo il tutto con l’ìstruzione foreach che all’ interno della parentesi tonda vuole due parametri, una chiave e un valore. Come chiave diamo $lista e come alias ci inventiamo la fantasiosa $class per restare in tema, quindi scriveremo: foreach ($lista as $class) { e qui dentro scriveremo l’istruzione che stampa a video $class magari concatenando la stringa con un bel tag BR}; quello che otteniamo andando a vedere il codice é una lunga lista di modelli o cassetti dove alla fine stranamente vediamo comparire dal nulla come per magia un quid che prende il nome di Grandemaestro. Ok adesso abbiamo uno spazio vuoto senza pianeti e senza amminoacidi vitali come posso far scoccare la mia scintilla divina? Perché non attribuire un metodo per esempio alla nostra classe, il metodo diventagm che stampa a video un suggerimento del tipo: se studi per sette giorni di fila diventerai più forte di Carlsen, sempre che tu abbia la lampada di Aladino. Procediamo. Quindi all’ interno della classe scriveremo function diventagmspeed () {}. All’ interno dei blocchi graffa andrò a scrivere una istruzione propositiva e ipnotica per l’allievo del grande guru gm qualcosa del tipo echo “pensa, gioca, allenati come un super GM”; tanto per entrare in argomento. La classe é solo una idea platonica ma adesso come mi relaziono con l’ogetto per poter utilizzare il metodo? Bisogna istanziare la classe con la parola chiave new quindi andremo scrivere fuori dai blocchi graffa delle precedenti istruzione $giocatore = new Grandemaestro(); adesso che ho un oggetto reale posso anche farlo puntare al metodo della classe con l’istruzione: $giocatore->diventagmspeed (); riassumendo con seo specialist Umbria in questa prima escursione abbiamo visto come si crea una classe, come applicare um metodo alla classe e come istanziare la classe per poter usufruire dei servizi del nostro spazio pensato e poi diventato oggetto fisico. Seguendo questo ciclo di lezioni con Faraoni Enrico e seo specialist Umbria su PHP programmazione ad oggetti sarai in grado velocemente di avvicinarti a questo paradigma OOP e al contempo di veleggiare sicuro verso punteggi elo che meglio ti competono in lista FIDE. Stay tuned!

Web design Umbria affronta la spinosa questione dello scrivere articoli per il web

La struttura di un sito web deve essere perfetta e ottimizzata per la SEO definisce subito web design Umbria. I testi devono essere equilibrati, non altezzosi, moderatamente lunghi, informativi, chiari espliciti finalizzati a offrire un servizio e a fare una chiamata in gergo tecnico conversione che può anche essere solo chiedere un commento. Certo scrivere un testo minuscolo su sfondo rosso su un sito non responsive equivale a dire allo spider usando una delle colorite metafore di web design Umbria: ok mi metto sulla ghigliottina carponi ci pensi tu a lasciare cadere la lama? Non mettiamoci nella condizione di essere penalizzati, curiamo i dettagli! Ricordatevi che esistono anche i fogli di stile quindi é meglio non dipingere il testo su lenzuoli troppo estesi. Teniamo conto del fatto che il web non é la carta stampata e che tutte le informazioni devono comparire su unica schermata. Se non riusciamo a integrare tutto su unica schermata mettiamo almeno le info più importanti sopra senza entrare nelle statistiche dei guru dell’ usabilità. Dovete permettere una rapida scansione perché scrivere per il web non é come dire alla fidanzata ti amo su cartolina, ribadisce con le sue metafore variopinte web design Umbria eil CEO di Umbriaway Consulting Faraoni Enrico. Quindi scrivere brevi e concisi, usando titoli per spezzare e anche elenchi puntati quando servono. Accorciare, accorciare, accorciare gridano dalle alpi all’ oceano indiano.E le tabelle? Per presentare qualche informazioni complessa le tabelle servono no? Certo non facciamo come negli anni novanta che dentro ci mettevamo dentro i contenuti lato back end! Le tabelle possono aiutare visualizzazioni rapide, ma senza esagerare. Tabelle responsive prima di tutto quindi per ottimizzare seo anche dei framework come bootstrap male non fanno. I contenuti vanno organizzati semanticamente e gerarchicamente, ma del resto html5 con i suoi nuovi tag semantici per l’appunto ci aiuta. Anche una giusta evidenziazione dei link con i fogli stile può invogliare a rimanere sulla pagina, chi scrive testi deve andare a braccetto con l’usabilità del web design che ha il gravoso compito di rendere l’esperienza utente MEMORABILE. I link blue sottolineati fanno sempre un certo effetto classico, evidenzia web design Umbria. Le parole chiave vanno usate nei punti giusti non vogliamo ripeterci, ma all’ inizio della pagina, nei paragrafi, nei titoli e con la corretta densità senza esagerare perché non stai scrivendo solo per gli spider. Poi ricordiamoci sempre che troppa ottimizzazione fa male, scrivo anche per gente che mi legge che vuole risolvere un problema e che non deve fare delle arrampicate per cercare quello che serve. Le keywords vanno spalmate ovunque ma con moderatezza, meta tag description e keywords, title, header, paragrafi, alt immagini, categorie del sito wordpress etc. Anche sul tema della carta stampata e della sua trasposizione ci sarebbe molto da dire ma limitiamoci a fare le cose che servono per far funzionare le cose. I titoli brevi colpiscono meglio se sono anche divertenti e coinvolgenti. Tanto per usare una delle colorite metafore di Hemingway in versione condominiale, qui devi prendere il lettore e afferrarlo per la coda della balena o per i capelli, sentenzia web design Umbria. Certo il web é più meglio (che non si dice ma fa audience) per scrivere news al fulmicotone piuttosto che approfondimenti proprio in virtù di quella famosa curva dell’ attenzione. I titoli devono includere le parole chiave e bisogna dare molta importanza a ogni singola parola. Scrivendo in formula breve diamo la possibilità al nostro affezionato lettore di avere un colpo d’occhio globale sul tutto e questo ci consente di far rimanere il visitatore incollato sul ns articolo. Certamente tante acrobazie non servono restiamo ancorati al fatto a quella famosa coda della balena mettendoci dentro il ns stile personale. Male non fa anche rileggere il tutto perché noi su web dobbiamo fare qualità non gettare alla rinfusa il cemento per fare spam. Ricordiamoci anche di curare i link interni ed esterni puntando a siti out dove il contenuto é pertinente alla nostra disquisizione. In uno dei prossimi articoli con web design Umbria affronteremo la spinosa questione dello scrivere post per i blog.

Come faccio a diventare Grande Maestro se accetto patta in posizione superiore? Come faccio a programmare in PHP se non conosco la bonifica e la validazione dei FORM?

Come faccio io web developer Umbria a risolvere il problema dei migranti? Come faccio a risanare l’INPS? Vabbè rientriamo nei ranghi senza fare spam per non subire penalizzazioni come web developer Umbria: Margate 1935, http://www.chessgames.com/perl/chessgame?gid=1224079, una piccola lezione di Reshewsky sulla valutazione della posizione. Non aveva la norma di GM e Capablanca di fronte gli propone patta, ma Reshewsky che fa? Decide di giocarsela e di vincerla quella partita dichiarando a un certo Frankael a fine partita con il punto portato a casa: come faccio a diventare Grande Maestro se non sono in grado di vincere le posizioni superiori? Alla faccia della sicurezza in se stessi, verrebbe da dire con web developer Umbria o con le stesse parole del GM: “Here Capablanca offered a draw, but since I had a clear initiative and pressure on black’s weaknesses, I declined the offer. I thought I could win, and I could not hope to become a grandmaster by accepting draws in winning positions.” – Source: Reshevsky’s Best Games by Reshevsky – SR. Tornando al problea dei form, bisogna risolvere la questione degli spazi bianchi digitati dall’ utente e la questione dei tag HTML oppure dei caratteri speciali HTML? Non possiamo mica permettere queste brotture no? Partiamo da un presupposto, chiunque digiti in un campo testo qualcosa é un maleintenzionato, potrebbe essere un ossimoro ma non lo é. Lo sviluppatore deve sempre mettersi dalla parte della sicurezza e della bonifica, costruire la sua interfaccia grafica a prova di superidiota in modo da non subire danni di qualsiasi tipo, quindi il processo di sanificazione é cosa buona e giusta ma soprattutto va accompagnato dalla validazione.Facendo riferimento da un interessante articolo apparso su uno dei tanti portali del Ceo Faraoni Enrico all’ indirizzo: https://umbriawaysemplifica.wordpress.com/2017/08/05/lumanita-sta-per-essere-distrutta-ma-php-permette-la-prevenzione-con-la-bonifica-dei-campi/ avevamo visto in dettaglio tutte quelle funzioni utili per la bonifica che possiamo riassumere anche in una funzione del tipo:

function clean($input) {
// Trims whitespace from input
$input = trim($input);
// Removes slashes from input data
$input = stripslashes($input);

// Typically you would use either strip_tags or htmlspecialchars
// depending on whether you want to remove the HTML characters
// or just neutralize it.

// Removes all the html tags from input data
$input = strip_tags($input);
// Escapes html characters from input data
$input = htmlspecialchars($input);

return $input;
}

Ovviamente serve poi tutto il lavoro sulla validazione che prevede una serie di controllo accurati sui singoli campi, accertarsi che la mail sia stata inserita con il simbolino giusto, accertarsi che il campo telefono non veda lettere, accertarsi che i campi non debbano essere vuoti, bisogna mettersi dalla parte di HULK che arriva sulla nostra pagina e inizia a compilare e spedire con la stessa grazia del suo collega Ben Grimm dei fantastici 4. I controlli di sicurezza sul modulo devono essere a prova di bomba atomica e di pugni sferrati sulla tastiera con la potenza della roccia dei fantastici 4! In questo posto sono riassunti i momenti salienti a livello di codice per risolvere il problema e potersi così finalmente distinguersi da un newbie! La spiegazione é abbastanza intuitiva ma se dovreste avere problemi non esitate a contattare Umbriaway Consulting per le delucidazioni (non gratuite!) di rito. Il modulo in azione con tutte le possibilità di errore da testare é presente all’ indirizzo: http://www.farwebdesign.com/examplephp/Example11-validatingInput-bootstrap.php e tra l’altro per l’appunto é stato formattato anche con bootstrap e le sue classi specifiche relative ai form e al gruppo di elementi per un form.

Normalizzare le posizioni come andrebbe fatto con i database é possibile? Risponde web developer Umbria!

Con web developer Umbria avevamo visto che la posizione Tal vs Portish giocata a Biel nel 1976 era disturbata anche da alcuni commentatori in quanto ad esempio Gligoric commenta l’abbandono di Portish sottolineando come 37..Tg8 andrebbe incontro a Dg6!! per verificare poi con Umbriaway Consulting che un semplice scaccho in b7 per controllare la casa f7 con successiva presa della dona avrebbe prodotto complicaqzioni dove il nero si salva….ma certamente Portish in quella partita pur non avendo visto nulla in quella situazione ha fatto bene ad abbandonare visto che 37..Tg8 é confutata dalla mossa spaziale 38 Td8!! e tutti a casa sul tema della deviazione. Ha del tragico anche questa situazione http://www.chessgames.com/perl/chessgame?gid=1557884 dove il nero sembrerebbe vincere con una mossa fantastica ossia Ab3 che serve a rinforzare il controllo sulla casa d4 quando poi di fatto saltano anchew qui le valutazioni razionali e abbondano le viste perché il Bianco non si sa bene per bravura o pura fortuna porta a casa il punto con la mossa della disperazione Cb6. Ecco ma nel parallelismo di progettazione DB MySql cosa centra tutta questa dissertazione su quello che crediamo vero o non vero? Per esempio, chiede web developer Umbria, quando progetti un DB lo normalizzi anche? Si, No, Perché? Bisogna evitare record ridondanti e quindi bisogna spezzare bene i dati su più tabelle e quindi servono le Join ma a quel punto le cose si complicherebbero mucho e quindi…e comunque uno degli errori del neofita che inizia a programmare é quello di non seguire una linea didattica di progettazione del DB che impiegherebbe da sola troppo tempo ma il workbench bisogna scaricarlo dal sito MySql preoccupandosi prima di recuperare i requisiti di sistema e le varie librerie richieste, in quanto con la formula GUI l’utente ha più facilità di gestione dei propri DB. Così scopriamo che popolare una select mescolando PHP e HTML provoca delle situazioni a rischio mica da ridere in quanto dentro scorrendo magari i dati del campo data scopriamo che abbamo inserito nel db le stesse ripetute informazioni il che ovviamente fa la differenza a livello di pedigree. Nella libreria allegata da web developer Umbria ecco semplici regole di progettazioni da rispettare, in modo da evitare per lo meno situazioni molto pacchiane. Per finire su questa idea degli errori da evitare parliamo di una posizione che si é verificata nella hasse haring giocata a Lipsia nel 1952, il nero decide di vincere questa partita giocando la spettacolare ..Dc2 per ricredersi dopo la fortunata 2 Da3 che obbliga a Tb1 ma che però va incontro a un matto forzato con Ce6! Se il nero avesse normalizzato questa posizione invertendo l’ordine dei fattori si sarebbe accorto che giocando subito..Tb1 e dopo Da3 del bianco la semplice Rg8 il bianco avrebbe dovuto abbandonare in vista della letale Dc2. La conclusione é palese: normalizzate, normalizzate, normalizzate!

JQUERY può assolvere con intelligenza alla funzione di precaricamento della pagina? E’ un dilemma che non fa dormire la notte eh?!

Continua il viaggio avventuroso di Giacobbo di web developer Umbria  e di Umbriaway Consulting alla scoperta dell’ acqua calda, pardon alla scoperta di come ci si mette nella condizione di perdere in poche mosse e subire scacchisticamente una miniatura. Gli scacchisti si sa hanno avute molte esperienze agonistiche e allora viene da chiedersi ma posso farmi mangiare la regina e invece che ristabilire l’equilibrio riprendendo il mal tolto faccio una mossa di attesa posizionale che scombina i progetti difensivi del mio avversario? Certo che si anche se per la verita la mossa 9..b2!! di Balogh giocata contro Nagy a Budapest nel 1948 in un gambetto siciliano é alquanto telefonata e scenografica anche se spaventosamente letale. Liquidata la parte scacchistica da parte di Faraoni Enrico CEO di Umbriaway Consulting (così imparano a giocare il gambetto siciliano!) ci porta a riconsiderare la religione JQ, non avrai altro dio all’ infuori di me. Imparare JQuery ha una curva di apprendimento lieve rispetto a Javascript, anche senza grande esperienza di programmazione é possibile andare a manipolare il DOM con estrema facilità in modo semplice e intuitivo. JQuery é essenzialmente una libreria Javascript ma ha il vantaggio di ottimizzare il codice rendendolo facile, semplice ed essenziale. Con una riga di codice puoi toccare l’intero universo dei figli del DOM afferma web developer Umbria! Certo bisogna prima familiarizzare con gli elementi genitori e figli, capire che nel DOM ci sono delle relazioni che si possono sfruttare per accedere in qualunque punto della magina contrassegnata dai marcatori HTML i famosi TAG che però qui diventano oggetti JavaScript che hanno attributi proprietà e metodi.Il document object model ha una struttura semplice e logica che semplifica l’architettura della pagina. Paradossalmente per il neofita che non ha nessuna base di programmazione potrebbe essere una idea interessante quella di approcciarsi prima a JQuery in quanto scalda i motori poi per passare a Javascript e Node o altri framework come angolar per esempio. Se ho una immagine che fa parte di un paragrafo attraverso una semplice relazione gerarchica padre figlio posso partire dall’ elemento che sta più in alto di tutti che é DOCUMENT per passare all’ oggetto WINDOW, passando poi per il BODY e il paragrafo e arrivare all’ immagine. Web developer Umbria ricorda che JQuery con una riga di codice fa tanto rispetto a JS e c’è anche una versione minimalista da scaricare che si preoccupa solo di assolvere al miglior funzionamento della USER Interface, quindi parliamo di un framework estremamente potente e flessibile. Possiamo accedere alle proprietà degli elementi molto velocemente. Risalire nodo per nodo fino al punto CHILD di mio interesse grazie all’ uso dei SELETTORI che aprono le porte per infinite possibilità. So what can Jquery do? Analizziamo l’esempio presente all’ indirizzo http://www.farwebdesign.com/jquery/1/cicerone.html ebbene carico la pagina e cosa succede? Apparentemente un bel nulla ma sotto le quinte JQuery ha predisposto al meglio il caricamento della pagina vediamo in dettaglio la funzione inserita nel post. La prima parte della funzione che si vede in gallery inizializza il documento mentre la seconda parte, classica funzione javascript che riempe l’oggetto window figlio dell’ oggetto document e legato ad esso da una relazione gerarchica si preoccupa di caricare le immagini, i banner e tutta la parte grafica annessa. E’ utile inserire questa funzione perché gli script devono girare solo quando tutto il teatro degli eventi é pronto per assicurare uno spettacolo decente agli spettatori e solo quando il body é stato completamente caricato. Detto questo vediamo anche alcune stravaganze della pagina che realmente non hanno nulla di dinamico ma che dietro le quinte lavorano benissimo. Ad esempio nella parte dei CSS abbiamo inserito un carattere Jolly che sta a significare che tutti gli elementi presenti all’ interno del document seguiranno lo stesso regime di settaggio imposto. Nello specifico l’asterisco rappresenta l’intero universo, tutti gli elementi di un documento, in pratica il simbolo dell’asterisco potrà esssere utilizzato per definire una regola globale per ua pagina o per modellare tutti gli elementi presenti all’interno di un selettore. L’area dei contenuti e il confine interno dello spazio del box dell’ elemento viene definita in CSS padding, utile ad esempio in quei casi dove il background é colorato e si vuole distanziare lo scritto dal bordo per una migliore leggibilità. A volte si vedono nelle dichiarazioni quattro valori ma é bene ricordare che fanno riferimento come partenza al TOP per finire al LEFT. Il Margine invece ha a che fare con l’idea di spazio esterno del BOX per cui se mi ritrovo un paragrafo attaccato alla pagina posso distanziare le frasi scritte con la proprietà MARGIN per l’appunto che come per il padding si suddivide nelle sue declinazioni in top, right, bottom e left. Poi ci sono altre due stravaganze inserite nella pagina con link che é bene ricordare per gli aspiranti web developer in Umbria, il sito dei fonts di Google all’ indirizzo https://fonts.google.com/ e il famoso sito della fuffa per venditori di pentole http://it.lipsum.com/ che serve a delimitare le aree di testo provvisoriamente per lasciare contenuti temporanei.

Confondi il Viagra con il Vagrant? Allora valuta il trattamento sanitario obbligatorio (TSO)

Quante volte avete incontrato un collega che con sorriso sardonico salta fuori mentre voi siete nelle canne (non quelle fuffogene) e avete bisogno di completare il codice del vs portentoso programma su hardware e software presi in prestito e quello con un ghigno di soddisfazione satanica in volto vi dice con tono suadente e lascivo: funziona solo sulla mia macchina ma sto andando via perché sono le 17! All’ indirizzo https://www.vagrantup.com/ abbiamo il nostro Viagra ma perché dal punto di vista tecnologico questa risorsa é molto importante? Indaga Umbriaway Consulting con piglio alla Poirot per ottenere le successive informazioni. Vagrant è uno strumento per creare e gestire ambienti di macchine virtuali in un singolo flusso di lavoro e fin qui sembra tutto ok. Con un flusso di lavoro di facile utilizzo e automatizzato, Vagrant abbassa il tempo di installazione dell’ambiente di sviluppo, aumenta la parità di produzione ed elimina tutti quegli alibi legati al famoso detto del disfattista: non si può fare che da sempre viene utilizzato da tutti i gatti baggi del pianeta (neologismo ed espressione ecumenica che sta ad indicare aria bastonata dello sfigato fantozziano che non é in grado di fare). Sul sito troverai ampia documentazione per districarti con questo potente elisir. Perché dunque usare Vagrant e non il Viagra? Chje controindicazioni ci sono? Vagrant fornisce ambienti di lavoro semplici da configurare, riproducibili e portatili costruiti in cima alla tecnologia standard del settore e controllati da un unico flusso di lavoro coerente per aumentare la produttività e la flessibilità di Umbriaway Consulting e del vostro team. Per ottenere la sua magia, Vagrant si trova sulle spalle dei giganti. Le macchine vengono fornite in cima a VirtualBox, VMware, AWS o qualsiasi altro provider. Quindi, gli strumenti di provisioning standard del settore, come gli script di shell, Chef o Puppet, possono installare e configurare automaticamente il software sulla macchina virtuale. Tutto chiaro no? Se sei uno sviluppatore, Vagrant isolerà le dipendenze e la loro configurazione all’interno di un unico ambiente coerente e disponibile, senza sacrificare nessuno degli strumenti con cui si utilizza (editor, browser, debugger, ecc.). Una volta che tu o qualcun altro crea un singolo file di Vagrant, dovrai solo cercarlo e tutto è installato e configurato per lavorare. Altri membri del tuo team creano i loro ambienti di sviluppo dalla stessa configurazione, quindi, se si lavora su Linux, Mac OS X o Windows, tutti i membri del tuo team eseguono il codice nello stesso ambiente, contro le stesse dipendenze, tutte configurate allo stesso modo. Dite addio ai bug “funziona solo sulla mia macchina”, l’evoluzione non tiene conto dei Tornasol da Palio di Siena! Ambiente di sviluppo, programmi preinstallati, riproducibilità, configurazione, macchine virtuali: ma sei sicuro di stare bene, le hai prese le medice? Tutto sotto controllo e pensare che non abbiamo nemmeno parlato di https://www.virtualbox.org/ e Homestead che è l’ambiente di sviluppo di default per quanto riguarda Laravel, un potente framework PHP strutturato sul modello MVC. E se aggiungessimo altra carne al fuoco parlando di Commit e GitHub e di link come https://github.com/Swader/homestead_improved? Basta , aiuto, non se ne può più! Andate a cercare qualcuno che parla italiano!

Il ciao mondo come non l’avete mai visto in PHP

Nel famoso script phpinfo(); veniva generato un intero documento HTML comprensivo di tutte le intestazioni standard della pagina, ossia head, content, body, footer etc e il tutto serviva per illustrare le specifiche di sistema. Ora proprio a riguardo della generazione dell’ output ricordiamo che PHP oltre alla generazione di pagine web può anche lavorare su shell e interfacce grafiche complesse che qui nell’ ultimo caso non andremo a vedere come umbriaway consulting nello specifico. Sicuramente per chi inizia a programmare scrivere codice cross platform é un vantaggio, certamente java é più rigoroso. La prima cosa che si impara é il famoso ciao universo che vediamo insieme a Umbriaway Consulting:

 

<html>
<head>
</head>
<body>
<?
echo “ciao Giove!”;
?>
</body>
</html>

accedendo da localhost per vedere l’effetto che fa con questo script scopriremo che sulla pagina in esecuzione comparirà la famosa scritta giovesca sopra menzionata. Ora a livello di codice HTML se andiamo a curiosare con tastro destro il sorgente della pagina vedremo che il codice diventa il seguente:

<html>
<head>
</head>
<body>
ciao Giove!
</body>
</html>

echo é una funzione che stampa a video le stringhe delimitate da virgolette e questo esempio serve per far capire come viene generato il codice in output. La sintassi poteva anche essere echo (“ciao pinko”); ma qui si ha il vantaggio che posso solo eseguire una istruzione alla volta mentre con: echo “ciao pallino”, “questo é un saluto php”; le due frasi saranno stampate consecutivamente su una unica riga. Da shell questo script verrà eseguito prima lanciando il php.exe e poi il ciao.php il nostro script e a video comparirà lo stesso output a livello semantico. Path e percorsi per i comandi di riga di comando possono differire da sistemna a sistema (linux o windows). Ovviamente viene da chiedersi come mai devo scrivere anche i tag html se questi poi vengono generati automaticamente e dinamicamente, corretto quindi per ottenere l’effetto finale posso anche scrivere solo echo (“ciao Giove!”); nel mio script, mentre se invece volessi modellare il testo potrei scrivere qualcosa di funzionale del tipo:

<html>
<head>
</head>
<body>
<?
echo ‘<p align=”center”><b>ciao Giove!</b></p>’;
?>
</body>
</html>

da notare la sfumatura virgoletta singola e virgoletta doppia dove abbiamo usato le prime per delimitare l’intera istruzione stringa di stampa in quanto all’ interno della stringa stessa sono presenti le doppie che provocherebbero conflitti sull’ apertura chiusura. Usando solo doppie avrei generato un errore errore per l’interprete di comando. Dal punto di vista strategico restituire degli errori a video é controproducente lì dove si incontrano maleintenzionati disposti a trarre profitto dai punti di vulnerabilità del sistema. Come abbiamo giàù detto in uno dei tanti portali umbriaway consulting sul file php.ini é possibile modificare la direttiva del parametro error_reporting a =E_ALL in modo che vengano riportati tutti gli errori utili per il debug e in secondo luogo bisogna anche andarli a visualizzare tramite l’accensione del parametro: display_errors=ON che per motivi di sicurezza all’ inizio viene impostato a OFF. Se PHP viene eseguito come modulo di APACHE affinché le modifiche diventino effettive é necessario riavviare il server web.

che produce esattamente una pagina statica con questo codice:

<html>
<head>
</head>
<body>
<p align=”center”><b>ciao Giove!</b></p>
</body>
</html>

Micheli 2296 – Faraoni Enrico 2067 Marostica-Acqui 08/05/2017

Gli scacchi sono utili perché rispetto alla programmazione hanno molti parallelismi del tipo che quando produci il software definisci il problema, scomponi il problema, hai una serie di input e di output con in mezzo della logica procedurale che nel settore algoritmi ti fa scrivere dello pseudocodice (portare il problema nel mondo reale con una sintassi che dipende dal tipo di linguaggio) per poi vedere tutto il tuo lavoro finalizzato in codice finale che viene macinato dal computer come linguaggio macchina e convertito in istruzioni dettagliate e precise. In teoria il problema della mamma che ha 10 caramelle e cinque bambini con cui dividerle dovrebbe avere una ferrea logica procedurale con la sua assegnazione di variabili e la soluzione (quante caramelle deglutisce ciascun bambino?) dovrebbe essere freddamente meccanica da un punto di vista matematico. Ma nelle partite a scacchi la componente psicologica esiste e fa grossi danni, vedere la partita seguente per esempio dove il nero incurante del fatto di avere una caterba di punti elo in meno mette alle corde un più quotato avversario per poi crollare in poche mosse quando andava assestato un montante finale! Negli scacchi uno più uno non fa sempre due come risultato. La seguente partita giocata al Master vs Marostica l’8 maggio del 2015 dimostra quanti danni possa fare la subitanza psicologica nei momenti in cui il giocatore più “scarso” subisce psicologicamente in linea ipotetica quello più forte di elo. In questa partita il Bianco agonista di esperienza va in posizione inferiore fino a sfiorare il tracollo e il colpo decisivo ma il nero a un certo punto inizia a vedere i fantasmi e perde coesione con analisi e scacchiera, perdendo in poche! L’insicurezza coadiuvata da ansia e analisi sconcertanti, costruisce sempre una bel risultato sul tabellone, una bella pigna! L’importante é rimanere sereni anche se stai per prendere 4 goal direbbe Buffon sdrammatizzando.

Micheli 2296 – Faraoni Enrico 2067 Marostica-Acqui 08/05/2017

1 e4 e6 nei momenti importanti la FRANCESE c’è sempre ah ah (visto il risultato) 2 d4 d5 3 e5 c5 4 c3 Cc6 5 Cf3 Ad7 6 a3 f6 7 b4 cd4 8 cd4 Cge7 9 Ad3 Cg6 10 ef6 gf6 11 h4 Ad6 12 g3 Dc7 13 h5 Cge7

gioco pari 14 b5?! orribile dal punto di vista posizionale il pedone tra l’altro diventa anche una debolezza, interessante 14 00 a cui seguirebbe arrocco lungo del nero che sta okkey!

14..Ca5 15 Ta2 Cc4 leggero vantaggio del nero secondo i motori

16 Ah6 (16 Tc2!?) Rf7 (16..e5!? 16..000) 17 g4?! il momento critico, secondo i motori arrocco é la mossa giusta. Il Bianco ha impostato una partita creativa ma totalmente squilibrata in quanto spingendo affrettatamente i pedoni di ambo i lato si é costruito una serie di debolezze non solo di pedoni (a3,b5) nello schieramento, dal punto di vista pratico c’è da aggiungere che g4 anche se antiposizionale é ricca di veleno

17..Tag8 18 g5 Cf5?! (18..Af4 chiaro vantaggio) 19 Af5 ef5 20 gf6 Te8+ (20..Da5+ chiaro vantaggio nero) 21 Rf1 (21 Te2!?) 21..Ab5 22 Rg2 Rf6

23 Ag5+ Rf7 chiaro vantaggio del nero c’è da rimanere stereofatti (neanche tanto) nel constatare come possa il black perderla in poche 24 Cc3 Ce3! (24..Dd7!?) 25 Ae3 Dc3 26 Cg5+ Rf8? il nero accusa un primo momento di disorientamento e dimostra poca precisione di calcolo

26..Rf6 27 Ad2 Dd4 (27..Dd3 28 Th3 De2 -+) 28 Ch7 Rf7 29 Cg5 Rg8 chiaro vantaggio del nero 27 Df3! sembra buona anche 27 Tc2 Dd3 28 Td2 Da3 29 Db1 Te3 30 Df5 Re7 31 Thd1

27..Ad3?? eccola qui l’immancabile gemma! 27..Dc8 28 Af4 Ae7 il nero é ancora ok

28 Tc1 vantaggio decisivo del bianco, naturalmente non 28 Dd5? per Dc6

28..Db3? i motori suggeriscono migliore 28..Da5 29 Ad2 Db5 ma il bianco ha posizione vinta con 30 Tb2! idea 30..Db2 31 Dd5 e attacco vincente

29 Af4?

anche il bianco canna 29 Tb2! Te3 (29..Db2 30 Dd5 attacco vincente) 30 Tb3 Tf3 31 Tc8 idea Tb7 +-

29..Ae7 30 Tb2 Ag5?? la perla che fa traboccare il vaso

30..Da3 (30..Db2 31 Dd3 attacco vincente) 31 Ce6+ Rf7 32 Tb7 Ae4 33 Cg5 Rg7 34 Ae5 Rf8 35 Ce4 Df3 36 Rf3 fe4+ 37 Re2 Tg8 38 Ta7 e il nero é nei guai in vista della minaccia Tcc7

31 Tb3 +-

31..Ae4 32 Ag5 (32 De4+-) 32..Tg8 33 Rf1 Tg5 34 Df4 Th5 35 Dd6

1-0

Quel cavallo che non si poteva mangiare…quando i sacrifici perdenti diventano vincenti con il metodo Ossimoro-Carpax: PS (2064) – Faraoni Enrico (2063), raggruppamento A1, 24 marzo 2017

1 e4
Avevo dato un occhiata alle aperture e allo stile di gioco del mio avversario e avevo vagamente deciso di giocare prima della partita un sistema tipo 1 e4 c6 2 d4 d5 3 e5 Af5 4 Cf3 che senza rischi che prevede di arroccare velocemente dopo Ae2 per iniziare operazioni attive veloci visto che il problema del nero é sviluppare il lato di re

1 c6 2 d4 d5 3 e5 c5!
il punto esclamativo si giustifica dal punto di vista psicologico, il bianco va a giocarsi qualcosa che non si aspettava

4 c4!?
coerente con il bisogno di creare posizioni un pò fuori dalla norma cerco di forgiare da subito pò di squilibri dinamici anche in funzione del tempo

4..e6
il nero ci pensa un pò, segno comunque che anche la quarta mossa del bianco come sottovariante rispetto alle linee principali giunge un pò a sorpresa

5 cd5 ed5 6 Cf3 Cc6 7 Ab5 a6 8 Ac6 bc6 9 00 cd4!?
Una novità teorica, chessbase riporta 9..c4/Ag4/Ch6. Il nero in questa linea non sembra avere problemi, ha la coppia degli alfieri e un centro forte, ma il bianco ha un piccolo vantaggio di sviluppo.

10 Cd4 c5
ora la cosa normale da fare era Ce2 idea Cf4 e punto debole d5 con gioco equilibrato oppure Cb3 ma…

11 e6??

Cose dell’ altro mondo soprattutto in un incontro a squadre dove si dovrebbe giocare in maniera responsabile! E’ paradossale che sul tema gioco con i pezzi o contro l’avversario, questa mossa perdente di per sè assicura da subito una vittoria psicologica totale, il nero inizia a vedere i fantasmi sulla linea 11..cd4 12 Da4 Re7 con posizione totale vinta

11..fe6??
dopo questa mossa dove il nero continua comunque ad avere un minuscolo vantaggio ma ero ormai convinto di avere chance concrete di fare il punto

12 Dh5+ g6 13 De5 Df6
la linea 13..cd4 14 Dh8 Rf7! una mossa tematica nel controgambetto greco che in alcuni varianti lascia la regina bianca a rischio 15 Dh7 Ag7 16 Te1 dà chiaro vantaggio al bianco

14 Dc7


unica giocata perfettamente consapevole che dopo 14..Dd4 15 Dc6 Rf7 16 Da8 il nero é in salute ma il bianco ottiene il suo scopo quello di avere creato una situazione caotica dove il mio avversario non si sarebbe sentito a suo agio

14..Ad7 15 Cf3
15 Db7 é interessante

15..Tc8!?
Anche 15..Dd8 secondo i motori lascia il nero leggermente preferibile

16 Db7 Ce7
(16..De7!? Rybka)

17 Ag5 Dg7?!
il nero inizia a barcollare, più attiva Df5 che non toglie la casa g7 per lo sviluppo

18 Cc3
Il bianco é in vantaggio e la tavola é apparecchiata, ci sono solo le torri da attivare con il re nero al centro e temi tattici su d5 che iniziano lentamente a concretizzarsi

18..h6?
dopo questa mossa sembra finita ma il nero aveva anche gravi problemi di tempo perché dopo il finto sacrificio di cavallo aveva speso più di mezz’ ora per calcolare nella nebbia chissà quali varianti, sembra ancora tenere 18..d4 19 Ce4 Cd5 20 Tfe1 ma adesso l’ago della bilancia pende impercettibilmente dalla parte del bianco

19 Af4 Th7
il nero continua a perdere colpi in posizione già compromessa sembra di tenere di più la linea 19..Ac6 20 Da6 Df7 21 Ae5 Ag7 anche se va incontro a 22 Cb5!

20 Tfe1
Continuando ad attivare i pezzi contro il re in balia della tormenta

20..g5
disperazione ma il nero qui é un pugile alle corde

21 Ce5
oppure anche 21 Ag3 d4 22 Ce5 con chiaro vantaggio

21..Td8
interessante la linea 21..Ac6 22 Cc6 Tc6 23 Cd5!! gf4 24 Tad1 f3 25 g3 e il nero continua ad essere pericolosamente esposto

22 Ag3
adesso il bianco gioca senza rischi perché il nero non ha modo di liberarsi ma sembra più incisiva la spettacolare 22 Da6! gf4 23 Cb5 che alimenta un attacco feroce

22..Ac8
se il nero gioca d4 il bianco può valutare anche di dare un pezzo con 23 Da6 dc3 24 Tad1 e forte attacco se 24..Cd5 25 Td5! e se 24..c2 25 Td7!

23 Db8!?
c’erano delle alternative interessanti ma anche questa mossa é giocabile

23..Ad7?
Ultimo errore per sperare di arrampicarsi sugli specchi il nero doveva giocare 23..Cf5 24 Cc6 Db7 25 Te6+ Ae6 26 Dd8+ Rf7 27 Ce5 Rg8 e il bianco deve ancora sudarsela anche se ormai il nero sta perdendo per il tempo

24 Db6 Cc8
su qualcosa tipo 24..Ac8 anche una mossa come 25 Ca4 manda in tilt il sistema perché il nero é in una sorta di zugzwang

25 Da6

Viene ristabilità la parità materiale dopo la demenziale spinta alla undicesima mossa e grazie alla piovra in e5 il nero deve solo aspettare il colpo di grazia

25..Ad6
anche Cd6 permette il sacrificio in d5

26 Cd5! Ae5
altrimenti sulla presa seguirebbe Cc4

27 Ae5 Df7
per i motori Dg6 é preferibile

28 Cf6+ Rf8 29 Tad1

l’ultimo pensiero del bianco che vuole fare Td7 é quello di andare a mangiare in h7, il nero si lascia perdere per il tempo. L’undicesima mossa del bianco é da clinica psichiatrica MA ha funzionato perché l’avversario non é un giocatore che si trova a suo agio nelle posizioni tattiche e gli scacchi non sono solo tecnica ma anche psicologia, certamente se Karpov sacrifica tu prendi pezzo e perdi forzatamente in tutte le varianti se Faraoni sacrifica tu prendi pezzo e vinci facile sempre ah ah tutto é bene quel che finisce bene. Da notare che anche questa ciambella con il buco a metà ha permesso poi una liberazione catartica di fiducia con buone idee liberate nelle partite successive,  potevo rimanere offeso 🙂