Mese: Settembre 2012

Estendere le viste in CakePHP

In questi giorni ho preso in mano una nuova feature in CakePHP che prima avevo sottovaluta. Dalla versione 2.1 CakePHP ha introdotto Extending Views che permettere di richiamare una view da un’altra. Per chi usa Jquery si può dite che si avvicina al convetto di Jqeury Templating. Lo scopo di questa feature è di ridurre la duplicazione del codice HTML nelle varie view, per esempio la nostra pplicazione ha un header che si ripete nelle varie pagina ma abbiamo bisogno che il menu contenuto cambi a seconda della pagina in cui ci troviamo? Niente di più semplice, vediamo come si fa. Creiamo la nostra view:

//app/View/Common/header.ctp
<header>
<nav>
<?php echo $this->fetch('menu'); ?>
</nav>
<div id="breadcrumb">
<?php echo $this->fetch('breadcrumb'); ?>
</div>
</header>
<h1><?php echo $this->fetch('title'); ?></h1>
<?php echo $this->fetch('content'); ?>

Questa vista può essere usata come parte di un’altra vista. Quello che balza subito all’occhio sono i vari $this->fetch(), e capiremo subito come a cosa servono. Quando creeremo una nuova vista, che estenderà questa, sarà la nuova vista a riempire di dati il nostro header.ctp. Tutto questo lavoro ci permetterà di avere menu, breadcrumb, title sempre diversi mentre il content verrà riempito con il resto del contenuto della nostra vista principale.

Ora creiamo la nostra vista che estenderà quella appena creata e la riempirà con i nostri dati.

//app/View/MioController/MiaVista.ctp
<?php 
$this->extend('/Common/header'); 
$this->assign('title', $title); 
$this->assign('breadcrumb', 'Home > User > View'); 
$this->start('menu'); ?> 
<li><?php echo $this->Html->link('Home', array('action' => 'index', 'controller' => 'home')); ?></li> 
<li><?php echo $this->Html->link('Profile', array('action' => 'view', 'controller' => 'user')); ?></li> 
<li><?php echo $this->Html->link('Edit Profile', array('action' => 'edit', , 'controller' => 'user')); ?></li> 
<li><?php echo $this->Html->link('Logout', array('action' => 'logout', , 'controller' => 'user')); ?></li> 
<?php $this->end(); ?> 
<?php // Display the remaining content ...

Di questa vista la funzione più importante che fa funzionare tutto è $this->extend(), questa funzione dice a CakePHP quale vista dev’essere estesa. Penso sia molto intuibile l’uso della funzione $this->assign(), questa serve per assegnare un valore alle chiavi tipo title e breadcrumb mentre $this->start() e $this->end() ha lo stesso utilizzo di $this->assign() ma permette di assegnare un valore molto più complesso e formato da diverse dighe di codice come si vede nell’esempio.

Io fino a quando non ho iniziato ad usare questa feature di CakePHP non avevo realizzato il tempo ma sopratutto codice che si risparmia. Provate anche voi!

PostgreSQL su Mac

Ieri ho preso il nuovo Macbook Pro e ho trasferito tutti i dati dal vecchio, devo dire niente di più facile con l’Assistente Migrazione, fa tutto lui. Però ci sono alcune cose che non vengono migrate, vedi PostgreSQL e i suoi dati …. purtroppo me ne sono accorto alla fine….
Come sempre cerchiamo il lato positivo. Nel vecchio MBP avevo installato PostgreSQL attraverso MacPorts oggi invece per caso mi sono imbattuto in due applicazioni per il Mac che mi hanno salvato tempo ed installazioni di Sistema.
Postgres.appLa prima app è Postgres.app che come dice il claim del sito “the easiest way to run PostgreSQL on the Mac” e devo confermare che è proprio così! Non installa nulla sul vostro Mac ma quando la lanciate vi trovate un bel database pronto all’uso. Unico neo (ma forse è capitato solo a me), la prima volta che l’ho lanciata non mi ero accorto che l’icona della app appare nella toolbar e non nel Dock come al solito e per chiudere il database l’ho fatto dal terminale 🙂 … Comunque dopo aver lanciato la app per chiudere il db basta chiudere la app (dalla toolbar).

L’altra app che probabilmente conoscete già è pgAdmin ottima interfaccia per la gestione di PostgreSQL.

Consiglio all’uso

Quando lanciate Postregs.app lei crea un utente con il vostro username ($USER), nel mio caso igorfelluga ed anche un database con lo stesso nome, di conseguenza in pgAdmin ricordatevi di inserire questi dati e non cercate l’utente che solitamente si usa in PostgreSQL di default.

Buon lavoro!

Il tempo è tiranno

Purtroppo il tempo negli ultimi mesi ha fatto da padrone, dico purtroppo ma anche per fortuna se ripenso a tutto quello che sono riuscito a fare in questo periodo.

Oltre a due belle e meritate settimane di ferie via in camper con la mia splendida famiglia, ho avuto l’occasione di sviluppare alcune applicazioni web & mobile molto interessanti, che mi hanno dato l’opportunità di costruirmi delle librerie riutilizzabili nel breve, ma sopratutto di vedere alcune sfumature del business da un punto di vista diverso dal solito, penso che quello che ho imparato in questi mesi abbia incrementato di molto il mio bagaglio di esperienza e porterà molti vantaggi al mio lavoro nei prossimi mesi.

Titanium Certified Application Developer (TCAD)

Dopo tanto tempo mi sono deciso di partecipare al test online per prendere la certificazione Titanium Certified Application Developer (TCAD).

Non ho mai dato tanto valore a certe cose ma mi rendo conto che a molti clienti piace vedere che tu sei/fai e non solo sentirlo a voce, ed ecco qui, inizio con questo .

Il test della certificazione (in inglese) era composto da 60 domande da completare in 90 minuti, devo confessare che su alcune domande un po’ di panico mi è venuto, ma alla fine tutto è andato bene. Per essere certificati bisognava avere una valutazione superiore al 75%, sono stato molto soddisfatto di essere andato ben oltre.