2012年12月29日 星期六

Google Map一些可以注意的點

Google Map在使用上要注意,他並不是完全是分秒的格式,因為在地球儀上,使用的是六十進位,但是google map則是在分的部分使用六十進位,但是秒的部分卻是使用時進位,所以在解析NMEA格式的時候記得要單位轉換

另外常用的由兩個GPS點座標進行距離轉換的方式,單位是公尺
google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000

另外一是zoom level的設定

var GLOBE_WIDTH = 256; // a constant in Google's map projection
var west = sw.lng();
var east = ne.lng();
var angle = east - west;
if (angle < 0) {
  angle += 360;
}
var zoom = Math.round(Math.log(pixelWidth * 360 / angle / GLOBE_WIDTH) / Math.LN2);

2012年12月27日 星期四

node.js

最近試驗了一下node.js跟翻閱了網路上的一些文章,發現non-blocking跟event loop/queue的作法有其好處,但是也有問題存在阿!!

過去因為是blocking的作法,如果遇到上傳檔案這種事情,一個process或者thread將會占用掉server一定的資源,至少在完成該動作前,該process/thread不會被釋放出來

反觀node.js的作法,卻是將動作放入event queue反覆取出處理,相對比較不佔用資源
但是這樣的好處卻要付出代價的,因為node.js的機制相對類似於cpu的排程,他並沒有同步或者等待的機制,這部分都要programmer自行處理,當然網路上也出現了一些libs來處理這些事。

不過反觀這樣的做法,很類似mysql一開始為了速度放棄了transaction,但是如果一旦transaction需求的重要性多過放棄transaction帶來的好處,就會引發開發上負面的效果

參考資料
http://www.nodebeginner.org/index-zh-tw.html


相關的libs:

seq

promise

Daily JS

2012年12月24日 星期一

告一段落

單車GSP logger分析程式告一段落,直接看影片吧,以後有空再把他補完

簡單補個參考資料
http://brooky.cc/2011/08/04/using-jquery-validation-plugin-for-form-validation/

2012年12月15日 星期六

jquery要注意的兩三事

wrap的使用:必須要將準備包裹的$(xxx)加入倒DOM中,不然是無法作用的
before/after跟append/prepend的差異:before/after將元素貼到<div></div>之後,比方$('div').after('<p>')變成<div></div><p>,若是append則是<div>data<p></div>

過去儘量不想在view內加上類似的程式碼,看來還是不可能的任務

參考資料
http://blog.bandit.co.nz/post/947175929/jquery-wrap-must-be-on-dom-object
http://www.dotblogs.com.tw/topcat/archive/2009/12/28/12702.aspx

2012年12月14日 星期五

web application開發疑惑

大約四五年沒認真一點開發web application,真的是一日千里,尤其JQuery應該是貢獻良多吧
隨著雲端,web application真的是爆炸性成長,再加上JQuery以及AJAX推波助瀾,可怕的html從簡單的顯示內容,搖身一變,變成可以開發應用程式的平台,瀏覽器當然也遠遠超出本來瀏覽的目的

可以看到JQuery儘量讓HTML跟事件分離,不用在HTML裡面放入一堆類似click事件,使得開發更有彈性,對於資料的取得也透過AJAX,不用每每需要資料就要在asp/php/jsp裡面塞入一堆資料到javascript codes當中,看起來是非常可怕的事情,以前一次融合兩種程式邏輯,用動態產生動態,真的是一場試煉

一個原本不是為了開發應用程式設計的東西,硬要裝上一些功能,就變成一場試煉,雖然JQuery以及AJAX將許多原本不可能變成可能,但是還是有些問題尚未解決,這是我認為web application及不上一般application開發的地方

沒有標準的widget,DOM本身並不是為了當widget開發出來,所以在操作上,必須將一些操作硬是搭配上去,讓屬性、事件顯得非常凌亂,連簡單的setText在很多元件上(我不知道適合用這個詞嗎?)都很欠缺

=========2013/2/18=========
體會到目前的業界好些狀況是JQuery/CSS跟AJAX已經是趨勢。使用JQuery的理由是本身JQuery吸收了許多瀏覽器不同屬性的操作方式,雖然還是因為CSS解釋有點不大一致,不過大體上已經好很多了。AJAX則是為了互動而設置的好處,壞處debug還是相當凌亂,有人靠瀏覽器的debugger,有人自行撰寫debug function。最好玩的是JQuery發展出來的GUI元件大多被捨棄不用,反過來自行發展GUI元件,因為大多認為他人寫的GUI元件不穩定,修改困難,不如自己從頭打造

