Skip to content

Instantly share code, notes, and snippets.

@francisco-perez-sorrosal
francisco-perez-sorrosal / streamlit_paged_df.py
Last active August 10, 2022 19:20
Paged Dataframe in Streamlit
import streamlit as st
class PagedDataframe:
def __init__(self, key, df, page_entries=10):
self.key = f"{key}_page"
self.df = df
self.page_entries = page_entries
self.last_page = len(df) // page_entries
if self.key not in st.session_state:
@francisco-perez-sorrosal
francisco-perez-sorrosal / nc_webserver.sh
Last active March 2, 2020 21:54
Netcat Webserver with config Serving Delay
#!/bin/bash
PORT=${1:-8000}
SERVING_DELAY_SECS=${2:-10}
command -v pv >/dev/null 2>&1 || { echo >&2 "pv requied but not installed. Exiting..."; exit 1; }
cat <<EOF > /tmp/index.html
<!doctype html>
<html>
@francisco-perez-sorrosal
francisco-perez-sorrosal / object_builder.py
Last active April 24, 2019 18:41
Object Builder for Class Hierarchies
class BaseClass(object): pass
class Hello(BaseClass):
"""Example naive class"""
def __init__(self, arg1):
self.arg1 = arg1
def __repr__(self):
return "arg1 {}".format(self.arg1)
@francisco-perez-sorrosal
francisco-perez-sorrosal / Makefile.rsync
Created January 18, 2019 19:45
Makefile for Rsync
# Local-Remote synchronization of directories/files
# NOTE: Deletions are NOT considered yet.
# Usage
# -----
# Local-remote sync:
# make -f Makefile.rsync lrsync SERVER=my_host PROJECT=project_name LOCAL_BASEDIR=/Users/my_name/dev REMOTE_BASEDIR=/home/my_name/dev
#
# Remote-local sync:
# make -f Makefile.rsync rlsync SERVER=my_host PROJECT=project_name LOCAL_BASEDIR=/Users/my_name/dev REMOTE_BASEDIR=/home/my_name/dev
# Generate dep graph in maven
mvn org.fusesource.mvnplugins:maven-graph-plugin:reactor -Dhide-external=true
@francisco-perez-sorrosal
francisco-perez-sorrosal / change_git_committer_data.sh
Created August 2, 2016 07:55
Change the committer/author data in Git
#!/bin/sh
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "Francisco Perez-Sorrosal" ];
then
GIT_COMMITTER_NAME="Francisco Perez-Sorrosal";
GIT_AUTHOR_NAME="Francisco Perez-Sorrosal";
GIT_COMMITTER_EMAIL="fperezsorrosal@gmail.com";
GIT_AUTHOR_EMAIL="fperezsorrosal@gmail.com";
git commit-tree "$@";
@francisco-perez-sorrosal
francisco-perez-sorrosal / sort.sh
Last active August 29, 2015 14:05
Command to sort and pretty print a column-based text file in UNIX
sort -nr -t$'\t' -k<column> <file> | column -ts $'\t'
@francisco-perez-sorrosal
francisco-perez-sorrosal / MainDigester
Created June 11, 2012 00:23
MessageDigest algorithm response times
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MainDigester {
public enum Digester {
SHA512("SHA-512"),
@francisco-perez-sorrosal
francisco-perez-sorrosal / LinkedListLoopDetector.java
Created January 23, 2012 15:38
Code to detect loops in linked lists in O(n)
public static boolean containsLoop(LinkedListNode list) {
LinkedListNode slowIterator = list, fastIterator = list;
// If a loop exists in the list, both iterators will be going round
// and round in the loop, and at some point, they will be equal
while (slowIterator != null && fastIterator != null) {
slowIterator = slowIterator.getNext();
try {
fastIterator = fastIterator.getNext().getNext();
} catch (NullPointerException npe) {
fastIterator = null;