芝兰生于深林，不以无人而不芳；君子修道立德，不谓穷困而改节。
Drupal 7 的核心模块（Core Module）如下： 模块名称 中文名称 作用描述 其它说明 Aggregator 聚合器 聚合动态新闻源内容的更新（RSS feeds、Atom feeds） Block 区块 用户界面的主要元素，区块是内容在界面上的容器，它被置于某一个界面的某一个区载中，多个区块共同组成了一个页面。 Blog 博客 多用户博客系统 Book 手册 允许用户以大纲的形式创建和组织内容 Color 色彩 允许管理员修改支持本模块功能的主题的色系 Comment 评论 允许用户对已发布的内容进行讨论 Contact 联系 为网站以及网站中的每一个用户提供一个联系表单，可能通过该联系表单联系到本站或者本用户。 Content Translation 翻译管理 允许内容被翻译成各种不同的语言 Contextual Links Dashboard 控制面板 为管理界面提供一个控制面板，并且将管理工具都组织到这个控制面板中来。 Database logging 系统日志 将系统上发生的事件记录至数据库中 Field UI 字段UI 为Field API提供用户界面 File 文件 定义一个文件类型的字段 Forum 论坛 提供具有讨论功能的讨论 Help 帮助系统 管理帮助文件的在线展示 Image 图片 提供图片操作工具 Locale 本地化 提供界面翻译函数，同时提供界面翻译用户界面 Menu 菜单 允许管理员自定义网站的导航菜单 OpenID 开放ID 允许用户使用OpenID登陆网站 Overlay 遮罩层 在一个遮罩层中显示网站的管理界面 Path 路径 允许用户修改系统节点路径 PHP Filter PHP过滤器 允许用户在内容中插入可执行的PHP代码 Poll 投票 为网站提供投票功能 Profile 让管理员可以定义用户信息属性 RDF RDF Search 搜索 提供整站的搜索功能 Shortcut 快捷方式 允许用户管理可自定义的快捷方式列表 Statistics 统计 统计网站的访问数据 Syslog 系统日志 将系统中发生的事件记录到日志中 Taxonomy 分类 为网站内容提供分类支持 Testing 测试 提供一个进行实用的单元测试 Toolbar 工具条 在网站顶部添加一个工具条，工具条中展示网站管理的顶级链接以及由其它模块提供的链接 Tracker 跟踪 跟踪用户的最新内容 Trigger 触发器 允许将新的动作附加至系统现有的事件中 Update Manager 更新管理器 检查系统的更新，并且可以安全的安装和更新模块 以上为Drupal系统内置的所有的核心模块列表以及模块的简单介绍，可以通过上表对 Drupal的核心模块有一些简单的了解，在本文档接下来的章节中，将对每一个核心模块进行详细的说明，包括其作用范围、使用方法、开发API等。Drupal 7 核心模块的详细说明Drupal 是一个纯模块化的内容管理系统（Content Management System，简称CMS），在Drupal中，除了提供最底层功能支持的系统类库之外，其它任何功能都是以模块的方式来实现的，在Drupal 7中，系统默认提供了36个模块，接下来，本文档将对这36个模块一一进行详细的说明，说明将包括其安装时与其它模块的依赖关系、使用方法、开发API介 绍等。AGGREGATOR（聚 合器）现在无数的网站都将它们内容的更新以Feeds的 形式推送给用户，这些Feeds一般都是标准的XML文档，本聚合器模块支持的Feeds类型包括三种，分别是：RSS、RDF, 和atom。添 加新的Feed聚合器提供简单的Feeds分类管理工具，管理员可以在添加Feeds之前，先创建分类，然后将 Feeds进行分类整理。比如与体育相关的所有分类都可以被归整到名为“体育”的Feeds分类下。 当一个Feed 被归属至某一个分类时，这个Feed中的任何更新都会默认被归属于这个分类，但是系统提供工具，可以为每一个Feed中的任何一个记录指定自己独立的分 类。 每一个Feed包括以下这些字段： 标题（Title）： 用来描述当前Feed的名称 URL：Feed的网 络地址 更新时间晃间隔 （Update Interval）：多长的时间间隔更新更新一次Feed内容 模块中展示的更新条目 数（News Items in Block）：在区块中展示多少条当前Feed的更新 分类 （Categorize News Items）：当前Feed所属的分类 导入OPMLOPML 文件是一个XML格式的纯文本文件，在这个文件中，包含了多个Feed地址信息，我们可以通过上导入OPML文件的方式批量的一次性添加多个Feeds。 导入时，支持两个方式，即从本地上传OPML文件或者向聚合器提供OPML网络地址，前者会要求你在本地已经存在一个OPML文 件复本，后者要求OPML文件可以在网络上访问。更 新Feed一个Feed被添加之后，系统并不会立马将其内容更新至系统中，如果我们不进行手动更新（Update Items），那么当前Feed会在下一次系统Core运行时执行一次更新操作。但是我们可以在任何时候手工对Feed进行更新。 Feed更新之后，首先会检查当前Feed的URL地址是否存在一个能被识别的Feed，如果不识别，将返回错误信息，如果识别成 功，将会将其Feed中的内容下载并保存至系统数据库中，下载的记录条数由两方面决定，即系统中设定的最大下载条数，以及Feed本身具有记录条数，系统 会下载这两个数值中最小值所指定的条数。聚 合器的系统路径聚合器在系统中的路径为：aggregator 聚合器的管理路径 为：admin/config/services/aggregator 聚合器的详细路径见下表： 页面中文描述 路径 说 明 首页 aggregator 按来源查看页 aggregator/sources 某来源的所有更新 aggregator/sources/ID ID表示来源在系统中的ID 某 来源的分类整理页 aggregator/sources/ID/categorize 同 上 某来源的配置页 aggregator/sources/ID/configure 同 上 按分类查看而 aggregator/categories 某分类的所有更新 aggregator/categories/ID ID 表示分类在系统中的ID 某分类的归类整理页 aggregator/categories/ID/categorize 同 上 某分类的配置页 aggregator/categories/ID/configure 同上· 聚合 器管理页 admin/config/services/aggregator 聚 合器设置页 admin/config/services/aggregator/settings 分 类添加页 admin/config/services/aggregator/add/category Feed 添加页 admin/config/services/aggregator/add/feed OPML 导入页 admin/config/services/aggregator/add/opml 分 类编辑页 admin/config/services/aggregator/edit/category/ID ID 表示分类在系统中的ID Feed编辑页 admin/config/services/aggregator/edit/feed/ID ID 表示Feed在系统中的ID Feed删除页 admin/config/services/aggregator/remove/ID 同上 Feed 更新页 admin/config/services/aggregator/update/ID 同上 聚合 器权限设置页 admin/people/permissions#module-aggregator 聚合器的权限设置 权 限代码 中文解释 说明 Administer news feeds 管理新闻Feeds View news feeds 查看新闻Feeds BLOCK （区块）在drupal纯Drupal中，任何内容都是通过相应的区块来展示的，比如用户的登陆框使用的是系统提供的User Login区块，主内容是在Main Page Content区块中显示的；在区块系统中，还有另外一个比区块大一级的对象，那就是区块的容器——Region（区域），区域不能通过管理界面创建，必 须在主题文件中创建，一个区域中可以存放多个区块，而同一个区块，默认情况下（即不使用其它模块来改变系统原始设定的情况下），是不允许被同时存放到不同 的区域中的。管理现有区块区块的管理主要包括启用/禁用区块、设置其位置、修改区块配置等操作。启用/禁用区块要启用某一个区 块，只需要把区块从Disabled（禁用）区块列表中移动到其它任何一个区域即可，区块模块提供了一个方便的可视化操作界面，管理员可以对区块进行拖 拽；要禁用某一个区块，只需要把这个区块从现在所处的区域拖至Disable区块列表中即可。设置区块位置区块管理界面所提供的拖拽功能， 可以很方便的实现对区块显示位置的排序，在区块设置界面中，越处于上方的区块将越先显示，在最终生成的HTML代码中，先将处理更前面。修改区块配置要修改区块的配置，只需要点击区块列表中，每一个区块后方的Configure（配置）链接即可，对区块的配置主要包括以下几个方面： 1.设置区块的标题（Block Title）：每一个区块都有一个标题，他将会显 示在该区块的内容的最上方，按照系统的规定，当一个区块的标题被设置为空时，则表示该区块没有标题，那么系统在创建该区块的HTML代码时，就不会输入标 题所使用的HTML标签； 2.设置区块的区域（Region Settings）：在这里的设置不同于区块管 理界面首页的设置，在这里，我们可以更加详细的指定区块在不同的主题中所处的位置，任何已启用的主题都会以区块的配置页面列出，并且每一个主题的名称下方 都会是这个主题所有的区域列表，我们为区块指定不同主题下所属的区域。 3.页面展示设置（Pages）：设置区块在哪些页面中显示，默认选择为“All pages except those listed”，即“除以下页面之外的任何页面都显示”，另外一个选择是“Only the listed pages”即“只在以下页面中显示”。指定页面的方式是将该的Drupal路径输入至文本框中，一行一个页面，可以使用通配符来批量匹配一系列页，在系 统中“<front>”表示首页，“*”指代任意字符，如果启用了PHP Filter模块，那么在这里还可以使用PHP脚本来动态的生成页面列表，此功能在这里不再详细描述； 4.内容类型展示设置（Content Types）：设置在哪些内容类型中展示该区块，默认为任何内容类型都展示，但是我们可以指定区块 （Show Block for specific content types）。只需要把要显示当前区块的内容类型前的复选框选中即可。 5.用户角色展示设置（Roles）：设置为哪些角色的用户展示当前区块，默认为为 任何用户展示该区块，与内容类型一样，可以设置只为哪些角色的用户展示区块（Show block for specifix roles）； 6.设置是否允许用户自定义区块的显示与否（Users）：可以设置是否将当前区块显示与否的设置权交给用户，默认是不提供用户这种权限，另外两个设置是“Customizable, visible by default”，即“可自定义，默认为用户显示”和“Customizable, hidden by default”，即“可自定义，默认为用户隐藏”。 添加新区块要 添加新区块，只需要点击Add Block（添加区块）链接即可，添加新区块时，可以为区块指定标题（Block Title)、介绍(Block Description）以及区块主体（Block Body），区块的标题和介绍都是存文本类型的字符串，区块的主体与文章的主体是一样的类型，可以选择不同的过滤器类型，默认使用纯文本过滤器，这种过滤 器会将网址和邮箱地址自动转换成为可点击状态，换行会转换成为HTML中的换行符，分段会转换成为HTMl的段落标签，如果系统启用了其它的过滤器，比如 PHP Filter，那么在区块的主体中，还可以插入PHP或者HTML代码，PHP过滤器可以为区块主体动态提供内容。其它设置与区块的设置一样，即区域设 置，显示设置等。查看主题的区 域位置我们可以查看任何一个主题中所定义的区域在网页中的位置，这有助于我们更好的组织网页中区块的安排。区块模块的系统路径区块的管理路径为：admin/structure/block 页面中文描述 路 径 说明 区块管理界面首页 admin/structure/block 区 块配置页面 admin/structure/block/manage/BLOCK/configure BLOCK 表示提供区块的模块路径 区块添加页面 admin/structure/block/add 区 域位置查看页面 admin/structure/block/demo/THEME THEME 表示主题的名称 区块的权限设置 权 限代码 中文解释 说明 Administer blocks 管理区块 BLOG （博客）Drupal核心模块Blog（博客）提供的了多用户博客功能，博客模块启用之后，没有设置 界面，启用之后，有权限的用户就可以创建博客内容，博客模块为系统提供了一种名为“Blog Entry”（博客文章）的内容类型。博 客模块的系统路径博客文章的发布路径为：node/add/blog 页 面中文描述 路径 说明 博 客文章发布界面 node/add/blog 博 客首页 blog 用 户博客页面 blog/ID ID 表示用户在系统中的ID 博客的权限设置 权 限代码 中文解释 说明 Create new blog entry content 创建新的博客文章 Edit own blog entry content 编辑自己的博客文章内容 Edit any blog entry content 编辑任何用户的博客文章 权 限很大 Delete own blog entry content 删除自己的博客文章 Delete any blog entry content 删 除任何博客文章 权限很大 BOOK （手册）Drupal核 心模块Book（手册）提供了用户按大纲创建和组织内容的功能，最终得到的结果，使得被组织的内容形成一个类似于“书”的对象集合。创建新手册手册 页面也属于内容页面，可以访问内容添加页面中点击添加新的手册页面（Add New Book Page），来创建一个新的手册页面，由于在Drupal系统中，任何内容都是节点，所以，手册页面也不例外，如果不为某一个手册页面指定大纲，那么它和 其它的页面或者文章看不出来有多大的区别。 默认情况下（可以使用Field API为手册添加更多的属性），在添加手册页面的时候，会且个Book Outline（手册大纲）选项，在这里面我们可以设置这个手册的大纲，如果系统中还没有手册，那么这里会有两个选项，分别为： <none>：不列入使用大纲，如果选择此项，则当前页面不被列入任何大纲中； <create a new book>：创建新的手册，如果选择此项，那么会以Ajax的方式创建一份新的手册，同时把当前页作为新创建手册的顶级页面。 除了Outline的手册选择之外，还 可以设置手册页面的Weight（权重），有31个选项，分另是从-15~0~15，数值越小，表示权重越大，也就是在同级的手册页面中，它将处于更前的 位置。 在上面所说的两个选择项目中，Book来创建手册中所有页面的层级关系， 而Weight来管理同一层级中所有页面的顺序，两者结合起来，共同维护了一份手册。管理现有手册对 现有手册的管理可以分为两种方法，一种是快捷方式，一种是全局方式（方式名称是本人自己定的，帮助理解而已）。前一种方式就是在访问任何一个可以被添加到 手册大纲中的内容类型的对象时，在其内容页面的Tabs（标签栏）中，都会有一个Outline（大纲）标签，点击这个标签就可以编辑当前内容的大纲。这 种方式方式快捷，对于网站编辑来说，很方便，这种方式很有利于对现有内容进行大纲整理。 另外一种方式就是进入手册管 理页面中，可以更加方便的对某一份手册的现有大纲进行调整，系统提供了拖拽式的操作界面，实现的操作有对现有手册的大纲重构，而且还可以对现有手册中的所 有页面的标题进行批量的重命名。手册 功能设置手册的设置主要包括两个，一个是Content types allowed in book outlines，即“允许被列入大纲的内容类型”，这个设置可以设定哪些内容类型的内容可以被列入大纲，在开启手册模块之后，默认只有Book Page（手册页面）这一种类型的内容可以加入大纲，但是我们可以设置任何一种系统中现有的内容类型加入大纲，只需要将这种内容类型前的复选框中选中即 可； 另外一个设置就是Content type for chld pages，即“手册手页面的内容类型”，我们在查看一个手册页面时，在其最下方（不同的主题位置不一样）一般都会有一个Add Child（添加子页面）的链接，即在当前手册页面下创建一个下一级的页面，这个页面默认也是Book Page，但是可以根据自己网站的需要将其设置成为不同的内容类型。手 册模块的系统路径手册页面的发布路径为：node/add/book 页 面中文描述 路径 说明 手 册管理页面 admin/content/book 手册设置页面 admin/content/book/settings 某 一手册管理页面 admin/content/book/ID ID 表示用户在系统中的ID 手册模块的权限设置 权 限代码 中文解释 说明 Administer book outlines 管理手册大纲 Create new books 创 建新手册 Add content and child pages to books 为 现有手册添加子页面 View printer-friendly books 查看打印友好版本的手册页面 COLOR （色彩）Drupal核心模块Color（色彩）模块为用户管理员提供了一种改变当前网站色彩设计的快捷方式，可以让管理员不需要修改一 行系统代码和主题代码，就可以改变整个网站的颜色配置，当然，由于是与网站的界面相关的，所以这个模块的使用也与控制界面显示的主题相关，主题必须支持 Color模块才能使用Color模块，所以，并不是任何时候Color模块都是可用的。使用色彩模块改变网站的界面颜色配置我们可以进入显示管理页面中，进入某一个主题设置页面，如果这个主题支持色彩模块，那么在这个主题的设置页面中，一般会有一个叫作 “Color scheme（色彩方案）”的字段设置集，在这个设置集中，我们可以设置主题允许管理员通过色彩模块进行颜色管理的界面元素的颜色。 系统默认提供的Garland主题就支持色彩模块，我们可以进入Garland主题设置页面查看到Color Scheme，可以看到，主题自带了很多Color Set（色彩集），选择不同的色彩集，下方的Preview（预览）框中就会显示使用当前选中的色彩集的效果。 除了 使用提供了色彩集之外，用户还可以自定义自己的色彩集，Garland提供了五个可自定义颜色有元素，分别为Base Color（基本颜色）、Link Color（链接颜色）、Header Top（头部颜色）、Header Bottom（头部底端颜色）、Text Color（普通字符颜色）。要设置哪一个元素的颜色，首先需要点击后面的解锁，解锁之后才能更改当前颜色。COMMENT （评论）评论模块提供一种功能，可以让用户对任何已发布的内容进行评论。设置某一内容类型的评论方式评 论是针对内容的，所以，在系统中，评论的设置是针对内容类型的，我们可以为每一个不同的内容类型提供不一样的评论设置，对内容类型的评论设置主要包括以下 几点： 评论展示方式：可以选择是否以Threading的方式展示评论； Comments per page（每一页显示的评论数）：可选项有10、 30、 50、 70、 90、 150、 200、 250、 300； Default Comment setting for new content（创建新内容时默认的评论设置）：这里的所说的默认设置是在发表新的当前内容类型的内容时，当前正要发布的内容对象是否允许评论，这个设置 有三个选择，分别是：Hidden（隐藏）、Closed（关闭）、Open（开启）；还有两个复选项，分别为Allow comment title（允许评论标题）和Show reply form on the same page as comments（在同一页面显示评论回复框）； Preview comment（预览评论）：评论者在发布评论之前是否需要预览，可选择三种方式：Disabled（禁用预览）、Optional（可选）、 Required（必须）。 这 上面的所有设置都是针对某一个内容类型的，只对当前的内容类型有用。管 理现有的评论对现有评论的管理主要分为以下几点： 审核评论：根据网站的 设置，某些评论可能不会立马发布，而需要等待管理员审核通过之后才能发布，我们可以在评论管理页面对未审核通过的评论进行发布操作； 删除评论：可以单个删除，也可以批量删除； 评论的权限设置 权 限代码 中文解释 说明 Administer comments and comment settings 管理评论并且设置评论功能 View comments 查 看评论 Post comments with approval 发表评论并且不需要管理员审核 Post comments without approval 发表评论但是其评论必须通过管理员审核之后才会发布 Edit own comments 编 辑自己已发布的评论 CONTACT FORM（联 系表单）联系表单模块为网站以及网站中的每一个 用户提供一个联系表单，使得其它用户可以在不知道当前网站或者用户的电子邮箱的情况下，通过该联系表单联系到本站或者本用户。如果启用了联系表单之后，网站就会有一个默认的Feedback表单页面，可以通过contact 这个路径访问到，这个表单页面使用的收件人地址就是安装系统时所填写的系统邮件地址；同时，每一个用户也会有一个自己的联系表单页面，可以使用 user/ID/contact（ID表示用户的ID）路径来访问（需要有相关的权限）。设置站点联络表Contact Form为系统提供了一个站点联络表，在联系表设置中，我们可以设置多种Category（分类），一个联系表分类有以下属性： Category（联系表分类的标题）：用户区分其它不同的联系表分类； Recipients（收件邮箱列表）：用户发送信件至这个联系表分类时，哪些邮箱地 址将收到信件； Auto- Reply（自动回复）：用户向当前联系表分类发送信件时，自动回复给发信人的信息； Weight（权重）：用来对多个分类进行排序使用的字段，可选项从-10~0~10，数值越小， 越靠前； Selected（是 否选中）：可选项有两个Yes和No，如果选择Yes，那么当前这个分类将为用户默认的收件邮箱列表。 当系统只设置了一个联系表分类时，用户在发送信件时，不需要进行任何选择，但是如果已经设置了超过两个联系表分类，那么用户在发 送信件时，则可以选择是向哪一个分类中发送信件。CONTENT TRANSLATION（内容翻译）内容翻译模块可以实现同一个节点 多个不同语言的版本，内容翻译模块可以对同一个节点的各种语言版本进行管理，此模块在启用前要求系统已经启用了Locale（本地化）模块，当启用了内容 翻译模块之后，用户在访问站点时，系统会根据设置向用户提供不同语言的网站版本，如果用户访问某一个节 点，系统首先会检索用户是否设置了自己的本地化言语，如果已经设置，并且用户查看的当前节点有与用户语言相匹配的翻译版本，那么系统会提供这个版本，否则 会向用户提供系统默认语言的版本，或者节点发布的源始版本。 开启了内容翻译模块之后，在内容类型管 理中，每一个内容类型都会多一个设置项Multilingual Support（多语言支持），这个设置项有三个选项，分别如下： Disable（禁用）：不允许当前内容类型有多种语言版本； Enabled（启用）：允许当前内容类型有多种语言版本； Enabled，with translation（启用，同时）：待研究 CONTEXTUAL LINKSContextual LinksDASHBOARD（控制面板）控制面板模块的功能就是为网站添加一个可自定义的控制面板，原Admin（管理）链接名称会被更改为Dashboard（控制 面板），管理页面首页会变为Dashboard，管理页面首页的标签栏会增加一个Dashboard链接，要返回原来的管理页首页，可以点击标签栏中的 By Task（按任务分类）链接即可。控制面板模块提供的是一个可拖拽的自定义界面，控制面板中的每一个基本元素就是区块，所以，系统中的区块我们都可以在 Dashboard中使用。DATABASE LOGGINGDatabase LoggingFIELD UI（FIELD用户界面）Field Ui可以为系统提供一个Field管理的用户界面，使得我们可以不用修改系统代码就可以实现对系统内容结构的重新调整，在这里所说的内容结构包括内容和分 类两者的数据结构。设 置一个内容类型的数据结构在开启了Field Ui模块之后，我们可以发现Content Types管理页面中的内容类型列表中，每一个内容类型多出了一个Manage Fields（管理字段）的操作选项，进入这里，我们就可以来管理一个内容类型的字段了。添加一个新的字段要添加一个新的字段， 只需要在Manage Fields（字段管理页面）中最下方的表单填写一个新的字段属性，再点击保存即可，填写一个Field，需要填写（或选择）以下属性： Label（标签）： 用来描述这个字段的文本； Name（名称）：这 是一个只允许使用小写英文字母的字段，系统将会使用它来作为底层数据库的表名称，其前面会自动加上“field_”这一字符串； Field（字段类型）：这是一个下拉菜单，用来指定当前添加的字段的类型，在其它模 块没有向Field API提供其它类型的字段时，这里默认提供了十个字段类型，分别如下： Boolean：布尔 类型 Decimal：十进 制数 Float：浮点数 Integer：整数 List：列表 List（numeric）： 公包含数值的列表 List（text）： 文本列表 Long text：长型文本 Long text and summary：带摘要的长型文本 Text：文本 Widget（获取方 式）：在未选择Field值时，Widget是不可变的，Widget会根据Field类型的不同而不同，它表示的是当前字段的获取方式，比如 Boolean类型字段的获取方式有两种：Check boxes/radio button和Single on/off Checkbox 添加了新的字段之后，我们可以对这个 字段进行更加详细的设置，比如可以设置这个字段是不是必须字段，如果是列表类型的字段的话，我们还可以设置这个列表是复选列表还是单选列表，其可选值是什 么，哪个值是默认值等等。设置 字段的展示方式Field Ui可以让我们很细微的控制每一个字段在不同情况下的各种显示方式，系统默认提供对一个字段进行两种不同状态的控制（可以由其它模块添加状态），这两种状 态分别为Teaser（摘要模式）和Full Content（完整模式），我们可以设置在这两种不同状态下某一个字段的显示方式： Label的设 置：Label可以被设置成为Above（在内容之上）、Inline（与内容同行）和Hidden（隐藏）三种显示方式； Format的设置：Format是表示对字段内容的格式化，不同类型的字段和不同的 格式化方式，比如Long text and summary这种类型的字段可以有五种展示方式，分别如下： Default：以默 认方式展示 Plain text：纯文本格式展示 Trimmed：被剪 切了的 Summary or trimmed：如果Summary不为空，则使用Summary，否则使用Triimed Hidden：隐藏 对字段展示的设置除了以上设置之外，还可以对不同的展示需求进行不同的设置，比如对于网页上的显示，我们使用的是Basic这一个展示方式，而对于打印版本，我们又是使用的是Print这个展示，FEED输出使用 的是RSS这个展示版本。哪些数据可以使用Field UI来修改其内容结构？可以使用Field Ui来修改其内容结构的数据主要有以下这些： Node：节点； Taxonomy：分类 Comment：评论 FILE（文件）File（文件）模块可以为Field API提供一种新的字段类型——文件，我们可以通过Field Ui来了解这个字段类型的增加，在添加新的字段时，可以选择某一个字段类型为File即可。文件字段设置文件字段的设置主要有以几几 点： 是否允许内容发布者修改文件的展示与否：如果选择Enable Display Field，那么用户在上传了文件之后，可以选择这个文件是否在展示内容的时候也展示出来； 文件上传目标文件夹：Upload Destination，这是用来设置文件的访问性的，可选择项有两个，分别为：Publich Files（公开目录）和Private Files（私有目录），在字段创建之后，这个属性是无法再进行修改的； Allowed File Extensions（允许上传的文件类型）：可以设置哪些类型的文件才允许被上传至服务器，默认只允许上传“txt”格式的文件，设置时，只需要把文件 后缀（没有小数点）的字符串填写在文本框中即可； File Directory（文件目录）：这里所设置的目录是处于文件上传目标文件夹中的子目录； Maximum Upload Size（最大文件大小）：设置最大允许上传多大的文件，可以使用单位来表示，比如512表示最大允许上传512 bytes的文件，80 Kb表示最大允许上传80 Kb的文件，其它如50Mb等； Enable Description Field（启用文件介绍）：设置是否可以对上传的文件进行介绍。 FORUM（论坛）论坛模块为系统提供了一个论坛功能。添 加新论坛在论坛系统中，有两个需要了解的概念： Container（容 器）：容器可以把其全称说成是Forum Container，即论坛容器，容器中不允许发布话题，只允许存放论坛和其它容器； Forum（论坛）：可以单独创建，也可以被存放至Container（容器）或者另 一个论坛中，论坛中可以发表话题。 为了更好的组织论坛，一般建议先创建一个论坛的容器，然后再在容器中添加论坛，论坛中可以发表新的话题。修改现有论坛Drupal 的论坛模块提供了一个拖拽式的论坛管理界面，我们可以通过拖拽来实现论坛的整理，在管理界面中，把一个论坛（或者容器）往前拖动，则会让当前被拖动的论坛 与其父论坛同级，而往某一个论坛（或者容器）下方往右拖动则表示将当前被拖动论坛归纳入后一个论坛下，成为其子论坛。论坛模块设置论 坛有三个可设置项，分别如下： Hot topic threshold（热门话题规则）：设置一个话题需要获得多少个回复之后才能成为热门话题； 2.Topics per page（每页显示的话题数）：在论坛中，每一页显示多少个话题； Default order（默认排序方式）：用户查看论坛时，话题列表的默认排序方式，系统默认提供了四种排序方式（可以使用其它模块来控制），排序方式如下： Date – newest first：按日期查看 – 新发布的话题靠前； Date – oldest first：按日期查看 – 新发布的话题靠后； Posts – most active first：按状态查看 – 更新最多的靠前； Posts – least active first：按状态查看 – 更新最少的靠前。 关于论坛的本质在drupal中，我们可 以发现启用论坛模块之前，最开始是需要启用Taxonomy模块的，对于刚接触Drupal的用户可以会有一些不明白的地方，论坛和分类之间有什么关系？ 其实按照Drupal的思想，任何内容都是节点（Node），那么，从本质上讲，论坛中的话题和博客中的日志或者其它类型的内 容都是节点，在明白这一点之后，我们不难发现，我们可以把论坛和话题之间的关系和结构映射成为分类和文章之间的关系，一个论坛（或者容器）就是一个分类， 一个话题就是一篇文章，论坛中的回复就是文章中的评论，而Drupal本身也就是这么做的，所以,Forum模块会依赖于Taxonomy模块。 我们在创建了几个论坛之后，可以去Taxonomy管理页面查看，会发现，会多出一个Forums词汇表，在这个词汇表下面的 术语以及术语之间的层次结构正好就是你的论坛的层次结构，这些术语就是论坛的本质，只不过系统对这些术语的处理已经被Forum模块进行了改写，让我们从 表面上看不出本身上是分类。论坛的 权限设置 权 限代码 中文解释 说明 Administer forums 管理论坛 HELP（帮助系统）管理帮助文件的在线展示。IMAGE（图 片）图片模块为Field API提供了一种新的字段类型——图片，同时还提供了一个图片缩略图管理器Images Styles（图片样式）；图片模块需要File（文件）模块的支持。设置图片样式（Image Styles）Image Styles被我翻译成图片样式，其意思类似于CSS样式中的样式，就是一种表现或者展现形式，Image Styles即图片的不同展示方式，它其实就是一种图片的缓存基制，使用同一张图片可以在各种不同的场合以不同的尺寸显示。 图片模块安装完成之后，系统默认会增加三个图片样式，分别为Thumbnail（缩略图）、Medium（中等大小）、 Large（大图）；可以在Image Styles管理页面中查看，如果这三种大小的图片样式已经完全满足系统需要了，那么我们可以不对它们进行任何修改，但是如果还没有完全满足，那么我们就 需要对一些图片样式进行自定义。图 片样式管理器中对图片操作的定义在图片样式管理器中，对图片的操作有如下几个定义： Crop（裁切）：按 照规定的大小直接对图片进行裁切； Desaturate（褪 色）：将图片修改成为黑白灰图片； Resize（修改长 宽大小）：将图片在长宽修改为指定的大小； Rotate（旋 转）：将图片进行旋转； Scale（缩放）： 将图片按照等比例缩放； Scale and crop（缩放后裁切）：先将图片等比例缩放至合适大小然后裁切至指定的大小。 在一个Style中，所以上面这些操作可以重复使用，系统会按照操作列表中的顺序对图片进行处理，上一个操作完成之后的结果作 为下一个操作的图片来源，最终所有操作的结果成为这一个Style的结果。修改系统默认的三个图片样式系 统默认提供的三个图片样式是与其它用户添加的样式不一样的，它们不允许被删掉，但是可以被用户修改，点击任何一个样式后面的Edit（编辑）链接之后，就 可以进入它们的图片样式的设置页面，如果修改提三个默认样式，那么最开始是没有添加删除操作这些链接或者按钮的，我们必须点击了“Override defaults（重写默认设置）”按钮之后，才会打开图片样式的修改工具，使系统默认的图片样式变得可修改之后，修改方法与用户自己创建的图片样式修改 方式一样，详细可以见“创建新的图片样式”；系统默认的三个样式，可以在被修改之后，再还原至系统的初始状态。创建新的图片样式点击图片样式管理页 面中的Add Style（添加新样式）链接就可以创建一个新的图片样式，首先需要输入一个图片样式的名称，名称只允许使用小写字母或者数字、下划线“_”或者连接符 “-”，样式名称将会被用来创建这个样式的缓存图片文件夹，输入了正确的样式名称之后，点击Create New Style（创建新样式）就进入样式设置页面。 我们现在可以在这个样式中添加各种各样的操作，从操作列表中选择任 何一个操作，然后点击Add（添加），就会在操作列表的最下方添加一个新的操作，不同的操作的添加方式可能有些不同，比如Scale或者Resize操作 就需要在添加的时候设置结果图片大小，而Desaturate却不用进行任何设置。每添加一个操作，样式编辑页面上方的Preview（预览）区域都会更 新以这个样式处理之后的结果图片示例。 除了系统默认的三个图片样式，其它任何一个用户创建的样式在默认情况下都是 可以被删除的（除非系统的这种机制被其它模块所修改）。为某一内容类型添加图片类型的字段前面已经讲到了，图片模块提供了一个图片样式控制器，同时还为Field API提供了一个图片类型的字段，我们可以类似于文件模块提供的文件类型字段一样，通过Field UI为内容类型添加图片类型的字段。图片字段的添加方式与其它字段尤其是文件类型的字段的添加方式大部分步骤都是一样的，在这里，只说明几点不同。图片类型字段特有的属性与文件类型字段相比，图片字段还有以下特有的属性： Maximum image resolution：最大图片尺寸，使用宽 X 高的方式来设置，图片的尺寸不允许大于宽或者高中的任何一者； Minimum image resolution：最小图片尺寸，与最大图片尺寸一样，图片的尺寸不允许小于宽或者高中的任何一者； Enable Alt field/Enable Title Field：在上传图片时是否允许用户设置图片的Alt和Title属性； Preview image style：编辑内容时，图片预览所使用的图片样式； Default image：当用户没有上传图片时，使用的默认图片。 图片的权限设置 权 限代码 中文解释 说明 Administer image styles 管理图片样式 LOCALE（本地化）本地化模块为系统提供了实现多语方站点的功能，一个系统可以安装多种语言，针对不同的用户群体使用不同的语言，同时，本地化模块 还是内容翻译模块所必须的模块。设 置系统的语言集系统默认只安装了English（英语）这一个语言集，但是可以通过Locale模块来增加其它 语言集，语言集的官方下载地址为：drupal.org/project/translations ；添加新的语言集要添加新的语言集，可以点击Add Language（添加语言集）链接，打开语言集添加页面，在语言集添加的过程中，我们首先需要指定所有添加的语言集的名称，系统默认提供了很多语言集名 称，中文名称有两个，分别为：Chinese Simplified（简体中文）和Chinese Traditional（繁体中文）；如果我们现在下载的语言集文件是简体中文，那么我们需要选择简体中文，然后点击添加。 如果我们的语言集文件不在系统提供的语言集名称列表中，那么我们可以自定义一个新的语言集名称，方法是，不选择任何一个现有语 言，点击Custom language（自定义语言集），打开自定义语言集编辑框，输入相关的信息，点击Add Custom Language（添加新的自定义语言集）按钮即可。 添加自定义语言集名称是，需要设置一些相关的属性，其它必须 设置的有以下几个属性：、 Language code（语言代码）：这是正在添加的语言集的ID，系统将通过这个ID来识别使用哪一个语言集，一般使用的是“国家代码-区域名称”这种方式，语言代码 所遵守的格式标准可以在www.ietf.org/rfc/rfc4646.txt 查看； Language name in English（用英语描述语言集名称）：语言集的英文名称； Native language name（用语言集的本地化语言描述语言集名称）：语言集的本地化名称； Direction（文 字方向）：在这个语言集中，文字的阅读方向是Left to Right（从左至右）还是Right to left（从右至左）。 在创建语言集是，系统会自动从服务器端 搜索是否存在刚才添加的语言集的语言包文件，如果存在，则会自动导入它（如果语言包是某一个模块的，那么只有在这个模块启用的情况下来会导入这个语言 包）。 添加了语言集之后，就可以设置其为停用、激活或者为默认，如果设置为停用，那么这个语言集仅仅只是被保存进 了系统的语言库中，但是没有任何地方会用到；如果设置为激活，那么系统默认不使用它，可以在某些情况下会使用，比如用户设置了自己想使用的语言集或者 Session决定使用了激活的语言集等等；默认，即网站默认使用的语言集。Detection and selection定义系统如何决定使用哪种语言来显示网页元素（主要是Drupal系统、模块所使用的标签和说明性文字），系统默认提供了五种 决定方式，分别如下： URL：使用URL地址来决定使用哪种语言，这里其实就是查找Language Code的方式来决定使用哪种语言，在网址中可以包含Language Code； Session：会话，通过一个请求传递的参数或者Session 变量来决定； User：用户，根据用户自定义的语言集； Browser：浏览器，根据浏览器中的语言设置来决定应该使用哪种语言； Default：默 认，使用系统默认的语言，即在设置系统语言集中设置的默认语言。 在设置页面中，可以对以上设置项进行排序，排列在最前面的将作为第一认证方式，在前一个认证方式无法认证时，再使用后一种认证 方式，每一种认证方式又可以选择是否启用，只有在启用的状态下才会能网站的语言集产生作用。界面翻译工具除了前面所讲的添加语言集和自 动导入语言集文件内容的方式之后，本地化模块还提供了一个界面翻译工具Translate Interface，使用界面翻译工具，可以实现对系统界面的翻译，可以上传新的翻译语言包文件，查看某一种语言的翻译完成度，导出某一个语言中未翻译的 内容至po或者 pot文件以提供给外部编辑器进行翻译，导入外部工具翻译完成的po文件等等。翻译可翻译的字符串本地化工具提供了 一个字符翻译界面，在这个界面中，我们可以查看每一种语言的翻译进度，每一个字符的翻译详情，修改、删除或者添加字符串的翻译，修改或者删除字符串的翻译 十分简单，在这里最主要说一下下如果添加一个字符串的新翻译。 在翻译用户界面中，提供了一个Filter translatable strings（过滤可翻译的字符串），通过这个过滤器我们可以筛选出我们想翻译的字符串，然后点击这个字符串后面的Edit（编辑按钮）就可以对其翻译 进行编辑了，对于未翻译的字符，编辑其翻译字符就相当于添加了翻译。导入已翻译好的字符集如果我们使用 了PO文件来保存翻译数据，那么，可以通过翻译用户界面提供的导入工具导入已翻译好的字符集，导入字符集时，可以指定将导入的字符集放到哪一个语言下。MENU（菜单）Menu（菜单）模块允许管理员自定义网站的导航菜单，菜单模块默认提供了五个菜单，分别为： Main Menu（主菜单）：一般网站都会有一个主导航，菜单模块提供的这个主导航默认没有任何链接项目，我们可以自定义系统的主导航；主导航在默认主题中使用横 向显示在页面最顶端； Management（管 理菜单）：管理菜单是系统管理员使用得最多的菜单，默认情况下，管理菜单中的所有项就是系统内置的管理菜单项，但是在通过菜单模块，我们可以修改菜单项中 的链接列表； Navigation（导 航菜单）：导航菜单默认是进行功能导航的，比如我们启用了Book模块、Forum模块之后，这些模块的前台界面链接都会默认出现在导航菜单中； Secondary Menu（次级菜单）：与主菜单类似，只是名称上被归为次级菜单； User Menu（菜单菜单）：这是一个提供与用户操作相关链接列表的菜单，默认提供两个链接，用户Profile页面链接页面和退出登陆页面链接。 管理现有菜单中的项点击任意一个菜单 名称后的Edit（编辑）链接，就可以开始编辑这个菜单中的项，菜单中的项目的编辑主要包括，添加新链接、修改现有链接、对现有链接列表进行重组和排序等 操作，重组和排序的操作类似于手册模块中对手册的重级和排序，拖拽方式实现； 要在某一个菜单中添加新的项，只需要 点击Add Link（添加链接）即可，点击之后，会进入新链接地址信息的输入编辑页面，一个链接至少要求输入Menu Link Title（链接标题）和Path（路径），其中，路径可以是系统路径，也可以是完整的URL地址。之后还可以设置当前链接的父链接以级在同等链接中的排 序权重，点击添加即可保存刚才的链接。设 置菜单菜单模块的设置项默认只有两个，分别为Source for the Main links（主导航链接供应源）和Source for the Secondary links（次级导航链接供应源），都是以下拉菜单的形式进行设置。OPENIDOpenID模块提供系统一种功能，让用户可以将自己在系统中的帐户与多个OpenID帐户关联，使得用户可以同时使用任何一 个已关联的OpenID帐户或者系统中的原帐户登陆系统。PATH（路 径）Path（路径）模块可以让我们改变系统默认的路径，比如一个系统路径为“node/2”的节点，我们可以 将其路径修改成为“about”，那么这个时候，我们就已经可以同时使用这两个路径访问节点ID为2的节点了，而且默认使用about。 在启用了路径模块之后，我们在添加任何一个新的页面或者节点时，都可以为其实指定新的路径，如果不指定，则使用系统默认的路径， 我们还可以在一个节点或者页面被添加之后，由路径管理工具独立指定新路径，路径模块提供了一个URL Aliases功能，在使用URL Aliases时，必须保证，源始路径必须是系统中存在的，而新路径是系统中不存在的。PHP FILTER（PHP代码过滤器）PHP 代码过滤器，让我们可以在节点、区块内容等文本输入区域输入可执行的PHP脚本，为了安全起见，一般这个过滤器只提供给开发者或者测试时使用，而不允许网 站任何用户都可以使用。POLL（投 票）Poll（投票）模块为系统添加了一种新的内容类型——投票。PROFILES（用户资料）Profiles（用户资料）模块，让我们可以自定义用户的各种属性。系统默认只提供了很简单的用户信息管理，但是通过用户资料 模块，我们可以添加各种类型的其它信息字段，Profiles模块默认提供了七种不同的字段类型，分别为： Single-line Textfield：单行字符串 Multi- line Textfield：多行字符串 Checkbox： 复选框 List Selection：单项选择列表 Freeform List：自由列表 URL：网址 Date：日期 自定义用户资料属性进入 Profiles设置页面，我们可以设置系统的用户资料属性，在Profiles设置页面中，上部分会显示现有的用户属性，而Add new field部分会显示可用的属性类型，点击任何一个类型的字段名称就可以为用户属性添加一个这种类型的字段。 添加 字段时，会要求提供以下信息： Category（分类）：即当前所添加的字段所属于的分类，这里的分类与Taxonomy不同， 而仅仅只是对用户信息的分类，比如“个人信息”、“工作信息”、“兴趣爱好”等等； Title（标题）： 当前字段的名称； Form name（表单名称）：这是一个只允许使用小写字符和下划线的字符串，它是当前这个字段在数据库和系统中的唯一标识，系统默认已经输入了 “profile_”作为表单名称的前缀，一般也不建议用户修改这个前缀； Explanation（解 释）：对当前这个字段的解释，用户在填写这个字段的信息时，系统会提示给用户的信息； Visibility（可 访问性）：我是一个有四个选项的单选设置项，四个选项分别为： Hidden profile field, only accessible by administrators, modules and themes. （隐藏的资料字段，只劲旅管理员、其它模块以及系统主题访问）； Private field, content only available to privileged users. （私有字段，信息只允许有特定权限的用户查看）； Public field, content shown on profile page but not used on member list pages. （公有字段，信息将在用户的信息页面显示，但是不在用户列表页面中显示）； Public field, content shown on profile page and on member list pages. （公有字段，内容有用户个人信息页面和用户列表页面中都显示）； Page Title（页面标题）：Profile模块可以将用户按照各种用户资料属性对用户进行筛选，这里所设置的页面标题就是Profile模块根据某一个字段 对用户进行筛选时，结果页面所使用的页面标题； Weight（权 重）：当前字段在同等级的其它字段的排序位置。 其它属性：根据字段的 类型不一样，除了上面这些信息之外，还有其它一些特定类型字段的特有属性。 用户管理自己的信息在系统中，每一个用户都会有一个自己的个人资料页面，在这个页面中，将会显示所有被设定为可在此页面中显示的用户信息，用户还可 以点击这个页面中的Edit（编辑）链接编辑自己的信息。 如果某一个用户信息字段，在用户创建时或者上一次更新自 己的信息时，还没有被创建，那么用户的这个字段的信息将为空或者为系统的默认属性，用户可以对其进行修改。RDFRDFSEARCH（搜索）Search（搜索）模块会对系统中所有内容进行检索，提供一个强大站内搜索功能。搜索设置搜索模块启用之后，需要进行详细的设 置，进入Search Settings（搜索设置）页面，我们可以看到，搜索模块有以下设置项： Indexes Status（索引状态）：这里显示了当前系统中，有多少内容已经被搜索系统检索了，以百分比的形式显示状态，同时还有一个Re-index Site（重新索引站点）的按钮，点击这个按钮之后，搜索系统会重新对整站所有内容进行一些检索，而以前所创建的索引将全部被删除，一般情况下，不需要使 用重新索引这个功能； Indexing Throttle（索引数量）：系统每运行一次Cron，检索多少条数据，默认是一百条，如果系统数据量大，而服务器配置又足够好的话，可以把这里调整得 大一些，而对于小型的应用来说，100就足够了； Indexing Settings（索引设置）：索引设置应该在搜索模块对系统内容进行索引将就设置好，因为每一次修改索引设置，搜索模块都会重新对系统进行一次索引。 Minimum Word Length To Index（索引分词时，每一个词的最小长度）； Simple CJK Handling（简单的中日韩字符处理）； Active Search Modules（激活模块模块）：设置哪些类型的数据可以需要被搜索模块索引； Content Ranking（内容权重）：设置搜索引擎根据哪些内容来索引内容和对结果排序。 搜索内容搜索 系统提供了一个搜索页面，其路径为“search”，搜索工具默认显示了一个文本输入框，和一个搜索按钮，输入关键字之后点击搜索按钮即可搜索内容，并打 开搜索结果页； 搜索页面中，还有一个高级搜索工具，它可以让我们更加详细的自定义搜索过滤器，点击 Advanced Search（高级搜索）即可打开这个过滤器。 搜索系统会在搜索结果中将结果中的关键字进行高 亮显示。SHORTCUT（快 捷方式）Shortcut（快捷方式）模块为系统提供了一个创建和管理快捷方式的功能，包括管理员、用户等等任 何被设置为可使用快捷方式功能的用户都可以创建和管理自己的快捷方式，系统管理员可以被系统指定一个全局的快捷方式，即任何一个用户都可以使用的快捷方 式，而用户自己还可以创建和管理多个自己的快捷方式。创 建新的快捷方式集在启用了Shortcut（快捷方式）模块之后，进入用户的资料页面，就可以看到，页面的标题 栏中出现了一个Shortcuts（快捷方式）的链接，点击这个链接就可以管理当前用户的快捷方式集了。管理快捷方式在快捷方式管理工具中，我们可 以创建新的快捷方式集，修改现有快捷方式集，为某一个快捷方式集添加、删除快捷方式。快捷方式集中的每一个快捷方式，其本质上就是一个文字链接，所以，添 加一个快捷方式，就是往某一个快捷方式集中添加一个文本链接，只需要提供一个链接地址和链接标题即可。 系统默认的 快捷方式集是只允许修改但是不允许被删除的，而其它的任何一个快捷方式集都是可以被删除的。
Science Education Group LLC (SEG) was registered in Chapel Hill, North Carolina, USA, in 2008, with 10 million dollars capital. The major investors are from venture capital of Silicon Valley. Supported by CAST (China Association for Science and Technology) and the Science & Technology Communication Research Center of Beihang University, we are building a global network of top scientists around the world, and dedicated to bridging the gap between scientists and public through a comprehensive media platform and community. The media platform consists of books publishing, internet science portal and online community, as well as science promotional events, to bring the cutting edge science to ordinary Chinese people in an enjoyable fashion.上面这个就是公司的介绍，看得懂英文的看英文，看不懂英文的，可以去看谷歌语言工具里面翻译一下就ＯＫ了，在这个公司做的主要就是公司要运营的一个类似于Research Gate的网站及其后续的维护和更新。
生活就是爸妈生下来，自已活下去吧
很久没有在博客上面来写自己的生活了，似乎自己已经离生活越来越远了，今年三月十四号，正式从去年九月五号进的公司易维博科离职，算离职吗？似乎也不算，因为我没有真正的认为自己入过职，一切都像是小孩子过家家，或者换种角度讲，像是拉屎，来也匆匆，去也匆匆。之后今年三月二十二号，进了现在所在的公司，现在的公司叫啥名字，我还是像以前一样，至今未知，或许叫中国企业国际发展协会吧，因为我上班的办公室外面挂着一块这样的牌子，或许叫做民工网吧，因为我的老板每天都是在那里待着，又或许叫清大燕园吧，因为在网上查到，民工网是由清大燕园运营的，又或者，叫做爱大企业培训管理ＸＸＯＯ公司，因为我现在做的系统名字就这么叫的。我似乎总是这么糊里糊途的走过一程又一程，又想换公司，因为似乎有一家新公司比现在的更好，环境好，似乎气氛也好，似乎工作条件也好，可是爸爸妈妈都说过了，工作不要老换，可是，第一个公司，我一直坚持了整整六个月又十天，最后的结果不是我所想要的；而这个公司我又能坚持多久？我是二ＯＯ九年的三月十四号从黄石一个人来北京的，记得那个时候，八百租了一间只有五平米的房子，待了一个月，最后被房东逼出来，因为有一个人愿意出九百租我那个房子，好，我从中关村搬到了清河，在清河的房子也是八百一个月，不过得压一付三，所以，我一手交了三千六的房租，在那里住了半年，最后因为公司有供房，所以我搬到公司租的房子去了，在永丰屯，虽然远了点儿，不过公司每天都是有车接送的，所以，也就无所谓了，只是，在清河的房租是拿不回来了，因为要提前一个月交房租的原因，我还有一千六在中介那里也是拿不回的。后来公司出了一些不愉快的事情，上班的地方从清华同方大厦搬完全搬到了永丰屯，唯一相同的事情是，工作还是那样的没有目的，最后过年也是在北京过的，今年一开年，老板说搬到新街口去，我就跟着去，只是不想公司再像去年那样漫无目的的走，所以，所有算作员工的人（一共也就五个人）和老板谈，谈工资的发放方式，谈公司的工作方式，谈公司未来的发展，只是，结果还是和我想象的一样，没有任何进展，所以，所有员工决定一起离开，离开那个让我们所有人看不到希望的地方。而今，在新公司里面，待遇还算不错吧，只是不太适应压半个月发工资的方式，或许大家都是这样的吧，或许我真的太年轻，不懂规矩吧，反正，我总是第一个打破公司规矩的那个人，这一次也一样，先是和主管（暂且这么说吧，因为他一直都是管着我的）闹，不按他说的办法来做，而后和总监闹，也是不喜欢他的做开发的方法，如果还一直留在公司的话，可能下一个就是和老板去闹了吧，说到闹，也不算是吧，只是和他们大声的说事情而已。有一家新公司，如果现在能过去的话，我能在里面做让近似技术总监的职位，而且我还是那样认为我可以把那个工作做好，可是我怕我没有那个心思了，因为我已经不是人生第一次的感受到生活的压力了，爱情？爱情总是让人很累，哪怕爱情带给我甜蜜，我现在才明白两个人是朋友，可以亲密无间，而成为恋人之后，就矛盾重重，因为做为朋友，可以无话不谈，而且总是谈着共同爱好的事情，而相爱之后，两个人所说的所谈的总是对方最不愿意去谈的事情。我也想早早的结婚，走过谈恋爱这一过程，可是我不能不负责任的就这么把一个人带进自己家，因为我现在还没有能力去支撑一个家，能力，不仅仅只是钱，还有我这未定的心，不是爱不定，而是心还在外面飘着，我不想这样在心里还有其它事情的时候，就把她和自己丢给婚姻。或许我就是人常说的败家子吧，从小到大，已经花了爸爸妈妈那么多，而这一次，再一次的把手伸向了爸爸妈妈，我似乎永远是一个长不大的孩子，总是把自己的后路丢给爸爸妈妈，说到再实际点，我似乎总是在想着，爸爸妈妈给办的那些银行卡里，总会在自己最需要的时候有一些钱的，所以，我不要去担心那么多。或许你总是想我一事无成，或许你说我交着一大帮狐朋狗友，或许你说我跟什么样的人在一起就会走什么样的路，或许，我真的是一直在走着一条错误的路，但是为什么我过着二十多年，没有别人再来这么说我？我没有不相信任何人，但是我也从来没有相信自己就是这样的人。似乎在别人看来，我总是最不懂得痛苦的人，或许是，或许不是，但是这一年以来，我唯一明白的是，不管我多么的努力，我还是那样的失败，当我再回头去看看时，似乎所有的人都已经离我远去，而所有的人都给我留下一大堆所谓的痛苦。有时候在想，为什么要被生下来，有时候又在想，为什么还要这样的活下去，或许，生下来之后，就得努力的活下去吧，所以，我从来不会像别人那样想到死，在所有人都痛苦的时候，我还能一如往常的一样让自己开开心心的过，但是，有谁知道我的内心？我想把所有的不愉快都深深地隐藏在心底，一个人不开心就罢了，何必再去影响其他人？所以，我去年甚至选择一两个月不和任何人联系，我手机关机，ＱＱ不上线，ＥＭＡＩＬ邮件不回，甚至连我爸爸妈妈都很难找得到我，而现在，那是我这么多年以来，唯一一次感觉到清静，因为没有任何人为的烦恼，或许那真的是我所想要的吧？只是真的那样之后，心里又总是有太多的放不下，包括朋友、恋人、父母还有自己耐不住的寂莫。听说，其实人做事，是没有对与不对的，只有观点和想法的不同，只有认知的不同，只有人生价值观的不同，所以，或许我从来就没有做错过，而是对于某些人的价值观来说我是错的，而对于某些人来说，我是无所谓的，而对于另一些和我一样的人来说，我是应该这样的，所以，我从一开始就选择了跟和自己一样的人走在一起，影响着他们并被他们影响着，从小到大。不知道近墨者黑进朱者赤，到底最后是黑者近朱而赤还是朱者近墨而黑，总知这似乎就像人们常说的到底是先有鸡还是先有蛋，虽然，我知道是先有蛋的，但是至于朱与墨，我无法知道。从某种角度来讲，人生的最大遗憾莫过于错误地坚持了不该坚持的，轻易地放弃了不该放弃的…… 那我到底错误的坚持着什么了吗？轻易的放弃了什么了吗？来北京一年又一个月Ｏ三天，我在北京没有对任何一个女人动过心，甚至没有和哪个女的说过一句超出同事与朋友之间关系的话，而且自己心里也一直都是这么认真的认为，我确实是没有这个想法，难道真的是我改过自新了？真的不再像别人说的那样花心了？虽然我从一开始都认为一个人可以真爱几个人，但是真的让我真爱的，有几个？或许只是以前太过年少无知吧，或许只是自己确实太过于早熟了，反正，我确实是有过太多次所谓的爱情了。我能一个人在这个所谓的花花世界保持着自己一个人，或许并不是因为什么别的，而是因为我似乎已经厌倦两个人在一起的争吵，真的，我这一生最大的错误可能就是希望任何事情都简简单单的，所以，就算是人类最复杂的爱情这件事情上，我也希望这样，我真的不想再吵哪怕是一个字了。所以，我能在北京大老爷们儿的一个人过，心里确实是哪怕一次想过要找一个女人陪自己在北京过，而现在坚持的，或许就是前面所说的不想轻易放弃一直所拥有的吧，但是我现在却不知道，到底我是在错误的坚持，还是不轻易的放弃，而我现在内心深处已经对两个人的生活有了一种恐惧，因为这四年来，我似乎没有在两个人的爱情问题上做对过一件事情。所以，我一直都希望我是一个人在北京，而不是与相爱的人在一起打拼两个人的未来，我似乎宁可等自己有成就了再去娶她回家，或者没有成就的时候，让另一个有能力给予她幸福生活的人去陪她一辈子。是的，所有这些话我从来不想说，虽然我曾经说过几次，也曾经做过几次，可是这些最内心的话，总不是你想听到的，所以，我只能一直都放在心里，其实对某个人说这样的话，并不代表我不爱她，或许是因为我爱的方式确实不一样吧。现在每天上班，都会路过北京的第十二中（如果没有看错的话，是这个中学），经常会有初中学生站坐在我的旁边，总是听到十几岁的小女生小男生在说“某某某与某某某有奸情”，我只是无意的笑笑，想想当年自己也是从那样的时代里走过，或许，相对于一个不大不发达甚至都还不能属于发展中的小县城来说，我似乎太过于另类，所谓的一见的钟情，所谓的早熟，我在小学六年级刚毕业就已经开始了。虽然和九Ｏ后没法比，但是比绝大多数甚至所有八Ｏ后都早吧。虽然太过于早熟，但是似乎我从来没有任何的女人所想要的浪漫，或者说贴心吧，我似乎是一个个人主义者，当有自己的事情的时候，任何人都不没有办法让我离开，我又似乎是那种真心爱一个人，但是却不想苦于两个人的复杂生活的那种人，因为我内心一直想过的是一种没有任何争吵没有任何矛盾的简简单单的生活，而这种生活，又似乎永远都不可能有。反正不管怎么说，我现在是一个不想再让情感左右人生的人，因为在我用尽所有心力之后，发现自己所给予的并不是别人想要的的时候，我就已经没有任何再可以给予的了，因为我已经把所有心都用完了，或许这样说，会伤人心吧，只是我现在确确实实就已经成为这样的一个人了。那我现在到底是怎么样的一个人了，可以这么说吧，老板少给我发了一分钱工资，我可以立马提着包走人；自己不想做的某件事情，哪怕这件事情对自己很有利，我是死也不会做的；我不想说的，我是永远不会说的；我想说的，你是堵也堵不住的……那我今天想说这些了，那我应该怎么办，或许我真的就说了吧，但是自己再返回去看看，似乎把自己最想告诉你告诉大家的，一句也没有说。我一直都没有勇气去把自己最内心的那些话说出来，哪怕是再要好的朋友，我都不曾提起过一句，今天也是一样……因为我怕伤害人，可是最后却发现，人还是伤着了，那我到底应该选择去走哪一条路？我现在已经被工作和收入，说白了就是被钱缠着了，所以，一切的一切都想以能不能拿到更多的钱为目的，或许你总是认为不管我能有怎么样的收入，最后都是一无所有吧，那我到底应该怎么样？我总不能因为这样，而不是努力了吧？我选择留在北京不是因为我想留在北京，只是我感觉我似乎只能在北京，除了北京，我还能去哪里呢？我已经被生下来了，现在除了努力的活下去，我还有别的选择吗？
唉，考试系统，居然要完全模仿现实中的考试
最近这几天在做的东西就是电子系统中的考试系统，按照上头的说法，能完美模仿现实生活中的考试，我晕，把考试搬上互联网，无非就是为了获得更回方便的考试体验，比如没有了考场上人数的限制，没有了时间地点的限制，也可以更好的解决抄的问题，可是上头说了，考场要设置人数，时间，每一次考试，必须要让参考的人员在统一的时间段里登陆考场，然后开始考试，如果过了时间就不让再考……不说了，下面这个是刚才正在写的函数，用来自动组卷的，就是自动从题库里面随机选取一定数量的题目，生成一份试卷，没写完，可能今天是没有心思去写完它了，一会儿去Ocean那里。创建下面这个是把现实生活中的纸制试卷照搬到互联网上来的，可能不太像吧，因为还是改动了一些地方：
到现在，差不多在新公司里面工作已经有二十二天左右了，说到感觉吧，真的很一般，而且，现在所做的唯一的工作就是把公司的一个电子学习系统开发完，安排的是两个人开发，一个人做界页设置，但基本上到现在为止一直都是只有我一个人在写，不知道另外的那一个管着我和我做设计的朋友的人是不是专门就负责管或者他需要处理更加“重要”的事情，反正，到现在为止，所有代码都是我一个人写的。不知道是天生的反动还是怎么滴，对现在管我的这个人很不爽，其实说实话吧，这个系统也不是很大，如果全丢给我一个人，不出一个月也能完工，最开始我也是计划着快点儿做完，然后再做其它的事情，但是后来吧，从老板的态度和这么多天对公司的了解上来看，其实我完全没有必要那么认真。首先，现在老板要的不是一个可以给他工作的人，而是一个系统，所以，老板重视的并不是员工，而是把系统做完了再说，老板给的时间是三个月，那我也就没有必要一个月就整完了；再者，我也不可能按着现在那个所谓的“北大青鸟”的牛人的安排来做事情还能有原来那样的速度。说拿现在做的事情来说吧，最开始让我把用户管理给做了，我做了，接着让我做登陆，我做了，之后很不爽，做什么都需要登陆，之后再让我做题库管理，我做了，这几天把自动组卷给做完了，这样一块一块儿的做，让人很想不明白，其实好多东西提前或者把整个系统大体的都一起和我说明白，很多时候可以省下很多事情的。后台必须使用框架，我当时问为什么，他给的理由是框架好控制，我说我不会框架，要写你自己来写吧，我没那个时间，最后的结果就是他和他的上级打我和我朋友的小报告，还是躲在厕所里面去打的电话，最后还被我们给知道了；唉，又是一正宗的北京人……