志→目标, 自我提升

如何成为一名黑客

钱魏Way · · 545 次浏览

本文翻译自Eric Steven Raymond的《How To Become A Hacker》,原文的语言组织翻译过来可能会比较啰嗦,所以只选取了一部分个人认为重要的进行了翻译。部分不太认同的内容也进行了删减,介意的请看原文。

什么是黑客

这里所说的黑客,主要形容“技术专才”或“有志解决问题及超越极限之人”。关于黑客的由来可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet实验也刚展开的年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。这种文化的成员创造了“hacker” 这个词。他们建立了互联网,他们发明了现在使用的Unix操作系统。他们管理Usenet讨论组。他们令WWW运作。因此,若你有上述的特性及参与同类的社区,亦有对以上种种作出贡献,同时社区的人知你是谁又称你为“hacker”,你便是黑客。

然而,黑客的理念并非只局限于软件社区。有很多人将黑客的态度应用于其他事物,如电子或音乐上——实际上,黑客的理念存在于任何科学及文学。由于了解黑客的理念及精神,软件社区的黑客亦会称后者为黑客。有些人亦认为黑客的理念是独立于黑客所从事的媒体。然而,这篇文章专注讨论软件黑客的技巧,态度及传统。

另外,有一群人亦称自已为“黑客”,他们用电脑侵入其他电脑的系统作出破坏。黑客们称这群人为“Cracker(破坏者)”,亦不认同他们为黑客。多数黑客会认为Cracker是懒惰, 不负责任,不杰出的人。有能力侵入安全系统并不能使你成为黑客,正如可以用铁丝来偷车并不能使你成为汽车工程师一样。不幸的是很多作家及报道均称这群人为“黑客”。这一直使黑客们非常恼火。

黑客与Cracker的主要区别在于,前者搞建设,后者搞破坏。

黑客的精神

黑客们解决问题,建设事物,他们崇尚自由和无私的双向帮助。要被他人承认是一名黑客,你必须表现得你具备了这样的态度。而要表现得你具备了这种态度,你必须彻彻底底的坚持它。

如果你认为培养黑客的态度只是一条在这个文化圈中得到认同的路子,那就错了。成为具备这种素质的人对你 ¸非常重要 —— 使你保持学习和成为黑客的自发性。正如所有创造性艺术一样,成为大师的最有效途径就是效仿大师的精神——不仅从理念上,还要从态度上效仿。或许下面的这首现代禅诗很好的阐述了这个意思:

To follow the path:

look to the master,

follow the master,

walk with the master,

see through the master,

become the master.

如果你想成为一名黑客,反复阅读以下内容直到你相信它们:

世上仍有大量迷人的事情等待解决

作为一名黑客可以享受很多乐趣,同时需要付出相当多的努力。努力需要动力。成功的运动员从锻炼身体、超越身体极限中获得精神愉悦。类似的,作为一名黑客,你可以从解决问题、磨练技术和锻炼智力中获得乐趣。

如果你天生不是这样的人,那你需要设法变成这样的人以使你能够成为一名黑客。否则你将会发现你的精力会被诸如性、金钱、社会上的虚名之类让人分心的东西所消磨掉。

(你还需要对自己的学习能力树立信心——相信尽管你对某一问题了解得不多,只要你能解决其中一部分,并从中学习,你可以解决其他的部分——直到解决它。)

同样的问题不应被重复处理两次

创造性的智慧是非常有价值且稀缺的资源。它们不应当被浪费在重复发明轮子上,世上仍有大量迷人的新问题等着解决。

作为一名黑客,你应该坚信其他黑客的时间非常宝贵——所以你有义务共享信息,解决问题之后公布方案,这样其他人可以去解决新的问题,而不是忙于应付旧问题。

注意,“同一个问题不应该被重复处理两次”并不是说你必须认为所有已有方案都是最优的,或每个问题只有唯一的解决方案。通常我们从一个问题的最初解决方案中能够学习到很多东西。这很好,并且对于我们思考如何能做得更好来说,这通常是必要的。我们反对的是人为的技术、法律上的,或者机构性的设置障碍(例如闭源软件),使得一个好的方案不能被重复使用,逼得人们重造轮子。

