Friday, January 28, 2011

Jinge的vpn让我在家里也能上BYR BT

寒假回到家里,发现这次买的vpn很给力,没有ipv6地址(当然也没有用什么六飞),连上vpn后发现居然可以上BT了,这个很是奇怪,后来才意识到,他的vpn是v6和v4双栈的,正好用v4的线路路由到服务器,然后通过v6的线路回来到byrBT,这样就得以在家里上bt下资源啦,不过不知道速度能有多少,先试试看吧,反正应该是比六飞的好些吧。。。。。。。

注:铁通的线路果然比电信和网通的的质量差啊。

Tuesday, January 25, 2011

Drupal的使用phpmailer进行邮件发送

                                    Drupal的使用phpmailer进行邮件发送
        正常来说,自己在电脑上搭起来的服务器,需要发送邮件的功能一定是必不可少,但是往往会让初学者很迷茫,哪里来的SMTP服务器?还要自己再搭建一个吗?显然不必要。
        国内外的大多数邮箱都有免费的SMTP和pop功能,也就是说我们可以直接用他们的服务器,比如sina、yahoo、gmail、139等等。。。。。
        一开始我也是十分迷茫。前段时间后是经过老师指点,才实现了这个功能,现在想想还是要仔细一点的写出来供大家以后的操作。
        以现在正在搭建的drupal为例(当然以后不同的集成环境都是没有问题的,方法类似),安装drupal的时候,往往是不能发邮件的,所以我们使用第三方模块phpmailer来发送,在drupal.org上面有下载,下载解压后,发在sites/all/module里面,然后在站点主页里的“管理/模块”中启用。
然后需要一个测试用的邮箱,最好是新注册的,不涉及到重要内容和数据的,这里假设ck@sina.cn。接下来在站点设置里,对phpmailer进行设置,
SMTP服务器设置为:smtp.sina.cn
用户名为:ck@sina.cn  
密码:****
这样phpmailer的部分设置好了。
然后还差一步,我曾经就卡在这里了好久!!注意:需要在“站点设置/站点信息”中,更改最初设定的网站邮箱,一定要和刚刚选择的邮件服务器是一个用户名,设置为ck@sina.cn。否则如果忽略这个,那永远都发送失败!

现在就可以新注册一个用户或者是发一封测试邮件试试看啦~~
        如果大家都兴趣的话,可以多研究一下phpmailer这个PHP第三方类库,PHP语言自身的mail函数不大好用,由于涉及到验证啊,密码,用户名什么的,所以在真正的写 php代码的时候很不方便。当然了,上述我说的这个模块是都封装好的,只需要一开始设置一下就没有问题了。我试过直接用phpmailer库进行发邮件,代码很简单,而且功能强大,可以加入什么附件啊,图片啊什么的,但是自己写的时候要每次都需要把服务器的选择和相关信息都要写一遍了~欢迎大家提出问题啊,有兴趣的话可以和我讨论,共同进步哈。
 


drupal的系统结构总结

Drupal的系统架构总结

        在一开始接到这个课题的时候很迷茫,因为drupal。。。。从来没有听说过(现在看来是见识短啊。。。。。),以前曾经做过Discuz,Wordpress的一些定制,觉得他们都是很强大了,一个专门用于做论坛,一个则是博客中的精品。对于用户来说应该是两把利剑。怎么又蹦出来个Drupal?它是用来干什么的?下面我总结了一下。

