Skip to content

Instantly share code, notes, and snippets.

View daniel-j-h's full-sized avatar
🤗

Daniel J. H. daniel-j-h

🤗
View GitHub Profile
@daniel-j-h
daniel-j-h / small_components.cc
Created October 13, 2016 10:33
For http://lists.boost.org/boost-users/2016/10/86809.php [Boost-users] boost graph pruning vertices (nodes)
#include <iostream>
#include <iterator>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <boost/graph/compressed_sparse_row_graph.hpp>
#include <boost/graph/filtered_graph.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graph_utility.hpp>
@daniel-j-h
daniel-j-h / coroutine.cc
Created January 18, 2016 13:46
Boost.Coroutine meets Boost.Graph
#include <vector>
#include <iostream>
#include <iterator>
#include <boost/graph/compressed_sparse_row_graph.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/coroutine/all.hpp>
@daniel-j-h
daniel-j-h / csr_example.cc
Created October 7, 2015 11:43
Boost.Graph --- Compressed Sparse Row Example
#include <boost/graph/compressed_sparse_row_graph.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graph_utility.hpp>
#include <vector>
#include <iostream>
#include <iterator>
#include <utility>
@daniel-j-h
daniel-j-h / filter.cc
Created October 7, 2015 11:43
Boost.Graph --- Filtered View Example
#include <boost/graph/compressed_sparse_row_graph.hpp>
#include <boost/graph/filtered_graph.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/range/algorithm/for_each.hpp>
#include <vector>
#include <iostream>
#include <iterator>
@daniel-j-h
daniel-j-h / MortonCodeHaswell.cc
Last active October 13, 2020 19:09
Making use of Haswell's BMI2 PDEP instruction for Morton Codes / Z-Order
#include <cstdint>
#include <immintrin.h>
// Z-order via bit interleaving a and b as in: a[31]b[31]a[30]b[30]...
inline std::uint64_t zorder(std::uint32_t a, std::uint32_t b) {
return _pdep_u64(a, 0xaaaaaaaaaaaaaaaaULL) | _pdep_u64(b, 0x5555555555555555ULL);
}
@daniel-j-h
daniel-j-h / input-gdalinfo.txt
Created September 3, 2020 11:26
rasterio `rio convert` ground control point issue
Driver: GTiff/GeoTIFF
Files: grd-vv-native.tif
Size is 26569, 16673
GCP Projection =
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["unnamed",6378137,298.25722356049,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
FROM ubuntu:20.04
ENV LANG="C.UTF-8" LC_ALL="C.UTF-8" PATH="/home/python/.poetry/bin:/home/python/.local/bin:$PATH" PIP_NO_CACHE_DIR="false"
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3 python3-pip python-is-python3 curl ca-certificates && \
rm -rf /var/lib/apt/lists/*
RUN groupadd --gid 1000 python && \
useradd --uid 1000 --gid python --shell /bin/bash --create-home python
@daniel-j-h
daniel-j-h / expand_pack.cc
Last active April 20, 2020 13:10
expand_pack --- shortcut for parameter pack expansion into swallowing initializer_list
#include <cstdlib>
#include <iostream>
#include <initializer_list>
#define expand_pack(...) (void) std::initializer_list<int>{((void)(__VA_ARGS__), 0)...};
template <typename... Iter>
void increment_all(Iter&... iters) {
expand_pack(++iters);
}
@daniel-j-h
daniel-j-h / crdts.py
Created March 19, 2019 23:18
Conflict-free replicated data type (CRDT) counters - strong eventual consistency in a distributed system https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type
import random
class GrowCounter:
'''Convergent conflict-free replicated data type state based grow-only counter.
Guarantees strong eventual consistency.
'''
def __init__(self, n):
assert n > 0, 'at least one node in cluster'
@daniel-j-h
daniel-j-h / main.cc
Last active October 10, 2018 16:52
C++ Intel Threading Building Blocks task scheduling observer
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <mutex>
#include <thread>
#include "tbb/task_scheduler_observer.h"
#include "tbb/task_scheduler_init.h"
#include "tbb/blocked_range.h"