Un langage est fortement typé si les conversions implicites de types sont formellement interdites. Si de telles conversions sont possibles, le langage est faiblement typé.
on en arrive à Java faiblement typé, ce qui est un peu déconcertant.
Tu vois que lorsque le processus lanceur fait un fork, lance un autre processus, et se termine, le wait est terminé par la même occasion.
Au passage, ma solution invoquée plus haut (utilisation de ps --ppid) déconne aussi, parce qu'en fait le parent du wine n'est plus le shell mais init (je ne me rappelais plus de ce comportement - lorsque le parent finit c'est init qui reprend la parenté, je pensais que ça passait au grand-parent).
Hum ma seule solution au problème d'origine, se débrouiller pour savoir quel est le PID du processus arrière-plan. Je ne vois pas d'autre solution là.
Non je parlais plus précisément de typage fort. Associé à la vérification à la compilation comme je le disais (vérification statique donc - pour le typage dynamique les types étant découvert à l'exécution) ça permet de détecter plus de problèmes dès la compilation (avec le coût d'être plus verbeux par contre).
C'est vrai. Cependant, les gens sont tellement habitués à avoir une boîte de dialogue sur la sécurité lorsqu'ils se connectent en https qu'ils ne lisent pas souvent le contenu. Ce serait bien d'avoir une alerte comme sur gmail lorsqu'il détecte un fake ebay ou autre : un gros bandeau sur fond rouge. En général ce sont des bêtes boites grises sur les navigateurs ce qui est dommage.
Vraiment, je ne suis pas là pour détruire Microsoft. Ca sera juste un effet secondaire tout à fait involontaire.
L'original pour le terme "secondaire" est "side-effect", ce qui se traduit normalement par "effet de bord", et est bien plus drôle dans un contexte informatique, à mon humble avis.
La règle de base c'est que tout ce qui passe en clair sur un réseau même switché est accessible de n'importe quelle autre machine grâce à des attaques simples sur le protocole ARP, et tout ce qui passe en https aussi (un nouveau secret est partagé à chaque nouvelle connexion, un man-in-the-middle suffit pour berner ton client, ce qui se fait très bien de la même manière). Tu as un semblant de sécurité avec ssh pour peu que tu communiques le fingerprint avant la première connexion (concrètement, personne ne le fait).
La sécurité dans un réseau local est relativement illusoire, à mon humble avis. Ceci dit, je m'éloigne de ta question initiale.
Si tu te connectes dans un labo, il suffit que quelqu'un mette un keylogger en ton absence pour que tout ce que tu tappes les jours suivants soit capturé. Es-tu sûr de la sécurité physique des accès à ta machine ?
Pour répondre à ta question, mettre user:pass dans l'URL est relativement équivalent à le tapper dans une boîte de dialogue si c'est de l'http, de toutes façons : la seule différence c'est que si c'est en user:pass on peut facilement capturer ton mot de passe en accédant physiquement à la machine en ton absence (logs, bookmarks), alors que si tu le tappes il faut faire une attaque ARP (trivial mais ça peut se remarquer s'il y a un monitoring ARP, ceci dit peu d'admin réseaux mettent ça en place à mon humble avis).
1. cliquer sur "démarrer" en bas à gauche du joli bureau playskool
2. choisir Microsoft Internet Explorer dans la liste des applications
3. copier coller ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.11.tar.gz(...) dans la barre d'adresse et appuyer sur la touche "entrée"
Ben awk manque cruellement de features et est bien plus dur à debugger que du perl ou du python.
Ensuite si on considère par exemple le startup time, sur mon système j'ai 0.02s pour python, 0.004s pour perl et 0.002s pour awk donc le bénéfice est franchement faible.
Après effectivement si c'est juste du traitement ligne par ligne... mais dès que tu veux rajouter une regexp ou quelque chose de plus poussé tu risques de perdre du temps (sauf si tu gurutises en awk et tu neuneutises en perl évidemment).
je soupçonne un problème de flush. ce n'est pas bash qui "gère" les pipes c'est le kernel : bash invoque les processus et lie tout simplement le stdin de droite au stdout de gauche pour chaque pipe.
avec les trois programmes perl suivants j'arrive à afficher chaque seconde le résultat des deux traitements du résultat du premier programme (le premier substitue le premier caractère par un "m" et le deuxième passe en majuscules) :
ce qui doit coincer pour toi c'est le flush. note les ``$| = 1'' qui permettent aux deux premiers programmes de ne pas coincer (variable d'autoflush en perl). typiquement pas mal de programmes bufferisent y compris les retours à la ligne lorsqu'ils se rendent compte qu'ils ne sont pas branchés sur un vrai terminal (enlève le ``$| = 1'' du programme du milieu pour voir).
je ne peux pas t'aider en awk mais j'espère que tu es _obligé_ d'utiliser awk sinon c'est du suicide de choisir d'utiliser un truc pareil ;p. cherche à flusher ton awk (et le traitement aussi bien sûr).
l'utilisateur "a", depuis son shell bash, lance su.
le shell fork et execute su.
tu as deux processus : le shell est toujours là, et le su.
l'utilisateur associé au processus su passe à root (ou à un autre utilisateur), puis su invoque un shell.
tu as trois processus : le shell d'origine qui appartient toujours à "a", qui attend la fin de su, le su qui appartient à root qui attend la fin du shell invoqué, et le shell invoqué (qui appartient à root aussi donc) qui attend que tu tappes des commandes.
ce n'est pas la manière que tu avais imaginée, mais ça fait du sens du point de vue unix :
- si le shell d'origine passait à root, il faudrait une notion de pile de changement d'utilisateur, ou au moins une notion de "sortie" de changement d'utilisateur, qui n'existe pas
- tout est basé sur la notion de processus, la seule entorse à ma connaissance est fork, tout le reste agit sur le processus en cours, en particulier ici on invoque "su" avec l'appel système exec après fork, puis on change l'identité du processus avec les appels système setgid et setuid
# meuh
Posté par gc (site web personnel) . En réponse au message renommer & remove fichier. Évalué à 3.
rename devrait marcher mais effectivement avec ton strcat tu fais n'importe quoi :)
[^] # Re: Ruby On Rails
Posté par gc (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 3.
Un langage est fortement typé si les conversions implicites de types sont formellement interdites. Si de telles conversions sont possibles, le langage est faiblement typé.
on en arrive à Java faiblement typé, ce qui est un peu déconcertant.
[^] # Re: man bash
Posté par gc (site web personnel) . En réponse au message détecter la fin d'un programme. Évalué à 3.
Le processus lanceur va finir, ton wait va finir par la même occasion.
[gc@meuh /tmp] ruby -e 'sleep 10; puts "detaching"; fork or exec %q(ruby -e "puts %q(detached); sleep 10; puts %q(finishing detached process)")' &
[1] 18578
[gc@meuh /tmp] wait `ps --ppid $$ | grep ruby | cut -d\ -f1`; echo "wait finished"
detaching
wait finished
[gc@meuh /tmp] detached
finishing detached process
Tu vois que lorsque le processus lanceur fait un fork, lance un autre processus, et se termine, le wait est terminé par la même occasion.
Au passage, ma solution invoquée plus haut (utilisation de ps --ppid) déconne aussi, parce qu'en fait le parent du wine n'est plus le shell mais init (je ne me rappelais plus de ce comportement - lorsque le parent finit c'est init qui reprend la parenté, je pensais que ça passait au grand-parent).
Hum ma seule solution au problème d'origine, se débrouiller pour savoir quel est le PID du processus arrière-plan. Je ne vois pas d'autre solution là.
[^] # Re: Ruby On Rails
Posté par gc (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 2.
[^] # Re: Ruby On Rails
Posté par gc (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 4.
Quelle est la taille des applications RoR dont tu parles ?
# meuh
Posté par gc (site web personnel) . En réponse au message détecter la fin d'un programme. Évalué à 3.
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au message bmp2avi avec mencoder ou autres ?. Évalué à 3.
# meuh
Posté par gc (site web personnel) . En réponse au message bmp2avi avec mencoder ou autres ?. Évalué à 4.
ben t'es gonflé tu pourrais lire quand même :
[demux_mf] unknown input file type.
============ Sorry, this file format is not recognized/supported =============
utilise convert (ImageMagick) pour convertir tes BMP en JPG ou PNG avant de les passer à mencoder.
[^] # Re: c sux
Posté par gc (site web personnel) . En réponse au message manipuler un fichier binaire. Évalué à 3.
# c sux
Posté par gc (site web personnel) . En réponse au message manipuler un fichier binaire. Évalué à 4.
#!/usr/bin/ruby
test = '0AB508A1A2B1B2C1C2D1D20CB106A1A2C1C2D1D2E1E2F1F2'
baddy = 'B1B2'
testb = [ test ].pack("H*")
baddyb = [ baddy ].pack("H*")
outb = ''
while testb.length > 0
substring = testb[1, testb[0]]
testb = testb[1+testb[0] .. -1]
substring.gsub!(baddyb, '')
outb += [ substring.length ].pack("C")
outb += substring
end
puts outb.unpack("H*")[0].upcase
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 3.
[^] # Re: OK
Posté par gc (site web personnel) . En réponse au message Où trouver les sources. Évalué à 3.
[gc@n1 ~/rpm/BUILD/kernel-2.6] find -name "*.c" -o -name "*.h" | xargs wc -l | awk '{ foo+=$1 } END { print foo }'
13419102
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au message Où trouver les sources. Évalué à 2.
cependant, au temps pour moi. you're da windoze man.
[^] # Re: C'est vague
Posté par gc (site web personnel) . En réponse au message Où trouver les sources. Évalué à 4.
[^] # Re: meuh
Posté par gc (site web personnel) . En réponse au message Où trouver les sources. Évalué à 4.
L'original pour le terme "secondaire" est "side-effect", ce qui se traduit normalement par "effet de bord", et est bien plus drôle dans un contexte informatique, à mon humble avis.
# meuh
Posté par gc (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 5.
La sécurité dans un réseau local est relativement illusoire, à mon humble avis. Ceci dit, je m'éloigne de ta question initiale.
Si tu te connectes dans un labo, il suffit que quelqu'un mette un keylogger en ton absence pour que tout ce que tu tappes les jours suivants soit capturé. Es-tu sûr de la sécurité physique des accès à ta machine ?
Pour répondre à ta question, mettre user:pass dans l'URL est relativement équivalent à le tapper dans une boîte de dialogue si c'est de l'http, de toutes façons : la seule différence c'est que si c'est en user:pass on peut facilement capturer ton mot de passe en accédant physiquement à la machine en ton absence (logs, bookmarks), alors que si tu le tappes il faut faire une attaque ARP (trivial mais ça peut se remarquer s'il y a un monitoring ARP, ceci dit peu d'admin réseaux mettent ça en place à mon humble avis).
# meuh
Posté par gc (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 2.
Cette monnaie n'a plus cours.
# meuh
Posté par gc (site web personnel) . En réponse au message Où trouver les sources. Évalué à 1.
comment :
1. cliquer sur "démarrer" en bas à gauche du joli bureau playskool
2. choisir Microsoft Internet Explorer dans la liste des applications
3. copier coller ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.11.tar.gz(...) dans la barre d'adresse et appuyer sur la touche "entrée"
[^] # Re: flush
Posté par gc (site web personnel) . En réponse au message Un pipeline, deux pipelines, trois pipelines.... Évalué à 2.
Ensuite si on considère par exemple le startup time, sur mon système j'ai 0.02s pour python, 0.004s pour perl et 0.002s pour awk donc le bénéfice est franchement faible.
Après effectivement si c'est juste du traitement ligne par ligne... mais dès que tu veux rajouter une regexp ou quelque chose de plus poussé tu risques de perdre du temps (sauf si tu gurutises en awk et tu neuneutises en perl évidemment).
# flush
Posté par gc (site web personnel) . En réponse au message Un pipeline, deux pipelines, trois pipelines.... Évalué à 5.
avec les trois programmes perl suivants j'arrive à afficher chaque seconde le résultat des deux traitements du résultat du premier programme (le premier substitue le premier caractère par un "m" et le deuxième passe en majuscules) :
[gc@meuh /tmp] perl -e '$| = 1; while () { print "foo1\n"; sleep 1; }' | perl -pe 'BEGIN { $| = 1 } s/./m/' | perl -pe '$_ = uc'
MOO1
MOO1
MOO1
MOO1
ce qui doit coincer pour toi c'est le flush. note les ``$| = 1'' qui permettent aux deux premiers programmes de ne pas coincer (variable d'autoflush en perl). typiquement pas mal de programmes bufferisent y compris les retours à la ligne lorsqu'ils se rendent compte qu'ils ne sont pas branchés sur un vrai terminal (enlève le ``$| = 1'' du programme du milieu pour voir).
je ne peux pas t'aider en awk mais j'espère que tu es _obligé_ d'utiliser awk sinon c'est du suicide de choisir d'utiliser un truc pareil ;p. cherche à flusher ton awk (et le traitement aussi bien sûr).
[^] # Re: Sois plus clair.
Posté par gc (site web personnel) . En réponse au message pas de su en bash ?. Évalué à 1.
l'utilisateur "a", depuis son shell bash, lance su.
le shell fork et execute su.
tu as deux processus : le shell est toujours là, et le su.
l'utilisateur associé au processus su passe à root (ou à un autre utilisateur), puis su invoque un shell.
tu as trois processus : le shell d'origine qui appartient toujours à "a", qui attend la fin de su, le su qui appartient à root qui attend la fin du shell invoqué, et le shell invoqué (qui appartient à root aussi donc) qui attend que tu tappes des commandes.
ce n'est pas la manière que tu avais imaginée, mais ça fait du sens du point de vue unix :
- si le shell d'origine passait à root, il faudrait une notion de pile de changement d'utilisateur, ou au moins une notion de "sortie" de changement d'utilisateur, qui n'existe pas
- tout est basé sur la notion de processus, la seule entorse à ma connaissance est fork, tout le reste agit sur le processus en cours, en particulier ici on invoque "su" avec l'appel système exec après fork, puis on change l'identité du processus avec les appels système setgid et setuid
# meuh
Posté par gc (site web personnel) . En réponse au message cvs : ascii et binary file, comment choisir ?. Évalué à 5.
pour l'import je sais pas j'utilise jamais.
pour corriger, je ne connais pas d'autre moyen que :
cvs remove -f foo.gif
(copier le fichier original)
cvs add -kb foo.gif
dans un script donc éventuellement.
# meuh
Posté par gc (site web personnel) . En réponse au message acrobat reader 7 imprime pas bien.... Évalué à 3.
http://lwn.net/Articles/129729/(...)
# meuh
Posté par gc (site web personnel) . En réponse au message JSP timer. Évalué à 3.
Thread.sleep( 3000 );
[^] # Re: glou
Posté par gc (site web personnel) . En réponse au journal Raison pour ne pas changer d'OS : msn 7..... Évalué à 0.
Parle de nazisme directement, ça économisera toute réponse.