Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-04-2005, 18:15   #21
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Dal punto di vista sintattico l'asterisco non fa parte della specifica del tipo, bensì della specifica del "declarator", che definisce il tipo di oggetto dichiarato in una dichiarazione C;

nella dichiarazione

int *a;

la specifica del tipo è solo int, mentre l'oggetto dichiarato è '*a'.

cosi in

int *a, b;

int è il tipo e i 2 oggetti dichiarati sono *a e b,

Il tutto secondo la grammatica di Kenighan e Ritche:


http://www.lysator.liu.se/c/ANSI-C-g...ml#declaration
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2005, 18:31   #22
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Che macello!
Vabbe', alla fine basta che il compilatore capisca come usare il puntatore... Insomma, scrivere "char* a", "char * a", o "char *a" alla fine non ha alcuna grande differenza, se non sul piano della leggibilità.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2005, 18:53   #23
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da DanieleC88
Che macello!
Vabbe', alla fine basta che il compilatore capisca come usare il puntatore... Insomma, scrivere "char* a", "char * a", o "char *a" alla fine non ha alcuna grande differenza, se non sul piano della leggibilità.
"Every fool can write code that a machine can understand, only good programmers can write code that a human can understand" - Martin Fowler.

Adoro questa frase
fek è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2005, 19:18   #24
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fek
Adoro questa frase
Bella, piace anche a me.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 09:29   #25
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da fek
"Every fool can write code that a machine can understand, only good programmers can write code that a human can understand" - Martin Fowler.

Adoro questa frase
per Fek:

Io leggo sempre con molto piacere i tuoi post, sopratutto perchè insieme a tanti altri che partecipano a questo forum, contribuite con la vostra preparazione eccezionale a chiarire le idee ai 'giovani' come me che si affacciano al mondo della programmazione. So che sei una persona estremamente intelligente per cui spero che, la piccola provocazione che ti farò, ti diverta anzichè farti 'arrabbiare'

La domanda mia è: a che serve produrre un codice leggibile da altri, rinunciando magari ad un proprio modo 'sintattico', quando la maggior parte del codice prodotto, nel caso dei sistemi chiusi, non è destinato alla lettura di nessun altro?

Cioè, vorrei capire se la preoccupazione della leggibilità del codice sia più prerogativa di chi si muove nell'ambito open source, oppure sia realmente una regola da seguire a prescindere.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 09:45   #26
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
RaouL_BennetH: i progetti solitamente non si portano avanti da soli, ma all'interno di un team di sviluppo potrà succedere che il tuo codice venga letto da altri... Poi è chiaro che un team si deve dare una autoregolamentazione, altrimenti se uno dei programmatori esce dal team quel codice avrà grossi problemi di compresibilità per gli altri...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 10:29   #27
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da RaouL_BennetH
La domanda mia è: a che serve produrre un codice leggibile da altri, rinunciando magari ad un proprio modo 'sintattico', quando la maggior parte del codice prodotto, nel caso dei sistemi chiusi, non è destinato alla lettura di nessun altro?
Farmi arrabbiare? E' una splendida domanda
Ci vorrebbero pagine e pagine per rispondere.

Una parte dei motivi te li ha dati cionci, io aggiungo che e' imperativo mantenere alta la leggibilita' e la qualita' del proprio codice anche quando si programma da soli, perche' la persona che molto probabilmente dovra' rileggere e capire il tuo codice sarai proprio tu. E tu non vuoi far perdere del tempo a te stesso vero?

Credo che la motivazione principale dietro a questa affermazione risieda nel fatto che il codice non si scrive una volta sola e poi non lo si tocca piu', ma viene costantemente aggiornato, modificato, ripulito, ritoccato, corretto, revisionato, mantenuto. La stessa riga di codice, prima di andare in produzione alla fine del progetto, verra' probabilmente scritta una volta e riguardata decine, magari alla ricerca di un bug. E la persona che dovra' mantenere quella riga del codice sarai spesso proprio tu. Quando stai cercando un bug oppure inserendo una nuova funzionalita' e magari hai tempo fino a ieri, l'ultima cosa che vuoi e' perdere ulteriore tempo a leggere il codice e capirlo.

Il codice deve essere leggibile, autoesplicativo, minimale, e rivelare immediatamente le sue intenzioni.
Ti faccio un esempio che puo' sembrare estremo, ma in realta' non lo e' affatto e detta una buona norma di programmazione:

Guarda questo codice (inventato in un linguaggio simil C#):

Codice:
void AddItemToCollection(Array array)
{
  AddItemAtTheEnd(array);
  
  // increment the number of items
  itemsInCollection += 1;
}
E' sufficientemente leggibile. Puo' essere migliorato? Si'.

Codice:
void AddItemToCollection(Array array)
{
  AddItemAtTheEnd(array);
  IncrementNumberOfItems();  
}
La seconda versione si legge quasi come se fosse inglese, il commento e' sparito perche' non e' piu' necessario, visto che il metodo spiega gia' che cosa sta facendo e il commento sarebbe una duplicazione di informazioni. Nella seconda versione il codice stesso rivela chiaramente le sue intenzioni ed e' autoesplicativo. La seconda versione e' piu' leggibile della prima, anche di poco, ma il mezzo secondo che guadagno a leggere e capire la seconda versione, moltiplicato per decine di migliaia di righe fara' la differenza fra finire il mio task in tempo oppure no.

Certo, qualcuno potrebbe obiettare che una chiamata a funzione spreca qualche ciclo di clock... che lo dica
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 11:46   #28
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
grazie per le vostre risposte, ci tenevo e mi hanno chiarito le idee

Thx.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 28-04-2005 alle 12:01.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 13:43   #29
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Concordo con quanto detto da cionci e fek, e mi permetto di aggiungere che il codice deve essere ben leggibile innanzitutto per te stesso. Ad esempio, io avevo abbandonato da più di tre mesi lo sviluppo del mio "sistema operativo", ma quando l'ho ripreso, per fortuna, non ho avuto grandi difficoltà nel modificare il mio codice. Buoni commenti e sintassi chiara sono, per me, essenziali per riuscire a capire il mio stesso codice a distanza di tempo.

Ad esempio io scriverei:
Codice:
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char * argv[])
{
  int result;

  /* Skip the first argument, containing the path to our program */
  argc--;
  argv++;
  /* Process arguments */
  result = handle_options(argc,argv);
  if (result != 0)
  {
    fprintf(stderr, "Couldn't process the arguments.\n");
    return EXIT_FAILURE;
  }
  /* Return with no error */
  return EXIT_SUCCESS;
}
Piuttosto che:
Codice:
int main(int argc, char * argv[])
{
  int r;

  r=hdlopts(--argc,++argv);
  if (r != 0) return -1;
  return 0;
}
E non fato caso al significato del codice. È solo un esempio!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 28-04-2005 alle 13:45.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 14:57   #30
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da DanieleC88
Codice:
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char * argv[])
{
  int result;

  /* Skip the first argument, containing the path to our program */
  argc--;
  argv++;
  /* Process arguments */
  result = handle_options(argc,argv);
  if (result != 0)
  {
    fprintf(stderr, "Couldn't process the arguments.\n");
    return EXIT_FAILURE;
  }
  /* Return with no error */
  return EXIT_SUCCESS;
}
E si puo' sempre migliorare.
Prova cosi':

Codice:
#include <stdlib.h>
#include <stdio.h>

// argv[0] contains the path to our program
void SkipFirstArgument(int* argc, char** argv[])
{
  *argc -= 1;
  *argv += 1;
}

int ProcessArguments(int argc, char * argv[])
{
  int result;

  result = handle_options(argc,argv);
  if (result != 0)
  {
    fprintf(stderr, "Couldn't process the arguments.\n");
    return EXIT_FAILURE;
  }

  return EXIT_SUCCESS;
}

int main(int argc, char * argv[])
{
  SkipFirstArgument(&argc, &argv);

  return ProcessArguments(argc, argv);
}
Nota questa riga in particolare:

/* Return with no error */
return EXIT_SUCCESS;


Il commento non fa altro che ripetere quello che il codice gia' indica chiaramente, c'e' un'ovvia duplicazione e le duplicazioni vanno eliminate al piu' presto:

return EXIT_SUCCESS;

Il che porta dritto al discorso sui coi commenti, la butto li': Quando senti il bisogno di commentare un pezzo di codice, riscrivilo di modo che sia piu' chiaro e non abbia piu' bisogno del commento.

Il codice non va commentato
O meglio non commentare mai quello che fa il codice, ma solo le assunzioni sulle precondizioni e postcondizioni che non puoi esprimere in codice.

Nota le differenze in questo commento:

// argv[0] contains the path to our program
void SkipFirstArgument(int* argc, char** argv[])


