Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR 200 Pro: potrete fare ritratti da fotografo professionista! 
Recensione HONOR 200 Pro: potrete fare ritratti da fotografo professionista! 
HONOR sorprende il mercato dei medio gamma e lo fa con il nuovo HONOR 200 Pro, uno smartphone che sa fotografare ritratti professionali grazie ad un lavoro di Intelligenza Artificiale e di ottimizzazione realizzato in collaborazione con lo studio Harcourt di Parigi. Lo abbiamo messo in prova e questi sono i risultati.
I robot tagliaerba che nascono in Italia: visita nella sede (e nella fabbrica) di Stiga
I robot tagliaerba che nascono in Italia: visita nella sede (e nella fabbrica) di Stiga
Abbiamo avuto l'opportunità di visitare la sede di Stiga, azienda che a Castelfranco Veneto ha la sua sede operativa e produttiva, dove nascono tanti prodotti per la cura del verde, tra cui i nuovi robot autonomi
Nutanix .NEXT 2024: oltre l'iperconvergenza per rimpiazzare VMware
Nutanix .NEXT 2024: oltre l'iperconvergenza per rimpiazzare VMware
Nutanix dà appuntamento a Barcellona per la sua conferenza .NEXT. Incontriamo vari esponenti dell'azienda, tra cui il CEO, e molteplici clienti per capire come Nutanix stia affrontando questo periodo di grossi cambiamenti, dettati sia dall'acquisizione di VMware da parte di Broadcom, sia dall'arrivo dell'IA, ormai onnipresente. È una di quelle occasioni in cui davvero si respira il vento del cambiamento
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-02-2008, 14:14   #301
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4740
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
E visto che ci siamo in questo momento ho messo la funzione shutDown() che spegne tutto in GameLoop ma mi accorgo solo ora che forse starebbe meglio in Game che è la classe che si preoccupa di creare tutto.
io la metterei in Environment (togliendo la chiamata a stopMusic() che ricade nella procedura di uscita dal game loop) , comunque chiamata alla fine da Game.start() (meglio forse sarebbe run()) per simmetria rispetto alla creazione dell' environment
__________________
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 : 23-02-2008 alle 14:20.
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 14:42   #302
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
fatto..
il moltiplicatore * 2 serviva perchè il movimento verso il basso veniva calcolato facendo gravity / 2...
Però praticamente tutti i test passavano lo stesso tranne un paio in cui veniva calcolata la posizione della cella al pixel.
Ora passa tutto ed è un bel pò + leggibile e soprattutto si capisce meglio cosa fanno quei test
Ottimo!

Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
mmm..
è normale che la build machine dica:

cmq ora mi sa che vado al lavoro....
Boh, devo fare un clean di CC.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 18:55   #303
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Avevo notato anche io questa cosa durante il refactoring ed ero arrivato alla stessa soluzione. Sono praticamente sicuro di aver fatto il commit dopo aver estratto il corpo del loop in una funzione esterna di nome loopStep. No basta usare quella invece di loopOneStep?
loopStep == loopOneStep, ero solo pigro ad andare a vedere il nome esatto

Quote:
Cavolo ecco come faceva!
Quindi in questo momento la variabile quit rappresenta sia l'uscita dal gioco che l'uscita dal loop. Non ci conviene gestire i due casi separatamente per rendere più chiara la gestione dei loop? E visto che ci siamo in questo momento ho messo la funzione shutDown() che spegne tutto in GameLoop ma mi accorgo solo ora che forse starebbe meglio in Game che è la classe che si preoccupa di creare tutto.
Ora come ora game è solo un "lanciatore" di loop. Per cui solo i loop possono essere avviati e spenti (chiamando la exitLoop di solito da un event). In più controlla a ogni loop che l'engine non sia in shutdown, cosa che capita quando si chiude la finestra.

