蓝牙5.0模块方案

蓝牙5.0模块方案

蓝牙5.0模块方案

全新蓝牙5.0标准在性能上将远超目前的版本,也就是蓝牙4.2LE版本,包括在有效传输距离上将是4.2LE版本的4倍,也就是说,理论上,蓝牙发射和接收设备之间的有效工作距离可达300米。而传输速度将是4.2LE版本的2倍,速度上限为24Mbps.
同时,蓝牙5.0允许无需配对接受信标的数据,比如广告、Beacon、位置信息等,这一传输率提高了8倍。

另外,蓝牙5.0还支持室内定位导航功能,可以作为室内导航信标或类似定位设备使用,结合wifi可以实现精度小于1米的室内定位。这样,你就可以在那些非常大的商场中通过支持蓝牙5.0的设备找到路线。不过,在本次的发布中,蓝牙技术联盟并未提到这一项特性。另外,蓝牙5.0针对物联网进行了很多底层优化,力求以更低的功耗和更高的性能为智能家居服务.
1、更快的传输速度
蓝牙5.0的开发人员称,新版本的蓝牙传输速度上限为24Mbps,是之前4.2LE版本的两倍。当然,你在实际生活中是不太可能达到这个极限速度的,但是仍然可以体验到显著的速度提升。;
2、更远的有效距离
蓝牙5.0的另外一个重要改进是,它的有效距离是上一版本的4倍,因此在理论上,当你拿着手机站在距离蓝牙音箱300米的地方,它还是会继续放着你爱的歌。
也就是说,理论上,蓝牙发射和接收设备之间的有效工作距离可达300米。当然,实际的有效距离还取决于你使用的电子设备。
3、导航功能
此外,蓝牙5.0将添加更多的导航功能,因此该技术可以作为室内导航信标或类似定位设备使用,结合wifi可以实现精度小于1米的室内定位。
举个例子,如果你和小编一样是路痴的话,你可以使用蓝牙技术,在诺大的商业中心找到路。
4、物联网功能
物联网还在持续火爆,因此,蓝牙5.0针对物联网进行了很多底层优化,力求以更低的功耗和更高的性能为智能家居服务

5、升级硬件 
此前的一些蓝牙版本更新只要求升级软件,但蓝牙5.0很可能要求升级到新的芯片。不过,旧的硬件仍可以兼容蓝牙5.0,你就无法享用其新的性能了。
搭载蓝牙5.0芯片的旗舰级手机将于2017年问世,相信中低端手机也将陆陆续续内置蓝牙5芯片。苹果将为成为第一批使用该项技术的厂商之一。
6、更多的传输功能
全新的蓝牙5.0能够增加更多的数据传输功能,硬件厂商可以通过蓝牙5.0创建更复杂的连接系统,比如Beacon或位置服务。因此通过蓝牙设备发送的广告数据可以发送少量信息到目标设备中,甚至无需配对。
7、更低的功耗
众所周知,蓝牙是智能手机的必备功能,随着智能设备和移动支付等越来越多需要打开蓝牙,才能享受便利功能逐渐融入人们的生活之中,蓝牙的功耗成为了智能手机待机时间的一大杀手。
为此蓝牙5.0将大大降低了蓝牙的功耗,使人们在使用蓝牙的过程中再也不必担心待机时间短的问题。

英语中有几个表示商品的词 goods commodity product merchandise wares 区别

来源:https://www.zybang.com/question/c92b94d22116484221401ba7990b3676.html

英语中有几个表示商品的,goods,commodity,product,merchandise,wares 区别

goods,commodity,product,merchandise,wares这些名词都可表示“商品,货物”之意.

但是products是产品,goods是物品,commodity是日用品,merchandise是货物
详细点就是:goods一般生活或商业用词,指销售或购入的商品.Goods 货物!
commodity作“商品”解时系经济学名词,也可指日用品.
product一般指工业产品,也可泛指各种各样的产品.
merchandise正式用词,指商业上销售或商家拥有货物的总称.
wares 指上市待卖的商品或货物.多用复数形式.
merchandise 商品,泛指商品,不特指某一商品

英媒晒国外名人收入 比尔·盖茨每天入账6000多万元

国际在线专稿:在各类媒体上看到哪个福布斯富豪又赚了多少钱时,可能并不会给人造成太大的冲击。不就是数字嘛,多加几个零就是了,数数谁不会啊?

但是,如果把这个数字换算成日薪甚至是时薪和自己对比的话,可以说就很扎心了…

英国《每日邮报》近日统计了多位富豪的日均收入以及花钱方式,一起来看看吧。

(并没有换算成小时单位,所以还请放心阅读)

比尔·盖茨

日均收入:710万英镑(约6215万人民币)

据彭博社报道,盖茨去年进账共26亿英镑(约227.7亿人民币),平均到每天就是710万英镑。

除此以外,作为盖茨基金会主席,盖茨本人能够调动的金钱量更大于他自身的收入……

花销:盖茨喜欢去冰岛度假,还常和家人一起驾游艇出游。

盖茨曾说过:“到了一定程度以后,金钱对于我个人就没什么用处了。现在我用钱的主要目的就是贡献给基金会,并将资源送到世界最穷苦的人们手中。”

J·K·罗琳

日均收入:19.8万英镑(约173.4万人民币)

作为《哈利波特》系列的作者,罗琳从其版税、电影、主题公园、各种纪念品以及舞台剧表演中获得巨大的收入,而她现在还在继续写作。

花销:罗琳和丈夫以及三个孩子一起住在爱丁堡,据说曾以百万英镑买下邻居的房子……

阿黛尔·阿德金斯

日均收入:14.4万英镑(约126万人民币)

阿黛尔的第三个专辑《25》全球共售出2000万份,仅在英国就帮她捞了1650万英镑(约1.44亿人民币)。

花销:在美国和英国多地拥有房产。

大卫·贝克汉姆

日均收入:13.6万英镑(约119.1万人民币)

小贝的肖像权公司去年给他开出了1270万英镑(约1.1亿人民币)的薪水,使用其形象打广告的商家遍布各种行业。

花销:小贝在科茨沃尔德的房子花了近六百万英镑(约5255万人民币),他的宝贝女儿哈珀(Harper)上芭蕾课也是一笔不小的花销。

英国女王

日均收入:11.7万英镑(约102.5万人民币)

英国政府会将皇室不动产利润中的15%给予女王,去年她因此获得的收入共有4280万英镑(约3.7亿人民币),近期预计还将增长。

花销:女王的各种度假在她总花销中其实所占比例不大,维护各个皇家宫殿的费用才是大头。

詹妮弗·劳伦斯

日均收入:4.9万英镑(约42.9万人民币)

尽管这位奥斯卡影后时常抱怨自己的收入不如一些男演员高,但她去年也有1820万英镑的收入(约1.59亿人民币)。

花销:在比弗利山庄的住宅价值540万英镑(约4728万人民币)。

 

孙悟空是哪一年出生

以地上时间计算,孙悟空入地狱时生死簿记载其342岁,其后孙悟空在天上呆了三次,计15天(弼马温)+180天左右(齐天大圣)+49天(炼丹炉)=244天左右,即244年,偷了蟠桃后在花果山上呆了一年,则孙悟空被压到五行山时已经587岁左右,而此年书中写明是王莽篡汉之时(第十四回),即公元8年,则猴王出世发生在公元前579年左右——而后贞观十三年(639年)取经,过了十四年取经结束,即653年(当然历史上这年唐太宗已经死了)。

若考虑王莽篡汉一说为误传,即孙悟空确实只是压了五百年,则孙悟空被压五行山为公元139年,东汉汉顺帝永和四年左右,那么再次以贞观十三年(639年)计算, 猴王出世是在公元前448年左右。

以上,孙悟空的出生年份:
1.采取第十四回王莽篡汉之说,孙悟空出生于公元前579年左右,时为春秋时代,周简王在位。
2.采取书中出现的大多数【被压了五百年】之说,孙悟空出生于公元前448年左右,时为战国时代,周贞定王在位。

一想到孙悟空当美猴王之时,那头正春秋五霸纷争,战国七雄裂土——花果山果然是人间福地,世外桃源啊!

作者:黄粱
链接:https://www.zhihu.com/question/35327628/answer/62342484
来源:知乎

巴科斯-诺尔范式 (BNF) 基本语法[转]

语法规范:BNF与ABNF

BNF 

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

在BNF中,双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。

在双引号外的字(有可能有下划线)代表着语法部分。

< > : 内包含的为必选项。
[ ] : 内包含的为可选项。
{ } : 内包含的为可重复0至无数次的项。
|  : 表示在其左右两边任选一项,相当于”OR”的意思。
::= : 是“被定义为”的意思
“…” : 术语符号
[…] : 选项,最多出现一次
{…} : 重复项,任意次数,包括 0 次
(…) : 分组
|   : 并列选项,只能选一个
斜体字: 参数,在其它地方有解释

下面是是用BNF来定义的Java语言中的For语句的实例:

FOR_STATEMENT ::= 
      "for" "(" ( variable_declaration | 
  ( expression ";" ) | ";" ) 
      [ expression ] ";" 
      [ expression ] ";" 
      ")" statement

 

理解巴科斯-诺尔范式 (BNF) 语法

语法结构使用BNF范式形式给出,先做一个简单了解。

在双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于”OR”的意思。
::= 是“被定义为”的意思。

BNF 语法使用下表中显示的表示法。

约定/符号 含义
::= 等效
| OR
X+ 一个或多个 X。
[X] X 可选。可选的分隔符由 [] 表示。
任何粗体文本 字符串。
任何斜体 文本 如何构造字符串。

正如前表中所指出的,注册器脚本使用字符串。这些值是必须出现在脚本中的实际的文本。下表描述 ATL 注册器脚本中使用的字符串。

字符串 操作
ForceRemove 完全移除下一项(如果存在),然后重新创建它。
NoRemove 在“注销”期间不移除下一项。
val 指定 <Key Name> 实际上是一个命名值。
Delete 在“注册”期间删除下一项。
s 指定下一个值为字符串 (REG_SZ)。
d 指定下一个值为 DWORD (REG_DWORD)。
m 指定下一个值为多字符串 (REG_MULTI_SZ)。
b 指定下一个值为二进制值 (REG_BINARY)。

  ABNF

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中 ABNF 被广泛使用。ABNF 做了更多的改进。扩充巴科斯-瑙尔范式(ABNF)基于了巴科斯-瑙尔范式(BNF),但由它自己的语法和推导规则构成。这种元语言的发起原则是描述作为通信协议(双向规范)的语言的形式系统。它建档于 RFC 4234 中通常充当 IETF 通信协议的定义语言。

ABNF 规定是一组推导规则,写为:

规则 = 定义 ; 注释 CR LF

这里的规则是大小写敏感的非终止符,定义由定义这个规则的符号序列,一个文档注释组成,并结束于回车换行。

规则名字是大小写不敏感的: <rulename><Rulename><RULENAME> 和 <rUlENamE> 都提及同一个规则。规则名字由开始于一个字母的字母、数字和连字符组成。不要求用尖括号(“<”, “>”) (如 BNF 那样)包围规则名字。但是它们可以用来界定规则名字,比如在冗文中识别出规则名字的时候。ABNF 使用 7-位 ASCII 编码,在 8-位域中把高位置零。

终结符由一个或多个数值字符指定。数值字符可以指定为跟随着基数(b = 二进制, d = 十进制, x = 十六进制)的一个百分号“%”,随后是这个数值,或数值的串联(用“.” 来指示)。例如回车可以指定为十进制的 %d13 或十六进制的 %x0D。回车换行可以指定为 %d13.10

文字正文通过使用包围在引号(")中字符串来指定。这些字符串是大小写不敏感的,使用的字符集是 US-ASCII。所以字符串“abc”将匹配“abc”, “Abc”, “aBc”, “abC”, “ABc”, “AbC”, “aBC” 和 “ABC”。对于大小写敏感匹配,必须定义明确的字符: 要匹配 “aBc” 定义将是 %d97 %d66 %d99

操作符

空白被用来分隔定义的各个元素: 要使空格被识别为分割符则必须明确的包含它。

串联

规则1 规则2

规则可以通过列出一序列的规则名字来定义。

要匹配字符串“aba”可以使用下列规则:

fu = %x61; a
bar = %x62; b
mumble = fu bar fu

选择

规则1 / 规则2

规则可以通过用反斜杠(“/”)分隔的多选一规则来定义。

要接受规则 <fu> 或规则 <bar> 可构造如下规则:

fubar = fu / bar

递增选择

规则1 =/ 规则2

可以通过使用在规则名字和定义之间的“=/”来向一个规则增加补充选择。

规则

ruleset = alt1 / alt2 / alt3 / alt4 / alt5

等价于

ruleset = alt1 / alt2
ruleset =/ alt3
ruleset =/ alt4 / alt5

值范围

%c##-##

数值范围可以通过使用连字符(“-”)来指定。

规则

OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7"

等价于

OCTAL = %x30-37

序列分组

(规则1 规则2)

元素可以放置在圆括号中来组合定义中的规则。

要匹配“elem fubar snafu”或“elem tarfu snafu”可以构造下列规则:

group = elem (fubar / tarfu) snafu

要匹配“elem fubar”或“tarfu snafu”可以构造下列规则:

group = elem fubar / tarfu snafu
group = (elem fubar) / (tarfu snafu)

可变重复

n*n规则

要指示一个元素的重复可以使用形式 <a>*<b> 元素。可选的 <a> 给出要包括的元素的最小数目,缺省为 0。可选的 <b> 给出要包括的元素的最大数目,缺省为无穷。

对零或多个元素使用 *元素,对一或多个元素使用 1*元素,对二或三个元素使用 2*3元素

特定重复  

n规则

要指示明确数目的元素可使用形式 <a> 元素,它等价于 <a>*<a>元素

使用 2DIGIT 得到两个数字,使用 3DIGIT 得到三个数字。(DIGIT 在下面的核心规则中定义)。

可选序列

[规则]

要指示可选元素下列构造是等价的:

[fubar snafu]
*1(fubar snafu)
0*1(fubar snafu)

注释

; 注释

分号(“;”)开始一个注释并持续到此行的结束。

操作符优先级

上述操作符有从最紧绑定(binding)到最松绑定的给定优先级:

  1. 字符串,名字形成(formation)
  2. 注释
  3. 值范围
  4. 重复
  5. 分组,可选
  6. 串联
  7. 选择

与串联一起使用选择操作符可以造成混淆,建议使用分组来做明确串联分组。

核心规则

核心规则定义于 ABNF 标准中。

规则 形式定义 意义
ALPHA %x41-5A / %x61-7A 大写和小写 ASCII 字母 (A-Z a-z)
DIGIT %x30-39 数字 (0-9)
HEXDIG DIGIT / “A” / “B” / “C” / “D” / “E” / “F” 十六进制数字 (0-9 A-F a-f)
DQUOTE %x22 双引号
SP %x20 空格
HTAB %x09 水平tab
WSP SP / HTAB 空格和水平tab
LWSP *(WSP / CRLF WSP) 线性空白(晚于换行)
VCHAR %x21-7E 可见(打印)字符
CHAR %x01-7F 任何 7-位 US-ASCII 字符,不包括 NUL
OCTET %x00-FF 8 位数据
CTL %x00-1F / %x7F 控制字符
CR %x0D 回车
LF %x0A 换行
CRLF CR LF 互联网标准换行
BIT “0” / “1”

例子

在巴科斯范式(BNF)条目中的邮政地址的例子可以被指定为:

postal-address = name-part street zip-part

name-part = *(personal-part SP) last-name [SP suffix] CRLF
name-part = / personal-part CRLF

personal-part = first-name / (initial ".")
first-name = *ALPHA
initial = ALPHA
last-name = *ALPHA
suffix = ("Jr." / "Sr." / 1*("I" / "V" / "X"))

street = [apt SP] house-num SP street-name CRLF
apt = 1*4DIGIT
house-num = 1*8(DIGIT / ALPHA)
street-name = 1*VCHAR

zip-part = town-name "," SP state 1*2SP zip-code CRLF
town-name = 1*(ALPHA / SP)
state = 2ALPHA
zip-code = 5DIGIT ["-" 4DIGIT]

引用

参考

来源:http://kb.cnblogs.com/page/189566/

来源:http://tianya23.blog.51cto.com/1081650/633141

优秀程序员眼中的整洁代码[转]

有多少程序员,就有多少定义。所以我只询问了一些非常知名且经验丰富的程序员。

image.php_-57.gif

Bjarne Stroustrup,C++语言发明者,C++ Programming Language(中译版《C++程序设计语言》)一书作者。

我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。

Bjarne用了“优雅”一词。说得好!我MacBook上的词典提供了如下定义:外表或举止上令人愉悦的优美和雅观;令人愉悦的精致和简单。注意对“愉悦”一词的强调。Bjarne显然认为整洁的代码读起来令人愉悦。读这种代码,就像见到手工精美的音乐盒或者设计精良的汽车一般,让你会心一笑。

Bjarne也提到效率——而且两次提及。这话出自C++发明者之口,或许并不出奇;不过我认为并非是在单纯追求速度。被浪费掉的运算周期并不雅观,并不令人愉悦。留意Bjarne怎么描述那种不雅观的结果。他用了“引诱”这个词。诚哉斯言。糟糕的代码引发混乱!别人修改糟糕的代码时,往往会越改越烂。

务实的Dave Thomas和Andy Hunt从另一角度阐述了这种情况。他们提到破窗理论4。窗户破损了的建筑让人觉得似乎无人照管。于是别人也再不关心。他们放任窗户继续破损。最终自己也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破损的窗户开辟了大厦走向倾颓的道路。

Bjarne也提到完善错误处理代码。往深处说就是在细节上花心思。敷衍了事的错误处理代码只是程序员忽视细节的一种表现。此外还有内存泄漏,还有竞态条件代码。还有前后不一致的命名方式。结果就是凸现出整洁代码对细节的重视。

Bjarne以“整洁的代码只做好一件事”结束论断。毋庸置疑,软件设计的许多原则最终都会归结为这句警语。有那么多人发表过类似的言论。糟糕的代码想做太多事,它意图混乱、目的含混。整洁的代码力求集中。每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。

image.php_-58.gif

Grady Booch,Object Oriented Analysis and Design with Applications(中译版《面向对象分析与设计》)一书作者。

整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。

Grady的观点与Bjarne的观点有类似之处,但他从可读性的角度来定义。我特别喜欢“整洁的代码如同优美的散文”这种看法。想想你读过的某本好书。回忆一下,那些文字是如何在脑中形成影像!就像是看了场电影,对吧?还不止!你还看到那些人物,听到那些声音,体验到那些喜怒哀乐。

阅读整洁的代码和阅读Lord of the Rings(中译版《指环王》)自然不同。不过,仍有可类比之处。如同一本好的小说般,整洁的代码应当明确地展现出要解决问题的张力。它应当将这种张力推至高潮,以某种显而易见的方案解决问题和张力,使读者发出“啊哈!本当如此!”的感叹。

窃以为Grady所谓“干净利落的抽象”(crisp abstraction),乃是绝妙的矛盾修辞法。毕竟crisp几乎就是“具体”(concrete)的同义词。我MacBook上的词典这样定义crisp一词:果断决绝,就事论事,没有犹豫或不必要的细节。尽管有两种不同的定义,该词还是承载了有力的信息。代码应当讲述事实,不引人猜测。它只该包含必需之物。读者应当感受到我们的果断决绝。

image.php_-59.gif

“老大”Dave Thomas,OTI公司创始人,Eclipse战略教父

整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。

Dave老大在可读性上和Grady持相同观点,但有一个重要的不同之处。Dave断言,整洁的代码便于其他人加以增补。这看似显而易见,但亦不可过分强调。毕竟易读的代码和易修改的代码之间还是有区别的。

Dave将整洁系于测试之上!要在十年之前,这会让人大跌眼镜。但测试驱动开发(Test Driven Development)已在行业中造成了深远影响,成为基础规程之一。Dave说得对。没有测试的代码不干净。不管它有多优雅,不管有多可读、多易理解,微乎测试,其不洁亦可知也。

Dave两次提及“尽量少”。显然,他推崇小块的代码。实际上,从有软件起人们就在反复强调这一点。越小越好。

Dave也提到,代码应在字面上表达其含义。这一观点源自Knuth的“字面编程”(literate programming)5。结论就是应当用人类可读的方式来写代码。

image.php_-60.gif

Michael Feathers,Working Effectively with Legacy Code(中译版《修改代码的艺术》)一书作者。

我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码——全心投入的某人留下的代码。

一言以蔽之:在意。这就是本书的题旨所在。或许该加个副标题,如何在意代码。

Michael一针见血。整洁代码就是作者着力照料的代码。有人曾花时间让它保持简单有序。他们适当地关注到了细节。他们在意过。

image.php_-61.gif

Ron Jeffries,Extreme Programming Installed(中译版《极限编程实施》)以及Extreme Programming Adventures in C#(中译版《C#极限编程探险》)作者。

Ron初入行就在战略空军司令部(Strategic Air Command)编写Fortran程序,此后几乎在每种机器上编写过每种语言的代码。他的言论值得咀嚼。

近年来,我开始研究贝克的简单代码规则,差不多也都琢磨透了。简单代码,依其重要顺序:

能通过所有测试;

没有重复代码;

体现系统中的全部设计理念;

包括尽量少的实体,比如类、方法、函数等。

在以上诸项中,我最在意代码重复。如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找出到底那是什么,然后再尽力更清晰地表达出来。

在我看来,有意义的命名是体现表达力的一种方式,我往往会修改好几次才会定下名字来。借助Eclipse这样的现代编码工具,重命名代价极低,所以我无所顾忌。然而,表达力还不只体现在命名上。我也会检查对象或方法是否想做的事太多。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是使用抽取手段(Extract Method)重构之,从而得到一个能较为清晰地说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。

消除重复和提高表达力让我在整洁代码方面获益良多,只要铭记这两点,改进脏代码时就会大有不同。不过,我时常关注的另一规则就不太好解释了。

这么多年下来,我发现所有程序都由极为相似的元素构成。例如“在集合中查找某物”。不管是雇员记录数据库还是名-值对哈希表,或者某类条目的数组,我们都会发现自己想要从集合中找到某一特定条目。一旦出现这种情况,我通常会把实现手段封装到更抽象的方法或类中。这样做好处多多。

可以先用某种简单的手段,比如哈希表来实现这一功能,由于对搜索功能的引用指向了我那个小小的抽象,就能随需应变,修改实现手段。这样就既能快速前进,又能为未来的修改预留余地。

另外,该集合抽象常常提醒我留意“真正”在发生的事,避免随意实现集合行为,因为我真正需要的不过是某种简单的查找手段。

减少重复代码,提高表达力,提早构建简单抽象。这就是我写整洁代码的方法。

Ron以寥寥数段文字概括了本书的全部内容。不要重复代码,只做一件事,表达力,小规模抽象。该有的都有了。

image.php_-62.gif

Ward Cunningham,Wiki发明者,eXtreme Programming(极限编程)的创始人之一,Smalltalk语言和面向对象的思想领袖。所有在意代码者的教父。

如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。

这种说法很Ward。它教你听了之后就点头,然后继续听下去。如此在理,如此浅显,绝不故作高深。你大概以为此言深合己意吧。再走近点看看。

“……深合己意”。你最近一次看到深合己意的模块是什么时候?模块多半都繁复难解吧?难道没有触犯规则吗?你不是也曾挣扎着想抓住些从整个系统中散落而出的线索,编织进你在读的那个模块吗?你最近一次读到某段代码、并且如同对Ward的说法点头一般对这段代码点头,是什么时候的事了?

Ward期望你不会为整洁代码所震惊。你无需花太多力气。那代码就是深合你意。它明确、简单、有力。每个模块都为下一个模块做好准备。每个模块都告诉你下一个模块会是怎样的。整洁的程序好到你根本不会注意到它。设计者把它做得像一切其他设计般简单。

那Ward有关“美”的说法又如何呢?我们都曾面临语言不是为要解决的问题所设计的困境。但Ward的说法又把球踢回我们这边。他说,漂亮的代码让编程语言像是专为解决那个问题而存在!所以,让语言变得简单的责任就在我们身上了!当心,语言是冥顽不化的!是程序员让语言显得简单。

稿源:代码湾

转自:https://www.oschina.net/news/87473/good-programmers-clean-code

Thrift 数据类型

要编写Thrift定义文件,肯定要熟悉Thrift常见的数据类型:

1.基本类型(括号内为对应的Java类型):
bool(boolean): 布尔类型(TRUE or FALSE)
byte(byte): 8位带符号整数
i16(short): 16位带符号整数
i32(int): 32位带符号整数
i64(long): 64位带符号整数
double(double): 64位浮点数
string(String): 采用UTF-8编码的字符串

2.特殊类型(括号内为对应的Java类型):
binary(ByteBuffer):未经过编码的字节流

3.Structs(结构):
struct定义了一个很普通的OOP对象,但是没有继承特性。

struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}

如果变量有默认值,可以直接写在定义文件里:

struct UserProfile {
1: i32 uid = 1,
2: string name = “User1”,
3: string blurb
}

4.容器,除了上面提到的基本数据类型,Thrift还支持以下容器类型:
list(java.util.ArrayList):
set(java.util.HashSet):
map(java.util.HashMap):

Thrift容器与类型密切相关,它与当前流行编程语言提供的容器类型相对应,采用java泛型风格表示的。Thrift提供了3种容器类型:
List<t1>:一系列t1类型的元素组成的有序表,元素可以重复
Set<t1>:一系列t1类型的元素组成的无序表,元素唯一
Map<t1,t2>:key/value对(key的类型是t1且key唯一,value类型是t2)。
容器中的元素类型可以是除了service意外的任何合法thrift类型(包括结构体和异常)。
用法如下:

struct Node {
1: i32 id,
2: string name,
3: list<i32> subNodeList,
4: map<i32,string> subNodeMap,
5: set<i32> subNodeSet
}

包含定义的其他Object:

struct SubNode {
1: i32 uid,
2: string name,
3: i32 pid
}

struct Node {
1: i32 uid,
2: string name,
3: list<subNode> subNodes
}

5.Services服务,也就是对外展现的接口:

service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}

好了歌

好了歌(曹雪芹《红楼梦》中诗词)

好了歌,中国著名古典章回体小说《红楼梦》中经典诗词,小说中为跛足道人所做,甄士隐彻悟后进行进一步注解,表现了作者现实主义和宗教思想。文中还有与之相和的《好了歌注》,承接并引申了《好了歌》的思想。诗歌内容隐射小说情节,表达了作者对现实的愤懑和失望,以及对自由的追求和向往!

甄士隐知投人不著,心中未免悔恨,再兼上年惊唬,急忿怨痛已伤,暮年之人,贫病交攻,竟渐渐的露出那下世的光景来。可巧这日拄了拐杖挣到街前散散心时,忽见那边来了一个跛足道人,疯癫落拓,麻鞋鹑衣,
口内念着几句言词道:
世人都晓神仙好,惟有功名忘不了!
古今将相在何方?荒冢一堆草没了。
世人都晓神仙好,只有金银忘不了!
终朝只恨聚无多,及到多时眼闭了。
世人都晓神仙好,只有娇妻忘不了!
君生日日说恩情,君死又随人去了。
世人都晓神仙好,只有儿孙忘不了!
痴心父母古来多,孝顺儿孙谁见了?
士隐听了,便迎上来道:“你满口说些甚么?只听见些‘好了’‘好了’。”
那道人笑道:“你若果听见‘好了’二字,还算你明白。可知世上万般,好便是了,了便是好。若不了,便不好;若要好,须是了。我这歌儿便名《好了歌》。”
士隐本是有夙慧的,一闻此言,心中早已彻悟,因笑道:“且住!待我将你这《好了歌》注解出来何如?”道人笑道:“你就请解。”
士隐乃说道:
陋室空堂,当年笏满床。
衰草枯杨,曾为歌舞场。
蛛丝儿结满雕梁,绿纱今又在蓬窗上。
说甚么脂正浓、粉正香,如何两鬓又成霜?
昨日黄土陇头送白骨,今宵红灯帐底卧鸳鸯。
金满箱,银满箱,转眼乞丐人皆谤。
正叹他人命不长,那知自己归来丧!
训有方,保不定日后作强梁。
择膏粱,谁承望流落在烟花巷!
因嫌纱帽小,致使锁枷杠,
昨怜破袄寒,今嫌紫蟒长。
乱烘烘你方唱罢我登场,反认他乡是故乡。
甚荒唐,到头来都是为他人作嫁衣裳。

写给自己也写给你 自己到底该何去何从

写给自己也写给你,自己到底该何去何从

能有一项长期爱好,看电影或者听歌收集旧书都行。这些爱好说白了就是让无聊的日子看起来有那么一点意义。

不要担心长时间不读书,你刷的微博,是在刷新信息量。看的电影也能充斥知识量。

看书看电影无须在意评论家说什么,有你喜欢的作家或演员就行。

过了三十岁,不管在什么地方吵架,都挺二的,尤其在网上。

五毛从来不值一提,更不配顺口一骂。

无论是谁,一有空就随便抓个人骂来骂去的,都不是什么好人。

别轻易贬低别人,同一个世界,同一个泥潭,无论黑衬衫白衬衫都带着污渍。

接下来说点小事 :))

不要占用别人车位,临时占用要留电话,否则车被划了轮胎被扎了都不好意思嚷嚷。

记得排队,记得上扶梯站右边,记得打车时别抢到别人前面,记得让自己方便的时候别给别人制造不快。

飞机没停稳何苦打开行李舱拿着背包就往外冲呢?我们不是最讨厌拥挤吗?

既然你改变不了什么,就改改自己的暴脾气,顺便去做一个正常人,当正常人越来越多,活着就没那么纠结,就会舒服一些,这就是改变。

别人给的伤害不能让你变强大,但你要学会躲避他们,不是说你惹不起,是你浪费不起那时间。把时间浪费在那种人身上,与自残无异。

关于朋友这件事,合得来就多加珍惜,不合拍就别浪费精力浪费时间辛苦维持了。

说到爱情,别为此寻死觅活,也别要求对方爱自己爱一辈子,那就是一段经历而已。

别问朋友借钱,除非是治病救人。欠钱到期还不了,要提前说,别羞于启齿错过时间等朋友问起时再支支吾吾闹得彼此都不痛快。

过去会越来越多,未来会越来越少,直到没有。当过去变成记忆,就变成身体的一部分,你忘不掉的。

当你感到自己真笨,这也干不好,那也做不好的时候,你已经是聪明人了。

不要担心这个致癌,那个致癌,这个不吃那个不吃,放心,我们最后都要死于癌症。

别人让你点菜,不会点就老老实实说不会点,别一张嘴就出来俩字:随便。

只要活着就总有那么一段时间,充满灰暗,躁动不安,可是除了面对,好像也没有别的办法。

