0%

第一章
[原文]

道可道也①,非恒道也②。名可名也③,非恒名也。无名④,万物之始也;有名⑤,万物之母也⑥。故恒无欲也⑦,以观其眇⑧;恒有欲也,以观其所徼⑨。两者同出,异名同谓⑩。玄之又玄⑾,众眇之门⑿。

 

[译文]

“道”如果可以用言语来表述,那它就是常“道”(“道”是可以用言语来表述的,它并非一般的“道”);“名”如果可以用文辞去命名,那它就是常“名”(“名”也是可以说明的,它并非普通的“名”)。“无”可以用来表述天地浑沌未开之际的状况;而“有”,则是宇宙万物产生之本原的命名。因此,要常从“无”中去观察领悟“道”的奥妙;要常从“有”中去观察体会“道”的端倪。无与有这两者,来源相同而名称相异,都可以称之为玄妙、深远。它不是一般的玄妙、深奥,而是玄妙又玄妙、深远又深远,是宇宙天地万物之奥妙的总门(从“有名”的奥妙到达无形的奥妙,“道”是洞悉一切奥妙变化的门径)。

 

[注释]

①第一个“道”是名词,指的是宇宙的本原和实质,引申为原理、原则、真理、规律等。第二个“道”是动词。指解说、表述的意思,犹言“说得出”。
②恒:一般的,普通的。
③第一个“名”是名词,指“道”的形态。第二个“名”是动词,说明的意思。
④无名:指无形。
⑤有名:指有形。
⑥母:母体,根源。
⑦恒:经常。

⑧眇(miao):通妙,微妙的意思。
⑨徼(jiao):边际、边界。引申端倪的意思。
⑩谓:称谓。此为“指称”。
⑾玄:深黑色,玄妙深远的含义。
⑿门:之门,一切奥妙变化的总门径,此用来比喻宇宙万物的唯一原“道”的门径。

 

[延伸阅读1]王弼《道德经注》

道可道,非常道,名可名,非常名。
可道之道,可名之名,指事造形,非其常也,故不可道,不可名也。

无名,天地之始;有名,万物之母。
凡有皆始於无,故未形无名之时,则为万物之始。及其有形有名之时,则长之育之,亭之毒之,为其母也。言道以无形无名,始成万物,以始以成,而不知其所以玄之又玄也。

故常无欲,以观其妙;
妙者,微之极也。万物始於微而后成,始於无而后生,故常无欲空虚,可以观其始物之妙。

常有欲,以观其徼。
徼,归终也。凡有之为利,必以无为用;欲之所本,适道而后济。故常有欲,可以观其终物之徼也。

此两者,同出而异名。同谓之玄,玄之又玄,众妙之门。
两者,始与母也。同出者,同出於玄也。异名所施,不可同也,在首则谓之始,在终则谓之母。玄者,冥也,默然无有也,始、母之所出也,不可得而名,故不可言。同名曰玄,而言同谓之玄者,取於不可得而谓之然也。谓之然则不可以定乎一玄而已,则是名则失之远矣,故曰玄之又玄也。众妙皆从同而出,故曰众妙之门也。

 

[延伸阅读2]苏辙《老子解》

道可道,非常道。
莫非道也。而可道者不可常,惟不可道,而後可常耳。今夫仁義禮智,此道之可道者也。然而仁不可以為義,而禮不可以為智,可道之不可常如此。惟不可道,然後在仁為仁,在義為義,在禮為禮,在智為智。彼皆不常,而道常不變,不可道之能常如此。

名可名,非常名。
道不可道,而況可得而名之乎?凡名皆其可道者也。名既立,則圓方曲直之不同,不可常矣。

無名,天地之始;有名,萬物之母。常無,欲以觀其妙;常有,欲以觀其徼。
自其無名,形而為天地,天地位而名始立矣。自其有名,播而為萬物,萬物育而名不可勝載矣。故無名者道之體,而有名者道之甩也。聖人體道以為天下用,入於衆有而常無,將以觀其妙也。體其至無而常有,將以觀其徼也。若夫行於其徼而不知其妙,則粗而不神矣。留於其妙而不知其繳,則精而不遍矣。

此兩者,同出而異名,同謂之玄。
以形而言有無,則信兩矣。安知無運而為有,有復而為無,未嘗不一哉。其名雖異,其本則一,知本之一也,則玄矣。凡遠而無所至極者,其色又玄,故老子常以玄寄極也。玄之又玄,衆妙之門。言玄則至矣,然猶有玄之心在焉。玄之又玄則盡矣,不可以有加矣,衆妙之所從出也。

网站找了不少代码,但总有点问题,最后拼拼凑凑,终于实现了。
模拟微信,支持Ctrl+Enter换行,Enter发送,测试环境win7+chrome,mac+chrome