(你不必认为你必须将所有你的创造发明都公布出去,虽然这样做的黑客将会赢得大家极度尊重。适当卖一些钱来换取足够的食物、租金和电脑并不违反黑客的价值观。用你的技能来养家糊口甚至致富都可以,只要你在做这些的时候别忘记你是一名黑客。)

拒绝重复和沉闷的事情

黑客(以及富有创造力的所有人)不应当被愚蠢的重复性劳动所困扰,因为这意味着他们并没有在做只有他们才能做的事情——解决新问题。这样的浪费会伤害所有人。因此,无聊和乏味的工作不仅仅是令人不爽,而是罪恶。

作为一个黑客,你应该坚信这一点并尽可能的将枯燥的工作自动化,这不仅仅是为了你自己,也为了其他人(尤其是其他黑客)。

(这里有一个例外。黑客有时会做一些看起来重复或枯燥的事情以进行脑力休息,或以此来锻炼一种技能,或以此获得某种除此以外无法获取的经验。但这是有选择的——有脑子的人不该被强迫做枯燥的事。)

自由万岁

黑客是天生的反独裁主义者。 任何能向你发号施令的人能够迫使你停止解决令你着迷的问题。 同时,按照独裁者的一般思路,他通常会给出一些极端愚昧的理由。因此,不论何处,任何独裁主义的作法,只要它压迫你和其他黑客,你就要和它斗到底。

(这并非向所有权威挑战。儿童需要监护,罪犯要被看管起来。如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客可以同意 接受某种形式的权威。但这是一个有限度的,有意的交易;那种权威想要的个人服从不是你应该同意给予的。)

权威喜欢审查和保密。他们不信任自愿的合作和信息共享——他们只喜欢由他们控制的所谓“合作”。因此,作为一个黑客,你得对审查、保密,以及使用武力或欺骗去压迫有行为能力的人们的做法有一种本能的敌意。 同时你要有为此信念斗争的意愿。

精神不能代替能力

作为一个黑客,你必须培养起这些精神。但是仅仅有精神并不能使你成为黑客,也不能使你成为运动健将或摇滚明星。成为一名黑客还需要智力,实践,奉献精神和辛勤工作。

因此,你需要学会有怀疑态度和尊重任何能力。黑客不会为装模作样的人浪费时间,但他们尊重能力——尤其是从事黑客工作的能力,不过任何能力都是好的。很少人能具备的高要求能力尤其好,其中涉及脑力,技巧和专注方面的能力最好。

尊重能力,你就会享受到提高自己的能力所带来的乐趣——辛苦的工作和奉献将不再是苦差而是一种高度娱乐。想要成为一名黑客,这一点尤其重要。

基本黑客技能

黑客的态度很重要,但技能更重要。态度不能替代能力,在被别的黑客称你为黑客之前,你有一些基本技能需要掌握。

这些基本技能随着时间的推移和技术的革新也缓慢的变化着。总的来说当前包括以下内容:

学习编程

理所当然,这是最基本的黑客技能。如果你一门计算机语言都不懂,我建议你从Python学起。它设计良好,文档详尽,并且对新人十分友好。尽管它是一门很好的入门语言,但它不只是玩具水平。它非常强大灵活,并且适用于大型项目。

我早前曾经建议使用Java作为入门语言。一个黑客不能“像五金店中的管道工一样处理问题”,你需要知道所有的组件事实上都干了什么。现在,我认为最好先学C和Lisp,然后再学Java。

比Java更好的选择是学习Go。这种相对较新的语言很容易从Python上手,而且学习它可以使你在可能的下一步(学习C语言)中得到很大的帮助。此外,未来几年的一个未知数是Go将在多大程度上取代C语言成为真正的系统编程语言。在未来,这种情况可能会在C语言的大部分传统领域内发生。

另外有一点需要注意。如果一门语言帮你做了太多工作,它会同时是一个好的生产工具和一个不好的初学对象。不仅语言有这个问题,Web框架比如RubyOnRails,CakePHP,Django也很容易让你流于表面,面对困难问题的时候束手无策,甚至无法对一个简单问题进行追查并给出解决方案。

