老彼得过了钢琴五级,加油!
Blog
-
Titanium Developer学习笔记(二)
本文收录于[go4pro.org]。 这两天主要是学习如何将我之前编写的一些jQuery的demo迁移到Titanium里去,采用的编程模式是HTML+CSS+PHP+javascript (jQuery),而不是Titanium本身的UI。
总体来说,过程不复杂,也很直观。大部分代码我只是修改了CSS文件和jQuery文件的位置就可以直接使用了。在这个过程中,有几个地方是我原来认为没有问题,却出了问题的。
首先是连接远程的MySQL。我用的主机是BlueHost,出于安全考虑,BH的主机缺省是不提供远程MySQL的连接的,需要用户加入可信任的IP地址(或地址段)后才可以。
BH提供了一个URI探测客户端的IP,同时在BH控制页面也会探测IP。我发现的第一个问题就是:这两个被探测出来的IP不仅不一样,而且是不对的!如果填入这两个IP,远程连接时还是报错!最终正确的IP是我的路由给出的IP。终于解决了这个问题。
第二个问题就是在Titanium里开始MySQL的连接。之前,我已经在PHP脚本状态编写了一些测试脚本来测试连接,并证明是可以的。但是同样的代码,在Titanium里进行编译并执行后,出现了如下的警告:
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected…. Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication…. Warning: mysql_select_db() expects parameter 2 to be resource, boolean given….
这些问题的描述其实已经很直观了。在Google中搜索后发现,这个问题的解决需要在我的服务器端对MySQL服务进行配置,当然这个配置在目前我使用的BH主机下是无法实现的。我判断是因为Titanium在编译时使用了一些不正确的参数,并在Titanium论坛里进行了提问,但是到目前还没有回答。
我只能进行另外一种——可能是更正确,因为有“云”的味道——的做法,就是将数据提供部分抽取出来成为一个独立的脚本,然后在客户端脚本中获取返回的数据。具体代码就不提供了,因为不是很困难的代码。
我之所以不用jQuery的json方法获得这些数据,是因为我的客户端PHP脚本需要明确地获得数据后再进行处理。我不能冒异步的风险。
-
老彼得的奖状
老彼得今天拿到一张奖状:
说实话,对老彼得的英语学习我一直没有花大心思去搞:中文(语文)还没有学好,就想学英语?我只是要求他多看那套BBC的经典Follow Me。
所以今天他能拿回这个奖状我还是很高兴的。
-
From Calvino to Calvino
多年以来,对书籍近乎偏执的热爱,让我不会有任何犹豫去购买我认为值得收藏、值得阅读的书籍。
而更偏执的一个习惯就是,我会竭尽所能去搜集一个我所热爱的作家的全部的书籍,比如说卡尔维诺。
今天当当送来了我最近才买的两本卡尔维诺的书,让我的卡尔维诺的收藏近于完整。按照我购入书籍的日期,它们分别是:
- 隐形的城市,1991年6月29日;
- 帕洛马尔,1995年1月6日;
- 寒冬夜行人,2001年4月29日;
- 命运交叉的城堡,2001年4月29日;
- 我们的祖先,2001年11月25日;
- 意大利童话,2006年11月18日;
- 为什么读经典,2006年11月18日;
- 通向蜘蛛巢的小径,2008年4月10日;
- 烟云·阿根廷蚂蚁,2008年4月10日;
- 新千年文学备忘录,2009年8月15日;
- 巴黎隐士,2009年8月15日;
- 疯狂的奥兰多,2010年10月25日;
- 短篇小说集(上),2010年10月25日;
- 短篇小说集(下),2010年10月25日;
这其中经过了将近20年的收藏,我很欣慰。我将这14本书一起拍了一张照,当然也有显摆的味道:
巧合的是,第一本《隐形的城市》是我收录到我的藏书管理程序中的第666本书,而《疯狂的奥兰多》恰好是第1666本书,正好相隔了1000本书。
从20年前很少有人去读卡尔维诺,到现在阅读卡尔维诺逐渐“时髦”,甚至在豆瓣上被一个帖子中的一位朋友说成“很普及的作家”,我感到内牛满面。
如果要我将我最喜欢的他的作品排一个次序,那么前三名将是:隐形的城市、我们的祖先(特别是“看不见的骑士”)、寒冬夜行人。
-
BT群的新里程碑:第50,000条话唠
就在两天前,BT群刚刚迎来一件大事:前令狐终于发出他的第10,000条话唠。而就在今天,BT群又再次迎来另一个具有史诗意义的新里程碑:第50,000条话唠。
经过再三确认,这第50,000条话唠由著名的“到点就会爆发、就会叫”的···发出,内容纯属灌水:
5w
显然···经过了精确的计算。
在此,肾上代表BT群恭喜···获此殊荣,并希望···再接再厉,多多话唠。
同时:
感谢国家,让BT群能说出5W句话…曾几何时,肾上一直认为不到1W句这个群就会被河蟹了……内牛满面
同时,···也感叹道:
感谢国家,感觉大家 每次总吧刷屏的任务交给我 顺便到了还提醒我叫。。
同时,肾上也感谢今天见证了50,000个话唠的所有话唠:
-
Titanium Developer学习笔记(一)
(本文收录于[go4pro.org])
前几天从Status.net那里知道了这个Titanium Developer开发平台,就下载了看看。
我一直在找一款合适的、跨平台(含Linux、Windows以及Android)开发的程序,这个Titanium Developer虽然还不是一个完整的IDE,但是它提供的跨平台编译能力以及创建桌面、手机应用的能力确实令人耳目一新。 根据站点的介绍,这个开发平台的重要特性包括:
- 支持创建Windows, Linux, MacOS平台的原生桌面应用程序;
- 支持创建Android, iPhone平台的原生手机应用程序;
- 支持使用JavaScript, PHP, Python, Ruby等多种脚本语言编程;
- 支持HTML5和CSS3;
- 支持使用基于HTML的DOM模式编程以及支持基于Titanium UI的编程;
- 支持几乎所有的主流AJAX库,如jQuery,Entourage,Dojo,Yahoo YUI,Prototype等;
- 支持项目创建、编译、调试、分发,但是不支持源代码的编辑,而需要在外部的程序中进行;
程序安装比较简单,在安装过程中会下载Mobile SDK和Desktop SDK,这个可能需要一定的时间。
程序的运行比较麻烦,有可能出现假死状态。根据官方论坛的一些说明,似乎唯一能解决问题的方法就是彻底卸载(以Windows Vista为例)(原帖请猛击此处进入):
- 用Control Panel将程序卸载;
- 手动删除Titanium安装目录下所有的文件;
- 手动删除C:/Documents and Settings/All Users/Titanium下所有的文件;
- 手动删除C:/Documents and Settings/\<YOUR USER>/Titanium下所有的文件,其中的\<YOUR USER>是你登陆Vista使用的用户名;
- 重新安装即可。
我就是碰到了程序第一次启动时的假死状态,用了上述方法后终于可以启动了。 初次启动时需要进行注册或者登陆。我是在Titanium的站点注册后再在程序界面中登陆的。
界面如下:
可以创建一个新项目或者导入一个项目。图例中显示的就是导入的Android实例程序。对于一个项目,我们可以修改一些项目参数,也可以进行测试运行。对于手机应用,会出现“在模拟器中运行”、“在设备上运行”、“Distribute”。这最后一个选项是你将自己的程序发布到Android或者Apple Store(也即Titanium Developer的开发公司)市场的连接,目前我还没有用到过。
程序的另一个视图(Perspective)是所谓的Community视图。这里你可以看到一些来自Twitter的推——不过我不知道如何发言才能在这里显示和一个所谓的“沙盒”测试版块,你可以在这里输入一些测试性的代码然后进行试运行。比如下面这个就是用Python编写的“Hello World!”程序:
第三个视图是Profile视图,这里可以设置一些自己的信息:登陆名、密码,还有Android SDK的路径。按照说明,程序应该可以自动找到,但是也不妨碍你自己设置。
程序的效果是很惊艳的,下图给出的是Android的实例程序,可以看到各种控件都非常齐全,也很漂亮。
我个人觉得这个平台很好。对于我来说,它:
- 可以基于HTML/CSS构建界面,同时又可以根据DOM进行操作;
- 可以使用PHP来操作;
- 编译出来的程序跨平台使用,几乎和Adobe Air一样;
所以,我会尝试使用这个平台。
-
Finally got my iPad WordPress running
Finally got my Wordpress on iPad running, able to retrieve my posts, comments from my blog.
Previously it hangs when retrieving the posts and will prompt an error message saying “NSXMLParserDomainError 05” or something like that.
I have to remove the app and then re-install. Now it is fine. Thank Country, thank God!
