2007年8月31日星期五

笑话

曹孟德有一小妾,才貌双全,某日听闻刘皇叔麾下有一将名曰关羽,此君文武全才,乃世所难得之名将,心下不服,欲试其才。某日见关羽,小妾便以双手为笔,划出一个大大的圈形,关羽见之,便以手划出一条长长的弧线;小妾一怔,又伸出一指,关羽见之,便伸双指;小妾点点头,手摆在腹前划了个半圆,关羽见之忙摇摇手。
小妾回去后见到曹操,直对曹操夸关羽有才,她先以旭日问之,关羽以残月应之,她再问其才学当时举世第一吧,关羽却谦虚的表示自己最多第二,她赞关羽满腹经纶,他却摇手表示岂敢岂敢……

关羽回去见到刘备,直对刘备说"曹操的小妾怎么那么无聊,她先说一张大饼,我就说一根油条,她问一根够吗,我说最起码两根,她问那样饱了没?我说不,还没哪……

刘备觉着奇怪,因为刚才张飞过来对他说,他看见关羽同曹操的小妾有一腿,因为他看见那小妾说她那有那么大,而关羽则说他那有那么长,小妾问一次够吗,关羽说最起码干两次,小妾问肚子大了怎么办,最可气关羽竟说不关我事……

笑话

 

1、有次等公共汽车时,开过去一辆宝马,旁边一位高人对他身边的人说﹕"看,刚过去那辆就是IBM."


2、我一朋友在联通实习,一天,一老头走近来,劈头盖脸就来句"给我办张移动卡,好吧?"然后我那朋友头也不抬的就来句﹕"师傅,有人来砸场子!"


 
3、同事去见客户,可能是紧张,一开口便是﹕"刘先生你好,请问你贵姓啊?"汗啊~~~~~~


4、以前地理老师是个男的,特别暴力,谁一说话或走神上来就是一拳,但不打女生,有个新的女生不知道,还以为男女平等,有一次她上课偷着看漫画,被地理老师发现了,走到她面前来,还没任何表示,这女同学先吓的小脸煞白,高呼﹕非礼啊~我们地理老师瀑布汗~~~~~~


5、我同学说﹕我搁的洗衣粉太多了。另外一个问﹕什么?你哥的媳妇儿太多了?


6、一日风大,自行车倒了一排,只听一同学边扶车边说﹕谁的奔驰压了我的宝马?!...


7、我以前打电话给男朋友他们宿舍,结果不是他接的,有点不好意思,就胡编了一个名字,说:"XX在么?想假装找错人就完了~~对方迟疑了一下,说
﹕你等等啊,我给你叫去!我当时就晕菜了!赶紧吓的把电话挂了!后来问男朋友,他说他们对面宿舍一男生叫我编的那名字~~~~


8、上次在国外,在街边看见一个做糕点卖的帅哥,我和朋友一边买一边说他像猫王,他听见我们在说他,就问我们说什么,我想了半天﹕"kingofmiaomiao(喵喵)"


9、宿舍女友与网友通上话了那头显然很兴奋:喂,我是王小亮,你猜我是谁?晕倒不起……


10、从一个朋友那里学到一句话﹕送你十个字——有他妈多远,滚他妈多远~记得第一次他对我们一群人说这个时,就看到所有人都在下面颁指头数是不是十个字...


更牛的是,我拿这句话对n个朋友说过,基本90%以上都会迟疑片刻,口中默念或者手指头略动,然后一脸的笑意说,靠,还真的是十个字~屡试不爽啊,呵呵
强烈建议大家也试试,有效果的话也来通报一下


11、一日,班长通知星期六要做什么来着(那周事情多),完了我同桌猛摇我手臂﹕快,告诉我,星期六是礼拜几?...


12、我一女同事,特壮(有重量也有力量),经常在车间里做力气事,把一干男同胞比下去。一日,看见搬物没力的A君,并且轻巧巧地就把一箱货给搬走,边搬边笑A君太面,太弱。A君憋了三分钟憋了一句话﹕你们女的长得再胖,也必定有个男的可以把你们抱到床上去...


13、中学的时候,期中考试语文试卷,文言文翻译"苛政猛于虎也",偶翻译成"凶猛的苛捐杂税,比老师还要凶猛啊!"发现卷子来才发现汗啊!班主任画了个硕大的红圈,在"老师"两个字上!


那个题一共2分,扣了我5分!


14、停电了,我爸手机还充着点,他举着蜡烛找东西,我问他你找什么,他说怎么充电时的那个绿灯不见了?


15、呵呵,山大二院的病房楼,房子的方没了,就成了病尸楼,直到现在...


16、我们寝一个学妹的同学来找她聊天,学妹的同学问她说﹕总听说青蛙王子青蛙王子,为什么非是青蛙啊?
我们3当时就蒙了,学妹给她解释说,因为一个童话叫青蛙王子
同学说﹕哦,这么回事啊,那青蛙跟蟾蜍是一个东西吗?
哎,那是叫蟾蜍还是叫单于
学妹叹了口气说:单于呗,蟾蜍是古代少数民族部落首领.
当时把我们3个憋的脸都绿了


17、有次跟我一朋友去吃饭,那店里的店员很拽,翻着白眼问﹕你们吃什么?
我那朋友说你们这里有什么特色菜,店员说﹕什么都有!
我那朋友急了,说﹕那就给我弄盘西红柿炒西红柿!!!


18、一次往我爸爸单位打电话找他,因为很急,通了也没考虑,上来就喊﹕爸~你是xxx不(爸爸的名字).
结果对面笑的都说不出话拉.


19、还有一次,一个朋友问我认为历史上哪个男人最帅,我说是潘安
他很不屑的说是杨宗保
我问为什么?
他一脸得意的说﹕"你不知道,人家花木兰第一眼见了他就爱上他了呀?"


20、我个好同学黑了些,她bf又太白了些,有天宿舍里得毒舌天后突然对她冒出一句﹕"你们这样不行,你们会生出斑马来的……"


21、同一位毒舌天后,某天见到本系毕业的一位30出头风韵犹存师兄,该师兄目前最在意的就是抓住青春的尾巴,毒舌天后这回倒是诚心诚意地想夸人,谁知一开口又是﹕"好年轻的中年人啊!"


22、我一同学初次问诊可能一时紧张本来可能想问病人高寿与贵姓结果说成了﹕大爷,你……高姓?全晕病人昏绝!


23、我们学校食堂的饭分软饭和比较硬的饭.有天在食堂我前面的一男生经过认真思考之后说了一句话﹕还是吃软饭算了...


24、大学的时候上模电实验课,用示波器观察整流电路的波形,我做完了就在实验室里转悠,一个美眉拉住我说﹕"看看我的波好不好?"我立马脸红,才发现她用手指着示波器上的正弦波。
我慌乱中说﹕"你的波好是好,就是不够圆滑。"顺手就给她调了一下,谁知道一下个给弄成三角波了,美眉立马急了﹕"你陪我的波,你陪我的波……"我落荒而逃。


25、我同学的朋友,人比较呆滞,面相可能还好.
前些年去考北影给考上了,回来我们问他考啥呢?他说主考官让装白痴呢,他们都装的可象了。我们说那你咋装的,他说﹕我没装啊,我就这么走了一圈就给选上了......

 
 
 

--
海阔天空,做什么就记什么。主要是 Ubuntu Linux 和 Latex 及编程相关的东东: http://hai-kuo.blogspot.com/ 



你 玩 过 大 富 翁 吗?超 人 气 梦 幻 西 游 版 大 富 翁,点 击 免 费 试 玩 >>

2007年8月27日星期一

修改注册表同时用HelloWorld和FreeStar接收的方法

http://bbs.fjfox.com/thread-39058-1-7.html ---
修改注册表同时用HelloWorld和FreeStar接收的方法

1.分别安装FreeStar和HelloWorld这两个接口.
2.运行注册表:regedit找到HKEY_LOCAL_MACHINE\SOFTWARE\StockDrv在Driver修改成HelloWorld这个接口的路径.
例如: D:\HelloWorld\Stock.Dll
3.运行飞狐软件,启动接收(选图文接收).这时的接口是HelloWorld.
4.找到安装HelloWorld接口的那个图标,双击打开它.比如: D:\HelloWorld\HelloWorld.
5.关闭飞狐接收.
6.找到HKEY_LOCAL_MACHINE\SOFTWARE\StockDrv在Driver修改成安装FreeStar的那个路径.比如:
D:\Program Files\FreeStar\Stock.Dll
7.再启动飞狐接收.这时就可以用两个接口了.
这样使用可以盘中自动补分笔成交.

--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/

Emacs+AucTeX的小Tip

对于一般的tex文件,用latex编译的话可以用C-c C-v预览dvi文件

在所用tex文档的Local Variables部分中改成
%%% mode: tex-pdf

就可自动进入pdf模式,好处是C-c C-c View时自动启用xpdf来预览pdf

比如:


\documentclass[12pt]{article}
\usepackage[dvipdfm]{graphicx}
\usepackage[quiet]{fontspec}
\usepackage{xltxtra}


\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
\setmainfont[BoldFont={STXihei},
             ItalicFont={STKaiti},
             BoldItalicFont={STXingkai},
             Mapping=tex-text]{SimSun}


\begin{document}
...
  淡薄之士,必为浓艳者所疑;检饬之人,多为放肆者所忌。君子处此固不可少变 其操履,亦不可太露其锋芒。
  --《菜根谭》
...
\end{document}

%%% Local Variables:
%%% mode: tex-pdf
%%% TeX-master: t
%%% End:


--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/

终于搞定在emacs+auctex中设置xelatex为默认编译命令

http://bbs.ctex.org/redirect.php?fid=7&tid=34902&goto=nextoldset ---
终于搞定在emacs+auctex中设置xelatex为默认编译命令!

只要在在~/.emacs中加上

(add-hook 'LaTeX-mode-hook (lambda()
                              (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t))
                              (setq TeX-command-default "XeLaTeX")
                                 (setq TeX-save-query  nil )
                                  (setq TeX-show-compilation t)
                                                               ))

第一行参考auctex的手册auctex.pdf,版本是11.84 ;
(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t)) 会在Command 这一栏中增加了XeLaTeX这一项命令;
(setq TeX-command-default "XeLaTeX")  则使得以后用C-c C-c就是默认用xelatex 命令编译tex文档;
(setq TeX-save-query  nil ) 这一行不用确认保存就开始执行编译;
(setq TeX-show-compilation t)  这一行是看到编译的滚动信息。
现在还是在latex-mode下配置,下一步看能否在pdflatex-mode 下配置。


(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t)) 这一行中的"%`xelatex%(mode)%' %t"
写成"xelatex  %t" 已经可以了。

--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/

2007年8月25日星期六

[转]自己写一个 LaTeX 宏包

自己写一个 LaTeX 宏包

latex posted @ 2007年08月24日 09:17AM in LaTeX with tags CJK 宏包 latex

写一个宏包的基本工作就是将你原本很长的文档导言拷贝到一个分离的文件中去,这个文件需要以 .sty 结尾,文件中需要使用一个专用的命令:

\ProvidesPackage{package name}

这个命令应该在宏包文件起始处使用,用于声明 LaTeX 宏包的名称,当用户尝试两次引入同一个宏包时,\ProvidesPackage 命令会给出宏包重复引用的错误信息。

哪些内容应当放入宏包文件中呢?当然是你的大多数 LaTeX 文档都要用到宏包、自定制的排版命令,把这些东西丢到宏包里,就可以实现复用。宏包使用得当,可以避免很多繁琐的输入与排版命令的记忆。

下面是我基于自己的排版习惯定制的一个宏包,仅供初学者参考:

% lyanry book style package
\ProvidesPackage{lyrbook}

% 设定页边距
\usepackage[top=1.1in,bottom=1.1in,left=1.25in,right=1in]{ geometry}

% 加载 ams 数学公式与数学字体宏包
\usepackage{amsmath, amsfonts}

% 有时要用 PGF/TikZ 绘制一些图
\usepackage{tikz}
\usetikzlibrary{trees,shapes,snakes,arrows,backgrounds}

% 加载 CJK 相关宏包,并设置中文字体
\usepackage{CJKutf8, CJKnumb, CJKpunct}
\newcommand{\lyrtitle}{ \CJKfamily{yahei}}
\newcommand{\lyrem}{ \CJKfamily{yahei}}

% 设置中文段落首行缩进与段落间距
\usepackage{indentfirst}
\setlength{\parindent}{2em }
\setlength{\parskip}{0pt }

% 设置行间距
\renewcommand{\baselinestretch }{1.2}

