Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2008, 00:06   #1
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
BigGem, per gli amici BugGem!

Allora mi stavo mettendo a testare mergeUp e mergeRight (http://www.hwupgrade.it/forum/showpo...postcount=124), quando sono esploso

E' normale che il costruttore di BigGem sia totalmente sgangerato e probabilmente poco testato?!?

Cosa se ne fa bigGem di essere costrutita con una size 1x1 (anzi bisognerebbe costruirla solo con size 2x2) e poi cosa se ne fa di sapere da quali gemme e' stata creata, e poi che se ne fa dell position della sprite( ultimo parametro Point) a costruzione, che tanto dipenda da row e column passatigli come primi parametri ??
Inoltre BigGem e' un Droppable, e quindi la sua row e column non devo essere gestite a creazione, ma ad inserimento come per le altre droppable.

E poi e' normale che siano pochissimi i testCase che usano questo costruttore?? Vuol dire che tutte le volte che abbiamo problemi con BigGem andiamo a a:
-creare la griglia,
- inserire le gemme
-fare updateBigGem

Insomma.... abbiamo fatto un po' i porcellini

Altro che calcio rotante volante, qui ci vuole la sacra tecnica del colpo della capocciata di travertino di Hokuto

__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 00:59   #2
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Se si puo` cambiare BugGem eliminando le gemme contenute in essa ben venga! Le prime implementazioni le richiedevano ma forse ora...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 07:06   #3
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Dove stiamo andando??

Allora, come avete capito, secondo me il costruttore di BigGem è "sbagliato".
Quello giusto, per me, è:
Codice:
    public BigGem(DroppableColor color, AbstractEngine engine);
che inizializza una BigGem 2x2 con la sprite corretta e basta.
Il poizionamento della sprite e della BigGem vengono gestiti all'inserimento in grid, come succede per le altre droppable.
Inoltre non è dall'esterno che si aggiungono le gemma alla bigGem e che si cancellano quele assorbite da grid, ma se ne occupa la BigGem, che sa benissimo come fare queste cose.
Anche perchè a prima vista la differenza tra extend e mergeUp/Right non è così chiara.


Ora, per sapere come procedere, devo capire bene dove si vuole andare con il DroppabaleDescriptor (che non è testato ).

Se l'obiettivo è di avere un Droppabale generico che si comporta in modo diverso in base al descriptor, una specie di "behaviour injection" ( me lo sono inventato adesso, chissa se esiste ), allora dobbiamo renderci conto che tutte quele cose brutte (isGem, isStone, isSomthing, isSomethingElse...) probabilmente verrano risolte con il poliformismo in questa classe.
A questo punto mi viene da dire che deve quasi divenatare uno Startegy... in modo tale che quando si dice alla griglia TurnStoneInToGem o qualsiaisi altro "stato", ogni droppable si comporterà in modo diverso in base al descriptor.
Ciò facendo però stiamo semplicemente portando fuori dal concetto di droppable la gerechia di Gem, Stone, Flash e quant'altro, che finirà inesorabilemnte in DroppableDescriptor.

E' questo quello che vogliamo?

In questo caso mi ritornerebbe utile farmi generare la AnimatedSprite direttamente dal descriptor.

Esempio:
Codice:
    public BigGem(DroppableColor color, AbstractEngine engine)
    {
        
        super(new DroppableDescription(AbstractDroppableType.BIG_GEM, color), engine);
    }

    protected AbstractDroppable(DroppableDescription droppableDescription, AbstractEngine engine)
    {
        this.type = droppableDescription.getType();
        this.color = droppableDescription.getColor();
        
        setAnimatedSprite(droppableDescription.createSprite(engine));
    }

    public AnimatedSprite createSprite(AbstractEngine engine) {
        return type.createAnimatedSprite(engine, color);
    }

    public AnimatedSprite createAnimatedSprite(AbstractEngine engine, DroppableColor color) {
        TiledSprite sprite = new TiledSprite(color.createTiledImage(engine), 2, 2);
        return new AnimatedSprite(sprite, AnimationDescription.createNullAnimation());
    }
Quello sopra è il caso della BigGem.


P.S.: anche AnimationDescriptor non è testato....

P.P.S.: ehm.... è colpa del coach se mancano i test nei Descriptor. O non ho capito niente io (), oppure vediamo se si spezza le ditine anche da solo


Oh, scherzo.... non mi far bannare
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 06-02-2008 alle 08:18.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 09:30   #4
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Allora, come avete capito, secondo me il costruttore di BigGem è "sbagliato".
Quello giusto, per me, è:
Codice:
    public BigGem(DroppableColor color, AbstractEngine engine);
che inizializza una BigGem 2x2 con la sprite corretta e basta.
Il poizionamento della sprite e della BigGem vengono gestiti all'inserimento in grid, come succede per le altre droppable.
Inoltre non è dall'esterno che si aggiungono le gemma alla bigGem e che si cancellano quele assorbite da grid, ma se ne occupa la BigGem, che sa benissimo come fare queste cose.
Anche perchè a prima vista la differenza tra extend e mergeUp/Right non è così chiara.


Ora, per sapere come procedere, devo capire bene dove si vuole andare con il DroppabaleDescriptor (che non è testato ).

Se l'obiettivo è di avere un Droppabale generico che si comporta in modo diverso in base al descriptor, una specie di "behaviour injection" ( me lo sono inventato adesso, chissa se esiste ), allora dobbiamo renderci conto che tutte quele cose brutte (isGem, isStone, isSomthing, isSomethingElse...) probabilmente verrano risolte con il poliformismo in questa classe.
A questo punto mi viene da dire che deve quasi divenatare uno Startegy... in modo tale che quando si dice alla griglia TurnStoneInToGem o qualsiaisi altro "stato", ogni droppable si comporterà in modo diverso in base al descriptor.
Ciò facendo però stiamo semplicemente portando fuori dal concetto di droppable la gerechia di Gem, Stone, Flash e quant'altro, che finirà inesorabilemnte in DroppableDescriptor.

E' questo quello che vogliamo?

In questo caso mi ritornerebbe utile farmi generare la AnimatedSprite direttamente dal descriptor.

Esempio:
Codice:
    public BigGem(DroppableColor color, AbstractEngine engine)
    {
        
        super(new DroppableDescription(AbstractDroppableType.BIG_GEM, color), engine);
    }

    protected AbstractDroppable(DroppableDescription droppableDescription, AbstractEngine engine)
    {
        this.type = droppableDescription.getType();
        this.color = droppableDescription.getColor();
        
        setAnimatedSprite(droppableDescription.createSprite(engine));
    }

    public AnimatedSprite createSprite(AbstractEngine engine) {
        return type.createAnimatedSprite(engine, color);
    }

    public AnimatedSprite createAnimatedSprite(AbstractEngine engine, DroppableColor color) {
        TiledSprite sprite = new TiledSprite(color.createTiledImage(engine), 2, 2);
        return new AnimatedSprite(sprite, AnimationDescription.createNullAnimation());
    }
Quello sopra è il caso della BigGem.


P.S.: anche AnimationDescriptor non è testato....

P.P.S.: ehm.... è colpa del coach se mancano i test nei Descriptor. O non ho capito niente io (), oppure vediamo se si spezza le ditine anche da solo


Oh, scherzo.... non mi far bannare
Ovviamente se testi una classe a colpi di refactoring ti esce non testata. O meglio ti esce testata indirettamente.

In teoria la "potenza di testing" rimane la stessa (a meno di non aggiungere funzionalita`).

