Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2008, 11:10   #1
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Buggone di livello A: stone che non si trasformano

Il gioco crasha ad ogni partita perchè le stone non si trasformano in gemme:

Codice:
OS: Windows XP
Version: 5.1
Architecture: x86

VM Vendor: Sun Microsystems Inc.
Version: 1.6.0_02

Class Path: DiamondCrush.exe
JNI Library Path: lib/win32

Exception: class java.util.ConcurrentModificationException
Message: null
Display Adapter Driver: ati2dvag 6.14.10.6606

Stacktrace:
java.util.ConcurrentModificationException
	at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
	at java.util.AbstractList$Itr.next(Unknown Source)
	at it.diamonds.grid.Grid.runIteration(Unknown Source)
	at it.diamonds.grid.state.StoneTurnState.update(Unknown Source)
	at it.diamonds.grid.state.GemsPairOnControlState.update(Unknown Source)
	at it.diamonds.GameTurn.update(Unknown Source)
	at it.diamonds.grid.GridController.update(Unknown Source)
	at it.diamonds.PlayField.updatePlayField(Unknown Source)
	at it.diamonds.PlayField.update(Unknown Source)
	at it.diamonds.GameLoop.updateState(Unknown Source)
	at it.diamonds.AbstractLoop.loopStep(Unknown Source)
	at it.diamonds.Game.loopStep(Unknown Source)
	at it.diamonds.Game.loop(Unknown Source)
	at it.diamonds.Game.main(Unknown Source)
Chi se ne occupa? Capita ad ogni partita, quindi schizza di diritto alla massima priorità.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2008, 11:24   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Dire che stiamo andando a rilento e siamo sbadati e' un eufemismo.
Siamo proprio fermi. Allora?

Questo e' un bug gravissimo che va sistemato ora. Chi se ne occupa?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2008, 12:39   #3
cisc
Senior Member
 
L'Avatar di cisc
 
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
Quote:
Originariamente inviato da fek Guarda i messaggi
Dire che stiamo andando a rilento e siamo sbadati e' un eufemismo.
Siamo proprio fermi. Allora?

Questo e' un bug gravissimo che va sistemato ora. Chi se ne occupa?
me ne occupo io...ma devo aggiungere un po di roba a Grid, il refactoring che volevo fare in concomitanza al bug mi risulta un po lunghetto in periodo di esami
__________________
GNU MyServer Wants YOU!!
We live thinking we will never die. We die thinking we had never lived. Jason Becker
cisc è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2008, 14:36   #4
cisc
Senior Member
 
L'Avatar di cisc
 
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
ho introdotto un sistema di asynchronousInsertion delle droppable in Grid. Allora, test che evidenzia il bug:
Codice:
  public void testNoCuncurrentModificationOnStoneTransformation()
  {
      try
      {
          Droppable anotherStone = createStone(DIAMOND);
          stone.getAnimatedSprite().setCurrentFrame(5);
          anotherStone.getAnimatedSprite().setCurrentFrame(5);
          grid.insertDroppable(anotherStone, 5, 0);
          grid.insertDroppable(stone, 5, 2);
          grid.runIteration(iteration);
          grid.garbageCollectDroppables();
          grid.performAsynchronousInsertions();
      }
      catch (ConcurrentModificationException e)
      {
          fail();
      }

  }
per farlo passare ho introdotto i seguenti metodi in grid:

Codice:
    public void asynchronousInsertDroppable(Droppable droppable, int row, int column)
    {
        canInsertDroppable(droppable, row, column);

        setDroppablePositionInGrid(droppable, row, column);

        droppablesAsynchronousInserted.add(droppable);
    }


    private void setDroppablePositionInGrid(Droppable droppable, int row, int column)
    {
        droppable.getRegion().setRow(row);
        droppable.getRegion().setColumn(column);
        alignDroppableToCellUpperBound(droppable);
    }


    private void canInsertDroppable(Droppable droppable, int row, int column)
    {
        if (droppable == null)
        {
            throw new IllegalArgumentException();
        }
        if (isCellOccupiedWithNoToGarbageCollectDroppable(row, column))
        {
            throw new IllegalArgumentException();
        }
        if (droppableList.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
        if (droppablesAsynchronousInserted.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
    }


    private boolean isCellOccupiedWithNoToGarbageCollectDroppable(int row, int column)
    {
        return !isCellFree(Cell.create(row, column)) && !droppablesToGarbageCollect.contains(getDroppableAt(Cell.create(row, column)));
    }


    public void performAsynchronousInsertions()
    {
        droppableList.addAll(droppablesAsynchronousInserted);
        droppablesAsynchronousInserted.clear();
    }
e relativi test:

Codice:
public class TestGridAsynchronousInsertions extends GridTestCase
{
    public void setUp()
    {
        super.setUp();
    }

    public void testNoSynchronousInsertion()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);

        grid.asynchronousInsertDroppable(droppable, 5, 0);
        assertNull(grid.getDroppableAt(Cell.create(5, 0)));
    }
    
    public void testAsynchronousInsertion()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);

        grid.asynchronousInsertDroppable(droppable, 5, 0);
        grid.performAsynchronousInsertions();
        assertSame(droppable,grid.getDroppableAt(Cell.create(5, 0)));
    }
    
    public void testNoAsynchronousInsertionOnNonFreeCell()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);
        grid.insertDroppable(droppable, 0, 0);
        
        try
        {
            grid.asynchronousInsertDroppable(droppable, 0, 0);
            fail();
        }
        catch (IllegalArgumentException e)
        {
            ;
        }
    }
    
    public void testNoAsynchronousInsertionOfAlreadyInsertedDroppable()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);
        grid.insertDroppable(droppable, 0, 0);
        
        try
        {
            grid.asynchronousInsertDroppable(droppable, 5, 0);
            fail();
        }
        catch (IllegalArgumentException e)
        {
            ;
        }
    }
    
    public void testNoTwoAsynchronousInsertionOfSameDroppable()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);
        grid.asynchronousInsertDroppable(droppable, 0, 0);
        
        try
        {
            grid.asynchronousInsertDroppable(droppable, 5, 0);
            fail();
        }
        catch (IllegalArgumentException e)
        {
            ;
        }
    }
    
    public void testNoNullDroppableAsynchronousInserted()
    {
        try
        {
            grid.asynchronousInsertDroppable(null, 5, 0);
            fail();
        }
        catch (IllegalArgumentException e)
        {
            ;
        }
    }
    
    public void testNoDroppableInsertionOfAlreadyAsnchronousInsertedDroppable()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);
        grid.asynchronousInsertDroppable(droppable, 0, 0);
        
        try
        {
            grid.insertDroppable(droppable, 5, 0);
            fail();
        }
        catch (IllegalArgumentException e)
        {
            ;
        }
    }
    
    public void testAsynchronousInsertionOnCellBeOccupiedWithToGarbageCollectDroppable()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);
        Droppable droppableToRemove = createGem(DroppableColor.DIAMOND);

        grid.insertDroppable(droppableToRemove, 5, 0);
        grid.addDroppableToGarbage(droppableToRemove);
        try
        {
            grid.asynchronousInsertDroppable(droppable, 5, 0);
        }
        catch (IllegalArgumentException e)
        {
            fail();
        }
    }
    
    public void testNoDoubleAsynchronousInsertion()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);

        grid.asynchronousInsertDroppable(droppable, 5, 0);
        grid.performAsynchronousInsertions();
        grid.performAsynchronousInsertions();
        assertEquals(1, grid.getNumberOfDroppables());
    }
    
    public void testDroppableAsynchronousInsertedInRightPlace()
    {
        Droppable droppable = createGem(DroppableColor.DIAMOND);

        grid.asynchronousInsertDroppable(droppable, 5, 3);
        grid.performAsynchronousInsertions();
        assertEquals(gridPosition.getX()+3*Cell.SIZE_IN_PIXELS, droppable.getAnimatedSprite().getPosition().getX());
        assertEquals(gridPosition.getY()+5*Cell.SIZE_IN_PIXELS, droppable.getAnimatedSprite().getPosition().getY());
    }

}
Qualche nome di metodo forse è un po forzato, ma non m'è venuto in mente altro
__________________
GNU MyServer Wants YOU!!
We live thinking we will never die. We die thinking we had never lived. Jason Becker
cisc è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 13:54   #5
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Il bug è risolto quindi? Con l'ultima build non mi si presenta.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 14:54   #6
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cisc Guarda i messaggi
Qualche nome di metodo forse è un po forzato, ma non m'è venuto in mente altro
cisc! Stiamo semplificando Grid, non voglio che gli sbatti dentro altri dieci metodi. Reverta tutto, e crea una classe se necessario.

