WordPress For SAE 修改表前缀后无法登陆后台的解决方案

此博客托管在新浪SAE,另外还有自己维护的几个站也一样都在SAE,因为访问量都不大,所以新浪SAE的按量收费是比较合理的,但新浪最新的价格政策调整为对应用每天收取租金的方式,其中最大租金支出是MYSQL的每日租金。

共享MySQL租金2云豆/小时,一天就是48云豆,换算人民币是0.48元每天。新浪云普通用户可以免费建立5个应用,跑满5个应用每天需要2.4元,每年是864元,这只是租金,还没算访问量占用的其他资源,这个价格完全可以租一台阿里云的基础版独立云服务器啦,而且一台服务器可以架设的站点远大于新浪SAE的普通用户所能建立的5个应用!

不过还好SAE支持跨站点授权,就是可以几个应用共享一个应用的MYSQL资源,这样就很好的节省了很多MYSQL租金。

***********************正文分割线*************************

因为共享MySQL只能有一个数据库,所以几个应用共享一个库就得使用不同的表前缀了。

那么问题就来啦,一顿折腾更改好表前缀后,后台无法登陆啦,提示“您没有足够的权限访问该页面”;

Google后参照我爱水煮鱼的文章修改了其中两个表里的内容后依然错误依旧,继续参考很多文章,都是同样的步骤,并没有操作错误;

折腾一下午,想起来前段时间为了提高页面性能开启了Wordpress的Memcache功能,随后去SAE控制台(授权和被授权应用都清一下)把Memcache给清空了一下,果然好了;原因就是修改了数据表后,和Memcache没有同步的结果。

SAE开启跨站点授权后,多个应用公用一个MYSQL的方法其实也很简单,如果你也是Wordpress For SAE 的用户可以参考以下:

1、主应用,应用设置 -> 跨应用授权 ,先授权给目标应用
2、主应用,在主应用下新建一个php文件,目的是获取主应用MYSQL数据库的访问密码,文件代码如下:


<?php
header("Content-type:text/html;charset=utf-8");

echo "用户名 :".SAE_MYSQL_USER.'<br>';
echo "密码 :".SAE_MYSQL_PASS.'<br>';
echo "主库域名:".SAE_MYSQL_HOST_M.'<br>';
echo "从库域名:".SAE_MYSQL_HOST_S.'<br>';
echo "端口 :".SAE_MYSQL_PORT.'<br>';
echo "数据库名:".SAE_MYSQL_DB;

?>

访问这个页面,就会显示你想获取的数据库信息了。

3、目标应用,修改Wordpress 的 wp_config.php 里的数据库信息为刚才获取到的信息

至此,大功告成!

中文Web Font 字库

webfont

 

有字库是中文web font(网络字体)服务平台。目前收录1000多重中文字体,1万多种英文字体。

支持两种字体引入方式:

  1. 生成特定文字的CSS,好处是CSS文件体积小加载快,坏处是如果更改文字,维护反锁。
  2. 使用JS加载整个字库,适合多文字的文章页面。

需要注册登陆后才可以使用,选择一款字库后会有详细的说明告诉你怎么引入JS或CSS。

 

字蛛

字蛛通过分析本地 CSS 与 HTML 文件获取 WebFont 中没有使用的字符,并将这些字符数据从字体中删除以实现压缩,同时生成跨浏览器使用的格式。

这种方式运行在NodeJS环境下,是本地打包的方式,字体文件也是托管在自家服务器,虽然有使用门槛,但是确保了速度和稳定性。

手机网页开发:远程控制台调试Javascript

工作中涉及微信和手机端页面开发比较多,手机上调试JS时没法进行控制台输出是一大憾事,还好遇到了jsconsole可以让开发者进行远程调试。加载jsconsole的调试代码后,所有的console.log()输出,都会传回到桌面浏览器中打开的远程控制台界面,你也可以在远程控制台查询页面里存在的DOM元素和JS变量,几乎具备一个完整的浏览器控制台的功能。

使用方法:

打开jsconsole的网页,会看到一个控制台的界面,显示了简单的帮助信息

jsconsole.com

要开始远程调试,首先要获取一个唯一的ID,然后把这段带有唯一标识的远程JS文件加载到你的页面中。

要获取唯一ID,只要在命令行输入:listen命令即可,控制台会返回给你一串HTML标签:

<script src="http://jsconsole.com/remote.js?17D2BF69-38A1-468A-BB96-72BC4A9F3CA0"></script>

把这段代码插入到你的页面<head>部分,然后访问你的页面就可以在远程控制台看到浏览的基础信息了。

使用Modernizr检测浏览器的HTML5和CSS3支持功能

什么是Modernizr