当你感到时光漫长,实际上已经没有多少时间了。

老人倒了要扶,当年的坏人变老了,但不是所有的老人都变坏了。相信我,只有看热闹的越来越少,我们的下半生才有希望。

你会臃肿,你会白头,你将来也会倒在路边,但你不会去诬赖那个扶你的人。

你不会,我相信。

最后,

移民不是真正的理想,真正的理想是留在这个国家,管好自己并力所能及的帮助他人,以及,参与它的每一次改变。

来源:http://www.myexception.cn/other/1768786.html

struts2 upgrade 2.3 to 2.5 migration 升级向导

Dependencies

Update Struts dependencies to 2.5.

Remove the following plugin dependencies because they were dropped and aren’t supported anymore.

  • Dojo Plugin
  • Codebehind Plugin
  • JSF Plugin
  • Struts1 Plugin

StrutsPrepareAndExecuteFilter

The org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter was moved to org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.

In web.xml replace this:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

with that:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

There were other package changes, please read Version Notes 2.5 for more details.

DTD

Struts DTD was updated to 2.5 version.

In struts.xml replace 2.3 DTD version:

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

with 2.5:

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

Tags attributes

The id attribute was replaced with var attribute in the following tags.

  • <s:action>
  • <s:append>
  • <s:bean>
  • <s:date>
  • <s:generator>
  • <s:iterator>
  • <s:merge>
  • <s:number>
  • <s:set>
  • <s:sort>
  • <s:subset>
  • <s:text>
  • <s:url>

If you have something like that in your code:

<s:url id="url" action="login">

change it to:

<s:url var="url" action="login">

The <s:set> tag name attribute is replaced with var attribute.

From:

<s:set id="str1" value="'string1 value'" />
<s:set name="str2" value="'string2 value'" />

to:

<s:set var="str1" value="'string1 value'" />
<s:set var="str2" value="'string2 value'" />

Also escape attribute was renamed to escapeHtml attribute.

From:

<s:property escape="true" var="someProperty"/>

to:

<s:property escapeHtml="true" var="someProperty"/>

Div tag

The <s:div> tag was dropped.

Replace <s:div> with plain HTML <div> tag.

Field names

If you have field names which starts with single lower case letter, for example:

private String sTrng;
public String getSTrng() {...}
public void setSTrng(String str) {...}

change accessors to getsTrng and setsTrng.

Or better yet, change field names to not contain single lower case letter:

private String strng;
public String getStrng() {...}
public void setStrng(String str) {...}

For additional info see WW-3909.

Tiles

Depending on from which version of struts you upgrade and whether you used tiles-plugin or tiles3-plugin you may need to do different steps.

Struts 2.5 just provides a tiles-plugin which uses Tiles3. So support for Tiles2 has been dropped as well as the name tiles3-plugin.

Now the only maven dependency looks like this:

maven dependecy for tiles-plugin
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-tiles-plugin</artifactId>
    <version>${struts2.version}</version>
</dependency>

You may need to update DTD in your tiles.xml files to Tiles3:

tiles3 dtd
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"

A Listener in web.xml is required. It is not necessary to configure paths to tiles.xml files here as they are picked up automatically.

StrutsTilesListener in web.xml
<listener>
  <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

Optionally you may remove TilesDefinitions from XML and annotate actions instead. See Tiles Plugin for more details.

Temp/Work directory of ApplicationServer/ServletContainer

Users reported it was necessary for them to remove temp/work directory of their ApplicationServer/ServletContainer. Likely to force server to recompile JSPs.

来源:https://cwiki.apache.org/confluence/display/WW/Struts%202.3%20to%202.5%20migration

语法规范:BNF与ABNF

BNF 

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

在BNF中,双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。

在双引号外的字(有可能有下划线)代表着语法部分。

< > : 内包含的为必选项。
[ ] : 内包含的为可选项。
{ } : 内包含的为可重复0至无数次的项。
|  : 表示在其左右两边任选一项,相当于”OR”的意思。
::= : 是“被定义为”的意思
“…” : 术语符号
[…] : 选项,最多出现一次
{…} : 重复项,任意次数,包括 0 次
(…) : 分组
|   : 并列选项,只能选一个
斜体字: 参数,在其它地方有解释

下面是是用BNF来定义的Java语言中的For语句的实例:

FOR_STATEMENT ::= 
      "for" "(" ( variable_declaration | 
  ( expression ";" ) | ";" ) 
      [ expression ] ";" 
      [ expression ] ";" 
      ")" statement

  ABNF

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中 ABNF 被广泛使用。ABNF 做了更多的改进。扩充巴科斯-瑙尔范式(ABNF)基于了巴科斯-瑙尔范式(BNF),但由它自己的语法和推导规则构成。这种元语言的发起原则是描述作为通信协议(双向规范)的语言的形式系统。它建档于 RFC 4234 中通常充当 IETF 通信协议的定义语言。

ABNF 规定是一组推导规则,写为:

规则 = 定义 ; 注释 CR LF

这里的规则是大小写敏感的非终止符,定义由定义这个规则的符号序列,一个文档注释组成,并结束于回车换行。

规则名字是大小写不敏感的: <rulename><Rulename><RULENAME> 和 <rUlENamE> 都提及同一个规则。规则名字由开始于一个字母的字母、数字和连字符组成。不要求用尖括号(“<”, “>”) (如 BNF 那样)包围规则名字。但是它们可以用来界定规则名字,比如在冗文中识别出规则名字的时候。ABNF 使用 7-位 ASCII 编码,在 8-位域中把高位置零。

终结符由一个或多个数值字符指定。数值字符可以指定为跟随着基数(b = 二进制, d = 十进制, x = 十六进制)的一个百分号“%”,随后是这个数值,或数值的串联(用“.” 来指示)。例如回车可以指定为十进制的 %d13 或十六进制的 %x0D。回车换行可以指定为 %d13.10

文字正文通过使用包围在引号(")中字符串来指定。这些字符串是大小写不敏感的,使用的字符集是 US-ASCII。所以字符串“abc”将匹配“abc”, “Abc”, “aBc”, “abC”, “ABc”, “AbC”, “aBC” 和 “ABC”。对于大小写敏感匹配,必须定义明确的字符: 要匹配 “aBc” 定义将是 %d97 %d66 %d99

操作符

空白被用来分隔定义的各个元素: 要使空格被识别为分割符则必须明确的包含它。

串联

规则1 规则2

规则可以通过列出一序列的规则名字来定义。

要匹配字符串“aba”可以使用下列规则:

fu = %x61; a
bar = %x62; b
mumble = fu bar fu

选择

规则1 / 规则2

规则可以通过用反斜杠(“/”)分隔的多选一规则来定义。

要接受规则 <fu> 或规则 <bar> 可构造如下规则:

fubar = fu / bar

递增选择

规则1 =/ 规则2

可以通过使用在规则名字和定义之间的“=/”来向一个规则增加补充选择。

规则

ruleset = alt1 / alt2 / alt3 / alt4 / alt5

等价于

ruleset = alt1 / alt2
ruleset =/ alt3
ruleset =/ alt4 / alt5

值范围

%c##-##

数值范围可以通过使用连字符(“-”)来指定。

规则

OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7"

等价于

OCTAL = %x30-37

序列分组

(规则1 规则2)

元素可以放置在圆括号中来组合定义中的规则。

要匹配“elem fubar snafu”或“elem tarfu snafu”可以构造下列规则:

group = elem (fubar / tarfu) snafu

要匹配“elem fubar”或“tarfu snafu”可以构造下列规则:

group = elem fubar / tarfu snafu
group = (elem fubar) / (tarfu snafu)

可变重复

n*n规则

要指示一个元素的重复可以使用形式 <a>*<b> 元素。可选的 <a> 给出要包括的元素的最小数目,缺省为 0。可选的 <b> 给出要包括的元素的最大数目,缺省为无穷。

对零或多个元素使用 *元素,对一或多个元素使用 1*元素,对二或三个元素使用 2*3元素

特定重复  

n规则

要指示明确数目的元素可使用形式 <a> 元素,它等价于 <a>*<a>元素

使用 2DIGIT 得到两个数字,使用 3DIGIT 得到三个数字。(DIGIT 在下面的核心规则中定义)。

可选序列

[规则]

要指示可选元素下列构造是等价的:

[fubar snafu]
*1(fubar snafu)
0*1(fubar snafu)

注释

; 注释

分号(“;”)开始一个注释并持续到此行的结束。

操作符优先级

上述操作符有从最紧绑定(binding)到最松绑定的给定优先级:

  1. 字符串,名字形成(formation)
  2. 注释
  3. 值范围
  4. 重复
  5. 分组,可选
  6. 串联
  7. 选择

与串联一起使用选择操作符可以造成混淆,建议使用分组来做明确串联分组。

核心规则

核心规则定义于 ABNF 标准中。

规则 形式定义 意义
ALPHA %x41-5A / %x61-7A 大写和小写 ASCII 字母 (A-Z a-z)
DIGIT %x30-39 数字 (0-9)
HEXDIG DIGIT / “A” / “B” / “C” / “D” / “E” / “F” 十六进制数字 (0-9 A-F a-f)
DQUOTE %x22 双引号
SP %x20 空格
HTAB %x09 水平tab
WSP SP / HTAB 空格和水平tab
LWSP *(WSP / CRLF WSP) 线性空白(晚于换行)
VCHAR %x21-7E 可见(打印)字符
CHAR %x01-7F 任何 7-位 US-ASCII 字符,不包括 NUL
OCTET %x00-FF 8 位数据
CTL %x00-1F / %x7F 控制字符
CR %x0D 回车
LF %x0A 换行
CRLF CR LF 互联网标准换行
BIT “0” / “1”

例子

在巴科斯范式(BNF)条目中的邮政地址的例子可以被指定为:

postal-address = name-part street zip-part

name-part = *(personal-part SP) last-name [SP suffix] CRLF
name-part = / personal-part CRLF

personal-part = first-name / (initial ".")
first-name = *ALPHA
initial = ALPHA
last-name = *ALPHA
suffix = ("Jr." / "Sr." / 1*("I" / "V" / "X"))

street = [apt SP] house-num SP street-name CRLF
apt = 1*4DIGIT
house-num = 1*8(DIGIT / ALPHA)
street-name = 1*VCHAR

zip-part = town-name "," SP state 1*2SP zip-code CRLF
town-name = 1*(ALPHA / SP)
state = 2ALPHA
zip-code = 5DIGIT ["-" 4DIGIT]

引用

参考

JAVA BIO与NIO、AIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。

一、BIO

在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。

二、NIO (New IO)

NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。

NIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序进行处理,应用再将流读取到缓冲区或写入操作系统。  也就是说,这个时候,已经不是一个连接就要对应一个处理线程了,而是有效的请求,对应一个线程,当连接没有数据时,是没有工作线程来处理的。

BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。

NIO的最重要的地方是当一个连接创建后,不需要对应一个线程,这个连接会被注册到多路复用器上面,所以所有的连接只需要一个线程就可以搞定,当这个线程中的多路复用器进行轮询的时候,发现连接上有请求的话,才开启一个线程进行处理,也就是一个请求一个线程模式。

在NIO的处理方式中,当一个请求来的话,开启线程进行处理,可能会等待后端应用的资源(JDBC连接等),其实这个线程就被阻塞了,当并发上来的话,还是会有BIO一样的问题。

HTTP/1.1出现后,有了Http长连接,这样除了超时和指明特定关闭的http header外,这个链接是一直打开的状态的,这样在NIO处理中可以进一步的进化,在后端资源中可以实现资源池或者队列,当请求来的话,开启的线程把请求和请求数据传送给后端资源池或者队列里面就返回,并且在全局的地方保持住这个现场(哪个连接的哪个请求等),这样前面的线程还是可以去接受其他的请求,而后端的应用的处理只需要执行队列里面的就可以了,这样请求处理和后端应用是异步的.当后端处理完,到全局地方得到现场,产生响应,这个就实现了异步处理。

三、AIO

与NIO不同,当进行读写操作时,只须直接调用API的read或write方法即可。这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。  即可以理解为,read/write方法都是异步的,完成后会主动调用回调函数。  在JDK1.7中,这部分内容被称作NIO.2,主要在Java.nio.channels包下增加了下面四个异步通道:

  • AsynchronousSocketChannel
  • AsynchronousServerSocketChannel
  • AsynchronousFileChannel
  • AsynchronousDatagramChannel

其中的read/write方法,会返回一个带回调函数的对象,当执行完读取/写入操作后,直接调用回调函数。

BIO是一个连接一个线程。

NIO是一个请求一个线程。

AIO是一个有效请求一个线程。

先来个例子理解一下概念,以银行取款为例:

  • 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);
  • 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API);
  • 阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回);
  • 非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)

Java对BIO、NIO、AIO的支持:

  • Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
  • Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
  • Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

BIO、NIO、AIO适用场景分析:

  • BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
  • NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
  • AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

另外,I/O属于底层操作,需要操作系统支持,并发也需要操作系统的支持,所以性能方面不同操作系统差异会比较明显。

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。

在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。

一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO

同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式!

同步非阻塞IO:在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。其中目前JAVA的NIO就属于同步非阻塞IO。

异步阻塞IO:此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成,那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄,从而提高系统的并发性!

异步非阻塞IO:在此种模式下,用户进程只需要发起一个IO操作然后立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知,此时用户进程只需要对数据进行处理就好了,不需要进行实际的IO读写操作,因为真正的IO读取或者写入操作已经由内核完成了。目前Java中还没有支持此种IO模型。

2016世界最烂密码出炉 排名第一的还是123456

据Business Insider报道,安全公司Keeper在对1000万个泄露的密码进行分析后,得出了今年最常用的密码。排名第一的密码就是123456,而它几乎每年都会当选。
2016年,这些超简单的密码也频频给黑客们助攻,最令人记忆犹新的就是Facebook CEO扎克伯格“dadada”的密码。
在这1000万个泄露的密码中,有17%的用户都选择了123456最为自己的密码。排名第二的常用密码比123456高明不了多少,因为它是123456789。排在第三的这是qwerty(键盘第一排的几个字母)。
Keeper表示,安全专家三番五次提醒用户增强密码的安全级别都被大多数人当成了耳旁风,“过去几年里,这个榜单上的密码几乎没变过,这就意味着安全专家的善意提醒根本没多少人接受。如果用户在设置密码时不负责任,网站管理者应该替用户把关。”
2016年最常用密码TOP 25:
1. 123456
2. 123456789
3. qwerty
4. 12345678
5. 111111
6. 1234567890
7. 1234567
8. password
9. 123123
10. 987654321
11. qwertyuiop
12. mynoob
13. 123321
14. 666666
15. 18atcskd2w
16. 7777777
17. 1q2w3e4r
18. 654321
19. 555555
20. 3rjs1la7qe
21. google
22. 1q2w3e4r5t
23. 123qwe
24. Zxcvbnm
25. 1q2w3e
来源:第一财经|YICAI

[转] UltraEdit_16.10.0.22 破解

2016-11-20 增加16.10.0.22破解

去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!
printf ‘\x31\xC0\xFF\xC0\xC3\x90’ | dd seek=$((0x92D370)) conv=notrunc bs=1 of=/Applications/UltraEdit.app/Contents/MacOS/UltraEdit

论坛里有很多锋友发消息问我怎么找skProtectionPlus::IsActivated函数地址,下面我把找函数地址的方法发一下:

你下载个IDA pro,然后用打开idaq64,然后把Applications/UltraEdit.app/Contents/MacOS/UltraEdit拖到IDA里,
在导出函数里找到skProtectionPlus::IsActivated

2016-11-17 增加16.10.0.21破解

去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!
printf ‘\x31\xC0\xFF\xC0\xC3\x90’ | dd seek=$((0x92B240)) conv=notrunc bs=1 of=/Applications/UltraEdit.app/Contents/MacOS/UltraEdit

16.10.0.19破解:

去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!

printf ‘\x31\xC0\xFF\xC0\xC3\x90’ | dd seek=$((0x92D540)) conv=notrunc bs=1 of=/Applications/UltraEdit.app/Contents/MacOS/UltraEdit

其实就是修改skProtectionPlus::IsActivated函数,会修改的后续版本可以自已改!

来源:http://bbs.feng.com/read-htm-tid-10828753.html

一份简单实用的微交互设计指南

好的产品往往做好了两点:功能和细节设计。

功能吸引用户使用你的产品,细节设计将你的用户留下。优秀的细节设计能够使你的产品在众多竞品中脱颖而出,优秀的微交互设计往往能够让用户在初次使用产品时就能够留下深刻的印象。作为一个交互设计师,在设计微交互方案的时候不仅要考虑视觉上的冲击力,还要想办法赋予其信息传递的功能。

 什么是微交互?

微交互是产品中存在的某一个时刻,它完成了某一个小的任务。Dan Saffer在他的书中(Microinteractions)第一次描述了微交互的概念,这些小细节专注于服务这些必要的功能:

 交流回馈或者动作的结果回馈

完成某个单独的任务

增强直接操作的感觉

帮助用户在视觉上展示操作的结果,以及避免错误

一些明显的微交互例子包括:

当你将iPhone设置成静音时伴随出现的的震动提醒、屏幕上的静音icon。

7yw20160316
 

界面动画提示是否能够点击(当鼠标移到按钮上方时按钮的颜色改变)。

6yw20160316
 

  为什么使用微交互?

微交互是在对用户一些自然的需求/欲望的认知和反馈。用户从微交互提供的视觉、触觉等反馈中确认他们的行为被接受。微交互还可以引导用户正确的使用系统/产品。

  定义微交互的使用情景

微交互的一个特点是它可以被放置在很多的场景下,辅助不同的动作行为。总体来说,微交互的使用场景包括:

 展示系统/产品的状态

Jacob Nielsen在“可用性启发原则”中指出:让你的用户时刻了解发生的事情,用户期望对自己的行为立即得到反馈。但是有些情况下,app需要时间来等待行为处理完成后才能向用户发出反馈。因此,产品界面需要向用户指明此刻正在发生的事。

5yw20160316
 

▲ 下载进度表

  或者标明用户所在的位置:

4yw20160316
 

Tips:不要让你的用户感到无助,让你的用户了解实时的状态并且向其展示进度(比如进度条能够让用户了解进度,消除疑惑)

 提示更新

我们有时需要向用户推送通知来保证用户了解到事态的更新。动画可以做到这一点,动画可以吸引用户的注意力,避免用户忽视掉重要的信息。

3yw20160316
 

Tips:微交互里的动效应该遵循KISS原则(keep it simple, stupid),应该尽量简单直接。

关联上下文

使用动效来将用户的注意力平滑的在导航页面间切换,向用户解释页面里元素之间的关系,以及页面跳转的来龙去脉。这对于移动设备非常有用,因为屏幕的尺寸限制,移动界面中每一页的内容都很紧凑,使用动效来阐述内容之间的联系非常实用。

Tips:尽量让每个页面的导航简洁,这样可以有效避免用户在页面跳转中迷失。两个状态之间的却换应该清晰、平滑、快捷。在视觉上统一所有的交互形式,降低用户的学习成本。

 输入可视化

数据输入是应用中非常重要的环节,微交互可以使用现有的元素来展示数据输入的反馈,从而将这步操作变得更加高效。

2yw20160316
 

Tips:微交互能够帮助用户理解信息格式,来源,帮助用户便捷输入信息。

  引导互动

微交互可以鼓励用户、吸引用户与产品交互。它可以在用户体验中产生同理心。但是需要谨慎使用微交互,保证其在感官上不会冒犯你的用户。

时刻谨记:不要让用户感到厌烦,Keep it simple, stupid.

1yw20160316
 

Tips:关注用户的情感反馈,因为它在用户体验中起到很重要的作用。多做用户研究和情景调研,设计能被用户频繁使用的微交互方案。

  值得谨记的

微交互向用户展示动作反馈,通知以及信息框架结构

微交互应该通过转移用户的注意力、愉悦用户等来达到加快/缩短信息数据的传输

了解你的用户以及使用微交互的背景,能够让你的微交互方案更加的精准与高效

微交互必须能够支持长时效的使用,在第一次使用时感到惊喜的方案,可能在第一百次使用时就变成了困扰。

微交互方案应该人性化一些,并且在视觉上保持和谐。用户在使用的时候应该感到流畅,微交互的方案应该尽可能的从现实生活中获得启发,比如使用拟物化等手段,从而降低学习成本。

  总结

用心设计,思考用户使用产品的情景,再设计这些微交互时多运用一些生活中常见的操作模式、物体的运动轨迹、常见的行为方式等。产品的易用性来源于对细节的打磨,伟大的设计不仅仅在功能上满足用户的需求,还要在微交互的设计上打动人心。

喝酒与开发,新年了还是喝酒庆祝一下好了

新的一年了,还是喝酒庆祝一下好了。

大家喝的是啤酒。这时你入座了。
你给自己倒了杯可乐,这叫低配置。
你给自已倒了杯啤酒,这叫标准配置。
你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
你的同事给你倒了杯白酒,这叫推荐配置。

人到齐了,酒席开始了。
你先一个人喝了一小口,这叫单元测试。
你跟旁边的人说哥们咱们随意,这叫交叉测试。
但是他说不行,这杯要干了,这叫压力测试。
于是你说那就大家一起来吧,这叫内部测试。
这个时候boss向全场举杯了,这叫公开测试。

菜过三巡,你就不跟他们客气了。
你向对面的人敬酒,这叫p2p.
你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp.
你向一桌人挨个敬酒,这叫令牌环。
你说只要是兄弟就干了这杯,这叫广播。
可是你的上司jj听了不高兴了,只有兄弟么,罚酒三杯。这叫炸弹。
可是你的下级mm听了不高兴了,我喝一口,你喝一杯,这叫恶意攻击。
有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
你的小弟们过来敬你酒,这叫一对多。
你是boss,所有人过来敬你酒,这叫服务器。

酒是一样的,可是喝法是不同的。
你喝了一杯,boss喝了一口,这叫c#。
你喝了一杯,mm喝了一口,这叫vb。
你喝了一杯,你大哥喝了半杯,这叫c++。
你喝了半杯,你小弟喝了一杯,这叫汇编。
你喝了一杯,你的搭档也喝了一杯,这叫c。

酒是一样的,可是喝酒的人是不同的。
你越喝脸越红,这叫频繁分配释放资源。
你越喝脸越白,这叫资源不释放。
你已经醉了,却说我还能喝,叫做资源额度不足。
你明明能喝,却说我已经醉了,叫做资源保留。
你喝一段时间就上厕所,这叫cache。

酒过三巡,你也该活动活动了。
你一桌一桌的走,这叫轮巡。
你突然看到某一桌的漂亮mm,走了过去,这叫优先级。
你去了坐下来就不打算走了,这叫死循环。
你的老大举杯邀你过去,你只好过去,这叫启动事件。
你向一桌敬酒,他们说不行不行我们都喝白的,于是你也喝白的,这叫本地化。
你向boss敬酒,可是boss被围了起来,你只能站在外圈,这叫排队。
你终于到了内圈,小心翼翼的向前一步,这叫访问临界区。
你拍着boss的肩膀说哥们咱们喝一杯,这叫越界。
你不知喝了几圈了,只会说两个字,干了,这叫udp。
可是还有人拿着酒瓶跑过来说,刚才都没跟你喝,这叫丢包。

喝酒喝到最后的结果都一样
你突然跑向厕所,这叫捕获异常。
你在厕所吐了,反而觉得状态不错,这叫清空内存。
你在台面上吐了,觉得很惭愧,这叫程序异常。
你在boss面前吐了,觉得很害怕,这叫系统崩溃。
你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

喝挂了,宕机

响应了国家号召不喝高度酒,都把白酒换成了白葡萄酒,这叫最佳实践

不喝不准走,这叫锁,喝了才让走,这叫解锁

边喝边吐是不是叫溢出呢?

边喝边尿叫多线程?

来源:https://my.oschina.net/xxiaobian/blog/818235

WordPress 4.7 “Vaughan”发布,内容管理系统

WordPress 开发团队发布了 WordPress 4.7 正式版 —“Vaughan” 。取名“Vaughan”以纪念传奇的爵士乐歌手Sarah“Sassy”Vaughan。现在可以更新了。新版带来全新的默认主题,定制器加入了新功能,REST API 内容端点,更多开发者工具。

更新如下:

  • 新的主题 — Twenty Seventeen。全新的默认主题可让您的网站通过引人入胜的精选图片和视频头部生动呈现。

  • WordPress 4.7 为自定义程序添加了新功能,帮助您完成主题的初始设置,在一个不间断的工作流程中对所有更改进行非破坏性实时预览。
  • WordPress 4.7 带来了针对帖子、评论、条款、用户,元和设置的 REST API 端点。

来源

下载地址:https://wordpress.org/download/

女友PMS期间男生超安全生存指南

跟处在PMS或“经前综合症(Pre-Menstrual Syndrome,估计你们有人猜错了吧)”期的女性——任何女性——呆在一起可谓置身雷区,男人们再小心翼翼也随时可能一步迈错踩爆地雷。有鉴于此,特此收录助你顺利渡过下一轮PMS的重要信息和指导攻略:

危险:晚饭做了什么?
较安全:我帮你做晚饭好吗?
最安全:晚上想去哪儿吃?
超安全:来,吃点儿巧克力。

危险:你要穿这件衣服?
较安全:天耶,你穿棕色真好看!
最安全:哇!你真是绝了!
超安全:来,吃点儿巧克力。

危险:你在那儿激动什么呀?
较安全:我哪儿不对,告诉我好吗?
最安全:拿着,这是五十块。
超安全:来,吃点儿巧克力。

危险:那玩意儿能吃吗?
较安全:你看,咱家还有好多苹果哪。
最安全:我给你倒杯酒就着吃?
超安全:来,吃点儿巧克力。

危险:你今天一天都干嘛啦?
较安全:希望你今天没累着。
最安全:我一直都喜欢看你穿这件睡袍。
超安全:来,吃点儿巧克力。

_____________________________________

PMS可以代表的13样东西:

1.拿我的枪来Pass My Shotgun
2.神经病心境转移Psychotic Mood Shift
3.永恒大嚼盛宴Perpetual Munching Spree
4.膨化中段Puffy Mid-Section
5.让我恶心的人People Make me Sick
6.给我糖果Provide Me with Sweets
7.原谅我哭Pardon My Sobbing
8.痘痘终将上脸 Pimples May Surface
9.把我的”裆劲”裤递给我Pass My Sweatpants
10.拧巴情绪综合症Pissy Mood Syndrome
11.男人可耻滴失败鸟Plainly; Men Suck
12.我收拾东西Pack My Stuff
13.潜在杀人嫌疑犯Potential Murder Suspec

2016编程语言受欢迎排行榜

Python部落组织翻译

IEEESpectrum出品的"最受欢迎编程语言排行榜"的第三张榜单出炉了.尽管不可能统计到每一个程序员的喜好,Spectrum从10个数据来源选取了12个维度来表示编程语言受欢迎的程度.然后综合12个维度的评价得出最后的榜单.

由于每个人看重的方面不一样,比如你可能关系开源社区哪些编程语言最火?他可能关心工作的人最喜欢哪些语言?Spectrum允许你自由调整构成榜单结果的每个维度的权重.你也可以根据选项过滤榜单的结果,比如查看嵌入式系统或者移动应用中哪些语言最受欢迎?

默认权重情况下的榜单显示了各方关切程度综合出来的平均值.那么2016最受欢迎的编程语言有哪些呢?

连续两年位居第二之后,C语言终于超越了Java,登顶榜首.在前五名中,Python超过C++成为第三名,C#被R顶出前五.最近几年R一路飙升,主要是由于乘上了大数据分析的浪潮.

Google和Apple也在榜单上刷了一下存在感.Google的Go语言打败Apple的Swift进入了榜单的前十名,不过Swift也不赖,去年它上升了5个座次,从16名上升到了11名,要知道它是去年才进入榜单的.其他语言也上上下下地发生了分化,不过值得注意的是,今年没有一门新语言进入了榜单.

另外一个比较明显的变化是Ladder Logic,它上升了5位,排名第34.Ladder Logic主要用在逻辑控制器上,主要是工厂在使用它.尽管工厂使用是一个比较小的场景,但是它能排到当前的位置,一定程度上反映了这个场景的实际规模.HTML还是很受欢迎,今年上升到了第16位.

在受欢迎程度下滑的语言中,最令人惊讶的是Shell语言,系统管理员编写脚本几乎无不依赖于它,但是它今年下滑了7个位置,到第19位.也许这反映了在相对更复杂的系统中,或者基于云的数据中心中系统管理的一些现状.不过我们需要继续关注这个趋势,来确定Shell是会持续地下滑,还是这只是统计方法上的疏漏.

从趋势来看,编程语言的前10名是

在公司雇员中,编程语言的前十名是

在开源社区中,编程语言的前十名是

英文原文:http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages

译者:诗书塞外

PHP CMS系统排行榜

CMS系统中文名称为网站内容管理系统,大概在2002年左右,如果想进行网站的内容管理,那么基本上都是靠手工维护,但是一个网站的内容成千上万,如果还继续靠手工完成那是基本上不可能的事,如果有CMS系统来支撑你的网站,那将节省了不少的人力,只要你能够配置好!站长只需要定时更新就可以了!这样通俗的解释,很容易理解的!

TOP 4

帝国CMS

帝国CMS是不同于以往的CMS系统,他可以直接在后台通过新建表、自定义字段,然后组成新的系统模型。从而实现各种适合用户自己的系统。如下载系统、音乐系统、商城系统、产品库等等……并且此功能为数据量较大的网站进行数据部署(将信息量分配于不同的信息表)。并且系统内置还是用户自定义的模型,每个模型都有自己的采集。如果会点程序,可以扩展更多更复杂的系统。

它采用了系统模型功能:用户通过此功能可直接在后台扩展与实现各种系统,如产品、房产、供求、等等系统。采用了模板分离功能:把内容与界面完全分离,灵活的标签+用户自定义标签,使之能实现各式各样的网站页面与风格;栏目无限级分类;前台全部静态:

(帝国CMS后台界面示意图)

TOP 3

PHPCMS

phpCMS是一个开源的PHP开发框架。Phpcms由内容模型、会员、问吧、专题、财务、订单、广告、邮件订阅、 短消息、自定义表单、全站搜索等20多个功能模块组成,内置新闻、图片、下载、信息、产品5大内容模型。Phpcms 采用模块化开发,支持自定义内容模型和会员模型,并且可以自定义字段。

PHPCMS采用PHP5+MYSQL做为技术基础进行开发。采用OOP(面向对象)方式进行基础运行框架搭建。模块化开发方式做为功能开发形式。框架易于功能扩展,代码维护,一般的二次开发能力,可满足网站的应用需求。

(PHPCMS后台界面示意图)

TOP 2

ECShopCMS

