开源我来了

——一个月-半个产品-多个开源javascript

这一个月是忙碌的一月,从走出寝室一直到晚上12点左右回寝,忙忙碌碌,时间总以为不够用~前端

这个月学习主要集中几个几个方面:java

ios 股票portfolio产品的开发:jquery

1)学习js,阅读了js精粹和coffeejs开发两本书,以及多篇高性能网站开发的blog。主要思考问题:如何保证界面数据的实时更新,界面数据显示的延迟问题,以及前端数据和后端数据之间的更新,如何更加高效的通讯,以及数据和界面之间如何联系?ios

2)用titatium开发产品,这是一款一次开发,多平台应用的开发平台,是在eclipse基础上改进用于js开发的,容易上手web

     并基本上把titatium的文档阅读了一遍,开发了几个界面算法

3)要制做一个饼图和股票线图,查找了几个图形类库,如highchart和ichart,最后选择了highchart,利用highchart的chart和pie制做出来了线性和饼状图,另外highchart提供了highstock类库,方便开发stock线图,但总以为不适用ios开发,更适合web开发。数据库

这个要是有时间,能够用jquery mobile从写一下highstock,用于移动客户端支持; 基本上把highchart的图形参数也看了一遍。编程

4)重点:学会了查找开源,没有找不到,只有想不到。之前总向本身动手,丰衣足食,最近发现基本上你想实现的功能别人都已经作出了一个雏形,因此万事开头难,别人已经给你作出开局了,下面须要你本身作了。之后要多查找开源社区。后端

查找了多个crawler,用于爬sina、yahoo、nasdaq数据,如pystock-crawler,多个js类库,如moment,backbone,underscore等等

5)学习了一下backbone的基本用法,但如何更好的和titatium结合,尚未好的思路,目前backbone更多的用于网页面mvc模式开发。资料不少,还须要进一步学习。遗留问题:屡次调用该model,若是保证每一个调用者获得该调用者本身的更新数据,须要在backbone.collection中加入调用者的身份信息,并保持实时对调用者界面更新。

 开源使用 numeral(整数转换格式)、moment(时间函数)、ios ui design、ios app ui 等

但本身的重心是否在这里?还须要探索,你是否要进入这样的公司,是否要喜欢作这样的岗位?你要不断的探索,不断的问问你的心里?

产品,技术,你须要思考?

成长在于思考的深度~

一个月很短,但记忆深入,很喜欢和一群朝气蓬勃,有理想有梦想的小伙伴一块儿奋斗,和大家一块儿编程的日子,我很怀念~  但年轻的心,让我从新不断探索,我终究要暂时离开的。

一个月,利用课余时间,尽量把一个产品作好,但精益求精的过程发现,精益求精,每个进步都须要十倍的努力!还记得7月中旬,我第一个版本,本身看着都以为恶心,仅完成了基本功能,而界面,那个惨不忍睹~ 谢谢海底(花名)的耐心,细致,一点点的教导我如何调整UI,什么样的字体好看,什么样的颜色比较搭配,表格中的间距应该如何调整等等,折腾了一个下午,个人界面看起来有了点转机~

完成了第一个步,但本身的功能更可能是在上一个同窗的基础上搭建的,本身还未完整开发。接下来,开发ipad版本、开发stock版本、完善fund版本等等,都一步步的前进。后来把各个功能模块整合到一块儿时,就出现了多个问题。

1)数据同步问题,股票数据是否要实时更新?这样会给用户带来很大的流量开销。那怎么办了?而本身的获取实时数据api中又没有写中止和继续,但仍是要修改的。

2)若是不连续更新,出现这样的一个问题,如何获得数据已经更新好了,以后才进行界面显示呢?等一段时间?那等多少呢?  在C或者C++的编程思想里面,对于这个处理难度有点大,而javascript提供了异步回调,咱们能够给数据函数提供一个callback,当数据整理完毕以后,能够调用callback来通知界面进行显示;此时方知回调的魅力!

利用subscribe和update函数来实现数据和界面的实时更新,利用callback来数据完成的通知;

3)Titatium中的tableViewSection属性rows,是一个only read,没法进行赋值;开始对此了解不清楚,每次查询stock或者fund,获得的数据进行rows进行了修改,这样经常致使系统出bug,并且是随机性的bug,很难修改。后来进行了修改,直接对tableviewsection的总体进行修改,解决了bug。

4)tableview上的item连续点击的问题,因为数据响应慢,用户可能屡次点击item,但每次点击都会致使数据的更新(即从新查数据库,带来性能开销),解决的方案,前端每次点击以后取消点击事件;后端判断点击的次数,超过一次丢掉;后端进行判断,有些难度,最后选择了前端处理;

5)利用了缓存机制,但每次得知有缓存以后数据再也不更新,致使界面一致没法显示;这个主要问题是对数据提醒位置出错以及在获得缓存时,要考虑实时数据的从新获取;

6)每次从yahoo获取stock的实时数据,因为每次全部查询到的sym,都须要更新,会越积越多,最终超过200个,查询yahoo api,可能会被中断,提示超过200个sym。

7)注册和销毁问题,因为我开始实现的是,每一个view都向同一个data进行注册,会有多个veiw向一个data注册,这样data更新时,会向多个view进行发送update操做,而最近的view更新就会很慢。解决的方案:每一个view向一个data注册,每一个data来控制一个view;

接下来要完成的内容

1)从新定义后台api接口,尽量减小前端计算量,采用上一天收盘的价格做为portfolio的价格,前端一个节目采用实时,但仍是已收盘价来实现,容许用户下拉更新;

2)实现left menu和right menu等等,更新right menu view,而且对search算法进行更新

3)增长用户数据,容许用户进行订阅,以及查看本身的portfolio。

有空多阅读一下Titatium的文档,对各个控件的机制有更深刻的了解。

相关文章
相关标签/搜索