如果你需要做一些重要的编程工作,你需要学习C语言,它是Unix的核心语言。C++跟C关系密切。如果你了解其中一种,学习另外一种应该不难。但是这两种语言都不适合作为入门学习。此外,如果你越避免用C编程,你的工作效率会越高。

C的执行效率非常高,并且非常节省机器资源。不幸的是C的高效是通过让你手动进行许多底层资源(例如内存)管理来获得的。底层代码复杂并且容易出bug,你需要花费很多时间来进行调试。鉴于当今的机器性能如此之高,这样的做法通常很不划算——通常更好的做法是使用一种稍微慢一些,不那么高效,但是能够 大幅 节省你的时间的语言。那便是Python。

其他对黑客而言比较重要的语言包括Perl和LISP。Perl很实用,它广泛应用于动态网页和系统管理方面,因此即使你从不写Perl代码,至少也得能看懂。许多人使用Perl的理由和我建议你使用Python的理由一样,都是为了避免用C完成那些执行效率需求不那么高的工作。你需要能够看懂他们的代码。

LISP之所以值得一学是基于另外的理由——当你最终掌握了它的时候,你将会获得巨大的启迪。它将使你在今后成为一个更好的程序员,即使你实际上很少使用LISP本身。(你可以通过为Emacs文本编辑器或者GIMP的Script-Fu编写插件或修改现有插件来很容易的学习LISP。)

当然,你最好五种语言都会(Python,C/C++,Java,Perl和LISP)。除了是重要的黑客语言之外,它们也代表了截然不同的编程思路和方法,每一种都能让你受益匪浅。

但是单纯的堆砌语言是不可能成为一个黑客,甚至程序员的。你需要学会如何独立于任何具体的语言之外来思考编程问题。作为一名真正的黑客,你需要通过手册和你已有的知识掌握到在几天之内学会一门语言的要点。这意味着你需要学习许许多多不同的语言。

这里我无法给你完完全全的指导教会你如何编程——这是个复杂的技能。但我可以告诉你,书本和课程也不能做到(最好的黑客中,有许多,也许 几乎 都是自学成才的)。 你可以从书本上学到语言的特点——这只是皮毛,但要使书面知识成为自身技能只能通过实践和虚心向他人学习。因此要做到读代码写代码

Peter Norvig,Google最顶级的黑客之一,也是世界上最受欢迎的AI教材。他写了一篇名为Teach Yourself Programming in Ten Years的短文。他在文中提到的“编程成功的诀窍(recipe for programming success)”特别值得留意。

学习编程就像学习用优美的自然语言书写一样。最好的办法就是阅读大师的名著,试着自己写点东西,再读一些,再写一点,再读一些,再写一点……如此往复,直到你的作品达到如你在范文中所见的简洁和健壮。

以前很难找到适合阅读的好代码,因为几乎没有大型程序的代码能够供新人阅读和练手。这种情况已经发生戏剧性的变化。开源软件,编程工具和操作系统(都是由黑客创造的)现在随处可见。这刚好带我们到下一个话题……

获取一个开源的Unix并学习运行和使用它

我假定你拥有或者能使用一台个人电脑(现在的孩子真幸福。黑客文化建立之初电脑贵得要死,没人买得起)。新手们向黑客技能迈出的最重要一步就是获取一份Linux或BSD-Unix的拷贝,将其安装在个人电脑上,并运行它。

没错,世上除了Unix还有其他操作系统。但它们都是以二进制形式发布的——你读不到源码,你也不能修改代码。在类似Microsoft Windows那样的闭源操作系统上学习黑客技术就像戴着脚镣学跳舞。

在Mac OS X上倒是可以,不过它只有一部分是开源的——你可能会撞墙,也必须很小心的避免养成依赖Apple专有代码的坏习惯。如果你专注于底层的Unix,你可以学到一些有用的东西。

Unix是互联网上的操作系统。虽然你不懂Unix仍然可以学会使用互联网,但若你不懂Unix,你将不能在互联网上从事黑客活动。因此,现今的黑客文化是严重以Unix为中心的。(曾经不是这样,并且有一些老派的黑客对此仍然感到不太高兴。但是现今Unix和互联网的羁绊如此之强,连Microsoft也无法撼动分毫。)

