Journal Quel pov' type

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
13
21
mar.
2024

Demat'iNal

Il m'arrive de soumettre des patch à des projets Python utilisant cette délicate innovation qu'est le système de typage pour Python. Si si, tu sais ces trucs à base de mypy qui cherchent à améliorer le monde en le rendant plus rigide.

Regardez donc cette beauté :

try:
    from yaml import CSafeLoader as SafeLoader
except ImportError:
    from yaml import SafeLoader

qui essaie d'utiliser la version native (et plus rapide) qui peut ne pas être présent sur le (…)

Journal Automatiser les tests multi-plateforme avec Sivart

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
13
18
fév.
2015

Abat-jour' nal (variante médiocre sur un thème connu)

Lors de mes développements en C/C++, j'ai parfois besoin de tester la portabilité du code que j'écris, entre différentes architectures, ou quand j'ai des dépendances sur différentes versions d'ubuntu/Debian/*BSD. Et pourquoi pas OSX.

Alors d'habitude je teste sur ma machine, puis je lance une VM from scratch, je teste à la main, et c'est lourd et long, donc je ne le fais pas souvent/pas méthodiquement. J'utilise aussi travis-ci mais pour le multi-plateforme (…)

Journal SIGUSR1, SIGUSR2,..., SIGUSR_N ?

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
12
10
mai
2023

Demati'Nal,

À la lecture de signal(7), on se rend compte que deux signaux sont réservés pour les signaux utilisateurs SIGUSR1 et SIGUSR2. Deux, c'est peu. Je vous propose donc cette technique qu'on baptisera le signal knocking par analogie au Port_knocking

#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int signalvalue = 0;

void sigusr1handler(int signum);
void sigusr2handler(int signum);

void sigusr1handler(int signum) {
  ++signalvalue;
}
void sigusr2handler
(…)

Journal Python et valeurs par défaut des paramètres

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
12
31
juil.
2012

Bonjooour les zamis [ bienvenue au pays trop mignon ]

Au cours de mes pérégrination pythranesques, j'ai découvert une fleur du langage python, que je m'empresse de partager.

D'après vous, qu'affiche la séquence suivante ?

def foo(a=list()): return a
foo().append(1)
foo().append(2)
print foo()

Et hop une manière détournée (et hideuse, elle n'a donc pas à sa place au pays trop mignon) d'avoir (…)

Journal C++ Hell/Heaven et les concepts

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
11
17
sept.
2020

Salut à tous,

C++20 apporte les concepts, mais par pure nostalgie, regardons comment émuler ça en C++11

#include <utility>

#define REQUIRES(x) class _ = decltype(x)

template<class T,
         REQUIRES(((std::declval<T>()==0), T(1), std::declval<T>() * (std::declval<T>() -1)))>
T fact(T const& n) {
    return n == 0
(…)

Journal Toujours plus de fun avec C

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
10
27
mar.
2020

Demat' iNal,

En regardant cette vidéo: https://www.youtube.com/watch?v=lkgszkPnV8g, j'ai découvert une de ces petites perles qui viennent rompre la monotonie d'un quotidien où l'on dérive constamment.

int(riguant);

Ce code C compile. C'est d'ailleurs aussi un code C++, qui compile également.

Mais pourquoi donc ?

Journal Carnet de route - taume 0

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
7
30
nov.
2018

Notes et découvertes faites lors de mes voyages informatiques

Vérifier si deux énoncés parmi N (N >= 2) sont vrais, en Python

sum(map(bool, l)) > 1

Je n'ai pas trouvé de one-liner satisfaisant qui s'arrête dès que la condition est vérifiée :-/

Spécialiser une fonction C(11) pour un type donné

Pour vérifier qu'on n'a pas un niveau de pointeur en trop :

void dump_ptr(void* ptr) { printf("%p",
(…)