Ces derniers jours, j’ai voulu savoir ce qui nous attendait avec la réforme des retraites. Conclusion : le rapport Delevoye, c’est le coup final porté à la solidarité intergénérationnelle. J’explique pourquoi, en images.
bash -n
is a basic but useful builtin syntax linter.
If you do not use the pre-commit
Python command & hook manager (check it out, it's great!), you can define a git
pre-commit hook "manually" by putting the following in a file at .git/hooks/pre-commit
:
#!/bin/sh
# Redirect output to stderr:
exec 1>&2
echo "Executing bash native syntax linter on all modified .sh files:"
if ! git diff --cached --name-only --diff-filter=AM HEAD | grep '.sh$' | xargs -n 1 bash -n
then
echo "Error : syntax issues were detected"
exit 1
fi
Issue #5 is out !
Paged Out! is a new experimental (one article == one page) free magazine about programming (especially programming tricks!), hacking, security hacking, retro computers, modern computers, electronics, demoscene, and other similar topics.
Issue #2 includes a crazy prime Python quine ! (page 35) O.O
(English version below)
Il y a trois ans, j'évoquais sur ce blog quelques variantes pour le jeu de société Pandémie.
Voici le moment de vous en présenter deux que j'ai confectionné récement, et dont les playtests étaient suffisament amusants pour que je les mette en page, afin de les partager …
I took me some time to figure it out, so I'm sharing this here:
import hudson.EnvVars
import org.jenkinsci.plugins.workflow.steps.EnvironmentExpander
def env = EnvironmentExpander.getEffectiveEnvironment(new EnvVars(), null, steps.getContext(EnvironmentExpander.class), null, null)
def ansiColorEnabled = 'TERM' in env
1,3 million de personnes parmi les 2,7 millions qui bénéficient actuellement d’une indemnisation – sur, au total, 6 millions de personnes inscrites au Pôle emploi [verront leurs droits réduits, voire supprimés]
À partir du 1er novembre, pour pouvoir s’inscrire comme demandeur d’emploi, il faudra avoir travaillé six mois au lieu de quatre (soit désormais 910 heures, ou 130 jours).
Auparavant, il fallait avoir travaillé en moyenne un jour sur sept pour ouvrir ses premiers droits. Il faudra désormais avoir travaillé un jour sur quatre !
"The problem is, if we don’t deal with politics, politics will deal with us. We can choose to not act when people are being oppressed, but when it's our turn to be oppressed, it will be too late and there will be no one for us. You don't need to be Uyghur or a Muslim to act, you need only to be a human and have empathy for our fellow humans."
A strange, fascinating website.
Dedicated to the Serial Experiment Lain anime.
Its webdesign is beautifully weird.
Remember to manually switch the encoing to Unicode/UTF8 if the characters encoding seems broken.
At work, we needed to retrieve the full list of jobs a given Jenkins instance was hosting.
Our first solution was to use the jenkinsapi Python package:
import xml.etree.ElementTree as XmlElementTree
from jenkinsapi.jenkins import Jenkins
def get_all_jenkins_jobs(server_url):
jenkins = Jenkins(server_url, lazy=True, timeout=30,
username=os …
The hexatetraflexagon ! Awesome and easy to make !
The Open Source movement has always been focused on code. The result is a system that sadly neglects people. Many maintainers find themselves in a curious place. On one hand, we have people who regret seeing their code used for unethical purposes, but, because of the Open Source values they previously embraced, are unable to do anything except watch their code become weaponized. Others, perhaps not grasping that the gift economy has been usurped by more powerful forces, struggle to figure out how to make ends meet even as their labor creates immense value for others. We find ourselves in this position because the key Open Source values exacerbate an existing injustice: Because the OSI definition of Open Sources values the consumers of code over creators, Open Source helps concentrate power in the hands of already powerful actors at the expense of maintainers. I feel that not only could we do better, we have a moral imperative to find better development models.
The iframe
above displays some graphs I've built last week,
in order to get some insight on some GitHub projects issues & pull requests evolution.
They are directly inspired by nf-core project activity statistics.
- Accessibility Tools
- Animation Tools
- Augmented Reality
- Collaboration Tools
- Color Picker Tools
- Design Feedback Tools
- Design Handoff Tools
- Design Inspiration
- Design System Tools
- Design to Code Tools
- Design Version Control
- Development browsers
- Experience Monitoring
- Font Tools
- Gradient Tools
- Icons Tools
- Illustrations
- Information Architecture
- Logo Design
- Mockup Tools
- No Code Tools
- Pixel Art Tools
- Prototyping Tools
- Screenshot Software
- Sketching Tools
- SMM Design Tools
- Sound Design
- Stock Photos Tools
- Stock Videos
- Tools for Learning Design
- UI Design Tools
- User Flow Tools
- User Research Tools
- Visual Debugging Tools
- Wireframing Tools
- 3D Modeling Software
Une analyse claire, détaillée et visuelle des données publiques issues du grand débat national.
Le code source en Python de Myriam Begel : https://gitlab.begel.fr/myriam/grand-debat
En parallèle, l'analyse du site du gouvernement :
https://www.gouvernement.fr/on-fait-le-point-sur-la-restitution-du-grand-debat-national
Les mots en escalier : Dans une grille de 7 niveaux, vous devez trouver 6 mots, à chacun des niveaux il y a les mêmes lettres que le niveau supérieur plus une.
I met a very strange Python module loading behaviour in Pelican today :
https://github.com/getpelican/pelican/blob/3395e71/pelican/settings.py#L21
Here is some minimal code reproducing the issue. It requires 5 files :
bug_repro.py
dir_a/__init__.py
dir_a/test_data/pelicanconf.py
dir_b/__init__.py
dir_b/test_data/pelicanconf.py
bug_repro.py
contains:
import dir_a
import dir_b
dir_a/__init__.py
and dir_b/__init__.py
both contain this code:
import os
from importlib.machinery import SourceFileLoader
print(SourceFileLoader('pelicanconf', os.path.dirname(__file__) + '/test_data/pelicanconf.py').load_module().THEME)
dir_a/test_data/pelicanconf.py
contains only the line THEME = 'localized_theme'
and dir_b/test_data/pelicanconf.py
is empty.
What will produces python3.7 bug_repro.py
? 😉
Tiens, mon GPS me parle. Et que dit-il ? Du GPS au téléphone, les voix de synthèse font partie de notre vie. Nicolas Guadagno imagine un monde où elles ont pris le pouvoir.
Des mini-sketches qui me rappellent ceux de François Pérusse.
Le n°3 m'a fait mourir de rire
« Qu’est ce qui est pire : se syndiquer à la CFDT ou ne pas se syndiquer du tout ? »
Une intéressante réflexion & enquête Laura Raim en podcast de 30min
A partir d’une anecdote, d’un instant, d’une enquête, le podcast d’Elise Costa jure de raconter, un mercredi sur deux, «sans haine et sans crainte» l’inhumain en chacun et l’humain en tous
Un podcast que je recommande ! En particulier l'épisode « L'avocate du diable » qui est fascinant, bien qu'un peu noir.