Torna indietro   Hardware Upgrade Forum > Software > Programmazione > Corsi, Tutorial e FAQ

ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
Da ASUS un monitor particolare ma molto completo: principalmente indirizzato al videogiocatore, può essere sfruttato con efficacia anche per attività creative e di produzione multimediale
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Il nuovo robot aspirapolvere domestico di Dreame abbina funzionalità complete a un moccio flottante che raggiunge al meglio gli angoli delle pareti. Un prodotto tutto in uno semplice da utilizzare ma molto efficace, in grado di rispondere al meglio alle necessità di pulizia della casa
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR ha introdotto con Magic6 Pro la funzione Magic Portal che consente, tramite intelligenza artificiale, di suggerire scorciatoie agli utenti in modo da permettere di passare e accedere facilmente ai servizi tra app e dispositivi con un semplice tocco. Vi spieghiamo qui come funziona
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-03-2006, 13:22   #1
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
[Tutorial Java] Uso del processore di annotazioni APT di Java 5

Il tutorial richiede che si conosca l'esistenza delle annotazioni e poco più.

Ho omesso per brevità le istruzioni Java per mutare il testo dei sorgenti oggetto della manipolazione.

Non so dire se il comportamento mostrato nel tutorial sia esattamente quello di un preprocessore perchè il risultato è una mutazione permanente del testo che compone il codice del programma annotato.

Sicuramente pre-processa. Occorrerebbe sapere se il concetto di preprocessore escluda o meno la possibilità di cambiare il codice "masticato" in modo permanente. Una curiosità terminologica, in definitiva.

annotazioni.pdf

Dulcis in fundo, Java 6 (b74+) integra le funzioni di APT in javac, rendendo il tutto anche più semplice.

Ciao .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2006, 15:47   #2
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da PGI-Bis
Il tutorial richiede che si conosca l'esistenza delle annotazioni e poco più.

Ho omesso per brevità le istruzioni Java per mutare il testo dei sorgenti oggetto della manipolazione.

Non so dire se il comportamento mostrato nel tutorial sia esattamente quello di un preprocessore perchè il risultato è una mutazione permanente del testo che compone il codice del programma annotato.

Sicuramente pre-processa. Occorrerebbe sapere se il concetto di preprocessore escluda o meno la possibilità di cambiare il codice "masticato" in modo permanente. Una curiosità terminologica, in definitiva.

annotazioni.pdf

Dulcis in fundo, Java 6 (b74+) integra le funzioni di APT in javac, rendendo il tutto anche più semplice.

Ciao .
Veramente il termine esatto è 'processore', come hai scritto nel titolo, e non 'preprocessore'. Quindi direi che non c'è nessun dubbio riguardo il termine.
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2006, 16:25   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Che la "P" di APT stia per "processor" è innegabile così come il fatto che APT possa "processare" nel senso di produrre un output non finalizzato all'uso da parte di altri programmi.

Il mio dubbio, relativo all'altro comportamento di APT che, nel contesto esposto, è certo quello di un preprocessore, è se APT ed una parte del neonato javac 1.6 rientrino effettivamente nella categoria dei preprocessori (programmi che manipolano dati ad uso di altri programmi) o se definiscano una super-categoria della classe dei preprocessori che io ho definito cacofonicamente "preprocessori programmabili".

Ametto che possa apparire un po' sterile come curiosità ma non posso negare di averla.

Ciao.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 13:41   #4
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da PGI-Bis
Che la "P" di APT stia per "processor" è innegabile così come il fatto che APT possa "processare" nel senso di produrre un output non finalizzato all'uso da parte di altri programmi.

Il mio dubbio, relativo all'altro comportamento di APT che, nel contesto esposto, è certo quello di un preprocessore, è se APT ed una parte del neonato javac 1.6 rientrino effettivamente nella categoria dei preprocessori (programmi che manipolano dati ad uso di altri programmi) o se definiscano una super-categoria della classe dei preprocessori che io ho definito cacofonicamente "preprocessori programmabili".

Ametto che possa apparire un po' sterile come curiosità ma non posso negare di averla.