ECShopCMS是一款B2C独立网店系统,系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。随着3G网络的普及,智能手机的大量使用,手机上网的用户越来越多,使手机购物成为可能,手机购物势必会成为一种趋势,ECshop新增手机浏览html功能。并且新增商品规格分库存功能,方便商家管理不同规格货品的库存。在商品详情页新增购买记录,提高网店的活跃性。html编辑器上传图片后增加水印功能。改进编辑快递单功能,增加可视化编辑,方便管理员修改打印快递单。上传商品相册图片,使之能够支持外链图片。

(ECShopCMS后台界面示意图)

TOP1

dedeCMS

dedeCMS采用XML名字空间风格模板,模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,模板标签为站长DIY自己的网站提供了支持。高效率标签缓存机制:允许对类同的标签进行缓存,在生成 HTML的时候,有利于提高系统反应速度,降低系统消耗的资源。模型与模块概念并存:在模型不能满足用户所有需求的情况下,DedeCMS推出一些互动的模块对系统进行补充。

(DEDECMS后台界面示意图)

每个程序员都应该收藏的算法复杂度速查表

英文:http://bigocheatsheet.com/
编译:Linux中国
链接:https://linux.cn/article-7480-1.html

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢!

— Eric[1]

图例

数据结构操作

数组排序算法

图操作

堆操作

大 O 复杂度图表

Big O 复杂度

推荐阅读

  • Cracking the Coding Interview: 150 Programming Questions and Solutions[33]
  • Introduction to Algorithms, 3rd Edition[34]
  • Data Structures and Algorithms in Java (2nd Edition)[35]
  • High Performance Java (Build Faster Web Application Interfaces)[36]

关注「算法爱好者」

我们程序员的属性 [转]

俗话说:三句不离本行,对于程序员这个可爱的群体来说也是一样。

他们在编程中养成的一些思维方法会不自觉地在日常生活中表现出来。

我们这里总结了程序员日常生活中经常表现出来的8个编程思维。

你有没有同感呢?

0.在正常交流中掺杂编程规范和语法

职业原因:编程语言都有自己特定的语法,程序员在开发者都要遵守这些。

当然,还有一些约定俗成的编程规范,如代码缩进(是缩进4个字符还是8个字符)、注释风格,采用骆驼式(CamelCase)或帕斯卡式(Pascal)来命名变量或函数等等。

日常行为:这些编程习惯可能就会影响到程序员的日常文档书写习惯,比如写邮件时会用分号来结束一行内容等。

例子:

iWriteInCamelCaseEveryNowAndThenItAnnoysMySisterWhoReadsMyEmail.(小骆驼式拼写法)
IF you have tea I’ll have it ELSE I’ll just take wate.(利用了IF-ELSE判断语句)

1.真实生活中习惯讲操作快捷键

职业原因:程序员玩快捷键操作软件应该很熟练了,一般来说,Ctrl-C表示复制、Ctrl-V表示粘贴(对特定编辑器如Vi、Emacs来说会有不同)。

日常行为:这些快捷键有时在程序员的行为和话语中表现的很常见,这也会在一些场合引起尴尬。

例子:

“Mentally trying to Ctrl-Z on things I just said.(Ctrl-z表示撤消,这句话意思是我收回我刚才说的话)
In life there is no undo.(生活中没有撤消)

2.从0开始计数

职业原因:大多数编程语言中的“数组”初始值都是从0开始而不是1。

日常行为:这种约定使得程序员经常在生活中数数都是从0开始,没有编程背景的人们很难理解这种计数方式,如果你的程序员朋友祝愿你在3千米长跑中获得第0名,你就偷着乐吧。

例子:

– How many beers are left?(啤酒还剩多少杯?)
– Zero, one, two, three… We have four left!(0,1,2,3,……我们还有4杯呢~)

3.生活方式不健康

职业原因:程序员写起程序来有时一坐就是大半天,眼镜不离电脑屏幕,甚至在灵感爆发时熬夜。
日常行为:作息无规律,锻炼不足,与外界接触过少。

例子:
Eating lunch at 3pm and going to bed at 3am.(下午3点吃饭,凌晨3点睡觉)
Lack of exercise -> Eating too much -> unhealthy life style.(缺乏锻炼->吃得过多->生活方式不健康)

4.试图优化任何事情

职业原因:软件开发者会不断地优化自己的代码,让它越来越快、越来越高效。常用的方法有多线程处理任务、代码复用等,并在任何有可能自动化执行的情况下使其自动化。

日常行为:会尝试优化真实生活中的事情,尽量省力、高效,往往会被认为太懒惰,比如脏衣服经常堆到一定规模,实在没有可穿的了才去清洗(往往一次全部清洗完)。

例子:
don’t solve a problem until you absolutely, positively have to.(不到万不得已,不解决问题)

5.过于强迫症、完美主义

职业原因:程序中一般不能使用模糊语义,因为计算机不理解“差不多”,“基本”。程序中即使有一点小错误,也会导致程序编译不过、运行不起来。

日常行为:程序员也经常是过于认真,不放过任何小细节,“打破沙锅问到底”,这有时会给周围的人造成压力。

例子:
Requesting clear spec for favors and errands. ‘Wait what do you mean by ‘some eggs’? What is the lower and upper bound?'”(老婆让去买些鸡蛋,会追问到底买几个啊?)

6.希望人们都和电脑一样循规蹈矩

职业原因:计算机会按照程序设定的方式运行,运行出错,那就是程序出Bug了。

日常行为:程序员有时会忽略人们是和电脑不一样的,人不可能完全按照逻辑和理性来做事,更多的是“跟着感觉走”。

例子:
Having to explain what a logical fallacy is, first, everytime someone says something completely wrong gets frustrating fast.(经常去解释逻辑上存在的错误,如果人们否定整个事情则很容易感到沮丧)

7.总是想到2的乘方

职业原因:计算机存储信息的基本单位是bit(比特)。二进制系统中,每个0或1就是一个bit。

日常行为:常常不以10进制而是以2进制进行计算。一些平常的日子在程序员眼里也变得很神奇,如程序员日就是每年的第256天(2^8),也有人推荐将每年的10月24日作为程序员日(2^10)。

例子:
Everything has to be in powers of 2.(一切皆为2的乘方)
Imagine you have 1,000 bucks; or better a round number—imagine you have 1,024 bucks.(假设你有1000块钱,最好这样说,假设你有1024块钱)

好啦,总结完毕了。

如果你有孩子,还会让他去当程序员么?

“我以后绝对不会让我的儿子也当程序员的。”三十二岁的程序猿老张心酸而又坚定的说。

“嗯,但是,”路人甲一针见血的指出了一个问题:“你有老婆吗?没有老婆怎么可能有儿子呢?”

老张:“……你大爷的!我的心好痛!”

注定孤独一生?

程序员A和程序员B的对话。

 

程序员A说:昨晚帮个美女装路由器,装到12点都没装好,美女对我说:“装不好就别装了,我们做点其他事情把!”我听了,顿时怒火就上来了,你他妈不是在考验我么?然后我快速的把路由器装好就回去睡觉了。

程序员B说:你做的对,昨晚我和一个女同事出差住旅馆,旅馆只有一张床了,我打算睡沙发,女同事对我说:“你跟我一起睡吧,不过不能做什么坏事情哦!”我听了,顿时怒火就上来了,你他妈这不是怀疑哥的人品么?然后我硬是在沙发睡了一晚。

简单说就是:“智商高 情商低?”

是呀,没事。就爱怼老板。

老板:汉字中,凡带三点水的,一定都有水,比如,江,河,湖,海……

程序猿:沙漠

老板:滚!

情商低的表现。

一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”
骑车的那个程序员说, “我刚从那儿过来, 有一个秀丽的姑娘骑着这个车过来, 并停在我跟前,把衣裳全脱了,然后对我说,‘你想要什么都可以’”。
另一个程序员马上说到, “你必定做了一个正确的选择, 因为那姑娘的衣裳你并不一定穿得了”。

宅也是我们的属性表现啊。

“嘿,兄弟,犯什么事进来的?”

“入室偷窃。”

“咋啦,被人赃俱获?”

“屁!货还没到手呢,刚进屋就冲出两宅男,亏我还观察那屋三天!”

宅-没朋友-更宅-更没朋友的死循环。

 

【彩蛋】

小小编辑送给乱弹精英和程序员的礼物。