核心部分代码如下,其他的代码可以点击示例查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$('div[contenteditable="true"]').keypress(function(e) {

console.log(e.keyCode)

if (e.keyCode == 13 && !e.ctrlKey) {
console.log("enter")
e.preventDefault();
return false;
} else if (e.keyCode == 10 || (e.keyCode == 13 && e.ctrlKey)) {
console.log("ctrl + enter");
e.preventDefault();

var docFragment = document.createDocumentFragment();

//add a new line
var newEle = document.createTextNode('\n');
docFragment.appendChild(newEle);

//add the br, or p, or something else
newEle = document.createElement('br');
docFragment.appendChild(newEle);

//make the br replace selection
var range = window.getSelection().getRangeAt(0);
range.deleteContents();
range.insertNode(docFragment);

//create a new range
range = document.createRange();
range.setStartAfter(newEle);
range.collapse(true);

//make the cursor there
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);

return false;
}
}).keyup(function() {
if (!this.lastChild || this.lastChild.nodeName.toLowerCase() != "br") {
this.appendChild(document.createElement("br"));
}
})

Demo
http://jsfiddle.net/icaca/jDvau/592/

因为项目原因,用到了snmp trap,使用UDP 162端口来接收SNMP报警信息。
在显示中文和日期时会出现乱码,具体原因网上写的比较多,我就不做解释了。
从网上找了一部分代码,总有点问题,然后修修改改中文能显示了,但是遇到日期仍然有问题,然后又找了一部分代码,将其整合,终于解决了,先粘一下代码,后面如果改动了再作更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 处理SNMP事件

public void processPdu(CommandResponderEvent event) {
System.out.println("processPdu");

String version = null;
String community = null;
if (event.getPDU().getType() == PDU.V1TRAP) {
version = "v1";
community = new String(event.getSecurityName());
} else if (event.getPDU().getType() == PDU.TRAP) {
if (event.getSecurityModel() == 2) {
version = "v2";
community = new String(event.getSecurityName());
} else {
version = "v3";
}
}

PDU pdu = event.getPDU();

String output = "SNMP:[IP = " + event.getPeerAddress() + "]";
// System.out.println(output);

if (event != null && event.getPDU() != null) {
Vector<VariableBinding> recVBs = (Vector<VariableBinding>) pdu.getVariableBindings();
for (int i = 0; i < recVBs.size(); i++) {
VariableBinding recVB = recVBs.elementAt(i);

String des = OID.get(recVB.getOid().toString()) + " : " + getChinese(recVB.getVariable().toString());
// System.out.println(des);
output += "\n" + des;

// }
}
}

System.out.println(output);


}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// octetString 转 二进制

