SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Android vs EPUB
                           Cd Chen
                  http://www.cdchen.idv.tw/




12年12月21⽇日星期五
陳永昇 (Cd Chen)               A
                http://www.cdchen.idv.tw/   b
                                            o
                學歷:國⽴立台中科技⼤大學               u
                經歷:
                                            t
                 聯成電腦講師
                 恆逸資訊講師
                現職:
                 乃師實業技術總監
                證照:
                 RHCE / LPIC / NCLP
                 MCSA / MCSE
                 OCPJP / OCPJWCD
                 TCSE / NSPA




12年12月21⽇日星期五
⼤大綱

                • ⾏行動 App 的基礎觀念
                • EPUB 的介紹
                • WebView 元件
                • 實作 EPUB Reader

12年12月21⽇日星期五
我假設您已經...


                • 熟悉 Java 程式語⾔言
                • 具備 Android 開發的經驗


12年12月21⽇日星期五
⾏行動 App 的基礎觀念



12年12月21⽇日星期五
什麼是⾏行動 App??



12年12月21⽇日星期五
12年12月21⽇日星期五
12年12月21⽇日星期五
http://www.appleoutsider.de/2012/04/27/q12012-pc-vendor-marketshare/




12年12月21⽇日星期五
http://mrpogson.com/tag/market-share/



12年12月21⽇日星期五
http://wpcdn3.padgadget.com/wp-content/uploads/2012/07/evercore-120716-550x283.jpeg




12年12月21⽇日星期五
⾏行動 App 類型



12年12月21⽇日星期五
12年12月21⽇日星期五
Web-Page App        Native App
           • Web 2.0           • Web Service
           • HTML 5              • JSON-RPC
           • CSS 3               • XML-RPC
           • JavaScript          • SOAP
           • ...               • Streaming
                               • ...

                          HTML / HTTP


12年12月21⽇日星期五
12年12月21⽇日星期五
MVC 設計模式



12年12月21⽇日星期五
12年12月21⽇日星期五
EPUB



12年12月21⽇日星期五
淺談電⼦子書格式



12年12月21⽇日星期五
優點          缺點

                             市佔率⾼高     無中⽂文⽀支援
                   azw       ⽀支援語⾳音    僅⽀支援 Kindle

                mobi / prc   ⽀支援度廣     無中⽂文⽀支援

                             檔案輕巧      無精密排版
                   lrf       翻⾴頁快速     中⽂文⽀支援差
                              精確排版       檔案⼤大
                   pdf       中⽂文⽀支援佳     翻⾴頁慢


12年12月21⽇日星期五
什麼是 EPUB??



12年12月21⽇日星期五
• Electronic
                  Publication

                • 國際數位出版論壇
                  (IDPF, International
                  Digital Publishing
                  Forum)




12年12月21⽇日星期五
EPUB 優點
                • 免費且開放
                • 可重新排版與可重新縮放的字型
                • ⽀支援⾏行列圖⽚片
                • 嵌⼊入式 Metadata
                • ⽀支援 DRM
                • ⽀支援 CSS
                • ⽀支援 影⾳音內容
12年12月21⽇日星期五
EPUB 的版本

                • 2007/09 - EPUB Release
                • 2009/08 - Start EPUB Working
                • 2010/07 - EPUB 2.0.1 Draft
                • 2010/09 - EPUB 2.0.1 Release
                • 2011/10 - EPUB 3.0 Release (Current)

12年12月21⽇日星期五
EPUB 2 vs EPUB 3
                      功能               技術


                ‣⽀支援多媒體格式        ‣增加對 HTML5/CSS3
                ‣⽀支援數學格式         的⽀支援
                ‣⽀支援複雜本⽂文內容      ‣⽀支援嵌⼊入字型
                ‣⽀支援⽂文字朗讀        ‣⽀支援 SVG 圖檔
                ‣⽀支援⾮非羅⾺馬⽂文字     ‣⽀支援 MathML
                ‣⽀支援 DAISY 有聲書


12年12月21⽇日星期五
EPUB 格式



12年12月21⽇日星期五
• ZIP 壓縮檔
                • 附檔名可使⽤用 .epub 或 .zip



12年12月21⽇日星期五
EPUB 三種層級

                • XHTML ⽂文件 (XHTML Document)
                • 套件檔 (Package Files)
                • 容器檔 (Container Files)


12年12月21⽇日星期五
XHTML ⽂文件

                • EPUB 的內容
                • 類似 (幾乎相同) HTML
                • EPUB3 可使⽤用 HTML5


12年12月21⽇日星期五
http://slides.html5rocks.com/



12年12月21⽇日星期五
套件檔
                • /mimetype
                 • ⼀一定為 application/epub+zip
                • /DIR/NAME.opf
                 • 作者、發⾏行者、...
                • /DIR/NAME.ncx
                 • 電⼦子書的組織架構 (章節、段落、...)
12年12月21⽇日星期五
容器檔

                • META-INF/container.xml
                • 儲存電⼦子書檔案的架構
                 • 檔案路徑、DRM 宣告、...


12年12月21⽇日星期五
EPUB 製作⼯工具