Non sto commentando che cosa fa il codice, ma l'assunzione sulla quale si basa il codice di quella funzione, ovvero il fatto che il primo argomento contiene il path del programma, perche' non ho alcun modo di esprimere questa assunzione in codice. Il nome del metodo poi comunica che questo primo argomento sara' saltato.

Ultima modifica di fek : 28-04-2005 alle 15:05.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 16:26   #31
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fek
E si puo' sempre migliorare.
...E meno male che l'avevo pure scritto: "è solo un esempio".
Quote:
Originariamente inviato da fek
Il codice non va commentato
Non sono del tutto d'accordo. A volte ci si può trovare di fronte a cose un po' disorientanti, non come il semplice codice che ho scritto prima. Lì i commenti possono aiutare a decifrare subito.
Codice:
#define ischar(x) x >= 'a' && x <= 'z' ? x >= 'A' && x <= 'Z' ? 1 : 0 : 1
Non è subito chiaro. Però, pensandoci bene, il codice potrebbe essere anche più chiaro semplicmente scrivendolo in modo diverso.
Codice:
#define ischar(x) x >= 'a' && x <= 'z' || x >= 'A' && x <= 'Z'
In fondo basta questo...
Oppure, per modificare un po' il codice di prima:
Codice:
#define ischar(x) (x > 'a' && x < 'z') ? ((x > 'A' && x < 'Z') ? 1 : 0) : 1
Così le differenze sono già più evidenti.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 18:03   #32
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da DanieleC88
...E meno male che l'avevo pure scritto: "è solo un esempio".
Ho solo approfittato del tuo esempio interessante per introdurre il discorso sui commenti

Quote:
Non sono del tutto d'accordo. A volte ci si può trovare di fronte a cose un po' disorientanti, non come il semplice codice che ho scritto prima. Lì i commenti possono aiutare a decifrare subito.
Come dice Kent Beck, i commenti sono spesso un deodorante per coprire i cattivi odori nel codice, ma piuttosto di usare un deodorante e' meglio pulire il codice e togliere il cattivo odore

Nel caso del tuo ultimo esempio:
Codice:
#define ischar(x) (x > 'a' && x < 'z') ? ((x > 'A' && x < 'Z') ? 1 : 0) : 1
Sicuramente questo codice non e' chiarissimo, vediamo se questa versione aiuta:

Codice:
bool isChar(x)
{
  if (x >= 'a' && x <= 'z') return true;
  if (x >= 'A' && x <= 'Z') return true;

  return false;
}
Molto piu' leggibile vero? Possiamo ancora migliorarlo, volendo:

Codice:
bool isUpperCaseChar(char ch)
{
  return ch >= 'A' && ch <= 'Z';
}

bool isLowerCaseChar(char ch)
{
  return ch >= 'a' && ch <= 'z';
}

bool isChar(char ch)
{
  if (isUpperCaseChar(ch) || isLowerCaseChar(ch)) 
     return true;
  else
     return false;
}
Guarda che miglioramento ora, il codice rivela chiaramente le sue intenzioni, non ha bisogno di alcun commento e se non ho commesso errori dovrebbe anche compilare e funzionare

Certo, ci sono un paio di chiamate a funzioni, non e' efficiente come la prima versione, ma lascia che un profiler ci dica che e' questa funzione e' un punto critico dal punto di vista delle performance, e quando sappiamo che lo e', potremo sempre sostituire la versione piu' veloce, magari mantenendo la versione leggibile coperta da un #ifdef come documentazione.

Il mio consiglio e' il medesimo di Folwer e Beck (d'altronde mica me lo sono inventato io): quando senti il bisogno di commentare del codice perche' non e' chiaro, e' un segnale che il codice ti sta implorando per essere riscritto in maniera piu' chiara.

Ultima modifica di fek : 28-04-2005 alle 18:11.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 18:18   #33
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fek
Ho solo approfittato del tuo esempio interessante per introdurre il discorso sui commenti
Era interessante? Davvero?
Mi sembrava solo un banalissimo esempio, ma, se lo dici tu, mi fido.
Quote:
Originariamente inviato da fek
Il mio consiglio e' il medesimo di Folwer e Beck (d'altronde mica me lo sono inventato io): quando senti il bisogno di commentare del codice perche' non e' chiaro, e' un segnale che il codice ti sta implorando per essere riscritto in maniera piu' chiara.
Hai ragione. Io cerco di programmare, per quanto mi è possibile, in modo chiaro e ben commentato, ma d'ora in poi cercherò di rendere il codice autoesplicativo, senza il bisogno di commentare tanto.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2005, 20:50   #34
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Personalmente ho sempre usato la sintassi : char *p

