Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-10-2009, 14:12   #1
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
[C] Creare parser per analisi breve testo naturale

Ciao a tutti,

vorrei creare un parser in C che mi permetta, dato in ingresso un testo abbastanza breve, di poter estrarre determinati termini in base a delle regole che stabilirò io.

Le regole vorrei implementarle nel programma in modo che poi faccia tutto in automatico.


Secondo voi da dove dovrei partire??


Ho scelto come linguaggio il C perchè è quello che conosco decentemente....
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2009, 18:35   #2
Jecko
Senior Member
 
L'Avatar di Jecko
 
Iscritto dal: Nov 2003
Città: Il Poli
Messaggi: 992
potresti utilizzare la funzione strtok() (la trovi nell'header string.h). La funzione riceve due parametri: il primo è l'indirizzo del vettore contente la stringa, il secondo un delimitatore (o una serie di delimitatori) racchiuso tra apici. Ogni volta che la funzione individua un carattere delimitatore inizia la scansione alla ricerca del delimitatore successivo. Arrivato al delimitatore successivo crea il cosìdetto "token" inserendo un tappo dopo il delimitatore. Questa funzione modifica la stringa che stai manipolando quindi ti consiglio di copiarla in un vettore provvisorio prima di applicarla. Quando richiami la strtok devi sempre distinguere la prima chiamata inserendo il nome della stringa --> strtok(stringa,"delimitatore/i") dalle successive chiamate dove il primo parametro deve essere un valore NULL --> strtok(NULL,"delimitatore/i"). Non ti preoccupare perchè comunque la funzione dalla chiamate successive ricomincerà a tokenizzare da dove aveva interrotto. restituisce il valore NULL se no ha trovato delimitatori o se ha finito di tokenizzare la stringa. Ciao spero di esserti stato utile e non di averti confuso le idee
__________________
VENDO: PC Desktop Gaming AMD
Trattative su hwup: 20 trattative
Jecko è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2009, 20:26   #3
Y3PP4
Member
 
Iscritto dal: Jul 2009
Messaggi: 210
Guarda, se cerchi indietro nei threads trovi il contest 16 dedicato proprio alla implementazione di parser. Ci sono varie risorse ed esempi, potresti prenderne spunto per capire come funziona il tutto -un parser con la P maiuscola-

Poi dipende da quello che devi analizzare, dalla complessità delle regole e da come queste si applicano al testo.

Saluti.
__________________
La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
Isaac Asimov
Y3PP4 è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2009, 23:39   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2793
Ma non avevi già aperto un thread sullo stesso argomento? Potresti continuare lì, stava venendo una bella discussione.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 03-10-2009, 08:35   #5
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
Quote:
Originariamente inviato da Jecko Guarda i messaggi
potresti utilizzare la funzione strtok()
cut...
meglio ancora la strtok_r (piattaforme *nix) oppure strtok_s (piattaforma win), sono thread safe rispetto alla strtok. ok, magari non sta facendo un'applicazione multithread, però male non fa
__________________
Ciao ciao cagnolino Billy
MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen.
XBOX Live GamerTag: InsaneMau
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 03-10-2009, 13:05   #6
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Ma non avevi già aperto un thread sullo stesso argomento? Potresti continuare lì, stava venendo una bella discussione.
Veramente il discorso era leggermente diverso e poi quel thread era proprio per capire come realizzare il programma, o meglio cosa realizzare!

Ora sono quasi sicuro che mi serve un parser o meglio forse un tokenizzatore.


Ho dato un occhio al contest 16, proprio dove si parla di interpreti.

Da quel che ricordo io il parser fa un'analisi di un linguaggio strutturato, ma a pensarci bene non è il mio caso. Io ho un linguaggio naturale, scritto così come viene in italiano...quindi non ho nulla di strutturato.

Credo proprio che si tratti di un tokenizzatore e l'idea di Jecko e maulattu penso siano quelle corrette. Ovviamente ora cercherò della documentazione su queste funzioni!

Chi avesse altre dritte posti pureee!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd

Ultima modifica di phantom85 : 03-10-2009 alle 13:14.
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2009, 13:27   #7
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Ho dato un occhio alla funzione strtok, ma mi sorge un dubbio.

Se non ho capito male questa funzione serve per spezzare una stringa in base a dei caratteri di separazione...appunto in base a dei caratteri, e non delle stringhe.


Mi spiego:

Codice:
char s[]="1abch8dejdkj37390ms";
char c[]="0123456789";
char *p;
alla prima chiamata di funzione, questa dovrebbe analizzare la stringa s e se incontra caratteri in s che appartengono a c, isola gli altri...e quindi:

Codice:
p=strtok(s,c);      */p="abch"/*
successivamente

Codice:
p=strtok(NULL,c);      */p="dejdkj"/*

p=strtok(NULL,c);      */p="ms"/*


Ma se volessi isolare dei termini tra delle parole, ad esempio:


"devo trovare un gatto rosso"

mi interessa isolare "gatto" e "rosso", del resto non mi interessa.

Cioè voglio isolare l'oggetto centrale della frase e la sua caratteristica


La funzione strtok mi potrebbe aiutare??!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 14:16   #8
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Piccola parentesi...


...se volessi fare un programma in C che dato in input un testo scritto da tastiera, lo divida in token in base allo spazio, come dovrei fare?

Codice:
#include <stdio.h>

#include <string.h>


#define MAX 100



int main() {
	char input[MAX];
	int i=0;
	printf ("Inserisci testo e premi invio:\n");
	while (input[i]!='\n') {
		for (i=0;i<MAX;i++) {

        		scanf("%c", &input[i]);
		}
	}
	int x;	

        char *str1;

 	str1 = strtok(input, " ");
	printf("%i: %s\n", x, str1);

 

        while (1) {

                str1 = strtok(NULL, " ");

 

                if (str1 == NULL) {

                        printf("Tokenizing complete\n");

                        exit(0);

                }

 

                printf("%i: %s\n", x, str1);

                x++;

        }

 

        return 0;

 

}
Ho riscontrato nell'esecuzione che quando inserisco il testo, il programma non termina mai...e non esegue la tokenizzazione...

Devo aver cannato qualcosa nel codice
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 19:09   #9
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2793
Un problema è sicuramente nel while, il resto non l'ho guardato, comunque questo è il tuo codice:
Codice:
while (input[i]!='\n') {
   for (i=0;i<MAX;i++) {
      scanf("%c", &input[i]);
   }
}
l'esecuzione entra nel ciclo, scopre che input[i] è diverso da zero (presumibilmente) e entra nel ciclo for, che legge MAX caratteri senza mai fermarsi. Al termine del ciclo for i vale 100 e quindi viene fatto il controllo del while:
input[100]!='\n'
strano che a sto punto non ti dia errore, perché sei andato oltre il limite del tuo array, probabilmente ora stai puntando a qualche altra variabile che hai dichiarato, magari i stessa... Comunque ancora una volta presumibilmente questo valore è diverso da '\n' e quindi rientra nel ciclo.
Quello che volevi fare tu molto probabilmente era questo:
Codice:
i=0;
scanf("%c", &input[i]);
while (i<MAX && input[i]!='\n') {
   i++;
   scanf("%c", &input[i]);
}
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 19:32   #10
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Grazie,appena avrò modo modificherò il codice e farò il test. Si la mia idea era proprio quella, solo che sono leggermente arrugginito

Grazie!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 07:52   #11
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
Il problema era probabilmente nella lettura tramite scanf. Infatti la lettura non terminava fino a MAX caratteri.
Usa fgets per leggere l'input !!!

char str[MAX];
fgets(str, MAX, stdin);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 09:35   #12
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Quote:
Originariamente inviato da cionci Guarda i messaggi
Il problema era probabilmente nella lettura tramite scanf. Infatti la lettura non terminava fino a MAX caratteri.
Usa fgets per leggere l'input !!!

char str[MAX];
fgets(str, MAX, stdin);
Grazie! Alla fine ho usato quella funzione ed è corretto. Effettivamente mi ricordavo di una funzione per leggere stringhe ma mi veniva in mente getstring


Ora ho realizzato un semplicissimo tokenizzatore che divide in token secondo gli spazi bianchi. Ma se volessi che il mio tokenizzatore (che brutto termine ) dividesse i token oltre che per spazi bianchi, anche per segni di punteggiatura?!

Come dovrei modificare strtok?


edit
ho dichiarato un array con i caratteri che devono dividere le varie parole e ho passato il puntatore nell'argomento della strtok.
Unico problema è che non posso inserire come separatore le virgolette " (all'interno dell'array tk)

Codice:
char tk[]=".,;:-_'*+ ";
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd

Ultima modifica di phantom85 : 06-10-2009 alle 12:32.
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 14:30   #13
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Al di là del problema del separatore, mi chiedevo come posso fare un confronto all'interno del ciclo, cioè confrontare un token con una determinata parola.

ES: se un token è uguale alla parola "con" vorrei che l'output sia "ingrediente: con cioccolato" (dove "cioccolato" è la parola/token successiva a "con").


Esempio:

Input: voglio fare una torta con cioccolato

Output

1: voglio
2: fare
3: una
4: torta
5: Ingrediente: con cioccolato


E' possibile farlo??
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 14:45   #14
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2793
Puoi usare la strcmp: LINK

Ah, e poi la strcat per concatenare i token: LINK
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 14:57   #15
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
grazie, ora mi sto dedicando alla strcmp.

Secondo voi è possibile creare una sorta di struttura che contenga tutte le parole che confrontate con il token porti poi alla stampa di "ingrediente"?

Mi spiego:

prima ho detto che se il tokenizer trova "con" allora deve stampare "ingrediente: con..."

Ma se volessi estendere questa cosa ad altre parole, oltre a "con"?

Potrei creare un if con una serie di OR

Codice:
if ( (strcmp(str,"con")==0) || (strcmp (str,"al") ==0) )
               printf ("Ingrediente: ");
Non è possibile creare una struttura che contenga tutte le parole (in questo caso "con" e "al") in modo da inserire nella strcmp solo str e una variabile con cui confrontare?
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd

Ultima modifica di phantom85 : 06-10-2009 alle 15:26.
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 18:59   #16
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2793
Puoi creare un array di stringhe in cui mettere "con" "al" e tutto quello che vuoi e poi usare un ciclo per fare i vari confronti e se almeno uno dei confronti va a buon fine stampare "ingrediente: ..."
Stai cercando di individuare delle parole chiave per definire una grammatica giusto?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 19:28   #17
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
Quote:
Originariamente inviato da phantom85 Guarda i messaggi
grazie, ora mi sto dedicando alla strcmp.

Secondo voi è possibile creare una sorta di struttura che contenga tutte le parole che confrontate con il token porti poi alla stampa di "ingrediente"?

Mi spiego:

prima ho detto che se il tokenizer trova "con" allora deve stampare "ingrediente: con..."

Ma se volessi estendere questa cosa ad altre parole, oltre a "con"?

Potrei creare un if con una serie di OR

Codice:
if ( (strcmp(str,"con")==0) || (strcmp (str,"al") ==0) )
               printf ("Ingrediente: ");
Non è possibile creare una struttura che contenga tutte le parole (in questo caso "con" e "al") in modo da inserire nella strcmp solo str e una variabile con cui confrontare?
Puoi generalizzare l'or con un ciclo:
Codice:
for(i = 0; i < N; ++i)
{
   if(strcmp(str, strings[i]) == 0)
   {
      printf ("Ingrediente: ");   
      break;
   }
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2009, 22:54   #18
Ibrahimovic
Member
 
Iscritto dal: Jan 2007
Città: Asti
Messaggi: 256
Quote:
Originariamente inviato da phantom85 Guarda i messaggi
grazie, ora mi sto dedicando alla strcmp.

Secondo voi è possibile creare una sorta di struttura che contenga tutte le parole che confrontate con il token porti poi alla stampa di "ingrediente"?

Mi spiego:

prima ho detto che se il tokenizer trova "con" allora deve stampare "ingrediente: con..."

Ma se volessi estendere questa cosa ad altre parole, oltre a "con"?

Potrei creare un if con una serie di OR

Codice:
if ( (strcmp(str,"con")==0) || (strcmp (str,"al") ==0) )
               printf ("Ingrediente: ");
Non è possibile creare una struttura che contenga tutte le parole (in questo caso "con" e "al") in modo da inserire nella strcmp solo str e una variabile con cui confrontare?
Potresti creare un vettore bidimensionale in cui a ogni indice inserisci una stringa tra quelle "speciali" che richiederann la scritta "Ingrediente".

A questo punto al posto di usare la strcmp per verificare se il tuo token è uguale alla parola "con" usi , ad esempio, una funzione is_present( parola, matr[][] ) booleana che restituisce TRUE se il token è una parola speciale contenuta nel tuo vettore bidimensionale e FALSE se non lo è.

A questo punto se ti è stato restituito il valore TRUE stampi "Ingrediente bla bla bla" mentre stampi semplicemnete la parola se hai ricevuto FALSE
__________________

Ho concluso affari con: Samurri, kosimiro, mAiDeN75, Raziel1984, deidara, billy99. gertuzz
Ibrahimovic è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2009, 10:24   #19
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Ho seguito la dritta di cionci realizzando l'or con un ciclo for e devo dire che tutta funzia bene


Ora se volessi che la parola "ingrediente" venisse stampata DOPO le parola "con" o "al" ?

Codice:
Adesso il programma esegue questo, se rileva "al" o "con"
...
token
Ingrediente: con cioccolato
token
...
Codice:
...
token
Ingrediente: al curry
token
...
Vorrei che l'output invece fosse

Codice:
...
token
con
Ingrediente: cioccolato
token
...

Come potrei fare?

vi ringrazio ancora tutti


PS: @wingman: si più o meno è quello che vorrei fare, diciamo che dato un testo vorrei fare una prima "scrematura" o meglio "raffinarlo" e strutturalo


EDIT: sono riuscito a fare quello che volevo, nell'if che verificava la presenza di una parola ho semplicemente richiamato un'altra volta la printf del token e nuovamente la funzione strtok

Sicuramente posterò ancora per porre nuove modifiche o nuove feature del programmino!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd

Ultima modifica di phantom85 : 07-10-2009 alle 11:18.
phantom85 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2009, 14:23   #20
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Ho un problema con il programma, un bug.

Ho notato che se verifico la presenza delle parole con o al che indicano la presenza di un ingrediente (token successivo) tutto funziona,
ma se impongo un if in cui verifico che nel caso un token sia uguale ad una determinata parola, il programma deve stampare una parola (lasciamo sempre ingrediente), se la parola compare alla fine del testo non stampa nulla (ovvero se la parola è l'ultimo token), altrimenti se la parola non è alla fine tutto gira!


Cioè

...
char *strings[]= {"con","al"};
char *str;

str = strtok(input, tk);

...

while (1) {

str = strtok(NULL, tk);



if (str == NULL) {

printf("Analisi completata\n");

exit(0);

}


for (i=0;i<2;i++) {
if ( (strcmp (str,strings[i]) == 0) ) {
printf ("Ingrediente ");
}
}

if ( strcmp (str,"farina") == 0)
printf ("Ingrediente: ");




printf("%s\n", str);

}
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
CATL, 100% di elettricità a zero ...
YouTube: dal 24 agosto cambiano le regol...
Torna il coupon per le e-bike HillMiles ...
Epic Games Store arriva su Linux, ma la ...
Un AirTag in un libro raro porta al maga...
Torna il mini compressore portatile a pr...
Samsung punterà sempre più sui pieghevol...
Apple TV punta ai diritti USA dell'Open ...
Download pirata di Odissea: attenzione a...
Condivisione Schermo di macOS sotto atta...
Debutta Freelander, il nuovo marchio di ...
Le migliori offerte Amazon di oggi: Appl...
Ecco l'auto della discordia, Voyah Passi...
Virgin Galactic posticipa la ripresa dei...
Apple AirPods Pro 3 a 199€: ANC evoluto,...
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: 08:26.


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