Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-03-2006, 13:47   #1
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
[Task 13.1.2] Ufo vs Bonfo

13.1.2:
Cambiare il codice che crea le stone in modo che il frame da mostrare durante la caduta sia dipendente dalla riga in cui è previsto che la pietra andra a collidere.
Per sapere quale frame usare seguite la tabella:
Riga Frame
13-12 2
11-10 3
9-7 4
6-4 5
3-0 6
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 14:02   #2
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Test List:

- Per tutte le fasce dove va a cadere la Stone deve essere settato il frame corretto.
- Una Stone contiene 8 frame.
- I frame della Stone sono posizionati correttamente.
- Il frame corrente deve poter essere settato in base al valore che deve essere visualizzato.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 14:03   #3
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Partiamo col primo test...mooolto facile:
Codice:
    public void testStoneNumberOfFrames()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        assertEquals("Stone must have 8 frames", 8, stone.getNumberOfFrames());
    }
Partiamo....!!!!
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 22-03-2006 alle 14:40.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 14:37   #4
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Green

Codice:
    public Gem createStone(GemType gemType)
    {
        Gem newStone = Gem.createStone(gemType);

        return setupGemAnimationAndSound(newStone);
    }
Codice:
    public static Gem createStone(GemType type)
    {
        Gem newStone = new Gem(type, 0);
        newStone.numberOfFramesInTexture = 8;

        return newStone;
    }

Ultima modifica di Ufo13 : 22-03-2006 alle 14:45.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 15:53   #5
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Nuovo test:
Codice:
    public void testStoneIsNotAnimated()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        
        grid.insertGem(13, 2, stone);
        
        grid.updateGemAnimations(timer);
        int startingFrame = stone.getCurrentFrame();
        
        timer.advance(config.getInteger("GemAnimationUpdateRate")+1);
        grid.updateGemAnimations(timer);

        assertEquals("Stone must not be animated", startingFrame, stone.getCurrentFrame());
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 15:53   #6
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ecco risolto.
Metodo update in Gem:
Codice:
    
public void update(TimerInterface timer)
    {
        if(!this.getType().isStone())
        {
            long animationTime = computeAnimationTime(timer);

            setCurrentFrame(findAnimationFrame(animationTime));
        }
    }
GREEN
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 16:00   #7
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ecco il prossimo test:
Codice:
    public void testStoneFrameInSecondPortion()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
             
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        
        insertAndUpdate(stone, 0, 4);
        assertEquals("Stone must using the second frame", 1, stone.getCurrentFrame());       
    }
a te la palla...
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 22-03-2006 alle 16:17.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 18:08   #8
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
commento un secondo il tuo test...

Aggiungo il seguente test in TestGrid:

Codice:
    public void testColumnHeightIsZero()
    {
        assertEquals("Column height must be 0", 0, grid.getHeightOfColumn(0));
    }
con QuickFix passa da solo

allora ti propongo questo che fallisce:
Codice:
    public void testColumnHeightIsOne()
    {
        insertAndUpdate(createGem(DIAMOND), 13, 2);
        assertEquals("Column height must be 1", 1, grid.getHeightOfColumn(2));
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2006, 23:05   #9
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Risolto!
Aggiunto il metodo in grid.

Codice:
    public int getHeightOfColumn(int column)
    {
        int value = 0;
        for(int i = grid.length - 1; i >= 0; i--)
        {
            Gem gem = grid[i][column];
            if(gem == null)
            {
                continue;
            }
            value++;
        }
        return value;
    }
GREEN

Di nuovo a te
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 10:10   #10
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Nuovo test

Codice:
    public void testColumnHeightWithHoles()
    {
        Gem floatingGem = createGem(DIAMOND);
        floatingGem.drop();
        insertAndUpdate(floatingGem, 4, 2);
        
        assertEquals("Column height must be 10", 10, grid.getHeightOfColumn(2));
    }

Ultima modifica di Ufo13 : 23-03-2006 alle 10:14.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 10:33   #11
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ecco il codice relativo a questo test.
Gl'indici mi hanno fatto un po' impazzire..ma alla fine ho vinto io

Codice:
    public int getHeightOfColumn(int column)
    {
        int i = 0;
        
        while(i < grid.length && grid[i][column] == null)
        {
            i++;
            
        }
        
        return grid.length - i ;
    }
..non è rimasto molto dell'originale

GREEN
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 11:52   #12
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
A questo punto mi permetto di fare un piccolo cambiamento nel test postato da Bonfo:

Codice:
    public void testStoneFrameInSecondPortion()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
             
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        
        grid.insertStoneIntoColumn(stone);
        assertEquals("Stone must using the second frame", 1, stone.getCurrentFrame());       
    }

Ultima modifica di Ufo13 : 23-03-2006 alle 12:08.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:08   #13
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Aggiunto test:

Codice:
    public void testSetAndGetCurrentFrame()
    {
        Gem gem = createGem();
        gem.createAnimationSequence(0);
        
        gem.setCurrentFrame(1);        
        assertEquals(1, gem.getCurrentFrame());
        
        gem.setCurrentFrame(2);        
        assertEquals(2, gem.getCurrentFrame());
    }