Forse si potebbe fare che sia engine che quando viene chiamata la sua closeWindow() notifichi un evento di quit al loop che poi lo processerà. Bisogna vedere se sta in piedi.

ps il mio test del loop ha qualche problema, il thread rimane attivo fino a quando la suit di test non viene completata. Non crea problemi, però è brutto

sto testando un altra soluzione, vi faro sapere
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 19:26   #304
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
ecco la nuova versione
Codice:
    public void testLoop()
    {
        long timestamp = environment.getTimer().getTime();        

        ((MockTimer)environment.getTimer()).sleepOnAdvance(true);

        Runnable task = new Runnable() 
        {
            public void run()
            {
                loop.loop();
            }
        };

        Thread thread = new Thread(task);
        thread.start();
        
        try
        {
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            ;
        }
        
        loop.exitLoop();
        
        try
        {
            thread.join();
        }
        catch (InterruptedException e)
        {
            ;
        }
        assertTrue(timestamp + 2 < environment.getTimer().getTime());
        long numberOfAdvanceTime = environment.getTimer().getTime() - timestamp;
        assertEquals("The number of advance in timer must be equal to number of updateState in loop", numberOfAdvanceTime, mockLoop.getNumStateUpdated());
    }
in particolare testa che il loop abbia girato almeno + di 2 volte e che il numero di volte che il timer è avanzato sia uguale al numero di volte che è stata chiamata la updateState sul loop

Ho provato anche a farlo fallire (facendo un loop infinito) e con il fork attivato in junit il test fallisce per timeout(impostabile da xml il default mi sembra di aver letto 18 sec).

Con il fork disattivato invece il test rimane inloopato ma forse chiamando una join con timeout si può risolvere
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 19:48   #305
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    public void testLoop()
    {
        long timestamp = environment.getTimer().getTime();        

        ((MockTimer)environment.getTimer()).sleepOnAdvance(true);

        Runnable task = new Runnable() 
        {
            public void run()
            {
                loop.loop();
            }
        };

        Thread thread = new Thread(task);
        thread.start();
        
        try
        {
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            ;
        }
        
        loop.exitLoop();    
        
        try
        {
            thread.join(20000);
        }
        catch (InterruptedException e)
        {
            ;
        }
        
        if (thread.isAlive())
        {
            fail("The thread must no be alive");
            thread.stop();
        }
        
        assertTrue(timestamp + 2 < environment.getTimer().getTime());
        long numberOfAdvanceTime = environment.getTimer().getTime() - timestamp;
        assertEquals("The number of advance in timer must be equal to number of updateState in loop", numberOfAdvanceTime, mockLoop.getNumStateUpdated());
    }
questo codice funziona anche con la fork disabilitata in junit. L'unico problema e la lunghezza di questo test(ma è un eccezione di test), e la chiamata thread.stop() che è deprecata e da warning a tempo di compilazione(e deprecata perchè per come sono le specifiche della jvm non si può garantire che un thread venga veramente stoppato, per cui si consiglia di usare una variabile volatile da controllare nel ciclo del loop per stoppare il thread).

Si può evitare la chiamata, ma si lascia un thread girare a vuoto fino alla fine del test(può essere accettabile).

L'unico problema potrebbe venire dal java memory model. Infatti 2 thread che accedono alla stessa variabile, non hanno la garanzia di vedere lo stesso stato della variabile, a meno che l'accesso non sia sincronizzato o la variabile sia volatile. Ora queste sono problematiche che raramente accadono in scenari mono processore(di solito capitano in scenari in cui ci sono cluster di cpu) per cui il problema e molto remoto.

