msgbartop
用铅笔写日记,记录那最原始的美丽
msgbarbottom

本周杂记

一转眼,8月份的第三周已经快过了,马上就迎来第四周了,也就是说整个8月份也快接近尾声了~可怜的孩子们的暑假也快玩完了,估计很多的孩子们开始寻找他们的暑假作业本了,呵呵~(我一般都是最后一天才开始想起要考虑这件事情的……)

本周,说实话,和上周一样,依然是没什么特别的事情,生活基本上就是“公司”—“家”两点一线,单调的很~回到家也没有什么可说的,吃饭、睡觉。如果非要说点事情的话,可能就是CCAV综合频道播出的一部名叫《大唐双龙传》的电视剧了~

其实我本身对这些影视作品极其不感冒,看的更是甚少。要我说《大唐双龙传》应该改名为《两个家伙的艳遇史》才更贴切。不过说真的,里面的女主角的确是一个比一个养眼,这也是我一直在关注它的原因所在。特别是里面的“李秀宁”和“宋玉致”,尤其是后者,我一直看着眼熟,总觉得在哪里见过,就是想不起来。后来才想起来,她长得很像“刘敏林”(原谅我吧,我使用了百毒百科,因为维基里没有这个词条),有没有?呵呵~

好了,扯远了~我发现我扯淡的功夫又长进了,囧rz

本周,业内最大的新闻莫过于周一的晚些时候爆出的谷歌公司收购摩托罗拉移动的这则重磅消息了。作为一名谷歌的轻度爱好者和摩托手机的用户,我不得不说,这可能是个好消息!而作为一名开源爱好者和Android开发者,我对Android的前景也抱有了很大期望~直到我昨天收到了fsf.org的关于“Android内核开源协议GPLv2终结”的邮件消息,我只能希望谷歌不要在错误的道路上越走越远……

还有人说,谷歌收购摩托后,期待摩托的所有Android机型能够开放bootloader.我表示影响不大~因为"Move2SD Enabler" 和 "Root Uninstaller"这两款应用完全能够满足我~ 哈哈

还有就是关于国内MIUI团队推出的小米手机的,反正我是不会买的,因为我说过我的下一步手机可能是MeeGo操作系统。不过,我可能会推荐别人去买,为什么?就凭目前它可观的配置和1999块的价格~

之后就是关于百毒贴吧的一些牢骚,我要说,百毒贴吧可能是国内最河蟹、最水产的交流社区,没有之一。那尼玛的真是个容不得异语者的平台,管理员如此,里面的成员亦如此。为了逃避被河蟹的命运,我想要创建一个关于辅助言论自由的项目(JS + SVG)的想法,越来越强烈了~

还有就是Firefox 6,正式发布了!这一次Ubuntu 软件仓库源的维护者反应还算迅速,我在Mozilla发布后的第二天就接到更新通知了,蛮好,呵呵。

最后就是关于EveryDNS的,我已经是第3+次接到他们通知我转移域名的邮件了,EveryDNS本月底就到彻底关闭了,掐指一算,不剩几天了。为免费模式默哀,我的下家已经找好了,就是飓风电子(HE.net).

不过我可能要等到月底才会转过去,EveryDNS我还要用一阵子~

好了,就是这些。

eclipse上android项目编译出错的解决办法

最近Android很火呀,我也打算抛弃现在的moto手机,入手一个基于Android的手机了,看来看去就锁定即将上市的魅族M9了.

话说距离m9上市还有一段时间,闲得无聊便打算先熟悉一下android(安卓)系统,因为android是基于linux内核,由java语言实现的开源手机平台.故而也让我有了动手的理由,于是就按照 developer.android.com (这里要bs一下GFW, *.android.com 居然被墙了……) 上的文档先写一个"Hello,Android"出来.聊以自慰了一下.