Passa da solo

Codice:
    public void insertStoneIntoColumn(Gem stone)
    {
        stone.setCurrentFrame(1);
    }
Il test di Bonfo ora passa.

Preparo nuovo test...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:20   #14
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Codice:
    public void testStoneFrameInSecondSegment()
    {
        GemFactory gemFactory = GemFactory.createForTesting(null);
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 11, 4);
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        grid.insertStoneIntoColumn(stone, 4);
        
        assertEquals("Stone must be using the second frame", 1, stone.getCurrentFrame());
    }
A te
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:54   #15
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Fatto

Codice:
    public void insertStoneIntoColumn(Gem stone, int column)
    {
        if(getHeightOfColumn(column)<=1)
        {
            stone.setCurrentFrame(0);
        }
        else
        {
            stone.setCurrentFrame(1);
        }
    }
GREEN

Ed ecco subito il prossimo test
Codice:
    public void testStoneFrameInThirdSegment()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 11, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 10, 4);
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        grid.insertStoneIntoColumn(stone, 4);

        assertEquals("Stone must be using the third frame", 2, stone.getCurrentFrame());       
    }
buon lavoro
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 23-03-2006 alle 13:05.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 19:00   #16
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ufo ha un po' di problemi ... impegni improvvisi
Vado avanti io

SOLUZIONE:
Codice:
    public void insertStoneIntoColumn(Gem stone, int column)
    {
        if(getHeightOfColumn(column)<=1)
        {
            stone.setCurrentFrame(0);
        }
        else if(getHeightOfColumn(column)<=3) 
        {
            stone.setCurrentFrame(1);
        }
        else
        {
            stone.setCurrentFrame(2);
        }
    }
GREEN

Ecco il prossimo test:
Codice:
    public void testStoneFrameInFourthSegment()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 11, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 10, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 9, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 8, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 7, 4);
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        grid.insertStoneIntoColumn(stone, 4);

        assertEquals("Stone must be using the fourth frame", 3, stone.getCurrentFrame());       
    }
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 19:09   #17
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
SOLUZIONE:
Codice:
    public void insertStoneIntoColumn(Gem stone, int column)
    {
        if(getHeightOfColumn(column)<=1)
        {
            stone.setCurrentFrame(0);
        }
        else if(getHeightOfColumn(column)<=3) 
        {
            stone.setCurrentFrame(1);
        }
       else if(getHeightOfColumn(column)<=6)
        {
            stone.setCurrentFrame(2);
        }
        else
        {
            stone.setCurrentFrame(3);
        }
    }
GREEN

Ecco il prossimo test:
Codice:
        public void testStoneFrameInFifthSegment()
    {
        int[] randomSequence = {0};
        GemFactory gemFactory = GemFactory.createForTesting(new MockRandomGenerator(randomSequence));
        
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 13, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 12, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 11, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 10, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 9, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 8, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 7, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 6, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 5, 4);
        insertAndUpdate(gemFactory.create(GemType.EMERALD), 4, 4);
        
        Gem stone = gemFactory.createStone(GemType.EMERALD_STONE);
        grid.insertStoneIntoColumn(stone, 4);

        assertEquals("Stone must be using the fifth  frame", 4, stone.getCurrentFrame());       
    }
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 19:10   #18
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ecco la soluzion all'ultimo test.
Codice:
    public void insertStoneIntoColumn(Gem stone, int column)
    {
        if(getHeightOfColumn(column)<=1)
        {
            stone.setCurrentFrame(0);
        }
        else if(getHeightOfColumn(column)<=3) 
        {
            stone.setCurrentFrame(1);
        }
        else if(getHeightOfColumn(column)<=6)
        {
            stone.setCurrentFrame(2);
        }
        else if(getHeightOfColumn(column)<=9)
        {
            stone.setCurrentFrame(3);
        }
        else
        {
            stone.setCurrentFrame(4);
        }
    }
GREEN
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 19:54   #19
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Siccome il metodo così fa abbastanza schifo, ecco un piccolo refactoring basato su una idea di Ufo.


Codice:
    private static final int[] STONES_FRAMES_BASED_ON_ROW = {0,0,1,1,2,2,2,3,3,3,4,4,4,4};

    public void insertStoneIntoColumn(Gem stone, int column)
    {     
        stone.setCurrentFrame(STONES_FRAMES_BASED_ON_ROW[getHeightOfColumn(column)]);
    }
Funziona perfettamente...ma non il checkstyle non mi fa passare il
private static final...quindi niente commit

TASK COMPLETATO
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 19:57   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Perchè la metti visibile a livello di classe ? Non la puoi mettere visibile solo a livello di metodo ?

Ultima modifica di cionci : 23-03-2006 alle 20:00.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Invia il tuo nome a 1,5 milioni di chilo...
Apple MacBook Neo 13'' con chip A18 Pro ...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v