private static int[] octetStringToBytes(String value_ipar) {
// ---------------------------
// Split string into its parts
// ---------------------------
String[] bytes;
bytes = value_ipar.split("[^0-9A-Fa-f]");

// -----------------
// Initialize result
// -----------------
int[] result;
result = new int[bytes.length];

// -------------
// Convert bytes
// -------------
int counter;
for (counter = 0; counter < bytes.length; counter++)
result[counter] = Integer.parseInt(bytes[counter], 16);

// ----
// Done
// ----
return (result);

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// octetString 转 Date

private static Date octetStringToDate(String value_ipar) throws Exception {
// ---------------------------
// Convert into array of bytes
// ---------------------------
int[] bytes;
bytes = octetStringToBytes(value_ipar);

// -----------------------
// Maybe nothing specified
// -----------------------
if (bytes[0] == 0)
return (null);

// ------------------
// Extract parameters
// ------------------
int year;
int month;
int day;
int hour;
int minute;
int second;
int deci_sec = 0;
int offset = 0;
year = (bytes[0] * 256) + bytes[1];
month = bytes[2];
day = bytes[3];
hour = bytes[4];
minute = bytes[5];
second = bytes[6];
if (bytes.length >= 8)
deci_sec = bytes[7];
if (bytes.length >= 10) {
offset = bytes[9] * 60;
if (bytes.length >= 11)
offset += bytes[10];
if (bytes[8] == '-')
offset = -offset;
offset *= 60 * 1000;
}

// ------------------------------------
// Get current DST and time zone offset
// ------------------------------------
Calendar calendar;
int my_dst;
int my_zone;
calendar = Calendar.getInstance();
my_dst = calendar.get(Calendar.DST_OFFSET);
my_zone = calendar.get(Calendar.ZONE_OFFSET);

// ----------------------------------
// Compose result
// Month to be converted into 0-based
// ----------------------------------
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, deci_sec * 100);

// ---------
// Reset DST
// ---------
calendar.add(Calendar.MILLISECOND, my_dst);

// -----------------------------------------------------------------------------------
// If the offset is set, we have to convert the time using the offset of
// our time zone
// -----------------------------------------------------------------------------------
if (offset != 0) {
int delta;
delta = my_zone - offset;
calendar.add(Calendar.MILLISECOND, delta);
}

// -------------
// Return result
// -------------
return (calendar.getTime());

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// octetString 转 中文

private static String getChinese(String variable) {
String result = variable;

if (!variable.contains(":")) {
return result;
}

if (variable.length() == 23 || variable.length() == 32) {
try {
return format.format(octetStringToDate(variable));
} catch (Exception e) {
}
}

if (result.equals(variable)) {
try {

String[] temps = variable.split(":");
byte[] bs = new byte[temps.length];
for (int i = 0; i < temps.length; i++)
bs[i] = (byte) Integer.parseInt(temps[i], 16);
result = new String(bs, "utf-8");
} catch (Exception ex) {

}
}
return result;

}

参考网址:
http://www.cnblogs.com/yuanfy008/p/8046189.html
https://blog.csdn.net/appletreesujie/article/details/50752065
https://forum.huawei.com/enterprise/zh/thread-429027.html
http://www.mibdepot.com/cgi-bin/getmib3.cgi?win=mib_a&i=1&n=MSEA-MIB&r=johnsoncontrols&f=msea.mi2&v=v2&t=tree

最近挺忙的,一直没时间做其他事情,这两天好不容易解决了几个问题,于是把问题的经过整理一下,希望遇到类似问题的小伙伴能快速解决。

步骤一:Play Framework引入MariaDB,这个相对简单,只要从maven上下载一个类库然后修改application.conf即可。

1
2
3
4
5
db.default.url=jdbc:mariadb://ip/db?useUnicode=yes&characterEncoding=utf8mb4&connectionCollation=utf8mb4_general_ci&zeroDateTimeBehavior=convertToNull
db.default.driver=org.mariadb.jdbc.Driver
db.default.user= 用户
db.default.pass= 密码
jpa.default.dialect=org.hibernate.dialect.MySQLDialect

最后一句不加的话,play!运行的时候会报错。
步骤二:接下来就是修改MariaDB的编码了。

1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/my.cnf  

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
character-set-client-handshake = FALSE

重启mysqld,service mysqld restart,查看是否生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';  
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

步骤三:就是将之前的数据表都刷成utf8mb4_unicode_ci编码

1
2
3
ALTER SCHEMA `db`  DEFAULT COLLATE utf8mb4_general_ci ;  
SELECT CONCAT('alter table ',table_name,' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') FROM INFORMATION_SCHEMA.tables
WHERE TABLE_SCHEMA='库名' and table_type='BASE TABLE' into outfile '/data/altertable.sql';

这个语句可以生成语句,然后在mysql中执行即可

1
mysql -u用户名 -p表名 实力名称  < /data/altertable.sql

字段类型的修改可以参考下方语句

1
2
3
4
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET UTF8 COLLATE utf8_general_ci', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '库名' AND DATA_TYPE = 'varchar' AND (
CHARACTER_SET_NAME != 'utf8'
OR
COLLATION_NAME != 'utf8_general_ci') ;

至此,所有的操作都已完成。

参考网址:
https://mathiasbynens.be/notes/mysql-utf8mb4
http://blog.flect.co.jp/labo/2012/07/playmysql-283f.html

稍微有点管理常识的网友对下面的“鲶鱼效应”都不会陌生:

“爱吃鲜活沙丁鱼的挪威人曾经一直为它们在长途航行中的大量死亡而苦恼不已,直到某一位聪明的渔民率先想出了用几条活泼好动的鲶鱼去刺激一船懒惰的沙丁鱼的妙招后,问题才迎刃而解”。

“鲶鱼效应”的理念虽然在中国企业的团队培育中备受推崇,但缘于“目的不明,激励不足,职责不清,考核不到”等诸多因素的存在,结果却大跌眼球。活泼的鲶鱼不仅激活不了懒惰的沙丁鱼,而且注定要被淹死在它们的唾沫星子里,劣币驱逐良币。

首先是目的不明。

众多中国企业之所以卖力地鼓吹团队精神,其初衷决不是为着如欧美同行那样,强调基于沟通、协作、授权和分享的效益提升,而是因为他们看到了一个“团”字,就想当然地将团队当作团结来提倡。

团结和团队虽只一字之差,但意思却貌合神离,相距甚远。特别是在中国特殊的语境之下,团结主要是指自觉地与领导保持一致,尊重上级,服从命令听指挥,不允许有不同意见等。