E poi, non so veramente piu' come dirtelo, gli spazi non costano nulla, metti questi spazi attorno agli operatori e le interlinee. I tuoi metodi sono un wall text spesso incomprensibile.

Inoltre:

Codice:
   private void canInsertDroppable(Droppable droppable, int row, int column)
    {
        if (droppable == null)
        {
            throw new IllegalArgumentException();
        }
        if (isCellOccupiedWithNoToGarbageCollectDroppable(row, column))
        {
            throw new IllegalArgumentException();
        }
        if (droppableList.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
        if (droppablesAsynchronousInserted.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
    }
Le eccezioni vanno usate solo in casi, appunto, eccezionali, non per comunicare condizioni d'errore come in questo caso. Questa catena di if e' da eliminare.

In futuro sto seriamente pensando a importi alcune regole:

- se scrivi un metodo in versione wall-text faccio il revert
- se scrivi anche un solo if faccio il revert
- se aggiungi un metodo alla classe Grid faccio il revert

E poi ti spezzo le ginocchia

Ultima modifica di fek : 11-03-2008 alle 15:04.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 15:27   #7
cisc
Senior Member
 
L'Avatar di cisc
 
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
Quote:
Originariamente inviato da fek Guarda i messaggi
cisc! Stiamo semplificando Grid, non voglio che gli sbatti dentro altri dieci metodi. Reverta tutto, e crea una classe se necessario.
beh dai, faceva parte del refactoring che avevo in mente di fare togliere sti metodi che ho aggiunto e il garbage collector da grid

Quote:
E poi, non so veramente piu' come dirtelo, gli spazi non costano nulla, metti questi spazi attorno agli operatori e le interlinee. I tuoi metodi sono un wall text spesso incomprensibile.
così incomprensibile? mea culpa, cerco almeno di fare un sorce -> format prima di committare


Quote:
Inoltre:

Codice:
   private void canInsertDroppable(Droppable droppable, int row, int column)
    {
        if (droppable == null)
        {
            throw new IllegalArgumentException();
        }
        if (isCellOccupiedWithNoToGarbageCollectDroppable(row, column))
        {
            throw new IllegalArgumentException();
        }
        if (droppableList.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
        if (droppablesAsynchronousInserted.contains(droppable))
        {
            throw new IllegalArgumentException();
        }
    }
Le eccezioni vanno usate solo in casi, appunto, eccezionali, non per comunicare condizioni d'errore come in questo caso. Questa catena di if e' da eliminare.
questa catena d'if già c'era in grid, l'ho solo estratta in un metodo, notando una certa urgenza nel risolvere il bug, e non avendo io molto tempo per pensare ad un refactoring più corposo, ho preferito committare la risoluzione del bug per poi rimandare il refactoring a dopo

Quote:
In futuro sto seriamente pensando a importi alcune regole:

- se scrivi un metodo in versione wall-text faccio il revert
- se scrivi anche un solo if faccio il revert
- se aggiungi un metodo alla classe Grid faccio il revert

E poi ti spezzo le ginocchia
no le ginocchia noooo
__________________
GNU MyServer Wants YOU!!
We live thinking we will never die. We die thinking we had never lived. Jason Becker
cisc è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 15:41   #8
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
Quote:
Originariamente inviato da cisc Guarda i messaggi
ho introdotto un sistema di asynchronousInsertion delle droppable in Grid.
<...>


ma... ma... passare a qualcosa del tipo "for(...) droppable = droppable.transform()" senza complicarsi la vita con inserimenti asincroni ( e soprattutto eliminando una iteration ) ?

non fare l' errore che faceva (e qualche volta ancora fa ) il sottoscritto, non cedere alla tentazione di aggiungere 1000 righe di codice per qualcosa che magari si può fare con una o due...
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate

Ultima modifica di jappilas : 11-03-2008 alle 15:44.
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 15:52   #9
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da jappilas Guarda i messaggi


ma... ma... passare a qualcosa del tipo "for(...) droppable = droppable.transform()" senza complicarsi la vita con inserimenti asincroni ( e soprattutto eliminando una iteration ) ?
il problema e che il metodo che dovrebbe inserirle, riceve le gemme da esaminare da un iterator. L'iterator è sulla griglia.


Ops. Ho appena avuto un idea geniale . Quando si fa l'iterator, si fa la clone della lista e poi si cicla su quella. Le insert, remove, sticazzi, saranno sulla lista originale.

E' un idea che mi è venuta durante sto post, ma a braccio dovrebbe funzionare.

E dovrebbe eliminare sia l'inserimento asincrono, sia il garbage collector delle gemme.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 16:06   #10
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cisc Guarda i messaggi
beh dai, faceva parte del refactoring che avevo in mente di fare togliere sti metodi che ho aggiunto e il garbage collector da grid
Ok, toglitelo dalla mente ora, non voglio vedere nulla con asynchronous.
Va benissimo togliere il garbage collector. Prova con il suggerimenti di jappi.

Quote:
così incomprensibile? mea culpa, cerco almeno di fare un sorce -> format prima di committare
Si', e' cosi' incomprensibile
Non basta fare un format, devi proprio imparare a raggruppare il codice per blocchi logici (che poi estrarrai in metodi ). E metti quegli spazi fra gli operatori.

Quote:
questa catena d'if già c'era in grid, l'ho solo estratta in un metodo, notando una certa urgenza nel risolvere il bug, e non avendo io molto tempo per pensare ad un refactoring più corposo, ho preferito committare la risoluzione del bug per poi rimandare il refactoring a dopo
Ok, la prossima volta metti un REFACTOR THIS e scrivi come fare il refactoring se non hai il tempo di farlo tu.

Quote:
no le ginocchia noooo
Dita o ginocchia.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 16:07   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da thebol Guarda i messaggi
il problema e che il metodo che dovrebbe inserirle, riceve le gemme da esaminare da un iterator. L'iterator è sulla griglia.


Ops. Ho appena avuto un idea geniale . Quando si fa l'iterator, si fa la clone della lista e poi si cicla su quella. Le insert, remove, sticazzi, saranno sulla lista originale.

E' un idea che mi è venuta durante sto post, ma a braccio dovrebbe funzionare.

E dovrebbe eliminare sia l'inserimento asincrono, sia il garbage collector delle gemme.
Si'!
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 16:08   #12
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da jappilas Guarda i messaggi
non fare l' errore che faceva (e qualche volta ancora fa ) il sottoscritto, non cedere alla tentazione di aggiungere 1000 righe di codice per qualcosa che magari si può fare con una o due...
Ho le lacrime agli occhi.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 16:32   #13
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da jappilas Guarda i messaggi
non fare l' errore che faceva (e qualche volta ancora fa ) il sottoscritto, non cedere alla tentazione di aggiungere 1000 righe di codice per qualcosa che magari si può fare con una o due...

__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 18:23   #14
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da fek Guarda i messaggi
Si'!
ho provato a rotta di collo in treno e funziona.

Ora va fatta un po meglio,e messi a posto anche dei test(alcuni nn compilavano).

io nn posso, ho un altro refactoring in corso e stasera sono occupato a soffrire
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 10:52   #15
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
A che punto siamo con questo bug?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 13:03   #16
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da jappilas Guarda i messaggi
ma... ma... passare a qualcosa del tipo "for(...) droppable = droppable.transform()" senza complicarsi la vita con inserimenti asincroni ( e soprattutto eliminando una iteration ) ?
Questa non e` la soluzione al problema. Non hai piu` l'eccezione ma ottieni altri bug peggiori.

La soluzione e` il clone della lista IMHO
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 13:32   #17
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Questa non e` la soluzione al problema. Non hai piu` l'eccezione ma ottieni altri bug peggiori.

La soluzione e` il clone della lista IMHO

per il clone basta fare new LinkedList(droppables). Va fatto in 2 punti del codice(quello che itera e da un altra parte, basta cercare dove viene usata la garbageDeletion).

poi si toglie la garbage deletione e si rimette quella normale. Uguale per l'inserimento
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 14:00   #18
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Questa non e` la soluzione al problema. Non hai piu` l'eccezione ma ottieni altri bug peggiori.
quali?
comunque il senso non era che *quella* fosse una soluzione perfetta, ma suggerire di cercare una soluzione (qualsiasi) rapida, che sfrutti quello che già abbiamo e il polimorfismo quanto più possibile
Quote:
La soluzione e` il clone della lista IMHO
che infatti mi piace perchè semplifica il codice attuale
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate

Ultima modifica di jappilas : 12-03-2008 alle 14:07.
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 17:09   #19
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da thebol Guarda i messaggi
per il clone basta fare new LinkedList(droppables). Va fatto in 2 punti del codice(quello che itera e da un altra parte, basta cercare dove viene usata la garbageDeletion).

poi si toglie la garbage deletione e si rimette quella normale. Uguale per l'inserimento
Ehm... perche' LinkedList e non ArrayList? o addirittura aggiungere il costruttore DroppableList(DroppableList list)?

E poi non c'e' gia' il metodo clone() che fa tutto?
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 19:25   #20
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Ehm... perche' LinkedList e non ArrayList?
perchè per iterare è più efficiente una linkedList, e perchè manco avevo visto che era un arrayList(alla fine è una lista temporanea, può essere quello che vuole)

Quote:
o addirittura aggiungere il costruttore DroppableList(DroppableList list)?
manco avevo visto che era una droppableList(ma che serve poi sta classe? a risparmiarsi List<Droppable> nel codice???). Perchè aggiungere un costruttore quando si può fare senza? La lista sarebbe temporanea per il for each e basta.


Quote:
E poi non c'e' gia' il metodo clone() che fa tutto?
il metodo clone lo eviterei(vai a sapere come lo implementa una classe..), se cè il costruttore per copia imho e meglio usare quello.


btw provo a fare il refactoring
thebol è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
DDL PMI, stop alle false recensioni: le ...
Classifiche JustWatch marzo: Una battagl...
iPhone Fold a rischio ritardo: problemi ...
Artemis II: raggiunto il punto più...
LG OLED e Hisense QLED da 85'' e 98'': s...
DJI Mini 5 Pro Fly More Combo a 862€: se...
Roborock Saros 10R a 899,99€: uno dei mi...
Samsung dice addio alla sua app Messaggi...
Moto G86 5G, Xiaomi Redmi 15, POCO X7 Pr...
Outlook Classic, risolto il bug delle em...
Netflix lancia Playground, una nuova app...
SpaceX lancerà i nuovi Pelican Ge...
Amazon Haul: -25% sul primo ordine con i...
Windows 11: Microsoft promette (ancora u...
NVIDIA non può più usare il suo stesso t...
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: 10:53.


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