L'informatico di Schrödinger

cat
4Apr/11Off

Parsare File di grandi dimensioni in Java

Non è la prima volta che mi capita di dover parsare un file di oltre 800MB (leggasi l'archivio in xml di dblp).

L'unico problema che puntualmente tutte le volte si ripresenta (dovuto, ovviamente alla mia dimenticanza..) è descritto dal seguente, ed eloquentissimo, messaggio di errore:

**Parsing Fatal Error**

Message: The parser has encountered more than "64,000" entity expansions in this document; this is the limit imposed by the application.

La soluzione per ovviare all'inconveniente è impostare la proprietà DentityExpansionLimit della  JVM ad un valore più elevato della soglia base. Nello specifico:

 

1
java -DentityExpansionLimit=valore_desiderato mio_programma

Sono accorgimenti banali ma segnarseli fa sempre comodo..

Il limite imposto (introdotto a partire in Java SE 5) è dovuto alla prevensione di quelli che sono noti come "Entity Expansion Attacks".

Tagged as: , , , No Comments
28Jan/11Off

Java: Programmazione ad Oggetti (Parte 2: Static)

In questo articolo riprendiamo da dove ci eravamo lasciati l'ultima volta e arricchiamo di qualche nuovo concetto le nostre conoscenze sulla programmazione ad oggetti in Java.

Abbiamo già visto come definire una classe, istanziare un oggetto della stessa, e come manipolarlo tramite i suoi metodi di istanza: adesso introdurremo il concetto di metodi e variabili di classe.

Click to continue reading "Java: Programmazione ad Oggetti (Parte 2: Static)"

12Dec/10Off

Cytoscape: uno strumento per l’analisi visuale di grafi

Da qualche giorno mi ritrovo a lavorare con Cytoscape a causa della (o meglio "grazie alla") Tesi.
Dopo aver raccolto dati, costruito varie reti*, programmato una libreria per multigrafi, relativi predittori e strumenti di analisi dei risultati è giunto il momento di ottenere anche alcune metriche dei grafi studiati: ed è qui che entra in gioco Cytoscape!

Questo programma, rilasciato sotto licenza GPL, nasce originariamente per visualizzare le reti di interazione molecolare. Si tratta quindi di un software nato nell'ambito della Bioinformatica che, grazie a numerosi plugin, può estendere le sue funzionalità anche all'analisi di qualsiasi tipo di rete (comprese le reti sociali ovviamente).

La versione corrente è la 2.8: il progetto, inizialmente realizzato dall'Institute for System Biology di Seattle, è attualmente sviluppato da un consorzio di sviluppatori opensource e numerosi plugin sono rilasciati sia dagli sviluppatori che dalla comunità degli utenti.

Ovviamente anche io negli ultimi 2 giorni mi sono cimentato nel produrre un mio primo plugin (un implementazione grafica dei predittori prodotti per il mio lavoro di Tesi) che in futuro verrà rilasciato: molto probabilmente, se troverò il tempo, nei prossimi giorni pubblicherò anche qualche piccolo howto per chi fosse interessato ad iniziare a familiarizzare con le API offerte agli sviluppatori..

Il linguaggio in cui è sviluppato? Java ovviamente.. ^_^

* Delle reti che ho costruito vi farò una panoramica un altra volta.. :P

Enhanced by Zemanta
7Dec/10Off

Java: Programmazione ad Oggetti (Parte 1)

Dopo i 4 post introduttivi siamo giunti a dover affrontare quello che senza remore è possibile definire l'argomento "chiave" della nostra trattazione.

In questo articolo riprenderemo i concetti visti, per ora solo a livello teorico, relativi alla programmazione ad oggetti e cercheremo di dargli una sostanza tramite un semplice esempio.

Ovviamente l'argomento è molto esteso e per questo verrà spezzato su più articoli in modo da potersi concentrare di volta in volta su pochi essenziali dettagli.

Click to continue reading "Java: Programmazione ad Oggetti (Parte 1)"

16Nov/10Off

Java: array, stringhe e controllo del flusso

THIS IS JAVA!
Image by puerexmachina via Flickr

Nel post precedente abbiamo introdotto i costrutti di controllo del flusso, ci siamo soffermati brevemente su una prima regola - basilare - di scoping ed abbiamo ripreso il concetto di tipizzazione.

Adesso cercheremo di mettere insieme quanto visto sino ad ora in un esempio: fatto ciò introdurremo il concetto di array e le stringhe.

Nella prossima puntata proveremo a scrivere la nostra prima classe e introdurremo le basi della programmazione Object Oriented.

Click to continue reading "Java: array, stringhe e controllo del flusso"