Compare commits

...

7 Commits

Author SHA1 Message Date
Julien Palard deb9a422b2
Use filetime_from_git. 2023-01-25 17:34:53 +01:00
Julien Palard c4db791044
Translating... 2023-01-25 09:54:53 +01:00
Julien Palard b8824774ce
Translating... 2023-01-25 09:50:14 +01:00
Julien Palard 8e886174c1
Translating... 2023-01-24 16:22:48 +01:00
Julien Palard 007b693bc1
Translating... 2023-01-24 16:04:59 +01:00
Julien Palard b20ceb9036
It's the home since a long time. 2023-01-24 14:57:38 +01:00
Julien Palard f3d720ede6
Woops, a test. 2023-01-24 14:49:37 +01:00
59 changed files with 339 additions and 128 deletions

View File

@ -1,6 +1,5 @@
---
Title: How I use bash
Date: 2021-06-04 06:20:00
Summary: This is how I use bash, as I presented it at « En attendant la PyCon Fr ».
---

View File

@ -1,6 +1,5 @@
---
Title: How to install any distrib on a Gandi VPS
Date: 2021-11-18 08:51:00
Summary: I needed to install BBB, which requires Ubuntu 18.0.4, but they only had Ubuntu 20.0.4...
---

View File

@ -1,6 +1,5 @@
---
Title: HackInScience hits 10k solved exercices per month!
Date: 2021-06-04 18:16:00
Summary: HackInScience is my litlle side-project to teach Python at scale. Last month, ~1000 persons solved ~10k exercices on it.
---

View File

@ -1,6 +1,5 @@
---
Title: Finding a lost iPhone owner, the hard way
Date: 2022-06-07 11:39:00
Summary: My parents found an iPhone, couldn't locate its owner. What I tried next.
---

View File

@ -1,6 +1,5 @@
---
Title: Releasing pipe v2.0
Date: 2022-05-23 09:31:00
Summary: Introducing partially parametrized pipes!
---

View File

