Content Management System – CMS : nouvelle version 2014-2015
Cliquez ici pour avoir le document PDF.
Tout ce qui concerne le développement en général, que ce soit des choses générales, ou des choses bien précises. Cela va de la gestion de projet à la recherche du fonctionnement de pointeurs en C.
Cliquez ici pour avoir le document PDF.
Si vous avez crée un template « enfant », comme je l’ai déjà fait plusieurs fois, un des problèmes les plus énervants à chercher est : comment trouver le répertoire courant du thème.
En fait WordPress met à disposition deux fonctions, et il vous faut utiliser soit l’une, soit l’autre :
get_stylesheet_directory_uri()
Vous renvoie le répertoire de l’enfant, donc le répertoire en cours du thème « enfant » que vous êtes en train de développer.
get_template_directory_uri()
Vous renvoie le répertoire du parent, cela peut être pratique si vous voulez chercher des informations dans le parent (utiliser une feuille de style déjà présente, par exemple, afin de ne pas la copier-coller dans votre thème).
// Exemple copié collé et adapté sur stackoverflow :
// http://stackoverflow.com/questions/15630770/node-js-check-if-path-is-file-or-directory
// http://stackoverflow.com/questions/7268033/basic-static-file-server-in-nodejs
//
var http = require('http'),
url = require('url'),
fs = require('fs'),
mongoose = require('mongoose'),
fileSystem = require('fs'),
path = require('path');
var mimeTypes = {
"html": "text/html",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"png": "image/png",
"js": "text/javascript",
"css": "text/css"};
var server;
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
var personneSchema = new Schema({
nom: String,
prenom: String
});
var Personne = db.model('Personne', personneSchema);
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
console.log('DB connexion reussie');
server = http.createServer(function (request, response) {
if (request.url=='/personnes') {
console.log("> JSON");
Personne.find({}).select('nom prenom').exec(function (err, p) {
if (err) {
return console.log(err);
}
var retour='[';
for (var i = 0; i < p.length; i++) {
retour+='{'+ p[i].nom+', '+p[i].prenom+'},';
};
retour=retour.substr(0, retour.length-2)+']';
response.writeHead(200, {
'Cache-Control': 'no-cache, must-revalidate',
'Expires': 'Mon, 26 Jul 1997 05:00:00 GMT',
'Content-type': 'application/json'
});
response.end(retour);
});
// Stopper tout traitement :
return;
}
var uri = url.parse(request.url).pathname;
var filename = path.join(process.cwd(), uri);
console.log("> " + filename);
fs.exists(filename, function(exists) {
if ((!exists) || (fs.lstatSync(filename).isDirectory())) {
console.log(">> fichier inexistant : " + filename);
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write('404 Not Found\n');
response.end();
// Stopper tout traitement :
return;
}
var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
response.writeHead(200, {'Content-Type':mimeType});
var fileStream = fs.createReadStream(filename);
fileStream.pipe(response);
});
//var p = new Personne({
// nom: 'Pons',
// prenom: 'Olivier'
//});
//p.save(function (err) {
// if (err) {
// return console.log(err);
// }
// var query = Personne.find();
// query.select('nom prenom');
// query.exec(function (err, p) {
// if (err) return console.log(err);
// for (var i = 0; i < p.length; i++) {
// console.log(p[i].nom+' '+p[i].prenom);
// };
// console.log('Nombre total d\'enregistrements : '+p.length);
// });
//})
});
// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);
// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");
});
Ajouter dans wp-config.php
define('FS_METHOD', 'direct');
Bonjour,
Voici en ligne la première partie, version non définitive, des cours que nous entamons sur les systèmes de gestion de contenu.
Cliquez ici pour le récupérer.
Je mets en disponibilité mes sources pour la configuration complète d’un clavier AZERTY tel que je l’ai expliqué dans la page de configuration du clavier.
Pour tous ceux qui veulent le récupérer et le compiler, cela se passe par là.
Cliquez ici pour avoir la version PDF.
Si vous avez des remarques, si vous voulez des ajouts, n’hésitez pas à laisser un commentaire !
Je vais expliquer comment j’ai configuré mon clavier.
Tout d’abord voici les…
Donc voici ce que j’ai mis en place. Avant de le montrer…
j’appuie sur une touche « FN » (fonction) et la lettre « e » et hop il me fait tout. Vous pourriez tout à fait dire « oui mais on peut tout à fait faire ça sur l’éditeur : on configure un raccourci clavier. Ce à quoi je répondrai : oui mais tu ne peux pas prendre ta configuration et faire du plug n play n’importe où, alors que mon Ergodox, je le prends et je le branche sur n’importe quel PC, ça fonctionnera ! 🙂Donc voici les images de…
…même s’ils elles ne sont pas très lisibles, cliquez dessus pour avoir la version plus grande :
AZERTY normal :
,--------------------------------------------------. ,--------------------------------------------------.
| Esc | & 1 | é 2 | " 3 | ' 4 | ( 5 | ^L3 | | Pscr | - 6 | è 7 | _ 8 | ç 9 | à 0 | Bspc |
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
| Tab | a A | z Z | e E | r R | t T | Bspc | | ~L1 | y Y | u U | i I | o O | p P | ^ ¨ |
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
| . | q Q | s S | d D | f F | g G |------| |------| h H | j J | k K | l L | m M | Enter |
|--------+------+------+------+------+------| Ent | | Ins |------+------+------+------+------+--------|
| Lsft | w W | x X | c C | v V | b B | | | | n N | , ? | ; . | : / | ! § | Rsft |
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
| LCtl | LGui | LAlt | Lsft | Del | | Spc | Spc | RAlt | RGui | RCtl |
`----------------------------------' `----------------------------------'
,-------------. ,-------------.
| Copy | Pste | | Nbsp | F8 |
,------|------|------| |------+------+------.
| | | Cut | | <> | | |
| ~L1 | ~L2 |------| |------| ~L2 | ~L1 |
| | | Del | | </> | | |
`--------------------' `--------------------'
Caractères pour le développement à gauche, mouvements du curseur et copier coller à droite :
,--------------------------------------------------. ,--------------------------------------------------.
| Esc | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | Bspc |
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
| Tab | \ | < | _ | > | | | $ | | Cut | Copy | Ct-← | ↑ | Ct-→ | Pste | ^ ¨ |
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
| - | { | ( | / | ) | } |------| |------| Home | ← | ↓ | → | End | Enter |
|--------+------+------+------+------+------| = | | - |------+------+------+------+------+--------|
| Lsft | # | [ | * | ] | @ | | | | - | PgUp | Ins | PgDn | PEnt | Rsft |
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
| LCtl | LGui | LAlt | ~ | Lsft | | 0 | . | RAlt | RGui | RCtl |
`----------------------------------' `----------------------------------'
,-------------. ,-------------.
| - | - | | - | - |
,------|------|------| |------+------+------.
| | | - | | - | | |
| - | - |------| |------| - | - |
| | | - | | - | | |
`--------------------' `--------------------'
Les touches accentuées à gauche, pavé numérique à droite :
,--------------------------------------------------. ,--------------------------------------------------.
| Esc | - | - | - | - | - | - | | - | - | NLCK | / | * | - | Bspc |
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
| Tab | - | ô | â | à | - | - | | - | - | 7 | 8 | 9 | + | ^ ¨ |
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
| - | ë | é | - | è | - |------| |------| - | 4 | 5 | 6 | + | PEnt |
|--------+------+------+------+------+------| - | | % |------+------+------+------+------+--------|
| Lsft | - | - | û | ù | - | | | | - | 1 | 2 | 3 | PEnt | Rsft |
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
| LCtl | LGui | LAlt | Spc | Lsft | | 0 | . | RAlt | RGui | RCtl |
`----------------------------------' `----------------------------------'
Trois macros à gauche, et les touches de fonction sur tout le clavier :
,--------------------------------------------------. ,--------------------------------------------------. | Esc | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | Bspc | |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | - | - | <> | - | </> | - | - | | - | - | - | - | - | - | - | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | - | - | - | - | Nbsp | - |------| |------| - | - | - | - | - | - | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | - | - | - | - | - | | - | - | - | - | - | `----------------------------------' `----------------------------------' ,-------------. ,-------------. | +L2 | Home | | PgUp | Del | ,------|------|------| |------+------+------. | | | End | | PgDn | | | | BkSp | ESC |------| |------| Enter| Space| | | | Spc | | Ins | | | `--------------------' `--------------------'
Pour jouer à Trackmania : touches pour accélérer, droite et gauche, et toutes les autres touches sont annulées :
,--------------------------------------------------. ,--------------------------------------------------. | - | - | - | - | - | - | -L4 | | -L4 | - | - | - | - | - | - | |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | - | Bspc | z Z | Del | - | - | - | | - | - | Bspc | ↑ | Del | - | - | |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | - | q Q | s S | d D | - | - |------| |------| - | ← | ↓ | → | - | - | |--------+------+------+------+------+------| - | | - |------+------+------+------+------+--------| | - | - | - | - | - | - | | | | - | - | - | - | - | - | `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | - | - | - | - | - | | - | - | - | - | - | `----------------------------------' `----------------------------------' ,-------------. ,-------------. | - | - | | - | - | ,------|------|------| |------+------+------. | | | - | | - | | | | - | - |------| |------| - | - | | | | - | | - | | | `--------------------' `--------------------'
Voici la dernière étape de ma recherche concernant le silence. J’ai retrouvé des vis qui servent à soutenir des disques dur, et à amortir leur bruit via un petit morceau en plastique :
J’ai donc pris le petit morceau qui sert à amortir, et j’y ai adjoint un oring rouge :
Ensuite, j’ai fait ma petite « tour » ainsi :
Et je l’ai mise sous le clavier, ainsi :
J’ai fait la même chose pour les 4 coins les plus extrêmes du clavier. Je vous montre les deux de devant :
Ce qui fait que maintenant, dès que je frappe, le son est totalement amorti, et ne suit pas sur le support sur lequel est posé l’Ergodox.
Configuré ainsi, mon clavier est à la fois l’un des plus silencieux que je connaisse, mais aussi un des plus agréables à utiliser. Il ne me reste plus qu’à terminer ma configuration, jour après jour, pour savoir là où sont les touches qui me manquent le plus et les mettre directement en relation là où ma main a envie de taper. Bien sûr, après plus de 15 ans de pratique quotidienne d’un clavier AZERTY, je ne veux pas passer du temps à tout réapprendre, donc je l’ai laissé pour l’instant tel quel, mais j’ai défini pas mal d’autres raccourcis claviers et maintenant, je commence à aller presque aussi vite qu’avec mon autre clavier quand je tape en français. Pour le reste, et surtout pour le développement, qui nécessite beaucoup de mouvements de curseurs, de copier coller, etc, c’est tout de même beaucoup plus difficile de m’adapter, même si je gagne énormément de temps sur toutes les touches bien énervantes à avoir telles que toutes les touches avec ALTGR. Là je gagne un temps énorme. Mais j’en dis plus dans la prochaine page consacrée à l’ergodox, sur ma configuration AZERTY.
Si votre clavier a des touches mécaniques, il risque fort de vous gêner par son bruit. Une solution très efficace est de commander des Oring. Ce sont des petits anneaux qui se mettent dans chaque touche et qui amortissent le choc, voire pour les Oring bleus, qui empêchent les touches d’aller au bout de leur course, coupant totalement le bruit de choc.
Attention, forcément, les touches ne se comporteront plus exactement comme avant, et cela peut déstabiliser des gens. Certains peuvent même préférer le bruit et garder les sensation « clicky » des touches.
Personnellement, j’ai des oring rouges, et donc il n’y a aucun clic : les pressions sont linéaires donc peu importe la distance de pression. J’ai ainsi mis des Oring bleus et franchement, je n’ai jamais eu un clavier aussi agréable au toucher et aussi silencieux. Pourvu que ça dure !