Skip to content

Instantly share code, notes, and snippets.

@upsuper
upsuper / import-playcount.py
Created February 12, 2023 11:01
Scripts to import from iTunes
#!/usr/bin/env python3
import plistlib
import sqlite3
import uuid
from collections import defaultdict
from datetime import datetime
from typing import NamedTuple
from urllib.parse import unquote
@upsuper
upsuper / delayed_balance.py
Created June 27, 2021 10:29
Beancount plugin to handle transactions geting delayed and not being included in the next bank statement
#!/usr/bin/env python3
# Copyright (C) 2021 Xidorn Quan
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
#!/usr/bin/env python3
# Copyright (C) 2021 Xidorn Quan
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
@upsuper
upsuper / transform.yaml
Last active October 5, 2020 02:46
An example transformation file for translated Simplified Chinese result of 2020 State of Rust survey. See https://github.com/upsuper/csv-transformer
---
- transform: timestamp
column: "C: End time"
header: "Timestamp"
from: "%d-%b-%Y %H:%M:%S"
to: "%d/%m/%Y %H:%M:%S"
- "E: Do you use Rust?"
- "F: How long did you use Rust before you stopped?"
- "G: How long ago did you stop using Rust?"
- transform: join
@upsuper
upsuper / Cargo.toml
Last active July 11, 2019 10:16
Verify whether there is any MD5 conflict in all possible Chinese mobile numbers https://twitter.com/upsuper/status/1148222832540672001
[package]
name = "cnmobile-md5"
version = "0.1.0"
authors = ["Xidorn Quan <me@upsuper.org>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[profile.release]
lto = true
@upsuper
upsuper / split-servo.py
Created August 3, 2018 04:23
A filter script of `hg transplant` for coordinated landing for Stylo development
#!/usr/bin/env python
# - * - coding: UTF-8 - * -
import sys
from subprocess import Popen, PIPE
SERVO_PATH = r'c:\\mozilla-source\\servo'
msg = sys.argv[1]

Keybase proof

I hereby claim:

  • I am upsuper on github.
  • I am upsuper (https://keybase.io/upsuper) on keybase.
  • I have a public key ASBKx3KVHC8RM6BT-FdgQRvI3tcyORQ-ctJl8Kwhe9VMdAo

To claim this, I am signing this object:

@upsuper
upsuper / bind-backup.sh
Last active March 13, 2024 17:08
Script to automatically bind and unbind external USB drive on Synology NAS
#!/bin/bash
SERIAL="00000000"
echo "Looking for device with serial $SERIAL..."
for d in /sys/bus/usb/devices/*-*; do
if [[ -f "$d/serial" ]]; then
serial=$(<"$d/serial")
if [[ "$serial" = "$SERIAL" ]]; then
device="$(basename $d)"
@upsuper
upsuper / RevokeWoSign_FirefoxOSX.sh
Last active September 28, 2019 08:11
Script to revoke WoSign-related certificates on Firefox for OS X
#!/bin/bash
CERTUTIL="/usr/local/opt/nss/bin/certutil"
if [ ! -f "$CERTUTIL" ]; then
echo "certutil is not found." >&2
echo "You can install it via 'brew install nss'." >&2
exit 1
fi
RCC_DIR=RevokeChinaCerts
#include <iostream>
#include <stddef.h>
namespace mozilla {
template<typename Iterator>
struct IteratorTraits
{
typedef typename Iterator::ValueType ValueType;