Ciao.
Per come la metti verrebbe da dire che l'insieme dei 'preprocessori programmabili' è un sottoinsieme, non una 'super-categoria', dell'insieme dei preprocessori. Detto questo, a mio parere restano deboli le definizioni di 'processore' e soprattutto 'pre-processore'.
Per chiarirmi/ci le idee, per te cosa sarebbe il compilatore 'javac'?
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 13:59   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Pensandoci, "super-categoria" è effettivamente il termine errato. Come dici tu, è "sotto" e non "super". Avrebbe tutte le caratteristiche essenziali della categoria dei preprocessori più qualcosaltro di essenziale, il che fonda il rapporto di genere (preprocessori) a specie (programmabili).

Per me javac 1.5 è un processore: prende dei dati, li trasforma e restituisce il risultato della trasformazione.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 14:14   #6
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da PGI-Bis
Pensandoci, "super-categoria" è effettivamente il termine errato. Come dici tu, è "sotto" e non "super". Avrebbe tutte le caratteristiche essenziali della categoria dei preprocessori più qualcosaltro di essenziale, il che fonda il rapporto di genere (preprocessori) a specie (programmabili).

Per me javac 1.5 è un processore: prende dei dati, li trasforma e restituisce il risultato della trasformazione.
E qui casca l'asino: anche APT prende dei dati, li trasforma e restituisce il risultato della trasformazione. Abbiamo che 'preprocessore' => 'processore'? Ma soprattutto: quali elementi dell'insieme 'processore' non fanno parte del sottoinsieme 'preprocessore'? In altre parole perchè, come sottintendi, 'javac' non è un 'preprocessore'?
Gradito un esempio reale di 'processore non preprocessore' sempre per chiarirci le idee.
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 14:48   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Circa l'asino io sarei stato un po più cauto .

Sottolinerei ancora una volta, ad uso degli ascoltatori, che la questione è poco pratica: a me interessa e per curiosità personale e per amore delle opinioni altrui.

Dopo aver esaminato i sorgenti e preso le decisioni che deve prendere, APT lancia javac.

Il preprocessore di C fa la stessa cosa: esamina i sorgenti, esegue le macro e passa il prodotto al compilatore.


Dopo aver esaminato i sorgenti e preso le decisioni che deve prendere, javac 1.5 finisce il suo lavoro.

E' vero che il prodotto di javac è in qualche modo destinato alla JVM. Ma nel sistema javac non esiste alcun collegamento con la JVM. Detto altrimenti, javac non offre i propri dati in uscita come dati in entrata per la JVM. E' la JVM che deve prenderseli in via autonoma.

