——一個月-半個產品-多個開源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的文檔,對各個控件的機制有更深刻的瞭解。