Skip to content

Instantly share code, notes, and snippets.

Avatar

Sandip Bhattacharya sandipb

View GitHub Profile
@sandipb
sandipb / decrypt_pdf.sh
Created May 10, 2023 21:25
Script to decrypt PDFs using qpdf. Will ask for password only if needed.
View decrypt_pdf.sh
#!/bin/bash
set -e -o pipefail
usage() {
cat <<HELP
USAGE: $0 PDF_FILE [OUTPUT_DIR|OUTPUT_FILE]
Decrypts given pdf file usingh qpdf by prompting for a password.
@sandipb
sandipb / route.sh
Created April 22, 2023 06:58
How to enable a linux host to route between two lans
View route.sh
#!/bin/bash
# $PRIVATE_IF is private lan, $PUBLIC_IF is public lan
# the interface which is connected to the interface.
# The default route of this host is already set via this interface
PUBLIC_IF=enp1s0
# The interface connecting to the internal lan, which needs this host to be a router to the Internet
PRIVATE_IF=enp2s0
@sandipb
sandipb / create new django project.sh-session
Last active March 13, 2023 17:52
Creating new django project
View create new django project.sh-session
$ mkdir dtemp
$ cd dtemp
$ poetry init
This command will guide you through creating your pyproject.toml config.
Package name [dtemp]: Django Test
@sandipb
sandipb / age_sorted_names.pp
Created July 20, 2022 13:31
Puppet sort hash
View age_sorted_names.pp
$data = [
{'name'=> 'emily', 'age'=> 6},
{'name'=> 'john', 'age'=> 5},
{'name'=> 'jade', 'age'=> 4},
{'name'=> 'grant', 'age'=> 2},
]
function age_sorted_names($ar) >> Array {
$ar.map |$idx, $entry| {
[$entry['age'], $entry['name']]
@sandipb
sandipb / README.md
Last active May 5, 2022 02:46
Fix cups-pdf not printing PDFs with restrictions
View README.md

Fix problem when cups-pdf (actually Ghostscript) refuses to print PDF files with restrictions

Specifically, even if the file has no printing restrictions, like many government forms do (my specific itch), Ghostscript refuses to print the file and generates a blank pdf.

Steps to fix

  1. Put contents of unblockprint.sh in an executable file named /usr/lib/cups/filter/unblockprint. Make sure that the permissions of this file matches others in the same directory.
  2. Put local.convs in /etc/cups
@sandipb
sandipb / playbook.yml
Created September 27, 2021 22:58
Get non-matching kernels on all hosts using ansible
View playbook.yml
---
- hosts: ubuntu
gather_facts: yes
vars:
kernel_does_not_match: "{{ (ansible_distribution == 'Ubuntu') and ( ansible_kernel != '5.4.0-86-generic') }}"
output_path_local: /tmp/host_kernels
tasks:
- block:
- name: Add matching host to file
@sandipb
sandipb / Description.md
Last active August 5, 2020 10:35
Example code to use the Golang httprouter library
@sandipb
sandipb / newcert.sh
Created June 21, 2020 11:37
Bash script to generate new server certificates and private key, for the OpenSSL Certificate Authority guide by Jamie
View newcert.sh
#!/bin/bash
# set -x
set -e
cd $(dirname $0)
# The path to the homebrew install on mac. Change to point to your own installation
OPENSSL="/usr/local/Cellar/openssl@1.1/1.1.1g/bin/openssl"
NAME=${1:?Need a hostname for generating certs}
DAYS=375
export SAN="DNS:$NAME"
@sandipb
sandipb / benchmark_load.py
Created June 12, 2019 00:32
Benchmarking json loading across json and ujson (precision floats and normal)
View benchmark_load.py
import json
import ujson
from timeit import repeat
def decode_json(data):
json.loads(data)
def decode_ujson(data, precise=False):
@sandipb
sandipb / test.py
Last active June 11, 2019 23:59
ujson repr trips up json dumps
View test.py
from __future__ import print_function
import ujson, json
data = '{ "prod-lsg1": { "max_float": 0.0046288111 } }'
print("json dumps, w/o precise float: ", json.dumps(ujson.loads(data)))
print("json dumps, w/ precise float: ",json.dumps(ujson.loads(data, precise_float=True)))
print("ujson dumps, w/o precise float: ", ujson.dumps(ujson.loads(data)))
print("ujson dumps, w/ precise float: ",ujson.dumps(ujson.loads(data, precise_float=True)))