请戳(这里

 

【小树的世界之旅】

1、三天前,家住南京大厂某小区的盛先生带爱犬外出,结果爱犬被小轿车撞伤,车主驾车溜了。受伤的狗儿“盛怒之下”,将盛先生及妻子咬伤。夫妻被狗咬伤,又找不到肇事者,气愤的盛先生拨打12345政府热线求助。南京化工园公安分局扬子派出所民警接到工单后,通过监控找到了肇事车辆及车主,虽然车主否认,但车前的裂痕及粘着的狗毛“作证”,车主不得不承认这一事故。

南京真是个动物乐园。

2、10月12日,山东潍坊昌乐交警的一次查酒驾行动中,一名执勤交警被喝了酒的司机用车顶着狂奔了10分钟,最后从车前盖滚落下来,差点要了交警的命。司机行为令人发指,警方迅速展开抓捕。第二天早上7点45分,两名嫌疑人最终落网。经审讯,驾驶轿车的男子马某,和副驾驶位置男子徐某是朋友。为了庆祝自己入职,俩人中午就多喝了几杯。马某、徐某两人口口声声说着心里害怕,可是当天晚上两人醒酒后,并没有立即投案自首,而是一起再赴酒局。

刚入职就要去牢里上班了

3、10月17日晚,马先生朋友的父亲过生日,一家人前往位于宝塔区的延安中益嘉汇酒店吃饭。“由于桌上的女士较多,就说喝啤酒,刚好车上放有两箱啤酒,我就搬一箱。”马先生说,当时带啤酒进去时,服务员并没告知要收“开瓶费”,等吃完饭结账时发现,总共花了1330元,其中“服务费”就有100元。8日下午他已将此事反映给延安市宝塔区消费者协会,消协已经立案调查。

干脆,你用枪指着每一位进店的掏他钱包就是了。

 

【小树的角色Play剧场】

(本期剧本导演: @ 树和伊文 ,友情客串:@ 唐力个糖

看CCTV的普法栏目剧

一个貌似是坏女人对着男主角脱掉浴袍

镜头还马上切到坏女人的后背

没错露背了,虽然打了点朦胧的效果

然后男主角瞄了一眼,慢慢脱去西装并把身子靠过去

我勒个擦后面就是床啊心想央视这是要逆天了

男主角突然把脱去的外套披在坏女人身上

说:我警告你再有下次,滚

然后就走了,就走了

@ 唐力个糖 不禁叹息了一声,突然发现原来@ 唐力个糖 是和妈妈一起看啊

妈妈质问@ 唐力个糖 :“你唉什么?”

早已看惯云淡风轻的@ 唐力个糖 马上说道:

堂堂中央电视台居然要拍出这么俗的东西真是无话可说了

然后@ 唐力个糖 还不屑地摇摇头走开。

 

情绪不好?

关注同学们的生理心理健康

请进入大家喜闻乐见的【小树医生心理生理医务室】

“如何让‘二狗’这个外号有不一样的感觉?”

“犬次郎。 ”

“那‘狗蛋’呢?”

“犬丸。”

—- ———分割线————– ——

晚上稀里糊涂的做了个很奇怪的梦,

梦见自己有了个小女儿,

哄了大半夜,累得要死。

最冤的是,醒了之后,死活想不起来孩子她妈是谁。

—- ———分割线————– ——

小时候家里很穷,每当看见邻居家的狗吃的比我还好,

我就暗下决心,以后一定要好好学习、努力工作,

争取给自己找到一个有钱的主人。

—- ———分割线————– ——

无她,唯手熟尔。

 

【看片】

当你注视深渊的时候,深渊也在注视着你。

手机党少年们想看视频,请使劲儿戳(这里)。

 

最受欢迎编程语言又是谁?C 语言居首,大数据赢了

C语言占据榜首,但大数据类是最大赢家。

IEEE Spectrum的第三次“最受欢迎编程语言”交互式排行榜新鲜出炉。因为不可能顾及到每一个程序员的想法,Spectrum使用多样化、可交互的的指标权重来评测每一种语言的现行使用情况。

数据记者Nick Diakopoulos从10个线上资源中选取了12个指标,这其中的每一个都能反映某一种编程语言在某一方面的受欢迎程度,加权这些指标就能得出一个排名。

何为“交互式”排名?

因为我们每个人都可能会看重不同的东西,比如大众最热衷在开源代码中使用什么语言?哪种语言的客户需求量最大?Spectrum的“交互式编程语言排行”让用户可以根据自己的喜好调整不同评价指标所占的权重,从而得到所需的排名。

用户还能根据自己的需要过滤榜单中的结果,例如我们可以选择只显示用于嵌入式系统和移动终端的语言。当然,用户既可以定制榜单中的每一项权重,也可以使用榜单预设的评价方案。

榜单中的默认预设是根据IEEE成员的平均兴趣权重来设定的,那么2016年Spectrum评选出的排名前十的编程语言都有哪些呢?

在连续两年屈居亚军后,C语言终于替代了Java榜首的位置。放眼前五名,Python和C++在3、4名上互换了位置,C#跌出前五,其位置由近几年上升势头迅猛的R语言所取代。近年来,包括R在内的大数据类编程语言总体呈现出一种上升趋势。

谷 歌和苹果在榜单上同样你追我赶,最新的榜单显示谷歌的Go语言击败了苹果的Swift并杀入前十,但swift的上升同样不容小觑,其今年排到了第11 位,相比于去年上升了5个排名。值得一提的是,去年曾有若干新兴编程语言和Swift一起初涉榜单,但今年却不见了它们的踪影。

其 他引人瞩目的变化包括Ladder Logic,它从去年的39名上升到了今年的34名。LadderLogic用于PLC(可编程逻辑控制器),尤其是在工厂中的PLC上应用较广。通常人 们认为编程语言在制造业中无利可图,然而Ladder Logic的成功揭示了编程语言在制造业应用中的巨大商机。

另外HTML仍然流行,今年排名上升到了第16位,之前有用户甚至还在担忧其是否能入选榜单(为准确起见,我们秉承着实用至上的原则,并且将编程语言定义为一种给计算机下指令的特殊语法——就算这种语法只是用于数据的结构化——我们并不要求编程语言是图灵完备的)。

在 退步名单里,最出人意料的当属Shell的衰落(Shell是一种统称,指对脚本的直接创造,通常为系统管理员所钟爱,常见的有bash shell等),其下降了7个名次落到了第19位。这种趋势或许反映了用于云端数据中心的复杂系统的发展壮大,但现在我们还不能妄下结论,我们还需要观察 下一年的排名来确定这种趋势是否会持续,抑或仅是一种统计学上的偶然结果。

注:

IEEE Spectrum:一本IEEE(美国电气电子工程师学会)出版的旗舰杂志,其中文版名为《科技纵览》,旨在探讨未来技术发展趋势及其对社会和商业的影响,主要内容为报道国际航空航天、计算机和电信、生物医学工程、能源和消费电子等领域的最新技术进展和成果。

PLC:可编程逻辑控制器,是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

图灵完备:Turing Completeness,一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。

稿源:dy.163.com

苹果的 Safari 已成为新的 IE

IE 一直以来都因为不兼容标准而遭人诟病,因为早期的 IE 占有率太高,IE 不支持的 html/js 特性网站就无法使用。

而现在 Safari 的状态和当时的 IE 非常相似,几乎也成了 HTML5 标准的公敌。

以 HTML5 的 Flexbox 为例,作为网页弹性布局重要的特性,开发者却因为 webkit 里存在大量 bug 而不能使用。

谷歌的 blink 引擎也从 webkit 继承了这些 bug,在两年时间里 blink 收到了数十个 bug 报告,bug 被修好后开发人员甚至提醒用户 safari 仍有 bug,建议不要使用。而谷歌之所以花一年多才修复也是因为 safari 不支持的特性没人会用,bug 优先级不高。

反观 safari,bug 出现一年后才有人提交报告,至今甚至都没有任何开发人员对 bug 进行 review 或评论,bug 状态仍是 new。经常有设计师在其他浏览器里做好的效果发现在 safari 布局完全错乱而不得不重新设计。和当年的 IE 一样,兼容标准对苹果并没有什么好处。迫使开发人员针对 iPhone 优化手机网页反而能增加用户粘性。比如网页在隐私模式下的行为,或者屏幕触摸事件的属性,等等功能,苹果都选择不遵照标准而采用自己的定义。

苹果发明了非标准的 viewport 标签用来定义网页在手机上的缩放,如今苹果自家对 viewport 的定义竟成了其他浏览器必须遵照特性。

回想当年乔布斯还反复强调 flash 要死,html5 是未来,简直滑稽可笑。

科技行业最有钱途 15 个职位:第一竟不是程序猿

北京时间8月21日消息,根据Comparably.com提供的数据,财经网站TheStreet列出了科技行业最赚钱的15个职位,看看你的工作在列吗,排在第几位?

销售工程师。平均工资:122110.18美元,平均奖金:38589.20美元,平均薪水总额:157510.19美元。BLS表示,销售工程师负责向其他企业出售“复杂的科技产品或服务”,这些专业人士必须广泛具有“产品部件和功能相关知识,必须系统了解制造这些产品的过程”。

创意总监。平均工资:136573.01美元,平均奖金:19913.54美元,平均薪水总额:146886.79美元。创意总监通常负责一个组织某一特定产品或服务的品牌战略及概念定位。创意总监在艺术、音乐、时尚和广告领域较为普遍,但现在的科技公司也逐渐引入了该职位。

销售经理。平均工资:101899.23美元,平均奖金:51843.01美元,平均薪水总额:145807.08美元。销售经理负责一个公司的销售团队。他们负责“制定销售目标,分析数据和开发培训项目”。

首席工程师。平均工资:134748.01美元,平均奖金:16580.14美元,平均薪水总额:143921.79美元。首席工程师头衔包括首席软件工程师和首席程序员,负责公司的一个或多个项目。

高级开发人员。平均工资:126663.10美元,平均奖金:19338.86美元,平均薪水总额:138234.22美元。开发人员代表了任何参与软件或Web开发的工程师,前面冠以“高级”,代表了领导角色。

数据科学家。平均工资:122356 .37美元,平均奖金:21284.69美元,平均薪水总额:135450.98美元。数据显示,数据科学家是2016年美国最好的工作之一。《哈佛商业评论》称该职业是“21世纪最性感的工作”。

销售代表。平均工资:78609.75美元,平均奖金:60841.21美元,平均薪水总额:131964.44美元。科技行业内销售代表的薪酬,是销售职业当中最高的。

高级营销经理。平均工资:118127.57美元,平均奖金:17080.30美元,平均薪水总额:130255.59美元。该职位职责包括产品开发、趋势监测、品牌管理、客户定位和收购等。BLS预测到2024年该职位需求增长将达到9%,高出平均水平。

项目经理。平均工资:116703.79美元,平均奖金:17625.52美元,平均薪水总额:127652.98美元。项目经理负责“项目提案、计划、状态报告和变更请求”,同时还需要具有良好的人际交往能力和谈判技巧。

DevOps。平均工资:117616.84美元,平均奖金:12869美元,平均薪水总额:124927.63美元。DevOps就是开发(Development) 和运维(Operations)这两个职位的合并,该职位强调软件开发和IT运营之间的沟通、协作和集成。

高级UI/UX设计师。平均工资:116038美元,平均奖金:12438.95美元,平均薪水总额:121946.50美元。UX(用户体验)设计师关心用户的对产品感觉如何,而UI(用户界面)设计师关注的是产品布局如何,不过二者的界限有利于模糊。

移动开发者。平均工资:111140.05美元,平均奖金:16225.41美元,平均薪水总额:117727.81美元。据ABI研究提供的数据显示,今年移动应用开发行业营收规模将达到460亿美元,意味该行业将对移动应用开发人员有着更高需求。

高级设计师。 平均工资:109901.03美元,平均奖金:14653.16美元,平均薪水总额:117422.99美元。硅谷图形设计师和计算机科学家约翰梅达 (John Maeda)称,由于设计和技术对用户体验的影响日益增强,两个领域的界限正在模糊。在软件开发领域,设计师的作用正显得愈发重要。

人力资源经理。平均工资:98893.25美元,平均奖金:13129美元,平均薪水总额:106860.77美元。BLS表示,到2024年,人力资源经理需求将增长9%,“确保公司能够赶上不断变化且复杂的就业法律”。

开发人员。 平均工资:96220.28美元,平均奖金:12358美元,平均薪水总额:102625美元。美国劳工统计局(BLS:Bureau of Labor Statistics)表示,由于不断增长的计算机软件需求,到2024年,软件开发人员需求将增长17%,远超其他所有职位增长平均水平。

出处:凤凰科技

最新最准确各大搜索引擎蜘蛛名称(转)

1、百度蜘蛛:Baiduspider
网上的资料百度蜘蛛名称有BaiduSpider、baiduspider等,都洗洗睡吧,那是旧黄历了。 百度蜘蛛最新名称为Baiduspider。日志中还发现了Baiduspider-image这个百度旗下蜘蛛,查了下资料(其实直接看名字就可以 了……),是抓取图片的蜘蛛。
常见百度旗下同类型蜘蛛还有下面这些:Baiduspider-mobile(抓取wap)、Baiduspider-image(抓取图片)、Baiduspider-video(抓取视频)、Baiduspider-news(抓取新闻)。
注:以上百度蜘蛛目前常见的是Baiduspider和Baiduspider-image两种。
2、谷歌蜘蛛:Googlebot
这个争议较少,但也有说是GoogleBot的。谷歌蜘蛛最新名称为“compatible; Googlebot/2.1;”。还发现了Googlebot-Mobile,看名字是抓取wap内容的。
3、360蜘蛛:360Spider,它是一个很“勤奋抓爬”的蜘蛛。
4、SOSO蜘蛛:Sosospider,也可为它颁一个“勤奋抓爬”奖的蜘蛛。
5、雅虎蜘蛛:“Yahoo! Slurp China”或者Yahoo!
名称中带“Slurp”和空格,名称有空格robots里名称可以使用“Slurp”或者“Yahoo”单词描述,不知道有效无效。
6、有道蜘蛛:YoudaoBot,YodaoBot(两个名字都有,中文拼音少了个U字母读音差别很大嘎,这都会少?)
7、搜狗蜘蛛:Sogou News Spider
搜狗蜘蛛还包括如下这些:Sogou web spider、Sogou inst spider、Sogou spider2、Sogou blog、Sogou News Spider、Sogou Orion spider,
(参考一些网站的robots文件,搜狗蜘蛛名称可以用Sogou概括,无法验证不知道有没有效)
看看最权威的百度的robots.txt ,http://www.baidu.com/robots.txt 就为Sogou搜狗蜘蛛费了不少字节,占了一大块领地。
“Sogou web spider;Sogou inst spider;Sogou spider2;Sogou blog;Sogou News Spider;Sogou Orion spider”目前6个,名称都带空格。
线上常见”Sogou web spider/4.0″ ;”Sogou News Spider/4.0″ ;”Sogou inst spider/4.0″ 可以为它颁个“占名为王”奖。
8、MSN蜘蛛:msnbot,msnbot-media(只见到msnbot-media在狂爬……)
9、必应蜘蛛:bingbot
线上(compatible; bingbot/2.0;)
10、一搜蜘蛛:YisouSpider
11、Alexa蜘蛛:ia_archiver
12、宜sou蜘蛛:EasouSpider
13、即刻蜘蛛:JikeSpider
14、一淘网蜘蛛:EtaoSpider
“Mozilla/5.0 (compatible; EtaoSpider/1.0; http://省略/EtaoSpider)”
根据上述蜘蛛中选择几个常用的允许抓取,其余的都可以通过robots屏蔽抓取。如果你暂时空间流量还足够使用,等流量紧张了就保留几个常用的屏蔽掉其它蜘蛛以节省流量。至于那些蜘蛛抓取对网站能带来有利用的价值,网站的管理者眼睛是雪亮的。
另外还发现了如 YandexBot、AhrefsBot和ezooms.bot这些蜘蛛,据说这些蜘蛛国外噶,对中文网站用处很小。那不如就节省下资源。

程序员入门必读:编程语言争霸 霸主是他

世界上的语言有千万种,但是却不只有汉语、英语、法语和俄语,还有Java、C++、Python和PHP。计算机的快速发展,使编程成为一种职业,程序员也成为近年来备受关注的一种职业。

语言争霸 谁为王?

在编程世界中,也有着不同的门派,各个门派都在强调自己是武林独尊,互不相让。今天笔者无意挑起武林争端,却要给那些想成为程序员的莘莘学子一个建议,参考备受认可的TIOBE编程语言社区最新排行榜,推荐十款备受关注的编程语言供大家选择,总有一款适合你的。

TIOBE世界编程语言排行榜(2016年3月)

1、Java

相信Java是很多非专业编程人员也听说过的语言,仅这一点看来,就足以证明Java的知名度。Java最初由SUN公司推出,并将其定位在简单、开放、高性能的语言。Java是一个纯粹面向对象的程序设计语言,与C++语言面向对象技术很像,同时Java虽然推出与1995年,属于编程语言中的“老者”,但是,Java一直在做内部的迭代,这也是Java经久不衰的重要原因。Java广泛应用在PC、数据中心、超算平台、游戏和移动等领域。

Java

2、C/C++

笔者这里将本是同根生的C语言和C++列到了一起,因为C++本就是C的增强版,但是其出现后迅速获得了大量的支持者,进而成为一种独立的语言。C++语言灵活,运算符的数据结构丰富、高效,且是一种可移植的多用途程序设计语言。他主要用于系统开发、引擎开发、嵌入式软件、高性能服务器和娱乐软件领域。C语言和C++分别位于TIOBE世界编程语言排行榜中的第二名和第三名,编程语言第一名为Java(以2016年3月为准)

C/C++

3、C#

C#是微软公司开发的面向对象的、运行于.NET Framework之上的高级程序设计语言。C#继承了C家族强大功能的同时,去除了其中复杂的特性。可能有人会说C#与Java太像了,的确,但是他同时借鉴了Delphi的特点:与com是直接集成的,同时它也是微软.NET windows网络框架的主角。更现代化的C#也曾一度挤入TIOBE世界编程语言排行榜的前三名,不过在最新一次的排行中,C#屈居第四。

C#

4、Python

Python是比Java更古老的语言,发明与1989年,是一款纯粹的自由软件。Python最大的特点莫过于其强大的库,Python丰富的第三方库资源就是它的优势,Python库能够简化程序员的编程过程,节省时间。

在2016年年初,Python火了一把。主要原因是,美国科学家成功监测出引力波,引力波研究机构LIGO在检测过程中使用了这个语言,并将其(GWPY)公布在GitHub上。根据第三方机构TIOBE的排名显示,Python与去年同期相比上升了三名,跻身前五。

Python

5、PHP

PHP也叫做超文本预处理器(Hypertext Preprocessor),其语法吸收了Java、C语言的优点,同时也自创了PHP新语法,支持几乎所有流行的数据库和操作系统。PHP属于开源脚本语言,所以是完全免费的,PHP源代码也能够看得到。PHP的便捷性让新手学习起来十分容易上手,而且程序开发快运行快,经常用于Web开发。

PHP

6、Visual Basic .NET

Visual Basic .NET在2014年开始挤入排行榜前十名,而在最新版当中,Visual Basic .NET更上升到第7名。Visual Basic .NET作为微软Visual Basic 6.0 version的继承者,一直备受压力,在发布之处甚至受到一些开发者抵制。很多开发者表示,VB.NET丢到了很多VB6中的constructs和用户界面功能,并没有很好的继承VB6的优点;但微软似乎在吧VB .NET作为一个全新的语言,目前看来也取得了不错的成绩。

Visual Basic .NET

7、JavaScript

这个看起来很像Java的编程语言JavaScript(以下简称:JS)是由Java压法公司Sun和Netscape合作完成的。主要目的是为了解决服务器端语言遗留的速度问题(如Perl),为用户提供更优的浏览效果。

同时,今年也是JS最受欢迎的库jQuery也迎来了自己十周岁生日,jQuery虽然只发布之日起就备受争议,但似乎已成为JB的“默认事实标准”。

JavaScript

8、Perl

Perl也被称为“实用报表提取语言”(Practical Extraction and Report Language),其最初设计者为为拉里·沃尔(Larry Wall),其貌不扬却拥有天才般的开发能力,拉里·沃尔曾表示:”无论你们怎么评论,我仍然爱她!”如今,Perl也从最初的发布到现在走过了近三十年。Perl最重要的特性就是内部集成了正则表达式的功能,拥有强大的第三方代码库CPAN。同时,Perl的解释程序是开放源代码的,所以使用者不用为费用问题而担心。

Perl

9、Ruby

Ruby有日本人研发,最初由于语言不通,受到很多人的诋毁,但随着Ruby的更新和非日文资料的增多,Ruby逐渐开始被接纳。Ruby也有红宝石的含义,其logo也是一颗红宝石,而其语言本身也如红宝石般优雅,十分美丽。与JAVA不同,Ruby是一种动态的,侧重于简单高效的开源的语言。Ruby的设计者认为,减少编程时不必要的琐碎时间很有必要,所以简便、人性化成为Ruby的一大特性。

Ruby

10、Swift

Swift虽然在最新的TIOBE榜单中排位14名,但是相比去年3月的24名,进步速度可谓飞快。Swift拥有Python的易用性,还有Objective-C、C++和Ruby的影子。Swift一直是苹果生态系统中的一员,直到去年WWDC大会上,苹果宣布开源自己的Swift语言;Swift语法十分简单,且高效强大,但是他同样有一个缺点就是,只能运行在苹果的系统中(OS X和iOS)。

你用的是哪个编程语言?

总结:所谓术业有专攻,不同的程序员选择了不同的语言种类,对于任何一个想要学习编程语言的人来说,应该去选择适合自己工作场景的语言。这里给读者推荐了现在最流行的十款编程语言,你可以选择最适合自己的那个进行学习。

2015 年 JavaScript 开发者调查报告

年底将至,JavaScript 开发者调查也已经结束,此次调查总共有 5000 份回复,我真的迫不及待要分享这次调查的细节,感谢所有的参与者,这是 JavaScript 社区伟大的时刻。

你写什么类型的 JavaScript?

97.4% 的受访者写 JavaScript 的 Web 浏览器,其中有 37% 写移动 Web 应用。

一些参与者回复,他们会在其他地方用 JavaScript,特别是在开发中的 CLI 和桌面应用。有少部分还会在 Pebble 和 Apple TV 上开发。这些归类到其他类别上,占总选票的 2.2%。

An screenshot of the percentages for the first question

你在哪使用 JavaScript?

不出我所料,94.9% 的投票者用 JavaScript 工作。然而,有 82.3% 的投票者也在其他项目中使用 JavaScript。其他回复包括教学,好玩或者非盈利目的使用。

An screenshot of the percentages for the second question

你写 JavaScript 多久了?

超 过 33% 的人写 JavaScript 代码超过六年了。除去那些精准回答的选票,5.2% 在一年前开始写 JavaScript,12.4% 两年前开始写 JavaScript,还有 15.1% 三年前写 JavaScript。总共有 32.7% 的人在近几年开始写 JavaScript。

An screenshot of the percentages for the third question

你使用哪种 complie-to-JavaScript 语言,如果有的话?

85% 参与者表示,他们将 ES6 编译为 ES5。同时有 15% 使用 CoffeeScript,有 15.2% 用 TypeScript,只有可怜的 1.1% 使用 Dart。

这是我想要进一步合作的问题之一,因为它有 13.8% 的“其他”回复。这个问题绝大多数的答案是 ClojureScript、elm、Flow 和 JSX。

An screenshot of the percentages for the fourth question

你喜欢哪种 JavaScript 文体选择?

JavaScript 开发者绝大多数似乎青睐分号,总共有 79.9%。相比之下,11% 的人表示他们不喜欢使用分号。说到逗号,44.9% 的人赞成放置后的表达,而 4.9% 的人喜欢用逗号第一语法。当涉及到缩进,65.5% 更喜欢空格,而 29.1% 的人更喜欢使用制表符。

An screenshot of the percentages for the fifth question

你使用 ES5 哪个功能?

有 79.2% 的人使用 Array methods,并且有 76.3% 的人使用 strict mode。30% 的人使用 Object.create,而 getter 和 setters 只有 28% 的人使用。

An screenshot of the percentages for the sixth question

你使用 ES6 哪个功能?

值得注意的是,Arrow functions 是本次调查中最常用的 ES6 特点,占了总票数的 79.6。Let and const
总共占 77.8% 的投票,Promise 功能依旧强劲,有 74.4 %的人选择了它。不出人意料的是,只有 4% 的人使用 proxies。只有 13.1% 的人用 Symbols,超过 30% 的人使用 Iterators。

https://i.imgur.com/okcvuos.png

你写测试吗?

有 21.7%  的人来不写任何测试,大多数人写一些测试,34.8% 经常写测试。

An screenshot of the percentages for the eighth question

你运行连续集成测试吗?

和 CI 一样,很多人不用 CI 服务器 —— 超过了 40%。有 60% 的人偶尔使用 CI,有 32% 的人在 CI 服务器上运行测试。

An screenshot of the percentages for the ninth question

你怎么运行测试

59% 的人喜欢运行和 PhantomJS 相似的自动化浏览器测试,51.3% 的人也喜欢在网络浏览器上人工测试。自动化服务器端测试则占了 53.3% 的得票。

An screenshot of the percentages for the tenth question

你用什么单元测试库?

大多数人要么选择 Mocha 要么选择 Jasmine 运行 JavaScript 测试,Tape 收到 9.8% 选票。

An screenshot of the percentages for the eleventh question

你用什么代码质量工具?

似乎参与者都在 ESLint 和 JSHint 之间纠结,不过 JSLint 经过了这么多年依旧坚挺,几乎有 30%。

An screenshot of the percentages for the 12th question

你怎么处理客户端的依赖?

Npm 接管客户端依赖管理体系,拥有 60% 的选票。Bower 依旧占据了 20% 的选票,而普通的 <script> 下载和插入获得13.7% 的选票。

An screenshot of the percentages for the 13th question

你首选的构建脚本解决方案是什么?

Gulp 最流行,超过 40% 的投票。接下来的是 NPM,为 27.8%, Grunt 获得了 18.5% 的选票。

An screenshot of the percentages for the 14th question

你首选的 JavaScript 加载工具时什么?

大多数参与者在 Browserify 和 Webpack 之间徘徊,而后者领先前者 7 个百分点。

An screenshot of the percentages for the 15th question

你用什么库?

jQuery 依旧强劲,占据票数 50% 以上,而 XHR 微库只有票数的 8%。

An screenshot of the percentages for the 16th question

你用什么框架?

不出人意料,React 和 Angular 处于领先地位。Backbone 也在靠前的位置,有 22.8% 的选票。

An screenshot of the percentages for the 17th question

你用 ES6 吗。。。

有 20% 的人几乎从不使用它,有 40% 的人偶尔使用,接近 30% 的人广泛使用。

An screenshot of the percentages for the 18th question

你知道 ES2016 有哪些特性吗?

粗略地说,有一半的人不知道 ES2016  有哪些新特性。

An screenshot of the percentages for the 19th question

你理解 ES6 吗?

超过 60% 的人理解基本的概念,有 10% 的人完全不理解,有 25% 的人理解 ES6。

An screenshot of the percentages for the 20th question

你会说 ES6  是一种进步吗?

近 95% 的人认为 ES6 是一种进步。

An screenshot of the percentages for the 21th question

你首选文本编辑器是什么?

超过一半的人喜欢 Sublime Text,超过 30% 喜欢 Atom 和它的开源复制版。超过 25%  WebStorm  和 vi/vim。

An screenshot of the percentages for the 22th question

你首选的开发系统是什么?

超过 60% 的人用的是 Mac,而 Linux 和 Windows 用户接近 20%。

An screenshot of the percentages for the 23th question

你如何找到可重用代码,库和工具?

受访者似乎赞成使用 Github 和搜索引擎,也有用博客、Twitter 和 npm  网站。

An screenshot of the percentages for the 24th question

你参与 JavaScript 社交事件吗?

近 60% 的人至少参加一个会议,而 74% 的人表示,他们喜欢去的聚会。

An screenshot of the percentages for the 25th question

你的 JavaScript 应用程序里支持什么浏览器?

很多样的答案,但幸运的是大多数的受访者没有使用 IE6 了

An screenshot of the percentages for the 26th question

你了解 JavaScript 的定期最新的功能吗?

当 JavaScript 有更新时,80% 受访者保持会去了解。

An screenshot of the percentages for the 27th question

你在哪里了解最新的 JavaScript 功能?

Mozilla 开发者网络在 JavaScript 领域和新闻更新上处于领先地位。JavaScript 周刊也非常流行,占了 40%。

An screenshot of the percentages for the 28th question

这些功能你听说过吗?

超过 85% 的选民听说过 ServiceWorker,我很好奇有多少人用它!

An screenshot of the percentages for the 29th question

除了 JavaScript,你还用什么语言?

有这么多的语言可供选择,我肯定会忘了一些,但结果不言自明。

An screenshot of the percentages for the 30th question

不管你在哪里上班,请记住以下黄金定律!

01. 不为模糊不清的未来担忧,只为清清楚楚的现在努力。

02. 只有先改变自己的态度,才能改变人生的高度。

03. 在抱怨自己赚钱少之前,先努力,学着让自己值钱。

04. 学历代表过去,学习能力才代表将来。

05. 耐得住寂寞才能守得住繁华,该奋斗的年龄不要选择了安逸。

06. 有些事情不是看到希望才去坚持,而是坚持了才看得到希望。

07. 压力不是有人比你努力,而是比你牛几倍的人依然在努力。

08. 你所做的事情,也许暂时看不到成功,但不要灰心,你不是没有成长,而是在扎根。

09. 现实和理想之间,不变的是跋涉,暗淡与辉煌之间,不变的是开拓。

跳槽穷半年,改行穷三年。献给每天喊辞职、想辞职的人或周期性喊辞职、想辞职的人!

1,不要轻易离开团队,否则你要从零做起 。

2,不要老想着做不顺就放弃,哪个团队都有问题,哪个团队都有优点。

3.跟对领导很重要,愿意教你的,放手让你做的领导,绝对要珍惜。

4.团队的问题就是你脱颖而出的机会,抱怨和埋怨团队就是打自己耳光,说自己无能,更是在放弃机会 !

5.心怀感恩之心,感谢系统给你平台,感谢伙伴给你配合。

6.创造利润是你存在的核心价值,创业不是做慈善 。

7.遇到问题请先思考,只反映问题是初级水平,思考并解决问题才是高级水平。

坚持不一定成功,坚持到底一定成功! 好好工作吧!

学会说话,给人温暖,给人鼓励,给人赞美,

给人信心,给人方便,给人希望,给人智慧!

2016年,不管你在哪里上班,请记住这个字!

第一则:

工作不养闲人,团队不养懒人。

第二则:

入一行, 先别惦记着能赚钱, 先学着让自己值钱。

第三则:

没有哪个行业的钱是好赚的。

第四则:

干工作,没有哪个是顺利的,受点气是正常的。

第五则:

赚不到钱,赚知识;

赚不到知识,赚经历;

赚不到经历,赚阅历;

以上都赚到了 就不可能赚不到钱。

第六则:

只有先改变自己的态度,才能改变人生的高度。

只有先改变自己的工作态度,才能有职业高度。

第七则:

让人迷茫的原因只有一个

——那就是本该拼搏的年纪,却想得太多,做得太少!

送君一个字:干!

本文整理自网络

版权归原作者所有,向原作者致敬!

15 位健在的牛叉程序员,你知道哪几位?

现如今程序员是越来越多了,所以优秀的程序员也是越来越多了。但是他们中哪些才是顶尖中的顶尖呢?

其实要明确地指出“哪一个”程序员是最优秀的,这几乎不太可能,但是业内的开发者们还是对这个话题乐此不疲。ITworld 就通过投票,以及对其他国外社区(比如 Quora、Reddit)中的数据进行分析,来判断排名和分析是否一致。结果,有一些名字确实在大家的讨论中反复出现。

下面就让我们来看看依然健在的最受大家认可的 15 位优秀程序员:

(小编先补充声明,下面排序并不是按个人成就。如果你喜欢的大牛排在后面了,别纠结别激动 ~≧▽≦~ )

1. Margaret Hamilton

主要成就:阿波罗计划飞行控制软件的幕后英雄

上榜理由:作为 Charlse Stark Draper 实验室软件工程部门的主任,她领导她的小组为 NASA 的阿波罗计划和Skylab任务设计并开发了飞行控制软件。基于在阿波罗计划中的工作成就,她随后研发了通用系统语言和 DBTF 开发范式。她开创性地提出了“异步软件、优先调度、以及高可信度软件设计”等概念。这些都成为日后“软件工程”的基础。她是1986年Augusta Ada Lovelace奖的获得者,并且在2003年获得了NASA杰出空间表现奖。

网友评价

  • ford_beeblebrox:Hamilton发明了软件测试,她可以算得上是美国计算机工程的创始人。
  • Dan Allen:我认为在她所做出成就之前(恕我冒昧,因为Knuth也被包括在这个范围当中),计算机编程(以及其相关的东西)都还只是数学的一个分支。然后一套航天飞行器的飞行控制软件清晰地把编程带向了一个不同的范式领域。
  • David Hamilton: …是她创造了“软件工程”这个词,然后又用例子告诉大家怎么做
  • Drukered:她太厉害了

推荐阅读

《就是这个美女程序员,写出了让阿波罗成功登陆月球的代码!》

(旁边是「著作等身」的阿波罗制导系统的代码)

2. Donald Knuth

主要成就:《计算机编程艺术》的作者

上榜理由:他写了一本关于计算机编程理论的决定性著作,发明了 TeX 数字排版系统。他是1971年第一届ACM Grace Murray Hopper奖的获得者(译者注:美国海军女少将 Grace Murray Hopper 也绝对是载入史册的计算机科学家和顶级程序员,可惜她已经去世,因此没有列入本文名单)。并且是计算机最高奖ACM图灵奖获得者(1974)(要知道当时 他才36岁),还是1979年美国国家科学奖章获得者以及IEEE冯诺依曼奖章获得者(1995)。并在1998年被任命为计算机历史博物馆名人堂成员。

网友评价:

  • 匿名:写《计算机编程艺术》这本书,估计是有史以来关于计算机编程最复杂的工作。
  • Jaap Weel:在我用过的计算机软件里面,只有一种是几乎没有 bug 的,那就是Don Knuth编写的TeX。这太让人印象深刻了。
  • 伯小乐补充:关于 TeX 几乎没 Bug,是真事。高德纳再一次用行动宣告,我这个东西(TeX),不可能再有什么大的改进了,最多只能小修小补,使其趋近完美。他还专门设立了奖金:谁发 现Tex的一个Bug,就付他2.56美元,第二个错误5.12美元,第三个10.24美元。请看此文:《程序员单枪匹马做的最复杂/重要的程序,是哪 个?》。不过真的有人拿到他的支票了。
  • Mitch Ree-Jones:让我评价他的话,那就是优秀得让人难以置信。

推荐阅读:

《程序员单枪匹马做的最复杂/重要的程序,是哪个?》、《高德纳谈计算机程序设计艺术(上)》和《高德纳谈计算机程序设计艺术(下)》

3. Ken Thompson

主要成就:Unix 缔造者

上榜理由:和 Dennis Ritchie 一起,共同缔造了Unix操作系统。他是 B 语言的发明人,以及 UTF-8 字符编码规范和 ed 文本编辑器的发明人。同时他还是 Go 编程语言的共同开发者之一。他和 Dennis Ritchie 一起获得了1983年的ACM图灵奖,1994年的IEEE计算机先锋奖和1998年的美国国家技术奖章。1997年他正式成为美国计算机历史博物馆名人 堂成员。

网友评价:

  • Pete Prokopowice:…他很可能是有史以来最成就卓著的程序员。(他的成就包括:)Unix内核,Unix工具,计算机国际象棋世界冠军Belle、Plan 9、Go语言.”
  • Jan Jannink:Ken的贡献远远超过了我们的想象,他的工作是业界的根基,其作用之大,持续时间之久,时至今日还在影响着我们的生活。

4. Richard Stallman

主要成就:Emacs 和 GCC 的缔造者

上榜理由:他创立了GNU项目,并为其开发了很多核心工具,例如Emacs、GCC、GDB 等等,还有 GNU Make。他还创立了自由软件基金会。他是1990年ACM Grace Murray Hopper奖获得者,1998年EFF先锋奖获得者。

网友评价:

  • Srinivasan Krishnan:…在当年Symbolic公司和LMI公司的那场Lisp Machine纠纷中,他展示出了以一当百的编程实力
  • (黄小非补充:这是一个非常传奇的故事,当年Richard Stallman在麻省理工(MIT)的人工智能实验室工作,该实验室的重要成果之一就是Lisp Machine。后来,实验室中的两拨科学家分别下海创业,创立了Lisp Machine Inc. ,也即是LMI,以及Symbolic公司。这两家公司的主要业务都是基于Lisp Machine的,而且和MIT也签了约,说好了MIT授权他们使用Lisp Machine,而两家对Lisp Machine做的改进也授权MIT使用,互惠互利。可是,没想到后来Symbolic公司想另起炉灶,于是仿照Lisp Machine的功能自己重新研发了一个仿制品,日后再开发的软件产品就是基于这个仿制品系统而不是MIT的Lisp Machine了,这样也就不用与MIT和LMI再相互交换成果了。这个举动让Richard Stallman非常愤怒,他决定收拾一下Symbolic这个被金钱冲昏头脑的公司,于是他就盯着Symbolic的新产品推出情况,只要 Symbolic一发布新产品,他就马上在动手在Lisp Machine上做一个功能一样的送给MIT和LMI使用。一般Sybmolic推出的新软件,Richard Stallman自己一个人花个几天就能做出一个功能一模一样的。他的这种方式和工作效率曾经让Symbolic公司一度非常恼火。)
  • Dan Dunay:“他对编程的理解和他思想的光辉是如此强大,以致于形成了一套完整的计算机编程亚文化体系”
  • Marko Poutiainen:他是个伟大的,虽然我并不是对他百分百的认同,但是必定是历史上最重要的程序员之一,无论在他身前身后都是如此。
  • John Burnette:你想想假设Linux写出来的时候,GNU项目还不存在的话,会是什么情况?所以Stallman才是老大,耶~

5. Anders Hejlsberg

主要贡献:Turbo Pascal 的缔造者、C# 之父

上榜理由:他是Turbo Pascal的真正创始人。Turbo Pascl可谓是历史上最受欢迎的编译器之一,也是首个集成开发环境(IDE)。随后,他主导开发了Turbo Pascal的继任者——Delphi。他还是 C# 的首席构架师。2001年,他获得了Dr. Dobb’s杂志颁发的“杰出编程奖”。

网友评价:

  • Steve Wood:他当年用汇编语言代码写了Pascal编译器,同时支持当时PC机上的两种主流操作系统(DOS和CP/M)。他的编译器把编译,链接程序的时间从分钟级别提速到了秒级别。
  • Stefan Kiryazov:我崇拜这个家伙,在我成长为职业软件工程的三个关键阶段,每个阶段最喜爱的工具都出自他的创造。

6. Doug Cutting

主要成就:Lucene 的缔造者

上榜理由:他开发了Lucene搜索引擎,Nutch网络爬虫引擎以及Hadoop分布式大数据处理工具。他是开源项目的拥趸(Lucene,Nutch和Hadoop都是开源的)。他还担任过Apache软件基金会的总监。

网友评价:

  • Rajesh Rao:…他就是写出杰出搜索引擎框架(Lucene/Solr)的那个人。他为世界打开了大数据之门(Hadoop)。
  • Amit Nithianandan:他在Lucene和Hadoop上的创新性工作(当然也包括其他项目),为世界创造了巨大的财富和众多就业机会…

推荐阅读:

《Lucene五分钟教程》

7. Jeff Dean

主要成就:

Goolge搜索索引技术的幕后大脑。

上榜理由:他参与设计和实现了Google许多大型分布式系统,包括网络爬虫,索引和搜索,AdSense, MapReduce, BigTable和Spanner。他被选获得2009年的美国国家工程学院奖。2012年获得ACM SIGOPS Mark Weiser奖和ACM-InfoSys基础奖(计算机科学类)。

网友评价:

  • Natu Lauchande:…他在数据挖掘方面取得了重大突破(GFS, MapReduce, BigTable)
  • Erik Goldman: …他设计,实现并部署了MapReduce和BigTable,还有无数其他的东西。
  • 伯小乐补充:「Jeff Dean 是直接写二进制机器代码的,他写源代码,是为了给其他开发人员作参考」。这句是出自《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》的趣评。

推荐阅读:

《谷歌大牛Jeff Dean是如何成为互联网战神的》和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》

8. Sanjay Ghemawat

主要成就:举足轻重的Google架构师

上榜理由:他参与设计和实现了Google的大型分布式系统,包括MapReduce、Bigtable、Spanner和 Google文件系统。他还编写过Unix的ical日历系统。他于2009年获选进入的美国国家工程院。2012年赢得了ACM计算机科学信息系统基础 类奖。

网友评价:

  • Ahmet Alp Balkan:他是 Jeff Dean 的左膀右臂。

9. Linus Torvalds

主要成就:Linux 之父

上榜理由:他创建了Linux 内核 以及 Git(一个开源的版本控制系统)。他是众多奖项和荣誉的获得者,包括:1998年EFF先锋奖,英国计算机社区Lovelace奖章 (2000年),千禧技术奖金(2012年)以及IEEE计算机社区计算机先锋奖(2014年)。他还于2008年被提名计算机历史博物馆名人堂成员,以 及2012年Internet名人堂成员。

网友评价:

  • Erich Ficker:「为了说明他的成就,让我们来做个对比吧。他花了几年的时间就完成了Linux内核的编写,与此同时GNU Hurd项目(一个GNU自己开发的内核项目)已经发展了25年了,却还只停留在预发布的demo阶段。」
  • Dan Allen:「Torvald是程序员中的程序员。」
  • Alok Tripathy:「他太他*的优秀了!」

推荐阅读:

《Linus:23年前我开发Linux仅仅是因为好玩》和《Git 10 周年访谈:Linus 讲述背后故事》,更多请点击这里。

10. John Carmack | 约翰·卡马克

主要荣誉:Doom 之父

主要成就:他是id Software的联合创始人,他开发出了极具影响力的FPS游戏:《德军总部3D》、《毁灭战士》和《雷神之锤》。他是计算机图形技术领域的先锋,在图 形学上多次取得重要突破:包括自适应性图块刷新(adaptive tile refresh),二叉空间分割(BSP),以及表面缓存技术等等。他在2001年入选交互式艺术与科学学院名人堂,并在2007年和2008年两次获得 艾美奖工程和技术类奖项,并于2010年获得游戏开发者选择终身成就奖。

网友评价:

  • Alex Dolinsky:”他在20岁之前就写出了第一个渲染引擎。这家伙是个天才。我希望我有他1/4的功力就好了。“
  • dniblock:「《德军总部3D》、《毁灭战士》和《雷神之锤》在那个时代都是革命级的游戏,并且影响了一代游戏设计师。」
  • Greg Naugthon:”给他一个周末,他能做出任何东西。“
  • Chris Morris:”他就是编程界的莫扎特”

推荐阅读:

《大牛约翰·卡马克语录》和《卡马克:用C++进行函数式编程》

11. Fabrice Bellard

主要成就:QEMU 缔造者

上榜理由:他是许多著名开源软件程序的作者,包括QEMU——一个硬件模拟和虚拟化平台,FFmpeg——用于处理多媒体数据,以及一个Tiny C编译器,还有LZEXE,一个可执行程序压缩器。他是2000年和2001年混乱C代码竞赛的冠军,以及2011年Google-O’Reilly开源 奖获得者。他还曾经是计算圆周率位数最多的世界纪录保持者。

网友评价:

  • raphinou:“我觉得Fabrice Bellard的工作实在是太卓著和令人印象深刻了”
  • Pavan Yara:“Fabrice Bellard是全世界最高产的程序员…”
  • Micheal Valladolid:”他是软件工程界的尼古拉特斯拉“
  • Michael Biggins:”他是20世纪80年代以来产生的一位持续高产的程序员“

推荐阅读:

《天才程序员 Fabrice Bellard》

12. Jon Skeet

主要成就:StackOverflow 上的传奇贡献者

上榜理由:他是Google工程师,《C# in Depth》的作者。他保持者StackOverflow有史以来的最高声望,他平均每个月在StackOverflow上回答390个问题。

网友评价:

  • Steven A. Lowe:”Jon Skeet根本不需要调试器,他只要一直瞪着代码,然后代码就会自己出来坦白哪里出错了。“
  • Dan Dyer:”Jon Skeet的代码如果无法通过编译,那编译器就该出来道歉了。“
  • 匿名:”Jon Skeet的代码不需要遵守任何代码规范,因为他的代码本身就是规范。“
  • 伯小乐补充:上面这些评价,和《趣文:谷歌大牛Jeff Dean的那些“惊人真相”》这篇文章的趣评一个风格呀。

13. Adam D’Angelo

主要成就:Quora 联合创始人

上榜理由:他是Facebook的工程师,为Facebook构建了News Feeds 的最初基础设施。后来他成为了Facebook的CTO以及工程副总裁,接着他从Facebook离职联合创立了Quora。2001年,他以高中生的身 份成为了美国奥利匹克信息竞赛排名第八的选手。在2004年的ACM国际大学生编程竞赛中,他是加州理工大学银牌优胜队的成员之一。他还在2005年 Topcoder大学生挑战赛中闯入了算法编程竞赛的最终决赛轮。

网友评价:

  • 匿名:”他是一个‘全能’程序员”
  • Mark Zuckerberg:“他是我说的六个人之一。”
  • (黄小非补充:在创立Facebook之初,Mark Zuckerberg认为世界上只有6个人能够理解他创立Facebook的思想,当时他就盯上了在加州理工上学的Adam D’Angelo,认为他是6个人之一。)

14. Petr Mitrechev

主要荣誉:全世界最有竞赛能力的程序员

上榜理由:国际奥林匹克信息竞赛两次金牌得主(2000,2002)。2006年,他赢得了Google代码挑战赛和TopCode算法公开赛冠 军。另外,他还是两次Facebook Hacker Cup的得主(2011,2013)。在这篇文章发布的时候,他是TopCoder上算法总排名第二的参赛者(id叫Petr)并且在 Codeforces的总排名也是第二。

网友评价:

  • Kavish Dwivedi:「他就是竞赛型程序员的偶像,即使是在我们印度…」

15. Gennady Korotkevich

主要成就:编程竞赛的奇才

上榜理由:他是国际奥林匹克信息竞赛创办以来最年轻的参赛者(11岁)以及6次金牌获得者(2007-2012)。2013年ACM国际大学生编程 竞赛优胜队的成员之一,2014年Facebook Hacker Cup的赢得者。在本文编写是,他是Codeforces排名第一的选手(id:Tourist)以及Topcode算法竞赛者中的第一名

本文转载自: http://www.techug.com/good-programmers
(本站只作转载,不代表本站同意文中观点或证实文中信息)

Oracle与Mysql的高级查询与难点sql

Oracle与Mysql的高级查询与难点sql
mysql查询杨凯专属频道OracleSQL
一、连接查询
1.内连接
内连接用于返回满足连接条件的所有记录。默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接。
Sql代码
  1. SELECT a.dname,b.ename from dept a,emp b where a.deptno=b.deptno and a.deptno=10;
在FROM子句中指定INNER JOIN选项,也可以指定内连接。
Sql代码
1. SELECT a.dname,b.ename from dept a INNER JOIN emp b where a.deptno=b.deptno and a.deptno=10;
从Oracle9i开始,如果主表的主键列和从表的外部键列名称相同,那么可以使用NATURAL JOIN 关键字自动执行内连接操作。
Sql代码
1. SELECT dname,ename FROM dept NATURAL JOIN emp;
2.左外连接
左外连接通过指定LEFT[OUTER] JOIN选项来实现。当使用左外连接时,不仅会返回满足连接条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a LEFT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
3.右外连接
右外连接通过指定RIGHT[OUTER] JOIN选项来实现的。当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件操作符右边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a RIGHT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
4.完全外连接
完全外连接是指定FULL[OUTER] JOIN 选项来实现的。当使用完全外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的所有其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a FULL JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
相当于没连接去掉where条件
Sql代码
1. SELECT a.dname,b.ename from dept a,emp;
5.使用(+)操作符
在Oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的。尽管可以使用操作符(+)执行外连接操作。但Oralce9i开始Oracle建议使用OUTER JOIN执行外连接。语法如下:
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1(+) = table2.column2;
当使用(+)操作符执行外连接时,应该将该操作符放在显示较少行(完全满足连接条件行)的一端。
一句话,左外连接时,(+)要放在右边表的一端。右外连接时,(+)放在左边表的一端。
左外连接:
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno=b.deptno(+) AND b.deptno(+)=10;
右外连接
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno(+)=b.deptno AND a.deptno(+)=10;
二、递归查询
1.语法
Sql代码
1. Select * from …. Where [结果过滤条件语句]
2. Start with [起始条件过滤语句]
3. Connect by prior [中间记录过滤条件语句]
2.例子
Sql代码
1. Select * from company t Where t.flag=1
2. Start with t.company_id=50500000
3. Connect by prior t.company_id=t.parent_id
说明:
Sql代码
1. select [level],column,expr from table [where condition]
2. [start with] //[起点]
3. [connect by prior + 主键=外键 或 外键=主键]
a.自顶向下: 左边放主键,右边放外键。
b.自底向上: 右边放主键,左边放外键。
c.level(伪列)层次的级别,不固定值。
三、更改数据库的时间格式
1、临时更改
alter session set nls_date_format=’YYYY-MM-DD HH24:MI:SS’
2.永久更改
在注册表[HKEY_CODE_MACHINE\SOFTWARE\ORACLE]里面,加入NLS_DATE_FORMAT,值为YYYY-MM-DD HH24:MI:SS。
3、Unix下,在用户的.profile文件中增加以下内容:
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
export NLS_DATE_FORMAT
附:在SQLPLUS下,实现中-英字符集转换
Sql代码
1. alter session set nls_language=’AMERICAN’;
2. alter session set nls_language=’SIMPLIFIED CHINESE’;
四、复制表和数据
1)建表
Sql代码
1. create table test as select * from dept; –从已知表复制数据和结构
2. create table test as select * from dept where 1=2; –从已知表复制结构但不包括数据
建立视图:
Sql代码
1. CREATE OR REPLACE VIEW dept_10 AS SELECT empno,ename,job,sal,deptno FROM emp WHERE deptno=10 ORDER BY empno;
建立实体化视图:
Sql代码
1. CREATE MATERIALLIZED VIEW summary_emp AS SELECT deptno,job,avg(sal) avgsal, sum(sal) sumsal FROM emp GROUP BY cube(deptno,job);
实体化视图管理是用于汇总,预计算,复制或分发数据的对象, 在大型的数据库中使用它可以提高涉及到的SUM,COUNT,AVG,MIN,MAX等的表的查询的速度,只要在实体化视图管理上创建了统计,查询优化器 将自动的使用实体化视图管理,这特性被称为QUERY REWRITE(查询重写).与普通的视图不同的是实体化视图管理存储数据,占据数据库的物理空间的.
2)不使用列的列表插入数据:
Sql代码
1. insert into test select * from dept;
3)使用DEFAULT插入数据:如果列存在默认值,则会使用其默认值;如果列不存在默认值,则自动使用NULL.
Sql代码
1. insert into dept values(10,’市场部’,default);
4)使用子查询插入数据
将查出来的内容全部插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
将查出来的内容部分插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,’杨凯’,sal,deptno from emp
3. where deptno = 10;
当要装载大批量数据时,用直接装载方式:
Sql代码
1. insert /*+APPEND */ into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
5)使用多表插入数据。从Oracle9i开始,使用INSERT语句可以将某张表的数据同时插入到多张表中。
使用ALL操作符,在每个条件子句上都要执行INTO子句后的子查询。
Sql代码
1. insert all when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
使用FIRST操作符执行多表插入,如果数据已经满足了先前条件,并且已经被插入到某表,那么该行数据在后续插入中将不会被再次使用。
Sql代码
1. insert first when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
五、多列子查询
多列子查询是指返回多列数据的子查询语句。当多列子查询返回单行数据时,在WHERE子句中可以使用单行比较符;当多列子查询返回多行数据时,在WHERE子句中必须使用多行比较符(IN,ANY,ALL)。
如显示与Id为10000的人员部门和岗位完全相同的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE (deptno,job)=(SELECT deptno,job FROM emp WHERE id=10000);
当执行成对比较是时,因为要求多个列的数据必须同时匹配,所以必须要使用多列子查询实现。
如显示工资和补助与部门30雇员的工资和补助完全匹配的所有雇员:
Sql代码
1. SELECT ename,sal,comm,dptno FROM emp WHERE (sal, nvl(comm,-1)) IN (SELECT sal, nvl(comm,-1) FROM emp WHERE deptno=30);
执行非成对比较时,应该使用多个多行子查询来实现。
如显示工资匹配于部门30工资列表、补助匹配于部门30补助列表的所有雇员:
Sql代码
1. SELECT ename,sal,comm,deptno FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND nvl(comm,-1) IN (SELECT nvl(comm,-1) FROM emp WHERE deptno=30);
六、相关子查询与FROM子句中子查询
相关子查询是指需要引用主查询表列的子查询语句,是通过EXISTS谓词来实现的。
如显示工作在“NEW YORK”的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE EXISTS (SELECT 1 FROM dept WHERE dept.deptno=emp.deptno AND dept.loc=’NEW YORK’);
在FROM子句中使用子查询时,该子查询会被作为视图对待。因此也被称为内嵌视图。
如显示高于部门平均工资的雇员信息:
Sql代码
1. SELECT ename,job,sal FROM emp, (SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno) dept WHERE emp.deptno=dept.deptno AND sal>dept.avgsal;
七、合并查询
集合操作符有UNION,UNION ALL, INTERSECT和MINUS。当使用集合操作符时,必须确保不同查询的列个数和数据类型都要匹配。
有以下一些限制:
1.对于LOB,VARRAY和嵌套表列来说,集合操作符是无效的。
2.对于LONG列来说,UNION,INTERSECT,MINUS操作符是无效的。
3.如果选择列表包含了表达式,则必须为为其指定列别名。
(一)UNION
UNION操作符用于获取两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。并且会以第一列的结果进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(二)UNION ALL
UNION ALL操作符获取两个结果集的并集,但不会取消重复值,而且也不会以任何列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION ALL SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(三)INTERSECT
INTERSECT操作符用于获取两个结果集的交集。当使用该操作符时,只会显示同时存在于两个结果集中的数据,并且会以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 INTERSECT SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(四)MINUS
MINUS用于获取两个结果集的差集。以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 MINUS SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
八、CASE表达式和倒叙查询
通过CASE表达式,可以避免调用过程来完成条件分支操作。
Sql代码
1. SELECT ename,sal,CASE WHEN sal>3000 THEN 3 WHEN sal>2000 THEN 2 ELSE 1 END grade FROM emp WHERE deptno=10;
默认情况下,当执行查询操作时,只能看到最近提交的数据。从Oracle9i开始,通过使用倒叙查询(Flashback Query)特征,可以查看到过去某个时间点所提交的数据。注意,如果使用倒叙查询,那么要示数据库必须彩UNDO管理方式,并且初始化参数 undo_retention限制了UNDO数据的保留时间。
Sql代码
1. SELECT ename,sal FROM emp AS OF TIMESTAMP to_timestamp(‘2009-01-01 12:12:00′,’YYYY-MM-DD HH24:MI:SS’) WHERE ename=’CLARK’;
九、使用WITH子句重用子查询
从Oracle9i开始,通过WITH子句可以给子查询指定一个名称,并且使得在一条语句中可以完成所有任务,从而避免使用临时表。
如显示部门工资总和高于雇员工资总和三分之一的部门名称及工资总和。
Sql代码
1. WITH summary AS (SELECT dname,SUM(sal) AS dept_total FROM emp,dept WHERE emp.deptno=dept.deptno GROUP BY dname)
2. SELECT dname, dept_total FROM summary WHERE dept_total>(
3. SELECT SUM(dept_total) * 1/3 FROM summary);
十、oracle对记录进行去重sql
Sql代码
1. DELETE FROM [TABLE_NAME]
2. WHERE ROWID NOT IN (
3. SELECT MIN(ROWID) FROM [TABLE_NAME]
4. GROUP BY [COL1,COL2,COL3…]
5. );
统计酒店名不重复的总数
Sql代码
1. SELECT COUNT(DISTINCT(hotel_id)) FROM t_app_travel_hotel_comment;
十一、SQL排序后的NULL位置
可以把那些NULL值假想为所有内容中值是最大的,因此,升序排序后NULL值在最后,倒序排序后NULL值在最前!
当指定”NULLS FIRST”时,无论是升序排序还是倒序排序,NULL值都会排列在最前面;当指定“NULLS LAST”时,无论是升序排序还是倒序排序,NULL值都会排列在最后面。
Sql代码
1. SELECT * FROM t ORDER BY x DESC NULLS LAST;