什么是Drupal?

        Drupal是用来构建网站的(我都觉得说的是废话)。(注意!)它是一个高度模块化,开源的web内容管理框架,并且非常注重合作,互动的重要性。主要有可扩展性强,符合标准,追求简洁代码,内核精练。Drupal自带了一些基本的核心功能,其它的额外功能可通过安装核心可选模块或者第3方模块来实现。我们可以基于Drupal进行定制,但是定制是通过覆写核心模块或者增加模块来完成的,而不是修改核心组件中的代码。(这一点非常的重要,通过外部的模块和核心模块分离开来,使得自己开发模块不会影响到主体,同时实现各种的功能,不需要把所有的逻辑都斟酌N遍,只需要写好模块,开启,就ok~~是一种非常优秀的机制)它还将内容管理和内容表示这二者进行了成功的分离。


        Drupal可被用来构建一个互联网门户;个人的,部门的,或者公司的网站;一个电子商务站点;一个资源分类站点;一个在线报纸;一个图库;一个内部网,Drupal的应用非常广泛,这里仅仅提到了其中的一部分。如果想做论坛,它可以;如果想做博客,它依然可以。它甚至可用于远程教育。

        有一个专门的安全小组,他们通过对回应危害和发布安全更新来保证Drupal的安全。另外还有一个非营利性的组织,Drupal协会,它通过改进drupal.org网站的基础设施,组织Drupal聚会和各种活动,来推动Drupal的发展。Drupal的社区也非常活跃,里面包括各种用户,站点管理员,设计者,和web开发者,并不断地改进着Drupal系统;可参看http://drupal.org和http://groups.drupal.org。

        附一些drupal的中文学习网站:http://zhupou.cn/     http://drupalchina.org

http://www.drupalchina.com/

http://drupalsh.cn/


       以上是一些我对Drupal的一些基本概念, 其实我们在构建一个系统的时候, 一般都需要从两个方面来考虑问题:

业务模型(暂时不大明白)
        也就是领域模型, 是面向我们所要解决的问题域所构建的模型, 前面我们说的关于内容描述方面的几个概念, 其实就是对领域内概念,元素进行概括,抽象得出的业务模型基类. 构建良好的业务模型, 能有效地将问题域中的对象进行分类,综合, 理清他们间的关联, 阐明他们相互间的协作, 并为最终形成系统的对象数据模型打下基础. 我们所说的面向对象(OO), 其实主要就是一个建模的思想.


系统架构(重点在此)
        它是从系统的实现角度出发的, 涉及的概念更多, 它主要是用来解决系统如何构建, 以实现业务的需求, 它还涉及系统的健壮性, 性能, 可扩展性, 可操作性, 可获得性等一些其他质量属性. 比如经典的MVC架构, WEB的二层, 三层, 四层架构, 这些都是架构实现的一种形式.


        Drupal的架构. 其实我目前还是粗略看了Drupal代码(虽然很多看不懂),不过自己总结加上网上的资料,就有了如下的心得了。
什么是Drupal的架构?
        简单的说, Drupal是一个基于B/S架构(就是浏览器/服务器)的内容管理系统(CMS), 它用PHP语言实现, 并以关系数据库为存储机制. 与其说它是一个CMS, 不如说它是一个CMS框架更好. 单纯做博客(Blog), 它不如WordPress简单快速; 直接当CMS, 它不如Joomla美观方便, 甚至不如某些国产, 但其实经过扩展, Drupal能够做得与它们一样好, 甚至更好, 这就取决于Drupal架构设计。PHP本身是支持面向对象(OO)的, 但Drupal却为了兼容老版本并没有使用, 而是通过一系列的约定俗成的编码约定(Convention)来达到类似的效果. 


        有一种非常经典的架构模型就是MVC, Drupal就是这样的一种三层结构: 表现层(View), 控制层(Controller)和模块层(Module).

        模块层主要是处理数据的持久化, 它工作在后台,是表现层在具体数据库中的实现; 

        控制层则基于领域模型进行数据的业务逻辑处理, 即哪一个前台模型对应着哪一个后台数据的处理模块,它是整个结构的核心; 

        表现层则侧重于领域数据的呈现和工作流在用户端的控制表现, 它主要基于以用户为中心来设计(UCD).


        逻辑层, 包括两部分:Drupal的核心库和模块组(Modules).

        核心库主要包含Druapl的请求流程(Bootstrap)和一系列常用的公共支撑库, 比如数据库抽象接口, 多语言支持, 邮件处理, 图像优化等. 当然还有最关键的钩子(hook)框架, 钩子是贯穿Drupal核心的一个重要特性, 它使得Drupal能高效灵活地协调模块们的工作. 这里把它叫做核心库确实不妥当, 以为它不仅仅是一个库, 更是一个公共框架.
        模块就是Drupal的功能组件, 它处理具体的业务逻辑, 模块如何划分, 取决于你的业务划分, 你的工作流, 你的设计思想.Drupal安装包里包涵了10多个模块, 但它最核心的只有5个模块: Block, Filter, Node, System, User. 如果说核心库是刘备的话, 那这五个就是他的五虎上将了. 看看他们的功能吧, System使得系统具备了系统管理的能力, User使得系统具备了安全管理的能力, Node+Block+Filter使得系统具备了基本内容管理的能力.

        其实说实话,Drupal就是一个系统的完整原型, 想要什么就实现个什么模块, 什么自己要是做不了, 就去 社区里有的是人在做, 拿来主义就行嘛。


        表现层, 这个说实在话,也许算不上是非常的漂亮或者绚丽,毕竟Drupal的开发之初也不是为了漂亮。
        当然,我绝不是说它不能变得很美观,对一个CMS系统来说, 可定制的外观是必须提供的能力的. 因此, Drupal提供了相当强大的内容表现扩展机制--主题(Theme)系统, 它包含主题引擎和主题两个子层,下载的主题就放在./site/all/theme里面就可以了。
       
        
