Jan
11
1. 在Windows下面
很简单的哦,打开 开始->附件->调制解调器链接
选择"USB"(当然,也可以选择Infrared,红外,不过现在本本用红外的不多了),点击"激活"
然后下载这个东东,解压缩到某一个地方:
接着把手机连电脑上,如果选择的是USB就用USB,或者用你选择的蓝牙/红外,都OK。
你会发现,电脑上会弹出“发现新硬件”,Good
在安装驱动的时候选择在刚刚那个压缩包解压出来的SP USB MODEM目录,让系统自动安装
安装好以后呢,打开解压缩后的Dialer.exe
在APN那一栏输入cmnet,选择 Connect
然后很快你就会连上拉,而且还会在“网络连接”里面生成一个拨号连接,以后用这个就OK了。
2. 在Linux(我用的Ubuntu)下面
看了这篇文章,然后自己处理了一下,把它搞定了:
refering http://www.4winmobile.com/forums/phone-edition-general/16623-using-your-phone-modem-linux.html
首先,通过其他方式连到Internet,运行以下命令:
或者也可以从这里下载源码,然后再编译安装
OK,然后打开 开始->附件->调制解调器链接 选择"USB",点击 激活
接着把你的手机连到USB口上,点击网络管理器(Network Manager),就是屏幕上面两个小电脑的图标
然后你就会发现有一个 "自动移动宽带(CDMA)连接" ,可是我用的是GPRS阿,用它总是连不上
于是右键单击网络管理器(Network Manager),选择 编辑连接 就会打开连接编辑页面
切换到移动宽带选项卡,双击自动移动宽带(CDMA)连接,把号码的#777改成 *99# 确定
然后再在网络管理器里面选择它,过一会儿就连上了,Congratulations!
很简单的哦,打开 开始->附件->调制解调器链接
选择"USB"(当然,也可以选择Infrared,红外,不过现在本本用红外的不多了),点击"激活"
然后下载这个东东,解压缩到某一个地方:
下载文件 (已下载 1394 次)
接着把手机连电脑上,如果选择的是USB就用USB,或者用你选择的蓝牙/红外,都OK。
你会发现,电脑上会弹出“发现新硬件”,Good
在安装驱动的时候选择在刚刚那个压缩包解压出来的SP USB MODEM目录,让系统自动安装
安装好以后呢,打开解压缩后的Dialer.exe
在APN那一栏输入cmnet,选择 Connect
然后很快你就会连上拉,而且还会在“网络连接”里面生成一个拨号连接,以后用这个就OK了。
2. 在Linux(我用的Ubuntu)下面
看了这篇文章,然后自己处理了一下,把它搞定了:
refering http://www.4winmobile.com/forums/phone-edition-general/16623-using-your-phone-modem-linux.html
首先,通过其他方式连到Internet,运行以下命令:
引用
sudo apt-get install subversion
svn co http://synce.svn.sourceforge.net/svnroot/synce/trunk/usb-rndis-lite
#上面是下载源码,下面是编译安装
cd usb-rndis-lite/
make
sudo ./clean.sh
sudo make install
svn co http://synce.svn.sourceforge.net/svnroot/synce/trunk/usb-rndis-lite
#上面是下载源码,下面是编译安装
cd usb-rndis-lite/
make
sudo ./clean.sh
sudo make install
下载文件 (已下载 1348 次)
OK,然后打开 开始->附件->调制解调器链接 选择"USB",点击 激活
接着把你的手机连到USB口上,点击网络管理器(Network Manager),就是屏幕上面两个小电脑的图标
然后你就会发现有一个 "自动移动宽带(CDMA)连接" ,可是我用的是GPRS阿,用它总是连不上
于是右键单击网络管理器(Network Manager),选择 编辑连接 就会打开连接编辑页面
切换到移动宽带选项卡,双击自动移动宽带(CDMA)连接,把号码的#777改成 *99# 确定
然后再在网络管理器里面选择它,过一会儿就连上了,Congratulations!
Jan
10
今天为了下载madwifi,一个4.22MB的程序,做的这个东西。
因为校园网实在太慢了,恰好我空间所在的服务器访问它的速度还可以。
于是就用这个东西,把它下载到我的服务器,然后再从服务器多线程下载下来。
很happy。
提供下载吧,源码很短的,连fsockopen都不要
只用了file_get_contents和file_put_contents,很好很强大。
Felix的简易文件下载工具 @ 2009.01.10
http://www.felix021.com
可以把别的地方的文件下载到你的空间,然后再通过下载工具下载到本地。
特别适用于教育网想要下载外网却无法完成的情况。
目前功能比较简单,基本的验证,禁止存放php文件。
谁有兴趣可以加入一个cookie功能,这样如果需要登录的网站的内容也就可以下载了
修改config.php替换自己的密码。
因为校园网实在太慢了,恰好我空间所在的服务器访问它的速度还可以。
于是就用这个东西,把它下载到我的服务器,然后再从服务器多线程下载下来。
很happy。
提供下载吧,源码很短的,连fsockopen都不要
只用了file_get_contents和file_put_contents,很好很强大。
下载文件 (已下载 1384 次)
Felix的简易文件下载工具 @ 2009.01.10
http://www.felix021.com
可以把别的地方的文件下载到你的空间,然后再通过下载工具下载到本地。
特别适用于教育网想要下载外网却无法完成的情况。
目前功能比较简单,基本的验证,禁止存放php文件。
谁有兴趣可以加入一个cookie功能,这样如果需要登录的网站的内容也就可以下载了
修改config.php替换自己的密码。
Jan
10
zz from http://www.ubuntu-tw.org/modules/planet/view.article.php?1475
ThinkPad R61 Trackpoint and Touchpad on Ubuntu 8.10
作者:ajer001 | 來自:阿駕零零壹 © 學習筆記 | 2008/11/24 10:00:10
這幾天真是 R61on Ubuntu 8.10 連發,哈哈哈。
環境:
OS : Ubuntu 8.10 Intrepid Ibex, 64bit
NB : ThinkPad R61 7743
其實 Ubuntu 8.10 安裝後,已經可以正確抓到小紅點(TrackPoint)和觸控板(TouchPad)了,可是小紅點搭配中鍵的瀏覽功能沒辦法用、Fn+F8 也無法關閉觸控版,所以要額外處理一下。
ThinkPad R61 Trackpoint and Touchpad on Ubuntu 8.10
作者:ajer001 | 來自:阿駕零零壹 © 學習筆記 | 2008/11/24 10:00:10
這幾天真是 R61on Ubuntu 8.10 連發,哈哈哈。
環境:
OS : Ubuntu 8.10 Intrepid Ibex, 64bit
NB : ThinkPad R61 7743
其實 Ubuntu 8.10 安裝後,已經可以正確抓到小紅點(TrackPoint)和觸控板(TouchPad)了,可是小紅點搭配中鍵的瀏覽功能沒辦法用、Fn+F8 也無法關閉觸控版,所以要額外處理一下。
Jan
9
这是今天算法考试的最后一题,设计一个动态规划的算法来求两个字符串的编辑距离。
以为自己做对了,很happy —— 其实错了,好笨,sigh.
--
Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操作包含3个:插入, 删除, 替换;比如,kiteen和sitting之间的距离可以这么计算:
1,kitten -- > sitten, 替换k为s;
2,sitten -- > sittin, 替换e为i;
3,sittin -- > sitting, 增加g;
所以,其LD为3。
设计状态d[m][n] = d(A[1..m], B[1..n]),易知:
d[0][0] = 0;
d[i][0] = i;
d[0][j] = j;
d[i][j] = min( d[i-1][j-1] + (If A[i]=B[j] Then 0 Else 1 End If), //修改一个字符
d[i-1][j] + 1, //插入一个字符
d[i][j-1] + 1 //删除一个字符
于是可以递推地填满一个 m * n 的矩阵,即得答案。
计算LD的算法表示为(C++代码):
这个算法其实就是一个矩阵的计算:
最后的d[m][n]就是求得的答案。
@ 2009-06-14
贴一个优化空间复杂度为O(n)的代码(滚动数组):
以为自己做对了,很happy —— 其实错了,好笨,sigh.
--
Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操作包含3个:插入, 删除, 替换;比如,kiteen和sitting之间的距离可以这么计算:
1,kitten -- > sitten, 替换k为s;
2,sitten -- > sittin, 替换e为i;
3,sittin -- > sitting, 增加g;
所以,其LD为3。
设计状态d[m][n] = d(A[1..m], B[1..n]),易知:
d[0][0] = 0;
d[i][0] = i;
d[0][j] = j;
d[i][j] = min( d[i-1][j-1] + (If A[i]=B[j] Then 0 Else 1 End If), //修改一个字符
d[i-1][j] + 1, //插入一个字符
d[i][j-1] + 1 //删除一个字符
于是可以递推地填满一个 m * n 的矩阵,即得答案。
计算LD的算法表示为(C++代码):
int d[1010][1010];
int dist(string a, string b){
int m = a.size(), n = b.size(), i, j;
for(i = 0; i <= m; ++i) d[i][0] = i;
for(j = 0; j <= n; ++j) d[0][j] = j;
for (i = 1; i <= m; ++i){
for(j = 1; j <= n; ++j){
// -------------- a, b是从0开始计数的
d[i][j] = d[i-1][j-1] + (a[i-1]==b[j-1]?0:1); //修改一个字符
d[i][j] = min(d[i][j], d[i-1][j] + 1); //插入一个字符
d[i][j] = min(d[i][j], d[i][j-1] + 1); //删除一个字符
}
}
for (i = 0; i <= m; ++i){ //打印矩阵
for(j = 0; j <= n; ++j)
printf("%5d ", d[i][j]);
printf("\n");
}
return d[m][n];
}
int dist(string a, string b){
int m = a.size(), n = b.size(), i, j;
for(i = 0; i <= m; ++i) d[i][0] = i;
for(j = 0; j <= n; ++j) d[0][j] = j;
for (i = 1; i <= m; ++i){
for(j = 1; j <= n; ++j){
// -------------- a, b是从0开始计数的
d[i][j] = d[i-1][j-1] + (a[i-1]==b[j-1]?0:1); //修改一个字符
d[i][j] = min(d[i][j], d[i-1][j] + 1); //插入一个字符
d[i][j] = min(d[i][j], d[i][j-1] + 1); //删除一个字符
}
}
for (i = 0; i <= m; ++i){ //打印矩阵
for(j = 0; j <= n; ++j)
printf("%5d ", d[i][j]);
printf("\n");
}
return d[m][n];
}
这个算法其实就是一个矩阵的计算:
引用
调用dist("abcdef", "acddaf")可以得到输出为:
0 1 2 3 4 5 6
1 0 1 2 3 4 5
2 1 1 2 3 4 5
3 2 1 2 3 4 5
4 3 2 1 2 3 4
5 4 3 2 2 3 4
6 5 4 3 3 3 3
0 1 2 3 4 5 6
1 0 1 2 3 4 5
2 1 1 2 3 4 5
3 2 1 2 3 4 5
4 3 2 1 2 3 4
5 4 3 2 2 3 4
6 5 4 3 3 3 3
最后的d[m][n]就是求得的答案。
@ 2009-06-14
贴一个优化空间复杂度为O(n)的代码(滚动数组):
int diff(char *a, char *b){
int *d[2], i, j;
int m = strlen(a), n = strlen(b);
d[0] = new int[n + 1];
d[1] = new int[n + 1];
int turn = 0, pre, t;
for (i = 0; i <= n; ++i) d[turn][i] = i;
for (i = 1; i <= m; ++i){
pre = turn;
turn = (turn + 1) % 2;
d[turn][0] = i;
for(int p=0;p<=n;p++)printf("%d ",d[pre][p]);printf("\n");
for(j = 1; j <= n; ++j){
t = d[pre][j-1] + (a[i-1] == b[j-1] ? 0 : 1);
t = min(t, d[pre][j] + 1);
d[turn][j] = min(t, d[turn][j-1] + 1);
}
}
for(int p=0;p<=n;p++)printf("%d ",d[turn][p]);printf("\n");
t = d[turn][n];
delete[] d[0];
delete[] d[1];
return t;
}
int *d[2], i, j;
int m = strlen(a), n = strlen(b);
d[0] = new int[n + 1];
d[1] = new int[n + 1];
int turn = 0, pre, t;
for (i = 0; i <= n; ++i) d[turn][i] = i;
for (i = 1; i <= m; ++i){
pre = turn;
turn = (turn + 1) % 2;
d[turn][0] = i;
for(int p=0;p<=n;p++)printf("%d ",d[pre][p]);printf("\n");
for(j = 1; j <= n; ++j){
t = d[pre][j-1] + (a[i-1] == b[j-1] ? 0 : 1);
t = min(t, d[pre][j] + 1);
d[turn][j] = min(t, d[turn][j-1] + 1);
}
}
for(int p=0;p<=n;p++)printf("%d ",d[turn][p]);printf("\n");
t = d[turn][n];
delete[] d[0];
delete[] d[1];
return t;
}
Jan
9
这两天Xsun同学想让我帮他看看Subpixel,亚像素这个东西。
于是考完就去看了看,觉得蛮有意思,很NB。可惜我帮不上忙,sigh。
贴一些东西出来吧:
其实这个东西我们早就接触到了,因为M$的Windows XP里面有有这个东西,名叫"ClearType"。
zz from http://hi.baidu.com/wingingbob/blog/item/11d43a8175d494debd3e1e35.html
ClearType是由微软在Windows操作系统中提供的屏幕亚像素微调字体平滑工具,让Windows字体更加漂亮。ClearType主要是针对LCD液晶显示器设计,可提高文本的清晰度。基本原理是,将显示器的R, G, B各个次像素也发光,让其色调进行微妙调整,可以达到实际分辨率以上(横方向分辨率的三倍)的纤细文本的显示效果。
1为ClearType线,2是普通的反锯齿线;3和4分别为1和2的四倍放大图;5是1实际显示在液晶显示器上的放大示意图。如图所示,ClearType充分利用LCD色条排列特性,显示出更为完美的斜线。
使用ClearType的显示器放大6倍的效果。由于各个次像素发光,文本边缘带有红、蓝色。
从实际的使用中也能看出来,在启用了ClearType技术以后,字体变得平滑漂亮了。
有兴趣的话还可以再看看这篇文章里的介绍: http://jazzzfish.spaces.live.com/blog/cns!AA856682D7F719B4!302.entry
于是考完就去看了看,觉得蛮有意思,很NB。可惜我帮不上忙,sigh。
贴一些东西出来吧:
其实这个东西我们早就接触到了,因为M$的Windows XP里面有有这个东西,名叫"ClearType"。
zz from http://hi.baidu.com/wingingbob/blog/item/11d43a8175d494debd3e1e35.html
ClearType是由微软在Windows操作系统中提供的屏幕亚像素微调字体平滑工具,让Windows字体更加漂亮。ClearType主要是针对LCD液晶显示器设计,可提高文本的清晰度。基本原理是,将显示器的R, G, B各个次像素也发光,让其色调进行微妙调整,可以达到实际分辨率以上(横方向分辨率的三倍)的纤细文本的显示效果。
1为ClearType线,2是普通的反锯齿线;3和4分别为1和2的四倍放大图;5是1实际显示在液晶显示器上的放大示意图。如图所示,ClearType充分利用LCD色条排列特性,显示出更为完美的斜线。
使用ClearType的显示器放大6倍的效果。由于各个次像素发光,文本边缘带有红、蓝色。
从实际的使用中也能看出来,在启用了ClearType技术以后,字体变得平滑漂亮了。
有兴趣的话还可以再看看这篇文章里的介绍: http://jazzzfish.spaces.live.com/blog/cns!AA856682D7F719B4!302.entry
Jan
8
其实好简单的=.= 为啥以前没去看捏。。。
已知有n个东东为u[1]~u[n], 体积和重量分别是s[1]~s[n]和w[1]~w[n]
有一个包包可以装下大小为S的东东,求这个包包最重可以装多重。
记W[n][S]为要求的东西: 从n个东东里面取出一部分填满体积为S的包包
很容易理解,W[n][S]为以下两个取值的最大值:
1. W[n-1][S] 不取第n个东东,最多可以装多重
2. (s[n] <= S的时候) w[n] + W[n-1][S-s[n]] 一定取第n个东东,重量为v[n],包包还能装S-s[n],那么前n-1个东东最多可以装多重。
另外,显然可以看出,当n或者S为0的时候,W[n][S]肯定也为0。
最简单的是写一个递归:
已知有n个东东为u[1]~u[n], 体积和重量分别是s[1]~s[n]和w[1]~w[n]
有一个包包可以装下大小为S的东东,求这个包包最重可以装多重。
记W[n][S]为要求的东西: 从n个东东里面取出一部分填满体积为S的包包
很容易理解,W[n][S]为以下两个取值的最大值:
1. W[n-1][S] 不取第n个东东,最多可以装多重
2. (s[n] <= S的时候) w[n] + W[n-1][S-s[n]] 一定取第n个东东,重量为v[n],包包还能装S-s[n],那么前n-1个东东最多可以装多重。
另外,显然可以看出,当n或者S为0的时候,W[n][S]肯定也为0。
最简单的是写一个递归:
Jan
8
昨天看的《C++标准函数库》,看到auto_ptr这一节,说到了关于内存泄露的问题
而且有些情况以前根本没有考虑到,想想觉得好危险。
典型的情况就是如下的代码:
如果在//do sth.的时候退出了函数,比如一个return语句,或者是抛出了一个异常
那么最后的delete p就不会被执行,于是就造成了内存的泄露。
更极端一点的情况是,可能申请了多个内存,有多处return,如果每一个都要处理,那程序就太恶心了。
但是不处理又是不行的——于是需要有一种方式来解决,于是标准库就引进了auto_ptr 智能指针。
这个东西保证它自己被销毁的时候能够释放其指向的对象(使用delete)。
一个简单的例子是:
在退出函数foo()的时候,p的析构函数会被调用,自动释放它指向的classA,于是再也不用费神去写delete了,真好~
不过auto_ptr不是基于引用计数的智能指针,所以有一些很特殊的属性。
如果想要用它,一定一定要都了解了才用哦!就推荐看这本书《The C++ Standard Library》C++标准函数库。
而且有些情况以前根本没有考虑到,想想觉得好危险。
典型的情况就是如下的代码:
void foo(){
int *p = new int[10];
//do sth.
delete[] p;
}
int *p = new int[10];
//do sth.
delete[] p;
}
如果在//do sth.的时候退出了函数,比如一个return语句,或者是抛出了一个异常
那么最后的delete p就不会被执行,于是就造成了内存的泄露。
更极端一点的情况是,可能申请了多个内存,有多处return,如果每一个都要处理,那程序就太恶心了。
但是不处理又是不行的——于是需要有一种方式来解决,于是标准库就引进了auto_ptr 智能指针。
这个东西保证它自己被销毁的时候能够释放其指向的对象(使用delete)。
一个简单的例子是:
#include<memory> //auto_ptr在头文件memory里面哦
using namespace std::auto_ptr; //它在namespace std里面哦
void foo(){
std::auto_ptr<classA> p(new classA);
//do sth.
//no need to free p;
}
using namespace std::auto_ptr; //它在namespace std里面哦
void foo(){
std::auto_ptr<classA> p(new classA);
//do sth.
//no need to free p;
}
在退出函数foo()的时候,p的析构函数会被调用,自动释放它指向的classA,于是再也不用费神去写delete了,真好~
不过auto_ptr不是基于引用计数的智能指针,所以有一些很特殊的属性。
如果想要用它,一定一定要都了解了才用哦!就推荐看这本书《The C++ Standard Library》C++标准函数库。
Dec
29
觉得blog的代码没有高亮非常难看,
但是不想用现成的超级臃肿的代码高亮工具,
于是自己写的一个,效果还行吧^_^
My Simple HighLighter @ CopyLeft
By Felix021 ( http://www.felix021.com ) @ 2008.12.29
一个很简单的基于Javascript的C/C++/...语法高亮代码
用法:
1. 在<head>和</head>之间加上这两句:
<link rel="stylesheet" rev="stylesheet" type="text/css" href="styles.css" />
<script language="javascript" src="hl.js"></script>
2. 需要高亮的代码块,应该是div元素,并且class要设置为code,例如
<div class="code">int main(){}</div>
当然,你也可以改hl.js里面的getElementsByTagName("div")来修改元素类型
修改后面的 if(clsname == "code") 也可以修改class的名字,但是记得也要修改styles.css
3. 在网页底部的</body>之前加上这个
<script language="javascript> highlighter(); </script>
4. 可以修改styles.css自定义元素的样式表
5. 可以修改 hl.js 的keywords列表增加自己想要的关键字list
var keywords = array(
"int", "char", "bool", "class"
);
注意每一个关键字要用引号围起来,而且两个关键字之间要用逗号分开;
最后一个关键字后面没有逗号。
例子参见index.html
但是不想用现成的超级臃肿的代码高亮工具,
于是自己写的一个,效果还行吧^_^
#include<iostream>
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << (a + b) << endl;
return 0;
}
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << (a + b) << endl;
return 0;
}
My Simple HighLighter @ CopyLeft
By Felix021 ( http://www.felix021.com ) @ 2008.12.29
一个很简单的基于Javascript的C/C++/...语法高亮代码
用法:
1. 在<head>和</head>之间加上这两句:
<link rel="stylesheet" rev="stylesheet" type="text/css" href="styles.css" />
<script language="javascript" src="hl.js"></script>
2. 需要高亮的代码块,应该是div元素,并且class要设置为code,例如
<div class="code">int main(){}</div>
当然,你也可以改hl.js里面的getElementsByTagName("div")来修改元素类型
修改后面的 if(clsname == "code") 也可以修改class的名字,但是记得也要修改styles.css
3. 在网页底部的</body>之前加上这个
<script language="javascript> highlighter(); </script>
4. 可以修改styles.css自定义元素的样式表
5. 可以修改 hl.js 的keywords列表增加自己想要的关键字list
var keywords = array(
"int", "char", "bool", "class"
);
注意每一个关键字要用引号围起来,而且两个关键字之间要用逗号分开;
最后一个关键字后面没有逗号。
例子参见index.html
下载文件 (已下载 1481 次)