老子道德经全文

老子
道德经

《道德经》——《老子道德经》

 

老 子: 「道 德 經」: 第 一 章

道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。

无 名 天 地 之 始 ﹔ 有 名 万 物 之 母 。

故 常 无 , 欲 以 观 其 妙 ﹔ 常 有 , 欲 以 观 其 徼 。

此 两 者 , 同 出 而 异 名 , 同 谓 之 玄 。

玄 之 又 玄 , 众 妙 之 门 。

 

老 子: 「道 德 經」 : 第 二 章

天 下 皆 知 美 之 为 美 , 斯 恶 已 。

皆 知 善 之 为 善 , 斯 不 善 已 。

有 无 相 生 , 难 易 相 成 , 长 短 相 形 ,

高 下 相 盈 , 音 声 相 和 , 前 后 相 随 。

恒 也 。 是 以 圣 人 处 无 为 之 事 ,

行 不 言 之 教 ﹔ 万 物 作 而 弗 始 ,

生 而 弗 有 , 为 而 弗 恃 , 功 成 而 不 居 。

夫 唯 弗 居 , 是 以 不 去 。

 

老 子: 「道 德 经」 : 第 三 章

不 尚 贤 , 使 民 不 争

不 贵 难 得 之 货 , 使 民 不 为 盗 ﹔

不 见 可 欲 , 使 民 心 不 乱 。

是 以 圣 人 之 治 ,

虚 其 心 ,

实 其 腹 ,

弱 其 志 ,

强 其 骨 。

常 使 民 无 知 无 欲 。

使 夫 智 者 不 敢 为 也 。

为 无 为 , 则 无 不 治 。

 

老 子: 「道 德 经」 : 第 四 章

道 冲 , 而 用 之 或 不 盈 。

渊 兮 , 似 万 物 之 宗 ﹔ 湛 兮 , 似 或 存 。

吾 不 知 谁 之 子 , 象 帝 之 先 。

 

老 子: 「道 德 经」 : 第 五 章

天 地 不 仁 , 以 万 物 为 刍 狗 ﹔ 圣 人 不 仁 , 以 百 姓 为 刍 狗 。

天 地 之 间 , 其 犹 橐 钥 乎 。 虚 而 不 屈 , 动 而 愈 出 。

多 言 数 穷 , 不 如 守 中 。

 

老 子: 「道 德 经」 : 第 六 章

谷 神 不 死 , 是 谓 玄 牝 。

玄 牝 之 门 , 是 谓 天 地 根 。帛系 若 存 , 用 之 不 勤 。

 

老 子: 「道 德 经」 : 第 七 章

天 长 地 久 。

天 地 所 以 能 长 且 久 者 ,

以 其 不 自 生 , 故 能 长 生 。

是 以 圣 人 后 其 身 而 身 先 ﹔ 外 其 身 而 身 存 。

非 以 其 无 私 邪 。

故 能 成 其 私 。

 

老 子: 「道 德 经」 : 第 八 章

上 善 若 水 。

水 善 利 万 物 而 不 争 ,

处 众 人 之 所 恶 , 故 几 于 道 。

居 善 地 , 心 善 渊 , 与 善 仁 ,

言 善 信 , 政 善 治 , 事 善 能 ,

动 善 时 。 夫 唯 不 争 , 故 无 尤 。

 

老 子: 「道 德 经」 : 第 九 章

持 而 盈 之 , 不 如 其 已 ﹔

揣 而 锐 之 , 不 可 长 保 。

金 玉 满 堂 , 莫 之 能 守 ﹔

富 贵 而 骄 , 自 遗 其 咎 。

功 遂 身 退 , 天 之 道 也 。

 

老 子: 「道 德 经」 : 第 十 章

载 营 魄 抱 一 , 能 无 离 乎 。

专 气 致 柔 , 能 如 婴 儿 乎 。

涤 除 玄 鉴 , 能 如 疵 乎 。

爱 国 治 民 , 能 无 为 乎 。

天 门 开 阖 , 能 为 雌 乎 。

明 白 四 达 , 能 无 知 乎 。

 

老 子: 「道 德 经」 : 第 十 一 章

三 十 辐 , 共 一 毂 , 当 其 无 , 有 车 之 用 。

埏 埴 以 为 器 , 当 其 无 , 有 器 之 用 。

凿 户 牖 以 为 室 , 当 其 无 , 有 室 之 用 。

故 有 之 以 为 利 , 无 之 以 为 用 。

 

老 子: 「道 德 经」 : 第 十 二 章

五 色 令 人 目 盲 ﹔ 五 音 令 人 耳 聋 ﹔ 五 味 令 人 口 爽 ﹔

驰 骋 畋 猎 , 令 人 心 发 狂 ﹔ 难 得 之 货 , 令 人 行 妨 。

是 以 圣 人 为 腹 不 为 目 , 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 十 三 章

宠 辱 若 惊 , 贵 大 患 若 身 。

何 谓 宠 辱 若 惊 。

宠 为 下 , 得 之 若 惊 , 失 之 若 惊 , 是 谓 宠 辱 若 惊 。

何 谓 贵 大 患 若 身 。

吾 所 以 有 大 患 者 , 为 吾 有 身 ,

及 吾 无 身 , 吾 有 何 患 。

故 贵 以 身 为 天 下 , 若 可 寄 天 下 ﹔

爱 以 身 为 天 下 , 若 可 托 天 下 。

 

老 子: 「道 德 经」 : 第 十 四 章

视 之 不 见 , 名 曰 夷 ﹔

听 之 不 闻 , 名 曰 希 ﹔

搏 之 不 得 , 名 曰 微 。

此 三 者 不 可 致 诘 , 故 混 而 为 一 。

其 上 不 皦 , 其 下 不 昧 。

绳 绳 兮 不 可 名 , 复 归 于 物 。

是 谓 无 状 之 状 , 无 物 之 象 , 是 谓 惚 恍 。

迎 之 不 见 其 首 , 随 之 不 见 其 后 。

执 古 之 道 , 以 御 今 之 有 。

能 知 古 始 , 是 谓 道 纪 。

 

老 子: 「道 德 经」 : 第 十 五 章

古 之 善 为 道 者 , 微 妙 玄 通 , 深 不 可 识 。

夫 唯 不 可 识 , 故 强 为 之 容 :

豫 兮 若 冬 涉 川 ﹔

犹 兮 若 畏 四 邻 ﹔

俨 兮 其 若 客 ﹔

涣 兮 其 若 凌 释 ﹔

敦 兮 其 若 朴 ﹔

旷 兮 其 若 谷 ﹔

混 兮 其 若 浊 ﹔

澹 兮 其 若 海 ﹔

飂 兮 若 无 止 。

孰 能 浊 以 静 之 徐 清 。

孰 能 安 以 动 之 徐 生 。

保 此 道 者 , 不 欲 盈 。

夫 唯 不 盈 , 故 能 蔽 而 新 成 。

 

老 子: 「道 德 经」 : 第 十 六 章

致 虚 极 , 守 静 笃。

万 物 并 作 , 吾 以 观 复。

夫 物 芸 芸 , 各 复 归 其 根 。

归 根 曰 静 , 静 曰 复 命 。

复 命 曰 常 , 知 常 曰 明 。

不 知 常 , 妄 作 凶 。

知 常 容 , 容 乃 公 ,

公 乃 全 , 全 乃 天 ,

天 乃 道 , 道 乃 久 , 没 身 不 殆 。

 

老 子: 「道 德 经」 : 第 十 七 章

太 上 , 不 知 有 之 ﹔

其 次 , 亲 而 誉 之 ﹔

其 次 , 畏 之 ﹔

其 次 , 侮 之 。

信 不 足 焉 , 有 不 信 焉 。

悠 兮 其 贵 言 。

功 成 事 遂 , 百 姓 皆 谓 : 「 我 自 然 」 。

 

老 子: 「道 德 经」 : 第 十 八 章

大 道 废 , 有 仁 义 ﹔ 智 慧 出 , 有 大 伪 ﹔

六 亲 不 和 , 有 孝 慈 ﹔ 国 家 昏 乱 , 有 忠 臣 。

 

老 子: 「道 德 经」 : 第 十 九 章

绝 圣 弃 智 , 民 利 百 倍 ﹔

绝 仁 弃 义 , 民 复 孝 慈 ﹔

绝 巧 弃 利 , 盗 贼 无 有 。

此 三 者 以 为 文 , 不 足 。

故 令 有 所 属 : 见 素 抱 朴 , 少 思 寡 欲 , 绝 学 无 忧 。

 

老 子: 「道 德 经」 : 第 二 十 章

唯 之 与 阿 , 相 去 几 何 。

之 与 恶 , 相 去 若 何 。

人 之 所 畏 , 不 可 不 畏 。

荒 兮 , 其 未 央 哉 。

众 人 熙 熙 , 如 享 太 牢 , 如 春 登 台 。

我 独 泊 兮 , 其 未 兆 ﹔

沌 沌 兮 , 如 婴 儿 之 未 孩 ﹔

儽 儽 兮 , 若 无 所 归 。

众 人 皆 有 余 , 而 我 独 若 遗 。 我 愚 人 之 心 也 哉 。

俗 人 昭 昭 , 我 独 昏 昏 。

俗 人 察 察 , 我 独 闷 闷 。

众 人 皆 有 以 , 而 我 独 顽 且 鄙 。

我 独 异 于 人 , 而 贵 食 母 。

 

老 子: 「道 德 经」 : 第 二 十 一 章

孔 德 之 容 , 惟 道 是 从 。

道 之 为 物 , 惟 恍 惟 惚 。

惚 兮 恍 兮 , 其 中 有 象 ﹔ 恍 兮 惚 兮 , 其 中 有 物 。

窈 兮 冥 兮 , 其 中 有 精 ﹔ 其 精 甚 真 , 其 中 有 信 。

自 今 及 古 , 其 名 不 去 , 以 阅 众 甫 。

吾 何 以 知 众 甫 之 状 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 二 十 二 章

曲 则 全 , 枉 则 直 , 洼 则 盈 ,

敝 则 新 , 少 则 得 , 多 则 惑 。

是 以 圣 人 抱 一 为 天 下 式 。

不 自 见 , 故 明 ﹔

不 自 是 , 故 彰 ﹔

不 自 伐 , 故 有 功 ﹔

不 自 矜 , 故 长 。

夫 唯 不 争 , 故 天 下 莫 能 与 之 争 。

古 之 所 谓 「 曲 则 全 」 者 , 岂 虚 言 哉 。

诚 全 而 归 之 。

 

老 子: 「道 德 经」 : 第 二 十 三 章

希 言 自 然 。

故 飘 风 不 终 朝 , 骤 雨 不 终 日 。

孰 为 此 者 。

天 地 。 天 地 尚 不 能 久 , 而 况 于 人 乎 。

故 从 事 于 道 者 , 同 于 道 ﹔

德 者 , 同 于 德 ﹔ 失 者 , 同 于 失 。

同 于 道 者 , 道 亦 乐 得 之 ﹔

同 于 德 者 , 德 亦 乐 得 之 ﹔

同 于 失 者 , 失 亦 乐 得 之 。

信 不 足 焉 , 有 不 信 焉 。

 

老 子: 「道 德 經」 : 第 二 十 四 章

企 者 不 立 ﹔ 跨 者 不 行 ﹔

自 见 者 不 明 ﹔ 自 是 者 不 彰 ﹔

自 伐 者 无 功 ﹔ 自 矜 者 不 长 。

其 在 道 也 , 曰 : 余 食 赘 形 。

物 或 恶 之 , 故 有 道 者 不 处 。

 

老 子: 「道 德 经」 : 第 二 十 五 章

有 物 混 成 , 先 天 地 生 。

寂 兮 寥 兮 , 独 立 而 不 改 ,

周 行 而 不 殆 , 可 以 为 天 地 母 。

吾 不 知 其 名 , 强 字 之 曰 道 , 强 为 之 名 曰 大 。

大 曰 逝 , 逝 曰 远 , 远 曰 反 。

故 道 大 , 天 大 , 地 大 , 人 亦 大 。

域 中 有 四 大 , 而 人 居 其 一 焉 。

人 法 地 , 地 法 天 , 天 法 道 , 道 法 自 然 。

 

老 子: 「道 德 经」 : 第 二 十 六 章

重 为 轻 根 , 静 为 躁 君 。

是 以 君 子 终 日 行 不 离 辎 重 。

虽 有 荣 观 , 燕 处 超 然 。

奈 何 万 乘 之 主 , 而 以 身 轻 天 下 。

轻 则 失 根 , 躁 则 失 君 。

 

老 子: 「道 德 经」 : 第 二 十 七 章

善 行 无 辙 迹 , 善 言 无 瑕 谪 ﹔

善 数 不 用 筹 策 ﹔ 善 闭 无 关 楗 而 不 可 开 ,

善 结 无 绳 约 而 不 可 解 。

是 以 圣 人 常 善 救 人 , 故 无 弃 人 ﹔

常 善 救 物 , 故 无 弃 物 。

是 谓 袭 明 。

故 善 人 者 , 不 善 人 之 师 ﹔

不 善 人 者 , 善 人 之 资 。

不 贵 其 师 , 不 爱 其 资 ,

虽 智 大 迷 , 是 谓 要 妙 。

 

老 子: 「道 德 经」 : 第 二 十 八 章

知 其 雄 , 守 其 雌 , 为 天 下 溪 。

为 天 下 溪 , 常 德 不 离 , 复 归 于 婴 儿 。

知 其 白 , 守 其 辱 , 为 天 下 谷 。

为 天 下 谷 , 常 德 乃 足 , 复 归 于 朴 。

知 其 白 , 守 其 黑 , 为 天 下 式 。

为 天 下 式 , 常 德 不 忒 , 复 归 于 无 极 。

朴 散 则 为 器 , 圣 人 用 之 ,

则 为 官 长 , 故 大 智 不 割 。

 

老 子: 「道 德 经」 : 第 二 十 九 章

将 欲 取 天 下 而 为 之 , 吾 见 其 不 得 已 。

天 下 神 器 , 不 可 为 也 , 不 可 执 也 。

为 者 败 之 , 执 者 失 之 。

是 以 圣 人 无 为 , 故 无 败 ﹔

无 执 , 故 无 失。

夫 物 或 行 或 随 ﹔ 或 嘘 或 吹 ﹔

或 强 或 羸 ﹔ 或 载 或 隳 。

是 以 圣 人 去 甚 , 去 奢 , 去 泰 。

 

老 子: 「道 德 经」 : 第 三 十 章

以 道 佐 人 主 者 , 不 以 兵 强 天 下 。

其 事 好 远 。

师 之 所 处 , 荆 棘 生 焉 。

大 军 之 后 , 必 有 凶 年 。

善 有 果 而 已 , 不 以 取 强 。

果 而 勿 矜 , 果 而 勿 伐 , 果 而 勿 骄 。

果 而 不 得 已 , 果 而 勿 强 。

物 壮 则 老 , 是 谓 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 三 十 一 章

夫 兵 者 , 不 祥 之 器 ,

物 或 恶 之 , 故 有 道 者 不 处 。

君 子 居 则 贵 左 , 用 兵 则 贵 右 。

兵 者 不 祥 之 器 , 非 君 子 之 器 ,

不 得 已 而 用 之 , 恬 淡 为 上 。

胜 而 不 美 , 而 美 之 者 , 是 乐 杀 人 。

夫 乐 杀 人 者 , 则 不 可 得 志 于 天 下 矣 。

吉 事 尚 左 , 凶 事 尚 右 。

偏 将 军 居 左 , 上 将 军 居 右 , 言 以 丧 礼 处 之 。

杀 人 之 众 , 以 悲 哀 泣 之 , 战 胜 以 丧 礼 处 之 。

 

老 子: 「道 德 经」 : 第 三 十 二 章

道 常 无 名 朴 。

虽 小 , 天 下 莫 能 臣 。

侯 王 若 能 守 之 , 万 物 将 自 宾 。

天 地 相 合 , 以 降 甘 露 , 民 莫 之 令 而 自 均 。

始 制 有 名 , 名 亦 既 有 ,

夫 亦 将 知 止 , 知 止 可 以 不 殆 。

譬 道 之 在 天 下 , 犹 川 谷 之 于 江 海 。

 

老 子: 「道 德 经」 : 第 三 十 三 章

知 人 者 智 , 自 知 者 明 。

胜 人 者 有 力 , 自 胜 者 强 。

知 足 者 富 。

强 行 者 有 志 。

不 失 其 所 者 久 。

死 而 不 亡 者 寿 。

 

老 子: 「道 德 经」 : 第 三 十 四 章

大 道 泛 兮 , 其 可 左 右 。

万 物 恃 之 以 生 而 不 辞 , 功 成 而 不 有 。

衣 养 万 物 而 不 为 主 , 可 名 于 小 ﹔

万 物 归 焉 而 不 为 主 , 可 名 为 大 。

以 其 终 不 自 为 大 , 故 能 成 其 大 。

 

老 子: 「道 德 经」 : 第 三 十 五 章

执 大 象 , 天 下 往 。

往 而 不 害 , 安 平 泰 。

乐 与 饵 , 过 客 止 。

道 之 出 口 , 淡 乎 其 无 味 ,

视 之 不 足 见 , 听 之 不 足 闻 , 用 之 不 足 既 。

 

老 子: 「道 德 经」 : 第 三 十 六 章

将 欲 歙 之 , 必 故 张 之 ﹔ 将 欲 弱 之 , 必 故 强 之 ﹔

将 欲 废 之 , 必 故 兴 之 ﹔ 将 欲 取 之 , 必 故 与 之 。

是 谓 微 明 。

柔 弱 胜 刚 强 。

鱼 不 可 脱 于 渊 , 国 之 利 器 不 可 以 示 人 。

 

老 子: 「道 德 经」 : 第 三 十 七 章

道 常 无 为 而 无 不 为 。

侯 王 若 能 守 之 , 万 物 将 自 化 。

化 而 欲 作 , 吾 将 镇 之 以 无 名 之 朴 。

镇 之 以 无 名 之 朴 , 夫 将 不 欲 。

不 欲 以 静 , 天 下 将 自 正 。

 

老 子: 「道 德 经」 : 第 三 十 八 章

上 德 不 德 , 是 以 有 德 ﹔

下 德 不 失 德 , 是 以 无 德 。

上 德 无 为 而 无 以 为 ﹔

下 德 无 为 而 有 以 为 。

上 仁 为 之 而 无 以 为 ﹔

上 义 为 之 而 有 以 为 。

上 礼 为 之 而 莫 之 应 ,

则 攘 臂 而 扔 之 。

故 失 道 而 后 德 , 失 德 而 后 仁 ,

失 仁 而 后 义 , 失 义 而 后 礼 。

夫 礼 者 , 忠 信 之 薄 , 而 乱 之 首 。

前 识 者 , 道 之 华 , 而 愚 之 始 。

是 以 大 丈 夫 处 其 厚 , 不 居 其 薄 ﹔

处 其 实 , 不 居 其 华 。 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 三 十 九 章

昔 之 得 一 者 :

天 得 一 以 清 ﹔

地 得 一 以 宁 ﹔

神 得 一 以 灵 ﹔

谷 得 一 以 生 ﹔

侯 得 一 以 为 天 下 正 。

其 致 之 也 , 谓 天 无 以 清 , 将 恐 裂 ﹔

地 无 以 宁 , 将 恐 废 ﹔

神 无 以 灵 , 将 恐 歇 ﹔

谷 无 以 盈 , 将 恐 竭 ﹔

万 物 无 以 生 , 将 恐 灭 ﹔

侯 王 无 以 正 , 将 恐 蹶 。

故 贵 以 贱 为 本 , 高 以 下 为 基 。

是 以 侯 王 自 称 孤 、 寡 、 不 谷 。

此 非 以 贱 为 本 邪 。 非 乎 。 故 致 誉 无 誉 。

是 故 不 欲 琭 琭 如 玉 , 珞 珞 如 石 。

 

老 子: 「道 德 經」 : 第 四 十 章

反 者 道 之 动 ﹔ 弱 者 道 之 用 。

天 下 万 物 生 于 有 , 有 生 于 无 。

 

老 子: 「道 德 经」 : 第 四 十 一 章

上 士 闻 道 , 勤 而 行 之 ﹔ 中 士 闻 道 , 若 存 若 亡 ﹔

下 士 闻 道 , 大 笑 之 。 不 笑 不 足 以 为 道 。

故 建 言 有 之 :

明 道 若 昧 ﹔

进 道 若 退 ﹔

夷 道 若 颣 ﹔

上 德 若 谷 ﹔

广 德 若 不 足 ﹔

建 德 若 偷 ﹔

质 真 若 渝 ﹔

大 白 若 辱 ﹔

大 方 无 隅 ﹔

大 器 晚 成 ﹔

大 音 希 声 ﹔

大 象 无 形 ﹔

道 隐 无 名 。

夫 唯 道 , 善 贷 且 成 。

 

老 子: 「道 德 经」 : 第 四 十 二 章

道 生 一 , 一 生 二 , 二 生 三 , 三 生 万 物 。

万 物 负 阴 而 抱 阳 , 冲 气 以 为 和 。

人 之 所 恶 , 唯 孤 、 寡 、 不 谷 , 而 王 公 以 为 称 。

故 物 或 损 之 而 益 , 或 益 之 而 损 。

人 之 所 教 , 我 亦 教 之 。

强 梁 者 不 得 其 死 , 吾 将 以 为 教 父 。

 

老 子: 「道 德 经」 : 第 四 十 三 章

天 下 之 至 柔 , 驰 骋 天 下 之 至 坚 。

无 有 入 无 间 , 吾 是 以 知 无 为 之 有 益 。

不 言 之 教 , 无 为 之 益 , 天 下 希 及 之 。

 

老 子: 「道 德 经」 : 第 四 十 四 章

名 与 身 孰 亲 。 身 与 货 孰 多 。 得 与 亡 孰 病 。

甚 爱 必 大 费 ﹔ 多 藏 必 厚 亡 。

故 知 足 不 辱 , 知 止 不 殆 , 可 以 长 久 。

 

老 子: 「道 德 经」 : 第 四 十 五 章

大 成 若 缺 , 其 用 不 弊 。

大 盈 若 冲 , 其 用 不 穷 。

大 直 若 屈 , 大 巧 若 拙 , 大 辩 若 讷 。

静 胜 躁 , 寒 胜 热 。 清 静 为 天 下 正 。

 

老 子: 「道 德 经」 : 第 四 十 六 章

天 下 有 道 , 却 走 马 以 粪 。

天 下 无 道 , 戎 马 生 于 郊 。

祸 莫 大 于 不 知 足 ﹔ 咎 莫 大 于 欲 得 。

故 知 足 之 足 , 常 足 矣 。

 

老 子: 「道 德 经」 : 第 四 十 七 章

不 出 户 , 知 天 下 ﹔ 不 窥 牖 , 见 天 道 。

其 出 弥 远 , 其 知 弥 少 。

是 以 圣 人 不 行 而 知 , 不 见 而 明 , 不 为 而 成 。

 

老 子: 「道 德 经」 : 第 四 十 八 章

为 学 日 益 , 为 道 日 损 。

损 之 又 损 , 以 至 于 无 为 。

无 为 而 无 不 为 。

取 天 下 常 以 无 事 , 及 其 有 事 , 不 足 以 取 天 下 。

 

老 子: 「道 德 经」 : 第 四 十 九 章

圣 人 常 无 心 , 以 百 姓 心 为 心 。

善 者 , 吾 善 之 ﹔ 不 善 者 , 吾 亦 善 之 ﹔ 德 善 。

信 者 , 吾 信 之 ﹔ 不 信 者 , 吾 亦 信 之 ﹔ 德 信 。

圣 人 在 天 下 , 歙 歙 焉 , 为 天 下 浑 其 心 ,

百 姓 皆 注 其 耳 目 , 圣 人 皆 孩 之 。

 

老 子: 「道 德 经」 : 第 五 十 章

出 生 入 死 。

生 之 徒 , 十 有 三 ﹔

死 之 徒 , 十 有 三 ﹔

人 之 生 , 动 之 于 死 地 , 亦 十 有 三 。

夫 何 故 。

以 其 生 之 厚 。

盖 闻 善 摄 生 者 , 路 行 不 遇 兕 虎 , 入 军 不 被 甲 兵 ﹔

兕 无 所 投 其 角 , 虎 无 所 用 其 爪 , 兵 无 所 容 其 刃 。

夫 何 故 。 以 其 无 死 地 。

 

老 子: 「道 德 经」 : 第 五 十 一 章

道 生 之 , 德 畜 之 , 物 形 之 , 势 成 之 。

是 以 万 物 莫 不 尊 道 而 贵 德 。

道 之 尊 , 德 之 贵 , 夫 莫 之 命 而 常 自 然 。

故 道 生 之 , 德 畜 之 ﹔

长 之 育 之 ﹔ 成 之 熟 之 ﹔ 养 之 覆 之 。

生 而 不 有 , 为 而 不 恃 ,

长 而 不 宰 。 是 谓 玄 德 。

 

老 子: 「道 德 经」 : 第 五 十 二 章

天 下 有 始 , 以 为 天 下 母 。

既 得 其 母 , 以 知 其 子 ,

复 守 其 母 , 没 身 不 殆 。

塞 其 兑 , 闭 其 门 , 终 身 不 勤 。

开 其 兑 , 济 其 事 , 终 身 不 救 。

见 小 曰 明 , 守 柔 曰 强 。

用 其 光 , 复 归 其 明 , 无 遗 身 殃 ﹔ 是 为 袭 常 。

 

老 子: 「道 德 经」 : 第 五 十 三 章

使 我 介 然 有 知 , 行 于 大 道 , 唯 施 是 畏 。

大 道 甚 夷 , 而 人 好 径 。

朝 甚 除 , 田 甚 芜 , 仓 甚 虚 ﹔

服 文 采 , 带 利 剑 , 厌 饮 食 ,

财 货 有 余 ﹔ 是 为 盗 夸 。

非 道 也 哉 。

 

老 子: 「道 德 经」 : 第 五 十 四 章

善 建 者 不 拔 ,

善 抱 者 不 脱 , 子 孙 以 祭 祀 不 辍 。

修 之 于 身 , 其 德 乃 真 ﹔

修 之 于 家 , 其 德 乃 余 ﹔

修 之 于 乡 , 其 德 乃 长 ﹔

修 之 于 邦 , 其 德 乃 丰 ﹔

修 之 于 天 下 , 其 德 乃 普 。

故 以 身 观 身 ,

以 家 观 家 , 以 乡 观 乡 ,

以 邦 观 邦 , 以 天 下 观 天 下 。

吾 何 以 知 天 下 然 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 五 十 五 章

含 「 德 」 之 厚 , 比 于 赤 子 。

毒 虫 不 螫 , 猛 兽 不 据 , 攫 鸟 不 搏 。

