[Android] SwipeBack 右滑關閉函式庫

Android 目前還沒有內建的右滑關閉功能,如果要關閉既有頁面,只能使用螢幕下方或Toolbar 左上角的返回按鍵,不是很方便。

試用了一下 Github 上眾多的右滑關閉函式庫,多數函式庫都不支援新版 Support Design Library 的 CoordinatorLayout,操作上也很不穩定,有時用手指稍微移動一下頁面就會關閉。

這篇要介紹的是 sockeqwe 寫的 SwipeBack,這個函式庫支援新版 Support Design Library,也不需要在 Layout 自訂額外的佈局,也不用修改樣式,只要加幾行程式碼就能實現右滑關閉的功能。
更新:目前最穩定,且持續有在維護的 SwipeBack 函式庫是這個 
https://github.com/tyzlmjj/SwipeBack

先看一下官網的 Demo 展示:




使用前要先導入 SwipeBack 函式庫
compile 'com.hannesdorfmann:swipeback:1.0.2
程式碼如下,第六行可以設定上下左右不同方向的滑動關閉,原先設定 Activiy 佈局的setContentView,改成用第七行的方式,第八行的佈局則會顯示滑動時的指示(文字 Back 加上兩個箭頭),如不想讓這個指示出現,可以參考原程式自訂一個佈局,把顯示的部分全部隱藏,再將背景設定為透明,就能隱藏指示。

SwipeBack 這個函式庫將右滑關閉變得很容易實作,在應用程式加上這個小功能,可以增進使用者體驗。


分類:

DevOps 推薦書藉

目前市面上仍少見到 DevOps 的書籍,以下推薦兩本我曾接看過的 DevOps 書籍。

分類: ,

[Android] BuildConfig.DEBUG

在開發 Android 時,有時候我們需要寫 Log 以方便開發測試,但不想讓這些程式在發佈時執行,通常會自訂一個 Debug Flag 來判斷,上架前再手動將這個 Flag 設定成 False。這樣作挺麻煩的,有時候上架前還會忘記改。

在 ADT r17 版增加了 BuildConfig.DEBUG 的設定機制,以下是官方網站的描述:
Added a feature that allows you to run some code only in debug mode. Builds now generate a class called BuildConfig containing a DEBUGconstant that is automatically set according to your build type. You can check the (BuildConfig.DEBUG) constant in your code to run debug-only functions.
這個機制允許開發者只在 Debug 模式下執行部份的程式,在 Android Build 時會產生一個 BuildConfig Class,從 Android Studio 可以找到這個 Class,裡頭包括了 DEBUG 變數。


當APP上架前打包成APK檔時,BuildConfig.DEBUG就會自動改成 False,如此可免去每次上架前要手動設定的步驟。


分類:

稀土掘金:技術文章交流平台

資訊技術變化快速,身為專業的工程師,必須隨時吸收技術新知。才能在多變的職場上,獲得更多機會。

在台灣多數工程師的技術新知管道,是Facebook粉絲團所分享的文章, 而且所分享的文章,以英文和簡體中文為主,繁體中文文章的量不多。但我個人極不愛Facebook,不僅是隱私權的關係,而且它還是個「資訊黑洞」(在Facebook上所發表和討論的文字,在搜尋引擎上之找不到)。

分類:

[Android] Jsoup 網頁內容擷取函式庫

Jsoup 是一款相當知名的 Java 函式庫,許多開發者常使用它來擷取網頁的資料。以往將  Jsoup 使用在 Android 應用程式上,會有效能上的問題,網頁擷取速度不快,偶爾會遇到頁面阻塞的狀況。然而在 1.8.3 版本的釋出之後,大幅改善 Android 效能的問題,依照 Jsoup 官網的說法,新版本大幅改善 HTML 頁面擷取的效能,在Android 4.4 上測試比舊版快1.7倍,Android 5.x則快了1.3倍。

分類:

Feed43 - RSS Feed產生器

有時候需要隨時關注某個網頁上的資訊,可是該網頁沒有RSS Feed可以訂閱。此時,可用Feed43來幫我們產生RSS Feed。我們可以把產生的RSS Feed,加入常用的RSS閱讀器,或者將它當成來源資料,供其他系統和程式來使用,真是送禮自用兩相宜。

這裡我用一個案例來說明,我時常到台北市圖書館借書,因此需要關注圖書館是否有新書可以借閱,我們就可以利用Feed43,根據自己喜好的條件產生新書的RSS Feed。(事實上台北市圖已提供新書通報的RSS服務)

先到台北市圖館藏查詢系統,依自己喜好的條件來查詢新到圖書。

顯示查詢結果後,將上方的網址複製下來。

然後,請到 http://feed43.com 這個網址註冊一個帳號,註冊程序就不說明了。

成功註冊之後,請到 My Feed,點選「Create new feed」
貼上剛才複製的網址,Encoding輸入utf-8,然後按下「Reload」按鈕


會出現這個網頁的 HTML 碼

然後要觀察 HTML 碼有條列式的部分,例如下圖的 Page Source ,這是一筆新書資料。請將這個 HTML 碼的樣板,依照 Feed43 的內建語法,輸入到 Step2 的 Item 欄位。這裡是要讓程式知道爬網頁的規則。然後按下「Extract」按鈕。

Feed43 的語法,{*}表示全部,{%}表示變數。

Extract 顯示爬出了七筆資料,{%1}{%2}{%3} 則是每筆資料的變數。

Step3 要將上面產生的三個變數輸入下方的對應欄位,{%1}是網址,輸入到 Item Title Template,{%2}是名稱,輸入到 Item Title Template,{%3}是描述,輸入到 Item Content Template。然後按下「Preview」按鈕,就會依照這個規則生成 RSS Feed。
這是最後產生的 RSS Feed 內容,系統以亂數自動生成一個隨機檔名,但這個檔名是可以修改的。

這是最後產生的 RSS Feed 連結

Feed43 免費版可以設定無限個公開網址的 RSS Feed ,RSS 內容每六小時更新一次,意思是說,若你的 RSS Feed 在12:00建立,下次更新時間是18:00,以後每天的更新時間是00:00、06:00、12:00、18:00。

Feed43 官網寫到免費版 RSS Feed 只有 20 筆資料,但我實測後發現沒有限制。(也許這是 Bug吧!?)

很多免費的自動化工具隨手可得,只要稍加利用,就能讓生活變得更有效率。




分類: , ,

如何閱讀一本書

一直有閱讀的習慣,這幾年平均每年都會讀上一百本書。曾經有人問我,工作這麼忙,怎麼還有空看書?我認為,做一件事,只要方法對了並持之以恒,也就沒有時間上的問題了。這篇想要分享的是我的讀書方法。

分類:

[自製App] 樹懶新聞 Sloth News

幾年前寫過一款新聞閱讀器的 App,當時是 Android 2.x 的時代,平台還不夠成熟,很多功能都是自己硬做出來的。那個 App 曾經有五六萬的下載量,評價還不錯,可是最後因故下架了。最近把之前那款新聞閱讀器重新改寫,用了目前 Android 最新的 Design Support Library,相關函式庫的版本也都上到最新,並改名為「樹懶新聞」。

分類:

[Android] Okhttp : 高效能 HTTP 客戶端

Okhttp 是一個 Java 的 HTTP 客戶端函式庫,這個函式庫經常被 GitHub 的眾多開源 Android 應用程式使用。另一個常用的 HTTP 客戶端函式庫是 Volley,若回應的資料量很大,Volley 會有效能上的問題,此時建議改用 Okhttp。

首先在專案中引入 Okhttp 函式庫
compile 'com.squareup.okhttp:okhttp:2.5.0'

