2011年10月4日 星期二

淘寶網API學習心得(二)

從上次寫完「淘寶網API學習心得(一)」到現在已經過了相當的時間,這次要寫的是測試心得,之所以會隔這麼久,是因為測試API需要一組app id和app secret, 而要取得app id和app secret的前提是你的帳號必須做過實名認證,目前我台灣的用戶好像做不了實名認證,所以就只能請公司在大陸申請商家帳號了,由於公司申請淘寶商家帳號花了不少時間,所以直到最近才拿到一組可以讓我測試的商家帳號。

有了實名認證的商家帳號後,就可申請應用程序,有了自已的應用程序就有app id和app secret,詳細申請方法可參考下列網址:
http://dev.open.taobao.com/dev/index.php/Taobao_ID(淘帐号)产品介绍

申請好之後可以從開發者中心登入,登入後選擇「應用管理」->「應用列表


在應用列表頁,可選擇應用程式圖標,名稱,或右側的修改連結進入「開發測試」頁。

在開發測試頁,在預設的情況下是處於「沙箱環境開發」之狀態,在填入表單中的必填欄位後,即可點選下方之「進入正式環境測試」。
沙箱環境和正式環境的差別在於,在沙箱環境所做的任何行為都只是在一個模擬的淘寶網環境,不會影響到正式環境,但有些功能只有在正式環境才比較好測試,如搜尋功能。
正式環境測試是有時間和次數限制的,目前的情況是,每個App只有3次進入正式環境測試的機會,每次可以有5天的時間做測試,所以,如果要進入正式環境,最好還是先做了充份的準備再進去會比較好。
點選左側下方的「配置沙箱環境」連結,可進入配置沙箱環境頁。



如果要在沙箱測試到較完整的功能,建議註冊兩組沙箱測試帳號,「普通帳號」和「商城帳號」各申請一組,並將商城帳號與App綁定。

接下來,我們可以用API在綁定的沙箱商城帳號中上架,但在此之前需先做商城類目授權,也就是說,我們只能在商城中販賣有得到授權的類目的商品。
登入沙箱商城後,點選左側選單的店舖管理->「商城類目授權」。

從「選擇經營類別」選項中選定一個類別,按右側的「搜索」鈕,下方會出現子選項,選定你所要授權的類別後,點選列表下戶的「授權」按鈕。
類目授權完成後,需要等到隔天早上才能生效,之後才能在API中使用你所要使用的類別。


接下來,可以試著用「API測試工具」新增商品。
測試時,記得點選app_key右側的「自定義」按鈕,填入前面申請好的app_key和app_secret。


在上圖表單中,選擇不同的API類目,則API中的選項會跟著改變,而選擇了不同的API,則下方會根據所選的API出現不同的表單。
若要新增商品,可在API類目選擇「商品API」,API選擇「taobao.item.add」,選好後,下方會出現下圖之表單,右側有號的為必填欄位。
當你把游標停在右側的「說明」上方,數秒後可看到該欄位的說明,也可從表單上方的「API详情」連結查看各欄位之詳細說明。
其中要注意的欄位是cid,也就是類目id,此id需使用「API属性工具」查出來。

在「API属性工具」介面中,選擇你在沙箱商城中申請好的類目,則表單右側會出現其所對應之cid。

根據所選的類目的不同,下面幾個欄位的值也會有所不同,如果該欄位有值,則應將各值填到「API測試工具」中所對應的欄位中。

新增商品成功後,可使用查詢API,依照所產生的num_iid來查詢,或到沙箱商城的「商品管理」頁面,亦可找到該商品,也可以用你申請好的買家帳號去登入沙箱商城,購買該商品。

2011年9月1日 星期四

Facebook API PHP SDK試用心得

最近在研究Facebook API,但發現中文的教學似乎不多,而且也有點過時,教程中用的方法和現在的PHP API已經有相當大的差異了,目前能依靠的主要還是官網的說明文件,但也只有英文的,而且由於FB做了很多種API,而且我覺得人心木說明文件整理的不是很好,要東一角西一塊的找,不是很容易上手,所以就將自已上手的過程寫出來供有需要用的人參考。