骨 弱 筋 柔 而 握 固 。

未 知 牝 牡 之 合 而 峻 作 , 精 之 至 也 。

终 日 号 而 不 嗄 , 和 之 至 也 。

知 和 曰 「 常 」 ,

知 常 曰 「 明 」 。

益 生 曰 祥 。 心 使 气 曰 强 。

物 壮 则 老 , 谓 之 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 五 十 六 章

知 者 不 言 , 言 者 不 知 。

挫 其 锐 , 解 其 纷 , 和 其 光 ,

同 其 尘 , 是 谓 「 玄 同 」 。

故 不 可 得 而 亲 , 不 可 得 而 疏 ﹔

不 可 得 而 利 , 不 可 得 而 害 ﹔

不 可 得 而 贵 , 不 可 得 而 贱 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 五 十 七 章

以 正 治 国 , 以 奇 用 兵 , 以 无 事 取 天 下 。

吾 何 以 知 其 然 哉 。 以 此 :

天 下 多 忌 讳 , 而 民 弥 贫 ﹔

人 多 利 器 , 国 家 滋 昏 ﹔

人 多 伎 巧 , 奇 物 滋 起 ﹔

法 令 滋 彰 , 盗 贼 多 有 。

故 圣 人 云 :

「 我 无 为 , 而 民 自 化 ﹔

我 好 静 , 而 民 自 正 ﹔

我 无 事 , 而 民 自 富 ﹔

我 无 欲 , 而 民 自 朴 。 」

 

老 子: 「道 德 经」 : 第 五 十 八 章

其 政 闷 闷 , 其 民 淳 淳 ﹔

其 政 察 察 , 其 民 缺 缺 。

是 以 圣 人 方 而 不 割 , 廉 而 不 刿 ,

直 而 不 肆 , 光 而 不 耀 。

祸 兮 福 之 所 倚 , 福 兮 祸 之 所 伏 。

孰 知 其 极 。 其 无 正 也 。

正 复 为 奇 , 善 复 为 妖 。

人 之 迷 , 其 日 固 久 。

 

老 子: 「道 德 经」 : 第 五 十 九 章

治 人 事 天 , 莫 若 啬 。

夫 唯 啬 , 是 谓 早 服 ﹔

早 服 谓 之 重 积 德 ﹔ 重 积 德 则 无 不 克 ﹔

无 不 克 则 莫 知 其 极 ﹔ 莫 知 其 极 , 可 以 有 国 ﹔

有 国 之 母 , 可 以 长 久 ﹔

是 谓 深 根 固 柢 , 长 生 久 视 之 道 。

 

老 子: 「道 德 经」 : 第 六 十 章

治 大 国 , 若 烹 小 鲜 。

以 道 莅 天 下 , 其 鬼 不 神 ﹔

非 其 鬼 不 神 , 其 神 不 伤 人 ﹔

非 其 神 不 伤 人 , 圣 人 亦 不 伤 人 。

夫 两 不 相 伤 , 故 德 交 归 焉 。

 

老 子: 「道 德 经」 : 第 六 十 一 章

大 邦 者 下 流 , 天 下 之 牝 ,

天 下 之 交 也 。

牝 常 以 静 胜 牡 , 以 静 为 下 。

故 大 邦 以 下 小 邦 , 则 取 小 邦 ﹔

小 邦 以 下 大 邦 , 则 取 大 邦 。

故 或 下 以 取 , 或 下 而 取 。

大 邦 不 过 欲 兼 畜 人 , 小 邦 不 过 欲 入 事 人 。

夫 两 者 各 得 所 欲 , 大 者 宜 为 下 。

 

老 子: 「道 德 经」 : 第 六 十 二 章

道 者 万 物 之 奥 。 善 人 之 宝 , 不 善 人 之 所 保 。

美 言 可 以 市 尊 , 美 行 可 以 加 人 。

人 之 不 善 , 何 弃 之 有 。

故 立 天 子 , 置 三 公 ,

虽 有 拱 璧 以 先 驷 马 ,

不 如 坐 进 此 道 。

古 之 所 以 贵 此 道 者 何 。

不 曰 : 求 以 得 , 有 罪 以 免 邪 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 六 十 三 章

为 无 为 , 事 无 事 , 味 无 味 。

图 难 于 其 易 , 为 大 于 其 细 ﹔

天 下 难 事 , 必 作 于 易 ,

天 下 大 事 , 必 作 于 细 。

是 以 圣 人 终 不 为 大 , 故 能 成 其 大 。

夫 轻 诺 必 寡 信 , 多 易 必 多 难 。

是 以 圣 人 犹 难 之 , 故 终 无 难 矣 。

 

老 子: 「道 德 经」 : 第 六 十 四 章

其 安 易 持 , 其 未 兆 易 谋 。

其 脆 易 泮 , 其 微 易 散 。

为 之 于 未 有 , 治 之 于 未 乱 。

合 抱 之 木 , 生 于 毫 末 ﹔

九 层 之 台 , 起 于 累 土 ﹔

千 里 之 行 , 始 于 足 下。

民 之 从 事 , 常 于 几 成 而 败 之 。

慎 终 如 始 , 则 无 败 事 。

 

老 子: 「道 德 經」 : 第 六 十 五 章

古 之 善 为 道 者 , 非 以 明 民 , 将 以 愚 之 。

民 之 难 治 , 以 其 智 多 。

故 以 智 治 国 , 国 之 贼 ﹔

不 以 智 治 国 , 国 之 福 。

知 此 两 者 亦 稽 式 。

常 知 稽 式 , 是 谓 「 玄 德 」 。

「 玄 德 」 深 矣 , 远 矣 , 与 物 反 矣 , 然 后 乃 至 大 顺 。

 

老 子: 「道 德 经」 : 第 六 十 六 章

江 海 之 所 以 能 为 百 谷 王 者 ,

以 其 善 下 之 , 故 能 为 百 谷 王 。

是 以 圣 人 欲 上 民 , 必 以 言 下 之 ﹔

欲 先 民 , 必 以 身 后 之 。

是 以 圣 人 处 上 而 民 不 重 , 处 前 而 民 不 害 。

是 以 天 下 乐 推 而 不 厌 。

以 其 不 争 , 故 天 下 莫 能 与 之 争 。

 

老 子: 「道 德 经」 : 第 六 十 七 章

天 下 皆 谓 我 道 大 , 似 不 肖 。

夫 唯 大 , 故 似 不 肖 。

若 肖 , 久 矣 其 细 也 夫 。

我 有 三 宝 , 持 而 保 之 。

一 曰 慈 ,

二 曰 俭 ,

三 曰 不 敢 为 天 下 先 。

慈 故 能 勇 ﹔ 俭 故 能 广 ﹔

不 敢 为 天 下 先 , 故 能 成 器 长 。

今 舍 慈 且 勇 ﹔ 舍 俭 且 广 ﹔

舍 后 且 先 ﹔ 死 矣 。

夫 慈 以 战 则 胜 , 以 守 则 固 。

天 将 救 之 , 以 慈 卫 之 。

 

老 子: 「道 德 经」 : 第 六 十 八 章

善 为 士 者 , 不 武 ﹔

善 战 者 , 不 怒 ﹔

善 胜 敌 者 , 不 与 ﹔

善 用 人 者 , 为 之 下 。

是 谓 不 争 之 德 ,

是 谓 用 人 之 力 ,

是 谓 配 天 古 之 极 。

 

老 子: 「道 德 经」 : 第 六 十 九 章

用 兵 有 言 :

「 吾 不 敢 为 主 , 而 为 客 ﹔

不 敢 进 寸 , 而 退 尺 。 」

是 谓 行 无 行 ﹔ 攘 无 臂 ﹔

扔 无 敌 ﹔ 执 无 兵 。

祸 莫 大 于 轻 敌 , 轻 敌 几 丧 吾 宝 。

故 抗 兵 相 若 , 哀 者 胜 矣 。

 

老 子: 「道 德 经」 : 第 七 十 章

吾 言 甚 易 知 , 甚 易 行 。

天 下 莫 能 知 , 莫 能 行 。

言 有 宗 , 事 有 君 。

夫 唯 无 知 , 是 以 不 我 知 。

知 我 者 希 , 则 我 者 贵 。

是 以 圣 人 被 褐 而 怀 玉 。

 

老 子: 「道 德 经」 : 第 七 十 一 章

知 不 知 , 尚 矣 ﹔ 不 知 知 , 病 也 。

圣 人 不 病 , 以 其 病 病 。

夫 唯 病 病 , 是 以 不 病 。

 

老 子: 「道 德 经」 : 第 七 十 二 章

民 不 畏 威 ,

则 大 威 至 。

无 狎 其 所 居 ,

无 厌 其 所 生 。

夫 唯 不 厌 ,

是 以 不 厌 。

是 以 圣 人 自 知 不 自 见 ﹔

自 爱 不 自 贵 。

故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 七 十 三 章

勇 于 敢 则 杀 , 勇 于 不 敢 则 活 。

此 两 者 , 或 利 或 害 。

天 之 所 恶 , 孰 知 其 故 。

天 之 道 ,

不 争 而 善 胜 , 不 言 而 善 应 ,

不 召 而 自 来 , 繟 然 而 善 谋 。

天 网 恢 恢 , 疏 而 不 失 。

 

老 子: 「道 德 经」 : 第 七 十 四 章

民 不 畏 死 , 奈 何 以 死 惧 之 。

若 使 民 常 畏 死 , 而 为 奇 者 ,

吾 得 执 而 杀 之 , 孰 敢 。

常 有 司 杀 者 杀 。

夫 代 司 杀 者 杀 , 是 谓 代 大 匠 斲 ,

夫 代 大 匠 斲 者 , 希 有 不 伤 其 手 矣 。

 

老 子: 「道 德 经」 : 第 七 十 五 章

民 之 饥 , 以 其 上 食 税 之 多 , 是 以 饥 。

民 之 难 治 , 以 其 上 之 有 为 , 是 以 难 治 。

民 之 轻 死 , 以 其 上 求 生 之 厚 , 是 以 轻 死 。

夫 唯 无 以 生 为 者 , 是 贤 于 贵 生 。

 

老 子: 「道 德 经」 : 第 七 十 六 章

人 之 生 也 柔 弱 , 其 死 也 坚 强 。

草 木 之 生 也 柔 脆 , 其 死 也 枯 槁 。

故 坚 强 者 死 之 徒 , 柔 弱 者 生 之 徒 。

是 以 兵 强 则 灭 , 木 强 则 折 。

强 大 处 下 , 柔 弱 处 上 。

 

老 子: 「道 德 经」 : 第 七 十 七 章

天 之 道 , 其 犹 张 弓 欤 。

高 者 抑 之 , 下 者 举 之 ﹔

有 余 者 损 之 , 不 足 者 补 之 。

天 之 道 , 损 有 余 而 补 不 足 。

人 之 道 , 则 不 然 , 损 不 足 以 奉 有 余 。

孰 能 有 余 以 奉 天 下 , 唯 有 道 者 。

是 以 圣 人 为 而 不 恃 , 功 成 而 不 处 , 其 不 欲 见 贤 。

 

老 子: 「道 德 经」 : 第 七 十 八 章

天 下 莫 柔 弱 于 水 , 而 攻 坚 强 者 莫 之 能 胜 , 以 其 无 以 易 之 。

弱 之 胜 强 , 柔 之 胜 刚 ,

天 下 莫 不 知 , 莫 能 行 。

是 以 圣 人 云 :

「 受 国 之 垢 , 是 谓 社 稷 主 ﹔

受 国 不 祥 , 是 为 天 下 王 。 」

正 言 若 反 。

老 子: 「「道 德 經」」 : 第 七 十 九 章

和 大 怨 , 必 有 余 怨 ﹔

报 怨 以 德 , 安 可 以 为 善 。

是 以 圣 人 执 左 契 , 而 不 责 于 人 。

有 德 司 契 , 无 德 司 彻 。

天 道 无 亲 , 常 与 善 人 。

老 子:「道 德 经」 : 第 八 十 章

小 国 寡 民 。

使 有 什 伯 之 器 而 不 用 ﹔

使 民 重 死 而 不 远 徙 。

虽 有 舟 舆 , 无 所 乘 之 ,

虽 有 甲 兵 , 无 所 陈 之 。

使 民 复 结 绳 而 用 之 。

甘 其 食 , 美 其 服 , 安 其 居 , 乐 其 俗 。

邻 国 相 望 , 鸡 犬 之 声 相 闻 ,

民 至 老 死 , 不 相 往 来 。

老 子: 「道 德 经」 : 第 八 十 一 章

信 言 不 美 , 美 言 不 信 。

善 者 不 辩 , 辩 者 不 善 。

知 者 不 博 , 博 者 不 知 。

圣 人 不 积 , 既 以 为 人 己 愈 有 ,

既 以 与 人 己 愈 多 。

天 之 道 , 利 而 不 害 ﹔

圣 人 之 道 , 为 而 不 争 。

——老子“道德经原文”结束,《道德经全文》

WordPress元老Alex King逝世 与癌症抗争两年半

wordpress alex king

WordPress初期开发者Alex King

北京时间9月29日下午消息,WordPress初期开发者Alex King昨天夜间在家中逝世。Alex King于2013年1月被诊断出癌症,与癌症抗争了两年半。

Alex King在WordPress生态系统中有着巨大的影响力,他参与了从该网站前身b2到现在的WordPress的重建,也参与构建了WordPress 第一个客户端,还建立了第一家针对WordPress的咨询机构。他为大量WordPress功能的开发奠定了基础,甚至包括如今广泛使用的“一键分享” 图标的原型。

8月24日,Alex King在博客上公布了他的遗愿,希望其他人写下对他以及他工作成就的印象,并提交给他的妻子。(李林)

高富帅们的Git技巧

Git是一个分布式版本控制系统,拥有许多神奇而易用的特性(比如:分支),这让它可以轻松适应各种工作流程。这篇文章不涉及Git的基本使用,而是介绍了一些高级却有用的小技巧。让我们一起来看看高富帅们的Git技巧,准备好逆袭吧!

以“块”形式暂存你的改动

你肯定已经很熟悉的使用git add命令来将改动暂存到暂存区(staging area)了。你可能也会偶然因为两个不同的原因而做了一次改动,却没有分别提交(仅仅提交了一次),所以,当你执行git log时,会看到诸如这样的提交信息:“修改X,改动无关的Y”。如果这看起来像是你的工作方式,交互式add将是你的有力工具。

交互式add(或者叫add块),将会一个块一个快的循环你的改动。使用命令git add -p时,你可以在每个改动“块”(即:连续的改动会被组织到一起)时进行一些选择,比如:切分当前块为更小的块、跳过一个改动块、甚至手动的编辑该块,你 可以敲入?来查看所有该命令提供的选项。

开始以“块”形式暂存改动简单到只需一条命令(括号部分替换为特定文件):

git add -p (path/file)

译者注:感觉这条命令平常用的较少,我遇到需要分别提交的情况时,都是手动来add然后提交,该命令是这种方法的高级版本。我们平常可能对提交历史的重视比较低,常常出现一些无用的、无意义的提交信息,可以试试这条命令。

切换到最后所在分支

作为一个善良的码农,当你需要快速做些修正或是清理工作时,你都应该花些时间来对待。如果你的工作流程是十分依赖分支的话(译者注:强烈建议如 此),你可能不希望无关的修正影响到现在正在进行功能开发的分支。这意味着,你应该使用git stash命令来暂时存放你的改动,然后切到master分支(译者注:或是其它啥分支,我一般是取名为fix),在那个分支进行修正。(译者注:修正完 了,可以切回正在进行功能开发的分支,执行git stash pop来弹出之前暂存的改动,继续进行开发)。在不同分支间切换很乏味,幸好这里有个快捷命令可以切换到你最后所在的分支:

git checkout -

这个语法对于使用linux的高富帅们来说一定不陌生,cd命令有个类似的缩写cd -,表示切换到你最后所在的目录。当你需要切回功能开发分支时,你根本不用关心那个分支是啥名,只需git checkout -。

译者注:感觉tab键的自动补全也挺好用的,不过这条命令可以少敲点字。有了这条命令,妈妈再也不用担心我的分支切换了。

显示哪些分支被合并了(或是哪些没有被合并)

在使用git时,你可能会创建许多分支,导致执行git branch命令列出分支时变得有些杂乱。于是,你想处理那些已经合并到master分支的无用分支,但是,当你执行git checkout -d 来删除分支时可能会遇到“麻烦”(译者注:git会拒绝删除未合并的分支并提示你),如果使用以下命令,你将不再需要三思而后删,可以自信的处理那些已经 合并了的分支。

如果你想要看看你的本地分支里哪些分支是已经合并进你当前所在的分支时,可以使用:

git branch --merged

反过来,如果需要查看哪些分支还没有合并进当前所在的分支,可以使用:

git branch --no-merged

结合高富帅的UNIX工具,你可以轻松的删除那些已经合并了的分支:

git branch --merged | xargs git branch -d

译者注:xargs是UNIX平台的一个工具,它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。如果git branch –merged显示的是a,b,c三个分支已经合并,上面的命令会转换为:git branch -d a b c。更多xargs的信息:http://zh.wikipedia.org/wiki/Xargs

从另一分支获取文件内容而不用切换分支

设想你正在进行重构,你创建了好几个分支并在各分支下进行改动。这时,你想把另一个分支里某一个文件的改动引入到当前工作的分支里,为了达到目的你 可能需要好几步:git stash你的改动;切换到那个分支;获取文件的改动;切回工作分支(当然是使用git checkout -);继续进行编辑(译者注:别忘了git stash pop)。但是,你也可以直接检出另一分支的文件,并且合并到你当前所在的工作分支,使用命令(括号部分替换为对应的分支和文件):

git checkout (branch) -- (path/file)

以最后提交排序的Git分支

想必你已经使用上面的tip处理了杂乱的分支,有一些是用–merged选项标志来清理的吧。那其它的分支咋办呢?你咋知道哪些是有用的,哪些是 完全过期无用的呢?git for-each-ref命令可以打印出一个列表,该列表显示每个分支最后一次提交的引用(reference)信息。我们可以自定义输出来包含一些有用 的信息,更重要的是我们还可以按日期排序。可以使用下面的命令来输出一个列表,该表将显示按时间先后排序的每个分支的最后提交信息、提交者等信息:

git for-each-ref --sort=-committerdate --format="%(committername)@%(refname:short) [%(committerdate:short)] %(contents)"

还可以把它定义在gitconfig里:

[alias]
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"

译者注:定义后就只需执行git latest了。注意双引号需要转义!

在玻璃房内的人们别用git blame

或者说,在玻璃房内的人们不应该直接使用git blame而不带下文的选项标志。(译者注:玻璃房内的人是完全能被别人看到的人。这里的意思应该是想说,你每一次提交的变动都会被记录到git仓库的历 史,对于git仓库来说,你就像是住在玻璃房里的人,没有任何秘密,你根本逃不过git的”责问“)git blame是很有用的命令,它就像使用科学来证明你是正确的!但是请注意,许多文件的变动是很表面的,发现问题的来源需要更多的探索。像是移除空白、移动 内容到新行、移动内容到另一文件等动作都可以使用选项来忽略掉,以便更容易的找到代码变动的始作俑者。

在你blame(责备)他人前,记得用以下命令看看结果:

git blame -w  # 忽略移除空白这类改动
git blame -M  # 忽略移动文本内容这类改动
git blame -C  # 忽略移动文本内容到其它文件这类改动

译者注:git blame用来显示一份文件每一行的最近一次提交的提交hash值和提交者。当你跟别人说“我真的没改过这个文件啊”之前,就得git blame下。

在整个git仓库提交历史中找寻内容(然后删掉它)

你有时可能需要查找一行你写的代码,但是就是无法找到。它可能安放在了一些已经被遗忘的分支,或是删除了很久,又或是就在那显而易见的地方。无论哪种方式,你都可以通过一些命令在整个git仓库的历史中搜寻特定的字符串。

首先,我们需要拿到所有的提交,然后,使用git grep来搜寻特定的字符串。如下:

git rev-list --all | xargs git grep -F '搜寻的字符串'

你可能有一个粗心的朋友不小心在仓库里提交了诸如,用户名、密码、外婆的大蒜食谱等敏感信息。首先,他们得更改用户名、密码(并向外婆道歉)。然 后,你需要搜寻这些得罪人的文件,并将他们从整个仓库的历史里抹去(这听起来好像很容易)。经过这个处理,那些执行git pull的伙计们就会发现所有提交中包含的敏感信息都被清理干净了,而那些没有合并你的远程改动的家伙还是拥有敏感信息(所以,千万别忘记先改用户名和密 码)。我们来看看怎么操作。

首先,重写每个分支的历史,移除敏感信息:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch (filename)' --prune-empty --tag-name-filter cat -- --all

然后,将记录敏感信息的文件增加到.gitignore文件,并提交(括号部分替换为对应文件名):

echo (filename) >> .gitignore
git add .gitignore
git commit -m "Add sensitive (filename) file to gitignore"

接着,由于我们改写了历史,我们需要“强制”的将改动推到远程:

git push origin master --force
# 译者注:还可以使用命令
git push origin +master

最后,这个文件还在你的本地仓库里,还需要将它完全抹除:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

你这粗心的朋友从敏感文件的危机中解脱,而你用你高超的git知识成功逆袭,成为了他的英雄!

译者注:一天,妹子叫我去她家帮她把她的三围信息从git仓库的历史里完全删除,我研究了很久不得要领。妹子说,不如我们做点其它的事吧。我觉得我的git知识被她鄙视了,坚定的说,我一定要把它删掉!然后,就没有然后了… …

忽略文件跟踪

在和他人合作时可能常常意味着你需要更改一些配置才能让应用在环境里跑起来,这时,常常会不小心把这些只对你有意义的配置文件也给提交了。为了不再 常常关注这些文件,看着它们在git status时放肆的显示“modified”,你可以告诉git忽略它们的改动。这种方式,可以看成是一种和仓库绑定的gitignore文件(括号部 分替换为对应文件):

  git update-index --assume-unchanged (path/file)

译者注:感觉,.gitignore文件更方便和好理解。

让分支的历史归零

不管出于啥理由,有时从头开始正是你需要的。也许是你接手了一个不确信能安全开源的代码仓库;也许是你要着手做些全新的事情;也许是你想创建用于其 它目的一个新分支,又希望继续在仓库里维护它(比如:github页面,项目的文档一类的东西)。上述的情形下,你可以非常简单的创建一个没有提交历史的 分支(括号部分替换为对应分支):

  git checkout --orphan (branch)

译者注:我们知道,分支只是对提交的一个引用,所以,每当从当前分支创建一个分支时,被创建的分支都会延续之前的历史,但是这种方式却不会,是一个完完全全干净的git分支,没有任何的提交!

你一定离不开的别名

不讨论能节省大量敲击时间的“git别名(git alias)”技巧的git文章一定都是在耍流氓。停止输入冗长的命令,使用超级有用的别名吧!git别名可以加到.gitconfig文件里,或是使用 命令(译者注:本质就是改写.gitconfig命令)来增加(括号部分替换为别名和对应的命令):

    git config --global alias.(name) "(command)"
  1. 在依赖分支的工作流程中,你常常要在不同分支间切换,每次敲击节约你6个字母。
    co = checkout
    
  2. 在提交前瞧瞧你将要提交的都有什么改动是一个好习惯,这可以帮助你发现拼写错误、不小心的提交敏感信息、将代码组织成符合逻辑的组。使用git add暂存你的改动,然后使用git ds查看你将要提交的改动动。
    ds = diff --staged
    
  3. 你可能十分熟悉git输出的详细状态信息了,当到达一定境界时,你可能需要忽略所有那些描述,直击问题的核心。这个别名输出将输出git status的简短形式和分支的详细信息。
    st = status -sb
    
  4. 你是否在提交后才发现忘记git add某个文件了,或是提交了才想再改动些啥?amend(修正)暂存区到最近的一次提交吧。(译者注:这个命令不太好理解,–amend是重写提交历 史,-C是重用某次提交的提交信息。场景是当你提交完了发现还有些改动没提交,又不想写什么“改动了X,再次提交”这种狗血的提交信息。重新git add并git amend后,重用上次的提交信息再次提交,替换上次的不完整提交。特别注意–amend重写了提交,如果你已经push到远程了,慎用这条命令!)
    amend = commit --amend -C HEAD
    
  5. 有时上面的修正可能不好使了,你需要undo(撤销)。undo会回退到上次提交,暂存区也会回退到那次提交时的状态。你可以进行额外的改动,用新的提交信息来再次进行提交。
    undo = reset --soft HEAD^
    
  6. 维护一个多人编辑的代码仓库常常意味着试着发现何人在改动什么,这个别名可以输出提交者和提交日期的log信息。
    ls = log --pretty=format:'%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green) [%cn]' --decorate --date=short
    
  7. 这个别名用来在一天的开启时回顾你昨天做了啥,或是在早晨刷新你的记忆(括号内替换为自己的email)。
    standup = log --since '1 day ago' --oneline --author (YOUREMAIL)
    
  8. 一个复杂的仓库可能很难用直线式的输出来查看,这个别名可以用图表的形式向你展示提交是怎样及何时被加到当前分支的。
    graph = log --graph --pretty=format:'%C(yellow)%h %C(blue)%d %C(reset)%s %C(white)%an, %ar%C(reset)'
    

译者注:我根据上面的别名进行了一些整理修改,这是我现在的.gitconfig里的别名配置:

[alias]
  st = status -sb
  co = checkout
  br = branch
  mg = merge
  ci = commit
  ds = diff --staged
  dt = difftool
  mt = mergetool
  last = log -1 HEAD
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"
  ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
  hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
  type = cat-file -t
  dump = cat-file -p

via alimama mux
作者:Chris Kelly 译者:栖邀
英文原文

来源:http://segmentfault.com/a/1190000002448847

unauthenticated user mysql 原因分析

最近常出现 客户端连接远程服务器失败问题

show processlist;

出现 unauthenticated user,一直到超时;

网上查了下,到处都是互相抄袭文章,类似:

解决的方案很简单,结束这个反查的过程,禁止任何解析。

打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:

skip-name-resolve

。。。

实际上我都用IP连接的,不会出现这种问题

最后网上有个说是网络慢也会影响连接,ping 测试了下果然慢

ping liyunde.com
PING liyunde.com (112.126.64.59): 56 data bytes
64 bytes from 112.126.64.59: icmp_seq=0 ttl=51 time=41.072 ms
64 bytes from 112.126.64.59: icmp_seq=1 ttl=51 time=40.965 ms
64 bytes from 112.126.64.59: icmp_seq=2 ttl=51 time=41.036 ms
64 bytes from 112.126.64.59: icmp_seq=3 ttl=51 time=42.662 ms
64 bytes from 112.126.64.59: icmp_seq=4 ttl=51 time=41.681 ms
64 bytes from 112.126.64.59: icmp_seq=5 ttl=51 time=41.701 ms
64 bytes from 112.126.64.59: icmp_seq=6 ttl=51 time=41.859 ms
64 bytes from 112.126.64.59: icmp_seq=7 ttl=51 time=43.713 ms

网络响应过慢,配置服务器不能解决这个问题,换个好点的网络,问题自然解决。

Beanstalkd 使用

一、安装

1、官网

https://kr.github.io/beanstalkd/

2、安装

yum install beanstalkd --enablerepo=epel

3、启动

/usr/bin/beanstalkd -l 0.0.0.0 -p 11300 -b /var/lib/beanstalkd/binlog -F

-b 开启binlog,断电后重启会自动恢复任务。

二、基本概念

1、Beanstalkd设计里面的核心概念:

  • job :一个需要异步处理的任务,是 Beanstalkd 中的基本单元,需要放在一个 tube 中。
  • tube :一个有名的任务队列,用来存储统一类型的 job,是 producer 和 consumer 操作的对象。
  • producer :Job 的生产者,通过 put 命令来将一个 job 放到一个 tube 中。
  • consumer :Job的消费者,通过 reserve/release/bury/delete 命令来获取 job 或改变 job 的状态。

2、job 的生命周期

Beanstalkd job life circle

当producer直接put一个job时,job就处于READY状态,等待consumer来处理,如果选择延迟put,job就先到 DELAYED状态,等待时间过后才迁移到READY状态。consumer获取了当前READY的job后,该job的状态就迁移到RESERVED, 这样其他的consumer就不能再操作该job。

当consumer完成该job后,可以选择delete, release或者bury操作;delete之后,job从系统消亡,之后不能再获取;release操作可以重新把该job状态迁移回READY(也 可以延迟该状态迁移操作),使其他的consumer可以继续获取和执行该job;有意思的是bury操作,可以把该job休眠,等到需要的时候,再将休 眠的job kick回READY状态,也可以delete BURIED状态的job。

正是有这些操作和状态,才可以基于此做出很多意思的应用,比如要实现一个循环队列,就可以将RESERVED状态的 job休眠掉,等没有READY状态的job时再将BURIED状态的job一次性kick回READY状态。

  • READY – 需要立即处理的任务,当延时 (DELAYED) 任务到期后会自动成为当前任务;
  • DELAYED – 延迟执行的任务, 当消费者处理任务后, 可以用将消息再次放回 DELAYED 队列延迟执行;
  • RESERVED – 已经被消费者获取, 正在执行的任务。Beanstalkd 负责检查任务是否在 TTR(time-to-run) 内完成;
  • BURIED – 保留的任务: 任务不会被执行,也不会消失,除非有人把它 “踢” 回队列;
  • DELETED – 消息被彻底删除。Beanstalkd 不再维持这些消息。

3、一些特性

优先级

任务 (job) 可以有 0~2^32 个优先级, 0 代表最高优先级,默认优先级为1024。

持久化

可以通过binlog将job及其状态记录到文件里面,在Beanstalkd下次启动时可以通过读取binlog来恢复之前的job及状态。

分布式容错

分布式设计和Memcached类似,beanstalkd各个server之间并不知道彼此的存在,都是通过client来实现分布式以及根据tube名称去特定server获取job。

超时控制

为了防止某个consumer长时间占用任务但不能处理的情况,Beanstalkd为reserve操作设置了timeout时间,如果该consumer不能在指定时间内完成job,job将被迁移回READY状态,供其他consumer执行。

三、Client Libraries For PHP

项目地址: https://github.com/pda/pheanstalk/

1、Producer 示例:向队列中添加job

$pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1');

$pheanstalk ->useTube('tubeName') ->put($jobData);

2、Consumer 示例:从队列中取出job

$job = $pheanstalk ->watch('tubeName') ->ignore('default') ->reserve();

echo $job->getData();

$pheanstalk->delete($job);

3、检查服务状态

$isAlive = $pheanstalk->getConnection()->isServiceListening(); //返回 true 或 false

4、获取某一 tube 的数据

