Skip to content

Instantly share code, notes, and snippets.

View carlos-jenkins's full-sized avatar

Carlos Jenkins carlos-jenkins

View GitHub Profile
@carlos-jenkins
carlos-jenkins / predict.py
Created October 22, 2025 18:15
Linux kernel bonding driver hash algorithm Python equivalent for xmit_hash_policy=layer3+4 unfragmented TCP/UDP and IPv4
import socket
import struct
def _ipv4_to_u32(ip_str: str) -> int:
# network-order (big-endian) to host int
return struct.unpack("!I", socket.inet_aton(ip_str))[0]
def bond_layer3_4_hash_tcp(
@carlos-jenkins
carlos-jenkins / gone.html
Created June 8, 2022 02:58
Simple redirect page for domain change with manual link and countdown
<html>
<head>
<title>This domain is gone. Redirecting...</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
font-size: 2em;
@carlos-jenkins
carlos-jenkins / goinflux.py
Created October 14, 2020 02:25
InfluxDB bootstrap script
#
# Execute with:
#
# virtualenv venv
# source venv/bin/activate
# pip3 install influxdb
# python3 goinflux.py
#
from influxdb import InfluxDBClient
@carlos-jenkins
carlos-jenkins / to_iso8601_and_back.py
Last active May 8, 2022 21:19
Create and parse ISO8601 with Offset with standard library only in Python 3.5 and 3.6
# PARSING AN ISO8601 WITH OFFSET FORMATTED STRING USING A PYTHON VERSION PRIOR
# TO 3.7 WITH THE STANDARD LIBRARY ONLY
#
#
# For the formatting:
#
# This returns a datetime object with the timezone set to UTC.
# The internal time can now be interpreted as UTC.
#
# datetime.now(timezone.utc)
@carlos-jenkins
carlos-jenkins / split.py
Last active November 4, 2019 20:17
Split a collection in two parts as defined by the given criteria.
def split(iterable, criteria=lambda e: e):
"""
Split a collection in two parts as defined by the given criteria.
Usage::
>>> split([1,2,3,4,5,6], lambda e: e > 2)
([3, 4, 5, 6], [1, 2])
By default, the element itself is used as the criteria::
@carlos-jenkins
carlos-jenkins / cache.py
Last active October 4, 2019 00:00
Cache the result of a function for certain time.
from time import monotonic
from functools import wraps
def cache(expiration_s):
"""
Cache the result of a function for certain time.
There is one restriction: all arguments of the wrapped function must be
immutable, that is, they must be used as key in a dictionary.
@carlos-jenkins
carlos-jenkins / jobqueue.groovy
Last active October 3, 2019 23:41
Jenkins script to get job queues
import groovy.json.JsonOutput
result = []
Jenkins.instance.queue.items.each {
// Only consider BuildableItem
// Other known objects are:
// - BlockedItem, which lacks the runId
if (it instanceof Queue.BuildableItem) {
result.add([
@carlos-jenkins
carlos-jenkins / kuraterm.glade
Last active April 2, 2023 13:28
Example of a Gtk application using a VTE terminal widget written in Python 3
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<requires lib="vte-2.91" version="0.52"/>
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<signal name="delete-event" handler="stop" swapped="no"/>
<child>
<placeholder/>
@carlos-jenkins
carlos-jenkins / nopenlimit.py
Created September 6, 2019 00:12
Get and set the NOPEN limit (maximum number of open files)
from resource import RLIMIT_NOFILE, getrlimit, setrlimit
def setfilelimits(limit):
soft, hard = getrlimit(RLIMIT_NOFILE)
if limit > hard:
raise RuntimeError(
'Unable to raise open files limit to {}. '
'Hard limit is set to {}'.format(
@carlos-jenkins
carlos-jenkins / difftool.sh
Created July 19, 2019 20:44
Setup Meld for git difftool
sudo apt install meld
git config --global alias.difftree 'difftool --dir-diff'
git config --global diff.tool meld
git config --global difftool.prompt false
# Now use it:
# git difftree master..HEAD
# git difftree e49286eb1acbae69058856c744676c63d1154ba6..57adcd018d6e11c0982187cddfce6ee2bb641c6d