Archivio mensile:Luglio 2011

Valerio e Lorenzo VS Martelli da Guerra – Capitolo 3 – Verso Altdorf in barca


Dopo aver passato tre giorni nella locanda al crocevia, i due avventurieri (a suon di tiri su iniziativa, intelligenza, simpatia e quanto altro ) si rimettono in cammino, e vengono a sapere che non lontano da qui si trova un piccolo porto fluviale da cui è possibile prendere una piccola imbarcazione che risale il fiume principale fino ai confini di Altdorf.

La camminata è relativamente breve e senza particolari intoppi. Arrivati nel pomeriggio, passano molto tempo in attesa di poter acquistare il diritto all’imbarco, puntualmente truffati , pagando una cifra spropositata. Nel vecchio mondo povertà e sopraffazione sono all’ordine del giorno.. e chi non ha esperienza viene spesso truffato.

Riescono comunque a comprare l’ingresso, per un imbarcazione la mattina seguente, e decidono di accamparsi insieme ad alcuni commercianti e contadini nei pressi del porto in attesa della mattina.

Alle prime luci dell’alba, l’elfo al suo risveglio si accorge che un furfante sta cercando di portare via la sacca con le corone d’oro dalla borsa del nano, e cerca di bloccarlo. Nella lotta si sveglia anche il nano che riesce ad immobilizzare il ladro. Il ragazzo tenta di impietosire i due (l’elfo rattristato dal suo racconto vorrebbe liberarlo), ma il nano capisce le sue menzogne e decide di caricarlo con forza e portarlo da una guardia portuale che lo prende in consegna,mentre l’elfo lo disarma e gli requisisce un pugnale. Durante tutto il trambusto, non i accorgono che la loro imbarcazione però oramai sta partendo e tornano velocemente indietro a raccogliere la loro roba e imbarcarsi.. Nella fretta il nano perde quasi tutto il suo bagaglio.(ah.. i tiri su iniziativa e destretta falliti si sono sprecati 🙂 )

 

Saltano sulla piccola imbarcazione appena in tempo..

Ci sono 2 marinai che la governano, 12 contadini e una guardia armata che sorveglia un piccolo ripostiglio al centro dell’imbarcazione..

Dopo nemmeno qualche minuto, scoprono (ovviamente non si sono minimamente curati di informarsi prima 🙂 ) che il viaggio dura un paio di giorni, corrente e vento permettendo, e che non hanno provviste.. Il nano cerca di acquistare delle razioni da un marinaio, che cerca di truffarlo chiedendo un prezzo spropositato..

Solo l’intervento dell’elfo lo aiuta a pagare una cifra piu che abbordabile ..

La loro inesperienza e giovane età e’ palese e molti cercando di approfittarsi della ingenuità.

 

 

Al calare della notte, succede qualcosa di imprevisto.. delle frecce si scagliano sull’imbarcazione uccidendo un contadino e ferendone altri.. si scatena il panico a bordo .

L’elfo si accorge che sul versante destro, un gruppo di goblin nascosto tra la vegetazione ha preso di mira l’imbarcazione..

La risposta al fuoco è immediata, e elfo, nano, la guardia armata e un contadino armato di fionda rispondono al fuoco..

I marinai impauriti si chiudono nel ripostiglio bloccando il timone con una corda in modo da far andare diritta la barca.

Altri contadini cadono sotto il fuoco nemico..un maiale e delle galline trasportate dai contadini subiscono la stessa fine.

Il combattimento prosegue per qualche minuto.. la barca avanza lentamente e quando sembra essere uscita dalla portata delle frecce, altri 4 goblin armati di pugnale si catapultano sulla barca.

I nostri si avventano in un estenuante corpo a corpo nel tentativo di salvare i contadini inermi che cadono sotto i colpi dei pugnali avvelenati dei goblin..

Alla fine dopo interminabili attimi, riescono ad avere la meglio.. superato il pericolo la conta dei morti e’ devastante..

6 contadini morti.. il bestiamo ucciso, 2 contadini feriti si sono gettati in acqua durante il combattimento  e non sono piu riemersi, la guardia e i nostri eroi feriti lievemente..

La guardia stacca le teste dai goblin e le lega ad un laccio per rivederle poi in città una volta arrivati..

Finito il combattimento, i marinai riescono dal ripostiglio, riprendendo il controllo dell’imbarcazione che dopo un altro giorno di viaggio li porta fino alle soglie di altdorf in un piccolo villaggio proprio sotto le porte a sud.

Stanchi, feriti e affamati, decidono di fermarsi per qualche giorno prima di partire alla volta della grande porta.

