spirale

1 février 2012 | graphisme, programmation | 0 commentaire

Voici une portion de code processing (v1.5 et/ou v2) que l’on retrouve dans ma carte de vœux 2012, une étape nécessaire avant l’assemblage de « mes briques de code ».
Deux notions de maths sont utiles, le calcul de distances entre deux points et l’équation paramétrique d’un cercle mais pas besoin de comprendre rigoureusement pour s’amuser avec ces formules :)

float x, y; //position du point
float a; // une sorte de rayon
int tx, ty; // target du point

void setup() {
  size(640, 360);
  background(250);
  smooth();
  frameRate(500);
  x=400;
  y=200;
  tx=320;
  ty=180;

  strokeWeight(2);
  a=sqrt(sq(x-tx)+sq(y-ty)); // distance entre deux points (pythagore)
}

void draw() 
{
  fill(0, 10); //effet trace (motion trail)
  noStroke();
  rect(0, 0, 640, 360);
  stroke(255);
  point(x, y);

  // calcul de la position
  float angle=radians(frameCount*4); // à chaque image on bouge de 4°
  if (a>1) {
    x=cos(angle)*a+tx; // équation d'un cercle de rayon a et centre tx
    y=sin(angle)*a+ty; // 
    a=a-0.05; // réduction du rayon
  } else {
    x=tx;
    y=ty;
  }
}

processing #9 : cadeau !

27 septembre 2011 | graphisme | 0 commentaire

Vous aimez les gif animés ?
Aujourd’hui, voici une petite application (à télécharger pour Mac en bas de cette article) pour transformer votre webcam en machine à gif, le tout en Processing !
Mode d’emploi : clic gauche pour ajouter une image, clic droit pour enregistrer, le fichier est créé dans le répertoire de l’application avec comme nom « l’heure » .gif, et on peut en refaire un en cliquant de nouveau.

Si vous voulez l’améliorer, il faut installer cette librairie dans votre Processing.

Les sources sont livrées dans le zip.

import processing.video.*;
import gifAnimation.*;

Capture myCapture;
GifMaker gifExport;
boolean ready;
String name;
Gif last;

void setup() {
  ready=true;
  background(0);
  size(320, 240);
  frameRate(25);
  myCapture = new Capture(this, 320, 240, 30);
  bw_start();
}

void bw_start() {
  int s = second(); 
  int m = minute(); 
  int h = hour();  
  name = nf(h, 2)+"_"+nf(m, 2)+"_"+nf(s, 2)+".gif";
  gifExport = new GifMaker(this, name, 0);
  gifExport.setRepeat(0);
}

void captureEvent(Capture myCapture) {
  myCapture.read();
}

void draw() {
  if (ready) {
    image(myCapture, 0, 0);
  }
  else {
    PFont geneva = createFont("geneva", 9, false);
    textFont(geneva, 9);
    image(last, 0, 0);
    text("Gif My Cam!\n-- result --\nclick to create again", 20, 20);
  }
}

void mousePressed() {
  if (ready) {
    if (mouseButton== LEFT) { 
      gifExport.setSize(320, 240);
      gifExport.setDelay(70);
      gifExport.addFrame();
    }
    if (mouseButton== RIGHT) { 
      ready=false;
      gifExport.finish();
      last = new Gif(this, name);
      last.play();
    }
  }
  else {
    ready=true; 
    bw_start();
  }
}

gif_my_cam.zip

agfa snapscan 1212u sous mac os x

3 mars 2011 | vrac | 11 commentaires


Agfa a arrêté le support de ces scanners depuis plusieurs années et avec Mac OS 10.6, mon 1212u affiche une erreur hasardeuse (je doute que ça soit juste une histoire de profil colorimétrique).
Bizarrement, je suis tombé sur un bon article sur comment ça marche.
Alors je le copie/colle (c’est mal) mais j’ajoute le .bin (c’est bien).

