Ho di recente parlato con molti interessati a cercare un lavoro a Londra (o in generale, nel Regno Unito). Scrivo un po’ di consigli sperando di poter aiutare qualcuno che capiti a leggere questo post da google.
Nome, cognome, indirizzo (con postcode), email. Le comunicazioni avvengono quasi esclusivamente tramite cellulare, quindi indicate un numero cellulare (ovviamente prefisso UK, non internazionale) e aspettatevi chiamate a qualsiasi ora e giorno. Scrivetelo in formato RTF evitando formattazioni complesse (questo per evitare che si perdano contenuti quando viene processato e spostato elettronicamente molte volte).
Una pagina, massimo due. Puó sembrare strano che venga consigliato di mantenersi su una pagina (o al massimo due se si hanno molte esperienze), ]in realtá é un ottimo consiglio. Il lavoro dei recruiters (= agenzie di reclutamento) é vagliare centinaia di CV al giorno e spendono pochissimo tempo a leggerli. Scrivere troppo é depenalizzante e rischiate che non leggano le cose importanti che avete scritto, concentrate tutto il piú possibile e tralasciate le esperienze irrilevanti, in modo che in pochi secondi diate un’idea del vostro profilo. Perfino le aziende (che ricevono i CV selezionati dai recruiters) spesso non leggono oltre le 2 pagine.
Evitare errori grammaticali. Curate bene quello che scrivete, se possibile fatelo correggere a un madrelingua. Mi é capitato di leggere dei curricula per l’azienda per cui lavoro e vedere errori grammaticali dá un’immagine di persona trascurata.
Curricula tecnici:
elencare quantitativamente le tecnologie conosciute. Per un curriculum in IT, ad esempio da programmatore o sistemista, elencate le tecnologie che conoscete. Per ognuna indicate quanti anni di esperienza avete, e come la valutate in una scala 1-10. Cercate di mantenere un certo livello di coerenza (se indicate 6 mesi di esperienza e vi date voto 9 non vi credono, anche se rispecchiasse la realtá), non esagerate poiché nel caso se ne accorgessero rischiate che non credano neanche al resto, ma non siate neanche troppo modesti. E’ richiesto conoscere e affermare con sicurezza le proprie capacitá. Se avete dei certificati professionali relativi alla tecnologia, elencateli (ad esempio linux, mysql, php, java, microsoft
In genere, se siete esperti in due tecnologie, e vi candidate a un lavoro che richiede un ottimo livello della prima, scrivete un curriculum apposta che metta in luce le vostre competenze nella prima. Se la seconda tecnologia é attinente, inseritela in secondo piano, altrimenti consiglio di non menzionarla per niente, o date l’impressione di non conoscere bene la prima.
Come comportarsi con i recruiter
Chi sono i recruiter. Prima di tutto bisogna ricordarsi che I recruiter prendono una percentuale se venite assunti, e gli importa solo di quello. E’ il loro lavoro e non gliene frega assolutamente niente se lavorerete sottopagati o il lavoro non fa per voi.
A differenza delle aziende, molti recruiters non hanno esperienza nel settore e non conoscono le tecnologie, quindi é importante fargli capire che siete competenti per il lavoro a cui vi siete candidati. Non siate troppo modesti con loro, poi l’analisi delle competenze tecniche e vero colloquio lo farete con l’azienda. Ovviamente ci sono delle eccezioni, ovvero recruiter specializzati che garantiscono servizi di qualitá per le aziende.
Salario iniziale. Una domanda che viene sempre fatta é il salario richiesto. Guardate su internet le offerte e fatevi un’idea chiara del mercato e a quanto potete aspirare. Se il salario offerto é in un intervallo a seconda dall’esperienza, il recruiter cercherá in ogni modo di farvi assumere al minimo. Dite chiaramente quanto volete altrimenti potrebbero andare al ribasso.
Interviste contemporanee. A seconda della richiesta, puó capitare di avere molte interviste contemporaneamente. Questo non é un problema, continuate a candidarvi agli annunci finché non siete assunti. Se vi facessero due proposte concrete di lavoro, poi ne scegliete una e rifiutate l’altra. Nella mia azienda é successo che un candidato é stato assunto, poi dopo 1 mese di attesa (dal lavoro precedente), il giorno prima di presentarsi (e firmare il contratto) ha mandato una mail di scusa scrivendo che aveva cambiato idea.
Nel caso vi chiedano se avete giá delle altre interviste in corso, dite pure di si, darete l’impressione di uno richiesto e velocizzeranno tutto in modo da non perdervi.
Se vi chiedono in che aziende avete fatto le precedenti interviste, non ditelo assolutamente ! lo chiedono in modo da contattare l’azienda e presentargli i loro candidati diminuendo le probabilitá che vi assumano nelle aziende in cui avete fatto le interviste.
Terró le liste aggiornate, nel caso mi vengano in mente altri consigli.
Il software fornito con i driver ATI mobility Radeon (notebooks) in Windows offre un’interessante opzione: Modalitá teatro. Tale modalitá permette di visualizzare il video in una finestra nel monitor del notebook e contemporaneamente lo stesso video in esecuzione a tutto schermo (fullscreen) nel display secondario (monitor esterno, VGA).
Ció permette di utilizzare il computer e allo stesso tempo visualizzare video sul monitor esterno a tutto schermo. Con Windows media player classic (fornito con k-lite codec pack) é possibile mantenere il flusso video sul monitor esterno nascondendo nella icona di sistema (tray bar) la finestra sul monitor del notebook .
Per impostare la modalitá teatro, attivarla modalitá nella scheda Overlay nel pannello di controllo ATI. In windows media player classic, attivare l’icona di sistema (tray icon).
Per avere un flusso video costante, impostare prioritá superiore al normale per il processo mplayer2.exe (task manager).
Spesso è necessario scambiarsi files di dimensioni notevoli tra computer fisicamente distanti ma connessi tramite Internet.
Fondamentalmente gli approcci per risolvere il problema sono 2:
In 2 tempi: prima caricate il file da qualche parte, poi dite all’amico destinatario dove prenderlo. Rientra in questa categoria l’invio tramite e-mail (soluzione accettabile solo per pochi Mb) o l’utilizzo di servizi tipo megaupload o rapidshare (limite sulla dimensione massima o necessità di spezzare il file in più parti). Metodo apparentemente semplice ma non troppo in alcuni casi.
Problemi comuni: E’ necessario aspettare il tempo di caricamento prima che l’amico possa iniziare a scaricare: complessivamente cioè ci vuole molto tempo, considerato che la velocità in upload di una tradizione connessione ADSL è molto bassa.
Connessione diretta: in pratica l’amico inizia a scaricare direttamente dal vostro PC. Trascurando il trasferimento con Skype/Msn messenger (lento e con probabilità di timeout), ad esempio voi fate partire un FTP o HTTP server con il file disponibile, quindi date all’amico il vostro IP pubblico.
Vantaggi: velocità di trasferimento complessiva massimizzata (l’amico inizia a scaricare subito alla vostra massima velocità in upload).
Problemi: Non semplice da configurare e non conveniente per utilizzarlo poche volte, inoltre l’impossibilità di configurare il router del mittente (o gli altri router intermedi) e aprire le porte del firewall rende impossibile la connessione diretta (a parte VPN o altri meccanismi non generalmente semplici).
In realtà esiste una soluzione che consente di trasferire i files direttamente (velocità massima), anche con uno o più router/firewall intermedi, senza installare nulla da ambo le parti e molto velocemente: Bittorrent !
E sufficiente creare il torrent dal file nel proprio pc, quindi inviarlo all’amico (pochi kb) tramite e-mail o client di messaggistica.
L’amico apre il torrent e inizia a scaricare subito. Potete anche traferire il file tra più amici, e i tempi diminuiranno ulterioremente (ogni amico scaricherà parti anche dagli altri amici), avendo in effetti una rete P2P tra di voi.
Potete anche decidere il limite di upload e settare altre opzioni dal programma torrent.
Questo metodo è stato testato con il gratuito, funzionale e no-install UTorrent. Ecco la semplice procedura: Dal menu “File” -> “Crea nuovo torrent”, scegliere il file, inviare il file “.torrent” creato all’amico, impostare la velocità di upload ed eventualmente forzare l’avvio col tasto destro (il torrent creato appare nel vostro elenco in “seeding”). Vedi screenshot (click per ingrandire).
Ultimamente uso spesso Chrome dato che è molto veloce. Peccato che ci sia ancora qualche bug soprattutto nel supporto plugin tipo flash e java.
Posto un tip per aggiungere un pulsante sulla toolbar per aggiungere rapidamente la pagina corrente ai preferiti di del.icio.us. Basta trascinare questo link sulla barra dei preferiti, e dargli il nome ad es. “add to delicious”.
Ennesimo post per smanettoni. Questa volta si parla di boot loader nei PC ovvero i programmi installati nell’MBR che caricano i Sistemi Operativi.
Per chi non lo sapesse: cosa sono i boot loader
L’installazione di un sistema operativo comporta l’installazione di un boot loader, che in genere aggiunge alle scelte iniziali i sistemi operativi precedenti. Closì se installate Windows poi ubuntu, o xp e poi Windows Seven vi trovate (problemi a parte) un bootloader che vi fa scegliere quale avviare.
Alcuni problemi
Può succedere che il boot loader non rilevi correttamente un sistema operativo, o una installazione/ripristino di un sistema operativo sovrascriva l’MBR e perdiate i dati d’avvio di un sistema operativo.
Personalmente mi è capitato che il ridimensionamento della prima partizione mi abbia compromesso il boot loader di Windows Seven, problema risolto con il relativo dvd in modalità ripristino . Quest’ultimo ha però riscritto il boot loader cancellando quello di grub (boot loader di ubuntu, installato per ultimo). Conoscendo Microsoft era quasi ovvio che non considerasse neanche l’eventualità di una presenza del concorrente s.o. open source.
Procedura per reinstallare il boot loader GRUB in linux ubuntu 8
avviare il cd live di ubuntu (lo stesso usato per l’installazione)
aprire la console (terminal) e avviare grub sudo grub
vi si avvia la console di grub in cui digitate i comandi
cercare la partizione di avvio con find /boot/grub/stage1
ceh vi risponderà ad esempio con (hd0,6 ), cioè linux si trova nella sesta partizione del primo disco
installare il boot loader con root (hd0,6)
scrivere l’mbr con setup (hd0)
chiudere con quit
riavviare tutto
Se non ci sono errori grub verrà installato nell’MBR e rileverà correttamente ogni altro sistema operativo installato (anche quelli MS !!).
Programmino utile con interfaccia grafica per modificare le voci
Se riuscite ad avviare Vista o W7, potete usare anche il gratuito easyBCD, che permette di modificare la lista dei sistemi operativi installati con un’interfaccia grafica intuitiva. La versione corrente 1.7 riconosce senza problemi i so microsoft installati, per linux prevede l’uso di neogrub che però non mi ha rilevato ubuntu esistente di cui sopra.
In alternativa al formato PDF, esiste un formato alternativo per leggere documenti formati da una sequenza di immagini (manuale o libro scannerizzato, ecc…).
Il formato è CBR (Comic Book Rar, usato più che altro per scambiarsi fumetti nelal rete ma utilizzabile anche per altri scopi) e non è altro che un archivio ZIP o RAR contentente SOLO i files JPG delle varie pagine (ordinati alfabeticamente).
Per leggere e navigare in tali files esiste un programma gratuito e molto funzionale, con funzioni simili ai comuni pdf reader (navigazione, autoregolazione immagini, fit a schermo,rotazione, anteprima pagine, shortcuts da tastiera, filtri per resize): CDisplayEx scaricabile a questo indirizzo: http://sourceforge.net/projects/cdisplayex
Per creare files CBR partendo da immagini presenti, è sufficiente zipparli e cambiare l’estensione del file creato in CBR, in questo modo sarà immediatamente visualizzabile, senza dover convertire tutto in un pdf.
Molti pensano che per reinstallare il sistema operativo sia necessario formattare la partizione, Il che significa perdere giornate a salvare Gb di dati (documenti, posta, file di programma) su dischi esterni e dvd, rischiando sempre di perdere qualcosa.
Per reinstallare ad esempio Windows XP non c’è bisogno di formattare la partizione (di seguito la chiamo "C:") in cui è contenuto.
Consiglio una procedura veloce e sicura e testata più volteche :
consente di installare il sistema operativo senza cancellare nessun files (compresi quelli del sistema operativo precedente e programmi)
documento, files dei programmi, posta. ecc. si recuperano dopo con calma in qualsiasi momento
reversibile: permette di anche di ripristinare in un attimo il vecchio sistema operativo.
permette di togliere di mezzo i virus, ovuque siano
permette di recuperare anche i drivers e impostazioni dal vecchio sistema operativo
le impostazioni di xp e programmi iniziali vengono resettate (come se la partizione fosse formattata)
recuperare anche alcuni programmi installati senza reinstallarli da cd / dvd
Prima di iniziare: masterizzarsi xp su live cd - con bartpe (* vedi sotto) - o ubuntu live che comprendano n un compressore di files (per bartpe consiglio winrar).
La procedura consiste nell’installare una nuova copia di xp, nascondendo prima tutti i files della vecchia installazione (windows cerca altrimenti di recuperare impostazioni e files di programma).
avviare il computer con il live cd
dal file manager del live cd "(A43 file manager" in bartPE) creare una cartella "c:\old" e spostarciTUTTO il contenuto (files e cartelle) della partizione
Per evitare che la nuova installazione rilevi la copia esistente: comprimere la cartella "c:\old\windows" (es: con winrar, presente sul disco o sul cd) (funziona anche senza installazione con i files eseguibili), poi cancellare la cartella
installare xp sulla partizione e "lasciare intatto il file system corrente", così nessun file verrà cancellato.
Se il punto 3 è stato eseguito, l’installazione non rileverà nessuna copia di xp e verranno create nuovi files in "c:" e nuove cartelle "windows", "c:\document and settings", "c:\programmi"
Se erano presenti virus, si può installare virus aggiornato e scansionare "c:\old" (notare che "c:\old" non è letta in fase di installazione e i virus eventuali lì dentro rimangono isolati).
se mancano alcuni drivers, (estrarre prima lo zip di windows creato al punto 3) dire a xp di cercarli in "c:\old\windows\inf" (se chiede qualche files specifico, darlo manualmente cercandolo in "c:\old")
per recuperare i documenti, cercare in "c:\old". In "c:\old\document and setting\<nome>\" ci sono le cartelle con i files dei documenti e desktop
i programmi vanno quasi tutti reinstallati. Notare che alcuni ex programmi potrebbero funzionare anche senza installazione, provarli da "c:\old\programmi". In tal caso basta spostarli in "c:\programmi" e ricreare i collegamenti.
Consiglio in ogni caso di rimedarsi le versioni portabili (vanno cioè senza installazione). c’è una versiona portabile di quasi ogni programma esistente, cercate su google.
Se si vuole tornare indietro e ripristinare il vecchio xp: riavviare bartpe, creare cartella "c:\new", spostarci tutti i files della partizione (tranne "c:\old"), spostare i files in "c:\old" in "c:\" (il vecchio xp torna a funzionare poichè i files di avvio sono gli stessi).
* Con bartpe è possibile creare un cd live di xp, ovvero un cd che avvia il computer con il sistema operativo su cd ignorando completamente il sistema operativo sulla partizione/disco e contiene un file manager che consente di salvare/spostare i dati.
BACKUP DI XP
Con bartpe+winrar si può fare anche un backup di tutto il sistema operativo (come immagini della partizione con norton ghost o drive image).
BACKUP: avviare bartPE, quindi creare archivio winrar o zip (si può lasciare anche nella stessa partizione, es: "c:\backup.rar") con i files in "c:\" , "c:\programmi", "c:\documents and settings", "c:\windows" (programmi portabili, documenti e posta meglio spostarli, non servono per il sistema operativo).
RIPRISTINO: avviare bartpe, quindi estrarre l’archivio (nel dubbio spostare prima tutto in "c:\old", poi estrarre).
Notare che il bootloader deve essere già installato (salvarlo con qualche programmino o utilizzando la console di ripristino di windows xp, comandi fixboot e fixmbr)
Molto spesso si usano pile ricaricabili per telecomandi, macchine fotografiche ecc… bisogna sapere che ci sono dei tempi da rispettare per la ricarica e delle regole che prolungano la durata delle batterie.
Escludendo quelle al litio & derivate (su apparecchi dedicati, tipo cellulari o pc portatili) quelle in commercio (tipi AA, AAA, C, D, 9V) sono Ni-Cd (nichel cadmio) oppure le più nuove Ni-Mh (nichel metal idruro). Le prime hanno il problema della memoria, ovvero devono essere completamente scaricate prima di poter essere ricaricate. Se possibile comprate quindi le Ni-Mh. Sulla pila trovate l’indicazione della capacità di carica in mAh, troverete scritte ad es. da 700mAh, 200mAh.
Se non possedete un carica batteria a controllo elettronico, rischiate di caricare la pila più tempo del necessario rovinandola.
Per ottenere il corretto tempo di ricarica in ore: dividete la capacità della pila per la potenza in output del caricabatterie, poi moltiplicate per 1,4.
Ad es:
2000 mAh / 170 mA * 1,4 = 22 ore
Premesso che per fare piccole modifiche veloci a scripts PHP ci sono molti editor personalizzabili, ho recentemente cercato un ambiente di sviluppo IDE per PHP gratuito, da usare per progettare applicazioni + complesse su Windows.
Il primo che ho provato è Netbeans for PHP. Netbeans lo ritengo uno tra i più completi IDE per Java, a molti non piace per la sua pesantezza, e in effetti è pesante, ma è il prezzo da pagare per avere il massimo delle funzionalità. E quando si ha a che fare con progetto complessi, le funzionalità aiutano eccome. Da precisare che ci vuole molto tempo ad avviare l’IDE, poi si lavora con fluidità sui progetti aperti.
Dallo screencast vedo già che supporta le classiche funzioni Netbeans per Java, refactoring, evidenziazione codice, autocompletamento (anche di metodi importati da classi create dall’utente e incluse in qualsiasi modo), debugging, templates e abbreviazioni. L’ide installato occupa meno di 90 Mb e non interferisce con altre installazioni di Netbeans.
Interessante è anche l’editor HTML (ovviamente non WYSIWYG) che segnala errori di tag non corrispondenti e ha una piccola palette dei tag, oltre a fornire - in autocompletamento - l’elenco degli attributi disponibili per il tag corrente con tanto di documentazione onscreen.
Molto interessante anche l’editor Javascript che evidenzia sintassi ed errori del codice, autocompleta funzioni degli oggetti javascript, refactoring di variabili e funzioni ecc..
Stessa cosa per CSS: evidenziazione, autocompletamento selettori e attributi, con tanto di palette per selezionare caratteri, colori, bordi, posizioni.
Utile anche la funzione di download/upload FTP dei files che avviene sui corrispondenti path remoti nel server.
Sono rimasto invece deluso da Eclipse PDT dato che molti optano per eclipse piuttosto che netbeans. I tempi di avvio sono simili a quelli di Netbeans PHP. Non è possibile facilmente creare un progetto da files esistenti. la visibilità su metodi e funzioni incluse non ha funzionato bene in alcuni casi, il refactoring delle funzioni e metodi non ha funzionato. Il resto delle funzionalità (autocompletamento e altro anche per CSS e javascript) mi sono invece sembrate ottime e paragonabili a quelle di Netbeans.
So ora dell’esistenza di Dev PHP, quindi forse lo proverò sperando di poterlo usare come alternativa leggera.
Tempo fa ho provato Zend Studio (5.5 mi pare) e immagino che adesso sia almeno all’altezza dei 2 sopra, peccato che sia pagamento.
Sono curioso dei vostri commenti e di sapere cosa voi usate.
Ho appena scoperto una utility molto interessante per chi usa molto Gmail, che consente di effettuare il backup di tutta la posta gmail sul pc. Il programmino in questione si chiama Gmail Backup e lo trovate a questo indirizzo: http://www.gmail-backup.com/
Disponibile per Windows e Linux, licenza: gratuito !!
Perchè effettuare un backup ? i server di gmail sono sicuramente più affidabili dei nostri cd/dvd e hd, ma tenete in considerazione non tanto del fatto che il servizio gmail - che funziona benissimo - sia in versione beta, ma più che altro dell’eventualità di altri problemi (furto di identità, congelamento casella per inattività o disposizioni legali). Se non siete abbastanza geek e non vi bastano questi motivi, sul sito del programmino potete leggerne altri .
Come funziona basta attivare IMAP nei settaggi di gmail, poi avviare il programma e inserire (oltre alle credenziali), la directory del pc dove scaricare le e-mail. E’ possibile specificare anche un intervallo di tempo (verranno scaricate solo le mail inviate e ricevute in tale periodo) o di scaricare solo le nuove mail. La procedura di backup mostra indicatore di avanzamento e crea nella cartella files EML (gli stessi salvati e leggibili da outlook ma anche da un editor di testo/html qualsiasi essendo memorizzati in ascii, ovviamente contengono anche gli allegati grazie a MIME) nel formato YYYYMMDD - <ID>.eml che consente ordinare e classificare per data. Sotto uno screenshot della procedura di avanzamento.
Di seguito un modo per collegare un lettore MP3 a un autoradio blaupunkt, ovvero praticamente tutte le autoradio montate sulle fiat e alfa romeo, compresa la mia 156 del 2003.
Come si vede dallo schema sotto che ho trovato googlando (click x ingrandire), basta collegare il cavetto jack-mini ai pin della parte C3.
pin 18 = massa
pin 19 e 20 = segnale audio L e R
Tali ingressi sono usati dall’autoradio per ricevere il segnale dal caricatore CD. Possiamo fargli credere che il caricatore sia collegato creando un ponte tra i pin 13 e 14.
Se l’autoradio non riesce a commutare alle altre sorgenti (cd/cassetta/radio) con i pin collegati, basta inserirci un interruttore (nell’alfa 156/2003 non serve) .
ATTENZIONE: la procedura non è possibile con alcuni modelli di autoradio, specialmente gli ultimi, e il mappaggio pin potrebbe essere diverso. Attenzione a non collegare i pin 16 e 17 invece di 13 e 14, o bruciate il fusibile.
Il metodo è stato testato su alfa 156 del 2003, non mi ritengo responsabile di eventuali vostri danni arrecati seguendo questa procedura.
In questo articolo presento CakePHP, web framework per PHP.
Per chi non lo sapesse, PHP è un linguaggio di scripting per pagine web dinamiche. Con le eventuali interazioni con il database, permette di realizzare con facilità siti dinamici (gestione news, e-commerce…) e applicazioni web-based (ad es: gestionali online multiutente, installabili in locale o su server online). La maggior parte degli hosting, anche i più economici supportano scripting php. Data la sua forte crescita, licenza d’uso gratuita, facilità d’uso, presenza di molte librerie già pronte, è una delle soluzioni più adottate per le esigenze di piccole e media imprese.
Nello sviluppare un’applicazione complessa, ci si ritrova spesso davanti a implementare funzionalità simili complicate, è quindi fortemente consigliato l’utilizzo di un framework per velocizzare i tempi, ridurre gli errori, concentrarsi più ad alto livello sull’applicazione ed avere altri vantaggi.
Perchè proprio CakePHP ?
Al momento i migliori framework per PHP sono all’incirca Zend, Symphony e CakePHP (cakephp.org).
In questo articolo presento l’ultimo di questi, in quanto ha una bassa curva di apprendimento, è ben documentato, molto utilizzato (trovate molti tutorial e guide all’uso), funziona con MVC, supporta Ajax, caching e, diversamente dai primi 2, gira anche con PHP4.
Se volete analizzare meglio le differenze di funzionalità tra i framework disponibili, cercate su google “php framework comparison chart”.
I framework che trovate non sono in alternativa, ma pensati in modo diverso e con ambiti di funzionalità diversi. Se vi chiedono di realizzare un’applicazione, sarebbe l’ideale avere un’idea di alcuni di essi, in modo da scegliere il più adatto. E’ possibile anche usarne più di uno per la stessa applicazione, ad esempio uno per il backend e uno per il frontend e/o un altro per una funzionalità precisa, Zend e Symphony lavorano insieme senza troppi problemi per esempio.
Iniziamo ! primi passi e nozioni di base…
Scaricate l’ultima versione stabile ed estraetela. Al momento l’ultima è la 1.1.19.6305. Vi trovate una struttura con un file index.php (questo file è il primo file chiamato dal client, elabora tutte le richieste del client e le smista ai componenti interni). La cartella “cake” contiene il motore del framework, mentre in “app” metteremo tutti i sorgenti della nostra applicazione. Questa struttura di directories e files va posizionata tale e quale nel webserver.
Nella root non ci va nessun altro file. Se una url per il client è ad esempio
http://percorso_app:porta/gestione/news/insert,
non significa che abbiamo una struttura di directories gestione/news/insert, ma che verrà chiamata (in http) la pagina index.php passando la stringa
“gestione/news/insert“.
Questo sistema è dovuto a MVC, un pattern architetturale che consente di separare logica applicativa e interfacce utente. Tralasciando la classica definizione di MVC, che non è facilmente intuibile, per ora ci basta sapere che il view gestisce l’interfaccia utente, il model contiene e gestisce i contenuti, il controller gestisce la logica applicativa.
Esempio
Propongo un esempio minimale, un inserimento di news sull’homepage. Se usate Windows, potete testare benissimo in locale, ad esempio con EasyPHP (easyphp.org) che comprende l’ambiente WAMP (windows, apache web server, mysql database server, php linguaggio di scripting) già funzionante dopo la prima installazione senza configurazioni. Se usate linux sarete sicuramente degli smanettoni quindi non avrete penso problemi a scaricarvi i pacchetti e configurarvi l’ambiente
1.preparazione ambiente
Create la tabella con phpmyadmin per le news (riporto la query di creazione):
CREATE TABLE `news` (
`id` INT( 3 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titolo` VARCHAR( 255 ) NOT NULL ,
`testo` TEXT NOT NULL
)
Inserite anche qualche record di prova.
Andate in app/config, copiate il file database.php.default in database.php, aprendolo vedete che di default viene usato mysql come database, cambiatelo se volete usare SQLite o altri. Inseriteci i parametri di connessione (db, user, pass). Per EasyPHP, lo user è root, la password è vuota.
Servirebbe abilitare MOD_REWRITE nel webserver apache, funzionalità che permette di mappare le url http in percorsi fisici diversi attraverso configurazioni apache o file .htaccess. Se il vostro server non lo supporta, andate in app/config/core.php e decommentate la riga
define (’BASE_URL’, env(’SCRIPT_NAME’));
2. pagine per lettura news
Passiamo a scrivere il codice per l’applicazione. Siccome funziona tutto con MVC, iniziamo a creare il modello (con il contenuto).
Creare il file app/models/news.php, che contiene la classe omonima News (importante: con lettera maiuscola) che deve estendere la classe AppModel
<?php
class News extends AppModel
{
var $name = ‘News’;
}
?>
Creiamo adesso il controller in app/controllers/news_controller.php che estende da AppController.
Questa volta abbiamo in più il metodo index() ovvero il metodo principale che viene chiamato per costruire la pagina, in questo caso (vedi codice seguente) settiamo la variabile news con i record del database.
<?php
class NewsController extends AppController
{
var $name = ‘News’;
function index()
{
$this->set(’news’, $this->News->findAll());
}
}
?>
Terza cosa da creare è la vista, ovvero il file che mostra l’elenco dei records. A questo file, la findAll() passa l’array news (settato sopra dal controller con la set), che per elemento, quindi chiave News, contiene l’array super-globale con i record. Mi spiego meglio con il codice (da inserire in app/views/news/index.thtml).
ottenete la pagina con l’elenco delle news (se avete MOD_REWRITE attivato, non serve specificare la parte di url index.php/).
Come vedete sul titolo di ogni news c’è un link sul titolo che porta a /news/leggi/<id record>. Il contenuto dei questa ultima pagina, sarà restituito dalla funzione omonima leggi($id) dentro il controller, così come la url della index è data dalla funzione index(). In pratica la pagina news/azione/id verrà costruita chiamando il metodo azione() del controller e passandoci l’id alla funzione.
Aggiungiamo quindi la funzione seguente a news_controller.php
function leggi($id = null)
{
$this->News->id = $id;
$this->set(’news’, $this->News->read());
}
Analogamente alla index(), viene setta la variabile news con il record avente id uguale a $id, in modo che il view la possa usare.
Creiamo app/views/news/leggi.thtml e inseriamo la semplice stampa della news
<h1><?php echo $news['News']['titolo']?></h1>
<p><?php echo $news['News']['testo']?></p>
Riaprendo con il browser la pagina vediamo che i links sui titoli portano alle pagine con i dettagli della news.
3.pagine di inserimento/modifica record
Aggiungiamo al controller il metodo add() che gestisce :
function add()
{
if (!empty($this->data) &&
$this->News->save($this->data))
$this->flash(’News inserita.’,'/news’);
}
Ancora una volta aggiungiamo il corrispondente view in app/views/news/add.thtml, che stampa il form di inserimento
In pratica chiamando la url news/add ci troviamo un form che al submit inserisce i dati.
Per creare la pagina di editing dei record, scrivete la funzione edit() in modo che se passate qualche dato chiami la save(), altrimenti chiama la read() dopo aver settato l’id.
function edit($id = null)
{
if (empty($this->data))
{
$this->News->id = $id;
$this->data = $this->News->read();
}
else
{
if ($this->News->save($this->data['News']))
{
$this->flash(’News aggiornata.’,'/News’);
}
}
}
Nel corrispondente view (edit.thtml) dobbiamo ricordarci di inserire il campo (hidden) id nel form, altrimenti in ricezione non riusciamo a capire quale record stiamo modificando.
Potete creare a questo punto un metodo e relativo view con l’elenco news e links per l’editing, in modo analogo alla index() con i link per vedere il testo della news. Tralascio il codice del controller e del view dell’editing per motivi di spazio.
4. ritocchi
Andate in app/config/routes.php, qui potete cambiare i mappaggi dei path delle url nei relativi controller e azioni predefinite. Mappando ad esempio il path root “/” con il controller news e action index, chiamando con il browser “/”, il contenuto sarà quello di /news/index.
Le pagine vanno ovviamente tra loro collegate con dei link, che come abbiamo visto si creano con
Con procedure simili potete creare i form di login.
Gli stili css sono facilmente inseribili, basta modificare quello di default, e questo va in automatico in tutte le pagine che vengono generate.
Guardatevi dal sito ufficiale la documentazione e le nuove funzioni, ci sono (direttamente o tramite plugin) librerie per la maggior parte delle esigenze di applicazioni web: session, cookie, xml, plugin ajax, siti multilingua, rss, socket http, form validation, scaffolding, email, time, javascript, soap per web services, pdf…
Potete anche configurare cosa viene dato all’utente se chiama una pagina (ovvero un metodo nel controller) che non esiste.
Guardatevi i files di configurazione dentro /app/config per personalizzare il comportamento generale del framework.
Conclusioni
Le procedure vi potranno sembrare apparentemente complesse per creare un’applicazione così semplice. Il funzionamento generale è che una pagina che l’utente vede non è una pagina scritta apposta, ma è data da una funzione dentro un controller. Lavorando in questo modo, ragionate sul sito/applicazione come un’unica entità, non come una moltitudine di pagine. Non dovrete mai fare una cosa due volte in questo modo. Se in alcune o tutte le pagine volete qualcosa (javascript, css, footer, menu di navigazione) basta che lo specifichiate una volta sola, riducendo al minimo la possibilità di errori.
Se ci pensate bene avete un’enormità di vantaggi lavorando in questo modo, derivanti sia dal modo di lavorare ad “alto livello”, sia da templating automatico delle pagine, facile controllo e manutenibilità del codice, scrittura html ridotta al minimo (non dovete scrivere i tag html, head, body ecc…, vengono scritti nel rispetto delle regole W3C dal motore di cakephp), una libreria di funzioni e patterns già implementati molto ricca. Ci sono anche dei vantaggi “invisibili”: tutte le pagine generate e relative chiamate al database server appesantiscono al minimo il carico di lavoro del server grazie al sistema di caching integrato.
CakePHP è distribuito con licenza gratuita MIT, simile alla GPL. In pratica potete farci tutto, ma se lo modificate dovete ridistribuirlo con la stessa licenza.
Dal punto di vista della sicurezza, dato che è distribuito con il codice sorgente, tenete conto che all’esterno l’applicazione è molto esposta.
Esplora risorse (file manager di windows dalla versione 9x) ha una interessante opzione a linea di comando: explorer.exe /e,/root,c:\cartella
permette di lanciare esplora risorse con l’albero delle directory (sulla sinistra) che parte dalla cartella c:\cartella, cosa molto utile quando si lavora molto con la struttura della cartelle e i files in QUELLA cartella.
Dal registro, si può creare una nuova voce in HKEY_CLASSES_ROOT\Directory e dargli il comando con %1 (cartella corrente), vedi screenshot
Presento un sistema (indipendente da versione di windws, antivirus e firewall installati, impostazioni di sicurezza) per connettersi al computer di chi ce lo richieda, passando attraverso + routers, firewall ecc..
La soluzione prevede l’utilizzo di Hamachi, un programmino free per creare velocemente una rete "tunnel" vpn tra i due computer e che permette ai programmi di chiamare il computer destinatario come se fosse nella stessa LAN, isolandoci dalle problematiche di bloccaggio porte e regole dei routers / firewall.
Il servizio (per ora gratuito) faucet pvr di vcast permette di programmare delle registrazioni TV scegliendo intervallo di tempo (Data, ora, max 3 ore consecutive), canale (circa tutti quelli interessanti in chiaro che passano sul satellite hotbird, compresa RAI e MEDIASET) e formato di registrazione (MP4 x ipod, 3GP, apple TV…).
E’ possibile programmare a cadenza giornaliera o settimanale (cioè ogni giorno o giorno della settimana alla stessa ora), non c’è limite al numero di programmazioni impostabili infine è possibile sovrapporre le programmazioni su canali diversi.
Dopo pochi min che la registrazione è conclusa, il file è reso disponibile (da scaricare o guardare online) ed è mantenuto sul sito per 3 giorni. Presente anche un feed rss con i files delle registrazioni effettuate.
Nel formato MP4 viene creato un video 320×240 pixel, 575 bps 25 FPS, audio AAC 48kHz (1 ora di video = 250 Mb), un ottimo compromesso quaità/dimensione. ecco uno screenshot:
La banda in uscita del server consente di vedere la registrazione in streaming avanzando nella timeline con poco ritardo, quasi come se avessimo il file in locale.
In homepage di vcast sono disponibili anche altre registrazioni di eventi e programmi tv, oltre alla possibilità di creare il proprio podcast.
Sembra un servizio illegale ? NO !
Secondo la legislazione, il servizio di videoregistrazione è assolutamente legale, quindi se un canale passa in chiaro sul satellite o etere, possiamo benissimo registrarlo o "farlo registrare a terzi". Non è invece legale che un sito faccia scaricare i video precedentemente registrati e non impostati precedentemente da noi (in questo caso non è più in servizio di videoregistrazione).
[UPDATE]
Ovviamente la legge non è uguale per tutti, o almeno è più giusta per chi ha più soldi : Da qualche mese Mediaset ha ingiustamente diffidato vcast che adesso non può più fornire servizi di videoregistrazione per mediaset.
Altre info al link
http://www.vcast.it/blog/
Alternative: usare il servizio di videoregistrazione del portale mediaset (ovviamente non gratuito) o affidarsi a http://www.rickyrecords.tv/ (circa 0,8 euro per registrazione, registra anche da mediaset).