Bon, je ne suis pas un expert en réseaux, mais si j'étais toi, j'aurais les éléments suivants :
Pour un pogramme client :
- un thread principal captant les interactions utilisateur sur l'interface graphique.
- un thread écoutant le flux entrant et envoyant des appels à l'interface graphique dès qu'un message complet est reçu (message au sens texte, notification de connexion, ou tout autre type selon ce que peut faire ton IM).
- un thread envoyant les données sur le flux sortant : ce thread recevrait des messages de l'interface graphique.
Pour le programme serveur :
- un thread principal acceptant les connexions entrantes et les dispatchant directement sur ...
- ... un thread de traitement d'une connexion (il y en a donc n pour n connexions simultannées)
Après tout cela dépend de :
- la volumétrie : c'est juste pour 2 personnes qui dialoguent ou bien pour 10000 utilisateurs simultanés ?
- la complexité du protocole
Enfin bref, pour ce genre de programmes, il n'est surement pas inutile de faire un important travail de conception en premier lieu : répartition des tâches entre client et serveur (si tu utilises ce mode), description complète du protocole de communication entre les 2, ... les sujets de réflexion sont nombreux.
Puisque ce projet est certainement destiné à apprendre des choses, je te propose de regarder le document suivant qui te donnera une idée de toutes ces problématiques, si jamais l'anglais n'est pas un problème :
Salut, dans tous les cas tu peux utiliser VLC (qui existe aussi sur Windows au passage), sinon suivant que tu utilises un bureau Gnome ou KDE, il y aura surement un lecteur Vidéo mieux intégré à ton bureau. Pour Gnome, on pourra citer Totem par exemple.
Je ne sais pas à quel point ta syntaxe est complexe, mais si tu veux écrire un parser un tant soit peu lisible pour une grammaire conséquente, peut-être devrais-tu regarder du côté de générateurs de parsers. Celui qui me vient en tête en Java est ANTLR. Je l'avais utilisé il y a quelques années, et même si cela peut prendre un peu de temps à découvrir, le jeu en vaut largement la chandelle : ça évite de réinventer la roue (et les bugs qui vont avec).
... on devrait apprendre à se servir de grep et wc même quand on est un journaliste[*] ;o)
Et on ne parlera même pas de l'opportunité de cumuler les failles de systèmes différents...
[*] oui je sais, le fait d'écrire des articles sur VNUnet.fr ne fait pas d'un individu lambda un journaliste... Le recoupement des infos et le regard critique sur les chiffres et leur signification sont bien rares de nos jours.
Bien, les autres personnes ayant déjà dit des choses fort justes, voici quelques liens pour t'aider malgré tout dans ta tâche. (je ne donne jamais de réponses aux exercices, justes des pointeurs...)
Pour compiler une application graphique en Swing :
Et tu ne veux pas tout simplement faire un script SH qui parse un argument en ligne de commande indiquant quel exécutable lancer ? (en plus tu peux directement daemoniser le lancement de ton exécutable serveur...)
Et il faut aussi préciser que les problématiques de réplication d'annuaire peuvent rapidement devenir assez complexes... Enfin, je ne dis pas ça pour te décourager ;o)
Par exemple, si tu veux synchroniser les droits sur les entrées de l'annuaire, tu vas t'amuser.
est-ce qu'une synchronisation entre un Active Directory et un OpenLDAP est possible?
A mon avis pas directement, il faudrait sûrement s'appuyer sur un méta-annuaire, et c'est loin d'être léger (sans parler du prix). Il faut également savoir qu'un méta sera sûrement assez intrusif côté AD (ne serait-ce que pour pouvoir propager les changements de mot de passe...).
Heureux d'avoir pu aider, sinon pour synthétiser le méli-mélo d'infos que je donnais hier soir (ce n'était pas très clair) ainsi que le commentaire de Matafan :
-lXXX requiert le fichier libXXX.so
-L<chemin> indique où le trouver
et le $LD_LIBRARY_PATH indique, si je ne me trompe, tous les chemins où se trouvent les bibliothèques requises à l'exécution. Voilà, cette fois je pense que je n'ai pas tout enmêlé ;o)
Pour ma part, pour les threads (et plein d'autres choses bien sûr), si je suis en C, j'aime bien passer par le GLib (comme ça mon appli ne dépend pas d'une lib de threads spécifique) :
la référence GLib sur les threads :
http://developer.gnome.org/doc/API/2.0/glib/glib-Threads.htm(...)
pour faire bref et te donner une idée de la manière dont ça s'utilise :
1. tu fais une fonction ma_fonction() qui procède au traitement qu'effectuera ton thread.
2. dans ton fichier qui lance le thread, tu fais un truc du genre (attention, cela implique que tu disposes de la glib avec les includes) :
#include <glib.h>
...
if (g_thread_supported())
{
g_thread_init(NULL);
mon_thread = g_thread_create(ma_fonction, NULL, FALSE, NULL)
// C'est un (GThread *)
}
Attention, ce n'est qu'un morceau de code simple, voir simpliste (i.e. pas de passage de paramètre à la fonction, pas de boucle en mode thread safe, ...). Je t'encourage vivement à lire des docs sur les threads, et si tu choisis la Glib, bien regarder la référence de l'API des threads : par contre c'est vrai qu'elle manque de tutoriels...
A moi que je ne m'abuse (et c'est peut-être le cas), ld fonctionne de la manière suivante :
1. on lui passe -lXXX
2. il déduit que l'on cherche libXXX.so
3. il le cherche dans les chemins mentionnés dans la variable LD_LIBRARY_PATH
Mon conseil : regarde donc ta variable LD_LIBRARY_PATH pour voir si elle comprend bien les emplacements du GLU.
Après, je ne sais plus trop si cette variable sert au link ou à l'exécution (il me semble que ce n'est qu'à l'exécution), mais bon...
Si tu ne veux/peux pas la changer, je crois que le plus simple est de changer le Makefile en rajoutant aux options GCC un petit -L/usr/X11R6/lib. En fait, à y réfléchir, c'est vraiment le mieux à faire, que je sache.
Voilà.
J'espère que ça marchera (si tu n'as pas déjà résolu le problème, auquel cas ce serait bien de poster la réponse, histoire de me rafraichir la mémoire ;o)
En passant sur le site j'ai vu "GeeXboX 0.98.6 : Bigger, Longer, Uncuted ... (15/08/05)" en première page. "cuted" sonne très mal dans mes oreilles, mais bon, je ne suis pas infaillible.
Bon, désolé, maintenant je vais m'intéresser au contenu ;o)
Oui, enfin cela dit il n'a peut-être pas tort de demander ici dans la mesure où beaucoup plus de monde sur ce site est susceptible d'avoir une bibliothèque musicale en OGG Vorbis que sur mac*.[ com | net | org ]
> il reste bloqué à 0%, mais après un Ctrl+C, le fichier téléchargé est correcte.
Peut-être un problème dans l'entête HTTP annonçant la content-length qui permet à wget de dire où il en est ?
> il se bloque à divers pourcentages, mais l'image est correcte (et les images sont identiques, quelque soit le pourcentage auquel le téléchargement s'est arrêté)
Si la content-length n'est pas envoyée, et que le serveur ne prend pas l'initiative de fermer la connexion, le client doit être bien embêté :-P En même temps je fabule peut-être, vu que je ne peux accéder au site pour vérifier cette hypothèse...
Et bien moi, au risque de me faire moinser (ou pas), je dis sans crainte que je suis un apprenti (par contrainte, sinon je suis un piéton convaincu).
La découverte du quatre-roue a été surprenante, la connerie automobiliste peut aller très loin (surtout en région parisienne, mais bon, ne cédons pas au troll). Mais j'ai été également surpris par certains deux roues : que ce soit ceux qui tracent à toutes vapeurs entre les voitures à Paris et ses environs, ou bien ceux qui n'hésitent pas à circuler en prenant toute la largeur d'une route de campagne sur des kilomètres, quand bien même ils sont sans l'ombre d'un doute conscients de la présence d'un véhicule dérrière eux... (oui, j'essaie de ne pas klaxonner quand je peux l'éviter)
Bref, les incivilités et impolitesses sont inacceptables, quels qu'en soit les fauteurs... Pour ma part, je trouve qu'un cycliste ou un piéton qui cause une situation de danger est aussi dangereux qu'un chauffard à quatre roues.
Après, pour rouler un peu, je sais combien les automobilistes ignorent piétons et cyclistes : je ne peux donc te contredire sur ton dépit...
Et bien moi je n'ai pas compris tout ce foin sur les lenteurs de la télé-déclaration. Après avoir lu la notice sur la page d'accueil qui indiquait quand ne pas se connecter, je suis passé lundi matin à 7h30, et c'est passé comme une lettre à la poste (quand il n'y a pas de grève :-p).
A croire que les français ne savent pas se lever tôt ;-)
(pour le créneau à 2 heures du mat', c'est peut-être une affluence de bivalves en provenance de la tribune LinuxFR ? évidemment s'ils ont fait un wmimpots, aussi bourrin que wmc2...)
Tiens donc, Matt Dillon. Cela faisait bien longtemps que je n'avais pas vu ce nom. Ah, le bon temps quand je passais des nuits à faire tenir un workbench minimaliste et Dice C réduit un max sur 1 disquette bootable et le RAM disk de mon Amiga...
1) la GED : le domaine de *la* gestion électronique de documents
2) un GED : une solution logicielle constituant *un* gestionnaire électronique de documents
# Réseau
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Glib et les threads. Évalué à 3.
Bon, je ne suis pas un expert en réseaux, mais si j'étais toi, j'aurais les éléments suivants :
Pour un pogramme client :
- un thread principal captant les interactions utilisateur sur l'interface graphique.
- un thread écoutant le flux entrant et envoyant des appels à l'interface graphique dès qu'un message complet est reçu (message au sens texte, notification de connexion, ou tout autre type selon ce que peut faire ton IM).
- un thread envoyant les données sur le flux sortant : ce thread recevrait des messages de l'interface graphique.
Pour le programme serveur :
- un thread principal acceptant les connexions entrantes et les dispatchant directement sur ...
- ... un thread de traitement d'une connexion (il y en a donc n pour n connexions simultannées)
Après tout cela dépend de :
- la volumétrie : c'est juste pour 2 personnes qui dialoguent ou bien pour 10000 utilisateurs simultanés ?
- la complexité du protocole
Enfin bref, pour ce genre de programmes, il n'est surement pas inutile de faire un important travail de conception en premier lieu : répartition des tâches entre client et serveur (si tu utilises ce mode), description complète du protocole de communication entre les 2, ... les sujets de réflexion sont nombreux.
Puisque ce projet est certainement destiné à apprendre des choses, je te propose de regarder le document suivant qui te donnera une idée de toutes ces problématiques, si jamais l'anglais n'est pas un problème :
- http://www.faqs.org/rfcs/rfc2778.html - une synthèse sympa de ces problématiques
- http://www.cse.ohio-state.edu/nrl/IM.htm - plein d'autres liens
Sinon, Google est ton ami :o)
J'espère ne pas avoir tapé trop à côté de ta question. Bonne chance !
# Video
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Lecture de fichier video ???. Évalué à 2.
Par contre je ne connais pas les fichiers MKV.
# Parsing
Posté par mrlem (site web personnel, Mastodon) . En réponse au message [Java] Extraire informations d'une String. Évalué à 1.
Je ne sais pas à quel point ta syntaxe est complexe, mais si tu veux écrire un parser un tant soit peu lisible pour une grammaire conséquente, peut-être devrais-tu regarder du côté de générateurs de parsers. Celui qui me vient en tête en Java est ANTLR. Je l'avais utilisé il y a quelques années, et même si cela peut prendre un peu de temps à découvrir, le jeu en vaut largement la chandelle : ça évite de réinventer la roue (et les bugs qui vont avec).
http://www.antlr.org/doc/getting-started.html
# Conclusion ...
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Trois fois plus de vulnérabilités chez Linux que Windows. Évalué à 10.
Et on ne parlera même pas de l'opportunité de cumuler les failles de systèmes différents...
[*] oui je sais, le fait d'écrire des articles sur VNUnet.fr ne fait pas d'un individu lambda un journaliste... Le recoupement des infos et le regard critique sur les chiffres et leur signification sont bien rares de nos jours.
# Tâchons d'être constructif ...
Posté par mrlem (site web personnel, Mastodon) . En réponse au message urgent pour mon tp en java. Évalué à 3.
Pour compiler une application graphique en Swing :
- http://java.sun.com/docs/books/tutorial/uiswing/14start/comp(...)
Pour savoir comment fonctionnent les composants Swing :
- http://java.sun.com/docs/books/tutorial/uiswing/learn/exampl(...)
Les sections sur les JButton et les listeners devraient être particulièrement enrichissantes.
Voilà, si jamais cela ne te suffit pas, il va fallloir que tu remettes sérieusement en question ta méhodologie d'apprentissage ou ton assiduïté...
[^] # Re: pas clair ...
Posté par mrlem (site web personnel, Mastodon) . En réponse au message GTK : Forker depuis la boucle principale. Évalué à 0.
[^] # Re: synchro
Posté par mrlem (site web personnel, Mastodon) . En réponse au message AD + OpenLDAP. Évalué à 1.
Par exemple, si tu veux synchroniser les droits sur les entrées de l'annuaire, tu vas t'amuser.
# synchro
Posté par mrlem (site web personnel, Mastodon) . En réponse au message AD + OpenLDAP. Évalué à 1.
A mon avis pas directement, il faudrait sûrement s'appuyer sur un méta-annuaire, et c'est loin d'être léger (sans parler du prix). Il faut également savoir qu'un méta sera sûrement assez intrusif côté AD (ne serait-ce que pour pouvoir propager les changements de mot de passe...).
[^] # Re: re
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Problème avec -lGLU. Évalué à 1.
# Threads : GLib ?
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Threads. Évalué à 0.
#include <glib.h> ... if (g_thread_supported()) { g_thread_init(NULL); mon_thread = g_thread_create(ma_fonction, NULL, FALSE, NULL) // C'est un (GThread *) }Attention, ce n'est qu'un morceau de code simple, voir simpliste (i.e. pas de passage de paramètre à la fonction, pas de boucle en mode thread safe, ...). Je t'encourage vivement à lire des docs sur les threads, et si tu choisis la Glib, bien regarder la référence de l'API des threads : par contre c'est vrai qu'elle manque de tutoriels...[^] # Re: re
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Problème avec -lGLU. Évalué à 0.
A moi que je ne m'abuse (et c'est peut-être le cas), ld fonctionne de la manière suivante :
1. on lui passe -lXXX
2. il déduit que l'on cherche libXXX.so
3. il le cherche dans les chemins mentionnés dans la variable LD_LIBRARY_PATH
Mon conseil : regarde donc ta variable LD_LIBRARY_PATH pour voir si elle comprend bien les emplacements du GLU.
Après, je ne sais plus trop si cette variable sert au link ou à l'exécution (il me semble que ce n'est qu'à l'exécution), mais bon...
Si tu ne veux/peux pas la changer, je crois que le plus simple est de changer le Makefile en rajoutant aux options GCC un petit -L/usr/X11R6/lib. En fait, à y réfléchir, c'est vraiment le mieux à faire, que je sache.
Voilà.
J'espère que ça marchera (si tu n'as pas déjà résolu le problème, auquel cas ce serait bien de poster la réponse, histoire de me rafraichir la mémoire ;o)
# Variable d'environnement...
Posté par mrlem (site web personnel, Mastodon) . En réponse au message Détection d'emplacement de java?. Évalué à 0.
Evidemment, si ton but est justement de la positionner... locate est ton ami :o)
--
Seb (qui a un peu l'impression d'arriver 1 mois en retard :op)
# Typo
Posté par mrlem (site web personnel, Mastodon) . En réponse à la dépêche Conférence Pour les formats ouverts ! à la Cité des Sciences de La Villette. Évalué à 0.
# Désolé
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Sortie de la GeeXboX 0.98.6. Évalué à -1.
Bon, désolé, maintenant je vais m'intéresser au contenu ;o)
[^] # Re: un peu long, mais bon...
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal La guerre...non la lutte...non la guerre !. Évalué à 4.
Plotting Large Offensive Plans to Potentially Annihilate the Nasty
[^] # Re: euh ...
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal ITunes + Tiger + Ogg = Niet.... Évalué à 6.
[^] # Re: Date limite
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Ecrasez un Mammouth !. Évalué à 3.
Peut-être un problème dans l'entête HTTP annonçant la content-length qui permet à wget de dire où il en est ?
> il se bloque à divers pourcentages, mais l'image est correcte (et les images sont identiques, quelque soit le pourcentage auquel le téléchargement s'est arrêté)
Si la content-length n'est pas envoyée, et que le serveur ne prend pas l'initiative de fermer la connexion, le client doit être bien embêté :-P En même temps je fabule peut-être, vu que je ne peux accéder au site pour vérifier cette hypothèse...
[^] # Re: Je ne dis rien ...
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Violence routière. Évalué à 1.
La découverte du quatre-roue a été surprenante, la connerie automobiliste peut aller très loin (surtout en région parisienne, mais bon, ne cédons pas au troll). Mais j'ai été également surpris par certains deux roues : que ce soit ceux qui tracent à toutes vapeurs entre les voitures à Paris et ses environs, ou bien ceux qui n'hésitent pas à circuler en prenant toute la largeur d'une route de campagne sur des kilomètres, quand bien même ils sont sans l'ombre d'un doute conscients de la présence d'un véhicule dérrière eux... (oui, j'essaie de ne pas klaxonner quand je peux l'éviter)
Bref, les incivilités et impolitesses sont inacceptables, quels qu'en soit les fauteurs... Pour ma part, je trouve qu'un cycliste ou un piéton qui cause une situation de danger est aussi dangereux qu'un chauffard à quatre roues.
Après, pour rouler un peu, je sais combien les automobilistes ignorent piétons et cyclistes : je ne peux donc te contredire sur ton dépit...
[^] # Re: Merci
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Le logo debian dans WoW !. Évalué à 1.
Voilà pour mes 2 euro-cents.
[^] # Re: C'est formidable.
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Nagios au impôts. Évalué à 1.
A croire que les français ne savent pas se lever tôt ;-)
(pour le créneau à 2 heures du mat', c'est peut-être une affluence de bivalves en provenance de la tribune LinuxFR ? évidemment s'ils ont fait un wmimpots, aussi bourrin que wmc2...)
[^] # Re: DragonFly BSD
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal Filesystem "versionalisé" ? (!$@ de subversion). Évalué à 4.
Pfiou. Nostalgie quand tu nous tiens.
[^] # Re: Art
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal J'en ai rêvé ... qui l'a fait ?. Évalué à 2.
Ok ---->[]
[^] # Re: Mouai
Posté par mrlem (site web personnel, Mastodon) . En réponse à la dépêche Contineo, un GED simple et efficace. Évalué à 3.
1) la GED : le domaine de *la* gestion électronique de documents
2) un GED : une solution logicielle constituant *un* gestionnaire électronique de documents
Voilà.
[^] # Re: :)
Posté par mrlem (site web personnel, Mastodon) . En réponse à la dépêche 10 ans d'OpenStep. Évalué à 2.
En première page du site gnustep tu as une toute petite image, et si tu cliques dessus, ça te montre un exemple d'environnement gnustep...
[^] # Re: Padding
Posté par mrlem (site web personnel, Mastodon) . En réponse au journal L'informatique en carton. Évalué à 1.