要使用Facebook API PHP SDK,可依照下列步驟進行:

1.須先向Facebook申請一個App,詳細說明可參照「申請Facebook應用程式的步驟說明」。

2.申請完成後,PHP SDK必須在指定網址才能夠執行,請務必放在您所輸入之網址下,而App ID和App Secret則要記下來,在使用PHP SDK時需要用到。



3.從「文件」->「SDKs & Tools」->「PHP SDK」到下載頁,按下Download按鈕。


4.下載完後解壓縮,放到你所指定的網址下的任一個目錄

5.在你想寫的程式中加入下列程式碼,
請將你的App ID和App Secret取代程式中的YOUR_APP_ID和YOUR_APP_SECRET。


    require 'php-sdk/src/facebook.php';


    $facebook = new Facebook(array(
      'appId'  => 'YOUR_APP_ID',
      'secret' => 'YOUR_APP_SECRET',
    ));


    // Get User ID 
    $user = $facebook->getUser(); //$user為所登入用戶之ID




6.可用下列程式碼確認用戶是否已登入,並用$loginUrl或$logoutUrl來引導用戶登入或登出:


    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
      $loginUrl = $facebook->getLoginUrl();
    }


7.$facebook->api()方法,是呼叫Facebook API的接口:


    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');  //取得用戶在Facebook的基本資料
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }   



8.也可執行examples目錄下的example.php,只要正確登入Facebook,再稍微修改一下$facebook->api()中的指令,就能知道怎麼用了。

9.關於Facebook API的指令,可參考Graph API 說明文件

10.目前試過:
'me' 可取得所登入用戶之基本資料。
'me/friends' 可列出登入用戶之所有朋友之姓名及id。
'me/likes' 可列出登入用戶之所有like的專頁。
可用https://graph.facebook.com/<?=$id?>/picture來取得指定$id之照片。
其他還有很多功能,目前還沒試出來。


上述的me也可以替換成指定用戶之id,但有些功能如果不是該帳戶本人或朋友則無法使用。

基本上應用程式是可以很容易收集很多Facebook用戶的基本資料,因為只要有一個用戶同意使用該App,則表示他的所有朋友的基本資料都可能被該應用程式所取得,雖然都是一些如姓名,性別,所在地區,id等等...非常「基本」個人資料,但如果收集到了足夠數量的資料之後,是可以很輕易的依據該應用程式的功能及用戶的使用狀況來做各種數據分析的。


申請Facebook應用程式的步驟說明

由於要開發各種Facebook Application都要先申請,所以將這些共同的步驟單獨整理成一篇。


要申請Facebook應用程式,可依照下列步驟進行:

1.需先進入Facebook開發者網站


2.選擇上方選單的「應用程式」連結


3.同意「開發人員」程式之授權請求,如果之前有同意過就不會再出現了。


5.輸入App Name,選擇地區,按確定

6.輸入驗證碼後,按碼認

7.完成,整個流程最主要的目的就是要為你的App產生一組App ID和App Secret,在套用SDK時往往需要將App ID及App Secret加到程式中才能夠合法使用Facebook API,至於其他設定,則視要開發什麼App才能決定了。


後續要開發什麼App,可參考:

2011年8月25日 星期四

我對海基會九二共識的解讀

最近藍綠和共產黨為了九二共識存不存在的問題吵得很大,
於是,海基會拿出1992年11月中國海協會來函,裡頭寫著:
在相互諒解的前提下,採用貴我兩會各自口頭聲明的方式表述一個中國原則』,
海基會秘書長高孔廉強調,這就是『九二共識』達成共識的開始。
相關內容可參考:http://web.pts.org.tw/php/news/pts_news/detail.php?NEENO=189071


看來九二共識似乎是存在的,從字面上來解釋,似乎就是這幾年來國民黨一直在說的「一中各表」了,但仔細想想,這其中是有很大的陷阱的,因為他的解釋可以不只有一種,也許他可以解釋成「一國兩制」,我想中共應該是如此解讀的。
關於一國兩制的相關說明,可參考:http://zh.wikipedia.org/zh-tw/一國兩制

