
Ragazzi, una chicca che riguarda il mondo dello sviluppo di codice. Forse sarò arrivato tardi ma come dice il detto… non è mai troppo tardi per imparare. Krugle, di facile utilizzo. Si tratta di un motore di ricerca formulato ad hoc per sviluppatori di codice. Krugle permette di effettuare ricerche di codice rispetto al linguaggio (C/C++, Java, Awk, IDL, Modula,…e molti altri) e rispetto all’area (commenti, documentazione, codice sorgente, definizione di funzioni, chiamata di funzioni, definizione di classi,…).Fa davvero paura!! In più per ogni file trovato specifica anche la licenza con cui questo file è rilasciato. Permette anche di cercare articoli tecnici e progetti interi. Inoltre, nel sito di krugle.org, viene data la possibilità di scaricare il plugin per Eclipse funzionante come client. Comodo no? Tutti gli sviluppatori dovrebbero averlo tra i loro segnalibri o integrato nell’IDE Eclipse. Nel mio lavoro di tirocinio, in questa fase iniziale, mi è nacessario ricercare un po’ di codice open source. Beh, Krugle mi sembra proprio la soluzione ottimale. Proverò e vediamo se lo sarà.
Krugle – alla ricerca del codice perduto
2 11 2008Commenti : Lascia un commento »
Tag: c, code source, development, google, html, java, javascript, krugle, matlab, motore di ricerca, php, program, programming, project, prolog, ricerca codice, xml
Categorie : Informatica, news
Meglio Windows o Linux?
19 09 2008Tempo fa scrissi un articolo che parlava del sistema operativo Ubuntu (Linux), ricordate? . Si metteva in luce la necessità, per noi informatici, di venire a conoscenza di quelle che sono le differenze tra Windows e Linux. Si cercava di dare un significato ai tanti luoghi comuni e frasi fatte espresse dalla maggior parte degli utenti, del tipo : “Ubuntu e meglio di Windows” , “Ubuntu è più stabile” , “Windows si blocca sempre”, ecc.. Si era detto in quell’articolo che avrei aperto uno spazio in questo blog appunto per parlare di informatica, iniziando appunto dal nostro dilemma : E’ meglio WINDOWS o LINUX?
Bene io e il mio gruppo di colleghi ci siamo posti questa domanda e siamo arrivati a delle conclusioni.
Non è stato un lavoro per niente facile. Il lavoro vero e proprio di test sui due sistemi operativi è stato preceduto da un’approfondito studio teorico che marchasse le principali caratteristiche di ciascun sistema. Naturalmente abbiamo tenuto sempre in considerazione ed approfondito quelli che sono i concetti di base che fanno parte della conoscenza del funzionamento di un sistema operativo tipo: Kernel, scheduling di processi e thread, meccanismi di interrupt, gestione della memoria e studio dei sistemi multi processore SMP.
Ovviamente affermare che un sistema operativo è meglio di un altro, significa rendersi un po’ conto di come tale sistema riesca a gestire ed ottimizzare i suoi processi in esecuzione sfruttando al massimo e al meglio le proprie risorse e conseguentemente riducendo notevolemente i tempi di esecuzione degli stessi. Ci si rende conto che il fine ultimo di un ottimale utilizzo delle risorse riguarda una minore attesa da parte di un qualsiasi utente che magari si trova davanti ad un monitor e che deve attendere del tempo per avere a sua disposizione la macchina prima che la stessa completi di eseguire un programma. Quindi si capisce che se il sistema operativo è lento l’utente vedrà la macchina lenta o indisponibile. E’ per questo che spesso siamo indotti ad affemare che windows è meglio di linux o viceversa.
Per verificare effettivamente le prestazioni dei sistemi operativi analizzati, abbiamo pensato di eseguire dei test di benchmark per poter confrontare in termini non solo teorici i due sistemi. Questi test ci hanno, infatti, permesso di confrontare i tempi di esecuzione di varie applicazioni. I tempi osservati sono stati raccolti, analizzati e studiati per poterne trarre delle conclusioni finali per quel che riguarda le prestazioni di scheduling, relative ai due sistemi nell’esecuzione di processi multi-thread su un’architettura multi processore. La scelta dei programmi utilizzati per il test è ricaduta su quelle applicazioni maggiormente utilizzate in un ambiente desktop/workstation, e che ci desse, inoltre, la possibilità di eseguire lo stesso software su entrambi i sistemi operativi. Per eseguire questi test abbiamo ritenuto opportuno utilizzare una macchina vergine, con nessun sistema preinstallato, in modo da poter effettuare i test su un sistema operativo che non avesse applicazioni installate se non i driver delle periferiche. Il vantaggio di questo approccio è che, in questo modo, non essendo presenti applicazioni esterne al sistema stesso, eccetto gli applicativi di benchmark, si sono ridotti al minimo i processi/threads in esecuzione sulla macchina.
Si è proceduto secondo i seguenti punti:
- Formattazione della macchina
- Installazione di Windows XP PRO-SP2 (esclusi aggiornamenti)
- Installazione Ubuntu 8.04 e ricompilazione del Kernel ottimizzato per un sistema dual core
- Installazione e configurazione dei software
- Creazione degli script di benchmark
- Esecuzione dei test e raccolta dei risultati
- Analisi ed interpretazione dei dati raccolti.
I test sono stai effettuati sull’esecuzione dei seguanti applicativi: Mencoder, Lame, FAAC, Rar, OpenSSL, Blender.
Ecco a voi i risultati dei nostri test:
Applicazione multithread nativa. Con un solo thread l’applicazione utilizza appieno un solo core. Con 2 thread si nota un dimezzamento dei tempi di esecuzione e pieno utilizzo dei due core. Con 4 thread Linux risente molto dell’utilizzo dei context switch
Configurazione multiprocesso, single thread. Nel caso di quattro processi di codifica contemporanei è interessante sottolineare come, mentre con linux i processi di codifica ottengono tempi di completamento pressoché identici all’interno della singola prova, con windows invece si possono notare tempi di completamento dei singoli processi molto differenti tra loro. Linux in questo conferma ulteriormente in questo test una migliore esecuzione parallela dei processi.
RAR
Differentemente dai test precedenti si nota che con due processi concorrenti il tempo registrato non è stato direttamente proporzionale al caso di un solo processo, ma superiore del 30%. Con 2 processi contemposanei la richiesta di risorse di calcolo veniva ad essere superiore a quella disponibile, causando un umento dei context switch e della prelazione tra processi.
Rendering video, BLENDER:
Blender è un’applicazione multithread. Si nota una riduzione notevole dei tempi di completamento sfruttando l’utilizzo di più thread. Con 8 thread le prestazioni migliore ulteriormente rispetto al primo caso. Si nota che Windows ha una risposta migliore. Il motivo è imputabile all’utilizzo dei driver video, proprietari in Windows e open source in Linux.
Crittografia, OPENSSL- DES3
Il test di crittografia evidenzia una migliore prestazione del file system EXT3 di Linux. L’NTFS di Windows subisce un calo di prestazioni proporzionale alla quantità di dati scritti fino a raggiungere una perdita del 41 % rispetto a EXT3 di Linux.
Crittografia, OPENSSL, MD5:
A causa della natura dell’applicazione, CPU intensive e diskless, si nota una riduzione dei tempi di completamento tra le prove eseguite in successione.
Conclusioni. Beh analizzando i risultati si nota che Windows mostra una migliore gestione delle applicazioni multithread come MPlayer e Blender.
Linux mostra invece un’ottimizzazione migliore dello scheduling per applicazioni CPU intensive ed una miglior gestione della cache per il riutilizzo delle istruzioni.
Per Windows si è notato un effettivo aumento di priorità data alle finestre in primo piano.
Per Linux si è notata una notevole stabilità dei tempi di completamento tra le singole prove. GLi altri processi nel sistema interferiscono in maniera non rilevante.
C’è da sottolineare però il fatto che, in generale, l’attenzione non è ricaduta tanto su quale dei due sistemi sia il “migliore” ma su come essi si distinguono nell’affrontare i problemi relativi alla gestione di applicativi Multi-thread e su architetture Multi-Core.
COMPARAZIONE DEI TEST:
RISULTATO FINALE: WINDOWS 10 – LINUX 13
Che ne dite? E’ come vi aspettavate?
ps. Tutto il lavoro di studio e di test è stato realizzato da me Daniele (guana), Oscar, Lorenzo e Gianluca.
Ci sentiamo al prossimo articolo.
ciao,
guana.
Commenti : 7 Commenti »
Tag: benchmark, coma, des3, faac, irq, irql, kernel, lame, Linux, md5, mencoder, monoprocessori, mplayer, multiprocessori, numa, openSSl, processi, scheduling, Sistema operativo, SMP, test, test di benchmark, thread, ubuntu, Ubuntu 8.04, windows, windows xp
Categorie : Informatica, my life
Compilare il kernel di ubuntu
4 08 2008Bene eccoci quà con il primo post dedicato a linux. Nello scorso post avevo scritto che potrebbe essere necessario, per chi utilizza linux, rendersi conto del perchè lo si sta utilizzando. Certo moltissimi (gli smanettoni) , avendolo installato nel proprio pc, già conoscono perfettamente quali sono i vantaggi ma sono sicuro che altri, sono soddisfatti di averlo installato ma non sanno realmente per quale motivo.
Qualche giorno fa ho eseguito tutta la procedura per l’installazione di ubuntu 8.04, ultima versione uscita lo scorso aprile. Bene, installazione riuscita perfettamente. Ho quindi iniziato ad installare i primi pacchetti necessari. Poi mi faccio un po’ di giri nei vari forum di ubuntu e mi accorgo che in tantissimi consigliano di ricompilare il kernel. “Ricompilare il kernel ??”
…mmmm
Bene, avendo studiato il corso di sistemi operativi, un po’ sapevo di che cosa si stava parlando, ma adesso praticamente…come si fa?? Praticamente, appunto, che cosa significa ricompilare il kernel? Perchè questa esigenza di farlo?? Che cosa è il kernel?
Prima di tutto c’è da sapere che il kernel (nucleo) è un programma che si occupa di dare le funzionalità di base per l’utilizzo di un computer come:
gestione della CPU (o processore), gestione della memoria (RAM e non solo), gestione della comunicazione con le periferiche ( I/O – Input/Output), può fornire il multi-tasking schedulazione dei processi, fornisce dei modi per far comunicare i programmi, attua dei meccanismi di sicurezza, ha una serie di servizi.. ( system calls – chiamate di sistema ).
Bene tutte queste operazioni le fa il kernel. In sintesi quindi i programmi di uso comune, a livello utente, utilizzano le funzioni fornite dal kernel in modo da non dover agire direttamente sulle risorse hardware ed operazioni di più basso livello che abbiamo visto prima.
A questo punto, dopo le prime nozioni teoriche, possiamo quindi iniziare capirci qualcosa e affermare che forse linux è un buon sistema operativo perchè permette la compilazione del kernel in modo poterlo adattare alle proprie esigenze.
Voi vi chiederete a che cosa puo’ servire compilare il kernel? Prima di tutto rende piu’ snello il sistema. Volete caricare tutti i driver o solo quelli che vi servono? E poi permette di sapere esattamente cosa abbiamo caricato nel sistema eliminando software non necessario che occuperebbe solo spazio inutile e rallenterebbe l’esecuzione di tantissimi programmi.
Ricompilare il kernel da grandi vantaggi in termini di prestazioni quindi ma è un arma a doppio taglio : devi sapere bene quello che fai e quello che abiliti/disabiliti.
Prossimamente inizierò a raccogliere informazioni utili per una migliore compilazione del kernel cercando di non commettere errori. Nel frattempo chi volesse commentare questo post dandomi consigli utili è ben accetto.
ciao,
guana.
Commenti : Lascia un commento »
Tag: 2.6.24-19-generic, compilare, compilare kernel, cpu, kernel ibrido, kernel monolitico, Linux, multitasking, processi, ram, scheduling, ubuntu, windows
Categorie : Informatica
La svolta: linux ubuntu
4 08 2008Ragazzi è da un po’ di tempo che non scrivo nel blog. In questo periodo sono stato un pochino impegnato..ma adesso recuperiamo subito subito.
Oggi ho intenzione di aprire un nuovo capitolo a questo blog. Mi rivolgo a quella ristrettissima schiera di persone che magari, qualche volta, presi da una noia mortale, sull’orlo del suicidio, non sanno altro che fare che venire a visitare questo il mio sito. Magari leggendo i miei articoli si annoieranno ancora di più. Non voglio essere responsabile delle vostre morti suicide…. ma pazienza, io mi diverto lo stesso a scrivere post.
Avrete notato che gli argomenti principali del sito riguardano principalmente la politica e sport (metodo BIIO in particolar modo). Da oggi ho deciso di parlare un po’ più spesso anche di tutto ciò che riguarda il mondo di linux ovvero di Ubuntu. Da notare che in questo momento, mentre scrivo questo post, sto utilizzando appunto ubuntu 8.04
.
Molto spesso, soprattutto in ambito universitario, si sente parlare di linux o meglio di Ubuntu: “E’ meglio avere ubuntu che Windows !!”…..”Windows è una merda !!”……”Ubuntu è più stabile” ….”.Windows si blocca sempre”. Quante volte avrete sentito e risentito queste affermazioni???? Quasi sempre riescono a convencerci; ci precipitiamo, quindi, a scaricare l’ultima versione di ubuntu da internet…non sapendo veramente perchè lo stiamo facendo. Diciamo “Sì è meglio di Linux..” ma perchè? Come possiamo spiegarlo?? Ci fidiamo del “senito dire” ?. Beh, secondo me, un informatico che si rispetti non può convincersi così facilmente delle voci di corridoio senza prima conoscere, sperimentare e provare.
Bene, ho deciso quindi di aprire questo nuovo capitolo al blog appunto perchè, anche io ho bisogno di capire e studiare un po’ insieme a a voi, pochissimi lettori suicidi
quali sono veramente i vantaggi di questo sistema opertaivo rispetto al famosissimo Windows e capire se veramente esistono. Quindi a presto con un nuovo post ubuntuniano.
ciao,
guana.
Commenti : Lascia un commento »
Tag: compilare kernel, Informatica, kernel, kernel monolitico, Linux, microkernel, ubuntu, Ubuntu 8.04, windows, windows xp
Categorie : Informatica
Ubuntu…una necessità
30 03 2008Linux para seres humanos
Una settimana fa mi si è “ngrippato” in maniera definitiva e irreversibile Windows Xp o meglio “WinZoz”, direi.
Ad un primo momento ho cercato di risolvere il problema eseguendo una bella scansione antivirus ma niente, problemi ancora irrisolti. Ho riavviato il pc e scopro inoltre che tutti i file “.exe” di tutti i programmi installati non erano più associati ai relativi programmi “link inesistente”…bene!! impossibile eseguire qualsiasi applicazione, che bello!!
Cercare di risolvere il problema, magari riformattando e riinstallare windows non avevo assolutamente voglia, anche perchè non ho molto tempo da perdere in questo periodo. Ho pensato, quale può essere la migliore soluzione per riavere sottomano un computer? La soluzione? ….Ubuntu !!
Eh si ragazzi….sia ringraziato il virus di Windows. Ho deciso di dare una svolta definitiva con Ubuntu.
Tempo fa avevo creato una partizione nell’HD per installarlo ma lo avevo lasciato lì, nei meandri del mio HD ad arrugginirsi. Beh, adesso è proprio arrivato il momento di utilizzarlo appieno. Ora stò solo aspettando la nuova versione che esce adesso ad aprile per poterlo installare definitivamente e togliere di mezzo windows.
Basta con il monopolio Microsoft e il solito capitalismo
ciao
guana.
Commenti : 12 Commenti »
Categorie : Informatica, my life
La ballata del programmatore
25 03 2008Il mestiere del programmatore è spesso infimo, cattivo, duro. Tanto che un “discendente artistico” di De Andrè vi ha dedicato una ballata (cliccate sopra questo link).
tra le sue braccia un manuale
sognando il mare tropicale
con un progetto inconsistente
delle richieste da far paura
“prima di ieri perché ho premura”
con le specifiche più strane
“io voglio tutto e pago niente
ho fretta sono un committente”
un video l’unica sua vista
dall’alba grigia fino a sera
incatenato alla tastiera
e trascurando cibo e sesso
riuscì un bel giorno a consegnare
una release preliminareE si sentiva ormai contento
ma fu sollievo di un momento
già richiamava quel cliente
“qui non funziona un accidente”Ricominciò il programmatore
a faticar per ore ed ore
sopra un problema assai intricato
nascosto dentro ad un listatoVenne di nuovo il committente
disse “così è meglio che niente
è tuttavia per me importante
fare una piccola variante”Ma all’ombra dell’ultimo sole
dormiva già il programmatore
tra le sue braccia un manuale
sognando il mare tropicale
Erix
Tutto ciò mi ricorda qualcosa di simile………:-|
Ecco il mare tropicale che sogno io quando sono davanti al computer
guana.
Commenti : Lascia un commento »
Categorie : Informatica, Poesia, life, music, my life
Le leggi della fisica con PHUN
5 03 2008
Tutte le leggi della fisica vengono riassunte e realizzate in questo progetto freeware dello studente svedese Emil Ernerfeldt. Attualmente è disponibile per Windows e Linux e probabilmente, leggendo sul sito, presto anche per MacOs.
Phun è un eccezionale simulatore di fisica 2D, visto in chiave “giocosa”. Il video mostra tutte le potenzialità del progetto. E’ possibile disegnare forme irregolari, cerchi, rettangoli da spostare col mouse, connettere elementi tra di loro e fissare oggetti nello spazio. Un bellissimo effetto, “liquefy”, consente di trasformare un oggetto in liquido oppure il valore “density” permette di definire la densità dell’oggetto, rendendolo più o meno pesante. Queste solo un paio delle opzioni del software dall’interfaccia molto intuitiva.
Commenti : 2 Commenti »
Categorie : Informatica
regular expression in java
8 02 2008
Ultimanenteme lavorando al mio progetto in java, sono venuto a conoscenza delle regular expression, uno strumento davvero utile e molto utilizzato da me in precedenza sottovalutato. Ma cosa sono le regular expressions?
Le Regular Expressions o Espressioni Regolari, sono un modo di descrivere un insieme di stringhe con caratteristiche comuni condivise tra di loro. Possone essere utilizzate come strumento di ricerca, modifica o manipolazione di testi o di dati. E’ necessario imparare una sintassi specifica per creare Espressioni Regolari che va oltre la sitassi di Java. Le Espressioni Regolari possono essere semplici o complesse, ma l’importante è capire la base sulla quale si fondano, che risulterà comune a tutte quante anche le più complesse.
La sintassi delle Espressioni Regolari è supportata dalla API java.util.regex . Esistono diverse sintassi per le Espressioni Regolari: grep, Perl, Tcl, Python, PHP, and awk. La sintassi della API java.util.regex è molto simile a quella del Perl.
Il package java.util.regex è composto da tre classi: Pattern, Matcher, e PatternSyntaxException.
caratteri principali da utilizzare per codificare una espressione regolare sono quelli riportati qui sotto. Per ulteriori caratteri visitare i link correlati.
Ecco una semplice classe per far conoscenza con le espressioni regolari.
import java.util.regex.*;
public class BasicMatch {
public static void main(String[] args) {
// Compila l’espressioe regolare
String patternStr = “b”;
Pattern pattern = Pattern.compile(patternStr);
// Determina se il pattern esiste in input
CharSequence inputStr = “a b c b”;
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find(); // true
// Crea la stringa di match
String match = matcher.group(); // b
// Recupera gli indici dove compare la sringa di match
int start = matcher.start(); // 2
int end = matcher.end(); // 3
// la fine è l’indice dell’ultimo carattere trovato + 1
// Cerca la ricorrenza successiva
matchFound = matcher.find(); // true
}
}
| Caratteri | |
|---|---|
| x | Il carattere x |
| \\ | Il carattere backslash |
| \uhhhh | Il carattere con valore esadecimale 0xhhhh |
| \t | Il carattere Tab ('\u0009') |
| \n | Il carattere a capo (line feed) ('\u000A') |
| \r | Il carattere di carriage-return ('\u000D') |
| \f | Il carattere di form-feed ('\u000C') |
| \a | Il carattere alert (bell) ('\u0007') |
| \e | Il carattere escape ('\u001B') |
| Classi di caratteri | |
|---|---|
| [abc] | a, b, o c (classe semplice) |
| [^abc] | Qualsiasi carattere tranne a, b, o c (negazione) |
| [a-zA-Z] | da a a z e da A a Z, comprese (range) |
| [a-d[m-p]] | da a a d, e da m a p: [a-dm-p] (unione) |
| [a-z&&[def]] | d, e, o f (intersezione) |
| [a-z&&[^bc]] | da a a z, tranne b e c: [ad-z] (sottrazione) |
| [a-z&&[^m-p]] | da a a z, e non da m a p: [a-lq-z](sottrazione) |
| Classi di caratteri predefinite | |
| . | Qualsiasi carattere |
| \d | Una cifra: [0-9] |
| \D | Una non-cifra: [^0-9] |
| \s | Un carattere di A spaziatura: [ \t\n\x0B\f\r] |
| \S | Un carattre di non spaziatura: [^\s] |
| \w | Un carattere alfanumerico e sottolineatura: [a-zA-Z_0-9] |
| \W | Un carattere né alfanumerico né di sottolineatura: [^\w] |
per ulteriori informazioni visitate questo link sito completo di esempi:
http://www.regular-expressions.info/
Commenti : 4 Commenti »
Categorie : Informatica








































Commenti Recenti