17/04/2006

Periodo di assenza

 

Ciao a tutti i lettori,

 

in quest'ultime settimane sono stato un pò impegnato con il lavoro. Questo mi ha impedito di scrivere post su questo blog e me ne dispiace. In questo periodo mi sto impegnando molto nella progettazione UML per un prodotto nel laboratorio dove lavoro. Farò tesoro di quest'esperienza che spero di condividere presto con voi.

Appena passati questi giorni di festa mi piacerebbe parlare di alcuni tool come Castor (sto già iniziando a scrivere qualcosa nel wiki), di continuare i post relativi a Gollumix e Trouts War, iniziare a parlare di compilatori, video editing, progettazione UML (use case model, analysis model, design e implementation model) e molto altro ancora.

In attesa di tutto ciò vi auguro Buone Feste.
Salvatore 

11:26 Scritto in Vari | Link permanente | Commenti (0) | Segnala | Tag: Programmazione

24/03/2006

Pluggability

 

 

Oggi volevo segnalarvi quest'articolo sui meccanismi di pluggability di eclipse che considero molto interessante.

Il discorso è semplice. C'è un core con un set di extension points che espongono determinate interfacce. Chi vuole estendere eclipse descrive il suo plugin attraverso un file XML e implementa gli extension points.

Pubblico quest'articolo perchè in futuro vi illustrerò un'idea su come implementare un'architettura di pluggability per Bazaar.

Bazaar ha ereditato molto codice da JSPCart e implementa per intero un servizio di shopping online, tuttavia sappiamo che le esigenze dei negozianti potrebbero essere le più diverse.

Io oggi mi immagino un futuro Bazaar così organizzato.

CORE 
Il core avrà solo i menù, il layout, la gestione dei temi e la gestione della pluggability.

PLUGIN CATALOGO 
La gestione del catalogo dei prodotti potrebbe essere un plugin che consente all'amministratore di caricare prodotti e ai clienti di visualizzarli.

PLUGIN CARRELLO (dipende da CATALOGO)
Ci potrebbe essere poi dei negozianti che oltre al catalogo vogliono anche la gestione del carrello, che diventerà un nuovo plugin. Questo servirà ai clienti per eseguire ordini.

PLUGIN CASSA (dipendente da CARRELLO)
Ci potrebbero essere dei negozianti che desiderano dare la possibilità ai propri clienti di pagare direttamente online. I vari metodi di pagamento potrebbero essere dei plugin a loro volta.

PLUGIN PRODOTTI PIU' VENDUTI (dipendente da CARRELLO)
Un negoziante potrebbe chiedere di visualizzare i 10 prodotti più venduti dal negozio. Anche questo potrebbe essere un plugin. 

NEWS, RSS e BLOG
Un negoziante potrebbe decidere di pubblicare news, rss o un proprio blog. Anche questo diventa un plugin.

WIZARD ASSEMBLA COMPUTER (dipende da CATALOGO)
Un negoziante di computer potrebbe decidere di fornire un wizard che consenta al cliente di assemblarsi un computer velocemente. Ovviamente ci sarà un plugin apposta usato solo da questa categoria di negozianti. 

Potrei continuare all'infinito. Penso che il concetto di pluggability (che vale per qualsiasi tipo di applicazione) possa essere un valido tema di discussione per questo blog in futuro.

15:30 Scritto in Vari | Link permanente | Commenti (0) | Segnala | Tag: Programmazione

20/03/2006

Motori di Ricerca

 

Ultimamente non riesco a postare messaggi con una frequenza giornaliera e me ne dispiace. E' un periodo in cui sono molto incasinato.

 

Oggi voglio iniziare a parlare di motori di ricerca e per farlo ho pensato bene di introdurre l'argomento parlando di Google.

Tutti noi usiamo google quotidianamente ma forse pochi si sono chiesti come funziona.

Google è il risultato di anni di ricerca di Sergey Brin e Larry Page che presentarono questo progetto come argomento di tesi alla Università di Stanford in California. Fondamentalemente il motore di ricerca, attraverso dei crawler, naviga tra i vari link e immagazzina tutte le pagine HTML (e non) che incontra. Dalle pagine sono estratte le singole parole utilizzate poi come indice in fase di ricerca. Se un utente digita un parola è probabile che ci siano milioni di documenti che contengono quella parola, per cui va definita una priorità. Questa priorità viene detta page rank. In pratica, la priorità di una pagina è funzione della priorità delle pagine che la linkano e quelle da essa linkate. Quindi più una pagina è popolare più ha probabilità di comparire nelle prime posizioni.

Per nostra fortuna su Internet esiste ancora un documento dei due ricercatori sul funzionamento di Google. Leggetelo è un'ottima base di partenza.

L'algoritmo basato sulla popolarità, però, non fu un'idea dei due ricercatori, bensì' di Massimo Marchiori.

Furono gli stessi padri di Google a dirlo quando il loro lavoro fu lanciato nel 1998.

Da questo documento estraggo alcune sue affermazioni:

"Larry Page e Sergey Brin hanno preso l'idea iniziale di Hypersearch, hanno considerato la variante "popolare" che io avevo valutato come meno efficace e hanno effettuato in maniera elegante le giuste semplificazioni per renderla usabile su larga scala da un motore di ricerca veloce. E infatti mi hanno citato, correttamente, quando hanno lanciato Google nel 1998".