從一國兩制的歷史來看,他的出現要比1992年要早了十年以上,如果我們回到那個時代背景,看到共產黨寫來的這句:『在相互諒解的前提下,採用貴我兩會各自口頭聲明的方式表述一個中國原則』,你會如何解讀?我想如果在當時,我會把他解讀為,中共希望國民黨在接受「一國兩制」的前提下來與他們對談。


在我從學生到當兵的年代,一國兩制的字眼並不陌生,而且,國民黨也很明白的告訴我們,一國兩制是騙人的,是中共統戰的技倆,而且也是絕對不可以接受的,類似的文章,現在在陸委會的網站也還能找到:http://www.mac.gov.tw/ct.asp?xItem=45564&CtNode=6075&mp=1,是1998年國民黨執政時所寫的。我想這也就是為什麼後來國共談不下去的原因,因為當時國民黨應該很清楚的知道「九二共識」對中共來說,就等於「一國兩制」。

這幾年來我一直覺得很奇怪,為什麼民進黨一直說九二共識並不存在,但國共卻一直要民進黨承認他的存在?要證明他的存在真的有這麼難嗎?就算他真的不存在,難道國共就不能一起出來解釋他們所謂的「九二共識」是什麼嗎?如果在談相關合約的時候,在前面明確註明九二共識的意涵,或把九二共識另外寫成一個合約來加註進來,真的有這麼難嗎?這麼簡單的道理,難道他們會不知道嗎?答案很簡單,因為他們想要保留彼此之間的模糊地帶,各自解讀。接著,國共就可以取所需,各自進行其後續的動作,我不清楚國民黨真正的目的是什麼,但我想我可以很清楚的知道共產黨的目的就是實現「一國兩制」。

從1992年到2000年之間,為什麼國共會沒有進展?原因很簡單,因為國民黨當時在台灣的勢力還很大,所以是絕對不會接受「一國兩制」的。那為什麼2008年之後就突然有快速進展了呢?我想原因也很簡單,因為國民黨越來越清楚台灣已經不是他們的舞台了,如果他們不借重中共的力量,他們很難做出好的政績,於是他們終於願意接受包著「九二共識」糖衣的「一國兩制」,這樣,他們不但能夠有比較大的機會保住政權,也許還有機會返回大中國的舞台,這麼簡單的道理,我想國民黨的高層不會不知道,只是不能說出口而已。而共產黨則基於統戰的目的,當然也不願意說穿囉~

從上述推論來看,民進黨所謂的「九二共識不存在論」是合理的,因為在當年,國民黨並沒有接受共產黨的提議,既然當年「九二」沒有接受,當然不能稱之為「共識」,如此一來,「九二共識」當然是不存在的,如果要說,也只能說,國民黨在2008年,接受了共產黨在1992年提出的「一國兩制」之建議。

而國共所說的「九二共識存在論」,其實也有一定的道理在,畢竟這個說法是在1992年提出的,而其話中的內容確實是希望達成某種共識,雖然國民黨不是在1992年接受的,但他確實也是共產黨當年希望國民黨接受的一個「共識」。

因此,就我個人觀點來看,這個爭論表面上看似沒意義,其實中間的意義在於要不要接受共產黨的「一國兩制」,基本上我個人認為「一中各表」只是國民黨給九二共識所加上的另一層糖衣罷了,也就是說,經過十六年的人事變遷,國民黨其實已經接受了共產黨的「一國兩制」。

以上言論純屬就事論事的推論,不代表個人之政治立場,也可能因為我手頭的資料的不週全而有所忽略的地方,如有其他事證或見解,也歡迎指教!

2011年8月7日 星期日

iOS 5 iPhone Beta 4試用心得(一)

