SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Templer, Git, Bootstrap, PHP : des outilsTempler, Git, Bootstrap, PHP : des outils
libres pour concevoir le site d’une Websérielibres pour concevoir le site d’une Websérie
2
Casting
Clément OUDOT
Webmaster du site
DonJon Legacy
Libriste
Premier site web en 1997
3
Épisode précédent
RMLL 2014 : conférence sur le site Anticuisine
4
La série : DonJon Legacy
Bande annonce : https://www.youtube.com/watch?v=1GtwdA92f6U
5
Chapitres
● Pourquoi faire un site statique HTML ?
● Présentation de Templer
● Mise en page avec Bootstrap et CSS
● Envoi d’un mail par script PHP
● Gestion du code dans Git
6
Pourquoi faire
un site
statique ?
7
Sécurité
● Pas de script coté serveur
● Pas d'injection de formulaire
● Pas de mot de passe ni de données bancaires
8
Performances
● Pas de calcul côté serveur
● Big data / cluster
● No SQL, et rien d'autre non plus
● Utilisation optimale du cache HTTP
9
Accessibilité
● Utilisation des dernières normes du Web
● Framework CSS et JS
● Référencement naturel
10
Hébergement
● « Host everywhere »
● Fichiers dans un répertoire
● Serveur web basique
● Environnement de développement local simple
● Fonctionne même sur des systèmes d'exploitation
propriétaires !
11
PrésentationPrésentation
de Templerde Templer
12
Templer
● Logiciel libre de génération de sites statiques
● Écrit en Perl
● Utilisation de HTML::Template
● Support de Markdown, Redis, Flux RSS, …
● https://github.com/skx/templer
13
mon-site/
├── include
├── input
│ ├── about.wgn
│ ├── index.wgn
│ └── robots.txt
├── layouts
│ └── default.layout
├── output
└── templer.cfg
Structure du site
● Génération d’une
structure de base :
– Include : fichiers
communs
– Input : les fichiers qui
seront convertis
– Layout : les modèles
– Output : site généré
14
Gestion multilingue
● Création de dossiers fr/ et en/
● Utilisation des variables de page
● Corps de la page dans des documents inclus
● Variables « fr-link » et « en-link » pour changer de
langue
● Configuration Apache pour redirection selon la langue
du navigateur
15
title: Accueil
en-link: /en/index.html
text_menu_hall: Hall
text_menu_dungeon: Donjon
----
<!-- tmpl_include name="head.inc"-->
<!-- tmpl_include name="menu.inc"-->
<!-- tmpl_include name="home.inc"-->
<!-- tmpl_include name="menu_foot.inc"--
>
<!-- tmpl_include name="banner_fr.inc"-->
<!-- tmpl_include name="foot.inc"-->
Code Templer
<ul class="nav navbar-nav navbar-right">
<!-- tmpl_if name="fr-link" -->
<li><a href="<!-- tmpl_var name="fr-link" -->"><img
src="/images/fr.png" alt="fr" /></a></li>
<!-- /tmpl_if -->
<!-- tmpl_if name="en-link" -->
<li><a href="<!-- tmpl_var name="en-link" -->"><img
src="/images/en.png" alt="en" /></a></li>
<!-- /tmpl_if -->
</ul>
16
Redirection Apache
       RewriteEngine On
       RewriteCond %{HTTP:Accept-Language} ^en [NC]
       RewriteRule ^/$ /en/ [L,R=301]
       RewriteCond %{HTTP:Accept-Language} ^fr [NC]
       RewriteRule ^/$ /fr/ [L,R=301]
17
Mise en page avecMise en page avec
Bootstrap et CSSBootstrap et CSS
18
Bootstrap
● Framework CSS et JS (base sur JQuery)
● Système de grille (grid) avec gestion des media
queries (responsive design)
● Composants graphiques (boutons, tableaux,
panneaux)
● Modification du thème possible (Less)
● Voir http://getbootstrap.com et
https://bootswatch.com/
19
Exemple
<div class="text-center">
 <div class="alert alert-djl">
   <tmpl_var name="text_watch_channels" />
   <a class="btn btn-default" href="https://www.youtube.com/channel/UCVO3scwrW2QEyxiVcBbEbtw"><i
