Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-08-2008, 11:26   #1
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
[Java] Come migliorare le prestazioni di una complessa Applet?

Salve. Da circa un mese a questa parte sto lavorando assiduamente alla creazione di una chat utilizzando applet dal lato client e uno script php dal lato server. Ho ancora parecchie cose da sistemare, ma la cosa principale sono le prestazioni. Se avvio l'applet da locale, il programma scorre una meraviglia, ma se l'avvio on-line noto dei rallentamenti. Sarà perchè il collegamento con i file (sì uso diversi file di testo per gestire conversazioni, registrazioni ecc...) nella rete è indubbiamente più lento del locale, ok. Ma io noto che il programma mi va a scatti anche solo se digito del testo in un JTextField, però non sempre. Ci sono delle volte in cui non ci sono rallentamenti, e certe volte in cui sì. In locale invece non ho mai avuto rallentamenti di alcun tipo... non mi metto di certo a postare l'intero sorgente, dato che sono più di 2900 righe di codice.

Vorrei sapere in linea generale gli elementi che più influiscono sulle prestazioni. Ad esempio, attualmente uso tre Timer, ognuno agisce in tempi separati. Se sostituissi i Timer con dei Thread sarebbe meglio? E cosa cambia tra Applet e JApplet?
Insomma, vorrei dei consigli per migliorare le prestazioni della mia applet...

Per provare la chat (ovviamente ancora incompleta), potete andare a questo indirizzo: http://www.lenostreidee.net/DFChat/DFChat.html

Magari mi dite se anche voi notate dei rallentamenti o no... avendo un solo computer mi risulta difficile fare test on-line

Ciao e grazie per l'attenzione
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 12:11   #2
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
mi va senza problemi.. non noto rallentamenti
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 12:17   #3
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Nessun rallentamento apprezzabile...
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 12:21   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
io ho notato solo che se mandi 4/5 messaggi velocemente tipo di una sola lettera appaiono tutti insieme, ma penso sia normale..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 12:55   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Provata anch'io assieme un altro utente e sia io che l'altro abbiamo notato qualche lag (non si verificava sempre però) sia durante la digitazione del testo nel JTextField sia nell'invio del messaggio e la sua effettiva apparizione nella finestra di chat.

Puoi provare a spiegarci in che modo usi i Timer e per controllare cosa?
Inoltre quante letture/scritture dai/sui file locali fa la chat?
Magari si può elaborare una strategia per bufferizzare e scrivere sui file solo quando strettamete neccessario, o nei "tempi morti".

Ciao

P.S.: io avevo anche qualche problema di charset credo, perchè le vocali accentate spedite dall'altro utente non le vedevo visualizzate correttamente nella finestra di chat, mentre se ero io a spedirle alla chat, l'altro utente le vedeva correttamente.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:09   #6
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Innanzitutto grazie per l'interessamento!

Ora spiego brevemente cosa fanno questi 3 Timer:

Il primo agisce ogni secondo e legge i messaggi dal file di testo e li stampa nel JEditorPane principale. Serve quindi a leggere i messaggi.

Il secondo agisce ogni 3 secondi e legge i nomi degli utenti on-line da un file di testo e quindi aggiorna la lista degli utenti on-line

Il terzo infine, agisce ogni 5 secondi e legge da un file di testo i nomi degli utenti bannati e provvede quindi all'espulsione in caso che il nick in uso coincida con un nick trovato nel file di testo.

Un'altra cosa strana è che ad un mio amico la la finestra di chat si è aperta dopo quasi 1 minuto o più... è possibile che possa succedere se si ha una vecchia versione di JRE installata?
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:15   #7
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Quote:
Originariamente inviato da ndakota Guarda i messaggi
io ho notato solo che se mandi 4/5 messaggi velocemente tipo di una sola lettera appaiono tutti insieme, ma penso sia normale..
E' normale considerando che il JEditorPane si aggiorna ogni secondo
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:17   #8
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Per quanto riguarda il charset, mi pare molto strano... prima avevo questo problema ma poi ho corretto e ora non c'è più. Possibile che possa essere un problema tuo? Anche se mi sembra difficile o_O
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:36   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Dunque, visto il modo in cui usi i file di testo, non potresti sostituirli con qualche buffer in memoria?
Scrivere e leggere dal buffer sarebbe più rapido che da file.

