昨晚的决意

大抵是受到小汤圆要去实习了的刺激,昨天晚上躺在床上想了很久,自己应该干什么,不该干什么,于是就有了这些决意。

1.减少SNS时间。具体做法是减少人人、bbs的使用时间。其实在上面很多时候是闲逛,完全没什么收获。所以大抵以后一天上两三次人人就够了吧。
2.停止玩微城市。等到了50级,土地成为方形之后就把整个土地卖空。原因是这个游戏花费时间太多了,因为每5分钟就有能量,能量上限30,相当于每两个多小时就需要至少操作一次,而且每次的操作时间都比较长,不像魔法卡片那样丢着一天也照样收获的。所以我决定不玩这游戏了。
3.加速linux下CBCD的修改和云平台下的移植。虽然deadline定在10月底,但是这样没有很大的动力。为了腾出时间进行paper reading和实际设计算法,还是应该早点干完手头的活的。
4.每天早睡早起。1点睡觉,8:30起床吧。

既然不能实习,那么也不应该把时间就这么浪费掉。与其现在happy,不如苦上一阵子,发个paper啥的,然后就有毕业的资本了,然后就能安心于自己的事情了。

_______________________________________________________
上面是昨天晚上下的决心。然而早上依旧如故,起床,玩游戏,再睡觉。下午去实验室,给一个MAC本本分区,结果弄得分区表混乱了(因为之前不知道MAC本本要用MAC和XP的话XP如故要多分区还得做一些操作),幸好还有PE,最终恢复原样了(虽然还是没能分区,相当于白做了2小时)。然后就在看海贼王的漫画,猛然发现三个多月没看漫画了,惭愧啊。。。回宿舍觉得困了,就睡个觉(居然睡了2小时,导致现在不怎么困了),然后看了F1(舒马赫又退赛了……),然后就10点多了,于是也无心学术了。唉,决心是好的,可是具体执行却又那么困难,原来我是那么没有毅力的人么……

努力啊!

解决linux下WaitForMultipleObjects的一种方法

借助了linux下的Semaphore(信号量),实现了一种简单的WaitForMultipleObjects。
关于Semaphore参考如下的文章:
http://blog.163.com/wulin_shenghua/blog/static/27580770200952644311771/

具体思想:多个线程共享一个信号量,子线程结束后让信号量+1,主线程做n次信号量-1的操作(为0的时候会自动等待),等到做完n次-1,说明n个子线程都完成了+1,说明全部子线程都执行完了,就可以继续了。
这只是WaitForMultipleObjects的一种简单替代,因为没有返回值,所以不能判断某个线程出问题与否。

#include #include
#include
#include
using namespace std;

typedef struct pinfo
{
sem_t * bin_sem;
int id;
}pinfo;

void *thread_function(void *arg)
{
pinfo *t=(pinfo*)arg;
printf("thread_functiont%dt--------------sem_waitn",t->id);
int ii=t->id + 1;
sleep(ii); //暂停一会,这里模拟程序执行
sem_post(t->bin_sem); //信号量+1
printf("sem_donet%dn",t->id);
return NULL;
}

