Compare commits

..

2 Commits

Author SHA1 Message Date
Alban
c219583685 [fix] upgrade 2020-01-20 14:22:51 +01:00
Alban
8eb343c8e1 [enh] programme print 2020-01-13 18:31:42 +01:00
5 changed files with 331 additions and 267 deletions

254
appel.html Normal file
View File

@ -0,0 +1,254 @@
<!DOCTYPE html>
<html>
<head>
<title>HSF 2020 </title>
<link rel="stylesheet" type="text/css" href="assets/experiments.css"/>
<link rel="stylesheet" type="text/css" href="assets/gradientui.css"/>
<style type="text/css">
@font-face {font-family: "Museo W01 500";
src: url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.eot"); /* IE9*/
src: url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.woff2") format("woff2"), /* chrome、firefox */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.woff") format("woff"), /* chrome、firefox */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.svg#Museo W01 500") format("svg"); /* iOS 4.1- */
}
</style>
<link type="text/css" href="assets/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
<script type="text/javascript" src="assets/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="assets/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="assets/colorPicker.js"></script>
<script type="text/javascript" src="assets/three.min.js"></script>
<script type="text/javascript" src="assets/gradientui.js"></script>
<!--script type="text/javascript" src="http://mrdoob.github.com/three.js/build/three.min.js"></script-->
<script type="x-shader/x-vertex" id="standardVertexShader">
varying vec2 vUv;
void main()
{
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="gsFragmentShader">
varying vec2 vUv;
uniform float screenWidth;
uniform float screenHeight;
uniform sampler2D tSource;
uniform float delta;
uniform float feed;
uniform float kill;
uniform vec2 brush;
vec2 texel = vec2(1.0/screenWidth, 1.0/screenHeight);
float step_x = 1.0/screenWidth;
float step_y = 1.0/screenHeight;
void main()
{
if(brush.x < -5.0)
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
return;
}
//float feed = vUv.y * 0.083;
//float kill = vUv.x * 0.073;
vec2 uv = texture2D(tSource, vUv).rg;
vec2 uv0 = texture2D(tSource, vUv+vec2(-step_x, 0.0)).rg;
vec2 uv1 = texture2D(tSource, vUv+vec2(step_x, 0.0)).rg;
vec2 uv2 = texture2D(tSource, vUv+vec2(0.0, -step_y)).rg;
vec2 uv3 = texture2D(tSource, vUv+vec2(0.0, step_y)).rg;
vec2 lapl = (uv0 + uv1 + uv2 + uv3 - 4.0*uv);//10485.76;
float du = /*0.00002*/0.2097*lapl.r - uv.r*uv.g*uv.g + feed*(1.0 - uv.r);
float dv = /*0.00001*/0.105*lapl.g + uv.r*uv.g*uv.g - (feed+kill)*uv.g;
vec2 dst = uv + delta*vec2(du, dv);
if(brush.x > 0.0)
{
vec2 diff = (vUv - brush)/texel;
float dist = dot(diff, diff);
if(dist < 5.0)
dst.g = 0.9;
}
gl_FragColor = vec4(dst.r, dst.g, 0.0, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="screenFragmentShader">
varying vec2 vUv;
uniform float screenWidth;
uniform float screenHeight;
uniform sampler2D tSource;
uniform float delta;
uniform float feed;
uniform float kill;
uniform vec4 color1;
uniform vec4 color2;
uniform vec4 color3;
uniform vec4 color4;
uniform vec4 color5;
vec2 texel = vec2(1.0/screenWidth, 1.0/screenHeight);
void main()
{
float value = texture2D(tSource, vUv).g;
//int step = int(floor(value));
//float a = fract(value);
float a;
vec3 col;
if(value <= color1.a)
col = color1.rgb;
if(value > color1.a && value <= color2.a)
{
a = (value - color1.a)/(color2.a - color1.a);
col = mix(color1.rgb, color2.rgb, a);
}
if(value > color2.a && value <= color3.a)
{
a = (value - color2.a)/(color3.a - color2.a);
col = mix(color2.rgb, color3.rgb, a);
}
if(value > color3.a && value <= color4.a)
{
a = (value - color3.a)/(color4.a - color3.a);
col = mix(color3.rgb, color4.rgb, a);
}
if(value > color4.a && value <= color5.a)
{
a = (value - color4.a)/(color5.a - color4.a);
col = mix(color4.rgb, color5.rgb, a);
}
if(value > color5.a)
col = color5.rgb;
gl_FragColor = vec4(col.r, col.g, col.b, 1.0);
}
</script>
<script type="text/javascript" src="grayscott.js"></script>
<meta charset="UTF-8">
<style>
#gradient
{
height: 40px;
width: 85%;
margin-top: 5px;
margin-left:auto;
margin-right:auto;
}
</style>
<script>
$(function()
{
$("#gradient").gradient({values:
[[0.0, '#000000'],
[0.20, '#000000'],
[0.21, '#FFFF00'],
[0.90, '#FFFF00'],
[0.99, '#FFFFFF'],
]});
// KLUDGE!
colorPicker.offsetX = -512;
colorPicker.offsetY = -256;
document.getElementById("gradient").onselectstart = function () {return false;};
init();
});
</script>
</head>
<body>
<div id="simulation" style="position: relative;">
<div id="content" class="over_graph">
<a class="close" title="Fermer la colonne">x</a>
<h1 style>Hacker Space Festival 2020</h1>
<p>Le vendredi 7 et le samedi 8 février, le <a href="https://www.tmplab.org">/tmp/lab</a> propose une rencontre libre dont le programme est ouvert : faites vos propositions !</p>
<p>Au programme de cette rencontre</p>
<ul>
<li>Ateliers</li>
<li>Installation</li>
<li>Démos</li>
<li>Concerts</li>
<li>Projections de films</li>
<li>Conférences</li>
</ul>
<p>Quelques thèmes sélectionnés</p>
<ul class="patchwork">
<li>Shaders </li>
<li>Lasers </li>
<li>Fiction interactive</li>
<li>Blobs</li>
<li>Aquaponie</li>
<li>Dômes géodésiques
<li>Jeu vidéo
<li>Logiciel Libre
<li>Sécurité Linux
</ul>
<p>Pour <a href="#format" id="format_show"></a>l'appel à participation ouvert à tou·te·s ou toute autre question,<br> merci d'utiliser <a href="mailto:info@hackersfest.org">info@hackersfest.org</a></p>
</div>
<div id="format" class="over_graph" style=";">
<a name="format">&nbsp;</a>
<a class="close" title="Fermer la colonne">x</a>
<h1>Appel à participation</h1>
<p>Merci de nous fournir</p>
<ul>
<li>Le nom du hackerspace / orga (si besoin)
<li>Vos identités / pseudos
<li>Vos adresses mail
<li>Vos jours de présence
<li>Vos besoins matériels
<ul>
<li>Hébergement
<li>Nourriture (vegan/veggie/whatever)
<li>Parking
</ul>
<li>Pour chacune de vos propositions :
<ul>
<li>Format (atelier, démo, conf, etc.)
<li>Titre
<li>Description
<li>Liens éventuels (images, sites, etc.)
</ul>
</ul>
<p>La date limite pour nous communiquer vos propositions est fixée au 1er janvier 2020.</p>
<p>Votre participation à l'évènement vaut acceptation du <a href="code-de-conduite.html">code de conduite</a>.</p>
</div>
<div id="visual">
<canvas id="myCanvas" class="viewer" style="width:1024px;height:768px"></canvas>
<div id="replacementImage" style="display: none;">
<img src="images/background-01.png" width="1024px" height="768px">
</div>
</div>
<aside class="panel" style="display: none;">
<section id="instructions">
<header><h4>Instructions</h4></header>
<ol>
<li>Paint some strokes on the canvas.</li>
<li>Choose the evolution settings with the controls below.</li>
<li>Watch the evolution.</li>
</ol>
</section>
<section id="controls">
<div id="gradient" style=""></div>
</section>
</aside>
</div>
<footer>
<div id="copyright">
Based on work by
<a href="https://twitter.com/pmneila">@pmneila</a>
<a href="https://github.com/pmneila/jsexp">Github</a>
</div>
</footer>
</body>
</html>

View File

@ -26,7 +26,6 @@ body {
}
table{
display:none;
}
table tr td {

View File

@ -0,0 +1,39 @@
*{
font-family:"Museo W01 500",Arial,Helvetica Neue,Helvetica,sans-serif;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
font-size: 14pt;
line-height: 1.46em;
}
h2{
font-size:28pt;
color:#f55;
margin-top:64pt;
}
.info {
display:none;
}
table{
border-collapse: collapse;
}
td{
border:1px solid #ccc;
padding : 1%;
}
td.name{
min-width: 250px;
}
td.format{
min-width: 150px;
}
img {
width:100%;
margin-bottom:62px;
}
.links{
display: none;
}

View File

@ -1,254 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>HSF 2020 </title>
<link rel="stylesheet" type="text/css" href="assets/experiments.css"/>
<link rel="stylesheet" type="text/css" href="assets/gradientui.css"/>
<style type="text/css">
@font-face {font-family: "Museo W01 500";
src: url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.eot"); /* IE9*/
src: url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.woff2") format("woff2"), /* chrome、firefox */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.woff") format("woff"), /* chrome、firefox */
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
url("assets/fonts/@font-face/d4d3be6c923464b81f4e89e6a57bc539.svg#Museo W01 500") format("svg"); /* iOS 4.1- */
}
</style>
<link type="text/css" href="assets/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
<script type="text/javascript" src="assets/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="assets/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="assets/colorPicker.js"></script>
<script type="text/javascript" src="assets/three.min.js"></script>
<script type="text/javascript" src="assets/gradientui.js"></script>
<!--script type="text/javascript" src="http://mrdoob.github.com/three.js/build/three.min.js"></script-->
<script type="x-shader/x-vertex" id="standardVertexShader">
varying vec2 vUv;
void main()
{
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="gsFragmentShader">
varying vec2 vUv;
uniform float screenWidth;
uniform float screenHeight;
uniform sampler2D tSource;
uniform float delta;
uniform float feed;
uniform float kill;
uniform vec2 brush;
vec2 texel = vec2(1.0/screenWidth, 1.0/screenHeight);
float step_x = 1.0/screenWidth;
float step_y = 1.0/screenHeight;
void main()
{
if(brush.x < -5.0)
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
return;
}
//float feed = vUv.y * 0.083;
//float kill = vUv.x * 0.073;
vec2 uv = texture2D(tSource, vUv).rg;
vec2 uv0 = texture2D(tSource, vUv+vec2(-step_x, 0.0)).rg;
vec2 uv1 = texture2D(tSource, vUv+vec2(step_x, 0.0)).rg;
vec2 uv2 = texture2D(tSource, vUv+vec2(0.0, -step_y)).rg;
vec2 uv3 = texture2D(tSource, vUv+vec2(0.0, step_y)).rg;
vec2 lapl = (uv0 + uv1 + uv2 + uv3 - 4.0*uv);//10485.76;
float du = /*0.00002*/0.2097*lapl.r - uv.r*uv.g*uv.g + feed*(1.0 - uv.r);
float dv = /*0.00001*/0.105*lapl.g + uv.r*uv.g*uv.g - (feed+kill)*uv.g;
vec2 dst = uv + delta*vec2(du, dv);
if(brush.x > 0.0)
{
vec2 diff = (vUv - brush)/texel;
float dist = dot(diff, diff);
if(dist < 5.0)
dst.g = 0.9;
}
gl_FragColor = vec4(dst.r, dst.g, 0.0, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="screenFragmentShader">
varying vec2 vUv;
uniform float screenWidth;
uniform float screenHeight;
uniform sampler2D tSource;
uniform float delta;
uniform float feed;
uniform float kill;
uniform vec4 color1;
uniform vec4 color2;
uniform vec4 color3;
uniform vec4 color4;
uniform vec4 color5;
vec2 texel = vec2(1.0/screenWidth, 1.0/screenHeight);
void main()
{
float value = texture2D(tSource, vUv).g;
//int step = int(floor(value));
//float a = fract(value);
float a;
vec3 col;
if(value <= color1.a)
col = color1.rgb;
if(value > color1.a && value <= color2.a)
{
a = (value - color1.a)/(color2.a - color1.a);
col = mix(color1.rgb, color2.rgb, a);
}
if(value > color2.a && value <= color3.a)
{
a = (value - color2.a)/(color3.a - color2.a);
col = mix(color2.rgb, color3.rgb, a);
}
if(value > color3.a && value <= color4.a)
{
a = (value - color3.a)/(color4.a - color3.a);
col = mix(color3.rgb, color4.rgb, a);
}
if(value > color4.a && value <= color5.a)
{
a = (value - color4.a)/(color5.a - color4.a);
col = mix(color4.rgb, color5.rgb, a);
}
if(value > color5.a)
col = color5.rgb;
gl_FragColor = vec4(col.r, col.g, col.b, 1.0);
}
</script>
<script type="text/javascript" src="grayscott.js"></script>
<meta charset="UTF-8">
<style>
#gradient
{
height: 40px;
width: 85%;
margin-top: 5px;
margin-left:auto;
margin-right:auto;
}
</style>
<script>
$(function()
{
$("#gradient").gradient({values:
[[0.0, '#000000'],
[0.20, '#000000'],
[0.21, '#FFFF00'],
[0.90, '#FFFF00'],
[0.99, '#FFFFFF'],
]});
// KLUDGE!
colorPicker.offsetX = -512;
colorPicker.offsetY = -256;
document.getElementById("gradient").onselectstart = function () {return false;};
init();
});
</script>
</head>
<body>
<div id="simulation" style="position: relative;">
<div id="content" class="over_graph">
<a class="close" title="Fermer la colonne">x</a>
<h1 style>Hacker Space Festival 2020</h1>
<p>Le vendredi 7 et le samedi 8 février, le <a href="https://www.tmplab.org">/tmp/lab</a> propose une rencontre libre dont le programme est ouvert : faites vos propositions !</p>
<p>Au programme de cette rencontre</p>
<ul>
<li>Ateliers</li>
<li>Installation</li>
<li>Démos</li>
<li>Concerts</li>
<li>Projections de films</li>
<li>Conférences</li>
</ul>
<p>Quelques thèmes sélectionnés</p>
<ul class="patchwork">
<li>Shaders </li>
<li>Lasers </li>
<li>Fiction interactive</li>
<li>Blobs</li>
<li>Aquaponie</li>
<li>Dômes géodésiques
<li>Jeu vidéo
<li>Logiciel Libre
<li>Sécurité Linux
</ul>
<p>Pour <a href="#format" id="format_show"></a>l'appel à participation ouvert à tou·te·s ou toute autre question,<br> merci d'utiliser <a href="mailto:info@hackersfest.org">info@hackersfest.org</a></p>
</div>
<div id="format" class="over_graph" style=";">
<a name="format">&nbsp;</a>
<a class="close" title="Fermer la colonne">x</a>
<h1>Appel à participation</h1>
<p>Merci de nous fournir</p>
<ul>
<li>Le nom du hackerspace / orga (si besoin)
<li>Vos identités / pseudos
<li>Vos adresses mail
<li>Vos jours de présence
<li>Vos besoins matériels
<ul>
<li>Hébergement
<li>Nourriture (vegan/veggie/whatever)
<li>Parking
</ul>
<li>Pour chacune de vos propositions :
<ul>
<li>Format (atelier, démo, conf, etc.)
<li>Titre
<li>Description
<li>Liens éventuels (images, sites, etc.)
</ul>
</ul>
<p>La date limite pour nous communiquer vos propositions est fixée au 1er janvier 2020.</p>
<p>Votre participation à l'évènement vaut acceptation du <a href="code-de-conduite.html">code de conduite</a>.</p>
</div>
<div id="visual">
<canvas id="myCanvas" class="viewer" style="width:1024px;height:768px"></canvas>
<div id="replacementImage" style="display: none;">
<img src="images/background-01.png" width="1024px" height="768px">
</div>
</div>
<aside class="panel" style="display: none;">
<section id="instructions">
<header><h4>Instructions</h4></header>
<ol>
<li>Paint some strokes on the canvas.</li>
<li>Choose the evolution settings with the controls below.</li>
<li>Watch the evolution.</li>
</ol>
</section>
<section id="controls">
<div id="gradient" style=""></div>
</section>
</aside>
</div>
<footer>
<div id="copyright">
Based on work by
<a href="https://twitter.com/pmneila">@pmneila</a>
<a href="https://github.com/pmneila/jsexp">Github</a>
</div>
</footer>
</body>
</html>

1
index.html Symbolic link
View File

@ -0,0 +1 @@
programme.html

View File

@ -4,7 +4,8 @@
<meta charset="utf-8">
<title>HSF 2020&nbsp;: Programme </title>
<link rel="stylesheet" type="text/css" href="assets/gradientui.css"/>
<link rel="stylesheet" type="text/css" href="assets/programme.css"/>
<link rel="stylesheet" type="text/css" media="screen" href="assets/programme.css"/>
<link rel="stylesheet" type="text/css" media="print" href="assets/programme.print.css"/>
<style type="text/css">
@font-face {font-family: "Museo W01 500";
@ -22,7 +23,7 @@
<script type="text/javascript" src="assets/colorPicker.js"></script>
</head>
<body>
<img src="images/header.png">
<img src="images/header.svg">
<p>Festival ouvert à tout.es, accès libre sur participation volontaire. Photos et vidéos interdites sur le site. Toute présence vaut acceptation du <a href="code-de-conduite.html" target="_blank">code de conduite</a>. </p>
<h2>
Les stands ouverts vendredi et samedi
@ -34,10 +35,10 @@ Les stands ouverts vendredi et samedi
<th>Nom</th>
<th>Format</th>
<th>Description</th>
<th>Liens</th>
<th class="links">Liens</th>
</tr>
<tr>
<td class="name">La mixette / @blzforum</td>
<td class="name">La mixette / @blz</td>
<td class="format">Démo</td>
<td class="desc">La mixette est une table tangible musicale inspirée de la <a href="http://reactable.com/ ">reactable</a>. Elle fonctionne avec des logiciels libres et permet de jouer de manière ludique avec 4 samples à la fois</td>
<td class="links">
@ -61,8 +62,8 @@ Les stands ouverts vendredi et samedi
<td class="format">Stand et présentations
</td>
<td class="desc">
Venez découvrir les différents outils de la monnaie libre (duniter, cesium, silkaj, gchange), discuter, créer des comptes, acheter des articles en monnaielibre (T-shirts, badges, stickers...).
Vous pourrez aussi suivre un atelier d'installation de la blockchain sur raspberry pi, pour prouver que forger n'est pas miner d'un point de vue énergétique. 3.6W et un raspi zero à 15€ suffisent.
Venez découvrir les différents outils de la monnaie libre (duniter, cesium, silkaj, gchange), discuter, créer des comptes, échanger en monnaie libre (T-shirts, badges, stickers...).
Vous pourrez aussi suivre un atelier d'installation de la blockchain sur raspberry pi, pour prouver que forger n'est pas miner d'un point de vue énergétique. 3.6W et un raspi 3 à 35€ suffisent.
</td>
<td class="links">
<a href="http://monnaie-libre.fr" target="_blank">monnaie-libre.fr</a>
@ -110,7 +111,7 @@ Les stands ouverts vendredi et samedi
</td>
<td class="format"> Installation sonore et visuelle
</td>
<td class="desc">Issu de la serie harmonie des spheres (HDS) un des premiers prototypes du Dôme structure vibrante en auto-tension qui sera installé a la Station de Radioastronomie de Nançay fin 2020, accompagné de films SF sovietiques tombés dans l'oubli.
<td class="desc">Issu de la serie harmonie des spheres (HDS) un des premiers prototypes du Dôme structure vibrante en auto-tension qui sera installé a la Station de Radioastronomie de Nançay fin 2020, accompagné de films SF sovietiques tombés dans l'oubli. Patché par Bj01 Labomedia.
</td>
<td class="links">
<a href="http://extrasystole-music.blogspot.com/" target="_blank">Blog</a>
@ -191,7 +192,7 @@ Programme du vendredi 7 février 2019
<th>Horaire</th>
<th>Nom</th>
<th>Description</th>
<th>Liens</th>
<th class="links">Liens</th>
</tr>
</thead>
<tbody>
@ -203,9 +204,14 @@ Programme du vendredi 7 février 2019
</tr>
<tr>
<td class="time">18h00</td>
<td class="name"> Bullshit Bingo Awards /tmp/lab</td>
<td class="desc"></td>
<td class="links"></td>
<td class="name">Comment organiser un colloque de 140 conférences et bouquin de 400 pages avec des outils et services libres / @JNM / nicelab.eu</td>
<td class="desc">
J'ai piloté entre 2016 et 2018 la préparation d'un colloque autogéré sans subventions, comprenant 140 conférences, + restauration autogérée en bio et locale pour 200 couverts, + réalisation associée d'un bouquin de 400 pages + expo d'oeuvres enfants et posters scientifiques: les "Assises de la transition écologique et citoyenne- Alpes du Sud"
<br>
Mon intervention décrit le modèle politico-culturel et les stratégies d'organisation, appuyées par une dizaine d'outils collaboratifs libres (dont un inédit, extrêmement utile) et par l'utilisation de services web éthiques (à l'exception du système de vente en ligne des bouquins et repas, passant par un outil de webcommerce standard), ainsi que le modèle économique, basé sur la restauration, les bouquins, le bénévolat, et l'appui logistique (salles) de l'université locale.
</td>
<td class="links">
<a href="https://at06.eu" target="_blank">Site web</a> </td>
</tr>
<tr>
<td class="time">19h00</td>
@ -271,7 +277,7 @@ Programme du samedi 8 février 2019
<th>Horaire</th>
<th>Nom</th>
<th>Description</th>
<th>Liens</th>
<th class="links">Liens</th>
</tr>
</thead>
<tbody>
@ -290,6 +296,23 @@ Programme du samedi 8 février 2019
<td></td>
</tr>
<tr>
<td class="time">16h00</td>
<td class="name">Les joies de la stack trace pour les connecteurs de DBMS / Hugo 'HuGe' BENOIST </td>
<td class="desc">
Nous verrons comment une mauvaise configuration de PHP permet la compromission de base de données sur des sites web.
</td>
<td class="links">
<a href="https://rtfm.re" target="_blank">Site rtfm.re</a>
<a href="https://osint-fr.net" target="_blank">Site osint-fr.net</a>
</td>
</tr>
<tr>
<td class="time">17h00</td>
<td class="name">Table ronde&nbsp;: Interhack et événements collectifs hackerspaces</td>
<td class="desc">Une rencontre informelle pour discuter des événements à venir et des structures partagées entre hackerspaces pour les organiser.</td>
@ -365,6 +388,8 @@ Programme du samedi 8 février 2019
</tbody>
</table>
<br>
<img src="images/footer.svg">
<script>
jQuery(function(){
jQuery("h2").live("click",function(e){