偏离了以提升效率为目的团队建设无疑会本末倒置。这时,有没有创新精神不重要,重要的是不能因为说“不”,让同事没有了面子;任务完成得好坏不重要,重要的是你好我好大家好地保持一团和气;工作积极性高低不重要,重要的是不能让大家感到你咄咄逼人。

不用说,活泼好动的鲶鱼,一朝进入了如此这般的团队,懒惰的沙丁鱼们将如何反应亦可想而知。诸如“严重地脱离群众、工作作风粗暴、个人英雄主义作怪,急功近利,自以为是,骄傲自满”等一句句冷嘲热讽,一支支明枪暗箭很快会铺天盖地而来,势单力薄的鲶鱼除了落荒而逃又能怎样?劣币驱逐良币。

其次是激励不足。

老板尽管情真意切地指望靠引进鲶鱼型人才来激发整个团队的活力和效率,但囿于偏颇的利益视角,即使在团队的活力提升、效率提高后,也不肯给予任何的激励。只想要马儿跑,马儿跑得快,就是不想给马儿吃草。

被激活起来的,比之前多付出的沙丁鱼们一看投入得不到回报当然要心有不平。虽然不敢、不能怪罪于老板,但气撒在老板引进过来的鲶鱼身上,让鲶鱼代不明事理的老板受过总可以吧?

于是乎,沙丁鱼们相互心领神会,心有灵犀一点通,立即像泄了气的皮球,消极怠工起来。老板眼看效率下降,心急如焚。“要你鲶鱼何用,还不快快继续给我整”?

这时的鲶鱼如果仍然不识相,仍然要待在那儿幻想沙丁鱼们能再次被他激活,那只有与大伙一步步交恶,直到势不两立的份。

势不两立可不行呀!老板会想要你鲶鱼来激活大家,不是要你来得罪大家。现在大家都容不下你了,我也不能为了你区区几条鲶鱼而倒掉一船沙丁鱼呀?劣币驱逐良币。

再次是职责不清。

职责不清意味着什么?

意味着虽不是企业里所有的事,如薪资报酬,但一定是大多数的事、琐事、杂事,所有人都该管。

意味着相当多的中国企业老板都希望一人多专,一人多能,驾驶员兼文秘兼保安兼来宾接待兼采购兼物资搬运┅┅,最好是一个人能把所有的事都包揽下来;希望每个员工都能不计报酬,争先恐后地抢着干;希望通过他倡导的企业奉献文化、感恩文化让每个员工都变成企业里的雷锋、焦裕禄,是神不是人。

意味着当老板的希望在并非是神的雷锋、焦裕禄员工那儿落空时,当老板准备通过引进报酬相对高出许多的鲶鱼来激活懒惰的沙丁鱼时,敢怒而不敢言的沙丁鱼们能够巧钻职责不清的空子,变着法子,绕着弯子,兜着圈子地与鲶鱼进行软对抗。

意味着最后除了人人争抢的好事,其他所有的难事、烦心事、吃力不讨好的事、人人避之唯恐不及的事都得有鲶鱼做。多做多错,到头来所有的责任还得由鲶鱼一个人扛起来。“谁叫他或她收入比我们多,地位比我们高呢?他或她不下地狱谁下,活该!”劣币驱逐良币。

第四是考核不到。

一边是享有了较高报酬的鲶鱼为了向老板证明自己的价值,不得不绞尽脑汁,千方百计地去激活沙丁鱼,弄得大家鸡犬不宁,寝食难安;一边是职责不清没法考核或没有考核或考核不得要领,无法准确反应各人的工作能力与绩效,干多干少看不清,干与不干也看不出。

每个人都说自己好,思想好,品德好,工作好,劳苦功高;有成绩都是自己的,有问题都是别人、别的部门,都怪他们不肯配合,不肯为自己创造必要的成功条件。

春风得意马蹄轻的都是“外交家”,四平八稳、四处讨好、八面玲珑,面面俱到,从不肯当头阵,只栽花为栽刺,说话模棱两可,干活似干非干,懵懵做公爵。

门庭冷落车马稀的都是“实干家”,说实在话,做实才事,真心为老板着想,眼睛里掺不进一点沙子,对事不对人,不管是老板的什么人,有错必纠,不留一点情面,把人都得罪光了。

“情商”比“智商”重要,关系比能力管用,劣币驱逐良币。

劣币驱逐良币自古就是咱中国社会的一大痼疾。试看五千年来,大凡体制内的那些不肯安于现状者、独立思考者、忧国忧民者、从事变革者,有几人不是灰头土脸,有几人不是被打倒在地,被你一脚我一脚地踩踏后永世不得翻身?

宋·晁补之《安公子》词:“是即是,从来好事多磨难。”金·董解元《西厢》一:“真所谓佳期难得,好事多磨。”

A World Awaits