Breadcrumbs

Developpement

1. vimrc howto

you you can find below my vimrc i used on most of my servers.

 

here is what it does:

  • :ai : 'autoindent' does nothing more than copy the indentation from the previous line, when starting a new line. It can be useful for structured text files, or when you want to control most of the indentation manually, without Vim interfering
  • :si : 'smartindent' automatically inserts one extra level of indentation in some cases, and works for C-like files.
  • filetype : based on the file extension it will enable some plugins (colorisation, indentation etc)
  • syntax : it will colorized your file
  • background : the background is set to black
  • ignorecase: it will ignore the case when searching (using /)
  • highlight search
  • show matching bracket when going over
  • switch buffer with F5 then <tab>
  • paste mode with F2

i created this vimrc thanks to a lot of different people over Internet.

1. Recuperation du flux Video

initiate:

http://ip address:port/cgibin/CGIProxy.fcgi?usr=admin&pwd=xxx&cmd=setSubStreamFormat&format=1

 then:

http://192.168.1.117:88/cgi-bin/CGIStream.cgi?cmd=GetMJStream&usr=admin&pwd=xxx

 

tutorial opencv python camera ip

 http://robokite.blogspot.fr/2013/04/opencv-python-ip-webcam.html

 

 

 Annexe

Source: 

https://learn.adafruit.com/raspberry-pi-face-recognition-treasure-box/software

http://thinkrpi.wordpress.com/magic-mirror/

 

tuto pour recuperer le flux de la camera:

http://www.ipcam-shop.nl/media/Foscam%20H264%20FW/How%20to%20fetch%20MJPEG%20stream%20on%20the%20FI9821W.pdf

 

 tuto python opencv

https://realpython.com/blog/python/face-recognition-with-python/

 

 

Tutorial tiré de : http://fr.openclassrooms.com/informatique/cours/des-applications-ultra-rapides-avec-node-js

 

node.js est du javascript executé coté serveur.

1.Différence entre Apache et node.js

 Node.js est un environnement de développement JavaScript basé sur les évènements. l y a un seul thread mais aucune opération n'est bloquante. Ainsi, les opérations un peu longues (chargement d'un fichier, téléchargement d'une page web, démarrage d'un serveur web...) sont lancées en tâche de fond et une fonction de callback est appelée quand l'opération est terminée. contrairement à Apache qui est multithread.

1.1 Apache

 

 

1.2 node.js

 

 

2. Exemple simple serveur HTTP

2.1 Exemple 1

dans un fichier test.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//recuperation des packages necessaires
var http = require('http');
var url = require('url');
 
// déclaraction d'un serveur http
var server = http.createServer(function(req, res) {
        //permet de recuperer le nom de la page que l'utilisateur demande
        var page = url.parse(req.url).pathname;
        //affiche dans la console la page demandée
        console.log(page);
        //repond au client en text/plain.
        res.writeHead(200, {"Content-Type": "text/plain"});
        res.write('Bien le bonjour');
        res.end();
});
//lancement du serveur en écoute sur le port 8080
server.listen(8080);

Ensuite pour le lancer, depuis un terminal:
node test.js
Ensuite dans un navigateur http://localhost:8080

2.2 Exemple 2 récuperation de variable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var http = require('http');
var url = require('url');
var querystring = require('querystring');
 
var server = http.createServer(function(req, res) {
  	//permet de parser les arguments
    var params = querystring.parse(url.parse(req.url).query);
    res.writeHead(200, {"Content-Type": "text/plain"});
    if ('prenom' in params && 'nom' in params) {
        res.write('Vous vous appelez ' + params['prenom'] + ' ' + params['nom']);
    }
    else {
        res.write('Vous devez bien avoir un prénom et un nom, non ?');
    }
    res.end();
});
server.listen(8080);

 

 

3.http server express.js

express.js est un module pour node.js qui permet de créer plus rapidement des serveurs http.

il faut auparavant l'installer via npm:

1
npm install express

 

 

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
var express = require('express');
 
var app = express();
 
app.get('/', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes à l\'accueil, que puis-je pour vous ?');
});
 
app.get('/sous-sol', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes dans la cave à vins, ces bouteilles sont à moi !');
});
 
//permet de recuperer des pages dynamiques
app.get('/etage/:etagenum/chambre', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes à la chambre de l\'étage n°' + req.params.etagenum);
});
 
//placé à la fin, catch les demandes restantes pour en faire des 404
app.use(function(req, res, next){
    res.setHeader('Content-Type', 'text/plain');
  	res.status(404).send('Page introuvable !');
});
 
app.listen(8080);

 

 

 

1.express.js

express.js est un module pour node.js qui permet de créer plus rapidement des serveurs http.

il faut auparavant l'installer via npm:

1
npm install express

 

 

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
var express = require('express');
 
var app = express();
 
app.get('/', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes à l\'accueil, que puis-je pour vous ?');
});
 
app.get('/sous-sol', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes dans la cave à vins, ces bouteilles sont à moi !');
});
 
//permet de recuperer des pages dynamiques
app.get('/etage/:etagenum/chambre', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes à la chambre de l\'étage n°' + req.params.etagenum);
});
 
//placé à la fin, catch les demandes restantes pour en faire des 404
app.use(function(req, res, next){
    res.setHeader('Content-Type', 'text/plain');
  	res.status(404).send('Page introuvable !');
});
 
app.listen(8080);

zz

1. Example getopts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while getopts ":hf:g:" option; do
                case $option in
                        f)
                                echo "[OPTION] f with argument: $OPTARG"
                                ;;
                        g)
                                echo "[OPTION] g with argument: $OPTARG"
                                ;;
                        h)
                                usage
                                ;;
 
                        :)
                                echo "[ERROR] option : $OPTARG requiert un argument"
                                exit 2
                                ;;
 
                        \?)
                                echo "[ERROR] option invalide: $OPTARG"
                                exit 2
                                ;;
                esac
        done

2. explication

 

la chaine passé à getopt permet de définir les options:

  • le 1er ":" signifie de laisser l'utilisateur gérer les erreurs. sinon getopts s'en charge
  • "h"  signifie que l'option "h" est valide
  • "f:" signifie que l'option "f" est valide et qu'elle attend un argument
  • "g:" même chose

on peut donc lancer le script ainsi:

1
2
3
4
./script -h
./script -h -f toto
./script -g titi
./script -g titi -h -f toto

L'utilisation d'une option invalide (non comprise dans la liste fournise à getopts) sera rejeté.