底下是一個簡單的 HTTP 請求範例,可是這樣寫,執行起來會出錯,因為 Okhttp 不會把結果丟回主執行緒。
這裡要改用 Callback 的方式(第7行),取得 HTTP 回應。然後從 onResponse 方法取得回應的字串(第20行)。Okhttp 的 Callback 是在背景執行緒執行,不像 Volley 一樣會主動丟回主執行緒。所以在23~28行使用 runOnUiThread,把 HTTP 回應的結果丟回給主執行緒,並呈現在畫面上。


分類:

Openshift上免費的Wordpress服務

更新:Openshift 的舊版 v2 平台已於 2016 年 8 月停止新帳號的註冊申請。新的 v3 平台開發者預覽版,註冊後只能使用 30 天,超過 30 天後帳號會被刪除。

如果想嘗試 Wordpress,但不想買外面的空間服務,也不想自己安裝的話,Openshift 上提供的 Wordpress 服務,是目前 PaaS 平台上,較划算的選擇。

Openshift 是 Red Hat 的 PaaS 平台,我曾經使用過一陣子,覺得非常穩定,速度也比其他家的 PaaS 平台快。

Openshift 的 WordPress 服務的免費方案有1 GB的空間,流量免費,可以綁定自己的網址,還支援 FTP 和 SSH,另外也可用 myPHPAdmin 來管理 PHP 和 MySQL。

以下說明在 Openshift 啟用 WordPress 的程序。

首先要在Openshift註冊帳號,註冊網址如下:
https://openshift.redhat.com/app/console/applications

完成註冊之後,回到Openshift Web Console,點選「Create your first application now」新增應用程式。

接下來是設定這個應用程式的公開網址,請自行取名。

然後選擇機房位置,預設選擇 aws-us-east-1(AWS美東機房),完成之後按下「Create Application」,開始創建應用程式。此時需要靜待幾分鐘,這段時間 Openshift 會自動安裝Wordpress程式,並完成後台相關設定。

最後完成的畫面如下,顯示 MySQL 的帳密和連線方式,以及欲修改程式時,git repo 的連線方式。

日後可以從 Openshift Web Console 做為應用程式維護的入口。

如果要安裝 phpMyAdmin,可以點選下方的「Add phpMyAdmon 4.0」進行安裝。從上方的應用程式連結可以開啟 Wordpress,一個全新的 Wordpress 就會開啟了。若要改成自訂網域名稱或使用 SSL,可以從「change」連結去設定。

首次開啟 Wordpress 連結,會進行應用程式的設定,此為 Wordpress 第一次安裝時的必要步驟,按照指示逐步設定即可完成。



分類: , , ,

IE 終止服務日:2016年1月12日

微軟終於決定在2016年1月12日起終止對舊版 IE 瀏覽器的支援,僅繼續支援 IE 11。這個決定也象徵 IE 時代正式結束。


這對網頁工程師是一個好消息,雖然還有 IE 11和新版 Edge 瀏覽器的相容性問題要處理,但至少在網頁設計時,不必再處理惱人的 IE 6, 7, 8 , 9 , 10 相容性。被客戶問到網站為何不支持 IE 時,終於可以名正言順的說出:「微軟不支援舊版 IE 了!」不爽不要用!

微軟官方網站的說明



分類: ,

Android Studio 升級後無法編譯的解決方法

Android Studio 1.5 版最近釋出,裝好後如果發生無法編譯,並出現以下錯誤訊息:
Android Studio: Error:/android-studio/gradle/gradle-2.4/lib/plugins/gradle-diagnostics-2.4.jar (No such file or directory)


解決方法:將 gradle 路徑指向最新版本

開啟 grade-wrapper.properties 檔案後(位置在 Project Folder > gradle > wrapper ),將最後一行置換為:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

然後重新 Sync,就可以正常編譯了。






分類:

[Android] TabLayout