L'alternativa sarebbe modificare quit all'interno di abstarctLoop rendendola volatile, però si cambierebbe l'implementazione per venire incontro ai test :\
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 22:01   #306
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da thebol Guarda i messaggi
L'alternativa sarebbe modificare quit all'interno di abstarctLoop rendendola volatile, però si cambierebbe l'implementazione per venire incontro ai test :\
Il che in TDD è più che normale!
In ogni caso la cosa si sta mostrando "succhia" tempo e in qualche modo non KISS. Purtroppo ora non mi vengono in mente molte idee...
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 22:06   #307
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
fatto..
il moltiplicatore * 2 serviva perchè il movimento verso il basso veniva calcolato facendo gravity / 2...
Però praticamente tutti i test passavano lo stesso tranne un paio in cui veniva calcolata la posizione della cella al pixel.
Ora passa tutto ed è un bel pò + leggibile e soprattutto si capisce meglio cosa fanno quei test
Dell x2 ne avevamo già parlato quando stavamo mettendo a posto canMoveWithFullGravity(), che a proposito è ancora sbagliata perchè supporta solo movimenti <= 1Cel.
Attenzione, se la gravità cirtica era 20, era necessario scrivere 20 * 2. Se ora hai messo 20, il che vuol dire gravità effettiva 10, il test passa ancora ( in quanto sei ancora dentro illimite), ma il primo che va a modificare il codice può andare a infilare un bug senza accorgersene, in quanto non c'è il test sul caso limite.

in ogni caso non modificare i test di nuovo, ma elimino semplicemente il / 2 nei conti.... tanti alla fine è una costante, basta andare a modifcare i valori nel config dividendoli per 2.

Alla faccia del costumer
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2008, 23:09   #308
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
L'operazione di rimozione del /2 mi sta facendo notare alcune cose:
1) Molti test controllano la stessa cosa, solo a livelli diversi. Ad esempio il controllo del corretto movimento di gem avviene a livello di Droppable, di Grid e di GRidController. Significa che l'integrazione è corretta, m anon ci complica un po' la vita??
2) Molti test sono gravity-dependant, ovvero il numro di update era stato calibrato per ottenere il test corretto...
Non avendo ancora cambiato il config, molti test falliscono senza ragionevoli motivi... tranne il fatto che ora il numero di update vanno dimezzati
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 23-02-2008 alle 23:19.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2008, 01:47   #309
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12077
Quote:
Originariamente inviato da thebol Guarda i messaggi
Codice:
    public void testLoop()
    {
        long timestamp = environment.getTimer().getTime();        

        ((MockTimer)environment.getTimer()).sleepOnAdvance(true);

        Runnable task = new Runnable() 
        {
            public void run()
            {
                loop.loop();
            }
        };

        Thread thread = new Thread(task);
        thread.start();
        
        try
        {
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            ;
        }
        
        loop.exitLoop();    
        
        try
        {
            thread.join(20000);
        }
        catch (InterruptedException e)
        {
            ;
        }
        
        if (thread.isAlive())
        {
            fail("The thread must no be alive");
            thread.stop();
        }
        
        assertTrue(timestamp + 2 < environment.getTimer().getTime());
        long numberOfAdvanceTime = environment.getTimer().getTime() - timestamp;
        assertEquals("The number of advance in timer must be equal to number of updateState in loop", numberOfAdvanceTime, mockLoop.getNumStateUpdated());
    }
questo codice funziona anche con la fork disabilitata in junit. L'unico problema e la lunghezza di questo test(ma è un eccezione di test), e la chiamata thread.stop() che è deprecata e da warning a tempo di compilazione(e deprecata perchè per come sono le specifiche della jvm non si può garantire che un thread venga veramente stoppato, per cui si consiglia di usare una variabile volatile da controllare nel ciclo del loop per stoppare il thread).

Si può evitare la chiamata, ma si lascia un thread girare a vuoto fino alla fine del test(può essere accettabile).

L'unico problema potrebbe venire dal java memory model. Infatti 2 thread che accedono alla stessa variabile, non hanno la garanzia di vedere lo stesso stato della variabile, a meno che l'accesso non sia sincronizzato o la variabile sia volatile. Ora queste sono problematiche che raramente accadono in scenari mono processore(di solito capitano in scenari in cui ci sono cluster di cpu) per cui il problema e molto remoto.

