diff --git a/Makefile b/Makefile index c5d210e..39b56fd 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ CONFFILE=$(BASEDIR)/pelicanconf.py PUBLISHCONF=$(BASEDIR)/publishconf.py VENV := $(shell echo $${VIRTUAL_ENV-$(shell pwd)/.venv}) -VIRTUALENV = virtualenv -p /usr/bin/python3.7 +VIRTUALENV = python3 -m venv INSTALL_STAMP = $(VENV)/.install.stamp PYTHON=$(VENV)/bin/python diff --git a/content/2011-10-simplicite-volontaire.md b/content/2011-10-01-simplicite-volontaire.md similarity index 100% rename from content/2011-10-simplicite-volontaire.md rename to content/2011-10-01-simplicite-volontaire.md diff --git a/content/Journal/2020-03-01-artfevre.md b/content/Journal/2020-03-01-artfevre.md new file mode 100644 index 0000000..e44001f --- /dev/null +++ b/content/Journal/2020-03-01-artfevre.md @@ -0,0 +1,79 @@ +--- +title: Artfevre 2020 - Défi artistique en février +--- + +En Février, il y a 29 Jours, et avec un ami on s'est dit qu'on aimerait bien utiliser chacun d'entre eux pour créer — de manière intensive et sans jugement — hors de notre zone de confort, et avec des contraintes imposées. + +L'idée, c'est qu'à la fin du mois, chacun⋅e puisse se retourner (c'est une image hein) et se dire : « Ouah, j’ai fait tout ça !? » + +C’est donc une une liste de 29 thèmes (un par jour du mois) : chaque jour, on doit faire quelque chose d’artistique à partir du thème proposé. + +## Quelques retours + +Je n'ai pas réussi à faire des créations pour les 29 thèmes, mais dans l'ensemble je suis très content de ce que j'ai pu créer : j'ai pu expérimenter des choses que je n'avais pas imaginées. J'ai pu faire : + +- Du montage vidéo ; +- De la musique acoustique ; +- De la musique électronique ; +- Du montage audio ; +- De l'écriture de nouvelles ; +- Une comptine ; +- De la photo ; +- Du montage photo ; +- De l'Art Plastique ; + +C'était très sympa de voir les créations des unes et des uns arriver sur notre espace de partage de fichiers, certaines créations étaient vraiment géniales ! Et j'ai même carrément hâte de remettre ça l'an prochain :-) + +## Un peu plus d'infos + +Voici des infos qu'on a envoyé aux participant⋅e⋅s, et que je consigne ici question de l'avoir quelque part + +Voici une liste d'idées de « trucs » à faire chaque jour : Faire un dessin, Composer (et enregistrer ?) une musique, Filmer quelque chose, Inventer une chorégraphie, Écrire un texte, Inventer une origami, Se faire un tatouage (en fonction du thème, pas conseillé), Inventer un exercice de théâtre, Créer un jeu, Faire une sculpture d’argile, Créer une position de Yoga, Prendre une photo, inventer une recette de cuisine, Écrire un slam, etc, etc. + +Vous pouvez décider de ne choisir qu’une forme artistique (par exemple que la musique) pour vous forcer à explorer un médium en dehors de votre zone de confort (« je sais faire une musique rapidement, mais sais-je faire 29 fois une musique différente rapidement ? »), ou alors changer d’expression artistique tous les jours. Voyez ce qui vous amuse / anime le plus ! + +On aimerait mettre en commun nos productions quelque part, pour voir comment les gens différents se sont approprié un même thème ! Bien sur c'est tout à fait optionnel : libre à vous de participer sans publier vos créations. + +Ça vous botte ? Envoyez nous un petit mail a artfevre@notmyidea.org et on vous tient au courant ! +Techniquement ? + +Si vous voulez poster vos créations, on vous propose de le faire sur un espace en ligne. Plusieurs choses sur ce « cloud » : + +- On a préparé un dossier par jour, postez votre / vos création(s) dans le dossier qui va bien. Il y a également un dossier « Les thèmes & ressources » qui contient les photos, vidéos et musiques qui serviront de contraintes certains jours, ainsi qu'un rappel des thèmes ; + +- On a aucun moyen de savoir qui poste quoi, si vous voulez être crédités, mettez votre pseudo / nom dans le nom du fichier (ex. « Sam-3-fevrier.jpg » ou « AlexCompo7Fevrier.mp3 »). Si vous préférez l'ombre à la lumière, vous pouvez laisser un titre poétique comme «W33.jpg » ; + +- Ne repostez pas les contenus d'autres participant⋅es (d'aucun diraient « d'autrui ») sans leur accord ; + +Pour avoir l'adresse du cloud magique, envoyez nous un mail à artfevre@notmyidea.org. + +## Invitations + +Le défi commence le samedi 1er Février, mais il est possible de nous rejoindre en route : si vous voulez en parler à des ami⋅e⋅s, n'hésitez pas ! + +Donnez leur l'adresse du site web : https://artfevre.notmyidea.org + +## Rappels + +Pas de pression : Amusons-nous, l'idée est de passer de bons moments + +- Je ne veux faire qu'une seule semaine ? Pas de soucis ! +- J'ai pas envie de poser mes publications en public… No problem ! +- J'ai loupé trois jours, c'est la merde ! Hakuna Matata ! +- J'ai envie de faire un thème à plusieurs ! No problemo ! + +Personne d'autre que vous ne juge ce que vous faites ! Et… à propos de ça, même vous d'ailleurs n'y êtes pas obligés. + +## Des questions ? Des réponses ! + +### J’ai envie de le faire, mais je suis trop perfectionniste pour finir un truc par jour ! + +C’est tout le sens du projet ! Si je dois finir cette chanson/ce dessin/ce texte aujourd’hui, ça ne sera peut-être pas le meilleur des dessins, mais au moins il aura le mérite d’exister. Dans mon expérience personnelle, si j’attends d’avoir produit le meilleur objet, je finis par ne rien finir, car rien n’est parfait. Là, au moins, l’objet existe, et si vous le souhaitez, il peut servir de base plus tard à un re-travail pour viser quelque chose de plus « fignolé ». + +### Mais si je rate un jour, si j’ai pas le temps ? + +Chacun⋅e fait comme iel veut/peut et s’astreint la discipline qu’iel a envie de tester ! Personne ne viendra surveiller ou juger le travail des autres. Si vous prenez 2 jours par thème et que vous continuez le truc jusqu’à fin mars pour finir, pas de soucis ! + +### J’ai peur de pas avoir l’inspiration ! + +Pour nous, attendre l’inspiration est un prétexte qu'on se donne pour repousser le moment de se mettre au travail. L’inspiration, ça se provoque, ça ne s’attend pas. Et puis peut-être que je trouverai nulle ma création du jour, mais au moins j’aurai fait quelque chose. 1 vaut mieux que 0. Et de ce truc que moi je trouve nul (c’est pas pour ça que c’est nul, à vrai dire), peut-être que j'en tirerai une note que j’aime bien, une formulation qui me plaît, un mouvement que j’adore, et que je ré-utiliserai après dans une autre création. Ou alors, peut-être que je ne retirerai que la satisfaction de l’avoir fait, et c’est déjà pas mal ! \ No newline at end of file diff --git a/content/Lectures/antisexisme-ou-antiracisme-un-faux-dilemme.md b/content/Lectures/antisexisme-ou-antiracisme-un-faux-dilemme.md index 622b480..45f9b04 100644 --- a/content/Lectures/antisexisme-ou-antiracisme-un-faux-dilemme.md +++ b/content/Lectures/antisexisme-ou-antiracisme-un-faux-dilemme.md @@ -1,8 +1,6 @@ title: Antisexisme ou antiracisme ? Un faux dilemme author: Christine Delphy -tags: sexisme - voile - racisme +tags: sexisme, voile, racisme link: https://www.cairn.info/revue-nouvelles-questions-feministes-2006-1-page-59.htm read_on: Septembre 2019 diff --git a/content/Lectures/comment-la-non-violence-protège-letat.md b/content/Lectures/comment-la-non-violence-protège-letat.md index 707c1ed..fc8577a 100644 --- a/content/Lectures/comment-la-non-violence-protège-letat.md +++ b/content/Lectures/comment-la-non-violence-protège-letat.md @@ -1,8 +1,7 @@ title: Comment la non-violence protège l'état headline: Essai sur l'inefficacité des mouvements sociaux author: Peter Gelderloos -tags: non-violence - critique +tags: non-violence, anarchisme isbn: 978-2-9556782-4-4 image: https://www.editionslibre.org/wp-content/uploads/2018/02/siteinternet4.png read_on: Juin 2019 diff --git a/content/Lectures/hommes-anarchistes-face-au-féminisme.md b/content/Lectures/hommes-anarchistes-face-au-féminisme.md index 4c78570..8462782 100644 --- a/content/Lectures/hommes-anarchistes-face-au-féminisme.md +++ b/content/Lectures/hommes-anarchistes-face-au-féminisme.md @@ -1,7 +1,6 @@ title: Hommes Anarchistes face au féminisme author: Françis Dupuis-Déri -tags: féminisme - anarchisme +tags: féminisme, anarchisme headline: Pistes de réflexion au sujet de la politique, de l'amour et de la sexualité read_on: Septembre 2019 link: https://refractions.plusloin.org/IMG/pdf/2412_1_.pdf diff --git a/content/Lectures/la-conjuration-des-egos.md b/content/Lectures/la-conjuration-des-egos.md index 8016792..d6595d8 100644 --- a/content/Lectures/la-conjuration-des-egos.md +++ b/content/Lectures/la-conjuration-des-egos.md @@ -18,7 +18,7 @@ read_on: Janvier 2020 ## Penser ensemble l'émancipation -> L'objectif de changer le sort de toutes les femmes semble s'être perdu en route quand le féminisme n'est plus décrit par certaines camarades que comme un outil pour être « à l'aise avec [s]on identité de genre ». Ainsi une oppression ne serait problématique que parce qu'elle crée du malaise, pas quand elle est si bien intégrée qu'elle en paraît naturelle. Ce féminisme ne s'adresse plus à toutes les femmes mais à celles qui sauront s'en saisir dans leur parcours de vie. Le mouvement qui donnait une importance nouvelle au personnel pour changer le politique laisse apparaître parfois de manière marginale, parfois de manière plus prégnante, une entreprise émancipatrice individuelle ou à la dimension collective réduite, attentive aux parcours et identités des personnes qui l'investissent. +> L'objectif de changer le sort de toutes les femmes semble s'être perdu en route quand le féminisme n'est plus décrit par certaines camarades que comme un outil pour être « à l'aise avec son identité de genre ». Ainsi une oppression ne serait problématique que parce qu'elle crée du malaise, pas quand elle est si bien intégrée qu'elle en paraît naturelle. Ce féminisme ne s'adresse plus à toutes les femmes mais à celles qui sauront s'en saisir dans leur parcours de vie. Le mouvement qui donnait une importance nouvelle au personnel pour changer le politique laisse apparaître parfois de manière marginale, parfois de manière plus prégnante, une entreprise émancipatrice individuelle ou à la dimension collective réduite, attentive aux parcours et identités des personnes qui l'investissent. > Au lieu de lutter de front contre les assignations de genre, de tenter de les neutraliser — au moins le temps de l'enfance, comme le proposent les féministes pour les écoles suédoises — on va plutôt chercher à les adapter aux besoins individuels et à rendre confortable l'habitude (finalement plus problématique du tout !) de s'adresser à chacun⋅e en fonction de son identité de genre, pourvu qu'elle coïncide avec ses souhaits. diff --git a/content/Lectures/le-mouvement-est-mort-vive-la-reforme.md b/content/Lectures/le-mouvement-est-mort-vive-la-reforme.md deleted file mode 100644 index 2641879..0000000 --- a/content/Lectures/le-mouvement-est-mort-vive-la-reforme.md +++ /dev/null @@ -1,10 +0,0 @@ -title: Le « mouvement » est mort, Vive… la réforme ! -headline: Une critique de la « composition » et de ses élites -author: Un groupuscule Insignifiant -tags: zad - anarchisme - apellisme -read_on: Décembre 2019 -status: draft - -> \ No newline at end of file diff --git a/content/Lectures/leffondrement-parlons-en.md b/content/Lectures/leffondrement-parlons-en.md index 194a008..4d4f621 100644 --- a/content/Lectures/leffondrement-parlons-en.md +++ b/content/Lectures/leffondrement-parlons-en.md @@ -1,7 +1,6 @@ title: L'effondrement, parlons-en... author: Jérémie Cravatte -tags: écologie - collapsologie +tags: écologie, collapsologie headline: Les limites de la "collapsologie". read_on: Octobre 2019 link: http://www.barricade.be/publications/analyses-etudes/effondrement-parlons-limites-collapsologie diff --git a/content/Lectures/refuser-detre-un-homme.md b/content/Lectures/refuser-detre-un-homme.md index 6e5c085..7c5be9c 100644 --- a/content/Lectures/refuser-detre-un-homme.md +++ b/content/Lectures/refuser-detre-un-homme.md @@ -1,7 +1,6 @@ title: Refuser d'être un homme author: John Stolenberg -tags: féminisme - masculinisme +tags: féminisme, masculinisme headline: Pour en finir avec la virilité read_on: Octobre 2019 image: https://www.syllepse.net/syllepse_images/produits/refuser_d_etre_un_homme.jpg diff --git a/content/Lectures/rupture-anarchiste-et-trahison-pro-féministe.md b/content/Lectures/rupture-anarchiste-et-trahison-pro-féministe.md index c2f26ea..a028275 100644 --- a/content/Lectures/rupture-anarchiste-et-trahison-pro-féministe.md +++ b/content/Lectures/rupture-anarchiste-et-trahison-pro-féministe.md @@ -1,8 +1,6 @@ title: Rupture anarchiste et trahison pro-féministe author: Léo Thiers-Vidal -tags: féminisme - anarchisme - masculinismes +tags: féminisme, anarchisme, masculinismes isbn: 978-2954323701 headline: Écrits et échanges de Léo Thiers-Vidal. read_on: Août 2019 diff --git a/content/Lectures/égologie.md b/content/Lectures/égologie.md index 0a03480..d2da547 100644 --- a/content/Lectures/égologie.md +++ b/content/Lectures/égologie.md @@ -1,8 +1,7 @@ title: Égologie headline: Écologie, individualisme et course au bonheur author: Aude Vidal -tags: écologie - développement-personnel +tags: écologie, développement-personnel isbn: 979-10-91772-19-8 image: https://products-images.di-static.com/image/aude-vidal-egologie/9791091772198-475x500-1.jpg read_on: Septembre 2019 diff --git a/content/Notes/2019-12-13-assurance-chomage.md b/content/Notes/2019-12-13-assurance-chomage.md index 38981dc..774edbe 100644 --- a/content/Notes/2019-12-13-assurance-chomage.md +++ b/content/Notes/2019-12-13-assurance-chomage.md @@ -40,7 +40,7 @@ Ce second graphique montre les personnes qui se considèrent en recherche d'empl ## Budget de l'assurance chômage -![](/images/chomage/dette-chomage.png) +![Budget dette](/images/chomage/dette-chomage.png) ## Financement de l'assurance chômage diff --git a/content/Réfléxions/2020-03-06-forum-ouvert.md b/content/Réfléxions/2020-03-06-forum-ouvert.md new file mode 100644 index 0000000..ece06b4 --- /dev/null +++ b/content/Réfléxions/2020-03-06-forum-ouvert.md @@ -0,0 +1,53 @@ +--- +title: Forum ouvert, animation et posture +headline: Quelques retours et questionnements sur les postures d'animation au sein des forums ouverts +--- + +Début Février j'ai participé à un Forum Ouvert. Il s'agit de la troisième fois, et cette fois ci j'étais particulièrement attentif aux procédés mis en place pour sa tenue, puisque je faisais partie de l'équipe d'organisation. + +## Un forum ouvert ? + +Les forums ouverts sont des outils qui permettent de se retrouver avec un groupe de personnes et d'avoir des échanges. L'idée est de créer un cadre assez léger qui permette aux personnes d'échanger de manière assez horizontale. + +Les 4 principes : + +- les personnes présentes sont les bonnes personnes ; +- quoi qu'il arrive, c'est la seule chose qui pouvait arriver ; +- ça commence quand ça commence ; +- quand c’est fini, c’est fini. + +La loi de la mobilité ou loi des deux pieds : si à un moment vous vous rendez compte que vous n'être ni en train d’apprendre, ni de contribuer, aller voir autre chose ! + +Retours : + +- J'étais hyper surpris de voir à quel point l'outil est fonctionnel en tant que tel : les discussions auxquelles j'ai pu participer étaient souvent assez « poussées » alors même que les personnes ne se connaissaient pas d'avant le forum. + +- Durant le forum ouvert, il y avait la possibilité de prendre des notes, et de les partager avec tout le monde dans un espace prévu pour ça. Je n'y croyais pas trop, mais ça à vraiment fonctionné ! On avait préparé des pads en ligne (un espace de prise de notes partagées) avant l'évènement ce qui à permis de faciliter la prise de notes ; + +- Avoir un endroit pour afficher les notes prises durant les discussions est utile, et créé un sentiment de satisfaction collectif ; + +- Répartition de la parole : à un moment, on propose aux participant⋅e⋅s de venir proposer des sujets, et on s'est rendu compte que c'était (comme bien trop souvent) en grande partie des hommes cis (assignés hommes à la naissance) qui prenaient la parole à ce moment là. Pour éviter que ce ne soit le cas, laisser un temps de réflexion à tou⋅te⋅s avant de prendre la parole peut être utile. + +- Inclusion des personnes trans et non-binaires : Faire un tour des pronoms peut permettre aux personnes trans et non-binaires d'être plus incluses, ou en tout cas de visibiliser leur présence. On ne l'avait pas fait lors du premier jour et ça à manqué ; + +- Sur un plan plus pragmatique, trouver une logistique pour faire à manger de manière collective / faire le ménage / installer les tables etc, pourrait permettre aux organisateur⋅ice⋅s de participer aux discussions. + +- Lors de la phase d'organisation, il est possible de fusionner les sujets, et ça à été le cas pour au moins deux sujets proposés, ce qui à créé une situations problématique. Dans son livre qui parle des forums ouverts, Owen indique que parfois il vaut mieux ne pas fusionner les sujets, et je pense qu'on aurait sûrement du ici. Les attentes des participant⋅e⋅s ne sont pas forcement les mêmes, et ça peut créer de la frustration si les choses ne sont pas forcément bien amenées. C'est sûrement quelque chose à souligner aux participant⋅e⋅s lors du temps d'accueil. + +## Animer et/ou participer ? + +A titre personnel, j'ai été assez frustré par la posture un peu floue que j'avais durant le forum : je faisais partie de l'équipe d'organisation mais je ne m'occupais pas de l'animation, nourrissant l'espoir de participer aux discussions. + +J'ai pu participer à certaines discussions, mais jamais (sauf une exception) pour une session entière, et j'ai trouvé ça dommage. Après une discussion avec Thomas qui à déjà animé au moins un forum ouvert, il semble possible d'« ouvrir » et de « fermer » les temps d'organisation, pour permettre aux organisateur⋅ice⋅s d'animer et de participer. + +J'aime bien cette idée, parce que ça veut dire que tout le monde peut participer, et que la posture d'animation ne signifie pas un « sacrifice », mais peut-être que cette idée à aussi ses défauts : lors d'une discussion avec un⋅e des animateurs⋅rices iel m'a indiqué qu'iel préférait rester extérieur aux discussions, pour éviter les prises de pouvoir. + +Autrement dit, faire l'animation du forum ouvert conférerait un pouvoir qui pourrait être néfaste lors des discussions. Je ne sais pas trop quoi penser de cette idée, mais il me semble pertinent de pousser la réflexion. Dans une posture plus « classique » de facilitation, on s'efforce de rester extérieur aux discussions, pour ne pas avoir de conflit d'intérêt. + +Mais dans le cas du forum ouvert, je n'ai pas l'impression que faire l'animation confère un pouvoir sur le groupe, autre que celui d'être garant⋅e des règles du fonctionnement collectif (rappel de l'heure par exemple, rappel du cadre de bienveillance). Si vous avez des retours sur ce sujet je suis preneur ! + +Voire, je me demande même quel rapports cela génère de — justement — rester extérieur et de ne pas participer, alors même qu'on est présent⋅e. Dit autrement, alors que tout le monde se rencontre à travers les discussions, se met en jeu, ce n'est pas le cas des animateur⋅ice⋅s, et je me demande si ça impacte l'ambiance générale ? + +En tout cas, j'aime bien l'idée qu'il soit possible d'à la fois animer les temps de forums et de participer. Dans ce cas là, existe-il des stratagèmes / artifices pour permettre de visibiliser ces prises de pouvoir pendant les discussions ? + +Je suis preneur de tout retour d'expérience sur le sujet ! \ No newline at end of file diff --git a/content/Technologie/2009-12-17-python-go.md b/content/Technologie/2009-12-17-python-go.md index 433fda3..cd55fd3 100644 --- a/content/Technologie/2009-12-17-python-go.md +++ b/content/Technologie/2009-12-17-python-go.md @@ -17,7 +17,8 @@ PEP20](http://www.python.org/dev/peps/pep-0020/), qui constituent une très bonne introduction au langage, qui prends la forme d'un *easter egg* présent dans python -``` sourceCode bash +```bash + >>> import this The Zen of Python, by Tim Peters diff --git a/content/Technologie/2010-07-06-a-distutils2-month-pypi-simple-index-ready.md b/content/Technologie/2010-07-06-a-distutils2-month-pypi-simple-index-ready.md index 5ebb709..3a021c0 100644 --- a/content/Technologie/2010-07-06-a-distutils2-month-pypi-simple-index-ready.md +++ b/content/Technologie/2010-07-06-a-distutils2-month-pypi-simple-index-ready.md @@ -71,7 +71,8 @@ If you want to find all the distributions of the "EggsAndSpam" project, you could do the following (do not take so attention to the names here, as the API will probably change a bit): -``` sourceCode python +```python + >>> index = SimpleIndex() >>> index.find("EggsAndSpam") [EggsAndSpam 1.1, EggsAndSpam 1.2, EggsAndSpam 1.3] @@ -79,7 +80,8 @@ as the API will probably change a bit): We also could use version specifiers: -``` sourceCode python +```python + >>> index.find("EggsAndSpam (< =1.2)") [EggsAndSpam 1.1, EggsAndSpam 1.2] ``` diff --git a/content/Technologie/2010-10-06-writing-pelican.md b/content/Technologie/2010-10-06-writing-pelican.md index a382f5b..12837d0 100644 --- a/content/Technologie/2010-10-06-writing-pelican.md +++ b/content/Technologie/2010-10-06-writing-pelican.md @@ -25,7 +25,7 @@ You can find a repository to fork at If you just want to get started, use your installer of choice (pip, easy\_install, …) And then have a look to the help (pelican --help) -``` sourceCode bash +``` $ pip install pelican ``` @@ -33,7 +33,7 @@ $ pip install pelican Here's a sample usage of pelican -``` sourceCode bash +``` bash $ pelican . writing /home/alexis/projets/notmyidea.org/output/index.html writing /home/alexis/projets/notmyidea.org/output/tags.html @@ -48,7 +48,8 @@ Done ! You also can use the --help option for the command line to get more informations -``` sourceCode bash +```bash + $pelican --help usage: pelican [-h] [-t TEMPLATES] [-o OUTPUT] [-m MARKUP] [-s SETTINGS] [-b] path diff --git a/content/Technologie/2010-10-11-dynamically-change-your-gnome-wallpapers.md b/content/Technologie/2010-10-11-dynamically-change-your-gnome-wallpapers.md index 3ca88ff..e3407e4 100644 --- a/content/Technologie/2010-10-11-dynamically-change-your-gnome-wallpapers.md +++ b/content/Technologie/2010-10-11-dynamically-change-your-gnome-wallpapers.md @@ -12,20 +12,23 @@ Some time ago, I've made a little python script to ease that, and you can now use it too. It's named "gnome-background-generator", and you can install it via pip for instance. -``` sourceCode shell +``` +shell $ pip install gnome-background-generator ``` Then, you have just to use it this way: -``` sourceCode shell +``` +shell $ gnome-background-generator -p ~/Images/walls -s /home/alexis/Images/walls/dynamic-wallpaper.xml generated ``` Here is a extract of the \`--help\`: -``` sourceCode shell +``` +shell $ gnome-background-generator --help usage: gnome-background-generator [-h] [-p PATH] [-o OUTPUT] [-t TRANSITION_TIME] [-d DISPLAY_TIME] [-s] diff --git a/content/Technologie/2010-10-21-bebox-reboot.md b/content/Technologie/2010-10-21-bebox-reboot.md index ffc6fb2..d2f0181 100644 --- a/content/Technologie/2010-10-21-bebox-reboot.md +++ b/content/Technologie/2010-10-21-bebox-reboot.md @@ -11,7 +11,8 @@ After a bit of reflexion, that's also really easy to do using directly the command line tools curl, grep and tail (but really harder to read). -``` sourceCode bash +```bash + curl -X POST -u joel:joel http://bebox.config/cgi/b/info/restart/\?be\=0\&l0\=1\&l1\=0\&tid\=RESTART -d "0=17&2=`curl -u joel:joel http://bebox.config/cgi/b/info/restart/\?be\=0\&l0\=1\&l1\=0\&tid\=RESTART | grep -o "name='2' value='[0-9]\+" | grep -o "[0-9]\+" | tail -n 1`&1" ``` @@ -20,7 +21,8 @@ curl -X POST -u joel:joel http://bebox.config/cgi/b/info/restart/\?be\=0\&l0\=1\ Well, that's not the optimal solution, that's a bit "gruik", but it works. -``` sourceCode python +```python + import urllib2 import urlparse import re diff --git a/content/Technologie/2011-12-07-introducing-cornice.md b/content/Technologie/2011-12-07-introducing-cornice.md index 97f057e..fa5591e 100644 --- a/content/Technologie/2011-12-07-introducing-cornice.md +++ b/content/Technologie/2011-12-07-introducing-cornice.md @@ -16,7 +16,8 @@ wheel, so it is easily pluggable with validations frameworks, such as Here is how it works: -``` sourceCode python +```python + service = Service(name="service", path="/service") @@ -72,7 +73,8 @@ to the requests. For instance, in our validator, we can chose to validate the parameter passed and use it in the body of the webservice: -``` sourceCode python +```python + service = Service(name="service", path="/service") @@ -109,7 +111,8 @@ Let's refine a bit our previous example, by specifying which content-types are supported, using the accept parameter: -``` sourceCode python +```python + @service.get(validator=is_awesome, accept=("application/json", "text/json")) def get1(request): return {"test": "yay!"} @@ -135,7 +138,8 @@ writing documentation for web services can be painful, especially when your services evolve. Cornice provides a sphinx directive to automatically document your API in your docs. -``` sourceCode rst +``` +rst .. services:: :package: coolapp :service: quote diff --git a/content/Technologie/2012-05-01-refactoring-cornice.md b/content/Technologie/2012-05-01-refactoring-cornice.md index b4c9834..b36b934 100644 --- a/content/Technologie/2012-05-01-refactoring-cornice.md +++ b/content/Technologie/2012-05-01-refactoring-cornice.md @@ -17,7 +17,8 @@ without the need from the developer to deal with them nor to know them. If you're not familiar with Cornice, here is how you define a simple service with it: -``` sourceCode python +```python + from cornice.service import Service bar = Service(path="/bar") @@ -40,7 +41,8 @@ this was via an extensive use of decorators internally. The API of the cornice.service.Service class was as following (simplified so you can get the gist of it). -``` sourceCode python +```python + class Service(object): def __init__(self, **service_kwargs): @@ -110,7 +112,8 @@ touching the API that much. Here is the gist of the new architecture: -``` sourceCode python +```python + class Service(object): # we define class-level variables that will be the default values for # this service. This makes things more extensible than it was before. @@ -170,7 +173,8 @@ and nothing more. No more route registration logic goes here. Instead, I added this as another feature, even in a different module. The function is named register\_service\_views and has the following signature: -``` sourceCode python +```python + register_service_views(config, service) ``` diff --git a/content/Technologie/2012-10-22-cheese-and-code-result.md b/content/Technologie/2012-10-22-cheese-and-code-result.md index fc1cb47..950dec5 100644 --- a/content/Technologie/2012-10-22-cheese-and-code-result.md +++ b/content/Technologie/2012-10-22-cheese-and-code-result.md @@ -56,7 +56,8 @@ consume any REST API with a SPORE endpoint. Here is how you can let cornice describe your web service for you -``` sourceCode python +```python + from cornice.ext.spore import generate_spore_description from cornice.service import Service, get_services @@ -101,7 +102,8 @@ You can [find the project on github](http://github.com/spiral-project/respire), but here is how to use it, really quickly (these examples are how to interact with daybed) -``` sourceCode python +```python + >>> from respire import client_from_url >>> # create the client from the SPORE definition diff --git a/content/Technologie/2013-02-04-cornice-cors.md b/content/Technologie/2013-02-04-cornice-cors.md index f33435b..f958e19 100644 --- a/content/Technologie/2013-02-04-cornice-cors.md +++ b/content/Technologie/2013-02-04-cornice-cors.md @@ -137,7 +137,8 @@ CORS support as well. In Cornice, you define a service like this: -``` sourceCode python +```python + from cornice import Service foobar = Service(name="foobar", path="/foobar") @@ -151,7 +152,8 @@ def get_foobar(request): To add CORS support to this resource, you can go this way, with the cors\_origins parameter: -``` sourceCode python +```python + foobar = Service(name='foobar', path='/foobar', cors_origins=('*',)) ``` @@ -166,7 +168,8 @@ need to stick with \*, which means "authorize everyone". You can define the headers you want to expose for the service: -``` sourceCode python +```python + foobar = Service(name='foobar', path='/foobar', cors_origins=('*',)) @foobar.get(cors_headers=('X-My-Header', 'Content-Type')) @@ -212,7 +215,8 @@ the time. I introduced another way to pass the CORS policy, so you can do something like that: -``` sourceCode python +```python + policy = dict(enabled=False, headers=('X-My-Header', 'Content-Type'), origins=('*.notmyidea.org'), diff --git a/content/Technologie/2014-07-31-hawk.md b/content/Technologie/2014-07-31-hawk.md index 7451d53..9cde790 100644 --- a/content/Technologie/2014-07-31-hawk.md +++ b/content/Technologie/2014-07-31-hawk.md @@ -80,7 +80,8 @@ into two parts, the first 32 hex caracters are the hawk id, and the next Credentials: -``` sourceCode javascript +``` +javascript credentials = { 'id': keyMaterial[0:32], 'key': keyMaterial[32:64], @@ -109,7 +110,8 @@ Doing hawk requests in your terminal is now as simple as: In addition, it will help you to craft requests using the requests library: -``` sourceCode python +```python + import requests from requests_hawk import HawkAuth @@ -123,7 +125,8 @@ Alternatively, if you don't have the token id and key, you can pass the hawk session token I talked about earlier and the lib will take care of the derivation for you: -``` sourceCode python +```python + hawk_auth = HawkAuth( hawk_session=resp.headers['hawk-session-token'], server_url=self.server_url @@ -140,7 +143,8 @@ simple it is to use it. Here is a demo of how we implemented it for Daybed: -``` sourceCode python +```python + from pyramid_hawkauth import HawkAuthenticationPolicy policy = HawkAuthenticationPolicy(decode_hawk_id=get_hawk_id) @@ -164,7 +168,8 @@ finally came up factorizing everything in a library for express, named In order to plug it in your application, you'll need to use it as a middleware: -``` sourceCode javascript +``` +javascript var express = require("express"); var hawk = require("express-hawkauth"); app = express(); diff --git a/content/Technologie/2015.04.service-de-nuages.rst b/content/Technologie/2015-04-01-service-de-nuages.rst similarity index 100% rename from content/Technologie/2015.04.service-de-nuages.rst rename to content/Technologie/2015-04-01-service-de-nuages.rst diff --git a/content/Technologie/2015-04-30-ecosysteme-stockage.md b/content/Technologie/2015-04-30-ecosysteme-stockage.md index 0f7d556..19e62fb 100644 --- a/content/Technologie/2015-04-30-ecosysteme-stockage.md +++ b/content/Technologie/2015-04-30-ecosysteme-stockage.md @@ -112,7 +112,8 @@ terme, et que *Remote Storage* devienne une facette de notre solution. permet de manipuler des enregistrements en local et de les synchroniser vers une base distante. -``` sourceCode javascript +``` +javascript var db = new PouchDB('dbname'); db.put({ diff --git a/content/Technologie/2015.05.cliquet-permissions.rst b/content/Technologie/2015-05-01-cliquet-permissions.rst similarity index 100% rename from content/Technologie/2015.05.cliquet-permissions.rst rename to content/Technologie/2015-05-01-cliquet-permissions.rst diff --git a/content/Technologie/2015.05.stocker-permissions.rst b/content/Technologie/2015-05-01-stocker-permissions.rst similarity index 100% rename from content/Technologie/2015.05.stocker-permissions.rst rename to content/Technologie/2015-05-01-stocker-permissions.rst diff --git a/content/Technologie/2015-05-09-passphrases.md b/content/Technologie/2015-05-09-passphrases.md index 06aed6f..c9a4a33 100644 --- a/content/Technologie/2015-05-09-passphrases.md +++ b/content/Technologie/2015-05-09-passphrases.md @@ -42,15 +42,13 @@ Une phrase de passe devrait: Une des techniques consiste à utiliser des mots du dictionnaire, sélectionnés de manière aléatoire, puis modifiés. -![](https://imgs.xkcd.com/comics/password_strength.png) +![Trough 20 years of effort, we've succesfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess](https://imgs.xkcd.com/comics/password_strength.png) Micah Lee [travaille également sur un outil](https://github.com/micahflee/passphrases) qui vise à rendre la mémorisation des phrases de passe plus aisée, de par leur répétition avec des pauses de plus en plus longues. -![](%7Bfilename%7D/static/passphrases.png) - Oui, ce n'est pas aussi simple que ce qu'il y parait. Pour ma part, j'ai une copie en local de mes clés, dans un fichier chiffré avec une autre clé que j'ai généré pour l'occasion et que je ne partagerait pas. J'ai diff --git a/content/Technologie/2015.06.kinto.1.0-fr.rst b/content/Technologie/2015-06-01-kinto.1.0-fr.rst similarity index 100% rename from content/Technologie/2015.06.kinto.1.0-fr.rst rename to content/Technologie/2015-06-01-kinto.1.0-fr.rst diff --git a/content/Technologie/2015.07.cliquet.rationale.rst b/content/Technologie/2015-07-01-cliquet.rationale.rst similarity index 100% rename from content/Technologie/2015.07.cliquet.rationale.rst rename to content/Technologie/2015-07-01-cliquet.rationale.rst diff --git a/content/Technologie/2015.07.whistler-use-cases.rst b/content/Technologie/2015-07-01-whistler-use-cases.rst similarity index 100% rename from content/Technologie/2015.07.whistler-use-cases.rst rename to content/Technologie/2015-07-01-whistler-use-cases.rst diff --git a/content/Technologie/2015.08.donnees-et-signatures.rst b/content/Technologie/2015-08-01-donnees-et-signatures.rst similarity index 99% rename from content/Technologie/2015.08.donnees-et-signatures.rst rename to content/Technologie/2015-08-01-donnees-et-signatures.rst index df1bf53..82f46be 100755 --- a/content/Technologie/2015.08.donnees-et-signatures.rst +++ b/content/Technologie/2015-08-01-donnees-et-signatures.rst @@ -3,6 +3,7 @@ Service de nuages : Garantir l'intégrité des données via des signatures :summary: Comment garantir l'intégrité des données en utilisant les signatures. :lang: fr +:date: 2016-03-01 *Cet article est repris depuis le blog « Service de Nuages » de mon équipe à Mozilla* diff --git a/content/Technologie/2018.02.25.webnotes.md b/content/Technologie/2018-02-25-webnotes.md similarity index 100% rename from content/Technologie/2018.02.25.webnotes.md rename to content/Technologie/2018-02-25-webnotes.md diff --git a/content/Technologie/2018.03.03.groupement-achats.md b/content/Technologie/2018-03-03-groupement-achats.md similarity index 100% rename from content/Technologie/2018.03.03.groupement-achats.md rename to content/Technologie/2018-03-03-groupement-achats.md diff --git a/mnmlist/LICENSE b/mnmlist/LICENSE new file mode 100644 index 0000000..21b1bee --- /dev/null +++ b/mnmlist/LICENSE @@ -0,0 +1,3 @@ +This theme is uncopyrighted (http://mathieu.agopian.info/mnmlist/theme.html), and is an adaptation of the mnmlist theme for wordpress, which is also uncopyrighted (http://mnmlist.com/theme/). + +This theme is also free, and offered as is. diff --git a/mnmlist/README.rst b/mnmlist/README.rst new file mode 100644 index 0000000..08f7100 --- /dev/null +++ b/mnmlist/README.rst @@ -0,0 +1,28 @@ +mnmlist +####### + +This is the `mnmlist theme `_ adapted for Pelican. + + +Settings +~~~~~~~~ + +There's one additional setting used by this theme, if present: + +:: + + HIDE_DATE = False + +If ``HIDE_DATE`` is set to ``True``, dates won't be displayed under the blog post titles. + + +Compass +~~~~~~~ + +The ``main.css`` file is generated from the ``compass/src/main.scss`` sass file, using http://compass-style.org/. + +Screenshot +---------- + +.. image:: screenshot.png + :alt: Screenshot of the theme diff --git a/mnmlist/screenshot.png b/mnmlist/screenshot.png new file mode 100644 index 0000000..e17f661 Binary files /dev/null and b/mnmlist/screenshot.png differ diff --git a/mnmlist/static/css/main.css b/mnmlist/static/css/main.css new file mode 100644 index 0000000..4a41645 --- /dev/null +++ b/mnmlist/static/css/main.css @@ -0,0 +1,296 @@ +/* + Theme Name: mnmlist modified by leplatrem + Theme URI: http://mathieu.agopian.info/mnmlist/theme.html + Description: Theme adapted from http://mnmlist.com/theme/ from Leo Babauta, a very clean minimalist theme, without comments, search, archives or other features. + Author: Mathieu Agopian, Mathieu Leplatre + Autor URI: http://mathieu.agopian.info + + This theme is uncopyrighted, free, and offered as is. +*/ + +@import url("pygment.css"); + +:root { + --main-bg-color: #fff; + --border-color: #ACACAC; + --code-bg-color: #e5e5e2; + --link-color: + #BB7DD4 + ; + --text-color: #2d2d2d; + --menu-color: + #7971D0 + ; + --link-color-menu: +#36194D +; + --headers-color: #000; + --citation-bold-color: #bb7dd49a + +} + +body { + background: var(--main-bg-color); + color: var(--text-color); + font-family: "Helvetica Neue",Arial,sans-serif; + margin-left: auto; + margin-right: auto; + padding: 16px; + + max-width: 35em; + font-size: 20px; +} + +.section { + margin-top: 40px; +} + +h1, h2, h3, h4 { + color: var(--headers-color); +} +h1 { + font-size: 2em; + font-weight: normal; + margin-bottom: 0; + font-weight: bold; + line-height: 1.2em; +} + + h1 a { + text-decoration-style: unset; + } + +h2 { + font-size: 1.3em; +} + +h3 { + font-size: 1em; +} + +h4 { + font-size: 0.9em; +} + +time { + font-weight: bold; + border-bottom: 1px solid; + padding-bottom: 10px; + padding-right: 5em; +} + +img { + border: none; + max-width: 100%; +} + +.align-right { + float: right; + max-width: 50%; +} + +.align-center { + margin-left: auto; + margin-right: auto; + width: max-content; + max-width: 100%; +} + +.footnote:first-of-type { + padding-top: 30px; +} + +.footnote:last-of-type { + padding-bottom: 30px; +} + +.footnote-reference { + vertical-align: super; + font-size: 0.7em; +} + +blockquote { + position: relative; + margin: 1.5em 2ch 1.5em 2ch; + padding: 0; +} + +blockquote strong { + background-color: var(--citation-bold-color); + font-weight: normal !important; + +} + +blockquote::before { + position: absolute; + top: 0; + left: -2ch; + bottom: 0; + width: 1ch; + overflow: hidden; + white-space: pre; + line-height: 30px; + content: ">\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a"; + cursor: default; +} + + +p { + line-height: 30px; + margin:30px auto; + text-indent: 0px; +} + + p.caption { + font-size: 80%; + margin-top: 0; + } + + +a { + color: inherit; + text-decoration-color: var(--link-color); + text-decoration-thickness: 3px; +} + + a:hover { + color: var(--link-color); + } + + +ul, ol { + padding: .5em 0em 1em 3.2em; +} + ul li, ol li { + line-height: 30px; + padding: 0; + } + + +strong { + font-weight: bold; +} + +tt, pre { + font-family: Inconsolata, Monaco, monospace; + line-height: 1.2em; +} + +pre { + font-size: 0.8em; + overflow: auto; + padding: 10px; +} + +header { + padding-bottom: 20px; +} + + header a { + text-decoration: none; + } + + header h1 { + margin-bottom: 30px; + } + + +dt { + font-weight: bold; +} + +section.index { + margin-top: 3em; + line-height: 1.5em; +} + section.index h1 { + margin-top: 5px; + margin-bottom: 5px; + } + + .index time { + border-bottom: none; + } + + +#links { +} + + #links li { + display: inline-block; + } + + #links a { + margin-right: 15px; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + + text-decoration-color: var(--link-color-menu); + /*text-decoration-thickness: unset;*/ + } + + #links a:hover { + color: var(--link-color-menu); + } + + #links a.selected { + color: #fff; + background-color: var(--link-color-menu); + } + + #links a.selected:hover { + cursor: default; + } + + +#article-list { + margin-top: 100px; +} + + #article-list ol li { + line-height: 1.2em; + list-style-type: none; + padding-bottom: 10px; + } + + +.note { + background: var(--code-bg-color); + font-style: italic; + padding: 1em 0.5em; + margin: 1em 0; + font-family: Georgia, serif; +} + .note p { + display: inline; + } + + .note p.first { + font-weight: bold; + } + + .note p.first::after { + content: ' : '; + } + + +footer { + color: var(--headers-color); + font-size: 13px; + letter-spacing:4px; + margin-left: 20px; +} + + footer li { + display: inline; + } + + footer p { + text-align: right; + } + + footer a { + text-decoration-thickness: unset; + } diff --git a/mnmlist/static/css/pygment.css b/mnmlist/static/css/pygment.css new file mode 100644 index 0000000..ba649d2 --- /dev/null +++ b/mnmlist/static/css/pygment.css @@ -0,0 +1,74 @@ +pre { line-height: 125%; margin: 0; } +td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; } +span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; } +td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #408080; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ +.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #7D9029 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ diff --git a/mnmlist/templates/analytics.html b/mnmlist/templates/analytics.html new file mode 100644 index 0000000..ba174fc --- /dev/null +++ b/mnmlist/templates/analytics.html @@ -0,0 +1,11 @@ +{% if GOOGLE_ANALYTICS %} + + +{% endif %} \ No newline at end of file diff --git a/mnmlist/templates/archives.html b/mnmlist/templates/archives.html new file mode 100644 index 0000000..0b279a2 --- /dev/null +++ b/mnmlist/templates/archives.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} +{% block content %} +
+

