28 Aug 2013
获取手机的Vendor ID
$ system_profiler SPUSBDataType
Android:
Product ID: 0x3f10
Vendor ID: 0x1d91
Version: 2.31
Serial Number: MotorolaXT788
Speed: Up to 480 Mb/sec
Manufacturer: Android
Location ID: 0x1d112000 / 8
Current Available (mA): 500
Current Required (mA): 500
创建adb_usb.ini
$ vim ~/.android/adu_usb.ini
添加0x1d91
重新连接usb接口,完成。
24 Jul 2013
OpenResty是一个全功能的web服务器,以Nginx为核心,集成了Lua模块。
$ ssh pi@raspberrypi.local
$ sudo apt-get update
$ sudo apt-get install libreadline-dev libpcre3-dev libssl-dev perl libncurses5-dev
$ wget http://openresty.org/download/ngx_openresty-1.4.1.1.tar.gz
$ tar xzvf ngx_openresty-1.4.1.1.tar.gz
$ cd ngx_openresty-1.4.1.1
$ ./configure --with-luajit
$ make
$ make install
Hello World
$ mkdir work
$ cd work
$ mkdir logs/ conf/
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
location / {
default_type text/html;
content_by_lua '
ngx.say("hello, world
")
';
}
}
}
$ PATH=/usr/local/openresty/nginx/sbin:$PATH
$ export PATH
$ nginx -p `pwd`/ -c conf/nginx.conf
02 Jul 2013
table(table table-bordered).
|_.宏|_.说明|
|CCB_MEMBERVARIABLEASSIGNER_GLUE|绑定成员变量
CCBMemberVariableAssigner::onAssignCCBMemberVariable|
|CCB_SELECTORRESOLVER_CCMENUITEM_GLUE|绑定菜单事件
CCBSelectorResolver::onResolveCCBMenuItemSelector|
|CCB_SELECTORRESOLVER_CCCONTROL_GLUE|绑定按钮事件
CCBSelectorResolver::onResolveCCBControlSelector|
JavaScript Controlled的坑
原来Cocos2dBuilder是区分脚本[lua/js]与C++的,如果选中了 Document > JavaScript Controlled 则表明这个ccb是与脚本绑定的,并且要是Owner var类型的绑定。
所以创建ccb之后要考虑好这个ccb是与脚本还是C++进行绑定的。
28 Jun 2013
Lambda表达式:匿名函数的实现。
[] // 变量参考,用于闭包
() // 函数参数列表
{} // 函数体
() // 函数调用,如果函数有参数,那应该是在些传入
[]() { std::cout << "Hello Lambda!!" << std::endl; }();
// 一个简单的闭包例子
int num = 10;
auto func = [&num]() { num+= 100; std::cout << "num:" << num << std::endl; };
std::cout << "num:" << num << std::endl; // 输出10
func(); // 输出110
std::cout << "num:" << num << std::endl; // 输出110,由于num是以引用的方式传入的,所以会修改
10 Jun 2013
Mat是OpenCV中基本的图像容器,2.0之前的版本是IplImage对象。它比IplImage有一个好处就是不需要再手动内存,而是让程序自动管理。
Mat类带有两部分数据:矩阵的头信息与一个像素数据指针。
Mat的内存管理,每个Mat对象有自己的头信息,当拷贝的时候只是拷贝头信息与指针地址。不是数据本身。
Mat A, C; // 创建A与C两个Mat对象,只包含头信息部分。
A = imread("image.jpg", CV_LOAD_IMAGE_COLOR); // 读取图片并把图像的数据指针赋值给A
Mat B(C); // 使用拷贝构造函数
C = A; // 使C等于A,头信息
上面三种方式创建Mat对象只有头信息部分是不同的,指针都指向了相同的图像数据,如果修改其中任意一个Mat对象的图像,那大家都会受到影响。
通过范围的大小来创建一个Mat对象
Mat D(A, rect(x, y, width, height)); // 通过范围来创建
Mat E = A(Range:all(), Range(row, column)); // 通过行列来创建
通过构造函数创建
Mat M(row, column, type, ScalarObj);
Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255));
通过数组来创建
int sz[3] = {2, 2, 2};
Mat L(3, sz, CV_8UC(1), Scalar::all(0)); // 8位1通道
通过IplImage创建
IplImage *img = cvLoadImage("image.jpg", 1);
Mat mtx(img);
通过create方法
Mat M;
M.create(row, column, type);