09. mars 2012 · Commentaires fermés · Catégories: Developpement

Pour continuer dans la série des développements en javascript et <canvas>, J’ai réalisé une animation de particules.

Pour cela je crée une classe « particle », avec les propriétés et méthodes suivantes :

  • x, y : position
  • vx, vy : vecteur vitesse
  • lifetime, lifespeed : age et increment d’age
  • create : initialise la particule avec une position, une vitesse aléatoire, une durée de vie aléatoire
  • update : met à jour sa position, sa vitesse, son age
  • draw : dessine la particule sur le canvas

Calcul de la trajectoire (rappel de physique) :

  • La position est déterminée en fonction de la vitesse :
    Position = Position + Vecteur vitesse
  • La vitesse est déterminée en fonction de l’accélération :
    Vecteur vitesse = Vecteur vitesse + vecteur Accélération
  • Ici l’accélération ne dépend que de la force gravitationelle.
    Accélération = Gravité

On obtient alors une trajectoire parabolique.

Pour déterminer la couleur de la particule, je crée une classe « palette » contenant un dégradé de 256 couleurs indexées. Lorsque je place un pixel sur le canvas, je vais rechercher la couleur en fonction de l’age de la particule. A chaque mise à jour l’age est incrémenté. Au delà de l’age limite de 256, la particule est recyclée.

L’effet de flammes est réalisé grâce à l’association de la recopie d’image et l’utilisation de l’alpha : Je recopie le contenu du premier canvas vers le deuxième, puis je fixe son alpha à 0.5, et enfin je recopie le contenu du deuxième canvas vers le premier 4 fois, mais avec un décalage, ce qui va générer l’effet voulu.
Plus »

05. mars 2012 · Commentaires fermés · Catégories: Developpement

Ce script marque le début d’une longue série de morceaux de code en tous genres que je développe quand je trouve un peu de temps

Voici pour commencer un exemple de rotozoom que j’ai développé en javascript à l’aide de la balise <canvas>. L’image de base est un fichier PNG de 256×256 pixels ce qui m’autorise des optimisations assez poussées. (ET logiques, décalages de bits).

Le principe est relativement simple :

Je dispose d’un canvas source et d’un canvas cible. Dans le canvas source je charge l’image. Dans le canvas cible, je parcours tous les pixels en X et Y, et j’applique sur X et Y une transformation (ici rotation et zoom). J’obtiens donc X’ et Y’ :

X' = (  COS(ANGLE) * X + SIN(ANGLE) * Y ) * ZOOM
Y' = ( -SIN(ANGLE) * X + COS(ANGLE) * Y ) * ZOOM

Il ne me reste plus qu’à aller chercher la valeur du pixel dans le canvas source et de l’appliquer sur le canvas cible :

pixel cible[X][Y] = pixel source[X'][Y']

Plus »

03. mars 2012 · Commentaires fermés · Catégories: Logiciels

J’ai réalisé récemment une configuration générique pour MySQL 5.5 sous environnement Debian, et je vous la fait partager.

Elle se compose d’un fichier principal my.cnf contenant tous les paramètres génériques, et d’un fichier local.cnf contenant la configuration spécifique au serveur. Tous les paramètres spécifiés dans local.cnf écraseront ceux du fichier my.cnf.

L’intérêt de séparer la configuration en deux fichiers distincts est d’avoir des fichiers plus lisibles et de faciliter leur déploiement sur des environnements complexes.

J’ai également tenu à commenter chaque paramètre pour expliquer son incidence.

J’espère que cela vous aidera, et j’attends vos commentaires !
Plus »

29. février 2012 · Commentaires fermés · Catégories: Divers

20120229-084014.jpg
Visiblement la SNCF utilise CentOS pour ses panneaux d’affichage publicitairs.

25. janvier 2012 · Commentaires fermés · Catégories: Divers

20120125-204233.jpg

20120125-204248.jpg

20120125-204300.jpg

23. janvier 2012 · Commentaires fermés · Catégories: Logiciels

Si vous utilisez l’utilitaire GNU Screen et que vous recherchez un fichier de configuration déja tout fait, voici le mien :

# Auto detach screen upon hangup insteed of killing it
autodetach on
 
