Vue lecture

Hypermodern Python

Une série de 6 articles présentant les outils à mettre en place pour le dev Python en 2020. Au programme:

  • pyenv et Poetry pour la version python et les dépendances
  • click pour la cli
  • requests pour les calls HTTP
  • pytest, coverage et nox pour les tests units
  • black, flake8 et pre-commit pour le code linting
  • mypy pour le static typing (pas utilisé encore)
  • sphinx et readthedocs pour la doc
  • github actions pour le ci/cd

Beaucoup de bonnes pratiques et de plugins flake8 pour automatiser un max de checks...

La série d'article est aussi accompagnée d'un repo qui met tout en pratique: https://github.com/cjolowicz/hypermodern-python


Permalink
  •  

Solved: Stuck in Full Screen - The Spotify Community

Si Spotify se retrouve bloqué en plein écran sous linux, éditer le fichier ~/.config/spotify/prefs ou (~/snap/spotify/current/.config/spotify/prefs) et supprimer les lignes app.window.position.height et app.window.position.width.


Permalink
  •  

Tips for debugging with print() - Adam Johnson

Quelques tips pour debugger du code python avec print(), notamment:

  • Debug variables with f-strings and =: print(f"{myvar=}")
  • Use locals() to debug all local variables: print(locals())
  • Use vars() to debug all of an object’s attributes: print(vars(myobject))

Permalink
  •  

Snyk Open Source Advisor | Snyk

Snyk Advisor affiche un "Package Health Score" global et des scores de popularité, maintenance et sécurité pour les packages PyPI, npm et images DockerHub.

Utile pour comparer des librairies/images Docker et choisir laquelle utiliser.


Permalink
  •  

Issues Installing Ubuntu Packages | Packer by HashiCorp

Lors du provisioning d'une image Packer Ubuntu, l'installation de packages échoue parfois avec l'erreur Package 'XXX' has no installation candidate car le setup cloud-init n'est pas terminé.

La doc Packer recommande d'ajouter la step suivante:

{
    "type": "shell",  
    "inline": [
        "while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done"
    ]
}

Il est aussi possible d'utiliser /usr/bin/cloud-init status --wait (hashicorp/packer#2639).


Permalink
  •  

Merge Chance

Un site qui permet de connaître le pourcentage de PRs mergées pour un repo GitHub donné.


Permalink
  •  

asdf - An extendable version manager

asdf est un gestionnaire de version universel qui peut remplacer pyenv, rbenv, rvm, sdkman pour gérer les versions de python, ruby, java et bien d'autres languages, mais aussi les versions d'outils comme terrafrom, packer, kubectl...


Permalink
  •  

Compress a PDF in Preview on Mac - Apple Support

Pratique pour compresser les PDF lorsqu'on doit envoyer des documents par mail aux administrations mais que celles-ci ont des limites à 10Mb

To save storage space, you can compress a PDF in Preview.
Note: When compressed, the PDF may be of lower quality than the original.
In the Preview app on your Mac, open the PDF, then choose File > Export.
Click the Quartz Filter pop-up menu, then choose Reduce File Size.


Permalink
  •  

Elastic Stack on Kubernetes 1.15 using Helm v3 - ITNEXT

Un super tuto pour déployer et utiliser Elasticsearch, Kibana et Metricbeat sur Kubernetes à l'aide des Helm charts Elastic officiels.

Attention, contrairement a ce qui était mentionné à l'origine dans cet article, les Helm charts Elastic be sont pas encore officiellement supporté avec Helm v3. L'utilisation de Helm v2 est donc recommandée.


Permalink
  •  

10 tips for reviewing code you don't like - Red Hat Developer

Quelques conseils pour faire des reviews constructives:

  1. Rephrase your objection as a question
  2. Avoid hyperbole
  3. Keep snide comments to yourself
  4. Engage positively
  5. Remember that not everybody’s experience is identical to yours
  6. Don’t diminish the complexity of something that’s not obvious
  7. Be respectful
  8. Manage expectations (and your time)
  9. Say please
  10. Start a conversation

Permalink
  •  

kubenav

Une application mobile pour gérer ses clusters k8s depuis son smartphone


Permalink
  •  

sysadvent: Day 18 - Generating Compliance as Code for Terraform with InSpec-Iggy

InSpec-Iggy permet de générer des règles de compliances InSpec pour les cloud AWS, Azure et GCP à partir de tfstate Terraform.

Il est possible de générer des règles de compliances incluant le tfstate Terraform ou l'excluant. Ce derniers cas est intéressant pour vérifier que rien n'est provisionné dans le cloud en dehors de Terraform.


Permalink
  •  

Config Connector bridges Kubernetes, GCP resources | Google Cloud Blog

Un ensemble de CRD qui permettent de créer des ressources GCP via des templates kubernetes.

exemple:

apiVersion: sql.cnrm.cloud.google.com/v1beta1
kind: SQLInstance
metadata:
  name: my-sql-instance
  labels:
   cost-center: "cc9"
spec:
  databaseVersion: MYSQL_5_7
  region: us-central1
  settings:
    tier: db-f1-micro

Permalink
  •  

Installing Multiple Versions of Terraform with Homebrew

Procedure pour installer differentes versions d'un logiciel avec brew:

$ git clone git@github.com:Homebrew/homebrew-core.git
$ cd homebrew-core
$ git log master -- Formula/terraform.rb
# retrouver le commit de la version qu'on souhaite installer
$ git checkout <commitid>
$ cd Formula
$ brew unpin terraform
$ brew unlink terraform
$ brew install terraform.rb
$ brew pin terraform
$ brew switch terraform <version>