% 设置页眉页脚
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[ 1]{\markboth{\small 第\,\thechapter \,章\quad #1}{}}
\renewcommand{\sectionmark}[ 1]{\markright{\small\thesection \quad #1}{}}
\fancyhf{}
\fancyhead[ER]{ \leftmark}
\fancyhead[OL]{ \rightmark}
\fancyhead[EL,OR]{ $\cdot$\,\thepage\,$\cdot$ }
\renewcommand{\headrulewidth}{ 0.4pt}
\headheight=16pt

%------------------------------------------
% 以下是为符合中文阅读习惯而重新定制的命令
%------------------------------------------

% 设定章节标题格式
\usepackage{titlesec}
\titleformat{\chapter}{ \centering\LARGE\lyrtitle}{第\, \CJKnumber{\thechapter}\,章}{1em}{}
\titleformat{\section}{ \large\lyrtitle}{\thesection}{1em}{}
\titleformat{\subsection}{ \normalsize\lyrtitle}{\thesubsection}{1em}{}

% 设定表格、插图等元素的标题
\usepackage[small, center]{caption2 }
\renewcommand{\captionlabeldelim }{~} %将图片标题后的冒号替换为空格

--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

TeX 系统的演变 (转载)

TeX 系统的演变 (转载)

原文见王越的 google pages,本文仅将其原有繁体中文转换为简体,把原文中的英文标点转换为中文标点,原文中一些词句,我认为有错误,就对其进行修订。

当年,高爷爷发现出版社将他的巨著 TAOCP 排版得乱七八糟,因此,立志编写出一套计算机排版系统,来发挥计算机排印的潜能。这套系统,就被他称作为 TeX。如今,TeX 已经在全世界得到广泛的应用,和高爷爷高超的技术是分不开的。

TeX 系统的思想,起源于高爷爷在斯坦福大学的一个叫做文学编程的试验。所谓文学编程,和今天的 python 编程类似,也就是说,编写程序和编写文档是一个统一的过程,编写完的程序,通过编译器,就能够被编译执行;同时,如果通过一个文本生成程序,就能够得到该 程序的技术资料。

TeX就是在这种环境下,被高爷爷弄出来的。而这种编程思想,就是体现在一种叫做 WEB 的语言上。WEB 语言的特别之处,就是当 WEB 文件通过不同的命令,就能够生成不同的东西。经过几年的发展,WEB 语言成型,同时 TEX 系统成型。

WEB 语言究竟是什么东西?事实上,就是一个 WEB 文件同时包含了 TEX 文档和 Pascal 语言,当 WEB 文件被 tangle 命令处理的时候,我们就得到了一个 pascal 语言文件,这个文件,可以直接被 pascal 编译器编译后执行。而对 WEB 文件使用 weave 命令进行处理,可得到 TeX 文档,这个文档由 tex 命令处理后,生成 dvi 文件,可用于打印。

TeX 系统,就是用这么一个 WEB 语言写就的,如果您对于这个怎么互相循环感到奇怪,那您不妨想象 C 语言编译器也是用 C 语言写就的。这是一个循序渐进、不断添加新指令的过程。

当今的 TeX 系统,事实上就是一个 web 文件,这个文件可是高爷爷亲手编写的,当你得到这个文件以后,对其执行 tangle 命令,你就可以得到一个叫做 tex.p 的文档,对这个文档,使用 pascal 编译器进行编译,就得到了一个 TeX 系统。而 web 文件由 weave 命令处理后,可得到一个 tex 文件,当你运行 tex 来编译这个文件的时候,你得到的是讲述 TeX 系统所有实现的文档。

整个 TeX 系统共有 300 个基本指令。使用这些指令,我们可以排版任何文档。当然,由于这些指令比较底层,用起来比较复杂,于是我们的高爷爷又基于这些指令,添加了 600 个指令,这就是我们今天的 TeX 系统。详细的指令用法,高爷爷都写到了他的 The TeXbook 中,这个可是他的一笔重要收入。

Pascal 语言是学院派的典范 (我承认最典范的学院派语言是 scheme),但是在实际生产中,pascal 语言自然就不能胜任了。20 世纪 80 年代随着苹果机的流行,使得 pascal 语言被很广泛地使用,以至于苹果公司需要把其他语言写的程序改成 pascal 代码,再在苹果机中运行。但是在 20 世纪 90 年代,网络迅速发展,导致 Unix 系统的需求迅速扩大,C 语言开始登上编程舞台,pascal 就不再吃香了。一大群学校纷纷改授 C 语言,同时 C 语言编译器的进步也异常迅猛,此时的大型应用也大都使用 C 语言编写。TeX 作为最牛 B 的排版软件,自然也应当使用 C 语言咯。因此,需要把 WEB 代码中的 pascal 换成 C 代码的想法付出水面,实现这个想法的的 WEB 系统就叫做 WEB2C。

事实上,这个是一个不得已的决定,由于大家对于高爷爷期望很高,一直认为他会不断地修改 TeX 系统,使之变得更加强大,因此本来一些手动地把 WEB 语言改变到 C 语言的计划,比如 Common TeX ,都无法成功,因为这使得 C 代码无法和高爷爷的 WEB 代码同时修正发布。因此只能够选择由机器自动地转码。而不幸的是,后来高爷爷认为 TeX 不需要再做任何修改了,当然这个是后话。 WEB2C 就在这种被动的想法下面被提出来了。

WEB2C 事实上就是 Lex 和 Yacc 写的一个语法转换器,尝试把 pascal 语言转换到 C 语言。中途会经历各种恶心的过程,当 pascal 语言变到了 C 语言以后,一群计算机专家们就很高兴地能够 make 它们,在浪费办公室电费和打法自己的时间中享受独特的乐趣。事实上这个也是一个无奈的决定。因为转好的代码,基本上不能用肉眼进行分析。

不管怎么样,我们的 WEB 语言终于到 C 语言了。接下来,由于 TeX 太伟大,所以,有了很多的基于 TeX 的包,包括字体,有用的宏。因此,我们的目录结构变得越来越复杂,如果当年的高爷爷乘坐时光机器看看今天的 TDS,一定会使他大开眼界。同时,网络的发展,导致可能本机器上的 TeX 需要搜索其他机器上的文件。这个就导致了一个严重的问题,就是 TeX 需要在许多的目录中找文件,需要耗费非常长的时间,而且如果一到网络上查找文件,速度还要降得更加慢。

因此,我们需要改动原先仅仅在当前目录或者由用户声名路径的目录下面找文件的架构。而此时的问题是,不能在 TeX 上面改,因为 metapost 等诸多的 TeX 相关软件也需要找文件,在 TeX 中实现一次再在 metapost 中实现一次,是一个错误的决定。因此,TUG 的 Karl 老大有了一个办法。首先开发了一个库,叫做 kpathsea,然后让 TeX 和它的相关软体,通过 kpathsea 查找文件。而查找文件的数量庞大导致的速度慢,就采用数据库的方法解决。先查找一次,记录下来,以后慢慢享用。这个数据库,就是 ls-R。

最早的 WEB2C 的查找方案,就是定义了一个叫做 TEXINPUTS 的环境变量,告诉 kpathsea 在TEXINPUTS 所定义的环境下,找到文件。但是这个导致了一个新的问题,也就是不同的 TeX 需要寻找不同的东西,而一个 TEXINPUTS 无法把它们区分开来。因此,我们这才想到,应该使用不同的路径,比如,TEXINPUTS.latex 变量,来给 LaTeX 查找路径,TEXINPUTS.context 变量给 ConTeXt 查找。而这些变量,就定义在 texmf.cnf 当中。

这个文件,还定义了许多的 TeX 的目录树,比如 texmf 目录,可以给整套的 TeX 系统查;texmf.os,可以给特性的系统查。当我们的系统添加了什么新的东西,就放在 texmf-local 吧。而用户自己的东西,嗯,规定他们在$HOME/texmf。

还有最后一个问题,那就是 kpathsea 如何查找 texmf.cnf 呢?事实上是通过定义环境变量达到目的的。这个变量叫做 TEXMFCNF,所有在这个环境变量中的 texmf.cnf 都被搜索到。这也使得,用户可以自己写一个 texmf.cnf,把所在路径加入到自己的 TEXMFCNF,而不需要重写整个 texmf.cnf。如果这个变量没有定义,那么默认我们找 texmf/web2c 这个路径下的 texmf.cnf。

整个 TeX 系统的实现过程到目前的科技发展水平为止,就是这个样子,说不定过了几年 C 语言不再吃香,因此搞出一个 web2python。又过了几年 pascal 复苏,大家又重新使用 WEB 语言写东西,或者过了几年网络和硬盘速度足够快,我们扔掉了 kpathsea。这些事情或许都会发生,谁也不知道。

但是这一切的被动,都是由于高爷爷大师光环的光芒,使得 tex.web 这个文件成为永恒。 1990 年 TeX 系统发布了 3.1 版本,高爷爷兴奋地表示, tex.web 是一个好东西,没有 bug,我们不要再改动 tex.web 了,大家一定要改,那我也没办法,但是不要和我争哦,一定要改名。 TeX 在 20 世纪 80 年代末虽然做了一次大的改动,可以处理 8 位的字符,而Unix Plan 9 系统的发布,奠定了 Unicode 编码方案的基础。 TeX 在目前的情况下,是落后于整个时代的。

如今,TeX 在多国语言的支持上,始终处于半吊子的状态,需要一大批黑客们日夜 hack 才可以被更多的场合支持。 TeX 使用的字体、输出,也受到时代的局限。 TeX 所用到的各种字体文件的庞杂程度,可能一个熟悉这个系统的人也不能完全讲明白。而同时发展起来的 X Window 系统,却对当今流行的字体和当今的字体渲染技术,拿捏非常到位。

显然,我们本来可以修改而使得 TeX 变得更好,但是高爷爷大师形象的光芒,使得各种尝试 (pdftex, etex, xetex, luatex,omega,aleph, ant, etc.),都不能算是正统。一方面,由于没有现成的由手工转换得到的 C 代码,修改 TeX 并不简单。许多的新 TeX 实现,都是给高爷爷的 tex.web 加上一串的 ch 和 fix 文件,这就使得他们严重地依赖原本的 TeX,使之变得异常复杂,好比于 C++ 对于 C 的扩充。另一方面,这些诸多的新时期的 TeX 实现,种类繁多,虽然大多数对于老的 TeX 的功能都尽量做到不变,但是新添加的功能,却导致彼此的不兼容。我们都不知道,更加漂亮的 TeX 架构,路在何方。


--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月22日星期三

[转贴]巴菲特的故事

 一次游戏中,与巴菲特在一起的高尔夫球友们决定同他打一个赌。他们认为巴菲特在三天户外运动中,一杆进洞的成绩为零。如果他输了,只需要付出10美元;而如果他赢了,将可以获得2万美元。每个人都接受了这个建议,但 巴菲特先生拒绝了。他说:"如果你不学会在小的事情上约束自己,你在大的事情上也不会受内心的约束"。

 

 巴菲特先生他从来不参与自己不能控制的事情。巴菲特先生成功的背后,关键在于他具有的特殊心态品质。他强大的自制能力,来源于信念的力量。(这个故事说得太好了)

--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月18日星期六

20个小故事

20则小故事,短小精悍,寓意深刻,读后受益匪浅,感觉很不错,现与大家分享,一起共勉!   

1. 断箭——不相信自己的意志,永远也做不成将军.
  
    春秋战国时代,一位父亲和他的儿子出征打战.父亲已做了将军,儿子还只是马前卒.又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭囊,其中插着一只箭.父亲郑重对儿子说:"这是家袭宝箭,配带身边,力量无穷,但千万不可抽出来."
    那是一个极其精美的箭囊,厚牛皮打制,镶着幽幽泛光的铜边儿,再看露出的箭尾.一眼便能认定用上等的孔雀羽毛制作.儿子喜上眉梢 ,贪婪地推想箭杆,箭头的模样,耳旁仿佛嗖嗖地箭声掠过,敌方的主帅应声折马而毙.
    果然,配带宝箭的儿子英勇非凡,所向披靡.当鸣金收兵的号角吹响时,儿子再也禁不住得胜的豪气,完全背弃了父亲的叮嘱,强烈的欲望驱赶着他呼一声就拔出宝箭,试图看个究竟.骤然间他惊呆了.
    一只断箭,箭囊里装着一只折断的箭.
    我一直刳着只断箭打仗呢!儿子吓出了一身冷汗,仿佛顷刻间失去支柱的房子,轰然意志坍塌了.
    结果不言自明,儿子惨死于乱军之中.
    拂开蒙蒙的硝烟,父亲拣起那柄断箭,沉重地啐一口道:"不相信自己的意志,永远也做不成将军."
    把胜败寄托在一只宝箭上,多么愚蠢,而当一个人把生命的核心与把柄交给别人,又多么危险!比如把希望寄托在儿女身上;把幸福寄托在丈夫身上;把生活保障寄托在单位身上……
  
    温馨提示:自己才是一只箭,若要它坚韧,若要它锋利,若要它百步穿杨,百发百中,磨砺它,拯救它的都只能是自己
  
   
  2. 生命的价值——不要让昨日的沮丧令明天的梦想黯然失色!

  
    在一次讨论会上,一位著名的演说家没讲一句开场白,手里却高举着一张20美元的钞票.面对会议室里的200个人,他问:"谁要这20美元?"一只只手举了起来.他接着说:"我打算把这20美元送给你们中的一位,但在这之前,请准许我做一件事."他说着将钞票揉成一团,然后问:"谁还要?"仍有人举起手来.
    他又说:"那么,假如我这样做又会怎么样呢?"他把钞票扔到地上,又踏上一只脚,并且用脚碾它.尔后他拾起钞票,钞票已变得又脏又皱.
    "现在谁还要?"还是有人举起手来.
    "朋友们,你们已经上了一堂很有意义的课.无论我如何对待那张钞票,你们还是想要它,因为它并没贬值,它依旧值20美元.人生路上,我们会无数次被自己的决定或碰到的逆境击倒,欺凌甚至碾得粉身碎骨.我们觉得自己似乎一文不值.但无论发生什么 ,或将要发生什么,在上帝的眼中,你们永远不会丧失价值.在他看来,肮脏或洁净,衣着齐整或不齐整,你们依然是无价之宝."
  
    温馨提示:生命的价值不依赖我们的所作所为,也不仰仗我们结交的人物,而是取决于我们本身!我们是独特的——永远不要忘记这一点!
  
  
  3. 昂起头来真美——别看它是一条黑母牛,牛奶一样是白的.

  
    珍妮是个总爱低着头的小女孩,她一直觉得自己长得不够漂亮.有一天,她到饰物店去买了只绿色蝴蝶结,店主不断赞美她戴上蝴蝶结挺漂亮,珍妮虽不信,但是挺高兴,不由昂起了头,急于让大家看看,出门与人撞了一下都没在意.
    珍妮走进教室,迎面碰上了她的老师,"珍妮,你昂起头来真美!"老师爱抚地拍拍她的肩说.
    那一天, 她得到了许多人的赞美.她想一定是蝴蝶结的功劳,可往镜前一照,头上根本就没有蝴蝶结,一定是出饰物店时与人一碰弄丢了.
    自信原本就是一种美丽,而很多人却因为太在意外表而失去很多快乐.
  
    温馨提示:无论是贫穷还是富有,无论是貌若天仙,还是相貌平平,只要你昂起头来,快乐会使你变得可爱——人人都喜欢的那种可爱.
  
  
  4. 为生命画一片树叶——只要心存相信,总有奇迹发生,希望虽然渺茫,但它永存人世.

  
    美国作家欧-亨利在他的小说《最后一片叶子》里讲了个故事:病房里,一个生命垂危的病人从房间里看见窗外的一棵树,在秋风中一片片地掉落下来.病人望着眼前的萧萧落叶,身体也随之每况愈下,一天不如一天.她说:"当树叶全部掉光时,我也就要死了."一位老画家得知后,用彩笔画了一片叶脉青翠的树叶挂在树枝上.
     最后一片叶子始终没掉下来.只因为生命中的这片绿,病人竟奇迹般地活了下来.
  
    温馨提示:人生可以没有很多东西,却唯独不能没有希望.希望是人类生活的一项重要的价值.有希望之处,生命就生生不息!
  
  
  5. 飞翔的蜘蛛——信念是一种无坚不催的力量,当你坚信自己能成功时,你必能成功.

  
    一天,我发现,一只黑蜘蛛在后院的两檐之间结了一张很大的网.难道蜘蛛会飞?要不,从这个檐头到那个檐头,中间有一丈余宽,第一根线是怎么拉过去的?后来,我发现蜘蛛走了许多弯路--从一个檐头起,打结,顺墙而下,一步一步向前爬,小心翼翼,翘起尾部,不让丝沾到地面的沙石或别的物体上,走过空地,再爬上对面的檐头,高度差不多了,再把丝收紧,以后也是如此.
  
    温馨提示:蜘蛛不会飞翔,但它能够把网凌结在半空中.它是勤奋 ,敏感,沉默而坚韧的昆虫,它的网制得精巧而规矩,八卦形地张开,仿佛得到神助.这样的成绩,使人不由想起那些沉默寡言的人和一些深藏不露的智者.于是,我记住了蜘蛛不会飞翔,但它照样把网结在空中.奇迹是执着者造成的.
  
  
   6. 阴影是条纸龙——人生中,经常有无数来自外部的打击,但这些打击究竟会对你产生怎样的影响,最终决定权在你手中.

  
    祖父用纸给我做过一条长龙.长龙腹腔的空隙仅仅只能容纳几只蝗虫,投放进去,它们都在里面死了,无一幸免!祖父说:"蝗虫性子太躁,除了挣扎,它们没想过用嘴巴去咬破长龙,也不知道一直向前可以从另一端爬出来.因而,尽管它有铁钳般的嘴壳和锯齿一般的大腿,也无济于事."当祖父把几只同样大小的青虫从龙头放进去,然后关上龙头,奇迹出现了:仅仅几分钟,小青虫们就一一地从龙尾爬了出来.
  
    温馨提示:命运一直藏匿在我们的思想里.许多人走不出人生各个不同阶段或大或小的阴影,并非因为他们天生的个人条件比别人要差多远,而是因为他们没有思想要将阴影纸龙咬破,也没有耐心慢慢地找准一个方向,一步步地向前,直到眼前出现新的洞天.
  
  
  7. 成功并不像你想像的那么难——并不是因为事情难我们不敢做,而是因为我们不敢做事情才难的.

  
    1965年,一位韩国学生到剑桥大学主修心理学.在喝下午茶的时候,他常到学校的咖啡厅或茶座听一些成功人士聊天.这些成功人士包括诺贝尔奖获得者,某一些领域的学术权威和一些创造了经济神话的人,这些人幽默风趣,举重若轻,把自己的成功都看得非常自然和顺理成章.时间长了,他发现,在国内时,他被一些成功人士欺骗了.那些人为了让正在创业的人知难而退 ,普遍把自己的创业艰辛夸大了,也就是说,他们在用自己的成功经历吓唬那些还没有取得成功的人.
    作为心理系的学生,他认为很有必要对韩国成功人士的心态加以研究.1970年,他把《成功并不像你想像的那么难》作为 毕业论文,提交给现代经济心理学的创始人威尔-布雷登教授.布雷登教授读后,大为惊喜,他认为这是个新发现,这种现象虽然在东方甚至在世界各地普遍存在,但此前还没有一个人大胆地提出来并加以研究.惊喜之余,他写信给他的剑桥校友——当时正坐在韩国政坛第一把交椅上的人——朴正熙.他在信中说,"我不敢说这部著作对你有多大的帮助,但我敢肯定它比你的任何一个政令都能产生震动."
    后来这本书果然伴随着韩国的经济起飞了.这本书鼓舞了许多人 ,因为他们从一个新的角度告诉人们,成功与"劳其筋骨,饿其体肤","三更灯火五更鸡","头悬梁,锥刺股"没有必然的联系.只要你对某一事业感兴趣,长久地坚持下去就会成功,因为上帝赋予你的时间和智慧够你圆满做完一件事情.后来,这位青年也获得了成功,他成了韩国泛业汽车公司的总裁.
  
    温馨提示:人世中的许多事,只要想做,都能做到,该克服的困难,也都能克服,用不着什么钢铁般的意志, 更用不着什么技巧或谋略.只要一个人还在朴实而饶有兴趣地生活着,他终究会发现,造物主对世事的安排,都是水到渠成的
  
  
  
  8. 永远的坐票——生活真是有趣:如果你只接受最好的,你经常会得到最好的.

  
    有一个人经常出差,经常买不到对号入坐的车票.可是无论长途短途,无论车上多挤,他总能找到座位.
    他的办法其实很简单,就是耐心地一节车厢一节车厢找过去.这个办法听上去似乎并不高明,但却很管用.每次,他都做好了从第一节车厢走到最后一节车厢的准备,可是每次他都用不着走到最后就会发现空位.他说,这是因为像他这样锲而不舍找座位的乘客实在不多.经常是在他落座的车厢里尚余若干座位 ,而在其他车厢的过道和车厢接头处,居然人满为患.
    他说,大多数乘客轻易就被一两节车厢拥挤的表面现象迷惑了,不大细想在数十次停靠之中,从火车十几个车门上上下下的流动中蕴藏着不少提供座位的机遇;即使想到了,他们也没有那一份寻找的耐心.眼前一方小小立足之地很容易让大多数人满足,为了一两个座位背负着行囊挤来挤去有些人也觉得不值.他们还担心万一找不到座位,回头连个好好站着的地方也没有了.与生活中一些安于现状不思进取害怕失败的人,永远只能滞留在没有成功的起点上一样,这些不愿主动找座位的乘客大多只能在上车时最初的落脚之处一直站到下车.
  
    温馨提示:自信,执着,富有远见,勤于实践,会让你握有一张人生之旅永远的坐票.
  
  
  9. 心中的顽石——碍我们去发现,去创造的,仅仅是我们心理上的障碍和思想中的顽石.

  
    从前有一户人家的菜园摆着一颗大石头,宽度大约有四十公分,高度有十公分.到菜园的人,不小心就会踢到那一颗大石头,不是跌倒就是擦伤.
    儿子问:"爸爸,那颗讨厌的石头,为什么不把它挖走?"
    爸爸这么回答:"你说那颗石头喔?从你爷爷时代,就一直放到现在了,它的体积那么大,不知道要挖到到什么时候,没事无聊挖石头,不如走路小心一点,还可以训练你的反应能力."
    过了几年,这颗大石头留到下一代,当时的儿子娶了媳妇,当了爸爸.
    有一天媳妇气愤地说:"爸爸,菜园那颗大石头,我越看越不顺眼,改天请人搬走好了."
    爸爸回答说:"算了吧!那颗大石头很重的,可以搬走的话在我小时候就搬走了,哪会让它留到现在啊?"
    媳妇心底非常不是滋味,那颗大石头不知道让她跌倒多少次了.
    有一天早上,媳妇带着锄头和一桶水,将整桶水倒在大石头的四周.
    十几分钟以后,媳妇用锄头把大石头四周的泥土搅松.
    媳妇早有心理准备,可能要挖一天吧,谁都没想到几分钟就把石头挖起来,看看大小,这颗石头没有想像的那么大,都是被那个巨大的外表蒙骗了.
  
    温馨提示:你抱着下坡的想法爬山,便无从爬上山去.如果你的世界沉闷而无望,那是因为你自己沉闷无望.改变你的世界,必先改变你自己的心态.
  
  
  10. 追求忘我——不要把自己当做鼠,否则肯定被猫吃.

  
    1858年,瑞典的一个富豪人家生下了一个女儿.然而不久,孩子染患了一种无法解释的瘫痪症,丧失了走路的能力.
    一次,女孩和家人一起乘船旅行.船长的太太给孩子讲船长有一只天堂鸟,她被这只鸟的描述迷住了,极想亲自看一看.于是保姆把孩子留在甲板上,自己去找船长.孩子耐不住性子等待,她要求船上的服务生立即带她去看天堂鸟.那服务生并不知道她的腿不能走路 ,而只顾带着她一道去看那只美丽的小鸟.奇迹发生了,孩子因为过度地渴望,竟忘我地拉住服务生的手,慢慢地走了起来.从此,孩子的病便痊愈了.女孩子长大后,又忘我地投入到文学创作中,最后成为第一位荣获诺贝尔文学奖的女性,也就是茜尔玛-拉格萝芙.
  
    温馨提示:忘我是走向成功的一条捷径,只有在这种环境中,人才会超越自身的束缚,释放出最大的能量.


11. 乐观者与悲观者——乐观者在每次危难中都看到了机会,而悲观的人在每个机会中都看到了危难.
  
    父亲欲对一对孪生兄弟作"性格改造",因为其中一个过分乐观,而另一个则过分悲观.一天,他买了许多色泽鲜艳的新玩具给悲观孩子,又把乐观孩子送进了一间堆满马粪的车房里.
    第二天清晨,父亲看到悲观孩子正泣不成声,便问:"为什么不玩那些玩具呢?"
    "玩了就会坏的."孩子仍在哭泣.
    父亲叹了口气,走进车房,却发现那乐观孩子正兴高采烈地在马粪里掏着什么.
    "告诉你,爸爸."那孩子得意洋洋地向父亲宣称,"我想马粪堆里一定还藏着一匹小马呢!"
  
    温馨提示:乐观者与悲观者之间,其差别是很有趣的:乐观者看到的是油炸圈饼,悲观者看到的是一个窟窿.
  
  
  12. 勇于冒险——对于那些害怕危险的人,危险无处不在.

  
    有一天,龙虾与寄居蟹在深海中相遇,寄居蟹看见龙虾正把自己的硬壳脱掉,只露出娇嫩的身躯.寄居蟹非常紧张地说:"龙虾,你怎可以把唯一保护自己身躯的硬壳也放弃呢?难道你不怕有大鱼一口把你吃掉吗?以你现在的情况来看,连急流也会把你冲到岩石去,到时你不死才怪呢?"
    龙虾气定神闲地回答:"谢谢你的关心,但是你不了解,我们龙虾每次成长,都必须先脱掉旧壳,才能生长出更坚固的外壳,现在面对的危险,只是为了将来发展得更好而作出准备."
    寄居蟹细心思量一下,自己整天只找可以避居的地方,而没有想过如何令自己成长得更强壮,整天只活在别人的护荫之下,难怪永远都限制自己的发展.
  
    温馨提示:每个人都有一定的安全区,你想跨越自己目前的成就,请不要划地自限,勇于接受挑战充实自我,你一定会发展得比想像中更好.
  
  
  13. 再试一次——什么东西比石头还硬,或比水还软?然而软水却穿透了硬石,坚持不懈而已.

  
    有个年轻人去微软公司应聘,而该公司并没有刊登过招聘广告.见总经理疑惑不解,年轻人用不太娴熟的英语解释说自己是碰巧路过这里,就贸然进来了.总经理感觉很新鲜,破例让他一试.面试的结果出人意料,年轻人表现糟糕.他对总经理的解释是事先没有准备,总经理以为他不过是找个托词下台阶,就随口应道:"等你准备好了再来试吧".
    一周后,年轻人再次走进微软公司的大门,这次他依然没有成功.但比起第一次,他的表现要好得多.而总经理给他的回答仍然同上次一样:"等你准备好了再来试."就这样,这个青年先后5次踏进微软公司的大门,最终被公司录用,成为公司的重点培养对象.
  
    温馨提示:也许,我们的人生旅途上沼泽遍布,荆棘丛生;也许我们追求的风景总是山重水复,不见柳暗花明;也许,我们前行的步履总是沉重,蹒跚;也许,我们需要在黑暗中摸索很长时间,才能找寻到光明;也许,我们虔诚的信念会被世俗的尘雾缠绕,而不能自由翱翔;也许,我们高贵的灵魂暂时在现实中找不到寄放的净土……那么,我们为什么不可以以勇敢者的气魄,坚定而自信地对自己说一声"再试一次!"
    再试一次,你就有可能达到成功的彼岸!
  
  
  14. 天道酬勤——没有人能只依靠天分成功.上帝给予了天分,勤奋将天分变为天才.

  
    曾国藩是中国历史上最有影响的人物之一,然他小时候的天赋却不高.有一天在家读书,对一篇文章重复不知道多少遍了,还在朗读,因为,他还没有背下来.这时候他家来了一个贼,潜伏在他的屋檐下,希望等读书人睡觉之后捞点好处.可是等啊等,就是不见他睡觉,还是翻来复去地读那篇文章.贼人大怒,跳出来说,"这种水平读什么书?"然后将那文章背诵一遍,扬长而去!
    贼人是很聪明,至少比曾先生要聪明,但是他只能成为贼,而曾先生却成为毛泽东主席都钦佩的人:"近代最有大本夫源的人."
    "勤能补拙是良训,一分辛苦一分才."那贼的记忆力真好,听过几遍的文章都能背下来,而且很勇敢,见别人不睡觉居然可以跳出来"大怒",教训曾先生之后,还要背书,扬长而去.但是遗憾的是,他名不经传,曾先生后来启用了一大批人才,按说这位贼人与曾先生有一面之交,大可去施展一二,可惜,他的天赋没有加上勤奋,变得不知所终.
  
    温馨提示:伟大的成功和辛勤的劳动是成正比的,有一分劳动就有一分收获,日积月累,从少到多,奇迹就可以创造出来.
  
  
  15. 好学不倦——只有一个洞穴的老鼠很快被捉.

  
    在一个漆黑的晚上,老鼠首领带领着小老鼠出外觅食,在一家人的厨房内,垃圾桶之中有很多剩余的饭菜,对于老鼠来说,就好像人类发现了宝藏.
    正当一大群老鼠在垃圾桶及附近范围大挖一顿之际,突然传来了一阵令它们肝胆俱裂的声音,那就是一头大花猫的叫声.它们震惊之余,更各自四处逃命,但大花猫绝不留情,不断穷追不舍,终于有两只小老鼠走避不及,被大花猫捉到,正要向它们吞噬之际,突然传来一连串凶恶的狗吠声,令大花猫手足无措,狼狈逃命.
    大花猫走后,老鼠首领施施然从垃圾桶后面走出来说:"我早就对你们说,多学一种语言有利无害,这次我就因而救了你们一命."
  
    温馨提示:"多一门技艺,多一条路."不断学习实在是成功人士的终身承诺.
  
  
  16. 居安思危——洪水未到先筑堤,豺狼未来先磨刀.

  
    一只野狼卧在草上勤奋地磨牙,狐狸看到了,就对它说:"天气这么好,大家在休息娱乐,你也加入我们队伍中吧!"野狼没有说话,继续磨牙,把它的牙齿磨得又尖又利.狐狸奇怪地问道:"森林这么静,猎人和猎狗已经回家了,老虎也不在近处徘徊,又没有任何危险,你何必那么用劲磨牙呢?"野狼停下来回答说:"我磨牙并不是为了娱乐,你想想,如果有 一天我被猎人或老虎追逐,到那时,我想磨牙也来不及了.而平时我就把牙磨好,到那时就可以保护自己了."
  
    温馨提示:做事应该未雨绸缪,居安思危,这样在危险突然降临时,才不至于手忙脚乱."书到用时方恨少",平常若不充实学问,临时抱佛脚是来不及的.也有人抱怨没有机会,然而当升迁机会来临时,再叹自己平时没有积蓄足够的学识与能力,以致不能胜任,也只好后悔莫及.
  
  
   17. 困境即是赐予——一个障碍,就是一个新的已知条件,只要愿意,任何一个障碍,都会成为一个超越自我的契机.

  
    有一天,素有森林之王之称的狮子,来到了天神面前:"我很感谢你赐给我如此雄壮威武的体格,如此强大无比的力气,让我有足够的能力统治这整座森林."
    天神听了,微笑地问:"但是这不是你今天来找我的目的吧!看起来你似乎为了某事而困扰呢!"
    狮子轻轻吼了一声,说:"天神真是了解我啊!我 今天来的确是有事相求.因为尽管我的能力再好,但是每天鸡鸣的时候,我总是会被鸡鸣声给吓醒.神啊!祈求您,再赐给我一个力量,让我不再被鸡鸣声给吓醒吧!"
    天神笑道:"你去找大象吧,它会给你一个满意的答复的."
    狮子兴匆匆地跑到湖边找大象,还没见到大象,就听到大象跺脚所发出的"砰砰"响声.
    狮子加速地跑向大象,却看到大象正气呼呼地直跺脚.
    狮子问大象:"你干嘛发这么大的脾气?"
    大象拼命摇晃着大耳朵,吼着:"有只讨厌的小蚊子,总想钻进我的耳朵里,害我都快痒死了."
    狮子离开了大象,心里暗自想着:"原来体型这么巨大的大象,还会怕那么瘦小的蚊子,那我还有什么好抱怨呢?毕竟鸡鸣也不过一天一次,而蚊子却是无时无刻地骚扰着大象.这样想来,我可比他幸运多了."
    狮子一边走,一边回头看着仍在跺脚的大象,心想:"天神要我来看看大象的情况,应该就是想告诉我,谁都会遇上麻烦事, 而它并无法帮助所有人.既然如此,那我只好靠自己了!反正以后只要鸡鸣时,我就当做鸡是在提醒我该起床了,如此一想,鸡鸣声对我还算是有益处呢?"
  
    温馨提示:在人生的路上,无论我们走得多么顺利,但只要稍微遇上一些不顺的事,就会习惯性地抱怨老天亏待我们,进而祈求老天赐给我们更多的力量,帮助我们度过难关.但实际上,老天是最公平的,就像它对狮子和大象一样,每个困境都有其存在的正面价值.
  
  
   18. 永远的一课——面对困难,许多人戴了放大镜,但和困难拼搏一番,你会觉得,困难不过如此.

  
    那天的风雪真暴,外面像是有无数发疯的怪兽在呼啸厮打.雪恶狠狠地寻找袭击的对象,风呜咽着四处搜索.
    大家都在喊冷,读书的心思似乎已被冻住了.一屋的跺脚声.
    鼻头红红的欧阳老师挤进教室时,等待了许久的风席卷而入,墙壁上的《中学生守则》一鼓一顿,开玩笑似的卷向空中,又一个跟头栽了下来.
    往日很温和的欧阳老师一反常态:满脸的严肃庄重甚至冷酷,一如室外的天气.
    乱哄哄的教室静了下来,我们惊异地望着欧阳老师.
    "请同学们穿上胶鞋,我们到操场上去."
    几十双眼睛在问.
    "因为我们要在操场上立正五分钟."
    即使欧阳老师下了"不上这堂课,永远别上我的课"的恐吓之词,还是有几个娇滴滴的女生和几个很横的男生没有出教室.
    操场在学校的东北角,北边是空旷的菜园,再北是一口大塘.
    那天,操场,菜园和水塘被雪连成了一个整体.
    矮了许多的篮球架被雪团打得"啪啪"作响,卷地而起的雪粒雪团呛得人睁不开眼张不开口.脸上像有无数把细窄的刀在拉在划,厚实的衣服像铁块冰块,脚像是踩在带冰碴的水里.
    我们挤在教室的屋檐下,不肯迈向操场半步.
    欧阳老师没有说什么,面对我们站定,脱下羽绒衣,线衣脱到一半,风雪帮他完成了另一半."在操场上去,站好!"欧阳老师脸色苍白,一字一顿地对我们说.
    谁也没有吭声,我们老老实实地到操场排好了三列纵队.
    瘦削的欧阳老师只穿一件白衬褂,衬褂紧裹着的他更显单薄.
    后来,我们规规矩矩地在操场站了五分多钟.
    在教室时,同学们都以为自己敌不过那场风雪,事实上,叫他们站半个小时,他们顶得住,叫他们只穿一件衬衫,他们也顶得住.
  
    温馨提示:正如生命中的许多伤痛一样,其实并不如自己想像的那么严重.如果不把它当回事,它是不会很痛的.你觉得痛 ,那是因为你自以为伤口在痛,害怕伤口的痛
  
  
  19. 大海里的船——在大海上航行的船没有不带伤的.

  
    英国劳埃德保险公司曾从拍卖市场买下一艘船,这艘船1894年下水,在大西洋上曾138次遭遇冰山,116次触礁,13次起火,207次被风暴扭断桅杆,然而它从没有沉没过.
    劳埃德保险公司基于它不可思议的经历及在保费方面给带来的可观收益,最后决定把它从荷兰买回来捐给国家.现在这艘船就停泊在英国萨伦港的国家船舶博物馆里.
    不过,使这艘船名扬天下的却是一名来此观光的律师.当时,他刚打输了一场官司,委托人也于不久前自杀了.尽管这不是他的第一次失败辩护,也不是他遇到的第一例自杀事件,然而,每当遇到这样的事情,他总有一种负罪感.他不知该怎样安慰这些在生意场上遭受了不幸的人.
    当他在萨伦船舶博物馆看到这艘船时,忽然有一种想法,为什么不让他们来参观参观这艘船呢?于是,他就把这艘船的历史抄下来和这艘船的照片一起挂在他的律师事务所里,每当商界的委托人请他辩护,无论输赢,他都建议他们去看看这艘船.
    它使我们知道:在大海上航行的船没有不带伤的.
  
    温馨提示:虽然屡遭挫折,却能够坚强地百折不挠地挺住,这就是成功的秘密.
  
  
  20. 你也在井里吗——人生必须渡过逆流才能走向更高的层次,最重要的是永远看得起自己.

  
    有一天某个农夫的一头驴子,不小心掉进一口枯井里,农夫绞尽脑汁想办法救出驴子,但几个小时过去了,驴子还在井里痛苦地哀嚎着.
    最后,这位农夫决定放弃,他想这头驴子年纪大了,不值得大费周章去把它救出来,不过无论如何,这口井还是得填起来.于是农夫便请来左邻右舍帮忙一起将井中的驴子埋了,以免除它的痛苦.
    农夫的邻居们人手一把铲子, 开始将泥土铲进枯井中.当这头驴子了解到自己的处境时,刚开始哭得很凄惨.但出人意料的是,一会儿之后这头驴子就安静下来了.农夫好奇地探头往井底一看,出现在眼前的景象令他大吃一惊:
    当铲进井里的泥土落在驴子的背部时,驴子的反应令人称奇——它将泥土抖落在一旁,然后站到铲进的泥土堆上面!
    就这样,驴子将大家铲倒在它身上的泥土全数抖落在井底,然后再站上去.很快地,这只驴子便得意地上升到井口,然后在众人惊讶的表情中快步地跑开了!
  
    温馨提示:就如驴子的情况,在生命的旅程中,有时候我们难免会陷入"枯井"里,会被各式各样的"泥沙"倾倒在我们身上,而想要从这些"枯井"脱困的秘诀就是:将"泥沙"抖落掉,然后站到上面去!


--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月17日星期五

大智慧会员极品公式大全

大智慧会员极品公式大全


本人喜欢使用大智慧,其中几个会员公式效果很好,所以拿出来与大家交流一下,建议综合使用,以后发现有什么好的东西继续顶上来,好东西一定要共享的

红买绿卖

{红买绿卖 n:1 100 9 m1:1 100 3 m2:1 100 3 m3:1 100 5}
RSV:= (CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
FASTK:=SMA(RSV,M1,1);
K:SMA(FASTK,M2,1);
D:SMA(K,M3,1),colorwhite;
A1:=LLV(low,999999);
A2:=HHV(high,999999);
A3:=100/(A2-A1);
80,pointdot,linethick2;
20,pointdot,linethick2;
VAR1:=HHV(HIGH,9)-LLV(LOW,9);
VAR2:=HHV(HIGH,9)-CLOSE;
VAR3:=CLOSE-LLV(LOW,9);
VAR4:=VAR2/VAR1*100-70;
VAR5:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*100;
VAR6:=(2*CLOSE+HIGH+LOW)/4;
VAR7:=SMA(VAR3/VAR1*100,3,1);
VAR8:=LLV(LOW,34);
VAR9:=SMA(VAR7,3,1)-SMA(VAR4,9,1);
VAR10:=IF(VAR9>100,VAR9-100,0);
VAR11:=HHV(HIGH,34);
VAR12:=EMA((VAR6-VAR8)/(VAR11-VAR8)*100,13);
VAR13:=EMA(0.667*REF (VAR12,1)+0.333*VAR12,2);
VAR14:=SMA(MAX(CLOSE-REF(CLOSE,1),0)/CLOSE,8,1)/SMA(ABS(INDEXC-REF
(INDEXC,1))/INDEXC,8,1)*100-25;
VAR15:=MA(Var14,3);
VAR16:=REF(VAR15,1);
STICKLINE(VAR12-VAR13>0,VAR12,VAR13,8,0),COLORRED;
STICKLINE(VAR12-VAR13<0,VAR12,VAR13,8,0),COLORgreen;
生命线:=EMA(VAR13,5);
STICKLINE(cross(VAR13,VAR12) and VAR12>60,80,100,8,0),COLOR00ff00;
绿灯亮卖:0,color00ff00;
STICKLINE(cross(VAR12,VAR13) and VAR12>VAR13 and VAR12<18,20,0,8,0),COLORRED;
红灯亮买:0,colorred;

Var21:=INDEXC;
Var22:=MA(Var21,6);
Var23:=MA(Var21,24);
Var24:=MA(Var21,32);
Var25:=MA(Var21,62);
Var26:=MA(Var21,105);
Var27:=Var25<REF(Var25,1) AND Var26<REF(Var26,1) AND Var25<Var26* 0.98;
Var28:=Var24>Var22*1.11 AND Var23>Var22*1.095;
Var29:=Var22>Var21*0.95;
抄底A:= Var27 AND Var28 AND Var29 AND CLOSE/COST(8)<=0.8 AND CLOSE<OPEN;
{抄底1:}STICKLINE(抄底A,40,60,1,1),colorff00ff;
抄底1:0,colorff00ff;
Var2A:=CLOSE/MA(CLOSE,40)*100<78;
Var2B:=CLOSE/MA(CLOSE,60)*100<74;
Var2C:=HIGH>LOW*1.051;
Var2D:=Var2C AND COUNT(Var2C,5)>1;
Var2E:=Var2D AND (Var2A OR Var2B);
Var2F:=DMA(EMA(CLOSE,12),SUM(VOL,5)/3/CAPITAL);
Var30:=(CLOSE-Var2F)/Var2F*100+30-(REF(HIGH,13)/CLOSE-1.35)*100;
Var31:=(CLOSE-REF(CLOSE,5))/CLOSE*100<-9;
Var32:=WINNER(CLOSE);
Var33:=EMA((INDEXC-MA(INDEXC,10))/INDEXC*100,14)<-4.9;
Var34:=(MA(VOL,5)-VOL)/CAPITAL*100< 0.8;
Var35:=(VOL-MA(VOL,21))/VOL*100;
抄底B:= Var33 AND Var31 AND Var32<0.12 AND Var34 AND Var35>18;
{抄底2:}STICKLINE(抄底B,40,60,3,1),coloryellow;
抄底2:0,coloryellow;
Var36:=(REF(CLOSE,1)+REF(CLOSE,2)+REF(CLOSE,3)+REF(CLOSE,4)+REF(CLOSE,5))/5;
Var37:=(REF(CLOSE,2)+REF(CLOSE,3)+REF(CLOSE,4)+REF(CLOSE,5)+REF(CLOSE,6))/5;
Var38:=(REF(CLOSE,3)+REF(CLOSE,4)+REF(CLOSE,5)+REF(CLOSE,6)+REF(CLOSE,7))/5;
Var39:=(REF(CLOSE,4)+REF(CLOSE,5)+REF(CLOSE,6)+REF(CLOSE,7)+REF(CLOSE,8))/5;
Var3A:=(REF(CLOSE,5)+REF(CLOSE,6)+REF(CLOSE,7)+REF(CLOSE,8)+REF(CLOSE,9))/5;
BIAS3:=(CLOSE-MA(CLOSE,24))/MA(CLOSE,24)*100;
抄底C:=(Var36/CLOSE>1.112 OR Var37/CLOSE>1.123 OR Var38/CLOSE>1.135 OR Var39/CLOSE> 1.145 OR Var3A/CLOSE>1.156) AND BIAS3<=-20 AND COST(25)/CLOSE>=1.5 AND CLOSE<OPEN;
{抄底3:}STICKLINE(抄底C,40,60,5,1),color0099ff;
抄底3:0,color0099ff;
Var3B:=(CLOSE-MA(CLOSE,40))/MA(CLOSE,40)*100;
抄底D:= FILTER(IF(CROSS(Var3B,-28),1,0),8);
{抄底4:}STICKLINE(CROSS(Var3B,-28),40,60,8,1),colorwhite;
抄底4:0,colorwhite;
Var3C:=DMA(EMA(CLOSE,13),SUM(VOL,5)/2/CAPITAL);
Var3D:=(CLOSE-Var3C)/Var3C*100;
抄底E:= REF(Var3D,1)<-35 AND Var3D>REF(Var3D,1) AND REF(Var3D,1)<REF(Var3D,2) AND Var3D-REF(Var3D,1)> 2.5;
{抄底5:}STICKLINE(抄底E,40,60,8,1),colorffcc66;
抄底5:0,colorffcc66;
Var3E:=100*WINNER(REF(CLOSE,1)*1.1)-100*WINNER(REF(CLOSE,1)*0.9);
抄底F:= CLOSE>OPEN*1.06 AND Var3E<10;
{抄底6:}STICKLINE(抄底F,40,60,8,1),colorblue;
抄底6:0,colorblue;

智慧专用

V1:=MA(100*(C-LLV(C,34))/(HHV(H,34)-LLV(L,34)),5)-20;
V2:=2*ABS(V1);
V3:=100-(100-3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))
*100,20,1)+2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))
*100,20,1),15,1));
V4:=100-(100-3*SMA((O-LLV(L,55))/(HHV(H,55)-LLV(L,55))
*100,20,1)+2*SMA(SMA((O-LLV(L,55))/(HHV(H,55)-LLV(L,55))
*100,20,1),15,1));
V5:=(H+L+C)/3;
V6:=(V5-MA(V5,10))/(0.015*AVEDEV(V5,10));
V7:=(V5-MA(V5,30))/(0.015*AVEDEV(V5,30));
V8:=IF(V6>=150 AND V6<200 AND V7>=150 AND V7<200,10,0);
V9:=IF(V6<=-150 AND V6>-200 AND V7<=-150 AND V7>-200,-10,V8);
VA:=(C-MA(C,13))/MA(C,13)*100;
VB:=100-ABS(VA);
VC:=3*SMA((INDEXC-LLV(INDEXL,55))/(HHV(INDEXH,55)-LLV(INDEXL,55))*100,20,1)-2
*SMA(SMA((INDEXC-LLV(INDEXL,55))/(HHV(INDEXH,55)-LLV(INDEXL,55))*100,20,1),15,1);
VD:=3*SMA((INDEXO-LLV(INDEXL,55))/(HHV(INDEXH,55)-LLV(INDEXL,55))
*100,20,1)-2*SMA(SMA((INDEXO-LLV(INDEXL,55))/(HHV(INDEXH,55)-LLV(INDEXL,55))*100,20,1),15,1);
VE:=REF(L,1)*0.9;
VF:=L*0.9;
V10:=(VF*V+VE*(CAPITAL-V))/CAPITAL;
V11:=EMA(V10,30);
V12:=V11-C;
V13:=REF(C,1);
V14:=SMA(MAX(C-V13,0),7,1)/SMA(ABS(C-V13),7,1)*100;
V15:=SMA(MAX(C-V13,0),13,1)/SMA(ABS(C-V13),13,1)*100;
V16:=BARSCOUNT(C);
V17:=SMA(MAX(C-REF(C,1),0),6,1)/SMA(ABS(C-REF(C,1)),6,1)*100;
V18:=((-100)*(HHV(H,60)-C)/(HHV(H,60)-LLV(L,60))+50)*2;
V19:=(C-LLV(L,15))/(HHV(H,15)-LLV(L,15))*100;
V1A:=(SMA(V19,4,1)-50)*2;
V1B:=SMA(V1A,3,1);
V1C:=(INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14))*100;
V1D:=SMA(V1C,4,1);
V1E:=SMA(V1D,3,1);
V1F:=(HHV(H,30)-C)/C*100;
V20:=IF(V17<=25 AND V18<-95 AND V1F>20 AND V1B<-30 AND V1E<30
AND V12>=-0.25 AND V14<22 AND V15<28 AND V16>50,80,0);
大趋势: V3;
顶线: IF(VB<90,VB,100);
多方: IF(V1>0,V1,0),LINESTICK;
空方: -IF(V1<0,V2,0),LINESTICK;
抄底: V20,colorred,linethick2;
预警系统: (IF((V7>=200 AND V6>=150) OR CROSS(65,多方),15,IF(V7<=-200
AND V6<=-150,-15,V9))+65);
STICKLINE(V3<=REF(V4,1),V3,V4,8,0),colorwhite;
STICKLINE(V3>REF(V4,1),V3,V4,8,0),colorred;
t1:=C>MA(C,20) AND MA(C,20)>=REF(MA(C,20),1);
t2:=C; t3:=多方>60 AND 预警系统>65 AND 顶线=100;
t4:=多方>48 AND 预警系统>65 AND 顶线<100;
t5:=空方<-38 AND 预警系统<65;
t6:=抄底>50 AND 顶线<90;
t7:=V3>REF(V4,1) AND V>REF(V,1) AND C>REF(C,1);
t8:=V3<=REF(V4,1) AND C AND 空方>=REF(空方,1) AND VC; DRAWTEXT(t1 and count(t1,30)=1,10,'上升通道!'),COLOR00FFFF;
B2:=DRAWTEXT(t2 and count(t2,30)=1,55,'下降通道!'),COLOR00FFFF;
B3:=DRAWTEXT(t3 and count(t3,30)=1,55,'上涨过急!'),COLOR00FFFF;
B4:=DRAWTEXT(t4 and count(t4,30)=1,75,'庄家出货!'),COLOR00FFFF;
B5:=DRAWTEXT(t5 and count(t5,30)=1,50,'有小反弹!'),COLOR00FFFF;
B6:=DRAWTEXT(t6 and count(t6,30)=1,30,'抢反弹!'),COLOR00FFFF;
B7:=DRAWTEXT(t7 and count(t7,30)=1,-10,'资金进场!'),COLOR00FFFF;
DRAWTEXT(t8 and count(t8,30)=1,90,'见顶回落!'),COLOR00FFFF;

