Skip to content

Instantly share code, notes, and snippets.

View jamesdavidson's full-sized avatar

James Davidson jamesdavidson

View GitHub Profile
@jamesdavidson
jamesdavidson / gzipper.clj
Last active May 29, 2024 02:47
gzipper.clj
;; clj -Sdeps '{:deps {org.clojure/data.csv {:mvn/version "1.1.0"} org.clojure/data.json {:mvn/version "2.5.0"}}}' --main gzipper
(ns gzipper
(:require [clojure.java.io :as io]
[clojure.walk :as walk]
[clojure.string :as string]
[clojure.data.json :as json]
[clojure.data.csv :as csv])
(:import [java.net InetSocketAddress HttpURLConnection]
[java.util.zip GZIPOutputStream]
@jamesdavidson
jamesdavidson / dummy.tf
Created March 27, 2024 10:21
Self signed cert and private key for development and local testing
terraform {
required_providers {
tls = {
version = "4.0.5"
}
local = {
version = "2.5.1"
}
}
}
@jamesdavidson
jamesdavidson / client-vtund.conf
Last active April 11, 2024 08:44
setup for vtun
options {
port 5000; # Connect to this port.
timeout 60; # General timeout
# Path to various programs
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /sbin/ipchains;
ip /sbin/ip;
@jamesdavidson
jamesdavidson / Program.cs
Created December 19, 2023 04:02
nREPL with clojure CLR on dotnet 7
using clojure.lang;
using System.Reflection;
// start up Clojure runtime including compiler
RT.Init();
// make .cljr file resources available from DLL
Assembly.Load("clojure.tools.nrepl");
Assembly.Load("clojure.tools.reader");
@jamesdavidson
jamesdavidson / Program.cs
Last active May 27, 2024 07:17
Alternative to getting started for Clojure CLR with a socket REPL and sending a SigV4 signed request using an extension method
// dotnet --version
// 7.0.100
// dotnet restore
// dotnet run
// rlwrap nc localhost 5555
using System;
using System.IO;
using System.Net;
using System.Net.Http;
@jamesdavidson
jamesdavidson / find-or-create.sql
Created July 17, 2023 17:28
find or create values
-- https://stackoverflow.com/a/70312948
WITH
extant AS (
SELECT id FROM access_code WHERE ("value") = ('asdf')
),
inserted AS (
INSERT INTO access_code ("value")
SELECT 'asdf'
WHERE NOT EXISTS (SELECT FROM extant)
# 12th July 2023
# trying out https://www.daemonology.net/blog/2021-08-12-EC2-boot-time-benchmarking.html
cloudshell-user@ip-10-2-80-7 infra]$ history
1 git clone https://github.com/cperciva/ec2-boot-bench
2 cd ~/ec2-boot-bench/
3 ls
4 cat BUILDING
5 ./configure
@jamesdavidson
jamesdavidson / user.clj
Created June 2, 2023 01:45
Clojure snippet for creating PDF where each page is from a PNG image file
;; org.clojure/clojure {:mvn/version "1.11.1"}
;; com.github.librepdf/openpdf {:mvn/version "1.3.30"}
(import 'com.lowagie.text.Document)
(import 'com.lowagie.text.Image)
(import 'com.lowagie.text.PageSize)
(import 'com.lowagie.text.pdf.PdfWriter)
(def doc (new Document))
(def os (io/output-stream "output.pdf"))
@jamesdavidson
jamesdavidson / scatterplot.clj
Created May 24, 2021 07:48
scatterplot.clj
;; clj -Sdeps '{:deps {org.apache.poi/poi {:mvn/version "4.1.1"} org.apache.poi/poi-ooxml {:mvn/version "4.1.1"}}}'
;; based on https://stackoverflow.com/questions/59061235/apache-poi-manage-scatter-chart
(ns user
(:import [org.apache.poi.xssf.usermodel XSSFWorkbook]
[org.apache.poi.ss.util CellRangeAddress]
[org.apache.poi.xddf.usermodel.chart XDDFDataSourcesFactory ChartTypes AxisCrosses AxisPosition MarkerStyle]
[org.apache.poi.ss.usermodel.charts LegendPosition]
[java.io FileOutputStream]))
@jamesdavidson
jamesdavidson / move-namespace.clj
Created April 20, 2020 08:48
How to mess around with (ns ...) declarations in Clojure
(binding [*ns* (find-ns 'some.other.namespace)]
(with-open [config (java.io.PushbackReader. (java.io.FileReader. "config.clj"))]
(loop []
(when-let [form (read {:eof nil} config)]
(do (eval form) (recur))))))
;; see also https://gist.github.com/vkz/4c32cdff75ba7254ed0c