Pulire codice HTML eccetto alcuni tag in Java sfruttando Jsoup

Postato da ROb | nella categoria Java, Sviluppo web | venerdì, 24 settembre 2010

4

Abbiamo già parlato di Jsoup in questo precedente post.
In due parole Jsoup è una potente libreria di parsing html/xml che permette di leggere e manipolare facilmente stringhe e porzioni anche grandi di codice html/xml.

Oggi voglio farvi vedere come possiamo sfruttarla per pulire del codice html (proveniente ad esempio dal campo di un web form) mantenendo solamente i tag che vogliamo.

Questa opzione è infatti molto utile nel caso in cui si voglia permettere agli utenti di arricchire il dato con la formattazione classica dei testi: bold, italico, … senza però rischiare di esporci al pericoloso XSS attack che consiste nell’inserire codice Javascript malevolo che punta verso qualche altro sito.

Con poche righe di codice Jsoup ci permette di definire la nostro lista di tag partendo da alcuni set predefiniti.

        ...
        String unsafe = "<p><a href='http://www.bits4beats.com/' onclick='stealCookies()'>Benvenuto <b>Roberto Rossi</b></a> lo so che che sei di Macerata! <br/>... sei proprio un <i>impiastro</i>!</p>";

		Whitelist myWL = Whitelist.simpleText();
		myWL.addTags("br", "hr");

		String safe = Jsoup.clean(unsafe, myWL);
		System.out.println("stringa sicura: " + safe);
        ...

Se lo eseguiamo otterremo la seguente stringa:

stringa sicura: Benvenuto <b>Roberto Rossi</b> lo sei che sei di Macerata! <br /> sei proprio un <i>impiastro</i>!

In pratica abbiamo detto a Jsoup di partire dalla lista accettata simpleText() che contiene i tag essenziali della formattazione a cui abbiamo aggiunto il tag br e il tag hr.

Java: le variabili di ambiente in un oggetto Properties

Postato da ROb | nella categoria Java, Sviluppo web | giovedì, 16 settembre 2010

0

Ecco come è possibile ottenere in un oggetto di tipo Properties contenente le variabili di ambiente della nostra Linux box.

       /**
	 * Legge le variabili di ambiente e popola un oggetto di tipo Properties
	 */
	public static Properties getEnvironment() throws java.io.IOException {
	    Properties env = new Properties();
	    env.load(Runtime.getRuntime().exec("env").getInputStream());
	    return env;
	}

A questo punto con il seguente codice possiamo conoscere, ad esempio, il valore della variabile LANG che determina la codifica dei file.

       ...
       Properties env = Utils.getEnvironment();
       String lang = (String) env.get("LANG");
       ...

Monitorare file creati, modificati e cancellati in una directory

Postato da ROb | nella categoria Linux, Utilità | martedì, 14 settembre 2010

0

Qualche volta può tornarci utile conoscere con esattezza tutti i file che vengono creati, modificati e cancellati in una specifica cartella.

Un modo semplice per farlo è sfruttando il comodissimo pacchetto inotify-tools che include al suo interno il comando inotitywait.

Il seguente script si mette in attesa e segnala in output gli eventi accaduti per la directory specificata:

#!/bin/bash

directory=$1

inotifywait -q -m --format '%f %e' -e modify -e move -e create -e delete ${directory} | while read line

do
	echo "doing something with: $line";

	# for example:
	# java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
done

Può essere invocato in questo modo, passando come primo e unico parametro la directory da monitorare:

./inotify.sh ~/Desktop/download/

ed emette ouput di questo tipo:

doing something with: Stack Overflow_screenshot.png MOVED_FROM
doing something with: printecdisplay.pdf DELETE
doing something with: ecommerce_03.html CREATE
doing something with: ecommerce_03.html MODIFY
doing something with: avatar_908.png CREATE
doing something with: avatar_908.png MODIFY

Ovviamente il tutto può essere modificato a proprio piacimento per eseguire operazione o avere notifiche via mail (o qualsiasi altra cosa creativa vi venga in mente).

Una comunità di programmatori per programmatori: StackOverflow

Postato da ROb | nella categoria Java, Sviluppo web, Varie | domenica, 12 settembre 2010

2

Quando avevo bisogno di informazioni tecniche e mi affidavo a Google per le mie care ricerche, spesso capitavo in un sito decisamente simpatico dove trovavo quasi sempre le risposte alle mie domande.

Sinceramente non ho mai approfondito la natura del sito, né tantomeno quale fossero gli argomenti prelaventi. Mi limitavo a provare le soluzioni proposte e se funzionavano me ne andavo per sempre dal sito.

Qualche giorno fa, mosso da uno strano spirito di curiosità (non è vero ce l’ho sempre solo che spesso è soffocato dalla voglia di concludere le attività) mi sono soffermato a studiarlo un pò.

