Skip to content

Instantly share code, notes, and snippets.

View vrbadev's full-sized avatar
🇺🇦

Vojtěch Vrba vrbadev

🇺🇦
View GitHub Profile
@vrbadev
vrbadev / md5.c
Last active November 13, 2019 20:21 — forked from creationix/md5.c
Modified MD5 library
#include "md5.h"
const uint32_t r[] = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21};
const uint32_t k[] = {
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
@vrbadev
vrbadev / lib_math_vectors.c
Last active January 20, 2020 12:22
Simplest ANN implementation in pure C without libraries
#include "lib_math_vectors.h"
// Simplifies math power function
double pow2(double x) { return pow(x, 2); }
// Sigmoidal function
double sigmoid(double x) { return 1.0 / (1.0 + exp(-x)); }
// ReLU function
double relu(double x) { return fmax(0.0, x); }
@vrbadev
vrbadev / linear_regression.c
Created April 9, 2021 16:40
Fast 2D linear regression in pure C without math libraries
#include <stdio.h>
#include <stdint.h>
float pwr2(float x)
{
return x * x;
}
float inv_sqrt(float number)
{
@vrbadev
vrbadev / flatten_iterables.py
Created December 14, 2021 18:59
Simple Python recursive function to flatten any iterable nested object to unit-depth iterable of desired type
def flatten(*parents, dtype=tuple):
# internally, lists are used because they can be easily merged and expanded
result = list()
for i in range(len(parents)):
try:
# if i-th element iterable, use recursion to flatten all its elements and merge the result with current return list
result.extend(flatten(*parents[i], dtype=list))
except TypeError:
# if not iterable, add the element to return list
result.append(parents[i])
@vrbadev
vrbadev / fpgaint.c
Last active November 14, 2022 13:43
Cyclone V HPS - Linux kernel driver for non-blocking polling of FPGA-to-HPS interrupts (f2h_irq0 and f2h_irq1) (tested with linux-socfpga v5.19)
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/init.h>
#include <linux/device.h>
@vrbadev
vrbadev / debian_from_ros_pkg.md
Created May 24, 2023 08:44 — forked from awesomebytes/debian_from_ros_pkg.md
How to create a debian from a ROS package
@vrbadev
vrbadev / Debian_12_ROS_Noetic_Installation.md
Last active April 22, 2025 12:43
[TUTORIAL] How to install ROS Noetic on Debian 12 Bookworm

Tutorial: How to install ROS Noetic on Debian 12 Bookworm

This is a short tutorial on building ROS Noetic in the Debian 12 ("bookworm") fresh-install environment. There are several packages not available (yet) from the official apt repositories, which have to be either built from source or installed from older Debian 11 ("bullseye") repository DEB packages. Several packages also have to be downgraded to maintain compatibility.

Preparation

  1. Add ROS repository for older Debian 10 ("buster") to our apt sources list:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu buster main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
@vrbadev
vrbadev / get_bitstamp_ohlc_data.py
Last active May 29, 2024 18:33
Simple Python script which gathers all available Bitstamp OHLC data for selected trading pair and interval.
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 23 14:04:42 2023
@author: Vojtech Vrba ([email protected])
Simple Python script which gathers all available Bitstamp OHLC data for selected trading pair and interval.
The data is stored in a new CSV file / only new data is appended to the end of an existing CSV file.
"""
import datetime as dt
@vrbadev
vrbadev / rosbag_extractor.py
Last active May 22, 2024 14:37
ROS-less python rosbag topic extraction (using rosbags library)
from pathlib import Path
from rosbags.highlevel import AnyReader
from contextlib import nullcontext
from tqdm import tqdm
# aux function to get a list of all rosbag topic names
def rosbag_topics(bag_path):
with AnyReader([Path(bag_path)]) as reader:
return reader.topics
@vrbadev
vrbadev / sigint_lambda_handler.py
Created May 22, 2024 14:36
Python termination signal handler using a lambda and a global variable
import signal
if __name__ == "__main__":
terminated = False
signal.signal(signal.SIGINT, lambda sig, frame: globals().update(terminated=True))
while not terminated:
# do something ...