N’étant pas bidouilleur (c’est pour ça que j’ai un mac, hein) j’ai bien ramé pour faire fonctionner mon agfa SnapScan 1212U avec MacOS 10.6
Après synthèse entre ce qui s’est dit sur ce forum et d’autres, ainsi que sur le site http://www.sane-project.org/ (en anglais et bien technique pour moi), voici un petit tuto.
J’ai pas mal procédé par tâtonnement et sans toujours bien comprendre ce que je faisais, donc si un contributeur plus chevronné voit des étapes superflues ou autres simplifications à apporter, à éditer!

I. Préparation
1) télécharger les 4 fichiers binary nécessaires à la bonne mise en œuvre de Twain Sane.
http://www.ellert.se/twain-sane/
libusb
sane-backends
sane-preference-pane
twain-sane-interface

[ceux pour mac os x 10.6]

2) dégoter le fichier SnapScan 1212U_2.bin
pour ma part j’ai téléchargé ScanWise pour Windows sur http://static.agfa.com/digicam_scanner_drivers/scanner/snapscan_1212u/index.html, je l’ai installé sous Windows, et j’ai trouvé SnapScan 1212U_2.bin là :
C:\Program Files\Agfa\ScanWise 2_00\

J’ai cherché sur le net et puis j’ai lu qu’il était sur le cd d’installation…
setup/Application Support/Agfa/ScanWise/SnapScanFirmware
SnapScanFirmWare

Il faudra juste renommer u97v132.bin en SnapScan1212U_2.bin (pour la suite)

II. Installation
1) installer dans le bon ordre (1-libusb, 2-sane-backends, 3-sane-preference-pane et 4-twain-sane-interface)
[on décompresse et on lance les .pkg]
2) on retrouve alors un « preference panel » dans Préférences Système appelé « Sane »
Dans la liste des scanners, trouver snapscan et cliquer sur le bouton dans la colone Firmware.
[les boutons sont d’affreuses billes « bouton radio » <input type= »radio »>]
Une fenêtre s’ouvre, y glisser SnapScan1212U_2.bin, refermer la fenêtre

3) cliquer sur le bouton dans la colonne Régler. Dans la fenêtre qui s’ouvre, remplacer la ligne firmware /usr/local/share/sane/snapscan/myscanner_firmware.bin par
firmware /usr/local/share/sane/snapscan/SnapScan1212U_2.bin
sous la ligne # /dev/usb/scanner0 bus=usb, [ajouter]
/dev/usb/scanner0 bus=usb

4) fermer Préférences Système et redémarrer

III. Utilisation avec Transfert d’images
1) brancher/allumer le scanner et ouvrir l’application Transfert d’images
Dans la colonne de gauche, dans APPAREILS, sélectionner SANE usb

2) cliquer sur ‘afficher les détails’ pour accéder aux paramètres de réglages puis sur ‘numériser’

et voilà! ça fonctionne aussi à partir de GraphicConverter et Aperçu

Quelques remarques :
– l’icône de Sane est hideuse
– vive le libre (le drivers marche aussi pour linux)
– merci ctropcool

comment bloquer un visiteur sur votre site

26 février 2010 | programmation, tutorials | 0 commentaire

Pré-requis, sur internet ou dans un réseau chaque machine possède une ip, une sorte de plaque d’immatriculation de votre connexion qui ressemble à ceci 234.232.264.129 ; quatre chiffres entre 0 et 255.
La votre actuellement est http://www.mon-ip.com/ (en rouge sur ce site).

Si je connais votre IP et que je n’ai pas envi de vous sur mon site, je peux vous bannir en créant un fichier .htaccess à la racine de mon site, avec ceci dedans — le nom commence par un point ce qui complique un peu l’opération…
On fera un htaccess.txt puis on le renommera avec le logiciel de FTP .htacces [facile ?].

RewriteEngine on 
RewriteCond %{REMOTE_ADDR} ^90.xxx.xxx.xxx
RewriteRule .*    http://www.perdu.com/

Ici je bloque 90.xxx.xxx.xxx à vous de mettre l’IP à bloquer 90.123.123.123 par exemple ou 123.90.123.123.

