mercredi 7 mars 2007

Les tableaux


Les tableaux

Bash supporte les tableaux à une dimension. Aucune initialisation n'est nécessaire, mais si on tente d'afficher un tableau non initialisé, rien ne sera affiché. Le support des tableaux est un peu différent des autres langages de programmation. Il est possible directement d'assigner une valeur à un index particulier. Bash initialisera les autres index automatiquement.

Création

declare -a mon_tableau

Bash créera un tableau vide.
Il est possible de créer un tableau en lui attribuant des valeurs.

mon_tableau[2]='test'

Bash initilisera mon_tableau[0] et mon_tableau[1] à vide.

Opération

La commande ci-dessous affichera l'item à la position spécifié par l'index.
echo ${mon_tableau[index]}

La commande ci-dessous affichera tous les éléments du tableau
echo ${mon_tableau[*]}

La commande ci-dessous affichera le nombre d'élément du tableau
nbItem=${#mon_tableau[*]}
echo $nbItem

Voici un exemple qui énumère les notions apprisent jusqu'à maintenant
#!/bin/bash

#déclaration d'un tableau
declare -a mon_tableau

#initialisation du tableau
mon_tableau=( nuage soleil neige )

#affiche le deuxième éléments soit neige
echo ${mon_tableau[2]}

#affiche tous les éléments du tableau, soit nuage, soleil et neige
echo ${mon_tableau[*]}

#affiche le nombre d'élément
nbItem=${#mon_tableau[*]}
echo $nbItem

for ((i=0;i<$nbItem;i++)); do
  echo ${mon_tableau[${i}]}
done

Les tableaux en bash peuvent contenir différent type de donnée. Il est donc possible d'avoir des int, des chaînes de caractère dans le même tableau sans problème. Il suffira de faire attention si des opérations sont faites entre les éléments du tableau.

declare -a mon_tableau2

mon_tableau2=( 7 99 avion )

mon_tableau2[3]=`expr ${mon_tableau2[0]} + ${mon_tableau2[1]}`

#affichera 106
echo ${mon_tableau2[3]}

mon_tableau2[4]=`expr ${mon_tableau2[0]} + ${mon_tableau2[2]}`

#ceci générera une erreur car un int ne peut être ajouté à une string
echo ${mon_tableau2[4]}

Il faut donc faire très attention lorsque différents types de donnée sont employé au sein du même tableau.

dimanche 25 février 2007

Les chaînes de caractères


Les chaînes de caractères

Bash possède de nombreuses fonctionnalités pour manipuler les chaînes de caractères qui ne sont pas aissé à maîtriser.

Longueur d'une chaîne de caractère

Il existe au moins 2 méthodes pour y parvenir.
nom="Paul"
${#nom} #retourne 4

nom="Paul"
echo `expr length $nom` #retourne 4

Si la chaîne contient des espaces, il faut mettre des " au tour de la chaîne de caractère lorsqu'on utilise la deuxième méthodes.

nom="Paul Smith"
echo `expr length "$nom"`  #retourne 10

Il faut faire attention lorsque la chaîne de caractère contient des '. Il faut alors utiliser le \.

message='C'\''est froid dehors'
echo ${#message}  #retourne 18
echo ${message}   #retourne C'est froid dehors

Extraction d'une chaîne de caractère

Bash permet d'extraire une chaîne caractère d'une autres à partir de différente position.
Le première paramètre spécifié indique la position de départ et le second indique la longueur.

message="Il fait froid dehors"
echo ${message:3} # retourne fait froid dehors
echo ${message:8:5} # retourne froid
echo ${message:(-6)} # retourne dehors

Enlever des caractères en début de chaîne

Cette possibilité permet d'enlever les caractères se trouvant en début de chaîne, il faut spécifier la chaîne désirer être enlever. Il est possible d'utiliser l'étoile. Elle signifie n'importe quelle caractère.

message="Il fait froid dehors"
echo ${message#Il}   #fait froid dehors
echo ${message#I*d}   #dehors

Dans le seconde cas, il est spécifié, enlever la chaîne débutant par I et se terminant par d.

Enlever des caractères en fin de chaîne

C'est identique à la fonction précédente, excepté qu'elle commence par la fin de la chaîne

message="Il fait froid dehors"
echo ${message%d*s}   #Il fait froid

Remplacer une chaîne par une autre

Le première paramère est la chaîne de caractère initiale, le deuxième est la valeur recherché et le troisière est la valeur qui remplacera le deuxième paramètre.

message="Il fait froid dehors"
echo ${message/froid/chaud}   #Il fait chaud dehors

Prenez note que si vous voulez replacer toutes les occurences du deuxième paramètre par le troisième, il faut doublez le / du deuxième paramètre.

message="Il fait froid dehors"
echo ${message//froid/chaud}   #Il fait chaud dehors

Nous avons vu les quelques fonctions que Bash propose pour manipuler des chaînes de caractères. Leurs syntaxes varie ce qui rend leur utilisation un peu plus difficile.

dimanche 12 novembre 2006

PeerTV, la tv sous Linux


PeerTV, la tv sous Linux

PeerTV est un script Perl qui donne accès au WebTv.

Paquet nécessaire sous Suse 10.1

perl
perl-AppConfig
perl-ExtUtils-Depends
perl-ExtUtils-ParseXS
perl-libwww-perl
perl-libxml-perl
perl-Tk
perl-XML-LibXML
perl-XML-LibXSLT
perl-XML-NamespaceSupport
perl-XML-Parser
perl-XML-SAX
perl-XML-Simple
perl-XML-Writer
perl-URI
tk
mplayer
w32codec-all
N'oubliez par de cliquer la case: Vérification automatique dans YaST2.

Installer PeerCast

Télécharger PeerCast.

Effectuer les commandes suivantes dans un terminal.
tar xzf peercast-linux.tgz

Le fichier peercast peut être mis dans /usr/bin.

Installation de PeerTV

Télécharger PeerTv.
Effectuer les commandes suivantes dans un terminal.
tar xzf PeerTV-033-Linux.tar.gz
cd PeerTV-033-Linux
./PeerTV.pl

Si vous avez bien installé les paquets indiquez, PeerTV se lançera.

Les WebTv vous sont maintenant acessible aisément, bonne TV.

samedi 16 septembre 2006

Comment configurer les boutons de la souris?


Comment configurer les boutons de la souris?

Télécharger imwheel, ce logiciel permettra d'effecutuer une action à la suite d'un clic de souris (selon un bouton donnée). Dans le fichier XF86Config (/etc/X11/) ou Xorg (/etc/X11/xorg.conf)

Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse[1]"
  Option       "Buttons" "7"
  Option       "Device" "/dev/input/mice"
  Option       "Name" "Autodetection"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Sysp"
  Option       "ZAxisMapping" "6 7"
EndSection

Dans le fichier xinitrc (etc/X11/xinit/) pour que tous les usagers 
aient accès à cette modification ou dans le fichier xinitrc local de 
l'usager copié ce code
xmodmap -e "pointer = 1 2 3 6 7 4 5"
imwheel -p -k -b "67"

Le fichier: imwheelrc permet de définir des actions à exécuter selon le bouton pressé par application. Si vous employez xorg 6.9 ou supérieur. Le fichier xinitrc pourrait être:

xmodmap -e "pointer = 1 2 3 6 7 4 5 8 9 10 11"
imwheel -p -k -b "89"

jeudi 14 septembre 2006

La face cachée de Konqueror


LA FACE CACHÉE DE KONQUEROR

Konqueror est connue comme étant le navigateur de Kde. Son moteur a été utilisé et modifié pour devenir webkit sous mac os X.

Ses utilisateurs le connaissent aussi comme un navigateur de fichier. Konqueror a beaucoup plus à offrir que ses deux fonctionnalités.

Kde possède des modules d'entrée/sortie (io slaves) très évolués qui permettent d'effectuer diverses opérations au travers de ses applications. Konqueror en profite donc aussi.

Protocole

Audiocd

audiocd:/
Affiche les pistes audio du cd et permet de les copier sur le disque dur.

Media

media:/
Affiche les médias (cd, disquette, disque dur) que le système dispose

Camera

camera:/
Affiche le contenu de l'appareil photo.

Fish

fish:/
Permet de se connecter à un système grâce au protocole ssh

Sftp

sftp:/
Permet de se connecter à un serveur sftp

Ftp

ftp:/
Permet de se connecter à un serveur FTP

Smb

smb://
smb://nom_usager@nom_machine/dossier
smb:/ Affiche tous les systèmes disponibles
Permet d'accéder aux ressources partagées d'un autre système

Ldap

ldap:/
ldap://host:port/resource
Permet d'accéder à des ressources d'un autre système

Info

info:/
info:dir ou info:/dir
Affiche l'aide disponible pour de nombreux programmes.

Man

man:/
man:ls ou man:/ls
Affiche les man pages de disponible sur le système

Settings

settings:/
Affiche les possibilités pour gérer KDE

Trash

trash:/
Affiche ce qui a été supprimez, mais encore possible de restaurez

Ipod

ipod:/
Affiche le contenu du ipod

Locate

locate:/
Effectue une recherche avec à partir de l'indexage

Sysinfo

sysinfo:/
Affiche différentes informations sur le système: vitesse du cpu, mémoire, état du réseau, hd...

Remote

remote:/
Affiche les possibilités d'accéder à un système distant: smb, services réseau, services SLP

Applications

applications:/
Affiche le menu de kde et permet de démarrer les programmes.

Print

print:/
Affcihe de l'information sur l'imprimante ainsi que la queue d'impression.
Konqueror gère d'autres protocoles et ceux présentés ne sont pas nécessairement disponibles sur votre système. Konqueror est aussi en mesure divers types d'images, des fichiers pdf, des fichiers compressés.

Nous avons pu voir que Konqueror est beaucoup plus qu'un simple navigateur, il est un des programmes clés de Kde.

lundi 3 juillet 2006

BENCHMARK 64 bits C++ vs JAVA

BENCHMARK 64 bits C++ vs JAVA

Nous avons déjà réalisé un article sur les performances de C++ et de Java. Les performances se sont grandement améliorées au fil des versions de Java. Java arrivait à compétitionner avec C++ lors de certains tests.

Récemment, Sun à sortir la bêta 2 de Java 1.6, nous avons réalisé de nouveau les tests déjà effectués sur cette nouvelle version.

Détail de la machine de test

Cpu Athlon 64bits 3000+
Carte mère Asus a8n-vm
Mémoire vive 896 megs
Système d'exploitation Suse Linux 10.1
Système de fichier Reiser

Information des tests

Les mêmes tests ont été utilisés, aucun fichier source n'a été modifié. Pour de plus amples renseignements sur les sources et détails de chaque fichier, consulté l'autre article.

Protocole

Les tests en C++ ont été compilés avec g++ (GCC) 4.1.0 (SuSE Linux). La version de Java est 1.5.0_07 et 1.6.0-beta2. GCJ a aussi été utilisé.

En C++ nous avons compilé les fichiers de cette façon :

g++ -O2 -funroll-all-loops -fomit-frame-pointer -ffast-math -march=x86-64 -mfpmath=sse [test].cpp -o [test]

En java, nous avons compilé les fichiers de cette façon:
javac -O [test].java

Les programmes java ont été exécuté en version cliente et serveur.
java [test]
  java -server [test]

Des tests ont été faits afin de voir les performances des programmes Java en natif à l'aide du compilateur gnu.
 
gcj -O2 -march=i686 --main=[test] -o [test] [test].java 
gcj -O2 -fomit-frame-pointer -ffast-math -march=x86-64 -mfpmath=sse  --main=[test] -o [test] [test].java

Paramètre pour chacun des programmes

Les mêmes paramètres que dans le précédent article ont été employé.

Tableau des résultats

C++ x86-64 Java 1.5 Java 1.5 -server Java 1.6 Java 1.6 -server GCJ optimisé
Ackermann 25320 20056 20020 ND ND 59705
Hash2 12080 6398 5957 4995 4920 11176
Matrix 5720 13828 13605 12169 12092 9443
Objinst 14560 5103 4969 4972 4963 28062
Strcat 660 1857 1680 1685 1607 1983
Hash 11440 45638 44915 34216 33982 33661
Methcall 7680 3273 3229 3374 3188 14062
random 3780 14640 14591 14226 14225 17684
fibo 15950 18895 17460 18076 18064 26956
heapsort 9300 11414 11215 11756 11366 10130
Nestedloop 2840 17000 16936 21303 21169 11805
Sieve 6950 14347 14340 13946 13938 10418
Total 116280 172449 168917 140718 139514 235085
ND signifie que le test a échoué

Analyse des résultats

Puisque deux tests ont échoué sous Java 1.6 le total des tests sous Java 1.6 est faussé. Nous pouvons supposer que leurs résultats pourraient être similaires à ceux obtenus sous Java 1.5.

Les résultats de Java 1.6 seraient ainsi globalement inférieurs à ceux de Java 1.5. Le test nestedloop affecte grandement Java 1.6, il semble avoir un problème, sans ce test, nous pouvons remarquer que Java 1.6 a amélioré les performances par rapport à son prédécesseur.

Les résultats sont similaires au premier article, Java s'en sort encore une fois très bien. GCJ continue d'avoir de la difficulté dans ce test.

Java 1.6 prend un avantage sur la version 1.5. Le Code C++ semble poser problème. Il est surement possible d'optimiser cela.

Le C++ se resaisie dans ce test. Il est au minimum deux fois plus vite que les versions Java. Malgré que le processeur soit plus rapide et qu'il y ai plus de mémoire, le C++ en tire beaucoup moins partie que les versions Java.

GCJ obtient des performances déplorables, presque deux fois plus lent que la version C++.Les deux versions de Java obtiennent des performances similaires.

Le code Java emploie des StringBuffer qui sont beaucoup plus rapides que des String. Depuis Java 1.5 des StringBuilder peuvent être employés, elles sont encore plus rapides que les StringBuffer. J'ai modifié le source pour voir le gain apporté par ce nouveau type de donnée et le gain a été de 200.

Nous pouvons remarquer que les performances obtenues par les versions Java sont inférieures à celle obtenue dans le précédent article. La version 64 bits de la JVM serait moins performante que la version 32 bits?

Idem que précèdent les performances sont moins bonnes.

La version C++ est dans une classe à part, elle est 3 fois plus rapide que les versions Java.


Les versions Java se sont rapprochées de la version C++ par rapport à la l'article précédèrent.


L'écart dans l'article précédemment était faible, il augment cette fois-ci.


Les résultats sont décevant pour Java 1.6, la version 1.5 est 24% plus rapide.


Aucune amélioration notable du côté de Java

Emprunte mémoire

Durant l'exécution des tests, le taux de mémoire employée et le taux d'usage du CPU ont été pris. Pour l'ensemble des tests, le CPU était utilisé à 99,9%. Concernant la mémoire, c'est plus complexe étant donné que des librairies sont partagées et ne sont pas prises en compte par les outils d'évaluation. Néanmoins à l'aide de la commande top, j'ai pu remarquer que C++ s'en sortait beaucoup mieux que ses confrères. Les versions de Java font majoritairement 50% mieux que la version de GCJ.

Facteur à prendre en considération

Performance

Les performances sont importantes, afin de bien optimiser un logiciel, l'utilisation de profiler est indispensable. Ce type d'outils permet de savoir où sont les goulots d'étranglement de l'application. Il est plus sage d'investir du temps dans une portion qui exécuté à 45% du temps par le logiciel qu'une autre qui n'est exécutée que 2% du temps.

Java permet de faire appel à du C++ à l'aide de JNI. À partir d'un programme Java, il est ainsi possible de faire appel à des fonctions en C++. Cette approche peut s'avérer intéressante lorsqu'une portion critique d'un programme Java n'atteint pas les performances souhaitées. 

L'expérience du programmeur n'est pas un facteur à négliger. Même s'il est possible de faire du code très rapide en C++, encore faut'-il être en mesure d'y parvenir sans même la stabilité du système en péril.

Temps de développement

Un autre critère qui a pris de l'importance depuis plusieurs années est le temps de développement. D'ailleurs, c'est un des points qui a favorisé le succès de Java. L'api est très riche et permet d'éviter de devoir employer de nombreuses librairies externes telles que bd, gui... qui sont difficilement portable d'un système d'exploitation à l'autre sans compté les risques d'incompatibilité. Il y a quelques années, j'ai dû porter un langage de script de Qnx vers Linux. Énormément de changement ont dû être fait, certaines API n'existaient pas sous Linux et auraient dû être écrites au complet. Cela a contribué à restreindre certaines fonctionnalités lors du portage. Idem pour une application qui fonctionnait sous Unix. Linux ne gérait pas les chaînes de caractère nulles comme le faisait Unix. Java apporte aussi la robustesse aux applications. La JVM effectue de nombreuses opérations qui sont laissées aux programmeurs en C++. C'est surement une des raisons qui fait en sorte que Java devient de plus en plus populaire dans les systèmes embarqués.

Future

Maintenant que les performances de Java sont rendues près du C++, Sun pourrait commencer à regarder d'autre approche pour améliorer Java. La JVM charge au démarrage d'un programme Java que le nécessaire, ensuite le tout est compilé et optimisé pour le processeur en cours. Cette opération est réalisée à chaque que le programme est démarré. La JVM pourrait sauvegarder le tout et réutiliser ce qui a été généré. Il y a de fortes chances que les performances soient meilleures et que moins de mémoire serait utilisée.

Conclusion

GCJ s'est améliorée depuis le premier article. Java 1.6 est encore en phase bêta, mais la majorité des résultats démontrent que les performances se sont améliorées. Les programmes compilés à l'aide de C++ obtiennent souvent les meilleurs résultats, fait à noter, les performances ne font pas tout, d'autres facteurs sont à prendre à considération lors de la phase de développement d'un logiciel. Il semble que la version 64bits de la JVM ne soit pas encore assez optimisée par rapport à la version 32 bits. Ne pas oublier que la version 1.6 est en phase bêta, ce qui influence directement les performances et stabilités.

jeudi 29 juin 2006

Les webcams sous Linux


Les webcams sous Linux

Les webcams sont de plus en plus utilisées. Elle permette d'ajouter une autre dimension lors de communication avec des logiciels de messageries instantanés. Il est enfin de possible de voir la personne. Un autre aspect non négligeable est la sécurité, les webcams permettent de surveiller un endroit à très faible coût.

Les webcams sont supportées sous Linux grâce au driver spca5xx. La liste des caméras supportées est disponible à mxhaard.

Installation

Les caméras sont maintenant détecté automatiquement. La procédures ci-dessous est gardé à des fins informatiques et n'est donc plus nécessaire.

Débranchez votre caméra avant de continuer. Télécharger le paquet de votre distribution (rpm, deb...).

Si aucun n'est disponible, télécharger les sources des drivers.
L'installation des sources nécessite d'avoir les sources du noyau, gcc, make, SDL-devel. Effectuer les commandes ci-dessous avec le compte administrateur (root).
make clean
make
make install

Ensuite exécutez la commande
modprobe spca5xx

Branchez votre caméra, si vous tapez dans une console la commande dmesg, vous devriez avoir de l'information concernant votre caméra. Si rien n'apparait, débrancher votre caméra et redémarrer votre machine. Ensuite rebrancher votre caméra et vérifier si vous obtenez bien les informations décrites plutôt. Si vous n'obtenez toujours rien, demander de l'aide sur notre forum.

Utilisation de votre webcam

Messagerie instantanée

Kopete gère de multiples protocoles de messagerie instantanée. Vous pouvez utiliser votre caméra avec les protocoles de Yahoo et de msn. Pour tester si votre caméra fonctionne, démarrez kopete, cliquer sur le menu Configuration et ensuite sur Configurer.... Finalement cliqué sur l'icône représentant une caméra. Après quelques secondes, vous devriez voir les images capturées par la caméra. Assurez-vous d'avoir la version la plus récente de kopete.

CamStream

CamStream est un logiciel qui permet d'enregistrer des images et de les envoyer sur un serveur. Des vidéos peuvent être enregistrés.





Nous pouvons remarquer qu'il est possible d'employer camstream pour surveiller un lieu. Il suffit de spécifier un serveur ftp afin qu'il puisse recevoir les images capturées. Ce logiciel prend des captures à intervalles réguliers, il y a pas de détection de mouvement de réalisée. Si l'interface de temps entre deux captures est faible, l'espace pris peut rapidement devenir important.

Motion

Motion est un logiciel parfait pour effectuer de la surveillance. Une tonne de paramètres sont disponibles.

Installation

L'installation de motion n'est pas très évidente. Motion nécessite ffmpeg, mais seul quelques versions bien spécifiques fonctionne. Si votre distribution offre un paquet pour motion employé le.

Téléchargez la version de ffmpeg disponible ici spécialement pour motion.
Effectuez les commandes suivantes
./configure --enable-shared
make
make install

FFMPEG est maintenant installé. Assurez-vous d'avoir MySQL ou PostgreSQL pour installer Motion. La librairie jpeg est aussi nécessaire. Tapez les commandes suivantes
./configure
make
make install

Une fois que motion est installé, il faut le configurer. Rechercher le fichier motion-dist.conf et changer son nom pour motion.conf. Copiez le fichier qui a été renommé dans le répertoire de votre usager. Sous Suse, ce fichier ce trouve dans le répertoire /usr/local/etc/.
Quelques propriétés doivent être modifiées.
Changer la valeur pour la norme employée dans votre région.
# The video norm to use (only for video capture and TV tuner cards)
# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
norm 1

Changez la hauteur et largeur des images capturées.
# Image width (pixels). Valid range: Camera dependent, default: 352
width 640 

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480 
Indiquez le nombre maximal d'images que votre caméra peut capturé, la plupart son limité à 30 images par seconde.
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 30 

Ajustez les différents paramètres disponibles pour la caméra au niveau de l'image. Il peut être utile de démarrer motion, changer les valeurs et ainsi de suite jusqu'à ce que le résultat réponde à nos attentes.
# Set the initial brightness of a video device.
# If auto_brightness is enabled, this value defines the average brightness level
# which Motion will try and adjust to.
# Valid range 0-255, default 0 = disabled
brightness 150

# Set the contrast of a video device.
# Valid range 0-255, default 0 = disabled
contrast 150

# Set the saturation of a video device.
# Valid range 0-255, default 0 = disabled
saturation 0

# Set the hue of a video device (NTSC feature).
# Valid range 0-255, default 0 = disabled
hue 0

La quantité de détails différents dans une image afin de détecter qu'il y a eu réellement un mouvement. Cette valeur peut s'avérer importante si votre webcam est située près d'une fenêtre ouverte. Une valeur plus élevée que 1 évitera de prendre des images du rideau qui bouge.
# Picture frames must contain motion at least the specified number of frames
# in a row before they are detected as true motion. At the default of 1, all
# motion is detected. Valid range: 1 to thousands, recommended 1-10
minimum_motion_frames 1
La dernière possibilité qui sera vue est la gestion des évènements. Motion permet d'effectuer des actions lorsqu'un évènement démarre, termine... Il est ainsi possible d'exécuter un script. Les possibilités deviennent alors illimitées. Il y a un évènement qui se produit lorsqu'un enregistrement vidéo débute et se termine. Il y en a un autre lorsque capture est effectué.
# Do not sound beeps when detecting motion (default: on)
# Note: Motion never beeps when running in daemon mode.
quiet on

# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap 
; on_event_start value

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
#; on_picture_save value
on_picture_save /home/paul/bin/send_email.sh %f

# Command to be executed when a motion frame is detected (default: none)
; on_motion_detected value

# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_start value

# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_end value

Il est possible de remarquer avec le code ci-dessus que le script send_email.sh est excuté lorsqu'une image est sauvegardé, %f est envoyé en paramètre à ce script. À toutes les fois qu'une image est sauvegardée, elle est envoyée par courriel.
Motion sauvegarde en local les images. Si un voleur réussit à voler votre ordinateur, vos images seront perdues. Il est donc important que vous sauvegardez vos images et vidéo à un autre endroit. Si votre voleur est futé, il analysera votre ordinateur et pourrait trouver le lieu distant de sauvegarde que vous avez employé. Une solution peut consister à crypter votre disque dur. Pensez sécurité!
En parcourant le fichier de configuration de Motion, regarder bien les options, il y en a beaucoup. Il est possible par exemple de tout entreposé dans une base de données.

Démarrage de motion

Motion intègre un serveur Web, le port 8080 est utilisé. Il est possible de configuré motion, d'effectuer des captures d'écran, démarré l'enregistrement vidéo.... avec l'interface Web. Motion ne possède pas d'interface graphique mise à part cet interface là.
motion -c /home/paul/motion.conf

Nous avons vu comment utiliser sa caméra web sous Linux ainsi que divers logiciels qui peuvent mettre à contribution votre caméra.

Migration d’une application Spring Boot 2.2 vers Spring Boot 4.0 : retour d’expérience concret

 En 2019, nous avons développé une application métier basée sur : Java 8 Spring Boot 2.2.7 Gradle 6.6.1 Thymeleaf Boots...