Skip to content

Instantly share code, notes, and snippets.

@sha1n
sha1n / pidlock.py
Last active March 23, 2020 11:40
A pid lock-file implementation for Python with optional background auto-refresh
import logging
import os
import signal
import threading
import time
from pathlib import Path
from typing import Callable
DEFAULT_LOCK_TIMEOUT_SEC = 60
@sha1n
sha1n / endpoint_client.py
Last active March 5, 2020 08:53
An HTTP client utility for single threaded use-cases that's built only on the standard http client library.
import json
from http_client import http_client
_JSON_CONTENT_HEADERS = {'Content-Type': 'application/json'}
_HOSTNAME = 'my.host.com'
class my_client(http_client):
def __init__(self):
@sha1n
sha1n / .vimrc
Last active August 25, 2020 08:58
Useful .vimrc for basic coding in Vim (tested on MacOS default Vim)
set background=dark
syntax enable
" show line numbers
set number
" highlight cursor line
set cursorline
" searchi
@sha1n
sha1n / dgraph.py
Last active June 7, 2021 22:22
Basic directed graph implementation with topological sort and cycle detection utility functions
from collections import defaultdict
from typing import List
class DGraph:
def __init__(self):
self._nodes = set() # using a set to easily avoid duplications
self._edges = defaultdict(list)
self._reverse_edges = defaultdict(list)
@sha1n
sha1n / limit.maxfiles.plist
Last active February 6, 2020 08:01
Increase max files on MacOS 10.14.x Mojave / Catalina 10.15.x
<!--
put in /Library/LaunchDaemons/limit.maxfiles.plist
make sure the file is owned by 'root'
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
@sha1n
sha1n / tcp_server.go
Created February 6, 2019 06:51
A simple TCP server example in go that forwards all data to the console
package main
import (
"bufio"
"net"
"os"
)
import "fmt"
@sha1n
sha1n / docker_cleanup.sh
Created October 3, 2017 08:12
A cleanup script for docker on dev machines
#!/usr/bin/env bash
# remove exited/created containers
docker rm -vf $(docker ps -aqf status=exited -f status=created)
# remove untagged images
docker rmi $(docker images -qf dangling=true)
# remove unreferenced volumes - careful with that
docker volume rm $(docker volume ls | awk '{print $2}')
@sha1n
sha1n / GuidV5.java
Last active October 21, 2022 03:31
Type 5 UUID generator in Java & Scala
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;
public class GuidV5 {
public static UUID nameUUIDFrom(String name) throws UnsupportedEncodingException, NoSuchAlgorithmException {
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
@sha1n
sha1n / NettyHttpServerDemo.scala
Created January 10, 2016 21:03
Sample netty http server
import io.netty.bootstrap.ServerBootstrap
import io.netty.buffer.Unpooled
import io.netty.channel._
import io.netty.channel.nio.NioEventLoopGroup
import io.netty.channel.socket.SocketChannel
import io.netty.channel.socket.nio.NioServerSocketChannel
import io.netty.handler.codec.http._
import io.netty.handler.logging.{LogLevel, LoggingHandler}
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}
@sha1n
sha1n / OSXOpenGrokInstall
Last active August 29, 2015 14:04
Complete installation of OpenGrok for OSX (index creation excluded)
#!/bin/sh
BASEDIR=`pwd`
# Set env
OPENGROK_FILENAME=opengrok-0.12.1
OPENGROK_ARCH_FILENAME=$OPENGROK_FILENAME.tar.gz
OPENGROK_ARCH_URL=https://java.net/downloads/opengrok/$OPENGROK_ARCH_FILENAME