Giter Site home page Giter Site logo

zenika-formation-framework's Introduction

Zenika Formation Framework

Utilisé par toutes nos formations, comme sur le Modèle

Contenu

  • README.md => ce fichier
  • package.json => la carte d'identité du package pour npm
  • Gruntfile.js => le fichier de build utilisé par grunt (son contenu est détaillé dans la suite)
  • index.html => le template des slides (voir section dédiée)
  • styleCahierExercice.css => le fichier de style pour le cahier de TP
  • reveal => le repertoire contenant reveal.js customisé pour les formations
  • deploy.js => script gérant le déploiement sur AppEngine
  • ic.js => script gérant la création du job CircleCI

Principes

Le framework des formations est un package npm à part entière. Il est importé dans les formations via npm.

  "dependencies": {
    "grunt": "^0.4.5",
    "zenika-formation-framework": "X.Y.Z"
  },
  "script": {
    "deploy": "zenika-formation-deploy"
  }

Slides

Le framework utilisé pour les slides est Reveal.js. Il a été customisé pour les besoins des formations Zenika.

Le code de Reveal, ainsi que le thème utilisé, se trouve dans le framework de formation. Le contenu des slides, spécifique à chaque formation se trouve dans le repository dédié de chacune des formations utilisant le framework. Ainsi, chaque formation peut choisir la version du framework qu'elle souhaite utiliser, et les modifications de thème peuvent facilement être prises en compte dans chaque formation via npm.

Vous pouvez également surcharger les options de la librairie Reveal utilisé par le framework. Pour cela, il faut ajouter un fichier framework/index.js dans le répertoire Slides. Voici un exemple de fichier :

window.overrideOptions = function(defaultOptions){
    return {
      ...defaultOptions,
      dependencies: [
        ...defaultOptions.dependencies,
        { src: 'framework/Chart.min.js', condition() { return true; } },
        { src: 'framework/csv2chart.js', condition() { return true; } },
      ]
    }
  }

Dans le code ci-dessous, j'ajoute les dépendances Chart.min.js et csv2chart.js afin de pouvoir faire des graphes directement dans les slides. Ces deux fichiers javascript seront également dans le répertoire framework précédemment créé.

Architecture

Pour une formation F donnée, le framework se trouve dans le répertoire ./node_modules/zenika-formation-framework/, le contenu des slides dans ./Slides/. Le serveur utilise 2 baseDir qui sont ./node_modules/zenika-formation-framework/, puis ./Slides/. Ainsi, il est possible d'utiliser des ressources dans le contenu des slides (dans les fichiers ./Slides/*.md) avec un chemin relatif simple.

La configuration du serveur est faite dans ./node_modules/zenika-formation-framework/Gruntfile.js.

La configuration de reveal est faite dans ./node_modules/zenika-formation-framework/reveal/run.js.

Le thème est défini dans ./node_modules/zenika-formation-framework/reveal/theme-zenika.

Cahier d'Exercices de TP

Les exercices de TP sont écrits également en markdown, puis convertis en PDF grâce à markdown-pdf.

Le contenu du cahier de TP doit se trouver dans ./CahierExercices/Cahier.md, ou dans plusieurs fichiers .md distincts. Dans ce dernier cas, un fichier parts.json doit indexer les fichier .md sur le même principe que pour les slides. Le fichier de style utilisé est ./node_modules/zenika-formation-framework/styleCahierExercice.css

Commandes et utilisation

Launch/build arguments

The following args are available to customize the build:

  • slides-folder to define the folder name containing the slides (useful when the training is translated in different languages)
    • Defaults to Slides
  • labs-folder to define the folder name containing the labs (useful when the training is translated in different languages)
    • Defaults to CahierExercices
  • port to define the port of the HTTP server
    • Defaults to 8000

deploy.js

Permet d'installer et d'utiliser l'outil gcloud de Google pour déployer sur AppEngine un projet statique. Nécessite 2 variables d'environnement:

GAE_SERVICE_ACCOUNT=email de service
GAE_KEY_FILE_CONTENT=clé au format json

Ce script est utilisé par les formations pour se déployer via npm run deploy.

ic.js

Permet d'initialiser (ou ré-initialiser) un projet CircleCI à partir d'un repository GitHub.

Nécessite 3 variables d'environnement:

CIRCLE_TOKEN=token circle
GAE_SERVICE_ACCOUNT=email de service
GAE_KEY_FILE_CONTENT=clé au format json

Pour les valeurs, aller sur la documentation de CircleCI sur l'API et l'authentification avec Google