Viaggiare nel vecchio mondo può essere molto, molto pericoloso..

 

Valerio e Lorenzo VS Martelli da Guerra – Capitolo 2 – Il Primo Lavoro

Arrivati ad un piccolo villaggio molto a sud di Altdorf, i nostri due avventurieri decidono di fermarsi a riposare per poi ripartire il giorno successivo.

La Carovana su cui avevano viaggiato li lascia davanti alla piazzetta di questo villaggio di contadini.

Gli occhi dei passanti sono su di loro.. Un elfo ed un nano, armati,sporchi e puzzolenti in un villaggio di contadini.

Un gruppo di contadini armati di forconi si trova sotto la finestra della taverna del villaggio.. La porta sbarrata, le grida dei presenti, ed un uomo affacciato in finestra armato di balestra che minaccia di sparare, e che grida che può spiegare tutto..

“ridacci i nostri soldi imbroglione” gridano dalla folla.. Sassi vengono tirati verso la finestra.. Le imprecazioni dell’oste da dentro, fanno capire che la situazione è critica. Non sanno cosa stia succedendo e giovani e irruenti, ignorati dalla folla, si addentrano nella taverna per capire cosa succede..

Dentro vengono bloccati da 2 mercenari a guardia delle scale che non li vogliono far passare. Vengono a sapere che il tizio in finestra è il loro capo, Bartuk, e che si trovano nei guai a causa di un contratto non rispettato con i contadini del villaggio. Grazie alle doti empatiche dell’elfo, riescono ad approfittare di un momento di panico e ad entrare nella camera di Bartuk. All’interno 2 mercenari feriti gravemente, un altro alla porta.. Bartuk gli chiede se vogliono aiutarlo, e cosi gli racconta cosa è successo. Il suo gruppo è stato assoldato per ripulire delle caverne a nord, da cui secondo loro fuoriesce qualche bestia notturna che gli sta depredando raccolti e bestiame.. Hanno perso molti capi e cosi hanno assoldato per 100 corone tutto il gruppo di Bartuk.. Le caverne però fin da subito si sono dimostrate piene di trappole e di insidie e nonostante non abbiano visto nessuno, hanno riportato gravi perdite e ferite.. Per 30 corone i due avventurieri vengono assoldati e con l’aiuto di Derek il guercio, un mercenario dato in appoggio si avventurano a nord verso le caverne , dopo aver fatto provviste di torce e cibo.

Arrivati nei pressi delle caverne, notano subito il fetore nauseante di carne morta provenire dall’interno. Dentro una serie di trappole segnala la loro presenza, e ferisce leggermente il nano che piu volte sprofonda nel fango.

 

La vera minaccia si rivela ben presto.. Skaven… Un gruppo di ratti mutati si nasconde dentro queste caverne e da settimane razzia le fattorie..Sono pericolosi e portatori di malattie.

Il piccolo gruppo superate diverse difficoltà , e uccidendo diversi di questi mutanti, arriva nei pressi una stanza ricavata nella roccia.. Qui dentro, tra le luci soffuse, uno skaven sembra proteggere un altare formato da cadaveri di animali intrecciati , sembra un sacerdote o qualcosa del genere.. i suoi movimenti sono lenti.. i suoni che emette raccapriccianti.. I nostri avventurieri rimangono impietriti dalla situazione perdendo l’iniziativa e subendo l’attacco di altri due ratti. Il nano colpisce con forza ma perde la sua ascia ritrovandosi disarmato ,l’elfo a colpi di spada insieme al Guercio, riesce a farsi strada e arrivare davanti all’entrata della stanza. ma qualcosa di strano succede.. Una magia sprigionata dallo skaven stregone fa perdere il controllo a Derek il guercio che in preda alla follia tenta di attaccare Ioalion, l’elfo.

La prontezza del nano evita il peggio, raccogliendo un’arma caduta agli skaven e riuscendo a stordire Derek..

Dal corpo di uno degli skaven salta fuori una sfera metallica da cui fuoriesce polvere viola.. sembra veleno.. c’e’ poco tempo.. il fumo inizia a riempire i corridoi . Uno skaven prima di morire ha tirato una sorta di bomba fumogena incautamente raccolta dal nano..

l’elfo realizza delle strisce di stoffa da una coperta e tutti e tre si coprono il volto per non respirare il veleno.. Il nano carica sulle sue spalle il mercenario e si addentrano nella stanza.. Lo skaven stregone sparisce dietro una feritoia .. Una grotta adiecente in cui scorre un fiume sotterraneo.. Nella fretta e nella disperazione, i due avventurieri escono seguendo il corso del fiume verso la luce abbandonando quelle cavità pericolose .

