Skip to content

Instantly share code, notes, and snippets.

View grzs's full-sized avatar

János Gerzson grzs

  • Hungarodo
  • Budapest, Hungary
View GitHub Profile
@grzs
grzs / range.el
Created November 25, 2023 10:13
Emacs Lisp range function (and factorial calculation)
(cl-defun range (end &optional (start 0) (step 1) reverse)
"Returns a list of numbers from START to END incremented by STEP"
(let ((i start) (res (list start)))
(while (< i end)
(setq i (+ i step))
(if reverse
(setq res (cons i res))
(setcdr (last res) (cons i nil))))
res))
@grzs
grzs / for-loop.el
Last active November 25, 2023 10:04
Emacs Lisp for loop macro
(defmacro for (loopvar in listvar &rest body)
"Execute a simple for loop: (for x in '(1 2 5) (print x))."
;; syntax checking
(if (symbolp loopvar) t
(error (format "Syntax error 'for %s<- ...': LOOPVAR has to be a symbol" loopvar)))
(if (equal (symbol-name in) "in") t
(error (format "Syntax error 'for %s %s<- ...'" loopvar (symbol-name in))))
;; unintered symbols for local variables
@grzs
grzs / functional-lisp.el
Created November 24, 2023 22:46
How to pass functions as parameters in lisp
;; definitions
(defun simple-handler (f args)
(if (and (functionp f) (listp args))
(apply f args)))
(defun apply-handler (X)
(if (and (symbolp X) (fboundp X) (boundp X))
(apply (symbol-function X) (symbol-value X))))
(defun apply-cons-handler (X)
@grzs
grzs / k8s-pods-csv.jq
Last active April 4, 2023 08:29
jq script for creating kubernetes pods CSV report
# kubectl get pods -A -o json | jq -f k8s-pods-csv.jq -r > k8s-pods.csv
def sumarrays($arrays):
reduce $arrays[] as $item (
[]; . as $sum
| [range($item | length)]
| map($sum[.] + $item[.])
)
;
# unit conversions
def cpu2num($val):
@grzs
grzs / ansible_stats_sum.awk
Created November 21, 2022 09:01
AWK script for printing ansible runniing statistics summary
BEGIN {
ok=0; ch=0; ur=0; fl=0; sk=0; rs=0; ig=0
}
{
print $0
gsub("[a-z]+=", "")
ok+=$3; ch+=$4; ur+=$5; fl+=$6; sk+=$7; rs+=$8; ig+=$9
}
@grzs
grzs / auto-rsync.el
Last active February 6, 2023 22:55 — forked from mtmtcode/auto-rsync.el
auto-rsync.el - Emacs minor mode to execute rsync automaticlly
;;; auto-rsync-mode -- minor mode for auto rsync
;;
;; Author: @l3msh0
;;
;;; Example
;;
;; (require 'auto-rsync)
;; (auto-rsync-mode t)
;; (setq auto-rsync-dir-alist
@grzs
grzs / odoo-orm-regex.py
Last active September 28, 2021 07:16
Monster regex for parsing Odoo ORM query string representation
pattern = (
r"^(env\['(?P<model>\w+(\.\w+)*?)'\])"
r"((\.with_(?P<userco>((user)|(company))\(\d+\)))|"
r"(\.with_context\("
r"(?P<context>((\{(('\w+': ?'?\w+'?)(, ?'\w+': ?'?\w+'?)*)?\})|" # context provided
r"(\w+='?\w+'?))(, ?\w+='?\w+'?)*)\)))*" # context overrides
r"(?P<browse>(\.browse\((?P<ids>\d(, ?\d+)*)\))|"
r"(?P<search>\.search\(\[(?P<domain>" # search begin
r"(('[!&|]')|" # search domain logical
r"(\('\w+', ?" # search domain field
@grzs
grzs / logrotate.sh
Last active November 18, 2021 22:42
Monster bash logrotate
#!/bin/bash
shopt -s extglob
PATTERN="my-app.log"
MAX=10
# move and recreate
DATE=$(date +"%Y-%m-%d")
LOGFILE=`ls ${PATTERN}`
LOGFILE_NEW="${LOGFILE}.${DATE}"