Skip to content

Instantly share code, notes, and snippets.

View rangercyh's full-sized avatar
☠️
苟且偷生

caiyiheng rangercyh

☠️
苟且偷生
View GitHub Profile
@rangercyh
rangercyh / redisBackup.js
Created December 8, 2018 02:54
redis process
var redis = require('redis');
var leveldb = require('level');
var root = "./";
var dbfile = root + "backup.db";
var channel = [
"__keyevent@0__:set",
"__keyevent@0__:hset",
"__keyevent@0__:hmset",
"__keyevent@0__:incrby"
@rangercyh
rangercyh / filecheck.js
Created December 8, 2018 02:49
filecheck
var reg = /[^\w\d_]/ig;
var fileList = {};
var wrongFile = [];
var wrongDir = [];
var bigFile = [];
var sameFile = [];
var totalFile = 0;
var fileSize = 0;
var fileType = {};
var maxFileList = [];
@rangercyh
rangercyh / compress.js
Created November 26, 2018 02:48
compress png through pngquant and optipng
var originSize = 0
var newSize = 0
var fs = require('fs')
var path = require('path')
var execSync = require('child_process').execSync
function walk(dir) {
console.log('dir = ', dir)
var dirList = fs.readdirSync(dir), temp
@rangercyh
rangercyh / README.md
Created November 19, 2018 06:39 — forked from xjdrew/README.md
苹果支付流程

预先说明

目前游戏里面出售的道具,都属于consumable products(消耗性商品),下面的说明流程都是针对这类商品的。别的类型商品处理方法,不完全一样。

注册支付接口回调

app启动的时候即注册支付队列消息的回调者,这个回调者应该是一个单体类,保证在app整个生命周期都存在。ios会回调之前未处理完成的订单。

- (id)init {
    if((self = [super init])) {
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
 }
@rangercyh
rangercyh / README.md
Created November 19, 2018 02:43 — forked from xjdrew/README.md
多人战斗转发服务

功能

实现多个玩家联机战斗时的操作转发。

流程

玩家先通过组队服务,组好队伍。队长点击开始攻击后,玩家获得本次战斗的token,再连接战斗转发服务。

战斗转发服务为每个队伍创建一个房间,并仅允许该队伍的玩家加入该房间。房间内的每个玩家是完全平等的,所以每个玩家都不能发送指示性指令,比如开始战斗,结束战斗之类的。

每个玩家根据协议发送自己的状态信息,由服务决定当前应处的状态。

@rangercyh
rangercyh / pathfinding.js
Last active September 30, 2019 04:38
pathfinding
// 图
class Graph {
constructor(count, adj_list) {
this.count = count // 记录顶点的个数
this.adj = new Array(count) // 邻接表
// 初始化邻接表
for (let i = 0; i < count; i++) {
this.adj[i] = new Array()
}
for (let j = 0, len = adj_list.length; j < len; j++) {
@rangercyh
rangercyh / client.js
Last active September 19, 2018 05:41
lua string.pack('>s2')
const net = require('net');
const rpc = require('./rpc');
var seconds = Math.floor(Date.now() / 1000);
const socket = net.connect(8290, '127.0.0.1');
var data = {
data: {
string: 'asdfasdf aasdf喂你好吗?',
},
cmd: 'hall.echo',
/*
* Starting with the semicolon is in case whatever line of code above this example
* relied on automatic semicolon insertion (ASI). The browser could accidentally
* think this whole example continues from the previous line. The leading semicolon
* marks the beginning of our new line if the previous one was not empty or terminated.
*
* Let us also assume that MyGame is previously defined.
*
* MyGame.lastRender keeps track of the last provided requestAnimationFrame timestamp.
* MyGame.lastTick keeps track of the last update time. Always increments by tickLength.
@rangercyh
rangercyh / print_file.lua
Last active January 7, 2016 08:48
print to file
local osprint = print
print = function(...)
local f = io.open('minifight', 'a+')
f:write(table.concat({...}, '\t') .. '\n')
f:close()
end
@rangercyh
rangercyh / memlog.lua
Created December 30, 2015 04:52 — forked from cloudwu/memlog.lua
Convert malloc log
local yield = coroutine.yield
local function loadlog(filename)
-- local log = {}
local f = assert(io.open(filename))
for line in f:lines() do
if line == "=======" then
break
end
local ptr, osize, nsize, ret = line:match("([^ ]+) (%d+) (%d+) ([^ ]+)")