WordPress仪表盘Dashboard上首页小工具widget不能保存布局问题

现在的WP版本是3.5.1,一直没太注意过这个问题,以前应该是可以保存后台仪表盘首页上的widget布局的,刚刚发现无论怎么拖动重排小工具后,刷新页面或者切换到其它管理菜单后再回来都会重置回之前的布局,很是奇怪。

看到网上有人说可能是插件导致的问题,于是各种插件关了开开了关,卸了装装了卸的,折腾了半天也没有解决问题。于是自己打开phpmyadmin上mysql数据库里寻找一下线索。

由于以前也没太研究过wordpress的结构,一开始就以为这个设置是保存在 wp_options 表里的,于是就和那表里唯一一个带dashboard字眼的记录 dashboard_widget_options 死磕了半天,浪费了不少时间!后来才意识到这个不是记录布局的设置,因为看到网上说这个布局是 per user 的,因此不应该记录在这个表里,这个记录保存的应该是每一个widget自己的某些设置。

后来顺利的找到了 wp_usermeta 中,发现有几个带 dashboard 字的设置,试了几下显示/隐藏,展开/收起一些widget,均找到了对应的数据库记录变化,而且这些设置,包括改1 2 3 4列的设置均能正常保存,唯独改变布局不能保存。而且最奇怪的是,保存布局的记录关键字是 meta-box-order_dashboard ,而在后台拖放widget后ajax也成功触发了数据库记录更新,记录都是跟着正常变的,看了下大概内容也确实和重排后的位置一致,可就是刷新页面后位置一直不变。

拿着数据库关键字google了一下,找到了一个貌似是wordpress svn的trac镜像中的一条bug记录:http://lists.automattic.com/pipermail/wp-trac/2010-May/080160.html 这里有人回复说需要删除旧的metaboxorder设置,于是又回来自己过了一遍数据库表中的所有记录,果然发现了一条叫 wp_meta-box-order_dashboard 的记录保存着和上面关键字内容类似的信息,但无论怎么重新摆放小工具,这个记录的值始终不变!于是果断将其从表中删除,再回来试了一下,一切ok!估计是以前某个版本升级时的历史遗留问题吧,耽误了不少时间…

更换主机空间后的wordpress媒体上传带中文文件名图片的问题

给博客搬家后发现wordpress后台多媒体中上传图片时不能用带中文的文件名,否则穿完后会出现红叉,访问生成的URL会出404!
记得之前在Dreamhost上是没有任何问题的,研究了一番后问题是这样出现的:WP的php脚本使用的字符编码是UTF-8,所以上传后生成的文件名字符串也是UTF-8编码的,而主机系统的设置应该是ANSI的(GB2312或GBK之类的),所以导致请求文件名编码与实际文件编码不一致,导致404错误。而之前搬家时搬过来的以前上传的文件没有问题,就是在主机控制面板上的webftp里看到的都是作为ANSI解析的UTF-8字节乱码,而后来上传的图片文件虽然用浏览器访问会404,但在webftp里看着却一切正常,这该死的字符编码问题!
后来搜到了这篇博文:Wordpress中文名附件上传问题的解决方案 http://blog.csdn.net/wonderyl/article/details/5682095

Continue reading…

Eclipse ADT的Custom debug keystore所需证书规格

最近开始研究Google Play的In-app Billing IAB内置计费API,发现一个比较烦人的问题就是测试时应用必须经过正式签名,而默认Eclipse ADT调试运行使用的是临时生成的Debug专用证书,默认为C:\Users\XXX\.android\debug.keystore。

于是每次调试内置计费必须使用ADT的Export Signed Application Package打带正式签名的包,比较麻烦。后来发现ADT允许自定义调试用证书,在Window->Preferences->Android->Build->Custom debug keystore这里,试了一下选择正式证书后提示:”Keystore was tampered with, or password was incorrect”,如下图所示:
Continue reading…

时隔3年,博客又搬家了!

终于决定搬出DreamHost了!

回想一下在DreamHost已经整整三年了,其实DreamHost的服务质量还是相当不错的,像SSH和Subversion这种高端功能都有提供,而且这三年我没发现过一次宕机的情况(最开始找到DreamHost时还看到不少说服务质量差,总宕机之类的国内外评论,现在看这些应该都是树大招风吧,呵呵)。

不过也正是由于这么强大的功能参数,导致了年付每月$9.95的高价!当然,第一年是有折扣的,好像是只有3刀多的月付,现在想想国外主机的这种销售策略确实是挺有力度的,不过由于最近的时间和精力资源越来越紧张,各种功能和带宽的利用率极度低下,而且又不想公开招人一起合租,于是只好选择放弃DreamHost了,要不每月得多花多少冤枉钱啊,呵呵。

调研了很久之后,选定了现在这家叫做“恒创主机 http://www.hcunit.com”的空间服务商的香港主机,虽然性能参数和DH的比差距很大,不过看看本人的乡下小博的月PV感觉也应该绰绰有余了…而且香港机房比DH最近的印度newdelhi机房要快得多,这点还是比较满意的。