Archives

+
+
+
+{% for article in dates %} +
{{ article.locale_date }}
+
{{ article.title }}
+{% endfor %} +
+
+{% endblock %} diff --git a/mnmlist/templates/article.html b/mnmlist/templates/article.html new file mode 100644 index 0000000..30cdead --- /dev/null +++ b/mnmlist/templates/article.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% block title %}{{ article.title }} - {{ super() }}{% endblock %} +{% block content %} + + + + + +
+ {% if article.category == "Lectures" %} +

Notes de lecture

+

« {{ article.title }} » par {{ article.author }}

+ + {% else %} +

{{ article.title }}

+ + {% endif %} + + +
+
+ {{ article.content }} + {% if article.tags %} +

+ {% for tag in article.tags %} + #{{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} + - Posted in the {{ article.category }} category +

+ {% endif %} +
+{% endblock %} diff --git a/mnmlist/templates/author.html b/mnmlist/templates/author.html new file mode 100644 index 0000000..0b37290 --- /dev/null +++ b/mnmlist/templates/author.html @@ -0,0 +1,2 @@ +{% extends "index.html" %} +{% block title %}{{ SITENAME }} - {{ author }}{% endblock %} diff --git a/mnmlist/templates/authors.html b/mnmlist/templates/authors.html new file mode 100644 index 0000000..e69de29 diff --git a/mnmlist/templates/base.html b/mnmlist/templates/base.html new file mode 100644 index 0000000..691d103 --- /dev/null +++ b/mnmlist/templates/base.html @@ -0,0 +1,27 @@ + + + + {% block title %}{{ SITENAME }}{%endblock%} + + + + + {% if FEED_RSS %} + + {% endif %} + + + + {% include 'github.html' %} + {% block content %} + {% endblock %} + + + diff --git a/mnmlist/templates/categories.html b/mnmlist/templates/categories.html new file mode 100644 index 0000000..e29be0c --- /dev/null +++ b/mnmlist/templates/categories.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} diff --git a/mnmlist/templates/category.html b/mnmlist/templates/category.html new file mode 100644 index 0000000..4f5aca9 --- /dev/null +++ b/mnmlist/templates/category.html @@ -0,0 +1,3 @@ +{% extends "index.html" %} +{% block title %}{{ category }} - {{ super() }}{% endblock %} +{% block pagetitle %}{{ category }} posts{% endblock %} \ No newline at end of file diff --git a/mnmlist/templates/comments.html b/mnmlist/templates/comments.html new file mode 100644 index 0000000..0f58df6 --- /dev/null +++ b/mnmlist/templates/comments.html @@ -0,0 +1,20 @@ +{% if DISQUS_SITENAME %} +
+
+ + +{% endif %} diff --git a/mnmlist/templates/disqus_script.html b/mnmlist/templates/disqus_script.html new file mode 100644 index 0000000..23ec532 --- /dev/null +++ b/mnmlist/templates/disqus_script.html @@ -0,0 +1,11 @@ +{% if DISQUS_SITENAME %} + +{% endif %} diff --git a/mnmlist/templates/github.html b/mnmlist/templates/github.html new file mode 100644 index 0000000..75592ac --- /dev/null +++ b/mnmlist/templates/github.html @@ -0,0 +1,9 @@ +{% if GITHUB_URL %} + +{% if GITHUB_POSITION != "left" %} +Fork me on GitHub +{% else %} +Fork me on GitHub +{% endif %} + +{% endif %} diff --git a/mnmlist/templates/index.html b/mnmlist/templates/index.html new file mode 100644 index 0000000..79ac63d --- /dev/null +++ b/mnmlist/templates/index.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} +{% block content %} +

