mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
update with the latest changes
This commit is contained in:
parent
deec5ed902
commit
6a1d1db12f
40 changed files with 1356 additions and 138 deletions
55
content/thoughts/bidouille.rst
Normal file
55
content/thoughts/bidouille.rst
Normal file
|
@ -0,0 +1,55 @@
|
|||
Bidouille
|
||||
#########
|
||||
|
||||
:date: 30-04-2012
|
||||
:tags: diy, électronique, hack, bidouille
|
||||
:lang: fr
|
||||
|
||||
Bidouille bidouille bidouille.
|
||||
|
||||
Je pense que je suis un bidouilleur logiciel: j'aime bien aller farfouiller
|
||||
dans le code pour comprendre comment tel ou tel programme fonctionne (ou
|
||||
trop souvent comment il ne fonctionne pas !), faire des petites modifications,
|
||||
tester, modifier, re-tester, tout casser, réparer …
|
||||
|
||||
Et cette bidouille, cette envie de comprendre comment les choses fonctionnent,
|
||||
et depuis peu cette envie de mettre en pratique ces connaissances dépasse la
|
||||
bidouille logicielle. J'ai passé une grosse partie de mon week-end à Main
|
||||
d'Œuvre, où l'association `Under Construction
|
||||
<http://www.underconstruction.fr>`_ faisait se rencontrer le milieu de
|
||||
l'éducation populaire et le milieu de la bidouille.
|
||||
|
||||
Forcement, ni une ni deux, je saute dans le bateau en marche et, n'étant ni un
|
||||
très grand bidouilleur ni un très grand animateur, j'en ressort enrichi de
|
||||
toutes ces rencontres, de tous ces préjugés qui tombent, et de quelques
|
||||
découvertes bluffantes, des idées plein la tête.
|
||||
|
||||
J'avais entendu parler des "`rep-raps <http://www.reprap.org>`_", des
|
||||
imprimantes en 3 dimensions capables de produire des pièces en plastique
|
||||
mais je n'avais jamais eu l'occasion de voir le bousin en vrai. Et
|
||||
c'est impressionnant. Vraiment. ("Bienvenue dans le 21ème siècle !")
|
||||
|
||||
Ça laisse énormément à penser autour des questions d'émancipation
|
||||
technologique, et de non dépendance envers les constructeurs, dans le milieu de
|
||||
l'électro-ménager, par exemple. "Ah tiens, cette pièce est cassée, je vais
|
||||
aller utiliser la rep-rap du coin pour me la fabriquer". Et hop, on mets fin à
|
||||
tout un cycle d'obsolescence programmée…
|
||||
|
||||
Mais au delà du défi technique et technologique, j'ai pu refaire un petit peu
|
||||
d'électronique, et découvrir que j'y prends vraiment gout rapidement. Il y a
|
||||
bien évidemment un coté très ludique (la led s'allume quand on la branche),
|
||||
mais il y a surtout cette notion de DIY (Do It Yourself) sous jacente: une fois
|
||||
que je sais comment ça fonctionne, je peux vraiment faire des choses utiles de
|
||||
mes 10 doigts, réparer des petits objets, bidouiller ceux existants etc.
|
||||
|
||||
De la récupération de composants on essaye de voir ce qu'on peut faire, on a
|
||||
terminé par faire un "vibro-bot", un vibreur de téléphone portable monté sur
|
||||
une tête de brosse à dents, faisant donc avancer cette dernière.
|
||||
|
||||
C'est pour s'amuser, c'est pas sérieux ! Pour autant, les concepts de
|
||||
l'électricité sont appris et je me retrouve avec cette envie de comprendre un
|
||||
peu plus ce monde de l'électronique qui, je m'en rends compte, m'échappe encore
|
||||
complètement. De l'éducation à la bidouille !
|
||||
|
||||
Allez, demain c'est fer à souder, piles, leds, interrupteurs, potars et c'est
|
||||
parti !
|
79
content/thoughts/djangocong-2012.rst
Normal file
79
content/thoughts/djangocong-2012.rst
Normal file
|
@ -0,0 +1,79 @@
|
|||
Djangocong 2012
|
||||
###############
|
||||
|
||||
:date: 16-04-2012
|
||||
:lang: fr
|
||||
|
||||
Ce week-end, c'était `djangocong`_, une conférence autour de `django`_,
|
||||
de `python`_ et du web, qui avait lieu dans le sud, à Carnon-plage, à quelques
|
||||
kilomètres de Montpellier la belle.
|
||||
|
||||
J'ai vraiment apprécié les trois jours passés avec cette bande de geeks. Je
|
||||
m'attendais à des *nerds*, j'y ai trouvé une qualité d'écoute, des personnes qui
|
||||
partagent des valeurs qui leur sont chères, mais qui ne limitent pas
|
||||
leurs discussions à du technique. Eeeh ouais, encore un préjugé qui tombe,
|
||||
tiens :)
|
||||
|
||||
En tant que *hackers*, on a le moyen de créer des outils qui sont utiles à tous,
|
||||
et qui peuvent être utiles pour favoriser la collaboration et la mise en commun
|
||||
des données. J'ai eu l'occasion de discuter de projets tournant autour de
|
||||
l'entraide, que ça soit pour mettre en lien des associations d'économie sociale
|
||||
et solidaire (ESS) ou simplement pour que les populations *non tech* `puissent
|
||||
utiliser toute la puissance de l'outil qu'est le web
|
||||
<http://blog.notmyidea.org/quels-usages-pour-linformatique-fr.html>`_.
|
||||
|
||||
Au niveau du format des conférences, je ne savais pas trop à quoi m'attendre,
|
||||
au vu des échos de l'an dernier, mais c'était adapté: des mini-confs de 12mn le
|
||||
samedi matin + début d'aprem, en mode no-wifi pour récupérer une qualité
|
||||
d'écoute. Et contrairement à mes attentes, ce n'est pas trop court. Pas mal de
|
||||
retours d'expérience pour le coup, et une matinée pas vraiment techniques, mais
|
||||
ça pose le décor et permet de savoir qui fait quoi.
|
||||
|
||||
Parmi l'ensemble des conférences du matin, je retiens principalement
|
||||
celle de Mathieu Leplatre, "des cartes d'un autre monde", qui m'a réellement
|
||||
bluffée quand à la facilité de créer des cartes avec `TileMill
|
||||
<http://mapbox.com/tilemill/>`_, et qui me pousse à reconsidérer le fait que "la
|
||||
carto, c'est compliqué". `La vidéo est (déja !) disponible en ligne
|
||||
<https://www.youtube.com/watch?v=7NPQo54NbJ8>`_, je vous invite à la regarder
|
||||
(c'est une 15aine de minutes) pour vous faire un avis ;)
|
||||
|
||||
Une fois les conf passées, ça reste très intéressant, voire plus: il reste un
|
||||
jour et demi pour discuter avec les autres présents. On a pu se retrouver avec
|
||||
Mathieu pour discuter de "notre" projet `"carto
|
||||
forms" <http://blog.notmyidea.org/carto-forms-fr.html>`_, qui à finalement pu se
|
||||
redéfinir un peu plus et donner naissance à un `README
|
||||
<https://github.com/spiral-project/daybed/blob/master/README.rst>`_. On en
|
||||
à profité pour lui choisir un nouveau nom: "daybed", en référence à couchdb.
|
||||
|
||||
Ça devrait se transformer en code d'ici peu. La curiosité aidant, on a pu
|
||||
discuter du projet avec d'autres personnes et affiner les attentes de chacun
|
||||
pour finalement arriver à quelque chose d'assez sympathique.
|
||||
|
||||
J'ai aussi pu me rendre compte que pas mal de monde utilise `pelican
|
||||
<http://pelican.notmyidea.org>`_, le bout de code que j'ai codé pour générer ce
|
||||
blog, et avoir des retours utiles ! Probablement des réflexions à venir
|
||||
sur comment éviter qu'un projet open-source ne devienne chronophage, et sur
|
||||
comment réussir à garder une qualité dans le code source tout en ne froissant
|
||||
pas les contributeurs.
|
||||
|
||||
Bien évidemment, c'était aussi l'occaz de rencontrer des gens qu'on ne voir que
|
||||
sur les inter-nets, et de discuter un brin de tout ce qui fait que notre monde
|
||||
est chouette et moins chouette.
|
||||
|
||||
Entres autres faits notoires, JMad a perdu au baby-foot face à Exirel, même
|
||||
en m'ayant à ses cotés pour le déconcentrer (et je suis un joueur d'un autre
|
||||
monde - en d'autres termes, je suis nul), David`bgk ne s'est pas levé pour
|
||||
aller courir le dimanche matin (il avait dit 5 heures!), Les suisses ont essayé
|
||||
de me convertir à coup d'abricotine, j'ai perdu au skulls-n-roses en quelques
|
||||
tours et on a allumé un feu chez Stéphane le dimanche soir (oui oui, à
|
||||
montpellier, mi avril, je vous le dis qu'ils mentent avec leur soit disant
|
||||
soleil).
|
||||
|
||||
Et c'est sans parler de `la brasucade <http://jehaisleprintemps.net/blog/fr/2012/04/15/j-ecris-ton-nom/>`_ …
|
||||
|
||||
Bref, vivement la prochaine (et allez, cette fois ci je ferais une présentation
|
||||
!)
|
||||
|
||||
.. _djangocong: http://rencontres.django-fr.org
|
||||
.. _python: http://python.org
|
||||
.. _django: http://djangoproject.org
|
115
content/thoughts/lifestyle.rst
Normal file
115
content/thoughts/lifestyle.rst
Normal file
|
@ -0,0 +1,115 @@
|
|||
Lifestyle
|
||||
#########
|
||||
|
||||
:lang: fr
|
||||
:date: 11-05-2012
|
||||
|
||||
Eh beh, c'est pas aussi simple qu'il y parait de trouver un environnement qui
|
||||
permette autant de travailler correctement et de ne pas s'enfermer dans le
|
||||
boulot.
|
||||
|
||||
Surtout si comme moi vous cherchez à limiter vos déplacement, que vous aimez
|
||||
vivre avec peu et cherchez à trouver un équilibre entre une vie connectée et
|
||||
une vie *réelle* (oui, celle avec des vrais gens qui ont d'autres
|
||||
préoccupations que l'informatique !). Comment réussir à trouver un juste
|
||||
milieu entre le geek inconditionnel et le bon vivant, qui à du temps à
|
||||
consacrer à autre chose qu'à son travail ?
|
||||
|
||||
Voyages
|
||||
=======
|
||||
|
||||
Un des premiers trucs que j'ai trouvé surprennant en arrivant à Mozilla, c'est
|
||||
la fréquence des voyages que l'on peut être amené à avoir. Ah, c'est pour la
|
||||
bonne cause, c'est tellement plus sympa d'avoir les collègues à coté pour
|
||||
bosser, plutôt qu'à l'autre bout du monde. Mais quand même, si je le voulais,
|
||||
entre les semaines de travail et les conférences, je pourrais être tous les
|
||||
deux mois aux États-Unis !
|
||||
|
||||
Une aubaine, penserons certains. Voyager, c'est *cool* ! Bon, si on mets de
|
||||
coté le cout écologique d'un voyage (nécessairement en avion), la chose qui me
|
||||
dérange le plus c'est cette impression de venir pour repartir. Voyager, c'est
|
||||
sympa, mais avoir le temps de prendre un rythme de vie différent, de rencontrer
|
||||
des gens, de construire quelque chose, ça me manque.
|
||||
|
||||
Donc je décline quand je n'en ai pas l'envie, tout simplement. Je loupe des
|
||||
choses intéressantes (`PyCon`_ à Santa Clara avait vraiment l'air
|
||||
chouette !), mais ça me permet également d'avoir plus de temps pour vivre là ou
|
||||
j'habite, pour construire quelque chose localement. Et puis des évènements, il
|
||||
y en à tellement en France et en Europe auquel je n'assiste pas que ça me fait
|
||||
mal au cœur d'aller à l'autre bout du monde pour faire la même chose !
|
||||
|
||||
Bien sur, je serais amené à voyager. Et autant que faire se peut je le
|
||||
ferais avec plaisir et je tenterais de rester un peu plus avant et après sur
|
||||
place (plus question de faire un aller/retour en une semaine !), question de me
|
||||
faire à l'atmosphère ! `Tarek`_ est par exemple resté un mois à San Francisco
|
||||
en janvier pour son dernier séjour, alors pourquoi ne pas prendre exemple ?
|
||||
Tout de suite ça me parles plus.
|
||||
|
||||
.. _Pycon: http://pycon.us
|
||||
.. _Tarek: http://ziade.org
|
||||
|
||||
Et quand-est-ce qu'on arrête ?
|
||||
==============================
|
||||
|
||||
Une autre chose assez difficile à gérer, c'est le temps.
|
||||
|
||||
J'ai vraiment une chance monstrueuse, celle de faire un travail qui me plait,
|
||||
éthiquement et techniquement. Je pourrais y passer mes journées et mes nuits
|
||||
que je n'aimerais pas moins ça (même si il m'arrive bien sur de saturer !).
|
||||
|
||||
Mais j'ai aussi d'autres envies, qui signifient aussi passer du temps
|
||||
hors-ligne, parce que bizarrement, c'est là que j'ai l'impression de réfléchir
|
||||
le plus. Loin de ce surplus d'informations…
|
||||
|
||||
Facile à dire.
|
||||
|
||||
D'autant que quand il est possible de travailler depuis n'importe où,
|
||||
la séparation physique entre le lieu de travail et le lieu de vie tends à
|
||||
disparaitre assez facilement. Et sans séparation physique, il faut une sacré
|
||||
motivation pour savoir quand commencer et quand s'arrêter.
|
||||
|
||||
J'essaye de me donner une règle simple: point trop n'en faut. Aucun intérêt à
|
||||
rester travailler des heures durant sans s'arrêter, ou en tout cas pas
|
||||
d'intérêt à le faire de manière trop régulière. Une journée qui commence tôt
|
||||
(~9h) me permet de me concentrer le matin (les collègues californiens dorment)
|
||||
et d'avoir un rythme assez "normal". Et puis, avec ce soleil qui commence à
|
||||
inonder les terrasses, autant faire autre chose que de rester enfermé à coder
|
||||
en fin d'après midi !
|
||||
|
||||
Surplus
|
||||
=======
|
||||
|
||||
Tiens, je parlais de surplus, nous y sommes. Que ça soit le surplus
|
||||
d'informations ou le surplus d'objets, ça m'encombre ! Une journée, pour ma
|
||||
part est faite de communications diverses, de code et de lectures (se tenir au
|
||||
courant de ce qui se passe dans le monde du logiciel n'est pas une tâche des
|
||||
plus facile, et qui peut facilement prendre énormément de temps).
|
||||
|
||||
Je me demande si je ne devrais pas aspirer à la frugalité de ce coté là
|
||||
également. Je reçois des mails toute la journée, et mon aggrégateur rss/atom se
|
||||
remplit également très vite. Mais je n'ai aucunement besoin d'avoir toutes ces
|
||||
informations dans l'heure, et de les vérifier de manière fréquente. De la même
|
||||
manière, j'ai simplement arrêté de lire mes flux rss.
|
||||
|
||||
Quelques (longues) fois dans la semaine semblent suffire et me permettent de
|
||||
réussir à rester concentrer.
|
||||
|
||||
Résolutions
|
||||
===========
|
||||
|
||||
Soyons fous, tentons quelque chose de nouveau, c'est le printemps ! Pas de
|
||||
communication dans la matinée, je n'en ai probablement pas besoin, sauf cas
|
||||
extrêmes. Le matin, c'est pour se concentrer sur le travail à faire.
|
||||
|
||||
Une fois les mails du matin dépilés (à 9h30), pas la peine de garder un œil
|
||||
sur ma boite mail, j'irais y faire un tour en début et en fin d'après midi.
|
||||
|
||||
Je pense même à débrancher internet, pour éviter les interactions et pour me
|
||||
concentrer, mais j'ai comme l'impression que c'est un peu trop abrupt comme
|
||||
approche.
|
||||
|
||||
Aussi, définir en début de journée la liste des choses prévues, et revenir
|
||||
dessus jour après jour me permettra surement d'avoir un aperçu un peu plus
|
||||
global du travail accompli.
|
||||
|
||||
L'avenir dira si tout ça fonctionne :-)
|
87
light/static/css/main.css
Normal file
87
light/static/css/main.css
Normal file
|
@ -0,0 +1,87 @@
|
|||
@import url(http://fonts.googleapis.com/css?family=Rosario);
|
||||
@import url("pygment.css");
|
||||
@import url("typogrify.css");
|
||||
|
||||
body {
|
||||
width: 800px;
|
||||
margin: auto;
|
||||
font-size: 1.3em;
|
||||
background-color: #fffff0;
|
||||
font-family: "Georgia", serif;
|
||||
}
|
||||
|
||||
a{
|
||||
color: #000;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
nav ul li {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.content {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.content h1, h2, h3, h4, h5, h6{
|
||||
font-family: 'Rosario', arial, serif;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
.content h1{
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
.content p{
|
||||
font-size: 1.1em;
|
||||
text-align: justify;
|
||||
text-justify: newspaper;
|
||||
}
|
||||
|
||||
.content .date{
|
||||
font-style: italic;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
.content h2{
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.content a{
|
||||
padding: 2px;
|
||||
color: #0F0F0F;
|
||||
}
|
||||
|
||||
.content a:hover{
|
||||
background-color: #0F0F0F;
|
||||
color: #eaeaea;
|
||||
}
|
||||
|
||||
.content .highlight pre{
|
||||
padding: 15px;
|
||||
background-color: black;
|
||||
color: white;
|
||||
overflow: scroll;
|
||||
|
||||
}
|
||||
|
||||
.content blockquote {
|
||||
margin: 0px;
|
||||
margin-right: 40px;
|
||||
margin-left: 20px;
|
||||
padding-left: 20px;
|
||||
text-align: left;
|
||||
border-left: 3px black solid;
|
||||
letter-spacing: 2px;
|
||||
font-style: italic;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-top: -15px;
|
||||
font-style: italic;
|
||||
}
|
205
light/static/css/pygment.css
Normal file
205
light/static/css/pygment.css
Normal file
|
@ -0,0 +1,205 @@
|
|||
.hll {
|
||||
background-color:#FFFFCC;
|
||||
}
|
||||
.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 {
|
||||
color:#0E84B5;
|
||||
font-weight:bold;
|
||||
}
|
||||
.nt {
|
||||
color:#062873;
|
||||
font-weight:bold;
|
||||
}
|
||||
.nv {
|
||||
color:#BB60D5;
|
||||
}
|
||||
.ow {
|
||||
color:#007020;
|
||||
font-weight:bold;
|
||||
}
|
||||
.w {
|
||||
color:#BBBBBB;
|
||||
}
|
||||
.mf {
|
||||
color:#208050;
|
||||
}
|
||||
.mh {
|
||||
color:#208050;
|
||||
}
|
||||
.mi {
|
||||
color:#208050;
|
||||
}
|
||||
.mo {
|
||||
color:#208050;
|
||||
}
|
||||
.sb {
|
||||
color:#4070A0;
|
||||
}
|
||||
.sc {
|
||||
color:#4070A0;
|
||||
}
|
||||
.sd {
|
||||
color:#4070A0;
|
||||
font-style:italic;
|
||||
}
|
||||
.s2 {
|
||||
color:#4070A0;
|
||||
}
|
||||
.se {
|
||||
color:#4070A0;
|
||||
font-weight:bold;
|
||||
}
|
||||
.sh {
|
||||
color:#4070A0;
|
||||
}
|
||||
.si {
|
||||
color:#70A0D0;
|
||||
font-style:italic;
|
||||
}
|
||||
.sx {
|
||||
color:#C65D09;
|
||||
}
|
||||
.sr {
|
||||
color:#235388;
|
||||
}
|
||||
.s1 {
|
||||
color:#4070A0;
|
||||
}
|
||||
.ss {
|
||||
color:#517918;
|
||||
}
|
||||
.bp {
|
||||
color:#007020;
|
||||
}
|
||||
.vc {
|
||||
color:#BB60D5;
|
||||
}
|
||||
.vg {
|
||||
color:#BB60D5;
|
||||
}
|
||||
.vi {
|
||||
color:#BB60D5;
|
||||
}
|
||||
.il {
|
||||
color:#208050;
|
||||
}
|
3
light/static/css/typogrify.css
Normal file
3
light/static/css/typogrify.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
.caps {font-size:.92em;}
|
||||
.amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;}
|
||||
.dquo {margin-left:-.38em;}
|
30
light/templates/article.html
Normal file
30
light/templates/article.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ article.title }}{% endblock title %}
|
||||
{% block content %}
|
||||
<h1>{{ article.title }}</h1>
|
||||
<p class="date">{% if article.lang == "fr" %}Publié le{% else %}Published
|
||||
on{% endif%} {{ article.locale_date }}.
|
||||
{% if article.translations %}
|
||||
{% if article.lang == "fr" %}Vous pouvez aussi lire cet article en {% else %}You can also read this article in {% endif %}
|
||||
{% for tr in article.translations %}
|
||||
<a href="{{ SITEURL }}/{{ tr.url}}">{{ tr.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{{ article.content }}
|
||||
|
||||
{% if DISQUS_SITENAME %}
|
||||
<div class="comments">
|
||||
<h2>Comments</h2>
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_identifier = "{{ article.url }}";
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
12
light/templates/base.html
Normal file
12
light/templates/base.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" media="screen" charset="utf-8">
|
||||
<link href="{{ SITEURL }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />
|
||||
<title>Alexis Métaireau</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content clear">{% block content %}{% endblock %}</div>
|
||||
</body>
|
||||
</html>
|
23
light/templates/index.html
Normal file
23
light/templates/index.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
|
||||
<p>Hi and welcome in this web logs. I try here to talk about freedom, free
|
||||
software, activism and education. And about anything I think would be
|
||||
valuable to share.</p>
|
||||
|
||||
<p>Bienvenue sur ces carnets. J'essaye de parler ici de liberté,
|
||||
de logiciel libre d'activisme et d'éducation. Et finalement d'un peu tout
|
||||
ce qui me passe par la tête et que j'ai envie de partager.</p>
|
||||
|
||||
{% for article in articles %}
|
||||
<h2><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }} ({{article.lang}})</a>
|
||||
{% if article.translations %}
|
||||
<small>(also in {% for article in article.translations %}<a href="{{ SITEURL }}/{{ article.url }}">{{ article.lang }}</a>{% endfor %})</small>
|
||||
{% endif %}
|
||||
<span class="date">{{ article.date.strftime('%B %Y')}}</span>
|
||||
</h2>
|
||||
{% if article.description %}
|
||||
<p class="description">{{ article.description }}</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -3,8 +3,8 @@ PATH = "content"
|
|||
AUTHOR = u'Alexis Métaireau'
|
||||
SITENAME = u"Alexis' log"
|
||||
THEME = "theme"
|
||||
CSS_FILE = "wide.css"
|
||||
|
||||
DISQUS_SITENAME = "blog-notmyidea"
|
||||
SITEURL = 'http://blog.notmyidea.org'
|
||||
GITHUB_URL = "http://github.com/ametaireau/"
|
||||
|
||||
|
|
|
@ -1,105 +1,430 @@
|
|||
@import url(http://fonts.googleapis.com/css?family=Rosario);
|
||||
/*
|
||||
Name: Smashing HTML5
|
||||
Date: July 2009
|
||||
Description: Sample layout for HTML5 and CSS3 goodness.
|
||||
Version: 1.0
|
||||
Author: Enrique Ramírez
|
||||
Autor URI: http://enrique-ramirez.com
|
||||
*/
|
||||
|
||||
/* Imports */
|
||||
@import url("reset.css");
|
||||
@import url("pygment.css");
|
||||
@import url("typogrify.css");
|
||||
@import url(http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz&subset=latin);
|
||||
|
||||
/***** Global *****/
|
||||
/* Body */
|
||||
body {
|
||||
width: 800px;
|
||||
margin: auto;
|
||||
font-size: 1.3em;
|
||||
background-color: #fffff0;
|
||||
font-family: "Georgia", serif;
|
||||
background: #F5F4EF;
|
||||
color: #000305;
|
||||
font-size: 87.5%; /* Base font size: 14px */
|
||||
font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
|
||||
line-height: 1.429;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
a{
|
||||
color: #000;
|
||||
/* Headings */
|
||||
h1 {font-size: 2em }
|
||||
h2 {font-size: 1.571em} /* 22px */
|
||||
h3 {font-size: 1.429em} /* 20px */
|
||||
h4 {font-size: 1.286em} /* 18px */
|
||||
h5 {font-size: 1.143em} /* 16px */
|
||||
h6 {font-size: 1em} /* 14px */
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: 400;
|
||||
line-height: 1.1;
|
||||
margin-bottom: .8em;
|
||||
font-family: 'Yanone Kaffeesatz', arial, serif;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style-type: none;
|
||||
h3, h4, h5, h6 { margin-top: .8em; }
|
||||
|
||||
hr { border: 2px solid #EEEEEE; }
|
||||
|
||||
/* Anchors */
|
||||
a {outline: 0;}
|
||||
a img {border: 0px; text-decoration: none;}
|
||||
a:link, a:visited {
|
||||
color: #C74350;
|
||||
padding: 0 1px;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover, a:active {
|
||||
background-color: #C74350;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
text-shadow: 1px 1px 1px #333;
|
||||
}
|
||||
|
||||
nav ul li {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
h1 a:hover {
|
||||
background-color: inherit
|
||||
}
|
||||
|
||||
#top {}
|
||||
#top .author {
|
||||
float: left;
|
||||
}
|
||||
/* Paragraphs */
|
||||
p {margin-bottom: 1.143em;}
|
||||
|
||||
#top .links {
|
||||
float: right;
|
||||
list-style-type: none;
|
||||
}
|
||||
strong, b {font-weight: bold;}
|
||||
em, i {font-style: italic;}
|
||||
|
||||
#top .links, #top .links li{
|
||||
display: inline;
|
||||
}
|
||||
::-moz-selection {background: #F6CF74; color: #fff;}
|
||||
::selection {background: #F6CF74; color: #fff;}
|
||||
|
||||
#top .links li{
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.content {
|
||||
clear: both;
|
||||
/* Lists */
|
||||
ul {
|
||||
list-style: outside disc;
|
||||
margin: 1em 0 1.5em 1.5em;
|
||||
}
|
||||
|
||||
.content h1, h2, h3, h4, h5, h6{
|
||||
font-family: 'Rosario', arial, serif;
|
||||
margin-left: -20px;
|
||||
}
|
||||
ol {
|
||||
list-style: outside decimal;
|
||||
margin: 1em 0 1.5em 1.5em;
|
||||
}
|
||||
|
||||
.content h1{
|
||||
font-size: 2.5em;
|
||||
}
|
||||
.post-info {
|
||||
float:right;
|
||||
margin:10px;
|
||||
padding:5px;
|
||||
}
|
||||
|
||||
.content p{
|
||||
font-size: 1.1em;
|
||||
text-align: justify;
|
||||
text-justify: newspaper;
|
||||
}
|
||||
.post-info p{
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.content .date{
|
||||
margin-top: -20px;
|
||||
font-style: italic;
|
||||
}
|
||||
.readmore { float: right }
|
||||
|
||||
.content h2{
|
||||
font-size: 1.5em;
|
||||
}
|
||||
dl {margin: 0 0 1.5em 0;}
|
||||
dt {font-weight: bold;}
|
||||
dd {margin-left: 1.5em;}
|
||||
|
||||
.content a{
|
||||
padding: 2px;
|
||||
color: #0F0F0F;
|
||||
}
|
||||
pre{background-color: #000; padding: 10px; color: #fff; margin: 10px; overflow: auto;}
|
||||
|
||||
.content a:hover{
|
||||
background-color: #0F0F0F;
|
||||
color: #eaeaea;
|
||||
}
|
||||
|
||||
.content .highlight pre{
|
||||
padding: 15px;
|
||||
background-color: black;
|
||||
color: white;
|
||||
overflow: scroll;
|
||||
|
||||
}
|
||||
|
||||
.content blockquote {
|
||||
margin: 0px;
|
||||
margin-right: 40px;
|
||||
margin-left: 20px;
|
||||
padding-left: 20px;
|
||||
text-align: left;
|
||||
border-left: 3px black solid;
|
||||
letter-spacing: 2px;
|
||||
font-style: italic;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-top: -15px;
|
||||
/* Quotes */
|
||||
blockquote {
|
||||
margin: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
cite {}
|
||||
|
||||
q {}
|
||||
|
||||
div.note {
|
||||
float: right;
|
||||
margin: 5px;
|
||||
font-size: 85%;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {margin: .5em auto 1.5em auto; width: 98%;}
|
||||
|
||||
/* Thead */
|
||||
thead th {padding: .5em .4em; text-align: left;}
|
||||
thead td {}
|
||||
|
||||
/* Tbody */
|
||||
tbody td {padding: .5em .4em;}
|
||||
tbody th {}
|
||||
|
||||
tbody .alt td {}
|
||||
tbody .alt th {}
|
||||
|
||||
/* Tfoot */
|
||||
tfoot th {}
|
||||
tfoot td {}
|
||||
|
||||
/* HTML5 tags */
|
||||
header, section, footer,
|
||||
aside, nav, article, figure {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/***** Layout *****/
|
||||
.body {clear: both; margin: 0 auto; width: 800px;}
|
||||
img.right figure.right {float: right; margin: 0 0 2em 2em;}
|
||||
img.left, figure.left {float: right; margin: 0 0 2em 2em;}
|
||||
|
||||
/*
|
||||
Header
|
||||
*****************/
|
||||
#banner {
|
||||
margin: 0 auto;
|
||||
padding: 2.5em 0 0 0;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
#banner h1 {font-size: 3.571em; line-height: 0;}
|
||||
#banner h1 a:link, #banner h1 a:visited {
|
||||
color: #000305;
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
margin: 0 0 .6em .2em;
|
||||
text-decoration: none;
|
||||
width: 427px;
|
||||
}
|
||||
#banner h1 a:hover, #banner h1 a:active {
|
||||
background: none;
|
||||
color: #C74350;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
#banner h1 strong {font-size: 0.36em; font-weight: normal;}
|
||||
|
||||
/* Main Nav */
|
||||
#banner nav {
|
||||
background: #000305;
|
||||
font-size: 1.143em;
|
||||
height: 40px;
|
||||
line-height: 30px;
|
||||
margin: 0 auto 2em auto;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
width: 800px;
|
||||
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
|
||||
#banner nav ul {list-style: none; margin: 0 auto; width: 800px;}
|
||||
#banner nav li {float: left; display: inline; margin: 0;}
|
||||
|
||||
#banner nav a:link, #banner nav a:visited {
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
padding: 5px 1.5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
#banner nav a:hover, #banner nav a:active,
|
||||
#banner nav .active a:link, #banner nav .active a:visited {
|
||||
background: #C74451;
|
||||
color: #fff;
|
||||
text-shadow: none !important;
|
||||
}
|
||||
|
||||
#banner nav li:first-child a {
|
||||
border-top-left-radius: 5px;
|
||||
-moz-border-radius-topleft: 5px;
|
||||
-webkit-border-top-left-radius: 5px;
|
||||
|
||||
border-bottom-left-radius: 5px;
|
||||
-moz-border-radius-bottomleft: 5px;
|
||||
-webkit-border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
/*
|
||||
Featured
|
||||
*****************/
|
||||
#featured {
|
||||
background: #fff;
|
||||
margin-bottom: 2em;
|
||||
overflow: hidden;
|
||||
padding: 20px;
|
||||
width: 760px;
|
||||
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
}
|
||||
|
||||
#featured figure {
|
||||
border: 2px solid #eee;
|
||||
float: right;
|
||||
margin: 0.786em 2em 0 5em;
|
||||
width: 248px;
|
||||
}
|
||||
#featured figure img {display: block; float: right;}
|
||||
|
||||
#featured h2 {color: #C74451; font-size: 1.714em; margin-bottom: 0.333em;}
|
||||
#featured h3 {font-size: 1.429em; margin-bottom: .5em;}
|
||||
|
||||
#featured h3 a:link, #featured h3 a:visited {color: #000305; text-decoration: none;}
|
||||
#featured h3 a:hover, #featured h3 a:active {color: #fff;}
|
||||
|
||||
/*
|
||||
Body
|
||||
*****************/
|
||||
#content {
|
||||
background: #fff;
|
||||
margin-bottom: 2em;
|
||||
overflow: hidden;
|
||||
padding: 20px 20px;
|
||||
width: 760px;
|
||||
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
Extras
|
||||
*****************/
|
||||
#extras {margin: 0 auto 3em auto; overflow: hidden;}
|
||||
|
||||
#extras ul {list-style: none; margin: 0;}
|
||||
#extras li {border-bottom: 1px solid #fff;}
|
||||
#extras h2 {
|
||||
color: #C74350;
|
||||
font-size: 1.429em;
|
||||
margin-bottom: .25em;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
#extras a:link, #extras a:visited {
|
||||
color: #444;
|
||||
display: block;
|
||||
border-bottom: 1px solid #F4E3E3;
|
||||
text-decoration: none;
|
||||
padding: .3em .25em;
|
||||
}
|
||||
|
||||
#extras a:hover, #extras a:active {color: #fff;}
|
||||
|
||||
/* Blogroll */
|
||||
#extras .blogroll {
|
||||
float: left;
|
||||
width: 615px;
|
||||
}
|
||||
|
||||
#extras .blogroll li {float: left; margin: 0 20px 0 0; width: 185px;}
|
||||
|
||||
/* Social */
|
||||
#extras .social {
|
||||
float: right;
|
||||
width: 175px;
|
||||
}
|
||||
|
||||
#extras div[class='social'] a {
|
||||
background-repeat: no-repeat;
|
||||
background-position: 3px 6px;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
/* Icons */
|
||||
.social a[href*='delicious.com'] {background-image: url('../images/icons/delicious.png');}
|
||||
.social a[href*='digg.com'] {background-image: url('../images/icons/digg.png');}
|
||||
.social a[href*='facebook.com'] {background-image: url('../images/icons/facebook.png');}
|
||||
.social a[href*='last.fm'], .social a[href*='lastfm.'] {background-image: url('../images/icons/lastfm.png');}
|
||||
.social a[type$='atom+xml'], .social a[type$='rss+xml'] {background-image: url('../images/icons/rss.png');}
|
||||
.social a[href*='twitter.com'] {background-image: url('../images/icons/twitter.png');}
|
||||
.social a[href*='linkedin.com'] {background-image: url('../images/icons/linkedin.png');}
|
||||
|
||||
/*
|
||||
About
|
||||
*****************/
|
||||
#about {
|
||||
background: #fff;
|
||||
font-style: normal;
|
||||
margin-bottom: 2em;
|
||||
overflow: hidden;
|
||||
padding: 20px;
|
||||
text-align: left;
|
||||
width: 760px;
|
||||
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
}
|
||||
|
||||
#about .primary {float: left; width: 165px;}
|
||||
#about .primary strong {color: #C64350; display: block; font-size: 1.286em;}
|
||||
#about .photo {float: left; margin: 5px 20px;}
|
||||
|
||||
#about .url:link, #about .url:visited {text-decoration: none;}
|
||||
|
||||
#about .bio {float: right; width: 500px;}
|
||||
|
||||
/*
|
||||
Footer
|
||||
*****************/
|
||||
#contentinfo {padding-bottom: 2em; text-align: right;}
|
||||
|
||||
/***** Sections *****/
|
||||
/* Blog */
|
||||
.hentry {
|
||||
display: block;
|
||||
clear: both;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding: 1.5em 0;
|
||||
}
|
||||
li:last-child .hentry, #content > .hentry {border: 0; margin: 0;}
|
||||
#content > .hentry {padding: 1em 0;}
|
||||
.hentry img{display : none ;}
|
||||
.entry-title {font-size: 3em; margin-bottom: 10px; margin-top: 0;}
|
||||
.entry-title a:link, .entry-title a:visited {text-decoration: none; color: #333;}
|
||||
.entry-title a:visited {background-color: #fff;}
|
||||
|
||||
.hentry .post-info * {font-style: normal;}
|
||||
|
||||
/* Content */
|
||||
.hentry footer {margin-bottom: 2em;}
|
||||
.hentry footer address {display: inline;}
|
||||
#posts-list footer address {display: block;}
|
||||
|
||||
/* Blog Index */
|
||||
#posts-list {list-style: none; margin: 0;}
|
||||
#posts-list .hentry {padding-left: 10px; position: relative;}
|
||||
|
||||
#posts-list footer {
|
||||
left: 10px;
|
||||
position: relative;
|
||||
float: left;
|
||||
top: 0.5em;
|
||||
width: 190px;
|
||||
}
|
||||
|
||||
/* About the Author */
|
||||
#about-author {
|
||||
background: #f9f9f9;
|
||||
clear: both;
|
||||
font-style: normal;
|
||||
margin: 2em 0;
|
||||
padding: 10px 20px 15px 20px;
|
||||
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
|
||||
#about-author strong {
|
||||
color: #C64350;
|
||||
clear: both;
|
||||
display: block;
|
||||
font-size: 1.429em;
|
||||
}
|
||||
|
||||
#about-author .photo {border: 1px solid #ddd; float: left; margin: 5px 1em 0 0;}
|
||||
|
||||
/* Comments */
|
||||
#comments-list {list-style: none; margin: 0 1em;}
|
||||
#comments-list blockquote {
|
||||
background: #f8f8f8;
|
||||
clear: both;
|
||||
font-style: normal;
|
||||
margin: 0;
|
||||
padding: 15px 20px;
|
||||
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
#comments-list footer {color: #888; padding: .5em 1em 0 0; text-align: right;}
|
||||
|
||||
#comments-list li:nth-child(2n) blockquote {background: #F5f5f5;}
|
||||
|
||||
/* Add a Comment */
|
||||
#add-comment label {clear: left; float: left; text-align: left; width: 150px;}
|
||||
#add-comment input[type='text'],
|
||||
#add-comment input[type='email'],
|
||||
#add-comment input[type='url'] {float: left; width: 200px;}
|
||||
|
||||
#add-comment textarea {float: left; height: 150px; width: 495px;}
|
||||
|
||||
#add-comment p.req {clear: both; margin: 0 .5em 1em 0; text-align: right;}
|
||||
|
||||
#add-comment input[type='submit'] {float: right; margin: 0 .5em;}
|
||||
#add-comment * {margin-bottom: .5em;}
|
||||
|
|
52
theme/static/css/reset.css
Normal file
52
theme/static/css/reset.css
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
Name: Reset Stylesheet
|
||||
Description: Resets browser's default CSS
|
||||
Author: Eric Meyer
|
||||
Author URI: http://meyerweb.com/eric/tools/css/reset/
|
||||
*/
|
||||
|
||||
/* v1.0 | 20080212 */
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
margin: 0;
|
||||
outline: 0;
|
||||
padding: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
body {line-height: 1;}
|
||||
|
||||
ol, ul {list-style: none;}
|
||||
|
||||
blockquote, q {quotes: none;}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* remember to define focus styles! */
|
||||
:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* remember to highlight inserts somehow! */
|
||||
ins {text-decoration: none;}
|
||||
del {text-decoration: line-through;}
|
||||
|
||||
/* tables still need 'cellspacing="0"' in the markup */
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
49
theme/static/css/wide.css
Normal file
49
theme/static/css/wide.css
Normal file
|
@ -0,0 +1,49 @@
|
|||
@import url("main.css");
|
||||
|
||||
body {
|
||||
font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif;
|
||||
}
|
||||
|
||||
.published{
|
||||
float: right;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#banner nav {
|
||||
display: none;
|
||||
-moz-border-radius: 0px;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
font-size: 1em;
|
||||
background: #F5F4EF;
|
||||
}
|
||||
|
||||
#banner nav ul{
|
||||
padding-right: 50px;
|
||||
}
|
||||
|
||||
#banner nav li{
|
||||
float: right;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#banner nav li a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#banner h1 {
|
||||
margin-bottom: -18px;
|
||||
}
|
||||
|
||||
#featured, #extras {
|
||||
padding: 50px;
|
||||
}
|
||||
|
||||
#featured {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
#extras {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
BIN
theme/static/images/icons/delicious.png
Normal file
BIN
theme/static/images/icons/delicious.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 963 B |
BIN
theme/static/images/icons/facebook.png
Normal file
BIN
theme/static/images/icons/facebook.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 300 B |
BIN
theme/static/images/icons/lastfm.png
Normal file
BIN
theme/static/images/icons/lastfm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 980 B |
BIN
theme/static/images/icons/linkedin.png
Normal file
BIN
theme/static/images/icons/linkedin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 376 B |
BIN
theme/static/images/icons/rss.png
Normal file
BIN
theme/static/images/icons/rss.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 896 B |
BIN
theme/static/images/icons/twitter.png
Normal file
BIN
theme/static/images/icons/twitter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 835 B |
11
theme/templates/analytics.html
Normal file
11
theme/templates/analytics.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{% if GOOGLE_ANALYTICS %}
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("{{GOOGLE_ANALYTICS}}");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}</script>
|
||||
{% endif %}
|
13
theme/templates/archives.html
Normal file
13
theme/templates/archives.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<section id="content" class="body">
|
||||
<h1>Archives for {{ SITENAME }}</h1>
|
||||
|
||||
<dl>
|
||||
{% for article in dates %}
|
||||
<dt>{{ article.locale_date }}</dt>
|
||||
<dd><a href="{{ article.url }}">{{ article.title }}</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</section>
|
||||
{% endblock %}
|
|
@ -1,29 +1,39 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ article.title }}{% endblock %}
|
||||
{% block content %}
|
||||
<h1>{{ article.title }}</h1>
|
||||
<p class="date">{% if article.lang == "fr" %}Publié le{% else %}Published
|
||||
on{% endif%} {{ article.locale_date }}.
|
||||
{% if article.translations %}
|
||||
{% if article.lang == "fr" %}Vous pouvez aussi lire cet article en {% else %}You can also read this article in {% endif %}
|
||||
{% for tr in article.translations %}
|
||||
<a href="{{ SITEURL }}/{{ tr.url}}">{{ tr.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{{ article.content }}
|
||||
<section id="content" class="body">
|
||||
<article>
|
||||
<header> <h1 class="entry-title"><a href="{{ pagename }}" rel="bookmark" title="Permalink to {{ article.title }}">
|
||||
{{ article.title }}</a></h1> {% include 'twitter.html' %} </header>
|
||||
<div class="entry-content">
|
||||
|
||||
{% if DISQUS_SITENAME %}
|
||||
<div class="comments">
|
||||
<h2>Comments</h2>
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_identifier = "{{ article.url }}";
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
{% endif %}
|
||||
<abbr class="published" title="{{ article.date.isoformat() }}">
|
||||
{{ article.locale_date }}
|
||||
</abbr>
|
||||
{{ article.content }}
|
||||
|
||||
<div class="info">
|
||||
<p>Published in <a href="{{ SITEURL }}/{{ article.category.url
|
||||
}}">{{ article.category }}</a>. {% if PDF_PROCESSOR %}<a
|
||||
href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the
|
||||
pdf</a>{% endif %}{% include 'taglist.html' %}</p>
|
||||
</div>
|
||||
</div><!-- /.entry-content -->
|
||||
{% if DISQUS_SITENAME %}
|
||||
<div class="comments">
|
||||
<h2>Comments !</h2>
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
var disqus_identifier = "{{ article.url }}";
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</article>
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|
14
theme/templates/article_infos.html
Normal file
14
theme/templates/article_infos.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<footer class="post-info">
|
||||
<abbr class="published" title="{{ article.date.isoformat() }}">
|
||||
{{ article.locale_date }}
|
||||
</abbr>
|
||||
|
||||
{% if article.author %}
|
||||
<address class="vcard author">
|
||||
By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
|
||||
</address>
|
||||
{% endif %}
|
||||
<p>In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>. {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a>{% endif %}</p>
|
||||
{% include 'taglist.html' %}
|
||||
{% include 'translations.html' %}
|
||||
</footer><!-- /.post-info -->
|
2
theme/templates/author.html
Normal file
2
theme/templates/author.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}
|
0
theme/templates/authors.html
Normal file
0
theme/templates/authors.html
Normal file
|
@ -1,16 +1,48 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" media="screen" charset="utf-8">
|
||||
<link href="{{ SITEURL }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />
|
||||
<title>Alexis Métaireau</title>
|
||||
<title>{% block title %}{{ SITENAME }}{%endblock%}</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
|
||||
{% if FEED_RSS %}
|
||||
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
|
||||
{% endif %}
|
||||
|
||||
<!--[if IE]>
|
||||
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
|
||||
|
||||
<!--[if lte IE 7]>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie.css"/>
|
||||
<script src="{{ SITEURL }}/js/IE8.js" type="text/javascript"></script><![endif]-->
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie6.css"/><![endif]-->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="top">
|
||||
<p class="author"><a href="http://notmyidea.org">{{ AUTHOR }}</a>'s thoughts</p>
|
||||
<ul class="links">{% block links %}{% endblock %}</ul>
|
||||
</div>
|
||||
<div class="content clear">{% block content %}{% endblock %}</div>
|
||||
|
||||
<body id="index" class="home">
|
||||
{% include 'github.html' %}
|
||||
<header id="banner" class="body">
|
||||
<h1><a href="{{ SITEURL }}">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
|
||||
<nav><ul>
|
||||
{% for title, link in MENUITEMS %}
|
||||
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||
{% endfor %}
|
||||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
{% for page in PAGES %}
|
||||
<li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for cat, null in categories %}
|
||||
<li {% if cat == category %}class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
|
||||
{% endfor %}
|
||||
</ul></nav>
|
||||
</header><!-- /#banner -->
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
{% include 'analytics.html' %}
|
||||
{% include 'disqus_script.html' %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
8
theme/templates/categories.html
Normal file
8
theme/templates/categories.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<ul>
|
||||
{% for category, articles in categories %}
|
||||
<li><a href="{{ category.url }}">{{ category }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
2
theme/templates/category.html
Normal file
2
theme/templates/category.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}
|
1
theme/templates/comments.html
Normal file
1
theme/templates/comments.html
Normal file
|
@ -0,0 +1 @@
|
|||
{% if DISQUS_SITENAME %}<p>There are <a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">comments</a>.</p>{% endif %}
|
11
theme/templates/disqus_script.html
Normal file
11
theme/templates/disqus_script.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{% if DISQUS_SITENAME %}
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{{ DISQUS_SITENAME }}';
|
||||
(function () {
|
||||
var s = document.createElement('script'); s.async = true;
|
||||
s.type = 'text/javascript';
|
||||
s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
|
||||
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
|
||||
}());
|
||||
</script>
|
||||
{% endif %}
|
9
theme/templates/github.html
Normal file
9
theme/templates/github.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% if GITHUB_URL %}
|
||||
<a href="{{ GITHUB_URL }}">
|
||||
{% if GITHUB_POSITION != "left" %}
|
||||
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" />
|
||||
{% else %}
|
||||
<img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_white_ffffff.png" alt="Fork me on GitHub" />
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
|
@ -1,19 +1,35 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content_title %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if articles %}
|
||||
{% for article in articles_page.object_list %}
|
||||
|
||||
<p>Hey, I'm Alexis and this is my blog. I try to talk about freedom, free
|
||||
software and activism. I'm currently spending my days in Paris, doing
|
||||
python at mozilla, on the services team.</p>
|
||||
|
||||
{% for article in articles %}
|
||||
<h2><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
|
||||
{% if article.translations %}
|
||||
<small>(also in {% for article in article.translations %}<a href="{{ SITEURL }}/{{ article.url }}">{{ article.lang }}</a>{% endfor %})</small>
|
||||
{% if loop.first and articles_page.has_previous %}
|
||||
<section id="content" class="body">
|
||||
<ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
|
||||
{% endif %}
|
||||
</h2>
|
||||
<p class="date">{{ article.locale_date }}</p>
|
||||
{% if article.description %}
|
||||
<p class="description">{{ article.description }}</p>
|
||||
<li><article class="hentry">
|
||||
<h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
|
||||
title="Permalink to {{ article.title}}">{{ article.title
|
||||
}}</a></h1> {{ article.locale_date }}, in <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>.
|
||||
</div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
{% if loop.last and (articles_page.has_previous()
|
||||
or not articles_page.has_previous() and loop.length > 1) %}
|
||||
{% include 'pagination.html' %}
|
||||
{% endif %}
|
||||
{% if loop.last %}
|
||||
</ol><!-- /#posts-list -->
|
||||
</section><!-- /#content -->
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
{% else %}
|
||||
<section id="content" class="body">
|
||||
<h2>Pages</h2>
|
||||
{% for page in PAGES %}
|
||||
<li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
|
||||
{% endfor %}
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
||||
|
|
10
theme/templates/page.html
Normal file
10
theme/templates/page.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ page.title }}{% endblock %}
|
||||
{% block content %}
|
||||
<section id="content" class="body">
|
||||
<h1 class="entry-title">{{ page.title }}</h1>
|
||||
{% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ page.slug }}.pdf">get
|
||||
the pdf</a>{% endif %}
|
||||
{{ page.content }}
|
||||
</section>
|
||||
{% endblock %}
|
15
theme/templates/pagination.html
Normal file
15
theme/templates/pagination.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% if DEFAULT_PAGINATION %}
|
||||
<p class="paginator">
|
||||
{% if articles_page.has_previous() %}
|
||||
{% if articles_page.previous_page_number() == 1 %}
|
||||
<a href="{{ SITEURL }}/{{ page_name }}.html">«</a>
|
||||
{% else %}
|
||||
<a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">«</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
|
||||
{% if articles_page.has_next() %}
|
||||
<a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">»</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
16
theme/templates/piwik.html
Normal file
16
theme/templates/piwik.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% if PIWIK_URL and PIWIK_SITE_ID %}
|
||||
<script type="text/javascript">
|
||||
{% if PIWIK_SSL_URL %}
|
||||
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_SSL_URL }}/" : "http://{{ PIWIK_URL }}/");
|
||||
{% else %}
|
||||
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_URL }}/" : "http://{{ PIWIK_URL }}/");
|
||||
{% endif %}
|
||||
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script><script type="text/javascript">
|
||||
try {
|
||||
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ PIWIK_SITE_ID }});
|
||||
piwikTracker.trackPageView();
|
||||
piwikTracker.enableLinkTracking();
|
||||
} catch( err ) {}
|
||||
</script><noscript><p><img src="http://{{ PIWIK_URL }}/piwik.php?idsite={{ PIWIK_SITE_ID }}" style="border:0" alt="" /></p></noscript>
|
||||
{% endif %}
|
2
theme/templates/tag.html
Normal file
2
theme/templates/tag.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
{% extends "index.html" %}
|
||||
{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %}
|
2
theme/templates/taglist.html
Normal file
2
theme/templates/taglist.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
{% if article.tags %}tags: {% for tag in article.tags %}<a href="{{ SITEURL
|
||||
}}/{{ tag.url }}">{{ tag }}</a> {% endfor %}{% endif %}
|
0
theme/templates/tags.html
Normal file
0
theme/templates/tags.html
Normal file
6
theme/templates/translations.html
Normal file
6
theme/templates/translations.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{% if article.translations %}
|
||||
Translations:
|
||||
{% for translation in article.translations %}
|
||||
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
3
theme/templates/twitter.html
Normal file
3
theme/templates/twitter.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% if TWITTER_USERNAME %}
|
||||
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="{{TWITTER_USERNAME}}">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
|
||||
{% endif %}
|
Loading…
Reference in a new issue