会员指标
Var1:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),25);
Var2:=HIGH-REF(HIGH,1);
Var3:=REF(LOW,1)-LOW;
Var4:=SUM(IF(Var2>0 AND Var2>Var3,Var2,0),25);
Var5:=SUM(IF(Var3>0 AND Var3>Var2,Var3,0),25);
Var6:=Var4*100/Var1;
Var7:=Var5*100/Var1;
Var8:=MA(ABS(Var7-Var6)/(Var7+Var6)*100,15);
Var9:=(Var8+REF(Var8,15))/2;
A:=(Var7>Var6 AND Var7>25 AND Var6<25);
B:ZIG(3,50/5)*100,colorwhite;
g:MA(B,2),coloryellow;
D:=CROSS(B,g)*1000,colorred;
W:=cross(g,B)*1000,colorblue;
E:=REF(INDEXC,1);
F:=SMA(MAX(INDEXC-E,0),3,1)/SMA(ABS(INDEXC-E),3,1);
Var10:=F AND F<8;
Var11:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
Var12:=SMA(Var11,3,1);
Var13:=SMA(Var12,3,1);
Var14:=Var13 AND Var13<20;
mm:=A AND D AND Var10 AND Var14 ;
DRAWTEXT(W=1000,b*1.05,'卖' ),COLOR00ff00;
DRAWTEXT(D=1000,b*1.05,'买'),COLORred;

