Ott 21

Errori hardware al secondo in Windows Vista

Windows Vista può causare decisamente l’infarto a qualche utente un po’ più attento.

Andando in Monitoraggio Risorse, che di fatto sostituisce il Task Manager,  ci si ritrova con una voce alquanto preoccupante: “errori hardware/sec”, ovvero errori hardware al secondo.

Nulla di preoccupante se il valore di questa colonna non fosse spesso e volentieri maggiore di zero, anche in misura piuttosto rilevante.

Voglia di buttare il PC? No, al massimo di inveire contro chi ha tradotto “dump” in italiano.

Infatti, la colonna  “errori hardware/sec” corrisponde ad un mancato hit in memoria principale,un banale page fault o memory dump, ovvero il comunissimo caricamento dall’HD di informazioni non trovate in memoria RAM.

E’ un valore solitamente molto alto quando le applicazioni sono state appena caricate in memoria, oppure se si sta usando un grosso quantitativo di RAM.

Accedendo alla guida in linea di Vista possiamo leggere:

“Un errore hardware (noto anche come errore di pagina) si verifica quando la pagina dell’indirizzo al quale si fa riferimento non è più presente nella memoria fisica ed è stato aggiornato o è disponibile in un file di backup su disco. Non è un errore. Un elevato numero di errori hadware potrebbe essere la spiegazione di un tempo di risposta lento da parte di un’applicazione se è necessario leggere continuamente i dati dal disco invece che dalla memoria fisica.”

Certo che la traduzione per dump non è proprio delle più felici

Ott 18

Convertire una partizione da FAT a NTFS con Windows XP

Windows XP supporta indifferentemente sia il file system FAT32 che l’NTFS.

Il file system FAT è ancora notevolmente diffuso (soprattutto per i dispositivi di archiviazione rimovibili) anche se le prestazioni e l’affidabilità dell’NTFS sono piuttosto conclamate.

Da considerare che Windows 98 (e tutti i sistemi operativi MS precedenti) non supportano nativamente l’NTFS.

L’NTFS permette una deframmentazione più veloce, il pieno supporto alla criptazione dei dati, una maggiore sicurezza sotto Dominio.

Per convertire una partizione FAT in NTFS, senza perdere dati si può utilizzare l’applicazione Convert.exe inclusa in Windows XP.

Per accedere al tool di conversione del file system aprire il prompt dei comandi (da Start > Programmi > Accessori) e digitare:

Convert X: /FS:NTFS /V /NoSecurity

dove X: indica l’unità da sottoporre a conversione in NTFS;

/V indica di visualizzare i dettagli dell’operazione in corso;

/NoSecurity impone di non limitare l’accesso ai file convertiti in NTFS.

In seguito a tale comando, vi verrà richiesto il nome del volume (es: Win_XP).

Se l’unità disco non ha assegnato alcun nome, lasciare il campo vuoto e confermare con INVIO.

ATTENZIONE! Anche se la conversione non comporta solitamente alcuna perdita di dati è sempre consigliabile fare una copia di backup dei dati contro qualsiasi accidente.

Ott 14

Dimensione massima partizioni FAT e NTFS

Ecco un elenco delle massime dimensioni di disco utilizzabili con i file system FAT e NTFS:

FAT (FAT12)
32 MB
MS-DOS 3.0
FAT16 2 GB Compaq DOS 3.31, MS-DOS 4.0
FAT32 2 TB (Teorici)
Windows 200 – Windows XP (al max 32 GB)

I file system FAT (File Allocation Table)sembrano ormai essere destinati all’abbandono e completamente sostituiti dai file system NTFS anche se risultano tutt’ora diffusissimi su dischi esterni, penne usb e vecchie macchine.

L’NTFS ( New Technology File System)teoricamente può gestire una qualsiasi dimensione del disco, riducendo la frammentazione e soprattutto è capace di ridurre sensibilmente la probabilità di perdita dati.

Ott 14

JAVA – Listing di file ordinati per data

Per ottenere un listing di una directory di file, ordinata per data, si può usare il seguente codice:

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;

public class FileUtils{

public static void main(String args[]) throws Exception {
String cartella=”c://miacartella”);
File files[] = FileUtils.dirListByAscendingDate
(new File(cartella));
for (File file : files) {
System.out.println(file.getName() + ” ”
+ new Date(file.lastModified()));
}
System.out.println(“DIR ->”);
files = FileUtils.dirListByDescendingDate
(new File(“C:/Applications/folder”));
for (File file : files) {
System.out.println(file.getName() + “t”
+ new Date(file.lastModified()));
}

}

public static File[] dirListByAscendingDate(File folder) {
if (!folder.isDirectory()) {
return null;
}
File files[] = folder.listFiles();
Arrays.sort( files, new Comparator()
{
public int compare(final Object o1, final Object o2) {
return new Long(((File)o1).lastModified()).compareTo
(new Long(((File) o2).lastModified()));

}
});
return files;
}

public static File[] dirListByDescendingDate(File folder) {
if (!folder.isDirectory()) {
return null;
}
File files[] = folder.listFiles();
Arrays.sort( files, new Comparator()
{
public int compare(final Object o1, final Object o2) {
return new Long(((File)o2).lastModified()).compareTo
(new Long(((File) o1).lastModified()));
}
});
return files;
}
}

In realtà chi fa il lavoro “sporco” di ordinamento è il codice di Compare:

public int compare(final Object o1, final Object o2) {
return new Long(((File)o1).lastModified()).compareTo
(new Long(((File) o2).lastModified()));

che può essere personalizzato all’occorrenza su qualsiasi campo di proprietà dell’oggetto File.

Ott 10

JAVA – Convertire da String a CLOB

I database Oracle usano il tipo CLOB per la memorizzazione di testi estremamente lunghi (superiori ai 4000 caratteri nella versione 10), la memorizzazione di una stringa Java in questi campi non è possibile direttamente e richiede dunque una conversione.

Di seguito il codice per la conversione:

public static CLOB getCLOB( String clobData )
{
try{
return getCLOB(createConnection(), clobData);
}catch ( Exception exp ) {
//TODO: Stampa dell’errore

return null;
}
}

public static CLOB getCLOB(Connection connection, String clobData )
throws Exception {
CLOB tempClob = null;

try {
// crea un nuovo CLOB temporaneo
tempClob = CLOB.createTemporary(connection, true, CLOB.DURATION_SESSION );

// Aple il CLOB temporaneo in modalità read/write per abilitarne la scirttura
tempClob.open( CLOB.MODE_READWRITE );
Writer tempClobWriter = tempClob.getCharacterOutputStream( );
tempClobWriter.write( clobData );

tempClobWriter.flush( );

//Chiude lo stream
tempClobWriter.close( );

// Chiude il CLOB temporaneo
tempClob.close( );

} catch ( Exception exp ) {
// Rilascia l’oggetto CLOB
tempClob.freeTemporary( );
//TODO
}

//Restituisce il clob elaborato

return tempClob;
}