L'alternativa sarebbe modificare quit all'interno di abstarctLoop rendendola volatile, però si cambierebbe l'implementazione per venire incontro ai test :\
ehmm...
sto un pò fuso ora come ora..
ma anzichè usare un join non era meglio mettere nel thread un while(condition) con condition di tipo volatile boolean settabile a piacere a true o a false da un metodo synchronized?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2008, 01:50   #310
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12077
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Dell x2 ne avevamo già parlato quando stavamo mettendo a posto canMoveWithFullGravity(), che a proposito è ancora sbagliata perchè supporta solo movimenti <= 1Cel.
Attenzione, se la gravità cirtica era 20, era necessario scrivere 20 * 2. Se ora hai messo 20, il che vuol dire gravità effettiva 10, il test passa ancora ( in quanto sei ancora dentro illimite), ma il primo che va a modificare il codice può andare a infilare un bug senza accorgersene, in quanto non c'è il test sul caso limite.

in ogni caso non modificare i test di nuovo, ma elimino semplicemente il / 2 nei conti.... tanti alla fine è una costante, basta andare a modifcare i valori nel config dividendoli per 2.

Alla faccia del costumer
doh...
io ora ho sostituito tutti i Cell.SIZE * 2 con normalGravity ..
..e dove era prevista la stronger o la strongest gravity settavo il metodo corrispondente.
Nei test con il controllo della posizioen al pixel avevo correttamente effettuato il controllo ponendo yStep pari a actualGravity / 2, ma nei test dove non era previsto il controllo al pixel non l'ho fatto..
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2008, 21:54   #311
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Il CELL_SIZE * 2 era proprio per settare il valore limite (che è assolutamente diverso dal valore di normal gravity) almeno quelli prova a revertarli!

Ora comunque capisco perchè sto test non fa più quello che dice
Codice:
    public void testBottomCollision()
    {
        grid.setNormalGravity();
        grid.insertDroppable(gem1, 12, 4);

        float oldYPosition = gem1.getAnimatedSprite().getSprite().getPosition().getY();

        grid.updateDroppable(gem1);
        grid.updateDroppable(gem1);

        Cell cell = Cell.create(13, 4);
        assertTrue(grid.isDroppableAt(cell));

        float newYPosition = grid.getDroppableAt(cell).getAnimatedSprite().getSprite().getPosition().getY();
        assertEquals(oldYPosition + grid.getActualGravity() , newYPosition, 0.0001f);
    }
infatti non collide assolutamente col fondo.
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2008, 09:14   #312
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Puoi correggerlo o integrarlo con un altro test?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2008, 09:43   #313
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ehmm...
sto un pò fuso ora come ora..
ma anzichè usare un join non era meglio mettere nel thread un while(condition) con condition di tipo volatile boolean settabile a piacere a true o a false da un metodo synchronized?
perchè meglio? Lancio il thread, aspetto che il thread con il loop finisca con timeout, e poi verifico se è finito o no (a seconda di cosa mi aspetto).

cmq sono riuscito a fare tutti i test ed a eliminare il warning sulla thread.stop con un annotation.

Stasera committo
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2008, 16:00   #314
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1536
Sono tornato ieri notte. In questi giorni estraggo la classe GameTurn =)
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2008, 18:54   #315
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da fek Guarda i messaggi
Puoi correggerlo o integrarlo con un altro test?
No, in realta' bisognerebbe revertare tutti i Cell.SIZE_IN_PIXELS * 2 e valutare caso per caso dove abbia senso mettere NormalGravity e dove lasciare Cell.SIZE_IN_PIXELS * 2, che poi, quando finiro' di rimuovere i /2, diventera' Cell.SIZE_IN_PIXELS.

