Latin1 vers UTF-8

Posté le mer. 29 mai 2013 • Tags : encoding, mysql, mysqldump, vim, sql

Voilà une solution simple pour convertir une base de donnée en Latin1 vers de l'UTF-8.

Utiliser mysqldump avec les options suivantes :

--default-character-set=utf8

et :

--skip-set-charset

Voilà la commande complète :

mysqldump -u user -p base table --default-character-set=utf8 --skip-set-charset > base_table.sql

Ensuite en utilisant vim je fais un rechercher / remplacer des différents latin1 en utf-8. :

vim dump_base_table.sql

Et en mode commande :

:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/

et :

:%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/

on enregistre et quitte le fichier avec :wq (ou sinon avec ZZ).

Maintenant on réimporte la table grâce à mysql :

mysql -u user -p base < dump_base_table.sql

il reste a vérifier si les champs sont bien en UTF-8.

Ici une table « table » avec une colonne « col » on ajoute un caractère accentué. :

INSERT INTO table VALUES("é");

Maintenant on regarde la taille de la colonne :

SELECT `col`, length(`col`) FROM `table`;

Si la taille = 1 le caractère est enregistré en latin1… si c'est 2 c'est bien de l'UTF-8 car sauvé sur 2 octets.

Merci à Mathieu Agopian pour le dernier tips.


TypeMatrix sous Mac Os X

Posté le lun. 04 mars 2013 • Tags : keyboard, macos

J'ai chez moi comme au travail un clavier TypeMatrix 2030 USB.

Sur mac il faut télécharger le pilote, puis copier le fichier fr-dvorak-bepo.bundle dans le dossier /Bibliothèque/Keyboard Layouts/

Note : si vous installez le pilote dans le dossier de votre utilisateur (~/Bibliothèque/Keyboard Layouts/) vous ne pourrez pas utiliser le mappage à l'ouverture de session…

Pour utiliser les touches couper, copier,coller, j'utilise keyremap4macbook (qui fonctionne aussi sur iMac etc…). L'installer puis redémarrer. Dans les préférences dans l'onglet "change key" recherchez "Use PC Style Copy/Paste #3bis" et sélectionnez l'option proposée.

Vous pouvez maintenant utiliser votre TypeMatrix en Bépo sur Mac Os X avec la prise en charge des touches couper, copier et coller.


Logiciels de gestion de versions (Svn, Git, Mercurial)

Posté le mar. 12 février 2013 • Tags : git, svn

J'ai différents projet sous svn, git et mercurial. J'ai pour but de tout migrer sur git car disponible sur github ainsi que sur bitbucket.

J'ai trouvé un trés bon tutoriel pour migrer un projet svn à git.

Egalement un autre tutoriel en anglais pour passer de mercurial à git.


Bépo 11ème jour !

Posté le jeu. 27 décembre 2012 • Tags : bépo, keyboard

Depuis maintenant 11 jours je me suis mis au bépo. J'ai gardé mes différents résultats, ce qui vas me permettre de faire une courbe de progression de mon apprentissage.

Sachant qu'au second jour j'arrivais à taper environ 10,2 mots par minute, aujourd'hui je suis à 24,4 mots par minute…

J'ai commandé deux claviers ergonomiques typematrix, sans marquage sur les touches ainsi que 2 skins : un en azerty et un en bépo.

Pour info je m'entraine généralement 2 fois par jour quand j'ai le temps environ 1/2 heure. Je m'intéresse pas mal au sujet et je vous recommande de lire le dvzine en Français qui est fascinant.


Faire un ssh-copy-id sur Mac OS X

Posté le dim. 30 septembre 2012 • Tags : ssh, key, osx

Si vous avez tenté d’utiliser la commande ssh-copy-id sur Mac OS X, vous avez dû vous rendre compte que, même si openssh est installé nativement, cette commande n’est pas disponible.