Dire allora che un processore è qualsiasi programma che riceva dei dati in entrata, li trasformi (ricordo che anche l'identità è una trasformazione) e restituisca il prodotto della trasformazione, in qualsiasi forma.

Un preprocessore è qualsiasi processore che affidi il prodotto della propria trasformazione ad un altro processore.

Intenderei "affidare il prodotto" nel senso di "A avvia B usando come input di B il proprio output".

Per rispondere alla tua domanda, le proprietà essenziali di un processore sono:

1. riceve dei dati
2. li trasforma
3. restituisce il prodotto della trasformazione

Le caratteristiche distinguenti di un preprocessore, restando nella colonna dell'essenza, sarebbero:

4. usa il prodotto della trasformazione come input di un diverso processore

La faccenda comunque diventa intricata perchè occorrerebbe stabilire cosa di intenda per "diverso processore". Su questo non saprei cosa dire.

Ciao.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 15:17   #8
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da PGI-Bis
Circa l'asino io sarei stato un po più cauto .
Perdona l'asino, non era rivolto a te ;-)

Quote:
Originariamente inviato da PGI-Bis
Sottolinerei ancora una volta, ad uso degli ascoltatori, che la questione è poco pratica: a me interessa e per curiosità personale e per amore delle opinioni altrui.
Forse è proprio per questo che finora tu abbia un unico interlocutore, guarda caso me

Quote:
Originariamente inviato da PGI-Bis
Dopo aver esaminato i sorgenti e preso le decisioni che deve prendere, APT lancia javac.
Comportamento di default, ma disattivabile tramite un'opzione da riga di comando. A me sembra di aver capito che APT non fa altro che processare le annotazioni e creare nuovi file sorgenti. Poi, per comodità, nel caso più comune chiama javac facendolo puntare ai file sorgenti generati. Ma fa parte del suo essere 'processore-programmabile'. Se invocasse javac dialogando con esso in maniera diretta (parlo sempre della piattaforma 1.5, non conosco la 1.6) e non tramite i nuovi *.java generati, allora sarei d'accordo con te nel dichiararlo un 'pre-processore programmabile', secondo le tue seguenti definizioni.

Quote:
Originariamente inviato da PGI-Bis
Il preprocessore di C fa la stessa cosa: esamina i sorgenti, esegue le macro e passa il prodotto al compilatore.

Dopo aver esaminato i sorgenti e preso le decisioni che deve prendere, javac 1.5 finisce il suo lavoro.

E' vero che il prodotto di javac è in qualche modo destinato alla JVM. Ma nel sistema javac non esiste alcun collegamento con la JVM. Detto altrimenti, javac non offre i propri dati in uscita come dati in entrata per la JVM. E' la JVM che deve prenderseli in via autonoma.
Ecco secondo me anche javac deve prendere in via autonoma i file generati da APT. Quest'ultimo non fa altro che far partire il processo javac con gli opportuni parametri.

Quote:
Originariamente inviato da PGI-Bis
Dire allora che un processore è qualsiasi programma che riceva dei dati in entrata, li trasformi (ricordo che anche l'identità è una trasformazione) e restituisca il prodotto della trasformazione, in qualsiasi forma.

Un preprocessore è qualsiasi processore che affidi il prodotto della propria trasformazione ad un altro processore.

Intenderei "affidare il prodotto" nel senso di "A avvia B usando come input di B il proprio output".

Per rispondere alla tua domanda, le proprietà essenziali di un processore sono:

1. riceve dei dati
2. li trasforma
3. restituisce il prodotto della trasformazione

Le caratteristiche distinguenti di un preprocessore, restando nella colonna dell'essenza, sarebbero:

4. usa il prodotto della trasformazione come input di un diverso processore

La faccenda comunque diventa intricata perchè occorrerebbe stabilire cosa di intenda per "diverso processore". Su questo non saprei cosa dire.

Ciao.
Dulcis in fundo i punti 3 e 4 mi sembrano ancora deboli: apparentemente il punto 4 è in contraddizione col punto 3, se nel punto 3 si sottintende che il processore 'restituisca' il prodotto della trasformazione alla stessa entità che gli fornisce l'input.
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 15:53   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Effettivamente non è che si faccia a bastonate per partecipare .

Certo sarebbe più interessante se avesse qualche conseguenza, tipo "se A è un preprocessore allora A deve usare 3.2 megabyte di memoria". Insomma, qualcosa di concreto.

Chiuderei qui la questione "preprocessore o non preprocessore". Come sosteneva Popper, le asserzioni circa l'essere di una cosa non sono scientificamente criticabili, ergo potremmo andare avanti fino ad avere la barba bianca.

Restando comunque in tema, approfitterei del fatto che sai come argomentare un discorso per chiederti cosa ne pensi di questa faccenda di APT, delle annotazioni e della possibilità di trasformare i sorgenti o di crearne di nuovi.

A me pare la novità più rilevante di Java 5 ma ho avuto l'occasione di usarla in produzione solo due volte che, in due (o tre?) anni di vita della piattaforma 5 non è certo molto. Tu ne hai mai approfittato?
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 16:57   #10
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da PGI-Bis
Effettivamente non è che si faccia a bastonate per partecipare .
Quanti sono gli iscritti alle facoltà di filosofia?

Quote:
Originariamente inviato da PGI-Bis
Certo sarebbe più interessante se avesse qualche conseguenza, tipo "se A è un preprocessore allora A deve usare 3.2 megabyte di memoria". Insomma, qualcosa di concreto.

Chiuderei qui la questione "preprocessore o non preprocessore". Come sosteneva Popper, le asserzioni circa l'essere di una cosa non sono scientificamente criticabili, ergo potremmo andare avanti fino ad avere la barba bianca.
Come sospettavo sei appassionato di filosofia. O di citazioni.

Quote:
Originariamente inviato da PGI-Bis
Restando comunque in tema, approfitterei del fatto che sai come argomentare un discorso per chiederti cosa ne pensi di questa faccenda di APT, delle annotazioni e della possibilità di trasformare i sorgenti o di crearne di nuovi.

A me pare la novità più rilevante di Java 5 ma ho avuto l'occasione di usarla in produzione solo due volte che, in due (o tre?) anni di vita della piattaforma 5 non è certo molto. Tu ne hai mai approfittato?
E' nato prima l'uovo o la gallina? APT è figlio delle annotazioni, quindi attribuirei a queste ultime i meriti. D'altronde non costerebbe troppa fatica scriversi un qualcosa di simile ad APT, ma il bello è che SUN ci ha fatto il piacere di risparmiarci la fatica.
Oltre ad APT hai pensato che le annotazioni sono utilizzabili, volendo, anche in runtime?

Non ho avuto ancora esperienza diretta e personale delle annotazioni, è l'ultimo aspetto che mi manca della piattaforma tiger. Sto combattendo per adeguare il codice esistente in azienda, e le annotazioni le ho lasciate come 'botta finale'. Finora pare che abbiano preso piede soprattutto in ambito enterprise (sono parte fondamentale delle nuove specifiche JEE5).
Ho il sospetto che la parte più divertente di APT si nasconda nella possibilità (?) di generare file .java ex-novo, ma devo ammettere che al momento non ne ho trovato applicazioni utili, salvo entrare nel mondo dei 'dialetti java' citati nei PDF. Quello che invece mi lascia perplesso è come gli IDE maggiormente in voga gestiscano le annotazioni in fase di 'background-compiling' e 'code-discovering'. Dal punto di vista del design mi pare che le annotazioni giocheranno un ruolo importante nell''inversion of control' e in tutti quei framework che gestiscono aspetti legati allo sviluppo, come il testing e l'AOP.
Mi rendo conto che APT potrebbe giocare un ruolo marginale in tutto questo, ma staremo a vedere.
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }

Ultima modifica di Angus : 14-03-2006 alle 16:58. Motivo: correzione
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 18:10   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Tutti dovrebbero laurearsi in Filosofia e Psicologia. Putroppo io non ho seguito il consiglio che do e, come noti, sono rimasto a livello di appassionato.

Sfortunatamente non riesco ad abituarmi agli IDE di fascia alta e non ho avuto quindi modo di apprezzare l'uso che questi strumenti facciano delle annotazioni.

Pur non occupandomi di programmazione server-side ho letto qualcosa sulla terza generazione dei fagioli d'impresa e mi pare che la semplificazione sia notevole, se non altro per la riduzione negli elementi che è necessario creare. La mia è comunque un'impressione, occorrerebbe il parere di qualcuno più avvezzo alla materia J2EE.

Per Annotazioni e Runtime la questione è a mio giudizio meno rilevante di quanto si segnali in alcuni testi. Nell'orrenda quarta edizione di The Java Programming Language pare che sia il loro carattere più esalatante ma, a mio modo di vedere e nel contesto dell'introspezione, hanno una sola differenza rispetto alle interfacce marcatrici (tipo java.io.Serializable o java.util.EventListener) e sta nella loro capacità di "marcare" un membro a prescindere dall'esistenza di un rapporto di parentela tra il Tipo del membro ed il Tipo usato come discrimine per l'esecuzione riflessiva di un blocco ideale di istruzioni.

Faccio un esempio:

Codice:
@interface Control {}

class A {
    @Control X member = new X();
}
Per un'istanza di A posso determinare riflessivamente se member sia o no un @Control a prescindere dal fatto che X (il tipo di member) abbia o meno una relazione di parentela con un altro Tipo.

Nella maggior parte delle situazioni, mi sfugge dove stia il miglioramento pratico rispetto a:

Codice:
interface Control {}

class SubX extends X implements Control {}

class A {
    X member = new SubX();
}
Senza contare il fatto che, se considerassimo le annotazioni come una convenzione di denominazione, allora potremmo dire equivalente:

Codice:
class A {
   X suffixMember = new X();
}
Identificheremmo "suffixMember" come appartenente ad una certa categoria non espressa da una relazione di parentela secondo gli strumenti del linguaggio ma attraverso una convenzione di denominazione dei campo.

Con le annotazioni c'è un vantaggio in chiarezza. "Tutti sanno che", l'at preposto ad un nome indica annotazione: se l'annotazione è "RUNTIME", allora occorre drizzare le antenne .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 20:01   #12
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Non so se hai tempo di farlo, ma il discorso sulle annotazioni, ed in particolare sul loro utilizzo a runtime, trova un'applicazione pratica nello studio riportato qui.
Secondo me le annotazioni non si riducono a dei semplici 'attributi formali', ma hanno qualcosa in più, proprio per il fatto di poter essere parametriche.
Quello che mi sfugge è quale applicazione, a parte i tool di sviluppo e gli application server, possa trarre beneficio dall'ispezione a runtime delle annotazioni.
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2006, 23:56   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Ho letto con interesse ma in quel contesto trovo più ragionevole usare dei Tipi ad hoc per immagazzinare gli stati di un oggetto (RangedString piuttosto che RangedInt e via fantasticando).

A me capita, scrivendo o manutenendo codice, di osservare taluni casi in cui è possibile ridurre la quantità materiale di codice applicando annotazioni generici e riflessione, tutti insieme appassionatamente.

E' curioso come i tre strumenti si incastrino, forse per via del fatto che tutti presuppongono l'esistenza di una forma regolare: i generici limitati fondano meccanismi applicabili a tutto ciò che rispetta certi rapporti di parentela, le annotazioni creano all'interno dei membri di un Tipo degli insiemi di membri distinti dagli altri e la riflessione è in grado di scandire l'insieme dei membri e scegliere tra questi dei sottoinsiemi.

Non è un risultato eccezionalmente innovativo ma ha un valore pratico altrimenti non ottenibile.

Condivido la difficoltà nel trovare un'applicazione "runtime" delle annotazioni che faccia gridare al miracolo. Forse bisognerebbe cercarla in direzione della capacità di accomunare elementi altrimenti non correlati ma il rischio è quello di attribuire uno scopo ad una caratteristica del linguaggio non perchè utile ma perchè "diamine, almeno uno dovrà averlo" .

Ultima modifica di PGI-Bis : 14-03-2006 alle 23:57. Motivo: sgarrupamento grammaticale
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ul...
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza Dreame L10s Pro Ultra Heat: la pulizia di casa t...
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere HONOR Magic6 Pro: come funziona Magic Portal, il...
L'innovazione richiede fiducia: Workday si propone come guida nell'era dell'IA L'innovazione richiede fiducia: Workday si propo...
Recensione HONOR Pad 9: ampio display e audio top per il tablet per l'intrattenimento Recensione HONOR Pad 9: ampio display e audio to...
2 iRobot Roomba al prezzo più sco...
La tua connessione in fibra ottica potre...
Il controller DualSense per PS5 con un p...
Take-Two acquisisce Gearbox per 460 mili...
NVIDIA H100, H200 e Intel Gaudi 2 si sfi...
Lamborghini, nuovo logo e font, ora abbr...
Xbox Series X si veste di bianco, ma &eg...
La Porsche Boxster elettrica beccata in ...
L'iPad da 10,9" (Wi-Fi, 64GB) è sceso a ...
Dell, calo del mercato PC: licenziati 13...
Alfa Romeo Milano, scopriamo profilo e l...
Hisense vende un TV FHD 32 pollici con Q...
Cisco Webex anche in auto: ora è ...
Phil Schiller, il boss dell'App Store di...
Lola in Formula E insieme a Yamaha, due ...
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: 15:00.


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