Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-04-2010, 12:23   #1
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
[c] Run Lenght Encoding - suggerimenti per ottimizzazione

Ciao a tutti, ho fatto un programma molto semplice che ricevendo in input un file lo comprime o lo decomprime a seconda dell'estensione che ha.
Devo utilizzare il metodo rle:

esempio file originale
aaaabbcde

esempio file compresso
a4b2c1d1e1

Dal punto di vista pratico nel file compresso ci sono delle lettere scritte come char (1 byte) e dei numeri scritti come short int (2 byte).
In questo modo se ho ad esempio una sequenza di 300 volte lo stesso carattere scrivendolo come short int occupa 3 byte (1 byte il carattere più 2 il numero di ripetizioni) mentre se usavo solo char ne avrebbe occupati 4.

Il problema sorge a questo punto a causa della premessa implementativa che ho descritto sopra.
Per ottimizzarlo potrei fare ad esempio così:
a4bbcde
cioè non scrivere il numero per le lettere con meno di 3 ripetizioni.

Però a questo punto il decompressore come agisce?
Il decompressore che ho fatto io legge sempre un char e poi uno short int che è il numero di ripetizioni perchè ogni carattere di fianco ha il numero.
Se io lo tolgo per alcuni di questi come faccio poi a sapere cosa devo leggere?
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:36   #2
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Laboratorio di programmazione con D'Angelo eh? Buona fortuna.
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:44   #3
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
Quote:
Originariamente inviato da Kenger Guarda i messaggi
Laboratorio di programmazione con D'Angelo eh? Buona fortuna.
Eh già , per adesso non mi sembra complicato, solo non so usare cygwin e mi fa bestemmiare parecchio, comunque il progetto è quasi finito.
Spero che non mi massacri all'orale.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:45   #4
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
il decompressore deve fare uno scan di tutto il bytestream e ogni volta che incontra un intero n, fai partire un loop con n-1 cicli in cui inserisci in quel punto dello stream la lettera precedente al numero
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:45   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da -Ivan- Guarda i messaggi
Ciao a tutti, ho fatto un programma molto semplice che ricevendo in input un file lo comprime o lo decomprime a seconda dell'estensione che ha.
Devo utilizzare il metodo rle:

esempio file originale
aaaabbcde

esempio file compresso
a4b2c1d1e1

Dal punto di vista pratico nel file compresso ci sono delle lettere scritte come char (1 byte) e dei numeri scritti come short int (2 byte).
In questo modo se ho ad esempio una sequenza di 300 volte lo stesso carattere scrivendolo come short int occupa 3 byte (1 byte il carattere più 2 il numero di ripetizioni) mentre se usavo solo char ne avrebbe occupati 4.

Il problema sorge a questo punto a causa della premessa implementativa che ho descritto sopra.
Per ottimizzarlo potrei fare ad esempio così:
a4bbcde
cioè non scrivere il numero per le lettere con meno di 3 ripetizioni.

Però a questo punto il decompressore come agisce?
Il decompressore che ho fatto io legge sempre un char e poi uno short int che è il numero di ripetizioni perchè ogni carattere di fianco ha il numero.
Se io lo tolgo per alcuni di questi come faccio poi a sapere cosa devo leggere?
Io metterei un numero massimo di ripetizioni di 256, in modo tale da avere sempre e solo un byte per il numero, e non un short int.
Gia' in questo modo ho idea che si riduca notevolmente la lunghezza media del file compresso
E inoltre in questo modo non hai piu' alcun problema per la ripetizione doppia
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:53   #6
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Io metterei un numero massimo di ripetizioni di 256, in modo tale da avere sempre e solo un byte per il numero, e non un short int.
Gia' in questo modo ho idea che si riduca notevolmente la lunghezza media del file compresso
E inoltre in questo modo non hai piu' alcun problema per la ripetizione doppia
Ciao, grazie per la risposta, purtroppo da specifiche non posso mettere limitazioni di alcun tipo.

Il problema comunque è questo:
il programma riceve un file qualsiasi di cui non si conosce la natura per cui è impensabile leggere un po' di char e un po' di short int.
Potrei leggere solo char tanto per dire e poi se quello che ho letto non corrisponde ad una lettera dell'alfabeto (visto che nel file possono esserci solo lettere minuscole e spazi) allora lo rileggo come short int.
Il problema è: e se per caso quello che leggo come char (1 byte) casualmente mi corrisponde ad una lettera minuscola ma è in realtà il primo dei due byte di uno short int?
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 12:55   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da -Ivan- Guarda i messaggi
Ciao, grazie per la risposta, purtroppo da specifiche non posso mettere limitazioni di alcun tipo.

Il problema comunque è questo:
il programma riceve un file qualsiasi di cui non si conosce la natura per cui è impensabile leggere un po' di char e un po' di short int.
Potrei leggere solo char tanto per dire e poi se quello che ho letto non corrisponde ad una lettera dell'alfabeto (visto che nel file possono esserci solo lettere minuscole e spazi) allora lo rileggo come short int.
Il problema è: e se per caso quello che leggo come char (1 byte) casualmente mi corrisponde ad una lettera minuscola ma è in realtà il primo dei due byte di uno short int?
Ma "Short int" te lo impone il problema?