class="fa fa-youtube"></i></a>
   <a class="btn btn-default" href="http://www.dailymotion.com/donjonlegacy"><i class="fa fa-video-
camera"></i></a>
 </div>
</div>
20
Autres frameworks
● Font Awesome :
– Galerie d’icônes
– http://fontawesome.io/
● Hover :
– Animations
– http://ianlunn.github.io/Hover/
21
Animations personnalisées
h1 {
 animation: djl-text 1s;
}
@keyframes djl-text {
 0% {
   text-shadow: 0px 0px 10px #000;
   margin-left: 100px;
   color: #32728a;
 }
 100% {
   text-shadow: 0px 0px 5px #32728a;
 }
}
22
EnvoiEnvoi
d’un maild’un mail
en PHPen PHP
23
Du code PHP ?
● Pour certaines fonctionnalités, comme formulaire de
contact avec envoi de mail, un script est nécessaire
● PHP est un langage simple et présent sur la plupart des
serveurs Web
● Formulaire HTML dans une page statique
● Réception du POST dans le script PHP, qui renvoie vers
une page statique après traitement
24
Formulaire
   <form action="/mail.php" method="post">
     <select name="subject" class="form-control">
       <option value="<!-- tmpl_var name="text_contact_team" -->"><!-- tmpl_var
name="text_contact_team" --></option>
       <option value="<!-- tmpl_var name="text_contact_help" -->"><!-- tmpl_var
name="text_contact_help" --></option>
     </select>
     <input type="text" name="mail" placeholder="<!-- tmpl_var name="text_contact_mailinput" -->"
class="form-control" />
     <textarea name="message" class="form-control" rows="5"></textarea>
     <input type="hidden" name="returnlink" value="<!-- tmpl_var name="returnlink" -->" />
     <input type="submit" class="form-control" />
   </form>
25
Code PHP
   $subject = $_POST["subject"];
   $message = $_POST["message"];
   $mail = $_POST["mail"];
   $returnlink = $_POST["returnlink"];
   if (!$returnlink) {
       $returnlink = "http://www.donjonlegacy.com";
   }
   if (!$subject or !$message) {
       header("Location: " . $returnlink);
       exit;
   }
26
GestionGestion
du codedu code
dans Gitdans Git
27
Utilisation de Git
● Gestion des versions et visualisation des modifications
● Sauvegardes
● Branches pour tests
● Collaboration
28
Du développement à la mise en ligne
● Sur le poste de travail :
– git commit
– git push
● Sur le serveur :
– git pull
– templer -f
29
GitHub
● Service Git en ligne le plus populaire
● Mais des alternatives existent :
– https://about.gitlab.com/
– https://framagit.org/
● Code du site Donjon Legacy disponible sur
https://github.com/coudot/donjonlegacy
30
Questions ?
31
http://www.donjonlegacy.comhttp://www.donjonlegacy.com
https://github.com/coudot/donjonlegacyhttps://github.com/coudot/donjonlegacy

Contenu connexe

Tendances