Arrivati al villaggio e spalleggiati da Derek che nel frattempo si è ripreso, raccontanto di aver distrutto completamente la minaccia mentendo spudoratamente e consigliando di sigillare le caverne.

Arrivati all’appuntamento con Bartuk, il capo dei mercenari si fa beffe dei giovani offrendogli come ricompensa solo 10 corone..

Non è il caso di di scatenare una rissa.. i mercenari sono di più, e cosi in cambio di cure mediche decidono di accettare il compenso..

La loro prima missione del resto è stata un successo inaspettato.

 

 

Java AspectJ e Spring Framework: Aspect Oriented Programming in poche mosse

Il caso: vogliamo realizzare una funzione monitoraggio sulle nostre classi senza dover modificare tutta la nostra applicazione. Un sistema molto veloce è quello di utilizzare Aop.

Andiamo quindi a realizzare un aspetto che esegua rilevazioni di tempi (ovviamente e’ solo un esempio , ci sono centinaia di sistemi per farlo) sull’esecuzione di un metodo in particolare di alcune classi che andremo ad intercettare.

Realizzeremo quindi un aspect che scatterà durante l’esecuzione (around) di un particolare metodo di una particolare famiglia di classi che definiremo direttamente su spring. Questo ci permetterà di rilevare il tempo alla chiamata, eseguire il metodo, e rilevare il tempo a fine chiamata o a eccezione tornata.

Ovviamente ci sono molti modi per fare questo (utilizzando le annotations ad esempio).

Questo esempio e’ fatto completamente sfruttando il lato configurazione, con nessun intervento specifico sul nostro sorgente iniziale(apparte la definizione del nostro advice), quindi adatto ad essere introdotto in un progetto gia in fase avanzata di sviluppo.

Innanzitutto definiamo la classe che rappresenta il nostro advice:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package it.mypackage.aspect;

import org.aspectj.lang.ProceedingJoinPoint;

public class AspectProfiler {

public Object profile(ProceedingJoinPoint call,MiContesto context) throws Throwable {

long start = System.nanoTime();

//proseguo con l'invocazione del metodo intercettato

try {

return call.proceed();

}catch(Exception ex){

ex.printStackTrace();

throw new Exception(ex);

}finally{

long stop = System.nanoTime();

System.out.println("Tempo esecuzione:" + ((stop-start)/1000000) + " ms");

}

}

}

Utilizziamo Spring 3 , quindi come prima cosa portiamo dentro il nostro file di configurazione i namespace corretti:

importante il namespace AOP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/context

<a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">
http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>">

Ora sempre nel file di configurazione abilitiamo il component-scan del package interessato ad essere intercettato e proxato:

1
2
3
<context:annotation-config/>

<context:component-scan base-package="it.mypackage" />

Ora definiamo il nostro advice, l’aspetto profiler:

1
<bean id="profiler" class="it.mypackage.aspect.AspectProfiler" />

Ovviamente per poter essere intercettati in maniera corretta, gli oggetti devono essere creati tramite la bean factory di

Spring (in quanto devono essere creati come proxy) quindi definiti al suo interno:

1
<bean id="miaClasse" class="it.mypackage.mieclassi.miaclasseimpl/>

Ora definiamo tutta la parte aop su spring:

  • definiamo un aspetto e come riferimento gli diamo l’id del bean che mappa il nostro advice definito in precedenza;
  • definiamo un pointcut, dandogli un id arbitrario, e un’espressione . Questo è a tutti gli effetti il joint-point che una volta raggiunto (al verificarsi dell’espressione) nell’esecuzione del nostro codice, farà scattare ed eseguire l’advice;
  • definiamo la tipologia dell’advice come around(intorno all’esecuzione del metodo) e indichiamo il metodo dell’advice che verrà eseguito, ad esempio il metodo “profile” nell’espressione andiamo ad indicare che il joint-point da intercettare e’ quando viene eseguito il metodo execute di una classe che estenda la classe MiaClasseBase e che abbia come argomento un parametro chiamato context.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<aop:config >

<aop:aspect ref="profiler">

<aop:pointcut id="theExecutionOfExcecMethod"

expression="execution(* it.mypackage.mieclassi.MiaClasseBase+.execute(*)) and args

(context)"
/>

<aop:around pointcut-ref="theExecutionOfExcecMethod" method="profile"/>

</<aop:aspect >

</aop:config >

Utilizzando un bean con id miaClasse ottenuto dal context di spring, vedremo eseguire il codice del nostro advice..

La documentazione di AspectJ e di Spring Framework e’ in continua evoluzione, quindi vi consiglio di controllarla spesso.