23 Cc6! di Ljubojevic ed é subito punto: quando le parole del poeta si elevano insieme a Java ed Eclipse!

Nell’indimenticabile torneo di Bugojno ’86 indirizzo http://www.chessgames.com/perl/chesscollection?cid=1012088 c’è un dato analizzando la classifica finale che non può essere trascurato, il vincitore si ritrova un bello zero subito da un certo Sokolov. Ma guardando bene che ci fa un giocatore come Ljuboievic in terza posizione? Il fatto é che in quel torneo macinava idee e immaginazione, ad esempio contro Timman ecco cosa riesce a fare http://www.chessgames.com/perl/chessgame?gid=1092162 da qui la pseudo domanda del titolo: il nero gioca 22..Tg8 pensando di venirne fuori o aveva previsto che cosa sarebbe accaduto alla mossa successiva? Se é un superprofessionista il neofita dira tra se che l’avrà vista per forza questa risorsa ma non puoi ottenere sangue da una pietra, più di tanto quando finisce in posizione inferiore non puoi fare. Quindi 23 Cc6 e il nero finisce in guai grossi. Ma non tergiversiamo e con social media marketing Umbria entriamo nel vivo della programmazione Java grazie al fatto che il lavoro precedente sulla configurazione dell’ IDE ha prodotto buon esito come si evince all’ indirizzo: https://umbriawaydesign.wordpress.com/2018/01/19/cosa-succede-quando-un-giocatore-viene-mortificato-e-di-cognome-fa-mortimer-chiedilo-al-gm-eclipse/; in questa scorribanda formativa o autoformativa vediamo le caratteristiche dell’ IDE, osservando in dettaglio alcune funzionalità. La struttura é quella che si vede barra del titolo, barra dei menù, barra degli strumento, a sx abbiamo la gestione folder progetto al centro troviamo lo spazio per la stesura del codice a dx mi ritrovo la sezione outline e tasklisk che si possono spostare o chiudere con soluzioni flessibili grazie al trascinamento per rendere comoda la struttura personalizzata. In genere la visualizzazione cambia con le diverse modalità del progetto, in gergo vengono chiamate PROSPECTIVE con opzioni di visualizzazione verticale oppure orizzontale. Quello che a noi preme sapere che queste interfaccia visuali consentono sempre una altissima possibilità di personalizzazione e che ci sono sempre diverse soluzioni a un tipo di problema. Esiste anche una modalità di visualizzazione chiamata NAVIGATOR come finestra messa a fianco ad EXPLORER ma molte cose non sono strettamente necessarie. Posso anche impostare la visualizzazione gerarchica sui packages ma spesso queste varianti dipendono dalla soggettività del programmatore. Nella parte inferiore ho una finestra di debug dove cliccando due volte ho anche il dettaglio avanzato che punta al file incriminato. Eclipse di per se é un labirinto stile posizione analizzata sopra, piena di mosse e di contromosse! Il tutto é facile e intuitivo ma le voci di menù sono molteplici e un minimo di smanettamento é auspicabile prima di prendere possesso dello strumento. Posso anche scegliere le modalità di debug dalla barra degli strumenti per esempio, che mi presenta un menù a discesa per le mie esigenze su quale file intervenire. L’editor di codice della finestra principale é davvero potente! E’ ricca di aiuti e suggerimenti per guidare il web developer javista (se ci é consentito dall’ accademia della crusca) per individuare al più presto quello che non funziona e che manca per far funzionare l’accrocchio! Tornando alla questione posta da social media marketing Umbria  all’ inizio, cosa accade quando un agonista non vede una mossa in analisi, ossia quando l’avversario tira fuori dal cilindro dei colpi tattici come quello di Karpov alla mossa 49 all’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1068476, certamente queste bordate destabilizzano e oltre a rafforzare la sicurezza del potenziale vincitore come in tutti gli sport, servono a gettare nel panico la mente del secondo giocatore che perderà il bandolo della matassa incapace di trovare delle mosse forti che potrebbero risollevare gli esiti della lotta.

Annunci

Abbiamo il DOVERE di parlare di WEB FORM in PHP e della spettacolare partita di TAL giocata nel 1985 vs Ftacnik!