下载安装了android sdk 和 Android Development Tools (ADT) Plugin for Eclipse (地址:https://dl-ssl.google.com/android/eclipse/),重启了下eclipse,就可以创建Android项目了。

跑了一下项目,发现sdk 自带的模拟器真不错,感觉和真机差不多了,也算先尝尝鲜了 呵呵

不过,在运行项目的时候,发现一个问题。就是一旦android 项目被清理(Clean)了源码,再次编译会出错,而且永远通不过 囧rz...
如图:
项目编译出错

注:我用的是中文版的eclipse(在此感谢babel国际组织),所以不清楚英文版下报错信息是什么,所以我也搜不到任何有用的信息。不过最下面错误我以前是遇到过的,英文是“The project cannot be built until build path errors are resolved”.

这个gen下面的文件都是自动生成的,不可以人工操作.

在网上搜索了一下,有人说可以通过项目右键菜单里面的 "Android Tools" -> "Fix Project Properties" 解决,貌似不行.
这个郁闷呀,后来我找啊找,终于找到了解决办法。

那就是,如图:
配置buildpath

是构建器(位于 项目->属性->构建器)次序的问题,请确保项目中的 java 构建器 始终位于最后.
调整好后,清理一下,再次编译即可通过.

该错误虽然很小,可是却很恶心。希望对某些正在挠头的人有所帮助. :)

基于Gaelyk框架快速开发谷歌云计算应用

其实这篇文章很久就打算写了,本来的想法是计划等到我的wp4gae项目有了博客雏形的时候,顺便写出来的。

可是事与愿违,我打算用groovy实现绘制验证码遇到了技术瓶颈,项目就一下子死在那了…详见邮件列表存档 囧rz

这一死就死了近两个月……好了,言归正传,话说用gaelyk 开发谷歌云计算(简称GAE)还是蛮棒的,而且它也是难得的几个面向GAE平台的groovy框架.

我就是在groovy官网看到它的链接的,主页是:http://gaelyk.appspot.com/,可以说gaelyk是一个又轻量级又强大易用的框架.

首先,确保本地eclipse(原谅我,我用的是eclipse) 安装了Google App Engine Plugin for Eclipse,Groovy-Eclipse 插件.
根据消息,后者最新版本为 Groovy-Eclipse 2.0.2,安装地址为:
http://dist.springsource.org/release/GRECLIPSE/e3.5/
http://dist.springsource.org/release/GRECLIPSE/e3.6/ (for Helios)

顺便说一句,eclipse 最新版本3.6 在widnows下有内存溢出现象,经常导致假死,这已经是公认bug了.

在groovy 和 gae 插件安装了后,现在可以创建基于gaelyk的项目。
有两种选择:
1,只下载 gaelyk-0.4.2.jar 文件,在项目中导入.缺点是必须对项目目录结构很清楚。
2,就是下载官方提供好的项目模板,解压后,可以直接导入到eclipse中。而且里面还自带了一些GAE的jar包.

本人选择的是后者方法,里面还有一些例子,可以参考学习.

一切完成后,目录结构如图:
gaelyk-directory-layout

前期工作好了后,就可以开始开发项目了.

习惯了一般的b/s开发,忽然转变到云计算平台,一般人都不会太舒服。不过gaelyk 是遵循经典的MVC模式的,它把视图和后台的逻辑处理很明显的分开了.

视图前台显示部分交给了视图模板 *.gtpl(相当于jsp),而把处理程序通通放在了Groovlet 里(类似servlet)。这样的话,思路就变的清晰了.

和jsp一样,gaelyk提供如 request、response、appliaction、session 等隐式对象,随用随拿.

当然,gaelyk 还提供了一些特殊的内置对象,比如 params(据说是学ruby on rails),就是一个封装了请求体里面参数的键值对集合, 或者像 headers,就是请求头里面的信息,以供用户调用.
厌烦了log4j ?不妨尝试下 gaelyk的 GroovyLogger,一样很棒。