從安裝說起
因為是Beta版,所以只有付費的iOS開發者才能夠下載。
由於之前從iPhone 3.x升到4.0 Beta時,有遇到某些問題導致必須降回3.x版,而Apple官方通常不提供降級的解決方案,必須尋求第三方的解決方案(JB之類的)。
所以從那次以後,如果不是有很吸引我的功能,實在不太願意去嚐試iOS的Beta版。
原本真的是不打算安裝的,但後來發現iCloud可以用了,我想這是很重要的功能,以後如果要開發可在iPhone和iPad上都能用的App,就可以用這個功能來提供更好的服務,所以在iCloud的引誘下,還是決定裝來試試看了。

安裝iOS 5.0 Beta版之前,通常需先下載Beta版的相應軟體 iTunes & Xcode,才能夠用他們來安裝iOS Beta版,相關檔案可到iOS Dev Center下載:
http://developer.apple.com/devcenter/ios/index.action

下載完後安裝,發現Xcode和iTunes都不讓我安裝,只好上網尋求協助,還好找到解決方法了,下面網站提供了完整的安裝教學:
http://www.thinkingcap.com.au/news/guide-installing-ios-5-beta

第一次開機


初次開機的畫面和4.x版以前有很大的不同,之前的版本都必須先接到iTunes上去註冊,現在不需要了,改成用精靈的方式一步步引導用戶設定。







當然,還是可以使用iTunes去做還原。


主畫面


這次的基本功能主要是多了提醒事項書報櫃

書報櫃:目前似乎無法使用。

提醒事項:可輸入要做的事情,除可選擇提醒的時間,亦可選擇地點。


音樂,視訊:只是把原本iPod中的視訊抽出來做成另一個App,和iPad一樣。









鎖定畫面
在鎖定狀態下,

按一下Home鍵時,的鎖定畫面和原來是相同的。

而當連按兩下Home鍵時,則右下角會出現照相機鈕,
按下後可直接開啟相機進行拍照。













iCloud


設定頁面,從圖可看出開關按鈕的風格和4.x版不同了




































儲存與備份設定,每人有5GB的免費儲存空間。






















除了免費的5GB之外,還可以加購10GB,20GB,50GB,平均每10GB的年費為20USD。









































如果在AB設備開啟了照片串流的功能,且AB使用同一個iCloud帳號時,一旦用A拍了新照片,拍完後大約1分鐘左右,就能在AB的相簿中的照片串流圖庫中都看到剛才所拍的照片。




















另外,可從www.icloud.com登入查看或下載iCloud的內容。









Notification Center

用手指從狀態列開始往下划動,會出現訊息列表,感覺和Android差不多,但看起來畫面相當細緻。






















提醒事項

按下左上角的+鈕,可新增提醒事項。

如果該事項已完成,可點選左側的確認框,則該事項會消失,並顯示在已完成事列表中項中。

如果要設定詳細資訊,可點選該事項右側的>鈕。

點選事項名稱可修改名稱。

點選提醒欄,可指定時間或位置,詳如下圖。


指定位置可使用目前位置,或是從連絡人名單中的連絡人地址中指定。

可設定是要離開的時候,或是抵達的時候做提醒。

當然如果要指定位置,則會被要求開啟定位功能。

但如果沒有開啟3G功能的情況下,也有可能到了指定的地點,他仍然沒有做提醒,似乎是要在能上網的狀態才能辨識地點。











當指定時間或地點到了,就會發出提醒。

在鎖定狀態下,可直接按住提醒事項圖示往右划,就可直接進入提醒事項,將他設為已完成,或修改提醒時間地點等動作,這是屬於Notification Center的功能,應可套用到其他相關功能上,如行事曆,簡訊,電話,推播通知等等...


















iWork

官網還是供了Pages, Numbers, Keynote讓開發者試用,而在裡面寫好的文件都能同步到iCloud。

















另外聽說有人在Beta 3測試到可以將FaceTime的畫面用Air Play的方式顯示到電視螢幕上,但目前雖已將Apple TV也升到Beta 3,但還是找不到相關按鈕。

2011年7月29日 星期五

用PHP寫的Google Pie Chart (圖餅圖) API Class