Android 的 Tab 有很多實作方法,最早是用 TabHost,然後有 SlidingTab 的出現。之前的 Tab 實作方式都挺麻煩的,現在新版的 Android Support Design Library 直接多了一個 Tab 控件 TabLayout,簡化 Tab 的實作方式。

首先,Gradle 要先導入兩個 Android 函式庫。
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'

頁面 Layout 加入 android.support.design.widget.TabLayout 和android.support.v4.view.ViewPager。tabMode 如為 fixed 表示 Tab 會固定延伸整個頁面,scrollable 則允許 Tab 超出頁面範圍時可以捲動。
這是 tabMode = fixed 的效果
這是 tabMode 沒有 fixed 的效果

這是 onCreate 事件的程式。
增加一個 ViewPagerAdapter,來處理 Tab 的內容。在第3行的陣列中再增加一個值,就會多增加一個 Tab。此由第21行的 Singleton 模式處理。

新增一個 class 來處理 ViewPagerAdapter 的 Tab Fragment,好處是不必每新增一個Tab還要增加一個 Fragment。
最終的成品,除可點選 Tab 切換之外,也可左右滑動切換 Tab。

本文的完整程式碼,請自行參考。

參考資料





分類: ,

[Android] Crosswalk: 取代 WebView 的函式庫

Android 原生的 WebView ,必須相依於 Android 底層作業系統。Android 的版本碎片化的情況,也使得 WebView 可能依賴於不同的版本,導致手機 Web App 的開發者不容易控制應用程式的品質。

Crosswalk 是一個由 Intel 支持的開源專案,旨在提供高效且一致的 WebView 函式庫,其背後的引擎使用的是 Chromium。相容於 Android ARM 和 x86 版本、iOS、Windows,也支援 Cordova。

依照 Intel 網站上的說法,Crosswalk for Android 在執行 HTML5 的效能,比 Android 原生的 WebView 更佳。
來源: https://software.intel.com/en-us/xdk/docs/why-use-crosswalk-for-android-builds

以下介紹如何在 Android Project 中使用 Crosswalk。


首先,從 Maven 取得 Crosswalk 函式庫。
這裡要先指定 Maven 的 Repository
repositories {
    maven {
        url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'
    }
}

然後指定函式庫名稱及版本號,這裡的函式庫包含 ARM 和 X86 版本,函式庫約有 40 MB,因此會造成編譯後的 APK 檔案膨脹。
compile 'org.xwalk:xwalk_core_library:15.44.384.12'

在頁面 Layout處,加入以下區塊
<org.xwalk.core.XWalkView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

最後,簡單加上兩行程式碼,就能顯示 Crosswalk 的 WebView。
XWalkView webView = (XWalkView) findViewById(R.id.webView);
webView.load("http://www.google.com", null);

使用 setUIClient,可以藉由複寫 onPageLoadStarted 和 onPageLoadStopped 兩個方法,來得知 WebView 開始載入頁面,和已完成頁面載入。
webView.setUIClient(new XWalkUIClient(webView) {

    @Override
    public void onPageLoadStarted(XWalkView view, String url) {
        super.onPageLoadStarted(view, url);
        Log.d(TAG, "onPageLoadStarted");
    }

    @Override
    public void onPageLoadStopped(XWalkView view, String url, LoadStatus status) {
        super.onPageLoadStopped(view, url, status);
        Log.d(TAG, "onPageLoadStopped");
    }
});

若複寫 onProgresChanged 方法,則可得知網頁載入的進度。
webView.setResourceClient(new XWalkResourceClient(webView) {
    @Override
    public void onProgressChanged(XWalkView view, int progressInPercent) {
        super.onProgressChanged(view, progressInPercent);
        Log.d(TAG, "onProgressChanged = " + progressInPercent);
    }
});

實測 Crosswalk 發現,載入網頁的效能確實比原生的 WebView 快不少,Crosswalk 也支援相當多 HTML5 多媒體 API 可供呼叫,但使用 Crosswalk 造成 APK 檔案過大則會是在使用上需要考量的問題。