折腾了几晚之后,家总算是基本搬完了,先不做太多评论,试用一段时间再说!

iOS6下慎用MPMoviePlayerViewController!

这个MPMoviePlayerViewController的事要从何说起呢,嗯……其实主要还是由于在播放视频时按Home键切出引发的问题:

先是测试发现游戏在播放开场视频时按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash,关于这个异常大苹果的Technical Q&A QA1766(http://developer.apple.com/library/ios/#qa/qa1766/_index.html)已经交待得很清楚了,简单来说就是应用在处于后台状态时是不允许执行任何OpenGL命令的,包括前台时提交但尚未实际执行的缓冲指令!不过文档中提到的几个关键点我也都按规矩做了处理,稍作跟踪后发现,导致这个异常的原因是在应用播放视频时切到后台之后,MPMoviePlayerPlaybackDidFinishNotification通知被莫名其妙的触发了,导致后续逻辑按照开场视频播放结束开始执行,进而去加载OpenGL贴图,初始化状态等,于是自然被OS认为是违规调用了OpenGL命令,因此被kill掉了!

Continue reading…

Mac NSOpenGLView NSOpenGLProfileVersion3_2Core glGetString取GL_EXTENSIONS时返回null

实验NSOpenGLView和NSOpenGLProfileVersion3_2Core时发现通过glGetString取GL_EXTENSIONS时一直返回null,不管是放在prepareOpenGL里还是awakeFromNib里,甚至是drawRect:里都不行。尝试调整NSOpenGLView的layer host或layer backed模式结果也都一样。后来查文档发现说3.0+的profile对glGetString传GL_EXTENSIONS已经被deprecated,属于invalid enumeration,正确的方法是用glGetStringi代替:

GLint n, i;
glGetIntegerv(GL_NUM_EXTENSIONS, &n);
for (i = 0; i < n; i++) {
printf("%s\n", glGetStringi(GL_EXTENSIONS, i);
}

另外NVidia Cg的cgGLGetLatestProfile也一直返回Unknown,怀疑和这个性质类似……

UPDATE1:换回NSOpenGLProfileVersionLegacy后,cg问题解决,看来现在的cg sdk还不支持3.0+的profile。

Unity3D使用VisualStudio作为脚本编辑器以及配合NShader插件编辑Shader的方法

Unity3D自带了Mono Develop作为脚本编辑、Shader、调试用的IDE,虽然Mono Develop的功能也算强大,但是对于习惯了VS的开发人员来说,换个新IDE就得适应一套新的…额,感觉!

其实看看Unity项目文件夹内的内容可以发现Unity实际上是生成了VS用的项目文件的,sln、csproj之类的,也就是说是可以比较容易地换用VS作为项目脚本编辑IDE的,简单设置一下就可以了,Edit->Preferences…中修改External Script Editor选项,选中VS的devenv,便会被自动识别出来,如下图所示:

qq20121129103340

这样,点击脚本等的时候Unity就会弹出VS并自动打开关联的项目和要编辑的文件给你了。后来在使用时发现一个小问题,就是我的VS是带VA(大番茄VS程序员的最爱!)的,但如果用Unity启动的话VA会被自动禁用… Continue reading…

体验了一下Visual Studio 2012和Windows Phone 8 SDK 记录一下模拟器的联网问题

qq20121104141755

VS2012直接在MS的网站上就可以下载ISO,WP8 SDK直接搜索比较容易找到的是在线安装的版本,下载速度比较慢的话可以直接这里下载ISO直装版:

中文 http://go.microsoft.com/fwlink/?LinkID=257234&clcid=0x804 英文 http://go.microsoft.com/fwlink/?LinkID=257234&clcid=0x409

整个开发环境搭建比较轻松,需要说明的一点就是虽然安装VS2012并不需要Win8,但是WP8 SDK要求系统必须为Win8而且是要64位和一个忘了叫什么名字的CPU技术,因为WP8的emulator是基于Win8的Hyper-V虚拟机的。

还有一点要注意的就是VS和WP8 SDK的语言对应问题, Continue reading…

我遇到的An error occurred uploading to the itunes store问题

最近一次更新App版本到itunes时遇到了An error occurred uploading to the itunes store,用的是XCode自带的Organizer做的归档上传操作,提示这个问题后存档被归为validating失败,感觉很奇怪,于是手动validate了一次,顺利pass,没有任何问题!

然后开始怀疑是网络问题,retry了3、4次,问题依旧,看来不是偶然,于是开始google,发现遇到同样问题的人还真是不少!

问题的根源就是XCode需要的Java环境出现了问题,网上找到的解决方案是这样:

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -s CurrentJDK /System/Library/Frameworks/JavaVM.framework/Versions/1.5
sudo ln -s CurrentJDK /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0

试了一下,问题依旧!
Continue reading…