try{
    $tubeStatus = $pheanstalk->statsTube('tubeName');
} catch (Exception $e){
    if($e->getMessage()=='Server reported NOT_FOUND'){     //tube 不存在
        $current_jobs_ready = 0;
    }
}

四、其他

1、PHP 版控制台

https://github.com/ptrofimov/beanstalk_console

2、Chrome 插件

https://chrome.google.com/webstore/detail/beanstalkd-dashboard/dakkekjnlffnecpmdiamebeooimjnipm

原文:segmentfault.com

一张感动全球的照片

一张感动全球的照片

在伊拉克,一个没有妈妈的小女孩,在孤儿院的水泥地面上,画了一个妈妈。她小心翼翼地脱下鞋子,在妈妈的胸口睡着了……真不知道该如何用人类的语言去诠释 这样的一个画面,我们还有什么资格和理由抱怨自己不够幸福?珍惜现在所拥有的,其实幸福可以很简单!默默地看着这幅画,也许你会感动掉泪……

查看windows系统当前哪些程序注册了哪些快捷键

Windows Hotkey Explorer – 显示当前已被占用的快捷键

如何查看windows系统当前哪些程序注册了哪些快捷键

Windows Hotkey Explorer 可以显示当前已被占用的快捷键,并定位到相关程序。@Appinn

2012120331

最近 Eclips  Ctrl+D老是提示出错,找不到目标,但总是找不到是被什么程序占用的。

放狗搜了下,找到个 Windows Hotkey Explorer,这玩意灰常强大,瞬间就找到了幕后黑手新浪微博

用 Windows Hotkey Explorer 找到快捷键后,就可以针对性收拾了,如果不配合,打入小黑屋。

linkedIn今日正式入华 专访中国总裁沈博阳

专访 中国 总裁 沈博阳

腾讯科技 朱旭冬 2月25日报道

筹备已久的linkedIn简体中文版网站终于在今天正式上线了,并且宣布的中文名“领英”。虽然目前中文网站仍被称为“测试版”,但这标志着linkedIn正式进入中国。

作为全球最大的职业社交网站,linkedIn在全球有近3亿用户,在中国有约400万用户——这个数字可以从两面来看,相比linkedIn全球,这只是很小的一部分;从另一面看,在尚未发布中文版的时候能获得400万用户,这已经是一个不错的成绩。

对于linkedIn入华,外界最多的质疑无非两点,一是跨国互联网公司在中国没有成功先例;二是在中国可能并不存在职业社交这样的需求,因为中国的类似网站也没有成功先例。

linkedIn中国区总裁沈博阳在接受腾讯科技专访时表示,他现在无法证明linkedIn一定会成功,跨国公司的挑战一定存在,但是linkedIn为此也做了充分的准备,“本地团队和运作加上国际平台的支持,成功可能性至少大于50%”。

他也相信中国用户有职业社交的需求,因为中国年轻人也越来越多会换工作,对职业生涯会有很多追求。而linkedIn也不仅仅是帮助人们找工作,同时还能拓展人脉,帮助自己做好手头上的工作。

在采访中,除了老生常谈的本土化,他强调的另一个词是“耐心”。不过谷歌(微博)在进入中国时也强调过耐心,但最终选择了退出。对linkedIn中国来说,心态或许比战略更为重要。

中文版上线遵循MVP原则

发布中文版网站对linkedIn来说是非常重要的一件事,但这次发布的网站并非完美。

对此,沈博阳表示,linkedIn中国的产品发布会遵循MVP原则,即先发布一个基本功能可用的产品,然后进行改善。这也是linkedIn创始人、董事长里德•霍夫曼(Reid Hoffman)非常推崇的产品发布原则。

“我们这次主要是做了中文化,在一些地方打通了腾讯微博和微信。但是你会发现有一些英文版的功能缺失了,一些功能并不适合中国用户,这些是我们未来要改进的。”沈博阳说。同时,linkedIn也计划将为中国用户服务的服务器搬到中国,一方面改进访问速度,同时也适应中国互联网监管需要。

社交网站能否做成,用户量是一个非常重要的指标。但linkedIn中国并不打算做太多活的或者推广来获取用户,更多还是希望通过产品和品牌让网站用户能有机的增长。沈博阳表示,互联网服务都有网络效应,容易形成强者更强弱者更弱的局面,一个服务做好了就会像黑洞一样吸引用户。

沈博阳并不愿意过多评价国内其他职业社交网站,但他表示这些网站没有做到非常成功的一个原因就是有linkedIn的存在,虽然linkedIn之前并未进入中国,但仍然吸走了大量有职业社交需求的用户,尤其是高端用户。

对于职业社交来说,高端用户有为重要。这些人更有影响力,更能够吸引其他人的加入。同时,linkedIn通过为企业提供人才招聘解决方案来获得收入,高端用户对企业的吸引也更大。

虽然linkedIn在中国成功必须要本土化,但是沈博阳并不打算一下子让linkedIn变得非常“本土”。他表示,linkedIn在中国发展初期还是会主打英文名,因为现在来说,用英文名更能唤起用户的品牌感知。

近期重点仍为团队

对于任何一家公司来说,团队都是最重要的,而团队的领导者则是重中之重。对linkedIn中国来说,找到合适的领导者非常重要。

沈博阳告诉腾讯科技,linkedIn为进入中国至少非常认真细致的调研了两年,而他也是两年前第一次和linkedIn接触。“当时我在做糯米,并没有离开的打算。不过他们说的是从我这里了解一些中国互联网的情况,于是先交了朋友。”沈博阳说。

真正让他开始考虑linkedIn的工作机会的时候是在2013年下半年。2013年8月,百度宣布收购59%糯米网股份。这让沈博阳在糯米网所扮演的角色会发生变化。另一边,linkedIn也加快了入华的脚步,他们需要一个合适的领导者。

2013年9月-10月,沈博阳和linkedIn CEO 杰夫•韦纳尔(Jeff Weiner)以及创始人兼董事长里德•霍夫曼(Reid Hoffman)见面。韦纳尔的一句话打动了沈博阳,他说linkedIn的使命是连接世界上所有职场人士,让他们的工作更有效率并帮助他们成功,如果不能连接中国,那么这个使命就得改了。

回国后沈博阳就开始准备从糯米网离职,并于今年1月1日正式加入到linkedIn。这标志着linkedIn入华已经进入冲刺阶段。

沈博阳的linkedIn档案里有他所有工作记录。在加入linkedIn之前,他服务过最重要的三家公司分别是雅虎、谷歌和糯米,担任过技术、管理、商务拓展、创始人等多个角色。谷歌的工作经历帮助沈博阳积累了跨过公司的工作经验,而糯米这个人人公司内部的创业项目,则让他有了在大公司创业的经验——linkedIn中国兼有这几项特质,也让沈博阳成了最合适的linkedIn中国区总裁人选。

linkedIn中国由linkedIn联手国内两家投资公司红杉中国和宽带产业基金共同成立,这让linkedIn不仅仅是跨国公司,同时也更像一家本土创业公司。联手国内投资机构进入中国,亚马逊AWS入华也是如此。

“这种方式可以让linkedIn中国获得linkedIn全球的支持,同时也能向创业公司一样运作。”沈博阳说。另外,沈博阳直接想韦纳尔汇报,并且每周有一次和韦纳尔、霍夫曼分别一对一沟通的机会。这也让linkedIn中国可以更灵活同时更受重视。

对沈博阳来说,当前最重要的事情仍然是团队的搭建。他表示,虽然linkedIn是国际公司,但除了直接向他汇报的员工,其他员工都没有英语要求。“中国有很多人才,但是加上英语这一项,可能三分之二都被挡在了外面。我们还是一家中国公司,我也不希望以后大家开会用的语言是英文。”他说。

xp系统50天后停止服务

突然发现,原来这个时空也是流动的!黄家驹去世20年了,不老神话林志颖39岁了,还珠格格赵薇都当妈了,蜡笔小新之父死了,火影忍者就快结局了,XP还有不到两个月就停止服务了……十年前我们盼青春, 十年后我们致青春,真的开始老了。

1392728669401

据了解,4月8日以后,微软将正式停止对XP系统 包括Office 2003的服务支持,微软官方网站对于XP用户的建议是换个新电脑,因为只有极少数的XP电脑可以支持直接升级至微软最新的Windows8.1系统。然而数据显示,我国XP系统的用户高达2亿,因此XP系统停止服务”引来高度关注。

1392728706760

XP哭着问Win8:”为何停止为我服务?”Win8无辜的看了看Win7。Win7顿时冒火了,”你看我干嘛?又不是我干的!”XP哭得愈加厉害了,骂道:”TMD,老子出来混的时候,你们还没有生呢!你们也有被停止服务的一天!我们走着瞧!”听见这话,Win7看了看正得意的Win8,内心一股恐惧袭来。

1392728722223

总归是长江后浪推前浪,前浪死在沙滩上!xp君,一路走好!这个时候很多爱国青年又跳出来说我们应该迅速拥有自己的操作系统,你确定我们真的能制造出”自己”的国产操作系统?

1392728849643

上周,中科红旗北京总部的大门上粘贴了一张最新的公告,通知全体员工,公司正式解散,员工劳动合同全部终止,公司进入清算程序。这家成立了14年之久的国产操作系统厂商最终是没能熬过这个冬季,比XP还先去一步。

国产操作系统厂商中科红旗破产清算

近日,著名开源专家、北大数学教授袁萌连续在个人博客上撰文,揭露国产COS操作系统的一些真相,指出上海联彤公司实际上并无实力自主研发国产COS操作系统,因此被戴上国产”桂冠”的COS操作系统只能算是一个”杂种”操作系统,不能算作中国操作系统”梦”!

1392728887580

cos说到底就是cosplay嘛~

中科红旗倒闭 国产操作系统研究画上句号

【PConline 资讯】2月10日,一家中科院领头的系统研究企业贴出清算公告:由于经营发生严重困难,董事会于12月13日决议即日解散公司,并成立清算委员会进行清算。公司与全体员工的劳动合同也在即日起终止。这家企业就是中科红旗,一个曾以挑战微软为己任成立的中国公司。自此,这家公司的国产操作系统的研究工作彻底画上了句号。

中科红旗倒闭 国产操作系统研究画上句号

事起缘由

2000年,这家以研究能挑战微软的国有操作系统为己任的公司成立,当时的公司董事长以及首席科学家是在中国科学院软件研究所副所长孙玉芳,秉着“中国必须拥有自主软件操作系统”共识,这家公司由中科院牵头成立。早在2004年,公司就宣布主营业务实现盈利,红旗Linux算是公司较为成熟的产品,中石油、邮政以及各大银行等多个部门上均有采用并予以付费。

公司的转折发生在13年4月,一封在Linuxeden社区上贴出的员工请愿书称:13年的4月,公司上百名员工被召集起来开会,总裁贾栋告诉员工们,公司资金链出现问题,当月工资无法如期发放。此外,由于资金链断裂,公司所处大厦一直处于无交费状态,12月大厦物业已经采取断水断电等措施,督促公司结算。

自此,员工工资拖欠持续至今,直到13年12月,董事会决议公司成立清算委员会对公司进行清算。

请愿书指出核高基项目为罪魁祸首

这封在技术社区发表的员工请愿书道出公司衰败的转折点。

2010年的核高基重大转型中,中科红旗承担了“通用桌面操作系统研发及产业化”主要课题,并和中科方德联合承担了4个子课题。按照规定来说,在政府拨款专项项目基金的同时,企业和地方政府也需要提供相近的资金支撑,然而在中科院承诺补齐资金的前提下,但最终没有补齐专项资金导致公司资金链断裂,很多市场员工随机出现了自垫资金的情况,公司高层为了实现项目,也将储备和支撑公司发展的资金全部投入到项目当中。

同时,中科院称,中科红旗的每年收入不超过1000万元,而2010年和2011年的主要收入来自核高基项目。在2012年,核高基项目资金用尽出现了资金链断裂问题。这跟中科院软件是无关的,并称中科红旗目前的问题是经营造成的。

随着资金链完全断裂,员工工资以及公司运营资金难以支撑,员工提出辞职。中科红旗股东达成一致,解散公司进入清算程序。

 本文来源:太平洋电脑网

从Google备份互联网看“数据安全”

【编者按】作者Todd Hoff是High Scalability创始人,为我们解读Google数据保密和数据安全负责人Raymond Blum的演讲。数据安全的一个重要工作就是备份,备份的容量扩展、存储备份的媒介、备份的效率……通过对互联网中庞大数据多样化、复杂的备份,使数据在任何情况下都能简单地还原、恢复。数据安全不仅仅是一个技术问题,它还受到现实的种种限制,做好数据安全,是任何一个企业都要考虑的问题。


CSDN推荐:欢迎免费订阅《Hadoop与大数据周刊》获取更多Hadoop技术文献、大数据技术分析、企业实战经验,生态圈发展趋势。


以下为译文:

Raymond Blum带领Site Reliability Engineers团队负责谷歌的数据保密和数据安全。当然Google从来都不会如实说有多少数据,但从评论上看目前还没到 yottabyte级(1YB=280B),不过也有很多exabyte级(1EB=260B)的数据了。仅Gmail就有接近exabyte的数据。

Blum先生在名为“ 谷歌如何备份互联网”的视频中解释,常见的备份策略对谷歌无效,原因听起来让人吃惊:它们大多是在努力用容量实现扩展。如果备份两倍多的数据,那时间、能源、空间也会消耗两倍,如果不这么做,就不能进行扩展。要让容量比支持容量的能力扩充更快,必须要有效率。从备份1exabyte数据转变到备份2exabyte数据,需要一个不同的计划。演讲的内容的主要关于Google是如何实现容量扩展的。

演讲的一些主要议题:

  • 从无数据丢失。甚至影响颇为不好的GMail停电事件也没有丢失数据,这远比备份许多磁带要复杂的多。数据从整个堆栈检索,每一层都需要管理,包括对人的管理。
  • 备份无用。还原你想要的部分,这是指还原系统而不是备份系统。备份是你要为还原付出的高昂代价。将工作转移到到备份上并使备份适当的复杂,是为了让还原尽可能的简单。
  • 不可以线性扩展。不可能有100倍的数据,你就能得到100倍的人力和机器资源。你只能去寻找使能力倍增的方法。自动化是提高利用率和效率的主要途径。
  • 冗余。谷歌的存储设备一直在老化。这当然不用说都知道,就像我们身体的细胞会死一样,Google并没有幻想着事物不会消亡,它只是为事物的消亡做好准备。
  • 多样性。如果你担心某个站点的位置不安全,那就把数据放在多个站点。如果你是担心用户错误,那就将用户交互与数据隔离。如果你想要避免软件bug的损害,那就把数据放在不同的软件上。从不同的供应商获取存储设备,以减少供应商的bug影响存储的数据。
  • 将人从繁琐的劳动中解放出来。通过GMail保留一封电子邮件有多少备份?这不应该是人关心的事情。通过GMail配置一些参数,系统会具体安排。这是不变的主题,高级别策略设置和系统实现了它。只有规范之外的事情发生才会需要人的参与。
  • 证明。如果你不试用它,那它就不会起作用。备份和还原就是不断的测试,以验证它们的工作的过程。

无论组织大小,都有很多要学习的东西。Blum先生的 演讲很风趣、信息量大、很值得一看。看起来他真的很喜欢工作中的挑战。

以下是我对这个演讲的注释,从中我们可以了解到许多不为人知的秘密:

  • 数据可用性必须是100%,不能有数据丢失
  • 统计学上,2GB文件中如果丢失了200K数据,似乎没什么大不了,但这个文件或许就不能用了,比如说可执行文件或报税表。
  • 数据的可用性比可访问性更重要。如果系统关闭,后果并不特别严重。但如果数据丢失,那就不是小事了。
  • 谷歌保证用以下所有可能组合保证数据安全:
  • 位置隔离
  • 隔离应用层问题
  • 隔离存储层问题
  • 隔离媒介故障
  • 想象一下移动滑块的情形。让软件像纵向滑块那样,让地址像横向滑块那样。如果你想要包含一切,你需要不同地址的软件层备份。你可以在不同的地址使用虚拟机。
  • 冗余不等于可恢复性
  • 制作多个备份不能保证数据不会丢失。
  • 多个备份对某些种类的停机是有效的。例如一颗小行星击中一个数据中心,而在一个很远的地方,你有这个数据中心的备份。
  • 如果你在存储堆栈中有一个bug,那把它复制到N个地方也没有用,因为bug破坏了所有备份。示例:请参阅GMail停机。
  • 相比小行星,代码中的bug、用户错误或已损坏缓冲区的写入,这些故障发生要多得多了。
  • 冗余对访问局部性有帮助。当你想要所有的数据引用与正在使用位置的数据尽可能接近时,备份是个不错的选择。
  • 因为这么多的备份,整个系统非常稳健
  • 谷歌的设备一直在老化。这不用说也知道,我们身体的细胞也同样会死。我们并没有幻想事物不会消亡,我们只是在为消亡做准备。机器也一直在损耗。
  • 冗余就是答案。合计一下,这要比单一的高质量机器更加可靠。单一机器可能会被一颗小行星摧毁。想要摧毁放在50个不同地点的机器就难说了。
  • 大规模并行系统的数据丢失几率更大
  • MapReduce在30000台机器上运行得很好,当然是在没有bug的前提下。一旦有bug出现,造成的影响也是成倍的。
  •  本地备份不能防止站点停机
  • 如果你的服务器机房中发生灾难性的破坏,那RAID也帮不了你。
  • Google文件系统(GFS),大约一年前,整个Google都在使用这个文件系统,它将RAID的概念又升级了一次。使用 编码技术将数据写入不同城市的多个数据中心,只需要N-1个数据片段,即可还原完整的数据。所以即使3个数据中心中一个停机了,也不会影响数据可用性。
  • 可用性和完整性是组织广泛的特点
  • 谷歌的工程师们,BigTable,GFS,Colossus都知道数据持久性和完整性是第一任务。很多系统需要检查并更正在数据可用性和完整性上的错误。
  • 多样性
  • 如果你担心某个站点的位置安全,那就把数据放在多个站点。
  • 如果你担心用户错误,那就把用户交互和数据隔离。
  • 如果你想要避免软件bug的破坏,那就把数据放在不同的软件上。从不同的供应商获取设备,以减少供应商的bug影响存储的数据。
  • 磁带备份真的很不错
  • 磁带好是因为它不像磁盘那样。如果可能他们甚至会使用打孔卡。
  • 想象一下假如你SATA磁盘的设备驱动程序里有一个bug。磁带就避免了这一问题。因为不同的媒介意味着不同的软件,这就增加多样性。
  • 磁带容量遵循摩尔定律,所以他们对磁带作为备份介质都很满意,虽然他们还在寻找替代品,现在很难说这些替代品是什么。
  • 磁带加密意味着有着不良企图的家伙们将很难从磁带中得到有用的东西。
  • 备份是无用的,真正需要关心的是还原
  • 在有人需要数据之前发现数据是否存在问题,你确定需要数据时再还原。
  • 持续还原。不断随机选择5%的备份,还原并对它们进行比较。为什么呢?因为需要在数据丢失之前查明数据是否还能用,找出存在的问题。
  • 自动比较。因为原始文件已更改,所以不能与原始进行比较。所以将校验码和校验码进行比较。把它带到源媒介、磁盘或闪存,或者其它的媒介。请确保数据可以做一次往返,自动比较是一直都在做的事情。
  • 故障率变化的警报
  • 你可能想要知道是不是有什么发生了变化。如果一切运行正常,那就没有必要告诉我了。
  • 预期会有一些失败,但别第一次尝试还原的文件失败就发出警报。
  • 假设首次尝试的失败率是N,第二次尝试的失败率为Y。如果故障率发生变化那一定是哪里出问题了。
  • 损坏
  • 磁盘随时都有可能中断,但因为你监视它,所以你能及时的了解到。
  • 要是磁带的话,只有你使用它的时候,才知道是不是坏了。虽然磁带保存的时间很长,但是你想在用它之前检测它是不现实的。
  • 不要将数据仅写到一盘磁带上。他们是墨盒,随时会有意外发生。
  • 向磁带写入数据时,编写器要保持数据不变,直到数据被完全写入。
  • 建立4盘完整磁带,然后通过XOR(逻辑运算)生成第五盘代码磁带。你可以失去5磁带的任何一个,也能恢复数据。
  • 现在告诉编写器它们可以更改源数据,因为数据已经到了到最终的物理位置,有冗余了。
  • 谷歌备份的每一bit数据都要经历这个过程。
  • 数以百计的磁带每个月都将丢失,并没有造成数据的丢失,就是得益于这个过程。
  • 假设当检测到一盘磁带丢失,通过使用连续还原和同级磁带重新生成另一个磁带,一切都没问题。在那种两个磁带都被损坏的罕见情况下,如果磁带上的受损的两个点相同,那数据就只好丢失了,只能在subtape一级完成重建。
  • 实现这些技术的成本很高,但是为了不丢失数据,很值得。
  • 备份是你为奢侈的还原付出的代价
  • 它是指还原系统而不是备份系统。还原是一个不可屏蔽的中断,他们胜过一切。
  • 让备份变得复杂而且只要需要就这样做。让还原变得快捷而且越自动化越好。
  • 恢复应该是傻瓜式、快速和简单。就算是一只猫也能完成还原操作。
  • 无论你休息得很好还是累的很惨,还原时才不会问你是不是准备好了。所以不要让人为因素决定服务数据还原的成功与否。
  • 大部分的系统都是这样工作的。
  • 数据源或许能够将数据存储一段时间,也许是在它备份之前的几天。但一旦备份完成,它随时都可以还原,而且还原得很快。
  • 为了使还原速度更快,不能将全部资源用于备份。花两个小时来读取磁带是不可行的。只写一半磁带,并行读取它们,这样你仅用一半的时间就可以获取数据。
  • 扩展是个问题
  • 当你有exabyte级的数据时,也会有现实世界的限制。如果你要复制10exabyte数据,然后它会花10周时间备份每一天的数据。
  • 考虑到分布在世界各地的数据中心,可供选择的方案并不多。你能给每个站点无限的备份容量吗?你会按区域划分所有备份吗?转移数据的带宽呢?你难道不需要带宽来为挣钱的流量服务吗?
  • 看看有关的费用。也有一些妥协方案,比如不是每个网站都有备份设施。必须平衡网络中的可用容量。怎样才能最划算?例如,只在有足够带宽的站点中进行备份。
  • 不能线性扩展
  • 你不能只是说想要更多的网络带宽和更多的磁带驱动器。驱动器中断的情况,如果你有10000个驱动器坏了,你需要10000个运算器来替换它们。你有10000个装卸码头来放磁带驱动器,直到一辆卡车把它们运走。这一切都不可以是线性的。
  • 虽然磁带库的数量提高了一个数量级,但参与其中的人并没有随之线性增长。
  • 比如早期曾有人预测,随着电话的增多,30%的美国人会被雇佣为电话接线员。显然他们没预见到未来的自动接线。
  • 自动化
  • 调度被自动化。如果你有一个服务,你说:我有一个数据存储,每N天我需要一个备份,在M时必须还原。内部系统完成这些事情:计划备份、运行还原测试和运行完整性测试等等。并且磁带故障的处理也是全自动的。
  • 人是无法看到这些的。也许有一天,你可能会问平均多少个磁带损坏了。或如果磁带破损率从每天100盒磁带变成每天300盒磁带时,就会发出警报。但在那之前不要问我:如果一天100盒磁带损坏是不是在正常水平内?
  • 人不应参与稳态操作
  • 装载和运输驱动器仍然是人类的活动。自动化的接口准备装运标签,得到RMA号码,检查已经出来的软件包,拿回执,如果出现故障,人才会进行干涉。
  • 库软件维护也类似。例如固件更新时,人不会将这些更新运行在每一个系统中,系统会自动下载这些更新,并进行验证、运行。这些常规的操作不需要人的干预。
  • 自动处理死机事件
  • 机器平均一分钟死两台。如果一台机器在进行MapReduce作业期间使用30,000机器,有一台机器死机了,那就不要告诉我了,处理完它,继续工作。找到另一台机器,转移任务,重新启动。
  • 如果有依赖关系那就先等待。如果你等得太久,就让我知道。你处理你自己的计划。这是算法的工作,不需要人为的操作。
  • 保持效率正向提高
  • 大幅提高利用率和效率。不能有100倍的数据就需要100倍的人或机器资源。
  • 2011年Gmail停机和还原,谷歌如何丢失数据又找回
  • 在周日的上午10:31他看到了一个网页,上面写:“Holly Crap打电话给xxx-xxxx”。关于中断要想了解更多,请看在 这里
  • Gmail的数据量达exabyte级别。这意味着大量的磁带。
  • 100%恢复并不意味着可用性也是100%,数据恢复要过段时间才能正常使用。
  • 一系列的bug和意外事件会产生在备份的过程中。即使是单元测试、系统测试和集成测试,对一些bug也是无能为力。
  • 从磁带中还原意味着大量的工作。还原时间和规模相关。还原gigabyte级数据可以在几毫秒到几秒时间内完成。还原200,000个收件箱中的几个gig,每个都得花去不少时间。
  • 把欧洲的几个同事叫醒,因为他们刚休息完、很清醒。这就是分布式劳动力的优势。
  • 从许多磁带还原和检验数据。不需要花几个星期或几个月时间,只需要花几天的时间。这使他们很开心。在类似情况下的其他公司花了一个月时间才意识到他们找不回数据了。需要采取一些措施以确保这个处理下一次更快。
  • 一个磁带驱动器需要2个小时来读。这些磁带分布在各地。否则在还原过程中,任何单一地点都不会有足够能力读取还原过程中涉及的所有磁带。
  • 压缩和校验码实际上不需要读取200K磁带。
  • 还原过程自那时以来已大为改善。
  • 优先还原
  • 已存档的数据可以在更重要的数据之后还原,比如你当前收件箱和发送的电子邮件。
  • 一个月内没用过的帐户可以等活跃用户优先恢复之后还原。
  • 备份系统被看作是一个巨大的全球有机体
  • 例如,不要只考虑GMail在纽约备份,因为如果该数据中心增长或收缩,备份需要适当调整规模。
  • 把备份看成一个横跨世界的巨型系统。备份时它可能完全是在别的地方完成。
  • 在磁带上的还原必须是在磁带所在的位置。但到它制作磁带时,数据可能在纽约而备份可能在俄勒冈州,因为在那里有容量。位置隔离是自动的,客户不知道自己的数据被备份在哪里。
  • 容量可以被迁移。只要有全球的容量和网络支持,磁带被放在哪无关紧要。
  • 拥有的数据越多,保存好它就越重要
  • 越大越重要的是他们的一条准则。谷歌曾经只是搜索引擎。现在它还是Gmail,还有驱动器、文档一类的东西。它现在变得更大也更重要了。
  • 有良好的基础结构
  • 处理问题时,有通用的解决方案再好不过了。在写MapReduce时可能从来没有想到它会被用于备份。但要是没有MapReduce,利用它进行备份的想法也是不会有的。
  • 扩展的重要性不言而喻,软件、基础设施、硬件、流程都要可以扩展。
  • 你不能说:我要去部署更多的磁带驱动器,就需要两倍的员工。你会雇这么多的人吗?你有两倍多的停车点吗?还有食堂房间?厕所?一切都要扩大规模。你会遇到一个瓶颈,然后寸步难行。
  • 证明
  • 别把什么事情都当作理所当然。希望毕竟不是一种战略。
  • 如果你不检验它,那就起不到作用。还原操作必须要检验备份。直到你结束了你还没证明什么。这种态度已发现有很多的不足。
  • DRT.灾难恢复测试
  • 每N个月都要模拟一场灾难恢复,看系统每一层的反应。
  • 如何做到无论灾难带走什么,公司都能生存下去?答案只有一个:必须学会适应。
  • 在基础设施和物理安全发现无数漏洞。
  • 想象有一个数据中心,一条通向数据中心的路,路上的卡车满载了备用发电机的燃料。那如果这条路不通了怎么办?最好有另一条路,另一供应商可以提供柴油燃料。
  • 必须要有供应链冗余策略。
  • 不同时间点不同地点不同软件堆栈中的冗余
  • 不要仅仅通过堆栈迁移数据。特别是暂停期间堆栈不同层中保留的数据。丢失的数据可以在其它地方找到。所以记住:时间、地点和软件。
  • 想一下Gmail的中断示例。如果备份损坏,数据怎样才能不会丢失?这是演讲时,听众的一个问题,他不想透露太多。数据是持续备份的。假设我们有下午9点的数据,假设下午8点出现损坏,但还没有做出磁带。这时损坏被停止了,软件被回滚到上一个工作版本。在一些还原点,所有堆栈中的数据是还在那里。这些就是磁带上的东西。磁带会备份这些东西。在前端上有,在日志中有。所有数据都可以实现重建。但要在所有数据被转移到另一个堆栈中之后再对其进行操作。
  •  删除问题
  • 不去重写磁带而只是删除数据的成本太高。
  • 一种办法是聪明地使用加密密钥。他没有告诉我们谷歌是怎么做的。
  • 当你信任你的同事,并给他们分配各自的职责时,一个巨型的组织就运作起来了
  • 相信他们能胜任自己的岗位。
  • 确定组织和软件接口定义得很好。执行层与层之间的检验测试。
  • 白名单和黑名单
  • 确保数据在安全的地方,保证数据不会在某些地方,保证数据位置多样性和位置独立性。
  • 最初并不是堆栈的功能。因为要满足政府的要求,必须添加进来。
  • 这些功能尽可能放在堆栈的最底层。填写正确的配置文件,就都完成了。

原文链接: How Google Backs Up the Internet Along With Exabytes of Other Data?(编译/毛梦琪 审校/周小璐)

走进支撑过8亿用户的Yahoo!数据中心

【编者按】Yahoo!是一家全球知名的互联网公司,拥有过8亿的活跃用户,提供了60多个全球化产品,分别部署在20多个国家或地区的数十万台服务器之上,然而雅虎全球的运维团队却仅有数百人。下面,我们通过雅虎北京全球研发中心高级系统运维工程师刘元概述的三个方面来了解雅虎的技术运维体系,剖析超大规模网络应用的运维挑战,走进Yahoo!数据中心!以下为原文:

基础设施

“工欲善其事,必先利其器”——需要支撑超大规模的网络应用,超大规模的全球基础设施是必不可少的。所以我们先看Yahoo!数据中心和全球的骨干网络有哪些特别的设计和考虑,来帮支撑超大规模的互联网应用。

图1 Yahoo自主设计的数据中心

首先通过两张图片(图1)来了解Yahoo!数据中心。我们的数据中心大多是自主设计和建造的,尤其在北美地区,我们自主设计并建造了三个超大规模的数据中心。这三个数据中心初期设计的容量均为20兆瓦,大概可容纳25000到30000台服务器及相应网络设备,并均有能力通过后续容量扩展至50兆瓦以上。