百万绝品趋势线:{ Var1*}(1.06*(3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-

2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1)-50)

+50),colorwhite;
Var2:=(2*CLOSE+HIGH+LOW+OPEN)/5;
Var3:=LLV(LOW,34);
Var4:=HHV(HIGH,34);
SK: EMA((Var2-Var3)/(Var4-Var3)*100,13){*Var1};
SD: EMA(SK,3){*Var1};
买入: IF(CROSS(趋势线,8.5),60,19){*Var1, , };
卖出: IF(CROSS(87,趋势线),40,81){*Var1, ,};
Var5:=AMOUNT/VOL/100;
Var6:=IF(Var5>CLOSE*1.1,CLOSE,IF(Var5<CLOSE*0.9,CLOSE,Var5));
Var7:=100*WINNER(Var6);
Var8:=MA(Var7,8){*Var1};
Var9:=HHV(CLOSE,0)/Var8;
VarA:=IF(Var9>2.5,-10,Var9);
VarB:=IF(VarA>1,-10,VarA);
底限: VarB, , ;
VarC:=Var8/LLV(LOW,0);
VarD:=HHV(HIGH,0)/Var8*8*10;
VarE:=IF(VarD>50,50,VarD);
VarF:=VarE;
Var10:=HHV(HIGH,0)/Var8*4.5*100;
Var11:=IF(Var10>100,103,Var10);
DRAWTEXT({Var1 AND }CROSS(87,趋势线),35,'逃'), , ;
DRAWTEXT({Var1 AND }CROSS(趋势线,8.5),65,'买'), , ;
DRAWTEXT({Var1 AND }CROSS(90,Var8),86,'诱多'), , ;
DRAWTEXT({Var1 AND }CROSS(Var8,10),11,'吸筹'), , ;
DRAWTEXT({Var1 AND }CROSS(Var8,46),Var8,'拉升'), ,;
Var13:=IF(CROSS(SK,SD),23,19);
Var14:=IF(CROSS(SD,SK),77,81);
卖出1: Var14, , ;
买进: Var13, , ;

