Skip to content

Instantly share code, notes, and snippets.

View nghiaht's full-sized avatar

Huỳnh Trọng Nghĩa nghiaht

View GitHub Profile
library(maptools)
library(geosphere)
# load USA state-level spatial data
# download from http://gadm.org
# click the 'download' tab
# select county = 'united states', file format = 'R', click ok
# download 'level 1' for state-level data
load("USA_adm1.RData")
@nghiaht
nghiaht / gist:d0ec99debc61cfab95a6e4c4767949ea
Last active August 8, 2018 08:23
Delete Redis keys by patterns
redis-cli --raw keys "$PATTERN" | xargs redis-cli del
tar -xzf <file>.tar.gz
@nghiaht
nghiaht / prepare_python_mysqlclient.sh
Last active October 30, 2018 04:51
Setup steps for python mysqlclient
cd ~
mkdir virtualenvs
cd virtualenvs
pip install virtualenv
virtualenv default # or virtualenv -p python3 default (depends on environments)
sudo apt-get install -y python-dev # or python3-dev
sudo apt-get install -y libmysqlclient-dev
source default/bin/activate
@nghiaht
nghiaht / jest_enzyme_material_ui_select_on_change.js
Last active December 6, 2018 08:06
Jest Enzyme: onChange for material-ui Select (SelectInput - react-admin)
const handleSubmit = sinon.spy();
const wrapper = mount(
<Provider store={store}>
<MyForm onSubmit={handleSubmit} />
</Provider>
);
// Assume MyForm having a platform select input whose name is "platform"
const elem = wrapper.find("Select[name='platform']");
elem.prop("onChange")("iOS"); // Get onChange and call directly instead of the traditional elem.simulate("change", {target: {value: "iOS"}}) for <select> or <input>
@nghiaht
nghiaht / replace_multiple_regex_matches.js
Created July 24, 2019 10:23
replace multiple regex matches in Javascript
var r = /t\-test|test/g; // Note: /g
var input = "these are test t-test";
var output = input.replace(r, "") // Replace matched with ""
@nghiaht
nghiaht / check_keystore.sh
Created October 18, 2018 03:32
Check keystore expiration date
keytool -list -v -keystore keystore.jks
# Enter password
# Check the line "Valid from..."
@nghiaht
nghiaht / gist:6fc19596453e325bce7586e2e5f0c432
Created November 23, 2020 06:56
Source directory containing current symlinked script
SCRIPT_REAL_DIR=$(dirname $(realpath "$0"))
echo ${SECRIPT_REAL_DIR}
@nghiaht
nghiaht / responsive-table-ant-design.js
Created August 31, 2021 09:54
Responsive table with Ant Design
import { Table } from "antd";
...
<Table
...
scroll={{ x: "max-content" }}
/>
...
@nghiaht
nghiaht / 3des_using_node_builtin_crypto.js
Last active March 11, 2022 22:11
Sample codes for encrypting and decrypting by 3DES using node-forge or built-in crypto module
const crypto = require("crypto");
/**
* Encrypt 3DES using Node.js's crypto module *
* @param data A utf8 string
* @param key Key would be hashed by md5 and shorten to maximum of 192 bits,
* @returns {*} A base64 string
*/
function encrypt3DES(data, key) {
const md5Key = crypto.createHash('md5').update(key).digest("hex").substr(0, 24);