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

Annunci

Riesci a saltare al di là di un crepaccio con php? Andiamo a cancellare record con seo Umbria, accetta la sfida!

seo umbriaAll’ indirizzo http://www.chessgames.com/perl/chessgame?gid=1103138 tanto per riprendere i contenuti espressi in https://umbriawaycultura.wordpress.com/2017/10/17/insert-select-update-delete-le-basi-strategiche-delle-query-mysql-per-le-esplosioni-tattiche-di-php/ da seo Umbria assistiamo a una fase di gioco rocambolesca, il GM Nunn che sacrifica la regina per una sola torre il che begli scacchi agonistici rappresenta qualcosa di meraviglioso, ma dopo un poco vediamo che i pedoni diventano anziché uno, due e tre etc. Vabbé se n’era già parlato di questa lungimirante combinazione no? Pedr la verità questa partita, la Gert Ligterink vs John Nunn, Marbella Zonal Final Group (1982), Marbella ESP, rd 6, Feb-27,Benoni Defense: Fianchetto Variation. Hastings Defense (A63)·0-1 scatena un dibattito nel senso che verrebbe da chiedersi con seo Umbria se un motore moderno potrebbe mai perdere questa posizione e la risposta possiamo intuirla (non resterà che verificare le incongruenze tra uomo e macchina per chiarire la questione). Comunque tornando sempre a bomba e al nostro database JOKE, un contenitore per barzellette, avevamo affrontato le QUERY CRUD, ma eravamo rimasti in sospeso con una sfida. Si tratta a questo punto di posizionare sulla pagina, a fianco di ogni barzelletta, un link con un pulsante DELETE this joke (elimina questa barzelletta) che , quando viene attivato, rimuove quella barzelletta dal database e mostra un elenco di barzellette aggiornato. Magari utilizzando una pagina multiuso. Magari usando il comando SQL DELETE. Dobbiamo essere in grado di cancellare la nostra barzelletta UNIVOCAMENTE, la colonna ID nella tabella é stata inserita e progettata proprio con questo scopo! La stringa della query del pulsante “DELETE this joke” é un posto perfetto dove posizionare questo valore. E ora non ci resta che entrare in queste dinamiche con seo Umbria! seo umbriaDobbiamo quindi fare dei CAMBIAMENTI per inserire un pulsante di cancellazione a fianco di ogni barzelletta. In precedenza abbiamo fatto passare una variabile addjoke con il pulsante “ADD a joke!” alla fine di ogni pagina, per segnalare che il nostro script avrebbe dovuto mostrare il form di immissione della barzelletta, invece del solito elenco di barzellette. Allo stesso modo dobbiamo far passare una variabile deletejoke con il nostro pulsante di cancellazione per indicare il nostro desiderio di rimuovere una barzelletta. Per ogni barzelletta rintracciamo la colonna id dal database insieme alla colonna joketext in modo da sapere quale ID é associato con ogni barzelletta del Database. Dobbiamo far coincidere il valore della variabile $_GET[‘deletjoke’] all’ ID della barzelletta che stiamo cancellando. Per fare ciò inseriamo il valore dell’ id trovato nel DB all’ interno del codice HTML apposta per il pulsante “Delete this joke” di ogni barzelletta e infine, usando una dichiarazione IF, verifichiamo se $_GET[‘deletejoke’] é configurata su un valore specifico (attraverso la funzione PHP ISSET), quando la pagina si carica. Se é così, utilizziamo il valore sulla quale é configurata (l’id della barzelletta da cancellare) con una dichiarazione DELETE di SQL, che elimina la barzelletta in questione. Vediamo quindi il codice completo dopo la sequenza segnalata da seo Umbria di cui sopra, come al solito all’ interno del body va inserito questo codice PHP:

<?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>’;
}
}

// If a joke has been deleted,
// remove it from the database.
if (isset($_GET[‘deletejoke’])) {
$jokeid = $_GET[‘deletejoke’];
$sql = “DELETE FROM joke
WHERE id=$jokeid”;
if (@mysql_query($sql)) {
echo ‘<p>The joke has been deleted.</p>’;
} else {
echo ‘<p>Error deleting joke: ‘ .
mysql_error() . ‘</p>’;
}
}

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

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

// Display the text of each joke in a paragraph
// with a “Delete this joke” link next to each.
while ($row = mysql_fetch_array($result)) {
$jokeid = $row[‘id’];
$joketext = $row[‘joketext’];
echo ‘<p>’ . $joketext .
‘ <a href=”‘ . $_SERVER[‘PHP_SELF’] .
‘?deletejoke=’ . $jokeid . ‘”>’ .
‘Delete this joke</a></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;
?>

 

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!

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>