Anche perche' potremmmo poi testare i casi dove la gravita' e' > Cell.SIZE_IN_PIXELS
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2008, 20:35   #316
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Alla faccia del costumer
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 26-02-2008, 12:32   #317
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
No, in realta' bisognerebbe revertare tutti i Cell.SIZE_IN_PIXELS * 2 e valutare caso per caso dove abbia senso mettere NormalGravity e dove lasciare Cell.SIZE_IN_PIXELS * 2, che poi, quando finiro' di rimuovere i /2, diventera' Cell.SIZE_IN_PIXELS.

Anche perche' potremmmo poi testare i casi dove la gravita' e' > Cell.SIZE_IN_PIXELS
Ok, proseguiamo per questa strada allora.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 26-02-2008, 15:40   #318
cisc
Senior Member
 
L'Avatar di cisc
 
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
ciao a tutti, vorrei riprendere a partecipare attivamente al progetto, prima di andare ad agire su qualche refactor this, vorrei sapere se per caso c'è qualcuno che sta lavorando in modo particolare in un'area del codice, in modo da non rischiare di sovrapporci, anche considerando il fatto che so arruginito co diamonds quindi i miei refactoring saranno lentucci all'inizio, o se sono state prese alcune decisioni di design cui magari tendere nel lavoro di rendere il codice più leggibile
__________________
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 26-02-2008, 15:50   #319
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da cisc Guarda i messaggi
ciao a tutti, vorrei riprendere a partecipare attivamente al progetto, prima di andare ad agire su qualche refactor this, vorrei sapere se per caso c'è qualcuno che sta lavorando in modo particolare in un'area del codice, in modo da non rischiare di sovrapporci, anche considerando il fatto che so arruginito co diamonds quindi i miei refactoring saranno lentucci all'inizio, o se sono state prese alcune decisioni di design cui magari tendere nel lavoro di rendere il codice più leggibile
Bentornato anche te
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 26-02-2008, 18:04   #320
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da fek Guarda i messaggi
Ok, proseguiamo per questa strada allora.
L'altra sera mi hanno portato a casa alle 23:30
Quindi non sono riuscito ad andare avanti con le modifiche che avevo iniziato a fare e a rintrodurre i Cell.SIZE_IN_PIXEL * 2. Confido in stasera

P.S.: bentornati sia a Vifani sia a cisc
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR 200 Pro: potrete fare ritratti da fotografo professionista!  Recensione HONOR 200 Pro: potrete fare ritratti ...
I robot tagliaerba che nascono in Italia: visita nella sede (e nella fabbrica) di Stiga I robot tagliaerba che nascono in Italia: visita...
Nutanix .NEXT 2024: oltre l'iperconvergenza per rimpiazzare VMware Nutanix .NEXT 2024: oltre l'iperconvergenza per ...
OMEN Transcend Gaming Laptop 14: compatto, leggero e una potenza con compromessi OMEN Transcend Gaming Laptop 14: compatto, legge...
HUAWEI Pura 70 Ultra: il cameraphone è di nuovo tra noi con un ma! Recensione  HUAWEI Pura 70 Ultra: il cameraphone è di...
Operazione Endgame colpisce ancora: arre...
realme GT 6, annunciate le specifiche de...
Hacker cinesi compromettono 20 mila disp...
Xiaomi 15: trapelano le specifiche chiav...
Gears of War: E-Day utilizzerà il Ray Tr...
U24 Pro ufficiale: ecco il nuovo smartph...
Tineco Floor One Stretch S6, l'aspirapol...
Synology DS1621+: questo NAS con 6 Hard ...
OPPO arriva in Europa con gli 'AI Phone'...
DS Automobiles presenta la collezione Sa...
Su Amazon si può trovare un video...
NVIDIA ha dominato nei datacenter l'anno...
Nuove vittorie per il cloud di Oracle: o...
La Commissione Europea impone dazi fino ...
Pure Storage colpita dagli attacchi in m...
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: 17:57.


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