Comunque non proponevo di mettere limitazioni.
Se ad esempio avessi
bbb....bbb per 400 volte, lo comprimerei in
b255b45 (Oppure b0b45, contando lo 0 come 256, essendo che il valore 0 non avrebbe alcun senso)
per un totale di 4 bytes.

bb invece semplicemente
b2

__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 13:01   #8
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Quote:
Originariamente inviato da -Ivan- Guarda i messaggi
Eh già , per adesso non mi sembra complicato, solo non so usare cygwin e mi fa bestemmiare parecchio, comunque il progetto è quasi finito.
Spero che non mi massacri all'orale.
Tranquillo, non è niente di impossibile, soprattutto ora che non ne potrà più di LabProg


Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ma "Short int" te lo impone il problema?

Comunque non proponevo di mettere limitazioni.
Se ad esempio avessi
bbb....bbb per 400 volte, lo comprimerei in
b255b45 (Oppure b0b45, contando lo 0 come 256, essendo che il valore 0 non avrebbe alcun senso)
per un totale di 4 bytes.

bb invece semplicemente
b2

E' esattamente la stessa idea che ho consigliato io ad un mio compagno di corso
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 13:22   #9
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ma "Short int" te lo impone il problema?

Comunque non proponevo di mettere limitazioni.
Se ad esempio avessi
bbb....bbb per 400 volte, lo comprimerei in
b255b45 (Oppure b0b45, contando lo 0 come 256, essendo che il valore 0 non avrebbe alcun senso)
per un totale di 4 bytes.

bb invece semplicemente
b2

Un attimo perchè io con i cast ancora mi incasino.
Faccio un esempio semplice in cui non si va oltre le 256 ripetizioni.
Dunque, se ho un file che è solo una sequenza di 200 a, in pratica scrivo su file un char 'a' e un intero '200' convertito in char che quindi occupa 1 byte.
Poi leggo solo char e riconverto uno no e uno sì in interi?

