SpicyDEV Blog

Feed Rss

Aiuto! Forse a causa delle piogge torrenziali di ieri e di stanotte, l’elettronica della mia macchina stamattina è andata. Inserisco la chiave, giro: Hill Holder disinserito, ABS disinserito, ESP disinserito, ASR disinserito, consultare manuale. Il clima automatico è tutto spento. Parte comunque la ventola del clima e mi appanna i vetri. Non c’è verso di spegnerla.
Luci, tergicristalli funzionano. Servosterzo funziona male.
Tutti i fusibili sono ok e pare non ci sia acqua nella centralina dell’ESP.
Idee? :(

Edit 1:

Stamattia controllando i fusibili, ho tenuto la batteria staccata circa 10-15 minuti. Ma il guasto è rimasto.

Edit 2:

Ok, dopo aver parlato con un mio amico meccanico e aver sentito alcuni, pare sia un problema già accaduto ad altre Punto EVO NP 01/2010. In pratica, molto probabilmente è qualcosa che “è andato a massa”. Domani pomeriggio la verranno a prendere e faranno alcuni controlli. La cosa è plausibile perché già la mia macchina soffriva di alcune infiltrazioni lato passeggero.

Edit 3:

Penso che ucciderò il mio cane! La causa del guasto? Ebbene, sono stati mangiucchiati un po’ di fili dell’impianto elettrico della macchina!! Questi giorni il mio cane, anche e soprattutto a causa dei tuoni, ha preferito dormire sotto la mia macchina piuttosto che in cuccia. Beh, come passare il tempo? mangiucchiando e triturando un po’ di fili della mia auto!! :|

In memoria di Peppino Impastato

Questa è la terza lezione sul Test Driven Development. Se hai perso le altre clicca qui.

Iniziamo ad entrare nel vivo del processo di sviluppo guidato dai test. Per comprendere meglio qualcosa, non c’è nulla di meglio di fare degli esempi pratici. Nella seconda lezione abbiamo avuto già un esempio al riguardo, con lo sviluppo di un calcolatore di fattori primi.

Abbiamo appreso il ciclo di sviluppo del TDD: test-code-refactor. Inoltre, anche se non molto evidente in quel primo esempio, abbiamo visto come la progettazione del nostro metodo è avvenuta in maniera naturale in conseguenza dei test. Pensiamoci: come possiamo sapere come dovrebbe essere una determinata interfaccia (ad esempio), se non proviamo ad usarla? Non lo sappiamo. Scrivere il test prima del codice, ci consente di pensare alla progettazione dalla prospettiva dello sviluppatore, cioé dalla prospettiva di chi userà quel codice, realizzando delle API usabili ed eleganti.

Da questa lezione, cominciamo a sviluppare un’applicazione reale: un gestore di biglietti da visita. Lo sviluppo seguirà un approccio agile dove i requisiti non sono fermamente stabiliti e potranno cambiare nel corso dello sviluppo.

Nel corso delle lezioni l’applicazione diventerà sempre più complessa e comprenderà anche una interfaccia grafica.

Learn more

Quello che viene mostrato nel video è l’High Frequency Traders delle azioni della Johnson and Johnson (JNJ) in mezzo secondo!!!

La casella in basso (SIP) mostra la “Nationa Best Bid and Offer”. Da notare quanto traffico in un batter d’occhio.

L’High Frequency Traders è “una modalità di intervento sui mercati che si serve di sofisticati strumenti software, e a volte anche hardware, con i quali mettere in atto negoziazioni ad alta frequenza, guidate da algoritmi matematici, che agiscono su mercati di azioniopzioniobbligazionistrumenti derivaticommodities. La durata di queste transazioni può essere brevissima, con posizioni di investimento che vengono tenute per periodi di tempo variabili, da poche ore fino a frazioni di secondo. Lo scopo di questo approccio è quello di lucrare su margini estremamente esigui, anche pochi centesimi. Per trasformare tali margini minimi in significativi guadagni, la strategia HFT deve necessariamente operare su grandi quantità di transazioni giornaliere.” (fonte Wikipedia).

Se avete letto la seconda lezione sul TDD, avrete notato che tra i prerequisiti c’era la conoscenza di Java 7. Il codice riportato negli esempi, ha utilizzato almeno una delle migliorie apportate nella versione 7 di Java.

Brevemente analizzeremo le principali migliorie apportate al linguaggio, rispetto alla versione 6:

  • Switch con stringhe
  • Catch multipli
  • Gestione delle risorse: try-with-resource
  • Rilancio specifico delle eccezioni
  • Diamond Operator
  • Tipi letterali binari
  • Underscore nei numeri

A queste novità, andrebbero aggiunte: NIO2 (nuova versione delle API per la gestione e navigazione del file system), ForkJoin e RecursiveTask (supporto al multiprocessing), altre nuove caratteristiche che determinano migliori performance e minor consumo di memoria.

In questo posto analizziamo solo le novità del linguaggio.

Learn more

Eccoci al secondo articolo sul TDD. Spero di avervi incuriosito nell’introduzione precedente. É arrivata l’ora di passare agli aspetti pratici.

Premessa

La tecnica del TDD è applicabile con diversi linguaggi, tecnologie e Framework. In questa serie di articoli useremo principalmente il linguaggio di programmazione JAVA. Vedremo l’utilizzo del TDD con diversi Framework e paradigmi di programmazione (orientata agli oggetti, orientata agli aspetti).

Prerequisiti per la prima lezione

Conoscenza dei fondamenti di programmazione a oggetti.

Superficiale conoscenza del linguaggio di programmazione JAVA (versione 7).

Test Driven Development

Ciclo di sviluppo

Nel primo articolo, abbiamo indicato qual è il ciclo di sviluppo utilizzando la tecnica del TDD:

Ciclo sviluppo TDD

Ciclo sviluppo TDD

Learn more

Questo articolo, sarà il primo di una lunga serie sul Test Driven Development (Sviluppo Guidato dai Test) o TDD.

Il processo di sviluppo TDD ha fatto il suo debutto da circa 15 anni come parte integrante dell’Extreme Programming (XP) ed è ora adottato da tutti i team di sviluppo che fanno uso di metodi agili, e non solo. Io ne ho sentito parlare non più di 7 anni fa ed ero molto scettico al riguardo. All’inizio facevo delle prove per conto mio, mai in applicazioni che avrei dovuto sviluppare per lavoro. Prima il mio approccio era: analisi su carta, sviluppo, test completo, debug, correzione, test, analisi, debug, sbattimento di testa, debug, correzione, sviluppo, … e così via. Producendo software per soldi (ovvero per lavoro), non pensavo ci fosse tempo per scrivere degli Unit Test o, addirittura, partire dal test!

Adesso non rilascio una classe se prima non ci sono degli Unit Test che la coprono (torneremo in seguito sul Code Coverage) e, addirittura, non scrivo codice se prima non c’è un test che fallisce.

Ok per i test, ma non scrivere codice se non c’è un test che fallisce? Ma che significa?

Learn more

The Week in Chess è un importante sito per chi gioca a scacchi. Raccoglie news dal mondo e pubblica le partite in corso. Inoltre, ogni settimana pubblica un file PGN con le partite giocate durante la settimana nei vari tornei internazionali.

Ho raccolto in un archivio tutti i TWIC dal 210 (il primo che risulta pubblicato sul sito) al 930, ossia tutte le partite raccolte da The Week in Chess dal 1998 a oggi.

Per chi fosse interessato, il link per scaricarlo: Archivio TWIC 210-930. Si tratta di un archivio tar compresso con bzip2 di circa 170Mb. Per decomprimerlo in MS Windows basta usare Winrar o 7zip (entrambi gratuiti o shareware).

Se volete scaricarli da voi direttamente dal sito twic, potete usare questo semplice comando in bash:

for a in `seq 210 930`; do wget http://www.chesscenter.com/twic/zips/twic$a'g.zip'; done

Sono circa 1Gb di file pgn.

Ho ritrovato in rete delle vecchie slide che avevo prodotto per uno speech su GPG:
http://www.olografix.org/wp-content/upload/gpg_2.pdf.

Per chi non lo sapesse la mia chiave GPG è 0x08467AFC. Potete usarla per inviarmi materiale criptato.

Avete già una chiave GPG? Allora vediamo quanto siamo “amici”: http://pgp.cs.uu.nl/stats/08467AFC.html.

Per comprendere l’utilizzo di una tecnologia non c’è nulla di meglio che provarla. Quale migliore esempio se non il classico “Hello, World!”?

Il codice che analizzeremo tra breve è preso direttamente dagli esempi presenti nella guida ufficiale.

HelloWorld.java

package it.spicydev.blog.jna;
 
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
 
/**
 * Date: 1/21/12 7:06 PM
 *
 * @author Mircha Emanuel `ryuujin` D'Angelo
 * @version 1.0
 */
public class HelloWorld {

Learn more