避讳

昨日3月1日,你避讳了吗?

以下来自wiki: 避讳始于周朝,《左传》说:“周人以讳事神,名,终将讳之。”《礼记·曲礼》载: “名子者不以国,不以日月,不以隐疾,不以山川。”明文规定取名之避。后来,《左传》 又加上“不以畜牲,不以器帛”这一条款,遂产生“六避”。但当时同音或近音的字不 用回避。名讳两字中,只有一个字相同,也不用回避。

避讳是中国历史上,必须回避君主、尊长的“名讳”的一种要求,通常只限于君主、尊长之 本名,其字号则无必要。在言谈和书写时,遇到君主尊长的名讳一律要回避,可以用其他字 代换,或是刻意将该字缺笔,取名时也不能取他们的名讳中字,甚或同音的字,否则可能触 犯大不敬之罪。陆容《菽园杂记》称,“民间俗讳各处有之,吴中为甚”。这种要求也曾经 适用于汉字文化圈临近国家,例如日本、朝鲜半岛、越南、琉球。

避讳的种类

回避君主的名字,叫做避公讳或国讳。一般适用于过去七世代以内。 避讳自己家族的长辈的名字,与别人交往时则避对方的长辈之名讳,叫做避家讳。 回避圣人的名字,叫做避圣人讳。例如邱姓就因避讳孔子的名字“丘”而产生;又例如 《三国演义》中称关羽为“关公”、“关某”;《东周列国志》中称孔子为“孔某”。 另古人读经史时,碰到孔子的名字“丘”时,会将之读作“某”,以示避讳,就连写的 时候也会缺笔。

避讳的方法与实例

陈垣《史讳举例》曰:“避讳常用之法有三:曰改字,曰空字,曰缺笔。”到了宋朝,避讳之风日趋严格,又出现“拆字”这一种避讳方法。

改字

改字法:遇到要避讳的字时使用其他别字代替。例如: 秦始皇名政,“政”与“正”同音,所以秦代称“政月”为“正月”,“正”字改念平声,甚至改称“端月”。 避汉高祖刘邦讳,“相邦”改“相国”。 避汉文帝刘恒音讳,“姮娥”改嫦娥。 避汉景帝刘启讳,“启蛰”改惊蛰、“启封县”改开封县。 避汉武帝刘彻讳,“彻侯”改通侯。 避汉昭帝刘弗陵讳,否定词“弗”改“不”。 避汉宣帝刘询音讳,“荀卿”改孙卿。 避东汉光武帝刘秀讳,东汉孝廉“秀才”改“茂才”。 避汉明帝刘庄讳,庄姓者多半改成严姓。 避汉灵帝刘志讳,东观汉记的“志”改称“意”。 避晋宣帝司马懿讳,三国志将吴懿改“吴壹”。 避晋文帝司马昭讳,王昭君改称王明君,蔡昭姬改称蔡文姬,韦昭改称韦曜。 避西晋愍帝司马业讳,建业(今南京市)改名为建康。 避唐高祖李渊讳,陶渊明改称陶泉明或陶深明。 避唐太宗李世民的讳,“世”、“民”常改为“代”、“人”。例如,柳宗元《捕蛇者说》中句子“以俟夫观人风者得焉”中的“人风”实际上是指“民风”,是为此而改。 避唐高宗李治讳,文章内“治”字改为“理”。 避武则天(武曌)的讳,庐陵王(稍后的唐中宗)之长子李重照改名李重润。(曌为照的则天文字) 避后晋高祖石敬瑭讳,敬姓的一部分改为苟姓以及文姓。 孔子之名丘曾经是金朝的圣人讳,所以丘姓的一部分改为邱姓。 避明太祖朱元璋讳,“元年”改为“始年”、“原年”,“元来”改为“原来”。 避清康熙帝玄烨讳,故宫玄武门改神武门,而“玄孙”改“元孙”。 避清雍正帝胤禛之讳,兄弟字辈“胤”改“允”。王士禛改称王士正或王士祯。 避清乾隆帝弘历讳,曆常改为歷,而大清历法时宪历改时宪书,弘文馆改“宏文馆”。 避清道光帝旻宁讳,北京外城广宁门改名广安门。 史上亦有皇帝即位时,将名字易为罕用字,使扰民程度降至最低。例: 汉宣帝刘询,原名病已。 清嘉庆帝颙琰(Yóngyǎn, ㄩㄥˊ ㄧㄢˇ),1796年即位前原名永琰。 清道光帝旻宁,1820年即位前原名绵宁。

空字

空字法:遇到要避讳的字时不填写。如唐朝将领李世勣被改成李勣,以避唐太宗李世民 的讳。但最著名的例子是“观世音菩萨”亦因避唐太宗讳,略作“观音”,但这个说法 仍待商榷。

缺笔