所以,请安装一套Unix – 我个人喜爱Linux但还有其他种类的(并且,你可以在同一台电脑上运行Linux和Windows)。学习它,使用它,调教它。用它在互联网上冲浪。阅读它的代码,修改它的代码。你将获得比Windows操作系统上更好的编程工具(包括C,LISP,Python和Perl)。你会觉得其乐无穷,学到比你想象更多更好的知识。

学习使用万维网(World Wide Web,WWW)

大多数的黑客造物在你所不知的地方发挥着作用,帮助工厂、办公室和学校运转,这看上去跟普通人没太大关系。Web是一个大大的例外,即便 政客 也承认这个巨大耀眼的黑客玩具正在改变着世界。单就这一个原因(当然还有其他理由)你就需要学习掌握Web。

学习实用英语

作为一个美国人和一个以英语为母语的人,我以前很不情愿提到这点,免得成为一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点,那就是英语是黑客文化和Internet的工作语言,你需要懂得以便在黑客社区顺利工作。

大概1991年的时候我了解到许多黑客在技术讨论中使用英语,即使在他们的母语都相同,英语对他们而言只是第二语言的时候也常如此。据我所知,当前英语有着比其他语言丰富得多的技术词汇,因此是一个对于工作来说相当好的工具。基于同样的理由,英文技术书籍的翻译(如果有的话)通常都不能令读者满意。

芬兰人Linus Torvalds用英语注释他的代码(很明显这不是凑巧)。他流利的英语成为他能够管理全球范围的Linux开发人员社区的重要因素。这是一个值得学习的例子。

即使作为一个以英语为母语的人也不代表你就具备了成为黑客所需的语言技能。一般而言,如果你写得像个半文盲似的,文中充斥着各种语法、拼写错误,多半得不到理睬。虽然不严谨的文笔并不总是意味着不严谨的思维,但我们发现这两者之间的关联还是挺紧密的。而我们不需要这种思维不严谨的人。如果你现在还没有具备这样的书写能力,赶紧培养。

在黑客社区中立足

像大部分非盈利社区一样,黑客社区靠声誉运转。你设法解决有趣的问题,但问题是否有趣及解决方法是否有效,需要由那些和你具有同样甚至更高技术水平的人去评判。

因此,要玩黑客这个游戏,你需要以其他黑客对你技能的评判作为对自己的评价(所以我说,在其他黑客称你为黑客之前,你不是一个真正的黑客)。这个事实常被人误解(从1990年代后有所好转,但还是很严重),人们认为黑客都是不在乎别人的评价,孤僻的人。这实际上是一个黑客文化的禁忌。

特别地,黑客被人类学家们称为 奉献社区。在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉献你的时间,你的创造力和你的技术成果。

要想获得黑客的尊重,你基本上有5件事情可干:

编写开源软件

首先(也是最传统和最重要的)是写一些其他黑客觉得有趣或有用的程序,并且开放源代码。黑客间最受尊敬的圣人是那些编写了大型的,功能强劲且满足了广泛需求的开源软件供他人使用的人。

帮助测试和调试开源软件

黑客也尊敬那些为开源软件进行测试和除错的人。在这个并非完美的世界上,我们不可避免地要花大多数的开发时间在调试阶段。 这就是为什么许多开源软件作者都会高度评价那些好的beta测试员 (知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布中的bug,并且愿意使用一些简单的诊断工具),认为他们像红宝石一样珍贵。一个好的测试员可以使如恶梦的测试及除错工作变为一件值得经历的小烦恼。

如果你是个新手,试着找一个你感兴趣的正在开发的程序,尝试做一个好的beta测试员。 你会自然地从帮着测试,进步到帮着抓bug,到最后帮着改程序。你会从中学到很多,并且与未来会帮到你的人结下友谊。

发布有用的信息

另一个好事是收集整理有用有趣的信息做成网页或文档如FAQ(常见问题)列表,且让他们容易获得。

技术性FAQ的维护者往往如同开源软件作者一样很受人尊重。

帮助维护基础设施运转

黑客社区(也包括互联网发展)是靠自愿者组成的。有大量重要但平淡的事情需要处理——管理邮件列表,新闻组,维护大型软件归档库,开发RFC和其他技术标准等。