{% block pagetitle %}{% endblock %}

+{% if articles %} + {% for article in articles %} + {% if loop.index <= DEFAULT_PAGINATION %} +
+ {% if not HIDE_DATE %} + + {% endif %} +

{{ article.title }}

+ {{ article.content|striptags|truncate(200) }} +
+ {% else %} + {% if loop.index0 == DEFAULT_PAGINATION %} +
+

More...

+ +
+ {% endif %} + {% endif %} + {% endfor %} +{% else %} + No posts found. +{% endif %} +{% endblock content %} diff --git a/mnmlist/templates/page.html b/mnmlist/templates/page.html new file mode 100644 index 0000000..598758c --- /dev/null +++ b/mnmlist/templates/page.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% block title %}{{ page.title }} - {{ super() }}{% endblock %} +{% block content %} +
+
+
+ {{ page.content }} +
+{% endblock %} diff --git a/mnmlist/templates/pagination.html b/mnmlist/templates/pagination.html new file mode 100644 index 0000000..83c587a --- /dev/null +++ b/mnmlist/templates/pagination.html @@ -0,0 +1,15 @@ +{% if DEFAULT_PAGINATION %} +

+ {% if articles_page.has_previous() %} + {% if articles_page.previous_page_number() == 1 %} + « + {% else %} + « + {% endif %} + {% endif %} + Page {{ articles_page.number }} / {{ articles_paginator.num_pages }} + {% if articles_page.has_next() %} + » + {% endif %} +

