2007年2月27日星期二

应大家要求组合的指标(分析家、飞狐、大智慧、通达信、同花顺)通用

应大家要求组合的指标(分析家、飞狐、大智慧、通达信、同花顺)通用

//{H买卖奇准}
你:=MA(CLOSE,1);
老:=(LOW+HIGH+CLOSE)/3;
板:= MA(老,5);
好:= HHV(板,10);
急卖奇准:IF(HHV((你<好),5),100,50),colorblue;
短卖奇准:IF(HHV((你<好),10),100,50),colorgreen;

老板:= MA(老,5);
买卖:=LLV(老板,10);
急买奇准:IF(LLV((你<买卖),5),50,0),colorred;
短买奇准:IF(LLV((你<买卖),10),50,0),colorwhite;

TR:=SUM(MAX(MAX((HIGH - LOW),ABS((HIGH - REF(CLOSE,1)))),ABS((LOW - REF(CLOSE,1)))),5);
HD:=(HIGH - REF(HIGH,1));
LD:=(REF(LOW,1) - LOW);
DMP:=(SUM(IF(((HD > 0) AND (HD > LD)),HD,0),5) );
DMM:=SUM(IF(((LD > 0) AND (LD > HD)),LD,0),5);
神偷线:=(((DMP ) * 100) / TR);
辅助线:=((DMM * 100) / TR);
动向趋势线:=(MA(((ABS((辅助线 - 神偷线)) / (辅助线 + 神偷线)) * 100),3));
ADXR:=((动向趋势线 + REF(动向趋势线,3)) / 2);
VAR1:=MA(LOW,1);
VAR2:=MA(HIGH,2);
VAR3:=MA(CLOSE,2);
VAR7:=REF(VAR3,1);
【强弱】:=((SMA(MAX((VAR3 - VAR7),0),5,1) / SMA(ABS((VAR3 - VAR7)),5,1)) * 100);
没神的只有不错:( IF(((动向趋势线 > 88) AND (神偷线 < 5.8)),80,0)),LINETHICK3,colorFF00FF;


抢注雅虎免费邮箱-3.5G容量,20M附件!

万元江恩轮公式

Var1:=BARSCOUNT(CLOSE)*3.142/180;
A2: SIN(Var1*8)*100;
A3: COS(Var1*8)*100;
X1: 0;
Var1:=MA(CLOSE,5);
Var2:=MA(CLOSE,10);
Var3:=MA(CLOSE,20);
Var4:=MA(CLOSE,30);
Var5:=(Var1+Var2+Var3+Var4)/4;
Var6:=(Var5-REF(Var5,5))/REF(Var5,5)*1500;
Var7:=(Var5-REF(Var5,5))/REF(Var5,5)*1500;
Var8:=EMA(Var6,8);
底部注意: STICKLINE(Var6>REF(Var6,1) AND Var6<0 AND Var6<Var8,Var6,0,5,0);
低位转强: STICKLINE(Var8>REF(Var8,1) AND Var6<0 AND Var6>Var8,Var8,0,5,0),COLORYELLOW;
买点: STICKLINE(Var6>REF(Var6,1) AND Var6>0 AND Var8<0,Var6,Var8,10,0);
DRAWICON(FILTER(Var6>REF(Var6,1) AND Var6>0 AND Var8<0,30),-140,4);
DRAWTEXT(FILTER(Var6>REF(Var6,1) AND Var6>0 AND Var8<0,30),-140,'->买点'),COLORred;
坚定持股: STICKLINE(Var8>REF(Var8,1) AND Var8>0,Var6,0,5,0),COLORred;
谨慎观望: STICKLINE(Var6<REF(Var6,1) AND Var8>REF(Var8,1) AND Var6>0,Var6,Var8,10,0);
果断持币: STICKLINE(Var6<REF(Var6,1) AND Var6<Var8,Var6,Var8,5,1),COLORCYAN;

--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

一目图------飞狐主图指标

{一目图------飞狐主图指标}

{云雾}
AA:=(HHV(HIGH,120)-LLV(LOW,120))/30,LINETHICK;
Yw1:=(3*C+H+L+O)/6;
Yw2:=HHV(MA(Yw1,5),13);
Yw3:=(HHV(H,1)+LLV(L,1))/2;
Yw4:=REF((HHV(H,52)+LLV(L,52))/2,1);
Yw5:=IF(Yw4>Yw2,Yw4,Yw2);
Yw6:=IF(ma(Yw1,10)<REF(Yw3,1),REF(Yw3,1),ma(Yw1,10));
STICKLINE(REF(Yw3,1)<Yw4,REF(Yw3,1),Yw4,0.1,0),COLOR339933;
STICKLINE(REF(Yw3,1)>=Yw4,REF(Yw3,1),Yw4,0.1,0),COLOR0033CC;
STICKLINE(MA(Yw1,5)<Yw2,Yw4,Yw2,0,0),COLOR9FBC7D;
PARTLINE(C,IF(Yw4<=REF(Yw3,1),Yw4,REF(Yw3,1))),COLORGRAY;
PARTLINE(C,IF(Yw5<Yw6,Yw6,Yw5)),COLORGRAY;
{K线}
fo:=if(checkuser(1),o,0);
fh:=if(checkuser(1),h,0);
fl:=if(checkuser(1),l,0);
fc:=if(checkuser(1),c,0);
<%
vo=ffl.vardata("fo")
vh=ffl.vardata("fh")
vl=ffl.vardata("fl")
vc=ffl.vardata("fc")
last=ubound(vc)
vc(0)=(vh(0)+vl(0)+2*vc(0))/4
for i=1 to last
vo(i)=(vo(i-1)+vc(i-1))/2
if vo(i)>vh(i) then vh(i)=vo(i) else vh(i)=vh(i)
if vo(i)<vl(i) then vl(i)=vo(i) else vl(i)=vl(i)
vc(i)=(2*vc(i)+vh(i)+vl(i))/4
next
ffl.vardata("fo")=vo
ffl.vardata("fh")=vh
ffl.vardata("fl")=vl
ffl.vardata("fc")=vc
%>
kk:=if(fc>=fo and (fc>=ref(fc,1) or ref(fc,1)>=ref(fo,1)),1,if(fc<fo and (fc<ref(fo,1) or ref(fc,1)<ref(fo,1)),-1,0));
明:=(fo+fc)/2,shift1,colorff00;//--------------
转:=if(kk=1,min(fc,fo),if(kk=-1,max(fc,fo),if(ref(kk,1)=1,min(fc,fo),if(ref(kk,1)=-1,max(fc,fo),(fc+fo)/2))));
stickline(kk=1,min(fo,fc),min(fo,fc)+abs(fc-fo)*1/8,8,0),colorff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*1/8,min(fo,fc)+abs(fc-fo)*2/8,8,0),color33ff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*2/8,min(fo,fc)+abs(fc-fo)*3/8,8,0),color66ff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*3/8,min(fo,fc)+abs(fc-fo)*4/8,8,0),color99ff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*4/8,min(fo,fc)+abs(fc-fo)*5/8,8,0),colorbbff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*5/8,min(fo,fc)+abs(fc-fo)*6/8,8,0),colorccff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*6/8,min(fo,fc)+abs(fc-fo)*7/8,8,0),coloreeff;
stickline(kk=1,min(fo,fc)+abs(fc-fo)*7/8,min(fo,fc)+abs(fc-fo)*8/8,8,0),colorffff;
stickline(kk=-1,min(fo,fc),min(fo,fc)+abs(fc-fo)*1/8,8,0),colorffff;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*1/8,min(fo,fc)+abs(fc-fo)*2/8,8,0),colorffee00;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*2/8,min(fo,fc)+abs(fc-fo)*3/8,8,0),colorffcc00;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*3/8,min(fo,fc)+abs(fc-fo)*4/8,8,0),colorffaa00;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*4/8,min(fo,fc)+abs(fc-fo)*5/8,8,0),colorff8800;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*5/8,min(fo,fc)+abs(fc-fo)*6/8,8,0),colorff6600;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*6/8,min(fo,fc)+abs(fc-fo)*7/8,8,0),colorff3300;
stickline(kk=-1,min(fo,fc)+abs(fc-fo)*7/8,min(fo,fc)+abs(fc-fo)*8/8,8,0),colorff0000;
stickline(fc>fo,fh,fc,0.4,0),colorff;
stickline(fc>fo,fo,fl,0.4,0),colorff;
stickline(fo>fc,fh,fo,0.4,0),colorffff00;
stickline(fo>fc,fc,fl,0.4,0),colorffff00;
stickline(kk=0 and fc>=fo,fo,fc,8,1),colorff00ff;
stickline(kk=0 and fc<fo,fo,fc,8,0),colorff00ff ;


--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

2007年2月16日星期五

emacs & svn

Emacs是我最喜欢的编辑器,我非常喜欢在emacs下做所有的工作。由于Emacs强大的可扩展性,有很多插件可以帮助实现各种各样的功能,比方说在emacs中操作svn。

过去我一直使用emacs的shell mode作为我的terminal,如果提交代码的话,一般是执行

emacs -ci xxx.py -m "comment…"

不过这样有个缺陷,就是我的comment必须是一行,有时候要想写的详细一些,加分段、结构什么的,就没有办法了。这样对别人review我的代码很不利,而我又不想再开一个终端去提交,终于让我找到psvn这个插件,可以很方便地执行svn命令,而不用离开emacs了。

最新的psvn.el可以从这里下载(用svn:))

http://svn.collab.net/repos/svn/trunk/contrib/client-side/psvn/psvn.el

我放到了~/.emacs.d/site-lisp/psvn目录下,既方便管理,又利于更新。然后配置你的.emacs文件,添加下面两句:

(add-to-list 'load-path "~/.emacs.d/site-lisp/psvn/psvn.el")
(require 'psvn)

这样每次启动emacs的时候都会自动载入psvn插件。

psvn使用也很简单,M+x svn-status,会提示你选择svn-status的目录,然后emacs会打开一个buffer,显示目录下所有的目录和文件。

这时候可以用光标选择要编辑的文件,按回车进入编辑状态,编辑完之后,M+x svn-status-commit,会有buffer提示你写comment,你可以详细地写你的修改,就像编辑普通文件一样,编辑完后,按C-c C-c,进行提交。

有时候提交会报错,

error in process sentinel: Unknown action 'unknown for emacs

但是并不影响提交,我发现如果一开始设置svn-status的目录是你svn的根目录的话,就不会出现这个错误;如果在子目录下,就会出现这个错误,可惜我lisp一窍不通,没法调试,不过似乎影响不大。

以上是我做得一点最最基本的测试,以后在工作中边用边学吧,有好的技巧我会写下来。



--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

emacs怎么截断windows下文件末尾的^M

这是我在中国linux论坛上看到的一个帖子
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=vim&Number=580355&page=0&view=collapsed&sb=5&o=0&fpart = ),记得以前也遇到过相同的问题,记录下来以后用的着的时候方便查找。

方法一:在bash下使用dos2unix命令:

dos2unix file

方法二:在emacs的配置文件中加入:

;; convert text files between unix and dos
(defun dos-unix () (interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
(defun unix-dos () (interactive)
(goto-char (point-min))
(while (search-forward "\n" nil t) (replace-match "\r\n")))

编译后,打开要转换的文件, M-x dos-unix RET进行转换。

方法三:C-x c unix C-x C-s



--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

Emacs Muse使用笔记

1、安装
在 Ubuntu 或 Debian 下,可以直接用
apt-get install muse-el
然后,编辑 ~/.emacs 文件,加入
;; Load authoring mode
(require 'muse-mode)
;; Load publishing style
(require 'muse-html)
(require 'muse-wiki)
(require 'muse-latex)
(require 'muse-texinfo)
(require 'muse-docbook)
或者写入其它文件,再在.emacs中导入 (http://learn.tsinghua.edu.cn:8080/981852/gnu/emacs-muse.html)
;; Emacs Muse
(load-file "~/.emacs-muse.el")

然后在 $HOME/.emacs-muse.el 里面写与 muse 相关的配置。

在 windows 下(http://ryang.68ab.com/notes_tips.html#sec5),到 http://www.mwolson.org/projects/EmacsMuse.html 下载后,解开在你的emacs目录的site-lisp下
然后编辑你的.emacs文件,通常在c:\,加入
(add-to-list 'load-path "G:/Rui/Software/Emacs/site-lisp/muse")
(require 'muse-mode) ; load authoring mode
(require 'muse-html) ; load publishing styles I use
(require 'muse-latex)
(require 'muse-texinfo)
(require 'muse-docbook)
(add-hook 'muse-mode-hook 'outline-minor-mode)
2、使用
简单地写个文件吧。
打开emacs,新建文件 a.muse ,可以看到emacs自动地处理为muse模式,若不行,可以使用 M-x muse-mode 命令启动 muse mode,
输入
#top time-stamp: "2007-01-26"
#title 我的题目
<contents>
保存后,muse 文档可以输出成多种格式,如 LaTeX, DocBook, html 等。输出时的命令如下:
C-c C-t
此时系统会询问需要输出的格式,输入格式名称及路径即可。

现在可以简单地用了,下次再说吧
--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

2007年2月15日星期四

mutt显示UTF-8编码的html附件

我用GMail发邮件,都是用的UTF-8编码,在用Mutt显示的时候会有些问题,看了lynx的一些参数后,修改.mailcap文件为:

text/html; /usr/bin/lynx -dump -force_html -assume_charset="utf8" -display_charset="utf8" '%s'; copiousoutput; description=HTML Text; nametemplate=%s.html

--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

Ubuntu 6.10下编译内核

1、准备工作

替换/bin/sh
在Ubuntu 6.10中, /bin/sh其实是/bin/dash的一个链接.但/bin/dash好像会有问题。所以就把它换了.

rm -f /bin/sh
ln -s /bin/bash /bin/sh


2、安装编译内核要用的包

apt-get update
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2


3、下载内核源代码
可以到www.kernel.org下载:

cd /usr/src
wget
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

解开:

tar xjf linux-2.6.18.1.tar.bz2
ln -s linux-2.6.18.1 linux
cd /usr/src/linux


4、打补丁
假定已经下载了补丁文件是 patch.bz2 到 /usr/src. :

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1

第一个命令是测试用的。没什么问题的话现动真格的。

若想用试验中的内核,比如 2.6.19-rc4 ,可以这样:

cd /usr/src
wget
http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1

5、配置内核参数
最好从一个你已经配置好的内核参数开始。如:

cp /boot/config-`uname -r` ./.config

然后运行

make menuconfig

配置好后,别忘记保存

6、编译内核
运行命令:

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

在 --append-to-version= 后,你可以写入任意字符串来标记你的内核,但要以送减号(-)开始且不能含空格.

现在耐心等待吧....


7、安装
编译完成后,你可以在 /usr/src 中发现 deb 文件,就是编译好的内核.

cd /usr/src
ls -l

如可能是这样的linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (这是真正的内核) 和 linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (这是你以后编译内核要用的). 安装:

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

现在重启机器,就可以看到你的内核了

2007年2月14日星期三

自己构建debian包的重要参考文档

参考文档


--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

源代码构建deb包

源代码构建deb包

这次以 leafpad 为例, leafpad 的当前版本为 0.8.9

  • 下载程序源代码

    #wget http://savannah.nongnu.org/download/leafpad/leafpad-0.8.9.tar.gz    

  • 创建工作目录

    # mkdir leafpad    #mv leafpad-0.8.9.tar.gz leafpad/  #cd leafpad  #tar zxvf leafpad-0.8.9.tar.gz  #cd leafpad-0.8.9 

  • 安装打包环境

    运行一下命令,安装编译 leafpad 所需的环境

    # apt-get install dh-make dpkg-dev g++ patch make libc6-dev fakeroot libgtk2.0-dev cdbs debhelper pkg-config gnome-pkg-tools 

  • Debian 初始化

    # dh_make -e etony@tom.com -f ../leafpad-0.8.9.tar.gz  Type of package: single binary, multiple binary, library, kernel module or cdbs?  [s/m/l/k/b] s  Maintainer name : tony Email-Address   : etony@tom.com  Date            : Sun, 28 May 2006 22:38:08 +0800 Package Name    : leafpad Version         : 0.8.9 License         : blank Type of Package : Single Hit <enter> to confirm:  Done. Please edit the files in the debian/ subdirectory now. leafpad uses a configure script, so you probably don't have to edit the Makefiles. 

  • 构建配置文件

    根据需求修改 debian/ 目录下的内容

    修改 changelog, control,

    以下为自动生成的 changelog, control 配置文件框架

    /leafpad/leafpad-0.8.9/debian$ cat control  Source: leafpad Section: unknown Priority: optional Maintainer: tony <etony@tom.com> Build-Depends: debhelper (>= 4.0.0), autotools-dev Standards-Version: 3.6.2  Package: leafpad Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: <insert up to 60 chars description>  <insert long description, indented with spaces>  /leafpad/leafpad-0.8.9/debian$ cat changelog  leafpad (0.8.9-1) unstable; urgency=low    * Initial release Closes: #nnnn  (nnnn is the bug number of your ITP)   -- tony <etony@tom.com>  Sun, 28 May 2006 22:38:08 +0800 

    如有需要自己,根据示例文件 *.ex 生成 postinst, postrm, prerm 等脚本文件

  • 构建 .deb 包

    # dpkg-buildpackage -rfakeroot -uc -b 

    如果您已经多次运行了上边的命令, 也可以使用下边的命令快速构建临时 .deb 包:

    #fakeroot debian/rules binary 

    将会在其上一级目录生成 leafpad_0.8.9-1_i386.deb


--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

对现有文件打包:

对现有文件打包:

  • 创建工作目录

    构建模拟根目录, 比如 fakeroot :

    $ mkdir fakeroot 

  • 部署文件

    在 fakeroot 下构建模拟文件系统, 将欲打包文件放置到对应目录

    形如:

    tony@tony:~$ tree fakeroot/ fakeroot/ |-- DEBIAN |   |-- control |   `-- preinst `-- usr     `-- share         `-- doc             `-- securing-debian-howto.zh-cn                 |-- ap-bind-chuser.zh-cn.html                 |-- ap-bridge-fw.zh-cn.html                 |-- ap-checklist.zh-cn.html ... ... 

  • 创建配置文件

    在 fakeroot 下创建DEBIAN目录用于放置控制文件比如:

    control preinst postinst prerm postrm 等, 只有 control 是必须的, 其他为可选.

    可以在 /var/lib/dpkg/info 目录下找到这些脚本的范例

    比如

    tony@tony:~/fakeroot/DEBIAN$ cat control  Package: securing-debian-howto.zh-cn Priority: extra Section: doc Maintainer: tony <etony@tom.com> Architecture: all Version: 3.0 Description: Securing Debian Manual This manual describes the security of the Debian GNU/Linux operating system and within the Debian project. It covers some of the common tasks involved in setting up a secure user and network environment, gives information on the security tools available, steps to take before and after a compromise and also describes how security is enforced in Debian by the security team. The document includes a step by step hardening guide and within the appendix there is detailed information on how to setup an intrusion detection system and a bridge firewall with Debian GNU/Linux.  tony@tony:~/fakeroot/DEBIAN$ cat preinst #! /bin/sh  echo "." echo "."  echo "Welcome to install Securing Debian HOWTO. " echo "press any key to continue... " read exit 0 

  • 生成 .deb 包

    在 fakeroot 目录外执行:

    $ dpkg -b fakeroot securing-debian-howto-zh-cn.deb  dpkg-deb: building package `securing-debian-howto.zh-cn' in `securing-debian-howto-zh-cn.deb'. 

    将会在当前目录下生成 securing-debian-howto-zh-cn.deb 包

  • 检查包内容

    可是用以下命令检查:

    $ dpkg -c securing-debian-howto-zh-cn.deb  $ dpkg -I securing-debian-howto-zh-cn.deb 



--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

使用源提供的源代码构建 .deb 包

使用源提供的源代码构建 .deb 包

  • 下载源码包

    APT提供了一套简便的方法帮你获得发布版中众多程序的源代码以及创建一个.deb所需的所有文件。

    首先, 在 /etc/apt/sources.list 文件中加入 deb-src 条目. 详细参阅 APT HOWTO

    然后, 运行命令

    # apt-get update 

    # aptitude update 

    就可以用下面的命令下载源码包:

    # apt-get source packagename 
    # aptitude source packagename 

    下载的软件包会包含.orig.tar.gz,.dsc 和 .diff.gz。对于 Debian 专用的软件包,最后一个文件不会下载,第一个文件的文件名中没有"orig"项。

    dpkg-source 读取 .dsc 文件信息,将源码包解包到 packagename-version 目录,下载下来的源码包中有一个 debian/ 目录,里面是创建 .deb 包所需的文件。

    例如:

    $ apt-get source nano Reading package lists... Done Building dependency tree... Done Need to get 1199kB of source archives. Get:1 http://ftp.us.debian.org testing/main nano 1.3.11-2 (dsc) [706B] Get:2 http://ftp.us.debian.org testing/main nano 1.3.11-2 (tar) [1173kB]        Get:3 http://ftp.us.debian.org testing/main nano 1.3.11-2 (diff) [25.4kB]       Fetched 1199kB in 3m46s (5287B/s)                                               ... ... dpkg-source: extracting nano in nano-1.3.11 dpkg-source: unpacking nano_1.3.11.orig.tar.gz dpkg-source: applying ./nano_1.3.11-2.diff.gz 

    做相应调整后, 在源代码的根目录 nano-1.3.11 下运行:

    # dpkg-buildpackage -rfakeroot -uc -b 

    将代码编译成为软件包.

    想要下载的源码包自动编译成软件包,只需在命令行中加上 -b,例如:

    # apt-get -b source packagename 

    请在下载包所在的目录中运行上面的命令。

    # dpkg -i file.deb 

    apt-get的source命令与它的其它命令有所不同,普通用户权限就可以运行source命令,指定文件被下载到用户调用 apt-source package 命令时所处的目录中。

  • 编译源码包所需的软件包

    通常,编译源码包时要用到某些头文件和共享库,所有的源码包的管理文件 (control file) 中都有一个域 "Build-Depends:", 域中指出了编译该源码包需要哪些附加包。

    如果你仅仅想检查一下编译当前包需要哪些相关软件包,可以使用 apt-cache show 命令的一个变种,它将显示软件包信息中有关 Build-Depends 的行。

    $ apt-cache showsrc nano|grep Build-Depends   Build-Depends: dpkg-dev (>= 1.13.9), libncurses5-dev, libncursesw5-dev, libslang2-dev, debhelper (>= 5.0.22), dpatch 

    APT 提供了一个简单的方法下载这些附加包,你只需运行 apt-get build-dep package, 其中 package 就是你打算编译的源码包名称。例如:

    # apt-get build-dep nano Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed:   build-essential dpatch g++ libncursesw5-dev libslang2-dev 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 986kB of archives. After unpacking 2806kB of additional disk space will be used. Do you want to continue [Y/n]?  

    这些用于 nano 正确编译指定源码包的附加包将会被安装。注意这个命令不能用来搜索软件的源码包,你得另外运行 apt-get source 下载源码包。


    --
    一步一步教你从互联网赚钱
    http://www.zqzn.com/index.asp?rid=key480769

从当前系统构建 .deb 包


从当前系统构建 .deb 包

Debian软件包: dpkg-repack 可以用来重新构建已经安装到系统中的软件包为 .deb 文件. 并包含已经修改了的配置文件. 详细新息参阅:

dpkg-repack manpages

Debian GNU/Linux Anwenderhandbuch

对于某些需要修改配置后进行大面积安装的软件包, 可以是用 dpkg-repack 重新打包, 然后分发.

运行 dpkg-repack 需要 root 权限,也可以是用 fakeroot 取代 root 权限。例如:

# aptitude install dpkg-repack  $ fakeroot -u dpkg-repack nano dpkg-deb: building package `nano' in `./nano_1.3.11-2_i386.deb'.  user@debian:~$ fakeroot -u dpkg-repack apt dpkg-deb: building package `apt' in `./apt_0.5.22_i386.deb'. 

可以使用 dpkg-deb 进行验证

$ dpkg-deb  -I ./nano_1.3.11-2_i386.deb   new debian package, version 2.0. 

--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

修改现有 .deb 文件

 

比如 nano(1.3.10) 需要满足以下依赖关系:

$ dpkg-deb -f nano_1.3.10-2_i386.deb depends            //depends 为对应查询段  libc6 (>= 2.3.5-1), libncursesw5 (>= 5.4-5) 

当系统不能满足依赖关系, 比如不能满足里来版本, 可以通过下边的方法处理, 当然这种情况下安装的nano并不一定运行正常, 这种方法可以应用于某些软件的变通安装.

$ mkdir nano //创建nano目录  $ dpkg-deb -e ./nano_1.3.10-2_i386.deb ./nano/DEBIAN    //解压控制文件  $ dpkg-deb -x ./nano_1.3.10-2_i386.deb ./nano           //解压程序文件  $ vi ./nano/DEBIAN/control                                //修改控制信息  $ dpkg-deb -b nano nano_1.3.10-2_ill.deb                //重新打包 

下载 .deb 包的方法

  • 方法一

    运行命令

    $apt-get install -d packagename 
    $aptitude install -d packagename 

    将下载 .deb 文件到 //var/cache/apt/archives/ 目录

    如果管理系统数据库中的对应版本不低于源上的版本将不会下载

  • 方法二

    运行命令:

    $aptitude download packagename 

    将直接执行下载操作, 将 .deb 文件下载到当前目录.



--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

关于exim4+mutt配置的补充

1.AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS=1
打开 /etc/exim4/exim4.conf.template
找到这里:
# Because AUTH PLAIN sends the password in clear, per default we only allow it
# over encrypted connections. If you want to change this disable the existing
# "client send" entry and enable the one below without the "if !eq{$tls_cipher}{}"
# by removing the hash-mark (#) at the beginning of the line.

它的意思是说,要用明文验证,只需要把下面的带 "if !eq{$tls_cipher}{}" 的 client_send 有关的注释掉(每一行都要注释掉),再去掉不带 "if !eq{$tls_cipher}{}" 的 client_send 前的注释.结果看上去就像这样:

plain:
driver = plaintext
public_name = PLAIN
# client_send = "${if !eq{$tls_cipher}{}{\
# ^${extract{1}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}\
# ^${extract{2}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}\
# }fail}"
client_send = "^${extract{1}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}^${extract{2}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}"

这样就行了,不需要 AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS=1
 
2.passwd.client
上面的引用中可以看到passwd.client的设置方法,我试了一下楼主的方法,刚开始的时候设为smtp.163.com,发现不起作用,改为实际的地址smtp.163.split.netease.com可以起作用,并且你用*:longin asswd(longin是你的用户名,passwd是你的密码)是可以顺利发送的,仔细思考了一下,弄明白了,因为在执行
了dpkg-reconfigure exim4-config的时候我们已经告诉了exim4邮件服务器的域名,它不需要你再告诉它,
/etc/exim4/passwd.client里面的smtp服务器,一定要设置实际地址,可以通过ping smtp.xyz.com来获得该smtp服务器的真实地址。

3.mutt
muttrc文件里确实不需要set sendmail="/usr/sbin/exim4",因为我们在dpkg-reconfigure exim4-config时就等于告诉系统用exim4发送邮件
 

Fetchmail的说明

我在配置fetchmail的时候,有个错误:
.fetchmailrc中的参数为
poll pop.gmail.com proto POP3 uidl
username "USER
@gmail.com " with password "PASSWORD" is 'linux-username' here options ssl keep
其中的  'linux-username' 一定要是你的Linux下的帐号名称,我就是在这里乱填了名字,结果折腾了很久

Exim+Mutt+Fetchmail安装

完全按步就班,用的是GMail的SMTP
 
不过,在 http://www.linuxsir.org/bbs/showthread.php?t=218880 中提到了,用非 ssl SMTP的时候,配置时要注意:
(3)/etc/exim4/exim4.conf.template,exim4配置文件
在最后加入一行:AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS=1(意思是smtp的帐号密码以明文传输,因为目前大多数smtp服务器不支持tls,所以,加入这一行才能认证通过,这是关键,很多exim配置中都没提到)

2007年2月13日星期二

MACD 指数平滑移动平均线

MACD 指数平滑移动平均线 

1. 指标说明
 
平滑异同移动平均线,简称MACD,是近来美国所创的技术分析工具。MACD吸收了移动平均线的优点。运用移动平均线判断买卖时机,在趋势明显时收效很大,但如果碰上牛皮盘整的行情,所发出的信号频繁而不准确。根据移动平均线原理所发展出来的MACD,一来克服了移动平均线假信号频繁的缺陷,二来能确保移动平均线最大的战果。 


2. 运用原则

  • DIFF与DEA均为正值,即都在零轴线以上时,大势属多头市场,DIFF向上突破DEA,可作买。
  • DIFF与DEA均为负值,即都在零轴线以下时,大势属空头市场,DIFF向下跌破DEA,可作卖。
  • 当DEA线与K线趋势发生背离时为反转信号。 
  • DEA在盘局时,失误率较高,但如果配合RSI及KD,可以适当弥补缺憾。
  • 分析MACD柱形图,由正变负时往往指示该卖,反之往往为买入信号。



--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

2007年2月12日星期一

Windows下的putty中使用UTF8编码

方便起见,在所有的Linux下都用了UTF8编码方式,但在Windows下用putty连接的时候,会有不正常的显示。估计就是编码的问题。在PUTTY中找了一下,发现可以设置好的。
配置->窗口->外观:终端窗口使用字体,改为中文的如"宋体"等。
配置->窗口->转换:假定接收数据的字符集,改为 "UTF-8"
搞定


--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

2007年2月11日星期日

关于ACE_InputCDR和ACE_OutputCDR读写数据时的经验

我今天测试发现ACE_InputCDR ACE_OutputCDR并不是那么简单。

如果稍微不注意就会出现一些奇怪的字节错位的情况。

在这里我总结一下使用的规则:

         ACE_OutputCDR out(mb);

         out  << ?? ;     //这种方法简称out

         例一:

         如果 out 了一个shortout一个long

         out << (ACE_CDR::UShort)1;

         out << (ACE_CDR::Long)2;

         ACE_LOG_MSG->log_hexdump( LM_DEBUG , mb->base() , out.length() , "t");

         字节将成为如下排列(16 进制)            xx xx ?? ?? xx xx xx xx

         其中,问号部分即是因为在long 写入时进行的按long长度对齐。该数据是无意义的

        

         例二:

         如果out了一个 charout一个 short

         字节将成为如下排列             xx  ??  xx xx

         其中,问号部分即是因为在short写入时进行的按short 长度对齐。该数据是无意义的

        

        

         例三:

         如果out了一个 shortout一个char

         字节将成为如下排列             xx  xx    xx

         这里输入的char不会造成对齐问题,因为char 只有一个字节(都是倍数)

        

         例四:

         如果out了一个shortout 一个char out 一个 long

         字节将成为如下排列            xx  xx  xx  ??  xx  xx  xx  xx

        

         按照以上可总结出,每out一个类型的数据时,输出流将自动按照这个输入类型的长度序对齐,如果没有对齐,则自动填充。

     导致读数据时产生非常多的问题。(你不见CNPV1中都是强转成ACE_CDR::ULong吗?这下知道了吧)。

解决方案有两种:

方案一:全部一种类型吧!比如全部用ACE_CDR::ULong

    不过这种方法通常不适合实际的应用。让偶动物园墙垮来帮大家解决这个心结。:) 西西,请看下一方案。

方案二:

大家都会觉得这玩意被做出来怎么就不好用呢?没道理吧。我也觉得没道理,所以为了证实ACE开发者都是大牛,偶就把ACE的代码挖出来给大家看看,

看看这里到底有着什么样的玄机?

我们就拿ACE_ULong来开刀:

大家翻开CDR_Stream.inl文件,找到以下语句

ACE_INLINE ACE_CDR::Boolean
operator<< (ACE_OutputCDR &os, ACE_CDR::ULong x)
{
   os.write_ulong (x);
  return (ACE_CDR::Boolean) os.good_bit ();
}

继续下去 os.write_ulong (x);

ACE_INLINE ACE_CDR::Boolean
ACE_OutputCDR::write_ulong (ACE_CDR::ULong x)
{
  const void *temp = &x;
  return this->write_4 (reinterpret_cast<const ACE_CDR::ULong*> (temp));
}

继续跟踪this->write_4 (reinterpret_cast<const ACE_CDR::ULong*> (temp));

ACE_CDR::Boolean
ACE_OutputCDR::write_4 (const ACE_CDR::ULong *x)
{
  char *buf = 0;
  if (this->adjust (ACE_CDR::LONG_SIZE, buf) == 0)
    {

       ....

    }

}

再继续adjust (ACE_CDR::LONG_SIZE, buf)

ACE_INLINE int
ACE_OutputCDR::adjust (size_t size, char*& buf)
{
  return this->adjust (size, size, buf);
}

继续 this->adjust (size, size, buf);

ACE_INLINE int
ACE_OutputCDR::adjust (size_t size,
                       size_t align,
                       char*& buf)
{
  if (!this->current_is_writable_)
    return this->grow_and_adjust (size, align, buf);

#if !defined (ACE_LACKS_CDR_ALIGNMENT)
  const size_t offset =
    ACE_align_binary (this->current_alignment_, align)
    - this->current_alignment_;

  buf = this->current_->wr_ptr () + offset;
#else
  buf = this->current_->wr_ptr ();

vim正则搜索笔记

参考: http://likunarmstrong.bokee.com/5508715.html
大家应该都已经知道 Vim 里使用"/模式"(或"?模式")进行搜索,使用":s/模式/字符串/标志"进行替换,其中的"模式"是一个正则表达式。

  • 去掉所有的行尾空格:":%s/\s\+$//"。"%"表示在整个文件范围内进行替换,"\s"表示空白字符(空格和制表符),"\ +"对前面的字符匹配一次或多次(越多越好),"$"匹配行尾(使用"\$"表示单纯的"$"字符);被替换的内容为空;由于一行最多只需替换一次,不需 要特殊标志。这个还是比较简单的。
  • 去掉所有的空白行:":%s/\(\s*\n\)\+/\r/"。这回多了"\("、"\)"、"\ n"、"\r"和 "*"。"*"代表对前面的字符(此处为"\s")匹配零次或多次(越多越好;使用"\*"表示单纯的"*"字符),"\n"代表换行符,"\r"代表回 车符,"\("和"\)"对表达式进行分组,使其被视作一个不可分割的整体。因此,这个表达式的完整意义是,把连续的换行符(包含换行符前面可能有的连续 空白字符)替换成为一个单个的换行符。唯一很特殊的地方是,在模式中使用的是"\n",而被替换的内容中却不能使用"\n",而只能使用"\r"。原因是 历史造成的,详情如果有兴趣的话可以查看":help NL-used-for-Nul"。
  • 去掉所有的"//"注释:":%s!\ s*//.*!!"。首先可以注意到,这儿分隔符改用了"!",原因是在模式或字符串部分使用了"/"字符,不换用其他分隔符的话就得在每次使用"/"字 符本身时写成"\/",上面的命令得写成":%s/\s*\/\/.*//",可读性较低。命令本身倒是相当简单,用过正则表达式的人估计都知道"."匹 配表示除换行符之外的任何字符吧。
  • 去掉所有的"/* */"注释:":%s!\s*/\*\_.\{-}\*/\s*! !g"。这个略有点复杂了,用到了几个不太常用的 Vim 正则表达式特性。"\_."匹配包含换行在内的所有字符;"\{-}"表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的 字符数越少越好;标志"g"表示一行里可以匹配和替换多次。替换的结果是个空格的目的是保证像"int/* space not necessary around comments */main()"这样的表达式在替换之后仍然是合法的。

Fortran中判断文件读写末尾

在READ语句中,可以加入一个状态量IOSTAT=整型变量:可选,用于指明输入输出时的状态。
如输入正常,则变量值为零;如出错,为正整数;如遇文件结束无数可读,为负整数。
示例如下:
! this program is used to calculate the order
! you must first input all your error data to a file named 'dat.error'
! then use this program to calculate the order
program main
open(1,file='dat.error')
read(1,*,iostat=ierr) error0
write(*,*) error0
do
read(1,*,iostat=ierr) error1
if(ierr<0) exit
write(*,*) error1,' order: ',log(abs(error0/error1))/log(2.0)
error0=error1
enddo
end program

贴几个xgl+beryl的图

原来只要按 "print screen" 键就可以了


在C语言中巧用正则表达式

参考: http://fanqiang.chinaunix.net/program/c++/2007-02-02/4936.shtml

        如果用户熟悉Linux下的sed、 awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极大地简化处理字符串时的复杂度,因此现在已经在许多Linux实用工具中得 到了应用。千万不要以为正则表达式只是Perl、Python、Bash等脚本语言的专利,作为C语言程序员,用户同样可以在自己的程序中运用正则表达 式。

  标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。

  编译正则表达式

  为了提高效率,在将一个字符串与正则表达式进行比较之前,首先要用regcomp()函数对它进行编译,将其转化为regex_t结构:

  int regcomp(regex_t *preg, const char *regex, int cflags);

  参数regex是一个字符串,它代表将要被编译的正则表达式;参数preg指向一个声明为regex_t的数据结构,用来保存编译结果;参数cflags决定了正则表达式该如何被处理的细节。

  如果函数regcomp()执行成功,并且编译结果被正确填充到preg中后,函数将返回0,任何其它的返回结果都代表有某种错误产生。

  匹配正则表达式

  一旦用regcomp()函数成功地编译了正则表达式,接下来就可以调用regexec()函数完成模式匹配:

  int regexec(const regex_t *preg, const char *string, size_t nmatch,regmatch_t pmatch[], int eflags);

  typedef struct {

  regoff_t rm_so;

  regoff_t rm_eo;

  } regmatch_t;

  参数preg指向编译后的正则表达式,参数string是将要进行匹配的字符串,而参数nmatch和pmatch则用于把匹配结果返回给调用程序,最后一个参数eflags决定了匹配的细节。

  在调用函数regexec()进行模式匹配的过程中,可能在字符串string中会有多处与给定的正则表达式相匹配,参数pmatch就是用来 保存这些匹配位置的,而参数nmatch则告诉函数regexec()最多可以把多少个匹配结果填充到pmatch数组中。当regexec()函数成功 返回时,从string+pmatch[0].rm_so到string+pmatch[0].rm_eo是第一个匹配的字符串,而从string+ pmatch[1].rm_so到string+pmatch[1].rm_eo,则是第二个匹配的字符串,依此类推。

  释放正则表达式

  无论什么时候,当不再需要已经编译过的正则表达式时,都应该调用函数regfree()将其释放,以免产生内存泄漏。

  void regfree(regex_t *preg);

  函数regfree()不会返回任何结果,它仅接收一个指向regex_t数据类型的指针,这是之前调用regcomp()函数所得到的编译结果。

  如果在程序中针对同一个regex_t结构调用了多次regcomp()函数,POSIX标准并没有规定是否每次都必须调用regfree() 函数进行释放,但建议每次调用regcomp()函数对正则表达式进行编译后都调用一次regfree()函数,以尽早释放占用的存储空间。

  报告错误信息

  如果调用函数regcomp()或regexec()得到的是一个非0的返回值,则表明在对正则表达式的处理过程中出现了某种错误,此时可以通过调用函数regerror()得到详细的错误信息。

  size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);

  参数errcode是来自函数regcomp()或regexec()的错误代码,而参数preg则是由函数regcomp()得到的编译结 果,其目的是把格式化消息所必须的上下文提供给regerror()函数。在执行函数regerror()时,将按照参数errbuf_size指明的最 大字节数,在errbuf缓冲区中填入格式化后的错误信息,同时返回错误信息的长度。

  应用正则表达式

  最后给出一个具体的实例,介绍如何在C语言程序中处理正则表达式。

  #include <stdio.h>

  #include <sys/types.h>

  #include <regex.h>

  /* 取子串的函数 */

  static char* substr(const char*str, unsigned start, unsigned end)

  {

  unsigned n = end - start;

  static char stbuf[256];

  strncpy(stbuf, str + start, n);

  stbuf[n] = 0;

  return stbuf;

  }

  /* 主程序 */

  int main(int argc, char** argv)

  {

  char * pattern;

  int x, z, lno = 0, cflags = 0;

  char ebuf[128], lbuf[256];

  regex_t reg;

  regmatch_t pm[10];

  const size_t nmatch = 10;

  /* 编译正则表达式*/

  pattern = argv[1];

  z = regcomp(®, pattern, cflags);

  if (z != 0){

  regerror(z, ®, ebuf, sizeof(ebuf));

  fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern);

  return 1;

  }

  /* 逐行处理输入的数据 */

  while(fgets(lbuf, sizeof(lbuf), stdin)) {

  ++lno;

  if ((z = strlen(lbuf)) > 0 && lbuf[z-1] == '\n')

  lbuf[z - 1] = 0;

  /* 对每一行应用正则表达式进行匹配 */

  z = regexec(®, lbuf, nmatch, pm, 0);

  if (z == REG_NOMATCH) continue;

  else if (z != 0) {

  regerror(z, ®, ebuf, sizeof(ebuf));

  fprintf(stderr, "%s: regcom('%s')\n", ebuf, lbuf);

  return 2;

  }

  /* 输出处理结果 */

  for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x) {

  if (!x) printf("%04d: %s\n", lno, lbuf);

  printf(" $%d='%s'\n", x, substr(lbuf, pm[x].rm_so, pm[x].rm_eo));

  }

  }

  /* 释放正则表达式 */

  regfree(®);

  return 0;

  }

  上述程序负责从命令行获取正则表达式,然后将其运用于从标准输入得到的每行数据,并打印出匹配结果。执行下面的命令可以编译并执行该程序:

  # gcc regexp.c -o regexp

  # ./regexp 'regex[a-z]*' < regexp.c

  0003: #include

  $0='regex'

  0027: regex_t reg;

  $0='regex'

  0054: z = regexec(®, lbuf, nmatch, pm, 0);

  $0='regexec'

  小结

  对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具。本文重点在于阐述如何在C语言中利用正则表达式来简化字符串处理,以便在数据处理方面能够获得与Perl语言类似的灵活性。


vi替换命令简介

Vi的替换命令:
    :ranges/pat1/pat2/g
其中
    : 这是Vi的命令执行界面。
    range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。

    s 表示其后是一个替换命令。

    pat1 这是要查找的一个正则表达式,这篇文章中有一大堆例子。

    pat2 这是希望把匹配串变成的模式的正则表达式,这篇文章中有一大堆例子。

    g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。

一些程序的正则表达式

sed

sed脚本   描述



sed 's/^$/d' price.txt
删除所有空行
sed 's/^[ \t]*$/d' price.txt
删除所有只包含空格或者制表符的行
sed 's/"//g' price.txt
删除所有引号

awk

awk脚本  

描述





awk '$0 !~ /^$/' price.txt


删除所有空行
awk 'NF > 0' price.txt


awk中一个更好的删除所有行的办法
awk '$2 ~ /^[JT]/ {print $3}' price.txt


打印所有第二个字段是'J'或者'T'打头的行中的第三个字段
awk '$2 !~ /[Mm]isc/ {print $3 + $4}' price.txt


针对所有第二个字段不包含'Misc'或者'misc'的行,打印第3和第4列的和(假定为数字)
awk '$3 !~ /^[0-9]+\.[0-9]*$/ {print $0}' price.txt


打印所有第三个字段不是数字的行,这里数字是指d.d或者d这样的形式,其中d是0到9的任何数字
awk '$2 ~ /John|Fred/ {print $0}' price.txt


如果第二个字段包含'John'或者'Fred'则打印整行

grep

grep命令   描述



grep '\t5-...1' phone.txt
把所有电话号码以5开头以1结束的行打印出来,注意制表符是用\t表示的
grep '^S[^ ]* R' phone.txt
打印所有姓以S打头和名以R打头的行
grep '^[JW]' phone.txt
打印所有姓开头是J或者W的行
grep ', ....\t' phone.txt
打印所有姓是4个字符的行,注意制表符是用\t表示的
grep -v '^[JW]' phone.txt
打印所有不以J或者W开头的行
grep '^[M-Z]' phone.txt
打印所有姓的开头是M到Z之间任一字符的行
grep '^[M-Z].*[12]' phone.txt
打印所有姓的开头是M到Z之间任一字符,并且点号号码结尾是1或者2的行

egrep

egrep command   Description



egrep '(John|Fred)' phone.txt
打印所有包含名字John或者Fred的行
egrep 'John|22$|^W' phone.txt
打印所有包含John 或者以22结束或者以W的行
egrep 'net(work)?s' report.txt
从report.txt中找到所有包含networks或者nets的行




vi中的正则表达式

参考: http://net.pku.edu.cn/~yhf/tao_regexps_zh.html

简单的例子

这里有一些有代表性的、比较简单的例子。

vi 命令 作用


:%s/ */ /g 把一个或者多个空格替换为一个空格。
:%s/ *$// 去掉行尾的所有空格。
:%s/^/ / 在每一行头上加入一个空格。
:%s/^[0-9][0-9]* // 去掉行首的所有数字字符。
:%s/b[aeio]g/bug/g 将所有的bagbegbigbog改为bug。 
:%s/t\([aou]\)g/h\1t/g 将所有tagtogtug分别改为hathothug(注意用group的用法和使用\1引用前面被匹配的字符)。


中级的例子(神奇的咒语)

例1

将所有方法foo(a,b,c)的实例改为foo(b,a,c)。这里a、b和c可以是任何提供给方法foo()的参数。也就是说我们要实现这样的转换:

之前   之后
foo(10,7,2)
foo(7,10,2)
foo(x+13,y-2,10)
foo(y-2,x+13,10)
foo( bar(8), x+y+z, 5)
foo( x+y+z, bar(8), 5)

下面这条替换命令能够实现这一魔法:

    :%s/foo(\([^,]*\),\([^,]*\),\([^)]*\))/foo(\2,\1,\3)/g

现在让我们把它打散来加以分析。写出这个表达式的基本思路是找出foo()和它的括号中的三个参数的位置。第一个参数是用这个表达式来识别的::\([^,]*\),我们可以从里向外来分析它: 

[^,]   除了逗号之外的任何字符
[^,]*
0或者多个非逗号字符
\([^,]*\)
将这些非逗号字符标记为\1,这样可以在之后的替换模式表达式中引用它
\([^,]*\),
我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。

现在正是指出一个使用正则表达式常见错误的最佳时机。为什么我们要使用[^,]*这样的一个表达式,而不是更加简单直接的写法,例如:.*,来匹配第一个参数呢?设想我们使用模式.* 来匹配字符串"10,7,2",它应该匹配"10,"还是"10,7,"?为了解决这个两义性(ambiguity),正则表达式规定一律按照最长的串来,在上面的例子中就是"10,7,",显然这样就找出了两个参数而不是我们期望的一个。所以,我们要使用[^,]* 来强制取出第一个逗号之前的部分。

这个表达式我们已经分析到了:foo(\([^,]*\),这一段可以简单的翻译为"当你找到foo(就把其后直到第一个逗号之前的部分标记为\1"。然后我们使用同样的办法标记第二个参数为 \2。 对第三个参数的标记方法也是一样,只是我们要搜索所有的字符直到右括号。我们并没有必要去搜索第三个参数,因为我们不需要调整它的位置,但是这样的模式能 够保证我们只去替换那些有三个参数的foo()方法调用,在foo()是一个重载(overoading)方法时这种明确的模式往往是比较保险的。然后, 在替换部分,我们找到foo()的对应实例,然后利用标记好的部分进行替换,是的第一和第二个参数交换位置。

例2

假设有一个CSV(comma separated value)文件,里面有一些我们需要的信息,但是格式却有问题,目前数据的列顺序是:姓名,公司名,州名缩写,邮政编码,现在我们希望讲这些数据重新组 织,以便在我们的某个软件中使用,需要的格式为:姓名,州名缩写-邮政编码,公司名。也就是说,我们要调整列顺序,还要合并两个列来构成一个新列。另外, 我们的软件不能接受逗号前后面有任何空格(包括空格和制表符)所以我们还必须要去掉逗号前后的所有空格。

这里有几行我们现在的数据:

    Bill Jones,     HI-TEK Corporation ,  CA, 95011
    Sharon Lee Smith,  Design Works Incorporated,  CA, 95012
    B. Amos   ,  Hill Street Cafe,  CA, 95013
    Alexander Weatherworth,  The Crafts Store,  CA, 95014
    ...
我们希望把它变成这个样子:
    Bill Jones,CA 95011,HI-TEK Corporation
    Sharon Lee Smith,CA 95012,Design Works Incorporated
    B. Amos,CA 95013,Hill Street Cafe
    Alexander Weatherworth,CA 95014,The Crafts Store
    ...
我们将用两个正则表达式来解决这个问题。第一个移动列和合并列,第二个用来去掉空格。

下面就是第一个替换命令:

    :%s/\([^,]*\),\([^,]*\),\([^,]*\),\(.*\)/\1,\3 \4,\2/
这里的方法跟例1基本一样,第一个列(姓名)用这个表达式来匹配:\([^,]*\),即第一个逗号之前的所有字符,而姓名内容被用\1标记下来。公司名和州名缩写字段用同样的方法标记为\2 \3,而最后一个字段用\(.*\)来匹配("匹配所有字符直到行末")。替换部分则引用上面标记的那些内容来进行构造。

下面这个替换命令则用来去除空格:

    :%s/[ \t]*,[ \t]*/,/g
我们还是分解来看:[ \t]匹配空格/制表符,[ \t]* 匹配0或多个空格/制表符,[ \t]*,匹配0或多个空格/制表符后面再加一个逗号,最后,[ \t]*,[ \t]* 匹配0或多个空格/制表符接着一个逗号再接着0或多个空格/制表符。在替换部分,我们简单的我们找到的所有东西替换成一个逗号。这里我们使用了结尾的可选的g参数,这表示在每行中对所有匹配的串执行替换(而不是缺省的只替换第一个匹配串)。

例3

假设有一个多字符的片断重复出现,例如:
Billy tried really hard
Sally tried really really hard
Timmy tried really really really hard
Johnny tried really really really really hard
而你想把"really"、"really really",以及任意数量连续出现的"really"字符串换成一个简单的"very"(simple is good!),那么以下命令:
:%s/\(really \)\(really \)*/very /
就会把上述的文本变成:
Billy tried very hard
Sally tried very hard
Timmy tried very hard
Johnny tried very hard
表达式\(really \)*匹配0或多个连续的"really "(注意结尾有个空格),而\(really \)\(really \)* 匹配1个或多个连续的"really "实例。

比如下面这段我需要换成 ubb 标签

<img src="gu.jpg" />
<img src="os.jpg" width="100" />
<img src="hu.jpg" style="border:solid 1px red" />
<img src="ang.jpg" />

vim 命令模式,输入

:%s/.*src="\([^"]*\)"[^>]*>/[img]\1[\/img]/g

替换为

[img ]gu.jpg[ /img]
[img ]os.jpg[ /img]
[img ]hu.jpg[ /img]
[img ]ang.jpg[ /img]

解释如下:

:
命令执行状态

%s
表示查找并替换

%s/a/b/g
a 被查找的字符串(正则匹配);b 要替换成的文字;g 表示全局搜索替换(否则只处理找到的第一个结果)

\([^"]*\)
表示非引号的字符N个;外面 \(\) 表示后面替换要用(用 \1,...,\9等引用)

[\/img]
/ 需要被 \ 转义

与其它工具正则不一样的地方在于 () 也必须 \(\),怪不得我老是弄不出来。

2007年2月10日星期六

Linux下Nvidia的XGL+Beryl安装

参考: http://wiki.ubuntu.org.cn/Beryl-Edgy-nVIDIA?highlight=%28nvidia%29
http://wiki.beryl-project.org/wiki/Install_Beryl_on_Ubuntu_Edgy_with_nVidia#Installing_the_nVIDIA_Driver
系统: ubuntu 6.10
1、增加xgl源
## XGL and alglx
deb http://nvidia.limitless.lupine.me.uk/ubuntu edgy stable
deb http://ubuntu.beryl-project.org/ edgy main
执行:
sudo wget http://nvidia.limitless.lupine.me.uk/ubuntu/root@lupine.me.uk.gpg -O- | apt-key add -
sudo wget http://ubuntu.beryl-project.org/root@lupine.me.uk.gpg -O- | apt-key add -
来加入PGP签名
sudo apt-get update

2、安装相关软件

sudo apt-get install linux-restricted-modules-$(uname -r) nvidia-glx nvidia-xconfig beryl emerald emerald-themes
3、配置
sudo nvidia-xconfig --add-argb-glx-visual
sudo gedit /etc/xdg/autostart/beryl- manager.desktop
 [Desktop Entry]  Encoding=UTF-8  Name=Beryl Manager
GenericName=3D Window Manager Comment=Beryl Manager daemon
Icon=/usr/share/icons/hicolor/scalable/apps/beryl-manager.svg Exec=beryl-manager Terminal=false Type=Application
Categories=GTK;GNOME;Application;Utility; StartupNotify=true
sudo cp /etc/xdg/autostart/beryl-manager.desktop /usr/share/applications/beryl-manager.desktop

4、重新启动。
经过重新启动,我是重新启动机器的,然后又经历了一下系统的自动升级内核,又再次重启,才看到漂亮的Beryl。
果然爽呀

什么时候学会了snap,再贴图吧

2007年2月6日星期二

Latex中的字体

参考: http://forum.ubuntu.org.cn/viewtopic.php?t=36769

2.1 中文 Type1 字型

由於 Type1 字型的規格,只能容納 256 個空間,也就是只能放 256 個字,這在英文語系沒有問題,但中文光 Big-5 就有一萬多字,更不用說是其他更大的編碼字集了。很不幸的,TeX 的字型規格也是如此,只能容納 256 個字。

因此就有許許多多的前輩們想辦法使用 subfont 的觀念,把中文字打散,分裝在不同的 Type1 字型中,由數十個中文 Type1 字型組成一個完整的中文字型,經由 NFSS(New Font Selection Scheme) 的選字機制,來組合數十個分散的 Type1 字型成為一整個的中文字集,再透過字型定義檔 *.fd 來取用字型。

2.2 中文 CID-Keyed 字型

由於 Type1 字型實在是不太適合用於中文,於是 Adobe 公司,另外研發了 CID-Keyed font 字型規格,把字型的實體資料集中在一個檔案內,再另外使用索引、對應的方式來取用所需要的字型,這樣就不會受限於 256 個字的限制了。他仍然是和 Type1/TTF 一樣是向量字,因此用來製作 PDF 檔,在顯示上不會如 pk 點陣字型那麼醜。

除了字數不受限的好處外,CID-Keyed font 的精妙處,就在於「索引、對應」,由於用索引的方式取字,因此,我們一般文字處理上要用到的 cut&paste&search 就可以很容易的達成。這在使用 subfont 方式的中文 Type1 及 pk 字型就沒有這個好處。而且,由於可以索引、對應,也代表著,實體字型資料不必一定要放在檔案中,可以放在使用者的系統中就行了,就像現在的 HTML 格式一樣,可以不必帶著字型跑。這對 ps/PDF 格式尤其重要,因為這些格式雖然顯示上很精緻,但如果嵌入字型的話檔案大了些,在網路傳輸上不很方便。

對 TeX/LaTeX 系統而言,這個好處並不會帶來嚴重的缺失,因為視使用場合,也是可以把部份,甚至全部的字型給嵌入檔案中的,不像 HTML 格式,目前要內嵌字型的話,標準還不統一,IE 可以做到,但其他 web browser 就無法閱覽了。像這篇文章的 PDF 格式中,標題的顏楷體就是嵌入王漢宗博士捐贈的 TTF(CID TruType),仍然可以 cut&paste&search。

如果各位對這些字型檔規格有興趣,可以到 Adobe 公司去下載 spec 規格檔來研究,這些規格都是公開的格式。

2.3 中文 TTF 字型

這是目前使用上相當普及的字型規格,也因此,許多 hacker 們的腦筋都會動到 TTF 上,例如 ttf2pt1 可以將 TTF 轉成 Type1 字型來用,而 DVIPDFM$x$2.2 及較新版的 GhostScript 也可利用 TTF 當成是 CID-Keyed font 來使用。甚至以往的 pk 點陣字,也是由 ttf2pk 來由 TTF 轉出來的。

如果想使用 dvips 來產生 ps 檔,那這裡還要製作中文 Type1 字型。當然,一般使用的話,應該是可以不必製作中文 Type1 了,直接由 dvipdfmx 抓取系統上的 TTF 就可以了,但由於有時要和一些處理 eps 的 packages 配合,例如 PSTrick,所以這裡一併把 Type1 字型製作出來。

給 TeX/LaTeX 處理的話,只需要 *.tfm 檔就可以運作,生成 *.dvi 檔。但要由 dvips, dvipdfmx, pdflatex 處理的話,要有實體的字型才行,因為他們的輸出不是 ps 檔,就是 PDF 檔。


* *.tfm (TeX Font Metric, 字型描述檔)
為二位元檔,TeX 有這個字型描述檔就可以產生 *.dvi 檔,但其中是沒有真正的字型實體資料在裡頭,得由其他的輔助工具來完成。任何型式的字型,要給 TeX 使用前,都一定要先產生這個 tfm 檔,而且 TeX 只要有這個 tfm 檔就可以運作。

* *.afm (Ascii Font Metric)
這也是字型描述檔,但是以純文字的格式存在,要給 LaTeX 使用的話,可以由 afm2tfm 來產生 *.tfm 檔。一般的 Type 1 字型會只附 afm 檔,而沒有 tfm 檔。TTF 的話,可以由 ttf2tfm 來產生。

* *.mf
這是 Knuth 教授設計的 Metafont source,他本身是一種 outline font,但由於顯示/成形(render/raster)較複雜,目前不適合像 Type 1/TTF 一樣 on-the-fly 使用,是另產生 bitmap 形式 *.*gf (generic font) 再由 gftopk 產生 pk 字型來使用的。Metafont 的可執行檔就是 mf,mf 在 font-makeing mode 時可以產生 tfm 檔。MetaPost4.1 也是可以用來製作字型,他的延伸檔名通常是 *.mp,可執行檔則是 mp 或 mpost。

* *.pfa (POSTSCRIPT Font Ascii)
這是 POSTSCRIPT Type 1 字型檔,但是以純文字的格式存在,可由 t1asm 來轉成 binary 格式(即 *.pfb)。

* *.pfb (POSTSCRIPT Font Binary)
和 *.pfa 同,但是以 binary 格式存在。兩種格式目前都可以直接使用。

* *.*pk (packed font)
這是給 dvi viewer/printer/dvips 使用的點陣字,以便真正產生字型嵌入 ps 檔中或供 printer 使用。當然,這個 pk 字,可能是由 Metafont、Type 1 或 TTF 轉成的。

請注意這裡的表示方法,pk 字型是由其解析度來成為檔名的一部份的,例如 600 dpi 的 pk 字型,實際上的檔名是 *.600pk(gf 字型的表示法亦同)。

* *.fd (font description)
這是給 LaTeX 找字型用的字型定義檔。

Ubuntu下安装latex + cjk 下的UTF8编码字体

为什么?
以前我写过安装GBK字体,这几天在Linux下都是用的UTF-8编码,所以就想把Latex也变为UTF8编码,这样方便些

怎么做?
本来是完全可以按前面的方法做的,不过用gbkfonts程序生成UTF8编码时会出错。我天生懒散,就在网上又找了一阵子,找到个更好用的,这才发现原来更好的一直就在身边呀。由 http://mail.ustc.edu.cn/~lixuebai/GNU/TeTeXInstall.html 的指导,在 http://debian.ustc.edu.cn/debian-uo/dists/sid/misc/pool/thuthesis/tex-cjkfonts_0.3-4_i386.deb 处下载tex-cjkfonts_0.3-4_i386.deb包,安装
$ sudo dpkg -i tex-cjkfonts_0.3-3_i386.deb
美中不足的是,这个东东生成 的文件中,描述文件c70*.fd有错误,需要手工修改一个文件。(不知道是否是我的系统问题,ubuntu 6.10 + tetex 3.0 + cjk 4.5.2 )
$ sudo vim /usr/share/tex-cjkfonts/scripts/Makefile
把其中的28-32行替换为
        @echo "\def\\\fileversion{4.5.1}" >> $(FDFILE)
        @echo "\def\\\filedate{`date +%Y/%m/%d`}" >> $(FDFILE)
        @echo "\ProvidesFile{$(FDFILE)}[\\\filedate\space\\\fileversion]" >> $(FDFILE)
        @echo "" >> $(FDFILE)
        @echo "\DeclareFontFamily{C$(EID)}{$(ENCNAME)}{\hyphenchar \\\font\m@ne}" >> $(FDFILE)
 你也可以从这里得到 http://www.haikuo.googlepages.com/Makefile
然后,就可以生成字体了
$ make-fpkg /usr/share/fonts/truetype/microsoft/simsun.ttc utf8 song Microsoft
会在当前目录下生成文件 latex-cjk-fonts-utf8song.tar.gz
 make-fpkg /usr/share/fonts/truetype/microsoft/simkai.ttf utf8 kai microsoft
 make-fpkg /usr/share/fonts/truetype/microsoft/simfang.ttf utf8 fs microsoft
 make-fpkg /usr/share/fonts/truetype/microsoft/simli.ttf utf8 li microsoft
 make-fpkg /usr/share/fonts/truetype/microsoft/simyou.ttf utf8 you microsoft
 make-fpkg /usr/share/fonts/truetype/microsoft/stxinwei.ttf utf8 xinwei huawen
 make-fpkg /usr/share/fonts/truetype/microsoft/stzhongs.ttf utf8 zhongsong huawen
 make-fpkg /usr/share/fonts/truetype/microsoft/stcaiyun.ttf utf8 caiyun huawen
 make-fpkg /usr/share/fonts/truetype/microsoft/stfangso.ttf utf8 fangsong huawen
 make-fpkg /usr/share/fonts/truetype/microsoft/stxihei.ttf utf8 xihei huawen
 make-fpkg /usr/share/fonts/truetype/microsoft/stxingka.ttf utf8 xingkai huawen

然后在$HOME目录下,解开生成的所有压缩文件就可以了。
$ tar zxvf latex-cjk-fonts-utf8song.tar.gz

最后一步,
$ mktexlsr ; update-updmap ; updmap
可以测试一下
\documentclass[11pt]{article}
\usepackage{CJK}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage[indentafter]{titlesec}
\usepackage[unicode,dvipdfm,CJKbookmarks]{hyperref}
\usepackage{xspace,colortbl}

\author{Zhang Rui}
\title{测试一下}
\date{2006-08-17}

\begin{document}
\begin{CJK*}{UTF8}{song}
\CJKindent

\maketitle
\section{hi \CJKfamily{caiyun} 蔡 }
{\CJKfamily{kai}大家好,这是楷体}\\
{\CJKfamily{kaiti}大家好,这是方正楷体}\\
{\CJKfamily{xihei}大家好,这是细黑体}\\
{\fontsize{42pt}{\baselineskip}\selectfont 初号字体}\\
{\fontsize{5.25pt}{\baselineskip}\selectfont 七号字体}

\section{fundermental-基本}
{\CJKfamily{you}哈哈,当然是幼圆了。}sexy one
\\

\clearpage
\end{CJK*}
\end{document}

不过书签还有些问题,过几天搞好了再说说吧


2007年2月3日星期六

VIM中清理掉Dos文件中的^M

清理掉DOS文本中的^M可以在:1,$s/^M//g,其中^M是CTRL+V, CTRL+M。

--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

用Emacs转换文件的编码为UTF8

用emacs打开文件
C-x f utf-8 C-x C-s
搞定。

--
一步一步教你从互联网赚钱
http://www.zqzn.com/index.asp?rid=key480769

2007年2月2日星期五

性格测试


――老虎型:具控制与任务导向特质; 

――孔雀型:具社交与关系导向特质; 

――无尾熊型:具稳健与关系导向特质; 

――猫头鹰型:具系统与任务导向特质; 

――变色龙型:具弹性导向特质的整合型。
中国人力资源总监/经理超过一半是老虎,排在其后的分别是孔雀和变色龙,而美国排在前三位分别为无尾熊、孔雀和变色龙。


■老虎型

  个性特点:有自信,够权威,决断力高,竞争性强,胸怀大志,喜欢评估。
企图心强烈,喜欢冒险,个性积极,竞争力强,有对抗性。

  优点:善于控制局面并能果断地作出决定的能力;用这一类型工作方式的人成就非凡。

  缺点:当感到压力时,这类人就会太重视迅速的完成工作,就容易忽视细节,他们可能不顾自己和别人的情感。由于他们要求过高,加之好胜的天性,有时会成为工作狂。

老虎型工作风格的主要行为:

交谈时进行直接的目光接触;
有目的性且能迅速行动;
说话快速且具有说服力;
运用直截了当的实际性语言;
办公室挂有日历、计划要点。

老虎泰格,具备高支配型特质,竞争力强、好胜心盛、积极自信,是个有决断力的组织者。他胸怀大志、勇于冒险、分析敏锐,主动积极且具极为强烈的企图心,只要认定目标就勇往直前,不畏反抗与攻讦,誓要取得目标的家伙。

老虎型领导人都倾向以权威作风来进行决策,当其部属者除要高度服从外,也要有冒险犯难的勇气,为其杀敌闯关。

老虎型族人最适合开创性与改革性的工作,在开拓市场的时代或需要执行改革的环境中,最容易有出色的表现。

宏��集团的施振荣和前美国GE总裁韦尔奇 (Jack Welch)等,都是老虎型领导人。


■孔雀型

  个性特点:很热心,够乐观,口才流畅,好交朋友,风度翩翩,诚恳热心。热情洋溢、好交朋友、口才流畅、个性乐观、表现欲强。

  优点:此类型的人生性活泼。能够使人兴奋,他们高效地工作,善于建立同盟或搞好关系来实现目标。他们很适合需要当众表现、引人注目、态度公开的工作。

  缺点:因其跳跃性的思考模式,常无法顾及细节以及对事情的完成执着度


孔雀型工作风格的主要行为

运用快速的手势;
面部表情特别丰富;
运用有说服力的语言;
工作空间里充满了各种能鼓舞人心的东西。




孔雀百利具有高度的表达能力,他的社交能力极强,有流畅无碍的口才和热情幽默的风度,在团体或社群中容易广结善缘、建立知名度。孔雀型领导人天生具备乐观与和善的性格,有真诚的同情心和感染他人的能力,在以团队合作为主的工作环境中,会有最好的表现。

  孔雀型领导人在任何团体内,都是人缘最好的人和最受欢迎的人,是最能吹起领导号角的人物。 当孔雀型领导人的部属者,除要能乐于在团队中工作外,还要对其领导谦逊得体,不露锋、不出头,把一切成功光华都让与领导。 孔雀型领导人,不宜有个老虎型领导人当二把手或部属。 

反之,若老虎型领导人有个孔雀型的人甘愿当其二把手,则会是最佳搭配。孔雀型的人天生具有鼓吹理想的特质,在推动新思维、执行某种新使命或推广某项宣传等任务的工作中,都会有极出色的表现。 他们在开发市场或创建产业的工作环境中,最能发挥其所长。

有台湾企管大师之称的石滋宜博士,就是属于孔雀型的人。


■考拉型

  个性特点:很稳定,够敦厚,温和规律,不好冲突。行事稳健、强调平实,有过人的耐力,温和善良。

  优点:他们对其他人的感情很敏感,这使他们在集体环境中左右逢源。

  缺点:很难坚持自己的观点和迅速做出决定。一般说来,他们不喜欢面对与同事意见不和的局面,他们不愿处理争执。


考拉型工作风格的主要行为

面部表情和蔼可亲;
说话慢条斯理,声音轻柔;
用赞同型、鼓励性的语言;
办公室里摆有家人的照片。


无尾熊加利具有高度的耐心。他敦厚随和,行事冷静自持;生活讲求律规但也随缘从容,面对困境,都能泰然自若。

  无尾熊型领导人,适宜当安定内部的管理工作,在需要专业精密技巧的领域,或在气氛和谐且不具赶迫时间表等的职场环境中,他们最能发挥所长。当企业的产品稳踞市场时,无尾熊型的企业领导人是极佳的总舵手。但当企业还在开拓市场的时候,老虎型或孔雀型的人似乎较占优势。

或许,勇于开疆辟土的老虎型的人当一哥, 配以与人为善的无尾熊型人当二把手,也是好的搭配。 无尾熊型领导人强调无为而治,能与周围的人和睦相处而不树敌,是极佳的人事领导者,适宜在企业改革后,为公司和员工重建互信的工作。又由于他们具有高度的耐心性,有能力为企业赚取长远的利益,或为公司打好永续经营的基础。


■猫头鹰型

  个性特点:很传统,注重细节,条理分明,责任感强,重视纪律。保守、分析力强,精准度高,喜欢把细节条例化,个性拘谨含蓄。

  优点:天生就有爱找出事情真相的习性,因为他们有耐心仔细考察所有的细节并想出合乎逻辑的解决办法。

  缺点:把事实和精确度置于感情之前,这会被认为是感情冷漠。在压力下,有时为了避免做出结论,他们会分析过度。


猫头鹰型工作风格的主要行为

很少有面部表情;
动作缓慢;
使用精确的语言、注意特殊细节;
办公室里挂有图表、统计数字等。



猫头鹰斯诺具有高度精确的能力,其行事风格,重规则轻情感,事事以规则为准绳,并以之为主导思想。 他性格内敛、善于以数字或规条为表达工具而不大擅长以语言来沟通情感或向同事和部属等作指示。 他行事讲究条理分明、守纪律重承诺,是个完美主义者

  架构稳定和制度健全的组织最好聘用猫头鹰型的人来当各级领导人,因为猫头鹰型领导人喜欢在安全架构的环境中工作,且其表现也会最好。其行事讲究制度化,事事求依据和规律的习性,极为适合事务机构的行事方式。然而,当企业需要进行目标重整、结构重组、流程变革时,猫头鹰型领导人就会产生迷失,不知如何处事,也不知如何自处。对改革行动,上者会先保持观望的态度,再慢慢适应新的局面;中者也会先保持观望的态度,然后呈辞求去;下者则会结集反对力量,公然表示反对或隐晦地从事反对等的行为。

又由于猫头鹰型人的行事决策风格,是以数据和规则为其主导思想,其直觉能力和应变能力都偏低,随而创造和创新能力也相对地弱,因而不宜担任需要创建或创新能力的任务。组织完善和发展安定的企业,宜用猫头鹰型企管人当家。

他们尊重传统、重视架构、事事求据喜爱工作安定的性格,是企业安定力量的来源。然而,由于他们行事讲究制度化,事事求依据和规律,故会将细节条例化,事事检查以求正确无误,甚至为了办事精确,不惜对人吹毛求疵或挑剔别人的错误,以显现自己一切照章办事的态度和求取完美的精神,不易维持团队内的团结精神和凝聚力。


■变色龙型

  工作风格的优点:善于在工作中调整自己的角色去适应环境,具有很好的沟通能力。

  缺点:从别人眼中看变色龙族群,会觉得他们较无个性及原则。


主要行为:

综合老虎、孔雀、考拉、猫头鹰的特质,看似没有凸出个性,但擅长整合内外资;
没有强烈的个人意识形态,是他们处事的价值观。


变色龙科尔具有高度的应变能力。他性格善变,处事极具弹性,能为了适应环境的要求而调整其决定甚至信念。

  变色龙型的领导人,是支配型、表达型、耐心型、精确型四种特质的综合体,没有突出的个性,擅长整合内外信息,兼容并蓄,不会与人为敌,以中庸之道处世。他们处事圆融,弹性极强,处事处处留有余地,行事绝对不会走偏锋极端,是一个办事让你放心的人物。然而,由于他们以善变为其专长,故做人不会有什么立场或原则,也不会对任何人有效忠的意向,是个冯道式的人物。部属会难以忍受其善变和不讲原则的行为;当他们上司者,则会日夜担心不知何时会遭其「出卖」。

  变色龙型的领导人既没有凸出的个性,对事也没有什么强烈的个人意识型态,事事求中立并倾向站在没有立场的位置,故在冲突的环境中,是个能游走折中的高手。由于他们能密切地融合于各种环境中,他们可以为企业进行对内对外的各种交涉,只要任务确实和目标清楚,他们都能恰如其分地完成其任务。


这是一个在美国高层企业管理人员中普遍认可并用之于迅速区分不同人际风格的一套测试题,管理人员通过它可以来了解下属的工作性格以扬长避短,普通职员通过它可以知己知彼完善自身。
 

性格测试

你是老虎、孔雀还是猫头鹰、变色龙..

先试试回答以下的问题:
如果答案是非常同意,请给自己打5分;
如果是比较同意,则打4分;
如果是差不多,打3分;
如果只是有一点同意,请打2分;
如果答案是不同意,就打1分。

提醒你注意一点――回答问题时不是依据别人眼中的你来判断,而是你认为你本质上是不是这样的,看看问题吧:

1.你做事是一个值得信赖的人吗?
非常同意  比较同意  差不多  一点同意  不同意
2.你个性温和吗?
非常同意  比较同意  差不多  一点同意  不同意
3.你有活力吗?
非常同意  比较同意  差不多  一点同意  不同意
4.你善解人意吗?
非常同意  比较同意  差不多  一点同意  不同意
5.你独立吗?
非常同意  比较同意  差不多  一点同意  不同意
6.你受人爱戴吗?
非常同意  比较同意  差不多  一点同意  不同意
7.做事认真且正直吗?
非常同意  比较同意  差不多  一点同意  不同意
8.你富有同情心吗?
非常同意  比较同意  差不多  一点同意  不同意
9.你有说服力吗?
非常同意  比较同意  差不多  一点同意  不同意
10.你大胆吗?
非常同意  比较同意  差不多  一点同意  不同意
11.你精确吗?
非常同意  比较同意  差不多  一点同意  不同意
12.你适应能力强吗?
非常同意  比较同意  差不多  一点同意  不同意
13.你组织能力好吗?
非常同意  比较同意  差不多  一点同意  不同意
14.你是否积极主动?
非常同意  比较同意  差不多  一点同意  不同意
15.你害羞吗?
非常同意  比较同意  差不多  一点同意  不同意
16.你强势吗?
非常同意  比较同意  差不多  一点同意  不同意
17.你镇定吗?
非常同意  比较同意  差不多  一点同意  不同意
18.你勇于学习吗?
非常同意  比较同意  差不多  一点同意  不同意
19.你反应快吗?
非常同意  比较同意  差不多  一点同意  不同意
20.你外向吗?
非常同意  比较同意  差不多  一点同意  不同意
21.你注意细节吗?
非常同意  比较同意  差不多  一点同意  不同意
22.你爱说话吗?
非常同意  比较同意  差不多  一点同意  不同意
23.你的协调能力好吗?
非常同意  比较同意  差不多  一点同意  不同意
24.你勤劳吗?
非常同意  比较同意  差不多  一点同意  不同意
25.你慷慨吗?
非常同意  比较同意  差不多  一点同意  不同意
26.你小心翼翼吗?
非常同意  比较同意  差不多  一点同意  不同意
27.你令人愉快吗?
非常同意  比较同意  差不多  一点同意  不同意
28.你传统吗?
非常同意  比较同意  差不多  一点同意  不同意
29你亲切吗?
非常同意  比较同意  差不多  一点同意  不同意
30.你工作足够有效率吗?
非常同意  比较同意  差不多  一点同意  不同意

好啦,现在把第5、10、14、18、24、30题的分加起来就是你的"老虎"分数;

把第3、6、13、20、22、29题的分加起来就是你的"孔雀"分数;

把第2、8、15、17、25、28题的分加起来就是你的"考拉"分数;

把第1、7、11、16、21、26题的分加起来就是你的"猫头鹰"分数;

把第4、9、12、19、23、27题的分加起来就是你的"变色龙"分数。

假若你有某一项分远远高于其它四项,你就是典型的这种属性,假若你有某两项分大大超过其它三项,你是这两种动物的综合;假若你各项分数都比较接近,恭喜你,你是一个面面俱到近似完美性格的人;假若你有某一项分数特别偏低的话,想提高自己就需要在那一种动物属性的加强上下工夫了。我们就来逐一分析一下各种迥然不同的"动物"吧!


2007年2月1日星期四

Ubuntu 6.10下Latex的安装

Latex做为我最重要的文档编辑工具,是我使用Linux的必备工具。如果你对它不甚了解的话,可以参看 CTeX网站  ,上面会有你想要的。或者 http://learn.tsinghua.edu.cn:8080/2001315450/tex_frame.html

[1] 安装基本的Latex系统
     apt-get install tetex-base tetex-bin tetex-extra cjk-latex dvipdfm-cjk-cmap
[2]安装系统带的GB编码的字体
    apt-get install hbf-jfs56 mftrace tfm-arphic-gbsn00lp tfm-arphic-gkai00mp

至此,你已经可以编写中文的 tex 文档了。如
\documentclass[11pt]{article}
\usepackage{CJK}

\begin{document}
\begin{CJK*}{GB}{song}
\CJKindent

\section{前两分钟的流程}
你可能需要30次练习才能熟练掌握这两分钟,但掌握之后,你会收益无穷。

\end{CJK*}
\end{document}

用latex , dvips , dvipdf , pdflatex都可以生成相应的文档。
不过,现在,你还只能用GB编码,下面我们介绍如何加入GBK编码。

[3] 下载工具 gbkfonts
http://learn.tsinghua.edu.cn:8080/2001315450/src/gbkfonts-linux-0.3.tar.gz
或  http://www.haikuo.googlepages.com/gbkfonts-linux-0.3.tar.gz
解开,假定在~/gbkfonts- linux-0.3

[4]拷贝Windows下的truetype字体。如
$ cd ~/gbkfonts- linux-0.3
$ copy /media/hda1/windows/Fonts/sim*.tt? .
....
$ mv simsun.ttc simsun.ttf

[5]用gbkfonts生成字体
$ mkdir temp
$ cd temp
$ ../gbkfonts ../simhei.ttf hei
这样就可以生成hei体了,你可以用一个简单的批处理来生成所有的字体
$ vim run
../gbkfonts ../shuang.ttf shuang
../gbkfonts ../heimi.ttf heimi
../gbkfonts ../simsun.ttf song
../gbkfonts ../simhei.ttf hei
../gbkfonts ../simfang.ttf fs
../gbkfonts ../simkai.ttf kai
../gbkfonts ../simli.ttf li
../gbkfonts ../simyou.ttf you
../gbkfonts ../fzytk.ttf yao
../gbkfonts ../stcaiyun.ttf caiyun
../gbkfonts ../stxihei.ttf xihei
../gbkfonts ../stxinwei.ttf xinwei
../gbkfonts ../fzstk.ttf shuti
../gbkfonts ../sthupo.ttf hupo
../gbkfonts ../stxingka.ttf xingkai
../gbkfonts ../stfangso.ttf fangsong
../gbkfonts ../stzhongs.ttf zhongsong

等待它运行结束。

[6] 现在,你的temp目录下有一些文件了
$ sudo cp tex/latex/CJK/GB/c19*.fd /usr/share/texmf/tex/latex/CJK/GB
然后,用编辑器把 ttfonts.map中的内容,加到 /etc/texmf/map/ttf2pk/ttfonts/ttfonts.map中去

[7] 拷贝字体
$ sudo cp -r fonts/tfm/chinese /usr/share/texmf/fonts/tfm

好了,现在试一个例子吧
\documentclass[11pt]{article}
\usepackage{CJK}

\begin{CJK*}{GBK}{song}
\end{CJK*}

\author{Zhang Rui}
\title{测试一下}
\date{2006-08-17}

\begin{document}
\begin{CJK*}{GBK}{song}
\CJKindent

\maketitle
\section{hi}
{\CJKfamily{kai}大家好,这是楷体}\\
{\fontsize{42pt}{\baselineskip}\selectfont 初号字体}\\
{\fontsize{5.25pt}{\baselineskip}\selectfont 七号字体}

\section{fundermental-基本}
{\CJKfamily{you}哈哈,当然是基本的了。}sexy one
\\

\clearpage
\end{CJK*}
\end{document}

怎么样,已经可以用 latex 命令把它变为 dvi 文件了吧。不过这个 dvi 文件还看不了,因为 latex 还不知道怎么生成可以用的字体。

[8] 拷贝 truetype 字体
拷贝 windows 下的truetype 字体到系统和latex的字体中去。

$ sudo mkdir /usr/share/fonts/truetype/microsoft (如果没有的话,当然microsoft目录可以取其它的名字)
$ sudo cp ../*.ttf /usr/share/fonts/truetype/microsoft
$ sudo mkdir  /usr/share/texmf/fonts/truetype/microsoft
$ cd /usr/share/texmf/fonts/truetype/microsoft
$ ln -s /usr/share/fonts/truetype/microsoft/simsun.ttf simsun.ttf
...
可以用个批处理来做sudo ln -s /usr/share/fonts/truetype/microsoft/simhei.ttf simhei.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/simsun.ttf simsun.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/simyou.ttf simyou.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/simkai.ttf simkai.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/simli.ttf  simli.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/simfang.ttf simfang.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/shuang.ttf shuang.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/heimi.ttf heimi.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/fzytk.ttf fzytk.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/fzstk.ttf fzstk.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stcaiyun.ttf stcaiyun.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stxihei.ttf stxihei.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stxinwei.ttf stxinwei.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/fzstk.ttf fzstk.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/sthupo.ttf sthupo.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stxingka.ttf stxingka.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stfangso.ttf stfangso.ttf
sudo ln -s /usr/share/fonts/truetype/microsoft/stzhongs.ttf stzhongs.ttf

$ sudo mktexlsr

现在就可以用 dvips , dvipdfm ,dvipdfmx 或 pdflatex 来处理上面的测试文件了。
搞定。


[9]
用编辑器把 ttfonts.map中的内容,加到 /etc/ttf2pk/ttfonts.map中去

看到了/etc/ttf2pk/下有这个文件,就用上了,还不知道干什么用的,就做了。
还有,就是用gbkfonts 生成的文件中还有一些,如 cid-x.map cjk.map 什么的都没用上,也还没弄懂,但系统已经可以用了,先不管了,到时候再补充吧

Debian下socks5服务器的安装

[1] 下载
http://www.haikuo.googlepages.com/socks5-v1.0r11.patched.tgz

[2] 编译
$ ./configure --with-threads --with-srvconffile=/etc/socks5/config --with-srvpwdfile=/etc/socks5/passwd
$ make

[3] 安装
$ sudo make server.install

[4] 配置
$ vim /etc/socks5/config
### A socks5 Config file to use between 2 servers, using a VPN
#
# auth source-host source-port auth-methods
# permit auth cmd src-host dest-host src-port dest-port [user-list]
# deny auth cmd src-host dest-host src-port dest-port [user-list]
# Proxy lines are of the form:
# proxy-type dest-host dest-port proxy-list
# socks4 dest-host dest-port proxy-list
# socks5 dest-host dest-port proxy-list
# noproxy dest-host dest-port proxy-list
 
# set SOCKS5_BINDINFC 9301
# SOCKS4
set SOCKS5_V4SUPPORT
 
#  
set SOCKS5_MAXCHILD 30
 
#  
set SOCKS5_TIMEOUT 15
set SOCKS5_NOIDENT
set SOCKS5_DEMAND_IDENT
 
#  
# set SOCKS5_PWDFILE /etc/socks5.pwd
 
# 用户认证方式
auth - - u
 
# 允许所有IP的用户
permit u - - - - - -
 
# 若限制某个IP段(192.168.0.0/255.255.255.0)可访问
#permit - - 192.168.0. - - -
# 若限制某个IP( 192.168.0.10)可访问
#permit - - 192.168.0.10 - - -
deny - - - - - -
# 级连
# socks4 - - 202.110.217.75:1080
# socks5 - - 61.167.58.77:1080

然后是密码文件
$ vim /etc/socks5/passwd
# userA passwd
userA passA
 
[5] 启动服务
确定你的 /etc/services 文件中有包含 socks的描述,否则就手动加入

$ vim /etc/services
socks           1080/tcp                        # socks proxy server
socks           1080/udp

服务采用inetd的方式,
在 /etc/inetd.conf 中加入

$ vim /etc/inetd.conf
#socks5 server
socks5  stream  tcp     nowait  root    /usr/local/bin/socks5   socks5 -i

重启 inetd
$ sudo /etc/init.d/inetd restart

现在, 一个socks5的服务就启动了。

更精细的参数配置,可以在网上Google一下,有很多