2009年8月18日星期二

在两台windows机器SCP传输文件。

1:首先在两台windows机器上安装cygwin,及net模块下的SSH组件,admin 模块下的 cygrunsrv 组件。其实多装组件挺好的,很好用的。
2:在windows主机上打开sshd服务。
输入命令:ssh-host-config都回答yes就可以了,同是会提示你有些文件的权限不对需要按照它的提示更改权限。例如 chmod o+x /var 等等
最后成功会显示Host configuration finished. Have fun!
如果不显示这条信息,应该是没有安装成功
安装成功以后,net start sshd,这个时候主机就会运行ssh服务。
3.在客户机上输入命令ssh-keygen -t rsa 会在.ssh目录下生成id_rsa.pub 和id_rsa文件。
在id_rsa.pub copy到主机的.ssh目录下,并在此目录创建一个authorized_keys文件(如果已经存在,则不需要创建),将id_rsa.pub文件添加到authorized_keys文件中。
cat id_rsa.pub >> authorized_keys.
6.可以linux 下使用 scp命令了。ok

2009年8月15日星期六

how to pass stderr info to pile in the command line(如何在命令行中将标准信息传输到管道)

例如 某个java 应用程序 会输出一些错误信息 我想对其做一些处理,例如说查询还有test的行,并将其 放文件 record.txt
输入下面的命令 即可。
java application 2>&1 grep test > record.txt
需要注意的是2>&1 会将标准输出也会记录下来,所以需要确信标准输出不会对最终结果造成影响。

不能登录google blog 怎么办? FreeGate

原谅我的单纯无知,我是前几天才听别人说有Great Fire Wall,还不太相信,今天终于发现是真的。
以前都是在公司上的blog,一直没有出现登陆不了google blog 的问题。今天回家了以后,想写点东西,发现根本登录不了google blog. 上网查了一下,某些网址被屏蔽了。
好吧,终于找到FreeGate来解决了这个问题。赞。

2009年8月12日星期三

windows下 在cgywin中使用vim 换行符不兼容的问题。

最近使用cgywin vim的时候遇到一个问题。
设置一个很简单的.vimrc文件
set number
使用vim打开文件时候出现错误:
set number e488: trailing characters: number^m in cygwin
开始还以为是 set number 写错了。后来Google了一下,
发现时由于windows 和 linux的换行符不同造成的。需要在
编辑.vimrc的时候 设置.vimrc文件格式为unix 既:set fileformat=unix
就可以了。
这个问题的更详细的讨论。

2009年8月10日星期一

Set JAVA_HOME in windows cmd.(在windows 命令行中修改JAVA_HOME)

set JAVA_HOME=jrepath
set PATH=%JAVA_HOME%\bin;%PATH%
注意这里没有引号。
这样就不需要在我的电脑属性中修改java_home了,以及重启命令行了。
对于程序会用到多个jre 会比较有用。

linux 修改 JAVA_HOME如下
export JAVA_HOME=jrepath
export PATH=$JAVA_HOME\bin;$PATH

如果需要永久修改 则 在.bashrc文件中加入上面的两句话就可以了。

2009年4月24日星期五

N的N次方的首位数字

在CSDN上看到一个题目,求N的N次方的首位数字。
N^N=10^(N*logN),即可以转化求10^(N*logN)的首位数字。
对于10^(X),X为一个实数,可以分解成一个整数加一个小数的和,X = Z + P。即10^(X) = 10^(Z + P) = 10^Z * 10^P,其中(0 <= P < 1)
显然这里的10^Z是不会影响到10^(X)的首位数字,即关键问题是要求10^P的首位数字。OK,这样问题就明朗了很多。
因为0 <= P < 1 所以 1 <= 10^(P) < 10, 这里答案很简单了,只要我们求出10^(P)的值,然后取整 所得到的值就是10^(X)的首位数字
将X换成N*logN,就可以求出N^N的首位数字了。
附C++代码:

#include
#include
using namespace std;

//计算一个double型数的非整数部分
double mantissa(double dval) {
if ((int) dval != (int) (dval + 1e-8)) {
return 0;
} else {
return dval - (int) dval;
}
}

//计算首位整数
int leadDigital(double mantissaValue) {
if (mantissaValue >= 0 && mantissaValue + 1e-8 < 1) {
double temp = pow((double) 10, mantissaValue);
return (int) (temp + 1e-8);
} else {
cout << "the mantissaValue is not bigger than 0 or not less than 1" << endl;
exit(0);
return 0;
}
}

int main() {
int N;
cout << "please input the test N value:" << endl;
cout << "or input the exit value: -1" << endl;

while (cin >> N && N != -1) {
if (N <= 0) {
cout << "the value of N must be bigger than zero" << endl;
}
double nlogNValue = N * log10((double) N);
double mantissaValue = mantissa(nlogNValue);
int leadValue = leadDigital(mantissaValue);
cout << "The lead digital of " << N << "^" << N << " is: " << leadValue << endl;
cout << "please input the test N value again" << endl;
}
return 0;

}

2009年4月3日星期五

Test

It is only a test.