Figura 1
Gara che? Cos'è GaraGuru
La communità di lettori di SIForge.org è vistosamente cresciuta,
per cui abbiamo pensato che potesse essere interessante indire un piccolo
concorso, per stimolare nuove discussioni ed esplorare nuovi temi.
Regolamento
Il Contest consiste nel risolvere almeno una delle quattro sfide proposte.
È possibile svolgere le sfide in uno tra i seguenti linguaggi:
Visual Basic, Pascal, Perl, Java, SmallTalk Squeak,
C, C++, PHP, Python, Ruby, Common Lisp, Scheme, AppleScript,
shell script (bash, sh, ksh, zsh, tcsh, ...).
Potete usare altri lunguaggi a patto di segnalare anche l'interprete e/o il
compilatore di riferimento da voi usato, devono essere strumenti Open.
Il risultato va spedito via e-mail a:
garaguru@siforge.org
La data ultima per partecipare è il 15 giugno 2004, la proclamazione dei
vincitori avverrà nella settimana successiva.
I premi
Ai quattro vincitori, uno per ciascuna prova, verrà fatto omaggio di un libro
a scelta fra questi:
- Adopting The Rational Unified Process (ADDISON WESLEY)
- Advanced Macromedia Coldfusion Mx Application Development (MACROMEDIA PRESS)
- Agile And Iterative Development (PTR)
- Agile Modeling (WILEY)
- Ai Game Development: Learning And Reactive Behaviors (NEW RIDERS)
- Algorithms And Data Structures (ADDISON WESLEY)
- Ant The Definitive Guide (O'REILLY)
- Applescript Language Guide (ADDISON WESLEY)
- Applying Uml And Patterns, 2nd Edition (PTR)
- Awesome 3d Game Development (CHARLES RIVER MEDIA)
- Building Cocoa Applications (O'REILLY)
- Building Secure Servers With Linux (O'REILLY)
- Carbon Programming (QUE)
- Cobol For The 21st Century (WILEY)
- Cocoa Programming (QUE)
- Cocoa Recipes For Mac Os X (ADDISON WESLEY)
- Core Css (PTR)
- Core Phyton Programming (PTR)
- Creating Worldwide Software (PTR)
- Curl Web Programming (QUE)
- Data Structures And Other Objects (BENJAMIN CUMMINGS)
- Design Patterns (italiano) (PEARSON EDUCATION ITALIA)
- Designing Concurrent Distributed And Real-time Applications With Uml (ADDISON WESLEY)
- Designing Object Oriented User Interface (ADDISON WESLEY)
- Designing Web Graphics.4 (NEW RIDERS)
- Dns And Bind Cookbook (O'REILLY)
- Essence Of Program Design (PRENTICE HALL)
- Essential Asp.net With Examples In C# (ADDISON WESLEY)
- Essential Asp.net With Examples In Visual Basic .net (ADDISON WESLEY)
- Essential Snmp (O'REILLY)
- Extreme Programming Applied (ADDISON WESLEY)
- Extreme Programming Explored (ADDISON WESLEY)
- Extreme Programming Perspectives (ADDISON WESLEY)
- Game Architecture And Design: A New Edition (NEW RIDERS)
- Game Audio Programming (CHARLES RIVER MEDIA)
- Game Coding Complete (PARAGLYPH PRESS)
- Game Programming Golden Rules (CHARLES RIVER MEDIA)
- Games, Diversions & Perl Culture (O'REILLY)
- Gnu Autoconf, Automake And Libtool (NEW RIDERS)
- High-performance Cluster Computing (PTR)
- High-performance Cluster Computing, Vol. 2 (PTR)
- Hyperprogramming (ADDISON WESLEY)
- Inside Macintosh: Aoce Application Interface (ADDISON WESLEY)
- Inside Macintosh: Aoce Service Access Modules (ADDISON WESLEY)
- Inside Macintosh: Interapplication Communication (ADDISON WESLEY)
- Inside Macintosh: Powerpc Numerics (ADDISON WESLEY)
- Inside Macintosh: Powerpc System Software (ADDISON WESLEY)
- Ipv6: The New Internet Protocol (PTR)
- Java Cryptography (O'REILLY)
- Java Database Best Practice (O'REILLY)
- Javascript + Css + Dom Magic (NEW RIDERS)
- Korn Shell Programming By Example (QUE)
- Ldap Programming In Java (ADDISON WESLEY)
- Ldap System Administration (O'REILLY)
- Learn C++ On The Macintosh (ADDISON WESLEY)
- Learning Python, 2nd Edition (O'REILLY)
- Linux Kernel Development (QUE)
- Linux Kernel Programming, 3rd Edition (ADDISON WESLEY)
- Linux Preformance Tuning And Capacity Planning (QUE)
- Making Use Of Ruby (WILEY)
- Managing Software Requirements (ADDISON WESLEY)
- Mastering Perl For Bioinformatics (O'REILLY)
- Mastering Regular Expressions, 2nd Edition (O'REILLY)
- Mda Explained (ADDISON WESLEY)
- Mobile Device Game Development (CHARLES RIVER MEDIA)
- Mod_perl Developers Cookbook (QUE)
- Network Programming With Perl (ADDISON WESLEY)
- Object Oriented Design & Patterns (WILEY)
- Object Technology Strategies And Tactics (CAMBRIDGE UNIVERSITY PRESS)
- Object-oriented And Classical Software Engineering (MCGRAW-HILL UK)
- Object-oriented Software Engineering (PRENTICE HALL)
- Objects, Components, And Frameworks With Uml (ADDISON WESLEY)
- Opendoc Programmers Cookbook (ADDISON WESLEY)
- Opendoc Programmers Guide (ADDISON WESLEY)
- Pattern-oriented Software Architecture, Vol 2 (WILEY)
- Perl & Xml (O'REILLY)
- Perl By Example (PTR)
- Perl Database Programming (HUNGRY MINDS)
- Perl For The Web (NEW RIDERS)
- Perl For Web Site Management (O'REILLY)
- Perl Graphics Programming (O'REILLY)
- Perl In A Nutshell, 2nd Edition (O'REILLY)
- Perl To Python Migration (ADDISON WESLEY)
- Practical Java Game Development (CHARLES RIVER MEDIA)
- Professional Jsp Site Design (WROX)
- Programmare Mac Os X (Jackson Libri)
- Programming Believable Characters For Computers Games (CHARLES RIVER MEDIA)
- Programming In Cobol/400, 2nd Edition (WILEY)
- Programming In The .net Environment (ADDISON WESLEY)
- Programming Ruby: The Pragmatic Programmers Guide (ADDISON WESLEY)
- Programming The Network With Perl (WILEY)
- Programming Web Services With Perl (O'REILLY)
- Python & Xml (O'REILLY)
- Python 2.1 Tutto E Oltre (Apogeo)
- Python Library Reference (IUNIVERSE.COM)
- Python Programming With The Java Class Libraries (ADDISON WESLEY)
- Python Web Programming (NEW RIDERS)
- Questioning Extreme Programming (ADDISON WESLEY)
- Rational Unified Process Made Easy, The (ADDISON WESLEY)
- Real Time Uml (ADDISON WESLEY)
- Reality Coldfusion Mx: Intranets And Content Management (MACROMEDIA PRESS)
- Refactoring Workbook (ADDISON WESLEY)
- Refactoring: Improving The Design Of Existing Code (ADDISON WESLEY)
- Routing And Switching (ADDISON WESLEY)
- Ruby Developers Guide (SYNGRESS)
- Software Engineering: A Practitioners Approach (MCGRAW-HILL UK)
- Stream Control Transmission Protocol (sctp) (ADDISON WESLEY)
- Succeeding With Objects (ADDISON WESLEY)
- Sviluppo Wap Con Wml E Wmlscript (Apogeo)
- Symantec C++ Programming For The Macintosh (SAMS)
- Tcp/ip Bible (HUNGRY MINDS)
- Tcp/ip Primer Plus (QUE)
- Tcp/ip Unleashed, 3rd Edition (QUE)
- Test-driven Development (PTR)
- Text Processing With Python (ADDISON WESLEY)
- The Book Of Zope:how To Build And Deliver Web Applications (NO STARCH PRESS)
- The Practice Of System And Network Administration (ADDISON WESLEY)
- The Ruby Way (QUE)
- Thinking In Java, 3rd Edition (PTR)
- Thinking In Java, Seconda Edizione Rivista In Italiano (Apogeo)
- Tools For Structured Design (PRENTICE HALL)
- Uml 2 Toolkit (WILEY)
- Uml Distilled, 2nd Edition (ADDISON WESLEY)
- Uml In Practice (WILEY)
- Understanding The Linux Kernel, 2nd Edition (O'REILLY)
- Voice Over Packet Networks (WILEY)
- Web Programming In Python (PTR)
- Web Site Engineering (PTR)
- Wireless Communication And Networks (PRENTICE HALL)
- Wireless Java: Developing With J2me, 2ed (APRESS)
Siete pregati di segnalare la vostra preferenza al momento della spedizione
della soluzione.
SIForge.org ringrazia la collaborazione di
Gorilla.it.
Le sfide
1. Web Clipping
Tipologia: web
Scrivete, in un linguaggio a piacere, un componente (ovvero una classe o una
funzione) che dato un url, sia in grado di estrarne un frammento. Per esempio,
dato http://www.slashdot.org/, il webclipper deve essere in grado di estrarne
un particolare articolo.
In input il componente deve prevedere i seguenti parametri:
-
url web
-
tag html di inizio clip (es <table>)
-
tag html di fine clip (es </table>)
-
espressione regolare che estragga i frammenti (es <td>(.*)</td> estrae il
contenuto di ogni td).
In output il web clipper deve fornire i frammenti che eseguono il matching
con l'espressione regolare.
Il programma deve poter funzionare da linea di comando.
2. Bug Hunter
Tipologia: narrativo
Descrivete il peggior bug che avete dovuto affrontare. Mostrate il segmento
di codice incriminato, e raccontate come avete diagnosticato il problema e
come lo si è risolto.
Il testo non deve superare le 2 pagine circa (5000 battute).
3. Classe ad oggetti
Tipologia: UML / simulazione
Modellate il funzionamento di una scuola statale italiana.
Nella scuola vi sono un numero indefinito di sezioni (A, B, C, ecc) ognuna con
5 classi (es. 1B, 2B, ecc).
In ogni classe vi sono tra i 15 e i 30 alunni.
Ogni classe ha almeno 2 docenti assegnati.
Ogni studente si sorbisce 5 ore al giorno di lezione, per sei giorni.
Descrivete con del codice, i seguenti use case:
-
appello
-
aggiunta/rimozione di docenti
-
arrivo di studenti ripetenti (simulazione di una bocciatura).
Ricordate: il modello deve prevedere un numero indefinito di sezioni!
È richiesto il codice delle classi del modello, in un linguaggio a piacere tra
quelli elencati in precedenza. È tassativo l'uso ad oggetti se si presenta
un'implementazione in PHP, C/C++ o Visual Basic.
4. Algoritmi + strutture dati = eeeh?
Tipologia: teorico / algoritmico
Descrivete la struttura dati più strana che vi siete dovuti inventare.
Mostrate a cosa serve e giustificatene l'utilità in generale o nel contesto
specifico del vostro problema.
Esempio di strutture dati "esoteriche":
SkipList,
AVL Trees
Il testo non deve superare le 3 pagine circa (7000 battute).
Ed ora ...
In attesa della proclamazione dei vincitori, buon lavoro!
La Redazione
Informazioni sugli autori
Giovanni Giorgi, classe 1974. Dopo il diploma di liceo Classico, si è laureato in Informatica nel febbraio 2000, e attualmente lavora nel campo del software finanziario (trading on line, soluzioni web).
Appassionato di linguaggi di programmazione, si interessa anche di politica e letteratura.
È possibile consultare l'elenco degli articoli scritti da Giovanni Giorgi.
Marco Lamberto, laureato in Informatica presso la Statale di Milano, con diversi anni di esperienza sistemistica, di sicurezza e sviluppo prevalentemente in ambienti UNIX (Linux in primis) con linguaggi come C, Java, Perl, PHP, XML, HTML, ...
È possibile consultare l'elenco degli articoli scritti da Marco Lamberto.
Stefano Fago, classe 1973. Diplomato in ragioneria, ha conseguito il Diploma di Laurea in Informatica con un progetto legato alle interfacce grafiche soft-realtime in Java. Dopo esperienze in Alcatel ed Elea, ha svolto attività di consulenza come Software Developer e Trainer alla ObjectWay S.p.A. sede di Milano. Attualmente Software Designer presso la sezione Innovazione e Attività Progettuali di BPU Banca. Appassionato del linguaggio Java e di tutte le tecnolgie Object Oriented. Polistrumentista dilettante.
È possibile consultare l'elenco degli articoli scritti da Stefano Fago.
Altri articoli sul tema SIForge / GaraGuru.