* L'acpi fonctionne partiellement, pas de suspend to ram. l'apm n'existe plus
* Les cartes wifi intégrées de marque broadcom ( les 1300 b/g par ex ) ne fonctionnent qu'avec les driver windows donc ndis sous linux et *bsd.
* Les cartes ati a base de RV300+ ne disposent pas de DRI pour l'instant, donc pour la 2D/3D c'est driver ati proprio uniquement ( et seulement sous linux, marche pas sous *Bsd ). Prends plutot une nvidia.
J'ai eu un 4150 et maintenant un 8600, j'en suis très content.
C'est du pinaillage mais dans ton code tu executes des opérations "lentes"
a l'intérieur du thread Swing.
Dans Swing, les evenements générés par l'interface
utilisateur sont reçus par la JVM et stockés dans une file d'evenements. A
l'intérieur de la JVM, un thread d'expedition d'evenements ( implémenté par la
class java.awt.EventQueue) surveille cette file et expédie les évenements
arrivants aux listeners intéressés.
Le thread Swing s'occupe d'afficher les composants graphiques. Si tu effectues
des traitements couteux à l'intérieur de ce thread, tu vas empecher la mise
à jour de l'interface.
( Note : la méthode actionPerformed() ici correspond à ta méthode jButton1ActionPerformed() , le listModel est le modele d'une JList et correspond à ton
composant JTextArea - mais c'est plus explicite avec un listModel )
1. Exemple de ce qu'il *ne faut pas* faire :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ici le thead Swing est bloqué pendant 1 seconde, si tu resize la fenetre par exemple, elle ne serait pas repainte .
public void actionPerformed(ActionEvent event) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
2. Exemple de ce qu'il *ne faut pas* faire :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ici le travail est bien effectué à l'exterieur du thread Swing, mais le modele de liste n'est pas mis à jour à l'intérieur du thead Swing.
public void actionPerformed(ActionEvent event) {
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
}).start();
}
}
3. La bonne manière de procéder
~~~~~~~~~~~~~~~~~~~~~~
- le travail est effectué à l'extérieur du thread Swing
- la mise à jour du composant graphique est effectuée à l'intérieur du thread Swing.
public void actionPerformed(ActionEvent event) {
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
});
}
}).start();
}
Ca n'a un peu rien a voir ;) mais je me souviens que dans
netbeans ( version d'il y a 1an1/2 ) tu lui donnais la dtd,
ensuite bouton droit dessus et pouf ca génerait un parser.
Néanmoins bien pratique pour parser rapido du html sans
se prendre la tête ...
mes 0.02?
[ Oui je sais ca n'a rien a voir avec la question ]
Ce thread était globalement interessant, toi tu arrives et en 3 heures tu pourris le machin ...
Pour te répondre néanmoins, quand la jvm detecte qu'une partie du code est souvent employée, ca peut etre une méthode ou un enchainement de méthode, et bien elle la compile nativement.
Ensuite quand on redemande l'execution de ce bytecode, c'est la version native qui sera executé et non plus la version interpreté.
Sur ma machine ( laptop centrino 1.7 ) , une application
Swing de taille raisonnable ( ie : je ne parle pas de netbeans )
met moins de 2 seconde entre la ligne de commande et l'affichage.
Par comparaison mozilla met 9 sec au premier démarrage
puis 4 seconde apres.
Netbeans met 20 sec entre le démarrage et le moment
ou je peux éditer le projet en cours. Mais netbeans est
un monstre en terme de programme.
( Mon jre est de plus configuré en mode server qui ralentit
encore plus le chargement initial, en mode client l'application
swing de base s'affiche en moins de 2 sec )
Je ne suis pas d'accord avec le fait de nuller une variable après usage.
C'est un mythe qui a la vie dure. Soi disant le fait de nuller une variable
facilite la suppression de l'objet par le garbage collector, c'est faux, et au pire
ca va entrainer une diminution des performances.
Il ne sert à rien de nuller une variable après usage sauf dans quelques cas
particuliers comme :
* utilisation de champs statiques ou privés pour stocker des données temporaires.
* utilisation de tableau pour stocker des objets de maniere temporaire.
A part dans le cas de données temporaires, la variable est de tout facon nullé en sortie de méthode. Si ce n'est pas le cas c'est que le scope de la variable est mauvais.
La différence avec un autre fichier zip, c'est que le contenu stocké dans l'archive doit respecter une structure de repertoire propre à java pour le stockage des binaires ainsi que le fichier de description.
|- META-INF/MANIFEST.MF // données de lancement automatique
|- com
-/monentreprise
-/monapplication/
- MaClass.class // binaires stockés selon le schéma de nommage des packages java
|- autres // stockage des ressources ( tout et n'importe quoi ) de n'importe quelle maniere
Si ces points sont respectés, alors l'archive zip est un jar qui peut
etre lancé en ligne de commande grace à la commande java -jar monjar.jar
En gros, un fois ton applet correctement signée, si l'utilisateur accepte
de truster ta signature, tu peux modifier les regles de sécurité de
java et donc accèder a des ressources qui ne sont pas pas disponibles
par défaut.
Il existe un module de configuration de pureftpd dans /etc/sysconfig,
qui est accessible aussi via yast ...
Pour info les fichiers sysconfig sont des configurations simplifiées
de certains softs, qui sont ensuite reportés dans les fichiers de conf
de chaque application.
Je rajouterais aussi qu'en plus de la boite, les propriétaires d'une
version pro bénéficient d'un support SuSE personnalisé.
# mes 0.02¤
Posté par Roger Rabbit . En réponse à la dépêche Montpellier, logiciels libres et LastJeudi.... Évalué à 1.
>> Le rendez-vous est fixé à :
>> Brasserie Le Triolet
>> 34 avenue Emile Diacon à Montpellier
>> Face à la station de Tramway "Universités des sciences et des lettres"
C'est quand meme pas top les abords de la fac de science
le soir ... c'était mieux a vent ( place jean jaures par ex )
# Dell
Posté par Roger Rabbit . En réponse au message Linux et Dell. Évalué à 2.
Alors sur les laptop dell réçents :
* L'acpi fonctionne partiellement, pas de suspend to ram. l'apm n'existe plus
* Les cartes wifi intégrées de marque broadcom ( les 1300 b/g par ex ) ne fonctionnent qu'avec les driver windows donc ndis sous linux et *bsd.
* Les cartes ati a base de RV300+ ne disposent pas de DRI pour l'instant, donc pour la 2D/3D c'est driver ati proprio uniquement ( et seulement sous linux, marche pas sous *Bsd ). Prends plutot une nvidia.
J'ai eu un 4150 et maintenant un 8600, j'en suis très content.
bon achat
# Swing
Posté par Roger Rabbit . En réponse au message Java et Regexp. Évalué à 1.
C'est du pinaillage mais dans ton code tu executes des opérations "lentes"
a l'intérieur du thread Swing.
Dans Swing, les evenements générés par l'interface
utilisateur sont reçus par la JVM et stockés dans une file d'evenements. A
l'intérieur de la JVM, un thread d'expedition d'evenements ( implémenté par la
class java.awt.EventQueue) surveille cette file et expédie les évenements
arrivants aux listeners intéressés.
Le thread Swing s'occupe d'afficher les composants graphiques. Si tu effectues
des traitements couteux à l'intérieur de ce thread, tu vas empecher la mise
à jour de l'interface.
( Note : la méthode actionPerformed() ici correspond à ta méthode jButton1ActionPerformed() , le listModel est le modele d'une JList et correspond à ton
composant JTextArea - mais c'est plus explicite avec un listModel )
1. Exemple de ce qu'il *ne faut pas* faire :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ici le thead Swing est bloqué pendant 1 seconde, si tu resize la fenetre par exemple, elle ne serait pas repainte .
public void actionPerformed(ActionEvent event) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
2. Exemple de ce qu'il *ne faut pas* faire :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ici le travail est bien effectué à l'exterieur du thread Swing, mais le modele de liste n'est pas mis à jour à l'intérieur du thead Swing.
public void actionPerformed(ActionEvent event) {
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
}).start();
}
}
3. La bonne manière de procéder
~~~~~~~~~~~~~~~~~~~~~~
- le travail est effectué à l'extérieur du thread Swing
- la mise à jour du composant graphique est effectuée à l'intérieur du thread Swing.
public void actionPerformed(ActionEvent event) {
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < 100; i++) {
val++;
listModel.addElement(new Integer(val));
}
}
});
}
}).start();
}
Références
~~~~~~~
Le threading dans Swing :
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html(...)
Les exemples de code et plus d'explication :
http://www.clientjava.com/blog/2004/08/20/1093059428000.html(...)
[^] # Re: ...
Posté par Roger Rabbit . En réponse au journal Jake2 - port Quake2 en Java. Évalué à 1.
[^] # correction
Posté par Roger Rabbit . En réponse au message icônes perdus dans la barre d'outils de konqueror. Évalué à 1.
# barre d'outils
Posté par Roger Rabbit . En réponse au message icônes perdus dans la barre d'outils de konqueror. Évalué à 1.
./share/apps/konqueror/konqueror.rc
# Regex
Posté par Roger Rabbit . En réponse au message Regexp. Évalué à 1.
# Applet et frames
Posté par Roger Rabbit . En réponse au message JApplet avec JInternalFrame. Évalué à 1.
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
/**
*
* @author rabbit
*/
public class LinuxFrApplet extends javax.swing.JApplet {
public void init() {
initComponents();
}
private void initComponents() {
jDesktopPane1 = new JDesktopPane();
JInternalFrame internalFrame = new JInternalFrame() ;
jDesktopPane1.add(internalFrame, JLayeredPane.DEFAULT_LAYER);
internalFrame.setSize(new Dimension(100,100)) ; // <=
internalFrame.setVisible(true) ; // <=
getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER);
}
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JPanel jPanel1;
}
Ta JInternalFrame doit :
* Avoir une taille
* Etre rendue visible
# Ca n'a rien à voir mais
Posté par Roger Rabbit . En réponse au message Xerces et validation d'une DTD à la volé. Évalué à 2.
netbeans ( version d'il y a 1an1/2 ) tu lui donnais la dtd,
ensuite bouton droit dessus et pouf ca génerait un parser.
Néanmoins bien pratique pour parser rapido du html sans
se prendre la tête ...
mes 0.02?
[ Oui je sais ca n'a rien a voir avec la question ]
[^] # Re: Re
Posté par Roger Rabbit . En réponse au journal Looking Glass : quand sun se réconsilie avec la gpl. Évalué à -2.
journaux avant de poster ?
Si tu veux faire la morale tu te trompes peut etre de personne
@+
# Re
Posté par Roger Rabbit . En réponse au journal Looking Glass : quand sun se réconsilie avec la gpl. Évalué à -1.
[^] # Re: Excellent
Posté par Roger Rabbit . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 3.
Ce thread était globalement interessant, toi tu arrives et en 3 heures tu pourris le machin ...
Pour te répondre néanmoins, quand la jvm detecte qu'une partie du code est souvent employée, ca peut etre une méthode ou un enchainement de méthode, et bien elle la compile nativement.
Ensuite quand on redemande l'execution de ce bytecode, c'est la version native qui sera executé et non plus la version interpreté.
[^] # Re: Excellent
Posté par Roger Rabbit . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 2.
cf mon post plus bas ...
[^] # Re: -1
Posté par Roger Rabbit . En réponse au message distros/linux. Évalué à 3.
\o/ Belgique \o/
# -1
Posté par Roger Rabbit . En réponse au message distros/linux. Évalué à 4.
Chimay
Jupiler
Orval
Leffe
.. il faut être équitable :)
[^] # Re: Excellent
Posté par Roger Rabbit . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 3.
A l'execution, java est compilé partiellement à l'aide d'un programme
en C pour produire des instructions machines.
Le code natif résultant n'est *pas* du C. Le C sert juste à compiler
le bytecode en natif. Le compilateur pourrait etre en delphi ca serait
pareil.
.....
[^] # Pour information...
Posté par Roger Rabbit . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 2.
Swing de taille raisonnable ( ie : je ne parle pas de netbeans )
met moins de 2 seconde entre la ligne de commande et l'affichage.
Par comparaison mozilla met 9 sec au premier démarrage
puis 4 seconde apres.
Netbeans met 20 sec entre le démarrage et le moment
ou je peux éditer le projet en cours. Mais netbeans est
un monstre en terme de programme.
( Mon jre est de plus configuré en mode server qui ralentit
encore plus le chargement initial, en mode client l'application
swing de base s'affiche en moins de 2 sec )
[^] # Faux
Posté par Roger Rabbit . En réponse à la dépêche Le code de Java3D est disponible. Évalué à 6.
Je ne suis pas d'accord avec le fait de nuller une variable après usage.
C'est un mythe qui a la vie dure. Soi disant le fait de nuller une variable
facilite la suppression de l'objet par le garbage collector, c'est faux, et au pire
ca va entrainer une diminution des performances.
Il ne sert à rien de nuller une variable après usage sauf dans quelques cas
particuliers comme :
* utilisation de champs statiques ou privés pour stocker des données temporaires.
* utilisation de tableau pour stocker des objets de maniere temporaire.
A part dans le cas de données temporaires, la variable est de tout facon nullé en sortie de méthode. Si ce n'est pas le cas c'est que le scope de la variable est mauvais.
Pour ceux que ca interesse, plus d'infos la :
Java theory and practice: Garbage collection and performance
http://www-106.ibm.com/developerworks/library/j-jtp01274.html#resou(...)
et la
How you reference objects can seriously affect the garbage collector
http://www-106.ibm.com/developerworks/java/library/j-perf08273.html(...)
[^] # Quelques précisions
Posté par Roger Rabbit . En réponse à la dépêche Sortie d'Eclipse 3.0 finale. Évalué à 2.
La différence avec un autre fichier zip, c'est que le contenu stocké dans l'archive doit respecter une structure de repertoire propre à java pour le stockage des binaires ainsi que le fichier de description.
|- META-INF/MANIFEST.MF // données de lancement automatique
|- com
-/monentreprise
-/monapplication/
- MaClass.class // binaires stockés selon le schéma de nommage des packages java
|- autres // stockage des ressources ( tout et n'importe quoi ) de n'importe quelle maniere
Si ces points sont respectés, alors l'archive zip est un jar qui peut
etre lancé en ligne de commande grace à la commande java -jar monjar.jar
[^] # Re: Script
Posté par Roger Rabbit . En réponse au journal Effacement et récupération de données. Évalué à 2.
# Re
Posté par Roger Rabbit . En réponse au message Commençons doucement : Stocker des données pour un applet. Évalué à 3.
pour qu'une applet puisse acceder aux ressources clientes ( matériels divers,
les disques par exemple ) , elle doit être signée.
un exemple de A à Z est fourni ici :
http://www.developer.com/java/other/article.php/3303561(...)
En gros, un fois ton applet correctement signée, si l'utilisateur accepte
de truster ta signature, tu peux modifier les regles de sécurité de
java et donc accèder a des ressources qui ne sont pas pas disponibles
par défaut.
[^] # Re: Torrent
Posté par Roger Rabbit . En réponse à la dépêche Sortie d'Eclipse 3.0 finale. Évalué à 2.
rafrachis la page ...
# Torrent
Posté par Roger Rabbit . En réponse à la dépêche Sortie d'Eclipse 3.0 finale. Évalué à 7.
eclipse-SDK-3.0RC3-linux-gtk.zip
eclipse-SDK-3.0RC3-win32.zip
eclipse-SDK-2.1.3-win32.zip
swt-3.0RC3-linux-gtk.zip
sont disponibles à cette adresse :
http://eclipse-mirror.jab.fi:6969/(...)
[^] # Re: Euh....
Posté par Roger Rabbit . En réponse à la dépêche Sortie d'Eclipse 3.0 finale. Évalué à 10.
>> Availability
>> Distributions of Eclipse 3.0 will be available by June 30 for download from
>> http://www.eclipse.org.(...)
C'est de la que je tiens la date de disponibilité de la 3.0 finale pour le 30 juin
[^] # Re: Un peu chère ?
Posté par Roger Rabbit . En réponse au journal Test de la SuSE 9.1. Évalué à 2.
qui est accessible aussi via yast ...
Pour info les fichiers sysconfig sont des configurations simplifiées
de certains softs, qui sont ensuite reportés dans les fichiers de conf
de chaque application.
Je rajouterais aussi qu'en plus de la boite, les propriétaires d'une
version pro bénéficient d'un support SuSE personnalisé.