最近在用PHP做一些Server的數據分析,做到一個程度後,突然覺得如果能把分析的結果做成圖表,可能會比較好,於是就開始找PHP的Chart Library,找到了幾個雖然都能用,但還是覺得不太滿意,到後來我想做圓餅圖時,就找不到什麼Library了,後來發現了原來Google有做了很強大的Chart API, 只要把相關參數用GET的方式傳到:http://chart.apis.google.com/chart,Google就可以幫我們做出我們要的圖表。


先直接用API畫個簡單的圓餅圖,


URL如下:


畫出來的結果如下圖:
圖1

詳細用法可參考官方說明文件:
http://code.google.com/intl/zh-TW/apis/chart/image/docs/gallery/pie_charts.html

由於我是要把自已分析好的各種數據做成各種圖表,如果每次要做圖,都要用這種方式搞一次,會讓我覺得很累,所以就先把Google Chart寫成一個基礎的Class, 之後再依據自已的需要針對各種圖表去繼承他。

以上面的例子,我只要先寫好一個GoogleChart.php的腳本,再像下面這樣寫,就可以做出上面的圖表(圖1)了。


include("GoogleChart.php");
$chart = new GooglePieChart(400,200);
$data = array(3,4,5);
$labels = array("標籤1","標籤2","標籤3");
$legends = array("圖例1","圖例2","圖例3");
$chart->setData($data,$labels,$legends);
$chart->draw();


雖然表面上看起來字是比較多,但實際上會比較容易理解,而且不管我的數據是什麼,我只要用1個陣列,就能產生出另外2個陣列來畫出我要的圖表,到時候也就差不多這幾行,另外一個好處就是,如果將來沒有其他特殊需求的話,以後就算過了很久,就算我都忘了Google API是長怎樣的了,但我只要看到上面那幾句,就能夠直接套用而不必再去爬文了。

GoogleChart.php程式如下,有需要的可以自已copy回去用:

class GoogleChart{
    var $width,$height;
    var $chart_type;
    var $api_url;
    var $parameters;
    function GoogleChart($w,$h,$type,$url="http://chart.apis.google.com/chart"){
        $this->parameters = array();
        $this->width = $w; 
        $this->height = $h; 
        $this->chart_type = $type;
        $this->api_url = $url;
        $this->parameters['chs'] = $w."x".$h;
        $this->parameters['cht'] = $type;
    }   


    function draw(){
        $url = $this->api_url;
        $params = array();
        foreach($this->parameters as $key => $value){
            $params[] = "$key=$value";
        }   
        $url .= "?".implode("&",$params);
        header("Location: $url");
    }   
} //class GoogleChart

class GooglePieChart extends GoogleChart{
    function GooglePieChart($w,$h,$type="p"){
        parent::GoogleChart($w,$h,$type);
    }   

    function setData($data,$labels=null,$legends=null){
        $this->parameters['chd'] = "t:".implode(",",$data);
        if($labels) $this->setLabels($labels);
        if($legends) $this->setLegends($legends);
    }   

    function setLabels($labels){
        $this->parameters['chl'] = implode("|",$labels);
    }

    function setLegends($legends){
        $this->parameters['chdl'] = implode("|",$legends);
    }
} //class GooglePieChart extends: GoogleChart

class GooglePieChart3D extends GooglePieChart{
    function GooglePieChart3D($w,$h){
        parent::GooglePieChart($w,$h,"p3");
    }
}

2011年7月25日 星期一

Mac OSX 10.7 Lion 使用心得(一)

左圖是我的主機配備,是10.7才有的「關於這部Mac」訊息頁,這一代顯示的訊息比前一版的還完整。

雖說Lion出來已經有好幾天了,但根據過去使用各種OS的經驗,剛出來的OS最好不要輕易嚐試,尤其上次從10.5升10.6時,發現原本4G的RAM可以開好幾個VM來玩Windows 3D Game,還可以同時用Safari到處亂逛,都還能很順暢,豈知一升級後,就不太夠用了,當然正常使用的情況下還是很夠用。

前一陣子把Xcode升到4.0,雖然好用,但吃記憶體超兇,隨便開幾個Interface Builder就會把記憶體吃光光,原本在這種情況下,我是不敢去升級OS的,還好前一陣子突然從某個管道得知雖然這台MB官方說只能升到4G,但其實是可以升到8G,一試之下,果然可以,真是太爽了!有了8G RAM,我想再怎麼樣也夠我玩獅子了吧?

