Petit ajout dans mon fichier .vimrc
” Highlight To do list with green background
highlight Todo ctermfg=black ctermbg=green guifg=black guibg=green
highlight Notice ctermfg=white ctermbg=blue guifg=white guibg=blue
highlight Fixme ctermfg=white ctermbg=red guifg=white guibg=red
” Match todolist, notice, fixme
:call matchadd(‘Todo’,’[T|t][O|o][D|d][O|o]’)
:call matchadd(‘Todo’,’[T|t][O|o] [D|d][O|o]’)
:call matchadd(‘Notice’,’[N|n][O|o][T|t][I|i][C|c][E|e]’)
:call matchadd(‘Notice’,’[N|n][O|o][T|t][E|e]’)
:call matchadd(‘Fixme’,’[F|f][I|i][X|x][M|m][E|e]’)
:call matchadd(‘Fixme’,’[F|f][I|i][X|x] [M|m][E|e]’)
Lorsque j’ai voulu “réattacher” mon “Screen” j’ai eu le message suivant :
There is a screen on:
1652.pts-8.stream62 (06.12.2011 02:29:16) (Attached)
Habituellement je détache mon “Screen” mais cette fois j’ai oublié.
Pour “détacher” / “réattacher” mon “Screen” j’ai du faire la commande suivante :
$ screen -dRR
Je note car c’est toujours bon à savoir :)
Quand j’utilise git avec des branches il m’arrive d’avoir des fichiers sur une branche qui sont pas a commiter dans l’immédiat.
J’utilise donc git stash, voyons voir comment l’utiliser simplement.
On regarde l’état du status et des branches : (git status / git branch)
$ git st
# On branch master
nothing to commit (working directory clean)
$ git br
* master
Je travail sur la branche master et je n’ai pas d’autre branche. Je vais donc faire une branche API pour mon projet.
$ git br API
$ git br
API
* master
Maintenant je vais changer de branche (git checkout) pour être sur ma branche API et modifier les fichiers sur cette branche.
$ git co API
Switched to branch ‘API’
$ git br
* API
master
Ok maintenant je vais modifier un mon fichier manage.py sur ma branche API.
$ git st
# On branch API
# Changes not staged for commit:
# (use “git add <file>…” to update what will be committed)
# (use “git checkout — <file>…” to discard changes in working directory)
#
# modified: manage.py
#
no changes added to commit (use “git add” and/or “git commit -a”)
Si je veux revenir sur mon master, sans avoir la modification du manage.py je vais devoir utiliser git stash (qui sauvegardera mes modifications du manage.py)
$ git sta
Saved working directory and index state WIP on API: 8b6342d Fix register.py
HEAD is now at 8b6342d Fix register.py
$ git st
# On branch API
nothing to commit (working directory clean)
Maintenant que notre branche est propre on peut changer de branche revenir sur le master par exemple.
$ git co master
Switched to branch ‘master’
$ git st
# On branch master
nothing to commit (working directory clean)
On peut donc travailler tranquillement sur la branche master. Puis revenir sur notre branche API, lister les stash (git stash list) récupérer les modifications précédentes (git stash pop).
$ git co API
Switched to branch ‘API’
$ git stast
stash@{0}: WIP on API: 8b6342d Fix register.py
$ git stapp
# On branch API
# Changes not staged for commit:
# (use “git add <file>…” to update what will be committed)
# (use “git checkout — <file>…” to discard changes in working directory)
#
# modified: manage.py
#
no changes added to commit (use “git add” and/or “git commit -a”)
Dropped refs/stash@{0} (533906a52b923a8960fa0f6fdf17a288c94f233a)
$ git st
# On branch API
# Changes not staged for commit:
# (use “git add <file>…” to update what will be committed)
# (use “git checkout — <file>…” to discard changes in working directory)
#
# modified: manage.py
#
no changes added to commit (use “git add” and/or “git commit -a”)
Maintenant je peux continuer les modifications sur ma branche API réutilise git stash si besoin ou les commiter, merger ma branche…
/!\ Attention les commandes git st, git co, git br, git sta, git stapp sont des alias qui se trouvent dans mon fichier .gitconfig (voir les billets précédents) /!\
git stash (sauve le travail dans un stash) mon alias = git sta
git stash list (liste les stash) mon alias = git stast (ou git stalist)
git stash pop (récupére le dernier stash enregistré stash@{0}, l’applique et le supprime de la liste) mon alias = git stapp
git stash apply (récupére le dernier stash enregistré stash@{0} et l’applique)
Et pour rien n’oublier (RTFM) : man git stash
Lorsque je fais mes backups j’essaye d’avoir des noms de fichiers correct.
Sous linux pour renomer plusieurs fichiers avec bash j’utilise “rename”.
Exemple je veux supprimer tous les espaces d’un fichier :
rename "s/ *//g" *.*
Ou renomer tous mes fichiers .WAV en .wav etc…
rename "s/\.WAV/\.wav/g" *.WAV
A vous de modifier l’expression régulière !
Ajout du pull, push, diff et surtout stash ;)
[user]
name = François LASSERRE
email = mon@email.fr
[diff]
tool = vimdiff
[color]
branch = auto
diff = auto
status = auto
interactive = auto
ui = true
[alias]
br = branch
ci = commit -a
co = checkout
sh = show --color-words
st = status
di = diff
ph = push
pl = pull
sta = stash
stalist = stash list
stast = stash list
stapp = stash pop
starm = stash drop
last = cat-file commit HEAD
graph = log --graph --decorate
tree = log --graph --oneline --decorate
pom = push origin master
logs = log --stat
[core]
excludesfile = ~/.gitignore
editor = vim
filemode = false
[merge]
tool = vimdiff
Fichier .gitconfig
[user]
name = François LASSERRE
email = mon@email.fr
[diff]
tool = vimdiff
[color]
branch = auto
diff = auto
status = auto
interactive = auto
ui = true
[alias]
br = branch
ci = commit -a
co = checkout
sh = show --color-words
st = status
last = cat-file commit HEAD
tree = log --graph --oneline --decorate
graph = log --graph --decorate
pom = push origin master
[core]
excludesfile = ~/.gitignore
editor = vim
[merge]
tool = vimdiff
Fichier .gitignore
# Ignore files from git
# ._ files (Mac Os X)
._*
# .DS_STORE (Mac Os X)
.DS_STORE
# .swp (Vim)
*.swp
On commence par ouvrir un terminal puis on tape :
$ ssh-keygen -t dsa -b 1024
Enter file in which to save the key (/Users/choiz/.ssh/id_dsa):
En général je garde le fichier id_rsa donc je tape “enter” sinon vous pouvez spécifier un autre chemin ainsi qu’un autre fichier.
Enter passphrase (empty for no passphrase):
Ici on tape un mot de passe si on en veut un lors de la connexion aux différents hosts. En général j’en défini un.
Pour finir on copie la clé sur le serveur soit via scp :
scp ~/.ssh/id_dsa.pub user@ip:~/.ssh/authorized_keys/
ou via ssh-copy-id :
ssh-copy-id -i ~/.ssh/id_dsa.pub user@ip
Lors de l’utilisation de div et d’iFrame sous Firefox un bug étrange apparait.
Quand une iFrame est affiché dans un div qui a la propriété css
display:none;
Lors de l’affichage de ce div en remplaçant le display:none par display:block le contenu de l’iframe reste vide (blanche). Pour résoudre ce probleme il faut modifier l’attribut src de l’iframe lorsque l’on affiche le div en display:block.
J’utilise maintenant php-gettext pour mes traductions. C’est plus facile en utilisant des outils tel que pootle ou poedit.
Pour utiliser gettext sur votre site en php il faut télécharger le package php-gettext ainsi que d’autres outils tel que xgettext ou msgfmt :
# apt-get install php-gettext
# apt-get install xgettext
# apt-get install msgfmt
Ensuite il faut modifier le fichier /etc/locale.gen et enlever les commentaires devant les langues qui vont sont à traduire par exemple : Allemand, Anglais, Espagnol, Français & Suédois :
de_DE.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
es_ES.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8
sv_SE.UTF-8 UTF-8
Puis regénérer les locales :
# locale-gen
Ensuite il faut définir votre chemin pour les traductions par exemple :
lang/fr_FR/LC_ALL/domaine.mo
Puis dans votre fichier php de configuration :
<?php
// configuration de la langue
$lang_path = “./lang”; // Chemin des fichiers le langue
$lang = ‘fr_FR’; // Langue a afficher
$lang_encode = “UTF-8”; // Encodage du fichier
$lang_LC = “LC_ALL”; // LC_MESSAGE etc…
$lang_file = “domaine”; // Nom du fichier de langue
putenv(“LANG=”.$lang);
setlocale($lang_LC, $lang.”.”.$lang_encode);
bindtextdomain($lang_file,$lang_path);
bindtextdomain_codeset($lang_file,$lang_encode);
textdomain($lang_path);
?>
Puis faites le test en affichant dans un fichier php le texte “hello”
<?php
// on inclus la config…
include_once(‘config.php’);
echo _(‘hello’);
?>
Pour générer un fichier .mo a partir d’un fichier .po :
msgfmt domaine.po -o domaine.mo
Pour générer un fichier .po a partir de fichier php avec du gettext, faire un fichier texte avec tous vos fichiers php ou on doit récupérer le gettext.
Exemple listing_gettext.txt tel que :
index.php
contact.php
etc…
Ensuite il faut faire la commande suivante pour générer le fichier domaine.po dans le dossier lang/ depuis notre fichier texte avec les php :
xgettext -d domaine -p lang/ -k_ —from-code=UTF-8 -f listing_gettext.txt
Pour finir voilà le path des fichiers .po et .mo dans mon application web :
lang/fr_FR/LC_ALL/domaine.po
lang/fr_FR/LC_ALL/domaine.mo
lang/en_GB/LC_ALL/domaine.po
lang/en_GB/LC_ALL/domaine.mo
…
Depuis le temps que je bosse avec un clavier Apple j’ai mes doigts on eu le temps de s’habituer au mapage du clavier. Il y a beaucoup de différences entre un clavier AZERTY de PC et un clavier AZERTY de Mac.
Les touches : @ # ~ | (pipe) = + - _ ! ( ) { } [ ] sont disposées à des endroits complétement différents.
Pour modifier la configuration faire en console :
dpkg-reconfigure keyboard-console
Select keymap from arch list
azerty
French
Apple USB
dpkg-reconfigure keyboard-configuration
model: Apple
layout: France - Macintosh
Key for AltGr: No AltGr Key
Compose key: Right Alt (AltGr)
Use Control+Alt+Backspace to terminate the X server? no
J’ai choisi un clavier Apple, Français Mac, sans touche AltGr, avec comme touche de fonctionnalité secondaire “Alt droit”. Malheureusement je n’ai pas réussi a mapper l’Alt de gauche pour avoir la même fonction qu’à droite…
Et ensuite j’ai indiqué que je ne voulais pas pouvoir quitter le server X avec la combinaison de touche Control+Alt+Backspace.
Si ceci ne fonctionne pas il faut se rendre dans la configuration du clavier de votre gestionnaire de fenêtre (xfce: dans mon cas). Puis désactiver le layout par defaut du système.