除了这些个一开始就实例化好待用的对象,官方叫它“积极变量”,gaelyk 还提供了一些“消极变量”(即第一次请求时才实例化),
有点类似于 饿汉模式 和 懒汉模式阿.
如 out、html.

当然还有一些 gae 的对象,如 datastore,用于操作数据库.厌烦了gae 自带的jdo、jpa 方式。尝试一下gaelyk的条件式查询,很是方便。最重要的一点是其中不会产生一句sql语句,呵呵,sql不好的同学们有福了 :)

在gtpl 视图模板里面,默认支持el表达式,原生态支持 小脚本、代码块以及表达式.(因为groovy也是java 囧rz)
还有更有趣的,gaelyk 导入类时支持通过 as xxx 起别名,很方便.而跳转和重定向的时候也有简洁的办法,直接 forward "url"、redirecr "url" 即可,再也不用Request.xxx.dispatch.xxxx.findforward 了.

gaelyk 还有一个亮点就是,支持地址重写.只要稍稍编辑 web.xml (交由 RoutesFilter 处理),再指定规则文件.
就可以实现伪静态了.
如 get "/topic/@title" forward:"/showtopic.groovy?title=@title" 即可.而且还可以通过 validate 进行验证,过滤掉非法参数. 让被注入成为往事. 呵呵
并且,从gaelyk 0.4.1 开始,支持缓存 cache 了.如 cache: 3.hours 即缓存3小时.

还有更让人叫绝的,gaelyk 里面根本不需要实体类,呵呵
因为Entity对象是可以直接构造的,而且groovy 里面没有对象类型的区分(灰常像php、javascript),也就给了方便.
比如我创建一个用户,包含用户名、密码.

Entity entity = new Entity("user"); 注意导包 import com.google.appengine.api.datastore.Entity

然后只需要用户从表单提交对应的值过来。填充入user实体中.
还在用request.getxxxbyxxx???忘了上面提到的 params ?

gaelyk 提供你想不到的方法访问实体,
entity['name'] = params['name']
或者
entity.password = params['password']

亦可 entity << params 全部填充.

这时候,只需调用 entity的 save() 方法,就可以将数据持久化了.
删除只需同样调用 entity 的 detele() 方法即可,若需起事务,只需把语句放入datastore.withTransaction{}的闭包中即可.

怎么样?增删就是如此的简单.

至于查询,更是简单.指定要查询的实体,扔给几个条件、标准就出来了(有点类似hibernate的Criteria查询).
创建query.
def query = new Query("user")

给出条件(相当于sql where)
query.addFilter("name", Query.FilterOperator.EQUAL, "xxx")

指定排序(相当于sql order by)
query.addSort("name", Query.SortDirection.DESCENDING)

预编译
PreparedQuery preparedQuery = datastore.prepare(query)

设定单次结果集大小,和漂移位置.实现分页
def list = preparedQuery.asList(withLimit(10).offset(20)) //查询20到30列.

这样增删查均完成了.gaelyk 真的是很省事呀.

当然,gaelyk 提供远不止这些,还有像 email 功能、memcache 功能、 BlobStore 、queue 等功能.这些我都没有用过,将来可能会更多.

不过作为一个开发者来说,这样的框架只会让我们的工作越来越方便,效率越来越高.

关于gaelyk 的更多例子,见:http://gaelyk.appspot.com/tutorial
如果对我的wp4gae源码有兴趣,请看:http://code.google.com/p/wp4gae/source/browse/

wp4gae现运行于 http://xia-zhengxin.appspot.com/,欢迎围观.
注:相当alpha的版本.

这是怎样无耻的一个人!!

昨天我发现我搭建在000webhost上的文件共享平台,无法访问了.
怀疑DNS出了问题,一检测没有问题.

挂了代理访问正常,看来是被墙了.
我的帐号是被分配在server12.000webhost.com上的,ping 了一下,没有响应,可以确诊了.