雖然如此,我也還是不放心,直到前天看到新聞上說第一天下載量就有100萬次,看了一下評價,似乎還不錯,會跑不動的都是只有2G RAM或款式過舊的主機,看到有人用跟我差不多的4G MBP,說跑起來蠻順的,而且跑VM也蠻順的,就鼓起勇氣點(買)下去了。

點下去之後,下載的速度還算蠻快的,大概1小時多就下完了,安裝也沒有花很多時間,大概半小時左右,原本我比較擔心的是升完級後,用TC備份會超久(之前升10.6時,備份了200G,大概花了兩天),這次倒是蠻快的,300G左右的硬碟使用量,只備份了8G的份量就完事。

整體上來說,雖然有發現一些小Bug或美中不足的地方,但這一代確實又比上一代更好用了,而硬體需求當然也更高了,基本上2G記憶體應該是不夠用的,另一方面由於動畫效果又更華麗了,所以3D資源也吃得比較兇,所以如果要用VM玩Windows 3D Game,就會比較吃力,因此如果是超過3年以上的Mac中低階款式要升10.7,最好還是直接買新主機吧。

如果是Mac OS的老用戶,起初可能會比較不習慣,主要最大的差別在於捲視畫面時的捲動方向,跟之前是上下左右完全相反,起初我也是不太習慣。

如果想切換回舊的方式,可從系統偏好設定->滑鼠(下圖左),或系統偏好設定->觸控軌跡板(下圖右)的「捲視方向:自然」選項改回去。



但其實以這一代的概念來說,他是以觸控螢幕的角度去切入,所以思維上和之前傳統設備都不同了。
簡單的來說,從前的捲視,捲動的是視窗右側或下方的捲軸控件,而現在的思維則是以手指去撥動整個頁面或視圖。
只要運用自已的想像力,把自己捲動的對象調整一下,就當做自已是在用iOS的設備,手指就像是在螢幕上面滑動,自然就能得心應手。

因此,從上述改變來看,Apple的目的是想把OSX改得像iOS,讓只用過iOS而不熟悉電腦的客戶群更容易上手,從而將iOS市場的用戶拉到Mac市場。
另一個方面,滑鼠和軌跡板畢竟不是觸控螢幕,因此這種操控方式仍然不夠直覺,個人推測,這種介面很可能只是一種過渡期的產物,OSX的觸控螢幕電腦應該會在不久後問世,而他有可能不只是一台平板電腦。
甚至在下一代,或後幾代,Apple會在某個時間點把iOS和OSX整合在一起,想來也是順理成章的事,當然這都是我個人的推測。

2011年7月22日 星期五

淘寶網API學習心得(一)

由於最近工作上需要,研究了一下淘寶網的API,在此將我是如何上手的心得分享上來,希望能夠幫助有心想使用這個API的人上手。

以下網址為淘寶開發文件的首頁,內容還蠻豐富的,豐富到對於沒經驗的人可能會不知該從何下手。
http://open.taobao.com/dev/index.php

以下網址為API目錄,基本上已針對客戶的各種需求做了很好的分類。
http://my.open.taobao.com/apidoc/main.htm

實際上,要上手並不難,不需要先去讀他繁雜的文件,只要先用一次他們所提供的測試工具,基本上只要對HTTP協定有一點概念,在這方面有一點點開發經驗的人,只要看到這個工具,隨便試用一下,就已經算是上手了,測試工具網址如下:
http://my.open.taobao.com/apitools/apiTools.htm

測試時如果不知道各參數該如何下時,別忘了回到API目錄,針對您所要測試的API文件,查詢相關參數的說明。
http://my.open.taobao.com/apidoc/main.htm

如果還是不清楚他的原理,可以參考官方提供的快速上手指南。
http://open.taobao.com/dev/index.php/快速上手指南

關於進一步的測試心得,可參考「淘寶網API學習心得(二)」。