pareil, c'est un peu stressant d'avoir debloquer tout les niveaux et de ne pas arriver a sauter suffisement haut pour accrocher le checkpoint dans les airs, et je ne parle meme pas de prolonger le saut jusqu'au finish. meme sans se preoccuper du temps en foutant tout bien comme il faut des le depart ca veut pas... peut etre un truc a faire au moment ou on rentre en contact avec le "tramplin" ? de la meme maniere qu'on controle la vitesse de rotation de la voiture sur elle meme dans certains sauts des niveaux precedents avec l'accelerateur :-)
aller, si y'en a un qui l'a fini, qu'il se denonce et nous donne le "truc" ;-)
Je propose une autre difference beaucoup plus simple: vim comme emacs, nano et beaucoup d'autres sont des editeurs fonctionnant egalement sur des terminaux textes, je ne crois pas que kate rentre dans cette categorie ce qui le met hors jeux pour nombre d'utilisations (kde sur un serveur, c'est pas courant, enfin j'espere... :), pas si facile de s'inserer dans un troll historique :-)
sinon bien qu'utilisant vim comme emacs pour des taches differentes, ma preference va le plus souvent a vim (y compris pour des sexp paradoxalement) par ce que je le trouve plus #1=(facile a utiliser rapidement . #1#) ;)
il suffit de remplacer l'extraction du premier caractere de la chaine et du reste de la chaine par leurs equivalents POSIX a savoir:
"${X%"${X#?}"}"
et
"${X#?}"
Evidemment cela depend aussi de la destination du .h, s'il sert a publier une API alors y foutre des macros uniquement utilisées dans divers .c d'usage interne a une lib ne ferait que pourrir l'environnement lexical de l'utilisateur de l'API en question, a l'inverse des definitions de fonctions inline (C99) faisant partie de la dite API, meme si le resultat est sans garantie, doivent etre presentes dans un tel .h.
bref il ne faut pas se demander si telle ou telle macro, declaration, definition etc... doit se trouver dans tel ou tel fichier mais ou et a qui/quoi elle va servir, en fonction de quoi l'on peut determiner ou elle doit se trouver.
cependant ton probleme est trop mal exposé pour fournir une reponse exacte, essaye de le decrire avec des mots en exposant les transformations que tu veux effectuer sur toutes les lignes et les eventuelles variables dont dependraient ces transformations (numero de la ligne courante, etc...) et non du code que tu ne maitrises pas.
A noter que la forward declaration de la class Email dans personne.h ne resoudra pas le probleme a elle seule.
Elle permet uniquement au compilateur de comprendre qu'une classe Email qui sera completement declarée ulterieurement est utilisée (indirectement, ici via des pointeurs) dans la declaration de la classe personne (personne.h).
Pour que cela fonctionne il lui faudra egalement :
1) ne PAS inclure la declaration complete de la classe Email (Email.h) dans/avant la declaration complete de la classe personne (personne.h).
2) inclure la declaration complete de la classe Email (Email.h) _AVANT_ les definitions de la classe personne (classiquement: dans/au debut de personne.c).
le 2 n'etant une obligation que si les definitions de la classe personne manipulent autre chose que des pointeurs sur la classe Email (accede a des membres quel qu'ils soient, en crée des instances, etc).
bref il faut partir de l'aprioris que le compilateur est un idiot a qui il faut tout expliquer plus ou moins completement suivant le contexte :)
Si tu admets l'idée d'un loopback par repertoire a limiter alors ajouter un groupe par repertoire et ajouter ce(s) groupe(s) aux users concernés donne le meme resultat sans pourrir la mount table...
Il y a qqchose d'incoherent dans ta description du probleme :)
il te faut donc apprendre a utiliser un bourne shell...
read ou select pour les entrée, la syntaxe de while, dans quels contextes l'expansion des variables peut etre implicite (ce que n'est pas le cas des arguments de while ou de test), etc...
bref tout ce que tu retrouveras dans la doc du shell que tu utilises, comme
dans nombres de tutoriaux dispos en ligne, google est ton amis...
la premiere solution proposée est tout de meme plus elegante qu'un traitement suplementaire pour preparer la variable, a condition de ne pas se planter dans la syntaxe, celle exposée n'etant non seulement valable que pour la commande de substitution mais en plus fausse :-)
pour remplacer les slash utilisés pour englober les regexp d'adresses par un autre caractere cela fonctionne comme pour les substitution mais en prefixant le premier par un backslah, dans ton cas une syntaxe de la forme:
\XregexpX,\YregexpYcommande
exemple en utilisant le # comme separateur:
$ cat file
AA
BB
`Directory "./A/B/C/D"`
CC
DD
`/Directory`
EE
FF
$ value='"./A/B/C/D"'
$ sed "\#\`Directory $value\`#,\#\`/Directory\`#d" < file
AA
BB
EE
FF
le premier est sans doute le plus mature, module kernel, si je me souviens bien il gere les acces root comme les autres, plasticfs et le 3dfs des ast reposent eux sur le remplacement des appels a grand coups de LD_PRELOAD et ne sont pas totalement transparents.
il sagit plus souvent de fonctionnalités supportée ou pas par le wm,
ainsi sous fvwm les fonctions EdgeCommand et EdgeLeaveCommand permettent d'associer ce que tu veux a de tels "evenements", eventuellement associés a une variable d'etat pour gerer les coins comme les bords :)
potasser la doc de ton WM et eventuellement lui rajouter de telles possibilitées serait sans doute plus judicieux que de creer une Xeme
app gerant cela.
les sources de growisofs sont normalement distribuées avec quelques utilitaires suplementaires tels que dvd+rw-format, dvd+rw-booktype, dvd-ram-control et en particulier dvd+rw-mediainfo dont le boulot est justement de rapporter des infos sur le disque present dans le lecteur.
Il devrait donc suffire d'extraire les bonnes infos de sa sortie pour avoir l'etat du disque et en faire un script shell a utiliser par exemple via:
check_disk_script && growisofs ...
ou un frontend a growisofs retournant l'erreur voulu.
j'imagine que ces commandes sont presente dans le meme package que growisofs pour ta distribution.
tu ne comprend pas par ce que le mask supplementaire ne s'applique pas qu'aux groupes mais a toutes les acl a l'exception du proprietaire du fichier et aux droits du reste du monde, ainsi il permet de remplacer la dichotomie:
proprio, groupe, reste du monde
par
proprio, acl, reste du monde
le mask controllant les droits de toutes les acl, droits specifiques a certains _users_ compris.
s'il n'y a pas de mask alors il n'y a pas d'acl et la gestion des droits unix classiques s'applique normalement.
voir plus particulierement la section decrivant l'algorithme de verification dans man acl.
il y a surtout qu'en terme de multi paradigme CL est particulierement
ouvert, en faisant reference a des usages de certains langages tu auras donc le plus souvent du code refletant les usages des langages en questions, j'avais au depart penser donner une reponse a base de cond Scheme (qui n'est lui meme qu'une macro hygienic a base de if) avant de me rappeler que le cond CL ne propose pas "l'operateur" => par defaut (il faudrait ecrire une macro hygienic pour, ce qui est toujours plus propre qu'introduire un symbole arbitraire :):
qui melange joyeusement case et erreur, le else devenant t en CL et l'usage du => demandant de passer par une macro. Evidemment pour des operateurs/statement aussi basic que if/switch c'est a peu de choses pret partout pareil.
Une reponse simpliste pourrait etre: comme en C, avec un/des tests adaptés a la fonction, mais plus globalement chercher a transcrire directement des habitudes de C en CL n'est sans doute pas le meilleur moyen d'aborder ce langage, dynamic typing, higher order function, multiple return values, OOP (et non des moindre si l'on parle de pre/post conditions), offres a eux seuls une "foultitude" d'approches de ce probleme :)
mais pour repondre le plus simplement possible a ta demande il est courant d'avoir une valeur de retour == nil (false) ou d'un type specifique en cas d'erreur, soit:
Le boot sur dvd est globalement la meme chose que le boot sur cd, les meme documentations font generalement l'affaire et ne manques pas (google est ton amis), mais encore faudrait'il preciser quel "genre" de multiboot tu desires realiser, de l'installation de plusieurs lilo pour plusieurs boot "el torito" pour les controlleurs/bios les supportant sur un seul dvd, au live dvd supportant plusieurs systemes accessibles via un un loader unique... ce ne sont pas les combinaisons +- etranges qui manques :)
ce n'est certe pas libre et implique un enregistrement, mais cela
reste gratuit, de plus a l'exception de shells relativement recents
et activement maintenus la compatibilité POSIX fait generalement
reference aux anciennes versions de la norme, mais ce n'en est
pas moins une bonne base. un pti coup de wget sur le lien
fournit apres enregistrement et hop...
s'il faut travailler dans le contexte d'un standard/norme
pour /bin/sh c'est plutot du coté POSIX qu'il faut aller voir,
un bash compilé en --enable-minimal-config n'est pas
trop mauvais de ce point de vue :)
# en sed...
Posté par xavier . En réponse au message effacer un bloc qui contient un pattern. Évalué à 5.
sed '/service[[:blank:]]\+{/{:load;N;s/}/}/;t blockend;b load;:blockend; /alias[[:blank:]]\+LALIAS2\n/d;}' < input > output
[^] # Re: Super Clio Bros 2
Posté par xavier . En réponse à la dépêche Première version publique de ManiaDrive (1.01). Évalué à 1.
merci a thomas de pas avoir donné le truc tout d'suite :)
[^] # Re: Super Clio Bros 2
Posté par xavier . En réponse à la dépêche Première version publique de ManiaDrive (1.01). Évalué à 1.
aller, si y'en a un qui l'a fini, qu'il se denonce et nous donne le "truc" ;-)
[^] # Re: wait $pid
Posté par xavier . En réponse au message Script shell de surveillance de process ?? Besoin de votre aide. Évalué à 1.
[^] # Re: ceci n'est pas un troll ...
Posté par xavier . En réponse à la dépêche Sortie de Vim 7. Évalué à 8.
sinon bien qu'utilisant vim comme emacs pour des taches differentes, ma preference va le plus souvent a vim (y compris pour des sexp paradoxalement) par ce que je le trouve plus #1=(facile a utiliser rapidement . #1#) ;)
# cela fonctionne egalement sur les sh POSIX
Posté par xavier . En réponse au message [Terminal] mettre le premier caractère d'un mot en majuscule et les autres caractères en minuscule en shell. Évalué à 1.
"${X%"${X#?}"}"
et
"${X#?}"
[^] # Re: Ça dépend
Posté par xavier . En réponse au message séparation de source. Évalué à 1.
bref il ne faut pas se demander si telle ou telle macro, declaration, definition etc... doit se trouver dans tel ou tel fichier mais ou et a qui/quoi elle va servir, en fonction de quoi l'on peut determiner ou elle doit se trouver.
mon cent.
[^] # oups...
Posté par xavier . En réponse au message Comment modifier chaque ligne dans un fichier ?. Évalué à 1.
est a remplacer par
$((3+$(wc -l < toto.txt)))
si la numerotation doit effectivement _commencer_ a 3
et encore... comme les autres j'ignore les lignes "vides" des exemples que tu proposes :)
# ce qui se comprend bien s'exprime clairement, tout ca...
Posté par xavier . En réponse au message Comment modifier chaque ligne dans un fichier ?. Évalué à 1.
cut -d';' -f2- toto.txt | paste -d';' <(seq -f"l%g" 3 $(wc -l < toto.txt)) - > output.txt
doit le faire.
cependant ton probleme est trop mal exposé pour fournir une reponse exacte, essaye de le decrire avec des mots en exposant les transformations que tu veux effectuer sur toutes les lignes et les eventuelles variables dont dependraient ces transformations (numero de la ligne courante, etc...) et non du code que tu ne maitrises pas.
[^] # Re: Hum
Posté par xavier . En réponse au message redefinition of ..... Évalué à 2.
Elle permet uniquement au compilateur de comprendre qu'une classe Email qui sera completement declarée ulterieurement est utilisée (indirectement, ici via des pointeurs) dans la declaration de la classe personne (personne.h).
Pour que cela fonctionne il lui faudra egalement :
1) ne PAS inclure la declaration complete de la classe Email (Email.h) dans/avant la declaration complete de la classe personne (personne.h).
2) inclure la declaration complete de la classe Email (Email.h) _AVANT_ les definitions de la classe personne (classiquement: dans/au debut de personne.c).
le 2 n'etant une obligation que si les definitions de la classe personne manipulent autre chose que des pointeurs sur la classe Email (accede a des membres quel qu'ils soient, en crée des instances, etc).
bref il faut partir de l'aprioris que le compilateur est un idiot a qui il faut tout expliquer plus ou moins completement suivant le contexte :)
# equivalences...
Posté par xavier . En réponse au message Quotas par répertoire. Évalué à 2.
Il y a qqchose d'incoherent dans ta description du probleme :)
# autres outils...
Posté par xavier . En réponse au message petite question sur grep. Évalué à 1.
# mais quoi ?
Posté par xavier . En réponse au message shell de Bourne. Évalué à 3.
read ou select pour les entrée, la syntaxe de while, dans quels contextes l'expansion des variables peut etre implicite (ce que n'est pas le cas des arguments de while ou de test), etc...
bref tout ce que tu retrouveras dans la doc du shell que tu utilises, comme
dans nombres de tutoriaux dispos en ligne, google est ton amis...
l'advanced bash scripting guide ( http://tldp.org/LDP/abs/html/ ) pouvant
etre un point d'entrée...
a moins que tu ne veuilles faire faire tes devoirs par autrui, ce qui ne t'avanceras evidemment a rien :)
[^] # Re: backslash slash
Posté par xavier . En réponse au message sed et écriture dans un fichier. Évalué à 2.
pour remplacer les slash utilisés pour englober les regexp d'adresses par un autre caractere cela fonctionne comme pour les substitution mais en prefixant le premier par un backslah, dans ton cas une syntaxe de la forme:
\XregexpX,\YregexpYcommande
exemple en utilisant le # comme separateur:
$ cat file
AA
BB
`Directory "./A/B/C/D"`
CC
DD
`/Directory`
EE
FF
$ value='"./A/B/C/D"'
$ sed "\#\`Directory $value\`#,\#\`/Directory\`#d" < file
AA
BB
EE
FF
# union fs
Posté par xavier . En réponse au message je cherche un système de fichier..... Évalué à 5.
http://www.fsl.cs.sunysb.edu/project-unionfs.html(...)
http://plasticfs.sourceforge.net/(...)
http://www.research.att.com/sw/download/(...)
le premier est sans doute le plus mature, module kernel, si je me souviens bien il gere les acces root comme les autres, plasticfs et le 3dfs des ast reposent eux sur le remplacement des appels a grand coups de LD_PRELOAD et ne sont pas totalement transparents.
# wm
Posté par xavier . En réponse au message Xlib - bords actifs - demande conseils. Évalué à 2.
ainsi sous fvwm les fonctions EdgeCommand et EdgeLeaveCommand permettent d'associer ce que tu veux a de tels "evenements", eventuellement associés a une variable d'etat pour gerer les coins comme les bords :)
potasser la doc de ton WM et eventuellement lui rajouter de telles possibilitées serait sans doute plus judicieux que de creer une Xeme
app gerant cela.
# utiliser autre chose.
Posté par xavier . En réponse au message gravure de dvd avec growisofs. Évalué à 2.
Il devrait donc suffire d'extraire les bonnes infos de sa sortie pour avoir l'etat du disque et en faire un script shell a utiliser par exemple via:
check_disk_script && growisofs ...
ou un frontend a growisofs retournant l'erreur voulu.
j'imagine que ces commandes sont presente dans le meme package que growisofs pour ta distribution.
[^] # Re: Mauvaise définition de la part de France 2
Posté par xavier . En réponse au journal « Geek » c'est fini !. Évalué à 4.
# et plus globalement...
Posté par xavier . En réponse au message acl et mask. Évalué à 2.
proprio, groupe, reste du monde
par
proprio, acl, reste du monde
le mask controllant les droits de toutes les acl, droits specifiques a certains _users_ compris.
s'il n'y a pas de mask alors il n'y a pas d'acl et la gestion des droits unix classiques s'applique normalement.
voir plus particulierement la section decrivant l'algorithme de verification dans man acl.
# indirection.
Posté par xavier . En réponse au message Petite question sur la programmation bash. Évalué à 1.
X=value
INDIR=X
echo ${!INDIR}
value
version courte de l'eval qui evite de repasser par toute les phases d'expansions, substitutions etc.
[^] # Re: Exemple de test d'un code retour erreur en Lisp ?
Posté par xavier . En réponse à la dépêche Peter Seibel : Practical Common Lisp. Évalué à 1.
[^] # Re: Exemple de test d'un code retour erreur en Lisp ?
Posté par xavier . En réponse à la dépêche Peter Seibel : Practical Common Lisp. Évalué à 3.
Une reponse simpliste pourrait etre: comme en C, avec un/des tests adaptés a la fonction, mais plus globalement chercher a transcrire directement des habitudes de C en CL n'est sans doute pas le meilleur moyen d'aborder ce langage, dynamic typing, higher order function, multiple return values, OOP (et non des moindre si l'on parle de pre/post conditions), offres a eux seuls une "foultitude" d'approches de ce probleme :)
mais pour repondre le plus simplement possible a ta demande il est courant d'avoir une valeur de retour == nil (false) ou d'un type specifique en cas d'erreur, soit:
(let ((valeur_retournée (la-fonction)))
(if (predica-adapté valeur_retournée) 'tout_va_bien 'tout_va_mal))
ou plus imperatif:
(unless (predica-adapté (la-fonction)) 'tout_va_mal)
# plus precisement ?
Posté par xavier . En réponse au message multi boot sur DVD. Évalué à 3.
[^] # Re: standard ?
Posté par xavier . En réponse au message fonction en bourne shell. Évalué à 1.
http://www.unix.org/version3/ieee_std.html(...)
ce n'est certe pas libre et implique un enregistrement, mais cela
reste gratuit, de plus a l'exception de shells relativement recents
et activement maintenus la compatibilité POSIX fait generalement
reference aux anciennes versions de la norme, mais ce n'en est
pas moins une bonne base. un pti coup de wget sur le lien
fournit apres enregistrement et hop...
# standard ?
Posté par xavier . En réponse au message fonction en bourne shell. Évalué à 1.
bourne shell standard, voir entre autres :
http://www.in-ulm.de/~mascheck/bourne/(...)
s'il faut travailler dans le contexte d'un standard/norme
pour /bin/sh c'est plutot du coté POSIX qu'il faut aller voir,
un bash compilé en --enable-minimal-config n'est pas
trop mauvais de ce point de vue :)