模块层, 支持关系型数据库, 模块一般通过核心的数据库API访问, 你想直接访问数据库也支持, 但最好还是通过API, 这样便于迁移和扩展.

        前面我提到了, Drupal的逻辑层由一个核心框架和一系列的功能模块(Module,可以看成插件)构成, 框架与模块间的协调就是通过钩子机制来实现(我正在研究这个是怎么样的一种机制), 所以钩子机制是Drupal模块化系统的关键。什么是钩子机制, 它与面向对象的接口(Interface)类似, 就是为规范定义了两个实体间的功能界面, 使得实现了该界面的实体能进行交互. 在Drupal里, 钩子就是Drupal框架与模块间进行交互的接口, 但由于Drupal没有面向对象的机制, 所以它采用编程规约来讨巧地实现. 
        在Drupal里, 钩子就是一系列需要实现特定功能的函数, 它们约定好了输入参数和返回类型, 同时约定以xxx_yyy() 的形式来命名, 其中xxx是要实现功能的模块名称,而yyy则是具体的钩子名称 . 举个例子, 你就更清楚了. 例如我有个模块叫myexamplemodule, 现在我想在footer中添加一些Javascript代码, 于是我在我的模块代码中实现一个叫myexamplemodule_footer()的函数, 在此函数中我实现了我想要功能; 于是用户请求页面时, Drupal的框架会检测到我的模块有myexamplemodule_footer()函数, 并且它会自动调用它, 是不是很简单明了呢! Drupal核心框架的这种调度机制, 屏蔽了用户自定义模块与框架间的实际交互, 简化了的开发, 因为你只要实现一个函数即可, 别的事情系统已经替你完成了. 更多的hook请查看Drupal的文档库.


以上是我的个人总结,对于Drupal的架构现在是了解比较多了,不过这些事基于整个Drupal系统的架构,还有一些比如菜单,模块,主题的一些应用架构我也正在关注总结中,上述的部分资料来源于网上,有些地方不大易懂,请大家积极指出,不对的地方我及时更正。毕竟现在还是菜鸟级别的。。。。呵呵~~












Sunday, January 23, 2011

新媒体实验室任务:

新媒体实验室任务:
        主要以drupal搭建的站点为基础,来增加模块、功能。
        1、关于两个站点共享一个用户名,数据库共享
        2、各种小模块的添加。实现不同的功能,进行拓展。
        3、智慧北邮的主页面的美化和不同主题的尝试。
        4、API数据提供的站点的一些开发(尝试)

Friday, January 21, 2011