@ -0,0 +1,89 @@
Lang: en
Slug: black-screen-at-boot-on-my-pinephone
Summary: My phone was no longer booting…
Title: Black screen at boot on my PinePhone
OK so today my [PinePhone](https://fr.wikipedia.org/wiki/PinePhone)
does no longer boot, it goes like this:
- Press power button to boot it,
- type rootfs passphrase (I use full disk encryption),
- Mobian "spash screen" for a short time,
- black screen, and that's it.
My first bet was a graphical issue due to a recent upgrade ("sweet"
memories of Ubuntu failing to start its X server after almost any
upgrade...) so I try to ssh to it first... "no route to host", damned!
It don't have its IP yet so it failed before network setup.
But it's a PinePhone, and it runs
[Mobian](https://mobian-project.org/), a Debian for mobiles, so I'm
not in the dark, let's read the boot logs first before going down the
rabbit hole of connecting a UART on the jack port to debug it over
serial:
- Press power button,
- type rootfs passphrase again,
- press a volume button to get rid of the Mobian splash to see logs
```text
The root filesystem on /dev/mapper/calamares_crypt requires a manual fsck
```
OK!
Looks easy, but without a keyboard? Let's mount the
[eMMC](https://en.wikipedia.org/wiki/MultiMediaCard#eMMC) over USB!
As my phone boots using [Tow-Boot](https://tow-boot.org/) it's easy:
- Shut it down (~8s on the power button).
- Plug it to laptop with a USB-C cable.
- Make it enter "USB Mass Storage mode" (by holding the
volume up button at startup before and during the second
vibration).
- Instantly my laptop sees it and udisks auto mounts it, gnome asks
for main partition passphrase to mount it too, nice!
- Boom, it disappears... and on `journalctl -e` I see `usb 1-5: device
descriptor read/64, error -71` ... `I/O error, dev sda` ...
At this point I think there's just two options: either my USB-C cable
was badly plugged, or my eMMC is dead. I vote for the USB-C cable
issue and try again.
- Rebooting phone in USB mass storage mode again, but this time
without giving my passphrase to avoid automount: it
needs an fsck anyway.
- I can browse `/media/mdk/boot` and see no read error in `sudo journalctl -f`.
- `sudo fdisk -l /dev/sda` sees ~30GiB and both partitions.
I use encryption so to fsck the root partition, I have to use `cryptsetup` first:
```bash
$ sudo cryptsetup open /dev/sda2 mobian # it asks for my passphrase
$ file /dev/mapper/mobian # That's the unencrypted view of my partition
/dev/mapper/mobian: symbolic link to ../dm-0
$ sudo fdisk -l /dev/mapper/mobian # Just out of curiosity
Disk /dev/mapper/mobian : 28.47 GiB, 30574379008 octets, 59715584 secteurs
$ sudo fsck /dev/mapper/mobian # Running fsck manually!
fsck from util-linux 2.38.1
e2fsck 1.46.6-rc1 (12-Sep-2022)
root contains a file system with errors, check forced.
[many many errors]
$ sudo mount /dev/mapper/mobian /mnt # To check if it works
$ ls /mnt # Yeah!
bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
$ sudo umount /mnt
$ sudo cryptsetup close mobian
```
It looks OK, let's reboot the phone...
It works!!!
I know, your grandma would not be able to do fix it that way (mine
neither), but I'm still very happy to be able to fix my phone myself
when it has issues.
What would people do when a phone does no longer boot? Buy another?

View File

@ -1,90 +1,91 @@
---
Title: Black screen at boot on my PinePhone
Date: 2023-01-13 09:33:00
Summary: My phone was no longer booting…
---
Lang: fr
Slug: black-screen-at-boot-on-my-pinephone
Summary: OK, aujourdhui mon [PinePhone](https://fr.wikipedia.org/wiki/PinePhone) ne boot plus.
Title: Écran noir au démarrage de mon PinePhone
OK so today my [PinePhone](https://fr.wikipedia.org/wiki/PinePhone)
does no longer boot, it goes like this:
OK, aujourdhui mon [PinePhone](https://fr.wikipedia.org/wiki/PinePhone)
ne boot plus. Ça me fait ça :
- Press power button to boot it,
- type rootfs passphrase (I use full disk encryption),
- Mobian "spash screen" for a short time,
- black screen, and that's it.
- Jappuie sur le bouton pour le démarrer,
- je lui donne la passephrase pour déchiffrer la partition,
- Jai le joli logo « Mobian » pendant quelques instants,
- Et boom, écran noir, terminé.
My first bet was a graphical issue due to a recent upgrade ("sweet"
memories of Ubuntu failing to start its X server after almost any
upgrade...) so I try to ssh to it first... "no route to host", damned!
It don't have its IP yet so it failed before network setup.
Je parie dabord que cest un problème graphique dû à une mise à jour
récente. Ça me rappelle lépoque où jai cru bon de mettre une Ubuntu
sur la machine de ma maman : à chaque mise à jour le serveur X ne
démarrait plus. Vous vous souvenez de la blague « Cest quoi un Ubuntu
Server ? Cest un Ubuntu Desktop avec le serveur X qui ne démarre
pas ! » ?
But it's a PinePhone, and it runs
[Mobian](https://mobian-project.org/), a Debian for mobiles, so I'm
not in the dark, let's read the boot logs first before going down the
rabbit hole of connecting a UART on the jack port to debug it over
serial:
Si mon pari est bon, jai juste à me `ssh`… « `no route to host` », damned !
- Press power button,
- type rootfs passphrase again,
- press a volume button to get rid of the Mobian splash to see logs
Donc il plante **avant** davoir configuré son interface réseau.
Mais cest un PinePhone, avec [Mobian](https://mobian-project.org/)
(une Debian avec deux-trois patch pour mobiles), donc je sais que je
vais men sortir, commencons simplement par lire les logs avant de
suivre le lapin blanc et de plonger au fond du terrier de
lUART-over-jack…
- Jappuie sur le bouton « power » pour le démarrer,
- je lui donne sa passephrase à nouveau,
- et jappuie sur un bouton de « volume » : comme sur une Debian, lappui dune touche chasse le « splash screen » et laisse lire les logs :
```text
The root filesystem on /dev/mapper/calamares_crypt requires a manual fsck
```
OK!
OK ! Facile. Mais sans clavier ?
Looks easy, but without a keyboard? Let's mount the
[eMMC](https://en.wikipedia.org/wiki/MultiMediaCard#eMMC) over USB!
Cest le moment de monter l[eMMC](https://en.wikipedia.org/wiki/MultiMediaCard#eMMC) via USB !
As my phone boots using [Tow-Boot](https://tow-boot.org/) it's easy:
Mon téléphone démarre avec [Tow-Boot](https://tow-boot.org/), exposer la MMC via USB cest facile :
- Shut it down (~8s on the power button).
- Plug it to laptop with a USB-C cable.
- Make it enter "USB Mass Storage mode" (by holding the
volume up button at startup before and during the second
vibration).
- Instantly my laptop sees it and udisks auto mounts it, gnome asks
for main partition passphrase to mount it too, nice!
- Boom, it disappears... and on `journalctl -e` I see `usb 1-5: device
descriptor read/64, error -71` ... `I/O error, dev sda` ...
- Je léteins (~8s sur le bouton power).
- Je le branche à mon ordinateur portable avec un câble USB-C.
- Je le démarre en mode « USB Mass Storage » (en maintenant « volume up » enfoncé au démarrage jusquà la 2 vibration).
- Instantanément mon ordinateur portable détecte un nouveau périphérique USB, `udisks` veut le monter, `Gnome` me demande la passephrase, `udisks` monte les deux partitions : que jaime quand tout roule !
- Boom, tout disparaît. Un coup dœil à `journalctl -e` : `usb 1-5: device
descriptor read/64, error -71` ... `I/O error, dev sda`
At this point I think there's just two options: either my USB-C cable
was badly plugged, or my eMMC is dead. I vote for the USB-C cable
issue and try again.
Donc là soit mon câble USB-C est mal branché ou mal en point, soit ma
MMC est morte. Je vais parier pour le câble (cest plus facile à résoudre).
- Rebooting phone in USB mass storage mode again, but this time
without giving my passphrase to avoid automount: it
needs an fsck anyway.
- I can browse `/media/mdk/boot` and see no read error in `sudo journalctl -f`.
- `sudo fdisk -l /dev/sda` sees ~30GiB and both partitions.
- Redémarrage du téléphonne en mode « USB Mass Storage »
- Je ne donne pas la passephrase à Gnome cette fois, de toutes façons on a besoin de lui passer un `fsck`, pas de le monter.
- Un petit `ls` dans `/media/mdk/boot`, pas de `read error` dans `sudo journalctl -f`, rassurant.
- `sudo fdisk -l /dev/sda` mannonce ~30GiB et les deux paritions, rassurant.
I use encryption so to fsck the root partition, I have to use `cryptsetup` first:
Vu que la partition est chiffrée jai besoin de la déchiffrer (sans la
monter) **avant** de passer le **fsck**, à coup de `cryptsetup` :
```bash
$ sudo cryptsetup open /dev/sda2 mobian # it asks for my passphrase
$ file /dev/mapper/mobian # That's the unencrypted view of my partition
$ sudo cryptsetup open /dev/sda2 mobian # ça me demande ma passphrase
$ file /dev/mapper/mobian # Ça cest la « vue » déchiffrée de la partition
/dev/mapper/mobian: symbolic link to ../dm-0
$ sudo fdisk -l /dev/mapper/mobian # Just out of curiosity
$ sudo fdisk -l /dev/mapper/mobian # Je suis curieux, et jai besoin dêtre rassuré
Disk /dev/mapper/mobian : 28.47 GiB, 30574379008 octets, 59715584 secteurs
$ sudo fsck /dev/mapper/mobian # Running fsck manually!
$ sudo fsck /dev/mapper/mobian # On ma dit dexécuter `fsck` manuellement, je le fais.
fsck from util-linux 2.38.1
e2fsck 1.46.6-rc1 (12-Sep-2022)
root contains a file system with errors, check forced.
[many many errors]
$ sudo mount /dev/mapper/mobian /mnt # To check if it works
$ ls /mnt # Yeah!
[plein plein plein derreurs]
$ sudo mount /dev/mapper/mobian /mnt # Juste pour me rassurer
$ ls /mnt # Youpi !
bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
$ sudo umount /mnt
$ sudo cryptsetup close mobian
```
It looks OK, let's reboot the phone...
Ça me semble bon, je reboot le téléphone…
It works!!!
Ça marche !!!
I know, your grandma would not be able to do fix it that way (mine
neither), but I'm still very happy to be able to fix my phone myself
when it has issues.
Je sais, je sais, ta grand-mère naurait pas sû réparer le sien (ma
grand-mère non plus), mais je reste très satisfait dêtre capable de
réparer le mien moi-même : cest une bonne première étape.
What would people do when a phone does no longer boot? Buy another?
Si javais eu un téléphonne dun GAFA, quelles auraient été mes
solutions ? En acheter un autre.

View File

@ -1,6 +1,5 @@
---
Title: A JustInTime class
Date: 2008-08-30 00:10:55
---
I discovered in my code a redundant pattern :

View File

@ -1,6 +1,5 @@
---
Title: ashttp: vt100 screen scraping exported over HTTP
Date: 2011-08-27 15:08:21
---
Originally written for

View File

@ -1,5 +1,5 @@
Lang: en
Title: Python coroutines with async and await
Date: 2016-06-05
This is a short introduction of the basic vocabulary and knowledge
needed to start with `async` and `await`, we'll go from "scratch", but

View File

@ -1,5 +1,4 @@
Title: Atelier de traduction de la doc de Python
Date: 2017-12-09
C'est parti, j'ai le GO de la [PSF](https://www.python.org/psf/) et de
[NUMA Paris](https://paris.numa.co/), le `9 janvier 2018` on va faire

View File

@ -1,5 +1,4 @@
Title: Automating GNU screen startup
Date: 2011-11-18 00:13:58
At work I use GNU screen with one window per server (ssh connection),
and when I loose my screen, it takes minutes to rebuild the naming and

View File

@ -1,5 +1,4 @@
Title: [Bashism] How to generate random number without $RANDOM ?
Date: 2011-04-07 14:00:55
There is a common bashism, that is to use `$RANDOM`. Typically you'll
have to remove bashism while rewriting your scripts for dash or sh.

View File

@ -1,5 +1,4 @@
Title: C# Using alias directives
Date: 2009-03-25 11:49:50
Just found in section 9.4.1 of the C# language specification: The
`using` keyword can be used to alias a namespace or a type name:

View File

@ -1,5 +1,4 @@
Title: How to check if a string is valid utf-8
Date: 2012-05-17 15:09:44
Every day (at least) I'm facing a problem: how to check if a string is
valid in utf-8 ? So I wrote [a little C program, that I put on my

View File

@ -1,5 +1,4 @@
Title: Cisco CheatSheet
Date: 2008-04-03
# Misc

View File

@ -1,5 +1,4 @@
Title: Combinatory logic from scratch
Date: 2008-11-28 01:56:32
Cause it's sooooo sexy, let's speak about Combinatory Logic!

View File

@ -1,5 +1,4 @@
Title: Compose Key vs Dead Key
Date: 2017-07-12
L'AFNOR à lancé autour de juin 2017 un appel à commentaires à propos
de [la normalisation du clavier

View File

@ -1,5 +1,4 @@
Title: Covariance and Contravariance in C#3
Date: 2009-03-09 21:19:51
A short introduction to Covariance and Contravariance in *C# 3* preparing
you to an article about that in *C# 4*. So what is covariance?

View File

@ -1,5 +1,4 @@
Title: echo and backslash-escaped caracters / new lines: how to write portable scripts ?
Date: 2011-04-08 13:59:45
While writing shell scripts you are using a lot of `echo` but did you
think about portability of this simple statement? Can you say what will

View File

@ -1,5 +1,4 @@
Title: Emacs: replace tabs with spaces
Date: 2011-05-06 18:27:59
When you want to replace tab with spaces or vice versa don't use `M-%`
*(query-replace)* but `M-x tabify` or `M-x untabify`. They work on the

View File

@ -1,5 +1,4 @@
Title: emacs: standard input is not a TTY
Date: 2011-12-11 13:54:02
Did you ever tried something like :

View File

@ -1,5 +1,4 @@
Title: emacs: Highlighting errors for c, python, and other languages
Date: 2011-06-11 13:54:12
**This is a deprecated article about flymake, you should check for

View File

@ -1,5 +1,4 @@
Title: Numeric arguments in emacs
Date: 2011-05-02 15:47:31
I'm starting an 'emacs trick of the day' sequence with:

View File

@ -1,5 +1,4 @@
Title: Searching and replacing in emacs
Date: 2011-05-03 19:16:16
Day two of my serie about emacs, about searching and replacing.

View File

@ -1,5 +1,4 @@
Title: Exclude directories from recursive grep
Date: 2008-11-16 16:20:13
How often are you using grep in subversionned folders like that:

View File

@ -1,6 +1,5 @@
---
Title: How APT does its fancy progress bar
Date: 2021-10-13 10:12:00
Summary: It uses good old VT100 instructions.
---

View File

@ -1,5 +1,4 @@
Title: Howto invoke an event via reflection
Date: 2008-08-29 23:14:53
Why this article ? Because of this note found on the MSDN's `EventInfo`

View File

@ -1,5 +1,4 @@
Title: Integrating google bookmarks in google chrome
Date: 2009-04-16 17:56:18
As every developer, you have 42 computers, 8 browsers, and spend a lot

View File

@ -1,5 +1,4 @@
Title: Javascript Foncteur
Date: 2008-05-08 12:43:30
I just discovered, this morning, how to create a Visitor in Javascript:

View File

@ -1,5 +1,4 @@
Title: Lazy Loading in php with spl_autload
Date: 2008-11-16 20:40:44
Today, a very short post about the lazy loading in PHP: `spl_autoload`.
I'll not expose everything about it here, cause it's already done here:

View File

@ -1,5 +1,4 @@
Title: nfsmount: rpc failed: 2
Date: 2011-04-18 14:45:03
For those, here on the internet, asking themselves what is this fscking

View File

@ -1,5 +1,4 @@
Title: Pipe: Infix syntax for Python
Date: 2011-03-28 20:18:24
Pipe is a Python module enabling infix syntax in Python. For those
asking "Why ?" let's take an example: Compare the readability of the

View File

@ -1,5 +1,4 @@
Title: Post data lost on 301 Moved Permanently
Date: 2009-05-15 12:50:05
What the hell with 301 Moved Permanently HTTP header!? I'll take an
exemple to explain my ugly problem, take, a (very ugly cause it's PHP)

View File

@ -1,5 +1,4 @@
Title: La PyCon Fr 2018 approche !
Date: 2018-06-10
La [PyCON Fr 2018](https://www.pycon.fr/2018/) c'est dans 4 mois, mine
de rien c'est pas si loin, c'est le moment de l'ajouter sur son

View File

@ -1,5 +1,4 @@
Title: Python Documentation Translation
Date: 2017-05-29
This is an overview of what is done, what we're doing, and what's
needs work about the translation of Python documentation.

View File

@ -1,5 +1,4 @@
Title: Python: Introducing ppipe : Parallel Pipe
Date: 2011-04-15 14:07:47
> /!\ this was highly experimental code written in 2011.
> Today you should _NOT_ use it, just look at it if the subject amuses you.

View File

@ -1,5 +1,4 @@
Title: Python Translation Workshop 3
Date: 2018-09-12
I'm organizing a 3rd workshop to translate the Python Documentation on 2018-09-20!!!

View File

@ -1,5 +1,4 @@
Title: Python: Consulting PEPs from command line, while being offline
Date: 2011-04-13 14:20:11
One day I wished I could read PEPs in the tube on my laptop... so I
searched for a convenient way to do so, and I didn't found ... So I

View File

@ -1,6 +1,5 @@
---
Title: Reversing a coffee machine key
Date: 2021-05-07 12:12:55
Summary: At $DAYJOB, a long time ago, we had big a coffee machine allowing us to store money in NFC keys…
---

View File

@ -1,5 +1,4 @@
Title: squid: (101) Network is unreachable when DNS returns IPv6
Date: 2011-06-24 17:32:38
If you have a Squid proxy configured on a machine that have no IPv6
connectivity, and try to reach an IPv6 compatible site, you squid will

View File

@ -1,5 +1,4 @@
Title: The art of Events
Date: 2008-08-29 23:32:55
The art of using events to build more independent classes. /\* Found a
better example \*/ Imagine you have a class A and a class B. A builds B,

View File

@ -1,6 +1,5 @@
---
Title: The ?? operator aka the Null Coalescing Operator
Date: 2008-11-23 18:01:40
---
If are familiar to the use of ternary operators, you must have

View File

@ -1,6 +1,5 @@
---
Title: YAUIB : Yet another useless IRC Bot !
Date: 2011-03-27 23:40:58
---
After 2 years of... non blogging... I'm back! This time I stopped C\#

View File

@ -1,5 +0,0 @@
Title: About Julien
Date: 2008-08-14 19:25:52
status: hidden
Just check out [mdk.fr](mdk.fr)!

View File

@ -1,5 +1,4 @@
Title: Bookmarks
Date: 2021-05-05 15:21:00
# Internet & HTTP

View File

@ -0,0 +1,10 @@
Title: Trainings
Slug: formations
Lang: en
Python developer since 2009, Python trainer since 2015, I teach the following trainings:
- [Python introduction]({filename}/pages/python-initiation.md)
- [Advanced Python]({filename}/pages/python-avancé.md)
Interested? Shoot me an email: [julien@palard.fr](mailto:julien@palard.fr).

View File

@ -1,5 +1,6 @@
Title: Formations
Date: 2023-01-17 15:41:00
Slug: formations
Lang: fr
Développeur Python depuis 2009, formateur Python depuis 2015, je
propose ces formations :
@ -7,4 +8,4 @@ propose ces formations :
- [Python initiation]({filename}/pages/python-initiation.md)
- [Python avancé]({filename}/pages/python-avancé.md)
Intéressés ? Contactez-moi par email : julien at palard.fr.
Intéressés ? Contactez-moi par email : [julien@palard.fr](mailto:julien@palard.fr).

View File

@ -1,5 +1,4 @@
Title: GPG
Date: 2021-04-27 21:26:00
# My GPG keys

View File

@ -1,5 +1,4 @@
Title: Julien Palard
Date: 2016-05-28
description: Julien Palard - mdk.fr
status: hidden
lang: en

View File

@ -1,5 +1,4 @@
Title: Julien Palard
Date: 2016-05-28
description: Julien Palard - mdk.fr
status: hidden
lang: fr

View File

@ -0,0 +1,57 @@
Lang: en
Slug: python-avance
Title: Advanced Python
That's the last of my two Python trainings. While the [introduction
training]({filename}/pages/python-initiation.md) covers using classes
and libraries to create simple programs, this training focuses on the
art of creating classes and libraries to build reusable chunks in
arbitrary complex software.
## Goals
At the end of this training, one is able to produce *readable*,
*maintainable*, and *tested* code on any kind of project.
Focus is set on sharing and reusing code:
- Creating libraries (modules, packages).
- Packaging and distributing libraries.
- Managing dependencies in libraries and in projects.
- Tests and documentation.
## Prerequisites
The pre-requisite to follow this training is either to have followed
the [Python Introduction]({filename}/pages/python-initiation.md) one,
or have an equivalent level, that is: be able to read and modify
Python code, be able to write Python code to solve a given problem
from scratch.
## Content
- Python protocols (iteration protocol, any "dunder", …).
- Classes and their instances (where we speak about the MRO and `super()`).
- The descriptor protocol.
- The *garbage collector*.
- IEEE 754 *floats*, knowing their limits.
- Create, raise, and handle exception. `try`'s `else` and `finally`.
- Context managers.
- Decorators.
- List comprehensions.
- The Walrus Operator (`:=`).
- String encodings.
- Packaging using `pyproject.toml`, `python -m build`, `twine`, …
- Asynchronous Python with `async` and `await`.
## Duration
This training best spam over five days, but I'm acustomed to give a 3 day version of it too.
## Contact
To know more, please shoot me an email at [julien@palard.fr](mailto:julien@palard.fr).

View File

@ -1,5 +1,6 @@
Lang: fr
Slug: python-avance
Title: Python avancé
Date: 2023-01-17 15:41:00
Cest la seconde de mes deux formations Python. Alors que la
[formation *initiation*]({filename}/pages/python-initiation.md)

View File

@ -0,0 +1,42 @@
Lang: en
Slug: python-initiation
Title: Python introduction
This is the first one of my two Python trainings, it has no prerequisites.
## Goals
At the end for this trainings, trainees are know the Python basics and
are able to write simple software, maintain it, and modify existing
software.
- Implement a simple program resolving a well defined task.
- Read, understand, and modify Python code written by someone else.
- Redact tests.
## Content
- Builtin types (`bool`, `int`, `float`, `str`, …)
- Operators
- Variables
- Functions
- Instructions (`for`, `if`, `while`, …)
- Methods
- List comprehensions
- Slices
- Classes
- `pip` and `venvs`
- Packaging Python
- Good habits
## Duration
This training spans on three days, ideally.
## Contact
To know more, please shoot me an email at [julien@palard.fr](mailto:julien@palard.fr).

View File

@ -1,5 +1,6 @@
Title: Python initiation
Date: 2023-01-17 15:41:00
Slug: python-initiation
Lang: fr
Cest la première des deux formations Python que je propose,
accessible sans prérequis.

55
content/pages/talks.en.md Normal file
View File

@ -0,0 +1,55 @@
Title: Talks
Slug: talks
Lang: en
- 2022-11-26:
[Campus du Libre](https://www.campus-du-libre.org/): HackInScience demo
[video (fr)](https://bbb.afpy.org/playback/presentation/2.3/62dfb87e2dfcc5d2947bceb86a2324d10dfdd55b-1669457837244),
[slides (fr)](https://mdk.fr/hkis-au-campus-du-libre).
- 2021-04-15:
[AFPy](https://discuss.afpy.org/t/en-attendant-la-pyconfr-du-15-avril-2021/222/3): Bash — tips and tricks
[video (fr)](https://bbb.afpy.org/playback/presentation/2.0/playback.html?meetingId=fb67608c847ace007f60e5b9fa6917ff7040b495-1618502029253).
- 2021-01-13:
[AFPy](https://discuss.afpy.org/t/calendrier-de-lafpy/64/12): Packaging without setup.py
[slides (fr)](https://julienpalard.frama.io/atelier-packaging/).
- 2020-12-09:
[AFPy](https://discuss.afpy.org/t/calendrier-de-lafpy/64/12): Python Performance Workshop
[slides (fr)](https://julienpalard.frama.io/atelier-perf/perf.html),
[video (fr)](https://pyvideo.org/en-attendant-la-pyconfr-2020-2021/performances-de-python.html).
- 2019-06-13:
[Write The Docs Paris](https://www.meetup.com/Write-the-Docs-Paris/): Translating the Python documentation
[slides](https://julienpalard.frama.io/write-the-docs-paris-19/),
[video (fr)](https://mzl.la/write-the-docs-2019-06-13).
- 2019-05-22:
[Paris.py #19](https://www.meetup.com/Paris-py-Python-Django-friends/events/260875730/):
Feedback about 2019 US PyCon
[slides (fr)](https://julienpalard.frama.io/paris.py-19/).
- 2018-12-18:
[Paris.py #16](https://www.meetup.com/Paris-py-Python-Django-friends/events/250063967/):
hackinscience.org: How we use Python to teach Python.
[slides](https://hackinscience.frama.io/paris.py-16/).
- 2018-10-06:
[PyCon FR 2018](https://www.pycon.fr/2018/):
The emergence of consensus in the Python community.
[video](https://www.youtube.com/watch?v=Zb-LhOLEPg8)
- 2018-01-14:
[Paris.py #14](https://www.meetup.com/Paris-py-Python-Django-friends/events/245495073/):
`async` et `await` sans asyncio.
[slides](https://mdk.fr/asyncio/), [video (fr)](https://www.youtube.com/watch?v=_LpJ7X8hY-Y).
- 2017-04-06:
[Paris.py #13](https://www.meetup.com/Paris-py-Python-Django-friends/events/238318089/):
Traduction de la documentation de Python en français.
- 2016-10-16:
[PyCon FR 2016](https://www.pycon.fr/2016/pages/programme.html#Traduction%20de%20la%20doc%20de%20Python%20et%20l'internationalisation):
La traduction de la documentation de Python et l'internationalisation.
[video (fr)](https://www.pycon.fr/2016/videos/traduction-de-la-doc-de-python-et-linternationalisation.html).

View File

@ -1,8 +1,6 @@
Title: Talks
Date: 2008-08-14 19:25:52
status: hidden
## Past
Title: Conférences
Slug: talks
Lang: fr
- 2022-11-26:
[Campus du Libre](https://www.campus-du-libre.org/): Démo d'HackInScience
@ -25,7 +23,7 @@ status: hidden
- 2019-06-13:
[Write The Docs Paris](https://www.meetup.com/Write-the-Docs-Paris/): La traduction de la
documentation de Python.
[slides](https://julienpalard.frama.io/write-the-docs-paris-19/),
[slides (en)](https://julienpalard.frama.io/write-the-docs-paris-19/),
[video](https://mzl.la/write-the-docs-2019-06-13).
- 2019-05-22:
@ -35,18 +33,18 @@ status: hidden
- 2018-12-18:
[Paris.py #16](https://www.meetup.com/Paris-py-Python-Django-friends/events/250063967/):
hackinscience.org: Comment on utilise Python pour enseigner Python.
[slides](https://hackinscience.frama.io/paris.py-16/).
hackinscience.org: Comment enseigner Python avec Python ?
[slides (en)](https://hackinscience.frama.io/paris.py-16/).
- 2018-10-06:
[PyCon FR 2018](https://www.pycon.fr/2018/):
The emergence of consensus in the Python community.
[video](https://www.youtube.com/watch?v=Zb-LhOLEPg8)
[video (en)](https://www.youtube.com/watch?v=Zb-LhOLEPg8)
- 2018-01-14:
[Paris.py #14](https://www.meetup.com/Paris-py-Python-Django-friends/events/245495073/):
`async` et `await` sans asyncio.
[slides](https://mdk.fr/asyncio/), [video](https://www.youtube.com/watch?v=_LpJ7X8hY-Y).
[slides (en)](https://mdk.fr/asyncio/), [video](https://www.youtube.com/watch?v=_LpJ7X8hY-Y).
- 2017-04-06:
[Paris.py #13](https://www.meetup.com/Paris-py-Python-Django-friends/events/238318089/):

View File

@ -4,7 +4,7 @@ from datetime import date
AUTHOR = "Julien Palard"
SITENAME = "mdk.fr"
SITETITLE = "Julien Palard"
SITESUBTITLE = "Formateur et mentor Python"
SITESUBTITLE = "Développeur et formateur Python"
SITEURL = ""
SITELOGO = "/images/julien.jpg"
SITEDESCRIPTION = "Julien Palard, formateur Python"
@ -38,7 +38,7 @@ SOCIAL = (
# Path to Plugins
PLUGIN_PATHS = ['pelican-plugins']
# Enable i18n plugin, probably you already have some others here.
PLUGINS = ['i18n_subsites']
PLUGINS = ['i18n_subsites', 'filetime_from_git']
# Enable Jinja2 i18n extension used to parse translations.
JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
I18N_TEMPLATES_LANG = "en"
@ -52,11 +52,16 @@ DEFAULT_LANG = "fr_FR"
I18N_SUBSITES = {
'en': {
'SITENAME': 'English Julien Palard',
'LOCALE': 'en_US',
'THEME_STATIC_DIR': '../theme'
}
'THEME_STATIC_DIR': '../theme',
'SITESUBTITLE': "Freelance Python Programmer and Trainer",
'MENUITEMS': (
("Trainings", "/en/pages/formations.html"),
("Talks", "/en/pages/talks.html"),
("Articles", "/en/blog/"),
)
}
}
PATH = "content"

View File

@ -1,2 +1,3 @@
pelican
markdown
gitpython