web design umbria
codeigniter, web design Umbria, web developer Umbria

Imparare dagli errori: non sono gli SCACCHI, ma é CODEIGNITER!

Chi gioca a scacchi ad alto livello o anche a livello condominiale sa bene che riguardare le proprie partite fa sempre bene per scovare le proprie zone erronee. Quando si impara una tecnologia nuova come codeigniter, https://codeigniter.com/, l’approccio dovrebbe essere lo stesso e adesso che sono state risolte una serie di anomalie per la pubblicazione del mio mio primo progetto, https://umbriawayformazione.altervista.org/, posso anche prendermi una pausa dopo 23 gg di esperienza per attraversare il campo di battaglia e contare i morti. In questa prima fase non ho ancora risolto i problemi tecnici della paginazione e del motore di ricerca, che se in procedurale sono abbastanza comprensibili e anche relativamente semplici da mettere in piedi con PHP, con l’approccio UNO e TRINO MVC le cose si complicano per chi come me è appena passato dallo stato di inclassificato a quelle delle categorie nazionali con un solo salto (negli scacchi la categoria di ingresso per i neofiti è quella di incalssificato, dopodiché l’iter prevede il superamento di tre scogli denominati categorie sociali per approddare infine in base al punteggio elo alle cosiddette categorie nazionali che sono solo l’inizio di un lunghissimo percorso che l’agonista dovrebbe intraprendere), in particolare penso di essere equiparato a un terza nazionale sulla base delle mie conoscenze attuali che sono tante rispetto a un NC ma poche rispetto a un giocatore che si muove nelle categorie magistrali.

In questo frangente di tempo delimitato da 23 gg di allenamento costante quotidiano e saltuario su CI, una serie di zone erronee me le sono focalizzate nelle mie partite, ossia nel mio sviluppo di codice e negli errori generati da questa attività. Vediamo quali sono gli errori più frequenti che si possono incontrare quando si passa a studiare questa tecnologia che per familiarizzare con MVC é semplicemente portentosa perché il framework é leggero e molto facile da modellare senza andare incontro ai pachidermi come Laravel e compagni. Una delle situazioni che generano più confusione soprattutto all’ inizio é legata all’ uso che se ne fa della famosa riga di istruzione presente nel file CONFIG.PHP incluso nella cartella omonima presente in APPLICATION:

$config[‘base_url’] = ‘nomedominiopresenteinrete’;

il parametro base_url è molto utile per sottolineare il path delle risorse dichiarate nelle nostre VIEW pertanto se non si hanno le idee chiare su cosa scrivere dopo = e si sbaglia ne deriva una anomalia. Un altro errore frequente che si riscontra é legato alla compilazione mancante o parziale del file DATABASE.PHP presente all’ interno della stessa cartella CONFIG sempre dentro APPLICATION dove i parametri di connessione al DB devono essere corretti:

‘hostname’ => ‘nometuoserver’,
‘username’ => ‘tuonomeutente’,
‘password’ => ‘tua pwd’,
‘database’ => ‘tuodatabase’

Qui si riscontrano diverse anomalie o errori o anche orrori.Non ti funziona l’applicativo su Aruba o qualsiasi altra parte? Magari hai scritto male un carattere può capitare. Verifica, magari guardando scoprirai divertito che durante il passaggio dallo sviluppo in LOCALE all’ AMBIENTE DI PRODUZIONE hai proprio dimenticato di scrivere i dati corretti lasciando i vecchi. Un altra situazione imbarazzante che potrebbe generarsi è quando non andiamo a compilare il file di caricamento automatico AUTOLOAD.PHP presente sempre allo stesso livello dei precedenti, ossia sempre dentro CONFIG e APPLICATION che in una veste accettabile dovrebbe suonare così in una istruzione specifica al suo interno:

$autoload[‘libraries’] = array(‘database’ , ‘pagination’);

