Skip to content

Instantly share code, notes, and snippets.

@clarkttfu
clarkttfu / .gitconfig
Last active March 2, 2023 02:36
Bash Toolbox
[user]
name = Clark
email = clark@abc.com
[alias]
gl = config --list
gg = config --global
l = log --pretty=format:\"%C(yellow)%h %C(cyan)%ad %Cblue%aN %Creset%s\" --date=short --graph
ld = log --pretty=format:\"%h %ad %aN %s\" --date=iso --graph
lh = show --pretty='format:%ce (%cr): %s' --name-only # list HEAD(last commit) files
ll = ls-tree -r master --name-only # list tracked files
@clarkttfu
clarkttfu / StringChunk.js
Created January 3, 2022 04:17
JavaScript Snippets
function chunkLeft (str, size = 3) {
if (typeof str === 'string') {
const chunks = Array(Math.ceil(str.length / size))
const length = str.length
for (let i = 0, index = 0; index < length; i++) {
chunks[i] = str.slice(index, index += size)
}
return chunks
}
}
@clarkttfu
clarkttfu / hostname.js
Created November 11, 2020 11:48
hostname & domain name check
const ipNum = /(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)/.source
const ipv4 = new RegExp(`^${ipNum}(?:\\.${ipNum}){3}$`)
const arpanetHost = /^[a-z]+(?:[a-z0-9-]*?[a-z0-9]+)?$/i
const subdomain = /^[a-z0-9]+([a-z0-9-]*[a-z0-9]+)?$/i
// https://tools.ietf.org/html/rfc1035#section-2.3.1
// http://data.iana.org/TLD/tlds-alpha-by-domain.txt
const TLDs = [
#!/bin/bash
# https://help.ubuntu.com/community/RemoveOldKernels
echo Remove old temp kernel files:
sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*
echo Current kernel:
uname -a
@clarkttfu
clarkttfu / genbackupname.sh
Created December 11, 2015 01:46
Given a file name, if a file or folder with that name already exists, use a name with date suffix. If the date suffix name also exists, append number suffixes
function generate_bakname() {
ORG_NAME=$1
NUM=1
TIME_NAME=${ORG_NAME}_$(date +%Y%M%d_%H%M)
NEW_NAME=${TIME_NAME}
while [[ -d $NEW_NAME || -f $NEW_NAME ]]; do
NEW_NAME=${TIME_NAME}.${NUM}
let NUM=NUM+1
done
echo $NEW_NAME
package prototypes;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
@clarkttfu
clarkttfu / RegexUtil.java
Last active December 7, 2015 02:54
Convert normal search pattern that includes asterisk and question mark to standard regular expression pattern
public static String convert(String expression) {
String regex = "[^\\?\\*]+";
StringBuffer buffer = new StringBuffer();
Matcher m = Pattern.compile(regex).matcher(expression);
while (m.find()) {
m.appendReplacement(buffer, Matcher.quoteReplacement(Pattern.quote(m.group())));
}
m.appendTail(buffer);
return buffer.toString().replaceAll(Pattern.quote("?"), Matcher.quoteReplacement("."))
.replaceAll(Pattern.quote("*"), Matcher.quoteReplacement(".+"));
@clarkttfu
clarkttfu / chinaIncomingTax
Created December 6, 2014 10:39
Funtion to calculate personal incoming tax in China
function tax(taxable, bottomline, partitions) {
var tax = 0;
partitions.reduceRight(function(pre, cur) {
var baseline = parseInt(Object.keys(cur)[0]);
if (pre > baseline) {
tax += (pre - baseline) * cur[baseline.toString()];
return baseline;
} else {
return pre;
}