Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog

27/10/2008

[gnome] - Liste d'astuces sous Gnome

images.jpegCacher les infos-bulle, lorque vous êtes sur une entrée d'un menu ou d'une option, une infos bulle vient vous indiquez à quoi corresponds le programme, si vous voulez supprimer ces informations, il suffit de décocher dans gconf-editor
/apps/panel/global/tooltips_enabled.

Dans Nautilus : CTRL+H pour afficher/cacher les fichiers cachés.

Toujours dans Nautilus : CTRL+S pour sélectionner rapidement un ou des fichiers/dossiers à l'endroit ou vous vous trouvez. Admettons que vous souhaitiez trouver tout les fichiers qui commencent par grabouille, tapez CTRL+S et tapez grabouille* les fichiers/dossiers seront automatiquement sélectionnés (le * permet de prendre n'importe quel caractère, si vous voulez un motif exact tapez uniquement votre mot).

Supprimer l'effet lorsque les fenêtres sont minimisées (le carré noir qui se réduit) dans gconf-editor : /apps/metacity/general/reduced_resources cocher cette option. Attention lorsque cette option est coché, lorsque vous redimenssioner une fenêtre ou lorsque vous la déplacez, vous êtes en mode "fil de fer".

Supprimer les bips système, dans gconf-editor /apps/metacity/general/audible_bell dans le descriptif de la clef, il est indiqué que cela pouvait etre utilisé avec le mode visuel (pour les malentendants ou pour les noctambules) mode visuel qui se trouve ici /apps/metacity/general/visual_bell et dont le fonctionnement peut etre réglé avec cette clef : /apps/metacity/general/visual_bell_type (fullscreen clignote tout l'ecran, ou frame_flash qui est le clignotement de la barre titre)

Mettre un raccourci sur le menu principal de gnome (la touche windows par exemple) dans gconf-editor /apps/metacity/global_keybindings/panel_main_menu (Super pour la touche windows)

Mettre la corbeille, le réseau, les dossiers montés sur le bureau : tout se régle dans gconf-editor sur /apps/nautilus/desktop/
computer_icon (pour le post de travail) home_icon (pour le dossier utilisateur) network_icon (pour le réseau) trash_icon (pour la corbeille. Chaque entré à un _name et un _visible, _name permet de définir le nom qu'on lui attribue, et _visible permet de l'afficher ou non. Enfin volumes_visible permet d'indiquer si les disques montés sont affichés sur le bureau ou non.

Toujours afficher la liste des programmes lorsque vous faites un ALT+F2 dans gconf-editor : /apps/panel/general/show_program_list

Cacher uniquement les fichiers qui commencent par ~ (vim, gedit....) décochez /desktop/gnome/file_views/show_backup_files (toujours dans gconf-editor je me répète certes...)

Définir les programmes qui s'ouvrent avec quel protocole : vous voulez que vnc s'ouvre avec autre chose que vinagre ou que les mailto d'ouvre avec tel programme tout est dans : /desktop/gnome/url-handlers

Définir ce qui ce passe dés que vous brancher un périphérique (webcam, clef usb, appareil photo) /desktop/gnome/volume_manager les clefs commencent par auto* par exemple si autophoto est coché, il lance autophotocommand. vous pouvez régler, ce qui se passe lorsque vous mettez un cd, dvd....

26/10/2008

[ntp] - comment ça marche?

serviceconf.pngVous le savez cette nuit à 3h il était 2h, et lorsque vous avez allumé votre ordinateur ce matin, votre gnu/linux à changé automatiquement l'heure... Mais comment cela marche t'il? L'ordinateur gére en  local l'heure avec le paquet tzdata car il contient les informations sur le fuseaux horaires. Mais comment notre Système récupère l'heure ?
En fait notre OS si il y a une connexion internet utilise une connexion à un serveur NTP (Network Time Protocol) ce Protocole date de 1983, et permet de synchroniser les horloges des ordinateurs au travers d'un réseau.

Fonctionnement sur mon Ubuntu: pour comprendre le méchanisme, j'ai osculté mes fichiers. Avec apt j'ai trouvé le client ntp utilisé :

apt-cache search --names-only ntp | grep client

ntpdate - client for setting system time from NTP servers
libnews-nntpclient-perl - News::NNTPClient, Perl support for accessing NNTP servers
msntp - A very simple and portable SNTP client/server

J'ai donc fait un locate ntpdate.

/etc/default/ntpdate
/etc/dhcp3/dhclient-exit-hooks.d/ntpdate
/etc/logcheck/ignore.d.server/ntpdate
/etc/network/if-up.d/ntpdate
/usr/sbin/ntpdate
/usr/sbin/ntpdate-debian
/usr/share/doc/ntpdate
/usr/share/doc/ntpdate/NEWS.Debian.gz
/usr/share/doc/ntpdate/README.Debian
/usr/share/doc/ntpdate/changelog.Debian.gz
/usr/share/doc/ntpdate/copyright
/usr/share/man/man8/ntpdate-debian.8.gz
/usr/share/man/man8/ntpdate.8.gz
/var/lib/dpkg/info/ntpdate.conffiles
/var/lib/dpkg/info/ntpdate.list
/var/lib/dpkg/info/ntpdate.md5sums
/var/lib/dpkg/info/ntpdate.postinst
/var/lib/dpkg/info/ntpdate.postrm

Supprimons les lignes qui concernent la doc (man et doc) ainsi que les lignes sur les informations de paquets (dpkg), il nous reste :

/etc/default/ntpdate
/etc/dhcp3/dhclient-exit-hooks.d/ntpdate
/etc/logcheck/ignore.d.server/ntpdate
/etc/network/if-up.d/ntpdate
/usr/sbin/ntpdate
/usr/sbin/ntpdate-debian

on y voit deja plus clair, tout ce qui est dans /usr/sbin sont les programmes qui permettent la synchronisation des données. Ce qui est intéressant est ce qui se trouve dans /etc/network/if-up.d qui liste les programmes a lancer lorsqu'une connexion est déctecté. Analysons ce qui ce trouve dedans : cat /etc/network/if-up.d/ntpdate

Nous voyons bien aprés une serie de controle que c'est le programme /usr/sbin/ntpdate-debian qui est lancé.

Reste le fichier de configuration, et bien il s'agit de notre premiere ligne du locate : /etc/default/ntpdate Si on fait un cat dessus (cat /etc/default/ntpdate) voici ce que l'on trouve :

# The settings in this file are used by the program ntpdate-debian, but not
# by the upstream program ntpdate.

# Set to "yes" to take the server list from /etc/ntp.conf, from package ntp,
# so you only have to keep it in one place.
NTPDATE_USE_NTP_CONF=yes

# List of NTP servers to use  (Separate multiple servers with spaces.)
# Not used if NTPDATE_USE_NTP_CONF is yes.
NTPSERVERS="ntp.ubuntu.com"

# Additional options to pass to ntpdate
NTPOPTIONS=""

La ligne NTPSERVERS nous indique que nous synchronisons avec le serveur ntp.ubuntu.com. C'est donc dans ce fichier qui gère la connexion NTP.

Petite bizarrerie, j'ai yes sur NTPDATE_USE_NTP_CONF=yes et le commentaire indique que si il est mis sur yes, il vérifie alors une liste de serveur dans /etc/ntp.conf hors je n'ai pas ce fichier. Si quelqu'un a une réponse je suis preneur.

Le NTP récupère donc l'heure et en fonction de votre fuseau horaire, le système modifie l'heure sur le système.

Voila sous couvert de ce changement d'heure vous avez vu qu'il n'est pas difficile de retrouver des informations sur qui fait quoi dans notre système gnu/linux.

25/10/2008

[debian] - Aidez Lenny !

lenny.jpg

Pour rappel Debian Lenny, ne sortira à priori qu'en Juin 2009 . En effet soucieux de la qualité de sa distribution il reste 250 bugs critique à corriger.

Je me fait le relais d'Alexander Reichle-Schmehl (son annonce) qui demande de l'aide aux utilisateurs et aux développeurs : Ainsi un utilisateur pourra aider en migrant de etch vers lenny et faire les rapports de bug nécéssaire si un problème se présente. L'aide pourra se faire également coté traductions. Quand aux developpeurs il leur est demandé de corriger les bugs indiqués.
Pour avoir testé Lenny, je peux vous garantir qu'elle est déja solide et stable. On ne peut donc que se réjouir de voir que les developpeurs veulent avoir un produit abouti. D'ailleurs je ne résiste pas au plaisir de vous montrer le bureau par défaut (je n'ai rien modifié au thème tellement je le trouvais agréable)

lenny.jpg

08:27 Publié dans informatique | Lien permanent | Commentaires (0) | Tags : linux, debian, lenny

24/10/2008

[linux] - La gestion des fenêtres multiples

navigation_fenetre.jpgQuand on a plusieurs fenêtres ouvertes sur le bureau il devient difficile de s'y retrouver, voir de ne plus savoirs comment déplacer ces fenêtres... et je parle en connaissance de cause car en moyenne j'ai toujours une dizaine de fenêtres ouvertes en permanence (et je ne parle pas des onglets à l'intérieur des navigateurs, terminaux... mais ce n'est pas le sujet). Donc aujourd'hui nous allons voir comment bien se comporter avec nos amies les fenêtres.

Vous connaissez tous le fameux ALT et TAB qui vous permets de basculer d'une fenêtre a l'autre(et en faisant plusieurs appuie sur TAB vous choisissez la fenêtre voulu), il existe la même chose mais à l'envers, pour prendre la fenêtre juste avant et ainsi vous éviter 10 pressions sur TAB:  il suffit de faire CTRL+SHIFT+TAB. et si le petit menu vous énnerve vous pouvez vous déplacer entre les fenêtres directement avec ALT et ECHAP (sous gnome)

Autre petite astuce intéressante et unique sous notre OS préféré, pour déplacer une fenêtre en général on se déplace sur la partie supérieur de la fenêtre (la barre qui contient le nom de la fenêtre), Mais si vous appuyez sur ALT et que vous venez cliquer n'importe ou dans la fenêtre,vous pouvez la déplacer ou bon vous semble. Il est même possible de le faire sans clic avec ALT+F7

Supposons maintenant que vous voulez naviguez sur internet mais que vous vouliez toujours avoir un oeil sur une fenêtre (vlc, irc, enfin ce que vous voulez...) vous pouvez demander à ce que cette fenêtre soit toujours au premier plan en faisant un clic droit dans le bandeau du haut et sur l'option "toujours au premier plan" ainsi vous pouvez travailler et la fenêtre en question sera toujours visible.

Sous Gnome spécifiquement des raccourcis intéressant : ALT+F8 permet de redimenssionner la fenêtre, et ALT+F10 permet de maximiser la fenêtre et ALT+F5 permet de lui remettre son état normal.

23/10/2008

[conduit] - Synchroniser ses données facilement

conduit.png
C'est bien humain on à tendance à mettre ses données un peu partout, un peu sur la clef usb, un peu sur les disques dur au bureau.... mais le pire c'est qu'on en mets aussi en ligne, youtube, rss, calendrier google.... bref on en mets partout (Edvige nage en plein bonheur) et des fois c'est la grande panique pour synthétiser tout ça. Ames égarées, Conduit (écrit en python) est fait pour vous, et en plus le tout trés simplement, vous allez pouvoir mettre toutes vos photos sur picasa, les synchroniser sur votre disque dur externe, et en plus avec un visuel de ce qui a été prévu (voir capture d'écran ci dessus). Conduit est tellement bien fait que si vous créez une incohérence (ça peut arriver) (comme par exemple synchroniser votre calendrier avec des emails, le trait qui symbolise le conduit prends la couleur rouge, pour vous avertir que cela ne marchera pas. La synchronisation est devenu ulta simple, sauvegarder des flux rss dans un dossier, il est même possible de sauvegarder la configuration Gconf... est vraiment facile. Il est même possible de faire une synchronisation sur plusieurs endroits (vos photos dans un disque dur, sur picasa, et flickr par exemple).
La configuration des "boites" est également trés facile : il suffit de deux clics dessus pour indiquer ou se trouve le dossier, les fichiers, vos noms d'utilisateurs/mots de passe pour certains sites.... Je l'ai adopté immédiatement.

22/10/2008

[python] - Python débutant : fonctions & conditions - programmer un carnet de téléphone

python_deb.jpgNous avons vu la dernière fois comment débuter en programmation avec Python. Nous avons vu que finalement cela n'était pas si compliqué que cela. Alors du coup aujourd'hui on augmente un petit peu le niveau et nous allons aborder trois nouvelles notions : les fonctions, les conditions et les boucles.
Petites définitions avant de commencer. Une fonction en programmation est un bout de code que l'on peut appeller pour lui faire effectuer un traitement, par exemple si dans votre programme vous retailler une photo, au lieu de remettre 10 fois le même code vous pouvez faire appel à votre fonction qui contiendra le code pour retailler la fonction (il vaut mieux 1 code de 10 lignes appelé des dizainnes des fois plutot que 10 lignes répété des dizainnes de fois), vous économisez des lignes de codes et la lecture en sera simplé. Avec l'usage vous verrez que c'est extremement souple. nous allons le voir de toutes facons avec notre carnet téléphonique.
Concernant les boucles et les conditions, il s'agit en fait de spécifier au programme ce qu'il doit faire, ainsi vous allez pouvoir dire a votre programme "tant qu'il y a des personnes dans le carnet" on affiche leur nom. ou bien "si la demande est ajouter" on fera quelque chose de particulier, en l'occurence appeler la fonction ajouter pour permettre l'ajout de la personne.

Passons à la pratique. Je vous propose de récupérer le fichier source ici.

Récapitulons ce que nous voulons faire : un carnet avec des numéros de téléphone, nous voudrons donc ajouter un numero, effacer un numéro, l'afficher. Et surtout stocker nos informations dans un fichier et pouvoir les lire ultérieurment. En faisant cette démarche de conceptualisation vous avez déja fait 50% du travail puisque vous avez défini la structure du programme, et chacune de ces idées que nous avons énnoncé ci dessous correspondent en fait à la notion de fonction, ainsi vous pouvez en déduire que notre programme aura 5 fonctions.

Rappelez vous, il nous faut faire tout d'abord les bonnes déclarations au début du fichier, voici ce que nous avons :

#!/usr/bin/python
#-*- coding: utf-8 -*-

import sys
import os
fichier = 'fichier_donnee.txt'

Nous déclarons que le programme doit être lancé avec python et avec un encodage utf-8 (par rapport au accent), nous importons sys et os pour pouvoir appeller os.system (qui permettra de nettoyer le terminal) et sys.exit pour sortir du programme. nous déclarons une variable fichier, qui sera le nom du fichier ou nous stockerons les éléments que nous allons saisir. Le fait de placer le nom de la variable tout en haut et en dehors des fonctions permet de définir une variable globale qui sera visible partout, à l'inverse d'une variable locale (déclaré dans une fonction par exemple) qui elle ne sera visible que dans la fonction.

Maintenant prenons le point de départ de notre programme (qui est en fait tout à la fin) :

          if __name__ == "__main__":
os.system('clear')
if os.path.isfile(fichier) == False :
openfile=open(fichier,'w')
openfile.close()
ma_liste_tel = lire_le_fichier()

Premier point nous allons effacer le terminal, pour que cela soit plus propre, pour cela nous appelons la fonction système clear. Puis nous testons l'existence du fichier défini dans la variable fichier. Si il n'existe pas (IF == FALSE) alors nous le créeons avec open. Par contre si il existe alors nous appelons la fonction lire_le_fichier.(nous verrons plus bas comment définir une fonction)

Il est temps de créer notre première boucle. A la ligne 64, vous pouvez voir qu'il y a une while True, ce qui signifie que nous créons une boucle infini, tant que vous ne fermez pas le programme, il continuera à s'exécuter.

Cette boucle consiste a poser toujours la même question: que voulez vous faire ? nous allons donc stocker la variable de retour dans question :
question = raw_input('Que voulez vous faire ? Options : ajouter*nom*tel - effacer nom - afficher nom - sortir > ')

tout ce que voulez allez répondre sera stocké dans question, il ne restera plus qu'à analyser ce que contient question pour effectuer des actions et appeller les bonnes fonctions.

Nous avons 4 actions, la première permettra de marquer ajouter*stephane*235689 (je sépare les éléments * pour pouvoir les stocker et les analyser dans un tableau, cela évite les problèmes lié à l'utilisation d'espaces ou de virgules, .... on a rarement vu un numéro de téléphone avec un *).

Pour tester la variable question nous appelons de nous if, if question == 'sortir': alors nous appelons sys.exit() (notez que pour effectuer une comparaison nous utilisons == et non pas = qui lui affecterait la variable, question vaudrait alors toujours 'sortir')

SINON SI question commence par afficher (elif question.startswith('afficher'): elif veut dire sinon si) alors appelons la fonction affiche_tout(). Le try en début permet de vérifier que tout se passe bien, si il y a une erreur alors c'est ce qui est dans except qui sera appelé. En l'occurence, nous tentons de récupérer un tableau avec split en détectant espaces(ajouter stephane donne un tableau avec deux éléments ajouter et stephane), si il y a une erreur (vous n'avez pas mis de nom) alors except prends le relais et affiche (avec la commande print) qu'il y a une erreur. Nous pouvons alors appeler notre tableau avec aff_nom[1] (comme nous comptons à partir de 0 aff_nom[0] vaut afficher). Il suffit maintenant d'appeler la fonction avec une variable dedans : affiche_numero(aff_nom[1])

Nous faisons pareil avec la fonction effacer et ajouter (qui elle sera découper avec des * pour permettre de taper un numéro de téléphone avec des points des virgules des espaces...) cette derniere appellera une fonction avec deux variables (que nous séparons par des virgules) mais le principe est le même.

Nous avons donc un SI (if) des SINON SI (elif).... et si rien ne se vérifie (cad si vous avez tapez par exemple gbzfzshbfshsf ... ) nous appelons un SINON (else) qui clos la série de test, qui permet d'afficher une phrase qui indique que le programme n'a rien compris : print 'Bravo ! une forte tête ! j'aime ça ! Ce n' est pas une option valable'

Le coeur du programme est crée, il reste a dire au programme ce qu nous allons faire avec nos fonctions. Pour définir une fonction on utilise def le_nom_de_la_fonction(variable1, variable2,....)

Prenons l'appel de fonction affiche_numero(qui): ademettons que vous ayez appellé la fonction comme suis : affiche_numéro('steph') le programme va se rendre au def affiche_numero(qui) et la variable qui prendra alors la valeur de steph. vous pouvez alors utiliser cette variable qui pour lui appliquer un traitement. Notre variable qui est donc stocké, nous la testons. Dans le cas ou le nom est égal à tout alors nous allons lister toutes les entrées définit. Nous appelons un autre type de boucle un FOR, qui reviendrait a dire que tant que des éléments sont fournit alors on recommence. Qui dans notre cas équivaut à "tant que je peut lire mon fichier" je fait quelque chose.

Les fonctions efface_numero() et ajoute_numero() fonctionne sur le même principe, on récupère la variable qui, et on ajoute ou on retire l'entrée. Dans chaque cas nous enregistrons notre fichier, en appelant la fonction ecrire_le_fichier() avec la valeur de la liste ma_liste_tel.

Les fonctions d'écriture dans le fichier sont assez simple. (on ouvre le fichier avec open et tant qu'ils y a des entrées dans notre liste (FOR) alors on écris (write). une fois terminé on ferme proprement le ficheir avec close())

Quand à la fonction de lecture, elle est également facile à comprendre, on ouvre le fichier (on n'oublie pas try pour lever d'éventuelle probleme) avec open, on lit le fichier ligne par ligne (avec un WHILE - qui équivaut a un TANT QUE) et traite la variable ligne.

donnees = ligne[:-1]
On enlève le dernière caractère (qui est un retour à la ligne, on en a pas besoin)

donnees_split = donnees.split('*')
dico[donnees_split[0]]= str(donnees_split[1])

On génére un tableau avec le nom et le tel, on affecte ensutie les variables

ligne = notre_fichier.readline()
on lis la ligne suivante (et on repart dans le while si elle existe, sinon on passe à la suite)

Puis on ferme notre fichier. 92 Lignes de codes plus tard (en comptant les lignes vides c'est dire) vous avez un programme tout à fait fonctionnel et prêt à recevoir vos demandes d'ajout de personne. On peut imaginer augmenter la capacité du programme en ajouter un champs adresse, prénom,... je vous laisse faire, pour voir si vous avez compris.

La prochainne fois nous verrons comment gréffer trés simplement ce que nous venons de créer a une interface graphique.

21/10/2008

[gimp] - Tutorial pour faire un boutton glossy

prev_butt.jpgVous voulez faire un peu de pub pour votre site, et fournir des jolis boutons ?
Heureusement La Linuxerie pense à vous, je vais vous expliquer comment créer un bouton en moins de quelques clic.

Le tutoriel va se passer en 2 parties, la première consistera à créer la trame qui se collera par dessus le bouton (en l'occurence un trait diagonal) et la deuxième sera le bouton en lui même.

Créez tout d'abord une image de 5 pixels par 5 pixels, avec un fond transparent, sélectionnez l'outil crayon avec la plus petit taille, et tracer une diagonale en noir (faites un clic dans le coin inférieur gauche et maintené la touche en SHIFT avant d'aller cliquez dans le coin supérieur droit). Vous avez une belle diagonale noir sur un fond transparent (n'hésitez pas à beaucoup zoomer pour voir ou vous placer vos points):

button1.jpg

Un fois cela fait, sélectionnez votre oeuvre (CTRL+A) et copier la (CTRL+C).

Nous allons maintenant créer le bouton, nous allons le faire d'une taille de 200*20 pixels, créez donc une image de cette taille en fond transparent. Ajoutez un claque (toujours transparents) et utilisez le pot de peinture (MAJ+B) et dans le menu outil cliquez sur Remplissage avec le motif (normalement il est sur "presse papier") cela signifie que vous allez remplir le calque avec une répétition de ce qui est dans le presse papier (en l'occurence notre diagonal) : cliquez n'importe ou dans le calque. Passez le calque en lumière douce. Vous devriez avoir quelque chose comme ceci :

button2.jpg

Nous avons fait le plus dur, reste à remplir l'arrière plan d'un jolie dégradé (touche L) de nombreux choix vous sont proposé par défaut. Une fois cela fait créez un nouveau calque au dessus des deux autres, nous allons maintenant placer le texte. Ecrivez ce que vous voulez, moi j'ai écrit "La Linuxerie"... allez savoir pourquoi. J'ai pris du blanc pour que cela ressorte bien. Mais pour avoir plus d'impact, il nous faut entourer le texte d'une couleur plus sombre. Faites un clic droit sur le calque avec le texte, et cliquez sur alpha vers sélection, votre texte va s'entourer. Nous allons agrandir cela en faisant : Sélection -> Agrandir ... j'ai pris 1 pixel. Nous avons donc maintenant une selection d'un pixel plus grand autour de notre texte. Créez un nouveau calque (toujours transparent) et remplissez le de la couleur souhaitez pour le tour du texte. Une fois cela fait passez ce calque en dessous du texte. Ayant pris du noir, j'ai réduit un peu l'opacité. Cela commence a prendre forme :

button3.jpg

Reste à peaufiner, nous allons rajouter un effet "glossy" par dessus le bouton, pour cela rajoutez un calque au dessus de tout les autres, et sélectionnez l'outil de sélection Elliptique (touche E) et tracer une demie ellipse(en partant au dessus de l'image) dans la partie supérieure, remplissez ce calque de blanc,  et réglez l'opacité à 20%. Dernier raffinement, créez un calque juste au dessus de votre dégradé et prenez la brosse "Sparks" tracez un trait en diagonal selon votre humeur... avec cela nous finalisons notre bouton, mais vous pouvez rajouter votre logo, un icone.... A vous de voir. Voici diverses création pour mon blog, juste en changeant le dégradé.
Voila, voila, une note à double emploi, ditacticielle et auto-promotionelle...

3.png

2.png

1.png

20/10/2008

[vim] - Faire une modification/recherche dans plusieurs fichiers.

Supposons que vous avez un dossier dans lequel vous avez plusieurs fichiers comme ci dessous (la capture d'écran est complétement suréaliste, je vous l'accorde...) :

vim_rec.jpg

Dans chacun des fichiers, on a une expression à changer, une variable par exemple pour les programmeurs, ou le nom d'une personne. Bref vous voulez changer un mot ou autre (avec une expression régulière par exemple) dans tout ces fichiers d'un coup. Et en plus comme on est exigeant on veut faire ça avec Vim (parcequ'on aime vim par exemple)... Aucun problème, la solution tiens en deux lignes :

vim *.txt

Vim ouvre alors toutes les occurences de fichiers concernés (vous pouvez mettre le wildcard sur * si ca vous chante) tapez alors les deux points :

vim_rec2.jpg

:argdo %s/test/retest/g | w

ou le mot test est le mot que vous cherchez et retest le mot à remplacer, on repète la commande dans tout le fichier avec g et on valide l'écriture. Nos fichiers sont maintenant tous modifié.

18/10/2008

[linux] - Comment finaliser une installation lorsque ca gèle?

debian-logo-portrait.jpgAttention cette note décrit un processus de chroot dans un cas très spécifique et  particulier, cela n'est absolument pas à tester dans le cas ou tout se passe bien (d'ailleurs je me demande si c'est à faire tout court)!

Hier j'ai installé une Debian lenny (toujours en beta, car je vous rappelle que la version définitive sortira finalement en Juin 2009)... donc je faisais les manipulations à mes propres risques. Je l'avais déjà  installé sur une autre machine et tout s'étais très bien passé. Mais sur ce PC je ne sais pas pourquoi, cela a bloqué sur Gconf2 (je pense que la faible mémoire du PC est en cause).... au bout d'une demie-heure je me suis dit que quelque chose était anormal.

J'ai donc switché vers un autre terminal avec CTRL+ALT+F2 et un coup de ps -ef m'a bien confirmé que gconf2 était toujours en train de s'installer mais vu le temps passé  c'était étonnant,le problème est que si je rebootait je perdais tout ce que je venais de faire (quasiment une heure tout de même) et j'aurais eu tout à refaire (vu que la configuration de grub se fait à la fin).

J'ai donc tué le processus d'installation. Et j'ai fait un chroot /target (répertoire d'installation pour une debian). me voila logué en shell sur mon système a moitié installé, j'ai supprimé gconf2 (apt-get remove gconf2), installé grub  (apt-get install grub) (c'était l'urgence pour pouvoir booter sur le système)... un coup de exit et voila je pouvais rebooter en paix et retenter mon install de gconf2 qui est passé cette fois, et finaliser mon installation (apt-get dist-upgrade) mais au moins je n'ai pas eu à refaire tout le processus d'installation, ni à retélécharger tout les paquets.

Je venais de gagner un bon paquet de temps car je n'ai pas eu à reprendre toute l'install du début. Depuis tout va bien...Lenny s'annonce bien.
C'est là ou on se dit que Gnu/Linux tout de même c'est rudement bien fait.... c'était ma petite  histoire d'avant week-end.

17/10/2008

[gnome] - Copier et Déplacer vers... ajouter des options à nautilus

nautilus_scripts.pngLorsque j'utilisais KDE, une option que j'aimais bien était, lorsque l'on faisait un clic droit sur un fichier ou un dossier on avait une option Copier vers ou Coller vers.... c'était pratique pour déplacer rapidement un ou des fichiers (voir des dossiers). Alors vous me connaissez maintenant, lorsqu'il y a quelque chose qui me manque je prends mon Python sous le bras, mon gedit de l'autre et en avant....
J'ai donc installé le paquet python-nautilus, et j''ai commencé à chercher comment on écrivait des scripts pour ajouter des entrées au menu contextuel. En fait c'est vraiment tout simple. Une fois votre code écrit, il suffit de placer les fichiers (aprés avoir vérifié qu'il ai bien les propiété d'exécution avec un chmod +x) dans le dossier .nautilus/python-extensions (il faut le créer si il n'existe pas). On redémarre nautilus avec un killall nautilus. Et voila deux nouvelles options apparaissent dans votre menu contextuel : Déplacer vers... et Copier vers.... choisissez vos fichiers/dossiers, un clic sur copier ou déplacer et il vous sera demandé ou vous souhaitez placer les éléments.
Tout les fichiers sont ici
(n'oubliez pas d'installer python-nautilus et zenity (normalement c'est installé par défaut me semble t'il))