Modernizr 是一个用来检测浏览器功能支持情况的 JavaScript 库。 目前,通过检验浏览器对一系列测试的处理情况,Modernizr 可以检测18项 CSS3 功能以及40多项关于HTML5 的功能。 它比传统检测浏览器名称(navigator.userAgent属性)的方式更为可靠。 一整套测试的执行时间仅需几微秒。 此外,Modernizr 网站通过定制脚本只对你感兴趣的元素进行检测,从而实现效率优化。

怎么使用Modernizr?

网页中加载Modernizr后,会自动在<html>标签中插入 <html class=”no-boxshadow”>类似的CSS类名,你只要在CSS文件中事先写好 .no-boxshadow img{**} 时应该显示的样式就可以了。

Modernizr也会生成一个Modernizr对象,你可以通过检测Modernizr.geolocation是否为ture来判断浏览器支持地理位置与否。

更详细的介绍请参考:http://www.adobe.com/cn/devnet/dreamweaver/articles/using-modernizr.html

 

iOS系统利用微信判断是否已经安装自家应用

做社交应用的,尤其是图片类应用都会提供把照片分享到新浪微博、微信朋友圈等社区的功能,为了让分享出去的信息不那么单一,通常的做法是分享一个网页地址,网页里会提供一些照片的附属资料,例如地理位置,拍摄时间,海拔等,当然最重要的还要加入应用的下载地址,以达到传播的目的,拍秀既是如此。

本文要表达的主题既是利用微信,利用分享到微信里的网页,实现和自家应用的用户或潜在用户进行更深层次的交互!

为了营销,通常会把自家应用的下载连接放到网页里,因为一个网页在IOS的生态里(其他平台应该也是如此)是没办法获取另一个应用的信息的,所以只能假定浏览者是没有安装自家应用的,如果能知道是否已经安装自家应用,那能做的事情就很多了,例如分享的是一个团购的信息,浏览者就可以通过一个按钮直接调起自家团购应用进行下单,再例如分享的是一个拍秀的个人信息名片,浏览者就可以点击调起拍秀直接加为好友。

回归正题,首先要感谢微信的设计者提供了这个平台级的小功能!(能如此成功的产品不是偶然)要实现上面提到的深层交互,利用微信是必要因素,还有两个技术点:
1、[isappinstalled=1]参数,这个参数,只有在微信里浏览一个网页时会被自动加在地址栏里,一般你的应用都需要通过微信的认证才能通过SDK分享内容,所以微信通过应用级的系统信息访问权限能够获知你的应用是否已经安装在用户的系统内。前端人员通过服务端技术或者客户端技术判断此参数如果是1,就代表浏览者已经安装了你的应用;在Google分析或者Cnzz等网页统计系统里你应该能看到这个参数的身影。

2、iPhone提供的:UIApplication类的openURL方法,这是完成应用间通信的关键,调起自家应用的时候可以传递商品ID,用户ID等。
我搜索的中文参考:http://www.cnblogs.com/zhw511006/archive/2011/11/28/2266587.html,iOS开发不在讨论范畴请自行Google之。

转:解读-无为而成

有个流浪汉,羡慕菩萨坐在莲花台上众人膜拜。

流浪汉:我可以和你换一下吗?

菩萨:只要你不开口说话就可以。

流浪汉坐上了莲花台。他眼前整天嘈杂纷乱,要求者众多。他始终忍着没开口。一日,来了个富翁。富翁:求菩萨赐给我美德。磕头,起身,他的钱包掉在了地下。

流浪汉刚想开口提醒,他想起菩萨的话。富翁走后,来的是个穷人。
穷人:求菩萨赐给我金钱,家里人病重。磕 头,起身,他看到一个钱包在地上。
穷人:菩萨真显灵了。他拿起钱包就走。

流浪汉想开口说不是显灵,那是人家丢的东西;可他想起菩萨的话。 这时,进来一个渔民。渔民:求菩萨赐我安全,出海没有风浪。磕头,起身,刚要走,却被又进来的富翁揪住。为了钱包,两人扭打起来。富翁认定是渔民拣走钱包,而渔民受了冤枉无法容忍。

流浪汉再也看不下去了,大喊一声:“住手!”把真相告诉了他们。一场纠纷平息了。

菩萨:你还是去做流浪汉吧。你开口以为公道,但是,穷人因此没有得到那笔救命钱,富人没修来好德行 ,渔夫出海赶上了风浪葬身海底。要是你不开口,穷人家的命有救了;富人损失了一点钱但帮了别人积了德;渔夫因为纠缠无法上船,躲过了风雨,至今还活着。

流浪汉默默离开了寺庙…… 他经历的事还是太少…… 他必须再走下去……许多事,该怎样,就怎样。等待它顺其自然的发生,结果会更好。可面对现实,有谁又知道,事物本身该有的结果是什么样子呢?