Improve Schedule

remotes/1693055039339581669/master
Igor Laborie 5 years ago
parent d8bc3ebe1f
commit 39ed876ba0
  1. 1
      .gitignore
  2. 5
      content/schedule/_index.fr.md
  3. 5
      content/schedule/_index.md
  4. 2
      content/sessions/le_troll_dans_ta_machine_____une_courte_introduction_a_la_pensee_de_jean_yves_girard.md
  5. 2
      data/schedule.yml
  6. 18
      package.json
  7. 2
      static/api/site.json
  8. 811
      static/schedule/schedule.ics
  9. 2
      themes/devfest-theme-hugo
  10. 20
      tools/minify.js
  11. 508
      yarn.lock

1
.gitignore vendored

@ -4,3 +4,4 @@ node_modules/
.firebase/
.idea/
.vscode/
yarn-error.log

@ -11,5 +11,10 @@ draft: true
{{% hero %}}
<a class="btn primary btn-lg" href="/schedule/schedule.ics">
<svg class="icon icon-calendar"><use xlink:href="#calendar"></use></svg> ICal
</a>
<!-- TODO: filter and search -->
{{% /hero %}}

@ -10,5 +10,10 @@ draft: true
---
{{% hero %}}
<a class="btn primary btn-lg" href="/schedule/schedule.ics">
<svg class="icon icon-calendar"><use xlink:href="#calendar"></use></svg> ICal
</a>
<!-- TODO: filter and search -->
{{% /hero %}}

@ -29,4 +29,4 @@ Dans cette courte présentation, on s'attachera à comprendre pourquoi Girard es
----
Dans le cas d'un créneau à 40min, on pourrait donner quelques pointeurs sur ses travaux plus récents, et expliciter en quoi ils sont porteurs de nouvelles avancées pour les prochaines décennies (réseaux de démonstrations, géométrique de l'intéraction, etc.).
Dans le cas d'un créneau à 40min, on pourrait donner quelques pointeurs sur ses travaux plus récents, et expliciter en quoi ils sont porteurs de nouvelles avancées pour les prochaines décennies (réseaux de démonstrations, géométrique de l'intéraction, etc.).

@ -136,7 +136,7 @@
- slot: slot-lt-2
talk: machine_learning_avec_des_allumettes_et_des_cotillons
- slot: slot-5
talk: un_distributeur_automatique_d_argent_de_poche_pour_les_enfants
talk: a_kotlin_multiplatform_evolution
- slot: pause-5
talk: __pause
- slot: slot-6

@ -0,0 +1,18 @@
{
"name": "site-devfest-2019",
"version": "1.0.0",
"repository": "https://gitlab.com/devfest-toulouse/site-devfest-2019",
"author": "Igor Laborie <ilaborie@gmail.com>",
"license": "Apache-2.0",
"scripts": {
"build:minify": "node tools/minify.js",
"build": "run-p build:*"
},
"devDependencies": {
"glob": "^7.1.4",
"html-minifier": "^4.0.0",
"npm-run-all": "^4.1.5",
"plop-logger": "^2.3.0",
"tslib": "^1.10.0"
}
}