Pour gérer les versions de Terraform, je préfère utiliser tfenv, mais la procédure est valable pour n'importe quel logiciel installable avec brew.


Permalink
  •  

How to Tidy Up Your Merge Requests With Git - DZone Open Source

Comment utiliser git commit --fixup, git commit --amend et git rebase -i --autosquash pour avoir un historique de commits clean avant de soumettre une PR.

Attention, contrairement a l'exemple de l'article, il est fortement déconseillé d'utiliser ces commandes sur la branche master ou sur une branche sur laquelle on est pas le seul a travailler si l'on a déjà "pushé" les commits. Par ailleurs , Il vaut mieux utiliser git push --force-with-lease.


Permalink
  •  

Keybase SSH

Keybase peut gérer les authentifications SSH par Certificate Authorities. Une fois la clé publique de la CA déployée sur un serveur, la commande kssh permet de se connecter en SSH a un serveur en générant dynamiquement une clé SSH temporaire signée par la CA.

La gestion des accès de fait en fonction des teams keybase de l'utilisateur.


Permalink
  •  

Saving Time With Multiple Working Trees in Git - Statuscode - Medium

git worktree permet de travailler sur une branche d'un repo dans un répertoire de travail dédié.

C'est super utile pour éviter de jongler avec les git stash quand on travaille sur plusieurs branches en //.

Particulièrement quand on a lancé un build local super long en local et qu'on aimerait bien travailler sur une autre branche en attendant que le build termine.


Permalink
  •  

Dec 16th, 2019: [EN][Logstash] Indexing Github Events for Fun and Profit - Elastic Community and Ecosystem / Advent Calendar - Discuss the Elastic Stack

Dans mon équipe (infra @ elastic), on utilise Logstash pour indexer les évènements de notre organisation GitHub dans Elasticsearch et générer des alertes et dashboards.

Ce post décrit rapidement notre process.

En bonus, il est possible d'utiliser le nouveau chart officiel Logstash développé par mes soins pour déployer Logstash sur K8S (attention ce chart est toujours en bêta).


Permalink
  •  

Lecteur DVD double D-JIX PVS 702-39LSM - D-JIX

J'utilise ce lecteur DVD portable pour occuper les enfants pendant les longs trajets en voiture.

Les codecs et formats qu'il peut lire sont assez limités.

Pour convertir des vidéos afin qu'elles soient lisible sur ce lecteur:

ffmpeg -i existing_file.mp4 -vcodec mpeg4 -vtag DX50 -acodec mp3 -s vga new_file.avi

Permalink
  •  

How do I delete the builds 11 to 1717 in Jenkins? - Super User

Script jenkins pour supprimer des builds d'un job, quand on a besoin de le faire on est contant de ne pas devoir se taper tout ça à la main :)

Jenkins.instance.getItemByFullName('JobName').builds.findAll { it.number > 10 && it.number < 1717 }.each { it.delete() }

Permalink
  •  

L'actualité de la Freebox » Blog Archive » Les VMs sont disponibles pour Freebox Server Delta 4.1.0

J'avais loupé cette news mais il est désormais possible de lancer des VM ARM64 sur la Freebox Delta.

Pas encore testé mais c'est super interressant pour qui veut s'autohéberger sans s'équiper d'un serveur @home et dispose d'une connexion suffisante (pas mon cas malheureusement, j'attend avec impatience le jour ou la fibre sera disponible chez moi...).

Quelques limitations connus:

  • ARM64 uniquement
  • 2 VM maximum
  • 2 CPU et 1GB dispo pour les VM

Quel est l'intérêt par rapport à un Raspberry Pi pour une utilisation de type server @home?

  • Pas d'hardware supplémentaire
  • Pas de problème d'alimentation tatillone
  • Pas de problème de corruption de carte SD pour le stockage
  • Meilleures perfs disque
  • Meilleures perfs CPU (entre 30% et 80% d'après l'article)
  • Meilleures perfs réseau

Permalink
  •  

collapsible markdown · GitHub

Super utile pour coller des gros logs dans un commentaire GitHub par exemple:

## collapsible markdown?

<details><summary>CLICK ME</summary>
<p>

hidden blocks!

</p>
</details>

Permalink
  •  

Hammerspoon Getting Started

Le Getting Started pour utiliser Hammerspoon sur MacOS

What is Hammerspoon?

Hammerspoon is a desktop automation tool for OS X. It bridges various system level APIs into a Lua scripting engine, allowing you to have powerful effects on your system by writing Lua scripts.

C'est super puissant pour controller MacOS.

Quelques examples:

  • Déplacer la fenêtre actuelle sur la moitié gauche de l'écran en pressant les touches Cmd, alt, ctrl et gauche
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Left", function()
    local win = hs.window.focusedWindow()
    local f = win:frame()
    local screen = win:screen()
    local max = screen:frame()

    f.x = max.x
    f.y = max.y
    f.w = max.w / 2
    f.h = max.h
    win:setFrame(f)
end)
  • Déplacer la fenêtre actuelle sur la moitié droite de l'écran en pressant les touches Cmd, alt, ctrl et droite
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Right", function()
    local win = hs.window.focusedWindow()
    local f = win:frame()
    local screen = win:screen()
    local max = screen:frame()

    f.x = max.x + (max.w / 2)
    f.y = max.y
    f.w = max.w / 2
    f.h = max.h
    win:setFrame(f)
end)
  • Afficher le titre en écoute sur Spotify en pressant les touches Cmd, alt, ctrl et S
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "S", function()
    hs.spotify.displayCurrentTrack()
end)

Permalink
  •