ovviamente qui sopra ci sono anche le librerie utili per gestire la nostra paginazione (uno degli incubi peggiori per i NEWBIE) ma se non vado a compilare questi campi siamo semplicemente IMPANATI o PANATI. Un’ altra situazione critica é quella critica legata sempre allo stesso file degli HELPER che sono funzioni utili che gesticoscono specifiche situazioni. Se sto recuperando una variabile in GET e non ho le funzioni utili per supportare tale passaggio, sono di nuovo PANATO! L’istruzione si trova sempre nel file AUTOLOAD.PHP e nella sua stesura corretta dovrebbe suonare così (o a seconda delle esigenze):

$autoload[‘helper’] = array(‘url’, ‘form’);

in questo caso ho caricato un set di strumenti utili per gestire URL e FORM. Ovviamente se tentassi di scrivere del codice nel MODEL dove tento di prendere un valore in GET e non richiamo le funzionalità specifiche mi darà errore. Questi sono errori frequenti all’ inizio, ma sicuramente l’aspetto peggiore è quando si devono mettere in piedi dei LINK che richiamano delle risorse. Come sappiamo in MVC CI richiama prima la index, dopo il controller poi il metodo quindi il modo di lavorare è completamente STRAVOLTO rispetto alla linearità del procedurale. Quindi soprattutto all’ inizio quando non si sanno gestire le ROUTES che ha la sua gestione nel file specifico ROUTES.PHP può succedere di saltare un passaggio e di miagolare nel buio. Allora dopo FTP andiamo sulla pagina e vediamo che il link porta a una PAGINA MANCANTE oppure vediamo anche IMMAGINI solo come riquadro SENZA essere presenti. Non solo ma essendo questa logica strutturata a livello succede anche che dopo l’index, quando richiamo un altra pagina se inserissi dei LINK relativi con i famosi ../ per salire di un livello potrei andare incontro a seri problemi di visualizzazione, tanto è che la famosa [‘base_url’] qui potrebbe tornare utile per formare percorsi assoluti.

A scanso di equivoci da vero NEWBIE o terza nazionale di CI io per il mio progetto iniziale https://umbriawayformazione.altervista.org/ ho inserito proprio il path url di base, alcuni utilizzano anche il famoso site_url da anteporre alle risorse da agganciare ma io per tagliare la testa al toro ho inserito proprio percorsi assoluti vecchia maniera seguendo poi la logica INDEX/CONTROLLER/METODO. In queste facezie non di poco conto spesso il NOVIZIO si perde (almeno a me é successo perchè sono abituato a pensare al vecchio modo lineare) e genera errori scrivendo male LINK e collegamenti vari alle risorse. C’è molto da combatrtere dietro a questo tema. Poi ci sono tutti gli errori legati alla programmazione perché anche qui le query tradizionali vecchia maniera non sempre te le puoi portare dietro e devi saper trafficare con le query build e gli active records di CI, quindi in teoria bisognerebbe studiare la documentazione ma io ho scelto una strada alternativa basata sul prima faccio, genero errori di funzionamento e poi mi vado a cercare in rete la soluzione specifica senza perdere un sacco di tempo a farmi una cultura di base che non mi serve a nulla se non trova applicazione pratica. Comunque la cosa più importante soprattuto all’ inizio é studiare https://codeigniter.com/userguide3/index.html , a conferma di questo posso dire che quando ho scritto al forum ufficiale di codeigniter per descrivere un problema, indirettamente sono riusciti a portarmi sulla buona strada citando una sezione specifica che poi di fatto è servita a incanalarmi altrove dove c’era la soluzione! Quindi leggere la documentazione è IMPORTANTE!

Un altro errore comune é quello di NON DEFINIRE IL PUNTO DI INGRESSO DELL’APPLICAZIONE con un Entry Level nel file ROUTES.PHP, che andrebbe settato come segue:

$route[‘default_controller’] = ‘nomedeltuocontroller’;