# Scrollback buffer
defscrollback 10000
 
# Do not display startup message
startup_message off
 
# Display the messages for 2 seconds
msgwait 2
 
# Enable the visual bell
vbell on
vbell_msg "[[[ BELL ]]]"
 
# Disallow dangerous keys
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
 
# Rebind some keys
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history
 
# CTRL+SPACE : display the windows list
bindkey "^@" windowlist -b
 
# CTRL+UP : move to the previous window when split on
bindkey "^[[1;5A" focus up
 
# CTRL+DOWN : move to the next window when split on
bindkey "^[[1;5B" focus down
 
# CTRL+RIGHT : change to the next screen
bindkey "^[[1;5C" next
 
# CTRL+LEFT : change to the previous screen
bindkey "^[[1;5D" prev
 
# CTRL+PAGEDOWN : resize the current window when split on
bindkey "^[[5;5~" resize -1
 
# CTRL+PAGEUP : resize the current window when split on
bindkey "^[[6;5~" resize +1
 
# Caption
caption string "%{= bY}[%n %t]"
 
# Status line
hardstatus alwayslastline "%{= by}[%{Y}${USER}@%H%{y}]%{w}[%= %{w}%?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{R})%{w}%?%+Lw%?%?%= %{w}]%{c}[%{C}%D%d/%m %c%{c}]"
 
# Highlighting for text marking and messages
sorendition "Yb"
 
# Default screens
screen -t SHELL 0 $SHELL
screen -t FILES 1 /usr/bin/mc
screen -t EDITOR 2 /usr/bin/editor
#screen -t TOP 3 /usr/bin/htop
#screen -t MAIL 4 /usr/bin/mutt
#screen -t IRC 5 /usr/bin/irssi
select SHELL

J’ai ajouté des combinaisons de touches pour pouvoir changer plus facilement d’écran :

  • CTRL+ESPACE : Afficher la liste des fenêtres
  • CTRL+GAUCHE : Ecran précédent
  • CTRL+DROITE : Ecran suivant
  • CTRL+HAUT : Se rendre sur la fenêtre précédente en mode split
  • CTRL+BAS : Se rendre sur la fenêtre suivante en mode split
  • CTRL+PAGE PRECEDENTE : Réduire la fenêtre actuelle en mode split
  • CTRL+PAGE SUIVANTE : Agrandir la fenêtre actuelle en mode split
12. janvier 2012 · Commentaires fermés · Catégories: Logiciels

Si comme moi, vous devez prendre souvent le contrôle de votre ordinateur distant via SSH, et que vous souhaitez avoir accès aux applications intranet de votre entreprise, il est possible de créer un proxy SOCKS.

En saisissant la commande :

ssh -D 9999 username@ip-address-of-ssh-server

Où 9999 représente le port de votre proxy. Vous pouvez spécifier n’importe quel port non utilisé sur votre machine, de préférence > 1024.

Par ailleurs, vous devrez également modifier les paramètres réseau de votre navigateur.

Par exemple sous Firefox :

  • se rendre dans Edition -> Préférences -> Avancé -> Réseau.
  • Cliquer sur « Paramètres ».
  • Choisir « Configuration manuelle du proxy ».
  • Saisir dans le champ « Hôte SOCKS » : 127.0.0.1:9999 (ou le port que vous spécifié).
  • Cliquer sur « OK » pour valider les changements.

Cela vous permettra également, si votre employeur utilise un proxy filtrant mais autorise malgré tout l’accès SSH, à vous connecter à n’importe quel site, sous condition que vous possédiez une machine distante accessible en SSH.

07. janvier 2012 · Commentaires fermés · Catégories: Logiciels

Récemment j’ai recherché comment faire pour que le client IRC XChat soit minimisé dans le system tray lorsque l’on referme la fenètre principale.

En effet, par défaut lorsque l’on clique sur « X », XChat termine immédiatement, ce qui peut être désagréable.

La solution consiste alors à taper la commande :

/set gui_tray_flags 1
07. janvier 2012 · Commentaires fermés · Catégories: Divers

Après avoir créé plusieurs sites internet non achevés, je décide de me reprendre en main en créant ce nouveau blog.

J’espère que vous serez nombreux à me visiter !