Skip to content

Instantly share code, notes, and snippets.

View onjin's full-sized avatar

Marek Wywiał onjin

View GitHub Profile
@onjin
onjin / Makefile
Created July 5, 2024 09:04
Makefile help generator
.DEFAULT_GOAL := help
# use '# >>> Build commands' to create section
# use '# target: target description' to create help for target
# example output from this file:
# $ make
# Usage:
#
# >>> Section 1
@onjin
onjin / pysh
Created June 14, 2024 06:53
nix shell runner script for python and packages and optional venv
#!/usr/bin/env python
"""
pysh
This script provides a command-line interface (CLI) for creating and running a
nix-shell environment with specified Python packages. It supports using different
Python versions and can optionally create a temporary virtual environment (venv)
to install packages.
Purpose:
@onjin
onjin / supervised_workers.py
Created April 2, 2024 11:47
supervised async python workers
import asyncio
import argparse
import random
from typing import Any
async def worker(name: str, queue: asyncio.Queue[str], stop_event: asyncio.Event):
while not stop_event.is_set() or not queue.empty():
try:
# Try to get an item from the queue without indefinitely blocking
try:
@onjin
onjin / creator_producers_consumers_async.py
Created March 15, 2024 08:17
example creator/producers/consumers async patter - reusable
import asyncio
import httpx
from typing import Callable, List, Any
from rich.console import Console
console = Console()
async def producer(
@onjin
onjin / changelog.py
Last active October 25, 2023 09:57
changelog.md generate from conventional commits git log
#!/usr/bin/env python
# NOTE: use newer & fixed version as package: https://pypi.org/project/mkchangelog/
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import argparse
import json
import logging
import os
import re
@onjin
onjin / errors.txt
Created July 31, 2023 13:04 — forked from benjaminoakes/errors.txt
BeOS (NetPositive) haiku error messages
Not a pretty sight
When the web dies screaming loud
The site is not found.
Morning and sorrow
404 not with us now
Lost to paradise.
@onjin
onjin / set_wallpaper.sh
Last active July 27, 2023 11:20
set wallpaper by url | directory | file, using hyprpaper | feh | betterlockcreen | print - random or last used
#!/bin/bash
## ---------------------------------------------------------------------------------- ##
## Sets random image as wallpaper, trying remote url, local folder and fallback ##
## image. Then using executor like hyprpaper, feh, betterlockscreen or just prints ##
## found image to the output. ##
## ---------------------------------------------------------------------------------- ##
## https://gist.github.com/onjin/411d7f9c6ebcaf66aa75abe6941bea55
## ---------------------------------------------------------------------------------- ##
## Example usage
@onjin
onjin / obsidian-web-clipper.js
Last active June 28, 2024 07:09 — forked from kepano/obsidian-web-clipper.js
Obsidian Web Clipper Bookmarklet to save articles and pages from the web (for Safari, Chrome, Firefox, and mobile browsers)
javascript: Promise.all([import('https://unpkg.com/turndown@6.0.0?module'), import('https://unpkg.com/@tehshrike/readability@0.2.0'), ]).then(async ([{
default: Turndown
}, {
default: Readability
}]) => {
/* Optional vault name */
const vault = "";
/* Optional folder name such as "Clippings/" */
@onjin
onjin / advent.py
Last active December 3, 2022 23:07
advent of code executor
#!/usr/bin/env python
"""
Example layout
2022/01/input_test.txt
2022/01/input_prod.txt
2022/01/code.py
Example code.py:
def phase_1(input: List[str]) -> Any:
# lines have '\n' at end
@onjin
onjin / python_typed_decorator.py
Created July 13, 2022 12:09
Python typed decorator
RT = TypeVar('RT') # return type
def inject_user() -> Callable[[Callable[..., RT]], Callable[..., RT]]:
def decorator(func: Callable[..., RT]) -> Callable[..., RT]:
def wrapper(*args, **kwargs) -> RT:
# ...