social media marketing umbriaBasta con i buzzurri giochi di parole che hanno consentito alla Juventus di approdare alla semifinale di Coppa Italia contro il Torino grazie a una partita taroccata per un errore umano al minuto settanta quando quel poveraccio di arbitro DOVERI (candidato a visionare prossimamente tornei di freccette) si permetteva di fare grandi danni a quegli sportivi che non tifano Juventus. Finiamola con questa becera rivendicazione e parliamo delle mosse di Tal lo scacchista. Come possiamo definire la Mikhail Tal vs Lubomir Ftacnik Nimzowitsch Memorial (1985), Naestved DEN, rd 8, Sicilian Defense: Scheveningen. Classical Variation (B84) 1-0 in 31 mosse? Un pestaggio sportivo ? O qualcosa simile a una prestazione sonora dei Nirvana modello Come As You Here? Qualcosa di vero c’è a giudicare l’ultimo parallelismo, le parole del testo esaltato da Kurt Kobain sono incomprensibili come le mosse tattiche giocate dal bianco: http://www.chessgames.com/perl/chessgame?gid=1045773. E’ complicato anche ricamarci sopra una bella telecronaca del tipo clamoroso allo Stadium, il bianco vince facile grazie a una incertezza della VAR. Le mosse di Tal sono semplici e oculate nella loro scelleratezza. Come soppesare una mossa come 15 f6!? Il nero forse si aspettava questa spinta di attacco? Un aspetto salta subito all’ occhio e cioé che tutto sommato i pezzi neri sono temporaneamente ripiegati sull’ ultima traversa a esprimere un potenziale limitato rispetto a un gioco di squadra che potrebbero orchestrare. E dopo 20 Ah6 come avrà cambiato la sua valutazione il nero? Avrà finalmente capito in guai seri, chiede social media marketing Umbria? Per le prestazioni di Tal e le sue best games vedere link http://www.chessgames.com/perl/chesscollection?cid=1005503. E ora passiamo a parlare di WEB FORMS per gli sviluppatori PHP che sono strumento o risorse messe a disposizione per consentire all’ utente di processare i dati, sottolinea social media marketing Umbria. Hai presente un modulo di LOGIN? Hai presente dettagli come nome , cognome, indirizzo, mail? Siamo dentro ai web form ma anche ai METODI che servono per processare e spedire queste informazioni. PHP offre un vasto campionariod i opzioni per gestire i FORM al meglio e non dimentichiamoci poi dell’ integrazione con JQuery ed Ajax che consentono un aggiornamento senza passare per il rendering della pagina. Passiamo a valutare con mano e a toccare un esempio pratico che social media marketing Umbria ha messo in piedi all’ indirizzo http://www.farwebdesign.com/php/Example8-webforms.html. Il tag FORM come si evince dalla gallery circoscrivono l’ambito di lavoro della spedizione dei dati e come tutti i tag HTML prevedono la solita apertura chiusura di rito. In una architettura client server, cioé all’ interno di un sistema dove qualcuno richiede e qualcun’ altro predisposto a rispondere, risponde, esistono due modi diversi di spedire i dati GET e POST. Coh get come si evince dal link di cui sopra le variabili transitano sopra la URL e sono visibili il che potrebbe essere un problema in termini di sicurezza, fa notare social media marketing Umbria, per questo spesso si usa il metodo (METHOD nello script) POST dove il tutto passa sotto silenzio in maniera coercitiva! HTTP per Definisce il protocollo di trasferimento ipertestuale come comunicano il server e il client. L’ & come simbolo separa le variabili nella stringa URL nel metodo GET. In uno dei prossimi articoli con social media marketing Umbria affronteremo la spinosa questione del perché l’uomo non sia ancora allunato su Marte (si fa per dire!).

PHP: un buon libro per vedere in azione i fondamenti!

