first commit

master
Fabrice Mouhartem 6 years ago
commit d8ed79728c

2
.gitignore vendored

@ -0,0 +1,2 @@
__pycache__/
output/

@ -0,0 +1,124 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
FTP_HOST=localhost
FTP_USER=anonymous
FTP_TARGET_DIR=/
SSH_HOST=localhost
SSH_PORT=22
SSH_USER=root
SSH_TARGET_DIR=/var/www
S3_BUCKET=my_s3_bucket
CLOUDFILES_USERNAME=my_rackspace_username
CLOUDFILES_API_KEY=my_rackspace_api_key
CLOUDFILES_CONTAINER=my_cloudfiles_container
DROPBOX_DIR=~/Dropbox/Public/
GITHUB_PAGES_BRANCH=gh-pages
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] start/restart develop_server.sh '
@echo ' make stopserver stop local server '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' make dropbox_upload upload the web site via Dropbox '
@echo ' make ftp_upload upload the web site via FTP '
@echo ' make s3_upload upload the web site via S3 '
@echo ' make cf_upload upload the web site via Cloud Files'
@echo ' make github upload the web site via gh-pages '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
serve:
ifdef PORT
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
else
cd $(OUTPUTDIR) && $(PY) -m pelican.server
endif
serve-global:
ifdef SERVER
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
else
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
endif
devserver:
ifdef PORT
$(BASEDIR)/develop_server.sh restart $(PORT)
else
$(BASEDIR)/develop_server.sh restart
endif
stopserver:
$(BASEDIR)/develop_server.sh stop
@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
ssh_upload: publish
scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
rsync_upload: publish
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
dropbox_upload: publish
cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
ftp_upload: publish
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
s3_upload: publish
s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type
cf_upload: publish
cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
github: publish
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
git push origin $(GITHUB_PAGES_BRANCH)
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github