12年12月21⽇日星期五
商業軟體

                • Adobe InDesign
                • IGP: Digital Publisher
                • Apple Pages
                • QuarkXPress
                • oXygen XML Editor

12年12月21⽇日星期五
OpenSource

                • Sigil
                • Booktype
                • calibre


12年12月21⽇日星期五
轉換程式

                • Word2EPUB
                • ePub Maker
                • DocBook


12年12月21⽇日星期五
WebView



12年12月21⽇日星期五
WebView 的介紹



12年12月21⽇日星期五
•   Android 內建的簡易版瀏覽器

                •   ⽀支援 HTML5 / CSS3 / JavaScript

                •   可⾃自定瀏覽器的使⽤用介⾯面

                •   可定義內容處理的⽅方式

                •   可組態執⾏行時期的設定

                •   可與 Server 端的 JavaScript 互動



12年12月21⽇日星期五
使⽤用⽅方法

                • 設定 AndroidManifest.xml
                • 配置 layout 檔
                • 撰寫程式
                • 執⾏行與測試

12年12月21⽇日星期五
設定
                • 需開啟下列權限:
                 • android.permission.INTERNET
        <manifest ... >
            <uses-permission
        android:name="android.permission.INTERNET" />
            ...
        </manifest>



12年12月21⽇日星期五
配置 Layout

  <?xml version="1.0" encoding="utf-8"?>
  <WebView
      xmlns:android="http://schemas.android.com/apk/
  res/android"
      android:id="@+id/webview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
  />




12年12月21⽇日星期五
撰寫程式



12年12月21⽇日星期五
WebView

                • android.webkit.WebView
                • 重要 API
                 • loadData()
                 • loadUrl()
                 • zoomIn() / zoomOut()

12年12月21⽇日星期五
WebView (cont)

                • 導覽 (Navigation) API
                 • canGoBack() / goBack()
                 • canGoForward() / goForward()
                 • canGoBackOrForward() /
                   goBackOrForward()



12年12月21⽇日星期五
• 取得 WebView 物件
                • 指定網⾴頁瀏覽的設定 (Optional)
                • 組態⾴頁⾯面處理的⽅方法 (Optional)
                • ⾃自定使⽤用介⾯面 (Optional)
                • 指定網址或本地資料

12年12月21⽇日星期五
取得 WebView 物件


                WebView webView = (WebView)
                    findViewById(R.id.webView)




12年12月21⽇日星期五
變更瀏覽器的設定

  WebSettings settings =
      webView.getSettings();
  settings.setSupportZoom(true);
  settings.setBuiltinZoomControls(true);
  settings.setJavaScriptEnabled(true);




12年12月21⽇日星期五
WebSettings

                • android.webkit.WebSettings
                • 存取 WebView 的組態資料
                • 重要 API
                 • setJavaScriptEnabled()
                 • !! ALL !!

12年12月21⽇日星期五
組態⾴頁⾯面處理⽅方法

       webView.setWebViewClient(
           new WebViewClient() {
               // ...
           });




12年12月21⽇日星期五
WebViewClient
                • android.webkit.WebViewClient
                • ⾃自定⾴頁⾯面的處理⽅方法
                • 重要 API
                 •   onPageXXX() / onFormResubmission()

                 •   onLoadResource() / onReceivedError() /
                     onReceivedHttpAuthRequest()



12年12月21⽇日星期五
⾃自定使⽤用介⾯面

       webView.setWebChromeClient(
           new WebChromeClient() {
               // ...
           });




12年12月21⽇日星期五
WebChromeClient
                • android.webkit.WebChromeClient
                • 定義使⽤用介⾯面的事件處理
                • 重要 API
                 • onProgressChanged()
                 • onReceivedXXX() / onjsXXX()
                 • onCloseWindow()
12年12月21⽇日星期五
指定網址或本地資料
    網址
    webView.loadUrl(
        “http://www.niceStudio.com.tw”);

    本地資料
    webView.loadData(
        “<h1>Hello World!!</h1>”);


12年12月21⽇日星期五
JavaScript 整合



12年12月21⽇日星期五
• WebView 可與 JavaScript 整合
                • ⽅方式
                 • WebChromeClient.onjsXXX()
                 • JavaScript ➞ WebView
                 • WebView ➞ JavaScript

12年12月21⽇日星期五
JavaScript ➞WebView

                • WebView 可註冊 JavaScript 函數的處理
                 器 (Handler)
                • 步驟
                 • 撰寫類別與⽅方法
                 • 在 WebView 註冊處理器

12年12月21⽇日星期五
<a href=”#” onclick=”android.say(‘hi’)” />
                                                              HTML
                                                              Activity
      public class WebViewActivity extends Activity {
        class JavaScriptHandler {
            public void say(String word) {
               Toast.makeText(context, word, Toast.LENGTH_LONG).show();
            }
        }

          public void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            webView = (WebView) findViewById(R.id.wv);
            webView.addJavaScriptInterface(
                new JavaScriptHandler(), “android”);
          }
      }