Il sito si chiama StackOverflow, un nome decisamente per programmatori, e in realtà unisce un gruppo numerosissimo di sviluppatori in tutto il mondo.
Il suo funzionamento è di una banalità imbarazzante ma forse è anche il motivo del suo successo. Se hai qualche dubbio, problema, richiesta, fai prima una ricerca nel sito e se non trovi niente scrivilo direttamente su StackOverflow.
Troverai sicuramente qualcuno che ha già avuto il tuo stesso dubbio oppure ha già risolto il tuo stesso problema. Se così non fosse magari troverai allora qualcuno disposto ad aiutarti e “perdere” un pò del suo tempo prezioso per rispondere in modo efficace alla tua domanda.

StackOverflow è un sito di programmatori per programmatori. Chiunque comunque può accedere al sito, non sono richiesti particolari prerequisiti, e chiunque può aiutare o rispondere.
In realtà non è sempre così, nel senso che il sistema di StackOverflow è autopremiante e automoderato.
Rispondendo, commentando e risolvendo le domande ogni iscritto riceve dei punti che gli permettono oltre che di guadagnare reputazione e stima dagli altri anche di acquisire facoltà operative.
Non tutti cioè possono fare tutto. Ad esempio chi ha un punteggio pari a 0 non può inserire più di 2 link in una risposta, probabilmente per allontanare gli spammer o chi vuole fare solamente pubblicità.

Se avete voglia di diventare dei guru di StackOverflow, se avete delle forti spinte filantropiche oppure se semplicemente avete bisogno di aiuto in uno dei moltissimi argomenti trattati, di programmazione e non solo, rivolgetevi allora a StackOverflow, iscrivetevi e partecipate a questa grandissima community.

Per chi mi dovesse cercare, io sono impiastro e, come potete vedere, il mio punteggio è ancora veramente molto basso.

Qui sotto trovate il codice javascript che potete inserire all’interno del vostro sito per segnalare la vostra situazione StackOverflow. Questo è il mio.



Firefox in modalità provvisoria

Postato da ROb | nella categoria Informatica in generale, Sviluppo web, Utilità | venerdì, 10 settembre 2010

0

Qualche giorno fa mi è capitato di dover disabilitare un plugin nel mio profilo Firefox perché in conflitto con un altro plugin.

modalità provvisoria

Il problema è che non riuscivo ad accedere alla maschera dei plugin aggiuntivi in quanto il Javascript Firefox che visualizza tale pagina rimaneva bloccato.

Cercando qua e là ho scovato il modo per disattivare i plugin, entrando in modalità provvisoria in Firefox.
Per farlo è sufficiente chiuderlo e riaprirlo con questo comando:

firefox -safe-mode

I plugin vengono tutti disattivati e possiamo quindi scegliere quale bloccare e quale disinstallare definitivamente.

Comodo no? Come al solito gli sviluppatori Mozilla hanno pensato proprio a tutto.

Formattazione di un disco con il file system type NTFS

Postato da ROb | nella categoria Linux | giovedì, 9 settembre 2010

0

Mi è capitato qualche giorno fa di dover formattare un disco da 2,5 pollici di un vecchio portatile con il file system NTFS per poter accedervi senza problemi da PC Windows e Linux.

Ovviamente volevo fare il tutto dalla mia Linux station e non da Windows; ecco il motivo di questo post.
Ebbene per farlo mi ci sono voluti alcuni passi e la cosa, per me, non è stata banalissima.

La seguente procedura è stata eseguita nella mia Ubuntu 8.04 ma è applicabilissima anche per tutte le altre distribuzioni o versioni.
Si suppone che il vostro disco sia riconosciuto con il seguente path /dev/sdb .

  • installazione dei pacchetti ntfsprogs e gparted con il solito comando: sudo apt-get install ntfsprogs gparted (le utility di ntfsprogs sono necessarie a gparted per permettergli di formattare in formato ntfs la partizione creata).
  • avvio del programma gparted per la creazione della partizione e per la sua successiva formattazione in formato ntfs.
    Selezioniamo in alto a destra il disco da partizionare/formattare. Se ci sono delle partizioni esistenti che dobbiamo cancellare, le selezioniamo ad una ad una e con il tasto destro le cancelliamo.
    Quando lo spazio del disco diventa tutto non partizionato allora possiamo procedere alla creazione della nostra partizione ntfs.



    Con il tasto destro sullo spazio disponibile scegliamo a questo punto crea partizione e come Filesystem “ntfs” (abilitato grazie a ntfsprogs).

    Alla fine bisogna confermare le operazioni tramite il tasto “Apply”.

  • invocazione del comando sudo ntfslabel /dev/sdb1 per etichettare il disco in modo tale da distinguerlo facilmente dagli altri dischi rimovibili disponibili.

A questo punto il disco dovrebbe essere disponibile per il mount su Linux e Windows con il nome dell’etichetta che abbiamo scelto.