Skip to content

Instantly share code, notes, and snippets.

@gzagatti
gzagatti / raster_postgis.py
Last active April 13, 2024 08:09
Loads raster data from POSTGIS directly to numpy.array using rasterio
import psycopg2
from rasterio.io import MemoryFile
conn = pscopg2.connect("<connection string>")
cur = conn.cursor()
# ensure that the GTiff driver is available,
# see https://postgis.net/docs/postgis_gdal_enabled_drivers.html
cur.execute('''
SET postgis.gdal_enabled_drivers TO 'GTiff';
SELECT ST_AsGDALRaster(rast, 'GTiff') FROM raster.table;
@gzagatti
gzagatti / rm_gps_tags_exiv2.sh
Last active February 10, 2023 21:02
Deleting GPS tags from images using exiv2
# get the GPS keys from a random image
# we assume that all images have the same metadata fields,
# since they were obtained from the same device in similar conditions
export opts=$(exiv2 -p a IMG_2421.JPG | grep -i 'gps' | awk -F " " -v q='"' '{print "-M" q "del " $1 q}' | tr '\n' ' ')
# delete the keys from the metadata
for f in `ls`; do eval "exiv2 $opts $f"; done
@gzagatti
gzagatti / html_table_to_csv.js
Created October 12, 2021 03:10
HTML tables to csv
// selects all table rows element in an HTML document ("tr").
$$("tr").map(
// for each row, select each table data element ("td").
(row) => Array.from(
row.querySelectorAll("td")
// for each data element return the inner text surrounded by quotes and stripped of line breaks.
).map(
(cell) => "'" + cell.innerText.replace("\n", " ") + "'"
// join same row elements with ","
).join(", ")
@gzagatti
gzagatti / soss-mixture.jl
Created September 2, 2021 14:18
A Gaussian mixture model with Soss.jl
### A Pluto.jl notebook ###
# v0.15.1
using Markdown
using InteractiveUtils
# ╔═╡ 6ca58e9a-0707-11ec-1a6c-bdb652993535
begin
using Plots
using StatsPlots
@gzagatti
gzagatti / resize_default_window_safari.sh
Created July 14, 2018 23:18
Resize the default window in Safari
defaults write com.apple.safari "NSWindow Frame BrowserWindowFrame" "0 0 1280 685 0 0 1280 777"
@gzagatti
gzagatti / time_machine_backup.md
Last active November 21, 2020 17:20
Set up time machine with sparse bundles on NAS drivers

Time Machine Backup w/ Sparse Bundles

  1. create a sparse image: hdiutil create -size 600g -type SPARSEBUNDLE -fs "HFS+J" NAME_XXXXXXX.sparsebundle -volname 'untitled' -encryption
  • ideally the sparse bundle should have about twice the size of your Mac's storage
  1. copy sparse bundle to the network and then mount it: rsync -aE NAME_XXXXXXXXXXXX.sparsebundle /Volumes/DRIVE/.
  2. remove the sparse bundle from machine: rm -rf NAME_XXXXXXXXXXXX.sparsebundle
  3. tell time machine to backup your mounted drive: sudo tmutil setdestination /Volumes/TimeMachine
  4. head to System preferences, then open Time Machine settings; you should see your virtual drive as the default backup destination
@gzagatti
gzagatti / missing_deps.sh
Created August 4, 2020 06:42
find required but unavailable shared libraries
find /usr/local/agens/bin -type f -perm /a+x -exec ldd {} \; | grep ‘not found’
@gzagatti
gzagatti / svg2icns
Created February 6, 2020 03:45 — forked from zlbruce/svg2icns
covert svg to icns (with imagemagick)
#!/bin/bash
echo "*** SVG 2 ICNS ***"
if [ $# -ne 1 ]; then
echo "Usage: svg2icns filename.svg"
exit 100
fi
filename="$1"
name=${filename%.*}
ext=${filename##*.}
echo "processing: $name"
@gzagatti
gzagatti / rm_quarantine_attr.sh
Created August 20, 2019 02:26
Remove quarantine attribute from applications installed by admin
xattr -d com.apple.quarantine my_jar.jar
@gzagatti
gzagatti / list_dependency_graphs_sed.sh
Last active August 1, 2018 18:32
List complete nodes which have a given child using sed.
# sometimes we have a hierarchical list and we want to print all of the nodes
# that have a certain child, simple regular expression will only yield the child
# not the whole node. We can use sed to recover the whole node.
#
# let's say we want to recover all packages in pipenv graph that use pandas.
# /^ /!x{...}
# all of lines which do not start with a space are at the top of the
# hierarchy, swap them with the hold space. The hold space has now the node
# and the pattern space contains the contents of the hold space. Execute all
# commands between brackets.