NXC et Geany sous Debian 9

NXC est un langage de programmation spécifique au robot Lego Mindstorms NXT. Il est basé sur le NBC, un langage assembleur.

Dans la console :
sudo apt-get install nbc

Paramétrer Geany pour pouvoir compiler aussi bien des fichiers nxc que nbc (Construire > Définir les commandes de construction) :

Enregistrer les fichiers sources au format nxc, puis compiler (touche F8). Le transfert sur la brique NXT se fait dans la foulée. Par conséquent, si la brique NXT n’est pas allumée, Geany indique « Compilation échouée », ce qui ne veut pas dire que le code est erroné : Une erreur dans le code entraîne un message d’erreur en rouge au moment de la compilation.

Installer Sweet Home 3D (version 6) sous Debian 9

Seule la version 5.3 de Sweet Home 3D est disponible dans les dépôts de Debian 9, d’où cet article.

Le site officiel : Sweet Home 3D

Dans la console :

Si le répertoire SweetHome3D n’existe pas déjà, je le crée :
sudo mkdir /usr/share/SweetHome3D

Je télécharge SweetHome3D (64 bits) depuis cette adresse :
http://www.sweethome3d.com/fr/download.jsp

Je décompresse l’archive et l’installe à l’endroit voulu :
cd Téléchargements
tar -zxvf SweetHome3D-6.1.2-linux-x64.tgz
sudo mv SweetHome3D-6.1.2 /usr/share/SweetHome3D

Pour effacer une version précédente de SweetHome3D (x à adapter) :
sudo rm -rf /usr/share/SweetHome3D/SweetHome3D-6.x.x

Pour intégrer le programme au menu de Xfce, je crée un fichier SweetHome3D-6.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano SweetHome3D-6.desktop

[Desktop Entry]
Type=Application
Name=Sweet Home 3D 6.1.2
Comment=Logiciel d’aménagement d’intérieur
Exec=/usr/share/SweetHome3D/SweetHome3D-6.1.2/SweetHome3D
Icon=/usr/share/SweetHome3D/SweetHome3D-6.1.2/SweetHome3DIcon.png
Terminal=false
Categories=Graphics;2DGraphics;3DGraphics;

Rechercher un fichier par son nom ou par ce qu’il contient (sous Debian)

Dans la console :

Pour rechercher un fichier par son nom :
find <emplacement> -iname <nom fichier> -print
-iname n’est pas sensible à la casse, contrairement à -name
* sert à remplacer des caractères
Autres filtres possibles :
-type
-and / -or / -not
-size

Pour rechercher un fichier par ce qu’il contient :
grep -r -i "<expression>" <emplacement>
-r : rend la recherche récursive
-i : la recherche n’est pas sensible à la casse

Rogner une vidéo sous Debian 9

Pour visualiser le rognage à effectuer, j’utilise au préalable VLC :
Outils > Effets et filtres > Effets vidéo > Rognages

Puis j’utilise en mode console FFmpeg :
ffmpeg -i input.mp4 -qscale:v 0 -filter:v "crop=w:h:x:y" output.mp4
ou éventuellement :
ffmpeg -i input.mp4 -crf quality -filter:v "crop=w:h:x:y" output.mp4
avec :
quality : qualité de la vidéo (0 : la meilleure ; 63 : la pire)
w : largeur de la vidéo recadrée
h : hauteur de la vidéo recadrée
x:y : coordonnées du coin supérieur gauche du rectangle précédemment défini (les coordonnées 0:0 sont en haut à gauche de la vidéo initiale)

Pour éventuellement modifier la taille de la vidéo finale :
ffmpeg -i input.mp4 -qscale:v 0 -vf scale=w:h output.mp4
avec
w : largeur de la vidéo finale
h : hauteur de la vidéo finale

Remarque : L’option -qscale:v 0 permet de garder la même qualité que la vidéo d’origine.

Python 3 sous Debian 9

Site officiel : Python => Documentation


Un fichier Python commence par :
# -*- coding: utf-8 -*-
#!/usr/bin/env python

Conventions de syntaxe en Python

Par défaut, la bibliothèque graphique Tkinter pour Python 3 n’est pas installée sous Debian 9. Pour l’installer, taper dans la console :
sudo apt-get install python3-tk

Pour exécuter un fichier Python depuis la console :
python3 nom_fichier.py


Quelques autres éléments parfois utiles par la suite :

Pour connaître les droits d’un fichier :
ls -l

Pour rendre exécutable un fichier :
chmod +x nom_fichier.py