陈垣认为避讳缺笔,始于唐朝,贞观十八年盖的文达碑,有“世子”二字,时唐太宗称李世民,可见仍未有避讳缺笔。乾封元年《赐泰师孔宣公碑》中,“愚智齐泯”中的“泯”作“汦”,因此他认为唐高宗是避讳缺笔之始。 到了高宗显庆五年正月诏曰:“至于朕名,或缺其点画。”说明了当时已经有缺笔避讳 。 一般缺笔是缺写尾一笔。如“愚智作泯”的“泯”字,因讳唐太宗李世民,而作“汦”。“世武”作“卅”。旧唐书穆宗纪:“恒王房子孙改为汦王房。”汦王应为愍王,因避讳,改民为氏而误。《续汉郡国志》中载敦煌郡有拼泉,拼泉即渊泉,因唐太祖李渊缺笔的渊字缺尾的一笔,后讹为拼。把唐太宗的名字李世民中的“世”少写一划。 宋人讳“朗”改为“郎”。《新唐书·后妃则天皇传》:“前锋左豹韬果毅成三郎为唐之奇所杀。” 《康熙字典》将康熙帝玄烨讳各缺一笔。 日本明治时代,对于仁孝天皇(惠仁)、孝明天皇(统仁)、明治天皇(睦仁)的名讳“惠”、“统”、“睦”缺一笔。

拆字

拆字法:当遇到要避讳的字时,将该字拆开,以描述其字的构造。 宋太宗讳赵炅,又名赵耿;“炅”、“耿”二字皆为国讳。宋朝人将“耿”字写作“从耳从火”。 宋真宗讳赵恒,“恒”为国讳,遂将“恒”写作“从心从亘”。 宋高宗讳赵构,“构”字甚至其音相近的二十余字皆为国讳。时人为避讳,将与其音相 近的“句”写作“从勹从口”。

中国的历史

周朝时避讳情况较为宽松,只有完全相同的字才要避讳,同音或近音字不用。秦汉时期,大一统的政局形成并得到巩固,君主之尊无以复加,儒学在上层建筑中逐渐占统治优势,这种要求遂变得非常严格。地名、物名、官名、人名都要回避当朝天子甚至皇帝祖先的名字。 到了唐朝,有一个字相同也必须回避了,当时著名诗人李贺就是因为其父名“晋肃”,而不得参加进士考试,致使终身不得志,韩愈为此事非常生气,为之作《讳辩》驳斥,“父名晋肃,子不得举进士,若父名仁,子不能为人乎!”唐朝法律规定,直呼皇帝的名字犯“大不敬”罪,不能赦免。 清乾隆二十二年(1757年),退休浙江布政使彭家屏在族谱《大彭统记》刊登河南生员段昌绪家存吴三桂文告时,乾隆帝之名讳弘历不缺笔,成为彭家屏自杀及段昌绪斩首罪名之一。 清乾隆四十二年(1777年),江西书生王锡侯在他删康熙字典写的字典《字贯》凡例写入康熙帝、雍正帝、乾隆帝之名讳(玄烨、胤禛、弘历),没有缺笔避讳,也有批评康熙字典“然而穿贯之难”的内容,被认为非常不敬,而被依大逆律定罪处斩。 清朝末代皇帝溥仪在位时,“仪”曾经是避讳字。清朝灭亡后,中国不再避国讳。

以下是可以预料到的不允许的

比如之前网上流传的”刁大犬”,使用的便是改字,缺笔,拆字的方法,这样即使避讳 XXX(此处为避讳),也是不可以的。更不用提那些”人民曰报”之类的了。当然,还有另外 的比如低俗之类也是不允许的,这么一来,我的网名也在修改范围之类的,比如”rix”, 一些好事者竟然按照汉语的拼音来读,低俗之极,更不用说阿毛阿狗之类的了,想想我 们之前一直叫宝宝为“毛毛”就心瓦凉瓦凉的。

我的emacs配置组织

好久都没进行这一方面的整理,找了一下,之前的那个emacs配置 模式还是在5年前,其实, 这个配置方式我用了至少4年的样子,直到去年初才换了一种方式。

之前的那个配置的主要缺点是不容易同步,比如我现在基本上要在这些环境的电脑中运行:

系统 CPU
Ubuntu(GUI) X86
Ubuntu(CMD) ARM/X86
CENTOS(CMD) X86
Win XP X86
Win 7(本地或远程) X86
MAC X86

系统不算多,但关键是个数多,比如光Ubuntu,不同的位置加起来也有10多个了,总不能每 个都去配置,时间长了,不同的电脑上的配置或多或少都有差别,而且,即使一个单独的配 置,一个压缩包都快接近100MB了,更何况还要维护每个插件的更新,于是我决定更新我的 配置管理了。

Continue reading 我的emacs配置组织

亚马逊主机被墙的一些反思

今天发现的亚马逊主机被墙,后来思考了一下,考虑从技术处识别的破绽,觉得原来的方案 有问题,特记录如下,以作教育。

在这台主机上, 主要开通了下面的服务:

服务 端口 备注
openvpn 10122  
ssh 22 远程登录
dns 10153 仅支持持tcp查询
shadowsocks 8080 用于翻墙