agenzia web marketingUn buon libro per imparare PHP é quello che suggeriamo in questo post da cui preleviamo un estratto. PHP. Una sigla con la quale tutti noi che navighiamo in rete abbiamo avuto a che fare qualche volta (anche semplicemente per aver trovato una pagina con il suffisso “.php”). Una sigla che per qualcuno evoca un obiettivo da raggiungere nell’ambito dello sviluppo di siti web. Che per qualcun altro evoca uno dei primi CMS, quel famoso “PHP-Nuke” tanto in voga qualche anno fa. Che per i miei ex compagni di università evoca notti insonni passati davanti al computer per passare un esame… ! Ma alla fine una sigla che per noi rappresenterà un modo per creare siti dinamici. Ecco, mettiamoci subito d’accordo sul termine “dinamico”. Capita spesso (è capitato anche a me) di avere clienti che chiedono un sito “dinamico”, e con “dinamico” il 99% delle volte intendono un sito “che si muove” (con animazioni in Flash, per intenderci). Non è affatto così. E per capire cosa si intende correttamente per “dinamico”, dobbiamo sapere che il linguaggio PHP è un linguaggio lato server, a differenza, per esempio, di JavaScript che invece è un linguaggio lato client. Cosa significa questo in breve? Significa che uno script JavaScript verrà interpretato dal vostro browser, che eseguirà il codice e si comporterà di conseguenza. Invece le operazioni di un linguaggio lato server come PHP saranno compiute, come dice il termine stesso, dal server, che consegnerà al client (e cioè al browser nel nostro caso) la pagina HTML, codificata dopo aver eseguito una serie di operazioni. Avete mai provato a vedere il codice delle pagine PHP sulle quali navigate? Bene, avrete sicuramente notato che se cliccate “sorgente pagina” (io uso Firefox) su una pagina di un sito in PHP vedrete che in realtà non c’è neppure una riga di codice PHP, ma soltanto HTML. Se invece osservate il codice di una pagina che ha uno script JavaScript, vedrete al contrario lo script nella sua interezza. Perché succede questo? Molto semplice: il codice PHP sta sul server, che lo interpreta e, come detto prima, consegna al browser la pagina già codificata. Per questo motivo vedete solo HTML e non PHP. Quindi, non è neppure possibile copiare il codice PHP (una volta che è stato eseguito) da un altro sito. Tornando quindi al termine “dinamico”, ora possiamo dire che i linguaggi lato server producono dinamicamente il contenuto a seconda delle richieste dell’utente, anche con interrogazioni al database (l’interazione tra PHP e un database di tipo MySQL è uno degli argomenti di questo corso). Ecco cosa si intende per “dinamico”! Pensiamo per esempio a un sito che ci serve per cercare un dato in un database con centinaia di campi: per esempio un indirizzo di un ristorante in un sito che ospita un database di tutti i ristoranti d’Italia. Noi cercheremo un ristorante in Liguria (magari attraverso un semplice form di ricerca), e il server, interpretando la nostra richiesta, ci produrrà in modo dinamico una pagina che conterrà gli indirizzi di tutti i ristoranti liguri memorizzati nel database, tralasciando quelli che non ci interessano. Invece intendiamo con “statico” un sito prodotto con un linguaggio come HTML: esiste una sola pagina ed è quella per tutti, e non ci sono contenuti che vengono prodotti a seconda delle richieste dell’utente. Prima di iniziare a mettere le mani sul codice, è necessario sapere che creare un sito con PHP (alcuni dicono anche “programmare in PHP”!) è un po’ diverso rispetto a creare un sito con HTML e CSS, perché abbiamo bisogno di qualche strumento aggiuntivo, necessario per poter svolgere il nostro compito. Quello che ci serve è un cosiddetto “ambiente di sviluppo” (o “piattaforma di sviluppo”, se preferite): dal momento che PHP è una tecnologia lato server, dovremo creare un piccolo server sul nostro computer in modo tale che il nostro codice possa funzionare, e insieme a questo server dovremo avere anche un programma che ci permetterà di gestire il database, se vorremo utilizzarlo. La scelta è vivamente consigliata, perché se iniziate a mettere le mani sul PHP, prima o poi vi capiterà sicuramente di dover creare un sito PHP/MySQL. Ma di questo parleremo più avanti! E infine, ovviamente, dovremo avere installato sul nostro computer, oltre a server e database, il codice. Queste tre componenti (codice, server e database) costituiscono l’ambiente di sviluppo. Sono davvero molti gli ambienti di sviluppo che si trovano in giro per la rete, ma io vi consiglio WAMP, acronimo di Windows (tra poco vi dirò come fare con Linux), Apache (il nome del server), MySQL (il database: il programma integrato in WAMP per la gestione dei database è PhpMyAdmin) e, naturalmente, Php. Per scaricare WAMP basta recarsi sul sito http://www.wampserver.com (o http://www.wampserver.com/en, se non avete familiarità con il francese). Dicevo, per gli utenti che utilizzano Linux, l’ambiente di sviluppo (server, PHP e MySQL: potete chiamarlo “Lamp”, con la “L” che sta per “Linux”) si trova già nel sistema operativo e basterà avviarlo (vi consiglio però di scaricare PhpMyAdmin da http://www.phpmyadmin.net, è un programma favoloso). Altrimenti potete utilizzare un altro ambiente, che si chiama XAMPP e va benissimo anche per chi usa un Mac: trovate l’ambiente di sviluppo all’indirizzo http://www.apachefriends.org. Io preferisco WAMP (e lo conosco molto meglio), quindi faremo riferimento a questo ambiente, perché è molto semplice, è veloce da utilizzare e non richiede alcuna conoscenza di base! A questo punto facciamo un bel download (è pubblicato con licenza GNU GPL, quindi è libero e gratis!) e installiamo la piattaforma sulla nostra macchina (durante l’installazione dovremo indicare un browser che ci servirà quando faremo le prove: indicate pure il vostro browser preferito). Clicchiamo sull’icona di WAMP per farlo avviare: noteremo che nella barra delle applicazioni apparirà un’icona a forma di W racchiusa in un rettangolo (nelle versioni più datate, l’icona era invece una specie di semicerchio), che in fase di caricamento sarà dapprima rossa, poi gialla e infine diventerà tutta verde: solo quando l’icona sarà tutta verde potremo iniziare a lavorare. Facciamo ora clic con il tasto sinistro del mouse sull’icona: vedrete un elenco di voci, e per spiegarle partiamo dal fondo. L’ultimissima, “Metti online”, ci serve se vogliamo mettere in rete il nostro server (magari stiamo chattando con un’amica o con un amico e vogliamo fargli vedere la nostra creazione! Quindi all’inizio, visto che non avremo niente da far vedere, non ci servirà). Le due successive, “Ferma tutti i servizi” e “Riavvia tutti i servizi”, ci servono se vogliamo “spegnere” oppure “riavviare” il nostro server virtuale, e la terzultima “Avvia tutti i servizi”, sarà da utilizzare dopo che avremo, per un motivo o per l’altro, “spento” il nostro server (la dicitura “tutti i servizi” si riferisce alle componenti dell’ambiente di sviluppo, e cioè il server stesso, il linguaggio PHP e il database). Troviamo poi “MySQL”, “PHP” e “Apache”: queste tre voci hanno sottomenù con le varie configurazioni. Lasceremo quelle di default, che ci vanno benissimo così come sono: andranno cambiate solo se utilizzeremo dei CMS e ci serviranno delle modifiche particolari. La prossima voce è “www directory” ed è importantissima, perché è la cartella dentro alla quale inseriremo tutti i nostri progetti. Proviamo a farci clic con il tasto sinistro: per ora è vuota, fatta eccezione per la pagina index.php che è la pagina principale del server virtuale. Ne parleremo in modo più approfondito tra pochissimo. Abbiamo poi il nostro PhpMyAdmin, il programma che serve per gestire database di tipo MySQL: quando lavoreremo sui database, noi utilizzeremo MySQL. L’ultima voce che troviamo partendo dal basso è “Localhost”: proviamo a cliccarci sopra. Vedrete che si aprirà il vostro browser preferito (… o almeno quello che avete indicato al momento dell’installazione) con la pagina principale di Wampserver, e cioè quell’index.php di cui si diceva poco fa: la pagina ci mostra la configurazione del server, i “tools” (che sono i già citati programmi per il database assieme a phpinfo(), la pagina che ci mostrerà le configurazioni del PHP) e infine i nostri progetti! Per adesso la colonna è vuota, ma per riempirla si fa prestissimo. Andiamo nella www directory, creiamo una cartella e chiamiamola “nuovosito”: torniamo sul Localhost e vedremo che nella colonna “Your Projects” troveremo “nuovosito”. Ma torniamo al punto da cui siamo partiti: la sigla. Cosa significa PHP? È un cosiddetto acronimo “ricorsivo”, perché significa “PHP Hypertext Preprocessor” (“PHP Preprocessore di Ipertesti”): un acronimo ricorsivo è un acronimo in cui una delle lettere sta per la sigla, insomma un acronimo che contiene se stesso. “Preprocessore” è invece un termine informatico con il quale ci si riferisce a un programma che compie alcune operazioni preliminari prima dell’esecuzione del codice: il nostro linguaggio contiene il termine “preprocessore” perché prima di inviare la pagina HTML finale all’utente vengono interpretate, appunto, le istruzioni del codice, quindi prima che la pagina HTML venga consegnata al nostro browser, il preprocessore PHP compie alcune operazioni. Che espressione utilizzeremo per indicare PHP? O meglio… che tipo di linguaggio è? Non è ovviamente un linguaggio di markup. Il papà di PHP, il danese nato in Groenlandia Rasmus Lerdorf, lo chiama “linguaggio di scripting”, quindi io direi di utilizzare questa espressione, che sta bene anche con JavaScript. Curiosità: PHP è stato inventato nel 1994. Da allora ne ha fatta di strada! I vantaggi che derivano dall’utilizzo di PHP sono davvero molti e li scopriremo man mano che andremo avanti con il corso. Possiamo anticipare che PHP è facile da apprendere (certo, ci vogliono un po’ di pratica e un po’ di esercizio), che PHP ci semplificherà notevolmente la vita per alcune operazioni, che grazie a PHP potremo gestire meglio i dati del nostro sito, e che con PHP potremo anche, se avremo pazienza e soprattutto tempo a disposizione, costruire un nostro piccolo e semplice CMS personale! Bene, dopo aver installato l’ambiente di sviluppo è ora di cominciare a scrivere un po’ di codice! La prima cosa da sapere è che possiamo inserire codice PHP in qualsiasi punto della pagina: all’inizio, a metà, alla fine… dove vogliamo. Però prima di scrivere il codice… dobbiamo creare la pagina! Apriamo quindi la cartella “www” di WAMP e creiamo una nuova cartella, a cui daremo il nome che più ci aggrada: per questo esempio potremmo chiamarla PrimoProgetto. Apriamo la cartella PrimoProgetto e creiamo una pagina che chiameremo index.php: esattamente come per i siti in HTML, la prima pagina deve chiamarsi “index”. Cambia, ovviamente, l’estensione. Bene, adesso creiamo la struttura HTML come siamo abituati: doctype, tag html, insomma tutto ciò che serve per creare una pagina HTML in accordo con gli standard internazionali, che dovremo rispettare sempre anche progettando un sito in PHP! Creata la nostra pagina siamo finalmente pronti per aprirla con il nostro editor preferito (io consiglio di installare Notepad++) e per scrivere il nostro primo codice! Tutto il testo in PHP deve essere compreso tra un’etichetta (o tag, come preferite, io uso i due termini indistintamente) di apertura e un’etichetta di chiusura. Le etichette di apertura e chiusura sono queste:

<?php

?>

All’interno di queste due tag andrà inserito tutto il nostro codice, stando bene attenti a non commettere errori… vedremo tra pochissimo quanto sono facili le sviste con il PHP. Il primo comando che impariamo si chiama “echo”. Questo comando è un costrutto che serve per stampare a schermo una stringa di testo, ovvero ogni volta che digiteremo il comando echo, seguito da una stringa tra parentesi e apici o doppi apici e chiuso da un punto e virgola, vedremo comparire (quando apriremo la pagina con il browser), quella scritta che abbiamo inserito nel comando. Per vedere il risultato con WAMP, vi basterà cliccare sull’icona nel menù delle applicazioni e cliccare quindi su “Localhost”: si aprirà il vostro browser preferito con l’elenco dei progetti, nel nostro caso “PrimoProgetto”. Cliccate su “PrimoProgetto” e vi si aprirà la pagina index.php. Ma passiamo ora a un esempio pratico del comando echo:

<?php
echo (“Ciao, io mi chiamo Federico!”);
?>

Dal momento che echo non è una funzione (vedremo poi più avanti cosa sono le funzioni), possiamo anche omettere le parentesi:

<?php

echo “Ciao, io mi chiamo Federico!”;

?>

E possiamo cambiare i doppi apici con gli apici:

<?php

echo ‘Ciao, io mi chiamo Federico!’;

?>

Gli apici o i doppi apici devono sempre essere due! Una cosa del genere non può esistere perché restituisce un errore:

<?php

echo ‘Ho visto un’anatra’;

?>

Se proviamo a scrivere questa cosa sopra e poi proviamo ad aprire la pagina index.php scrivendo, nella barra degli indirizzi del nostro browser, http://localhost/PrimoProgetto/index.php, vedremo comparire una scritta del genere:

Parse error: parse error, expecting `’,” or `’;” in [percorso] on line [numero riga]

Significa che manca un apice, perché il server interpreta l’apostrofo dell’anatra di cui sopra come un apice (e in effetti, abbiamo usato il carattere dell’apice, e non quello dell’apostrofo, che è diverso, anche graficamente). Come fare quindi se ci serve un apice che faccia da apostrofo? Semplice: utilizziamo il carattere di escape, che è nient’altro che la backslash, subito prima dell’apice:

<?php

echo ‘Ho visto un\’anatra’;

?>

i caratteri di escape diranno che si dovrà tener conto di quell’apice per snobbarlo e non generare un errore. Ah, un’altra cosa a cui fare bene attenzione: non confondete gli apici con gli apostrofi e i doppi apici con le virgolette. Se scriveremo il codice con il blocco note o con un editor come Dreamweaver non avremo problemi, ma se avremo l’insana idea di scrivere il codice con, che so, Writer, i doppi apici vi verranno automaticamente trasformati in virgolette e se proverete a copiare il codice con le virgolette al posto dei doppi apici in una pagina PHP, non vi funzionerà niente. E altra cosa importante, non dimenticate il punto e virgola alla fine. State bene attenti a non confondere apici e doppi apici tra di loro (per esempio non potete aprire un echo con un apice e chiuderlo con un doppio apice): sembrano banalità ma si possono trascorrere mezz’ore con complesse funzioni PHP che dànno errore per scoprire alla fine, dopo aver controllato ogni singola riga di complicatissimi cicli o blocchi di istruzioni, che è tutto causato da un echo chiuso male e a cui magari non si è neppure fatto caso. Eh, per il PHP ci vuole un po’ di pazienza. Tornando a noi, possiamo utilizzare echo anche per stampare tag HTML:

<?php

echo ‘<strong>Ciao</strong>, io mi chiamo <em>Federico</em>!<br />Come va?’;

?>

E possiamo concatenare più stringhe utilizzando, tra una stringa e l’altra (ognuna compresa tra apici o doppi apici), il punto e chiudendo il tutto, al solito, con il punto e virgola:

<?php

echo ‘Questa’. ‘ è una’. ‘ concatenazione ‘. ‘di stringhe!’;

?>

In questo caso però state attenti agli spazi se non vorrete vedere le parole tutteattaccatecosì. La concatenazione ci sarà molto utile in futuro per fare alcune operazioni, soprattutto quando vedremo come far interagire PHP e MySQL: quindi dobbiamo impararla bene. Infine impariamo a usare i commenti. Ci sono due modi per commentare in php: su una riga o su più righe. I commenti su una riga si aprono con un doppio slash:

<?php
// questo è un commento su una riga
?>

Mentre quelli multiriga si aprono con backslash e asterisco e si chiudono con asterisco e slash, proprio come i commenti CSS:

<?php

/* questo è un commento

multiriga */

?>

Non ci sono particolari raccomandazioni sull’uso dei commenti: dobbiamo solo stare attenti a dove metterli. Non possiamo per esempio metterli tra il comando echo e il doppio apice:

<?php

echo //questo è sbagliato e restituirà un errore “Ciao a tutti!”;

?>

I commenti, come nel caso di CSS, ci serviranno se vorremo descrivere alcune parti di codice a chi le leggerà, per esempio. Oppure per ricordarci che cosa fa una certa funzione. Insomma, ognuno fa dei commenti l’uso che più ritiene necessario! C’è anche chi non li utilizza, ma io consiglio sempre di usarli, perché quando avremo a che fare con funzioni molto complesse ci sarà utile commentare alcune righe per ricordare meglio certi passaggi. Per noi che siamo abituati a creare siti in HTML, i CSS sono una bellissima invenzione: con pochi clic possiamo cambiare grafica, colori, immagini di sfondo, ampiezza dei div al nostro sito. Sono un po’ come dei vestiti di sartoria che cuciamo su misura per il corpo della nostra pagina web. Ma ci sono punti a cui anche i CSS non possono arrivare, purtroppo. Supponiamo di aver creato un sito di cinquanta pagine, con un bel menù come questo:

<pre>

</pre>

Supponiamo anche che, per una qualsiasi ragione, dobbiamo modificare questo menù, magari aggiungendo una voce. Con HTML l’unico modo per aggiornare il menù è aprire tutte le nostre cinquanta pagine e in ognuna di esse aggiungere la voce mancante. Una bella seccatura, non c’è che dire. A questo punto entra in gioco uno dei costrutti più utili di PHP: si chiama include e serve, come dice il nome stesso, per “includere” in una pagina un file esterno. Ma vediamone subito l’utilizzo. Prima di tutto dobbiamo creare un nuovo file in cui inseriremo soltanto il menù: pertanto inseriremo nel nuovo file la ul e tutto il suo contenuto, ma non il div. Possiamo assegnare a questo nuovo file il suffisso txt o ancora meglio il suffisso html. Chiameremo quindi il file “menu.html”. A questo punto portiamoci nella pagina principale (per esempio, “index.php”) e, al posto della ul, utilizziamo il costrutto include, sempre aprendo il codice PHP come abbiamo imparato nel capitolo precedente:

<pre>

</pre>

