Skip to content

Instantly share code, notes, and snippets.

View metal3d's full-sized avatar
🤖
Electrifying my brain

Patrice Ferlet metal3d

🤖
Electrifying my brain
View GitHub Profile
@metal3d
metal3d / PythonDIPonyTech
Last active April 12, 2016 01:57
DI python
# Why DI Framework are useful
Dependency injection is back in fashion. That's probably the result AngularJS, Symfony2, and many Java frameworks success that offer a "DI" implementation. But what is "DI", and why are we able to *not use* "DI" framework with Python ?
## What is dependency injection
Dependency injection is a pattern, or it is rather a way to implement dependencies between classes. The approach is basically to avoid classes to directly instanciate objects, and make use of interfaces and/or factories. That's all, nothing more complicated.
To illustrate the definition, it's simpler to look at an example.
@metal3d
metal3d / gtk.css
Created February 9, 2016 09:45
Reduct title bar on gnome 3
/* To put in ~/.config/gtk-3.0/gtk.css */
/* Create directory and file if they don't exist */
/* Change paddings to fill your preferences */
.header-bar.default-decoration {
padding-top: 1px;
padding-bottom: 1px;
}
.header-bar.default-decoration .button.titlebutton {
padding-top: 1px;
padding-bottom: 1px;
@metal3d
metal3d / deploy_coreos_libvirt.sh.patch
Created February 1, 2016 21:24
Patch to change SELinux context of CoreOS libvirt deployment script
diff -up ./deploy_coreos_libvirt.sh.friend ./deploy_coreos_libvirt.sh
diff -up ./deploy_coreos_libvirt.sh.friend ./deploy_coreos_libvirt.sh
--- ./deploy_coreos_libvirt.sh.friend 2016-01-25 14:18:15.431503583 +0100
+++ ./deploy_coreos_libvirt.sh 2016-01-25 14:24:35.942741966 +0100
@@ -51,6 +51,12 @@ for SEQ in $(seq 1 $1); do
sed "s#%HOSTNAME%#$COREOS_HOSTNAME#g;s#%DISCOVERY%#$ETCD_DISCOVERY#g" $USER_DATA_TEMPLATE > $LIBVIRT_PATH/$COREOS_HOSTNAME/openstack/latest/user_data
+
+ if [[ selinuxenabled ]] ;then

Python et l'injection de dépendance

Ah, ça... quand on parle d'injection et de dépendance, on s'attend tout de suite à se prendre une flopée de visiteurs en manque de substance plus ou moins illicites. En réalité, on va parler "pattern". Et surtout, je vais lancer un vieux pavé dans la marre en disant qu'en Python c'est pas super utile, ou du moins que le langage permet déjà de le gérer sans se faire mal.

Piqure de rappel

Conversation un matin au travail:

@metal3d
metal3d / gh_latest.go
Last active October 16, 2024 07:41
Go client to github to get latest release and assets for a given repository
package main
import (
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
@metal3d
metal3d / github-dl-count.py
Last active August 29, 2015 14:06
A simple script that gives me number of download for github project release
import requests
import json
import sys
# use argv... example:
# python github-dl-count MyUserName MyRepoName
user = sys.argv[1]
repo = sys.argv[2]
url="https://api.github.com/repos/%s/%s/releases" % (user, repo)
@metal3d
metal3d / threadpool.py
Last active December 15, 2017 04:04
ThreadPool is an asynchrone Pool thread that doesn't block when adding a thread to Queue.
# -*- encoding: utf-8 -*-
""" threadpool module, export ThreadPool class that is a non blocking
Thread Queue. Most important is that ThreadPool.add_task runs
asychroniousally. This method doesn't block process.
Example:
p = ThreadPool(2)
p.add_task(f1, arg1, arg2, test=False)
p.add_task(f1, arg2, arg3, test=False)
p.add_task(f1, arg4, arg5, test=True)
@metal3d
metal3d / bayesian.py
Last active December 11, 2015 21:08
Bayesian class that train datas and compute bayesian calculation.
# -*- encoding: utf-8 -*-
""" Simple Bayesian calculation
After training datas by categories, you can use Bayes.bayes method to compute
bayesian calculation to find probality for a content
matches some categories
Example:
>>> b = Bayes()
@metal3d
metal3d / exemple1
Last active December 10, 2015 22:28
Exemples PlantUML
@startuml
A -> B: le label de mon appel
B -> A: autre label...
@enduml
@metal3d
metal3d / nat-traversal.js
Created August 9, 2011 22:16
NAT Traversal with node (0.5.x)
/*
NAT traversal system to let 2 computers behind firewall to communicate.
Example:
Client A (your machine) has public ip 1.1.1.1
Client B (distant machine) has public ip 2.2.2.2
You want to bind port 5556 on your machine
Distant Client want to bind port 5557