Pour exécuter un fichier exécutable :
./nom_fichier.py
Si on veut pouvoir appeler un programme sans se soucier du répertoire de commande, le placer dans /usr/local/bin (on peut enlever l’extension .py).

Python 3 et Geany sous Debian 9

Geany est un environnement de développement léger et rapide. Pour l’installer sous Debian 9, taper dans la console :
sudo apt-get install geany

Puis dans Geany :

Dans les champs « Commande » de « Compile » et d' »Execute », remplacer python par python3 :

Pour le réglage de l’indentation, aller dans :
Editer > Préférences > Editeur > Indentation.
Sélectionner Espaces à la place de Tabulations.
Vérifier que le mode d’intentation automatique par la touche Tab soit coché et que la largeur d’indentation soit de 4.

Construire une vidéo image par image sous Debian 9

J’utilise FFmpeg.

Les images sont toutes rangées dans le même répertoire et se nomment image-0001.png, image-0002.png, image-0003.png, etc.

Pour obtenir un film à 24 images / seconde, en partant de l’image n° 1, avec un débit binaire pour l’image de 30000 kbps, on tape dans la console :
ffmpeg -r 24 -start_number 1 -i image-%04d.png -b:v 30000k output.mp4

Lien vers un article concernant la compression vidéo chez YouTube.

Assemblage d’images avec Processing

Présentation :

Le programme ci-dessous permet d’assembler des images pour en créer une plus grande.

Le code Processing :

//////////////////////////////////////////////////////////////////
/*
   Assemblage d'images
   Version de Processing utilisée : 3.5.2
   
   Important :
   ---------
   Les noms des fichiers images à assembler sont ici du type :
   image-0001.png, image-0002.png, etc.
     
   http://3615.entropie.org
*/
//////////////////////////////////////////////////////////////////

// Paramètres à adapter
String extension = ".png";  // Extension des images
int largeurImage = 200;     // Largeur d'une image
int hauteurImage = 100;     // Hauteur d'une image
int nbImagesX = 3;          // Nombre d'images à placer en largeur
int nbImagesY = 2;          // Nombre d'images à placer en hauteur
int marge = 10;             // Marge entre les images
int couleurMarge = 0;       // Couleur de la marge

// Variables
int width = largeurImage*nbImagesX + marge*(nbImagesX+1);
int height = hauteurImage*nbImagesY + marge*(nbImagesY+1);
int nbImages = nbImagesX * nbImagesY;     // Nombre total d'images
PImage img[ ]= new PImage[nbImages];      // Tableau d'images
int indexImage = 0;         // Position de l'image dans le tableau
float x,y;                  // Coin supérieur gauche de l'image

//////////////////////////////////////////////////////////////////

void settings() {
  size(width, height);
}

//////////////////////////////////////////////////////////////////

void setup() {
  for (int i=0; i<nbImages; i++) {
    // Le nom du fichier est composé de 4 chiffres + l'extension
    String nomFichier = "image-"+nf(i+1,4)+extension;
    img[i] = loadImage(nomFichier);
  }
 x = marge;
 y = marge;
 background(couleurMarge);
}

//////////////////////////////////////////////////////////////////

void draw() {
  if (indexImage < nbImages) {
    image(img[indexImage], x, y, largeurImage, hauteurImage);
    indexImage++;
    x = x + largeurImage + marge;
    if (x >= width) {
      x = marge;
      y = y + hauteurImage + marge; 
    }  
  }
  else { save("assemblage.png"); }
}

//////////////////////////////////////////////////////////////////

void keyPressed() {
  if (key == ESC) {
    exit();
  }
}

//////////////////////////////////////////////////////////////////

SD2IEC pour Commodore 64

Vendeur : https://www.ebay.fr/usr/despegatop
Mode d’emploi : Commodore SD2IEC user guide

Après avoir formaté sur mon PC la carte SD (8 Go) en FAT32, je l’insère dans le boitier SD2IEC, j’allume le C64 et je tape :
10 PRINT « HELLO WORLD »
SAVE « HELLO »,8
Le programme est alors sauvegardé directement sur la carte SD.
Pour vérifier que tout a bien fonctionné, je charge la liste des fichiers de la carte dans la mémoire de l’ordinateur :
LOAD « $ »,8
J’affiche cette liste :
LIST
Le programme « HELLO » apparaît bien.
Je vide la mémoire de l’ordinateur :
NEW
Je charge le programme à partir de la carte SD :
LOAD « HELLO »,8
J’affiche le listing du programme :
LIST
Je l’exécute :
RUN

Retour de la carte SD sur le PC avec un éditeur hexadécimal :

Commodore 64 : Guide de référence du programmeur