Per il discorso Timer/Thread: ho guardato velocemente la classe Timer: non è altro che una "facility" per i thread che devono eseguire dei task, in un certo momento e/o ogni certo intervallo di tempo, percui il problema non si pone visto che non stai assegnando task a mille mila thread ma solo a tre.

Ciao

@EDIT:
Quote:
Per quanto riguarda il charset, mi pare molto strano... prima avevo questo problema ma poi ho corretto e ora non c'è più. Possibile che possa essere un problema tuo?
non ne ho idea
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:39   #10
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Dunque, visto il modo in cui usi i file di testo, non potresti sostituirli con qualche buffer in memoria?
Scrivere e leggere dal buffer sarebbe più rapido che da file.

Per il discorso Timer/Thread: ho guardato velocemente la classe Timer: non è altro che una "facility" per i thread che devono eseguire dei task, in un certo momento e/o ogni certo intervallo di tempo, percui il problema non si pone visto che non stai assegnando task a mille mila thread ma solo a tre.

Ciao

@EDIT:

non ne ho idea
Non ho capito bene cosa intendi con quel sistema di buffer in memoria... potresti essere più preciso?
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:45   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da UnknownSoldier Guarda i messaggi
Non ho capito bene cosa intendi con quel sistema di buffer in memoria... potresti essere più preciso?
Considetando che non ho mai programmato nulla che non fosse strettamente classificabile come "desktop application" potrei aver detto una cavolata.

I file di testo che usi adesso, di preciso a cosa servono?
Cioè quando vengono scritti e da chi, e quando vengono letti e da chi?

@EDIT:
scusa, hai la chat, aprila che la usiamo
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 28-08-2008 alle 13:47.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 13:54   #12
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Considetando che non ho mai programmato nulla che non fosse strettamente classificabile come "desktop application" potrei aver detto una cavolata.

I file di testo che usi adesso, di preciso a cosa servono?
Cioè quando vengono scritti e da chi, e quando vengono letti e da chi?
Uso i file perchè:

1) Per usare i socket avrei bisogno di un server dedicato

2) Evito di usare i database in modo che questa chat sia utilizzabile ad una più vasta gamma di utenti e con più semplicità

L'applet java fa da client per ogni utente che si collega alla chat. Siccome non ho idea di come fare per scrivere file di testo da applet java su uno spazio web, mi affido ad uno script php che svolge queste funzioni in modo molto semplice.

Quando nella pagina iniziale si inserisce un nick per entrare, l'applet java legge il file di testo che contiene la lista di tutti i nick attualmente on-line, e se trova uno stesso nick già collegato, la lettura si interrompe e viene comunicato che quel nick è già in uso. Se invece non è in uso, la finestra di chat si apre e si è quindi collegati.

Il JTextField che serve per inviare i messaggi, quando si preme invio o si preme il pulsante "Invia messaggio", invia il testo attualmente presente sul JTextField e lo invia ad uno script php attraverso una richiesta GET. Lo script php riceve questi dati e apre il file messageList.txt in modalità append e aggiunge il messaggio.

Ogni secondo il timer readerTimer effettua una lettura a messageList, e quindi aggiorna il JEditorPane se ci sono nuovi messaggi

PS: sono collegato :P
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 14:11   #13
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Riguardo ai blocchi, a volte che si verificano e a volte no, ecco parte del codice inerente all'invio dei messaggi:

Al JTextField ho impostato la classe per gli eventi SendMessageHandler.
mainTextArea sarebbe il JEditorPane principale che visualizza i messaggi.
Forse questi blocchi si verificano quando contemporaneamente il Timer che legge i messaggi e l'actionPerformed di SendMessageHandler vengono eseguiti?

Codice:
	private class SendMessageHandler implements ActionListener
	{
		public void actionPerformed (ActionEvent event)
		{
			if (!insertMessageField.getText().equals (""))
			{
				String message = insertMessageField.getText();
				
				sendMessage ("all", username, message);
				
				messageList += "\n" + username + " > " + insertMessageField.getText();
				mainTextArea.setText (messageList);
				
				insertMessageField.setText ("");
			}
		}
	}


