Skip to content

Instantly share code, notes, and snippets.

Avatar

Angel Leon gubatron

View GitHub Profile
@gubatron
gubatron / dynamic_dockerfile_host_architecture.md
Last active Nov 28, 2022
How to build your Docker image using the same Dockerfile regardless of the host architecture
View dynamic_dockerfile_host_architecture.md

How to build your Docker image using the same Dockerfile regardless of the host architecture

Problem

If you are now using docker on a Mac M1 (arm64 platform), you don't want to use amd64 as the architecture for your Linux Images.

You could have 2 lines on your Dockerfile and comment each one depending on where you're building the image

Dockerfile

# Building on Apple Silicon host
@gubatron
gubatron / config_php8.sh
Created Sep 12, 2022
script to build php8.1.10 from source so that we can link to openssl1.1.1 (new ubuntu 22.04 makes use of openssl 3 and it breaks a lot of stuff that depended on weaker ciphers)
View config_php8.sh
sudo apt install build-essential autoconf libtool bison re2c pkg-config libwebp-dev libxml2-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype-dev libonig-dev libedit-dev libreadline-dev libzip-dev
cd php-8.1.10
#builds configure file if there isn't one
./buildconf
#./configure --help for full list of options
./configure --with-curl \
--disable-cgi \
@gubatron
gubatron / eight_queens.py
Last active Apr 19, 2022
eight_queens.py - Decent brute force 8 queens state finder (takes about 235k iterations)
View eight_queens.py
from random import shuffle
'''
This module tries to solve the 8 queens problem.
'''
identity_rows = [0, 1, 2, 3, 4, 5, 6, 7]
def queens_attack_each_other(queen_a, queen_b):
'''True if 2 queens face each other'''
return queen_a[0] == queen_b[0] or queen_a[1] == queen_b[1] or abs(queen_a[0] - queen_b[0]) == abs(queen_a[1] - queen_b[1])
@gubatron
gubatron / complex.js
Created Apr 14, 2022
Class to represent a Complex number and a few operations that can be done with them
View complex.js
class Complex {
constructor(real, imag) {
this.real = real
this.imag = imag
}
length() {
return Math.sqrt(this.real * this.real + this.imag * this.imag)
}
@gubatron
gubatron / merkle.py
Created Mar 23, 2022
Crates a Merkle Tree using the given data, per light Clients for Lazy Blockchains paper by Ertem Nusret Tas et. al
View merkle.py
import hashlib
import binascii
def H(data):
if type(data) == str:
data = str.encode(data)
if type(data) == int:
data = data.to_bytes(4, 'big')
return hashlib.sha256(data).digest()
@gubatron
gubatron / remove_repeated_snapshots_from_sqlite3_db.py
Last active Mar 6, 2022
remove repeated entries on a sqlite3 table (there's no delete limit 1 in sqlite3, you gotta do a select within the delete statement)
View remove_repeated_snapshots_from_sqlite3_db.py
import sqlite3
# python script to cleanup double entries on the marketsnapshots table.
#CREATE TABLE marketsnapshots (
# symbol TEXT,
# ...
# lastupdatetime INTEGER);
def symbolList(cur):
@gubatron
gubatron / gist:c8ecee2d54033a0b131812324e5a7a33
Created Jan 6, 2022
Fixing "configure: error: ACC conformance test failed. Stop." when building ucl on macos with M1 (arm64) CPU
View gist:c8ecee2d54033a0b131812324e5a7a33
git clone git@github.com:Distrotech/ucl.git
cd ucl
./configure CFLAGS="$CFLAGS -Wno-error=implicit-function-declaration"
make -j 10
sudo make install
@gubatron
gubatron / int_as_array.cpp
Last active Nov 12, 2021
Access and manipulate an int via char array using an union. C Plus plus
View int_as_array.cpp
#include <iostream>
int main() {
union {
unsigned int a; // 32 bit number, 4 bytes
unsigned char aa[4]; // access a's bytes as an array
};
a = 0xaabbccdd;
printf("a: 0x%x\n", a); // a: 0xaabbccdd
@gubatron
gubatron / adb_logcat_ndk_stack.md
Created Sep 12, 2021
How to isolate crashes with `ndk-stack` from `adb logcat` output
View adb_logcat_ndk_stack.md

adb logcat | ndk-stack -sym <path to folder with .so files>

Example: adb logcat | ndk-stack -sym ~/workspace.frostwire/frostwire-jlibtorrent/swig/bin/release/android/armeabi-v7a

@gubatron
gubatron / random_squares.html
Created Aug 22, 2021
Bouncing random colored squares in Javascript using basic canvas 2D api
View random_squares.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Canvas tutorial</title>
<script type="text/javascript">
const max_x = 2048
const max_y = 2048
const bgcolor = 'rgb(0,0,0)'
const fgcolor0 = 'rgb(200, 0, 0)'