最後,要在Activity結束後將WebView釋放,以避免記憶體泄漏的問題。

    @Override
    protected void onPause() {
        super.onPause();
        if (webView != null) {
            webView.pauseTimers();
            webView.onHide();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (webView != null) {
            webView.resumeTimers();
            webView.onShow();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (webView != null) {
            webView.onDestroy();
        }

參考資料






分類:

鍋貼野球

十二強棒球賽正如火如荼進行中,但台灣隊又吃了鍋貼,聯合報的標題寫到「12強棒球賽-中華好強-但,沒進八強」,真是太貼切了。自從1992年之後開放職業球員打國際賽,台灣隊每次都相當悲情,雖然國際賽總是越打越好、漸入佳境,可是還是吃了好多次的雖敗猶榮四海遊龍鍋貼。如往常一樣,這次還是有好多鍵盤教練發文檢討、追討戰犯,但這些都是結果論,於事無補。網路上的檢討文已經夠多了,身為鍵盤球迷,這篇想寫些有建設性的文章。

分類:

如何使用Google查詢即時股價

Google搜尋框除了輸入關鍵字之外,其實還有許多不為人知的密技。例如可以用Google搜尋框來查詢世界各地上市公司的股價。

語法格式:[股市代碼]:[股票代碼]

舉例來說,要查詢蘋果股價,就輸入「NASDAQ:AAPL」,就會出現當日股價,如果過了收盤時間,還會顯示盤後走勢。除當日股價之外,也可查詢不同時間的股價趨勢。

台股的股市代碼是「TPE」,所以想知道台積電的股價,就搜尋「TPE:2330」。

手機上若已安裝Google Now,在Google Now顯示股價列表,點選個股資料,也會連結到Google,帶出這張個股趨勢圖。



分類:

[閱讀筆記] Becoming a Better Programmer

這本書的中文名稱是「成為卓越程式設計師的38項必修法則」,作者Pete Goodliffe是另一本經典書籍「Code Craft」(中文書「編程創藝:編寫出卓越的程式碼 」蔡學鏞 譯) 的作者。

這本書沒有一行程式碼,不是技術書籍,全書以作者的經驗,將工程師在工作中應具備的能力分為38個章節來論述。但不是如中文書名所述,有38項法則。書中花了很多篇幅的章節,介紹新人接手前人的工作後,在沒有後援,而程式碼一團混亂的情況下,要如何「在別人的污物中打滾」,才能因應困境與改善現況。

這本書非常值得閱讀,書中諸多觀點都和「The Clean Coder」一書不謀而合,值得工程師在職涯中參考與遵循。

真要挑惕的話,就是這本書的中文翻譯品質不佳,「單元測試」被譯為「單位測試」,譯者賴屹民翻譯了很多電腦書,卻犯了這樣的錯誤。一般來說,歐禮萊書籍的翻譯品質都不錯,而本書卻是少數的例外。另外,這本書在每個章節末,都附上一則小漫畫,可是翻成中文之後完全看不懂啊!



分類:

資料科學書單

資料科學(或大數據)這個議題最近一直很夯,以下列出最近幾個月我看過的六本相關書籍,以及一點點的閱讀心得,僅供參考。

1. 精準預測:如何從巨量雜訊中,看出重要的訊息?

博客來書店
可讀性 ★★★★★

非常推薦這本書!本書作者Nate Silver曾開發過棒球預測系統,也曾預精準預測2008年美國大選。這本書中,作者分享了他的預測思考方法。這本書原文的直譯書名是《訊號與雜訊》,現實生活中,存在一大堆資訊,這些資訊當中,很多都是沒有用、容易誤導人的雜訊。很多人容易把相關性和因果關係搞混,因此時常出現莫名的新聞和笑話。學習區別相關性和因果關係,可以過濾掉很多不必要的雜訊資訊。


2. 大數據


博客來書店
可讀性 ★★★☆☆

本書作者Mayer-Schonberber是牛津大學教授,上個月曾受邀來台灣演講。這本書主要在講述大數據的概念,適合入門者閱讀。

3. 魔球:逆境中致勝的智慧博客來書店 

博客來書店
可讀性 ★★★☆☆
魔球小說,本書的故事情節曾被翻拍成電影

4. 老虎、蛇和牧羊人的背後:如何在大數據時代破解網路騙局與專家迷思,善用個人力量做出聰明決定


博客來書店
可讀性 ★★★★★

大推這本書,本書書名雖有大數據,但實際內容和資料科學相關性不大,這本書列舉了非常多有趣的例子,說明數據是如何被扭曲和操弄,以至於出現很多的網路騙局和迷思。網路傳言難以分辨真假,不要全盤接受,信以為真,而要有自行判斷是非真假的能力。


5. 輕鬆搞懂數字爆的料:不需統計背景,也能練就數據解讀力


博客來書店
可讀性 ★★★☆☆

6. 如何用大數據強化人才力? Google、星巴克、Whole Foods都在用的解碼管理法則


博客來書店
可讀性 ★★★★☆

這是Klick Health這間公司的經營團隊寫的書,介紹這間公司以資訊系統來蒐集員工資料,並分析來作為專案管理、團隊合作、薪資調整、績效考核等用途,並引用了許多企業內部應用大數據的案例。這是少數大數據相關書籍中,以企業內部應用為案例的書籍。







分類:

新手如何自學一項新技術

投入高手如林的資訊界工作也有十多年了, 因為自己非資訊科系的背景,不但起跑點落後別人甚多,也沒有強者朋友的加持,所以在技術這條路上走的跌跌撞撞。我幾乎全部的技術都是自學的,有些技術雖然有去舫間的訓練中心上過課,可是成效不好,最後還是自己摸索才學會的。

這篇文章想分享自學技術的心得,資訊技術日新月異,也因為開發流程的進化,使得技術更新愈來愈快速,如果缺少「自學」的能力,將來勢必難以在競爭激烈的資訊業生存。

學習新技術可以分成:「學習」、「練習」、「分享」三個階段,分別說明如下。

分類:

[開箱] Google Cardboard 3D眼鏡 KNOX V2

KNOX V2是新創公司knoxlabs在今年五月Google I/O 2015時推出的Google Cardboard 3D眼鏡。其特色是支援六吋螢幕,因此iPhone也能用,另外重新設計按鈕,改為不用磁鐵。



我在六月中上網預定,中間收到knoxloab的兩次延誤通知,第一次是製程延誤,第二次則說是透鏡設計上的瑕疵,所以重新設計。結果八月底寄出第一批貨,我則是九月底才收到。從訂購到收到貨,約三個月的時間。

價格的部分,加運費是30.95美金,約1000台幣,CP值頗高。

收到的是已經組裝好的產品(我原以為收到的產品是厚紙板,要自己組裝),就是一個盒子的保裝。

Google Cardboard在盒子內,如不使用的話,可以折疊後收入盒內,便於收藏

安裝只有三個步驟,接點是魔鬼氈,便於拆裝

這是手機置放的位置。左邊凹陷處是按鈕,按下去有個機關會觸動手機螢幕,在操作手機的Cardboard APP時,這個動作相當於是Enter

整台組裝好的成品,眼睛直接對著透鏡觀看

外觀有QR Code,安裝Cardboard APP後,用手機去掃這個QR Code,Cardboard APP就會知道Cardboard的型號。


延伸閱讀
台幣200元組裝紙盒版 Google Cardboard 眼鏡,動態玩實境遊戲 還能看3D電影




分類: ,

Codota - 好用的程式碼範例搜尋引擎

Codota是一個程式碼搜尋引擎,這個網站會用爬蟲程式去抓GitHub和StackOverflow上的程式碼,並加以分析與分類,提供高品質的程式碼,來解決工程師上網找Code的問題。

Codota目前只有Android程式碼,官方提供了Chrome和Android Studio的套件,讓工程師可以在IDE上直接搜尋程式碼。

以下實際使用Codota來示範一下如何找Code。

例如,我想要找JSON Parsing的程式碼,直接在搜尋框輸入關鍵字,以下是網站找到的結果。右方的CodeRank是Codota分析的分數,加上網友評比的結果,分數越高表示是較可靠和清楚的程式碼。


點選Full Snippet Info,可以看到該片段的程式碼,右方會有程式邏輯的樹狀圖。




延伸閱讀





分類: ,

Postman Web API 測試工具 (新版)

老牌Web API測試工具Postman,去年年底發布新版程式,全面雲端化,並新增很多好用的功能。

先介紹一下Postman這個Chrome plug-in,它用於任何Web API的測試,它可以送HTTP Get或Post的請求給欲測試的end point。並顯示API回傳的結果,以及執行所花費的時間。回傳結果不管是JSon或XML格式,Postman會將格式調整成容易閱讀的樣式。

使用Postman要先註冊帳號,因為這個程式會將你所執行的歷史紀錄儲存在雲端。使用方法很簡單,輸入欲查詢的API連結之後,按下Send按鈕。回傳結果會顯示於下方,回傳結果也可以更換成不同的格式。


此外,除了預設的HTTP GET請求之外,支援POST、PUT等多種HTTP請求。如果選擇HTTP POST的話,可任意新增POST參數。

認證方式有支援OAuth1.0和2.0

右方的程式碼按鈕是Code Generator,可以自動產生包括Javascript、C#、Node.JS、Java等多種類型的程式碼片段範本。



至於Web Service的測試,以往我們得要另行安裝SoapUI,才能在本地端測試Web Service。現在透過Postman,可以直接在Chrome上面測試Web Service,這是官網上測試Soap的範例

以上介紹的是免費功能,至於付費功能,主要是可以做API的測試,還可以透過Postman的命令列模式(Newman),執行自動化測試,並整合Slack和Jenkins。



分類: ,

Parse.com效能調教

Parse.com是後端平台,遇到大量資料的查詢,難免會有效能的問題。雖然這是雲端平台,開發者不能變更系統設置,也不能自行新增索引,而Parse.com的後台儲存媒體其實是MongoDB,只要遵循開發原則,相信對於效能會有一定程度的改善。

Parse.com最近提供Slow Queries的新功能,可以透過網頁介面,查看較慢的查詢,以及查詢語法。這些資料對於效能的調教具有參考價值。

Parse.com官方文件有一個章節專門說明效能的部分,建議在開發之前要先讀過,在此將一些重要的內容摘錄下來。

查詢

  • Smart Indexing:不必自行維護索引,Parse會根據查詢的狀況,很聰明的自動更新索引,以提高查詢效率。
  • 條件查詢盡量使用正向表列,少用Not Equal To和Not Contained In
  • 不建議使用Regular Expression來比對字串的內容,會非常慢
  • iOS和Android可以開啟Client-side Cache來增進App效能
  • 如有通用邏輯,可將其寫在Cloud Code,或利用Cloud Code批次事先整理資料
  • 不要使用Count,在大量資料使用count會非常慢

限制

  • 查詢時若不用limit語法,預設的輸出結果是100筆,最多只能輸出1000筆
  • 一筆資料Record大小限制128KB
  • 單一Class (Table)不可超過64個欄位,欄位名稱不可超過1024個字元
  • 一個App不能超過200個Class
  • Regular Expression,限制是每分鐘不可超過80次
  • Count operation查詢,限制是每分鐘不超過160次
  • 地理位置查詢不可以用OR
  • skip和limit只能放在最外層的查詢



分類: , , ,

Copyright © Andy Cheng

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes Up ↑