"I motori di ricerca del futuro dialogheranno con gli utenti guidandoli nei vari passi della ricerca. Le idee per fare un motore di terza generazione le ho da tempo, anche se al momento preferisco tenerle per me. Il problema sta soprattutto nelle risorse: per dimostrare la bonta' di un motore occorre poi farlo funzionare su scala mondiale, non basta pubblicare l'idea in un articolo. Per esempio, Hypersearch, a mio giudizio, e' superiore a Pagerank, eppure quasi nessuno lo conosce, per il semplice motivo che non c'e' un motore di ricerca che mostri la bonta' dell'idea su larga scala. Per competere con Google non bastano solo idee innovative, occorrono mezzi e risorse, e certamente, avendo un po' di risorse, sarebbe una sfida stimolante".

Attualmente Massimo Marchiori è ricercatore all'università di Venezia e lavora al MIT nel World Wide Web Consortium al fianco dell'inventore del web Tim Berners-Lee.

PS
Metto a disposizione le pagine del blog e del wiki di Open Community per chiunque voglia pubblicare articoli sui motori di ricerca oppure piccoli esempi relativi a Hypersearch (di cui sicuramente ci occuperemo in futuro).

09/02/2006

Wiki di Programmiamo



Ho aperto un nuovo wiki in sostituzione di quello che usavo prima, che non mi consentiva di proteggere le modifiche dei documenti con password.

Il wiki contiene degli annunci google che non sono miei, li impone il sito che fa hosting.

Viceversa, ho aggiunto gli annunci google a questo blog. Se in futuro pubblicherò un articolo che ritenete interessante, potete ricambiare cliccando su uno degli annunci. Un piccolo contributo per aiutarmi a gestire questo blog.

Questo è il nuovo link del wiki.

06/02/2006

Migliori siti di programmazione

Dopo la raccolta di tutorials e di Open Books, penso che possa tornare utile un post dove raccogliere i migliori siti di programmazione organizzati per argomento.

Ecco l'elenco che nel tempo terrò aggiornato anche in base alle vostre segnalazioni. Per ora non sono molti, ma prevedo che il loro numero aumenterà a breve.

Design Patterns

Patterns & Software: essential concept & terminology
Patterns for Java & Distributed Computing

Programmazione

Programmazione.it (Richiede una registrazione gratuita)
Thefreecountry.com
Programmers Heaven
DevArticles
Programming Tutorials
Code Project

Game Programming

ToyMaker
GameMaker
GameDev.Net
2D Game Tutorials

Crittografia

Chiper By Ritter

J2EE Programming
The Server Side

29/01/2006

Open Book

Questo post lo dedico agli open book, cioè quei libri che si possono acquistare normalmente come qualsiasi altro libro ma che sono disponibili anche online gratuitamente.

Di volta in volta aggiornerò questo post con gli open book disponibili in rete. Se volete potete segnalarmi i vostri open book preferiti.

Sistemi Operativi

Linux device drivers 3th edition (kernel 2.6), il libro sui device driver Linux scritto da Alessandro Rubini e Jonathan Corbet è arrivata alla terza edizione che è dedicata completamente al kernel 2.6.

Programmazione C++
Thinking in C++ vol. 1, primo volume del libro di programmazione C++.
Thinking in C++ vol. 2, secondo volume del libro di programmazione C++.

Programmzione Java

Thinking in Java, libro di programmazione Java.

Game Programming

Killer Game Programming, questo libro insegna a scrivere videogame 3D con Java3D.

14/01/2006

Tutorial Programmazione

In questo post raccoglierò tutorial dei diversi linguaggi di programmazione ad uso e consumo di tutti noi. Il post verrà aggiornato di tanto in tanto e linkato nella barra laterale a destra.

Tutorial C

C Programming

Tutorial C++

C++ Annotations

Tutorial Java

Sun Java Tutorial

Brewing Java

Corso Java

Tutorial Design Patterns

Design Patterns GoF

Design Patterns Tutorial

JUG Torino Tutorial

Ugo Landini Tutorial

Catalogo dei Design Patterns

Core J2EE Patterns

Thinking in Patterns

Tutorial Grafica 3D

Basic OpenGL Tutorial

Advanced OpenGL Texture Mapping

OpenGL for Game Programming

Tutorial Kernel Programming

Gollumix.Un kernel scritto da zero

Tutorial Internet

Tutorial Internet

Algoritmi e Strutture Dati

Data Structures and Algorithms with Object Oriented Patterns in C++

Dictionary of Algorithm and Data Structures

Segnalatemi i vostri tutorial preferiti, provvederò ad aggiungerli a questo post.

12/01/2006

Benvenuto su Programmiamo


medium_programmare.jpg


Questo blog è stato creato per condividere con altri le mie esperienze informatiche al fine di migliorare e incrementare le mie conoscenze e, se ci riesco, ad aiutare anche voi.

Non è la prima volta che cerco di creare un giornale di programmazione. Già tempo fa avevo creato il seguente sito con lo stesso obiettivo. Quell'esperienza si è poi rallentata a causa dei miei molti impegni e dalla difficoltà di aggiornare il sito.

L'esperienza del blog Il mio Diario mi ha fatto capire meglio come gestire un giornale di questo tipo, per cui eccomi di nuovo qui per un secondo tentativo.

Spero di ricevere i vostri feedback e creare un giornale che sia proprietà di tutti noi programmatori.

PS
Se avete Firefox come browser installate il news aggregator Habari Xenu (se non ne possedete un altro diverso) e aggiungete ad esso il link al mio flusso RSS (l'icona rossa sulla destra). Questo post in un altro mio blog di news vi spiegherà come fare. In questo modo, tutti i giorni, troverete un mio nuovo post sul vostro aggregator.