jimee a écrit 181 commentaires

  • # Ils le font tous?

    Posté par  (site web personnel) . En réponse au journal Attention aux fausses offres "+XX gratuit" chez Auchan. Évalué à 2.

    Chez moi, j'ai un Auchan et un Leclerc. Et ils le font tous les deux. Les lots de boissons gazeuses, les boites de lessive... En fait, tout ce qui est en lot, d'une manière générale. Je vais systématiquement en caisse centrale demander l'application du prix normal, et hélas, ça ne marche pas toujours. Je tombe parfois sur des entêté(e)s qui refusent d'appliquer aux lots le prix unitaire.
    Celà dit, il m'est aussi arrivé l'inverse... Un jour, ils avaient un mauvais code barre (prix fournisseur?) sur un lot qu'ils étaient censé vendre à l'unité... Ils ont dû s'en mordre les doigts. Le prix était divisé par 16. Oui, 16 (0,50€ le lot de 6 bouteilles vendues 1,32€ à l'unité).

    Au passage, dans d'autres magasins de bricolage dont le nom finit par astorama, il faut recompter! J'ai constaté à plusieurs reprises une hausse de 20 à 25% entre le prix affiché en rayon et le prix en caisse.
  • # chkrootkit

    Posté par  (site web personnel) . En réponse au message Impossible de supprimer sshd !. Évalué à 3.

    Si tu ne veux pas réinstaller, je te conseille de faire quelques tests plus poussés. Si un pirate s'est approprié ta machine, il a probablement posé une porte dérobée... Certaines sont presque invisibles, et passent allègrement au travers des mailles de ps ou ls... Je te recommande l'excellent chkrootkit.
  • # [x] obiwan kenobi

    Posté par  (site web personnel) . En réponse au sondage Cet été, mis à part les RMLL, je .... Évalué à 1.

    En fait, j'hésite entre travaille et ménage... j'ai pleins de travaux d'aménagement à finir... bricolage, jardinage, toussa... Mais ça va pas m'empêcher pas de mouler, dormir, bronzer...
  • [^] # Re: en fait ...

    Posté par  (site web personnel) . En réponse au message Configuration apache. Évalué à 1.

    Je pense que le "NameVirtualHost 127.0.0.1:80 has no VirtualHosts" doit venir du fait que tu n'as pas la même chose dans le NameVirtualHost et dans la balise VirtualHost. Dans ce cas, http://localhost doit tomber dans ton DocumentRoot par défaut (plus haut dans la conf) au lieu du DocumentRoot indiqué dans le VirtualHost.

    Quelle erreur as-tu, sur http://localhost ?
  • [^] # Re: en fait ...

    Posté par  (site web personnel) . En réponse au message Configuration apache. Évalué à 1.

    Je crois qu'il a mis un virtualhost mais que les balises ne sont pas passées... on le voit dans le source de la page ;)
  • # Chez nous

    Posté par  (site web personnel) . En réponse au journal [HS] Et vous, comment avez vous construit votre maison ?. Évalué à 2.

    On a fini la construction de notre maison il y a deux mois.

    Pour des raisons de coût de construction, on a cédé au parpaing|polystyrène|placo et au chauffage tout électrique (dalle chauffante au séjour, panneaux rayonnants dans les chambres, et un cumulus de 300l). En gros, on a choisi un constructeur pour ses tarifs intéressants, mais il ne voulait pas s'engager à faire autre chose que ce qu'il fait d'habitude. Il a même refusé de prévoir un conduit de cheminée... L'électrique, j'en suis plutôt content pour l'instant, mais j'ai peur que la première facture soit salée (pas encore reçue). La mise en service a consommé beaucoup.

    La récupération d'eau, on pense aussi que c'est indispensable. Ça devrait même être obligatoire! ;) Pour la plomberie, c'est pas si compliqué. Avant, les plombiers aimaient bien relier toutes les sources en série, avec un long cuivre qui faisait le tour de la maison. Maintenant, ils noient des tuyaux souples en pvc dans le béton. Chaque robinet (ou presque) a son propre tuyau qui arrive directement à coté du chauffe-eau sur deux répartiteurs (chaud et froid). Ca a l'avantage d'équilibrer les pressions pour ne pas avoir un robinet qui coupe la douche... Donc, si tu en parles au plombier avant, il dérivera juste l'arrivée pour ajouter un deuxième répartiteur d'eau froide et y relier les robinets adéquats. Si tu prévois un wc ou la machine à laver dans une salle d'eau, insiste un peu pour être sûr qu'il ne fasse pas une arrivée commune avec un lavabo... Après, tu as juste à poser un bypass en amont du deuxième répartiteur d'eau froide, pour y faire arriver l'eau des cuves. Comme ça, quand les cuves sont vides, tu peux basculer sur l'autre arrivée. Sur notre circuit, on a juste mis la chasse d'eau, la machine à laver et le robinet de jardin. Je crois que l'investissement pour rendre l'eau potable n'aurait pas été rentable...

    Pour les cuves, on nous a fortement incités à les faire poser au moment du terrassement final. On a opté pour 2 cuves de 3000l en béton. Les avantages du béton : c'est beaucoup moins cher, et ça neutralise l'acidité. C'est moins pratique à faire livrer, mais ça peut se négocier avec le terrassier... Le notre nous en a trouvé des encore moins cher que celles qu'on avait repérées, et ils nous les a livrées et posées. Il a aussi prévu les tuyaux pour pomper dedans, il nous reste juste à raccorder filtres et pompe au bout.

    Voilà. Bon courage!
  • [^] # Re: Logiciel

    Posté par  (site web personnel) . En réponse au journal Le cryptage rentre dans les moeurs.. Évalué à 10.

    "cacher" c'est donnée

    ...et reprendre ses volets!
  • [^] # Re: \r

    Posté par  (site web personnel) . En réponse au message Faire marcher les CGI. Évalué à 1.

    Le script peut très bien avoir des fins de lignes unix. Mais si ce qu'il affiche n'a pas les retours en \r\n, le handler d'apache ne comprend pas.
  • # \r

    Posté par  (site web personnel) . En réponse au message Faire marcher les CGI. Évalué à 1.

    A tout hasard, des \r à la fin des lignes?
  • [^] # Re: screen

    Posté par  (site web personnel) . En réponse au message Raccourcie clavier getty ?. Évalué à 2.

    Je confirme. screen est l'outil qu'il te faut!
    Petite liste non exaustive des utilités et fonctionnalités :
    * Reprendre une session distante (ssh) perdue par une déco
    * Avoir plusieurs shells dans la même fenêtre (ou le même ssh)
    * Utiliser la même session depuis plusieurs endroits en même temps
    * Verrouiller du terminal à la manière de la commande "lock"
    * Naviguer dans l'historique du terminal même si tu as changé de mode ou de console
    * Lancer des commandes qui doivent survivre à la perte du tty (ton cas de wget est un bon exemple)
    * Bosser à plusieurs sur une même session (dépannage à distance)
    * Copier/Coller sans utiliser la souris. Très utile quand on n'a pas de souris! On peut même sélectionner une zone rectangulaire...
    * 42

    Par contre, si c'est juste pour lancer une commande non interactive, tu peux utiliser nohup. C'est de base sur tous les bons systèmes...
  • # -f et trusted_users

    Posté par  (site web personnel) . En réponse au message Exim4 et rewriting du return-path.... Évalué à 1.

    Tu as besoin de 2 choses:
    D'abord, une option "-f " à ton sendmail. Tu peux passer cette option en dernier paramètre de la fonction mail() de php.

    Ensuite, l'utilisateur www-data doit être autorisé à utiliser l'option -f, sinon elle est ignorée silencieusement... Cela se modifie dans la conf d'exim, par la variable trusted_users.

    Bon courage!
  • # Here documents

    Posté par  (site web personnel) . En réponse au message envoyer un courriel en perl. Évalué à 3.

    $smtp->datasend( << 'EOM');
    Remplace tout simplement tes quotes par des doubles :)
  • [^] # Re: le plus simplement du monde...

    Posté par  (site web personnel) . En réponse au message glibc effacé par erreur: comment réparer ?. Évalué à 2.

    Si tu as le rpm, tu dois aussi pouvoir l'installer (toujours depuis le live cd, ou un autre système) avec l'option --root :
    Si tu as monté ton disque dans /target
    rpm --root /target -ivh /target/root/glibc-2.3.4.rpm
  • # -exec ;

    Posté par  (site web personnel) . En réponse au message find et incomplete statement. Évalué à 2.

    Essaye sans le \

    Je crois que dans un script, il n'y en a pas besoin. Il sert juste à le différencier du ; interprété par le shell quand on le lance directement.
  • # ls

    Posté par  (site web personnel) . En réponse au message Connaître le MAJOR et le MINOR d'un fichier périphérique. Évalué à 10.

    $ ls -l /dev/hda1
    brw-rw---- 1 root disk 3, 1 2007-08-20 15:53 /dev/hda1
    Major 3, Minor 1
  • # Certificat autosigné

    Posté par  (site web personnel) . En réponse au message Accès en HTTPS : Sécuriser un serveur web.. Évalué à 4.

    Il suffit juste de créer un certificat autosigné.
    Tu as des exemples de génération de certificat avec openssl dans "man req" :

    Generate a self signed root certificate:
    openssl req -x509 -newkey rsa:1024 -keyout key.pem -out cert.pem

    Par contre, l'inconvénient, c'est que tes visiteurs auront un message d'avertissement, expliquant que le certificat n'est pas signé par une autorité reconnue...
  • # Mémoire cache

    Posté par  (site web personnel) . En réponse au message Placer un filesystem complet en RAM. Évalué à 4.

    Normalement, c'est ce que fait linux. Si tu lis tout ton répertoire (par exemple en faisant un grep recursif dedans), il charge tout en mémoire. Tu dois retrouver la taille de ton répertoire dans la colonne "cached" de la commande "free". A partir de là, les opérations de lectures et d'écritures se font dans la mémoire. La commande "sync" force le système à reporter les modifications sur le disque. Par contre, rien ne l'oblige à garder ces données en mémoire. Si elles ne sont pas suffisamment accédées, elles finiront par être purgées de la mémoire (et reportées sur le disque si elles sont modifiées) pour faire place à d'autres données plus vitales. Si ton système de fichier est monté avec l'option "sync", les écritures se font directement sur le disque. Sinon, elle sont faites au pire lors du démontage.

    Si tu veux réellement forcer ces données à rester en mémoire, tu peux faire un ramfs (mount -t ramfs ramfs /ram), copier tout ton répertoire dedans, faire pointer ton application dedans, et faire un cron qui synchronise régulièrement le disque (cp -au /ram/* /origine/). Ca doit marcher, mais c'est certainement moins optimisé que le cache de linux :)
  • # oui

    Posté par  (site web personnel) . En réponse au message variable et requete sql. Évalué à 2.

    Syntaxiquement (au sens de php), c'est correct.
    Du point de vue mysql (si c'en est) il reste à vérifier que les noms de la table et des champs sont bons (attention aux majuscules), et que le contenu de la variable correspond bien à ce que tu espères : dans le cas où ta variable est vide, la syntaxe devient mauvaise!

    Attention également aux injections sql :
    Si $group_info['account_name']="0 or 1=1", ta requete va retourner toute ta table... Un conseil : même si le champs account_lid est numérique, mets ta variable entre des quotes, et utilise la fonction mysql_real_escape_string().

    $x = "select account_id from eqw_accounts where account_type = 'g' and account_lid = '" . mysql_real_escape_string($group_info['account_name']) . "'";

    Voir un exemple plus complet sur http://fr3.php.net/manual/fr/function.mysql-real-escape-stri(...) pour le cas où les magic_quotes sont activées...
  • [^] # Re: Trop tard ?!?

    Posté par  (site web personnel) . En réponse au message Questions d'exam. Évalué à 2.

    I.6)
    a) 1 entrée dans le listing du répertoire (nom, infos du fichier: inode)


    Attention, l'entrée dans le répertoire n'est pas un inode. Elle contient le nom d'un fichier et le numéro d'inode associé. Elle pointe donc sur un inode qui contient toutes les autres infos du fichiers. Le lien hard ne consomme pas d'inode, il ne consomme qu'une entrée du répertoire qui pointe sur le même inode que le fichier d'origine. C'est cet inode non dupliqué qui voit sont compteur de ref augmenter. Le lien symbolique a son propre inode, c'est pour ça qu'il prend plus d'espace disque. Par contre, il ne consomme pas forcément de bloc de données. En dessous d'une cinquantaine d'octets, les données sont rangées directement dans l'inode.

    III.1) les fonctions *dir: opendir, readdir, closedir
    Il faut que le répertoire soit accessible par l'utilisateur en Read+eXecute


    Non non et non... on n'a pas besoin de traverser un répertoire pour lister ses entrées. Les noms des élements du répertoire sont bien dans les blocs de données du répertoire, et non dans les inodes des fichiers correspondants.

    Par contre, on a bien besoin de traverser le répertoire pour lire les inodes (stat) des fichiers qui sont dedans :)
  • [^] # Re: Réponse (a vérifier)

    Posté par  (site web personnel) . En réponse au message Questions d'exam. Évalué à 1.

    Si tu comptes la taille de ton fichier, c'est de la triche ;)
    12 octets, c'est la taille du chemin du fichier pointé par le lien.
    14k c'est la taille du fichier lui-même. Ces 14k ne sont pas recopiés par ln (ni normal, ni -s).
  • # masquerading

    Posté par  (site web personnel) . En réponse au message squid et ipmasq. Évalué à 2.

    As-tu activé l'ip forwarding? echo "1" > /proc/sys/net/ipv4/ip_forwarding
    As-tu activé le masquerading? iptables -t nat -A POSTROUTING -s <ton réseau privé> -o <ton interface de sortie> -j MASQUERADE

    As-tu bien toutes les autorisations dont tu as besoin sur la chaine FORWARD? ;)
  • [^] # Re: Réponse (a vérifier)

    Posté par  (site web personnel) . En réponse au message Questions d'exam. Évalué à 1.

    1.4
    Faux: (comme dit en dessous...) les fils sont rattachés à init. Dans le cas inverse, quand un processus fils se termine, le processus parent reçoit un signal SIGCHILD.

    1.6
    Faux: Le lien physique est une entrée du répertoire, qui pointe vers le même inode que le fichier lié. Le nombre de liens dans l'inode est incrémenté, et aucun espace supplémentaire n'est utilisé. Le lien symbolique est une entrée de répertoire qui pointe sur un nouvel inode, pointant l'espace contenant le chemin du fichier lié. Le lien symbolique consomme donc au moins 1 inode (en général, le chemin prend quelques octets et se loge dans une partie réservée de l'inode, plutôt que de réserver un bloc de données en plus).

    2.3
    sleep() et select() font tous les deux de l'attente passive.
    Attente passive: le processus rend le contrôle au système, et charge le système de le réveiller sur une ou plusieurs conditions.
    Attente active: le processus attend dans une boucle, et monopolise les ressources. Le système n'a pas moyen de savoir si le processus est réellement en train de travailler, et lui alloue des ressources au détriment des autres processus. Un processus en attente active fait systématiquement grimper la charge de 1.
    Exemple d'attente active:
    while(1); /* attente d'un signal externe */
    Exemple d'attente passive:
    sleep(86400); /* attente d'un signal externe, limitée à 1 jour */

    3.1
    ls rep:
    effectue des readdir() pour donner les entrées présentes dans le répertoire. Le répertoire doit être accessible en lecture, et tous les répertoires parents doivent être traversables.
    3.2
    ls -l rep:
    effectue des readdir() comme au dessus, et des stat() sur chaque entrée pour connaitre les permissions et propriétaires des fichiers. Le stat() nécessite que tous les répertoires parents (y compris rep) soient traversables (droit x).
    3.3
    On déduit que pour le propriétaire, le bit de lecture est activé, mais pas le bit d'exécution. Les autres permissions ne sont pas connues (dr?-??????).
  • [^] # Re: Questions subsidiaires

    Posté par  (site web personnel) . En réponse au message mv sur une partition fat32 super lente. Évalué à 1.

    Les "blocs" dont je parlais ne sont pas les blocs physiques (4k je crois) mais des portions du fichier que le système peut loger dans sa mémoire libre (dans les "cached" et "buffers" de la commande free). L'idée du dd, c'était juste pour forcer l'allocation de mémoire (quitte à swapper un processus qui dort).
    Je pensais aussi au cas d'un système destination monté avec l'option "sync". Dans ce cas, chaque écriture est faite en live, sans cache. Ca pourrait bien pourrir les temps de copie. Mais je crois que cette option n'est pas disponible pour le fat32...
  • [^] # Re: Questions subsidiaires

    Posté par  (site web personnel) . En réponse au message mv sur une partition fat32 super lente. Évalué à 1.

    Il le fait souvent, mais tout le monde n'a pas forcément 300Mo de mémoire libre à tout moment ;)
  • # Questions subsidiaires

    Posté par  (site web personnel) . En réponse au message mv sur une partition fat32 super lente. Évalué à 3.

    Tes 2 partitions sont-elles sur le même disque?
    As-tu les mêmes temps entre 2 partitions linux?
    As-tu les mêmes temps dans l'autre sens?
    Combien as-tu de mémoire disponible?

    Garde à l'esprit que dans tous les cas, mv se contente de répéter autant de fois qu'il le faut les 4 opérations :
    - placement de la tête sur le fichier d'origine (mettons 8ms sur un bon disque)
    - lecture d'un bloc (attendre au moins 1 tour de disque, soit 8ms sur un 7200 tr/mn. Pour des petits blocs, on peut négliger le temps de transfert)
    - placement de la tête sur le fichier destination (encore 8ms!)
    - écriture du bloc (et encore 8ms!)
    Si ton système a moyen de choisir une grande taille de blocs, ça va très vite. Mais si tu tombes à une taille de bloc de 10k, fais le calcul, ça fait 30000 fois 32ms, soit 16 minutes.

    Si tu veux jouer un peu, fais ta copie avec dd if=<fichier source> of=<fichier destination> bs=<taille des blocs en octets>, et fais des essais en changeant la taille des blocs! :)