dump objects info from JavaScript

Dump JavaScript object for PyV8 and NodeJS.

POC

function dump(obj){
  for(var item in obj){
    if(typeof item === "Object"){
      Print("Object's source is:" + item.toSource());
      dump(item);
    }else if(typeof obj[item] ==="Object"){
      dump(obj[item]);
    }else{
      Print(item.toString());
    }
  }
}

XORWithAdd加密算法设计问题

以XOR为基础的加密算法设计时,不能同时使用XOR和加法。代码混淆、内存保护等安全机制中常用XOR类算法进行快速变换,隐藏信息。

使用PyV8构建JavaScript抽象语法树(AST)

简介

本文介绍使用PyV8生成JavaScript的抽象语法树的实现过程,使用该语法树进行JavaScript代码优化、变形、压缩等将在后续进行介绍。

编译器(解释器)对语言的处理过程大致分为:词法分析->语法分析->中间代码生成->代码优化->生成可执行模块/字节码解释执行。

backtrace on *nix and Windows

最近读OceanBase的源码,摘录一段错误诊断比较有用的代码:

//#define OCEAN_BTREE_CHECK
#ifdef OCEAN_BTREE_CHECK
  #include <execinfo.h>
  #define OCEAN_BTREE_CHECK_FALSE(cond, format, args...) if ((cond)) \
  {                                  \
    char _buffer_stack_[256];                    \
    {                                \
      void *array[10];                       \
      int i, idx=0, n = backtrace(array, 10);          \
      for (i = 0; i < n; i++) {                  \
      idx += snprintf(idx+_buffer_stack_, 25, "%p,", array[i]);  \
      }                              \
    }                                \
    TBSYS_LOG(ERROR, "%s" format, _buffer_stack_, ## args);    \
  }
  #define OCEAN_BTREE_CHECK_TRUE(cond, format, args...) \
    OCEAN_BTREE_CHECK_FALSE(!(cond), format, ## args)
#else
  #define OCEAN_BTREE_CHECK_TRUE(cond, format, ...)
  #define OCEAN_BTREE_CHECK_FALSE(cond, format, ...)
#endif