我厂的BAE确实是个不错的东西,虽然开始收费,但是在免费的条件下,依然够用了。
很多coder会在BAE上搭建wordpress,但是有很多人却不知道MySQL的一些环境变量,
比如:
1、所创建的数据库主机地址是啥?
2、数据库对外开放的端口又是多少?
3、用户名是什么?
4、密码是什么?
好些coder应该到这一步都打住了吧?
莫着急,下面这段代码,帮你解决问题:
前一段时间为本站注册了微信公众平台,同时将消息处理机制接入本站。
方法:
1、在微信公众平台后台绑定接口,如http://www.baidufe.com/data/weixin
这里需要注意的是,人家网站上写的网站接入,可千万别只填写一个自己的域名,这样是不可能成功的,必须得有一个实实在在的接口才行。
2、在baidufe提供这个data/weixin接口,接受微信公众平台的验证
主要就是获取到微信发送过来的参数,然后加密一下再返回给它验证,匹配上就表示验证通过。
3、验证通过后,再修改data/weixin接口,用于消息处理
今天突然对新浪微博的短网址很感兴趣,长长的一段url,发布以后被替换为了类似 http://t.cn/xxx 的毛玩意儿!
当然了,人家新浪微博一个小小的发布框,本来就有发布字数的限制,如果空间都被一个url给占了,着实吭爹啊!所以,人家把长网址替换为短网址,是明智之举。
类似的还有人人(http://rrurl.cn/xxx),腾讯微薄等等。。。
我感兴趣的不是它做了一个replace操作,而是短网址点击后,还原到长网址的实现!其实仔细想了下,老简单了,最基本的实现原理:
1、利用长网址,生成一个唯一串:xxxxxx
2、新的短网址为:“我的域名” + "唯一串",如:http://baidufe.com/u/xxxxxx
3、当访问 http://baidufe.com/u/xxxxxx 的时候,实际进入 /u 这个Action
4、在 /u 的Action内部获取xxxxxx,然后反解出长网址(可以利用数据库)
5、302跳转到长网址
就这么地,我也搞了一个,勉强能用:http://www.baidufe.com/createshorturl
如上图,长网址为:http://hi.baidu.com/zxlien/item/8fddf55bb1280629e6c4a5a7
bluehost主机在美国,默认时间为:美国墨西哥城时间。
这对中国用户来说,确实不太妥,看着网页上的时间,还得心里默默计算下时差。。。白天写的文章,显示是在晚上。。。
如果要在网页上输出为 北京时间 ,可以用php的方法,在时间输出时,把时差考虑进去。
不过整个站点输出时间的地方还蛮多的,这应该有些麻烦了。
再有一个方法,就是修改php.ini文件(bluehost上可直接修改网站根目录@www下的php.ini)。找到:
[Date] ; Defines the default timezone used by the date functions date.timezone = "America/Denver" ;additional options at http://php.net/timezones
修改第三行为:
[Date] ; Defines the default timezone used by the date functions date.timezone = "PRC" ;additional options at http://php.net/timezones
这里的 PRC 就指的 中华人民共和国 (The People's Republic of China)。
中国标准时间,就是北京时间了!
空间买下来已近很久了,一直没有时间来倒腾,这两天抽空来倒腾这个个人博客,从前端到后端,统统设计再实现一遍-_-!工作量确实还是不小的!
前端那点儿东西,实现起来倒是没有什么障碍,就是日常工作中用到的Smarty3+HTML+Javascript+CSS。
始终不是纯搞后端的,这个得承认,写了一篇文章,入库之前,需要先生成摘要,于是,这个摘要该怎么生成?算法怎么写?
一开始图省事儿,就网上随便找了一段PHP版本的摘要自动生成代码,贴过来以后发现各种BUG,生成出来的摘要简直没法用。
没放弃,继续又找了好几个,效果都非常差,实在忍不住了!!!
分析一下,摘要的生成,重点就是:
1、不能简单的进行strip_tags处理,这样的摘要显示出来无格式,阅读体验很差
2、不能简单的进行substring处理,这样会造成一些标签不能正确闭合,影响页面布局
综合这两点来考虑,其实就没那么复杂了,只需要对富文本源码进行一次HTML词法分析,然后对分析结果进行逐一处理,最后根据具体的长度限制,将结果拼接起来,将未闭合的标签都闭合掉,就可以了。
东西,还是用自家的习惯。咱银总搞的FCP功能很强大,Fl就能够实现这个词法分析的功能,要生成摘要,只需要稍加处理。
改造后的Fl,生成摘要的核心算法,代码如下:
/** * 生成摘要 * @param string $content='' 富文本内容源码 * @param integer $length=3000 摘要字数限制 * @return [type] */ public function generateDigest($content='',$length=3000) { // 实例化Fl $flInstance = self::getInstance(); // HTML词法分析 $analyticResult = $flInstance->analytic_html($content); $result = ''; $htmlTagStack = array(); // 遍历词法分析的结果 foreach ($analyticResult as $key => $item) { // 分析单个标签 $tagAttr = $flInstance->analytic_html($item[0],2); // 开始标签,如:<p>、<div id="xx"> if($item[1] == FL::HTML_TAG_START) { // 将不能自动闭合的标签压栈 if(!$flInstance->analytic_html($tagAttr[1],4)) { $htmlTagStack[] = $tagAttr[1]; } } // 结束标签 elseif($item[1] == FL::HTML_TAG_END) { // 当前结束标签和栈顶的标签相同,则出栈该标签 if($tagAttr[1] == $htmlTagStack[count($htmlTagStack) - 1]) { array_pop($htmlTagStack); } } // 拼接摘要 $result .= $item[0]; // 字数控制 if(strlen($result) >= $length) { break; } } // 将没有闭合的标签,都闭合起来 for ($i=count($htmlTagStack) - 1; $i >= 0 ; $i--) { $result .= ('</' . $htmlTagStack[$i] . '>'); } // 生成最终摘要 return $result; }
搭建这个个人博客的过程中,遇到一个非常悲催的情况:
富文本入库之前,必定会做一次mysql_real_escape_string处理,本地调试一切正常,但部署到bluehost后,发现,存库的内容,全部都默认进行了addslashes处理!导致原文展现出来后,全是反斜杠,插图也没法显示!
最后diff了一下开发机和bluehost上的php.ini配置,发现这个地方不一样:
; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On
在/etc/php.ini文件的第474行,发现php的魔术棒功能是默认开启的,这个会直接导致如上遇到的问题:默认将各种http request data进行addslashes处理!
问题找到了,接下来就是如何去解决?
更悲催的是,已bluehost分配的账户,要想直接编辑/etc/php.ini文件,是不允许的。
纠结了一番,继续研究。。。
最后发现,可以将该php.ini文件直接cp到public_html目录,然后chmod,再更改这个配置:
; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off
再登录到空间,发表一篇文章,终于好了!