也不想再申请新的帐号,因为转移数据很累.而且这么经常无法访问,本身和我搭建文件共享的目的冲突,我也受不了。

想到除了文件共享之外,我的xiazhengxin.net.cn 域名也没有别的用途,而且freedns.ws 经常抽风.
我便打算把它转移到xname.org 上面去,稳定点好.

我的三个CN域名只有.net.cn 没有转移过去,因为我之前说过要留条后路,现在看来这条后路也不需要了.

当我登录xname.org后台,点击 Create zone ,填上我的域名,点击create 按钮后,我惊呆了!
居然提示说,该域名已经被添加入系统了,而且那个人不是我.如图:
添加冲突

我检查了一遍,是的呀!我的确是添加了.cn|.org.cn 两个域名,如图:
域名列表

究竟是怎么一回事??
这个域名一直是我在用,在我之前也没有人使用过。

难道是tmd有人恶作剧?我晕哪,这是多么无聊的一个人哪,更加无耻!
我的域名和你有一毛钱关系么?你注册了又能怎样?

最后只能是我选择了另外一个DNS ISP,而你得到了一个空列表.

囧呐,真是什么人都有……
而且,从我的遭遇中可以看出一个问题,就是在dns isp 处添加域名,缺乏最基本的域名所有权认证。导致是个人都可以去添加记录.

建议dns 服务商们可以学习谷歌,要求站长添加一条cname记录,或者在根目录上传认证文件等。
通过这些手段,让那些个无聊无耻、搞破坏的人无机可趁.

但愿,我只是个个例.

谈谈互联网的免费午餐

互联网的免费午餐,我一直都在吃。
最多的就是免费空间,毕竟像我这样的草根站长,花钱去搞个虚拟主机都是奢侈,更不要说VPS之流了。
只能靠这些个免费午餐填填肚子,不过质量好的真的是不多见.

首先说免费空间,最近忽然发现我的博客文章里面的一些贴图不能正常显示了。
我这个图床(或者说网络共享平台)是搭建在nginxadmin上面的,该免费空间服务一直很稳定。
提供不限空间,不限流量的存储空间,支持 ftp + mysql,更重要的是速度也很快.

不过有一点很恶心,就是会在每一个网页里面插入一段ad(弹窗式),虽然承诺一个ip每天显示一次,不过我还是不能忍受。
所以便把它做成了文件共享平台。nginxadmin从不能在文件流里面插入ad吧,哈哈

用了这么久,第一次出现问题。我便打开nginxadmin首页一看究竟,结果很是令我震精!

只见nginxadmin首页出现了几行小字,居然是停止服务的公告.如图:

NginxAdmin

天哪!他们的硬盘居然挂了!!怎么搞的?很庆幸我没有存入什么重要数据。
只是要去寻觅另外一个图床了,不过看来nginxadmin的免费是用到头了.

祸不单行,我又收到了火山互联给我的消息,内容是由于我没有经过“身份认证",我的VPS也被停掉了.
如图:
VPS 通知

这样,刚上线两天的“小鑫论坛”再次下线,囧rz

话说回来,火山互联的这个免费VPS真的蛮不错的。可惜就是要什么“身份认证”,而且只针对企业用户。
要上传什么营业执照之类的,否则是用不长的.
如图:
要求认证

我等个人用户还是另寻他处吧.

一日之内,连损两处空间。于是迫切的需要找到一个稳定、免费的空间了。
仔细想想,自己可用的空间还真没有。搜索了一下,大多都不行。

只有000webhost还可以,早些年申请过,貌似一直没通过,帐号依稀还记得。
本想登录后,按照网上的介绍,给客户提交一个ticket,可是进去一看,连域名都给我删了,日啊

于是用了某代理到该站又注册了个帐号,居然一次就激活了。兴奋呀
可是马上我又傻眼了,分配给我的居然是被墙掉的ip....(这个又不能换)

