Skip to content

Instantly share code, notes, and snippets.

View gabonator's full-sized avatar
👨‍🏭
at work

Gabriel Valky gabonator

👨‍🏭
at work
View GitHub Profile
@gabonator
gabonator / align.py
Created August 4, 2024 22:07
Align a photo of table for OCR, trim to contents
import sys
import cv2
import numpy as np
def custom_processing_function(b, g, r):
r = int(r)
g = int(g)
b = int(b)
y = (r+g+b)/3
mdif = max(abs(y-r), abs(y-g), abs(y-b))
@gabonator
gabonator / recognize.swift
Created August 4, 2024 22:06
OCR with OSX Vision
// OCR code for processing photos of data structured in tables without installation of any package
// use: swift recognize.swift photo.jpeg
// It should return the 2D structure as JSON
import Cocoa
import Vision
struct TableCell {
var x: Int
var y: Int
@gabonator
gabonator / arduinoota.js
Created May 14, 2024 22:56
arduino ota fake server with bonjour announcement
// dns-sd -R gabo5 _arduino._tcp . 3005 ssh_upload=no
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log(Date.now(), req.method, req.url);
next();
});
app.post('/pgm/sync', (req, res) => {
@gabonator
gabonator / client.js
Last active May 5, 2024 20:36
raw socket websocket client
var net = require('net');
var socket = net.connect(8080, "localhost", () => {
var request = "GET / HTTP/1.1\r\nHost: " + "localhost" + "\r\n\r\n";
var rawResponse = "";
socket.write(`
GET / HTTP/1.1
Host: localhost
Connection: Upgrade
@gabonator
gabonator / w5500client.ino
Created May 1, 2024 22:10
wiznet 5500 keyes ks0304
// Ks0304 Keyestudio W5500 ETHERNET DEVELOPMENT BOARD (WITHOUT POE)
// minimal http client code with "EthernetWebServer" library from "Khoi Hoang"
#define SerialDebug Serial
#define DEBUG_ETHERNET_GENERIC_PORT SerialDebug
#define _ETG_LOGLEVEL_ 0
#define USE_THIS_SS_PIN 10
#define SENDCONTENT_P_BUFFER_SZ 512
#include <SPI.h>
#define ETHERNET_LARGE_BUFFERS
@gabonator
gabonator / mailclient.c
Created April 30, 2024 07:59
sknicchall
typedef unsigned char undefined;
typedef unsigned char byte;
typedef unsigned char dwfenc;
typedef unsigned int dword;
typedef long long longlong;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned char undefined1;
typedef unsigned short undefined2;
@gabonator
gabonator / btable.html
Created April 5, 2024 12:36
bootstrap table
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="Gabriel Valky">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css">
</head>
@gabonator
gabonator / ocdlog.txt
Created February 29, 2024 14:50
open ocd protocol sniffer
ide->ocd+$qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;vfork-events+;exec-events+;vContSupported+;QThreadEvents+;no-resumed+;memory-tagging+#ec
ocd->ide+
ocd->ide+
ocd->ide$PacketSize=4000;qXfer:memory-map:read+;qXfer:features:read+;qXfer:threads:read+;QStartNoAckMode+;vContSupported+#02
ide->ocd+
ide->ocd$vMustReplyEmpty#3a
ocd->ide+$#00
ide->ocd+
ide->ocd$QStartNoAckMode#b0
@gabonator
gabonator / test.sh
Created November 15, 2023 12:08
systemd & rsyslog in container
if [[ -z "${DOCKER}" ]]; then
cat > Dockerfile <<- EOM
FROM debian:trixie
WORKDIR /app
RUN apt update -y --fix-missing && apt upgrade -y
RUN apt install -y rsyslog build-essential libsystemd-dev systemd
COPY test.sh .
ENV DOCKER 1
ENTRYPOINT ["bash", "test.sh"]
EOM
@gabonator
gabonator / index.html
Created November 7, 2023 09:35
Websockets with nodejs express server using single port
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/xterm.css"/>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/xterm.js"></script>
<div id="terminal">
<script>
var terminal = new window.Terminal({cursorBlink: true});
terminal.open(document.querySelector('#terminal'));
terminal.onData(e => socket.send(e));
var socket = new WebSocket(document.location.href.split("http").join("ws") + "terminal");
socket.onmessage = msg => terminal.write(msg.data);