Cette commande n'est pas disponible par defaut sur Mac OS X. Mais on peut la rendre disponible facilement en quelques étapes. Créer un fichier "ssh-copy-id" dans le dossier "/usr/bin/" avec ce contenu :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh
# Shell script to install your public key on a remote machine
# Takes the remote machine name as an argument.
# Obviously, the remote machine must accept password authentication,
# or one of the other keys in your ssh-agent, for this to work.

ID_FILE="${HOME}/.ssh/id_rsa.pub"

if [ "-i" = "$1" ]; then
  shift
  # check if we have 2 parameters left, if so the first is the new ID file
  if [ -n "$2" ]; then
    if expr "$1" : ".*\.pub" > /dev/null ; then
      ID_FILE="$1"
    else
      ID_FILE="$1.pub"
    fi
    shift         # and this should leave $1 as the target name
  fi
else
  if [ x$SSH_AUTH_SOCK != x ] ; then
    GET_ID="$GET_ID ssh-add -L"
  fi
fi

if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then
  GET_ID="cat ${ID_FILE}"
fi

if [ -z "`eval $GET_ID`" ]; then
  echo "$0: ERROR: No identities found" >&2
  exit 1
fi

if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
  echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2
  exit 1
fi

{ eval "$GET_ID" ; } | ssh $1 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1

cat <<EOF
Now try logging into the machine, with "ssh '$1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

EOF

Il ne reste qu'a donner les droits au fichier :

chmod 755 /usr/bin/ssh-copy-id

Vous pouvez maintenant copier votre clé ssh sur un serveur distant en tapant :

ssh-copy-id -i id_rsa.pub user@machine.distante

Ma configuration iTerm2

Posté le sam. 29 septembre 2012 • Tags : osx

Depuis quelques jours j'utilise iTerm2 et je trouve ce terminal sous Mac Os X vraiment au top !

J'ai un clavier Apple Usb avec le pavé numérique il faut donc modifier les préférences d'iTerm2.

iTerm > Préférences (ou ⌘ ,) puis dans Profiles > Keys et en bas "Load Preset..." et choisir "xterm with Numeric Keypad". Ce n'est pas tout malheureusement.

La touche "enter" du pavé numérique ne fonctionne pas il faut donc cliquer sur "+" et dans Keyboard Shortcut: appuyer sur la touche et "↩" doit apparaitre. Dans Action: choisir "Send Hex Code" et taper "0xd".

J'ai également ajouter 2 raccourcis bien pratiques :

  • "alt et fleche de gauche" soit "⌥←" avec le code "[H" permet de revenir au debut de la ligne de commande que l'on tape (pratique si on oublie un argument).
  • "alt et fleche de droite" soit "⌥→" avec le code "[F" pour aller à la fin de la ligne.

Mon fichier .gitignore

Posté le lun. 13 août 2012 • Tags : git, config, file

Voilà mon petit fichier .gitignore :

# Ignore files from git

# ._ files (Mac Os X)
._*

# .DS_STORE (Mac Os X)
.DS_STORE

# .swp (Vim)
*.swp

Voir le contenu d'un fichier dans un stash précis (git)

Posté le ven. 06 juillet 2012 • Tags : git

Pour lister les stash :

git stash list

stash@{0}: WIP on BranchName: 5d8a556 Edit file.js
stash@{1}: WIP on BranchName: 66dfe78 Edit file.css
…
stash@{5}: WIP on BranchName: 3bb67ff Add file.css file.js

Pour voir le contenu d'un stash :

git stash show

stash@{0} chemin/vers/mon/fichier.js | 199 ++++++++++++++++++++++++++--------
chemin/vers/mon/autre/fichier.js | 114 ++++++++++++++------

Pour voir le contenu de "chemin/vers/mon/fichier.js" qui est dans le stash{0} :

git show stash@{0}:chemin/vers/mon/fichier.js

Ajout dans mon .vimrc de matchadd() & highlight

Posté le ven. 27 avril 2012 • Tags : vim, config, file

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]')

Reprendre la main sur un Screen pas "detached"

Posté le mer. 18 avril 2012 • Tags : linux

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 :)