I cinque miti più diffusi sui programmatori “di una certa età”

Postato da ROb | nella categoria Informatica in generale, Utilità | giovedì, 25 febbraio 2010

14

Programmatori attempati

Dave Rodenbaugh ha pubblicato un interessante articolo che tratta dei cinque miti più diffusi sui programmatori di una certa età.

Dave sostiene, analizzando uno per uno tutti questi cinque punti, che anche i programmatori quarantenni possono dire la loro nel mondo dello sviluppo software in virtù della loro elevata esperienza.

Ecco quali sono questi cinque miti, secondo i quali le aziende tendono a preferire sviluppatori giovani rispetto agli “anziani”:

  • I programmatori “anziani” sono più costosi rispetto ai giovani. Rendendo questi ultimi più desiderabili.
  • I programmatori “anziani” sono meno flessibili e meno propensi ad imparare nuove tecnologie a causa del forte legame con le tecnologie più mature.
  • I programmatori “anziani” non hanno più le forze per sostenere i classi tour de force dello sviluppo (lavorare molto oltre l’orario standard, fare ore e ore di debugging) a causa dei loro impegni familiari che i giovani non hanno.
  • I programmatori “anziani” sono mentalmente meno reattivi (il termine inglese che rende di più è “agile” di quelli giovani.
  • I programmatori “anziani” sono più stanchi e cinici e quindi, meno desiderabili nei posti di lavoro rispetti ai giovani. Gli sviluppatori giovani sono più entusiasti di quelli attempati.

L’articolo completo, in inglese, lo trovate a questo indirizzo.

Largo agli anziani!

Operazioni massive sui file contenenti spazi (mastering Linux Bash)

Postato da ROb | nella categoria Linux | mercoledì, 24 febbraio 2010

4

Molte volte mi sono imbatutto in questo problema nella mia bash in Linux.

In generale è molto semplice operare sui file in Bash in modo massivo. Possiamo usare infatti dei cicli for, delle pipe oppure il comodo backtick.

Operazioni massive sui file

Tutte queste opzioni funzionano bene se il file non contiene però spazi. In questi casi infatti succede che il file con lo spazio viene diviso in due token e il comando successivo che deve processare il file non riesce a trovarlo.

Il metodo più efficace che ho trovato e ho provato per questi casi è il seguente:

find ${path} -name "${name}" | while read i

do
  cp "$i" ${dest}
done

La variabile ${path} contiene il percorso di ricerca del find, la variabile ${name} l’espressione di ricerca in sintassi find. L’output del comando find viene passato a un ciclo while bash che inserisce ogni riga nella variabile $i.
All’interno del ciclo viene eseguito il comando, in questo la copia del file nella directory (variabile ${dest}) sul file contenuto nella variabile $i.
E’ importante notare come la variabile $i sia compresi fra doppi apici, altrimenti gli spazi caurebbero problemi al comando cp.

Calcolare reti, host e netmask direttamente da riga di comando

Postato da ROb | nella categoria Linux | martedì, 23 febbraio 2010

0

Ipcalc è uno strumento semplicissimo per calcolare reti, range di host, netmask, bit.
Oltre che essere utile è anche estremamente didattico.

bits

Il suo utilizzo è immediato. Nel caso più semplice passiamo come primo e unico parametro la stringa rappresentativa della nostra rete seguita dalla netmask (esprimibile sia in forma estesa che in notazione CIDR) separata da uno slash.

Ecco alcuni esempi possibili di avvio del comando:

ipcalc 192.168.0.1/24
# oppure
ipcalc 192.168.0.1/255.255.128.0
# oppure
ipcalc 192.168.0.1 255.255.128.0 255.255.192.0
# oppure
ipcalc 192.168.0.1 0.0.63.255

L’output di ipcalc 192.168.0.1/24 è illustrato qui sotto.
Come vedete si interpreta da solo.

Output del comando ipcalc

Chi è esperto di reti probabilmente si diletterà con le combinazioni più strane di netmask e indirizzi, per chi invece è alle prime armi con il networking o sta preparando il corso di reti allora probabilmente ipcalc si rileverà uno strumento comodissimo.

Per installarlo nelle distribuzioni Ubuntu-like è sufficiente come sempre lanciare il comando:

sudo apt-get install ipcalc

Aggiungere o sottrarre giorni, mesi, anni a una data in Java

Postato da ROb | nella categoria Java | lunedì, 22 febbraio 2010

0

Può sembrare banale ma la prima volta che ho cercato di farlo ci ho messo un pochino per trovare la soluzione giusta. Ho deciso così di pubblicare queste poche righe di codice.

date

Per sottrarre o aggiungere un giorno a una data, bisogna creare un’istanza della classe Calendar, impostando una data e sommando a questa 1 di tipo giorno.

/* adding 1 day to the actual date */
Date eventDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(eventDate);
calendar.add(Calendar.DATE, 1);
Date pastDate = calendar.getTime();

Se vogliamo invece sottrarre un giorno dobbiamo usare “-1″ anziché “1″ alla riga 5.
Nel caso in cui dobbiamo aggiungere o sottrarre mesi o anni possiamo usare, sempre alla riga 5, Calendar.MONTH o Calendar.YEAR .

Acqua: bene comune, incontro pubblico con Alex Zanotelli

Postato da ROb | nella categoria Varie | lunedì, 22 febbraio 2010

0

Venerdì 26 febbraio nell’Aula Magna del Comune di Recanati, in provincia di Macerata, si terrà un incontro sul tema della privatizzazione dell’acqua.

L’incontro sarà condotto da Padre Alex Zanotelli, missionario comboniano, che ha vissuto per molti anni in Kenya nello slum di Korogogho.

Acqua, bene comune

L’organizzazione è ad opera di REES Marche, Mondo Solidale di Recanati, Parrocchia di S.Francesco di Recanati, Gruppo di Acquisto di Recanati e patrocinato dal Comune stesso.

In allegato trovate la locandina in format pdf.

Unire più pdf in un unico file in Linux

Postato da ROb | nella categoria Linux | venerdì, 19 febbraio 2010

0

Può tornare utile ogni tanto unire alcuni file pdf in un unico pdf.
A me capita molto spesso quando devo spedire documentazione via fax. In questo caso genero un’unico grande file pdf con tutte le pagine “scansionate” in formato pdf fuse insieme.

Merge di file pdf

In Linux compiere quest’operazione è davvero banale tramite pdfjoin, un eseguibile disponibile, nel mondo Debian/Ubuntu, nel pacchetto pdfjam.

Per unire i file basta semplicemente lanciare questo comando:

pdfjoin --outfile merged_file.pdf input1.pdf input2.pdf input3.pdf

Dove i file inputX.pdf sono i sorgenti e merged_file.pdf è l’output generato.
L’ordine dei file di input ovviamente viene rispettato per la generazione del file di output.
Per conoscere meglio la sua sintassi usate sempre il buon valido man pdfjoin.

Appunti Linux, l’enciclopedia di informatica libera

Postato da ROb | nella categoria Informatica in generale, Linux | giovedì, 18 febbraio 2010

0

Definire “Appunti Linux” un tutorial su Linux è assolutamente riduttivo.

Appunti Linux” nasce infatti con questo nome ma negli anni si trasforma in “Appunti di informatica libera“.
In effetti per il numero di argomenti trattati, la proprietà di linguaggio, i numerosi esempi e le immagini presenti, potrebbe essere definita in tutti i sensi la più grande enciclopedia di informatica in italiano mai scritta.

Appunti Linux - Daniele Giacomini

L’opera è divisa attualmente in 39 volumi.
I primi trattano di argomenti generali e concetti basilari sull’hardware dei sistemi, successivamente l’attenzione del lettore viene spostata su temi più specifici del mondo Linux: kernel, shell, file system.
Il volume 10 inizia la trattazione di reti, affrontando le basi del networking (stack ISO/OSI e TCP/IP) fino ad arrivare a parlare dei protocolli di livelllo applicativo più diffusi. Non vengono tralasciati neanche gli aspetti di firewalling e protezione antivirus.

I volumi successivi spaziano anche su temi meno vicini a Linux ma comunque di elevato interesse: programmazione, sistemi operativi alternativi, linguaggi di markup, editoria, multimedialità, openoffice.

Insomma un volume da avere sempre a portata di click.
Nonostante ormai i motori di ricerca, Wikipedia e Internet in generale siano diventati la principale fonte di informazione, soprattutto per gli informatici, il mio consiglio è quello di provare comunque a cercare nell’indice analitico di “Appunti Linux” specialmente se state cercando informazioni su software non troppo recenti o su concetti basilari dell’informatica.

Per concludere, giusto una piccola curiosità.
Per valutare appieno la mole di lavoro dell’autore… in questo link è disponibile il file pdf aggiornato al 23/12/2009.
La dimensione di tale pdf è 160Mb, le pagine sono 11.921 !!!

Buona lettura.

Terzo appuntamento rassegna Jazz Macerata 2010

Postato da ROb | nella categoria Musica | mercoledì, 17 febbraio 2010

0

Il terzo appuntamento della stagione Jazz 2010 Macerata propone “Marziani Burgio Goglia Manzi, Special guest Giovanni Amato“, un quintetto con un doppio pianoforte, batteria, contrabbasso e tromba.

jazz saxophone

Domenica 21 febbraio ore 17:30, Teatro Lauro RossiMacerata.

Qui trovate ulteriori informazioni sulla rassegna.

Comprimere il codice Javascript con YUI Compressor

Postato da ROb | nella categoria Sviluppo web | mercoledì, 17 febbraio 2010

0

Molte librerie javascript vengono distribuite in un formato compresso (o minimizzato).

Se aprite i file in questo formato non riuscirete a leggere granché per via del fatto che tutti gli spazi e gli a capo sono stati sacrificati per risparmiare byte preziosi.

Compressione librerie Javascript

Mi sono sempre chiesto come fossero riusciti a realizzare tali file.
Beh la risposta è molto semplice: ci sono programmi appositi per farlo.

Uno di questi è YUI Compressor, un tool sviluppato dal YUI Team.
YUI Compressor è stato scritto in java e il suo utilizzo è veramente immediato.

Dopo aver scaricato la distribuzione (la versione attuale è la 2.4.2) e ipotizzando di averla scompattata nella directory /opt/ , potete avviare la minimizzazione del vostro codice attraverso questo comando:

java -jar /opt/yuicompressor-2.4.2/yuicompressor-2.4.2.jar --type js vostrofilejavascript.js

Il codice minimizzato verrà stampato a video. A questo punto potete salvarlo in un file.

Se volete invece salvarlo in un file minimizzato potete redirezionare direttamente lo standard output in questo modo:

java -jar /opt/yuicompressor-2.4.2/yuicompressor-2.4.2.jar --type js vostrofilejavascript.js > vostrofilejavascript.min.js

Utilizzare il date picker jQuery UI per i nostri campi data

Postato da ROb | nella categoria Sviluppo web | martedì, 16 febbraio 2010

21

Far inserire manualmente una data nei form è una cosa ormai poco utilizzata.
E’ buona abitudine fornire agli utenti degli strumenti che aiutano nella compilazione di tali campi.

logo jQuery UI

Ogni buon framework che si rispetti mette ormai a disposizione questi oggetti (ExtJS di cui vi parlavo qualche giorno fa non è da meno).

Oggi voglio proporvi un esempio con il datepicker del framework jQuery UI, un framework javascript nato per costruire widget e oggetti di interfaccia sfruttando solamente la libreria jQuery.

In questo esempio ho isolato dalla distribuzione di jQuery UI solamente il componente datepicker (con i suoi file javascript e i suoi fogli di stile) e l’ho utilizzato di una pagina web minimale.
Le comodità di questo componente sono il multilinguismo e la possibilità di modificarne facilmente il tema rimpiazzando alcuni file, cose che lo rendono molto appetibile nel caso di siti o applicazioni internazionalizzati e in cui l’integrazione con l’aspetto grafico dell’applicazione è fondamentale.

Per ulteriori informazioni sul componente fate riferimento direttamente al sito web oppure alla pagina specifica con la demo del componente.

esempio jQuery UI Datepicker

Ecco il codice necessario per l’integrazione del componente in una pagina web:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>bits4beats - esempio jQuery UI Datepicker</title>
	 <meta name="Description" content="Utilizzare jQuery UI Datepicker come widget per la scelta della data" />

    <script language="javascript" type="text/javascript" src="jquery.min.js"></script>
	 <script type="text/javascript" src="jquery.ui.core.js"></script>
	 <script type="text/javascript" src="jquery.ui.datepicker.js"></script>
	 <!-- INCLUDERE LA SEGUENTE LINEA PER LA TRADUZIONE DEL WIDGET IN ITALIANO -->
    <script type="text/javascript" src="ui.datepicker-it.js"></script>

    <link href="jquery-ui.css" rel="stylesheet" type="text/css" />
    <!-- SCEGLIERE IL FOGLIO DI STILE DEL TEMA PREFERITO -->
    <link href="ui.datepicker.css" rel="stylesheet" type="text/css" />

 </head>
 <body>

	<div id="datepicker">
		<label>clicca sul campo per aprire il widget</label>
		<input
			name="datepicker"
			id="datepickerId"
			type="text"
			maxlength="10"
			size="10"
		/>
   </div>

	<script type="text/javascript">
		$(document).ready(function(){
			$('#datepickerId').datepicker({ dateFormat: 'dd/mm/yy' });
		});
	</script>

 </body>
</html>

Per vedere l’effetto dal vivo potete cliccare qui, con il focus all’interno del campo data si aprirà il pannello per la selezione della data.

In questo caso il componente è stato usato in lingua italiana (linkando opportunamente il codice javascript per la traduzione).

Ecco il file zip con il codice completo dell’esempio.

Utilizzare più profili Firefox in Linux

Postato da ROb | nella categoria Utilità | domenica, 14 febbraio 2010

3

Chi ha bisogno di avere a disposizione più sessioni Firefox contemporaneamente o vuole semplicemente costruire un profilo Firefox più leggero, con meno estensioni o con un tema diverso può sfruttare la comodissima funzione multiprofilo di Firefox.

Mouse black Gnome

Nel caso di una postazione Linux, per avviare in tale modalità ho dovuto costruire un piccolo script per modificare la variabile di ambiente MOZ_NO_REMOTE.

Ecco qua il mini script:

#!/bin/bash

export MOZ_NO_REMOTE=" firefox -Profilemanager"

firefox -Profilemanager

oppure è possibile usare quest’altro script (grazie Matteo per il commento integrativo!) dove $1 è il nome del profilo già creato da utilizzare.
Nel caso non venga passato nessun parametro allora viene avviato il ProfileManager.

#!/bin/bash

exec firefox --no-remote -P $1

Nel mio caso ho costruito il profilo di default con tutti i miei migliori bookmark e le mie estensioni mentre ho un altro profilo chiamato “dev” (più veloce all’avvio e nel rendering della pagina) in cui ho installato solamente le estensioni indispensabili per lo sviluppo e il debug di applicazioni web.

Schermata avvio Firefox multiprofilo

ExtJS: il framework di sviluppo Javascript per eccellenza

Postato da ROb | nella categoria Sviluppo web | venerdì, 12 febbraio 2010

2

Recentemente ho avuto il bisogno di riscrivere completamente un’applicazione web.
Penso di conoscere bene html, css e javascript ma, nonostante questo, nella scrittura di applicazioni web ho dovuto spesso risolvere gli stessi problemi, rispondere alle stesse esigenze e scrivere in diverse occasioni lo stesso codice.

ExtJS logo

Per questi motivi mi sono guardato un pochino attorno cercando una libreria Javascript che mettesse in mano dello sviluppatore un ambiente con oggetti pronti all’uso, semplici da configurare, carini da vedere e potenti allo stesso tempo.
Mi sono concentrato sulla ricerca di toolkit Javascript e non su altro perché avevo necessità di sfruttare tale libreria con differenti tecnologie server side.
Ovviamente un aspetto fondamentale di valutazione è che il toolkit funzioni con tutti i browser web più diffusi (Firefox, Safari e Chrome, Internet Explorer … IE è volutamente stato messo per ultimo).

Indubbiamente anche in questo caso il panorama non è assolutamente deludente e il mondo open source offre come al solito le sue superbe soluzioni.
I più famosi in quest’ambito sono: Dojo, Prototype, Scriptaculous, jQuery (anche se più che un toolkit è un nuovo approccio Javascript alla selezione degli oggetti) , SmartClient, ed ExtJS (anche nella sua variante Yui).

Dopo aver visto gli esempi proposti nel sito e aver fatto alcuni test ho provato a svilupparla con ExtJS.

Rotte le prime iniziali difficoltà per impostare l’ambiente con tutte le opportune dipendenze, mi sono subito accorto di avere a che fare con una libreria veramente matura, flessibile e molto performante.
Il forum della comunità è attivissimo, la documentazione (presentata anch’essa tramite un’applicazione web ExtJS) è comodissima da navigare e ben scritta, i bug sono pochi e di poco rilievo, perlomeno nella versione che ho provato e che sto ancora usando, cioè la 2.2.1 (il ramo attuale è alla major release 3.x).

Essendo una libreria già molto famosa, numerosi sono i tool di contorno alla libreria stessa. C’è chi l’ha usata per generare un template wordpress (http://extjswordpress.net/), chi l’ha sfruttata per generare un desktop virtual su web, chi ci ha scritto un software di collaborazione.

ExtJS desktop example

Lo showcase dimostrativo è veramente molto ricco e ci sono oggetti già pronti per qualsiasi situazione.
Gli widget che sto usando più di tutti sono le griglie (con la possibilità di caricare i dati in modo asincrono via JSON), i form, le finestre flottanti, i tab e gli accordion.
Con ExtJS è anche semplicissimo implementare caricamenti e callback via AJAX mettendo infatti a disposizione degli oggetti statici per l’invio e la ricezione dei dati serializzati.

Per gli amanti del Google Web Toolkit c’è anche una versione di ExtJS integrata con GWT chiamata GXT. Il suo sviluppo, pur se con qualche ritardo dovuto a una partenza successiva, sta procedendo bene e contano a breve di allineare le funzionalità ExtJS con GXT.

Dal punto di vista della licenza ExtJS ha adottato una coercizione “forte” di chi la utilizza verso l’open source basata sul principio del Quid Pro Quo.
Chi vuole utilizzare ExtJS per progetti open source è liberissimo di farlo chi invece intende utilizzarla per progetti non “open” deve acquistare una licenza commerciale.
In realtà fino alla versione 2.x la politica di licenza era leggermente diversa (LGPL) e permetteva di utilizzare la libreria anche in progetti closed source.

Aggiungere un file di swap in un sistema Linux

Postato da ROb | nella categoria Linux | giovedì, 11 febbraio 2010

3

Chip di memoria

Se avete sottodimensionato la vostra partizione di swap potrebbe essere necessario aggiungere un file a tale partizione per fornire più memoria virtuale al vostro sistema.

Ecco i semplici passi da seguire per effettuare tale operazione:

  • loggarsi al sistema come utente root
  • lanciare il comando per creare il file di swap (in questo caso il file finale sarà di 512Mb):
    dd if=/dev/zero of=/newswapfile bs=1024 count=524288
    
  • impostare tale file come area di swap:
    mkswap /newswapfile
    
  • attivare il file di swap aggiungendolo all’attuale partizione di swap:
    swapon /newswapfile
    
  • modificare il file /etc/fstab per attivare il file di swap anche all’avvio del sistema. Aggiungere le seguenti righe:
    /newswapfile swap swap defaults 0 0
    
  • verificare che il file sia correttamente stato aggiunto alla partizione di swap. In particolar modo verificare la dimensione totale della swap area usando il comando:
    free -m
    

    oppure usando il comando htop:

    htop
    

Misurare una pagina web con MeasureIt, un’utilissima estensione per Firefox

Postato da ROb | nella categoria Sviluppo web | giovedì, 11 febbraio 2010

0

Ogni professionista che si rispetti ha i suoi magici strumenti del mestiere.
Così come il falegname ha il suo caro metro sempre in tasca così ogni grafico o sviluppatore web non può non avere installato MeasureIt.

Logo MeasureIt

Lo scopo di MeasureIt è misurare le ampiezze e le altezze nelle pagine web. Grazie ad esso possiamo capire quanto è grande un elemento div oppure una tabella semplicemente attivando e trascinando il layer trasparente che lo strumento ci mette a disposizione.

L’installazione di MeasureIt avviene come per qualsiasi altra estensione di Firefox ed è disponibile direttamente dalla pagina dello sviluppatore.

L’immagine qui sotto ne dimostra l’utilizzo nell’homepage del mio blog.

MeasureIt in azione

Estensione geniale e comodissima allo stesso tempo!

Fare debugging di applicazioni web Java con Tomcat ed Eclipse

Postato da ROb | nella categoria Java, Sviluppo web | mercoledì, 10 febbraio 2010

2

Qualche anno fa ritenevo impossibile fare debugging di applicazioni web.
Mi chiedevo in particolar modo come fosse possibile raggruppare all’interno di un unico debugger la componente client side (cioè il mix di codice html+css+javascript eseguito nel browser) con la componente server side (in qualsiasi forma si presentasse: php, java, dot.net).

Eclipse, compagno di debug

Ultimamente molti framework, così come importanti application server con il loro IDE associato, sono riusciti a colmare questa mancanza ed ad offire a noi poveri sviluppatori il nostro caro e provvidenziale debugger.

In realtà in questo articolo non spiegherò come sia possibile fare debugging di entrambe le componenti (client e server) in un’unico IDE bensì mi concentrerò solamente sulla parte server, che ho sempre considerato la più spinosa.
La parte client, in realtà, dà spesso meno noie. Il suo comportamento è più facilmente intuibile e spesso è sufficiente fare delle stampe extra di codice html o qualche alert javascript per poter venire a capo dei problemi (anche se non dobbiamo dimenticare l’utilissimo Firebug in Firefox, di cui ho parlato anche ieri, che permette di fare debugging anche del Javascript lato client).

Oggi voglio parlare del debugging server side di applicazioni web per il mondo Java e in particolare della modalità fornita da Eclipse chiamata “Remote Java Application”. E’ una modalità tale per cui è possibile avviare la JVM con un demone in ascolto su una determinata porta. A questa porta, IDE opportunamente istruiti (quale ad esempio Eclipse), possono collegarsi e dialogare con la JVM stessa.
La JVM segnala all’IDE la riga in quel momento in esecuzione e riceve dall’IDE stesso dei comandi in merito all’esecuzione del codice: breakpoint, step-into, step-over, stato delle variabili, …

Per arrivare a poter debuggare la nostra JVM remota, dobbiamo essenzialmente eseguire due passi: avviare la JVM di Tomcat con degli opportuni parametri per la modalità “remote instance” e indicare al nostro IDE, per il nostro progetto da debuggare, qual è la porta della JVM a cui collegarsi.

Cominciamo con la parte di modifica dell’avvio di Tomcat:

  • scegliere una porta libera su cui mettere in ascolto la JVM di Tomcat. Per questo esempio useremo la porta 5050
  • individuare il file startup.sh all’interno della nostra distribuzione Tomcat (la versione di Tomcat di questo post è la 6, ma tale procedura è ugualmente applicabile alla versione 5.5)
  • modificare l’ultima riga di tale file in questo modo
    # vecchia riga
    # exec "$PRGDIR"/"$EXECUTABLE" start "$@"
    # nuova riga
    export JPDA_TRANSPORT=dt_socket
    export JPDA_ADDRESS=5050
    exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
    
  • controllare che, dopo aver avviato Tomcat, la JVM sia effettivamente in ascolto
    telnet localhost 5050
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    

Abbiamo terminato con le modifiche alla sequenza di avvio di Tomcat. Passiamo ora ad Eclipse.
Dopo aver scelto il progetto che vogliamo debuggare, le cui classi compilate devono essere in esecuzione all’interno di una webapp del nostro application server Tomcat, dobbiamo creare una nuova istanza di compilazione di tipo “Remote Java Application“.

  • dal menu “Run” di Eclipse scegliamo la voce: “Debug…”
  • scorriamo fino alla voce “Remote Java Application” e scegliamo “New” utilizzando il tasto destro del mouse


    Nuova istanza di debug JVM remota

  • diamo un nome alla nostra istanza di debug e modifichiamo la porta di default con la porta scelta 5050


    Modifica delle impostazioni standar, istanza remota java

  • a questo punto clicchiamo su Debug. Se tutto va bene Eclipse dovrebbe essere in grado di connettersi e dialogare con la nostro JVM in esecuzione con Tomcat

Ora viene la parte più bella!

Iniziamo a impostare dei breakpoint nei punti di codice che vogliamo controllare e facciamo sì che il flusso di esecuzione arrivi in quel punto.
Magicamente potremmo vedere tutti i nostri oggetti Java materializzarsi. Possiamo esaminarne tutte le proprietà, impostare delle espressioni di controllo, entrare e uscire dalle funzioni.

Un aspetto decisamente divertente è l’interazione con il browser. Interrompendo il flusso di esecuzione della JVM interrompiamo ovviamente anche la risposta del server verso il browser. Il cursore di attesa del nostro amato Firefox girerà finché non avremo terminato il controllo del nostro codice e lanceremo il nostro ultimo F8.

Nel caso di debug di applicazioni web AJAX tale possibilità di sviluppo facilita ulteriormente le cose. In questi casi infatti è meno banale controllare i dati restituiti dal server in quanto non compongono quasi mai una pagina html ispezionabile bensì solamente delle porzioni di codice XML o del Javascript serializzato in formato JSON.

Spero che l’articolo vi sia tornato utile; commenti e osservazioni sono sempre molto ben accetti.

L’editor per eccellenza per il mondo Windows: Notepad++

Postato da ROb | nella categoria Sviluppo web, Utilità | martedì, 9 febbraio 2010

0

Quando mi trovo in postazioni Windows XP devo spesso scontrarmi con il vetusto Notepad.

Forse nei primi anni in cui è uscito quel sistema operativo Notepad riusciva ancora a reggere il passo.
Negli ultimi anni sono nati numerosi editor assai più veloci e potenti di Notepad; trovare una valida alternativa è ormai un obbligo di qualsiasi utente.

Uno dei loghi di Notepad++

La mia alternativa preferita è Notepad++.
Notepad++ si basa su un famoso progetto, chiamato Scintilla, il cui scopo è costruire un componente editor da integrare all’interno di applicazioni.
Innanzitutto è Open Source, sotto licenza GPL, è scritto in C++ sfruttando le api win32 e non le MFC è ed ricco di interessanti funzionalità.



Sono indubbiamente da citare:

  • evidenziazione della sintassi per quasi tutti i più famosi linguaggi di markup e programmazione
  • folding: possibilità di aprire e chiudere parti di codice significative (come interi tag xml oppure il corpo di funzioni Java o Javascript)
  • autocompletamento
  • espressioni regolari sia nella ricerca che nella sostituzione di stringhe
  • multilingua e multicodifica
  • segnalibri
  • guida all’indentazione del codice
  • configurazione di stili
  • generatore ed esecutore di macro
  • selezione e funzione di copia e incolla di colonne o quadrati di testo

Schermata principale di Notepad++

Fra queste quelle che nel mio caso fanno la differenza sono il supporto per le espressioni regolari e la possibilità di registrare ed eseguire macro. Dopo aver padroneggiato tali funzioni vi sentirete praticamente in grado di fare tutto con i vostri file testuali.

Se siete particolarmente soddisfatti di Notepad++ e volete supportare il progetto lo sviluppatore accetta di buon grado delle donazioni.

L’insetto di fuoco (Firebug) invade anche Chrome!

Postato da ROb | nella categoria Sviluppo web | lunedì, 8 febbraio 2010

0

Parlare di Firebug è ormai inutile, lo conoscono tutti.

Nuovo logo Firebug

E’ invece di qualche giorno fa (esattamente il 4 febbraio) la notizia della versione 1.3 Lite di Firebug per Chrome.
La versione Lite consente agilmente di fare debugging del codice css e html della pagina web (ma non di quello Javascript) ma senza poter intervenire direttamente e modificarla al volo.

Qui sotto potete vedere lo screenshot dell’estensione appena installata e funzionante sul mio Chrome per Linux.

Firebug in azione su Chrome per Linux

Roundcube – libera webmail per le masse

Postato da ROb | nella categoria Linux, Sviluppo web, Utilità | domenica, 7 febbraio 2010

0

Questo è il motto che campeggia nell’homepage del sito di Roundcube.

Roundcube è un gradevolissimo, e a mio avviso anche molto valido, client web per la posta elettronica.
La cosa che più lo differenzia da altri applicativi open source dalle stesse funzionalità come SquirrelMail, Webmin o altri, è l’interfaccia utente che sfrutta appieno la tecnologia AJAX e che riesce ad offrire alll’utente un’esperienza di utilizzo molto piacevole.

Roundcube logo

L’installazione di Roundcube è in parte via riga di comando e in parte via web, tramite un apposito installer. E’ scritto in PHP e necessita di un database MySQL per il salvataggio delle impostazioni e delle preferenze degli utenti.

Ufficialmente ancora si trova in uno stato beta (la versione attuale è la 0.3.1) ma nell’utilizzo quotidiano non si riscontrano particolari malfunzionamenti.

Le feature più interessanti di Roundcube sono:

  • multilinguismo: le lingue supportate sono 65 (tra cui l’italiano)
  • drag-n-drop dei messaggi
  • composizione html delle email
  • rubrica integrata con funzionalità di ricerca
  • autocreazione delle utenze attraverso pattern di ricerca verso IMAP
  • gestione delle cartelle IMAP
  • possibilità di customizzazione del tema
  • gestione degli attachment

Interfaccia di Roundcube, pannello principale

La pagina principale ha un aspetto veramente ordinato e ricalca il layout tipico di un comune client di posta.
Nella parte sinistra ci sono le cartelle e nella parte destra i messaggi della cartella corrente e l’anteprima del messaggio selezionato, se attiva.

I bottoni in alto a destra attivano altri due importanti pannelli: la rubrica e le impostazioni.
Nella rubrica possiamo gestire i nostri contatti personali.
Il pannello delle impostazioni, invece, ci consente di sottoscrivere o de-sottoscrivere le cartelle IMAP della nostra mailbox, modificare il nome visualizzato associato al nostro indirizzo email e modificare le presenze di lettura e scrittura dei messaggi di posta.

Ci sono anche molti buoni propositi da parte del team di sviluppo per le prossime versioni.
Una delle cose più attese è senz’altro il pannello di amministrazione per la configurazione di Roundcube (dopo l’installazione è possibile intervenire solamente attraverso un file di configurazione), le scorciatoie da tastiera (per velocizzare l’utilizzo dell’applicazione sfruttando particolari combinazioni di tasti) e la preview degli attachment.

In bocca al lupo agli sviluppatori e un sentito grazie per il grande impegno!

Dati al sicuro con i dischi criptati da TrueCrypt

Postato da ROb | nella categoria Linux, Utilità | venerdì, 5 febbraio 2010

0

Quando abbiamo bisogno di mettere al sicuro delle password (o poche informazioni testuali) sappiamo che KeePass è il nostro amico.

Ma quando abbiamo la necessità di nascondere intere cartelle o file non possiamo più utilizzare soluzioni di questo tipo.

Logo TrueCrypt

Esistono molti programmi che effettuano la criptazione di cartelle o di interi drive. Molti sistemi operativi già nativamente supportano tale possibilità, anche se non sempre in modo facilmente applicabile (e rendendo in alcuni casi inaccessibile tutto il sistema in caso di smarrimento della password di accesso).

TrueCrypt, che uso quotidianamente da ormai molto tempo, è uno di questa miriade di programmi con la vera e fondamentale differenza di supportare tutti i sistemi operativi più diffusi, Linux, Mac e Windows, ma sopratutto di essere open source.
La versione di cui ovviamente vi parlerò è quella per Linux ma la filosofia di utilizzo del software è la stessa per tutte le piattaforme.

Le distribuzioni supportate, tramite opportuni pacchetti, sono OpenSuse ed Ubuntu, per tutte le altre ci sono i sorgenti compilabili. Da questa pagina potete fare il download dei file che vi interessano.

Al termine dell’installazione sarà sufficiente lanciare l’eseguibile truecrypt anche da riga di comando.
L’interfaccia che vi si presenterà sarà più o meno la seguente:

L'interfaccia di amministrazione di TrueCrypt

Attraverso la voce di menu: Volumes => Create New Volume… è possibile creare il nostro primo volume.
Prima di iniziare è meglio capire cosa sia un volume e le tipologie dei volumi creabili.

Un volume è essenzialmente un file criptato (grande tanto quanto la dimensione che abbiamo scelto all’atto della creazione) che risiede all’interno del nostro disco non criptato.
Questi file, che sono i nostri volumi, sono gestibili solamente da TrueCrypt che può montarli e farli diventare dispositivi rimovibili inseriti e può ovviamente smontarli.

TrueCrypt supporta volumi standard o di tipo hidden. I volumi hidden vengono creati all’interno dei volumi standard e sono gestiti da una differente password. In pratica è come se avessimo un doppio fondo nella nostra cassaforte gestito da una differente chiave.

Quando creiamo il nostro volume ci verrà chiesto il tipo di algoritmo da utilizzare per la criptazione dei dati. Alcuni di questi sono molto sicuri ma un pò più lenti durante le operazioni di lettura/scrittura, altri sono più veloci ma più facilmente attaccabili.
Oltre al tipo di algoritmo ci verrà anche chiesta una nuova password per l’accesso nonchè la dimensione da riservare al volume.

E’ importante sapere che anche i volumi hidden all’interno dei volumi standard hanno una loro dimensione che deve essere necessariamente inferiore alla dimensione del volume standard che li contiene.

Bisogna fare molta attenzione nello spazio occupato all’interno dei volumi hidden perchè erode spazio disponibile al volume standard e potrebbe compromettere il contenuto del volume standard!

Un volume TrueCrypt montato

Quando si aprirà il file criptato con la password del volume standard TrueCrypt ci monterà e farà vedere il contenuto del volume standard; con la password del volume hidden TrueCrypt ci monterà e farà vedere il contenuto del volume hidden.

Non avete più scuse per nascondere i file segreti a vostra moglie! Criptate gente, criptate.

Scambiare file in 1 secondo con Droopy

Postato da ROb | nella categoria Linux, Utilità | venerdì, 5 febbraio 2010

9

Quante volte vi sarà capitato di dover scambiare un file con un amico o un contatto online e di non riuscire a trovare al volo un sistema veloce, sicuro e immediato per farlo?
Ormai non avete più scuse… c’è Droopy.

Caricare un file in modo semplice

Ci sono molti sistemi per condivedere un file: via mail (ma bisogna almeno conoscere l’indirizzo del destinatario), via IM (ma bisogna essere amici reciproci e utilizzare uno stesso network di messaging), via condivisione di rete (ma almeno una delle due persone deve avere già disponibile una cartella in lettura o scrittura per permettere all’altro di accedere).

Droopy, che consiste di un solo semplice script in python, vuole rendere questa operazione immediata.
Ecco le 3 righe, prese dall’homepage del progetto, per far partire Droopy (considerando anche che le prime due servono solamente al primo avvio per creare la cartella dove vogliamo vengano salvati i file caricati).
Prima di eseguirle inserite lo script di Droopy all’interno della cartella ~/bin/ .

mkdir ~/uploads
cd ~/uploads
python ~/bin/droopy -m "Hi, it's me Bob. You can send me a file." -p ~/avatar.png

La mia versione, leggermente customizzata nel messaggio, nel file di avatar e nella directory di destinazione, è invece la seguente:

python droopy -m "Carica qui per favore..." -p /home/roberto/Documenti/Immagini/Linux/maledizione.jpg -d /home/roberto/Desktop/

In questo modo Droopy crea una pagina web in cui viene visualizzato il testo “Carica qui per favore…” e l’immagine “/home/roberto/Documenti/Immagini/Linux/maledizione.jpg”.

L’esecuzione dello script produce quest’output in console:

Output del mio script Droopy

Che ci ricorda che i file verranno salvati nel Desktop e che il server per il caricamento è disponibile all’indirizzo: http://localhost:8000 .

A questo punto apriamo la pagina web suggeritaci con il nostro browser e vedremo:

Pagina di caricamento di Droopy

Scegliamo un file e diamo conferma.
La console ci segnala:

localhost - - [05/Feb/2010 01:46:36] Started file transfer
localhost - - [05/Feb/2010 01:46:36] Received: Guide To Programming Magento.pdf

Il file che abbiamo caricato via web è pronto per essere usato nel nostro Desktop.

… semplicemente geniale!