perchè sui libri dove ho imparato hanno sempre usato quella.

Probabilmente è vero che char* è migliore (il libro di Stroustrup che sto usando per il C++ dice così e anche per quanto riguarda dichiarazioni multiple di variabili sulla stessa linea come dice anche fek. Forse anche te fek ti sei riferito a quel libro riguardo questo suggerimento? ) , farò qualche prova

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2005, 11:08   #35
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da AnonimoVeneziano
Personalmente ho sempre usato la sintassi : char *p

perchè sui libri dove ho imparato hanno sempre usato quella.

Probabilmente è vero che char* è migliore (il libro di Stroustrup che sto usando per il C++ dice così e anche per quanto riguarda dichiarazioni multiple di variabili sulla stessa linea come dice anche fek. Forse anche te fek ti sei riferito a quel libro riguardo questo suggerimento? ) , farò qualche prova

Ciao
Stai leggendo C++ terza edizione?

L'ho comprato qualche giorno fa.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2005, 14:56   #36
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
in effetti è molto meglio scrivere codice "autocommentante" e levare i commenti....
io ho iniziato da stamattina
cmq è uscita una discussione molto interessante.
C'è qualke link dove ci sono altri esempi di come migliorare il codice o qualke libro???
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2005, 15:07   #37
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da ^TiGeRShArK^
in effetti è molto meglio scrivere codice "autocommentante" e levare i commenti....
io ho iniziato da stamattina
cmq è uscita una discussione molto interessante.
C'è qualke link dove ci sono altri esempi di come migliorare il codice o qualke libro???

Libri? Quanti ne vuoi. Vai nel post in alto su questo forum e ne ho postati alcuni.
Code Complete 2 e Refactoring sono un must.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2005, 01:09   #38
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
vabbè, vorrei dire la mia e immagino che dopo tutto sto macello mi scannerete per ciò che dirò...
io uso qualcosa di simile alla notazione ungherese (non è una battuta per dire che la mia è una notazione arcana la notazione ungherese è proprio uno standard )
più precisamente: io di solito l'asterisco lo metto davanti al nome della variabile, non dopo quello del tipo; inoltre quando devo dichiarare un lungo elenco di variabili tutte dello stesso tipo, le "raggruppo" in base alla loro funzionalità: variabili che servono a scopi simili le metto nello stesso elenco, variabili diverse invece le dichiaro separatamente
ad esempio, se devo dichiarare un array di int, una variabile che contenga il numero di elementi dell'array, e un contatore usato in for per ciclare sull'array, dichiaro il tutto in questa maniera:
Codice:
int *pArr, nCount;
int i;
quanto vi siete inorriditi?

EDIT: non sono sicuro a dire il vero che le caratteristiche della notazione ungherese includano anche questo aspetto, so per certo che includono i prefissi delle variabili; a dire la verità infatti io mi sono semplicemente abituato allo stile Win32 degli esempi MSDN, e poi ho scoperto che la notazione di quegli esempi era quella ungherese...

Ultima modifica di 71104 : 30-04-2005 alle 01:12.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2005, 01:13   #39
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ah, dimenticavo! che cos'è una idiosincrasia?!?
(sono veramente riuscito a scriverlo?!?)
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2005, 01:19   #40
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
bene: ho appena trovato un documento che descrive la notazione ungherese, e con la dichiarazione dei puntatori non c'entra un cà!!!
è semplicemente una notazione per i nomi dei tipi e delle variabili, nient'altro; corrisponde quasi completamente allo stile che uso io.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
TikTok rafforza trasparenza e benessere ...
Zigbee 4.0 è qui: più sic...
La trasformazione agentica di Windows pa...
Crollo del 29% nelle vendite dirette: Ub...
Black Friday anticipato su Amazon: NARWA...
Disastro WhatsApp: esposti 3,5 miliardi ...
Hatsune Miku per tutti: ASUS ROG present...
La Definitive Edition di Tomb Raider sba...
Sicurezza PC: Microsoft punta sui chip d...
Gemini 3 Pro disponibile ora: è i...
Super sconti robot aspirapolvere: ECOVAC...
DOOM: The Dark Ages si espande con Ripat...
EA SPORTS annuncia il futuro della serie...
Tutte le TV già in offerta defini...
Meta non ha un monopolio nel settore dei...
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: 13:33.


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