Così occupa solo due byte un file che a me ne avrebbe occupati 3.
Però se poi ho un file 300 a e devo scrivere un char 'a' più un char '255' più un char 'a' più un char '45' mi occupa 4 byte invece di 3.
Come banco di test ho anche file di 300 mega (cha tra l'altro mi impallano il pc e non riesco a usare) per cui suppongo ci siano all'interno ripetizioni molto lunghe.

Posso provare ad implementarlo per vedere se ho capito bene la conversione dei tipi perchè mi sa che sto facendo un po' casino.
Però mi rimane il problema che non posso evitare di scrivere il numero di ripetizioni nelle lettere che si presentano una volta sola.

Ultima modifica di -Ivan- : 18-04-2010 alle 13:25.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 14:53   #10
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Edit: rimosso perché contrario al regolamento

Ultima modifica di cionci : 18-04-2010 alle 16:47.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 16:47   #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
!k-0t1c!: non si scrivono soluzioni per esercizi universitari.

Potresti fare in questo modo...
Data una dimensione maggiore di 127 inserisci sempre un nuovo byte successivo al corrente.
In pratica puoi utilizzare l'ultimo bit del byte come un flag che indica la presenza di un altro byte da leggere. Chiaramente la dimensione può anche andare fino a 5 byte (con un intero a 32 bit) o anche oltre (in teoria potresti contare anche simulando un intero a 64 bit con due interi a 32 bit).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 20:37   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
E' concettualmente simile alla codifica utilizzata per l'UTF-8.

Ma per il dato problema non mi sento di consigliarla, e preferisco la soluzione di "gugo", che è molto più semplice da implementare e rimane abbastanza generale ed efficiente.

In passato mi sono dedicato molto alla compressione dei dati (di qualunque natura), e debbo dire che molto, ma molto difficilmente i file presentano una "regolarità" tale da giustificare una codifica più complessa della classica RLE (che è stata comunque brevettata da un giapponese; ma penso che il brevetto sia ormai scaduto da tempo) con la coppia di byte lunghezza (da 1 a 256) + simbolo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 21:56   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Potresti rimappare i caratteri a-z più lo spazio nei valori da 0 a 26 ed usare i 229 valori rimanenti per i contatori.
Es:
a a a b b c
97 97 97 98 98 99
diventa:
a 3 b b c
0 29 1 1 2
oppure:
a 3 b 2 c
0 29 1 28 2

EDIT: non avevo letto bene, devi usare 2 byte per il contatore... Forse si può comunque riadattare l'idea

EDIT2: puoi usare i valori da 0 a 26 per i caratteri che hanno una sola occorrenza (quindi non c'è un contatore da leggere dopo) e i valori da 27 a 53 per i caratteri che precedono un contatore.
Es:
a a a b b c
97 97 97 98 98 99
diventa:
a 3 b b c
27 00 29 1 1 2
(ho messo 00 solo per indicare che 29 occupa 2 byte invece di uno)

Ultima modifica di wingman87 : 18-04-2010 alle 22:20.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 00:12   #14
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da cionci Guarda i messaggi
!k-0t1c!: non si scrivono soluzioni per esercizi universitari.
Almeno la parte in F# avresti potuto lasciarla, non era direttamente utile...
Inoltre l'implementazione che avevo proposto era a molto ingenua, avrebbe richiesto molto lavoro prima di essere presentabile ad un prof...senza contare che contavo deliberatamente solo fino a 255 per accertarmi che il copia-incolla fosse penalizzante
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 00:16   #15
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 cdimauro Guarda i messaggi
E' concettualmente simile alla codifica utilizzata per l'UTF-8.
Era giusto per fare un qualcosa di diverso dalla classica RLE Sicuramente è più difficile da implementare, ma proprio per questo più culturalmente appagante
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 18:51   #16
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
Grazie a tutti delle idee, sto prendendo un po' di qua e un po' di la per cercare di ottimizzare la cosa visto che il voto si basa sulla capacità di compressione ma anche sulla velocità impiegata.

Ultima modifica di -Ivan- : 19-04-2010 alle 18:53.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 19:12   #17
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Perché non usi un byte come escape che indica quando sta cominciando una sequenza di caratteri compressa? Ad esempio un '\0'. Se i caratteri sono ripetuti meno di 4 volte li copi così come sono altrimenti stampi il null, poi il carattere ripetuto e i due byte del short int con il numero di ripetizioni.

Dovrebbe scappare qualcosa di simile a questo (con i null al posto dei punti)
.a5bbbcdbbccccbb.a6.e12ffcde.f6.e9
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 19:37   #18
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Perché non usi un byte come escape che indica quando sta cominciando una sequenza di caratteri compressa? Ad esempio un '\0'. Se i caratteri sono ripetuti meno di 4 volte li copi così come sono altrimenti stampi il null, poi il carattere ripetuto e i due byte del short int con il numero di ripetizioni.

Dovrebbe scappare qualcosa di simile a questo (con i null al posto dei punti)
.a5bbbcdbbccccbb.a6.e12ffcde.f6.e9
Il problema in questo caso è che se ho ad esempio un file così:

aaaaaabhhhhhhhcaaaaaaa

mi vengono fuori tanti /0 ed alla fine non so se conviene o meno (anche perchè dovrei mettere un altro carattere una volta finita la sequenza compressa).
Il problema è che non so come saranno strutturati i file da comprimere quindi non posso fare dei calcoli di convenienza.
Però l'idea del /0 in effetti potrebbe farmi risparmiare il numero di fianco alle lettere singole.

Vi chiedo un'altra cosa: secondo voi mi conviene fare come diceva !k-0t1c! cioè leggere il file e mettere tutto in memoria (una matrice di char) e poi elaborarla dopo?
Perchè adesso come adesso io leggo un carattere da un file, eseguo calcoli e lo scrivo su file.
Leggere tutto il file e memorizzarlo per poi elaborare la matrice e riscriverla non mi viene a costare di più in termini di tempo? I calcoli comunque sono fatti in memoria anche se per effettuarli ora deve attendere i tempi di lettura, però anche leggendo tutto prima non si annullano. Il file rimane comunque aperto non è che ogni volta devo fare l'operazione di riaprirlo.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 19:47   #19
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
Ti conviene leggere un buffer di dimensione pari ad un multiplo o un sottomultiplo dell'unità di allocazione minima del disco. Quindi 4096 byte dovrebbe essere perfetto.

Se trovi \0 nel file però è un po' complessa la cosa
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2010, 20:07   #20
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da -Ivan- Guarda i messaggi
Il problema in questo caso è che se ho ad esempio un file così:

aaaaaabhhhhhhhcaaaaaaa

mi vengono fuori tanti /0 ed alla fine non so se conviene o meno (anche perchè dovrei mettere un altro carattere una volta finita la sequenza compressa).
Il problema è che non so come saranno strutturati i file da comprimere quindi non posso fare dei calcoli di convenienza.
Però l'idea del /0 in effetti potrebbe farmi risparmiare il numero di fianco alle lettere singole.
Si. Se il file è composto principalmente da sequenze di caratteri molto lunghe allora non conviene. Se hai un po' di file di esempio prova a vedere con che probabilità compaiono. Così puoi decidere meglio. Ricorda poi che i contatori sono short int quindi valgono doppio.

Quote:
Originariamente inviato da cionci Guarda i messaggi
Ti conviene leggere un buffer di dimensione pari ad un multiplo o un sottomultiplo dell'unità di allocazione minima del disco. Quindi 4096 byte dovrebbe essere perfetto.

Se trovi \0 nel file però è un po' complessa la cosa
Se trova uno o più null stampa due null e il numero di volte ripetuto. Il decoder dovrebbe semplicemente controllare per il caso particolare in cui il null è seguito da un'altro null.

A spingersi ancora di più in la si potrebbe fare una scansione iniziale del file per vedere quale è il byte meno probabile ed usare quello come sequenza di escape.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
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: 04:36.


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