无奈删掉了该域名,打算再创建一个。提示要24小时后才可以操作。
无奈,等吧.

一天过去了,再次登录,创建新域名,恩,可以了。可是……泪奔了
如图:
000webhost 墙 ip

又是一个墙内的ip,看来和概率的游戏有的玩了.

说完免费空间,再说说免费域名.
谈到这个,很多人都会想到 *.co.cc、*.uni.cc以及最近的*.co.tv 和 *.eu.tv.
不过很遗憾,这些域名不是被墙了,就是时不时的抽风.
我已经是彻底放弃了这些二级域名了(本人已经注销掉了持有的这些域名),还是花点钱买个顶级域名吧。

不过最近发现很多人在用*.tk的顶级域名.这个域名我以前用过,功能很单一,只能转发.
可是现在貌似功能多了起来。

所幸以前在dot.tk的帐号还记得,进去后注册了一个xiazhengxin.tk,居然可以自定义name server!!
这不就意味着……呵呵

把域名转到像everydns、zoneedit等类似免费的DNS服务商,就可以任意设置记录啦!

而且dot.tk 还开放了api,用户可以参照api给出的例子和说明(见:http://www.dot.tk/zh/pageE01.html),让用户可以在自己的网站上开放*.tk域名的注册(不过前提得去申请一个api key).

比如我的这个(处理页面现放在我VPS上,随时可用):

要跳转的网址(要有http://前缀,且地址可访问):

要注册的域名(不含.tk后缀):.tk

不过这样注册的功能很简单,有点类似于goo.gl 这样的域名减肥服务.

想要设置A、cname 等记录,建议还是去官网注册.

还有一点就是,当我满心欢喜的要去Google apps 注册个企业套件(标准版)的时候,发现居然不支持*.tk域名!
搜索了一下,发现谷歌是干掉了这域名,很多人以前注册过的都被干掉了。
见:http://www.google.com/support/forum/p/Google+Apps/thread?tid=4edca886add19a63&hl=en

杯具呀,看来只能用QQ 的域名邮箱了..

谈到了everydns,就再来谈谈免费DNS服务.
作为一个站长,应该经常要和这个打交道.

我想国内很多人用的都是everydns和国内的DNSPOD,至少我目前用的就是这两个.

不过现在有了新的选择,那就是freedns.ws.

这是我最近刚刚发现的免费大餐,支持大多数常见的记录,速度很快(我不想谈记录生效,因为那取决于记录的TTL值).

还有就是DNSPOD的(请原谅我用dnspod来做比较)免费用户所不支持 @ 的cname记录。

众所周知,DNSPOD现在已经不支持域名根的别名记录了,以前设过的也不可以再修改了,如图:
根域名别名

如果需要添加该记录,就得升级为VIP用户...

曾就此问题多次向DNSPOD管理员交涉,要求增加这一功能。
不过,很遗憾。DNSPOD管理员对待这个问题,或者说是对待免费用户的态度让我很失望(聊天记录就不在这里公布了).
这显然不能让崇尚免费和平等的我容忍.
故而决定彻底和DNSPOD划清界限,并陆续把停靠在DNSPOD的域名托管到别处去.

用自己的实际行动抵制DNSPOD,抵制“免费用户不是用户”的荒谬言论,抵制这种藐视人权的不良心态.
看看,这都是市场垄断,一家独大导致的恶果呀!
试问,如果国内DNS服务商遍地可见,看他敢这么说话 :)

最后,再揭一下DNSPOD的短,直接看图:
泛解析

这就是DNSPOD宣传的泛解析?原来只能设置 "*" 的泛解析,囧rz 等于没有...
还有就是传说的URL转发功能,也奇怪的消失了...
看来DNSPOD首页的宣传应该改改了.

呃,跑题跑到西伯利亚了……回来了
总之,本人吐血推荐使用freedns.ws
试试看,真的很好用噢! 一点也不伤手哟

_END_