Che di default è configurato sul famoso welcome tipico del dopo download. Ok abbiamo finito con gli errori più comuni riscontrati dopo 23 gg di attività con codeigniter? Macchè, anche ammesso che tu riesca a tirare in poco tempo qualcosa di traballante, poi devi fare i conti con il passaggio dal server locale a quello di produzione con una serie di complicazioni che fanno rabbrividire anche l’assistente vocale di GOOGLE quando ti sente parlare di straforo con epiteti blasfemi. Per esempio una delle questioni critiche all’ inizio è quella di seguire l’esatta nomenclatura descritta dai manuali, se ti dicono di scrivere il nome della classe in maiuscolo e anche il file corrispondente altrettanto un motivo ci sarà. A me in locale funzionava tutto così quando ho traslato al mio pusher di ficucia l’applicativo che in localhost andava bene e lì si piantava, perché? C’è un problema di incompatibilità tra versioni? Sono quelli della terra piatta che complottanto sul mio applicativo di esordio con CI? Forse abituarsi a leggere e fare il copia e incolla del problema che in inglese recitava una sorta non posso caricare il MODEL, per avere una risposta dai motori di ricerca era da farsi prima scrivere per aprire un ticket! Comunque alla fine alla mia domanda come mai non funziona nulla quando pubblico qui l’addetto alla magagne ha gentilmente risposto che il problema sta proprio in quella prima lettera minuscola del file. Così cambiando in maiuscolo scopro che tutto funziona ma solo per andare incontro a qualche altra magagna del tipo: non posso eseguire le INNER JOIN.

Esasperato anzichè riscrivere (cosa che comunque dovrò fare) subito ho pubblicato il tutto altrove per vedermelo alla fine funzionare, ovviamente sono curioso di sapere come si risolve il problema dlele INNER dal mio spacciatore di Arezzo, mi fa strano comunque (essendo solo terza nazionale il giudizio lascia il tempo che trova!) che porto tutto altrove nelle stesse condizioni funziona e qui no! Tutto questo solo come antipasto perché gli errori più comuni sono sempre in agguato e un framework per definizione non si può certo definire semplice, anche se qui ci avvicinamo di molto! A questo punto siamo concentrati e focalizzati e fermamente intenzionati a risolvere i problemi rimasti ossia quello della paginazione, quello del motore che mi funziona solo in procedurale e semplificare le URL con le routes magari eliminando il famoso index.php per rendere il tutto più digeribile ai motori di ricerca. Senza contare la questione della sessione e della dashboard per la gestione dei dati utenti, insomma il lavoro non manca mai su CI e non esiste il rischio di non riuscire a imparare cose nuove! Comunque nell’ infuriare della battaglia esistono anche grandi soddisfazioni da cogliere, due vittorie strepitose in stile Enrico V da parte di FWD che il giorno 28 ottobre e 2 novembre rispettivamente alle ore 9,50 e 9, 18 si è visto materializzare come per incanto il recupero dei dati in GET inserendo una semplice riga di codice che non essendo nato onniscente non avrei mai pensato di scrivere e la risoluzione per la pubblicazione! Quindi come si dice in gergo “bisogna continuare a stare sul pezzo“, ogni giorno dedicandoci una piccola quantità di tempo per non perdere l’allenamento! E usare i FORUM oltre a leggere il MANUALE: https://codeigniter.com/userguide3/index.html . Codeigniter conviene assimilarlo perchè é MVC Pattern e sappiamo bene quello che significa come competenze, é open source, é user fiendly é leggero e anche sicuro (se lo si sa usare!) tanti vantaggi racchiusi in unica soluzione. Infine siccome stiamo equiparando l’apprendimento di una tecnologia al punteggio elo degli scacchi, viene spontaneo chiedersi per chi non é avvezzo di queste cose quali sono queste categore e come si guadagna e incrementa elo per passare alla categoria superiore. Sono costituite da 12 categorie, che sono in ordine crescente di importanza, in questa fase per gioco mi sono definito terza nazionale mentre il gradino più alto della trascendenza é costituito dalla categoria GM, quindi la strada da fare con CI è ancora lunga e tortuosa:

  • Non Classificato (NC)
  • Terza Sociale (3S)
  • Seconda Sociale (2S)
  • Prima Sociale (1S)
  • Terza Nazionale (3N)
  • Seconda Nazionale (2N)
  • Prima Nazionale (1N)
  • Candidato Maestro (CM)
  • Maestro (M)
  • Maestro FIDE (MF)
  • Maestro Internazionale (MI)
  • Grande Maestro (GM).