使用POWERDNS自建DNS

经历了国内DNS商的不靠谱以及对免费用户的限制后,决定搭建自己的DNS服务器。经过一番了解,最后选择了Powerdns,主要看中它的易用性,功能全,还有原生支持WEB和REST,在配置中启用WEB API后,可直接通过HTTP协议进行DNS数据管理。为此,特意用symfony框架写了一个Bundle(pdns-symfony),以便通过网页即可管理域名记录。Powerdns可运行在所有的LINUX版本上,也支持MacOS, 系统版本不同,从发行版的源中安装的默认版本也可能不一样,例如ubuntu 16安装的是4.0版本。但推荐使用 4.0以上的版本。

下面介绍安装和配置的步骤。

windows 10无法连接匿名共享问题

以前老版的WIN10系统可以正常访问ubuntu上的免登录SAMBA共享,换了新版的WIN10,发现连接时会出现类似无法连接的错误。新版WIN10出现这个错误有两个原因,一是新版默认关闭了SMB客户端1.0,另外就是禁用非安全的来宾访问。解决方法如下:

1,在控制面板的软件功能处启用smb客户端1.0
2,打开运行对话框,输入gpedit.msc,进入管理界面后,在计算机配置-〉管理模版-> LANMAN工作站下面找到非安全来宾访问的选项,然后启用

修改DSDT文件以禁用USB设备唤醒黑苹果

在华硕H97 PLUS安装了黑苹果,一切功能正常,唯一不爽的地方就是睡眠状态下,动一下鼠标或键盘就会自动唤醒。有的主板可以通过设置BIOS解决此问题,但在华硕的BIOS里面我是没能找到该选项,所以只能修改DSDT以达到此目的了。

通过log show --style syslog | fgrep 'Wake reason'得知,多数情况下唤醒设备为GLAN EH02 XHC,于是在DSDT文件找到它们下面的_PRW method,然后删除。后来发现删除这几个还不够,最后删除了_SB.PCI0下面所有的_PRW才得以成功。

原生DSDT文件编译错误

通过CLOVER bootloader提取了H97 PLUS原厂的DSDT文件,但在MACiasl编译时,提示3个错误,无法正常编译。经搜索后,找到下面的DSDT patch代码,在MACiasl端执行PATCH后,错误消失,编译正常

into_all all code_regex (\s+Zero){2,} removeall_matched;
into_all all code_regex (\s+Zero){2,} removeall_matched;
into method label ADBG replace_content begin Return(0) end;

Drupal支付宝当面付二维码模块

由于支付宝提高了收款接口的申请门槛,个人已经无法申请到即时到帐接口,即便是企业帐号也要提交预先提交备案的域名才能够正常使用其收款接口。而刚推出不久的当面付接口目前不限制帐号类型,个人和企业都可以申请,而且网站域名不需要备案。几天前了解到这一接口,立马着手给熟悉的DRUPAL写了一个模块,现基本功能已经完成,在此分享给用得着的朋友。在此简单介绍一下开通接口的流程

第一步,在手机上打开你的支付宝APP,扫描上面的二维码,按照提示补全个人信息。如要求激活可先不必理会。

第二步,打开https://openhome.alipay.com/platform/appManage.htm,登录创建应用,设置好私钥保存,记下appID

第三步,在DRUPAL启用commerce alipay f2f 模块,然后设置好相关帐号参数,其中包括APP ID,支付宝公钥以及应用私钥。

 

实践理解drupal 7 render API

drupal render array实践学习
上篇文章介绍drupal 7中的render API,这篇通过实践来更好的理解drupal render api.

创建一个模块

下面通过一个小模块学习drupal render api。
按照开发drupal模块的惯例,首先在sites/all/modules下面创建两个文件:

render_array.info
render_array.module

render_array.info的内容如下:

name = render array
description = understanding drupal's render api
package = test modules
core = 7.x

然后在render_array.module添加如下代码,挂个hook menu钩子。

drupal 7 render arrays详解

drupal 7 render arrays详解

什么是渲染(rendering)?

drupal中rendering,简单来说就是把具有特定结构的关联数组转换为HTML页面的过程。从drupal 7开始,render arrays(中文翻译渲染数组)为drupal页面渲染的最基本元素,render arrays也叫rendable arrays,意为’可渲染的数据‘。
其实render array就是一个php关联数组,但符合drupal页面渲染过程中的标准和数据结构。

大多数情况下,用来渲染页面的数据一直保存在关联数组里,直到页面的最后渲染阶段才被调用,这种机制为页面的布局和内容显示提供了极大的灵活性,也有益于系统以后的性能提升。

注意:虽然render arrays和form api中使用的数组具有某些共同的元素,属性以及结构,但许多表单属性的意义仅限于FORM API,不能等同于render API.简单来说,form API的数组必须通过drupal_get_form这个函数的处理后才能变为标准的render arrays.如果直接把未经该函数处理的form api数组传递给render API,最后的效果可能不能如你所愿。

理解drupal主题的工作机制(template文件,主题函数)

最近一直在折腾drupal,积累了一些经验,有空了将在此与大家分享一下。今天先说下drupal的主题模版工作机制。
drupal主题的核心文件是theme.inc,位于includes下面,通过研读这个文件里的代码和官方的文档,我算是大致明白了drupal生成HTML的流程。主要由主题函数(theme function),主题模版文件(template files)和drupal_render来完成。

进入任何一个主题根目录,可以在templates目录下找到常见的主题模版文件,如html.tpl.php,page.tpl.php,node.tple.php,commet.tpl.php,field.tpl.php等等。这些主题模版文件主要为HTML代码,但也夹杂一部分PHP代码,几乎都是实现简单的判断和HTML代码输出,按照drupal的规范,稍复杂一点代码都应该在其它地方完成。

Drupal 7 支付宝担保支付和双功能(带自动发货功能)

Drupal是一个非常强大的CMS,目前有上万个模块,易于扩展。 而drupal commerce是drupal 7上的网店平台,扩展性比之前的ubercart强,可惜支付方面只能支持支付宝即时支付,个人能申请到的担保支付帐号则无法使用。经过几天的折腾,终于弄出一个双功能的支付模块,这个模块支持自动发货功能,即收到支付完成后会自动确认发货,无需手动确认。模块是基于原来的即时支付模块,已在drupal官方提交patch,但不知什么时候才能审核通过,所以在些先发布一个完整的模块,给需要的朋友使用。