盘中参考
Var1:=MA(100*(CLOSE-LLV(CLOSE,34))/(HHV(HIGH,34)-LLV(LOW,34)),5)-20;
Var2:=2*ABS(Var1);
Var3:=100-3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)+2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);
Var4:=100-3*SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)+2*SMA(SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);
Var5:=(HIGH+LOW+CLOSE)/3;
Var6:=(Var5-MA(Var5,14))/(0.015*AVEDEV(Var5,14));
Var7:=(Var5-MA(Var5,70))/(0.015*AVEDEV(Var5,70));
Var8:=IF(Var6>=150 AND Var6<200 AND Var7>=150 AND Var7<200,10,0);
Var9:=IF(Var6<=-150 AND Var6>-200 AND Var7<=-150 AND Var7>-200,-10,Var8);
VarA:=(CLOSE-MA(CLOSE,13))/MA(CLOSE,13)*100;
VarB:=100-ABS(VarA);
VarC:=3*SMA((INDEXC-LLV(INDEXL,75))/(HHV(INDEXH,75)-LLV(INDEXL,75))*100,20,1)-2*SMA(SMA((INDEXC-LLV(INDEXL,75))/(HHV(INDEXH,75)-LLV(INDEXL,75))*100,20,1),15,1);
VarD:=3*SMA((INDEXO-LLV(INDEXL,75))/(HHV(INDEXH,75)-LLV(INDEXL,75))*100,20,1)-2*SMA(SMA((INDEXO-LLV(INDEXL,75))/(HHV(INDEXH,75)-LLV(INDEXL,75))*100,20,1),15,1);
VarE:=REF(LOW,1)*0.9;
VarF:=LOW*0.9;
Var10:=(VarF*VOL+VarE*(CAPITAL-VOL))/CAPITAL;
Var11:=EMA(Var10,30);
Var12:=Var11-CLOSE;
Var13:=REF(CLOSE,1);
Var14:=SMA(MAX(CLOSE-Var13,0),7,1)/SMA(ABS(CLOSE-Var13),7,1)*100;
Var15:=SMA(MAX(CLOSE-Var13,0),13,1)/SMA(ABS(CLOSE-Var13),13,1)*100;
Var16:=BARSCOUNT(CLOSE);
Var17:=SMA(MAX(CLOSE-REF(CLOSE,1),0),6,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),6,1)*100;
Var18:=((-100)*(HHV(HIGH,60)-CLOSE)/(HHV(HIGH,60)-LLV(LOW,60))+50)*2;
Var19:=(CLOSE-LLV(LOW,15))/(HHV(HIGH,15)-LLV(LOW,15))*100;
Var1A:=(SMA(Var19,4,1)-50)*2;
Var1B:=SMA(Var1A,3,1);
Var1C:=(INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14))*100;
Var1D:=SMA(Var1C,4,1);
Var1E:=SMA(Var1D,3,1);
Var1F:=(HHV(HIGH,30)-CLOSE)/CLOSE*100;
Var20:=IF(Var17<=25 AND Var18<-95 AND Var1F>20 AND Var1B<-30 AND Var1E<30 AND Var12>=-0.25 AND Var14<22 AND Var15<28 AND Var16>50,80,0);
情报: Var3;
天线: IF(VarB<90,VarB,100);
红军: IF(Var1>0,Var1,0),colorred, LINESTICK;
绿军: IF(Var1<0,Var2,0),colorgreen,LINESTICK;
导弹: Var20;
预警系统: IF(Var7>=200 AND Var6>=150,15,IF(Var7<=-200 AND Var6<=-150,-15,Var9))+60;
STICKLINE(Var3>=REF(Var4,1),Var3,Var4,8,0);
STICKLINE(Var3<REF(Var4,1),Var3,Var4,8,0);
Var21:=CLOSE>MA(CLOSE,20) AND MA(CLOSE,20)>=REF(MA(CLOSE,20),1);
Var22:=CLOSE<MA(CLOSE,20) AND MA(CLOSE,20)<REF(MA(CLOSE,20),1);
Var23:=红军>50 AND 预警系统>60 AND 天线=100;
Var24:=红军>48 AND 预警系统>60 AND 天线<100;
Var25:=绿军>38 AND 预警系统<55;
Var26:=导弹>50 AND 天线<90;
Var27:=Var3<REF(Var4,1) AND VOL>REF(VOL,1) AND CLOSE>REF(CLOSE,1);
Var28:=Var3>=REF(Var4,1) AND CLOSE<REF(CLOSE,1) AND 预警系统=60 AND 导弹=0 AND 绿军>=REF(绿军,1) AND VarC<REF(VarD,1);
DRAWTEXT(Var21 AND COUNT(Var21,30)=1,100,'上升通道,持股待长或高抛低吸!');
DRAWTEXT(Var22 AND COUNT(Var22,30)=1,90,'下降通道,小心无量阴跌! ');
DRAWTEXT(Var23 AND COUNT(Var23,30)=1,70,'上涨过急,需要调整,短线先抛出! ');
DRAWTEXT(Var24 AND COUNT(Var24,30)=1,80,'庄家出货,大跌在即,中线抛出! ');
DRAWTEXT(Var25 AND COUNT(Var25,30)=1,50,'不必杀跌,应有小反弹 ,跌停除外!');
DRAWTEXT(Var26 AND COUNT(Var26,30)=1,30,'坚决抢反弹,但巨量封跌停除外 ');
DRAWTEXT(Var27 AND COUNT(Var27,30)=1,40,'有大资金进场迹象,关注!');
DRAWTEXT(Var28 AND COUNT(Var28,30)=1,20,'见顶回落');



--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月16日星期四

从一万本股票书里挑出的精华

从一万本股票书里挑出的精华



  其实,掌握好了均线理论就足够赚的盆满钵溢了;
  其实,一年只买卖一支股票就够了;
  其实,如果你的资金在100万以下,一年翻番并不难;
  其实,每日亲手画手中个股 的K线图才会让你的思维波动和主力一致;
  其实,真的不要太贪,因为股市里的钱是赚不完的;
  其实,真的不要太怕,因为共产党是不会让股市崩盘的;
  其实,主力也很难,他们都很怕出不了货;
  其实,底部放量突破就应该关注了,不管是真是假;
  其实,也许再坚持一会儿,洗盘就结束了;
  其实,中线心态,满仓一支股,手里留点,逢高出点,逢低接点,滚动操作是上策;
  其实,看头才是最需要锤炼的功力;
  其实,做短线最主要的是看成交量和换手率;
  其实,每日的量比榜和成交金额榜就是短线的黑马榜;
  其实,买入正在上涨的股票才是最安全的;
  其实,看到长期横盘后底部带量向上突破的缺口,就说明你的财运来了,即使这个缺口只有一分钱价差;
  其实,最管用的是技术指标的背离,而不是这个指标当前的数值;
  其实,把大盘和个股的K线图叠加起来,就可以判断该股有无主力,主力强弱;
  其实,敢于适时斩仓才是在这个场子里生存的根本;
  其实,无论什么方法,你只要掌握了一种,就足够了;
  其实,分时走势中,白线和黄线距离突然垂直向上拉大很多,就是短线出货的绝好机会,因为你一定有机会再补回来;
  其实,洗盘和出货最重要区别就在于一个量缩一个量增;
  其实,短线一定要看15分钟的K线图,根据KDJ可找到当日的进出点,根据OBV可判断主力的意图;
  其实,如果你真的要做长线,就把K线图设置成30、60、120日;
  其实,如果你有足够的技巧和胆量,大盘放量上攻时,你完全可以追龙头股的第一个涨停,说不定一周就能赢利50%;
  其实,强势上攻的股,出风险提示公告可理解为"开盘就追吧,至少还有3天的涨头呢!";
  其实,短线可在ST摘帽的那天介入,你要坚信丑小鸭已变成了白天鹅,怎么着也得扑腾几下;
  其实,新股上市的第一天,开盘30分钟的换手率达到40以上,就已经说明了问题;
  其实,真正高手往往不会在股票明显进入下降通道的时候出货,而是更早;
  其实,在股市里,会休息的人才会工作,为了自己的钱袋而工作;
  其实,如果你能做到"有风驶到尽,无风潜海底",那你就会发现,其实,做股票是很轻松的!
  其实,炒股真的不难!
  其实,我也是亏了很多钱,才知道的这些!!!千万不要告诉我,其实,你不懂我的心!