12年12月21⽇日星期五
WebView➞JavaScript
                • WebView 可直接呼叫網⾴頁中的
                 JavaScript 函數

       webView.loadUrl(“javascript:changeColor(‘red’)”);
                                                           Activity
        <script type=”text/javascript”>                    HTML
        function changeColor(c) {
           ...
        }
        </script>



12年12月21⽇日星期五
實作 EPUB Reader



12年12月21⽇日星期五
Why??


                • 實作私有的 DRM
                • 實作特殊的效果或功能


12年12月21⽇日星期五
實作⽅方法


                • Bottom-Up
                • 利⽤用現成的 OpenSource Project


12年12月21⽇日星期五
FBReader
                • Free & OpenSource
                • Android 平台著名的 Reader
                • http://www.fbreader.org/
                • ⽀支援的格式
                 • EPUB / HTML / FictionBook /
                   Plucker / PalmDoc / TCR / RTF / ...


12年12月21⽇日星期五
取得原始程式碼

                • 從官網下載
                 • http://www.fbreader.org/FBReaderJ
                • 使⽤用 Git 下載
                 •   git://github.com/geometer/FBReaderJ.git




12年12月21⽇日星期五
準備

                • Android SDK >= 1.6
                • Android NDK >= r4b
                • Apache Ant >= 1.7.0
                • Cygwin >= 1.7 (Windows Only)

12年12月21⽇日星期五
編譯
                1. 在專案⺫⽬目錄中建⽴立 local.properties 檔
                   sdk.dir=<DIR>
                   ndk.dir=<DIR>
                2. Windows:
                   ndk-build -> ant release
                   Unix / MacOS X:
                   ant package


12年12月21⽇日星期五
擴充 FBReaderJ


                • <PROJECT>/src/org/geometerplus/
                  android/fbreader/




12年12月21⽇日星期五
Q&A



12年12月21⽇日星期五

Weitere ähnliche Inhalte

Was ist angesagt?

快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚Lorex L. Yang
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置Shengyou Fan
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染Ailsa126
 
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会Joseph Chiang
 
Maven – 项目管理利器
Maven – 项目管理利器Maven – 项目管理利器
Maven – 项目管理利器johnnybai
 
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享Yao Nien Chung
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來Shengyou Fan
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京Joseph Chiang
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由Shengyou Fan
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後Shengyou Fan
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者Shengyou Fan
 
Web设计 4 锋利的j_query(进入企业级应用阶段)
Web设计 4 锋利的j_query(进入企业级应用阶段)Web设计 4 锋利的j_query(进入企业级应用阶段)
Web设计 4 锋利的j_query(进入企业级应用阶段)ziggear
 
difference between query string and hash
difference between query string and hashdifference between query string and hash
difference between query string and hashfool2fish
 

Was ist angesagt? (17)

快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
 
CRUD 綜合應用
CRUD 綜合應用CRUD 綜合應用
CRUD 綜合應用
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
 
Maven – 项目管理利器
Maven – 项目管理利器Maven – 项目管理利器
Maven – 项目管理利器
 
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 
Web设计 4 锋利的j_query(进入企业级应用阶段)
Web设计 4 锋利的j_query(进入企业级应用阶段)Web设计 4 锋利的j_query(进入企业级应用阶段)
Web设计 4 锋利的j_query(进入企业级应用阶段)
 
difference between query string and hash
difference between query string and hashdifference between query string and hash
difference between query string and hash
 

Ähnlich wie Android vs e pub

KISSY 1.3-released
KISSY 1.3-releasedKISSY 1.3-released
KISSY 1.3-releasedyiming he
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copydrewz lin
 
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZoom Quiet
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)Kyle Lin
 
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tourmyzykj
 
新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽ilovejoomla
 
Understanding Mobile Web Browser Performance
Understanding Mobile Web Browser PerformanceUnderstanding Mobile Web Browser Performance
Understanding Mobile Web Browser PerformanceBaidu, Inc.
 
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1drewz lin
 
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)Xu Wang
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)My own sweet home!
 
Websocket talk in nodejs.tw
Websocket talk in nodejs.twWebsocket talk in nodejs.tw
Websocket talk in nodejs.twHsu Ping Feng
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Introericpi Bi
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化fangdeng
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyGump Law
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢Ben Huang
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍myzykj
 
Front-end makes change
Front-end makes changeFront-end makes change
Front-end makes changekeelii
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Kyle Lin
 

Ähnlich wie Android vs e pub (20)

KISSY 1.3-released
KISSY 1.3-releasedKISSY 1.3-released
KISSY 1.3-released
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
 
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolbox
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)
 
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tour
 
新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽
 
Understanding Mobile Web Browser Performance
Understanding Mobile Web Browser PerformanceUnderstanding Mobile Web Browser Performance
Understanding Mobile Web Browser Performance
 
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1
 
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
 
Websocket talk in nodejs.tw
Websocket talk in nodejs.twWebsocket talk in nodejs.tw
Websocket talk in nodejs.tw
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
 
Ruby基础培训
Ruby基础培训Ruby基础培训
Ruby基础培训
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techparty
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍
 
Front-end makes change
Front-end makes changeFront-end makes change
Front-end makes change
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會
 

Android vs e pub