Passa ai contenuti principali

Post

Post in evidenza

Virtual field in Laravel/ Eloquent

L'implementazione dei virtual field in Laravel è molto semplice, ma la documentazione ufficiale non è immediata. Vedremo qui come fare.

I virtual field sono campi del model che non hanno corrispondenza nel database. Essi sono utili nel caso, ad esempio, si desideri riassumere più campi del model in un singolo "campo virtuale".

Vediamo l'esempio della classe Fattura così definita
Fatturanumero: Integer data_fattura: Datetime
[...]
Si desidera definire il virtual field descrizione_numero_data che restituisca la seguente concatenazione del numero e della data
"Fattura numero 5 del 15/07/2000".

In Laravel l'implementazione del virtual field avviene:

implementando un Accessor, che restituisce la stringa desiderata;specificando il nome_virtual_field nell'array $appends del model.

<?phpclassFatturaextends Model { protected$appends=array("descrizione_numero_data"); publicfunctiongetDescrizioneNumeroDataAttribute() { return"Fattura …
Post recenti

Telegram: inviare messaggi su un gruppo da un bot

Telegram è più che l'ennesima app di messaggistica. Se vi sono alcuni compiti semplici e ripetitivi (ad esempio l'invio di news su un gruppo) è possibile automatizzarli programmando opportunamente un Bot.

In questa guida vedremo come inviare semplici messaggi su un gruppo. Per farlo, sono necessarie due informazioni: TOKEN del bot e CHAT_ID, ossia l'identificativo del gruppo.

Step 1 - creazione del Bot Da Telegram cerchiamo @BotFather (http://telegram.me/BotFather).

Dopo essere entrati nella chat, digitiamo il comando
/newbot
Inseriamo il nome che vogliamo dare, ad esempio
Bot di test
Infine, scegliamo uno username univoco e che termini con _bot, ad esempio
BotteDiTest_bot
Nel messaggio di risposta otteniamo il TOKEN, la chiave segreta che ci permetterà di sfruttare le API di Telegram.





Step 2 - aggiunta del Bot nel gruppo Da Telegram entramo nelle impostazioni del gruppo, e aggiungiamo tra i membri il nostro bot.
Per scoprire l'id del gruppo è sufficiente consultare gli a…

GitHub e il numero di download

In questi ultimi anni si è visto aumentare in modo esponenziale l'utilizzo di GitHub come piattaforma di condivisione di codice open source. E' certamente un prodotto validissimo che merita tutto il successo che ha, tuttavia molti lamentano il fatto che non esiste un modo di verificare il numero di download del software rilasciato. E' un vero peccato, perché avere il count dei download è importante per avere un riscontro oggettivo sull'interesse del pubblico al software.

GitHub cerca di toppare questa carenza rilasciando, nelle sue API, la possibilità di ottenere il numero dei download. Per usare le API basta aprire il browser e digitare:

https://api.github.com/repos/nome-utente/nome-repository/releases Per ogni release è presente il campo download_count che rappresenta, appunto, il numero di download.

Per velocizzare tutta questa fase ho realizzato uno script che automatizza l'accesso alle API e visualizza solo l'informazione che serve. Lo script si chiama GitHu…

Linux e avvio automatico di demoni

Su Linux, per avviare un demone all'avvio del PC, bisogna inserire lo script nella directory /etc/init.d/ e creare un link simbolico in uno o più runlevel:
0 - Halt1 - Single-user text mode2 - Not used (user-definable)3 - Full multi-user text mode4 - Not used (user-definable)5 - Full multi-user graphical mode (with an X-based login screen)6 - Reboot In Ubuntu, per velocizzare la creazione dei link simbolici nei runlevel esiste il comando update-rc.d . Il suo utilizzo è molto semplice:
update-rc.d nomedemone defaults
In CentOS esiste un metodo più avanzato per mantenere i link simbolici, con il comando chkconfig. Il suo utilizzo è altrettanto facile:
chkconfig --list
chkconfig --add foo
chkconfig --del foo


Trasformare il tasto <invio> in <tab> nelle form HTML

Molto spesso, mentre si compilano i campi di una form html, può venire spontaneo battere il tasto invio senza voler fare il submit della form. Tuttavia, salvo diversi accorgimenti, si ottiene così proprio il submit della form. In un'applicazione web, in cui vengono inseriti molti dati attraverso la tastiera, può essere utile assegnare al tasto d'invio lo stesso comportamento del tasto tab. Il seguente script, che ho trovato in un post sul forum codeigniter.com, fa uso di jQuery e fa al caso nostro. Ad ogni pressione del tasto invio sui campi di classe "enter" il focus viene spostato al campo successivo (di classe "enter"), a meno che non ci troviamo sull'ultimo campo (di classe "enter").
<script type="text/javascript"> $(document).ready(function(){ $("input").addClass("enter"); //se necessario, rimuovere questa linea e assegnare la class="enter" ai soli campi sui quali si desidera trasformare e…

Hibernate e log4j

Nella modalità di debug, Hibernate effettua un logging molto approfondito, comprendendo ad esempio le query SQL ed i valori delle variabili assegnate. Questi log possono essere di grande aiuto per lo sviluppatore, il quale però si trova molto spesso davanti ad un elenco interminabile di log sullo stdout. Nasce quindi la necessità di avere il pieno controllo del flusso dei log con l'utilizzo di un valido strumento di logging, come log4j. Grazie a log4j è possibile, ad esempio, redirezionare il flusso di alcuni log su un file, sullo standard input, oppure escluderli completamente.
Hibernate usa slf4j quale gestore di log e, al fine di delegare il controllo a log4j è indispensabile svolgere i seguenti semplici passi:

1. Copiare i jar log4j, slf4j-api e slf4j-log4j nel classpath. Le seguenti versioni sono state testate personalmente log4j-1.2.15.jar [link diretto], slf4j-api-1.5.3.jar e slf4j-log4j12-1.5.3.jar [link diretto]. 2. Configurare il file log4j.xml (o log4j.properties) ed in…

Apache e Tomcat

Apache HTTP Server è un web server che permette l'accesso a uno o più siti presenti sul server sul quale è installato. Molto spesso Apache HTTP Server viene utilizzato nella piattaforma LAMP (Linux, Apache, MySQL, PHP) rendendo i siti web accessibili e disponibili sulla porta 80 (la porta predefinita per la navigazione web).

Quando si sviluppano applicazioni web in Java, c'è bisogno di una piattaforma che consenta di eseguire applicazioni web scritte in questo linguaggio. Le più utilizzate sono Tomcat, JBoss e Glassfish. Queste piattaforme, denominate web container (alcune sono più di un web container), restano in ascolto solitamente sulla porta 8080 e quindi, a meno di digitare il numero della porta nell'URL (esempio, www.example.com:8080), nasce l'esigenza di accedere all'applicazione web più comodamente, magari con un dominio diverso o attraverso un sottodominio.

Per configurare Apache affinché possa "trasferire" il traffico da un determinato sottodom…