@ -2331,7 +2331,7 @@
},
{
"slot": "slot-5",
"talk": "un_distributeur_automatique_d_argent_de_poche_pour_les_enfants"
"talk": "a_kotlin_multiplatform_evolution"
},
{
"slot": "pause-5",

@ -0,0 +1,811 @@
BEGIN:VCALENDAR
VERSION:2.0
PROID:-//Devfest/DevFest Toulouse 2019//FR
X-WR-CALDESC:DevFest Toulouse 2019
X-WR-CALNAME:DevFest Toulouse 2019
X-WR-TIMEZONE:Europe/Paris
BEGIN:VEVENT
DESCRIPTION:Le numérique fait-il partie du problème ou de la solution quand
on parle de réchauffement climatique ?\n\n5 milliards de smartphones en ci
rculation en 2020\, ça représente quoi en consommation énergétique\, en gaz
à effet de serre\, en pollution chimique ?\n\nLe streaming illimité à 10 e
uros par mois c'est le pied mais aujourd'hui Netflix a à peu près l'emprein
te carbone du plus gros cimentier mondial\, qui va payer la facture environ
nementale ?\n\nTous les mails de votre vie (que vous ne lirez plus jamais)
disponibles sur Gmail\, très utile\, mais après 2020 on ne saura peut-être
plus produire industriellement les équipements nécessaires à leur stockage.
\n\nOn arrive dans "l'âge des limites"\, pour le numérique comme pour le re
ste. Quels sont les leviers pour basculer vers un numérique durable ?\n\nEt
si malgré tout on décidait de s'en foutre ? 2 degrés en plus\, c'est juste
un pull en moins non ? Non. Par contre c'est 30% en moins sur les rendemen
ts agricoles pour ... 30 % de population en plus en 2050. En 1970\, Dennis
Meadows modélisait sur les ordinateurs du MIT un crash du système planétair
e pour les décennies 2020-2030. Pour l'instant\, c'est cette trajectoire qu
e notre monde suit.
DTSTART:20191003T100000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:"Numérique et environnement" ou "On aurait pu sauver les abeilles\,
on a préféré sortir un nouvel iPhone"
UID:zDbtrtvdLPG1okj07wyI
URL:https://devfesttoulouse.fr/sessions/_numerique_et_environnement__ou__on
_aurait_pu_sauver_les_abeilles__on_a_prefere_sortir_un_nouvel_iphone_
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Nous savons tous développer une API mais avons-nous tous bien i
ntégré les problématiques d'environnements et de cycles logiciels multiples
? L'opérabilité\, la gouvernance\, le versioning\, la traçabilité\, la séc
urité — et bien plus encore — de ces API web une fois en production ?\n\nDu
rant ce talk\, c'est plusieurs dizaines de points d'attentions rarement évo
qué que je vous propose d'aborder\, à la lumière de retours d'expériences p
rovenant de chez Uber\, Stripe\, Facebook\, ...
DTSTART:20191003T110000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:⛳ Votre API web passe-t-elle le contrôle technique ?
UID:Gxr3XZR1HEu14tbneJLb
URL:https://devfesttoulouse.fr/sessions/_votre_api_web_passe_t_elle_le_cont
role_technique__
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Avec les annonces de l'arrivée de la réalité augmentée (ou RA)
dans Google Maps et Google Search sur Android lors de Google IO 2019\, nou
s constatons que la RA va prendre une place de plus en plus importante dans
notre quotidien. La sortie d'ARCore en mars 2018 sur Android a simplifié l
e développement d’application en RA sur Android.\n\nAu cours de cette sessi
on\, nous vous proposons de découvrir ARCore\, via l’utilisation dans un na
vigateur\, des applications natives ou des moteurs 3D comme Unity ainsi que
les CloudAnchors qui permettent la persistance et le partage de positions
d’objets dans les scènes de réalité augmentée\, y compris avec des utilisat
eurs d’iOS.\n\nAprès une initiations aux concepts liés à la RA (meshes\, 6
DoF\,...)\, nous présenterons les différentes fonctionnalités d’ARCore. Nou
s discuterons aussi des différentes approches d’utilisation\, de leurs limi
tations et avantages au travers d'une application de cartographie 3D en réa
lité augmentée.
DTSTART:20191003T120000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:A la découverte de la réalité augmentée avec ARCore
UID:qXAvodXoMK3db8ZLcVwb
URL:https://devfesttoulouse.fr/sessions/a_la_decouverte_de_la_realite_augme
ntee_avec_arcore
TRANSP:TRANSPARENT
CATEGORIES:native_mobile_apps
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Qui ne s’est jamais fait manipulé ? Évidemment\, on est tous al
lé à une soirée alors qu’on en avait pas envie\, on a tous acheté un truc s
ans en avoir besoin et on a tous été influencé par ses proches. \n\nL’idée
de cette présentation est de vous ouvrir les yeux sur les relations et les
influences entre les gens. Je vous exposerai les mécanismes de prise de déc
ision au travers de 3 techniques simples de manipulation.\n\nA la sortie de
ce talk\, vous devriez être moins influençable et maître de vos décisions
(voir même manipuler les autres).
DTSTART:20191003T125000
DURATION:PT15M
LOCATION:Grand amphi.
SUMMARY:3 techniques faciles de manipulation
UID:zVUXQkHQtSiGJeIwVd05
URL:https://devfesttoulouse.fr/sessions/3_techniques_faciles_de_manipulatio
n
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Le code barre est une invention qui a radicalement modifié nos
sociétés. Sans elle\, pas d'inventaire efficace\, de supermarchés ou de ven
te en ligne.\n\nMais comment coder les chiffres de façon fiable avec des pe
tites barres noires et blanches ? Quand les contraintes matérielles empêche
nt d'utiliser le binaire\, l'ingéniosité et un peu de chance ont permis de
créer ce produit\, maintenant présent partout.\n\n\nNous découvrirons les d
étails de ce codage\, et comment il pourrait même contenir davantage d'info
rmations.
DTSTART:20191003T140500
DURATION:PT15M
LOCATION:Grand amphi.
SUMMARY:10 est une puissance de 2
UID:jABRUDzqext8Rx8CmA4j
URL:https://devfesttoulouse.fr/sessions/10_est_une_puissance_de_2
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Vous aimez VS Code car il est simple\, intuitif et qu'il fait c
e que vous lui demandez. \nMais saviez-vous que vous pouviez coder à plus
ieurs dans VS Code? et même permettre à une personne tierce de jouer avec v
otre débugger depuis l'autre bout du monde? Saviez-vous que vous pouviez av
oir un client slack dans VS Code\, et même un chat audio? \nEt avez-vous e
xploré toutes les possibilités que VS Code offre quand vous utilisez github
? \nNous verrons dans ce talk tout ce qui fait de VS Code l'éditeur de cod
e parfait pour faire du code collaboratif.
DTSTART:20191003T143000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:Allo Paris\, ici San Francisco. Et si on codait ensemble avec VS Co
de?
UID:Cej88MtlRVZrJRK0FJ2p
URL:https://devfesttoulouse.fr/sessions/allo_paris__ici_san_francisco__et_s
i_on_codait_ensemble_avec_vs_code_
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:When you start a brand new app or service\, you need to think a
bout how you will manage authentication and permissions. But if you are lik
e everyone else\, you genuinely do not want to actually think about this. I
f someone else could do that for you\, life would be great. And this has ac
tually happened\, you have the choice between several boilerplate projects
or authentication/authorization libraries. In fact\, you have a lot of opti
ons. Which one to choose? Let's have a closer look to them!\n\nAt the end o
f this talk\, you will have a good overview of the common existing solution
s and their benefits.
DTSTART:20191003T153000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:Authentication/Authorization Starters Battle
UID:6E03tbU6L5w0IyjMi7yF
URL:https://devfesttoulouse.fr/sessions/authentication_authorization_starte
rs_battle
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Dans un monde de saveurs complexes et sofistiquées\, la guerre
du toping fait rage chez les crèmes glacées du Web ! Face au champs de bata
il\, les pronostiques vont bon train pour savoir qui l’emportera entre le c
runchy Angulaire\, le fondant Reactifs et le décoratif Vue.\n\nDurant ce te
mps\, loin de ces vicissitudes\, la petite saveur basique vanille fait son
bonhomme de chemin. S’agirait-il du héro de la légende\, succeptible de ren
verser le destin de ce monde sans heurts ?\n\nSache\, voyageur\, qu’elle es
t déjà passée par nos contrées. Laisse moi te raconter comment elle nous a
permis de renverser notre vieux roi\, et tu saura enfin ce qui se prépare p
our ton royaume.
DTSTART:20191003T163000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:Brace yourself\, 🍦Vanilla is coming … back 🕶!
UID:rJDTMZMYX57DCKYhW09c
URL:https://devfesttoulouse.fr/sessions/brace_yourself__vanilla_is_coming__
back__
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Programmer le noyau d'un système d'exploitation est un très bon
moyen pour en comprendre le fonctionnement et le scope de son travail (IO\
, gestion de la mémoire\, etc).\nCette présentation a pour but de présenter
et de développer les composants élémentaires d'un micro noyau UNIX.\n\nDan
s ce talk je présenterai:\n- L'émulateur QEMU\n- La réalisation d'un secteu
r de boot avec une micro console\n- Comment gérer les interruptions hardwar
e (clavier) et software\n- La gestion des appels systèmes\n- Un système mul
ti-process simple qui va permettre de découvrir le surcoût des changements
de contexte liés à la programmation concurrentielle
DTSTART:20191003T173000
DURATION:PT40M
LOCATION:Grand amphi.
SUMMARY:Comprendre le rôle du noyau d'un système d'exploitation en créant u
n from scratch
UID:tOexEcqeKEztPbNmR4JT
URL:https://devfesttoulouse.fr/sessions/comprendre_le_role_du_noyau_d_un_sy
steme_d_exploitation_en_creant_un_from_scratch
TRANSP:TRANSPARENT
CATEGORIES:cloud___infra
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Les microservices\, la scalabilité instantanée et les plates-fo
rmes à haute densité comme Kubernetes nécessitent des applications à faible
empreinte mémoire et démarrage rapide. Java n'était pas bien positionné ca
r il favorise les temps de traitement aux dépens du CPU et de la RAM.\n\nPl
us maintenant.\n\nEntre en scène Quarkus\, une stack Java orientée microser
vices qui supporte vos composants favoris (Hibernate\, Vert.x\, Camel\, RES
TEasy ...) sur GraalVM et HotSpot avec une faible empreinte mémoire et un d
émarrage rapide. Tout ce qu'il faut pour tirer pleinement parti des contain
ers.\n\nLa gestion de la donnée est souvent l'aspect le plus complexe : déc
ouvrons comment Quarkus gère la persistance avec Hibernate ORM. Venez explo
rer le live reload\, notre vision de la persistance avec Hibernate Panache\
, l'indexation full text avec Hibernate Search\, l'environnement de test\,
la compilation native GraalVM et bien plus. Quarkus se vit plus qu'il ne se
verbalise\, attendez-vous à une démo détaillée.
DTSTART:20191003T100000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:De Java à un exécutable natif : GraalVM et Quarkus changent la donn
e
UID:Qy836EfpA0wC4M6jYcTk
URL:https://devfesttoulouse.fr/sessions/de_java_a_un_executable_natif___gra
alvm_et_quarkus_changent_la_donne
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:DevOps is everywhere\, and every new or existing project is at
least considering to follow its principles. While implementing DevOps for s
ingle projects become more and more straightforward\, it's still a challeng
e to have a coherent DevOps approach at Enterprise level.\n\nLet's dig in w
hat it takes to achieve DevOps in large companies\, with Airbus as an examp
le.
DTSTART:20191003T110000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:DevOps at scale
UID:aOHds477R7FiM3cnWAXp
URL:https://devfesttoulouse.fr/sessions/devops_at_scale
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:How a developer can tell if the system is sick just by taking a
look at the input and the output? If you'd like to know that (plus you lik
e standup comedy)\, come an see! The treatment is safe \;-)\n\nOne approach
to get familiar with a system is a long and intense reading the manual (an
d to run an eye over the source code sometimes). Another approach is to tak
e a deep dive into the data model (often in the DB) and to surf the user in
terface. Both are natural ends of the system\, the legendary Input and Outp
ut. By examining these ends one can check if there's good digestion or if g
uts are rotten. Careful examination can confirm "common DDDosis"\, "maligna
nt stringosis"\, "regex diarrhoea" or "not-made-here syndrome".\nUnfortunat
ely\, sometimes developers get infected in their prenatal life (meaning: at
their university). Let me invite you to treatment. A laxative one. (That i
s: a sequel of "Passwords. Do you keep them safe?")
DTSTART:20191003T120000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:Four Diseases
UID:PmoMEVHO3imfUIMXsPai
URL:https://devfesttoulouse.fr/sessions/four_diseases
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Quel est le point commun entre un jeu de sudoku\, la planificat
ion d'une conférence et les déplacements d'un commercial ?\n\nQuand on souh
aite les traiter automatiquement\, tous ces problèmes peuvent être résolus
par un solveur de contraintes. Dans ce talk\, je vais essayer de vous faire
une introduction pratique à la programmation par contraintes\, en présenta
nt les concepts de base\, puis en les mettant en application avec plusieurs
exemples de problèmes connus de tout le monde (ou presque)\, pour finir pa
r un cas plus complexe sur lequel je travaille actuellement.
DTSTART:20191003T143000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:Introduction à la programmation par contraintes
UID:iU4EzEThVDvpaHDsGjOO
URL:https://devfesttoulouse.fr/sessions/introduction_a_la_programmation_par
_contraintes
TRANSP:TRANSPARENT
CATEGORIES:big_data___ml___ai
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:L’âgisme dans les fonctions IT\, et en particulier dans le Déve
loppement Soft\, est incontournable.\n\nLes « vieux » n’ont décidément pas
la cote\, le marché de l'emploi des softeux cinquantenaires en est la preuv
e !\nPourtant\, codage et sénioritude semblent loin d'être incompatibles.\n
\n- Alors quels préjugés peuvent en être la cause ?\n- L’avance rapide de l
a technologie numérique est-elle incompatible avec le ralentissement biolog
ique ?\n- Les cheveux gris sont-ils un Handicap pour la Sécurité de l’Info
?\n- Le Cloud doit-il être « Arthrose-free » ?\n\nEt surtout\, comment se f
ait-il qu’à 47 ans je vienne d’intégrer l’équipe Devops & Tools de Continen
tal Digital Services et que personne ne m’ait encore rien dit ?
DTSTART:20191003T125000
DURATION:PT15M
LOCATION:Grande salle
SUMMARY:« 47 ans : ils n’ont toujours pas remarqué … »
UID:pY6MCQBMfIYlIKfHdhL4
URL:https://devfesttoulouse.fr/sessions/_47_ans___ils_nont_toujours_pas_rem
arque__
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Avec mon épouse nous avons commencer à donner de l'argent de po
che à nos enfants.\n\n![Calvin et l'argent de poche](https://i.pinimg.com/o
riginals/ad/47/94/ad47940ca35ce4bd5122a916abf9f589.png)\n\nPour qu'ils puis
sent faire comme les grands (et parce que c'est fun aussi :D) j'ai conçu un
DAAP (**D**istributeur **A**utomatique d'**A**rgent de **P**oche) qui leur
permet\, le jour de la distribution de l'argent de poche\, d'insérer leur
"carte bleue"\, saisir leur code et de voir la machine s'ébranler pour dis
tribuer les pièces.\n\nDans ce talk on parlera d'Arduino\, d'impression 3D\
, de carte à puce\, d'électronique et des problèmes que j'ai rencontré et c
omment j'ai pu les résoudre.
DTSTART:20191003T140500
DURATION:PT15M
LOCATION:Grande salle
SUMMARY:Un distributeur automatique d'argent de poche pour les enfants
UID:ZmSIPnuidcxjKLVfEKM8
URL:https://devfesttoulouse.fr/sessions/un_distributeur_automatique_d_argen
t_de_poche_pour_les_enfants
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:## Résumé\nEn Novembre 2017\, j'ai découvert "une backdoor" dan
s tout les téléphones de la marque Oneplus. A l'aide d'une simple ligne de
commande\, un attaquant ayant un accès physique au téléphone\, pouvait deve
nir root et ainsi obtenir un contrôle total du téléphone de la victime.\n\n
## Détails\nDans ce talk\, j'expliquerai le processus qui m'a permit de fai
re cette découverte:\n1. Extraction du build\n2. Récupération des applicati
ons dites "systèmes"\n3. Détection de la vulnérabilité dans l'application A
ndroid "EngineeringMode"\n4. Exploitation de la vulnérabilité\n\n## Sujet a
bordés\nLors de la détection et l'analyse de cette faille nous aborderons l
a philosophie du **hacking**\, comment faire du **reverse engineering** sur
des applications **Android** et une **librairie native**. Nous analyserons
du **Java** ainsi que du **C** \n\n## Categorie\nNative mobile apps\n\n##
Format\nUne conférence de 40 min
DTSTART:20191003T153000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:L'histoire de la découverte d'une backdoor signé Oneplus
UID:Kwery1cbJrx3ZFj6x1JU
URL:https://devfesttoulouse.fr/sessions/l_histoire_de_la_decouverte_d_une_b
ackdoor_signe_oneplus
TRANSP:TRANSPARENT
CATEGORIES:native_mobile_apps
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:En 2019 le monde de l’informatique n’a que l’agilité à la bouch
e. Ca groome à tous les coins de rue\, ça s’excite en daily\, ça colle des
post-it et ça empile les serious game en rétro. Bien sûr ça gère la transfo
rmation numérique (désolé\, même au second degré je ne peux pas employer “d
igitale”) et au final plus personne ne comprend rien. \n\nDes chefs de proj
et subitement propulsés ScrumMaster qui ne savent pas ce qu’ils doivent fai
re. Des PO qui découvrent la priorisation. Des développeurs qui doivent com
poser avec des specs floues et changeantes sans vision globale du projet. P
our compléter le tableau\, la subite apparition de coachs agile à peine sor
ti de l’école qui n’ont jamais vu un projet de leur vie et qui viennent exp
liquer des concepts qu’ils ne maîtrisent qu’à moitié.\n\nEn 2019 le monde d
e l’informatique rêve secrètement de cycles en V\, de stabilité\, de spécif
ications générales et de dossier d’architecture.\n\nEn 2019 le monde de l’i
nformatique est au bord du burn-out agile.\n\n## Plan du talk \n\n- Petit
historique : l’évolution des pratiques sur les 20 dernières années \n- Pour
quoi ce bordel agile ? \n- Finalement l’agilité c’est quoi ? \n- Est-ce qu’
il faut revenir au cycle en V ?
DTSTART:20191003T163000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:Le burn-out agile
UID:KAH9Lyx0b2TKNSQVZNw2
URL:https://devfesttoulouse.fr/sessions/le_burn_out_agile
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Nos systèmes sont designés de manière optimiste\, de la gestion
technique des erreurs à la modélisation de nos interfaces. \nQue ce soit
les codes d'erreurs\, les exceptions ou les modélisations plus avancées\, e
lles servent pour arrêter un traitement et _potentiellement_ afficher un me
ssage d'information à un utilisateur.\n\nMais avec les architectures micros
ervices\, la distribution des traitements ou une simple volonté de résilien
ce\, la gestion des erreurs est devenue un enjeu important de tous les syst
èmes afin qu’ils restent accessibles de tous\, tout le temps tout en mainte
nant le système dans un état cohérent.\n\nQue fait-on lorsqu’une erreur int
ervient ? Peut-on compenser voire gérer l’erreur depuis le système pour l’u
tilisateur ?\n\nLa réponse a ces questions se trouvent autant dans la défin
ition du produit que dans le choix technique.\nUn outil bien conçu est un o
util intelligent qui peut faire les bons choix au bon moment pour l'utilisa
teur. Et si on apprenait ensemble à concevoir nos erreurs ?
DTSTART:20191003T173000
DURATION:PT40M
LOCATION:Grande salle
SUMMARY:Le design de l'erreur
UID:pAMZmFT2wrfqPr9IdeXv
URL:https://devfesttoulouse.fr/sessions/le_design_de_l_erreur
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Sans nécessiter de formation musicale pointue\, tout développeu
r peut créer des morceaux qui sonnent bien et faire du "live coding" pour i
mproviser en direct.\n\nAprès un rapide tour d'horizon des environnements d
e codage musical comme Sonic-Pi en Ruby ou FoxDot en Python\, on codera/com
posera en live un morceau de musique électro avec comme seul outil un navig
ateur web\, les API WebAudio et WebMIDI et la librairie Tone.js.\n\nQuelque
s samples bien choisis\, une pincée de séquences harmonieuses\, une bonne d
ose d'aléatoire encadré\, et hop\, tout le monde se mettra à danser ! Et pu
isque la musique c'est aussi des maths\, on parlera de musique générative a
vec des chaînes de Markov et des L-Systems.\n\nDavid Guetta n'a qu'à bien s
e tenir !
DTSTART:20191003T100000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Live coding musical : vous savez coder ? Devenez compositeur avec W
ebAudio et WebMIDI !
UID:WwHpapkCgEg5IMW5vTId
URL:https://devfesttoulouse.fr/sessions/live_coding_musical___vous_savez_co
der___devenez_compositeur_avec_webaudio_et_webmidi__
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:If the new React Context API and Suspense killed Redux (they di
dn't)\, surely Hooks kill the need for a form library\, right? Well\, not e
xactly. Managing form state is more than just holding your current values i
n state\; it's about sync and async validition errors\, and much more! But
that doesn't mean that Hooks are irrelevant to the situation. Hooks make bu
ilding forms in React easier than ever before.
DTSTART:20191003T110000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Modern Forms in React
UID:McfMVcKDdZv68NSo2JIJ
URL:https://devfesttoulouse.fr/sessions/modern_forms_in_react
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Depuis les années 70 tous les constructeurs autos intégrent des
calculateurs électroniques.\nLes moteurs des voitures modernes sont des sy
stèmes informatiques complexes qui s'appuient sur des dizaines de capteurs.
.. et du code. \nComment ça fonctionne ? A quoi ressemble ce code et que fa
it-il ?\nQu'est-ce qu'il se passe lorsqu'on fait une "reprog" ? \nQu'est-ce
que signifie le voyant moteur allumé ? Comment débugger tout ça ?\nSoulevo
ns le capot (électronique)\, analysons le matériel mis en oeuvre mais surto
ut le logiciel grâce aux sources des calculateurs "Megasquirt" et allons ex
plorer la face cachée numérique de nos voitures.
DTSTART:20191003T120000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Mon p*** de voyant moteur est encore allumé ! Comment debugger mon
moteur ? Plongeon dans les entrailles des calculateurs moteur
UID:fW4yvmVxjXb57vQJhIXu
URL:https://devfesttoulouse.fr/sessions/mon_p____de_voyant_moteur_est_encor
e_allume___comment_debugger_mon_moteur___plongeon_dans_les_entrailles_des_c
alculateurs_moteur
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Comment faire quand on doit faire le suivi de toute l'infrastru
cture du plus grand fournisseur de cloud Européen ? Comment choisir un out
il quand les plus populaires ne tient pas la marée à cette échèle ? Commen
t construire une plateforme Metrics pour unifier\, concilier et remplacer d
es années de legacy fragmenté et des solutions partielles ?\n\nDans ce talk
nous racontons notre expérience sur la construction et la maintenance d'OV
H Metrics\, la plateforme utilisée pour monitorer toute l'infrastructure OV
H. Nous avions besoin d'aller à des endroits ou la plupart de solutions de
monitoring ne sont jamais allées\, opérer à l'échelle du plus grand fournis
seur Européen de cloud et hosting : 27 data centers\, plus de 300k serveurs
(physiques !) et des centaines de produits pour accomplir notre mission av
ec nos 1\,3 millions de clients.\n\nVenez pour entendre cette histoire de s
éries temporelles\, de solutions open-sources poussées à l'extreme\, de clu
sters HBase opérés en limite de capacité\, et de comment une petite équipe
s'est appuyé sur une poignée de solutions open-source et une bonne dose d
e code maison pour construire une des solutions de monitoring les plus perf
ormantes au monde.
DTSTART:20191003T143000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Monitoring OVH: 300k serveurs\, 27 DCs une plateforme de métriques
UID:xwAvvIJJfDdBD7N4oGa5
URL:https://devfesttoulouse.fr/sessions/monitoring_ovh__300k_serveurs__27_d
cs_une_plateforme_de_metriques
TRANSP:TRANSPARENT
CATEGORIES:big_data___ml___ai
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Brainfuck est probablement le plus connu des langages de progra
mmation ésotériques. Ses 8 instructions en font un langage Turing-complet a
vec lequel il est théoriquement possible d’écrire n’importe quel programme.
\n\nEt en pratique ? Après une explication du langage (avec 8 instructions
c’est rapide !) on verra comment j’ai utilisé Brainfuck pour les qualificat
ions au concours d’informatique Prologin\, sur un problème de parcours de g
raphes !
DTSTART:20191003T125000
DURATION:PT15M
LOCATION:Salle du haut
SUMMARY:Applications de Brainfuck\, langage minimaliste mais Turing-complet
UID:oiZTE4THbAJeaNVlLc03
URL:https://devfesttoulouse.fr/sessions/applications_de_brainfuck__langage_
minimaliste_mais_turing_complet
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Ces dernières années\, les "fabriques de dev" et autres formati
ons courtes explosent. C'est un fait\, tout dev a été ou sera amené à trava
iller avec l'un de ces jeunes développeurs.euses. Mais qui sont-ils ? Pourq
uoi une reconversion dans ce genre de d'organisation ? Qu'ont-ils appris lo
rs de leurs formation express ? C'est fiable ce genre de dev ? Comment puis
-je les intégrer au mieux dans ma structure ?\n\nAutant de questions que vo
us vous êtes sans doute déjà posées. Pendant ces 15 minutes\, je vous prése
nterai mon retour d'expérience en tant que développeuse provenant de l'une
de ces écoles de dev et maintenant développeuse Javascript depuis 2 ans au
sein d'une startup Toulousaine.
DTSTART:20191003T140500
DURATION:PT15M
LOCATION:Salle du haut
SUMMARY:Développeurs en reconversion\, développeurs quand même !
UID:adcMAUSbsAK27dQJA4Iw
URL:https://devfesttoulouse.fr/sessions/developpeurs_en_reconversion__devel
oppeurs_quand_meme__
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:De nombreux services en ligne existent pour gérer en toute sécu
rité des appareils IoT à grande échelle : "Azure IoT" de Microsoft et "AWS
IoT" d'Amazon sont parmi les plus connus.\n\nGoogle propose également sa so
lution : "Cloud IoT" basée sur la plate-forme Google Cloud (GCP).\nDans ce
talk\, nous partirons d'un microcontrôleur neuf ultra connu et abordable\,
et notre but sera tout d'abord de découvrir comment écrire du code pour ce
composant nous permettant de récupérer des informations sur notre environne
ment.\nEnsuite\, nous ferons en sorte que ce composant envoie ses données v
ers un service Cloud\, pour enfin découvrir ce que permettent ces solutions
en ligne dédiées à l'IoT.\n\nPour l'exemple\, et parce qu'il faut bien cho
isir une solution\, nous utiliserons Google Cloud IoT Core\, les concepts r
estant similaires sur les autres plate-formes.
DTSTART:20191003T153000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Premiers pas avec un microcontrôleur et Google Cloud IoT Core
UID:R9O1S7M9oRMmwd0cNBaz
URL:https://devfesttoulouse.fr/sessions/premiers_pas_avec_un_microcontroleu
r_et_google_cloud_iot_core
TRANSP:TRANSPARENT
CATEGORIES:iot
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Un chatbot créé par Microsoft qui dérive avec des propos antisé
mites\, Amazon qui scanne des CVs et finit par ne recruter que des hommes b
lancs\, des algorithmes de reconnaissance faciale qui ont du mal avec les p
ersonnes de couleur noire\, ... Que d'exemples où l'IA a intégré nos propre
s biais sociétaux. Il est urgent que nous\, développeurs\, prenions nos res
ponsabilités et mesurons les enjeux éthiques de l'IA pour éviter que les st
éréotypes\, les inégalités et les préjugés se retrouvent au cœur de nos fut
urs systèmes.\n\nCette présentation propose des root cause analysis sur des
exemples concrets de ces biais et présente des alternatives qui auraient p
ermis d'éviter ces biais en "production" autant d'un point de vue humain qu
e technique.\n\nNous verrons notamment que l’éthique peut directement être
abordée au niveau des données et de leur préparation à l’apprentissage. Nou
s nous concentrerons principalement sur l’impact des statistiques des donné
es d’entraînement et les transformations à appliquer en pré-processing (mét
riques de fairness\, améliorer la fairness sur des données annotées)\, et n
ous montrerons comment des benchmarks permettent d'appréhender l’impact des
méthodes de fairness sur la précision des modèles entraînés.\n\nLa confian
ce et l’équité passe avant tout par une compréhension de la prise de décisi
on par l’utilisateur. Par conséquent\, nous présenterons diverses méthodes
pour expliquer la prise de décision d’un modèle boîte noire (principalement
des algorithmes de deep learning) et mettons en garde contre une mauvaise
interprétation de ces explications.
DTSTART:20191003T163000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Quand les ratés des IAs nous renvoient à nos propres biais sociétau
x
UID:ZsAGxn6UZi1hfzz2bwR7
URL:https://devfesttoulouse.fr/sessions/quand_les_rates_des_ias_nous_renvoi
ent_a_nos_propres_biais_societaux
TRANSP:TRANSPARENT
CATEGORIES:big_data___ml___ai
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:_« Make it work\, make it right\, make it fast »_ - Kent Beck\n
\nNous connaissons tous cette citation. Pourtant nous sommes dès fois trop
souvent restés bloqué à l’étape 1 par manque de temps ou de priorisation.\n
\nL’accueil d’un nouveau développeur·euse dans une équipe est un des meille
urs moments pour vérifier qu’une base de code est « saine et scalable ».\n\
nNous vous proposons dans ce talk un retour d’expérience sur quelques année
s de consulting sur des projets Angular au travers de cas concrets :\n- que
lles sont les mauvaises pratiques à éviter ?\n- quels sont les choix orient
és et assumés d’Angular pour vous éviter tout ça ?\n- quelque soit la taill
e de votre équipe\, l’expérience de vos collègues\, quels sont les princip
es d’architecture à adopter pour améliorer tout ça ?
DTSTART:20191003T173000
DURATION:PT40M
LOCATION:Salle du haut
SUMMARY:Rockin’ in the Angular World
UID:niiUNFAFhYnPBiOrcDVf
URL:https://devfesttoulouse.fr/sessions/rockin_in_the_angular_world
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:A lot of things have been said about WebAssembly inside of the\
nbrowser\; after all\, that's why it was originally created. But a new\ncas
e is emerging as well\, and that's WebAssembly on the server. More\nspecifi
cally\, we're seeing a rise of support for WebAssembly in\nserverless appli
cation platforms\, combining two brand-new technologies\ntogether. We're al
so seeing a lot of growth of the Rust programming\nlanguage\, and its close
alignment with WebAssembly. In this talk\,\nSteve will talk about Rust\, W
ebAssembly\, serverless technologies\, and\nhow it all fits together.
DTSTART:20191003T100000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:Rust\, WebAssembly\, and the future of Serverless
UID:2S9XtGGq3ouHnkivEDKC
URL:https://devfesttoulouse.fr/sessions/rust__webassembly__and_the_future_o
f_serverless
TRANSP:TRANSPARENT
CATEGORIES:cloud___infra
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:The singe most important feature of Rust is memory safety. Writ
ing code with performance of C++\, at a typical development cost\, and with
guaranteed absence of certain classes of memory safety related vulnerabili
ties is something that was not possible before. \n\nHowever\, all popular m
anaged languages with garbage collection take memory safety for granted\, s
o this aspect of Rust doesn't bring anything new to the table\, if you alre
ady use Java or Go. Nevertheless\, Rust can be an interesting choice as a h
igh-level language\, and this talks explains way. \n\nThe focus of the tal
k is fearless concurrency. Data races are a pervasive and unsolved problem
in languages like Java and Rust's guaranteed thread safety is a liberating
experience for application development. We also touch on some other benefit
s of the language for high-level tasks:\n\n* predictable performance due to
absence of garbage collection\n* control over the memory layout of objec
ts\, which gives you extra performance if you need it\n* module (crate) sy
stem that\, at the language level\, prevents dependency hell\n* additional
correctness guarantees\, like the absence of iterator validation or strict
control of error conditions
DTSTART:20191003T110000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:Rust as a High-Level Langage
UID:PjQDGsFIQoo1By4Ogv3q
URL:https://devfesttoulouse.fr/sessions/rust_as_a_high_level_langage
TRANSP:TRANSPARENT
CATEGORIES:languages
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:It's a common idea: Dynamic typing gives you freedom to do what
ever you want\, but then you suffer mistakes and runtime errors. Static typ
ing limits your freedom\, but it leads to fewer bugs\, even if it's harder
to actually write code.\n\nThis isn't entirely false. Yes\, it can be quite
hard to write a Rust or Haskell program that compiles\, enough that it's a
running gag in their communities. "But once you get it to compile\, it's p
robably correct!"\, the joke goes. On the other hand\, when writing Ruby or
Javascript\, you're free to call functions with all sorts of things\, and
then runtime errors can easily slip into production. That said\, it's not a
s simple as a sliding scale between "freedom" and "safety". Neither of thes
e terms is one-dimensional -- a language feature that restricts your freedo
m in one way can actually free you in different ways.\n\nI'd like to demons
trate some interesting language features in Rust that make it easier to wri
te code and to express concepts compared to dynamic languages. Features tha
t don't just protect you from shooting your foot\, but give you power that'
s only available within the rules and "limitations" of a statically typed l
anguage. Even if you're not familiar with Rust\, I hope to focus the exampl
es on the features themselves rather than on the specifics of the language\
, so come by and let's talk about being (type-safely) free.
DTSTART:20191003T120000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:The Freedom of Static Typing
UID:RhWn82dKmICiQulwcVJF
URL:https://devfesttoulouse.fr/sessions/the_freedom_of_static_typing
TRANSP:TRANSPARENT
CATEGORIES:languages
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Il y a 20 ans\, personne de **sobre** n’aurait utilisé Javascri
pt pour autre chose que des étoiles filantes qui sortent de ta souris. Non\
, à l'époque\, on préférait les serveurs d'application en Java! \nAujourd’
hui\, non seulement on a des frameworks front\, mais il y a même des hipste
rs qui font du backend avec... Et depuis\, on fait des APIs. \n**Comment e
n est-on arrivé là?** \nC’est ça inspecteur. C’est ça la bonne question.\n
\nSi tu ne les as pas vécus\, viens découvrir l'arrivée du Web\, l'histoire
de Netscape\, la browser-war\, la naissance du serveur d'application\, les
débuts du web dynamique et la prise d'assaut du JS.\n\nSit back\, relax\,
and Enjoy!
DTSTART:20191003T143000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:The rise of the web
UID:0MXH99V8NY9xyeurYCmA
URL:https://devfesttoulouse.fr/sessions/the_rise_of_the_web
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Jean-Yves Girard\, le génial inventeur des indispensables [mont
res à moutarde](http://girard.perso.math.cnrs.fr/moutarde.pdf) (1990)\, est
certes un joyeux trublion.\n\nMais avant d'en arriver à ce sommet indépass
able\, il a tout même publié deux-trois petites choses en chemin:\n\n- Rust
\, vous connaissez? L'idée première du système de typage de Rust est la log
ique dite "[linéaire](http://girard.perso.math.cnrs.fr/linear.pdf)"\, due à
Jean-Yves Girard (1987).\n- Haskell\, ça vous dit quelque chose? Les systè
mes de typage de Haskell mais aussi Scala (et d'une certaine manière Java)
sont basés sur le "[système F](https://en.wikipedia.org/wiki/System_F)" (ou
lambda-calcul de second ordre)\, dû à... Jean-Yves Girard (1972).\n- Idris
\, vous avez entendu parler? Le système de typage d'Idris est basé sur la t
héorie des types de Per Martin-Löf\, dont la première version a été prouvée
incorrecte par... Jean-Yves Girard\, qui depuis possède un [paradoxe](http
s://en.wikipedia.org/wiki/System_U#Girard's_paradox) à son nom. (Girard et
Martin-Löf sont par ailleurs de très bons potes et ont ferraillé sec contre
les logiciens classiques dans leur prime jeunesse.)\n\nTrès méconnu mais p
robalement l'un des penseurs les plus influents pour l'informatique de ce d
ébut de XXIe siècle\, Girard est tout aussi sérieux que fantasque. Son styl
e toujours acéré et polémique s'appuie sur une vision très claire de ce que
devrait être la logique: vivante\, joyeuse\, fertile.\n\nDans cette courte
présentation\, on s'attachera à comprendre pourquoi Girard est aussi virul
ent dans son discours\, quels sont les objectifs de sa pensée\, et pourquoi
elle a déjà porté tant de fruits dans le monde de l'informatique. \n\n----
\n\nDans le cas d'un créneau à 40min\, on pourrait donner quelques pointeur
s sur ses travaux plus récents\, et expliciter en quoi ils sont porteurs de
nouvelles avancées pour les prochaines décennies (réseaux de démonstration
s\, géométrique de l'intéraction\, etc.).
DTSTART:20191003T125000
DURATION:PT15M
LOCATION:Petite salle
SUMMARY:Le troll dans ta machine --- Une courte introduction à la pensée de
Jean-Yves Girard
UID:hoiS7Cs5sWwXb632pLh2
URL:https://devfesttoulouse.fr/sessions/le_troll_dans_ta_machine_____une_co
urte_introduction_a_la_pensee_de_jean_yves_girard
TRANSP:TRANSPARENT
CATEGORIES:wtf
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Dans ce talk je vous montrerai comment expliquer simplement le
fonctionnement de l'apprentissage par renforcement. Pour cela pas besoin d'
ordinateur : quelques allumettes\, des sacs de cotillons et un peu de pédag
ogie sont suffisant pour mettre en évidence les mécanismes intrinsèques de
cette technique et pour aborder les enjeux et les limites des algorithmes d
'"intelligence artificielle" basés sur l'apprentissage.
DTSTART:20191003T140500
DURATION:PT15M
LOCATION:Petite salle
SUMMARY:Machine learning avec des allumettes et des cotillons
UID:cnRUAtQNZybQsQa03lAx
URL:https://devfesttoulouse.fr/sessions/machine_learning_avec_des_allumette
s_et_des_cotillons
TRANSP:TRANSPARENT
CATEGORIES:big_data___ml___ai
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Have you heard of the code-sharing feature in Kotlin\, accompan
ied with "Write once\, run everywhere" slogan? Among its users not only lib
raries and frameworks authors\; there are some projects which have already
adopted multiplatform for production. Their applications\, written in Kotli
n for *both* iOS and Android\, are published in stores. \nWith this talk\,
you'll get a brief overview of the evolution of multiplatform technology in
Kotlin\, concerning the tasks it's evolved to solve. How it was and how it
is expected to be\; what has changed and which tasks can be already solved
with it. What are the facilities right now and which real projects already
use multiplatform?
DTSTART:20191003T153000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:A Kotlin multiplatform evolution
UID:a_kotlin_multiplatform_evolution
URL:https://devfesttoulouse.fr/sessions/a_kotlin_multiplatform_evolution
TRANSP:TRANSPARENT
CATEGORIES:languages
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:This talk will give an overview of the WebGPU API that will pro
vide modern features such as “GPU compute” on the Web as well as lower over
head access to GPU hardware and better\, more predictable performance. This
will allow for much more graphically intensive games on the Web and boost
performance of frameworks like Tensorflow.js up to 10x.
DTSTART:20191003T163000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:WebGPU: Next-generation 3D Graphics on the Web
UID:5qTyscBWtXLRb04TXEdB
URL:https://devfesttoulouse.fr/sessions/webgpu__next_generation_3d_graphics
_on_the_web
TRANSP:TRANSPARENT
CATEGORIES:web
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Les enfants sont eux-mêmes les bâtisseurs actifs de leurs propr
es structures intellectuelles et l'informatique y joue un rôle déterminant\
, disait Piaget\, un célèbre biologiste\, psychologue et logicien. Son coll
aborateur\, Seymour Papert\, inventera le langage Logo\, langage qui fait q
u'aujourd’hui je suis un développeur épanoui.\nQu'en est-il aujourd'hui ? C
omment donner le goût du code à nos enfants et surtout pourquoi est-ce impo
rtant ?\nAvec Saskia\, Loïs et leur père nous voyagerons à travers le temps
\, en partant de la tortue sur ce bon vieux M05 en passant par Scratch\, le
Logo hipster de nos jour\, jusqu’à Groovy et Python. \n
DTSTART:20191003T173000
DURATION:PT40M
LOCATION:Petite salle
SUMMARY:Le jaillissement de l'esprit
UID:le_jaillissement_de_l_esprit
URL:https://devfesttoulouse.fr/sessions/le_jaillissement_de_l_esprit
TRANSP:TRANSPARENT
CATEGORIES:method___tools
END:VEVENT
END:VCALENDAR

@ -1 +1 @@
Subproject commit cadaf90b438cdcc53be5c20dd58132ad284f39b5
Subproject commit 641f66d2731adacbda7c7b42c53da79a4ceae9ac

@ -0,0 +1,20 @@
const {readFileSync, writeFileSync} = require('fs');
const {sync: glob} = require('glob');
const {minify} = require('html-minifier');
const {Logger} = require('plop-logger');
const {colorEmojiConfig} = require('plop-logger/lib/extra/colorEmojiConfig');
Logger.config = colorEmojiConfig;
const logger = Logger.getLogger('minifier');
glob(`public/**/*.html`)
.forEach(file => {
const html = readFileSync(file, 'utf8');
const minified = minify(html, {});
const gain = html.length - minified.length;
if (gain > 0) {
const percent = (gain / html.length) * 100;
logger.info(file, () => ['gain', percent.toFixed(2), '%'].join(" "));
writeFileSync(file, minified, {flag: 'w'});
}
});

@ -0,0 +1,508 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
ansi-colors@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
camel-case@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
dependencies:
no-case "^2.2.0"
upper-case "^1.1.1"
chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
clean-css@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
dependencies:
source-map "~0.6.0"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
commander@^2.19.0, commander@~2.20.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
define-properties@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
object-keys "^1.0.12"
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.4.3:
version "1.13.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
dependencies:
es-to-primitive "^1.2.0"
function-bind "^1.1.1"
has "^1.0.3"
is-callable "^1.1.4"
is-regex "^1.0.4"
object-keys "^1.0.12"
es-to-primitive@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
function-bind@^1.0.2, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
glob@^7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
graceful-fs@^4.1.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
has@^1.0.1, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
hosted-git-info@^2.1.4:
version "2.8.4"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==
html-minifier@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56"
integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==
dependencies:
camel-case "^3.0.0"
clean-css "^4.2.1"
commander "^2.19.0"
he "^1.2.0"
param-case "^2.1.1"
relateurl "^0.2.7"
uglify-js "^3.5.1"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
dependencies:
has "^1.0.1"
is-symbol@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
dependencies:
has-symbols "^1.0.0"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
json-parse-better-errors@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
dependencies:
graceful-fs "^4.1.2"
parse-json "^4.0.0"
pify "^3.0.0"
strip-bom "^3.0.0"
lower-case@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
no-case@^2.2.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
dependencies:
lower-case "^1.1.1"
normalize-package-data@^2.3.2:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
dependencies:
hosted-git-info "^2.1.4"
resolve "^1.10.0"
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
npm-run-all@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
dependencies:
ansi-styles "^3.2.1"
chalk "^2.4.1"
cross-spawn "^6.0.5"
memorystream "^0.3.1"
minimatch "^3.0.4"
pidtree "^0.3.0"
read-pkg "^3.0.0"
shell-quote "^1.6.1"
string.prototype.padend "^3.0.0"
object-keys@^1.0.12:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
param-case@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
dependencies:
no-case "^2.2.0"
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
dependencies:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
dependencies:
pify "^3.0.0"
pidtree@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
plop-logger@^2.3.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/plop-logger/-/plop-logger-2.4.0.tgz#b6032529842f1bf0394fc5a6791516e00314a2a8"
integrity sha512-fl/VXih1xs3/O718lH9wo+P8hTmFRynh+Y3yPsyYHo2ub2AhuwvqcQkS8dBusK7HnK1uJW6riqONd8GHITivkg==
dependencies:
ansi-colors "^4.1.1"
tslib "^1.10.0"
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
dependencies:
load-json-file "^4.0.0"
normalize-package-data "^2.3.2"
path-type "^3.0.0"
relateurl@^0.2.7:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
resolve@^1.10.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
dependencies:
path-parse "^1.0.6"
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
shell-quote@^1.6.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b"
integrity sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg==
source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
spdx-correct@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
dependencies:
spdx-expression-parse "^3.0.0"
spdx-license-ids "^3.0.0"
spdx-exceptions@^2.1.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
spdx-expression-parse@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
dependencies:
spdx-exceptions "^2.1.0"
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
version "3.0.5"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
string.prototype.padend@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=
dependencies:
define-properties "^1.1.2"
es-abstract "^1.4.3"
function-bind "^1.0.2"
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
tslib@^1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
uglify-js@^3.5.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
dependencies:
commander "~2.20.0"
source-map "~0.6.1"
upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
dependencies:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
Loading…
Cancel
Save