L'unico problema e` che i test sono indiretti e quindi difficili da identificare.

Quando ho estratto AnimatedSprite da AbstractSingleDroppable la classe non aveva test. Alcuni li ho dovuti scrivere a manina ma altri li ho semplicemente trovati rovistando in altri file. Comunque quelle due classi hanno bisogno dei loro test case :P
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 10:24   #5
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Allora, come avete capito, secondo me il costruttore di BigGem è "sbagliato".
Quello giusto, per me, è:
Codice:
    public BigGem(DroppableColor color, AbstractEngine engine);
che inizializza una BigGem 2x2 con la sprite corretta e basta.
Il poizionamento della sprite e della BigGem vengono gestiti all'inserimento in grid, come succede per le altre droppable.
Perfetto. Fai pure. Ieri mi sono limitato a semplificare il costruttore ma senza cambiarne comportamento.


Quote:
Ora, per sapere come procedere, devo capire bene dove si vuole andare con il DroppabaleDescriptor (che non è testato ).
DroppableDescription e AnimationDescription sono due mie creazioni
Sono due value type, hanno semantica puramente di valore (anche se in Java non puo' essere forzata). In parole povere contengono solo dati, sono copiabili, non hanno comportamento. E senza comportamento non c'e' nulla da testare

Quindi anche in futuro rimarranno tali. Ho provato a spostare un createImage in DroppableDescripton ma rompe la mia idea di semantica di valore, infatti avrebbe bisogno di un test diretto che non ho scritto, perche' era un semplice tentativo di refactoring, che non mi sta piacendo.

Le classi Description NON sono degl strategy e non lo devono diventare.


Quote:
P.P.S.: ehm.... è colpa del coach se mancano i test nei Descriptor. O non ho capito niente io (), oppure vediamo se si spezza le ditine anche da solo


Oh, scherzo.... non mi far bannare
Value type = no behavior = no test
fek è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 10:27   #6
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Ovviamente se testi una classe a colpi di refactoring ti esce non testata. O meglio ti esce testata indirettamente.

In teoria la "potenza di testing" rimane la stessa (a meno di non aggiungere funzionalita`).

L'unico problema e` che i test sono indiretti e quindi difficili da identificare.
Qui si scontrano due necessita':
1- Testare una classe che esce dal refactorinng per avere test diretti
2- Non scrivere decine di test ridondanti che complicano solo il codice, vanno mantenuti e non ci aggiungono copertura

Purtroppo non c'e' una risposta univoca, dipendera' da situazione a situazione. Noi propenderemo comunque per il testare, a parte casi nei quali i test gia' esistenti che coprono quella classe sono abbastanza semplici e a basso livello.

Quote:
Quando ho estratto AnimatedSprite da AbstractSingleDroppable la classe non aveva test. Alcuni li ho dovuti scrivere a manina ma altri li ho semplicemente trovati rovistando in altri file. Comunque quelle due classi hanno bisogno dei loro test case :P
Sono value type, non c'e' niente da testare!
Che senso avrebbe testare se il numero 5 e' proprio il numero 5?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 10:41   #7
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Non ho il codice sottomano ma mi pare che abbiano dei getter. Per me i getter si possono testare... Magari e` overkilling ma di solito testiamo tutto..
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 20:02   #8
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Quote:
Originariamente inviato da fek Guarda i messaggi
Perfetto. Fai pure. Ieri mi sono limitato a semplificare il costruttore ma senza cambiarne comportamento.
Ok

Quote:
Originariamente inviato da fek Guarda i messaggi
... perche' era un semplice tentativo di refactoring, che non mi sta piacendo.
Vuol dire che i descriptor spariscono, o solo il createImage???


Quote:
Originariamente inviato da fek Guarda i messaggi
Value type = no behavior = no test
Imparo, imparo, imapro
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2008, 20:07   #9
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Non ho il codice sottomano ma mi pare che abbiano dei getter. Per me i getter si possono testare... Magari e` overkilling ma di solito testiamo tutto..
E' un value type! Io neppure ci metterei i getter! Ma poi checkstyle si arrabbia.

Ultima modifica di fek : 06-02-2008 alle 20:10.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 09:24   #10
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Fatto!

Adesso BigGem assomiglia molto di più ad un droppabale!!

Ora si costruisce una gemma con un determinato colore e una area 2x2.
Quindi per costruire gemme non c'è più bisogno di fare qui mandrubbi insert2x2Block, insertBigGem, updateBigGem e chi più ne ha più ne metta... Ora basta fare:

Codice:
        BigGem bigGem = new BigGem(DroppableColor.DIAMOND, engine);
        grid.insertDroppable(bigGem, row, column);
Per averele più grandi basta fare
Codice:
        singleGem.getRegion().setColumn(column);
        singleGem.getRegion().setRow(row);

        bigGem.addGem(singleGem);

        assertEquals(6, bigGem.getArea());
Dove row e column rappresentano la celle fino alla quale volete far espandere la BigGem.
Volendo si può aggiungere un costruttore con width e height.

Ora tutti a mettere a posto i test!!! (io vado a letto )
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 09:28   #11
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Ho cercato anche di eliminare le included gems.
Verebbe anche bene, se no per il fatto che BigGem vorrebbe eliminare le gemme appena le accorpa, ma così ci si becca la ConcurrentModificationException.

Per adesso ho lascito così, ma quella lista lì deve sparire!!

Viene usata solo in updateBigGems() di Grid.
O mettiamo in bigGem un metodo clearIncludedGems(), oppure aggiungiamo uno stato che non fa nient'altro che iterare la grid e pulirla dalle gemme segnate come da eliminare o con un flag ( che fa schifo) o con un lista.

Io voto per il metodo clearIncludedGems()
__________________
Software engineer
Bonfo's Blog

Ultima modifica di Bonfo : 07-02-2008 alle 09:35.
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 09:35   #12
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Fatto!

Adesso BigGem assomiglia molto di più ad un droppabale!!

Ora si costruisce una gemma con un determinato colore e una area 2x2.
Quindi per costruire gemme non c'è più bisogno di fare qui mandrubbi insert2x2Block, insertBigGem, updateBigGem e chi più ne ha più ne metta... Ora basta fare:

Codice:
        BigGem bigGem = new BigGem(DroppableColor.DIAMOND, engine);
        grid.insertDroppable(bigGem, row, column);
Per averele più grandi basta fare
Codice:
        singleGem.getRegion().setColumn(column);
        singleGem.getRegion().setRow(row);

        bigGem.addGem(singleGem);

        assertEquals(6, bigGem.getArea());
Dove row e column rappresentano la celle fino alla quale volete far espandere la BigGem.
Volendo si può aggiungere un costruttore con width e height.

Ora tutti a mettere a posto i test!!! (io vado a letto )
Hmm non mi piace la bigGem che si espande se aggiungi una Gem... Molto meglio se aggiungi una Region con le caratteristiche giuste (non basta una region 1x1 per esempio).

Ottimo lavoro comunque
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 10:48   #13
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Bel lavoro Bonfo! E' elegantissimo.

Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Hmm non mi piace la bigGem che si espande se aggiungi una Gem... Molto meglio se aggiungi una Region con le caratteristiche giuste (non basta una region 1x1 per esempio).

Ottimo lavoro comunque
Anche secondo me. Metterei un metodo che espande aggiungendo una che delega il lavoro ad un metodo che espande aggiungendo una region. Ma solo se il secondo serve a semplificare qualche pezzo di codice o test. Altrimenti va bene la sola gemma.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 10:49   #14
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Ho cercato anche di eliminare le included gems.
Verebbe anche bene, se no per il fatto che BigGem vorrebbe eliminare le gemme appena le accorpa, ma così ci si becca la ConcurrentModificationException.

Per adesso ho lascito così, ma quella lista lì deve sparire!!

Viene usata solo in updateBigGems() di Grid.
O mettiamo in bigGem un metodo clearIncludedGems(), oppure aggiungiamo uno stato che non fa nient'altro che iterare la grid e pulirla dalle gemme segnate come da eliminare o con un flag ( che fa schifo) o con un lista.

Io voto per il metodo clearIncludedGems()
Francamente non mi piace nessuna delle due idee. Cercherei un meccanismo piu' semplice ed elegante che non e' costretto ad esporre questo meccanismo interno.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 11:01   #15
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
In Grid esiste gia` removeGem. Basta chiamarlo da BigGem per le gemme incluse...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 13:17   #16
Baol
Member
 
L'Avatar di Baol
 
Iscritto dal: Apr 2006
Città: Gazzaniga (BG)
Messaggi: 67
Secondo me quella lista da qualche parte ci deve essere, non può sparire. Era "cattiva" quando se ne faceva un uso assurdo, ma è ovvio che se vuoi allargare la BigGem devi eliminare le gemme adiacenti, e non puoi farlo in concomitanza con il loro rilevamento o ti becchi la concurrent...
Certo, non va passata da oggetto a oggetto, andrebbe semplicemente creata, usata e "salutata" all'interno di uno stesso metodo.

Ad esempio, non si potrebbe delegare a UpdateBigGems il piccolo onere (per lei) di trovare ed eliminare le gemme, e invece far fare a BigGem solo la sua estensione tramite una Region?
__________________
"Non esiste l'impossibile. L'impossibile non esiste." Baolian, Libro V



Ultima modifica di Baol : 07-02-2008 alle 13:29.
Baol è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 14:13   #17
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Mi sembra complicato.

La soluzione semplice, secondo me, e` questa:
- Grid non contiene alcuna lista (in questo caso le Gem diventate BigGem) se non i Droppable contenuti
- BigGem mentre si estende si segna le gemme da eliminare in una lista
- Alla fine di ogni estensione BigGem itera la lista e chiama, per ogni gemma, grid.removeDroppable(gem);

Non funzionerebbe cosi`? Non ho il codice sotto mano...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 14:20   #18
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Mi sembra complicato.

La soluzione semplice, secondo me, e` questa:
- Grid non contiene alcuna lista (in questo caso le Gem diventate BigGem) se non i Droppable contenuti
- BigGem mentre si estende si segna le gemme da eliminare in una lista
- Alla fine di ogni estensione BigGem itera la lista e chiama, per ogni gemma, grid.removeDroppable(gem);

Non funzionerebbe cosi`? Non ho il codice sotto mano...
Mi piace molto. Ed abbiamo anche un volontario. Tu
Mi sembra un task da fare in pair e in TDD. Stasera dovrei tornare a casa presto e ci possiamo pensare assieme.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 14:32   #19
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
molto pene.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2008, 16:31   #20
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
molto pene.
ma è una mania quella di fregarmi le battute
e dire che questa non l'avevo neanche mai scritta sul forum
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Samsung lancia il Team Galaxy Italia per...
Magic Leap: indistinguibili dai normali ...
Aruba Cloud: trasparenza sui costi e str...
Quando il cloud si blocca e resti al fre...
Integrare per competere, la sfida digita...
Leggenda del rally e modernità: S...
La Python Software Foundation rinuncia a...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
Smartphone potenti sotto i 300€: ecco i ...
28 Offerte Amazon da non perdere: smartp...
X torna a crescere in Europa: +7 milioni...
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:37.


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