做以上事情的人会得到很多人的尊敬,因为大家都知道这些事情需要大量的时间并且不如编写软件那么有趣。这类工作需要使命感。

为黑客社区服务

最后,你还可以为黑客社区做服务和宣扬。通常你不会做这些工作,直到你已经做了以上四种中的一样,并且取得了相当的知名度。

黑客社区没有既定的领导者,但是有被人们尊重的英雄,长老级人物,史学家和发言人。当你在这个圈里足够久,你可能会成为他们中的一员。但请谨记,黑客对于自我夸耀的长老并不认同,因此不要尝试大举追求这种名誉。与其奋力追求,不如先摆正自己的位置,等它自己到你手中,那时需要做到谦虚和优雅。

黑客与书呆子(Nerd)的关系

与流行的传说不同,黑客并不是书呆子。但这确实对你成为黑客有帮助,并且很多黑客确实是书呆子。做一个深居简出的人有助于使你更能集中精力做一些重要的事,例如思考和从事黑客活动。

因此,许多黑客甚至以“极客(geek)”为名——这是一种宣布他们独立于普通社会的方式(此外,黑客也通常沉迷于其他一些事情例如科幻和战略游戏)。“书呆子”这个词通常在1990年代也被如此使用,那时候“书呆子”这个词略含贬义,而“极客”贬义更重。2000年以后这两个词的关系发生了转变,至少在美国流行文化上是如此,现在甚至在非技术专家中也出现了以标榜为极客为豪的情况。

如果你能集中足够的精力做好黑客工作同时还能有正常的生活,这很好。现在做到这一点比我在1970年代还是新手的时候要容易的多;如今主流文化对技术怪人要友善的多。甚至有越来越多的人意识到黑客通常是很好的恋人和配偶侯选。

如果你因为生活上的不如意而成为黑客,那也不错——至少你不用分神了。或许今后你能有一个不错的生活。

风格

重申一下,作为一名黑客,你必须进入黑客式思维模式。当你不在电脑边的时候你仍然有很多有益的事情可做。它们不能替代真正的黑客活动(没有什么可以),但是很多黑客都这么干,并且感到它们与黑客精神存在某些根本的联系。

  • 学会流畅的使用母语写作。虽然认为程序员写不好文章的误解仍然很普遍,但是有数量令人惊讶的黑客(包括我所知造诣最高的那些)都是不错的写手。
  • 阅读科幻小说。参加科幻聚会(一个接触黑客和可能成为黑客的人的好方法)。
  • 加入黑客空间(hackerspace)并做一些东西出来(另外一个接触黑客和可能成为黑客的人的好方法)。
  • 习武。武术的精神修炼与黑客之道惊人的相似。黑客中比较常见的当然是亚洲的空手格斗技巧,例如跆拳道、空手道及其变种、中国功夫、合气道、柔术。西方击剑和亚洲剑术也有相当的追随者。在持枪合法的地区,射击从1990年代起也越来越受欢迎。与黑客之道最契合的武术是那些强调精神修炼、放松意识,强调控制而不是单纯的蛮力的类型。
  • 学习一种冥想修炼。黑客中一直以来最受欢迎的是禅(很重要的是学禅并不要求你有特定的宗教信仰)。其他方式也可以,但是请注意一定选择那些不会要求你相信很疯狂东西的方式。
  • 修习音乐。学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。
  • 提高对双关语、文字游戏的鉴赏能力。

这些事情,你已经在做的越多,你就越是天生做黑客的料。至于为什么偏偏是这些事情,原因并不完全清楚,但它们都涉及用到左右脑混合使用,这似乎是关键所在。黑客们既需要清晰的逻辑思维,有时又需要偏离逻辑跳出问题的表象。

工作即娱乐,娱乐即工作。对于真正的黑客来说,“玩”,“工作”,“科学”和“艺术”之间没有界线,或者说,它们在一个高层面的创造性趣味里融合在一起。另外,不要对一点点技能就感到满足。虽然大多数黑客自称是程序员,他们实际上在其他相关的方面也很可能相当强悍——常见的是系统管理、页面设计和PC硬件故障处理。一个黑客,如果他是一名系统管理员,他很可能对脚本编程和页面设计也相当在行。黑客不会半途而废,如果他们要学习一门技能,他们会将其学好。