Se aprirete la pagina, noterete che avrà un aspetto identico a quello della pagina creata solo con il codice HTML, perché questo costrutto non fa altro che inserire all’interno della pagina il contenuto di un file esterno. Osservando il codice avrete già intuito la sintassi del costrutto: include con, tra parentesi, il nome del file racchiuso tra doppi apici (o apici), il tutto chiuso da punto e virgola. In questo modo, ogni volta che dovremo modificare il menù, sarà sufficiente apportare le modifiche al solo file “menu.html” e automaticamente, se avremo utilizzato “include” in tutte le cinquanta pagine, le modifiche saranno estese a tutto il sito! Davvero una grande comodità! È inteso che il nome del file che includiamo tra parentesi e apici o doppi apici deve trovarsi nella stessa cartella del file principale. Altrimenti dovremo specificare il percorso nello stesso modo in cui specifichiamo i percorsi, per esempio, di file html con l’etichetta a, ma senza poter utilizzare percorsi completi (per esempio: http://www.miosito.com/includes/menu.html)… i percorsi devono sempre essere relativi:

<?php

include(“includes/menu.html”);

?>

<?php

include(“../menu.html”);

?>

Include è del tutto simile a echo, quindi anche se omettiamo le parentesi non succede niente di strano. Sappiate però che è indifferente usare o meno le parentesi. È però molto importante non sbagliare i percorsi: nel caso in cui non dovessimo specificare il percorso corretto, comparirebbe un warning nella nostra pagina, e sinceramente non sarebbe bello da vedere. E ovviamente il file che vogliamo includere non sarà affatto incluso se sbagliamo il percorso! Il costrutto include, come abbiamo visto, è anche sufficiente per creare il nostro primissimo sito in PHP e ci aiuta già a risolvere un grosso problema. A proposito: attenti a chiamare include “funzione” (cosa che avviene in moltissimi siti), perché non è una funzione. Lo so, vi starete ancora chiedendo cos’è una funzione. Tra non molto ci arriveremo! Per completezza dobbiamo sapere che esiste anche un altro costrutto per includere file esterni, che si chiama require e funziona allo stesso modo di include:

<?php

require(“menu.html”);

?>

Qual è la differenza tra include e require, dal momento che il risultato prodotto è lo stesso? La differenza sta nella gestione degli errori: come abbiamo visto, include, nel caso in cui ci sia qualcosa che non va (come il percorso sbagliato) restituisce un warning, ovvero una scritta che vi avverte dello sbaglio: questo però non impedisce che il resto della pagina si possa vedere correttamente. Require invece restituisce un fatal error: se c’è qualcosa che non va nel require, si blocca tutta la pagina. Vi invito a fare qualche prova con la vostra pagina “index.php” per notare la differenza, anche perché il PHP si impara, più che con la teoria, con la pratica e con l’esercizio!

Ma se cambio le regine finita l’apertura posso vincere lo stesso velocemente? Chiedilo a JQuery o a Kasparov scacchista di strada del Drosso!

agenzia web marketingAll’indirizzo http://www.chessgames.com/perl/chessgame?gid=1070111 vediamo in azione il giovane Kasparov vs il vecchietto Smyslov nel famoso match per la qualificazione al titolo mondiale, erano gli anni della Milano da bere tanto per intenderci, quelli in cui l’economia era alle stelle grazie a manovre strategiche leggermente diverse rispetto a quelle che si attuano sulla scacchiera. Questa partita risponde alla domanda critica posta da agenzia web marketing: ma se cambio le regine in apertura, poi, dopo, ho la possibilità di vincere lo stesso? I principi sono sempre gli stessi, spazio, iniziativa, incrementare la pressione, coppia degli alfieri, non é che bisogna velocizzare sempre dando scacco matto e sacrificando 40 unità, la tecnica é pur sempre la tecnica di concretizzazione del vantaggio, il tema é quello di mettere insieme tanti piccoli vantaggi a volte impercettibili per convertire tutto in vantaggio materiale o mettere il re avversario con le spalle al muro, conclude agenzia web marketing. E ora risaltiamo in modalità Toggle() verso JQuery. Quando si apre una pagina Web in un browser, l’HTML della pagina viene caricato e reso visivamagenzia web marketingente sullo schermo. Per fare ciò, il browser costruisce il Document Object Model (DOM) di quella pagina, che è un modello orientato agli oggetti della sua struttura logica. Il DOM di un documento HTML può essere rappresentato come un insieme di caselle annidate. Il DOM rappresenta un documento come una struttura ad albero in cui gli elementi HTML sono nodi interconnessi nell’albero. I nodi possono avere nodi figli. I nodi sullo stesso livello dell’albero sono chiamati fratelli. jQuery traversing è il termine usato per descrivere il processo di spostamento attraverso il DOM e trovare (selezionare) elementi HTML in base alla loro relazione con altri elementi. JQuery rende facile attraversare il DOM e lavorare con elementi HTML. Andiamo a dare un occhiata con agenzia web marketing al processo denominato DOM Traversal. Ad esempio, considera l’HTML rappresentato dalla seguente struttura dove ho in alto il tag HTML , sotto il BODY che si divide in due elementi fratelli, H1 e A. L’elemento <html> è il genitore di <body> e un antenato di tutto ciò che si trova al di sotto di esso. L’elemento <body> è il genitore degli elementi <h1> e <a>. Gli elementi <h1> e <a> sono elementi figlio dell’elemento <body> e discendenti di <html>. Gli elementi <h1> e <a> sono fratelli (condividono lo stesso genitore e si trovano sullo stesso livello).Jquery ha molti metodi utili per l’attraversamento DOM. Il metodo parent () restituisce l’elemento padre diretto dell’elemento selezionato. Per esempio:

HTML:

div element

paragraph


JS:
var e = $(“p”).parent();
e.css(“border”, “2px solid red”);

Il codice sopra seleziona l’elemento genitore del paragrafo e imposta un bordo rosso per esso. Il metodo parent () può solo attraversare un singolo livello nell’albero DOM. Per ottenere tutti gli antenati dell’elemento selezionato puoi usare il metodo parents (). Per esempio:

HTML:

<body>

div

    ul

  • li

    paragraph

</body>

JS:
$(function() {
var e = $(“p”).parents();
e.css(“border”, “2px solid red”);
});

Il metodo eq () può essere utilizzato per selezionare un elemento specifico da più elementi selezionati. Ad esempio, se la pagina contiene più elementi div e vogliamo selezionare il terzo elemento:

$(“div”).eq(2);

Ora vediamo con agenzia web marketing come rimuovere gli elementi selezionati dal DOM usando il metodo remove (). Per esempio:

HTML:

<p style=”color:red”>Red</p>
<p style=”color:green”>Green</p>
<p style=”color:blue”>Blue</p>

JS:
$(“p”).eq(1).remove();

Il metodo empty () è usato per rimuovere gli elementi figli degli elementi selezionati. Per esempio:

HTML:

<p style=”color:red”>Red</p>
<p style=”color:green”>Green</p>
<p style=”color:blue”>Blue</p>

 

CSS:
div {
background-color: aqua;
width: 300px;
height: 200px;
}

JS:
$(“div”).empty();

Ciò rimuove tutti e tre gli elementi figli del div, lasciandolo vuoto. Segue ora un breve riassunto sui metodi usati e disponibili in questa sezione, ricordando che in uno dei prossimi approfondimenti con agenzia web marketing andremo a vedere in dettaglio come se la cava JQuery con le animazioni!

agenzia web marketing

Agenzia web marketing e gli abbagli della comunicazione: sei un vero detective?

agenzia web marketingSe sei in una discoteca ricordi meglio la calca, i giochi di luce o la cacofonia di suoni chiede agenzia web marketing? L’auto che avete acquistato l’avete scelta in base alla forma e quindi alla linea aereodinamica, il rombo del motore o alla comodità dei sedili? Nel tempo libero preferite andare ad un concerto, a una mostra di quadri o in palestra? In vacanza vi attraggono i suoni della natura, preferite fare sport o siete estasiati dai paesaggi? Parlando con uno sconosciuto immagimate quello che sta per dire e cosa pensa o preferite ascoltare ogni parola o vi concentrate sulla sensazione che provata? Quando volete imparare una cosa nuova preferite osservare per imitare, chiedere istruzioni o provare direttamente? Se siete in una city che non conoscete usate la cartina, chiedete informazioni o preferite andare a intuito? Quando dovete svolgere più attività vi fate una lista e vi vedete svolgerle, vi chiedete quali cose fare o vi sentire irriquieti finché non avete svolto tutti i vostri compiti? Che ci colpisce di più della persona che abbiamo davanti? Come é vestito? Il tono della voce o come si muove? Quando avete tempo libero preferite vedere la TV, distrarvi con lavori manuali o ascoltare buonma musica? Quante domande eh agenzia web marketing! Rispondendo a tutte queste domande potremmo prendere confidenza con tutti i nostri filtri sensoriali che sono appunto VISIVO, CINESTESICO e AUDITIVO. Se ci alleniamo a riconoscere questi canali alla fine possiamo individuare quello prevalente dell’ interlocutore ed effettuare calibrazioni e ricalchi adeguati. La percezione della realtà passa attraverso il mondo esterno e quello interno, i sensi elaborano tutta una serie di informazioni che poi vengonostratificate internamente tramite, pensieri ed emozioni, riporta agenzia web marketing. Si parla quindi di individuare le rappresentazioni interne dell’ interlocutore ma non é un lavoro che si può fare in un attimo, occorre entrare nelle politiche del marketing dell’ascolto e improvvisarsi detective. Suoni, visioni, sensazioni, forse un cult movie come Dare Davil potrebbe aiutarci a mettere meglio a fuoco il caleidoscopio interiore che sconvolge incessantemente la nostra CPU interna. I dfiltri sensoriali dominanti possono essere quindi esterni ma anche interni perché se é vero che vedo ciò che mi circonda, é anche vero che sono in grado di recuperare informazioni seppellite nella nostra storia personale velocemente. Lo stesso vale per gli altri due canali, perché con la memoria posso interrogare il nostro database interno. Individuando il filtro sensoriale dominante, troviamo una strada tutta in discesa e adattare le nostre strategie di comunicazioni al meglio per centrare il nostro obiettivo di vendita per esempio. Tornando a bomba in primis nel processo di vendita ma non solo come strategia conviene analizzare il linguaggio, poi si ascolta il paraverbale e infine la comunicazione non verbale che come si sa ci assorbe per il 55% nella sua valenza. Una volta che conosciamo noi stessi e nostri filtri preferenziali possiamo capire meglio la natura dell’ interlocutore che nel caso della vendita coincide con il cliente finale. Possiamo mettere meglio a fuoco lo scacchiere del cliente con la famosa griglia multidimensionale che sostanzialmente é un quadrato da tre caselle per tre dove abbiamo in alto le diciture visivo, auditivo e cinestesico e lateralmente i tre pilastri della comunicazione cioé verbale, non verbale e paraverbale. Come nelle più famose battaglie navali l’interesezione tra caselle suggerisce un approccio metodologico per cui se dicessi C2 andrei a interecettare la casella del paraverbale per gli auditivi e a quel punto l’analisi lavora sul ritmo se é modulato, con che velocità si esprime l’interlocutore, se c’è musicalità, se la parlata é espressiva, risonante o se la voce o monotonale come un diapason, sottolinea agenzia web marketing. Se dicessi per esempio casella A3 troveremme i predicati sensoriali legati alla vista per cui l’analisi riguarda termini come chiarezza e immaginazione, le azioni sono quelle di mettere a fuoco e inquadrare, dare un occhiata, fare una scenata in un modo di esprimersi indica chiaramente l’attitudine a un filtro VISIVO da parte dell’ interlocutore. Tutte queste informaziioni e modalità di calibrazione ci aiutano a ricalcare meglio la potenziale vittima della firma (anche se l’espressione può sembrare molto brutta é proprio di ottimizzazione del tempo e di risultati che parliamo in un contesto BCE) e a raggiungere i nostri obiettivi. Lo schema é allegato con tutta la combinazione delle varianti riscontrabili e a questo punto non resta che parlare di prossemica e di distanza del corpo. Anche qui serve una certa gradualità, non si può andare addosso all’ interlocutore, certamente esiste una intima distanza, una distanza sociale e una distanza pubblica e occorre contestualizzare le situazioni per evitare errori grossolani soprattutto se alla fine della filiera esiste quel famoso obiettivi centrato nelle sue aspettative lavorate in working in progress con agenzia web marketing.

Stai per sviluppare una portentosa applicazione PHP in OOP e MVC magari con il metodo mod_rewrite e con l’uso del file htaccess e con collegamenti al DB tramite PDO? Allora hai bisogno di Visual Studio Code e dei suoi plug-in, suggerisce web marketing Umbria!

web marketing UmbriaPrima di parlare di Visual Studio Code di Microsoft che sta sempre di più prendendo piede presso la comunità di sviluppatori in rete e di come possiamo inmplentare dei semplici plug in per potenziarne le caratteristiche, torniamo ad occuparci di cose estremamente serie e cioé gli scacchi giocati coerenti con le strategie di comunicazione digitale volute da web marketing Umbria e per la precisione della partita Hubner vs Smyslov giocata nel 1982 a Tilburg apertura catalana denominazione ECO E03, link disponibile all’ indirizzo https://www.redhotchess.com/chess/grandmaster-games/viewmastergame.php?pgnid=74079&subject=Robert-Huebner-vs-Vasily-Smyslov per visionare la partita. Che cosa si dovrebbe osservare in questa partita? La lentezza posizionale quasi ipnotica e anestetizzante messa in campo dal nero per vincere in totale rilassatezza la partita (si fa per dire) quasi che la prima condizione da rispettare per l’agonista sia innanzitutto quella di non perdere! Stiamo parlando di personaggi e prima di tutto uomini con la U maiuscola che hanno una biografia da romanzo (vedi https://it.wikipedia.org/wiki/Vasilij_Vasil%27evi%C4%8D_Smyslov) ma anche numeri sulla disciplina sportiva da capogiro come sintetizza la nota “é stato candidato per il Campionato del mondo di scacchi in otto occasioni (1948, 1950, 1953, 1956, 1959, 1965, 1983 e 1985). Ha vinto due Campionati Sovietici (1949 e 1955) e ha ottenuto un totale di 17 medaglie alle Olimpiadi degli scacchi. Ha vinto inoltre dieci medaglie d’oro nelle sue cinque partecipazioni ai Campionati europei a squadre. È scomparso per attacco cardiaco nel 2010 all’età di 89 anni“. La partita mostra veramente quella che é una strategia lenta e macchinosa ma anche attenta e dinamica, con il controgioco sempre latente per innescare controgiochi vincenti come nel calcio, che vale la pena approfondire le partite di questo colosso per tentare di arricchire il proprio repertorio con altri stili di gioco! web marketing UmbriaE ora tornando a quella che é la domanda iniziale sollevata da web marketing Umbria e cioé come posso rendere Visual Studio Code funzionale al massimo quando sviluppo in PHP ecco le risposte che volevamo: PHP intellisense per il refactoring e Bracket Colour per marcare le regione di codice critiche e renderle subito riconoscibili, il sito HTML sentenzia: “il refactoring è un insieme di pratiche che vengono applicate al codice sorgente al fine di variarne la struttura senza cambiare le funzionalità dell’applicazione, al fine di avere sotto mano dei sorgenti facilmente mantenibile e comprensibili a chiunque ed anche dopo molto tempo“, rende estrinsecabile web marketing Umbria. Va bene ma perché dovrei usare Visual Studio Code ottimizzato per programmare in PHP in modalità Object Oriented Programming al posto della tecnica procedurale? Per tanti buoni motivi: perché il codice risultà più chiaro e meglio organizzato, risponde web marketing Umbria. Poi perché la struttura essendo modulare porta dei vantaggi al Team di Sviluppo. Il codice ha una migliore manutenzione ma soprattutto ha il vantaggio della facile RI-USABILITA’! Un buon sito dove si possono fare i dovuti approfondimenti sulla parte sviluppo é http://www.traversymedia.com fruibile anche da http://www.udemy.com. Per concludere con web marketing Umbria segnaliamo come al solito che il supporto per la parte grafica inedita che finiscono nell’ articolo ci arriva free royalty da https://unsplash.com. In uno dei prossimi articoli di approfondimento su OOP e le sue caratteristiche cercheremo di sviscerare e approfondire nei dettagli con il CEO di Umbriaway Consulting Faraoni Enrico gli argometi correlati, per ora non ci resta che ottimizzare al meglio Visual Studio Code con i suoi portentosi plug-in per PHP.

webmarketingumbria webmarketingumbria webmarketingumbria webmarketingumbria

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!

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.

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.