Archive for the ‘ dev ’ Category

转战git

终于告别本地管理代码的日子了,以前试过git,但是那时候只认得github,它对闭源项目是要收费的,一个月好几美元,所以当时放弃了。前天笔电拿回来之后,想到了,既然小笔电运行安卓模拟器慢,那就像在ubuntu下那样直接挂g1,拿真机跑应该可以避免,这样只开个eclipse,速度应该还可以,这样就不用下地开大电脑弄emacs了,而在emacs里开发,对我而言,无异于自虐。一切顺利,windows7下的eclipse安装adt毫无问题,比linux版本强太多了,然后开始折腾apidemo,看到了那些令我困扰很久的问题。最后发现安卓源码也是用git保存的,而非google code。最后由于无法解决Intent class多次使用同一个对象的问题,无聊就折腾起git,找到了codaset,感觉不错,社会化开发,还支持twitter,只是里面的push api支持到博客,我在里面发了一个文章,同步到博客的时候账号崩溃了。我的项目地址,欢迎围观 :http://codaset.com/kmlzkma/andscape

我的erlang的makefile模板

目前还不支持文件夹的遍历,只能一个一个写上去。


.SUFFIXES: .erl .beam

.erl.beam:
erlc ${ERLC_FLAGS} $<

SOURCES = ${wildcard src/api/twitter/*.erl} ${wildcard src/ui/*.erl}
BINS = bin
INCLUDES = include
ERLC_FLAGS = -W -I ${INCLUDES} -o ${BINS}

all: compile

compile: initDirs ${SOURCES:%.erl=%.beam}

initDirs:
mkdir -p bin

test: compile
erl -noshell -pa $(BINS) -s client test -s init stop

emacs支持erlang

home目录下配置.emacs文件:

;; setup erlang mode
;; add the location of the elisp files to the load-path
(setq load-path (cons "/usr/lib/erlang/lib/tools-2.5.5/emacs" load-path))
;; set the location of the man page hierarchy
(setq erlang-root-dir "/usr/lib/erlang")
;; add the home of the erlang binaries to the exec-path
(setq exec-path (cons "/usr/lib/bin" exec-path))
;; load and eval the erlang-start package to set up
;; everything else
(require 'erlang-start)

hello new world

今天开启了一个新project,主要是学习Erlang,想用Erlang做一个软件,实现twitter的客户端功能,当然还有很多隐藏功能,全部灵感来自于索爱的新手机X10,所以项目名字叫做Erscape。学习语言的最好方法还是实践,趁自己最近有时间,抓紧训练。项目使用google code托管,有兴趣的可以关注 http://code.google.com/p/erscape/ ,当然现在还是什么也没有,下午先弄个0.1版的。。。

《Erlang程序设计》第8章习题2

编写一个环形基准测试,在一个环中创建N个进程,然后沿着环发送一条消息M次,最后总共发送M*N条消息。在N和M的不同取值下测试整个过程消耗时间。

[cc lang="erlang"]
-module(ex2).
-export([start/2]).

start(N,M)->
statistics(runtime),
statistics(wall_clock),
L=create(N),
post(L,M),
{_,Time1} = statistics(runtime),
{_,Time2} = statistics(wall_clock),
io:format(“total time: ~p(~p)ms~n”,[Time1,Time2]).

create(N)->
create(N,[]).

create(0,L)->
L;
create(N,L)->
Pid=spawn(fun loop/0),
create(N-1,[Pid|L]).

loop()->
receive
cancel->
void
end.

post(_,0)->
void;
post(L,M) ->
[A ! canel ||A<-L],
post(L,M-1).
[/cc]

jQuery TOOLS

jQuery TOOLS 是一套非官方的jQuery UI库,目前版本1.0.2,包含6个插件:

其中 tabs 是jquery UI官方有的,jQuery TOOLS的开发接口似乎更加简单容易上手,没有具体看.tooltip 在之前也有很多类似的插件,jQuery TOOLS的看起来更加平滑,细腻,圆润,比较酷.overlay是个弹出层,之前网上也有过一些,与jQuery TOOLS的其他插件配合起来比较无缝.expose非常的酷,第一次见到看的下巴掉了,它实现了类似模式对话框的视觉效果,高亮的元素本身不变,周围的东西变暗,主要是官方那个演示背景图的渐变效果太酷,其实就是模式对话框后面的一个层,但expose的应用并非只是模式对话框,它的用途主要是让使用者关注某一部分,比如登录框,这时其他部分在视觉上都变弱.scrollable比较牛逼,支持鼠标滚轮,支持导航,这个看起来用做分页真不错,我还从来没见过类似的分页效果,现在网上分页千篇一律伐善可陈,这个是提升用户体验不错的尝试,至于真正做到实用,要求使用者具备一定天赋…最后一个falshmbed是加载flash的.

总的来说,jQuery TOOLS是目前互联网上非官方UI里做得比较正统的,从之前的访谈可以看出,其作者对javascript方面开发可谓是不留余力.(他为了写程序,大学退学,长年从事java开发,自从三年前遇到jQuery,完全转向javascript……),从jQuery TOOLS网站也不难看出,其作者的web 前端发开经验和css功底都是十分了得.如果你正在使用jQuery进行前端开发,可以试试jQuery TOOLS.

jQuery UI Worldwide Sprint: Now scheduled for April 17 & 18

最新消息,jQuery UI Team宣布周五开始进行对jQuery UI 1.7.2为期两天的冲刺,比预计时间提前了5天.到时会在freenode.net上开单独的聊天室.jquery ui团队欢迎全世界的爱好者一起帮助测试,会议内容可以参考去年冲刺的内容:http://docs.jquery.com/JQuerySprint.这次升级后,官方说直接准备1.8版.到时候希望可以进去看看热闹.具体情况请关注jQuery UI官方博客 http://blog.jqueryui.com/2009/04/jquery-ui-worldwide-sprint-re-scheduled-for-april-17-18/

去年的irc是不是很热闹?

jQuery UI 1.7.2推迟一周

刚才洗澡时候想起来jQuery UI 博客上说15号会放出1.7.2,结果上去发现早在10号,官方就已经在 《This Week in jQuery UI vol. 5》 中宣布推迟一周,下周3会放出1.6最终版,大下周三放出1.7.2。官方还在wiki上开了冲刺页面,可惜我访问不到。

http://wiki.jqueryui.com/Worldwide-Sprint-2

令我感到惊奇的是,在推荐的使用jQuery UI的网站中,竟然给出了一个魔力宝贝人物加点模拟器的网站,http://cg2.cc/tool/bp/

山寨真牛,也入resig法眼,不过这网站做得还真不错,不知道是不是挺火的站,对网游不了解,真象不得而知。

移动书店

参加了MOTOROLA的新亮点挑战赛,没有入围,还是写出来吧,算对自己有个交待。 做<移动书店>的主要原因是为移动拍卖平台做准备,现在这个也没法做了,唉。这个系统是spring+hibernate+j2me,数据库 用的是大象PostgreSQL 8.1,开始时候用的mysql,结果到最后出现BUG,郁闷了我好几天,还好大象能用。从33月份开始做,到5月末基本结束,6月看了个世界杯,到7月 实在不爱弄了,随便测试了几下,弄点测试用例,文档都是抓图。在整个过程中有几个难点的地方,大概1个是hibernate颗粒度和j2me的一致性问 题,1个是j2me做缓存于分页时的问题。隔太久想不起来了,边写边想吧。

首先这个软件要完成的功能是网上买书,类似在线购书的功能基本 上都可以实现,用户可以通过手机而不用电脑可以查书,买书,评书,可以下订单,查询订单,基本上满足了用户需要,完成度还是比较高的。没有对安全性做过多 的处理,1方面需要加密的数据十分少,2来做https的协议怕时间上完不成,本来想做完有时间就试试,结果赶上万恶的世界杯。。。开发环境是 eclipse,虽然官方要求用NetBeans,可没用过也不爱用,eclipse+eclipseMe+MyEclipse,myeclipse不知 道用到多少功能,用着用着就不好事了,后来都是ant解决的。

首先这是开始菜单,没工夫做9宫图,用个list了事,一样方便。
开始菜单
这里基本上是按照SmartTicket的套路,MVC,多线程,查询表,想必这些都已经是J2ME做软件的经典套路了。进入之后是两个进程,一个用Gauge显示进度,另1个做网络通讯获取数据。这里测试用例很简单,只分了几个类:

别看少,手工输入起来够我受的,各种数据。。。
然后得到图书列表,懒得找书,就用了一个原是数据做了循环

这个列表做了缓存。只在第一次访问时候到服务器取,后来都是到RMS。
选择一本书进入:

这里只选取了典型数据,像什么“字数”的就懒得做了。每本书都做了缓存。由于屏幕有限,所以书的信息可以做成用户定制,只选取用户关心的数据。这里没有实现这个功能,有所保留。

然后是详细的信息:

显示封面有些问题,下面再说。书评,勘误,打分,基本满足需要吧。

然后是查书:

挺好用的。当然可以做的更复杂,我这里做的不好,耦合太多,因为闲麻烦,针对hibernate翻页传递了几个参数,不通用,如果后台换掉hibernate,这里就不好弄了,下次改进,如果有下次的话。

购物车:

购物车里的项显示起来比较别扭,当买了几本书的时候,名字又长,数量和价钱就会显的很乱,用ChoiceGroup也没有更多的办法。

查询订单:

自己YY的订单形状,可能这些信息够用了吧。买过的书也都有记录,可以查询,跟这个类似,就不贴图了。

书店信息:

把 焦点放在电话号码上理论上是可以拨号的,不过模拟器不支持,不知道烧到手机中能行不。用了缓存,因为想到用户如果是到银行汇款,那么打开手机查看书店帐号 的时候,如果需要上网可能没有信号,所以做成脱机的,可脱机的不知道书店什么时候会更新导致数据不一致,所以加了一个“更新”按钮,手动更新。由于 http连接没有推技术,不能自己更新,只好这么做,当然要用注册机的话比较先进,可我费劲。要说可以用注册机的地方多了去了,书店发货的时候可以发一条 通知手机开机,要不发短信也行。如果现实应用的话,很多地方还值得推敲。

书店新闻系统和系统属性:

做的很简单,要复杂的可以用走马灯在顶上做广播,属性也可以做得细点,包括上面说得用户定制书目信息。

用户注册和登陆窗口:

注 册的邮编地址什么的在提交表单的时候会自动填入,在涉及到个人信息的时候都会要求先登陆。这里如果不是自动登陆,那么手机不会保存任何用户信息,所以说是 非常安全的,除非你刚登陆手机就被人抢了。如果是自动登陆,当手机丢失的之后就处于不设防状态,个人信息,电话,住址什么的都是存在服务器端,但这时密码 还是安全的,得不到密码只能使用也不能更改,如果有个GPS什么的就好了,可以把小偷的位置传到服务器,没准还能抓到。当然要改进这个也非常容易。比如加 开机密码,到服务器端验证,那么即使别人捡到手机,也进不去。所以这个系统没有做本地加密,因为我找不到需要加密的数据。要说不安全,只有连接不安全,用 https就好多了。计算方式这里比较模糊,如果是传统的到邮局到银行汇款那么没有任何问题,如果是直接通过手机进行银行转账那么就需要很小心,这里我没 有做这些东西,因为我不清楚到底会是怎么转。如果把个人信用卡存在本地,那么会危险一些,即使加密了;存在服务器端用户自己不放心,书店也不放心,所以这 个基本不存在可能。所以我试想会不会有种手机钱包什么的,对应到手机上,然后让客户输入手机银行的密码进行转账,这样可能安全些,但具体是什么样我也不清 楚,就想象了一个“手机转账”。平时没消费的习惯,对这些不了解,可能已经有一些合理科学的方式存在吧,呵呵,当然一切都是建立在连接安全上。

j2me本身很简单,这里看图就可以知道大部分情况,里面复杂的地方就是缓存。如果只是单独做一下缓冲那么很容易,但为了保持数据的一致性使事情复杂起 来,有些时候不禁要问,这个到底用不用缓冲。开始的时候觉得可以为用户省钱,什么都 缓冲,后来考虑分页的时候,对缓冲的算法提出了更高的要求。首先很多活动使需要验证用户是否登陆,这里又分成几个步骤,首先在一个全局变量中判断是否登 陆,如果没有登陆在系统属性里找到是否自动登陆,如果是自动登陆那么需要到RMS中找到相应的位置,提取用户名和密码,那么还要判断这个用户名和密码是否 有效,如果无效则转到登陆界面,重新登陆;有效就用这个在背景里练到服务器验证。如果 没有登陆还需要注册那么就先注册再登陆,然后再回到原始菜单,这里有个栈记录窗口顺序,为了可复用性这里需要很好的设计每个窗口。这里懒得用UML图了, 因为我可能转行了,连程序都不写了。不行,有MM上线了,有时间接着写吧。