int main()
{
int res;
int n=10; //设置个线程
sem_t bin_sem; //设置信号量,下面初始化这个信号量

res = sem_init(&bin_sem, 0, 0);

if (res != 0)
{
perror("Semaphore initialization failed");
}
printf("sem_initn");
int i;
pinfo *p=new pinfo[n]; //创建个线程的参数结构体
pthread_t *a_thread=new pthread_t[n];
for(i=0;i

ubuntu下安装OpenCV2.0、eclipse编译环境

OpenCV对于windows用户而言非常友好,对于Visual Studio的配置也很方便。然而,在linux下,因为各种lib文件的原因,配置OpenCV并不是那么轻松的一件事。趁着今天刚刚配完ubuntu下的OpenCV2.0和eclipse环境,说说具体过程吧。
(参考文献:
http://www.opencv.org.cn/index.php/Debian%E4%B8%8B%E5%AE%89%E8%A3%85
http://hi.baidu.com/wr_dcy/blog/item/b425151e237989dca6866950.html)
1.下载OpenCV
去OpenCV中文官方网站下载即可。http://www.opencv.org.cn/ 注意linux选择unix版本的OpenCV即可。这里我选择2.0.0,其它版本的区别不是很大。
2.解压OpenCV到一个你方便操作的位置(比如/home/user/OpenCV)user为你的用户名。ubuntu是可以用右键解压的。
3.安装各类软件:(注意,需要安装libjpeg,否则jpeg文件不能load)
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gawk
sudo apt-get install libjpeg-dev
sudo apt-get install libtiff-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
sudo apt-get install libgtk2.0-dev
4.在OpenCV文件夹下configure
user@master:~OpenCV$ ./configure
然后
make
sudo make install
5.这时候,OpenCV算是完成了。可以自己写一个小的测试程序,也可以去OpenCV文件夹里面的samplesc目录下面去试试samples 。例如:
g++ `pkg-config opencv –libs –cflags opencv` drawing.c -o drawing
然后./drawing
就可以看到一个示例程序运行了。

————————————————————————————
6.安装eclipse。
去eclipse官方网站http://www.eclipse.org/ 下载eclipse for C++ linux版本的。
解压。
这里需要之前安装过jdk环境。http://developer.51cto.com/art/201012/238581.htm 按照这篇文章里面写的就行了。注意/etc/profile里面的东西别写错,否则下次开机会进不去图形界面的。
7.运行eclipse。
8.新建一个项目,里面新建一个.c文件,然后写上下述代码:

#ifdef _CH_
#pragma package
#endif
#define CV_NO_BACKWARD_COMPATIBILITY

#ifndef _EiC
#include "cv.h"
#include "highgui.h"
#endif
#include
#include

int main( int argc, char** argv )
{
IplImage* img=cvLoadImage("baboon.jpg",1);
cvNamedWindow("haha",1);
cvShowImage("haha",img);
cvWaitKey(0);
int params[3];
params[0] = CV_IMWRITE_JPEG_QUALITY;
params[1] = 85;//设置s压缩度
params[2] = 0;

cvSaveImage("t.jpg",img,params);
return 0;
}

这个小程序会读取baboon.jpg(在samplesc文件夹下面有),显示,然后在你按键之后保存这个图到t.jpg。当然,现在肯定编译不过咯。现在要设置各种路径:
eclipse下:
project-properties- c/c++ general-path symbols
include中间添加:
/home/user/OpenCV/include/opencv
注意选中add to all configurations all languages
libraries添加:
cv
cxcore
highgui
library path 添加:
/usr/local/lib
然后确定。这样重新编译这个代码就可以运行了。

后面么,就像在windows下那样使用OpenCV吧~

VS2008的安装、修复时一个error的解决方法

error:VS70pgui: [2] 下列卷没有足够的磁盘空间用于修复/重新安装
原因:VS2008安装时会在系统剩余空间最大的磁盘分区里面放一点东西。比如你当时插着移动硬盘,然而后来拔掉了,再安装VS2008的补丁就会报磁盘空间不足。或者说你重新分配了盘符(比如苦逼的我……)
解决方法:卸载VS2008,然后重装即可。

everything about proxy

最初建立代理服务器的目的是小浩浩在清华只能用ipv6上网,而没法访问ipv4网站。于是某个周末聊到了这个问题,于是就自己试着建了个代理服务器。以前用过ccproxy,但是非注册版只能3个用户连接,比较少,所以就用了apache,折腾了一晚上搞定了。

然后就一发不可收拾了。想着要给在外国读书的孩子上国内网站的机会(esp学校bbs、优酷、土豆等),就开始研究了。可以直连国际网的比较好办,在浏览器里面输入代理地址即可。而也有诸如hw同学这样的bug例子的存在:本身上网需要代理服务器了,那么怎么办呢?

一种方法是二次代理,然而,大部分的二次代理都需要中间服务器的软件支持,而且需要诸如socks5这样的代理支持,这点只有代理服务器是自己设置的时候才比较容易操作。所以,这条路试了两天无果,遂放弃。

另一种方法是在线代理,这也是比较直观的想法。因为以前也有过sisxx.org结尾的代理。于是自己开始上网找这样的代理源代码。一般而言有那么几个比较常用的:
phproxy、glype、KnProxy
然而,虽然这些网页代理都赫赫有名,却都没法解决播放视频、上bbs这样的功能。于是郁闷了老半天。

最后想到qz大神在日志回复中提到的india web proxy。之前也找个,无奈把india拼成了indea了,于是悲剧了。这次发现错了,然后自己试着用了一下,发现很好用,用上之后效果和设置一次代理服务器一样。

另外,也曾经试着VPN,但是VPN需要两块网卡,单网卡下的win7 VPN相对比较复杂,也就没去考虑了。

so,代理服务器基本上是折腾完了。唯一的缺憾是迅雷下载时账号登陆这块不支持代理,即使用ccproxy的socks5代理也不行,所以离线下载只能在登陆网关的账号上进行了。