Possibilité de surcharger le nom du projet:

$./ic.js formation-pwa
👷 Welcome jlandure
🚧 Project formation-pwa created
🔧 Env variables set!
💚 All is done! Wait for a green deployment

rebuild-all.js

Forces all CircleCI projects which name starts with formation- to rebuild. This script calls [ic.js](#icjs], it requires the same environment variables. rebuild-all.js is run after the publication of a new framework version so that all depending projects are rebuilt and redeployed with the new version (assuming they use a caret semver range with the same major version that was just published).

Intégration Slack Non disponible en API

De base, tous les builds sont repertoriés sur Slack dans le channel #ic-formation. Pour cela, aller dans CircleCI > Settings du projet > Chat Notifications et indiquer dans le panel Slack https://hooks.slack.com/services/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

NB: Url directe pour le paramétrage https://circleci.com/gh/Zenika/formation-pwa/edit#hooks

Troobleshooting

Dans le wiki

Publish a release

  • Choose the version number.
    • If the release requires changes in depending projects: bump the major version.
    • If the release changes an expected behavior (eg rendering differences) or adds new behaviors: bump the minor version.
    • Otherwise, bump the patch version.
    • As depending projects use a caret semver range (on purpose) and are rebuilt upon every framework release, it is critical to not break depending projects on minor or patch releases.
  • Edit the changelog to add the new release.
  • Run npm version [major|minor|patch].
  • Push master and the new tag.
  • Publish the Docker image.
    • Go to https://hub.docker.com/r/zenika/formation-framework/ (log in to get access).
    • Go to the "Build Settings" tab.
    • Trigger a build for master.
    • Trigger a build for the git tag that was created for the new version, with a Docker tag of the same name.
    • Trigger a build for the same git tag, bit this time with a Docker tag named after the major version only (e.g. v3, v14).
  • Run npm publish.

zenika-formation-framework's People

Contributors

agouriou avatar bnouyrigat avatar ebriand avatar emmanueldemey avatar emrysmyrddin avatar fberthelot avatar ggaulard avatar ggerbaud avatar gmembre-zenika avatar hgwood avatar jlandure avatar l0rd avatar ldez avatar looztra avatar moreau-nicolas avatar nebulis avatar nlepage avatar patou avatar sebbrousse avatar swiip avatar tienslebienz avatar vdemeester avatar yannbertrand avatar zigarn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zenika-formation-framework's Issues

Génération Cahier TP: accents dans les liens image

Ce n'est pas très grave, mais bon à savoir (il faudrait le documenter quoi)

SI on met dans le cahier de TP

![Classe Opérateur](ressources/images/tp1_mise_en_place/operateur_class.png)

l'image d'est pas rendue à cause du caractère accentué dans Opérateur

Pouvoir désactiver la coloration syntaxique automatique

Lorsqu'on ne donne pas une syntaxe à HighlightJS, il essaye de la deviner. Lorsque le bloc de code, n'est pas vraiment un bloc de code (stacktrace, console, commandes shell, fichiers de config...) le résultat est parfois surprenant (la syntaxe Lucène est interprétée comme de la syntaxe SQL par exemple)

Nouveaux types de slides

On lutte trop avec Reveal pour avoir un rendu cohérent suivant nos besoins.

Il faudrait pouvoir avoir plusieurs "types" de slides afin de gérer les problèmes.

Les problèmes :

  • Espace entre les lignes trop grandes si ce n'est pas une liste à puces
  • les bloc de codes ne se disposent pas correctement suivant les situations.
  • etc

Il serait bon de faire un inventaire des problèmes et des pratiques custom pour trouver une solution.

Changement sur les Alert

Avec le framework 0.4.1

## Alert

<!-- .element: class="alert alert-danger" -->
Attention danger!

<!-- .element: class="alert alert-info" -->
Message d'information

Blabla

donne

alert

Visiblement, il faut mettre les .element après le paragraphe et non pas avant:

## Alert

Attention danger!
<!-- .element: class="alert alert-danger" -->

Message d'information
<!-- .element: class="alert alert-info" -->

Blabla

Ajouter une page de garde pour le site hebergé

Le déploiement continue des formations permet d'avoir tout en ligne.
Nous allons créer une page de garde pour avoir accès:

  • slides en ligne
  • PDF (slides et cahier d'exercices)
  • lien vers le github
  • lien vers la description de la formation sur zenika.com

Le but de cette feature est de générer cette page à partir d'info dans le package.json de la formation.

Prévisualiser le cahier d'exercice dans un navigateur

L'idée est de faire comme pour les Slides: on convertit le cahier d'exercice en une ou plusieurs pages HTML avec un watcher et du livereload pour surveiller la mise en page.

Je reconnais qu'on peut certes faire cette prévisualisation avec d'autres outils.

Mise en forme du texte

capture du 2015-08-14 10 07 49

  • Le code inline est trop gros (impression donnée par la police à chasse fixe).
  • L'italique (simple astérisque) c'est pas en italique 😵
  • Le gras (double astérisque) est en italique 😵😵😵

Un petit fond gris clair pour le code inline le ferait mieux ressortir aussi.

Lié à #70

Ajouter des pages spéciales sous-chapitre et démo

Comme la page spéciale "title" qui sert pour l'entête de formation et les entêtes de chapitre, il faudrait un page spéciale "sous-chapitre" pour découper les chapitres un peu longs en plusieurs sous-chapitres.

Comme les pages spécialge "tp[0-9]", il faudrait des pages spéciales pour déclencher une démo.

Régression et Listes

Les puces sur plusieurs niveaux n'ont plus d'indentation.

Reveal 3.1 / Fwk 4.1 -> FAIL
Reveal 3.0 / Fwk 4.0 -> OK

NPM3

NPM3 est sortie de beta.

Le framework ne marche pas avec NPM3.

>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-sed/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-contrib-connect/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-contrib-watch/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-contrib-clean/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-contrib-copy/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-filerev/tasks" not found.
>> Tasks directory "c:\sources\zenika\formations\formation-tdd\node_modules\zenika-formation-framework/node_modules/grunt-filerev-replace/tasks" not found.

Problème de numéro de version

Actuellement package.json definit la version comme 0.3.3 or il existe un release 0.3.4.

Il faudrait peut être faire monter la version en 0.3.5 pour corriger le pb ou juste 0.3.4.

PDF des diapos pas présentable

La génération du PDF des diapos pose certains problèmes :
- Les proportions qu'on a lors de l'affichage par grunt ne sont pas gardées :
+ Les images sont réduites.
+ Le texte ne prend pas toute la page.
- Du texte se chevauche : Ex : "==> http://<>/dddd" en bas de page se retrouve sur le texte structuré par puce.

Bref, ça ne peut être présenter à un client et doit être solutionné avant de donner une formation sous le nouveau format.

Mise en forme des blocs de code

Le gros cadre rouge pleine largeur sur les blocs de code est un peu "agressif". Des fois on veut poser un bloc de code pour profiter de l'indentation sans forcément que ca apparaisse comme le truc le plus important du slide.

Exemple ci dessous : le 2eme bloc de code OK, c'est effectivement un bloc de code. Mais le 2ème, c'est un prototype de méthode, je ne veux pas que ca ne ressorte comme un bloc de code.

capture du 2015-08-14 10 53 15

Lié à #70

Génération d'un Cahier de TP avec plus de 10 parties: possible EventEmitter memory leak detected

Au final ca fonctionne mais il y a un warning inquiétant

Running "generateCahierExercice" task
Using CSS file /media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/styleCahierExercice.css
Using highlightPath file /media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/reveal/theme-zenika/code.css
Using md sources files [ 'CahierExercices/Cahier.md',
  'CahierExercices/tp1_mise_en_place.md',
  'CahierExercices/tp2_premiere_utilisation.md',                                                                                                
  'CahierExercices/tp3_relation_1_n.md',                                                                                                        
  'CahierExercices/tp4_relation_n_n.md',                                                                                             
  'CahierExercices/tp5_relation_1_1.md',                                                                                             
  'CahierExercices/tp6_relation_bidirectionnelle.md',                                                                                
  'CahierExercices/tp7_heritage.md',                                                                                                 
  'CahierExercices/tp8_composant.md',                                                                                                
  'CahierExercices/tp9_requetes_avancees.md',                                                                                        
  'CahierExercices/tp10_optimisation.md',                                                                                            
  'CahierExercices/tp11_architecture.md' ]                                                                                           
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.     
Trace                                                                                                                                
    at SeriesStream.addListener (events.js:160:15)                                                                                   
    at SeriesStream.Readable.on (_stream_readable.js:708:33)                                                                         
    at SeriesStream.on (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:12:38)                                                                   
    at SeriesStream.once (events.js:185:8)                                                                                           
    at ReadStream.Readable.pipe (_stream_readable.js:560:8)                                                                          
    at SeriesStream._next (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:42:8)                                                                 
    at ReadStream.g (events.js:180:16)                                                                                               
    at ReadStream.emit (events.js:117:20)                                                                                            
    at _stream_readable.js:944:16                                                                                                    
    at process._tickCallback (node.js:448:13)                                                                                        
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.     
Trace                                                                                                                                
    at SeriesStream.addListener (events.js:160:15)
    at SeriesStream.Readable.on (_stream_readable.js:708:33)
    at SeriesStream.on (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:12:38)
    at ReadStream.Readable.pipe (_stream_readable.js:495:8)
    at SeriesStream._next (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:42:8)
    at ReadStream.g (events.js:180:16)
    at ReadStream.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickCallback (node.js:448:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at SeriesStream.addListener (events.js:160:15)
    at SeriesStream.Readable.on (_stream_readable.js:708:33)
    at SeriesStream.on (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:12:38)
    at ReadStream.Readable.pipe (_stream_readable.js:510:8)
    at SeriesStream._next (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:42:8)
    at ReadStream.g (events.js:180:16)
    at ReadStream.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickCallback (node.js:448:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at SeriesStream.addListener (events.js:160:15)
    at SeriesStream.Readable.on (_stream_readable.js:708:33)
    at SeriesStream.on (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:12:38)
    at SeriesStream.once (events.js:185:8)
    at ReadStream.Readable.pipe (_stream_readable.js:555:8)
    at SeriesStream._next (/media/OS/Work/Formation/formation-jpa/node_modules/zenika-formation-framework/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:42:8)
    at ReadStream.g (events.js:180:16)
    at ReadStream.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickCallback (node.js:448:13)
PDF généré: PDF/Zenika-Formation-JPA-CahierExercices.pdf

Grunt server écoute sur 0.0.0.0

Cela signifie que pendant la formation le stagiaire un peu débrouillard est capable d'aspirer les slides depuis sa machine, sans qu'on s'en rende compte.

Il vaudrait mieux écouter sur 127.0.0.1.

Many errors when checking out zenika-framework

Hello,

When running the following command under Ubuntu 14.04.2 LTS under my directory :
sudo npm install zenika-framework

I get many errors, which are the following :
npm ERR! Error: ENOENT, lstat '/home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/mustache/test/spec/specs/partials.yml'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/formation/formation-securite/node_modules/zenika-
formation-
framework/node_modules/reveal.js/node_modules/mustache/test/spec/specs/partials.yml
npm ERR! fstream_path /home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/mustache/test/spec/specs/partials.yml
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat '/home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/formation/formation-securite/node_modules/zenika-
formation-
framework/node_modules/reveal.js/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png
npm ERR! fstream_path /home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat '/home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/markdown-
pdf/node_modules/stream-from-to/node_modules/concat-
stream/node_modules/readable-stream/lib/_stream_writable.js'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/formation/formation-securite/node_modules/zenika-
formation-framework/node_modules/markdown-pdf/node_modules/stream-from-
to/node_modules/concat-stream/node_modules/readable-
stream/lib/_stream_writable.js
npm ERR! fstream_path /home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/markdown-
pdf/node_modules/stream-from-to/node_modules/concat-
stream/node_modules/readable-stream/lib/_stream_writable.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! error rolling back Error: ENOTEMPTY, rmdir
'/home/julien/formation/formation-securite/node_modules/zenika-formation-
framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules'
npm ERR! error rolling back [email protected] { [Error:
ENOTEMPTY, rmdir '/home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules' }
npm ERR! weird error 1
npm ERR! Error: ENOENT, lstat '/home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/socket.io/node_modules/socket.io-
client/dist/WebSocketMain.swf'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/formation/formation-securite/node_modules/zenika-
formation-
framework/node_modules/reveal.js/node_modules/socket.io/node_modules/socket.io-
client/dist/WebSocketMain.swf
npm ERR! fstream_path /home/julien/formation/formation-
securite/node_modules/zenika-formation-
framework/node_modules/reveal.js/node_modules/socket.io/node_modules/socket.io-
client/dist/WebSocketMain.swf
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, open '/home/julien/tmp/npm-22272-
e_Axk9_e/1425292431570-0.23129954049363732/package/encodings/sbcs-data.js'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/tmp/npm-22272-
e_Axk9_e/1425292431570-0.23129954049363732/package/encodings/sbcs-data.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! Error: ENOENT, lstat '/home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules/errorhandler/node_modules/accepts/node_modules/mime-
types/node_modules/mime-db/db.json'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Linux 3.16.0-31-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "zenika-formation-
framework"
npm ERR! cwd /home/julien/formation/formation-securite
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/julien/formation/formation-securite/node_modules/zenika-
formation-framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules/errorhandler/node_modules/accepts/node_modules/mime-
types/node_modules/mime-db/db.json
npm ERR! fstream_path /home/julien/formation/formation-
securite/node_modules/zenika-formation-framework/node_modules/grunt-contrib-
connect/node_modules/connect/node_modules/errorhandler/node_modules/accepts/node_modules/mime-
types/node_modules/mime-db/db.json
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)

Looks like afterwards things are not working.

Interesting facts :

  • Under Ubuntu the nodejs executable is named nodejs and not node
  • NodeJS is in version 0.10.25

Problème de margin

il y a un problème sur les espaces entre les paragraphes. Ils sont plus étroit que les espaces entre les listes:

Paragraphes:
capture du 2015-08-14 09 57 04

Listes:
capture du 2015-08-14 09 59 02

Liste = énumération donc pas de séparation

Paragraphe = nouveau sujet --> séparation

Lié à #70

Upgrade 0.3.x -> 0.4.0

Serait-il possible d'indiquer (pourquoi pas dans le CHANGELOG) que lors de l'upgrade du framwork il faut rajouter dans le package.json de la formation le bloc :

"config": {
    "deploy": {
      "name": "zen-formation-replace-me"
    }
  }

?

https vs SSH

NPM ne marche plus avec les dépendances du type "git+https:"

J'utilise npm 2.9.0 et node 0.12.0

Pour faire fonctionner npm je suis obligé de changer les urls en "git+ssh:"

Titre de la formation

Faire que le titre la présentation dans le navigateur soit le titre écris dans le package.json

Actuellement le titre est écrit en dur dans le fichier index.html :

<title>Formation Zenika</title>

Cela permettra de générer le fichier PDF des slides avec le bon nom.

Problème à l'export PDF

Sur la formation AngularJS, le plan dépasse la taille de la slide (en longueur) et pose problème à la génération PDF (la page est vide, seul le titre de la slide est présent).

Le problème a lieu aussi bien lors de la génération manuelle (print-pdf) que de la génération automatique

Problème rencontré sur Windows 7 + Chrome 41

Déploiement continue des branches

Ca pourrait être pratique d'avoir le déploiement continue sur les branches du repo également.

Ca permettrait par exemple de faire des revues de PR directement en lisant les slides mis à jour.

Est ce seulement possible ?

Améliorer le style/les CSS

Je sais que je prends le risque de déplaire: les goûts, les couleurs tout ça, tout ça...

Les listes à puces sont trop espacées et prennent trop de place (surtout lorsqu'on convertit des slides ODP avec mdconvert.js).

.reveal li {
    margin: 0.4em 0;
}

Lorsque on attache du code à une puce, le code se retrouve ratatiné à droite

.reveal ol, .reveal ul {
    display: block;
}

Les tableaux sont plus élégants avec un peu de couleur et du row stripping:

.reveal .slides table {
  border: solid white 1px;
}
.reveal .slides table thead th{
  border: 1px solid white;
  background: #999;
}
.reveal .slides table tbody tr:nth-child(even) {
  background: #FFF;
}
.reveal .slides table tbody tr:nth-child(odd) {
  background: #CCC;
}
.reveal .slides table tbody td{
  border: 1px solid white;
  padding: 10px;
}

On a souvent besoin régler de manière spécifique les CSS pour un slide (histoire de positionner un bloc de texte, de faire des colonnes...). Il serait bon d'avoir dans chaque formation un custom.css spécifique (même vide) qui serait linké depuis le index.html

Gérer plusieurs cahiers

Dans la formation Git, les TPs viennent avec un deuxième cahier pour les solutions.
Il faudrait que le générateur de PDF puisse voir s'il y a un CahierSolution.md ou un parts-solution.json pour générer le PDF correspondant.

Remplacement de Grunt par Gulp

Je pense que le remplacement de Grunt par Gulp serait utile pour simplifier les évolutions.

Un exemple est le générateur gulp-angular de @Swiip.

Pourquoi je dis ca ?

  • Pouvoir avoir un fichier clair et isolé pour chaque tache.
  • les plugins sont très puissant et simple de configuration
  • utilisation de gulp-inject
  • utilisation de BrowserSync pour le hot reload.
  • vive les streams

Je laisse @Swiip compléter pour expliquer pourquoi Gulp c'est mieux.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.