跳到主要內容

開發臉書AP你不可不知道的事-Developer Roadmap

故事的開端與無窮迴圈

這幾天修了一個邀請朋友的UI bug,這個畫面大家應該都不太陌生:

2010年我剛做這個應用程式時,是使用Javascript SDK去parse XFBML的方式,一直正常使用到2012年7月初:

<fb:serverFbml width="755">  
  <script type="text/fbml">  
  <fb:fbml>
  <fb:request-form action="${ap_url}"
    method="POST" invite="true" type="XFBML"
   content="歡迎一起使用登出國軍倒數計時器 <fb:req-choice url='${fb_apurl}' label='開始使用' />  " >
   <fb:multi-friend-selector showborder="true" exclude_ids="${exclude_friend_string}" actiontext="邀請你的朋友加入"/>  
  </fb:request-form>  
  </fb:fbml>  
  </script>  
</fb:serverFbml>

現在改用FB.ui去叫出邀請朋友的dialog,在兩年前是沒有這個method的:

  FB.ui({
    method: 'apprequests',
    message: '讓我們一起來倒數吧!'
  });

除了這個故事外,還有許多改變在我維護臉書應用程式時,偶爾跳出來荼毒我。讓我想到一個很重要的觀念: 「沒有完美的軟體」。如果做出了一個超強的雲端殺豬系統,但除了殺豬又要可以燉東坡肉與煮滷肉飯,這樣要怎做到time to market? 九品工程師用加班達到time to market的話,會不會導致肉的調味不正卻而讓使用者怯步呢? (不懂含意請自行翻閱笑談軟體工程 Page.18)

言歸正傳,這故事告訴我們: 「Facebook在不停的改變,我也要不停的改變。」

Developer Roadmap

Facebook算很有良心,提供了Developer Roadmap讓你知道: 它即將要廢掉你的什麼武功。點擊開發人員頁面中的部落格 Tab就可以找到Developer Roadmap:

這頁面包含兩個項目: Blog與Developer Roadmap。Blog為臉書開發人員的Blog,裡面會發佈即將可能出現的新功能,或較瑣碎將改變的功能,可選擇看或不看。Developer Roadmap較重要,在改變生效的90天之前,會先公布於Roadmap中,這是它的90-day breaking change policy。因此在這裡你可以看到即將要做的改變是什麼。舉例來說,8月1號即將生效的修改是: 1. 將不支援FB.Canvas.setAutoResize(調整Cavas大小的JavaScript API); 2. Graph API/FQL Page Post GETs操作的權限調整。

在你看到之後,就可以提早將FB.Canvas.setAutoResize改用FB.Canvas.setAutoGrow,而Page Post GETs操作要多加上Access_token。對Facebook來說,功能的改變、舊功能的相容、存取權限的改變都會出現在這裡。哪天你的程式不會動了,不妨來看看這寫了些什麼。(前陣子還遇到書籤功能已經被Facebook列為預設的功能,因而導致fb:bookmark標籤的廢止)

Migrations in App Setting

在功能改變生效之前,Facebook提供了Migrations功能讓你可以預先知道你的應用程式是否能正常使用。這個設定位於應用程式設定>進階中:


在Migrations中,會列出即將要生效的改變,這可以和Developer Roadmap中所列出的對應。在你將應用程式修改到符合新的存取方式或使用了新功能後,就可以透過這個設定去做Preview。不可否認,Facebook還蠻貼心的呢!

Summary

這篇文章告訴你兩個重點:

  1. 養成關注Developer Roadmap習慣,也許是一星期一次。這將能讓你的程式永遠在最新的狀態,並減少Facebook造成你應用程式產生Bug的機會。
  2. 不要怕改變,將改變當作學習新知的機會。O'Reilly有出一本FBML的書籍,但Facebook在2012年7月後不再支援FXBL後,它們會怎麼樣嗎? 當然是再出一本新的書去講解新的API啦!

友藏內心獨白: 我也不希望它變來變去阿!

留言

這個網誌中的熱門文章

PostgreSQL - Unattended installation on windows

Introduction 要將別人軟體包裝到自己軟體中,不可或缺的東西就是Unattended installation。以Unattended installation來說,我們可以選擇透過Installer的silent mode安裝,也可以透過把目標軟體做成portable的版本。本篇文章分享這兩種方法,教導大家如何將PostgreSQL透過Unattended installation方式安裝到目標系統成為service。 Note. 本篇以PostgreSQL 10.7為例。 Install with installer Tips 安裝程式或反安裝程式的參數,除了可以直接上官網搜尋Installation User Guide以外,也可以直接使用help參數查詢: postgresql- 10.7 - 2 -windows-x64.exe --help Windows安裝程式主要有EnterpriseDB與BigSQL兩種。BigSQL版本安裝元件是透過網路下載且支援參數不如EnterpriseDB版本多,以我們需求來說,我們傾向於使用EnterpriseDB版本。接下來分享給大家安裝與反安裝方法。 Installation @ echo off set INSTALL_DIR =C:\postgres10 set INSTALLER =postgresql- 10.7 - 2 -windows-x64.exe   rem options for installation set SSMDB_SERVICE =postgresql- 10 set MODE =--unattendedmodeui none --mode unattended   set DB_PASSWD =--superpassword postgres set DB_PORT =--serverport 5432   set SERVICE_NAME =--servicename % SSMDB_SERVICE %   set PREFIX =--prefix "%INSTALL_DIR%" set DATA_DIR =--datadir "%INSTALL_DIR%\data"   set OPTIONS =

How to install RIDE on Windows?

Introduction 多年沒在Windows上開發RobotFramework,趁著這次整理一下RIDE安裝方法。 目前RIDE最新版本與Python對應版本如下: (3.6 < python <= 3.11) Install current released version (2.0.8.1) with: pip install -U robotframework-ride 安裝Python 直接到Python官網找尋最新的3.11版本,我使用3.11.9: link 。安裝就是一直下一步而已。 安裝wxPython 每次安裝RIDE最困難的都是wxPython。看了一下 官網 描述,我就姑且相信一下: 接著進入下 載頁面 就有安裝教學。基本上就是到Python目錄下的Scripts直接執行以下command: pip install -U wxPython 安裝RIDE 接著就如RIDE官網所說,執行以下command: pip install -U robotframework-ride 啟動RIDE 直接在相同目錄下執行ride就可以啟動了,你也可以直接在桌面建ride連結,加快下次啟動時間。 沒想到這次這麼順利就安裝完成了。因為我是使用java去啟動robot framework,就不特別講要怎麼使用pip安裝robot framework了。

Hello World!

即將要搬家,因此舊網頁內容將慢慢轉移至Blogger。 如果要存取舊網頁,可以使用以下連結: https://wiki.tonylin.idv.tw/dokuwiki/doku.php