private void sendMessage (String to, String username, String message)
	{		
		InputStream inputStream = null;
		try
		{
			String address = "http://" + Host + "/DFChat/server/server.php?r=1&to="
			+ to.replace (" ", "_") + "&user=" + username.replace (" ", "_") + "&message=" + message.replace (" ", "_");

			URL url = new URL (address);
			URLConnection connection = url.openConnection();
			connection.setDoOutput (true);
			
			inputStream = connection.getInputStream();
		}
		catch (Exception exception)
		{
			exception.printStackTrace();
		}
		finally
		{
			try
			{
				inputStream.close();
			}
			catch (Exception exception)
			{
				exception.printStackTrace();
			}
		}
	}
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 14:53   #14
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Il JTextField che serve per inviare i messaggi, quando si preme invio o si preme il pulsante "Invia messaggio", invia il testo attualmente presente sul JTextField e lo invia ad uno script php attraverso una richiesta GET. Lo script php riceve questi dati e apre il file messageList.txt in modalità append e aggiunge il messaggio.
Questo avviene qui (evidenziato in grassetto)
Codice:
private void sendMessage (String to, String username, String message)
{		
    InputStream inputStream = null;
    try
    {
         String address = "http://" + Host + "/DFChat/server/server.php?r=1&to=" + to.replace (" ", "_") + "&user=" + username.replace (" ", "_") + "&message=" + message.replace (" ", "_");

         URL url = new URL (address);
         URLConnection connection = url.openConnection();
         connection.setDoOutput (true);
			
         inputStream = connection.getInputStream();
    }
    catch (Exception exception)
    {
        exception.printStackTrace();
    }
    finally
    {
        try
        {
             inputStream.close();
        }
             catch (Exception exception)
        {
             exception.printStackTrace();
        }
    }
}
Nota(1): il codice in blu probabilmente non serve a nulla.

Nota(2): il metodo sendMessage() viene chiamato dal metodo actionPerformed() che rappresenta la risposta all'evento "action" del JTextField: siccome il thread esecutore di questo pezzo di codice è l'AWT Event Thread, la latenza ptrebbe essere eliminata facendo eseguire sendMessage() ad un thread apposito, e liberando così l'AWT event thread, con un migliore risultato nella percezione di reattività che l'utente ha del client della tua chat.

Prova così:

Codice:
private void sendMessage (String to, String username, String message)
{
    try
    {
         Thread senderThread = new Thread() 
         {
              @Override
              public void run() 
              {
                   String address = "http://" + Host + "/DFChat/server/server.php?r=1&to=" + to.replace (" ", "_") + "&user=" + username.replace (" ", "_") + "&message=" + message.replace (" ", "_");

                   URL url = new URL (address);
                   URLConnection connection = url.openConnection();
              }   
        };
        senderThread.start();
    }
    catch (Exception exception)
    {
        exception.printStackTrace();
    }
}

DISCLAIMER: sono un niubbo della programmazione, potrei quindi averti consigliato fesserie ma due cose giocano in mio favore:
1) la possibilità che altri utenti corregano eventuali errori;
2) il fatto che tentar non nuoce: fai un test.

Ciao
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 28-08-2008 alle 14:55.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 14:56   #15
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Grazie potrei provare. Comunque l'InputStream mi serve. Se non eseguo getInputStream(), la chiamata allo script php non viene eseguita.
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 14:57   #16
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da UnknownSoldier Guarda i messaggi
Grazie potrei provare. Comunque l'InputStream mi serve. Se non eseguo getInputStream(), la chiamata allo script php non viene eseguita.
Ah, non lo sapevo, non so niente di web e php.
Si sa il perchè?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 15:04   #17
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ah, non lo sapevo, non so niente di web e php.
Si sa il perchè?
Non lo so, ho solo provato a toglierlo, e non va
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 15:24   #18
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da UnknownSoldier Guarda i messaggi
Non lo so, ho solo provato a toglierlo, e non va
Forse ho capito perchè.
Leggendo qui si evince che:

Quote:
The abstract class URLConnection is the superclass of all classes that represent a communications link between the application and a URL. Instances of this class can be used both to read from and to write to the resource referenced by the URL. In general, creating a connection to a URL is a multistep process:

1. The connection object is created by invoking the openConnection method on a URL.
2. The setup parameters and general request properties are manipulated.
3. The actual connection to the remote object is made, using the connect method.
4. The remote object becomes available. The header fields and the contents of the remote object can be accessed.
e anche che:

Quote:
The following methods are used to access the header fields and the contents after the connection is made to the remote object:

* getContent
* getHeaderField
* getInputStream
* getOutputStream
Siccome nel tuo codice non chiami esplicitamente il metodo connect(), la connessione all'oggetto remoto non avviene (e quindi lo script php non viene invocato) e quindi quando il codice esegue connection.getInputStream(), che come specificato sopra necessita che la connessione sia stabilita, siccome la connessione non è ancora stata aperta la apre lui dietro le quinte (suppongo).

Quindi puoi rimuovere la chiamata e il blocco try{}catch(){}finally{} relativo all'oggetto InputStream e sostituire il tutto con una chiamata esplicita al metodo connect().

Javadoc rulez!
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 16:07   #19
UnknownSoldier
Member
 
Iscritto dal: Aug 2008
Messaggi: 210
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Forse ho capito perchè.
Leggendo qui si evince che:



e anche che:



Siccome nel tuo codice non chiami esplicitamente il metodo connect(), la connessione all'oggetto remoto non avviene (e quindi lo script php non viene invocato) e quindi quando il codice esegue connection.getInputStream(), che come specificato sopra necessita che la connessione sia stabilita, siccome la connessione non è ancora stata aperta la apre lui dietro le quinte (suppongo).

Quindi puoi rimuovere la chiamata e il blocco try{}catch(){}finally{} relativo all'oggetto InputStream e sostituire il tutto con una chiamata esplicita al metodo connect().

Javadoc rulez!
Ma connect() sarebbe un metodo di URLConnection?

Ritornando a prima, non capisco perchè in locale non mi da blocchi e on-line sì... comunque ora provo a fare come mi hai detto Però aggiungendo anche il metodo invokeLater, che secondo me indispensabile per dare una maggiore robustezza nella gestione dei componenti Swing.
UnknownSoldier è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2008, 16:25   #20
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da UnknownSoldier Guarda i messaggi
Ma connect() sarebbe un metodo di URLConnection?
Leggi il link che ti ho postato.

Quote:
Ritornando a prima, non capisco perchè in locale non mi da blocchi e on-line sì... comunque ora provo a fare come mi hai detto
Forse perchè in locale la pagina php risiede nel tuo pc oppure in un pc nella tua lan e fa molto prima...

Quote:
Però aggiungendo anche il metodo invokeLater, che secondo me indispensabile per dare una maggiore robustezza nella gestione dei componenti Swing.
Attenzione. Leggi qua.
Con invokeLater accodi all'AWT Event Thread un oggetto Runnable (un Thread è un oggetto Runnable) perchè venga eseguito in maniera asincrona dall'AWT Event Thread.

Quello che invece io ti ho postato, è un metodo per eseguire sendMessage() fuori dall'AWT Event Thread, in un altro Thread.
Questo proprio allo scopo di non rallentare il processing dei messaggi e update dell'interfaccia grafica.

E' chiara la differenza?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
ESA e ClearSpace svilupperanno un satell...
Oracle, stock option da quasi un miliard...
Starship: si è conclusa anticipat...
Un computer quantistico ha funzionato ne...
Sovranità sui dati: AWS è ...
Il nuovo nome della distro Linux mobile ...
Due ventole da 220 mm e non solo: Cooler...
Truffa telefonica via Google Ads: il bro...
Google pensiona le Gems di Gemini: cosa ...
Flight 14: incertezza per un problema a ...
C'è un problema con i robot Tesla: i dip...
Raggi gamma anomali dalla Via Lattea sve...
NIO vende il 30% della divisione scambio...
Sony brevetta un DualSense capace di acc...
Un volto per l'assistenza IA: cosa pu&og...
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: 18:30.


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