目前javascript library一大堆,但是大多山頭林立,好似很難讓人相信很穩定

2012年12月11日 星期二

一些網頁元件

拜jquery以及ajax之賜,很快一些Web GUI如雨後春筍般地冒出,但是每個其實都要自己去評估,沒有完全一套的GUI是比較可惜的,但是也是好處。我比較偏好簡潔的風格(簡單說,希望在十分鐘內可以上手,最好coding只要一兩行),下面是幾個我survey過的GUI元件,做個紀錄

一般元件
Scrolling Table
http://www.htmldrive.net/items/demo/34/Pure-CSS-Scrollable-Table-with-Fixed-Header
Color Table
http://www.htmldrive.net/items/demo/33/Colorize-jQuery-Table-Plugin
List selector
http://harvesthq.github.com/chosen/
Loading Mask
http://code.google.com/p/jquery-loadmask/
JNotify
http://www.myjqueryplugins.com/jquery-plugin/jnotify

Calendar

Event Calendar
http://www.vissit.com/jquery-event-calendar-plugin-english-version
iCal Calendar
http://www.htmldrive.net/items/demo/568/astonishing-iCal-like-calendars-with-jQuery
Dojo Calendar
http://demos.dojotoolkit.org/demos/calendar/demo.html

我是想要一個簡單的Event Calendar,後來又回歸到jquery ui上面,

  • 第一個event calendar結合json,一定帶有event list,必須改code修正客製化
  • iCal基本上蠻簡潔陽春的
  • Dojo看demo很強大,但是要跟dojo的framework結合,效能不知如何,就不用了


ajax檔案上傳
uploadify
http://www.uploadify.com/
jquery upload demo
http://blueimp.github.com/jQuery-File-Upload/
plupload
http://www.plupload.com/example_queuewidget.php

如果只是要檔案上傳,很多可以用,甚至可以自己寫,但是如果要基本畫面,如process bar大概免費的舊這三個

  • uploadify最簡單,可惜要使用flash或者繳交5USD買HTML版本
  • jquery upload demo支援HTML 5,不錯,很可惜GUI很複雜
  • plupload支援多種平台,感覺很好,但是HTML 5畫面簡直是陽春,要自己重新設計一下


2012年12月8日 星期六

對google map的微辭

google map把持了資料,跟平台應用方式,這是我個人對google map不滿意的地方

google map的資料只能透過google map取得,換句話說,大多數對google map的操作都得透過google map api,這不只是google map服務而已,比方說,一般使用者沒辦法把google map製作成離線地圖,只能巴巴的等待google完成這項功能

google map在開發應用程式,很抱歉,你有幾個選擇,就是瀏覽器跟android,剩下的,很抱歉,你只能用半吊子的方式,比方說java要嵌入google map元件,官方並沒有,自己要想辦法,要用c++,那你只好內嵌一個瀏覽器,他的API平台是相當有限的

如果未來open map圖資足夠,我覺得大家跳到open map是一個好選項,畢竟目前google map一些其他強大的功能並不是大家都需要的,比方說街景跟室內3D,甚至於其他如水文之類的,應該就更少人用了

我個人不是反對google map,只是希望google map能夠更加的開放

2012年12月2日 星期日

javascript的迷思

可以看看javascript開發者對javascript現狀的評論www.josephjiang.com/presentation/OOJS/object-basic.html

個人認為是太多人認為javascript太好學,充斥了太多javascript的錯誤資訊,javascript的特色也太過於被濫用

最近我犯了一個錯誤,我想很多人如果比較熟悉C++ or Java之類,乃至於python這種語言都會犯的錯誤
var obj1 = new Person();
var obj2 = new Person();
var callbakcs={};
callbacks[obj1]=callback1;
callbacks[obj2]=callback2;
很簡單的想法就是想要為物件指定不同的callback function,結果不行,問題是所有callback function會指向callback2,理由是javascript並沒有替object做出唯一的key,javascript會呼叫toString()替代,所以obj1跟obj2會得到相同的字串
在C++是address,在java會由Object的method提供,ptyhon也不例外,例外的是javascript,真的替我上了一課XD