Je planche actuellement sur un serveur web, et je dois "fragmenter"
l'envoi de mes donnees pour ne pas bloquer X clients lorsqu'un
telecharger un fichier... Disons en blocs de 5Ko. Neanmois, je n'y
arrive absolument pas, ma lecture plante avec un tellg qui renvoit -1
comme taille, et une concat qui foire, donc :(
Code:
ifstream fileStream;
unsigned int size;
char tmp[4096;]
fileStream.open(file.c_str(), ios_base::in | ios_base::binary); //file
est un string recuperee dans un autre endroit du code
cerr << "opened ? " << fileStream.is_open() << endl; // affiche 1
cerr << "good ? " << fileStream.good() << endl; // affiche 1
request.append("\r\nContent-Length: ");
fileStream.seekg(0, ios_base::end);
size = fileStream.tellg();
oss << size;
request.append(oss.str());
request += "\r\n";
request.append("Accept-Ranges: bytes\r\n");
request.append("Connection: keep-alive\r\n\r\n"); // Separation du
header et du body par une paire de "\r\n"
if (*idx > 0){ //*idx est un pointeur sur un int qui permet de
reprendre la lecture la ou on l'avait laissee...
cerr << "clearing request\n";
request.clear(); // si on passe ici, on a pas besoin de header (en
theorie)
fileStream.seekg(*idx);
}
else
fileStream.seekg(0, ios_base::beg);
long pos = (long)fileStream.tellg() - *idx; // Je souhaitais pouvoir
me placer dans mon tmp pour mettre le '\0', mais tellg me renvoit
toujours -1 :(
cerr << "opened ? " << fileStream.is_open() << endl; // renvoi 1
cerr << "good ? " << fileStream.good() << endl; // renvoi 1
fileStream.read(tmp, 4095); // char tmp[4096]... 1 octet pour mettre
le '\0' (habitude unix... bonne ou pas ?)
cerr << "tellg: " << (long)fileStream.tellg() << endl; // renvoi -1
cerr << "idx: " << *idx << endl; // renvoi 0
cerr << "pos: " << pos << endl; // renvoi -1
//tmp[pos] = '\0'; // donc logiquement ca pete ici
*idx = (long)fileStream.tellg(); // je garde en memoire la valeur de
lecture pour reprendre plus tard
if (*idx == size){ // si le fichier est complet, on met idx a -1 pour
que la fonction appellante close la socket.
cerr << "Reseting *idx to -1";
*idx = -1;
request.append(tmp);
request += "\r\n";
}
else
request.append(tmp);
mais je vois « (VS.80) » ou « (VS.71) » dans l'URL. Qui est autrement illisible, ce qui est normal, parce que normalement, une personne n'a pas à régarder l'URL -- c'est pour la machine.
hmmm, pour le gogo victime à répétition de phishing, d'accord. un développeur a le droit de savoir lire un URL.
C'est nettement plus facile à naviguer que les pages de man sous Unix, mais c'est loin d'être parfait non plus.
<hc & hs> de man, je ne connais que "Entrée" et "Q", je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? </hc & hs>
Sylvain.
James Kanze wrote on 03/04/2007 10:30:
mais je vois « (VS.80) » ou « (VS.71) » dans l'URL. Qui est
autrement illisible, ce qui est normal, parce que normalement,
une personne n'a pas à régarder l'URL -- c'est pour la machine.
hmmm, pour le gogo victime à répétition de phishing, d'accord.
un développeur a le droit de savoir lire un URL.
C'est nettement plus facile à naviguer que les pages de man sous
Unix, mais c'est loin d'être parfait non plus.
<hc & hs>
de man, je ne connais que "Entrée" et "Q", je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
</hc & hs>
mais je vois « (VS.80) » ou « (VS.71) » dans l'URL. Qui est autrement illisible, ce qui est normal, parce que normalement, une personne n'a pas à régarder l'URL -- c'est pour la machine.
hmmm, pour le gogo victime à répétition de phishing, d'accord. un développeur a le droit de savoir lire un URL.
C'est nettement plus facile à naviguer que les pages de man sous Unix, mais c'est loin d'être parfait non plus.
<hc & hs> de man, je ne connais que "Entrée" et "Q", je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? </hc & hs>
Sylvain.
James Kanze
On Apr 3, 12:04 pm, Sylvain wrote:
James Kanze wrote on 03/04/2007 10:30:
<hc & hs> de man, je ne connais que "Entrée" et "Q",
Qui ne sont pas de man:-).
man, en fait, c'est plus un wrapper qu'une application en soit. Quand tu fais « man xxx », il cherche un fichier du nom « xxx.* », selon certaines règles, l'envoie à travers les formatteurs (nroff et companie), et en affiche le résultat à travers « more ». Les commandes que tu connais sont ceux de « more », tout bêtement.
En fait, « more » n'est qu'un défaut, qu'on peut changer au moyen de la variable d'environement PAGER. Moi, j'ai défini PAGERÊt (qui ne fait que copier tout bêtement), j'ai positionné des ressources pour que xterm retienne quelque centaines de milliers de lignes, et j'utilise le scrollbar pour me positionner où je veux.
Mais évidemment, il reste le problème de base : il faut connaître le nom de la commande ou de la fonction pour y accéder à la page de man. On est quand même en 2007 ; je m'attendrais à une fonction de recherche un peu plus puissante. Et du fait qu'il affiche dans un xterm, il n'y a pas de graphismes, etc. Je ne dis pas que c'est toujours utile, mais parfois, un bon image en dit long.
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le faire ; comme j'ai dit, j'affiche la pleine page directement dans mon xterm. Et il y a « less » aussi : une variante de more qui permet aussi d'aller en arrière (mais sans le scrollbar, etc.) Mais même alors, pas de liens hypertexte, et il faut bien connaître une commande pour commencer.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Apr 3, 12:04 pm, Sylvain <noS...@mail.net> wrote:
James Kanze wrote on 03/04/2007 10:30:
<hc & hs>
de man, je ne connais que "Entrée" et "Q",
Qui ne sont pas de man:-).
man, en fait, c'est plus un wrapper qu'une application en soit.
Quand tu fais « man xxx », il cherche un fichier du nom
« xxx.* », selon certaines règles, l'envoie à travers les
formatteurs (nroff et companie), et en affiche le résultat à
travers « more ». Les commandes que tu connais sont ceux de
« more », tout bêtement.
En fait, « more » n'est qu'un défaut, qu'on peut changer au
moyen de la variable d'environement PAGER. Moi, j'ai défini
PAGER=cat (qui ne fait que copier tout bêtement), j'ai
positionné des ressources pour que xterm retienne quelque
centaines de milliers de lignes, et j'utilise le scrollbar pour
me positionner où je veux.
Mais évidemment, il reste le problème de base : il faut
connaître le nom de la commande ou de la fonction pour y accéder
à la page de man. On est quand même en 2007 ; je m'attendrais à
une fonction de recherche un peu plus puissante. Et du fait
qu'il affiche dans un xterm, il n'y a pas de graphismes, etc. Je
ne dis pas que c'est toujours utile, mais parfois, un bon image
en dit long.
je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire ; comme j'ai dit, j'affiche la pleine page directement
dans mon xterm. Et il y a « less » aussi : une variante de
more qui permet aussi d'aller en arrière (mais sans le
scrollbar, etc.) Mais même alors, pas de liens hypertexte, et il
faut bien connaître une commande pour commencer.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
<hc & hs> de man, je ne connais que "Entrée" et "Q",
Qui ne sont pas de man:-).
man, en fait, c'est plus un wrapper qu'une application en soit. Quand tu fais « man xxx », il cherche un fichier du nom « xxx.* », selon certaines règles, l'envoie à travers les formatteurs (nroff et companie), et en affiche le résultat à travers « more ». Les commandes que tu connais sont ceux de « more », tout bêtement.
En fait, « more » n'est qu'un défaut, qu'on peut changer au moyen de la variable d'environement PAGER. Moi, j'ai défini PAGERÊt (qui ne fait que copier tout bêtement), j'ai positionné des ressources pour que xterm retienne quelque centaines de milliers de lignes, et j'utilise le scrollbar pour me positionner où je veux.
Mais évidemment, il reste le problème de base : il faut connaître le nom de la commande ou de la fonction pour y accéder à la page de man. On est quand même en 2007 ; je m'attendrais à une fonction de recherche un peu plus puissante. Et du fait qu'il affiche dans un xterm, il n'y a pas de graphismes, etc. Je ne dis pas que c'est toujours utile, mais parfois, un bon image en dit long.
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le faire ; comme j'ai dit, j'affiche la pleine page directement dans mon xterm. Et il y a « less » aussi : une variante de more qui permet aussi d'aller en arrière (mais sans le scrollbar, etc.) Mais même alors, pas de liens hypertexte, et il faut bien connaître une commande pour commencer.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
fabien.chene
"James Kanze" writes:
[...]
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
-- Fab
"James Kanze" <james.kanze@gmail.com> writes:
[...]
je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans
un tampon. De là, on peut profiter des commandes habituelles, plus les
liens entre les pages de man.
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
-- Fab
Sylvain
Fabien Chêne wrote on 05/04/2007 20:42:
"James Kanze" writes:
[...]
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man était pipé sur un more (pourtant presque évident) et je ne savais pas que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel comme terminal mais il doit -j'espère- correctement gérer les I/O avec l'appli. linux distante).
Sylvain.
Fabien Chêne wrote on 05/04/2007 20:42:
"James Kanze" <james.kanze@gmail.com> writes:
[...]
je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans
un tampon. De là, on peut profiter des commandes habituelles, plus les
liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man
était pipé sur un more (pourtant presque évident) et je ne savais pas
que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un
more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel
comme terminal mais il doit -j'espère- correctement gérer les I/O avec
l'appli. linux distante).
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man était pipé sur un more (pourtant presque évident) et je ne savais pas que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel comme terminal mais il doit -j'espère- correctement gérer les I/O avec l'appli. linux distante).
Sylvain.
fabien.chene
Sylvain writes:
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un bash' et aucun paginateur n'est défini (laissant la main à more)
Avec le shell bash, c'est dans le fichier ~/.bashrc : export PAGER=less
-- Fab
Sylvain <noSpam@mail.net> writes:
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un
bash' et aucun paginateur n'est défini (laissant la main à more)
Avec le shell bash, c'est dans le fichier ~/.bashrc :
export PAGER=less
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un bash' et aucun paginateur n'est défini (laissant la main à more)
Avec le shell bash, c'est dans le fichier ~/.bashrc : export PAGER=less
-- Fab
Michel Decima
Sylvain wrote:
Fabien Chêne wrote on 05/04/2007 20:42:
"James Kanze" writes:
[...]
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man était pipé sur un more (pourtant presque évident) et je ne savais pas que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel comme terminal mais il doit -j'espère- correctement gérer les I/O avec l'appli. linux distante).
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
Sylvain wrote:
Fabien Chêne wrote on 05/04/2007 20:42:
"James Kanze" <james.kanze@gmail.com> writes:
[...]
je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans
un tampon. De là, on peut profiter des commandes habituelles, plus les
liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man
était pipé sur un more (pourtant presque évident) et je ne savais pas
que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un
more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel
comme terminal mais il doit -j'espère- correctement gérer les I/O avec
l'appli. linux distante).
Si c'est un linux, tu dois avoir dessus la commande less, qui gere
PgDn/PgUp, la recherche avec /, et surement plein d'autre choses.
Ca pourrait te faire gagner 3 minutes ;)
je le trouve donc en effet moins facile d'emploi; n'existe-t-il pas des browser pleine page pour pages man ? Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans un tampon. De là, on peut profiter des commandes habituelles, plus les liens entre les pages de man.
merci pour ces points - je n'avais pas réalisé que la sortie de man était pipé sur un more (pourtant presque évident) et je ne savais pas que ce pipe était configurable - si je trouve 3 mn 12 je me coderais un more-like avec PgDn / PgUp (j'utilise en fait "putty.exe" sous wintel comme terminal mais il doit -j'espère- correctement gérer les I/O avec l'appli. linux distante).
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
Sylvain
Michel Decima wrote on 05/04/2007 23:44:
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un 'bash' et aucun paginateur n'est défini (laissant la main à more) -- un "LESSOPEN" est défini selon "|/usr/bin/lesspipe.sh %s", je ne sais pas si ce /less/ là a un rapport avec le premier...
Sylvain.
Michel Decima wrote on 05/04/2007 23:44:
Si c'est un linux, tu dois avoir dessus la commande less, qui gere
PgDn/PgUp, la recherche avec /, et surement plein d'autre choses.
Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un
'bash' et aucun paginateur n'est défini (laissant la main à more) -- un
"LESSOPEN" est défini selon "|/usr/bin/lesspipe.sh %s", je ne sais pas
si ce /less/ là a un rapport avec le premier...
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un 'bash' et aucun paginateur n'est défini (laissant la main à more) -- un "LESSOPEN" est défini selon "|/usr/bin/lesspipe.sh %s", je ne sais pas si ce /less/ là a un rapport avec le premier...
Sylvain.
Michel Decima
Michel Decima wrote on 05/04/2007 23:44:
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
De rien. Et comme on dit, "less is more" ...
Michel Decima wrote on 05/04/2007 23:44:
Si c'est un linux, tu dois avoir dessus la commande less, qui gere
PgDn/PgUp, la recherche avec /, et surement plein d'autre choses.
Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
Si c'est un linux, tu dois avoir dessus la commande less, qui gere PgDn/PgUp, la recherche avec /, et surement plein d'autre choses. Ca pourrait te faire gagner 3 minutes ;)
indeed !! which less => /usr/bin/less, merci pour les 3 mn gagnés ;)
De rien. Et comme on dit, "less is more" ...
Sylvain
Fabien Chêne wrote on 05/04/2007 23:36:
Sylvain writes:
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un bash' et aucun paginateur n'est défini (laissant la main à more)
Avec le shell bash, c'est dans le fichier ~/.bashrc : export PAGER=less
formidable !!! merci Fabien, James, Michel (par ordre alpha. pas necc. d'apparition).
Sylvain.
Fabien Chêne wrote on 05/04/2007 23:36:
Sylvain <noSpam@mail.net> writes:
pour clore ce HC, où définir "PAGER" ? le shell est apparemment un
bash' et aucun paginateur n'est défini (laissant la main à more)
Avec le shell bash, c'est dans le fichier ~/.bashrc :
export PAGER=less
formidable !!!
merci Fabien, James, Michel (par ordre alpha. pas necc. d'apparition).