- Détails
Mon crime parfait a marché. 🙂
Et je me demande s'il y avait vraiment besoin de faire tout ça. 🙂 Je suis allé à l'accueil du magasin, j'ai demandé à rendre les chaussures, la fille me demande pourquoi, je lui dis qu'elles sont trop grandes, elle regarde les talons des chaussures (pourquoi ?), et elle me fait un bon d'échange/remboursement.
Je m'empresse de me faire rembourser et hop l'affaire est dans le sac, j'ai l'argent des chaussures. 🙂
- Détails
Je suis admin réseau/système. Je commence à en devenir un rudement bon.
Parce que je commence à être un gros enfoiré au boulot. 🙂 Et si me je rappelle bien, on médisait à propos de l'admin à la fac. Et pourtant il faisait du super boulot.
blague à part, je crois que je deviens plus irascible envers mes utilisateurs, parce qu'ils me posent toujours les mêmes questions. Et j'ai le défaut de ne pas aimer les redites et les rediffusions. Je crois que c'est lié au fait que j'ai une bonne mémoire. J'ai l'impression de refaire les mêmes choses à chaque fois.
En même temps, je me dis que si les glorieux élus de mon association me lâchaient un peu avec leurs questions triviales, ça irait un peu mieux. D'ailleurs, la dernière bonne histoire : la semaine dernière une glorieuse élue me dit qu'elle a des trucs bizarres "sur la fenêtre bleue qui s'ouvre au démarrage", et si elle peut les effacer (elle avait atomisé son fichier de données Outlook ainsi que son carnet d'adresses l'avant-veille parce qu'elle a fait le ménage et vu qu'elle n'arrivait pas à lire le contenu de ces fichiers, elle a conclu qu'elle en n'avait pas besoin). Je me suis demandé ce qu'était cette fenêtre bleue. J'ai mis 5 minutes à comprendre (et dieu sait que c'est long, 5 minutes quand on a l'impression de parler à un teckel). Elle parlait du bureau. Sérieusement, du bureau. Du fond d'écran. Et elle voulait dégager un fichier temporaire, avec un gros .TMP
à la fin.
Et je dois avouer que d'assurer le support pour des gens qui n'ont même pas les notions de base me gonfle. Il y a des jours, j'ai envie d'embaucher un tas de stagiaires pour répondre au téléphone et réparer les petits bobos informatiques et de juste assurer le support niveau 2.
Le pire, c'est que nos très glorieux élus n'ont aucune idée de la qualité de support dont ils bénéficient. Le proverbe dit : "De la confiture pour les cochons".
- Détails
Je suis stupide et ingénieux à la fois. :)
Disclaimer : ça va être une longue histoire, préparez-vous. 😉
Tout a commencé quand un ami m'a proposé une combine pour avoir des chaussures de marque à pas cher. Personnellement, j'avais entendu parler de ces combines, mais je n'y ai jamais pris part, soit parce que ça ne m'intéressait pas, soit parce que je ne connaissais pas les bonnes personnes.
Mais cette fois-ci, j'avais eu du bol. 🙂 En fait, le frère de mon ami travaille en intérim dans l'entrepôt d'un grossiste, et ils peuvent acheter certains articles presque à moitié prix. Dont ces chaussures. Ils peut en acheter tant qu'il en veut, mais l'entreprise n'a pas tous les modèles et toutes les pointures en stock (sinon ça serait trop beau).
Je suis donc allé dans un magasin d'articles de sport et j'ai "choisi" les chaussures que je voulais. J'ai "passé commande", mais au bout d'une semaine, mon ami m'annonce que les modèles que je voulais ne sont pas présentes dans le stock.
C'est pas si grave en soi, les chaussures en question étaient déjà en promotion dans le magasin où je suis allé. J'y suis donc retourné les acheter. Mais il y a que je ne suis pas très intéressé dans les vêtements et chaussures, d'habitude. Et ça fait bien 3 ans que j'achète les mêmes chaussures entrée de gamme de la marque du magasin, qui me durent super longtemps (entre 6 mois et 1 an et demi). Du coup, j'ai même oublié comment bien choisir des chaussures.
Je sais que ça a l'air d'une blague, mais c'est vrai. 🙂 J'ai donc sommairement essayé les chaussures à ma première visite, et j'ai donc acheté les chaussures en la pointure que j'avais repéré. En plus avec le monde un samedi près des fêtes, ça ne m'encourageait pas à réessayer les pompes.
J'en étais content, elles ressemblaient aux tennis que j'avais d'habitude, en plus jolies. 🙂 Mais à la fin de la première journée à les porter, j'ai senti que mon mollet me faisait mal. Je me suis demandé si je ne m'étais pas cogné pendant la nuit, mais non, j'avais pas de trace de coup. C'est seulement au deuxième jour que je me suis rendu compte : les chaussures étaient trop grandes, et du coup je devais plier le mollet plus que de raisonnable pour marcher...
Je me suis dit au début qu'il fallait que je m'habitue, mais au bout de la journée, c'était intenable. Je ne pouvais plus porter ces chaussures... Et ça me posait un problème : j'avais déjà dépensé plus du double de mon budget tennis génériques pour ces chaussures de marque, et il m'en fallait d'autres. Et j'estimais qu'ayant marché deux jours avec dans la rue, elle n'étaient pas retournables... C'est là que je me rappelle les conseils de ma pôvre môman pour choisir des chaussures : regarder où arrive le gros orteil, prendre des chaussures qui serrent un peu, parce qu'elles sont se détendre avec le temps, etc... A force de prendre les mêmes chaussures tout le temps, j'avais oublié tout ça (je suis stupide)...
Mais bon, il m'a fallu voir la réalité en face : je devais acheter des chaussures qui m'aille. Je suis donc retourné au magasin le soir même pour racheter les mêmes en plus petites. C'est là que l'histoire devient amusante : comme c'est des chaussures en promo, il n'y en a plus à ma pointure... Et il n'y en aura plus.
Je dois me décider donc à en acheter d'autres. Et désespoir, elles coûtent toutes plus cher que les trop grandes... 🙁 Je suis donc contraint d'exploser mon budget chaussures de 500 %... Pire encore, un vendeur me dit que je peux les essayer quelques jours chez moi, et que je peux les ramener sous 15 jours si elles ne me vont pas, tant que je ne marche pas dehors avec...
Dès que j'ai entendu "ramener", je me suis cru sauvé, mais j'ai effectivement marché dehors avec, je suis allé au boulot avec ! Je suis donc rentré un peu dég, mais Séverine me disait d'essayer quand même de rendre les chaussures trop grandes, vu qu'elles étaient encore très largement neuves (ou du moins semblaient neuves).
J'ai donc observé en détails les chaussures. En effet, elles ont encore un air neuf. Normal, je les ai portées 2 jours, et je suis resté assis la plupart du temps, et elles ont été réellement à l'extérieur une heure de temps.
J'ai donc soigneusement nettoyé les semelles, et elles paraissaient en effet neuves et jamais portées. Mais je me suis rendu compte en regardant mes nouvelles (nouvelles !) chaussures que les trop grandes n'avait plus toutes ces étiquettes de prix, de composition de matériau et tout et tout qui ornent toute paire de chaussures neuves jamais portées.
Et là, je trouve mon idée diabolique : j'ai une paire de chaussures à l'allure neuves mais sans aucune étiquette, et une autre paire neuve avec toutes ses étiquettes. J'ai donc soigneusement détaché les bolducs de la nouvelle paire et j'ai rattaché les étiquettes de l'ancienne avec. J'ai retrouvé les autocollants dans la poubelle et je les ai recollés sur les chaussures. Au final, elles ont l'air fraîchement achetées. 🙂 Le seul défaut, c'est que la semelle est un rien abîmée par l'asphalte, mais c'est pas très visible.
Je vais donc aller demain les rendre et me faire rembourser. Si ça marche, mon dépassement de budget chaussures descendra à 300 % seulement. 🙂 Je me garde tous les atouts, j'irai le week-end avant Noël, avec le rush et tout, ils ne devraient pas trop tergiverser. En plus, j'ai publié cet article environ 24 heures avant mon "forfait", je leur donne une chance. 😉
- Détails
X Window peut faire du multi-écran, voici comment (youhou mon premier howto réellement intéressant !). - étendu 25 janvier 2005
Oui, X Window peut faire du multi-écran, et oui X.org peut le faire. Mais c'est pas super documenté sur le net (ou je cherche comme un pied, ce qui est aussi une possibilité 😉).
Le pire, c'est que c'est pas très compliqué. Mais Xorg
ne configure pas automatiquement la prise en charge multi-écrans, même s'il détecte plusieurs cartes ! Il détecte bien les cartes et moniteurs, mais en lançant un gestionnaire de fenêtres, on se retrouve avec un seul écran fonctionnel, alors que le test marche bien... Pire encore, si on a une carte multi-affichages, on n'a qu'une seule carte et un seul moniteur !
Lisez mon papier sur xorg.conf
si ce n'est déjà fait, j'y explique les bases à connaître sur le fichier de configuration de X.org, et je vais me baser dessus pour l'étendre à la prise en charge multi-écrans.
Les prérequis pour une configuration multi-écrans, c'est déjà plusieurs écrans 🙂, et plusieurs cartes graphiques, ou un carte graphique pouvant gérer plusieurs écrans. De plus en plus de cartes ont cette fonction, il est probable que vous ayez une telle carte sans même le savoir. A fortiori si vous avez un ordinateur portable (assez) récent, la puce graphique intégrée en est capable.
Si vous n'avez pas tout ça, faut se faire une raison, il n'y aura pas de multi-affichage (je le précise, des fois on me pose des questions farfelues comme "peut-on lire une clé USB qui n'est pas reliée à l'ordinateur ?").
Si par bonheur (et abondance de place sur le bureau) vous avez deux écrans ou plus et des puces graphiques pouvant supporter vos écrans, on peut se tenter le coup de frime. 😉
Première étape, avoir une configuration Xorg
qui marche, sur un écran (voir là sinon). Si vous avez deux cartes vidéo, Xorg
les aura trouvées (sinon voir plus bas pour une tentative de solution), et elles apparaîtront dans des sections Device
séparées. Dans mon cas, j'ai une puce Intel Extreme Graphics 2 intégrée sur AGP et une Matrox Millenium PCI :
Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "NoAccel" # [<bool>] #Option "SWcursor" # [<bool>] #Option "ColorKey" # <i> #Option "CacheLines" # <i> #Option "Dac6Bit" # [<bool>] #Option "DRI" # [<bool>] #Option "NoDDC" # [<bool>] #Option "ShowCache" # [<bool>] #Option "XvMCSurfaces" # <i> #Option "PageFlip" # [<bool>] Identifier "Card0" Driver "i810" VendorName "Intel Corp." BoardName "82865G Integrated Graphics Device" BusID "PCI:0:2:0" EndSection Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "SWcursor" # [<bool>] #Option "HWcursor" # [<bool>] #Option "PciRetry" # [<bool>] #Option "SyncOnGreen" # [<bool>] #Option "NoAccel" # [<bool>] #Option "ShowCache" # [<bool>] #Option "Overlay" # [<str>] #Option "MGASDRAM" # [<bool>] #Option "ShadowFB" # [<bool>] #Option "UseFBDev" # [<bool>] #Option "ColorKey" # <i> #Option "SetMclk" # <freq> #Option "OverclockMem" # [<bool>] #Option "VideoKey" # <i> #Option "Rotate" # [<str>] #Option "TexturedVideo" # [<bool>] #Option "Crtc2Half" # [<bool>] #Option "Crtc2Ram" # <i> #Option "Int10" # [<bool>] #Option "AGPMode" # <i> #Option "AGPSize" # <i> #Option "DigitalScreen1" # [<bool>] #Option "DigitalScreen2" # [<bool>] #Option "TV" # [<bool>] #Option "TVStandard" # [<str>] #Option "CableType" # [<str>] #Option "NoHal" # [<bool>] #Option "SwappedHead" # [<bool>] #Option "DRI" # [<bool>] #Option "MergedFB" # [<bool>] #Option "Monitor2HSync" # [<str>] #Option "Monitor2VRefresh" # [<str>] #Option "Monitor2Position" # [<str>] #Option "MetaModes" # [<str>] Identifier "Card1" Driver "mga" VendorName "Matrox Graphics, Inc." BoardName "MGA 2064W [Millennium]" BusID "PCI:1:7:0" EndSection
Le pilote mga
comporte beaucoup d'options, dont des références à un 2ème moniteur ("Monitor2Position"
), mais la plupart sont destinées aux Milleniums récentes, dans la série G, pas mon ancêtre. 🙂
Les cartes sont correctement identifiées en tant que "Card0"
et "Card1"
. On va pouvoir s'en servir directement.
Si vous avez une carte intégrée, c'est différent, vous n'avez qu'un seul Device
, comme ceci :
Section "Device" Identifier "Card0" Driver "radeon" VendorName "ATI" BoardName "ATI Radeon Mobility M6" Option "AGPMode" "4" #VideoRam 32768 # NOTE: Enabling VideoRam produces strange errors, # no problem, it detects 32MB anyway. BusID "PCI:1:0:0" EndSection
L'astuce, c'est qu'on sait que cette carte peut gérer deux moniteurs. On va donc la dupliquer :
Section "Device" Identifier "Card0" Driver "radeon" VendorName "ATI" BoardName "ATI Radeon Mobility M6" Option "AGPMode" "4" #VideoRam 32768 # NOTE: Enabling VideoRam produces strange errors, # no problem, it detects 32MB anyway. BusID "PCI:1:0:0" EndSection Section "Device" Identifier "Card1" Driver "radeon" VendorName "ATI" BoardName "ATI Radeon Mobility M6" Option "AGPMode" "4" #VideoRam 32768 # NOTE: Enabling VideoRam produces strange errors, # no problem, it detects 32MB anyway. BusID "PCI:1:0:0" EndSection
On recopie tout pareil, sauf qu'on change le nom de la carte, en "Card1"
sur la "deuxième" carte !
Notez que votre XFree86 ou X.org peut ne pas présenter tous ces paramètres. Par exemple, sous Ubuntu, et XFree86 4 (je connais pas la version exacte, désolé), on a ce genre de chose :
Section "Device" Identifier "ATI Technologies, Inc. Radeon Mobility 9000 M9 (R250 Lf)" Driver "ati" BusID "PCI:1:0:0" EndSection
Ils omettent les infos VendorName
et BoardName
, mais Identifier
est très explicite. Ce qui n'est pas forcément pratique pour relire le fichier. Mais en même temps, Ubuntu n'est pas vraiment fait pour les geeks qui éditent les fichiers de conf X à la main. 🙂
Enfin, ajouter une option pour indiquer au driver de la carte quels affichages matériels dépendent de cette carte, avec la directive Screen
(qui n'est pas la section Screen
!) :
Section "Device" Identifier "Card0" Driver "radeon" VendorName "ATI" BoardName "ATI Radeon Mobility M6" Option "AGPMode" "4" #VideoRam 32768 # NOTE: Enabling VideoRam produces strange errors, # no problem, it detects 32MB anyway. BusID "PCI:1:0:0" Screen 0 EndSection Section "Device" Identifier "Card1" Driver "radeon" VendorName "ATI" BoardName "ATI Radeon Mobility M6" Option "AGPMode" "4" #VideoRam 32768 # NOTE: Enabling VideoRam produces strange errors, # no problem, it detects 32MB anyway. BusID "PCI:1:0:0" Screen 1 EndSection
Voilà, on a maintenant deux cartes prêtes à l'emploi. 🙂 Si vous avez d'autres cartes ou si votre carte gère plus de deux affichages, continuez à copier-coller. 😉
J'ai également deux déclarations Monitor
, et deux Screen
, dans ce xorg.conf
:
Section "Monitor" #DisplaySize 300 230 # mm ### Uncomment if you don't want to default to DDC: # HorizSync 842150464.0 - 0.0 # VertRefresh 809972032.0 - 0.0 Identifier "Monitor0" VendorName "VSC" ModelName "VE510s" Option "DPMS" EndSection Section "Monitor" #DisplaySize 300 230 # mm ### Uncomment if you don't want to default to DDC: # HorizSync 1429222016.0 - 0.0 # HorizSync 30.0 - 70.0 # VertRefresh 1430467328.0 - 0.0 Identifier "Monitor1" VendorName "DEL" ModelName "DELL E771p" Option "DPMS" EndSection
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Card1" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection
Le "Screen0"
utilise la carte "Card0"
et le moniteur "Monitor0"
, de même que "Screen1"
utilise les "1". Si vous avez une carte multi-affichages, dupliquez les sections Monitor
et Screen
que vous avez, et éditez-les.
Pour Monitor
, comme Xorg
ne le détecte pas tout seul, il faut le fabriquer à la main. Mettez "Monitor1"
comme Identifier
, à peu près ce que vous voulez en VendorName
et ModelName
. Pour les taux de rafraîchissement, il faudra vous référer au manuel ou au site du constructeur, ou une autre ressource sur le net pour les trouver. Et faites attention à ne pas mettre n'importe quoi, sinon le moniteur risque de brûler...
Pour Screen
, faites juste attention à associer les bonnes cartes et les bon écrans, et à le nommer correctement (si vous gardez cette nomenclature de "0", "1","2", etc, ça ne devrait pas être trop difficile 😉). Reportez-vous au manuel pour connaître les différents modes d'affichage (profondeur de couleur, résolution) pour les reporter dans les SubSecton "Display"
. Les profondeurs de couleurs devraient suffire, pour FreeBSD.
J'ai vu qu'il existait des variantes (toujours chez Ubuntu) :
Section "Monitor" Identifier "Ecran générique" HorizSync 30-67 VertRefresh 50-75 Option "DPMS" EndSection Section "Screen" Identifier "Default Screen" Device "ATI Technologies, Inc. Radeon Mobility 9000 M9 (R250 Lf)" Monitor "Ecran générique" DefaultDepth 24 SubSection "Display" Depth 1 Modes "1400x1050" EndSubSection SubSection "Display" Depth 4 Modes "1400x1050" EndSubSection SubSection "Display" Depth 8 Modes "1400x1050" EndSubSection SubSection "Display" Depth 15 Modes "1400x1050" EndSubSection SubSection "Display" Depth 16 Modes "1400x1050" EndSubSection SubSection "Display" Depth 24 Modes "1400x1050" EndSubSection EndSection
La section Monitor
a les fréquences de rafraîchissement de l'écran renseignés, alors que sur la même section de X.org de FreeBSD, elles sont auto-détectées par défaut. Donc dans le doute, suivez les préférences de votre serveur X, et pour ajouter une section, renseignez les valeurs qu'il mentionne dans les sections existantes (je sais pas si je suis clair, là 🙂.
De même, les sous-sections Display
de la section Screen
sont légèrement différentes. X.org de FreeBSD décrit une variable Viewport
, alors que XFree86 de Ubuntu décrit une variable Modes
. Je ne suis malheureusement pas expert en serveurs X pour dire si c'est une différence entre XFree86 et X.org ou si c'est une différence d'implémentation entre FreeBSD et Ubuntu... Donc c'est ce que je disais, renseignez les infos conformément à ce qui existe dans votre fichier quand vous spécifiez des écrans et cartes supplémentaires.
Enfin, passons au ServerLayout
. Il y a juste deux options à vérifier. Mon xorg.conf
par défaut me disait ça :
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen0" InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection
Notez les paramètres de Screen 1
. Il donne le nom de l'affichage à utiliser, et une position relative par rapport à l'écran principal, "Screen0"
. Par défaut, l'écran secondaire est sensé être placé à droite de l'écran principal, donc RightOf
. Or mon écran secondaire est place à gauche du principal. Je vais donc remplacer cette option par LeftOf
:
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" LeftOf "Screen0" InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection
Le test (X -xfconfig /<emplacement>/xorg.conf
) me donnera bien la bonne position d'écran, et si je déplace le curseur à gauche, il partira bien sur l'écran secondaire. Mais le bureau du gestionnaire de fenêtres sera toujours confiné à un seul écran !
Le truc, c'est une option jamais définie par défaut dans le xorg.conf
: "Xinerama"
. Elle permet d'utiliser les différents écrans en bureau étendu :
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" LeftOf "Screen0" InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" Option "Xinerama" "true" EndSection
Et voilà, vous avez un affichage multi-écrans fonctionnel sous X ! 🙂
J'avais promis de dire un mot sur les cartes non reconnues, et je le fais ici. Il peut y avoir plusieurs raisons à la non-détection de la carte vidéo. Première raison, elle n'est pas supportée par la version de X que vous avez. Là, pas de miracles, il faut se récupérer le bon driver, le recompiler au besoin et retenter la détection. Si vous savez qu'elle est supportée et que pour une raison obscure elle n'est pas détectée, regardez dans le dmesg
pour voir si elle apparaît dans les périphériques détectés par le noyau. Moi, la Matrox Millenium donne ça :
pci1: <display, VGA> at device 7.0 (no driver attached)
Le noyau sait que c'est une carte vidéo, mais n'a pas de pilote spécifique à y affecter. Notez que la carte est présente sur le bus pci1
, périphérique 7.0. C'est ce nombre que vous devrez fournir à xorg.conf
pour forcer l'utilisation de cette carte. Rappelez-vous ma section "Device"
:
Section "Device" Identifier "Card1" Driver "mga" VendorName "Matrox Graphics, Inc." BoardName "MGA 2064W [Millennium]" BusID "PCI:1:7:0" EndSection
L'option BusID
permet de désigner la carte utilisée. Il faut aussi déterminer le driver à utiliser pour la carte. Pour ça, je ne sais pas. 🙂 Mais en creusant sur le net, ça doit pouvoir se trouver...
Voilà, j'espère que ça a pu vous aider ! Merci de m'avoir lu. 🙂