最后,一些你 不应 做的事。

  • 不要使用愚蠢,哗众取宠的ID或昵称。
  • 不要卷入Usenet(或其他任何地方)的骂战。
  • 不要自称为“赛博朋克(cyberpunk)”,也不要浪费时间跟他们打交道。
  • 不要发送含有大量拼写和语法错误的email和帖子。

做出以上事情只会招来嘲笑。黑客的记性都很好——你犯下的错误会令你将要经过多年才可以被其他黑客接受。

网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、warez d00dz及其他低等生物幼稚愚蠢的行为特点。黑客不会做这些事;他们对他们所作的感到骄傲,而且乐于人们将作品与他们的 真名 相联系。 因此, 若你现在用假名,放弃它。黑客社区里只会将用假名的人视为失败者。

常见问题

成为一名黑客我需要擅长数学吗?

不。黑客倒很少使用常规的数学或算术。尤其是你不会用到三角学、微积分或数学分析(在特定领域,这些学科很有用,例如3D电脑图像)。一些有限数学(包括布尔代数,集合论,组合数学,图论)的背景知识会有帮助。了解一些系统的逻辑和布尔代数是有好处的。一些基础的离散数学(包括有限集合论、组合数学和图论)会有帮助。

更重要的是:你需要能够像数学家一样进行逻辑性地思考和进行缜密的推理。在这一点上绝大部分数学理论帮不了你,你需要有能够应付数学的修养和智力。如果你不够聪明,你成为黑客的希望很渺茫。如果你的修养不够,最好培养起来。

如何证明我已经是一名黑客了?

问自己以下三个问题:

  • 你能够流畅的编写代码吗?
  • 你是否与黑客社区的目标和价值观产生共鸣?
  • 是否有知名黑客称你为黑客?

如果你对三个问题的回答都是肯定的,你就已经是一名黑客。哪怕只有一个回答是否定的也不行。

第一个问题是关于技能的。如果你具备了前文提到的基本技能,就应该没问题。如果你已经有相当数量的代码被开源项目所接受,可以跳过这个问题。

第二个问题是关于精神的。如果前面的五条黑客的精神明显比其他地方的描述更贴近你的真实生活,你就已经通过了一半。这是内在的一半,外在的一半是你对黑客社区长期项目的贡献程度。

这里有一个不完整但具有指示性的项目列表:Linux的改进和发展是否有你的贡献?你是否对软件自由充满激情?你是否反对垄断?你是否为了让计算机成为这个世界更丰富多彩、更人性化的工具而努力?

请注意。黑客社区有一些特定的,主要是防御性的政治倾向——其中两条是维护言论自由和抵御可能使开放源代码非法的“知识产权”。有一些长期项目是公民自由组织,例如电子前哨基金会(EFF),外在的态度包括支持他们。除此之外,大多数企图将黑客精神系统化为一个具体的政治程序的黑客都值得怀疑。我们曾经为此付出过代价,并了解到这些想法通常会导致分裂并且令人心烦意乱。如果有人想要以黑客精神的名义来招揽你,那是他们搞错了重点。最好的回应恐怕是“闭嘴,给他们看代码(Shut up and show them the code)。”

第三个问题是递归的。我在“什么是黑客”中提到过,成为一名黑客,就是成为一个具有分享特点的文化社群的一员。很久之前,黑客相比现在是一个松散的,不自知的群体。但是近30年来,由于互联网使得黑客文化的核心更易发展和维护,人际网络方面取得了长足进步。这种改变最简单的代表就是,在这个世纪,我们有了自己的T恤。

社会学家在研究类似黑客社区这样的被统称为“无形学院(invisible colleges)”的人际网络时注意到,这类网络通常都有门卫——具有社区授权的核心成员会审核新人的进入申请。由于黑客社区是“无形学院”中比较松散和非正式的一种,门卫的身份也是非正式的。但是所有黑客天生就知道并非每个黑客都是门卫。在取得门卫的头衔前需要具备特定的资历和成就。这很难度量,但是每个黑客在看到它的时候就能知道。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注