--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月14日星期二

好友海天一向您推荐视频 [来自YOUKU'海天一'的信息] [来自YOUKU'海天一'的信息]

优酷 - 世界都在看

您在优酷的好友 海天一 想和您分享这个精彩的视频:

这个视频很精彩!

五星级推荐 ESWC 2007 CS 回顾视频

内容简介:ESWC2007_FINAL_XVID 本届ESWC绝对称得上是饕餮盛宴,一个个精彩瞬间至今仍历历在目。而本部视频正是为回顾ESWC2007而作,没有绚丽的特效...

 

谢谢!

您在优酷的好友 : 海天一

 

详细信息浏览:http://www.youku.com/v_show/id_XNzE0MDE2MA==.html

Copyright©2006 优酷 Youku.com 版权所有

2007年8月13日星期一

羊群的选择――关于民主的寓言故事

 

羊群的选择――关于民主的寓言故事

  羊群的选择――关于民主的寓言故事

  佚名

  上帝把两群羊放在草原上,一群在南,一群在北。上帝还给羊群找了两种天敌,一种是狮子,一种是狼。

   上帝对羊群说:"如果你们要狼,就给一只,任它随意咬你们。如果你们要狮子,就给两头,你们可以在两头狮子中任选一头,还可以随时更换。"南边那群羊 想,狮子比狼凶猛得多,还是要狼吧。于是,它们就要了一只狼。北边那群羊想,狮子虽然比狼凶猛得多,但我们有选择权,还是要狮子吧。于是,它们就要了两头 狮子。

  那只狼进了南边的羊群后,就开始吃羊。狼身体小,食量也小,一只羊够它吃几天了。这样羊群几天才被追杀一次。北边那群羊挑选了 一头狮子,另一头则留在上帝那里。这头狮子进入羊群后,也开始吃羊。狮子不但比狼凶猛,而且食量惊人,每天都要吃一只羊。这样羊群就天天都要被追杀,惊恐 万状。羊群赶紧请上帝换一头狮子。不料,上帝保管的那头狮子一直没有吃东西,正饥饿难耐,它扑进羊群,比前面那头狮子咬得更疯狂。羊群一天到晚只是逃命, 连草都快吃不成了。

  南边的羊群庆幸自己选对了天敌,又嘲笑北边的羊群没有眼光。北边的羊群非常后悔,向上帝大倒苦水,要求更换天敌,改要一只狼。上帝说:"天敌一旦确定,就不能更改,必须世代相随,你们唯一的权利是在两头狮子中选择。"

  北边的羊群只好把两头狮子不断更换。可两头狮子同样凶残,换哪一头都比南边的羊群悲惨得多,它们索性不换了,让一头狮子吃得膘肥体壮,另一头狮子则饿得精瘦。眼看那头瘦狮子快要饿死了,羊群才请上帝换一头。

   这头瘦狮子经过长时间的饥饿后,慢慢悟出了一个道理:自己虽然凶猛异常,一百只羊都不是对手,可是自己的命运是操纵在羊群手里的。羊群随时可以把自己送 回上帝那里,让自己饱受饥饿的煎熬,甚至有可能饿死。想通这个道理后,瘦狮子就对羊群特别客气,只吃死羊和病羊,凡是健康的羊它都不吃了。羊群喜出望外, 有几只小羊提议干脆固定要瘦狮子,不要那头肥狮子了。一只老公羊提醒说:"瘦狮子是怕我们送它回上帝那里挨饿,才对我们这么好。万一肥狮子饿死了,我们没 有了选择的余地,瘦狮子很快就会恢复凶残的本性。"羊群觉得老羊说得有理,为了不让另一头狮子饿死,它们赶紧把它换回来。

  原先膘肥体壮的那头狮子,已经饿得只剩下皮包骨头了,并且也懂得了自己的命运是操纵在羊群手里的道理。为了能在草原上待久一点,它竟百般讨好起羊群来。而那头被送交给上的狮子,则难过得流下了眼泪。

   北边的羊群在经历了重重磨难后,终于过上了自由自在的生活。南边的那群羊的处境却越来越悲惨了,那只狼因为没有竞争对手,羊群又无法更换它,它就胡作非 为,每天都要咬死几十只羊,这只狼早已不吃羊肉了,它只喝羊心里的血。它还不准羊叫,哪只叫就立刻咬死哪只。南边的羊群只能在心中哀叹:"早知道这样,还 不如要两头狮子。"
 
 
 

--
海阔天空,做什么就记什么。主要是 Ubuntu Linux 和 Latex 及编程相关的东东: http://hai-kuo.blogspot.com/ 



网 易 Yeah.net 邮 箱 夏 日 大 变 脸,带 你 感 受 新 一 代 邮 箱 的 全 新 魅 力 >>

2007年8月10日星期五

一个佛教故事!!!看懂了,就明白为何亏钱了!!

一个佛教故事!!!看懂了,就明白为何亏钱了!!

佛下山游说佛法,在一家店铺里看到一尊释迦牟尼像,青铜所铸,形体逼真,神态安然,佛大悦。若能带回寺里,开启其佛光,记世供奉,真乃一件幸事,可店铺老板要价5000元,分文不能少,加上见佛如此钟爱它,更加咬定原价不放。
佛回到寺里对众僧谈起此事,众僧很着急,问佛打算以多少钱买下它。佛说:"500元足矣。"众僧唏嘘不止:"那怎么可能?"佛说:"天理犹存,当有办法,万丈红尘,芸芸众生,欲壑难填,得不偿失啊,我佛慈悲,普度众生,当让他仅仅赚到这500元!"
"怎样普度他呢?"众僧不解地问。
"让他忏悔。"佛笑答。众僧更不解了。佛说:"只管按我的吩咐去做就行了。"
第一个弟子下山去店铺里和老板侃价,弟子咬定4500元,未果回山。
第二天,第二个弟子下山去和老板侃价,咬定4000元不放,亦未果回山。
就这样,直到最后一个弟子在第九天下山时所给的价已经低到了200元。眼见着一个个买主一天天下去、一个比一个价给得低,老板很是着急,每一天他都后悔不如以前一天的价格卖给前一个人了,他深深地怨责自己太贪。到第十天时,他在心里说,今天若再有人来,无论给多少钱我也要立即出手。
第十天,佛亲自下山,说要出500元买下它,老板高兴得不得了———竟然反弹到了500元!当即出手,高兴之余另赠佛龛台一具。佛得到了那尊铜像,谢绝了龛台,单掌作揖笑曰:"YUWANG无边,凡事有度,一切适可而止啊!善哉,善哉……"(转自股票吧网)


--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

2007年8月8日星期三

[转]Bash实例,第三部分

Bash 实例,第 3 部分

探讨 ebuild 系统

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

将此页作为电子邮件发送

将此页作为电子邮件发送



级别: 初级

Daniel Robbins ( drobbins@gentoo.org), 总裁兼 CEO, Gentoo Technologies, Inc.

2000 年 5 月 01 日

Daniel Robbins 在其最后一篇 Bash实例文 章中详细讲述了 Gentoo Linux ebuild 系统,这个展示 bash能力的极佳范例。循序渐进地,他为您展示如何实现 ebuild系统,并触及很多方便的 bash技术和设计策略。在本文末尾,您将很好地掌握制造完全基于 bash的应用所涉及的技术,并开始为自己的自动构建系统编码。

进入 ebuild 系统

我真是一直期待着这第三篇、也是最后一篇 Bash 实例文章,因为既然已经在 第 1 篇第 2 篇 中讲述了 bash 编程基础,就可以集中讲述象 bash 应用开发和程序设计这样更高级的主题。在本文中,将通过我花了许多时间来编码和细化的项目,Gentoo Linux ebuild 系统,来给您大量实际的、现实世界的 bash 开发经验。

我是 Gentoo Linux(目前还是 beta 版的下一代 Linux OS) 的首席设计师。我的主要责任之一就是确保所有二进制包(类似于 RPM)都正确创建并一起使用。正如您可能知道的,标准 Linux 系统不是由一棵统一的源树组成(象 BSD),而实际上是由超过 25 个协同工作的核心包组成。这其中包括:

描述
linux实际内核
util-linux与 Linux 相关的杂项程序集合
e2fsprogs与 ext2 文件系统相关的实用程序集合
glibcGNU C 库

每个包都位于各自的 tar 压缩包中,并由不同的独立开发人员或开发小组维护。要创建一个发行版,必须对每个包分别进行下载、编译和打包处理。每次要修复、升级或改进包时,都必须重复编译和打包步骤(并且,包确实更新得很快)。为了帮助消除创建和更新包所涉及的重复步骤,我创建了 ebuild 系统,该系统几乎全用 bash 编写。为了增加您的 bash 知识,我将循序渐进地为您演示如何实现该 ebuild 系统的解包和编译部分。在解释每一步时,还将讨论为什么要作出某些设计决定。在本文末尾,您不仅将极好地掌握大型 bash 编程项目,还实现了完整自动构建系统的很大一部分。





回页首


为什么选择 bash?

Bash 是 Gentoo Linux ebuild 系统的基本组件。选择它做为 ebuild 的主要语言有几个原因。首先,其语法不复杂,并且为人们所熟悉,这特别适合于调用外部程序。自动构建系统是自动调用外部程序的"胶合代码",而 bash 非常适合于这种类型的应用。第二,Bash 对函数的支持允许 ebuild 系统使用模块化、易于理解的代码。第三,ebuild 系统利用了 bash 对环境变量的支持,允许包维护人员和开发人员在运行时对其进行方便的在线配置。





回页首


构建过程回顾

在讨论 ebuild 系统之前,让我们回顾一下编译和安装包都牵涉些什么。例如,让我们看一下 "sed" 包,这个作为所有 Linux 版本一部分的标准 GNU 文本流编辑实用程序。首先,下载源代码 tar 压缩包 (sed-3.02.tar.gz)(请参阅 参考资料 )。我们将把这个档案存储在 /usr/src/distfiles 中,将使用环境变量 "$DISTDIR" 来引用该目录。"$DISTDIR" 是所有原始源代码 tar 压缩包所在的目录,它是一个大型源代码库。

下一步是创建名为 "work" 的临时目录,该目录存放已经解压的源代码。以后将使用 "$WORKDIR" 环境变量引用该目录。要做到这点,进入有写权限的目录,然后输入:


将 sed 解压缩到临时目录
$ mkdir work
$ cd work
$ tar xzf /usr/src/distfiles/sed-3.02.tar.gz

然后,解压缩 tar 压缩包,创建一个包含所有源代码、名为 sed-3.02 的目录。以后将使用环境变量 "$SRCDIR" 引用 sed-3.02 目录。要编译程序,输入:


将 sed 解压缩到临时目录
$ cd sed-3.02
$ ./configure --prefix=/usr
(autoconf 生成适当的 make 文件,这要花一些时间)
$ make
(从源代码编译包,也要花一点时间)

因为在本文中只讲述解包和编译步骤,所以将略过 "make install" 步骤。如果要编写 bash 脚本来执行所有这些步骤,则代码可能类似于:


要执行解包/编译过程的样本 bash 脚本
#!/usr/bin/env bash
if [ -d work ]
then
# remove old work directory if it exists
rm -rf work
fi
mkdir work
cd work
tar xzf /usr/src/distfiles/sed-3.02.tar.gz
cd sed-3.02
./configure --prefix=/usr
make





回页首


使代码通用

虽然可以使用这个自动编译脚本,但它不是很灵活。基本上,bash 脚本只包含在命令行输入的所有命令列表。虽然可以使用这种解决方案,但是,最好做一个只通过更改几行就可以快速解包和编译任何包的适用脚本。这样,包维护人员将新包添加到发行版所需的工作就大为减少。让我们先尝试一下使用许多不同的环境变量来完成,使构建脚本更加适用:


新的、更通用的脚本
#!/usr/bin/env bash
# P is the package name
P=sed-3.02
# A is the archive name
A=${P}.tar.gz
export ORIGDIR=`pwd`
export WORKDIR=${ORIGDIR}/work
export SRCDIR=${WORKDIR}/${P}
if [ -z "$DISTDIR" ]
then
# set DISTDIR to /usr/src/distfiles if not already set
DISTDIR=/usr/src/distfiles
fi
export DISTDIR
if [ -d ${WORKDIR} ]
then
# remove old work directory if it exists
rm -rf ${WORKDIR}
fi
mkdir ${WORKDIR}
cd ${WORKDIR}
tar xzf ${DISTDIR}/${A}
cd ${SRCDIR}
./configure --prefix=/usr
make

已经向代码中添加了很多环境变量,但是,它基本上还是执行同一功能。但是,如果现在要要编译任何标准的 GNU 基于 autoconf 的源代码 tar 压缩包,只需简单地将该文件复制到一个新文件(用合适的名称来反映它所编译的新包名),然后将 "$A" 和 "$P" 的值更改成新值即可。所有其它环境变量都自动调整成正确设置,并且脚本按预想工作。虽然这很方便,但是代码还有改进余地。这段代码比我们开始创建的 "transcript" 脚本要长很多。既然任何编程项目的目标之一是减少用户复杂度,所以最好大幅度缩短代码,或者至少更好地组织代码。可以用一个巧妙的方法来做到这点 -- 将代码拆成两个单独文件。将该文件存为 "sed-3.02.ebuild":


sed-3.02.ebuild
#the sed ebuild file -- very simple!
P=sed-3.02
A=${P}.tar.gz


第一个文件不重要,只包含那些必须在每个包中配置的环境变量。下面是第二个文件,它包含操作的主要部分。将它存为 "ebuild",并使它成为可执行文件:


ebuild 脚本
#!/usr/bin/env bash
if [ $# -ne 1 ]
then
echo "one argument expected."
exit 1
fi
if [ -e "$1" ]
then
source $1
else
echo "ebuild file $1 not found."
exit 1
fi
export ORIGDIR=`pwd`
export WORKDIR=${ORIGDIR}/work
export SRCDIR=${WORKDIR}/${P}
if [ -z "$DISTDIR" ]
then
# set DISTDIR to /usr/src/distfiles if not already set
DISTDIR=/usr/src/distfiles
fi
export DISTDIR
if [ -d ${WORKDIR} ]
then
# remove old work directory if it exists
rm -rf ${WORKDIR}
fi
mkdir ${WORKDIR}
cd ${WORKDIR}
tar xzf ${DISTDIR}/${A}
cd ${SRCDIR}
./configure --prefix=/usr
make

既然已经将构建系统拆成两个文件,我敢打赌,您一定在想它的工作原理。基本上,要编译 sed,输入:

$ ./ebuild sed-3.02.ebuild

当执行 "ebuild" 时,它首先试图 "source" 变量 "$1"。这是什么意思?还记得 前一篇文章 所讲的吗:"$1" 是第一个命令行自变量 -- 在这里,是 "sed-3.02.ebuild"。在 bash 中,"source" 命令从文件中读入 bash 语句,然后执行它们,就好象它们直接出现在 "source" 命令所在的文件中一样。因此,"source ${1}" 导致 "ebuild" 脚本执行在 "sed-3.02.ebuild" 中定义 "$P" 和 "$A" 的命令。这种设计更改确实方便,因为如果要编译另一个程序,而不是 sed,可以简单地创建一个新的 .ebuild 文件,然后将其作为自变量传递给 "ebuild" 脚本。通过这种方式,.ebuild 文件最终非常简单,而将 ebuild 系统复杂的操作部分存在一处,即 "ebuild" 脚本中。通过这种方式,只需编辑 "ebuild" 脚本就可以升级或增强 ebuild 系统,同时将实现细节保留在 ebuild 文件之外。这里有一个 gzip 的样本 ebuild 文件:


gzip-1.2.4a.ebuild
#another really simple ebuild script!
P=gzip-1.2.4a
A=${P}.tar.gz





回页首


添加功能性

好,我们正在取得进展。但是,我还想添加某些额外功能性。我希望 ebuild 脚本再接受一个命令行自变量:"compile"、"unpack" 或 "all"。这个命令行自变量告诉 ebuild 脚本要执行构建过程的哪一步。通过这种方式,可以告诉 ebuild 解包档案,但不进行编译(以便在开始编译之前查看源代码档案)。要做到这点,将添加一条 case 语句,该语句将测试 "$2",然后根据其值执行不同操作。代码如下:


ebuild,修定本 2
#!/usr/bin/env bash
if [ $# -ne 2 ]
then
echo "Please specify two args - .ebuild file and unpack, compile or all"
exit 1
fi
if [ -z "$DISTDIR" ]
then
# set DISTDIR to /usr/src/distfiles if not already set
DISTDIR=/usr/src/distfiles
fi
export DISTDIR
ebuild_unpack() {
#make sure we're in the right directory
cd ${ORIGDIR}

if [ -d ${WORKDIR} ]
then
rm -rf ${WORKDIR}
fi
mkdir ${WORKDIR}
cd ${WORKDIR}
if [ ! -e ${DISTDIR}/${A} ]
then
echo "${DISTDIR}/${A} does not exist. Please download first."
exit 1
fi
tar xzf ${DISTDIR}/${A}
echo "Unpacked ${DISTDIR}/${A}."
#source is now correctly unpacked
}
ebuild_compile() {

#make sure we're in the right directory
cd ${SRCDIR}
if [ ! -d "${SRCDIR}" ]
then
echo "${SRCDIR} does not exist -- please unpack first."
exit 1
fi
./configure --prefix=/usr
make
}
export ORIGDIR=`pwd`
export WORKDIR=${ORIGDIR}/work
if [ -e "$1" ]
then
source $1
else
echo "Ebuild file $1 not found."
exit 1
fi
export SRCDIR=${WORKDIR}/${P}
case "${2}" in
unpack)
ebuild_unpack
;;
compile)
ebuild_compile
;;
all)
ebuild_unpack
ebuild_compile
;;
*)
echo "Please specify unpack, compile or all as the second arg"
exit 1
;;
esac

已经做了很多改动,下面来回顾一下。首先,将编译和解包步骤放入各自的函数中,其函数名分别为 ebuild_compile() 和 ebuild_unpack()。这是个好的步骤,因为代码正变得越来越复杂,而新函数提供了一定的模块性,使代码更有条理。在每个函数的第一行,显式 "cd" 到想要的目录,因为,随着代码变得越来越模块化而不是线形化,出现疏忽而在错误的当前工作目录中执行函数的可能性也变大。"cd" 命令显式地使我们处于正确的位置,并防止以后出现错误 - 这是重要的步骤,特别是在函数中删除文件时更是如此。

另外,还在 ebuild_compile() 函数的开始处添加了一个有用的检查。现在,它检查以确保 "$SRCDIR" 存在,如果不存在,则打印一条告诉用户首先解包档案然后退出的错误消息。如果愿意,可以改变这种行为,以便在 "$SRCDIR" 不存在的情况下,ebuild 脚本将自动解包源代码档案。可以用以下代码替换 ebuild_compile() 来做到这点:


ebuild_compile() 上的新代码
ebuild_compile() {
#make sure we're in the right directory
if [ ! -d "${SRCDIR}" ]
then
ebuild_unpack
fi
cd ${SRCDIR}
./configure --prefix=/usr
make
}

ebuild 脚本第二版中最明显的改动之一就是代码末尾新的 case 语句。这条 case 语句只是检查第二个命令行自变量,然后根据其值执行正确操作。如果现在输入:

$ ebuild sed-3.02.ebuild

就会得到一条错误消息。现在需要告诉 ebuild 做什么,如下所示:

$ ebuild sed-3.02.ebuild unpack

$ ebuild sed-3.02.ebuild compile

$ ebuild sed-3.02.ebuild all

如果提供上面所列之外的第二个命令行自变量,将得到一条错误消息(* 子句),然后,程序退出。





回页首


使代码模块化

既然代码很高级并且实用,您可能很想创建几个更高级的 ebuild 脚本,以解包和编译所喜爱的程序。如果这样做,迟早会遇到一些不使用 autoconf ("./configure") 的源代码,或者可能遇到其它使用非标准编译过程的脚本。需要再对 ebuild 系统做一些改动,以适应这些程序。但是在做之前,最好先想一下如何完成。

将 "./configure --prefix=/usr; make" 硬编码到编译阶段的妙处之一是:大多数时候,它可以正确工作。但是,还必须使 ebuild 系统适应那些不使用 autoconf 或正常 make 文件的源代码。要解决这个问题,建议 ebuild 脚本缺省执行以下操作:

  1. 如果在 "${SRCDIR}" 中有一个配置脚本,则按如下执行它:
    ./configure --prefix=/usr
    否则,跳过这步。
  2. 执行以下命令:
    make

既然 ebuild 只在 configure 实际存在时才运行它,现在可以自动地适应那些不使用 autoconf 但有标准 make 文件的程序。但是,在简单的 "make" 对某些源代码无效时该怎么办?需要一些处理这些情况的特定代码来覆盖合理的缺省值。要做到这一点,将把 ebuild_compile() 函数转换成两个函数。第一个函数(可将其当成"父"函数)的名称仍是 ebuild_compile()。但是,将有一个名为 user_compile() 的新函数,该函数只包含合理的缺省操作:


拆成两个函数的 ebuild_compile()
user_compile() {
#we're already in ${SRCDIR}
if [ -e configure ]
then
#run configure script if it exists
./configure --prefix=/usr
fi
#run make
make
}
ebuild_compile() {
if [ ! -d "${SRCDIR}" ]
then
echo "${SRCDIR} does not exist -- please unpack first."
exit 1
fi
#make sure we're in the right directory
cd ${SRCDIR}
user_compile
}

现在这样做的原因可能还不是很明显,但是,再忍耐一下。虽然这段代码与 ebuild 前一版的工作方式几乎相同,但是现在可以做一些以前无法做的 -- 可以在 sed-3.02.ebuild 中覆盖 user_compile()。因此,如果缺省的 user_compile() 不满足要求,可以在 .ebuild 文件中定义一个新的,使其包含编译包所必需的命令。例如,这里有一个 e2fsprogs-1.18 的 ebuild 文件,它需要一个略有不同的 "./configure" 行:


e2fsprogs-1.18.ebuild
#this ebuild file overrides the default user_compile()
P=e2fsprogs-1.18
A=${P}.tar.gz

user_compile() {
./configure --enable-elf-shlibs
make
}

现在,将完全按照我们希望的方式编译 e2fsprogs。但是,对于大多数包来说,可以省略 .ebuild 文件中的任何定制 user_compile() 函数,而使用缺省的 user_compile() 函数。

ebuild 脚本又怎样知道要使用哪个 user_compile() 函数呢?实际上,这很简单。ebuild 脚本中,在执行 e2fsprogs-1.18.ebuild 文件之前定义缺省 user_compile() 函数。如果在 e2fsprogs-1.18.ebuild 中有一个 user_compile(),则它覆盖前面定义的缺省版本。如果没有,则使用缺省 user_compile() 函数。

这是好工具,我们已经添加了很多灵活性,而无需任何复杂代码(如果不需要的话)。在这里就不讲了,但是,还应该对 ebuild_unpack() 做类似修改,以便用户可以覆盖缺省解包过程。如果要做任何修补,或者文件包含在多个档案中,则这非常方便。还有个好主意是修改解包代码,以便它可以缺省识别由 bzip2 压缩的 tar 压缩包。





回页首


配置文件

目前为止,已经讲了很多不方便的 bash 技术,现在再讲一个。通常,如果程序在 /etc 中有一个配置文件是很方便的。幸运的是,用 bash 做到这点很容易。只需创建以下文件,然后并其存为 /etc/ebuild.conf 即可:


/ect/ebuild.conf
# /etc/ebuild.conf: set system-wide ebuild options in this file
# MAKEOPTS are options passed to make
MAKEOPTS="-j2"

在该例中,只包括了一个配置选项,但是,您可以包括更多。bash 的一个妙处是:通过执行该文件,就可以对它进行语法分析。在大多数解释型语言中,都可以使用这个设计窍门。执行 /etc/ebuild.conf 之后,在 ebuild 脚本中定义 "$MAKEOPTS"。将利用它允许用户向 make 传递选项。通常,将使用该选项来允许用户告诉 ebuild 执行 并行 make





回页首


什么是并行 make?

为了提高多处理器系统的编译速度,make 支持并行编译程序。这意味着,make 同时编译用户指定数目的源文件(以便使用多处理器系统中的额外处理器),而不是一次只编译一个源文件。通过向 make 传递 -j # 选项来启用并行 make,如下所示:

make -j4 MAKE="make -j4"

这行代码指示 make 同时编译四个程序。 MAKE="make -j4" 自变量告诉 make,向其启动的任何子 make 进程传递 -j4 选项。

这里是 ebuild 程序的最终版本:


ebuild,最终版本
#!/usr/bin/env bash
if [ $# -ne 2 ]
then
echo "Please specify ebuild file and unpack, compile or all"
exit 1
fi
source /etc/ebuild.conf
if [ -z "$DISTDIR" ]
then
# set DISTDIR to /usr/src/distfiles if not already set
DISTDIR=/usr/src/distfiles
fi
export DISTDIR
ebuild_unpack() {
#make sure we're in the right directory
cd ${ORIGDIR}

if [ -d ${WORKDIR} ]
then
rm -rf ${WORKDIR}
fi
mkdir ${WORKDIR}
cd ${WORKDIR}
if [ ! -e ${DISTDIR}/${A} ]
then
echo "${DISTDIR}/${A} does not exist. Please download first."
exit 1
fi
tar xzf ${DISTDIR}/${A}
echo "Unpacked ${DISTDIR}/${A}."
#source is now correctly unpacked
}
user_compile() {
#we're already in ${SRCDIR}
if [ -e configure ]
then
#run configure script if it exists
./configure --prefix=/usr
fi
#run make
make $MAKEOPTS MAKE="make $MAKEOPTS"
}
ebuild_compile() {
if [ ! -d "${SRCDIR}" ]
then
echo "${SRCDIR} does not exist -- please unpack first."
exit 1
fi
#make sure we're in the right directory
cd ${SRCDIR}
user_compile
}
export ORIGDIR=`pwd`
export WORKDIR=${ORIGDIR}/work
if [ -e "$1" ]
then
source $1
else
echo "Ebuild file $1 not found."
exit 1
fi
export SRCDIR=${WORKDIR}/${P}
case "${2}" in
unpack)
ebuild_unpack
;;
compile)
ebuild_compile
;;
all)
ebuild_unpack
ebuild_compile
;;
*)
echo "Please specify unpack, compile or all as the second arg"
exit 1
;;
esac

请注意,在文件的开始部分执行 /etc/ebuild.conf。另外,还要注意,在缺省 user_compile() 函数中使用 "$MAKEOPTS"。您可能在想,这管用吗 - 毕竟,在执行实际上事先定义 "$MAKEOPTS" 的 /etc/ebuild.conf 之前,我们引用了 "$MAKEOPTS"。对我们来说幸运的是,这没有问题,因为变量扩展只在执行 user_compile() 时才发生。在执行 user_compile() 时,已经执行了 /etc/ebuild.conf,并且 "$MAKEOPTS" 也被设置成正确的值。





回页首


结束语

本文已经讲述了很多 bash 编程技术,但是,只触及到 bash 能力的一些皮毛。例如,Gentoo Linux ebuild 产品不仅自动解包和编译每个包,还可以:

  • 如果在 "$DISTDIR" 没找到源代码,则自动下载
  • 通过使用 MD5 消息摘要,验证源代码没有受到破坏
  • 如果请求,则将编译过的应用程序安装到正在使用的文件系统,并记录所有安装的文件,以便日后可以方便地将包卸载。
  • 如果请求,则将编译过的应用程序打包成 tar 压缩包(以您希望的形式压缩),以便以后可以在另一台计算机上,或者在基于 CD 的安装过程中(如果在构建发行版 CD)安装。

另外,ebuild 系统产品还有几个全局配置选项,允许用户指定选项,例如在编译过程中使用什么优化标志,在那些支持它的包中是否应该缺省启用可选的包支持(例如 GNOME 和 slang)。

显然,bash 可以实现的功能远比本系列文章中所触及的要多。关于这个不可思议的工具,希望您已经学到了很多,并鼓舞您使用 bash 来加快和增强开发项目。



参考资料



关于作者

作者

Daniel Robbins 居住在美国新墨西哥州 Albuquerque。他是 Gentoo 项目 的总设计师,Gentoo Technologies, Inc. 的 CEO,Linux Advanced Multimedia Project (LAMP) 的顾问,Macmillan 书籍 Caldera OpenLinux UnleashedSuSE Linux UnleasedSamba Unleashed 的作者。Daniel 自小学二年级起就与计算机结下不解之缘,那时他首先接触的是 Logo 程序语言,并沉溺于 Pac-Man 游戏中。这也许就是他至今仍担任 SONY Electronic Publishing/ Psygnosis 首席图形设计师的原因所在。Daniel 喜欢与妻子 Mary 一起共渡时光,他们的孩子即将诞生。可通过 drobbins@gentoo.org 与 Daniel Robbins 联系。