@ -0,0 +1,18 @@
Title: 2016 2017: Architecture, Système et Réseaux 2
Date: 2016-10-28 10:37
Category: Teaching
Lang: en
**Lectures:** By [Michael Rao](http://perso.ens-lyon.fr/michael.rao/)
**Tutorials:** TBA
A description of the course is available [here](http://www.ens-lyon.fr/DI/?p=97).
This course is the second part of an [architecture](http://www.ens-lyon.fr/DI/?p=61) course. This part aims at providing knowledge about “how to use the underlying processors to do stuff”. That is, how the system manages all of this. Finally the course ends by giving some network intuitions.
Et je ne sais pas pourquoi j'ai expliqué ça en anglais…
## Tutorials
***TBA***

@ -0,0 +1,39 @@
Title: 2015 2016: Computational Complexity
Date: 2016-09-19 15:21
Category: Teaching
Lang: en
save_as: CC15-16.html
URL: CC15-16.html
**Lectures:** By [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/), on Thursday 10:15 — 12:15, Amphi ??\
**Tutorials:** On Tuesday 15:45 — 17:45, Amphi B
A description of the course is available
[here](http://www.ens-lyon.fr/DI/?p=3932) and more extensive information is accessible
[here](http://perso.ens-lyon.fr/omar.fawzi/teaching/complexity/index.html).
To sum up, this course aims at making you more familiar with the different
complexity classes (i.e. a classification of the different computational
problems based on their asymptotical resource consumption).
## Tutorials
* [TD1](CC15-16/td01.pdf): On Turing machines.
* [TD2](CC15-16/td02.pdf): On Turing machines, and some $P/NP$ considerations.
* [TD3](CC15-16/td03.pdf): On Time Constructible Functions, NP-Completeness and Hierarchy.
* [TD4](CC15-16/td04.pdf): On Space Complexity
* [TD5](CC15-16/td05.pdf): Still on Space
* [TD6](CC15-16/td06.pdf): Padding and Oracles
* [TD7](CC15-16/td07.pdf): Time-Space tradeoff and Polynomial Hierarchy
* [TD8](CC15-16/td08.pdf): Two-players game, and circuit complexity
* [TD9](CC15-16/td09.pdf): Randomized Classes
* [TD10](CC15-16/td10.pdf): Randomized Computation
## Useful Resources
* Sanjeev Arora and Boaz Barak.
[Computational Complexity: A Modern Approach](http://theory.cs.princeton.edu/complexity/)
* *In French:* Sylvain Périfel.
[Complexité Algorithmique.](http://www.liafa.jussieu.fr/~sperifel/complexite.pdf)
* [Last year](https://builds.progval.net/ens/cours-m1/CplxAlgo/CplxAlgo.pdf)
lecture notes [[git]](http://git.aliens-lyon.fr/tpelliss/cours-m1).

@ -0,0 +1,31 @@
Title: 2016 2017: Computational Complexity
Date: 2016-10-04 12:40
Category: Teaching
Lang: en
save_as: CC16-17.html
URL: CC16-17.html
**Lectures:** By [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/)
**Tutorials:** TBA
A description of the course is available
[here](http://www.ens-lyon.fr/DI/?p=3932) and more extensive information is accessible
[here](http://perso.ens-lyon.fr/omar.fawzi/teaching/complexity/index.html).
To sum up, this course aims at making you more familiar with the different
complexity classes (i.e. a classification of the different computational
problems based on their asymptotical resource consumption).
## Tutorials
***TBA***
## Useful Resources
* Sanjeev Arora and Boaz Barak.
[Computational Complexity: A Modern Approach](http://theory.cs.princeton.edu/complexity/)
* *In French:* Sylvain Périfel.
[Complexité Algorithmique.](http://www.liafa.jussieu.fr/~sperifel/complexite.pdf)
* [2015](https://builds.progval.net/ens/cours-m1/CplxAlgo/CplxAlgo.pdf)
lecture notes [[git]](http://git.aliens-lyon.fr/tpelliss/cours-m1).
* [Last Year Course](http://perso.ens-lyon.fr/fabrice.mouhartem/CC15-16.html)

@ -0,0 +1,25 @@
Title: 2016 2017: Cryptography and Security
Date: 2016-10-17 17:34:14+02:00
Category: Teaching
Lang: en
**Lectures:** By [Benoît Libert](http://perso.ens-lyon.fr/benoit.libert) and [Damien Stehlé](http://perso.ens-lyon.fr/damien.stehle).
**Tutorials:** TBA
A description of the course is available [here](http://www.ens-lyon.fr/DI/?p=3929).
To sum up, this course aims at presenting the different constructions in cryptography, from symmetric primitives such as pseudorandom functions, constructions such as stream ciphers, operation modes... Going to provable security with public-key cryptosystems and game-based security proofs. If you want to know more, feel free to enroll the course ☺
## Tutorials
***TBA***
## Useful Resources
* Jonathan Katz and Yehuda Lindell,
[Introduction to Modern Cryptography](http://www.cs.umd.edu/~jkatz/imc.html)
* [2015's](https://builds.progval.net/ens/cours-m1/Crypto/Crypto.pdf)
lecture notes [[git]](http://git.aliens-lyon.fr/tpelliss/cours-m1).
* The lectures of Dan Boneh on [coursera](https://fr.coursera.org/learn/crypto#syllabus).

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="86.791985mm"
height="73.521156mm"
viewBox="0 0 307.53065 260.50803"
id="svg64695"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="canard_vectorise.svg">
<defs
id="defs64697" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="188.21602"
inkscape:cy="140.62039"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1362"
inkscape:window-height="729"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0" />
<metadata
id="metadata64700">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-351.94896,-93.536766)">
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 510.13374,173.93983 45.25488,-21.2132 -34.64828,58.33631 z"
id="path34733"
inkscape:connector-curvature="0" />
<path
style="fill:#00ff66;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 513.56902,174.35126 42,-21.5 -36,65 z"
id="path34731"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 352.44893,112.42154 60.45763,21.2132 -14.84925,-27.57716 -43.84062,3.53553 z"
id="path34735"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 535.58962,195.50659 47.7297,-23.68808 75.3068,70.00357 -108.1046,-16.38909 z"
id="path34737"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 437.30174,139.9987 76.72109,34.29468 93.69169,62.2254 c 0,0 -133.99678,-32.52691 -135.41099,-33.94113 -1.41422,-1.41421 -35.00179,-62.57895 -35.00179,-62.57895 z"
id="path34747"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 537.00382,201.87055 46.3155,-29.34493 75.6604,70.00357 -129.7541,-17.32412 z"
id="path34739"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 380.7332,126.21012 8.83883,-32.173357 30.37006,2.06066 39.98707,54.154327 -31.81981,4.94975 -11.66726,-18.73833 z"
id="path34741"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:#00ff66;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 452.85809,151.66597 156.97773,88.38834 -117.0262,20.5061 -38.89087,-51.26524 -13.43503,-48.08326 13.78858,-9.19239 z"
id="path34749"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 492.97016,260.49791 103.07706,93.04704 -81.06729,-166.60943 -5.90686,59.1292 z"
id="path34751"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#00ff66;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 381.79386,126.56367 7.42462,-31.8198 29.69848,3.535534 39.59798,62.225396 -4.24264,48.79037 -36.06244,-52.67946 -7.07107,-15.9099 z"
id="path34745"
inkscape:connector-curvature="0" />
<path
style="fill:#00ff66;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 380.31902,125.60126 78.25,35.25 -40.5,-62.999996 -30,-2.75 z"
id="path34757"
inkscape:connector-curvature="0" />
<path
style="fill:#33ff66;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="m 515.08349,186.70329 -22.17767,73.96067 103.4949,92.52744 -68.5893,-123.74369 z"
id="path34753"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 456.31902,151.35126 87.25,45.25"
id="path34759"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

@ -0,0 +1,84 @@
Title: Bienvenue
Date: 2016-09-19 15:20
Slug: home
Lang: fr
URL: index-fr.html
save_as: index-fr.html
Présentation
------------
Bienvenue sur ma page personnelle professionnelle.
Je suis actuellement en deuxième année de thèse dans l'équipe [AriC](http://www.ens-lyon.fr/LIP/AriC/) au
[LIP](http://www.ens-lyon.fr/LIP/) (*Laboratoire de lInformatique et du Parallélisme*) à Lyon sous la direction de [Benoit Libert](http://perso.ens-lyon.fr/benoit.libert/),
je travaille sur la
**cryptographie protégeant la vie privée avec des fonctionnalités avancées**.
Mon CV est disponible en [français](documents/cv.pdf) ou en [anglais](documents/cv_english.pdf).
Me contacter
------------
**e-mail** : `ocaml <<<'(fun p n -> p ^ "." ^ n ^ "@ens-lyon.fr") "fabrice" "mouhartem";;'`{.ocaml}\
Ma clé publique __PGP__ est disponible [ici](documents/pubkey.asc).
<div class="container"> <div class=".row"> <div class="six columns">
**Adresse postale** :
```
École Normale Supérieure de Lyon
AriC Team, LIP laboratory
46 Allée d'Italie
69364 Lyon Cedex 07
France
```
**Téléphone** :
`04.72.72.83.52`
</div><div class="eight columns">
<div id="enslyon" style="align:right;height:300px;width:100%"></div>
<script type="text/javascript">
var mymap = L.map('enslyon').setView([45.72965, 4.82707], 17);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(mymap);
var marker=L.marker([45.72998, 4.82676]).addTo(mymap);
marker.bindPopup("GN1 313 Sud");
</script>
</div></div></div>
Où me trouver ?
---------------
Les endroits où j'ai pu me trouver ou me trouverai:
* Le bureau N329 au [LIP](http://www.ens-lyon.fr/LIP/).
* Les [Lattice Meetings](http://perso.ens-lyon.fr/damien.stehle/LATTICE_MEETINGS.html), et à celle de [Londres](http://malb.io/discrete-subgroup/2016/09/21/lattice-meeting/).
* Aux **Conférences**:
[Arith 22](http://arith22.gforge.inria.fr/),
[Asiacrypt 2015](https://www.math.auckland.ac.nz/~sgal018/AC2015/index.html),
[PKC 2016](http://troll.iis.sinica.edu.tw/pkc16/index.shtml),
[Eurocrypt 2016](http://ist.ac.at/eurocrypt2016/),
[AsiaCCS 2016](http://meeting.xidian.edu.cn/conference/AsiaCCS2016/),
[ACNS 2016](http://acns2016.sccs.surrey.ac.uk/cfp.html),
[Crypto 2016](http://www.iacr.org/conferences/crypto2016/),
[TCC 2016-B](http://tcc2016b.sklois.cn/),
[Asiacrypt 2016](http://www.asiacrypt2016.org/).
* Aux rencontres du **GDR-IM**:
Les [Journées du GT-C2](http://imath.univ-tln.fr/C2/),
[Journées Nationales 2016 du GDR-IM](https://lipn.univ-paris13.fr/GDR-IM-2016/),
[RAIM 2016](http://raim2016.sciencesconf.org/),
[JNCF 2017](https://jncf2017.lip6.fr/).
Enseignements
=============
* **2016 — 2017**
* TD/TP d'***Architecture, Systèmes et Réseaux 2*** en L3IF dont le cours est donné par [Michaël Rao](http://perso.ens-lyon.fr/michael.rao).
* TDs de [*Cryptologie*](http://perso.ens-lyon.fr/damien.stehle/teaching.html) en M1IF, dont le cours est donné par [Damien Stehlé](http://perso.ens-lyon.fr/damien.stehle) et [Benoît Libert](http://perso.ens-lyon.fr/benoit.libert).
* TDs de ***Complexité Algorithmique*** en M1IF, cours donnés par [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/).
* **2015 — 2016** :
* TD/TP de [*Théorie de la programmation*](https://perso.ens-lyon.fr/philippe.audebaud/ThPr/) en L3IF,
cours donnés par [Philippe Audebaud](https://perso.ens-lyon.fr/philippe.audebaud/), TDs donnés avec
[Anupam Das](http://www.anupamdas.com/) et [Antoine Plet](http://perso.ens-lyon.fr/antoine.plet/).
* TDs de [*Complexité Algorithmique*](CC15-16.html) en M1IF, cours donnés par [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/).

@ -0,0 +1,82 @@
Title: Home
Date: 2016-09-19 15:21
Slug: home
Lang: en
URL:
save_as: index.html
Presentation
------------
Welcome to my personal page.
I am a second year Ph.D. student at the [LIP](http://www.ens-lyon.fr/LIP/)
(*Laboratoire de lInformatique et du Parallélisme*) in Lyon supervised by
[Benoit Libert](http://perso.ens-lyon.fr/benoit.libert/) on **privacy-enhancing cryptography with advanced functionalities**.
My resume is available either in [English](documents/cv_english.pdf) or
in [French](documents/cv.pdf).
Contact
-------
If you want to contact me for any reason, it is possible by mail through the
address `sed 's/#/fabrice/;s/#/mouhartem/' <<<'#.#@ens-lyon.fr'`, my gpg public
key is available [here](documents/pubkey.asc).
<div class="container"> <div class=".row"> <div class="six columns">
Snailmail address:
```
École Normale Supérieure de Lyon
AriC Team, LIP laboratory
46 Allée d'Italie
69364 Lyon Cedex 07
France
```
**Telephone number:** `04.72.72.83.52`
</div><div class="eight columns">
<div id="enslyon" style="align:right;height:300px;width:100%"></div>
<script type="text/javascript">
var mymap = L.map('enslyon').setView([45.72965, 4.82707], 17);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(mymap);
var marker=L.marker([45.72998, 4.82676]).addTo(mymap);
marker.bindPopup("GN1 313 Sud");
</script>
</div></div></div>
Where am I?
-----------
Places where I was, be or will be:
* The office N329 at [LIP](http://www.ens-lyon.fr/LIP/) in Lyon.
* Usually in the [(Soft) Lattice Meetings](http://perso.ens-lyon.fr/damien.stehle/LATTICE_MEETINGS.html), and the [London-ish lattice meeting](http://malb.io/discrete-subgroup/2016/09/21/lattice-meeting/).
* **Conferences**:
[Arith 22](http://arith22.gforge.inria.fr/),
[Asiacrypt 2015](https://www.math.auckland.ac.nz/~sgal018/AC2015/index.html),
[PKC 2016](http://troll.iis.sinica.edu.tw/pkc16/index.shtml),
[Eurocrypt 2016](http://ist.ac.at/eurocrypt2016/),
[AsiaCCS 2016](http://meeting.xidian.edu.cn/conference/AsiaCCS2016/),
[ACNS 2016](http://acns2016.sccs.surrey.ac.uk/cfp.html),
[Crypto 2016](http://www.iacr.org/conferences/crypto2016/),
[TCC 2016-B](http://tcc2016b.sklois.cn/),
[Asiacrypt 2016](http://www.asiacrypt2016.org/).
* **Meetings**:
[Journées C2](http://imath.univ-tln.fr/C2/),
[Journées Nationales 2016 du GDR-IM](https://lipn.univ-paris13.fr/GDR-IM-2016/),
[RAIM 2016](http://raim2016.sciencesconf.org/),
[JNCF 2017](https://jncf2017.lip6.fr/).
Teaching
========
* **2016 — 2017**:
+ **Bachelor** Tutorials of ***Architecture, Système et Réseaux 2***. This course mainly deals with operating systems and networks. The course is given by [Michael Rao](http://perso.ens-lyon.fr/michael.rao/).
+ **Master 1** Tutorials of [*Cryptology*](http://perso.ens-lyon.fr/damien.stehle/teaching.html). The course is jointly given by [Damien Stehlé](http://perso.ens-lyon.fr/damien.stehle/) and [Benoît Libert](http://perso.ens-lyon.fr/benoit.libert/).
+ **Master 1** Tutorials of ***Computational Complexity***, the main course is taught by [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/)
* **2015 — 2016**:
+ **Bachelor** Tutorials of [*Programming Theory*](https://perso.ens-lyon.fr/philippe.audebaud/ThPr/), the main
course is given by [Philippe Audebaud](https://perso.ens-lyon.fr/philippe.audebaud/) and the tutorial is given with [Anupam Das](http://www.anupamdas.com/) and [Antoine Plet](http://perso.ens-lyon.fr/antoine.plet/)
+ **Master 1** Tutorials of [*Computational Complexity*](CC15-16.html), the main course is taught by [Omar Fawzi](http://perso.ens-lyon.fr/omar.fawzi/)

@ -0,0 +1,84 @@
Title: Recherche
Date: 2016-09-20
Slug: research
Lang: fr
Publications
------------
### Conférences
* Benoit Libert, San Ling, Fabrice Mouhartem, Khoa Nguyen et Huaxiong Wang.
Signature Schemes with Efficient Protocols and Dynamic Group Signatures from Lattice Assumptions.
À paraître, Asiacrypt'16.
*eprint [2016/101](http://ia.cr/2016/101)*. 2016.
* Benoit Libert, San Ling, Fabrice Mouhartem, Khoa Nguyen et Huaxiong Wang.
Zero-Knowledge Arguments for Matrix-Vector Relations and Lattice-Based Group Encryption
À paraître, Asiacrypt'16.
*ePrint [2016/879](http://ia.cr/2016/879)*. 2016.
* Benoît Libert, Fabrice Mouhartem and Khoa Nguyen. A Lattice-Based Group
Signature Scheme with Message-Dependent Opening. À *<abbr title="Applied Cryptography and Network Security">ACNS</abbr>'16*. 2016. [[version complète | hal]](https://hal.inria.fr/hal-01302790)
* Benoît Libert, Fabrice Mouhartem, Thomas Peters et Moti Yung. Practical
“Signatures with Efficient Protocols” from Simple Assumptions. À *AsiaCCS'16*. 2016. [[version complète | hal]](https://hal.inria.fr/hal-01303696)
Exposés
-------
### Conférences et Séminaires
* Présentations en **Conférences**:
* 01/06/2016: [AsiaCCS](http://meeting.xidian.edu.cn/conference/AsiaCCS2016/home.html); *Practical “Signatures with Efficient Protocols” from Simple Assumptions*.
* 20/06/2016: [Applied Cryptography and Network Security](http://acns2016.sccs.surrey.ac.uk/index.html); *A Lattice-Based Group Signature Scheme with Message-Dependent Opening*.
* [Séminaire AriC](http://www.ens-lyon.fr/LIP/AriC/seminar):
* 24/09/2015: *Lattice-based group signatures for dynamic groups*.
* 16/06/2016: *Crypto's fair: Lattice-Based Group Encryption*.
* [Lattice and Crypto Meetings](http://perso.ens-lyon.fr/damien.stehle/LATTICE_MEETINGS.html):
* 01/10/2015: *Lattice-based group signatures for dynamic groups*.
* Rencontres du [GDR-IM](https://www.gdr-im.fr/):
* 06/10/2015: [Journées du GT-C2](http://imath.univ-tln.fr/C2/); *Signature de groupe dynamique à base de réseaux euclidiens*
* 30/06/2016: Journées du GT-Arith ([RAIM](http://raim2016.sciencesconf.org/)); *Signature de Groupes et Réseaux Euclidiens*
### Vulgarisation/Grand Public
* 22/10/2016: [Journées Nationales de l'APMEP](http://www.jnlyon2016.fr/) sur *L'origami est NP-Complet* [[Présentation]](../documents/APMEP-16.pdf)
* 15/10/2016: [Fête de la science](http://fetedelascience.ens-lyon.fr/origami-une-histoire-de-papier-et-de-mathematique-270357.kjsp?RH=1446795779287):
* Animation d'un atelier sur l'**origami**
* « Causerie mathématique » de 20 minutes sur *les preuves sans divulgation de connaissances* [[Présentation]](../documents/FDLS-ZK.pdf)
* 15/06/2016: Journée des lauréats du [concours Al-Kindi](http://www.concours-alkindi.fr/#/); *Aperçu de la Cryptographie Moderne: Le Vote Électronique*
* [Séminaire de la détente mathématique](http://math.univ-lyon1.fr/mmi/-Detente-mathematique-)
* [19/11/2015](http://math.univ-lyon1.fr/mmi/Sur-les-preuves-sans-divulgation): Sur *les preuves à divulgation nulle de connaissance* [[Présentation]](../documents/Preuve_ZK.pdf)
* [16/03/2016](http://www.mmi-lyon.fr/Origami): *Origamis* [[Présentation]](../documents/Origami.pdf)
* 10/10/2015: [Fête de la science](http://fetedelascience.ens-lyon.fr/mathematiques-et-informatique-magimatique-origami-et-ludotheque-mathematique-320244.kjsp?RH=1435568685904), animation d'un atelier sur l'**origami**.
#### Addendum
**Marie Lhuissier** a proposé un [résumé coloré](http://images.math.cnrs.fr/Sur-les-preuves-sans-divulgation-de-connaissance.html) pour l'exposé sur *les preuves à divulgation nulle de connaissances* pour la rubrique [images des maths](http://images.math.cnrs.fr/+-Carnets-de-route-de-la-MMI-+.html) du [CNRS](http://cnrs.fr).
Stages
------
* M2 : *Conception dun schéma de signature de groupes dynamique fondé sur
les réseaux euclidiens*, avec Benoît Libert au [LIP](http://www.ens-lyon.fr/LIP/web-n/). [[Rapport (en)]](../documents/M2_Internship_report.pdf) [[Présentation (en)]](../documents/M2_Internship_presentation.pdf)
- M1 : *Sur le logarithme discret en petite caractéristique*, avec
Fréderik Vercauteren au [KU Leuven](http://www.kuleuven.be/english).
[\[Rapport (en)\]](../documents/M1_Internship_report.pdf)
[\[Présentation (en)\]](../documents/M1_Internship_presentation.pdf)
- L3 : *Amélioration des performances énergétiques pour le GPGPU en
exploitant la régularité des données*, avec Sylvain Collange à
[lINRIA Rennes](http://www.inria.fr/equipes/alf). [[Rapport]](../documents/L3_Stage_rapport.pdf) [[Présentation (en)]](../documents/L3_Stage_presentation.pdf)
Centres dintérêts
------------------
Mes centres dintérêts scientifiques sont principalement la *cryptologie*, le *calcul formel* et en particulier la *théorie algorithmique des nombres*.
En dehors de ça, je suis intéressé par les problèmes relatifs à la *combinatoire*.
Notes de Cours
--------------
Mes notes du [cours de probabilité](download/probabilite.pdf) de Pascal Koiran.
Mes notes de M1 (incomplètes) sont disponibles sur ce dépot git :
<http://git.aliens-lyon.fr/fmouhart/cours-m1>,
une version plus complète repris par les plus jeunes est disponible [ici](http://git.aliens-lyon.fr/tpelliss/cours-m1).

@ -0,0 +1,69 @@
Title: Research
Date: 2016-09-19 15:21
Slug: research
Lang: en
Publications
------------
### Conference Paper
* Benoit Libert, San Ling, Fabrice Mouhartem, Khoa Nguyen and Huaxiong Wang.
Signature Schemes with Efficient Protocols and Dynamic Group Signatures from Lattice Assumptions.
To appear, Asiacrypt'16.
*ePrint report [2016/101](http://ia.cr/2016/101)*. 2016.
* Benoit Libert, San Ling, Fabrice Mouhartem, Khoa Nguyen and Huaxiong Wang.
Zero-Knowledge Arguments for Matrix-Vector Relations and Lattice-Based Group Encryption.
To appear, Asiacrypt'16.
*ePrint report [2016/879](http://ia.cr/2016/879)*. 2016.
* Benoît Libert, Fabrice Mouhartem and Khoa Nguyen. A Lattice-Based Group Signature Scheme with Message-Dependent Opening. In *<abbr title="Applied Cryptography and Network Security">ACNS</abbr>'16*. 2016. [[full version | hal]](https://hal.inria.fr/hal-01302790)
* Benoît Libert, Fabrice Mouhartem, Thomas Peters and Moti Yung. Practical
“Signatures with Efficient Protocols” from Simple Assumptions. In *AsiaCCS'16*. 2016. [[full version | hal]](https://hal.inria.fr/hal-01303696)
Talks
-----
### Conferences and Seminars
* **Conferences**:
* 01/06/2016: [AsiaCCS](http://meeting.xidian.edu.cn/conference/AsiaCCS2016/home.html); *Practical “Signatures with Efficient Protocols” from Simple Assumptions*.
* 20/06/2016: [Applied Cryptography and Network Security](http://acns2016.sccs.surrey.ac.uk/index.html); *A Lattice-Based Group Signature Scheme with Message-Dependent Opening*.
* [Aric Seminar](http://www.ens-lyon.fr/LIP/AriC/seminar):
* 24/09/2015: *Lattice-based group signatures for dynamic groups*.
* 16/06/2016: *Crypto's fair: Lattice-Based Group Encryption*.
* [Lattice and Crypto Meetings](http://perso.ens-lyon.fr/damien.stehle/LATTICE_MEETINGS.html):
* 01/10/2015: *Lattice-based group signatures for dynamic groups*.
* [GDR-IM](https://www.gdr-im.fr/)'s Meetings:
* 06/10/2015: [GT-C2's days](http://imath.univ-tln.fr/C2/); *Signature de groupe dynamique à base de réseaux euclidiens* (in French)
* 30/06/2016: GT-Arith's days ([RAIM](http://raim2016.sciencesconf.org/)); *Signature de Groupes et Réseaux Euclidiens* (in French)
### Popularisation (In [French](research-fr.html))
* 22/10/2016: [Journées Nationales de l'APMEP](http://www.jnlyon2016.fr/) about the *NP-Completeness of Origami* [[Présentation (fr)]](../documents/APMEP-16.pdf)
* 15/10/2016: [Fête de la science](http://fetedelascience.ens-lyon.fr/):
* workshop about mathematical origamis
* 20 min. popularisation talk about *zero-knowledge proofs* [[Présentation (fr)]](../documents/FDLS-ZK.pdf)
* 15/06/2016: [Al-Kindi Contest](http://www.concours-alkindi.fr/#/) laureates' day; *A glance at modern cryptograhy: e-voting*
* [Recreational Mathematics Seminar](http://math.univ-lyon1.fr/mmi/-Detente-mathematique-)
* [19/11/2014](http://math.univ-lyon1.fr/mmi/Sur-les-preuves-sans-divulgation): *Zero-Knowledge Proofs* [[Présentation (fr)]](../documents/Preuve_ZK.pdf)
* [16/03/2016](http://math.univ-lyon1.fr/mmi/Origami): *Origamis* [[Présentation (fr)]](../documents/Origami.pdf)
* 10/10/2015: “[Fête de la Science](http://fetedelascience.ens-lyon.fr/)”, workshop about *mathematical origamis*
Internships
-----------
* Master 2: *Lattice-based group signature scheme for dynamic groups*, with Benoît Libert, at the [LIP](http://www.ens-lyon.fr/LIP/web-n/). [[Report]](../documents/M2_Internship_report.pdf) [[Presentation]](../documents/M2_Internship_presentation.pdf)
- Master 1: *On the discrete logarithm problem in small characteristic*,
with Fréderik Vercauteren in [KU
Leuven](http://www.kuleuven.be/english). [\[Report\]](../documents/M1_Internship_report.pdf) [\[Presentation\]](documents/M1_Internship_presentation.pdf)
- Bachelor: *Improving GPU energy efficiency using data locality*, with
Sylvain Collange at [INRIA Rennes](http://www.inria.fr/equipes/alf).
[\[Report (fr)\]](../documents/L3_Stage_rapport.pdf) [\[Presentation\]](documents/L3_Stage_presentation.pdf)
Interests
---------
I am particularly interested in *cryptology* and in *computer algebra*.
I am also interested in *combinatoric*.

@ -0,0 +1,24 @@
Title: Et Cætera
Date: 2016-09-20
Slug: etc
Lang: fr
Passe-temps
-----------
<center>![Canard Origami](../images/canard-origami.svg)</center>
- [Origami](https://www.flickr.com/photos/chouhartem/) : entre le
passe-temps et la passion. Adhérent [MFPP](http://mfpp-origami.fr/).
* Entre autre, jai écrit un article pour la revue [Le Pli](http://mfpp-origami.fr/en/le-pli/)
n°[137](http://mfpp-origami.fr/en/le-pli-n-137-2015/), et un court encadré pour le Pli
n°[138](http://mfpp-origami.fr/en/le-pli-n-138-2015/).
* J'ai été aux conventions [LUO](http://ooraa.free.fr/index.html) #6, #7 et #8, ainsi qu'aux [Rencontres de Mai](http://mfpp-origami.fr/agenda/rencontres-de-mai/) 2015 et 2016.
Projets
-------
* J'ai contribué à [origram](http://origram.org/), un simulateur de pliages de
papiers, initialement pensé pour aider les créateurs à diagrammer.
* [EnigML](http://git.aliens-lyon.fr/fmouhart/enigml) : un simulateur de la machine
[enigma](https://fr.wikipedia.org/wiki/Enigma_(machine)), écrite en **OCaml**.

@ -0,0 +1,19 @@
Title: Et Cætera
Date: 2016-09-20
Slug: etc
Lang: en
Hobbies
-------
<center>![Canard Origami](../images/canard-origami.svg)</center>
- [Origami](https://www.flickr.com/photos/chouhartem/): from time to time
I fold some pieces of paper. I'm a member of the [MFPP](http://mfpp-origami.fr/en/) association. I also attend to origami convention from time to time: [LUO](http://ooraa.free.fr/index-eng.html) and [MFPP Meetings](http://mfpp-origami.fr/agenda/rencontres-de-mai/).
Projects
--------
* [Origram](http://origram.org/): an origami simulator and diagrammer.
* [EnigML](http://git.aliens-lyon.fr/fmouhart/enigml): an [enigma
machine](https://en.wikipedia.org/wiki/Enigma_machine) simulator in **OCaml**.

@ -0,0 +1,103 @@
#!/usr/bin/env bash
##
# This section should match your Makefile
##
PY=${PY:-python3}
PELICAN=${PELICAN:-pelican}
PELICANOPTS=
BASEDIR=$(pwd)
INPUTDIR=$BASEDIR/content
OUTPUTDIR=$BASEDIR/output
CONFFILE=$BASEDIR/pelicanconf.py
###
# Don't change stuff below here unless you are sure
###
SRV_PID=$BASEDIR/srv.pid
PELICAN_PID=$BASEDIR/pelican.pid
function usage(){
echo "usage: $0 (stop) (start) (restart) [port]"
echo "This starts Pelican in debug and reload mode and then launches"
echo "an HTTP server to help site development. It doesn't read"
echo "your Pelican settings, so if you edit any paths in your Makefile"
echo "you will need to edit your settings as well."
exit 3
}
function alive() {
kill -0 $1 >/dev/null 2>&1
}
function shut_down(){
PID=$(cat $SRV_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Stopping HTTP server"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $SRV_PID
else
echo "HTTP server PIDFile not found"
fi
PID=$(cat $PELICAN_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Killing Pelican"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $PELICAN_PID
else
echo "Pelican PIDFile not found"
fi
}
function start_up(){
local port=$1
echo "Starting up Pelican and HTTP server"
shift
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
pelican_pid=$!
echo $pelican_pid > $PELICAN_PID
cd $OUTPUTDIR
$PY -m pelican.server $port &
srv_pid=$!
echo $srv_pid > $SRV_PID
cd $BASEDIR
sleep 1
if ! alive $pelican_pid ; then
echo "Pelican didn't start. Is the Pelican package installed?"
return 1
elif ! alive $srv_pid ; then
echo "The HTTP server didn't start. Is there another service using port" $port "?"
return 1
fi
echo 'Pelican and HTTP server processes now running in background.'
}
###
# MAIN
###
[[ ($# -eq 0) || ($# -gt 2) ]] && usage
port=''
[[ $# -eq 2 ]] && port=$2
if [[ $1 == "stop" ]]; then
shut_down
elif [[ $1 == "restart" ]]; then
shut_down
start_up $port
elif [[ $1 == "start" ]]; then
if ! start_up $port; then
shut_down
fi
else
usage
fi

94
fabfile.py vendored

@ -0,0 +1,94 @@
from fabric.api import *
import fabric.contrib.project as project
import os
import shutil
import sys
import SocketServer
from pelican.server import ComplexHTTPRequestHandler
# Local path configuration (can be absolute or relative to fabfile)
env.deploy_path = 'output'
DEPLOY_PATH = env.deploy_path
# Remote server configuration
production = 'root@localhost:22'
dest_path = '/var/www'
# Rackspace Cloud Files configuration settings
env.cloudfiles_username = 'my_rackspace_username'
env.cloudfiles_api_key = 'my_rackspace_api_key'
env.cloudfiles_container = 'my_cloudfiles_container'
# Github Pages configuration
env.github_pages_branch = "gh-pages"
# Port for `serve`
PORT = 8000
def clean():
"""Remove generated files"""
if os.path.isdir(DEPLOY_PATH):
shutil.rmtree(DEPLOY_PATH)
os.makedirs(DEPLOY_PATH)
def build():
"""Build local version of site"""
local('pelican -s pelicanconf.py')
def rebuild():
"""`clean` then `build`"""
clean()
build()
def regenerate():
"""Automatically regenerate site upon file modification"""
local('pelican -r -s pelicanconf.py')
def serve():
"""Serve site at http://localhost:8000/"""
os.chdir(env.deploy_path)
class AddressReuseTCPServer(SocketServer.TCPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(('', PORT), ComplexHTTPRequestHandler)
sys.stderr.write('Serving on port {0} ...\n'.format(PORT))
server.serve_forever()
def reserve():
"""`build`, then `serve`"""
build()
serve()
def preview():
"""Build production version of site"""
local('pelican -s publishconf.py')
def cf_upload():
"""Publish to Rackspace Cloud Files"""
rebuild()
with lcd(DEPLOY_PATH):
local('swift -v -A https://auth.api.rackspacecloud.com/v1.0 '
'-U {cloudfiles_username} '
'-K {cloudfiles_api_key} '
'upload -c {cloudfiles_container} .'.format(**env))
@hosts(production)
def publish():
"""Publish to production via rsync"""
local('pelican -s publishconf.py')
project.rsync_project(
remote_dir=dest_path,
exclude=".DS_Store",
local_dir=DEPLOY_PATH.rstrip('/') + '/',
delete=True,
extra_opts='-c',
)
def gh_pages():
"""Publish to GitHub Pages"""
rebuild()
local("ghp-import -b {github_pages_branch} {deploy_path}".format(**env))
local("git push origin {github_pages_branch}".format(**env))

@ -0,0 +1,66 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Fabrice Mouhartem'
SITENAME = 'Fabrice Mouhartem'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Europe/Paris'
DEFAULT_LANG = 'en'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Theme & Plugins
PLUGIN_PATHS = ['./plugins/']
PLUGINS = ['pandoc_reader']
PANDOC_ARGS = [
'--mathml',
]
THEME = 'theme'
#Themes customs
#TWITTER_URL = 'https://twitter.com/cryptomoumou'
PIWIK_URL = 'epheme.re/stats/piwik'
PIWIK_ID = '1'
#INDEX_SAVE_AS= 'blog_index.html'
DISPLAY_CATEGORIES_ON_MENU = True
MENUITEMS = (('Resume', '/documents/cv_english.pdf'), ('Teaching', '/category/teaching.html'),)
# Disable tags
TAGS_SAVE_AS = ''
TAG_SAVE_AS = ''
# Blogroll
#LINKS = (('Pelican', 'http://getpelican.com/'),
# ('Python.org', 'http://python.org/'),
# ('Jinja2', 'http://jinja.pocoo.org/'),
# ('You can modify those links in your config file', '#'),)
# Social widget
#SOCIAL = (('You can add links in your config file', '#'),
# ('Another social link', '#'),)
SOCIAL = (
('Simon Castellan', 'http://iso.mor.phis.me/'),
('Damien Desfontaines', 'https://desfontain.es/'),
('Tanguy Fardet', 'http://perso.ens-lyon.fr/tanguy.fardet/'),
('Armaël Guéneau', 'https://perso.ens-lyon.fr/armael.gueneau/'),
('Jérémy Ledent', 'https://perso.ens-lyon.fr/jeremy.ledent/'),
('Tito Lê Thành Dũng Nguyễn', 'http://nguyentito.eu/'),
('Alice Pellet--Mary', 'https://perso.ens-lyon.fr/alice.pellet___mary/'),
('Baptiste Rozière', 'https://perso.ens-lyon.fr/baptiste.roziere/'),
)
DEFAULT_PAGINATION = False
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True

@ -0,0 +1 @@
Subproject commit 9ef0197eed5d141bf0f3b9a8468cd37ad3e5fbd7

@ -0,0 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
SITEURL = 'https://perso.ens-lyon.fr/fabrice.mouhartem'
#SITEURL = 'http://blog.epheme.re'
RELATIVE_URLS = True
MENUITEMS = tuple((e[0], SITEURL + e[1]) for e in MENUITEMS)
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

@ -0,0 +1,7 @@
MIT Open Source License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

@ -0,0 +1,58 @@
### What is Gum?
Gum is a clean and responsive theme for [Pelican](https://github.com/getpelican/pelican), based on the [Gumby Framework](http://gumbyframework.com/docs).
### Requirements
* [Pelican](https://github.com/getpelican/pelican)
### Configuration
* Edit your settings file to include the following if desired (any values left blank won't show up in the theme):
```
GITHUB_URL = ''
TWITTER_URL = ''
FACEBOOK_URL = ''
GOOGLEPLUS_URL = ''
```
This theme uses the latest Google Analytics code, which will be included when the following values are filled out appropriately.
```
GOOGLE_ANALYTICS_ID = ''
GOOGLE_ANALYTICS_SITENAME = ''
```
Alternatively you can use [Piwik](http://piwik.org/) for analytics if you set the following settings, where the url has to be given without leading `http://` and trailing `/`.
```
PIWIK_ID = ''
PIWIK_URL = ''
```
To use Juvia for comments, fill out the following values, again the url without leading `http://` and trailing `/`.
```
JUVIA_URL = ''
JUVIA_ID = ''
```
### Screenshot ###
![screenshot](screenshot.png)
### Credits / Thanks
* Alexis Metaireau / Pelican
* Digital Surgeons / Gumby Framework
* Twitter Bootstrap
* traeblain for his [makefile](https://gist.github.com/traeblain/4252511) gist for building Pelican on Windows
**MIT Open Source License**
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@ -0,0 +1,27 @@
/**
* Gumby Init
*/
// test for touch event support
Modernizr.load({
test: Modernizr.touch,
// if present load custom jQuery mobile build and update Gumby.click
yep: 'js/libs/jquery.mobile.custom.min.js',
callback: function(url, result, key) {
// check jQuery mobile has successfully loaded before using tap events
if($.mobile) {
window.Gumby.click = 'tap';
}
},
// either way initialize Gumby
complete: function() {
window.Gumby.init();
// if AMD return Gumby object to define
if(typeof define == "function" && define.amd) {
define(window.Gumby);
}
}
});

@ -0,0 +1,145 @@
/**
* Gumby Framework
* ---------------
*
* Follow @gumbycss on twitter and spread the love.
* We worked super hard on making this awesome and released it to the web.
* All we ask is you leave this intact. #gumbyisawesome
*
* Gumby Framework
* http://gumbyframework.com
*
* Built with love by your friends @digitalsurgeons
* http://www.digitalsurgeons.com
*
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
!function() {
'use strict';
function Gumby() {
this.$dom = $(document);
this.isOldie = !!this.$dom.find('html').hasClass('oldie');
this.click = 'click';
this.onReady = this.onOldie = this.onTouch = false;
this.uiModules = {};
this.inits = {};
}
// initialize Gumby
Gumby.prototype.init = function() {
// init UI modules
this.initUIModules();
var scope = this;
// call ready() code when dom is ready
this.$dom.ready(function() {
if(scope.onReady) {
scope.onReady();
}
// call oldie() callback if applicable
if(scope.isOldie && scope.onOldie) {
scope.onOldie();
}
// call touch() callback if applicable
if(Modernizr.touch && scope.onTouch) {
scope.onTouch();
}
});
};
// public helper - set Gumby ready callback
Gumby.prototype.ready = function(code) {
if(code && typeof code === 'function') {
this.onReady = code;
}
};
// public helper - set oldie callback
Gumby.prototype.oldie = function(code) {
if(code && typeof code === 'function') {
this.onOldie = code;
}
};
// public helper - set touch callback
Gumby.prototype.touch = function(code) {
if(code && typeof code === 'function') {
this.onTouch = code;
}
};
// public helper - return debuggin object including uiModules object
Gumby.prototype.debug = function() {
return {
$dom: this.$dom,
isOldie: this.isOldie,
uiModules: this.uiModules,
click: this.click
};
};
// grab attribute value, testing data- gumby- and no prefix
Gumby.prototype.selectAttr = function() {
var i = 0;
// any number of attributes can be passed
for(; i < arguments.length; i++) {
// various formats
var attr = arguments[i],
dataAttr = 'data-'+arguments[i],
gumbyAttr = 'gumby-'+arguments[i];
// first test for data-attr
if(this.attr(dataAttr)) {
return this.attr(dataAttr);
// next test for gumby-attr
} else if(this.attr(gumbyAttr)) {
return this.attr(gumbyAttr);
// finally no prefix
} else if(this.attr(attr)) {
return this.attr(attr);
}
}
// none found
return false;
};
// add an initialisation method
Gumby.prototype.addInitalisation = function(ref, code) {
this.inits[ref] = code;
};
// initialize a uiModule
Gumby.prototype.initialize = function(ref) {
if(this.inits[ref] && typeof this.inits[ref] === 'function') {
this.inits[ref]();
}
};
// store a UI module
Gumby.prototype.UIModule = function(data) {
var module = data.module;
this.uiModules[module] = data;
};
// loop round and init all UI modules
Gumby.prototype.initUIModules = function() {
var x;
for(x in this.uiModules) {
this.uiModules[x].init();
}
};
window.Gumby = new Gumby();
}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,69 @@
/**
* Gumby Navbar
*/
!function() {
'use strict';
// define module class and init only if we're on touch devices
if(!Modernizr.touch) {
return;
}
function Navbar($el) {
this.$el = $el;
var scope = this;
// when navbar items are tapped hide/show dropdowns
this.$el.find('li').on(Gumby.click, function(e) {
var $this = $(this);
e.stopPropagation();
// prevent jump to top of page
if(this.href === '#') {
e.preventDefault();
}
scope.dropdown($this);
});
}
// hide/show dropdowns
Navbar.prototype.dropdown = function($this) {
// we have dropdowns so open/cose
if($this.children('.dropdown').length) {
if($this.hasClass('active')) {
$this.removeClass('active');
} else {
$this.addClass('active');
}
// no dropdown so close others
} else {
this.$items.removeClass('active');
}
};
// add initialisation
Gumby.addInitalisation('navbars', function() {
$('.navbar').each(function() {
var $this = $(this);
// this element has already been initialized
if($this.data('isNavbar')) {
return true;
}
// mark element as initialized
$this.data('isNavbar', true);
new Navbar($this);
});
});
// register UI module
Gumby.UIModule({
module: 'navbar',
events: [],
init: function() {
Gumby.initialize('navbars');
}
});
}();

@ -0,0 +1,8 @@
window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){arguments.callee=arguments.callee.caller;var a=[].slice.call(arguments);(typeof console.log==="object"?log.apply.call(console.log,console,a):console.log.apply(console,a))}};
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try
{console.log();return window.console;}catch(err){return window.console={};}})());
/*! http://mths.be/placeholder v2.0.7 by @mathias */
;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder');l==h.activeElement&&l.select()}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
// place any jQuery/helper plugins in here, instead of separate, slower script files.

@ -0,0 +1,205 @@
.hll {
background-color:#eee;
}
.c {
color:#408090;
font-style:italic;
}
.err {
border:1px solid #FF0000;
}
.k {
color:#007020;
font-weight:bold;
}
.o {
color:#666666;
}
.cm {
color:#408090;
font-style:italic;
}
.cp {
color:#007020;
}
.c1 {
color:#408090;
font-style:italic;
}
.cs {
background-color:#FFF0F0;
color:#408090;
}
.gd {
color:#A00000;
}
.ge {
font-style:italic;
}
.gr {
color:#FF0000;
}
.gh {
color:#000080;
font-weight:bold;
}
.gi {
color:#00A000;
}
.go {
color:#303030;
}
.gp {
color:#C65D09;
font-weight:bold;
}
.gs {
font-weight:bold;
}
.gu {
color:#800080;
font-weight:bold;
}
.gt {
color:#0040D0;
}
.kc {
color:#007020;
font-weight:bold;
}
.kd {
color:#007020;
font-weight:bold;
}
.kn {
color:#007020;
font-weight:bold;
}
.kp {
color:#007020;
}
.kr {
color:#007020;
font-weight:bold;
}
.kt {
color:#902000;
}
.m {
color:#208050;
}
.s {
color:#4070A0;
}
.na {
color:#4070A0;
}
.nb {
color:#007020;
}
.nc {
color:#0E84B5;
font-weight:bold;
}
.no {
color:#60ADD5;
}
.nd {
color:#555555;
font-weight:bold;
}
.ni {
color:#D55537;
font-weight:bold;
}
.ne {
color:#007020;
}
.nf {
color:#06287E;
}
.nl {
color:#002070;
font-weight:bold;
}
.nn {