+{% endif %} diff --git a/mnmlist/templates/piwik.html b/mnmlist/templates/piwik.html new file mode 100644 index 0000000..ff459af --- /dev/null +++ b/mnmlist/templates/piwik.html @@ -0,0 +1,16 @@ +{% if PIWIK_URL and PIWIK_SITE_ID %} + +{% endif %} \ No newline at end of file diff --git a/mnmlist/templates/tag.html b/mnmlist/templates/tag.html new file mode 100644 index 0000000..0118294 --- /dev/null +++ b/mnmlist/templates/tag.html @@ -0,0 +1,3 @@ +{% extends "index.html" %} +{% block title %}{{ tag }} - {{ super() }}{% endblock %} +{% block pagetitle %}Posts with #{{ tag }} tag{% endblock %} diff --git a/mnmlist/templates/taglist.html b/mnmlist/templates/taglist.html new file mode 100644 index 0000000..c792fd7 --- /dev/null +++ b/mnmlist/templates/taglist.html @@ -0,0 +1,2 @@ +{% if article.tags %}

tags: {% for tag in article.tags %}{{ tag }}{% endfor %}

{% endif %} +{% if PDF_PROCESSOR %}

get the pdf

{% endif %} diff --git a/mnmlist/templates/tags.html b/mnmlist/templates/tags.html new file mode 100644 index 0000000..a6011a0 --- /dev/null +++ b/mnmlist/templates/tags.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% block content %} + +{% endblock %} + diff --git a/mnmlist/templates/translations.html b/mnmlist/templates/translations.html new file mode 100644 index 0000000..0079883 --- /dev/null +++ b/mnmlist/templates/translations.html @@ -0,0 +1,6 @@ +{% if article.translations %} +Translations: + {% for translation in article.translations %} + {{ translation.lang }} + {% endfor %} +{% endif %} diff --git a/mnmlist/templates/twitter.html b/mnmlist/templates/twitter.html new file mode 100644 index 0000000..c6b159f --- /dev/null +++ b/mnmlist/templates/twitter.html @@ -0,0 +1,3 @@ +{% if TWITTER_USERNAME %} +Tweet +{% endif %} \ No newline at end of file diff --git a/pelicanconf.py b/pelicanconf.py index a39fec9..a7f3b04 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -3,8 +3,9 @@ PATH = "content" AUTHOR = u"" SITENAME = u"Carnets en ligne" -THEME = "theme" +THEME = "mnmlist" DISQUS_SITENAME = "notmyidea" +DEFAULT_PAGINATION = 10 STATIC_PATHS = ["static", "images"] SITEURL = "" diff --git a/requirements.txt b/requirements.txt index 8b0ec32..71fd81f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ pelican markdown +datefinder diff --git a/simplereader.py b/simplereader.py index 417e328..40fcc29 100644 --- a/simplereader.py +++ b/simplereader.py @@ -14,7 +14,7 @@ class BlockquotesPreprocessor(Preprocessor): new_lines = [] for line in lines: if line.startswith(">"): - new_lines.append(" ") + # new_lines.append(" ") new_lines.append(line) else: new_lines.append(line)