冰河

172010

   1、嚣张做事,老实做人

    事情越高调越好,高调到你让世界上所有的人都知道你在做一件事情,你就成功了。做人越低调越

好,因为低调也是一种最牛的炫耀。
  
  2、让坚持成为一种习惯,让放弃成为一种奢侈
 
  方法在坚持面前是无力的。比如学英语,用疯狂英语的方法,只要坚持到底,会把英语学好;用逆

向英语的方法,只要坚持到底,也会把英语学好;用新东方的方法,只要坚持到底,也能把英语学好。

只要能坚持到底,方法可以忽略不计。
  
  3、学会结交优质人脉,向周围最优秀的3个人学习
 
  俞敏洪创业初期,从国外请回了王强、徐小平、包凡一等优秀的同学和老师。他们都比老俞优秀,

正是他们的优秀逼着老俞往前走。用师者王,用友者霸。
  
  4、爱情会让你人生完整
 
  爱情最有意思的就是角色扮演,一个女生在男朋友面前可以一会儿是妹妹,一会儿是姐姐,一会儿

是阿姨,一会儿又做回自己。像坐过山车,在短时间内起伏,刺激而快乐。
  
  5、大学生要学会“快速学习”
 
  毕业后,踏入纷繁复杂的社会,你在大学里学到的知识会在瞬间灰飞烟灭。在都市丛林中,第一要

学会适应,第二要学会快速学习。记住是快速学习,Speed defines the winner ! 你快速学习的能力决

定了你的工作价值,你的工作价值决定了你的生存质量。
  
  6、聆听大师的智慧
 
  很多大学生有时间关注凤姐的闹剧,却没时间聆听世界大师的演讲;很多大学生有精力关注犀利哥

的外表,却没时间阅读世界大师的传记;很多大学生有兴趣关注兽兽的视频,却没时间与世界大师进行

心灵的对话。

    每个行业都有大师,关注他们,模仿他们,学习他们,会让你成长更快。也会让你产生震撼一生的

快感。这种快感是一种充实,绝非一种寂寞。
  
  7、健康是一生成就的保证
 
  我喜欢我的偶像毛泽东说过的一句话:文明其精神,野蛮其体魄。他每天洗冷水澡;他经常在风雨

交加的夜晚,跑到山顶去沐浴;他还在古稀之年,几度横渡长江!我认为,健康体魄产生健康的气魄。
  
  8、让暴风雨来的更猛烈些吧
 
  不管是快乐还是痛苦,都会结束,都不会永恒存在。我遇到挫折时,老爸送我一句话,我转送给大

学生们:“一切都要以大丈夫的气象去面对”。
  
  9、学会将一件事情做到极致
 
  将小小的汉堡做到世界各国的人都爱吃,就是McDonald's和KFC;将一瓶汽水卖到世界各地去,就是

Coca-Cola和Pepsi;将英语培训班做到美国纽约证券交易所上市企业,就是新东方;将乞丐做到极致,

天下所有的乞丐都崇拜你,就是洪七公。
  
  10、珍惜时间
 
  成功,永远都是时间和行动之间的博弈。一个人最大的资本,不是青春,因为青春转瞬即逝。一个

人最大的资本是:在最短的时间里做了最多有关梦想的事情。


原文链接:http://blog.sina.com.cn/s/blog_4711b54e0100icoy.html

142010

1、 基本概念(这是理解后面的知识的前提,请务必理解)

a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;

b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;

c、 用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;

d、 用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;

e、 0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;

f、 在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;

g、 管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;

h、 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;

i、 bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(“和$( ))-重定向-通配符展开-确定路径-执行命令;

j、 ( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。

k、 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。

2、 基本IO

cmd > file 把 stdout 重定向到 file 文件中;

cmd >> file 把 stdout 重定向到 file 文件中(追加);

cmd 1> fiel 把 stdout 重定向到 file 文件中;

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;

cmd 2> file 把 stderr 重定向到 file 文件中;

cmd 2>> file 把 stderr 重定向到 file 文件中(追加);

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);

cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;

cat <>file 以读写的方式打开 file;

cmd < file cmd 命令以 file 文件作为 stdin;

cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。

3、 进阶IO

>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;

<&n 标准输入复制自文件描述符 n;

<&- 关闭标准输入(键盘);

>&- 关闭标准输出;

n<&- 表示将 n 号输入关闭;

n>&- 表示将 n 号输出关闭;

上述所有形式都可以前导一个数字,此时建立的文件描述符由这个数字指定而不是缺省的 0 或 1。如:

… 2>file 运行一个命令并把错误输出(文件描述符 2)定向到 file。

… 2>&1 运行一个命令并把它的标准输出和输出合并。(严格的说是通过复制文件描述符 1 来建立文件描述符 2 ,但效果通常是合并了两个流。)

我 们对 2>&1详细说明一下 :2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,也就是说把 FD2 的 “数据输出通道” 改为 FD1 的 “数据输出通道”。如果仅仅这样,这个改变好像没有什么作用,因为 FD2 的默认输出和 FD1的默认输出本来都是 monitor,一样的! 但是,当 FD1 是其他文件,甚至是其他 FD 时,这个就具有特殊的用途了。请大家务必理解这一点。

exec 0exec 1>outfilename # 打开文件outfilename作为stdout。

exec 2>errfilename # 打开文件 errfilename作为 stderr。

exec 0<&- # 关闭 FD0。

exec 1>&- # 关闭 FD1。

exec 5>&- # 关闭 FD5。

问: 如果关闭了 FD0、FD1、FD2,其后果是什么? 恢复 FD0、FD1、FD2与 关闭FD0、FD1、FD2 有什么区别?代码分别是什么? 打开了FD3~FD9,我们用完之后,你觉得是将他们关闭还是恢复?

下面是提示(例子来源于CU一帖子,忘记出处,来日再补上):


exec 6>&2 2>ver
command >>dev/null &
exec 2>&6 # 恢复 FD2

4、 简单举例

a、stdout和stderr都通过管道送给egrep了:


(ls you no 2>&1;ls yes 2>&1) 2>&1|egrep * >file
(ls you no 2>&1;ls yes 2>&1)|egrep * >file
(ls you no;ls yes) 2>&1|egrep * >file

这个例子要注意的就是:

理 解 命令执行顺序 和 管道“|”:在命令执行前,先要进行重定向的处理,并将把 nested sub-shell 的stdout 接到 egrep 命令的 stdin。 nested sub-shell ,在 ( ) 中的两个命令加上(),可以看作一个命令。其 FD1 已经连接到“|”往egrep送了,当遇到 2>&1时,也就是FD2=FD1,即FD2同FD1一样,往管道 “|”那边送。

b、 没有任何东西通过管道送给egrep,全部送往monitor。 (ls you no 2>&1;ls yes 2>&1) >&2|egrep * >file。虽然在()里面将 FD2转往FD1,但在()外,遇到 >&2 ,结果所有的都送到monitor。 请理解:


(ls you no 2>&1) 1>&2|egrep * >file ## 送到 monitor
ls you no 2>&1 1>&2|egrep * >file ## 送给 管道 “|”
ls you no 1>&2 2>&1|egrep * >file ## 送到 monitor

 

5、 中阶例子

条件: stderr通过管道送给egrep,正确消息仍然送给monitor(不变)


exec 4>&1;(ls you no 2>&1 1>&4 4>&-;ls yes 2>&1 1>
&4 4>&-)|egrep * >file;exec 4>&-
或者
exec 4>&1;(ls you no;ls yes) 2>&1 1>
&4 4>&-|egrep * >file;exec 4>&-

如果加两个条件:

(1)要求cmd1和cmd2并行运行;

(2)将cmd1的返回值赋给变量 ss。

则为:


exec 3>&1;exec 4>&1
ss=$(((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep * >file) 4>&1)
exec 3>&-;exec 4>&-

说明:

exec 3>&1;4>&1 建立FD3,是用来将下面ls那条语句(子shell)中的FD1 恢复到正常FD1,即输出到monitor,你可以把FD3看作最初始的FD1的硬盘备份(即输出到monitor);建立FD4,到时用作保存ls的返 回值(echo $?),你可以将FD4看作你考试时用于存放计算“echo $?”的草稿纸;

(ls you no 2>&1 1>&3 3>&-;echo $? >&4) 大家还记得前面说的子shell和管道吧。这条命令首先会继承FD0、FD1、FD2、FD3、FD4,它位于管道前,所以在运行命令前会先把子 shell自己的FD1和管道“|”相连。但是我们的条件是stderr通过管道送往egrep,stdout仍然输出到monitor。 于是通过2>&1,先把 子shell的FD1 的管道“送给”FD2,于是子shell中的stderr送往管道“|”;再通过 1>&3,把以前的“硬盘备份”恢复给子shell的FD1,于是子shell中的FD1变成送到monitor了。再通过3> &- ,将3关闭;接着运行echo $? ,本来其输出值应该送往管道的,通过 >&4 ,将 输出 送往 “草稿纸”FD4,留以备用。

((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep * >file) 于是,stderr 通过管道送给 egrep ,stdout 送给monitor,但是,还有 FD4,它送到哪去了? $(((ls you no 2>&1 1>&3 3>&-;echo $? >&4)|egrep * >file) 4>&1)最后的 4>&1 ,就是把FD4 重定向到 FD1。但由于其输出在 $( )中,其值就赋给变量ss了。最后一行关闭 FD3、FD4。

6、 高阶例子

命令 cmd1, cmd2, cmd3, cmd4. 如何利用单向管道完成下列功能:

1. 所有命令并行执行。

2. cmd1 和 cmd2 不需要 stdin。

3. cmd1 和 cmd2 的 stdout 定向到 cmd3 的 stdin。

4. cmd1 和 cmd2 的 stderr 定向到 cmd4 的 stdin。

5. cmd3 的 stdout 定向到文件 a, stderr 定向到屏幕。

6. cmd4 的 stdout 定向到文件 b, stderr 定向到屏幕。

7. cmd1 的返回码赋给变量 s。

8. 不能利用临时文件。

解决方法:


exec 3>&1; exec 4>&1
s=$(((((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>
&1 | cmd3 >a 2>&3 ) 2>&1 | cmd4 >b ) 4>&1)
exec 3>&-; exec 4>&-

这 个我一步步解释(好复杂,自己感觉看明白了,过一会再看,大脑仍然有几分钟空白~~~,没想到我也能看明白。exec 3>&1; exec 4>&1 前面的例子都有说明了,就是建立FD3 ,给cmd1恢复其FD1用和给cmd3 恢复其FD2用,建立FD4,保存“echo $?”输出值的“草稿纸”。

第 一对括号:(cmd1 1>&3 ; echo $? >&4 ) 和其后(第一个)管道。在第一个括号(子shell)中,其FD1已经连到 管道中了,所以用 FD3 将 FD1恢复正常,不让他往管道跑;这里的cmd1没有stdin,接着将 cmd1 运行的返回码 保存到 FD4 中。

第 二对括号:((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 和其后(第二个)管道。前面的 FD1 已经不送给 cmd2了,FD2 默认也不送过来,所以cmd2 也没有stdin ,所以在第二对括号里面:cmd1和cmd2 的stdout、stderr 为默认输出,一直遇到 “3>&1”为止。请注意:“3>&1”,先将第二对括号看出一个命令,他们遇到 第二个管道时,其FD1 连到 管道 “|”,由于“3>&1”的作用,子shell的FD1 送给FD3 使用,所以所有FD3 的输出都 “流往”cmd3,又由于继承关系(继承第一行的命令),FD3实际上就是cmd1和cmd2的stdout,于是“ cmd1 和 cmd2 的 stdout 定向到 cmd3 的 stdin”

第 三对括号:(((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 | cmd3 >a 2>&3 ) 2>&1 和其后的第三个管道。cmd1 和 cmd2 的 stdout 已经定向到 cmd3 的 stdin,处理之后,cmd3 >a 意味着将其 stdout 送给 a 文件。而2>&3的意思是:恢复cmd3的错误输出为FD3,即送往 monitor。于是“cmd3 的 stdout 定向到文件 a, stderr 定向到屏幕”。如果没有“2>&3”,那么cmd3的错误输出就会干扰cmd1和cmd2的错误输出,所以它是必须的!请注意第三对括号后 的 “2>&1”| ,其子shell的FD1 本来连接着管道“|”,但子shell FD1 慷慨大方,送给了 FD2,于是FD2 连接着管道。还记得前面的 cmd1 和 cmd2 吗?他们的stderr一直没动了。于是在这里,通过管道送给了 第四个命令cmd4 了。即“cmd1 和 cmd2 的 stderr 定向到 cmd4 的 stdin”。后面就比较简单了。cmd4 >b 表示“cmd4 的 stdout 定向到文件 b, stderr 定向到屏幕(默认)”

第 四对括号:((((cmd1 1>&3 ; echo $? >&4 )| cmd2 ) 3>&1 | cmd3 >a 2>&3 ) 2>&1 | cmd4 >b ) 与其后的 4>&1。四对括号里面的 FD1、FD2都处理完了。但是还记得前面“echo $? >&4”那块“草稿纸”吗?“4>&1”的作用就是“将草稿纸上的内容送给monitor”,但是由于最外面还有 $() 将其“包着”。于是其值赋给变量“s”。

学好VC++的十大良好习惯

Posted by 冰河 at 21:02 No Responses » 3,692 Views
142010

每到年底各大媒体就争先恐后热火朝天地搞总结,什么十大人物,十大品牌,十大美女,十大帅哥等等五花八门乱七八糟的让人充满好奇充满怀疑,这事确实让人有点郁闷,就如同男足国家队的国产教练如沈墙扶们每一次踢球失败后都要说这么一句:我们回去后要好好总结,下次会打得更好! 这话听了几十年了,耳朵都生虫了,但还是无法看到中国猪球队有象人样的表现.因此,总结在某一程度上来说只不过是一种形式罢了,总结不代表就能改过原有的不足,也不代表就能进步了,甚至有点俗不可耐,尽管如此,阿蒙亦明知故俗,前人说过了入乡了就要随俗,因此你生活在这种环境里,你无法对这些无聊无趣的东东置之不理,除非你是天才,天才往往在非天才的人看来是很怪异的,处处与现实格格不入,可阿蒙不是天才,所以还得赶快总结,要不就离题,又被大家骂了,:)

(一)充分利用MSDN,因为我个人觉得它胜过任何一本编程参考书; MSDN是 Microsoft 当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据,让您随时拥有与全世界菁英同步的技术,掌握最丰富的程序开发资源。我经常收到很多朋友的EMAILS,他们所提的问题往往都非常的简单,MSDN完全可以解答这些问题,但他们好象不太喜欢用,这是让我郁闷的地方,是因为英文不好呢,还是没有学会充分利用各种资源来解决问题的方法呢?

(二)提高英文水平,养成多上英文网站多看英文资料多买老外原版英文书; 有关程序员与英文水平的讨论已太多太多, 我个人认为要成为程序员,高中的英语水平够了,甚至不懂英语的一些人,也同样可以成为较好的程序员,因为开发工具的发展将是越来越傻瓜,但如果你是仅仅满足于能运用某种工具开发某个软件模块,那是没话说了.真正热衷技术肯干钻研乐于接受挑战的程序员是不满足于现状的,他们总感觉有太多的未知,于是总在不停地学习,如今信息技术发展得太快,而大部分的技术最先出现的时候都是英文版本的,要几个月或者几年以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典,"万事开头难",必须有持之以恒的精神,不久你就会发现计算机英语其实很容易的。何况很多 英文技术站点确实比国内做得好啊!比如http://www.codeguru.com, http://www.codeproject.com, http://www.programmersheaven.com 等等.

(三)加强自我管理,善于作自我总结,分析自已的优点及缺点。 中国境内百分之八十以上的领导人在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的?

(四)养成良好的文档习惯 程序员大多都不喜欢写文档,我以前也是特讨厌,在我的思想里,所谓的文档就是一些废话,一句话硬是用十句话来代替的无聊透顶,就如同部分中文系男生的爱情表白,明明就是"我爱你"三个字,他硬是把月亮啊太阳啊大海啊高山啊石头啊天使啊乱七八糟的都拉上关系了,尽管听起来浪漫,但在我认为不实用,:), 甚至太肉麻了,一个男子汉干嘛这么罗里罗嗦的……良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱甚至失控.那么如何写文档呢?其实我认为没有统一的标准,虽然国家及一些NB的人总结了很多的模板,但每个人的习惯不同,如果你不加以修改或创新,就套用某个标准,我相信写起来会很吃力及说不清的难受,因此我觉得只要能将你的设计思想及实现算法或步骤描述清楚就是好的文档,我强烈建议广大程序员朋友们在写文档时要善于用图表来说明你的思想,我们不是作家,也可能作文都经常性地不及格,写出五官端正的文章对我们来说可能不容易啊!好好地利用 VISIO,ROSE或别的工具来表达你的思想吧!

(五)代码风格要规范,严谨,效率要高。 这个不用说了,所以一定要记住了!不过,这一点有时可能与人的性格有关,如果你是经常丢三落四经常胡子长长经常钮扣扣错经常吃个快餐要一个小时的人,那你在CODING的时候可千万要注意了,CODING是CODING,生活是生活,不要写出的程序也是那样就不好了!

(六)掌握好跟踪调试技巧. 跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来.强烈建议你去看一下老美Everett N.McKay及Mike Wooding写的书<>,你一不定受益匪浅.

(七)养成自我测试的习惯 测试工作应由测试工程师来做,但在你写完一个模块或一个软件时,还是要自已先测试一下,保证不要出现一些低级的错误,何况这些错误让测试工程师看到了,狂扁你一顿,你很没FACES的.

(八)善于交流善于沟通,特别是经常与一些高手交流一下学习的心得体会; 有人说,程序员的性格大多内向不喜欢说话,其实是有些误会了,不是不喜欢而是话不投机,我的脑袋一天到晚都在不停地转,函数,数据,算法啊充满了我的世界, 我那还有时间与你谈一些无聊的话题,话要找对人了,才容易谈下去,书上说过"听君一席话,胜读十年书",你要找的就是这种豁然开朗!现在技术的论坛越来越来,这将成为程序员交流一个重要的地方,也有人说:"读君一长贴,胜读十年书",:)

(九)阶段性地做一下专题总结 知识要温故而知新,因此我建议程序员要养成阶段性地做专题总结的习惯,比如你这个月学习或在做与多线程有关的模块或项目,那么在你做完后,你就可以好好地总结一下所有与多线程相关的技术,包括理论知识,实践方法以及各种技巧及优秀文章等等,这对你各种能力的提高将有很大的帮助,你试过了吗,如果没有,那就快点行动吧!

(十)要有持之以恒的精神 这是废话,因为我揍不齐十大,所以将它也算上,中国自古以来喜欢号召大众学习某种精神,比如马克思的,列宁的,***的,邓小平的,雷峰的等,这些精神使社会更安定人民生活更美好,那么程序员要有什么样的精神呢?我不是我说了就算了的,我只是想说明要学好任何一门技术,最好要有持之以恒精益求精的精神,特别是学一些比较抽象比较难的技术,比如VC++,我想它应比别的开发语言都要难学些,或许你已经开始了两年了,但感觉还是不爽仿佛也没掌握什么,这个时候你除了思考一下你的学习方法以外,还必须坚定你的目标及信念!

132010

Figures

To insert a figure in a LaTeX document, you write lines like this:

\begin{figure}
    \centering
    \includegraphics[width=3.0in]{imagefile1}
    \caption{Caption for figure}
    \label{fig:sample_figure}
\end{figure}

The whole block is enclosed between \begin{figure} and \end{figure}. The command \includegraphics does the actual insertion of the image. Here the file name of the inserted image is imagefile1. If you are using LaTeX to process your document, .eps extension is appended automatically to the file name. If you are using pdfLaTeX, it appends .pdf, .png, or .jpg when searching for the image file.

By default, figures are looked for in the current directory (the one in which your .tex file is located). If you want to specify a path for the \includegraphics command, remember to use forward slashes (/) as directory separators, not backslashes. For example, if your figures are in a sub-directory named “figures” inside the current directory, you write something like this: \includegraphics[width=3.0in]{figures/imagefile1}.

You can also specify the width of the image. The height of the figure is scaled proportionally so the image doesn’t get distorted. Specify the width as a parameter (enclosed in brackets [ ]) to the \includegraphics command. Acceptable measurement units are for example in, mm, and cm. You can make the figure’s width equal to the width of paragraph text lines by using [width=\linewidth], or, for example, three quarters of the text width by using [width=0.75\linewidth].

Here we have used a \centering command to center the figure in the column. The \caption command gives a caption for the figure. We have also added a \label, which is useful when you want to refer to the figure in your text (see References).

Remember to always keep the commands in this order: First \includegraphics, then \caption, and finally \label. This way you get figure references right and captions underneath figures. Additionally, keep the \label and \caption commands always inside the \begin{figure}\end{figure} structure.

You can specify the locations where the figure (or table) is allowed to be placed by using placement parameters. For example, to put a figure at the bottom of page, you type \begin{figure}[b]. To allow a figure to be placed only at the top of page, write \begin{figure}[t]. To allow both locations, use [tb]. Other options are described, for instance, in Chapter 9 of Online tutorials on LaTeX.

If you don’t yet know how to create EPS images for LaTeX documents, read the Creating figures tutorial.

Subfigures

If you want to divide a figure into many smaller parts, use the \subfigure command. First, you have to add this in the beginning of your .tex file:

\usepackage{subfigure}

Let’s add three small figures in place of one normal figure:

\begin{figure}
    \centering
    \subfigure[First caption]
    {
        \includegraphics[width=1.0in]{imagefile2}
        \label{fig:first_sub}
    }
    \\
    \subfigure[Second caption]
    {
        \includegraphics[width=1.0in]{imagefile2}
        \label{fig:second_sub}
    }
    \subfigure[Third caption]
    {
        \includegraphics[width=1.0in]{imagefile2}
        \label{fig:third_sub}
    }
    \caption{Common figure caption.}
    \label{fig:sample_subfigures}
\end{figure}

The result is:

Write as many \subfigure commands as you need. \subfigure takes an argument (enclosed in brackets [ ]) which specifies the caption for that subfigure. You don’t need to write the labels (a), (b), (c), etc., because LaTeX adds them automatically. Then put the \includegraphics and \label commands between { and } of the subfigure. Here we use an image file named imagefile2.eps. We have also specified a width for each image using the optional width parameter of the \includegraphics command.

Note the \\ after the first subfigure. This command creates a line break. In this case, it separates the three subfigures into two rows. Without the \\ all the three subfigures may end up in just one row. You can try the \\ also in other places and see its effect.

Finally, we put one more \caption and \label. These are for the whole three-part figure element.

Tables

A table in LaTeX may look a bit scary bunch of code at first. But you can copy and paste the basic lines that are needed. Then inserting your own text into the table is a piece of cake. Here we go:

\begin{table}
\renewcommand{\arraystretch}{1.3}
\caption{Simple table}
\label{tab:example}
\centering
\begin{tabular}{c|c}
    \hline
    Heading One  &  Heading Two\\
    \hline
    \hline

    Three   &   Four\\
    \hline

    Five    &   Six\\
    \hline
\end{tabular}
\end{table}

The result will look like this (using IEEE’s style):

Hence it’s a table with two columns and three rows. Here is how you organize the text in a table: In each table cell write the the text that you want to appear in the cell. Then type & when you want to jump to the next column. A new table row begins when you type \\. You can insert horizontal lines using the command \hline.

Here we have specified the column format like this: \begin{tabular}{c|c}. Every letter c, l, or r denotes a column and | represents a vertical line between columns. c creates a column with centered text, l is for left aligned text, and r for right aligned. Thus, c|c creates two columns with centered text and a vertical line between them.

To get double lines between columns, use || instead of single |. To get no line between columns, omit the |. More columns can be added by using more c, l, or r letters. For example, this produces four columns with no vertical lines: lccc. Now the leftmost column is left aligned and the others are centered.

You may wonder about the strange line \renewcommand{\arraystretch}{1.3}. This is needed for adjusting the white space around text in the table cells. The value 1.3 produces quite a pleasing look.

If you want to have the caption underneath the table, move the \caption and \label lines after the \end{tabular} line. Remember that the \caption command must be before \label.

Double column figures and tables

If you are writing a two column document and you would like to insert a wide figure or table that spans the whole page width, use the “starred” versions of the figure and table constructs. Like this:

\begin{figure*}
    \centering
    \includegraphics[width=\textwidth]{imagefile1}
    \caption{This is a wide figure}
    \label{fig:large}
\end{figure*}

You can use also subfigures inside figure*. An adequate width specifier for a double column figure is width=\textwidth. This makes the figure wide enough to span the whole body width (all columns) of the page.

A double column table is created in a similar way by using \begin{table*} and \end{table*}. Write the contents of the table in the usual way.

Note that double column figures and tables have some limitations. They can’t be placed at the bottom of pages. Additionally, they will not appear on the same page where they are defined. So you have to define them prior to the page on which they should appear.

Equations

Short mathematical expressions can be inserted within paragraph text by putting the math between $ signs. For example:

... angle frequency $\omega = 2\pi f$ ...

This is called an inline equation. The result is: .

In equations, the normal text symbols are written as such, for example 2 and f. Greek symbols are named for example \alpha, \beta and so on. You don’t need to remember these because in WinEdt and TeXnicCenter you can use symbol toolbars, which have buttons for Greek letters and other math symbols.

Numbered equations are separate from paragraph text and LaTeX numbers them automatically. The contents are written using the same ideas as inline equations but now we write \begin{equation} and \end{equation} instead of $ signs. For example:

\begin{equation}
    \label{eq:kinetic_energy}
    E_{k} = \frac{1}{2}mv^{2}
\end{equation}

The result is:

Here we learn some structures which are often used in equations: The \frac command creates a fraction. Write the contents of the numerator and denominator inside the curly braces. Subscripts and superscripts are created using _{} and ^{}. (If the content of the subscript or superscript is a single symbol, you can omit the curly braces like this: E_k and v^2.)

Remember that an empty text line produces a paragraph break. Thus, omit empty lines before and after your equations, unless you really need a paragraph break there. This way you can easily explain the meaning of the variables (“where m is the mass and v is…”) so that the word “where” won’t start a new paragraph and won’t become indented.

You can freely type spaces in equations. LaTeX ignores extra spaces and determines automatically where (and how wide) space is needed (for example, on both sides of the = sign). However, line breaks are not allowed. Spaces are needed also to separate LaTeX commands. For instance, if you want to print , you must type \beta A, not \betaA. The latter one won’t compile because LaTeX is looking for a command named betaA.

Occasionally spaces in equations may need some fine adjustment. For example, consider the following two equations:

Equation (1) has been created by simply typing f_{res} = 500 MHz. It seems to have several problems:

  • The unit “MHz” and the subscript “res” have an incorrect spacing between letters. This is a common problem in variable names, subscripts, and units that consist of several letters. LaTeX understands “res” as a product of variables r, e, and s. Thus it adds a small space between each multiplicand. To fix the problems, write \mathrm{res} and \mathrm{MHz} . The “mathrm” stands for math “roman” (upright) font style.
  • The unit “MHz” and the subscript “res” should be typed with upright font, not italic. The aforementioned \mathrm command fixes this problem. If you, instead, want to use italic font, replace \mathrm with \mathit.
  • In equation (1), there is hardly any space between the number and the unit. LaTeX has thought that you want to multiply 500 times “MHz” and thus it removes all spaces you write here. To force a visible space, use command \,.

Here is the final fixed content of the equation, which produces the result (2) as shown above:

f_{\mathrm{res}} = 500 \, \mathrm{MHz}

If you have problems with a long equation that is wider than the space available on the page, you can split your math on several lines like this: First put \usepackage{amsmath} in the beginning of your LaTeX file. Then use \begin{split}...\end{split}:

\begin{equation}
\label{eq:long_equation}
\begin{split}
    F &= a + b + c + d + e + f + g \\
    &+ h + i + j + k + l + m \\
    &= a + \ldots + m \\
    &= 0
\end{split}
\end{equation}

The result looks like this:

To start a new line in your equation, add \\ to the end of the line. Additionally, put an & before the signs that should be aligned in a straight vertical line. Here we have aligned the = and + symbols.

Like shown above, amsmath can often provide a LaTeX solution to more demanding math problems. See the documentation of amsmath at TeX Catalogue Online or at CTAN.

原文链接:http://www.electronics.oulu.fi/latex/examples/example_3/index.html

LaTex数学宏包汇总集锦

Posted by 冰河 at 22:19 No Responses » 32,225 Views
122010

algorithm2e

它提供一个 Algorithm2e 环境,用于在 LaTeX2e  中排版算法步骤。它将算法步骤定义为浮动体;它提供一组关键词供排版使用,关键词既可修改也可创新。

源文件

Christophe Fiorio

algorithms

它定义了 algorithmic 和 algorithm 两个环境和一组命令,可用于排版算法步骤,对其中的关键词可以采用不同的显示效果。两种环境可分别使用,也可同时使用;其中 algorithm 环境还可以处理图形之类的浮动体。

源文件 示例

Rogério Brito

amsbsy

它定义了排版黑体数学符号的命令 \boldsymbol 和 \pmb。该宏包现已经被更新的宏包 bm 所取代。

源文件

Frank Mittelbach

amscd

它定义了一个 CD 环境,适用于排版较简单的只有单向箭头的矩形交换图表。

源文件

Frank Mittelbach

amscls

它定义了 amsart、amsbook 和 amsproc 三种数学源文件类型,它们包括了美国数学学会所有出版物的样式。它还提供了一个可独立使用的定理宏包 amsthm

源文件

AMS

AMSFonts

美国数学学会根据其印刷和电子出版物以及在线资料库的样式要求,编造的一组用于排版数学出版物的数学符号字体库宏包套件,它包含有:amsfontsamssymbeufrakeucal 四个宏包。

eucal 可修改 LaTeX 的数学字体命令 \mathcal 。当加载该宏包后,使用 \mathcal 命令,调出的是欧拉书写体,而不是通常的计算机现代书写体。它还有一个 mathscr 选项,使其可与数学字体命令 \mathscr 结合使用。

eufrak 设置了哥特字体,这是一种书写或印刷字体,外观非常华丽,多见于中世纪时的神学文献。如果已加载了 amsfonts 宏包,该宏包就是多余的。

源文件

AMS

amsfonts

它定义了大写空心粗体字命令 \mathbb 和欧拉字体命令 \mathfrak 以及数学公式中各种相应的字体,如:粗数学斜体和粗希腊字母下标、求和积分等大符号下标、 欧拉数学字体、斯拉夫字体等。

大写空心粗体字一般用于表示数学和物理学中的向量或集合。

现在常用的数学字体命令及其字体样式见下表所示:

LaTeX技巧251:latex数学宏包汇总集锦

要使用其中蓝色的字体命令就要调用 amsfonts 宏包。

源文件

AMS

AMSLaTeX

美国数学学会主要有三种类型的出版物:论文、学报和书籍或专论,每一种都有详细严格的出版样式要求。

标准 LaTeX 本身就有很强的数学排版能力,但对于非常专业而复杂的数学公式和数学结构,还是需要定义一些新命令和环境来简化源文件的编辑过程。

1982年,美国数学学会根据其刊物出版要求,委托开发了用于排版数学刊物的 TeX 系统:AMSTeX,1987年又将其移植到 LaTeX,成为 AMSLaTeX。现在它已成为 LaTeX-2e 的一个数学宏包套件。

AMSLaTeX 套件包括有:amsbsyamscd、amsgen、amsmath、amsopn、ams-text、amsxtra、amsthm 、upref 和 amscls 等宏包。

AMS

amsmath

它定义了各种显示多行公式的环境和一系列排版数学公式的命令,可用以改进和提高方程式、多行上\下标等数学结构的排版效果。 例如,它提供的一条命令:\cfrac,用来排版连分数,要比标准 LaTeX 中的 \frac 命令输出效果更加美观。

该宏包还有11个选项,可以影响极限、方程和方程序号等数学式的放置,而这些选项的设置要优先于源文件中其他相关选项的设置。

当调用该宏包的同时,另外三个与之相关的宏包:amsbsy、amsopn amstext,也自动被加载了。

源文件

AMS

应用举例 源文件 AMS

amsopn

它提供命令:\DeclareMath0perator{\新函数命令}{新函数名},在导言区用来自定义类似 \sim 和 \lim 等新的算符 或函数;也可以在正文中用它提供的命令:\operatorname{函数名},自定义临时使用的函数。举例说明:

LaTeX技巧251:latex数学宏包汇总集锦 LaTeX技巧251:latex数学宏包汇总集锦

在实际排版中,大都用 amsmath 宏包替代该宏包。

源文件

Michael Downes

amssymb

宏包套件 AMSFonts 中的一个宏包,它定义了 amsfonts 宏包里 msam 和 mabm 字库中全部数学符号的命令。当调用该宏包时,amsfonts 宏包也同时被加载了。

下表为 Latex 和 AMS 所提供的数学符号及其命令,其中蓝色符号命令表示需要调用amssymb 宏包:

希腊字母:
LaTeX技巧251:latex数学宏包汇总集锦
其他字母:
LaTeX技巧251:latex数学宏包汇总集锦
各种普通符号:
LaTeX技巧251:latex数学宏包汇总集锦
二元运算符号:
LaTeX技巧251:latex数学宏包汇总集锦
量关系符号:
LaTeX技巧251:latex数学宏包汇总集锦
箭头关系符号:
LaTeX技巧251:latex数学宏包汇总集锦
其他关系符号:
LaTeX技巧251:latex数学宏包汇总集锦
累积符号:
LaTeX技巧251:latex数学宏包汇总集锦
成对界限符号:
LaTeX技巧251:latex数学宏包汇总集锦
单界限符号:
LaTeX技巧251:latex数学宏包汇总集锦
垂直箭头符号:
LaTeX技巧251:latex数学宏包汇总集锦
声调符号:
LaTeX技巧251:latex数学宏包汇总集锦
函数符号:
LaTeX技巧251:latex数学宏包汇总集锦

源文件

AMS

amstext

它定义命令 \text,可用于在数学公式中插入少量文本,并可调整上下标中文本字体的尺寸。

源文件

Frank Mittelbach

amsthm

它定义了一个 proof 环境,用来排版定理和证明,能自动在最后添加证毕符号。它还提供一个命令:\newtheorem{定理环境名}{标题}[计数器名],可自定义定理类 环境。

源文件

AMS

应用举例 源文件 Michael Downes

bm

bm 的是黑体数学符号的英文缩写,该宏包可使数学公式以粗体的方式来显示。它提供一个 \bm{数学式} 命令,在数学模式中,只要把数学符号或数学式置于大括号中就会由粗体来显示。

源文件

David Carlisle

calc

TeX 中的算数运算通常是由 \advance 和 \multiply 这样的底层命令来完成的,一般只用来开发新宏包,难以为普通用户所使用。

该宏包定义的几条命令增强了 LaTeX 的算术运算能力,而且非常容易理解。

它是标准 LaTeX2e 工具宏包套件之一。

源文件

Kresten Krab Thorup

delarray

编排矩阵、数组或行列式一般都采用下列方法:

LaTeX技巧251:latex数学宏包汇总集锦 LaTeX技巧251:latex数学宏包汇总集锦

左右括号必须辅以 \left 和 \right 命令,其大小才能够自动与内容匹配。如果论文中这类数学式很多,就显得非常麻烦,容易遗漏;另外,为了约束这些数学式的位置,通常要在 array 环境中添加位置选项,如 [t] 或 [b] 等,但这样会造成括号不匹配:

LaTeX技巧251:latex数学宏包汇总集锦 LaTeX技巧251:latex数学宏包汇总集锦

采用 delarray 宏包就可以解决上述问题:

LaTeX技巧251:latex数学宏包汇总集锦 LaTeX技巧251:latex数学宏包汇总集锦

源文件

David Carlisle

easybmat

它提供了一个 BMAT 环境,可编排列宽相等、或行高相等、或列宽相等且行高相等的块状矩阵,并可在矩阵的行列之间加上各种式样的界线。BMAT 环境的一个主要特点就是可以嵌套,最多可达8层;BMAT 最多可处理30行30列。

它可能会与 booktabs,array 等表格宏包冲突。

Enrico Bertolazzi

eqnarray

它将标准 LaTeX 中的 eqnarray 环境与 array 环境相结合,定义了一个新的环境:equationarray。在该环境中,公式组可以排成三列以上,在某些方面类似 amsmath 宏包提供的 align 环境。该宏包需要与 array 宏包配合使用。

源文件

Roland Winkler

exscale

它提供一套按比例伸缩的数学扩展字体。

源文件

Frank Mittelbach

举例

mathdesign

它将系统默认的数学字体重新定义,所有字符都有标准体和粗体,并附带多重圆积分,欧元等特殊符号。它有七个选项,可以影响希腊字母等某些字符的字体。

该宏包会与 amsfonts 或 mathrsfs 等数学宏包发生冲突,应避免同时使用,因为对同一命令各有不同的定义。

Paul Pichaureau

示例

mathenv

它提供了一些使用更简便、效果更优美的数学命令和环境。

在它所提供的数学环境中都有一个标签选项,可用于交叉引用;这些环境都有带*号的形式,所不同的是它们不产生公式序号。其中:MultiLine 环境可以排版多行长公式、System 环境用于公式组且共用一个序号、EqSystem 环境也是用于公式组的,但每行公式各有分序号,如(1.1),(1.2)…。

它还重新定义了命令:\( 、\) 、\[ 、\] 、\{ 和 \} ,使其可以在数学模式中直接使用,无需 \left 和 \right 命令配合。

源文件

F. Bosisio

mathptmx

在标准 LaTeX 中,默认的字体族为计算机现代罗马字体;在数学环境中,大写希腊字母为直立体,小写希腊字母为倾斜体。

加载该宏包可将系统默认的字体族改为 Adobe Times,并将文稿中的数学字符转成虚拟mathptmx 字体。它只有一个 slantedGreek 选项,使用此选项,数学模式中的大写希腊字母也成为倾斜体。如需变为直立体,比如 \Gamma 改为 \upGamma 即可,而小写希腊字母则不行。它没有粗体数学字符,\boldmath 命令无效,也不推荐使用 bm 宏包,可 以用命令 \mathbf 获得粗体数学字符。

该宏包是 psnfss 宏包套件之一,它将 times 和 mathptm 两个宏包的功能合为一体。

源文件

Walter Schmidt

示例源文件

mdwmath

它提供了一个带星号的开根命令 \sqrt*,所生成的根号没有上面的横线,如 √a ,这样其中操作数的字体尺寸就不受根号的限制了;同时,它改进了标准开根命令 \sqrt,使其生成的根式更加美观;另外它还定义了几个特殊的数学符号。

源文件

Mark Wooding

ntheorem

它增强了 LaTeX 的定理类环境功能,(例如:定理、推论、定义和证明等都可以归为定理类),改进了定理类环境的页面设置;当使用 thmmarks 选项,可以自动恰当地放置定理类环境的结束标记;它还能像图形目录那样生成定理类环境目录。

当它载后,标准 LaTeX 中的 \newtheorem 命令改由该宏包控制。

它可与 theorem 宏包兼容。

源文件

Wolfgang May

subeqn

有时需要对方程式中的子方程式进行编号,以便注释和引用,但在标准 LaTeX 中则无法做到。

为解决这一问题,该宏包定义了两个环境 subequations 和 subeqnarray,可以对方程式中的子方程式进行编号,得到如(1a)、(1b)和(1c)这样的编号。 举例

该宏包可在源文件类型的 leqno 和 fleqn 选项中工作,前者把方程式的序号放在左边而不是右边,后者将方程式缩排左对齐而不是居中;它不能与 subeqnarray 宏包兼容。

源文件

Donald Arseneau

subeqnarray

它提供了 subeqnarray 和 subeqnarray*两个环境,使用其定义的 \slabel 命令,可对多行公式组中的每一行进行编号,如给出 (1a),(1b), (1c)等。

源文件

Johannes L. Braams

举例

theorem

它是 LaTeX 工具宏包套件之一,通过定义不同的 theorem 环境,可自己设置定理、定义和引理等的式样。

源文件

Frank Mittelbach

tmmaths

它支持使用 Times 字族和 TM-Math 字族排版。当该宏包加载后,默认字体为 Adobe
Times;可选用 MicroPress TM-Math 字体编排数学公式;\mathbold 命令可以排印斜粗体字母,包括希腊字母。

源文件

Walter Schmidt

vector

在标准 LaTeX 中,向量可以在数学模式里用 \vec 命令生成,例如:$\vec{a}$ ;但在实际应用中,向量符号常为粗罗马字体或带有下划线。

vector 宏包定义了一组新命令,用于排版各种式样的向量符号,包括粗体的、带下划线的以及戴帽子的单位向量等,并可成组横\竖排列,成为隐式或显式向量序列。向量符号的字体可以是 boldface roman 或 sans serif ;下划线可以是直线或波浪线。

源文件

Nick Efford

yhmath

它提供了一组大型数学分界符,其中有花括号、圆括号、方括号、三角括号和重音号等;另外还提供很多大尺寸数学符号,如根号、圆积分号和求和号等。这些符号都存于 cmex10  字库中。

源文件

Yannis Haralambousy

图例

youngtab

它可以用于排版群论中的 Young-Tableaux 方格式。该宏包定义了两个命令:\yng 和 \young,前者能生成空方格,后者可在方格中标注,这两个命令都很简单以免拼写错误。它附有四个选项,可对方格式的样式产生影响。

源文件

Volker Börchers

参考链接:http://zzg34b.w3.c361.com/package/maths-2.htm

052010

网络赚钱是当今的热门趋势。我相信将来不久会有很多人辞掉他们目前的日常工作,然后在家里穿着睡衣写博客并以此为生。

网络赚钱的方法很多。目前,Google Adsense是多数人最佳的选择。一些基本的优化技巧可以使您的Google Adsense收入翻倍。由于广告的优化不同,两个有着同样的流量的博客的Google Adsense收入可能有很大的差别。

贯彻下面这些简单的Google Adsense优化技巧,并坚持两个礼拜然后看看效果。相信我,我并没有信口开河,因为我在不同的网站长时间用过 Google Adsense,再说这些也只是一些实用又合理的提升 Google Adsense 收入的技巧而已。

这些是提升 Google Adsense 收入的核心技巧,但是也不可能使您的收入在一夜之间翻倍。我不鼓励也不支持任何作弊方式。

 

在开始讲述技巧之前,先回顾一下Google的政策:

以下事情做不得:

1 不要通过任何的方式点击自己的广告。

2 不要使用任何自动工具来提高广告的展示显示频率。

3 不要叫别人点击您的广告。

4 除了字体和颜色之外,不要修改广告的任何代码。

5 不要在成人网站或在禁止网站上投放广告。

现在您知道什么是违反 Google Adsense 政策的了。

以下是一 些简单到任何人都可以实行的优化 Google Adsense 的技巧:

1 使您的广告和网站主题有效的混为一体,使广告的颜色和网页的颜色保持一致。

2 文字广告不要使用边框。没有边框、背景颜色和网页背景颜色一样的广告总是会比其他广告单元要好。

3 选择和网页搭配的广告颜色,至少两三个搭配颜色,广告颜色跟着主题转,这是为了避免广告的盲目性。

4 使用链接单元。网页导航栏附近插入链接单元效果可以很好。链接单元的其他好处是——不需要占用太多的地方,也不会激怒读者。

5 使用 AdSense 搜索广告。这是除了内容广告之外最好的广告了。您可以选择“允许用户搜索网络或您选择的特定网站”。在搜索结果页面的顶部和底部投放搜索广告。搜索广告最好的位置是在网页顶部右上角。

6 在每个页面的顶部投放250×250像素的广告单元。如果您使用的是 WordPress,那么250×250正方形的广告将是每个页面的最佳选择。不要忘了把这个广告单元的代码插在文章内容的左边或右边,如图所示:

Adsense ad optimization

(图片:AdSense广告位置)

插入代码的时候请使用<DIV Style>标签。更多的信息可以阅读如何在文章的左边或者右边插入广告单元

7 多用文字广告,少用图片广告。因为文字广告会提供更多读者感兴趣的广告。我建议以下的广告单元同时允许文字广告和图片广告:

250×250正方形

160×600宽幅摩天大楼

336×280大矩形

300×250中等矩形

这些都是最好的广告单元,会使您的广告收入增加。

8 利用区段定位,以获得网页相关的广告。区段定位代码是Google提供的用来使它的爬虫向您的网页提供相关的广告。在每个页面使用以下简单的区段定位代码:

– google_ad_section_start –

您需要定位的内容

– google_ad_section_end –

如果您希望不相关的内容被忽视,可以使用下面代码:

– google_ad_section_start(weight=ignore) –

更多的信息可以在这里找到。区段定位将提高广告的相关性和点击率。

9 广告的位置很重要。广告要放在页面的上面,使读者可以不用拉动滚动条就可以看见,这会增加广告的点击率。

10 高质量的广告位置:左侧边栏的顶部和单个页面的顶部。试试使用这样的广告——在左侧边栏的顶部使用链接单元,在文章里面(左边或者右边)投放250×250或者336×280的矩形文字和图片广告单元。

11 抵制廉价和不相关的广告。使用“竞争性广告过滤器”过滤这些广告,过滤之前需要进行研究。有时候同一个广告在这个地方卖0.01美元,在另外一个地方却有可能卖1美元。

12 使用“预览此 AdSense 单元”工具,它可以使您预览将会出现在您的网页上的所有广告并且有助于抵制不相关的广告。

13 广告周围要留多一点空白空间。网页内容需要留有一定的空白空间,广告也不例外。

14 研究您的关键词,把广告锁定在这些关键词上。如果您没有使用区段定位代码,那么不要忘了在文章的开头使用一些相关的关键词。Google Adsense的爬虫通常只是搜索一个页面的头一两个段落而已。

15 您可以增加主页和单独页面的广告数量,但是广告不要太多。

16 在广告单元的上面或在旁边放置图片,这将提高广告的可见度和点击率。

17 除了上面的第10点,您也可以使用Google提供的热图来寻找其他高质量的广告位。如附图,深色部分的广告位要比浅色的好。

Adsense heatmap

(图片: Google Adsense热图)

18 使用渠道跟踪所有的广告效果。渠道是用来跟踪单个广告单元的效果的。好好学习AdSense的收入报告。不要隔三差五的改变广告格式、颜色和位置。最少需要跟踪2个礼拜才能判断广告位置是否有效。

19 进行搜索引擎优化。搜索引擎优化(SEO)是获得高流量的关键。此外,来自搜索引擎的流量可以转化为广告收入。并且,来自搜索引擎的读者比其他普通读者更容易点击广告。

20 在文章中间插入广告也不错。但是要注意这可能会激怒您的读者。所以要避免文章里面出现太多的广告。如果是短小的文章,可以把广告放在页面内容的顶部。如果您的文章很长,那么,可以考虑在底部或者中加插入广告。不要在文章里面投放摩天大楼广告单元。

21 测试,测试,再测试!

把Google Adsense广告整合进您的网页内容中是获得高收入的关键。

我相信如果您仔细的阅读上面每一种技巧并加以实施,那么您离获得翻倍的广告收入就不远了。

 

原文链接:http://jingpin.org/tips-to-earn-more-revenue-from-adsense/

用Yahoo Pipes 制作全文RSS

Posted by 冰河 at 13:23 6 Responses » 30,867 Views
022010

很多网站尤其是一些新闻类的网站虽然提供RSS输出,但他们的RSS输出并不是全文输出,如果要看全文还要点击进去,而且有些文章还可能要翻墙才能 浏览,这样总感觉不是很爽……不过现在有了Yahoo Pipes就好办了!这是Yahoo提供的一款超级强大的RSS处理工具,今天我就教你如何用它来输出网站的全文!

第一步

先在 Yahoo Pipes 里新建一个 pipe(如图)

Create a pipe

第二步

拖入一个 Fetch Feed 模块,输入你想要全文输出的RSS地址(如图我添加的是路透社-时事要闻的RSS

Fetch Feed

第三步

然后到Operators条目下拖入一个 Loop 模块,与 Fetch Feed 相连接

再到Sources条目拖一出个 Fetch Page 模块拖进入 Loop(注意是拖进Loop里面去,如图)

设置 URL 为 item.link

第四步

这是最关键的一步!!!

随便打开你要全文输出的RSS其中一篇文章,然后等网页加载完毕后,查看这篇网页的源代码

然后查找网页源代码中正文部分,把能囊括正文的<div=”********”>复制出来(这个div的值,是网站管理者设定的,一定要,不然pipes不知道收录哪里,如图,路透社的<div id=”resizeableText”>)

然后填入到Fetch Page中的Cut content from中,如图

第五步

把assign项选为first,然后把results to填为item.description,将 Loop 连接到 Pipe Out,保存,大功告成!!!

最后

这是我做的路透社-时事新闻的截图

当然你要检查一下有时候item.descriptiom下可能输不出全文或乱码,那你要debug了,可能我以后会写文章另解,今天就写到这了,如图,反正路透社这个Pipes是正常的

如果你要输出的RSS的地址美观一些,可以将 Pipes 弄好的 RSS 烧录到 Feedburner feedsky

1、在 Yahoo Pipes 里新建一个 pipe
拖入一个 Fetch Feed 模块,输入牛博最新文章的 rss 地址
拖入一个 Loop 模块,与 Fetch Feed 连接

2、拖一个 Fetch Page 模块进入 Loop
设置 URL 为 item.link
读取内容从 <div> 到 </div>
指定所有结果为 item.temp

3、拖入一个 Rename 模块,与 Loop 连接
将 item.temp.0.content 重命名为 content:encoded

4、将 Rename 连接到 Pipe Out,保存

然后将 pipe 好的 rss 烧录到 feedsky(主要是方便收藏,不会往里面加小广告)

原文信息:

Your Passwords Aren’t As Secure As You Think; Here’s How to Fix That
作者: The How-To Geek

如果你允许软件保存你的密码,任何可以接触到你PC的人都可能破解你的密码,除非你以正确的方式加密–而你很有可能并未这么做.不如让我们看看保存密码的正确和错误的方式.

本文假设你的手提电脑被偷了,相对的,所有能进入你房间的人都是值得信赖的,并不会盗取你的密码.事实上本文的技巧应该均适用于这两种场景.不管你以何种方式保存你的密码,你都应该确保使用安全的密码以及安全的密码提示回答.

一旦你点击了”保存密码” 一切就完蛋了

基 本上任何需要登录的软件都会提供一个保存密码的选项给你.如果你使用了它,你的密码便如明文一般了.即使软件在后台将你的帐号加密保存,一般情况下它也仅 仅是使用固定的值将其加密,逆向工程很容易便可以破解出来 — 而现在不仅仅是可能性的问题,已经的确有人做出了这样的密码恢复程序.

不管你用了多么让人抓狂的Windows密码,只要有人可以接触到你的PC,他便可以使用Ubuntu[1] Live CD将你所有的资料复制到外部设备中并拿到其他机器上去破解–假设你并没有对你整个硬盘做加密的话.如果对方有多一些时间的话,他可以使用Ophcrack[2]算出你的密码,或者使用系统救援盘改掉你的Windows密码.

一旦攻击者可以访问你的文件,他们可以轻易的用各种自由软件来破解你的密码,只需几个点击便可以摆平Outlook,即时通讯,Wi-Fi,IE,FireFox,Chrome或者其他任意的软件.一切只要”Google一下你就知道的太多了”去找找破解软件而已.

Pidgin使用明文保存密码

你没看错,你最喜爱的开源多协议的即时通讯客户端在使用明文保存你的密码.你不信吗? 那好,用你最顺手的编辑器打开 %appdata%.purpleaccounts.xml ,你会看见你的密码就在这里–以任何人都可以直接阅读的方式.

虽然看起来像是Pidgin[3]用 了很糟糕的,一点也不安全的方式来处理安全事宜,但这个决定是经过深思熟虑的.记住,你可以很便利的下载到任何像是Nirsoft’s MessenPass这样的软件用于恢复AIM,Windows Live Messenger, Trillian, Miranda, Google Talk, Digsby等软件的密码.Pidgin的开发者指出他们的选择实际上是安全的首选方法:

将我们的密码用明文保存比使用精确的打乱顺序更安全.因为如果用户并未被错误的安全感误导的话,他很可能会以更安全的方式来使用软件.

当然最佳答案是完全不允许即时通讯软件保存你的密码.但如果你非要保存不可的话,就算没有万全的TrueCrypt[4]设置,也至少应该使用内建的Windows加密.两者都能提供比其他软件那些”伪加密”更好的保护.

唯一的安全存储是密码管理软件

唯 一真正安全的保存密码的方式是使用密码管理软件,它可以安全的记录你的密码,并以强大的主密码来保护你所有其他的密码.不过,如果你设置了一个简单的主密 码,它可能很容易被暴力破解攻破.不要被错误的安全感误导了,使用单一的密码并非代表万无一失.你的密码管理软件至少要有10位字母/数字以确保安全. (猫叔乱入:猫叔的KeePass主密码是16位混合大小写,数字,符号的密码 =w=)

对于密码管理软件,你有很多选择,比如读者最喜爱的KeePass — 一个跨平台的密码管理软件,拥有大量的插件帮助你轻松管理密码.哦,当然,别忘了Firefox有一个内建的密码管理软件

使用FireFox主密码 (多于8位字母)

如果你打算用Firefox来保存你各种网上帐号,你应该确保开启了主密码保护.
可以按以下方法开启:

工具 –> 选项 –> 安全 ->  勾选”使用主密码”

一旦你设置好了,Firefox将使用几乎不可破解的AES[5]加密来保存你的密码– 假如你使用至少1位大写的8位字母/数字密码.如果你用了一个弱到可悲的像是”secret”这样的密码,只需要数分钟的暴力破解便可推倒,但适当的8位以上的随机字符组合密码用暴力破解将至少花费73年.

每次你启动Firefox访问任何需要一个已保存的密码的网站的时候,你会先被要求输入主密码.默认情况下,主密码验证会伴随整个进程的活动,不过你可以安装Master Password Timeout这个插件,它会在指定的时间后重新闭锁你的主密码.当你离开你的桌子并忘记锁住电脑的时候这很有用.

使用TrueCrypt加密所有的东西

不 管你是否使用密码管理软件还是压根不保存密码,你都可以使用TrueCrypt创建一个独立的加密TrueCrypt磁盘并使用携带版软件(aka.绿色 软件)以保证安全.更极端的做法是用TrueCrypt加密整个硬盘,你将会在每次启动时要求输入密码,不过你可以放心了,你所有的东西都是加密的,就算 你用明文的脚本来保存密码.
如果TrueCrypt不是你的菜,那么你可以考虑Windows内建的加密功能,不过你要记住,如果你改了密码你的数据将无法访问,而且Windows密码一旦被破解,所有的加密文件

.htaccess文件大家都不陌生吧。不认识的自己去搜一下……顺便告诉你,这是个好东西,值得一学。

似乎网上关于.htaccess编写方法的教程很有限,相信博主们也没有几个是自己写的吧?
我在这里就搜了几个常用规则,总结一下rewrite规则的用法。当然这只是.htaccess功能的一小部分,但是相当实用。
如果熟练掌握rewrite规则的编写,能够加强对网站URL的控制,对用户体验、SEO都十分有利。

注:所有规则来源于网络,我只作解释。

一、防盗链功能

1
2
3
4
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

逐行讲解一下:

1.打开Rewrite功能。有可能服务器设置里已经是全局下打开了,但是多写也没事。
2.RewriteCond指令,定义生效条件,用于寻找匹配条件的地址。后面内容用正则表达式匹配。代表含义是发送的请求不由mysite.com而来,那就是盗链啦。末尾的[NC]代表忽略大小写。
3.发送请求的主机前缀不为空。
4.RewriteRule指令,定义重写规则,把匹配的地址按此规则重写。本例中把这些后缀为这些图片格式的,都替换到某一个图片下。[L]表示这是最后一段规则。

只这四行就实现了防盗链是不是很神奇(- -||),编写起来是不是又觉得复杂。
这里总结了几个常用参数(不是全部):

RewriteCond下:
[NC]
不分字母大小写
[OR] 用于连接下一条规则

RewriteRule
下:
[R] 强制重定向,[R=code]
code默认为302
[F] 禁用URL,返回HTTP 403 错误
[L] 这是最后一条规则,之后内容无用

还有一篇关于正则表达式的教程(很详细):http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

二、网址规范化

1
2
3
4
Options +FollowSymLinks
rewriteEngine on
rewriteCond %{http_host} ^yourdomain.com [NC]
rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

这个是把所有二级域名都重定向到www.yourdomain.com的例子,现在看来是不是很简单了?
需要注意的是,这里的Options +FollowSymLinks不是必须的,但在某些服务器如果不设置FollowSymLinks,可能引起500错误。

再来看一个好玩的重定向

1
2
3
4
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (Googlebot)
RewriteRule ^ http://abc.com/ [R=301,L]

1.打开Rewrite功能。
2.RewriteBase指令,设置目录级重写的基准URL。可以理解成把该目录(这个.htaccess所在目录)假定为基准的URL前缀。本例中这样的写法无用。
3.RewriteCond指令。匹配所有USER_AGENT为Googlebot的发送请求。
4.RewriteRule指令。本例中把这些请求都重定向到了abc.com。

在本例中,这个配置应该是黑客所为,把google蜘蛛指向某个网站,等于伪造PR。

三、临时错误页面

当你的网站在升级、修改的时候,你最好让访客转到指定的页面,而不是没做完的页面或者是错误页。
这时我们做一个302转跳就好。

1
2
3
4
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /error.html [R=302,L]

1.继续打开Rewrite功能。- -|
2.REQUEST_URI请求的URL值。这里指所有访问maintenance.html页面的请求。
3.REMOTE_ADDR向服务器发送请求的IP地址。本例中此处应设为你自己的IP,这样就只有你能访问。
4.RewriteRule指令。本例中把这些请求都重定向到了error.html 。

在本例,我们总结几个常用的正则表达式和特殊符号。

(.*) 用于匹配某一区域内所有内容。如 abc/def/ghi 可用 (.*)/(.*)/(.*) 匹配。
([a-zA-Z_]+) 匹配英文单词,允许用-和_连接。
([0-9]+) 匹配多位数字,通常用于匹配ID。
([0-9]) 只匹配一位的数字。

^ 表示正则的开始
$ 表示正则的结束

四、重定向RSS地址到Feedburner

除了可以更改模板里的RSS地址外,.htaccess也能实现RSS地址的更改,并更加方便。

1
2
3
4
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/yourname [R=302,NC,L]

有了上面的总结,本例其实就很简单了吧。
唯一要注意的是这样操作要确保填写正确的HTTP_USER_AGENT。其实你不常换模板的话。。可能还是直接改模板更省事。

在最后,为懒虫们推荐几个好东东:
在线.htaccess生成器htaccessEditor
在线正则表达式检查器http://www.sman.cn/Blog/attachments/month_0711/320071117123354.html
mod_rewrite模块中文参考手册http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html

P.S. 其实我以为rewrite也只是APACHE一个模块而已,做到边查边写足矣,实在不行直接去搜一个规则也未尝不可。没有必要费太大力气去学。不过其中的正则表达式还是非常实用的,值得深入学习。

原文链接:http://www.suoyishuo.com/archives/how-to-write-htaccess-rewrite.html

302010

至于什么是ipv6,为什么使用ipv6,我就不扫盲了。大家可以Google或者百度。

1.首先要确定你的网络支持ipv6。你可以访问

http://ipv6.google.com/(只支持ipv6)或者http://www.kame.net/(ipv6访问看到的乌龟会动)。

2.然后就是获得Google的ipv6地址。网上给的2001:4860:c004::68我这不能用。可以通过ping ipv6.google.com获得:

Pinging www.l.google.com [2404:6800:8003::63] with 32 bytes of data:

Reply from 2404:6800:8003::63: time=140ms
Reply from 2404:6800:8003::63: time=145ms
Reply from 2404:6800:8003::63: time=139ms
Reply from 2404:6800:8003::63: time=137ms

Ping statistics for 2404:6800:8003::63:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 137ms, Maximum = 145ms, Average = 140ms

3.修改 hosts 文件。windows xp系统路径为X:WINDOWS/system32/drivers/etc。X为系统所在盘符。用UltraEdit或者其他编辑器打开(最好别用记事本),在末尾添加如下内容:

#Google
2404:6800:8003::63 www.google.com
2404:6800:8003::63 www.google.com.tw
2404:6800:8003::63 clients1.google.com
2404:6800:8003::63 mail.google.com

保存退出。因为修改了系统文件,部分杀毒软件可能会报警,比如卡巴,允许即可。

4.刷新DNS缓存

在命令行下执行:ipconfig /flushdns

然后访问www.google.com和mail.google.com走得就是ipv6的路线了。

UPDATE1:嫌麻烦的话直接复制http://docs.google.com/View?id=dfkdmxnt_61d9ck9ffq的内容到hosts文件即可。注意编码和注释。

© 2009 - 2024 冰河的博客