Blog
Pubblicato in programmazione, trucchi, Cakephp, 3 mesi fa , Commenti | Lascia un commento
A volte capita di dover mettere mano a vecchi siti sviluppati su cakephp 1.2, e spesso ci si inciampa in noiosi errori "deprecated" dovuti alla differenza di versione di PHP (cakephp 1.2 era scritto per php4, pur girando anche su php5, mentre cakephp 2.0 gira solo su php5.3).
Dopo essere diventato matto per capire come nascondere quei messaggi ho trovato una soluzione che credo sia la migliore, se non altro per la comodità: aggiungere una piccola istruzione in cima al file ./index.php che spieghi a php che gli errori di quel genere deve ignorarli:
if(defined('E_DEPRECATED')) {
error_reporting(E_ALL & ~E_DEPRECATED);
}
Beh... funziona!
Pubblicato in Cakephp, trucchi, 3 mesi fa , Commenti | Lascia un commento
Recentemente mi è capitato di dover tradurre tutte le stringhe di un sito scritto in CakePHP, ma solo in inglese. Un autentico lavoraccio visto che il sito aveva una miriade di pagine e di funzionalità.
Dalla mia c'era il fatto, e chi usa CakePHP lo sa, che gli strumenti che questo fantasmagorico framework offre sono infiniti.
Fortunatamente il sito era già predisposto per la traduzione, quindi bastava preparare il file .po ed inserirvi le traduzioni. Lo strumento di cui mi sono servito, anche questa volta, è la potentissima console di CakePHP, che con il comando
/var/www/ilmiosito/app$ ./Console/cake i18n
ha cercato (da sola!!) tutte le stringhe traducibili in tutte le sottodirectory dell'applicazione "ilmiosito" (quelle scritte in modo simile a __('Traducimi', true), per intenderci) ed ha salvato il tutto, comodamente, nella directory ./app/Locale nella forma di un file con sintassi gettext, cioè qualcosa di simile a questo:
msgid "Translate me"
msgstr "Traducimi"
... naturalmente, inserire la traduzione nella stringa msgstr rimane compito di chi scrive, non tutto è così automatizzato :)
Comodo, no?
Pubblicato in programmazione, trucchi, 8 mesi fa , Commenti | Lascia un commento
... per fortuna che esiste l'.htaccess :)
Se si vuole includere un file (ad esempio un file di configurazione) in ogni singolo file php, può non essere necessario fare l'include tutte le volte; si può infatti fare in automatico con una semplice istruzione da mettere nell'.htaccess, così:
php_value auto_prepend_file "/percorso/del/file/config.php"
Allo stesso modo, se si vuole fare la stessa cosa ma al fondo dei propri file, si può utilizzare un'altra istruzione:
php_value auto_append_file "/percorso/del/file/stats.php"
Comodo, vero? :)
Pubblicato in Script, Ubuntu, 8 mesi fa , Commenti | Lascia un commento
In questo fine settimana mi sono posto un problema non da poco per un webcoso freelance come me: e se il pc si rompe?
Faccio (quasi) abitualmente il backup dei dati che mi servono, ma il salvataggio dei database è sempre una rottura di scatole e lo faccio... solo quando mi ricordo di farlo. Questo non va bene perchè è un'operazione tediosa e troppo spesso finivo per trascurarla, così dopo aver scritto un piccolo script in bash per un altro motivo, ho deciso di sfruttare la comodità di questo strumento insieme alla figosità di Dropbox per avere un comando che faccia il lavoro sporco per me, lo faccia in automatico e lo faccia in modo sicuro, salvandolo anche online.
In sostanza, quello che fa questo script è effettuare il dump di tutti i database presenti sul mio mysql, eccetto le tabelle "sue", come information_schema, phpmyadmin e mysql, comprimerle tramite bzip2, controllare (basandosi sulla dimensione del file compresso) se ci sono stati dei cambiamenti dall'ultimo salvataggio ed eventualmente salvare il nuovo backup nella mia cartella su dropbox... poca spesa, tanta resa!
Ecco il codice:
#!/bin/bash
##################################
# Mysql backup automatizzato con salvataggio dove ti pare (io uso dropbox).
# Di Emanuele "ToX" Toscano - http://emanuele.itoscano.com/vedi/95
# Requisiti: linux o qualche adattamento per farlo funzionare su windows, non ho idea di come si faccia per mac
# Consigliabile usare dropbox per salvare il file...
Leggi il resto del postPubblicato in Cakephp, Segnalazioni, 9 mesi fa , Commenti | Lascia un commento
Una doverosa premessa
Fin da quando sono entrato nel colorato e caramelloso mondo multiforme dell'informatica ho sempre prediletto blog e siti tematici; ho un brutto rapporto con manuali, libri e quant'altro riguardante la programmazione: ne ho acquistati alcuni insieme a riviste o per conto mio, ma immancabilmente la loro fine è quella di essere riposti in uno scaffale il giorno stesso o di restare sul tavolo in attesa di decidere cosa farne.
Qualche tempo fa sono stato contattato per recensire "CakePHP 1.3 Application Development Cookbook", di Mariano Iglesias. Conosco di fama Mariano Iglesias perchè diverse volte, cercando informazioni su come-fare-cosa su CakePHP mi sono imbattuto in alcuni suoi contributi, così, vista la mia stima nei suoi confronti, pur senza averci mai avuto a che fare direttamente, mi sono incuriosito e ho deciso di provare a farne una recensione.
Il libro
Il libro, che mi è arrivato in formato elettronico, è sostanzialmente un incrocio fra un manuale "pratico" ed un libro di ricette. Cookbook è un nome perfettamente azzeccato, e come tale è consigliabile leggerlo: se per esempio avessi bisogno di sapere cosa sono e come funzionano i Test, argomento su cui ho sempre avuto molte lacune e su cui non sono mai riuscito a trovare qualcosa di realmente utile a riguardo, mi basterebbe aprire il libro su quel capitolo per scoprire cosa sono, come funzionano e trovare degli esempi pratici su come usarli. Esempi che non sono mai banali...
Leggi il resto del postPubblicato in Ubuntu, Segnalazioni, 1 anno fa , Commenti | Lascia un commento
Da quando ho aggiornato ad Ubuntu 11.04 firefox ha cominciato a fare cose strane, per esempio immagini come questa

