en voilà encore un qui aura l'air d'un con le 26 mai[1].
[1] quant à moi je m'en fous, si c'est vrai ça va forcément submerger les serveurs de linusqueferre et toute trace originale de ces propos seront détruits[2]
Pour fermer ma socket, j'utilise la meme fonction pour le client et le serveur (j'ai fait une librairie multi systeme pour les socket avec les fonction de base, dont close(...) ). Pour le serveur la fonction en question ne me sort aucun segfault et se comporte tres bien, du coté client elle plante lamentablement.... ;)
normalement "planter" correspond à un appel mémoire incorrect (le kernel détruit ton processus car il a tenté d'accéder à un espace mémoire auquel il n'a pas accès). c'est rare que ce soit le cas avec les syscalls et impossible avec close(2). es-tu sûr que c'est sur l'appel de close ? si tu lances ton client à travers strace tu devrais voir quel est le dernier syscall avant le plantage, ça pourrat aider. si c'est un appel mémoire incorrect, lancer ton client à travers valgrind pourrait aussi grandement aider en indiquant des infos utiles de localisation du problème.
pour le accept : impossible, le serveur doit etre capable de gerer des connexions simultanées...
tu te trompes. après le succès de accept(2), tu utilises la valeur de retour comme moyen de communication avec le client qui vient de se connecter, et tu peux faire un autre accept(2) pour accepter une deuxième connexion en parallèle. pour traiter correctement en parallèle cette deuxième connexion et la communication sur la première, il te suffit de mettre tous les descripteurs nécessaires dans un fd_set à passer à select(2).
voici un code minimaliste illustrant ça :
-=-=---=-=---=-=---=-=---=-=---=-=---=-=--
struct sockaddr_in client_addr;
struct timeval tv;
while (1) {
int fd;
int retval;
fd_set conns_set;
FD_ZERO(&conns_set);
/* ... ajout des descripteurs des connexions ouvertes à conns_set ... */
// ajout du descripteur correspondant à notre serveur
FD_SET(tcp_server_socket, &conns_set);
tv.tv_sec = 30;
tv.tv_usec = 0;
// attente d'une entrée/sortie sur un des descripteurs de conns_set
if ((retval = select(FD_SETSIZE, &conns_set, NULL, NULL, &tv)) == -1) {
perror("select");
exit(-1);
}
// si select est sorti sur un timeout, rien à traiter, on boucle directement
if (!retval)
continue;
/* ... traitement de l'input sur les descripteurs des connexions ouvertes s'ils sont toujours dans conns_set ... */
// traitement d'une nouvelle connexion
if (FD_ISSET(tcp_server_socket, &conns_set)) {
if ((fd = accept(tcp_server_socket, (struct sockaddr *) &client_addr, (socklen_t *) &len)) == -1) {
perror("accept");
exit(-1);
}
/* ... ajouter "fd" dans la liste des descripteurs de connexions ouvertes ... */
}
}
-=-=---=-=---=-=---=-=---=-=---=-=---=-=--
Au contraire de ce que tu penses, un/une secrétaire qui maitrise bien les outils bureautique fait une grande différence, donc c'est demandé pour de vrai. C'est un handicap qu'ont malheureusement beaucoup de secrétaires âgé/âgées car les générations plus jeunes ont une maîtrise plus facile/rapide/innée.
OCaml le joujou de recherche plus rapide ? Ca vient surtout du compilo et le langage n'est pas complexe ;).
ouatte ?? c'est vrai que l'inférence de types, les types paramétriques, le garbage collector hybride, l'héritage multiple, le pattern matching, tout ça c'est nettement plus simple qu'un bête compilateur C (qui je le rappelle ne fait rien de compliqué à part l'optimisation puisque c'est un traducteur quasi litéral vers le code assembleur).
C'est la sortie tout ce qu'il y a de plus standard ! A partir de là, pas facile de deviner pourquoi ça ne satisfait pas Kino, peut-etre ton idée entre 32000 et 44100 Hz serait une bonne piste mais je ne vois pas trop quoi faire à partir de là surtout sans accès à la machine.. désolé :/
le kernel a été chargé depuis la liste proposée depuis l'installateur de packetages Mandriva
Donc pas grand chose à critiquer non plus de ce point de vue...
Je suis un peu à sec du coup.. peut-être si tu trouves un copain linuxien proche de chez toi ou bien une bonne âme pouvant t'aider sur les chats..
J'ai une carte son ancienne. Pour la faire marcher dans Mandriva 2006, il a fallu charger un nouveau kernel (2.6.12.18 au lieu de 2.6.12.12 je crois). Le problème pourrait-il venir d'un problème de troisième ordre avec la carte ? (je dis de troisième ordre, car kino marchait avec cette même carte son sous Mandrake 10.1)
Tu n'utilises plus un kernel mandriva alors ? (que dit "uname -a" ?)
J'ai essayé de désactiver arts (dans "configurer votre bureau") mais ça ne marche pas mieux
c'était pourtant ma meilleure piste :/
après désactivation de arts, va dans une console et tappe "ps auxw|grep arts", qu'est-ce que ca te donne ?
Je ne sais pas ce que signifie un "autre logiciel de son" et xmms.
un autre logiciel qui utilise le son, désolé du manque de précision. xmms en est un. tu peux l'installer avec "urpmi xmms" en root. ensuite lance le, demande lui de jouer un mp3, ogg ou wav pour voir ce que ça donne.
* "output plugin" : tu veux dire le paramètre "périphérique audio" des préférences de kino ? C'est /dev/dsp.
c'était plutot celui utilisé par xmms si il arrive à jouer du son qui m'intéresse.
C'est donc le système de son qui drive les logiciels temps-réel comme kino ? Très intéressant.
je pense que ca dépend du logiciel. kino est le seul que je connaisse qui fait ça. mplayer par exemple (pour jouer des vidéos) n'a pas ce problème. je pense que c'est une question de programmation du logiciel ; peut-etre lié aux contraintes spécifiques au format DV.
pour l'ieee1394 perso je dumpe les vidéos en console avec "dvgrab" et au besoin je passe root avant de le faire donc je ne peux pas vraiment t'aider. tu parles de réseau par ieee1394, ça peut être une piste : vérifie que tu n'as pas le module "eth1394" de chargé - pour faire, passe root et tappe "lsmod" et regarde s'il liste eth1394 - si oui, tappe "rmmod eth1394" pour l'enlever.
est-ce qu'un autre logiciel de son fonctionne ? xmms ? comment est-il configuré dans "output plugin" ?
* Vitesse accélérée,
conséquence directe de l'absence de son - tu peux ignorer ce problème tant que tu n'as pas résolu le problème du son
modprobe n'est pas une commande connue par le système
doit être effectué en tant que root.
Cela pourrait-il venir que précédemment, je n'avais pas installé exactement les bonnes bibliothèques au fur et à mesure où j'allais les chercher sur tpm/pbone.net quand l'installateur me le demandait ?
peut-etre mais pas évident d'en etre sur comme ca. mais comme dit plus haut la regle d'or est d'eviter autant que faire se peu les packages non fournis "officiellement".
1. je n'arrive pas à obtenir la taile *réelle* de la fenêtre principale de mon application. J'utilise actuellement get_allocation mais la valeur renvoyée ne me semble pas réaliste. J'ai l'impression que c'est la taille minimale requise par les widgets, et pas la taille actuelle de la fenêtre...
Voilà ce que j'utilise pour sauvegarder et restorer la taille et la position de la fenêtre de mon application en ruby/gtk[1] :
Restoration :
if $config['pos-x'] && $config['pos-y']
$main_window.move($config['pos-x'].to_i, $config['pos-y'].to_i)
else
$main_window.window_position = Gtk::Window::POS_CENTER
end
$main_window.set_default_size(($config['width'] || 600).to_i, ($config['height'] || 400).to_i)
Sauvegarde :
$main_window.signal_connect('configure-event') {
x, y = $main_window.window.root_origin
width, height = $main_window.window.size
$config['pos-x'] = x
$config['pos-y'] = y
$config['width'] = width
$config['height'] = height
false
}
Je suggèrerais donc plutôt configure-event à size-allocate suggéré précédemment.
NB : kino n'est pas dans la distribution Mandriva 2006 Free, alors qu'il l'était dans la 10.1 commercialisée
Il l'est mais peut-être pas dans les CDs si tu as installé de cette manière (tout ne tient pas sur le jeu de CD/DVD). Tu peux l'installer si tu as un accès à Internet en rajoutant un médium adéquat. Le site easyurpmi.zarb.org est la manière la plus simple de ce faire.
lecture : regarde les paramètres, surtout le backend vidéo
son : si t'es sous KDE et que t'as arts d'activé c'est possible qu'il soit assis sur le device. regarde dans kino s'il peut utiliser arts (ce dont je doute) ou désactive arts ("serveur de son") dans les parametres KDE.
il me semble que c'est pas ca qu'il te faut. il faut que tu rajoutes un serveur DNS sur ton serveur dédié et que tu changes l'enregistrement whois DNS de ton domaine sur l'interface gandi en mettant l'IP / les IPs de ton/tes serveurs dédiés. ca doit apparaitre comme "name server" dans les requetes whois. exemple :
gc@ryu:~$ whois booh.org | tail
Name Server:NS0.ZARB.ORG
Name Server:NS1.ZARB.ORG
[...]
dans "Administration" choisir "modify parameters of a domain name", tu te logges, tu choisis ton domaine puis en bas dans "Modify nameservers of domain name toto.com" tu mets ton/tes serveurs DNS.
pour la config de ton serveur DNS par contre je n'y connais rien :) mais ca doit se trouver en cherchant et lisant.
Néanmoins pour moi c'est un hack affreux pour pallier aux deficiences de cet autre hack affreux qu'est le NAT.
d'autant plus que je ne suis pas sûr qu'il soit efficace tout le temps. le hole punching de bub n bros ne passe pas mon NAT par exemple (modem routeur).
parce que lors du transport réseau on dispose de la longueur des messages envoyés, pas besoin donc d'une part de transporter un octet terminateur supplémentaire, et d'autre part les fonctions sur les chaines sont plus couteuses que les fonctions sur taille fixe vu qu'elles doivent detecter la fin de la chaine qui est à une position indéterminée.
Ça tourne seulement sous Linux, mais je serais content si quelqu'un essayait de le porter sur le NetBSD de son moulin a poivre. J'utilise strdupa pour pas choquer ceux qui aiment pas les goto clean, et aussi getopt_long, mais je suis prêt à supprimer tout ça si ça peut aider.
Justement vu son besoin de _GNU_SOURCE est-ce que "strdupa" est utilisable sous *BSD ? (et note que selon la manpage d'alloca (utilisé par strdupa) il faut pas l'utiliser, c'est le Mal) (c'est dommage parces que c'est fantastique et là je te rejoins)
Corollaire, est-ce que memmem est utilisable sous *BSD[1] ?
[1] C'est pour un projet secret de serveur de jeu secret écrit en C.
# meuh
Posté par gc (site web personnel) . En réponse au journal Katsumi géante le 25 mai 2006 ! Help !. Évalué à 3.
[1] quant à moi je m'en fous, si c'est vrai ça va forcément submerger les serveurs de linusqueferre et toute trace originale de ces propos seront détruits[2]
[^] # Re: socket serveur / client
Posté par gc (site web personnel) . En réponse au message socket serveur / client. Évalué à 2.
normalement "planter" correspond à un appel mémoire incorrect (le kernel détruit ton processus car il a tenté d'accéder à un espace mémoire auquel il n'a pas accès). c'est rare que ce soit le cas avec les syscalls et impossible avec close(2). es-tu sûr que c'est sur l'appel de close ? si tu lances ton client à travers strace tu devrais voir quel est le dernier syscall avant le plantage, ça pourrat aider. si c'est un appel mémoire incorrect, lancer ton client à travers valgrind pourrait aussi grandement aider en indiquant des infos utiles de localisation du problème.
[^] # Re: unix, udp, tcp
Posté par gc (site web personnel) . En réponse au message socket serveur / client. Évalué à 3.
tu te trompes. après le succès de accept(2), tu utilises la valeur de retour comme moyen de communication avec le client qui vient de se connecter, et tu peux faire un autre accept(2) pour accepter une deuxième connexion en parallèle. pour traiter correctement en parallèle cette deuxième connexion et la communication sur la première, il te suffit de mettre tous les descripteurs nécessaires dans un fd_set à passer à select(2).
voici un code minimaliste illustrant ça :
-=-=---=-=---=-=---=-=---=-=---=-=---=-=--
struct sockaddr_in client_addr;
struct timeval tv;
while (1) {
int fd;
int retval;
fd_set conns_set;
FD_ZERO(&conns_set);
/* ... ajout des descripteurs des connexions ouvertes à conns_set ... */
// ajout du descripteur correspondant à notre serveur
FD_SET(tcp_server_socket, &conns_set);
tv.tv_sec = 30;
tv.tv_usec = 0;
// attente d'une entrée/sortie sur un des descripteurs de conns_set
if ((retval = select(FD_SETSIZE, &conns_set, NULL, NULL, &tv)) == -1) {
perror("select");
exit(-1);
}
// si select est sorti sur un timeout, rien à traiter, on boucle directement
if (!retval)
continue;
/* ... traitement de l'input sur les descripteurs des connexions ouvertes s'ils sont toujours dans conns_set ... */
// traitement d'une nouvelle connexion
if (FD_ISSET(tcp_server_socket, &conns_set)) {
if ((fd = accept(tcp_server_socket, (struct sockaddr *) &client_addr, (socklen_t *) &len)) == -1) {
perror("accept");
exit(-1);
}
/* ... ajouter "fd" dans la liste des descripteurs de connexions ouvertes ... */
}
}
-=-=---=-=---=-=---=-=---=-=---=-=---=-=--
[^] # Re: Il est temps de faire qqch contre ça
Posté par gc (site web personnel) . En réponse au journal Les francais sont des pirates. Évalué à 2.
[^] # Re: ...
Posté par gc (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 7.
ouatte ?? c'est vrai que l'inférence de types, les types paramétriques, le garbage collector hybride, l'héritage multiple, le pattern matching, tout ça c'est nettement plus simple qu'un bête compilateur C (qui je le rappelle ne fait rien de compliqué à part l'optimisation puisque c'est un traducteur quasi litéral vers le code assembleur).
[^] # Re: Des infos supplémentaires
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
C'est la sortie tout ce qu'il y a de plus standard ! A partir de là, pas facile de deviner pourquoi ça ne satisfait pas Kino, peut-etre ton idée entre 32000 et 44100 Hz serait une bonne piste mais je ne vois pas trop quoi faire à partir de là surtout sans accès à la machine.. désolé :/
le kernel a été chargé depuis la liste proposée depuis l'installateur de packetages Mandriva
Donc pas grand chose à critiquer non plus de ce point de vue...
Je suis un peu à sec du coup.. peut-être si tu trouves un copain linuxien proche de chez toi ou bien une bonne âme pouvant t'aider sur les chats..
[^] # Re: Des infos supplémentaires
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
clic bouton droit, options, preferences, output plugin.
J'ai une carte son ancienne. Pour la faire marcher dans Mandriva 2006, il a fallu charger un nouveau kernel (2.6.12.18 au lieu de 2.6.12.12 je crois). Le problème pourrait-il venir d'un problème de troisième ordre avec la carte ? (je dis de troisième ordre, car kino marchait avec cette même carte son sous Mandrake 10.1)
Tu n'utilises plus un kernel mandriva alors ? (que dit "uname -a" ?)
[^] # Re: Des infos supplémentaires
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
c'était pourtant ma meilleure piste :/
après désactivation de arts, va dans une console et tappe "ps auxw|grep arts", qu'est-ce que ca te donne ?
Je ne sais pas ce que signifie un "autre logiciel de son" et xmms.
un autre logiciel qui utilise le son, désolé du manque de précision. xmms en est un. tu peux l'installer avec "urpmi xmms" en root. ensuite lance le, demande lui de jouer un mp3, ogg ou wav pour voir ce que ça donne.
* "output plugin" : tu veux dire le paramètre "périphérique audio" des préférences de kino ? C'est /dev/dsp.
c'était plutot celui utilisé par xmms si il arrive à jouer du son qui m'intéresse.
C'est donc le système de son qui drive les logiciels temps-réel comme kino ? Très intéressant.
je pense que ca dépend du logiciel. kino est le seul que je connaisse qui fait ça. mplayer par exemple (pour jouer des vidéos) n'a pas ce problème. je pense que c'est une question de programmation du logiciel ; peut-etre lié aux contraintes spécifiques au format DV.
pour l'ieee1394 perso je dumpe les vidéos en console avec "dvgrab" et au besoin je passe root avant de le faire donc je ne peux pas vraiment t'aider. tu parles de réseau par ieee1394, ça peut être une piste : vérifie que tu n'as pas le module "eth1394" de chargé - pour faire, passe root et tappe "lsmod" et regarde s'il liste eth1394 - si oui, tappe "rmmod eth1394" pour l'enlever.
[^] # Re: Des infos supplémentaires
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
est-ce qu'un autre logiciel de son fonctionne ? xmms ? comment est-il configuré dans "output plugin" ?
* Vitesse accélérée,
conséquence directe de l'absence de son - tu peux ignorer ce problème tant que tu n'as pas résolu le problème du son
modprobe n'est pas une commande connue par le système
doit être effectué en tant que root.
Cela pourrait-il venir que précédemment, je n'avais pas installé exactement les bonnes bibliothèques au fur et à mesure où j'allais les chercher sur tpm/pbone.net quand l'installateur me le demandait ?
peut-etre mais pas évident d'en etre sur comme ca. mais comme dit plus haut la regle d'or est d'eviter autant que faire se peu les packages non fournis "officiellement".
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au message GTK+: Connaitre la taille effective d'une fenêtre. Évalué à 2.
[1] au démarrage de l'application, la taille et position au dernier quit sont conservés
# meuh
Posté par gc (site web personnel) . En réponse au message GTK+: Connaitre la taille effective d'une fenêtre. Évalué à 2.
Voilà ce que j'utilise pour sauvegarder et restorer la taille et la position de la fenêtre de mon application en ruby/gtk[1] :
Restoration :
if $config['pos-x'] && $config['pos-y']
$main_window.move($config['pos-x'].to_i, $config['pos-y'].to_i)
else
$main_window.window_position = Gtk::Window::POS_CENTER
end
$main_window.set_default_size(($config['width'] || 600).to_i, ($config['height'] || 400).to_i)
Sauvegarde :
$main_window.signal_connect('configure-event') {
x, y = $main_window.window.root_origin
width, height = $main_window.window.size
$config['pos-x'] = x
$config['pos-y'] = y
$config['width'] = width
$config['height'] = height
false
}
Je suggèrerais donc plutôt configure-event à size-allocate suggéré précédemment.
[1] http://www.booh.org/
[^] # Re: Des infos supplémentaires
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
Il l'est mais peut-être pas dans les CDs si tu as installé de cette manière (tout ne tient pas sur le jeu de CD/DVD). Tu peux l'installer si tu as un accès à Internet en rajoutant un médium adéquat. Le site easyurpmi.zarb.org est la manière la plus simple de ce faire.
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au journal Java bientot libre ?. Évalué à 3.
Peut-être faudrait-il plutôt :
Ce commentaire est-il désopilant ou chiant à mourir ?
# meuh
Posté par gc (site web personnel) . En réponse au message Pas de son dans kino sous Mandriva 2006. Évalué à 2.
son : si t'es sous KDE et que t'as arts d'activé c'est possible qu'il soit assis sur le device. regarde dans kino s'il peut utiliser arts (ce dont je doute) ou désactive arts ("serveur de son") dans les parametres KDE.
# meuh
Posté par gc (site web personnel) . En réponse au message Configuration DNS (Gandi). Évalué à 1.
gc@ryu:~$ whois booh.org | tail
Name Server:NS0.ZARB.ORG
Name Server:NS1.ZARB.ORG
[...]
dans "Administration" choisir "modify parameters of a domain name", tu te logges, tu choisis ton domaine puis en bas dans "Modify nameservers of domain name toto.com" tu mets ton/tes serveurs DNS.
pour la config de ton serveur DNS par contre je n'y connais rien :) mais ca doit se trouver en cherchant et lisant.
[^] # Re: Rhhhaaa... bah non.
Posté par gc (site web personnel) . En réponse au journal PS3 et linux. Évalué à 2.
lien ?
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au journal Java bientot libre ?. Évalué à 7.
/me vote pour une suppression pure et simple du système
# meuh
Posté par gc (site web personnel) . En réponse au journal Java bientot libre ?. Évalué à 3.
il faut qu'ils se décident vite vite avec que .net leur bouffe tout.
# meuh
Posté par gc (site web personnel) . En réponse au journal Nouvel annuaire d'applications libres. Évalué à 10.
[^] # Re: NAT traversal
Posté par gc (site web personnel) . En réponse à la dépêche FreeCast traverse les NATs. Évalué à 3.
d'autant plus que je ne suis pas sûr qu'il soit efficace tout le temps. le hole punching de bub n bros ne passe pas mon NAT par exemple (modem routeur).
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au journal Shake : secouez vos fichiers, c'est pour leur bien !. Évalué à 2.
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au journal Shake : secouez vos fichiers, c'est pour leur bien !. Évalué à 2.
# meuh
Posté par gc (site web personnel) . En réponse au journal Shake : secouez vos fichiers, c'est pour leur bien !. Évalué à 2.
Justement vu son besoin de _GNU_SOURCE est-ce que "strdupa" est utilisable sous *BSD ? (et note que selon la manpage d'alloca (utilisé par strdupa) il faut pas l'utiliser, c'est le Mal) (c'est dommage parces que c'est fantastique et là je te rejoins)
Corollaire, est-ce que memmem est utilisable sous *BSD[1] ?
[1] C'est pour un projet secret de serveur de jeu secret écrit en C.
[^] # Re: Risque réel?
Posté par gc (site web personnel) . En réponse au journal Graves problèmes de sécurité dans x.org. Évalué à -1.
[^] # Re: Théo : one point - X.Org : (void *)NULL
Posté par gc (site web personnel) . En réponse au journal Graves problèmes de sécurité dans x.org. Évalué à 0.