2010年5月15日星期六

拆thinkpad T60 的Ctrl键

左边的ctrl下面卡了一个瓜子皮,怎么都到不出来了.
刚刚忙了半天,才把它弄好.还反复折腾了两次.第一次装上后,用力一会儿,觉得按
键反馈力度不对,但是不想弄了,毕竟是个蛮精细的东西.
结果忍了半天没忍住,实在是不爽,又把按键抠出来了.结果这回悲剧了.
X型的两个支架之间的卡笋被我弄断了一半,不过幸好还能用.忙活半天,也终于发现
了第一次装上后手感不对的原因了, ctrl按键的键帽上还有一个铁丝的U型支架,需
要套在X型支架旁边的两个铁环里面,这样力度才对.

弄断一半卡笋,弄明白了按键的结构,也算有得有失吧 -_-!
--
caosuwei <caosuwei@gmail.com>

2010年5月11日星期二

一个简单的sql

ID Name subject Score
1 小明 A 12
2 小明 B 20
3 小王 A 1
4 小明 C 100
5 小王 E 23
6 小张 A 33
7 小王 B 3

select name from (SELECT name, sum(score) as sum_score FROM `grade` group by Name) as temp where sum_score > 100;
--
caosuwei <caosuwei@gmail.com>

debian下mysql的配置

debian下的mysql默认是关掉了远程访问的功能的,需要手动打开.
从配置文件上可以看到,这个关闭并没有用skip-networking, 而是把 bind-address改到了回环地址上.
所以只要把地址改到对外的网卡地址上就行.
另外,还需要修改mysql.user表中指定用户的权限.
我现在的表中是
|Host |User|
% root
127.0.0.1 root
所以我直接把后一条记录删掉了.
--
caosuwei <caosuwei@gmail.com>

2010年5月3日星期一

取boost::thread调用函数的返回值

为了取thread调用的函数的返回值,以前要么是弄个函数包起来,用一个外部变量记录返回值,要不就是在类里面加个public的变量做记录,感觉很不地道,而且麻烦

最近看boost的文档,才发现原来1.41和以后的版本的thread库里面已经有相关的东西做这件事了

这个就是 boost::unique_future 和 boost::shared_future.

用起来很方便,下面是示例

#include <boost/thread.hpp>
#include <string>

using namespace std;
using namespace boost;

int calculate_the_answer_to_life_the_universe_and_everything(int par, string aaa)
{
if(aaa == "hello")
return par-1;
else
return par+1;
}

int main(void)
{
int a = 33;
string b = "hello";
boost::packaged_task<int> pt(boost::bind(calculate_the_answer_to_life_the_universe_and_everything, a, b));
boost::unique_future<int> fi=pt.get_future();

boost::thread task(boost::move(pt)); // launch task on a thread

fi.wait(); // wait for it to finish

assert(fi.is_ready());
assert(fi.has_value());
assert(!fi.has_exception());
assert(fi.get_state()==boost::future_state::ready);
// assert(fi.get()==42);
int aaa = fi.get();
return 0;
}
--
caosuwei <caosuwei@gmail.com>

在debian上安装wordpress

今天在我的debian虚拟机上装上的wordpress.
设置wordpress本身倒是件很简单的事情,主要就麻烦在配置php,mysql和apache.
debian上这些软件的配置文件的位置都挺奇怪的.找文档就费了不少时间.

1. 首先是安装mysql
这个简单,直接 apt-get install mysql-server就行了.
然后 mysql -u root -p
create database weblog, 建立一个叫weblog的数据库,等会儿给wordpress用.
mysql的配置文件在/etc/mysql/my.cnf

2. 安装php
我最初只是 apt-get install php5
后来发现这样php连不上数据库,访问apache服务器的时候会报连不上mysql的错误,
后来才知道应该再装一个 apt-get install php5-mysql.
php.ini文件的位置是/etc/php5/apache2/php.ini

安装这个的时候会顺便把apache一起装上的,apache的配置文件在/etc/apache2/
这个配置文件的嵌套层数很多,如果要修改DocumentRoot的话,这个设置在/etc/apache2/sites-available/default文件里面.

3. 安装wordpress
修改好DocumentRoot后,就可以把wordpress放到指定位置了.只需要修改wordpress配置文件中的DB_NAME, DB_USER, DB_PASSWORD这几个就行了.

4. apache
如果修改了apache的配置文件,可以用 /etc/init.d/apache2 restart 这个来重启apache服务器.
--
caosuwei <caosuwei@gmail.com>

2010年4月12日星期一

取boost::thread调用函数的返回值

为了取thread调用的函数的返回值,以前要么是弄个函数包起来,用一个外部变量记录返回值,要不就是在类里面加个public的变量做记录,感 觉很不地道,而且麻烦

最近看boost的文档,才发现原来1.41和以后的版本的thread库里面已经有相关的东西做这件事了

这个就是 boost::unique_futureboost::shared_future.

用起来很方便,下面是示例

#include <boost/thread.hpp>
#include <string>

using namespace std;
using namespace boost;

int calculate_the_answer_to_life_the_universe_and_everything(int par, string aaa)
{
    if(aaa == "hello")
        return par-1;
    else
        return par+1;
}

int main(void)
{
    int a = 33;
    string b = "hello";
    boost::packaged_task<int> pt(boost::bind(calculate_the_answer_to_life_the_universe_and_everything, a, b));
    boost::unique_future<int> fi=pt.get_future();

    boost::thread task(boost::move(pt)); // launch task on a thread

    fi.wait(); // wait for it to finish

    assert(fi.is_ready());
    assert(fi.has_value());
    assert(!fi.has_exception());
    assert(fi.get_state()==boost::future_state::ready);
//    assert(fi.get()==42);
    int aaa = fi.get();
    return 0;
}



--
caosuwei

2010年2月28日星期日

修改debian中网络接口的名称

从Windows 7换回xp后,我的virtualbox中的debian就不能上网了,本来应该是dhcp得到ip的,但现在根本就分配不到ip地址.

今天上网搜了一下这个问题.搞定了,在这里记录一下.

我的host系统换了之后,guest虚拟出来的网卡的mac地址也变了.结果guest启动的时候,就自动在/etc/udev/rules.d /70-persistent-net.rules里面加了一个网络接口,依次是eth0,eth1,eth2,eth3...

这几个接口唯一的区别就是mac地址不一样.

但是/etc/network/interfaces中默认启动并并配置dhcp的仍然是eth0,结果,当然eth3就分配不到ip,当然上不了网.

解决办法就是要么改网络接口名称,要么配置新接口的ip获得方式.

1.改网络接口名称

这个方法就是修改 /etc/udev/rules.d/70-persistent-net.rules 文件,把多余的项目删掉,或者注掉.只留下当前有用的.

2.配置新接口的ip获得方式

修改/etc/network/interfaces文件,加上

auto eth3 #自动启动eth3接口

allow-hostplug eth3 #eth3这个接口只有在插上网线的时候才回去连线

iface eth3 inet dhcp #这句就是设置dhcp了


以上配置文件路径是以debian 5.0.4为准.供参考.
--
caosuwei <caosuwei@gmail.com>