如果有参观过国内数据中心,或者有数据中心建设经验的同学可能会有所了解。影响数据中心建设的最主要因素往往不是网络带宽,而是电力和制冷。所以,雅虎通过近20年的经验积累,在这两方面沉淀了大量的专利技术以提高数据中心的密集度。我们自行设计机架及其电源模块以保证所有机架都能满负荷工作,同时实现所有电源的远程网络控制,这样可以有效的提升可维护性,降低现场工程师的工作负担。满架的服务器机架还有另一个好处:所有的服务器都是前吸冷风,后排热风,我们将服务器机架相对排列(面对面,背对背),这样就可以实现冷热风道的隔离,甚至完全密封热风通道,促使冷空气在均匀通过所有服务器散热后,由热风通道排出。这样不仅降低了制冷面积,还提升了散热效率。通过建设超大规模的数据中心,我们不仅增加了数据中心的密集度,提升了单个数据中心的计算能力,满足了日益增长的超大规模应用需求,同时还能提升数据中心现场工程师的管理效率,降低维护成本。此外,我们也不断聚焦新技术的采用以降低能源消耗。我们数据中心通过精心的设计,实现PUE(能源使用效率=总体能源消耗/IT设备能源消耗,越接近1代表能源效率越高)仅为1.08的业界领先水平。

除了数据中心是我们自行设计并建造的,我们全球的骨干网络也是自主设计。我们通过自行铺设光缆或租用运营商网络,构建了自己的Yahoo!全球骨干网。所有的网络设备都由我们的网络运维团队管理,核心网络均是多链路冗余,实现单点网络故障的自动转移,而不依赖网络运营商提供的SLA。

图2全球骨干网络示意图(不代表Yahoo!全球骨干网络设计)

我们的全球骨干网络均为高带宽互联,区域内我们提供10Gbps-40Gbps乃至北美地区的200Gbps互联带宽,洲际间也提供20Gbps的多链路冗余。骨干网络主要是传输雅虎内部数据,分发应用所需的数据到全球所有数据中心,收集全球用户访问数据到后端计算网格进行汇总和计算。

Yahoo!全球骨干网络除了与传统运营商网络互联互通,以方便最终用户能通过其运营商网络快速接入雅虎的各项服务,同时我们还与其他的大型互联网公司有交换网络连接,这样我们与其他大型互联网公司间的数据交换(如邮件数据交换)即可通过我们的交换网络传输,不再依赖于运营商网络。这样不仅提高了交换能力,更大范围降低对网络运营商的依赖性。

技术生态圈

有了世界顶尖的硬件环境,软件环境也不可少。下面我们着重介绍下Yahoo!的技术生态圈,看看Yahoo!使用了哪些产品和技术来支持大规模网络应用。

在雅虎内部构建一个超大规模应用其实并不是那么的复杂,因为我们已经提供了一整套完整的技术体系来帮助开发人员快速建立起一个具有高可维护性的超大规模应用。



图3 Yahoo!数据中心技术生态圈

从这张图我们可以看到一个新应用在生态圈里和现有技术平台的关系:

新应用(APPLICATION)只需要更多的关注自身的业务逻辑。与应用密切关联的本地信息,我们有一些本地存储(LOCAL STORAGE)技术来供应用使用,比如关系性数据库MySQL、Oracle,存储Key-value型数据的MDBM和Memcache。另外,雅虎还提供了大量的平台服务(PLATFORM SERVICES)供我们各种应用使用。比如统一验证平台YCA来完成所有应用内及应用间的身份验证,统一防御平台Ydod来帮助我们识别并且隔离恶意/滥用的流量,用户信息服务UPS可以让应用方便的获取这个用户的相关信息,如地理位置,兴趣喜好等。个性化内容推荐服务Slingstone,可以直接向用户提供个性化的雅虎内部及合作伙伴的内容信息。另外新应用还能方便快捷的接入广告平台(AD SERVER),获取个性化推荐的广告。前端应用收集到的各种应用相关信息(如浏览点击数据),通过我们构建在全球骨干网络之上的数据高速公路(DATA HIGHWAY)这一统一数据通道,及时地回传到雅虎全球最大的商用Hadoop群集。在Hadoop群集上不同应用及平台服务根据各自的需求,处理对应的数据,并将处理好的数据在通过雅虎全球骨干网络分发到各个数据中心的服务端,以方便前端应用的调用。同时Yahoo!在云端(THE CLOUD)还提供共享的云存储(STORAGE),以方便全球化应用的同步和调用各种共享数据。

除了这些常见的技术来帮助快速构建超大规模应用,我们还提供了大量的技术和产品来进行高效的运维和管理:

  • 主机信息管理系统:通过主机信息管理系统管理所有系统硬件信息,如CPU、内存、硬盘、网卡地址、Console接口、电源接口、物理位置等。
  • 角色配置管理系统:主要是把主机根据角色分成不同的组,不同角色的主机会应用不同的配置。不同角色的主机有不同的运维团队、系统配置、应用配置等。
  • 网络设备管理系统:包括交换机上的访问控制列表、负载均衡设备的配置、全球负载均衡配置,以及访问状态数据的统计。
  • 统一的监控平台:用于从不同层面进行监控,我们有所有主机系统数据的监控,也有基于服务可用性的监控。然后我们也有访问量、访问延时等应用层面的数据监控,并可以和历史数据进行比较。

所有的这些平台大多都是雅虎运维团队自行开发和维护的,更贴合Yahoo!的使用体验,帮助对超大规模的主机进行统一和高效的管理。

运维团队

前面的两条分别是硬件和软件环境,除了一流的硬件和完备的软件环境,能够实现高可用性大规模应用的核心,还是人。所以我们在最后,会给大家介绍雅虎的全球运维团队是如何工作的。

在Yahoo!我们的运维团队除了基础设施的Operation团队,如数据中心现场工程师(SiteOps)、网络运维工程师(NetOps)、基础设施(DNS、DHCP等)运维团队(InfraOps)和安全团队(Paranoid)等。我们还会按照产品线划分出Service Engineer团队,来支持这项产品的应用运维。

SE(Service Engineer)团队和大部分公司的系统运维工程师一样,会负责生产系统维护,如部署应用、监控报警、配置管理、变更管理及故障管理。除此之外,在雅虎SE团队会更多的深入了解应用。

图4 团队协作

从产品设计之初,我们就会和产品经历及研发团队共同讨论系统架构设计,确保开发团队将要实现的是高可用性、高可扩展性及高可维护性的产品。产品测试阶段,我们也会和测试团队保持密切的沟通,使测试环境能够最大程度模拟生产环境的各种场景,以保证我们产品经过了完整有效的测试。系统上线前,我们还会和各个团队评估整个产品的可维护性,并确定应用的容量规划及其故障转移策略,确保SE团队充分了解如何在生产环境中维护该项产品。由于不同的团队可能在不同的国家和地区,所以只有更紧密的全球化协作,才能为用户提供一个高可用性、高可维护性的全球化产品。

产品上线以后,才是产品整个生命周期的开始,我们需要确保产品在其设计的生命周期内,都能够按照我们的预期提供高可用性的服务。所以在日常维护中,我们会和产品及研发团队一同分析产品运行状态,分析总结各种故障,不断的修正已有的Bug,提供新功能的建议与意见。根据各地用户分布及产品的运行状态,修正我们的容量规划及故障转移策略,进一步提升用户体验。

结语

以上只是雅虎在超大规模应用运维体系的简单概述,并没有太多的技术细节,瑾作抛砖引玉之用。雅虎全球运维团队的工程师利用他们的智慧,不断创新,一一应对各种挑战,完成一个个不可能完成的任务。

http://www.csdn.net/article/2014-02-11/2818365-yahoo-datacenter-view

互联网思维下的传统企业转型思考

最近各大互联网思维的帖子引发热议,解读这些典型案例的玩法和手段,提出了很多的概念,如碎片化、用户至上、粉丝经济等等,仿佛一瞬间传统企业优质的产品、满意的服务、高超的资本运作手段都不再重要,全部被互联网思维的潮水所淹没。除了看热闹,我们是不是应该深入思考下隐藏在现象背后的真相以及所面临的挑战?

营销的真相

“互联网思维”的营销案例,并不是近一、两年才产生的,也不是互联网的专利。05年超女的成功从商业炒作而言,在于迎合了大众民主的社会参与意识,更重要的在于对后现代新型偶像的崇拜心理;甚至也有人说毛爷爷当年的革命胜利正是抓住了那个时代的屌丝代表——广大工农兄弟,“打土豪、分田地”的需求,也是那个背景下的人民大众追求公平、自由的精神诉求;今天小米的粉丝文化既是用户对产品参与感的强烈认同,但更重要的年轻一代的极客消费文化;如果我们真的明白了,也不会奇怪为什么差评无数的《小时代》依然有人捍卫,屌丝逆袭的《泰囧》能够拿下票房冠军。

无论是诺基亚的倒下,任天堂的老去、微软的疲软,我们都应该看到上一代以功能著称的产品正在走下神坛,功能比拼已经不是杀手锏。面对产品越来越丰饶的今天,80、90后更向往价值观层面的契合和精神引领,也需要更强的群体认同感,甚至在消费行为上更容易相互影响。这种精神需求催生了很多亚文化现象,而社区、博客、论坛更是为亚文化的诞生和传播提供了水土丰美的牧场,创造了亚文化产生的技术背景和条件。

如今,80、90后身边充斥着比以往任何一个时代更多的媒体介质,这里面所蕴藏的各种亚文化声音使得我们比以往任何一个时代更早地感受到当下的情景,传统的口号式鼓动和广告式推广只能让我们再一次感到窘迫的压力。因此,品牌的影响已经慢慢从大平台转向小圈子,从改造社会的大话题转向改造自己,从被动的接受指导变为我对你故事和价值观的认可……。

任何新品牌的崛起一定是在当前时代背景下,戳中了代表未来一代的精神诉求,并以这个点为中心完成从亚文化市场到大众市场的跨越。了解你的时代背景,了解这个时代的客户环境,这才是成功营销的本质。

0afbcc1c79490b186d5772a0f04ab6a4.png产品的颠覆

马化腾最推崇的一位硅谷大神——凯文·凯利前段时间在2014年的财经年会上表示:颠覆来源于非主流。革命性的技术都有一些共同点,最开始的时候,他们都是质量很差的,差到你可以完全忽视,所以他们更像是小玩意儿,风险也很高。比如,200年前,当蒸汽船出现时,远洋帆船嘲笑他们为玩具,但他们却忽视了蒸汽船可以逆风逆流,直到有一天全球性的帆船产业消失了;上世纪60年代本田发明减少燃料的电动引擎也不被当时巨无霸GM所关注,但是这些日本汽车企业的不断改良,他们取得了巨大成就,而GM却破产了;传统打印产业对点矩阵的不削一顾成就了后来的喷墨打印。正因为他们出现时的低质,亚文化特性,甚至“恶搞”,很容易遮盖了他们背后的严肃性和创新性。

事实上,这一代拥有比上一代人更为丰富的社群资源,web2.0的思维更是提供了更低门槛的创作机会,对经典元素的解构、戏仿、拼贴。我们不能忽视这些一开始看上去弱小的产品结构,以及在这些平台上所产生的二次创造,当诺基亚高层嘲讽第一代iPhone根本不经摔时,谁能预见后来智能手机及上面繁花似锦的APP主宰了现在的移动互联网。

传统企业产品上最大的挑战不是来自于已有技术的优化,不是来自同重量级产品的竞争,虽然你的公司一直在往上走,但具有破坏力的东西却在另一面悄然盛开,这里才是革命的发源地。

管理的挑战

在转型大潮下,技术的创新不是问题,商业模式也足够重要到时时引起大家的关注,但唯有管理,其实很重要,却往往被大家忽视。

一个伟大的企业,往往在其过去的发展过程中会形成规范的组织结构,完善的考核体系,优秀的战略管理,但是这些在过去几十年所沉淀下来的管理体系是否适合于新战略的管理需求?过去企业雇佣的是工人的手,过去可以通过标准化、量化的工作正在被智能设备所取代,工业时期的“劳动分工原理”、“制度化管理理论”等传统管理思想已经越来越不适合现在的社会需求。

为什么腾讯会采用项目组机制并允许彼此之间进行竞争,为什么阿里会提出小而美的公司结构,为什么海尔会实践“倒三角”理论来挑战过去“科层制”的管理结构,现在越来越多企业“去中心化”的特征是否得到我们足够的注意?

这次中国经营报重大的组织架构调整除了自媒体的狂欢,我们是不是更应该看到老一辈的媒体人感受到了世界是平的,这种觉醒也将产生巨大的颠覆力。这次转型所发表的演讲更应该引起我们的注意:未来的企业都是一个扁平化的组织,没有过多的层级结构。除了行政、法务、财务、人力资源、这些“支持部门”,以及信息中心这样的“平台部门”之外,其余的全部是以“产品”为中心的项目团队。这样的项目团队将来也许会有十几个之多,并且它的存在也是动态的,赢利即生,亏损即亡。团队内部的结构也是扁平的,以产品经理和客户经理为代表,实现不同工种人员的跨界合作。不同项目团队之间,也许会存在某种竞争,但更多的应该是为响应客户需求而进行协同作战,相互取长补短,共同营造生态化、“动成长”的新型组织形态。

从这种管理思想的调整可以预见:越来越多的巨无霸将形成这种“大平台+小团队”的组织结构,纵向压缩组织,使组织扁平化,横向实现集成,形成团队化的工作方式,推行并行工程。调整后,企业也将面临流程的重组,文化的重塑,信息系统的重建。

互联网思维是一种时代转型的信号,传统企业必须勇敢地面对这种冲击,主动变革比创业本身更需要勇气,所围绕的是新时代下顾客的生活方式,而不是互联网本身,所要克服的是过去的成功所造成的惯性思路。这次浪潮的冲击下,总会有一批企业被淘汰,但当越来越多的传统企业明白时代转型的要义后,依旧可跳上一曲优美的华尔兹,来一次华丽的转身。

“我和小伙伴都吓坏了”——余额宝昨天没收益?!

截止12日上午9:29分 余额宝暂无收益

  荆楚网消息(记者李柯 见习记者潘倩 )余额宝显示暂无收益!12日一早,一条重磅消息在“宝粉”中传开。难道余额宝出现风险了?不少“宝粉”很是担心。

“今天早上打开手机,发现余额宝上显示暂无收益,我以为是网速不给力,结果连了WIFI还是没收益,打了一圈电话,才知道大家都没收益。”武昌区东湖路的吴小姐告诉记者,“我和我的小伙伴都吓坏了!”

记者同样发现,今早,手机版余额宝没有像往常一样,显示前一天的收益,而是显示“暂无收益”。

上午9点,记者开始拨打余额宝电话,一段新加入的电话录音提示余额宝用户收益将于下午三点到账,如未到账将延时到账,请大家耐心等待。记者继续拨打电话,一直都无法转接到人工客服坐席,均提示:“话务高峰繁忙,您将等待十分钟,系统已自动为您转接在线客服,请登录支付宝网站。”

“最近两天工作忙都没仔细看,今天一看暂无收益,就查了一下昨天的,显示我最近一次收益到账是2月10日,觉得很恐慌。”吴小姐表示,自己的余额宝是把自己所有的收入还有家里的存款都放进去了,一旦出问题,辛苦钱都打了水漂了。

手机版余额宝里也发布公告,收益已经陆续发放,预计最晚到账时间未15时,请关注。

早上9点9分,余额宝官方微博发布消息称:“由于系统升级,收益稍后发放。粉儿们别急,一分也不会少。”微博一发布网友留言近千条,网友纷纷表示对未到帐的担忧和疑惑。

据了解。余额宝自去年6月上线以来,首次出现收益暂时无法显示的状况。直至今日上午9时,余额宝官网也并未就升级提前发布公告,引起了许多用户的不安和猜测。

“还是不能把钱都放余额宝里。”对于这次收益未到账,余额宝遭到网友吐槽,小徐说,“我一直都跟周围人说余额宝很安全的,有全额赔付,经过这次我可能没那么信任余额宝了,关键时刻电话都打不进去。”

截止上午10点21分,余额宝11日收益陆续到账。网友家家表示:刚刚收到了,下次记得事先通知,比起收益,本金才是用户更关心的,如果因为系统问题或政策问题,产生任何非常规的现象,都会引起用户信心的动荡。也有网友表示,只是虚惊一场,还是会支持余额宝。

WordPress通过文章ID获取文章标题内容等信息

使用Wordpress的朋友可能遇到这样的问题,在非single.php页面中我们有时候想要调用当前文章的标题、内容等信息,而Wordpress在生成文章页的时候在各个页面中唯一不变的只有当前的文章ID,那么如何根据这个ID获取到当前文章的标题、内容等信息呢?可以通过下面的代码实现:

<?php 
$id=//这里是文章的ID 
$title = get_post($id)->post_title;
echo $title;//输出文章的 标题
?>

其他信息可以通过改变get_post($id)->post_title中的post_title来实现:

post_author:(整数)文章作者的编号
post_date:(字符)文章发表的日期和时间(YYYY-MM-DD HH-MM-SS)
post_date_gmt:(字符)文章发表的格林尼治标准时间(GMT) (YYYY-MM-DD HH-MM-SS)
post_content:(字符)文章内容
post_title:(字符)文章标题
post_category:(整数)文章类别的编号。注意:该值在WordPress 2.1之后的版本总为0。定义文章的类别时可使用 get_the_category()函数。
post_excerpt:(字符)文章摘要
post_status:(字符)文章状态(publish|pending|draft|private|static|object|attachment|inherit|future)
comment_status:(字符)评论状态(open|closed|registered_only)
ping_status:(字符)pingback/trackback状态(open|closed)
post_password:(字符)文章密码
post_name:(字符)文章的URL嵌套
to_ping:(字符)要引用的URL链接
pinged:(字符)引用过的链接
post_modified:(字符)文章最后修改时间(YYYY-MM-DD HH-MM-SS)
post_modified_gmt:(字符)文章最后修改GMT时间(YYYY-MM-DD HH-MM-SS)
post_parent:(整数)父级文章编号(供附件等)
guid:(字符)文章的一个链接。注意:不能将GUID作为永久链接(虽然在2.5之前的版本中它的确被当作永久链接),也不能将它作为文章的可用链接。GUID是一种独有的标识符,只是目前恰巧成为文章的一个链接。
post_type:(字符)(日志 | 页面 | 附件)
post_mime_type:(字符)Mime类型(供附件等)
comment_count:(整数)评论总数

网页特殊字符对照表

网页特殊字符对照表

网页上的特殊字符对照表,不要小看了特殊字符,用好了这些不但会增色你的网页,而且也会节省网络资源,不再用图片去显示文字无法修饰的内容;特殊字符是由系统的特殊字体派生而来,这个对照表就向你说明了字体与字符的对应关系,方便你以后使用。

<html>
<head>
<title>特殊字符、符号代码对照表</title>
</head>
<body>
<center style=”font-size:20px;”>
<form name=”font”>
<select name=”family” size=”1″ onChange=”JavaScript:chgFont();” style=”font-size:20px;”>
<option selected value=”Webdings”>Webdings</option>
<option value=”Wingdings”>Wingdings</option>
<option value=”Wingdings 2″>Wingdings 2</option>
<option value=”Wingdings 3″>Wingdings 3</option>
<option value=”Symbol”>Symbol</option>
</select>符号、常规符号及其代码对照表
</form>
</center>
<script language=”JavaScript”>
document.write(‘<table border=”1″ width=”100%” cellspacing=”0″ cellpadding=”0″>’);
for (j=0;j<4;j++) {
document.write(‘<td bgcolor=”menu” bordercolor=”menu” align=”center” valign=”middle” width=”7%” style=”font-size:; color:red; font-family: fixedsys”>代码</td>’);
document.write(‘<td id=”F’+j+'” bgcolor=”menu” bordercolor=”” align=”center” valign=”middle” width=”11%” style=”font-size:; color:red; font-family: fixedsys”>Webdings</td>’);
document.write(‘<td bgcolor=”menu” bordercolor=”menu” align=”center” valign=”middle” width=”7%” style=”font-size:; color:red; font-family: fixedsys”>常规</td>’);
}
for(i=32;i<256;i++){
if (i%4==0) {
document.write(‘<tr>’);
}
document.write(‘<td bgcolor=”menu” align=”center” valign=”middle” width=”7%” style=”color:blue; font-family: fixedsys”><a>&#</a>’+i+’;</td>’);
document.write(‘<td id=”f’+i+'” align=”center” valign=”middle” width=”11%” style=”font-size:30px; color:red; font-family: Webdings”>&#’+i+’;</td>’);
document.write(‘<td align=”center” valign=”middle” width=”7%” style=”font-size:26px; color:blue; font-family: Arial”>&#’+i+’;</td>’);
if (i%4==3) {
document.write(‘</tr>’);
}
}
document.write(‘</table>’);
</script>
<script language=”JavaScript”>
function chgFont() {
fontIndex = document.font.family.selectedIndex;
fontValue = document.font.family.options[fontIndex].value;
for (m=0;m<4;m++){
eval(‘F’+m+’.innerHTML=”‘+fontValue+'”;’);
}
for (n=32;n<256;n++){
eval(‘f’+n+’.style.fontFamily=”‘+fontValue+'”;’);
}
}

chgFont();
</script>
</body>
</html>

♤ & #9828
♡ & #9825
♧ & #9831
♠ & #9824
♣ & #9827
♥ & #9829
♦ & #9830
◈ & #9672
ღ & #4326
ზ & #4310
ო & #4317
ლ & #4314
დ & #4307
▩ & #9641
▣ & #9635
▤ & #9636
▥ & #9637
▦ & #9638
▧ & #9639
▨ & #9640
▩ & #9641
რ & #4320
ჟ & #4319
ფ & #4324
♨ & #9832
წ & #4332
ჭ & #4333
ჯ & #4335
ჰ & #4336
ჱ & #4337
ჵ & #4341
ტ & #4322
♩ & #9833
♪ & #9834
♫ & #9835
♬ & #9836
♭ & #9837
Π& #338
& #8364
½ & #189
¾ & #190
¼ & #188
☞ & #9758
☜ & #9756
ஐ & #2960
☺ & #9786
☻ & #9787
►&#9658
◄&#9668
☜ &#9756
☞ &#9758
◐&#9680;
◑&#9681;

iOS 7 图标设计的七条黄金法则

你是怎样设计iOS7图标的?如果还没开始上手?不要紧,抓紧练习前,先看看 Craig Grannell 从设计大神那里总结的一些经验。

iOS7的图标设计,评论不一,肯定有优点,也有缺点,正如Bjango设计总监 Marc Edwards 说的那样:“不管iOS7好还是坏,大部分应用的图标都根据iOS7的视觉风格进行了调整,我个人怀疑iOS 8的视觉转变可能会更大,但无论如何,iOS7还会存在很久。”

从iOS6到iOS7,苹果的转变未免太激进了,这给很多设计师设置了障碍:原来在iOS6上的设计经验一点都用不上。

那么到底要怎样设计iOS7图标呢?我们一道来听听大师的看法,一道探索吧。

01.使用辨识度高的隐喻

(1)Edwards 首先注意到的一点便是图标通常尺寸都很小,因此图标设计的关键就在于:简单的勾勒出应用的整体概念

“一般的做法是使用一种或两种辨识度较高、能代表概念的物体。然后再用优秀的色彩和流畅的形状来塑造美感”

(2)而设计师 Jon Hicks认为除此之外,图标的隐喻性也要强(比如说拍照应用),图标应该是一种能够有所代表的符号,具有一种标识性(不可否认,Safari的品牌塑造就很成功,大部分人一眼都能认出来),Apple的游戏中心以及设置图标的隐喻性就很差。

(3)Soft Façade的创意总监 Dmitry Tsozik认为设计师不要自作聪明:“随随便便放上个白背景,再填几个彩色圆环,这能叫图标吗?”

这种图标不具备功能性,通过图标无法了解应用的功能、概念。

多研究研究色彩和隐喻,图标的作用是引导用户进入应用的窗口,最好让用户一眼皆知应用的功能,不要让用户猜。

1

照相机图标非常显眼,但是过于厚重,美感不佳,不过它的隐喻非常强烈,一眼皆知这款应用的用处。而游戏中心….隐喻糟糕透了。

02. 鲜活用色

Iconfactory 联合创始人 Gedeon Maheux认为即便你对iOS7的色彩体系不感冒,你也要研究研究iOS7的图标设计风格,毕竟苹果是设计风向标:“在设计中尝试打造鲜明的对照感。iOS7因明亮的边界、清晰的线条、大胆的色彩而著称”

他认为明亮的色彩能带来一种活力感和趣味性,柔和、细腻的色彩却无法做到这一点。

2

iWork应用色彩非常鲜活,辨识度极高

03. 使用栅格线

Maheux建议在开始iOS7图标设计时,使用当下流行的iOS7栅格线:“能让你分块的设计,并且能够构建界面中图标的整体感。采用栅格线方式进行设计的图标越多,在界面中就能更好的彼此匹配,界面中图标的整体感越强”

当然,他也认为,不应该太限制自我:“如果你觉得打破栅格线,你的设计会更出彩,那不妨试试”

3

苹果的栅格线能让你进行“各个击破”的设计,但是必要情况下可以打破栅格线的限制。

04. 避免信息过载

iOS7高度依赖字体。纤细的字体让按钮区域充满了大量的留白。

但是Edwards认为图标尽量不要和纤细的字体结合:“图标应该是一种符号化的元素,本身就是一种视觉语言,不应该和文字语言联系到一起。即便结合,文本也不宜过多。”

4

比如说设置中的VPN选项,微图标和文本结合让人有一种信息过载的感觉

05.适度添加深度感

iOS7的视觉风格可以看作是一种扁平化设计,Jony Ive特别强调了iOS7“层次”的概念,而不是一种单一的扁平。Maheux认为,若想要与众不同,必须设计的与众不同:“加入一点投影、加入一点渐变 也无妨,多做做实验,没准一种新的流行由此诞生,iOS7上的设计充满了无限可能,不一定要死板的扁平。”

5

Iconfactory的Scope

Mirror图标便具有深度感,效果比纯扁平设计好多了。

06.一致的视觉风格

(1)可以看看苹果应用商店套件的图标,很明显,他们都是一个系列的图标。

设计成套图标和设计一款图标,要考虑的东西不尽相同。设计成套图标还要考虑一致性。

设计师要刻意培养自己的这种整体感,即便你的工作是设计一款图标,你也可以这么想:“要是这款应用有了姊妹应用,那么图标该要怎么设计?”通过这种假象来锻炼自己的设计思维。

(2)不过Hicks还提醒,一致性不意味着拘泥于一种形式:“线条粗细不必完全相同、颜色也不必完全一致,但是整体风格一定要和谐、匹配”

他强调“白色符号搭配色彩渐变”这种方法最简单。(或者在白色背景上使用多彩、透明的图标)“整体风格统一——单个图标根据隐喻的不同来灵活设计”

(3)Edwards认为:“通过一致性设计,能够增加同一系列应用、图标的联系感”

6

打造一致性的方法有很多。

07. 追求完美

不管iOS7的视觉风格怎样,优秀图标的标准还是没有改变:优雅、简约、细节到位。

Tsozik推荐多读一点现代设计、建筑、字体类的书籍,不断追求完美。

原文出处: creativebloq   译文出处: uisdc

黑洞理论创始人霍金发文称黑洞并不存在

 

黑洞概念图

    黑洞不存在?开玩笑的吧。不过,这话既然出自黑洞理论创始人之一史蒂芬•霍金之口的时候,就得认真听了。据《自然》1月24日报道,霍金发表论文,质疑黑洞的存在。

如果霍金的理论正确,黑洞核心的奇点根本就不存在,甚至不排除“一切事物原则上能逃离黑洞”这种极端局面的可能性。霍金说:“在经典理论中,黑洞不会放过任何东西;但量子理论允许能量和信息逃离黑洞。”他同时表示,科学家需要结合重力和其他自然力构建新的理论才能明确解释整个过程。

霍金认为,受到黑洞引力的影响,能量和物质先是靠近——但不会到达——黑洞中心,最终还会被释放出去。不过,它们的信息在黑洞中不会毁灭,但是被完全打乱,逃离之后面目全非,几乎无法还原。

霍金1月22日就在网上发表题为《黑洞的信息保存和天气预报》的论文,写道:“从光也无法从中逃脱的角度来看,没有视界(event horizon)就意味着没有黑洞。”实际上,霍金2013年8月曾在学术会议上谈到过类似想法,以此为基础撰写论文。

“火墙”之谜

霍金此举意在解答黑洞的“火墙”之谜。

此前研究人员猜测过,假如一位倒霉的宇航员不幸落入黑洞将是什么情景。长久以来,物理学家以相对论为基础,默认宇航员会毫不知情地落入黑洞,在黑洞核心奇点处灰飞烟灭。后来又有科学家根据量子理论提出新的见解,认为黑洞的视界是一块类似“火墙”的高能区域,会把掉进去的宇航员直接烧焦。

霍金理论的核心内容是,量子在黑洞周围造成剧烈的时空波动,所以像“火墙”一样的边界根本不可能存在。

号外!CentOS 宣布加入红帽公司!

来自 CentOS 邮件列表的消息:CentOS 项目已加入红帽公司,作为红帽公司开源和标准团队( http://community.redhat.com/ ) 的一部分,培养快速创新平台之外的下一代新兴技术。将于 Fedora 和 RHEL 生态系统一起工作,我们希望通过新的平台进一步扩大社区服务。

我们已经发布了全新的 CentOS 网站:http://www.centos.org/

新计划将由新的 CentOS 管理董事会管理。最初的董事会由现有CentOS的核心团队成员包括:

– – Ralph Angenent
– – Tru Hyunh
– – Johnny Hughes JR
– – Jim Perrin
– – Karanbir Singh

此外还包括新成员:

– – Fabian Arrotin, 来自社区董事会提名
– – Carl Trieloff, Karsten Wade, and Mike McLean 红帽提名

董事会工作方针:公开、开放和包容。http://www.centos.org/about/governance/

CentOS 加入红帽后不变的是:

1. CentOS 继续不收费
2. 保持赞助内容驱动的网络中心不变
3. Bug、Issue 和紧急事件处理策略不变
4. Red Hat Enterprise Linux 和 CentOS 防火墙也依然存在

变化的是:

1. 我们是为红帽工作,不是为 RHEL
2. 红帽提供构建系统和初始内容分发资源的赞助
3. 一些开发的资源包括源码的获取将更加容易
4. 避免了原来和红帽上一些法律的问题

此新闻在 CentOS 和红帽官网上都已发布:

http://lists.centos.org/pipermail/centos-announce/2014-January/020100.html
http://www.redhat.com/about/news/press-archive/2014/1/red-hat-and-centos-join-forces