[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...Clément OUDOT
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirYves Van Goethem
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Africa Performances
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3Horacio Gonzalez
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasBruno Bonnin
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partiekadzaki
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
Drupal - La puissance de Drush
Drupal - La puissance de DrushDrupal - La puissance de Drush
Drupal - La puissance de DrushAlexandre Marie
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Initiation au php
Initiation au phpInitiation au php
Initiation au phpStrasWeb
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaMahdi Ben Alaya
 
Créez votre site web vous-même 1/2
Créez votre site web vous-même 1/2Créez votre site web vous-même 1/2
Créez votre site web vous-même 1/2pro-info.be
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 

Tendances (20)

[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenir
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8
 
Formation cakephp
Formation cakephpFormation cakephp
Formation cakephp
 
Cakephp
CakephpCakephp
Cakephp
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pas
 
Laravel Blade
Laravel BladeLaravel Blade
Laravel Blade
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partie
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
Drupal - La puissance de Drush
Drupal - La puissance de DrushDrupal - La puissance de Drush
Drupal - La puissance de Drush
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben Alaya
 
Créez votre site web vous-même 1/2
Créez votre site web vous-même 1/2Créez votre site web vous-même 1/2
Créez votre site web vous-même 1/2
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 

Similaire à [RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le site d'une Websérie

PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
RMLL 2014 - Site statique avec Templer, Bootstrap et Git
RMLL 2014 - Site statique avec Templer, Bootstrap et GitRMLL 2014 - Site statique avec Templer, Bootstrap et Git
RMLL 2014 - Site statique avec Templer, Bootstrap et GitClément OUDOT
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1fayway
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
ppt1.pptx
ppt1.pptxppt1.pptx
ppt1.pptxadiouf2
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
alphorm.com - Formation Windows 8.1 (70-688)
alphorm.com - Formation Windows 8.1 (70-688)alphorm.com - Formation Windows 8.1 (70-688)
alphorm.com - Formation Windows 8.1 (70-688)Alphorm
 
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)Alphorm
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisChipway
 
Créez votre site web vous-même 2/2
Créez votre site web vous-même 2/2Créez votre site web vous-même 2/2
Créez votre site web vous-même 2/2pro-info.be
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Guillaume Sautereau
 

Similaire à [RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le site d'une Websérie (20)

PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
PHP et PHP Framework
PHP et PHP FrameworkPHP et PHP Framework
PHP et PHP Framework
 
RMLL 2014 - Site statique avec Templer, Bootstrap et Git
RMLL 2014 - Site statique avec Templer, Bootstrap et GitRMLL 2014 - Site statique avec Templer, Bootstrap et Git
RMLL 2014 - Site statique avec Templer, Bootstrap et Git
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
ppt1.pptx
ppt1.pptxppt1.pptx
ppt1.pptx
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
alphorm.com - Formation Windows 8.1 (70-688)
alphorm.com - Formation Windows 8.1 (70-688)alphorm.com - Formation Windows 8.1 (70-688)
alphorm.com - Formation Windows 8.1 (70-688)
 
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
Créez votre site web vous-même 2/2
Créez votre site web vous-même 2/2Créez votre site web vous-même 2/2
Créez votre site web vous-même 2/2
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
 
Cours Php
Cours PhpCours Php
Cours Php
 

Plus de Clément OUDOT

[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0Clément OUDOT
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...Clément OUDOT
 
[OW2Con 2018] The FusionIAM project
[OW2Con 2018] The FusionIAM project[OW2Con 2018] The FusionIAM project
[OW2Con 2018] The FusionIAM projectClément OUDOT
 
[OSSPARIS17] Le guide du connard du logiciel libre
[OSSPARIS17] Le guide du connard du logiciel libre[OSSPARIS17] Le guide du connard du logiciel libre
[OSSPARIS17] Le guide du connard du logiciel libreClément OUDOT
 
[OSSPARIS17] Des logiciels libres pour la gestion des identités !
[OSSPARIS17] Des logiciels libres pour la gestion des identités ![OSSPARIS17] Des logiciels libres pour la gestion des identités !
[OSSPARIS17] Des logiciels libres pour la gestion des identités !Clément OUDOT
 
[RMLL2017] le guide du connard du logiciel libre
[RMLL2017] le guide du connard du logiciel libre[RMLL2017] le guide du connard du logiciel libre
[RMLL2017] le guide du connard du logiciel libreClément OUDOT
 
[RMLL2017] LDAPCon 2017
[RMLL2017] LDAPCon 2017[RMLL2017] LDAPCon 2017
[RMLL2017] LDAPCon 2017Clément OUDOT
 
[OW2Con 2017] News from LemonLDAP::NG
[OW2Con 2017] News from LemonLDAP::NG[OW2Con 2017] News from LemonLDAP::NG
[OW2Con 2017] News from LemonLDAP::NGClément OUDOT
 
[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel LibreClément OUDOT
 
KR2016 The Free Software Bastard Guide
KR2016 The Free Software Bastard GuideKR2016 The Free Software Bastard Guide
KR2016 The Free Software Bastard GuideClément OUDOT
 
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NGS2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NGClément OUDOT
 
The guide of Security Jerk
The guide of Security JerkThe guide of Security Jerk
The guide of Security JerkClément OUDOT
 
The wonderful story of Web Authentication and Single-Sign On
The wonderful story of Web Authentication and Single-Sign OnThe wonderful story of Web Authentication and Single-Sign On
The wonderful story of Web Authentication and Single-Sign OnClément OUDOT
 
Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016Clément OUDOT
 
[JDLL 2016] OpenID Connect et FranceConnect
[JDLL 2016] OpenID Connect et FranceConnect[JDLL 2016] OpenID Connect et FranceConnect
[JDLL 2016] OpenID Connect et FranceConnectClément OUDOT
 
[OSSParis 2015] The OpenID Connect Protocol
[OSSParis 2015] The OpenID Connect Protocol[OSSParis 2015] The OpenID Connect Protocol
[OSSParis 2015] The OpenID Connect ProtocolClément OUDOT
 
[OW2Con 2015] LemonLDAP::NG 2.0 overview
[OW2Con 2015] LemonLDAP::NG 2.0 overview[OW2Con 2015] LemonLDAP::NG 2.0 overview
[OW2Con 2015] LemonLDAP::NG 2.0 overviewClément OUDOT
 
[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect Protocol[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect ProtocolClément OUDOT
 
Analyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKAnalyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKClément OUDOT
 
Le Guide du Connard du Logiciel Libre
Le Guide du Connard du Logiciel LibreLe Guide du Connard du Logiciel Libre
Le Guide du Connard du Logiciel LibreClément OUDOT
 

Plus de Clément OUDOT (20)

[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0[FOSDEM 2019] LemonLDAP::NG 2.0
[FOSDEM 2019] LemonLDAP::NG 2.0
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
 
[OW2Con 2018] The FusionIAM project
[OW2Con 2018] The FusionIAM project[OW2Con 2018] The FusionIAM project
[OW2Con 2018] The FusionIAM project
 
[OSSPARIS17] Le guide du connard du logiciel libre
[OSSPARIS17] Le guide du connard du logiciel libre[OSSPARIS17] Le guide du connard du logiciel libre
[OSSPARIS17] Le guide du connard du logiciel libre
 
[OSSPARIS17] Des logiciels libres pour la gestion des identités !
[OSSPARIS17] Des logiciels libres pour la gestion des identités ![OSSPARIS17] Des logiciels libres pour la gestion des identités !
[OSSPARIS17] Des logiciels libres pour la gestion des identités !
 
[RMLL2017] le guide du connard du logiciel libre
[RMLL2017] le guide du connard du logiciel libre[RMLL2017] le guide du connard du logiciel libre
[RMLL2017] le guide du connard du logiciel libre
 
[RMLL2017] LDAPCon 2017
[RMLL2017] LDAPCon 2017[RMLL2017] LDAPCon 2017
[RMLL2017] LDAPCon 2017
 
[OW2Con 2017] News from LemonLDAP::NG
[OW2Con 2017] News from LemonLDAP::NG[OW2Con 2017] News from LemonLDAP::NG
[OW2Con 2017] News from LemonLDAP::NG
 
[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre[JDLL 2017] Le Guide du Connard du Logiciel Libre
[JDLL 2017] Le Guide du Connard du Logiciel Libre
 
KR2016 The Free Software Bastard Guide
KR2016 The Free Software Bastard GuideKR2016 The Free Software Bastard Guide
KR2016 The Free Software Bastard Guide
 
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NGS2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
 
The guide of Security Jerk
The guide of Security JerkThe guide of Security Jerk
The guide of Security Jerk
 
The wonderful story of Web Authentication and Single-Sign On
The wonderful story of Web Authentication and Single-Sign OnThe wonderful story of Web Authentication and Single-Sign On
The wonderful story of Web Authentication and Single-Sign On
 
Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016
 
[JDLL 2016] OpenID Connect et FranceConnect
[JDLL 2016] OpenID Connect et FranceConnect[JDLL 2016] OpenID Connect et FranceConnect
[JDLL 2016] OpenID Connect et FranceConnect
 
[OSSParis 2015] The OpenID Connect Protocol
[OSSParis 2015] The OpenID Connect Protocol[OSSParis 2015] The OpenID Connect Protocol
[OSSParis 2015] The OpenID Connect Protocol
 
[OW2Con 2015] LemonLDAP::NG 2.0 overview
[OW2Con 2015] LemonLDAP::NG 2.0 overview[OW2Con 2015] LemonLDAP::NG 2.0 overview
[OW2Con 2015] LemonLDAP::NG 2.0 overview
 
[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect Protocol[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect Protocol
 
Analyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKAnalyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELK
 
Le Guide du Connard du Logiciel Libre
Le Guide du Connard du Logiciel LibreLe Guide du Connard du Logiciel Libre
Le Guide du Connard du Logiciel Libre
 

[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le site d'une Websérie

  • 1. Templer, Git, Bootstrap, PHP : des outilsTempler, Git, Bootstrap, PHP : des outils libres pour concevoir le site d’une Websérielibres pour concevoir le site d’une Websérie
  • 2. 2 Casting Clément OUDOT Webmaster du site DonJon Legacy Libriste Premier site web en 1997
  • 3. 3 Épisode précédent RMLL 2014 : conférence sur le site Anticuisine
  • 4. 4 La série : DonJon Legacy Bande annonce : https://www.youtube.com/watch?v=1GtwdA92f6U
  • 5. 5 Chapitres ● Pourquoi faire un site statique HTML ? ● Présentation de Templer ● Mise en page avec Bootstrap et CSS ● Envoi d’un mail par script PHP ● Gestion du code dans Git
  • 7. 7 Sécurité ● Pas de script coté serveur ● Pas d'injection de formulaire ● Pas de mot de passe ni de données bancaires
  • 8. 8 Performances ● Pas de calcul côté serveur ● Big data / cluster ● No SQL, et rien d'autre non plus ● Utilisation optimale du cache HTTP
  • 9. 9 Accessibilité ● Utilisation des dernières normes du Web ● Framework CSS et JS ● Référencement naturel
  • 10. 10 Hébergement ● « Host everywhere » ● Fichiers dans un répertoire ● Serveur web basique ● Environnement de développement local simple ● Fonctionne même sur des systèmes d'exploitation propriétaires !
  • 12. 12 Templer ● Logiciel libre de génération de sites statiques ● Écrit en Perl ● Utilisation de HTML::Template ● Support de Markdown, Redis, Flux RSS, … ● https://github.com/skx/templer
  • 13. 13 mon-site/ ├── include ├── input │ ├── about.wgn │ ├── index.wgn │ └── robots.txt ├── layouts │ └── default.layout ├── output └── templer.cfg Structure du site ● Génération d’une structure de base : – Include : fichiers communs – Input : les fichiers qui seront convertis – Layout : les modèles – Output : site généré
  • 14. 14 Gestion multilingue ● Création de dossiers fr/ et en/ ● Utilisation des variables de page ● Corps de la page dans des documents inclus ● Variables « fr-link » et « en-link » pour changer de langue ● Configuration Apache pour redirection selon la langue du navigateur
  • 15. 15 title: Accueil en-link: /en/index.html text_menu_hall: Hall text_menu_dungeon: Donjon ---- <!-- tmpl_include name="head.inc"--> <!-- tmpl_include name="menu.inc"--> <!-- tmpl_include name="home.inc"--> <!-- tmpl_include name="menu_foot.inc"-- > <!-- tmpl_include name="banner_fr.inc"--> <!-- tmpl_include name="foot.inc"--> Code Templer <ul class="nav navbar-nav navbar-right"> <!-- tmpl_if name="fr-link" --> <li><a href="<!-- tmpl_var name="fr-link" -->"><img src="/images/fr.png" alt="fr" /></a></li> <!-- /tmpl_if --> <!-- tmpl_if name="en-link" --> <li><a href="<!-- tmpl_var name="en-link" -->"><img src="/images/en.png" alt="en" /></a></li> <!-- /tmpl_if --> </ul>
  • 16. 16 Redirection Apache        RewriteEngine On        RewriteCond %{HTTP:Accept-Language} ^en [NC]        RewriteRule ^/$ /en/ [L,R=301]        RewriteCond %{HTTP:Accept-Language} ^fr [NC]        RewriteRule ^/$ /fr/ [L,R=301]
  • 17. 17 Mise en page avecMise en page avec Bootstrap et CSSBootstrap et CSS
  • 18. 18 Bootstrap ● Framework CSS et JS (base sur JQuery) ● Système de grille (grid) avec gestion des media queries (responsive design) ● Composants graphiques (boutons, tableaux, panneaux) ● Modification du thème possible (Less) ● Voir http://getbootstrap.com et https://bootswatch.com/
  • 19. 19 Exemple <div class="text-center">  <div class="alert alert-djl">    <tmpl_var name="text_watch_channels" />    <a class="btn btn-default" href="https://www.youtube.com/channel/UCVO3scwrW2QEyxiVcBbEbtw"><i class="fa fa-youtube"></i></a>    <a class="btn btn-default" href="http://www.dailymotion.com/donjonlegacy"><i class="fa fa-video- camera"></i></a>  </div> </div>
  • 20. 20 Autres frameworks ● Font Awesome : – Galerie d’icônes – http://fontawesome.io/ ● Hover : – Animations – http://ianlunn.github.io/Hover/
  • 21. 21 Animations personnalisées h1 {  animation: djl-text 1s; } @keyframes djl-text {  0% {    text-shadow: 0px 0px 10px #000;    margin-left: 100px;    color: #32728a;  }  100% {    text-shadow: 0px 0px 5px #32728a;  } }
  • 23. 23 Du code PHP ? ● Pour certaines fonctionnalités, comme formulaire de contact avec envoi de mail, un script est nécessaire ● PHP est un langage simple et présent sur la plupart des serveurs Web ● Formulaire HTML dans une page statique ● Réception du POST dans le script PHP, qui renvoie vers une page statique après traitement
  • 24. 24 Formulaire    <form action="/mail.php" method="post">      <select name="subject" class="form-control">        <option value="<!-- tmpl_var name="text_contact_team" -->"><!-- tmpl_var name="text_contact_team" --></option>        <option value="<!-- tmpl_var name="text_contact_help" -->"><!-- tmpl_var name="text_contact_help" --></option>      </select>      <input type="text" name="mail" placeholder="<!-- tmpl_var name="text_contact_mailinput" -->" class="form-control" />      <textarea name="message" class="form-control" rows="5"></textarea>      <input type="hidden" name="returnlink" value="<!-- tmpl_var name="returnlink" -->" />      <input type="submit" class="form-control" />    </form>
  • 25. 25 Code PHP    $subject = $_POST["subject"];    $message = $_POST["message"];    $mail = $_POST["mail"];    $returnlink = $_POST["returnlink"];    if (!$returnlink) {        $returnlink = "http://www.donjonlegacy.com";    }    if (!$subject or !$message) {        header("Location: " . $returnlink);        exit;    }
  • 27. 27 Utilisation de Git ● Gestion des versions et visualisation des modifications ● Sauvegardes ● Branches pour tests ● Collaboration
  • 28. 28 Du développement à la mise en ligne ● Sur le poste de travail : – git commit – git push ● Sur le serveur : – git pull – templer -f
  • 29. 29 GitHub ● Service Git en ligne le plus populaire ● Mais des alternatives existent : – https://about.gitlab.com/ – https://framagit.org/ ● Code du site Donjon Legacy disponible sur https://github.com/coudot/donjonlegacy