Bonus, si vous voulez bloquer un ami crétin boulet…
Avec un message de son email vous pouvez retrouver son IP !
Sur hotmail -> clic droit sur l’email dans la boite aux lettres -> afficher la source du message -> puis chercher
X-Originating-IP: [xxx.xxx.xxx.xxx]
Sur Thunderbird ctrl + U ou pomme + U et chercher :
Received: from xxx.xxx.xxx.xxx

les liens, wordpress et opml

29 septembre 2009 | programmation, tutorials | 0 commentaire

Je viens d’ajouter des liens ! https://jaiunblog.com/liens/
Voici une technique pour ajouter dans votre blog votre marque-page firefox en quelques clics via le format OPML ;¬)

  • 1re étape : installer ceci : OPML Support for Firefox
  • 2e étape : menu / marques-pages / organiser… : j’exporte mon bookmark en OPML (sauf astuce ? il faut tout sauvegarder)
  • 3e étape : je charge l’éditeur d’OPML http://editor.opml.org/
  • 4e étape : j’ouvre mon « gros » OPML, je copie/colle les branches souhaitées dans un nouveau fichier OPML, je sauvegarde !
  • 5e étape : j’ouvre avec un éditeur texte (notepad++) et je passe l’encodage en ANSI (utf-8 ne marchait pas chez moi)
  • 6e étape : dans WordPress / Outils / Importer / Liens – faire parcourir – choisir la catégorie – importer
  • 7e étape : tester :-)

comment faire un plugin pour wordpress

22 octobre 2008 | programmation, tutorials | 0 commentaire


Je vais prendre 5 minutes pour contribuer au monde merveilleux de wordpress avec un mini tutorial sur les plugins (ou extensions pour être correcte).
Je passe les détails sur l’installation d’un plugin dans wordpress ;¬) enfin rapidement pour ceux qui découvre, si vous avez accès au ftp de votre blog, les extensions sont dans le dossier /wordpress/wp-content/plugins/ et on les active dans la partie « Extensions » du panneau d’administration.

Pour faire ce merveilleux plugin, il faut avoir quelques notions de php, ici le plus difficile est de comprendre les variables tableaux et la fonction strtr ; si ça semble imbuvable, le site du zéro est assez pédagogique.

À quoi va servir ce plugin ;¬) nous allons faire un mini traducteur des jours en grolandais ! Rien d’utile mais en poussant un peu plus le principe, on peut imaginer des petites fonctions avancées en php et xhtml (pour convertir les liens .mp3 en player flash).

Premiers pas indispensable : L’entête

/*
Plugin Name: Grojour
Plugin URI: https://jaiunblog.com
Description: traducteur grlandais
Author: Ben
Version: 1.0
Author URI: https://jaiunblog.com
*/

Il s’agit de commentaire php entre /* et */ c’est la description (seul le Plugin Name est obligatoire).

Deuxième étape La fonction utile

function gJour($text){
$traduction = array(
"Lundi" => "Lendi",
"Mardi" => "Mordi",
"Mercredi" => "Credi",
"Jeudi" => "Joudi",
"Vendredi" => "Dredi",
"Samedi" => "Sadi",
"Dimanche" => "Gromanche",
"lundi" => "lendi",
"mardi" => "mordi",
"mercredi" => "credi",
"jeudi" => "joudi",
"vendredi" => "dredi",
"samedi" => "sadi",
"dimanche" => "gromanche"
);
$text= strtr($text,$traduction);
return $text;
}

Pour la pédagogie : echo gJour(« On est lundi ? »); // donne : On est lendi ?
Ne pas oublier le « return $variable » sinon le filtre effacera ses cibles.

Pour finir, la magie de wordpress : les filtres

add_filter("the_content","gJour");
add_filter("the_time","gJour");

On cible les « morceaux » qui vont être filtré par notre fonction gJour, ici the_content et the_time, le contenu et la date du billet. À noter, les filtres sont appliqués juste avant l’affichage des pages et si on désactive le plugin, le site redevient comme avant :-)

grojour.zip

Update : deux liens complémentaires
http://blog.site2wouf.fr/2008/08/tutoriel-wordpress-un-plug-in-simple-pour-comprendre.html
http://www.pasunclou.com/2008/09/29/ecrire-un-plugin-wordpress/