--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/

[转]Bash实例,第二部分

Bash 实例,第 2 部分

更多的 bash 基本编程

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

将此页作为电子邮件发送

将此页作为电子邮件发送



级别: 初级

Daniel Robbins ( drobbins@gentoo.org), 总裁兼 CEO, Gentoo Technologies, Inc.

2000 年 4 月 01 日

在前一篇 bash 的介绍性文章中,Daniel Robbins 为您讲解了脚本语言的一些基本元素和使用 bash 的原因。在本文(即第二部分)中,Daniel 继续前一篇的内容,并讲解条件 (if-then) 语句、循环和更多的 bash 基本结构。

我们先看一下处理命令行自变量的简单技巧,然后再看看 bash 基本编程结构。

接收自变量

介绍性文章 中的样本程序中,我们使用环境变量 "$1" 来引用第一个命令行自变量。类似地,可以使用 "$2"、"$3" 等来引用传递给脚本的第二和第三个自变量。这里有一个例子:

 #!/usr/bin/env bash

echo name of script is $0
echo first argument is $1
echo second argument is $2
echo seventeenth argument is $17
echo number of arguments is $#

除以下两个细节之外,此例无需说明。第一,"$0" 将扩展成从命令行调用的脚本名称,"$#" 将扩展成传递给脚本的自变量数目。试验以上脚本,通过传递不同类型的命令行自变量来了解其工作原理。

有时需要一次引用 所有 命令行自变量。针对这种用途,bash 实现了变量 "$@",它扩展成所有用空格分开的命令行参数。在本文稍后的 "for" 循环部分中,您将看到使用该变量的例子。





回页首


Bash 编程结构

如果您曾用过如 C、Pascal、Python 或 Perl 那样的过程语言编程,则一定熟悉 "if" 语句和 "for" 循环那样的标准编程结构。对于这些标准结构的大多数,Bash 有自己的版本。在下几节中,将介绍几种 bash 结构,并演示这些结构和您已经熟悉的其它编程语言中结构的差异。如果以前编程不多,也不必担心。我提供了足够的信息和示例,使您可以跟上本文的进度。





回页首


方便的条件语句

如果您曾用 C 编写过与文件相关的代码,则应该知道:要比较特定文件是否比另一个文件新需要大量工作。那是因为 C 没有任何内置语法来进行这种比较,必须使用两个 stat() 调用和两个 stat 结构来进行手工比较。相反,bash 内置了标准文件比较运算符,因此,确定"/tmp/myfile 是否可读"与查看"$myvar 是否大于 4"一样容易。

下表列出最常用的 bash 比较运算符。同时还有如何正确使用每一选项的示例。示例要跟在 "if" 之后。例如:

 if [ -z "$myvar" ]
then
echo "myvar is not defined"
fi

运算符 描述 示例
文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于[ 3 -eq $mynum ]
num1-ne num2 不等于[ 3 -ne $mynum ]
num1-lt num2 小于[ 3 -lt $mynum ]
num1-le num2 小于或等于[ 3 -le $mynum ]
num1-gt num2 大于[ 3 -gt $mynum ]
num1-ge num2 大于或等于[ 3 -ge $mynum ]

有时,有几种不同方法来进行特定比较。例如,以下两个代码段的功能相同:

 if [ "$myvar" -eq 3 ]
then
echo "myvar equals 3"
fi


if [ "$myvar" = "3" ]
then
echo "myvar equals 3"
fi

上面两个比较执行相同的功能,但是第一个使用算术比较运算符,而第二个使用字符串比较运算符。





回页首


字符串比较说明

大多数时候,虽然可以不使用括起字符串和字符串变量的双引号,但这并不是好主意。为什么呢?因为如果环境变量中恰巧有一个空格或制表键,bash 将无法分辨,从而无法正常工作。这里有一个错误的比较示例:

 if [ $myvar = "foo bar oni" ]
then
echo "yes"
fi

在上例中,如果 myvar 等于 "foo",则代码将按预想工作,不进行打印。但是,如果 myvar 等于 "foo bar oni",则代码将因以下错误失败:

 [: too many arguments

在这种情况下,"$myvar"(等于 "foo bar oni")中的空格迷惑了 bash。bash 扩展 "$myvar" 之后,代码如下:

 [ foo bar oni = "foo bar oni" ]

因为环境变量没放在双引号中,所以 bash 认为方括号中的自变量过多。可以用双引号将字符串自变量括起来消除该问题。请记住,如果养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。"foo bar oni" 比较 应该写成:

 if [ "$myvar" = "foo bar oni" ]
then
echo "yes"
fi

更多引用细节

如果要扩展环境变量,则必须将它们用 双引号、而不是单引号括起。单引号 禁用 变量(和历史)扩展。

以上代码将按预想工作,而不会有任何令人不快的意外出现。





回页首


循环结构:"for"

好了,已经讲了条件语句,下面该探索 bash 循环结构了。我们将从标准的 "for" 循环开始。这里有一个简单的例子:

 
#!/usr/bin/env bash

for x in one two three four
do
echo number $x
done


输出:

number one
number two
number three
number four

发生了什么?"for" 循环中的 "for x" 部分定义了一个名为 "$x" 的新环境变量(也称为循环控制变量),它的值被依次设置为 "one"、"two"、"three" 和 "four"。每一次赋值之后,执行一次循环体("do" 和 "done" 之间的代码)。在循环体内,象其它环境变量一样,使用标准的变量扩展语法来引用循环控制变量 "$x"。还要注意,"for" 循环总是接收 "in" 语句之后的某种类型的字列表。在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符。看看下面的例子,该例演示如何使用标准 shell 通配符:

 #!/usr/bin/env bash

for myfile in /etc/r*
do
if [ -d "$myfile" ]
then
echo "$myfile (dir)"
else
echo "$myfile"
fi
done


输出:

/etc/rc.d (dir)
/etc/resolv.conf
/etc/resolv.conf~
/etc/rpc

以上代码列出在 /etc 中每个以 "r" 开头的文件。要做到这点,bash 在执行循环之前首先取得通配符 /etc/r*,然后扩展它,用字符串 /etc/rc.d /etc/resolv.conf /etc/resolv.conf~ /etc/rpc 替换。一旦进入循环,根据 myfile 是否为目录,"-d" 条件运算符用来执行两个不同操作。如果是目录,则将 "(dir)" 附加到输出行。

还可以在字列表中使用多个通配符、甚至是环境变量:

 
for x in /etc/r--? /var/lo* /home/drobbins/mystuff/* /tmp/${MYPATH}/*
do
cp $x /mnt/mydir
done

Bash 将在所有正确位置上执行通配符和环境变量扩展,并可能创建一个非常长的字列表。

虽然所有通配符扩展示例使用了 绝对路径,但也可以使用相对路径,如下所示:

 
for x in ../* mystuff/*
do
echo $x is a silly file
done

在上例中,bash 相对于当前工作目录执行通配符扩展,就象在命令行中使用相对路径一样。研究一下通配符扩展。您将注意到,如果在通配符中使用绝对路径,bash 将通配符扩展成一个绝对路径列表。否则,bash 将在后面的字列表中使用相对路径。如果只引用当前工作目录中的文件(例如,如果输入 "for x in *"),则产生的文件列表将没有路径信息的前缀。请记住,可以使用 "basename" 可执行程序来除去前面的路径信息,如下所示:

 
for x in /var/log/*
do
echo `basename $x` is a file living in /var/log
done

当然,在脚本的命令行自变量上执行循环通常很方便。这里有一个如何使用本文开始提到的 "$@" 变量的例子:

 
#!/usr/bin/env bash

for thing in "$@"
do
echo you typed ${thing}.
done


输出:

$ allargs hello there you silly
you typed hello.
you typed there.
you typed you.
you typed silly.





回页首


Shell 算术

在学习另一类型的循环结构之前,最好先熟悉如何执行 shell 算术。是的,确实如此:可以使用 shell 结构来执行简单的整数运算。只需将特定的算术表达式用 "$((" 和 "))" 括起,bash 就可以计算表达式。这里有一些例子:

 $ echo $(( 100 / 3 ))
33
$ myvar="56"
$ echo $(( $myvar + 12 ))
68
$ echo $(( $myvar - $myvar ))
0 $ myvar=$(( $myvar + 1 ))
$ echo $myvar
57





回页首


更多的循环结构:"while" 和 "until"

只要特定条件为真,"while" 语句就会执行,其格式如下:

 while [ condition ]
do
statements
done

通常使用 "While" 语句来循环一定次数,比如,下例将循环 10 次:

 myvar=0
while [ $myvar -ne 10 ]
do
echo $myvar
myvar=$(( $myvar + 1 ))
done

可以看到,上例使用了算术表达式来使条件最终为假,并导致循环终止。

"Until" 语句提供了与 "while" 语句相反的功能:只要特定条件为 ,它们就重复。下面是一个与前面的 "while" 循环具有同等功能的 "until" 循环:

 myvar=0
until [ $myvar -eq 10 ]
do
echo $myvar
myvar=$(( $myvar + 1 ))
done





回页首


Case 语句

Case 语句是另一种便利的条件结构。这里有一个示例片段:

 
case "${x##*.}" in
gz)
gzunpack ${SROOT}/${x}
;;
bz2)
bz2unpack ${SROOT}/${x}
;;
*)
echo "Archive format not recognized."
exit
;;
esac

在上例中,bash 首先扩展 "${x##*.}"。在代码中,"$x" 是文件的名称,"${x##.*}" 除去文件中最后句点后文本之外的所有文本。然后,bash 将产生的字符串与 ")" 左边列出的值做比较。在本例中,"${x##.*}" 先与 "gz" 比较,然后是 "bz2",最后是 "*"。如果 "${x##.*}" 与这些字符串或模式中的任何一个匹配,则执行紧接 ")" 之后的行,直到 ";;" 为止,然后 bash 继续执行结束符 "esac" 之后的行。如果不匹配任何模式或字符串,则不执行任何代码行,在这个特殊的代码片段中,至少要执行一个代码块,因为任何不与 "gz" 或 "bz2" 匹配的字符串都将与 "*" 模式匹配。





回页首


函数与名称空间

在 bash 中,甚至可以定义与其它过程语言(如 Pascal 和 C)类似的函数。在 bash 中,函数甚至可以使用与脚本接收命令行自变量类似的方式来接收自变量。让我们看一下样本函数定义,然后再从那里继续:

 
tarview() {
echo -n "Displaying contents of $1 "
if [ ${1##*.} = tar ]
then
echo "(uncompressed tar)"
tar tvf $1
elif [ ${1##*.} = gz ]
then
echo "(gzip-compressed tar)"
tar tzvf $1
elif [ ${1##*.} = bz2 ]
then
echo "(bzip2-compressed tar)"
cat $1 | bzip2 -d | tar tvf -
fi
}

另一种情况

可以使用 "case" 语句来编写上面的代码。您知道如何编写吗?

我们在上面定义了一个名为 "tarview" 的函数,它接收一个自变量,即某种类型的 tar 文件。在执行该函数时,它确定自变量是哪种 tar 文件类型(未压缩的、gzip 压缩的或 bzip2 压缩的),打印一行信息性消息,然后显示 tar 文件的内容。应该如下调用上面的函数(在输入、粘贴或找到该函数后,从脚本或命令行调用它):

 $ tarview shorten.tar.gz
Displaying contents of shorten.tar.gz (gzip-compressed tar)
drwxr-xr-x ajr/abbot 0 1999-02-27 16:17 shorten-2.3a/
-rw-r--r-- ajr/abbot 1143 1997-09-04 04:06 shorten-2.3a/Makefile
-rw-r--r-- ajr/abbot 1199 1996-02-04 12:24 shorten-2.3a/INSTALL
-rw-r--r-- ajr/abbot 839 1996-05-29 00:19 shorten-2.3a/LICENSE
....

交互地使用它们

别忘了,可以将函数(如上面的函数)放在 ~/.bashrc 或 ~/.bash_profile 中,以便在 bash 中随时使用它们。

如您所见,可以使用与引用命令行自变量同样的机制来在函数定义内部引用自变量。另外,将把 "$#" 宏扩展成包含自变量的数目。唯一可能不完全相同的是变量 "$0",它将扩展成字符串 "bash"(如果从 shell 交互运行函数)或调用函数的脚本名称。





回页首


名称空间

经常需要在函数中创建环境变量。虽然有可能,但是还有一个技术细节应该了解。在大多数编译语言(如 C)中,当在函数内部创建变量时,变量被放置在单独的局部名称空间中。因此,如果在 C 中定义一个名为 myfunction 的函数,并在该函数中定义一个名为 "x" 的自变量,则任何名为 "x" 的全局变量(函数之外的变量)将不受它的印象,从而消除了负作用。

在 C 中是这样,但在 bash 中却不是。在 bash 中,每当在函数内部创建环境变量,就将其添加到 全局名称空间。这意味着,该变量将重写函数之外的全局变量,并在函数退出之后继续存在:

 #!/usr/bin/env bash

myvar="hello"

myfunc() {

myvar="one two three"
for x in $myvar
do
echo $x
done
}

myfunc

echo $myvar $x

运行此脚本时,它将输出 "one two three three",这显示了在函数中定义的 "$myvar" 如何影响全局变量 "$myvar",以及循环控制变量 "$x" 如何在函数退出之后继续存在(如果 "$x" 全局变量存在,也将受到影响)。

在这个简单的例子中,很容易找到该错误,并通过使用其它变量名来改正错误。但这不是正确的方法,解决此问题的最好方法是通过使用 "local" 命令,在一开始就预防影响全局变量的可能性。当使用 "local" 在函数内部创建变量时,将把它们放在 局部名称空间中,并且不会影响任何全局变量。这里演示了如何实现上述代码,以便不重写全局变量:

 
#!/usr/bin/env bash

myvar="hello"

myfunc() {
local x
local myvar="one two three"
for x in $myvar
do
echo $x
done
}

myfunc

echo $myvar $x

此函数将输出 "hello" -- 不重写全局变量 "$myvar","$x" 在 myfunc 之外不继续存在。在函数的第一行,我们创建了以后要使用的局部变量 x,而在第二个例子 (local myvar="one two three"") 中,我们创建了局部变量 myvar, 同时 为其赋值。在将循环控制变量定义为局部变量时,使用第一种形式很方便,因为不允许说:"for local x in $myvar"。此函数不影响任何全局变量,鼓励您用这种方式设计所有的函数。只有在明确希望要修改全局变量时,才 应该使用 "local"。





回页首


结束语

我们已经学习了最基本的 bash 功能,现在要看一下如何基于 bash 开发整个应用程序。下一部分正要讲到。再见!



参考资料



--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/