关于openvpn服务

所有的客户端不会主动连接这个服务,我在国内主机上创建了一个到这个服务器上的ssh代 理连接,连接到国内的服务器上,所有客户端使用代理的方式,连接到远程主机上,这个很 少用,流量也不大,因此问题可能不大。我曾经考虑过由远程主机主动发起,但openvpn的 客户端似乎有问题,反正没成功,不了了之了。

ssh服务不用说了,一般不会因为这个封吧。

shadowsocks服务采用的是aes-256-fb,自定义密码,应该也没问题。

剩下的就是dns了,在很早之前,我用的是韩国的dns,然后有一天发现韩国的dns不返回任何 内容了,而这个dns没有打开ICMP,因此无法ping成功,不返回任何有用的查询说不定是因 为被墙了。然后我就用了一段时间的google dns,问题在于google 的dns速度太慢了(其实 我的这个理解是错误的,使用google dns的时候其实是走了代理的)。后来考虑速度,就在 亚马逊的主机上添加了pdnsd的服务,然后本地的pdnsd指向这个服务器。大概用了一个月的 样子,被封了。

在所有的流程中,除了pdnsd的查询没有被加密外,其他的内容都是被加密的,而tcp dns的查询, 无论是从特征识别还是关键字过滤,都是可以被发现的,因此被墙也就不难理解了。

netgear R7000 shadowsocks客户端

各种不爽,最近拿到款netgear r7000路由器几个月,竟然无法翻墙。

第三方dd-wrt,刷了之后却无法安装软件,等于废了120%,还各种不稳定。 至于openwrt,不用提了,满脸伤心泪,早知道当初就弄个openwrt列表中的了。 后来实在受不了openwrt raspberry pi的各种问题(虽然最后有可能是个伤心的误会),决 定试试tomato了。刷了之后,还是一堆问题,最后却没办法直接刷回去了。

既然tomato也是开源的,那就找找源代码吧,结果竟然找到了完整的源代码,感谢shibby

我之前也找了dd-wrt源代码,由于不在官方列表中,各种不爽,各种缺失,最后不了了之。 在和GFW的激烈战斗中,终于下完整了所有源代码。首先编译检查,没有任何问题。我并不 想将shadowsocks编译到固件中,这样不利于更新,因此,我决定放到jffs2中。

结果与使用方法

shadowsocks客户端 将jffs挂载到opt下,我的这个版本的选项在Administration->JFFS中,对tomato不熟悉, 没有发言权,enable JFFS, 然后format/erase, 填入”当挂载的时候执行命令”以下内容

mount -o bind /jffs/opt /opt && /opt/bin/start_cron.sh

start_cron.sh在压缩包的bin目录下,之所以这样弄是为了将检查shadowsocks和pdnsd的脚 本加入到定时任务中,这样一旦由于某种原因挂了之后,可以自动的重新启动。之所以这样 弄是因为在我的这个版本中,计划任务的这个无论如何都无法启动执行,不知道tomato的这 个问题原因在那儿,而tomato又使用的是cru,并非常用的cron,反正就这样,能用就行。 pdnsd和shadowsocks的配置都在etc中,自己酌情配置,pdnsd中我配置的是google的dns,走 tcp。

自己编译

我编译出来的shadowsocks可能比较老旧,如果你想自己编译的话,这里就是方法了:

  1. 将shadowsocks和pdnsd的源代码放置到源代码的router目录下。
  2. 在router/Makefile中添加如下内容:
obj-y += shadowsocks-libev
obj-y += pdnsd

shadowsocks-libev:
    cd shadowsocks-libev && CC=$(CC) STRIP=$(STRIP) \
        CPPFLAGS="-Os -Wall $(EXTRACFLAGS) -ffunction-sections -fdata-sections -I$(TOP)/zlib" \
        LDFLAGS="-L$(TOP)/zlib -ffunction-sections -fdata-sections -Wl,--gc-sections -fPIC" \
        $(CONFIGURE) --prefix=$(INSTALLDIR)/shadowsocks-libev

shadowsocks-libev-install: shadowsocks-libev
    $(MAKE) -C shadowsocks-libev install

pdnsd: 
    cd pdnsd && CC=$(CC) STRIP=$(STRIP) \
        CPPFLAGS="-Os -Wall $(EXTRACFLAGS) -ffunction-sections -fdata-sections -I$(TOP)/zlib" \
        LDFLAGS="-L$(TOP)/zlib -ffunction-sections -fdata-sections -Wl,--gc-sections -fPIC" \
        $(CONFIGURE) --prefix=$(INSTALLDIR)/pdnsd --with-cachedir=$(INSTALLDIR)/pdnsd

pdnsd-install: pdnsd
    $(MAKE) -C pdnsd install
  1. 编译路由器代码,在我这边是这样子的:
make r7000e
  1. 编译后的那两个软件包在arm-uclibc/install下的各自的目录中

闲暇之余的一点笔记