Skip to content

Instantly share code, notes, and snippets.

@cuixin
cuixin / des.go
Last active October 30, 2023 06:52
des ecb mode in golang
package main
import (
"bytes"
"crypto/des"
"errors"
)
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
@cuixin
cuixin / unquote_nginx.go
Created December 10, 2022 12:35
unquote nginx hex string in golang
package main
import (
"bytes"
"encoding/hex"
"fmt"
)
func UnquoteHex(str string) ([]byte, error) {
var (
@cuixin
cuixin / json_to_map.go
Created October 25, 2017 01:53
json to map[string]interface{} example in golang
package main
import (
"encoding/json"
"fmt"
)
func dumpMap(space string, m map[string]interface{}) {
for k, v := range m {
if mv, ok := v.(map[string]interface{}); ok {
@cuixin
cuixin / csv.lua
Created March 14, 2013 07:39
Using lua to parse CSV file to a table.
-- Using lua to parse CSV file to a table.
-- Notice: first line must be data description filed.
-- The separator is '|', change it if you want.
-- Usage: csv = require('csv')
-- tab = csv.load('test.csv', ',')
-- table.foreach(tab[1], print)
-- print(tab[1].you_field)
--encoding=utf-8
@cuixin
cuixin / lua_safe_random.lua
Created January 3, 2020 06:07
generate lua safe random numbers
for i = 1, 10000 do
local t = os.time()
local c = os.clock()
local seed = t + (c*1000000)
math.randomseed(seed)
print(t, c, seed, math.random(1, 2147483647))
end
@cuixin
cuixin / redis-migrate.sh
Created December 19, 2019 06:24 — forked from nicStuff/redis-migrate.sh
Comfort tool for migrating redis keys among instances. Supports KEYS syntax matching, authentication and TTL
#!/bin/bash
######
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
######
@cuixin
cuixin / lua_match_pattern.lua
Created August 26, 2019 07:48
lua match pattern example.
local Receiver = {} do
Receiver.__index = Receiver
function Receiver.new(t)
return setmetatable(t or {}, Receiver)
end
function Receiver:__newindex(k, v)
assert(type(v) == "function")
local curr = self
for comp in k:gmatch "(%w+)" do
@cuixin
cuixin / table_dump.lua
Last active July 17, 2019 06:09
lua table.dump to dump a whole table to print_r.
local type = type
local tostring = tostring
local table = table
local table_insert = table.insert
local table_concat = table.concat
local pairs = pairs
return function(t, name, indent)
local table_list = {}
local function table_r(t, name, indent, full)
@cuixin
cuixin / MersenneTwister.cs
Created August 7, 2014 15:42
Mersenne Twister in c# & golang
using System;
public class MT19937
{
private const ulong N = 312;
private const ulong M = 156;
private const ulong MATRIX_A = 0xB5026F5AA96619E9L;
private const ulong UPPER_MASK = 0xFFFFFFFF80000000;
private const ulong LOWER_MASK = 0X7FFFFFFFUL;
private static ulong [] mt = new ulong[N+1];
@cuixin
cuixin / tinypng.sh
Created January 4, 2019 09:55
tinpng bash example
#!/bin/bash
function tinypng() {
if [[ -z $APK_KEY ]]; then
echo "API_KEY not defined";
return 1;
fi
if [[ -z $1 ]]; then
echo "path is empty";
return 1;
fi