Venivano visualizzate così:

Per qualche tempo ho provato ad utilizzare chromium, ma non riesco proprio ad abituarmici, e soprattutto a rinunciare ad alcune estensioni... poi ho scoperto questa discussione, che riportava a questa soluzione (in particolare Some images are displayed with weird colors).
Beh, ha funzionato :)
Pubblicato in Ubuntu, 1 anno fa , Commenti | Lascia un commento
E' fatta, ubuntu adesso ha unity come desktop environment di default. A me unity non piace, lo trovo scomodo da usare, illogico e soprattutto mi richiede troppi click, e usando linux per lavoro questo mi risulta particolarmente fastidioso.
Così ho deciso di ridare una possibilità a Xfce, che ho utilizzato con grande soddisfazione una mezza dozzina di anni fa, lasciandolo perdere quando decise di diventare una sorta di clone di gnome 2.x... beh, devo dire che nel frattempo è diventato proprio brutto, almeno di default!
Per fortuna si può ovviare mettendogli dei font decenti (droid sans) e giocando un po' con le barre per renderle comode (personalmente sono affezionato a come le avevo su gnome, quindi le ho impostate più o meno allo stesso modo.
Si ma le applet di gnome?
Fra le altre cose, non posso fare a meno di project hamster, per lavoro, quindi ho bisogno di poterlo avere anche su Xfce, cosa che di default non si può fare. Fortunatamente si può rimediare in modo semplice ed indolore, installando xfapplet così:
sudo apt-get install xfce4-xfapplet-plugin
click destro sul pannello, aggiungi elemento, xfapplet
cliccando sull'icona di xfapplet, a questo punto, sarà possibile scegliere fra le applet di gnome... comodo, no? :)
Leggi il resto del postPubblicato in Script, 1 anno fa , Commenti | Lascia un commento
Recentemente mi è capitato di dover implementare un semplice antispam su un mio sito, che riceveva quantità enormi di post spazzatura. Non volevo appesantire il tutto e non volevo usare script presi chissàddove, così, ricordando che la maggior parte dei bot non sa interpretare javascript, ho deciso di usare questo linguaggio come difesa; tantopiù che gli utenti senza javascript abilitato sono meno dell'1%, percentuale del tutto trascurabile (anzi, magari quell'1% è composto proprio dal bot :))
Per farla breve, ecco la ricetta del mio script:
Prima di tutto modifico l'action del mio form, da (per esempio) post/add a post/antispam_add
<form action="/post/antispam_add" id="idDelMioForm" method="post">
Aggiungo un pizzico di jquery:
$(document).ready(function(){
$('.submit input').click(function() {
action = $('#idDelMioForm').attr('action');
newaction = action.replace('antispam_', '')
$('#idDelMioForm').attr('action', newaction);
return true;
});
})
Scritto... e filtrato!
Semplice, no? :) In questo modo non c'è bisogno di utilizzare orribili captcha, che sono l'antitesi dell'usabilità, l'utente non si accorge di nulla ed otteniamo un buon risultato... sperando che i bot continuino a non interpretare codice javascript :)
Leggi il resto del post