國際化與在地化 程式設計

所謂的國際化:就是根據特定的 locale 信息,提取與之相應的字符串或其它一些東西(比如時間和貨幣的格式)等等。這涉及到三個問題:

1,如何確定語言環境。
2,如何保存與 locale 相關的字符串或其它信息。
3,如何根據 locale 提取字符串和其它相應的信息。

https://astaxie.gitbooks.io/build-web-application-with-golang/content/zh/10.0.html




地區設定:https://zh.wikipedia.org/wiki/%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE




Unicode 字元平面對映:
https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84

http://www.unicode.org/

讀出一個 character, utf-8 to unicode convert 後的一個 character (not word), 兩個byte 它的值:
# 0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
就表示它是拉丁文 character
而英文只用到 128 也就是 7F 所以 0000-007F 的字就必然落在英文的範圍. 但不代表它不會是拉丁語系的 word 中的一個 character
兩個byte 它的值:
# 0080-00FF:C1控制符及拉丁文補充-1 (C1 Control and Latin 1 Supplement)
這就表示這個字是包括了法德葡西意等拉丁字, 但一定不是英文字. 這個word 不可能會是英文字了.

character = 拉丁語中的字符, 如英文的 A,B,C,D... 到 Z
word = 一個字, 例如 apple 為一個字.




如果要開發一個多語系的網站時,其中一種方法可以使用瀏覽器所設定的語系來判斷使用者的網頁語系。

http://blog.roodo.com/jessica_bird/archives/10029085.html

當瀏覽網頁時,瀏覽器會發送給 web 伺服器 HTTP Headers Information ,在表頭資訊裡,包含了這樣一個信息 Accept-Language,這是用來設置瀏覽器可接受的語言選項,可以設置一個以上的語系,再依優先順序使用。

以 PHP 來說,可使用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 來取得,取得類似 “zh-cn” 這樣子的結果;如果是多語系設定,則類似 “zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3″ 這樣子的情況。

$lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);

if($lang[0]=='zh-tw')
{  //如果瀏覽器使用繁體中文,則為true。
 header("Location: ch/index.php"); //轉址到中文網頁。
else
 header("Location: en/index.php"); //轉址到英文網頁。
}

用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 來取得瀏覽器的訊息,此時若瀏覽器設為多語系,$lang 會是陣列,並且以逗號(,)做為陣列值的切割。

explode()
語法 : array explode (string separator, string string [, int limit])
說明 :
傳回一個字串的陣列,以參數 separator 為界線將參數 string 切開,如果有設定參數 limit,則傳回的陣列最多將會包含 limit 個元素,而最後一個元素將會包含 string 全部剩餘的部份。

http://php.net/manual/en/function.explode.php




檢測字串的編碼:
http://us2.php.net/manual/en/function.mb-detect-encoding.php




google 『字串 語系判斷』:
https://www.google.com.tw/search?espv=2&q=%E5%AD%97%E4%B8%B2+%E8%AA%9E%E7%B3%BB%E5%88%A4%E6%96%B7




語系代碼:

https://zh.wikipedia.org/wiki/%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE
http://blog.roodo.com/jessica_bird/archives/10029085.html
http://www.htmldrive.net/items/demo/1312/-jQuery-Useful-freeze-header-row-in-table-plugin

Culture Name Display Name Culture Code ISO 639x
af-ZA Afrikaans - South Africa 0x0436 AFK
sq-AL Albanian - Albania 0x041C SQI
ar-DZ Arabic - Algeria 0x1401 ARG
ar-BH Arabic - Bahrain 0x3C01 ARH
ar-EG Arabic - Egypt 0x0C01 ARE
ar-IQ Arabic - Iraq 0x0801 ARI
ar-JO Arabic - Jordan 0x2C01 ARJ
ar-KW Arabic - Kuwait 0x3401 ARK
ar-LB Arabic - Lebanon 0x3001 ARB
ar-LY Arabic - Libya 0x1001 ARL
ar-MA Arabic - Morocco 0x1801 ARM
ar-OM Arabic - Oman 0x2001 ARO
ar-QA Arabic - Qatar 0x4001 ARQ
ar-SA Arabic - Saudi Arabia 0x0401 ARA
ar-SY Arabic - Syria 0x2801 ARS
ar-TN Arabic - Tunisia 0x1C01 ART
ar-AE Arabic - United Arab Emirates 0x3801 ARU
ar-YE Arabic - Yemen 0x2401 ARY
hy-AM Armenian - Armenia 0x042B
Cy-az-AZ Azeri (Cyrillic) - Azerbaijan 0x082C
Lt-az-AZ Azeri (Latin) - Azerbaijan 0x042C
eu-ES Basque - Basque 0x042D EUQ
be-BY Belarusian - Belarus 0x0423 BEL
bg-BG Bulgarian - Bulgaria 0x0402 BGR
ca-ES Catalan - Catalan 0x0403 CAT
zh-CN Chinese - China 0x0804 CHS
zh-HK Chinese - Hong Kong SAR 0x0C04 ZHH
zh-MO Chinese - Macau SAR 0x1404
zh-SG Chinese - Singapore 0x1004 ZHI
zh-TW Chinese - Taiwan 0x0404 CHT
zh-CHS Chinese (Simplified) 0x0004
zh-CHT Chinese (Traditional) 0x7C04
hr-HR Croatian - Croatia 0x041A HRV
cs-CZ Czech - Czech Republic 0x0405 CSY
da-DK Danish - Denmark 0x0406 DAN
div-MV Dhivehi - Maldives 0x0465
nl-BE Dutch - Belgium 0x0813 NLB
nl-NL Dutch - The Netherlands 0x0413
en-AU English - Australia 0x0C09 ENA
en-BZ English - Belize 0x2809 ENL
en-CA English - Canada 0x1009 ENC
en-CB English - Caribbean 0x2409
en-IE English - Ireland 0x1809 ENI
en-JM English - Jamaica 0x2009 ENJ
en-NZ English - New Zealand 0x1409 ENZ
en-PH English - Philippines 0x3409
en-ZA English - South Africa 0x1C09 ENS
en-TT English - Trinidad and Tobago 0x2C09 ENT
en-GB English - United Kingdom 0x0809 ENG
en-US English - United States 0x0409 ENU
en-ZW English - Zimbabwe 0x3009
et-EE Estonian - Estonia 0x0425 ETI
fo-FO Faroese - Faroe Islands 0x0438 FOS
fa-IR Farsi - Iran 0x0429 FAR
fi-FI Finnish - Finland 0x040B FIN
fr-BE French - Belgium 0x080C FRB
fr-CA French - Canada 0x0C0C FRC
fr-FR French - France 0x040C
fr-LU French - Luxembourg 0x140C FRL
fr-MC French - Monaco 0x180C
fr-CH French - Switzerland 0x100C FRS
gl-ES Galician - Galician 0x0456
ka-GE Georgian - Georgia 0x0437
de-AT German - Austria 0x0C07 DEA
de-DE German - Germany 0x0407
de-LI German - Liechtenstein 0x1407 DEC
de-LU German - Luxembourg 0x1007 DEL
de-CH German - Switzerland 0x0807 DES
el-GR Greek - Greece 0x0408 ELL
gu-IN Gujarati - India 0x0447
he-IL Hebrew - Israel 0x040D HEB
hi-IN Hindi - India 0x0439 HIN
hu-HU Hungarian - Hungary 0x040E HUN
is-IS Icelandic - Iceland 0x040F ISL
id-ID Indonesian - Indonesia 0x0421
it-IT Italian - Italy 0x0410
it-CH Italian - Switzerland 0x0810 ITS
ja-JP Japanese - Japan 0x0411 JPN
kn-IN Kannada - India 0x044B
kk-KZ Kazakh - Kazakhstan 0x043F
kok-IN Konkani - India 0x0457
ko-KR Korean - Korea 0x0412 KOR
ky-KZ Kyrgyz - Kazakhstan 0x0440
lv-LV Latvian - Latvia 0x0426 LVI
lt-LT Lithuanian - Lithuania 0x0427 LTH
mk-MK Macedonian (FYROM) 0x042F MKD
ms-BN Malay - Brunei 0x083E
ms-MY Malay - Malaysia 0x043E
mr-IN Marathi - India 0x044E
mn-MN Mongolian - Mongolia 0x0450
nb-NO Norwegian (Bokmål) - Norway 0x0414
nn-NO Norwegian (Nynorsk) - Norway 0x0814
pl-PL Polish - Poland 0x0415 PLK
pt-BR Portuguese - Brazil 0x0416 PTB
pt-PT Portuguese - Portugal 0x0816
pa-IN Punjabi - India 0x0446
ro-RO Romanian - Romania 0x0418 ROM
ru-RU Russian - Russia 0x0419 RUS
sa-IN Sanskrit - India 0x044F
Cy-sr-SP Serbian (Cyrillic) - Serbia 0x0C1A
Lt-sr-SP Serbian (Latin) - Serbia 0x081A
sk-SK Slovak - Slovakia 0x041B SKY
sl-SI Slovenian - Slovenia 0x0424 SLV
es-AR Spanish - Argentina 0x2C0A ESS
es-BO Spanish - Bolivia 0x400A ESB
es-CL Spanish - Chile 0x340A ESL
es-CO Spanish - Colombia 0x240A ESO
es-CR Spanish - Costa Rica 0x140A ESC
es-DO Spanish - Dominican Republic 0x1C0A ESD
es-EC Spanish - Ecuador 0x300A ESF
es-SV Spanish - El Salvador 0x440A ESE
es-GT Spanish - Guatemala 0x100A ESG
es-HN Spanish - Honduras 0x480A ESH
es-MX Spanish - Mexico 0x080A ESM
es-NI Spanish - Nicaragua 0x4C0A ESI
es-PA Spanish - Panama 0x180A ESA
es-PY Spanish - Paraguay 0x3C0A ESZ
es-PE Spanish - Peru 0x280A ESR
es-PR Spanish - Puerto Rico 0x500A ES
es-ES Spanish - Spain 0x0C0A
es-UY Spanish - Uruguay 0x380A ESY
es-VE Spanish - Venezuela 0x200A ESV
sw-KE Swahili - Kenya 0x0441
sv-FI Swedish - Finland 0x081D SVF
sv-SE Swedish - Sweden 0x041D
syr-SY Syriac - Syria 0x045A
ta-IN Tamil - India 0x0449
tt-RU Tatar - Russia 0x0444
te-IN Telugu - India 0x044A
th-TH Thai - Thailand 0x041E THA
tr-TR Turkish - Turkey 0x041F TRK
uk-UA Ukrainian - Ukraine 0x0422 UKR
ur-PK Urdu - Pakistan 0x0420 URD
Cy-uz-UZ Uzbek (Cyrillic) - Uzbekistan 0x0843
Lt-uz-UZ Uzbek (Latin) - Uzbekistan 0x0443
vi-VN Vietnamese - Vietnam 0x042A VIT



C#


C# 是微軟推出的一種基於 .NET 框架的、物件導向的高階程式語言。

Objective-C


Objective-C 的商標權屬於蘋果公司,蘋果公司也是這個程式語言的主要開發者。蘋果在開發 NeXTSTEP 操作系統時使用了 Objective-C,之後被 OS X 和 iOS 繼承下來。現在 Objective-C 與 Swift 是 OS X 和 iOS 作業系統、及與其相關的API、Cocoa 和 Cocoa Touch 的主要程式語言。


十分钟让你明白Objective-C的语法(和 Java、C++ 的对比):
https://blog.csdn.net/totogo2010/article/details/7632384

KKBOX iOS/Mac OS X 基礎開發教材:
https://zonble.gitbooks.io/kkbox-ios-dev/content/




JavaScript


JavaScript,一種中高階程式語言,通過解釋執行,是一種物件導向(基於原型 prototype-based programming)的直譯語言,支援物件導向編程,指令式編程,以及函數語言程式設計。

JavaScript 支援許多 C 語言的結構化編程語法,例如 if 條件語句、while 迴圈、switch 語句、do-while 迴圈 等。但作用域是一個例外:JavaScript 只支援使用 var 關鍵字來定義變數的函式作用域。ECMAScript 加入了 let 關鍵字來支援塊級作用域,意味著 JavaScript 現在既支援函式作用域又支援塊級作用域。正如 C語言 一樣,JavaScript 中的運算式和語句是不同的。與 C 語言不同的是 JavaScript 支援自動在語句末添加分號。

JavaScript 是一種腳本語言,其原始碼在發往用戶端執行之前不需要經過編譯,而是將文字格式的字元代碼發送給瀏覽器由瀏覽器解釋執行。直譯語言的弱點是安全性較差,而且在 JavaScript 中,如果一條執行不了,那麼後續的程式碼也無法執行。其解決辦法是使用 try{} catch(){} 。

維基百科:https://en.wikipedia.org/wiki/JavaScript

線上教學:
http://www.runoob.com/js/js-tutorial.html
http://www.kaiching.org/2012/10/javascript-tutorial.html


JavaScript 動態創建 Form 或在既有表單增加項目:http://www.jianshu.com/p/047692d10316

Javascript 常用的陣列(Array)操作大全:http://sweeteason.pixnet.net/blog/post/41263148

淺談js多維陣列和hash陣列定義和使用、js陣列操作常用方法:
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/262733/

只使用 JavaScript 的 2D 打磚塊遊戲:https://developer.mozilla.org/zh-TW/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript



為什麼 Node.js 不適合大型和商業專案https://yami.io/you-might-not-need-nodejs/

Node.js 是一個比較奇特的存在。它本身就是 Javascript,但是因為採用了 Chrome 的 V8 engine 的關係,使得 Javascript 可以跑在伺服器中成為後端語言。 Node.js 的特色就是極快的執行速度,它具有無阻塞 (non-blocking) 和事件驅動 (event-driven) 等的特色,適合用在高併發的服務上,例如萬人即時聊天系統等等。且同是 Javascript 的關係,前後端程式碼也較容易整合。另外,Node.js 本身也是伺服器,不必依賴於 Apache 或 NginX 上面。

Node.js 的缺點是它的 Async 異步架構容易讓新手混淆,不知如何控制程式流程。另外,Node.js 也不適合用在需要高密集 CPU 運算的場合,所以一般來說很少將 Node.js 拿來製作動態網站或商務系統等,大多用來製作聊天功能或手機 app 的底層應用,或者一個網站中對併發需求特別高的功能抽出來給 Node.js 做。

『Node.js 之父 Ryan 目前在 Google Brain 一手建立 Node.js 世界,但是在訪談中,竟然推薦大家使用 Go 語言,而不要使用 Node.js 當作後端 (假如您想要建構一個龐大的系統)。內文中提到 Node.js Callback 的缺陷在 Node.js 出現了 async 了有效了解決大量使用 Callback。Ryan 也非常驚訝地說,他沒想到在 Node.js Client 端竟然如此熱門。要建立小量的開發系統,他非常推薦使用 Node.js,但是如果您要建立龐大的分散式 DNS 系統,我覺得不會推薦你使用 Node。』

說到 Client Side 工具,Node.js 的確在 Web 領域佔有一席之地,大量的 Node.js 工具 (像是 Webpack, Gulp, Imagemin 等圖片壓縮工具) 幫助建置 Web 網站。

詳細原文可以參考: https://www.mappingthejourney.com/single-post/2017/08/31/episode-8-interview-with-ryan-dahl-creator-of-nodejs/



以 Javascript 實作星級評分 (用 CSS 寫星星形狀) (附完整解說):http://www.kittywei.com/native-javascript-to-achieve-star-rating-2/

倒數計時:http://design2u.me/blog/122/phpjavascriptcss-countdown-to-the-example



JavaScript取得畫面大小

網頁可見區域寬:document.body.clientWidth
網頁可見區域高:document.body.clientHeight
網頁可見區域寬:document.body.offsetWidth(包括邊線和捲軸的寬)
網頁可見區域高:document.body.offsetHeight(包括邊線的寬)
網頁正文全文寬:document.body.scrollWidth
網頁正文全文高:document.body.scrollHeight
網頁被卷去的高(ff):document.body.scrollTop
網頁被卷去的高(ie):document.documentElement.scrollTop
網頁被卷去的左:document.body.scrollLeft
網頁正文部分上:window.screenTop
網頁正文部分左:window.screenLeft
螢幕解析度的高:window.screen.height
螢幕解析度的寬:window.screen.width
螢幕可用工作區高度:window.screen.availHeight
螢幕可用工作區寬度:window.screen.availWidth
你的螢幕設置是 window.screen.colorDepth(位彩色)
你的螢幕設置 window.screen.deviceXDPI(像素/英寸)



函數的多種寫法與應用限制
http://sweeteason.pixnet.net/blog/post/40371736

Javascript 的函數有三種寫法,使用上會有些差異。
其中有一個非常重要的特性,在 javascript 中不論函數本身在哪裡,都會被提升到最頂端。
而具名 或 匿名函數只有變數宣告會被提升,函數的定義則不會被提升。

函數宣告式
function add(a,b) { }

具名函數 or 具名表示式
var addfun = function add(a,b) { }

匿名函數 or 函數的表示式
var addfun = function (a,b) { }






Ruby



Ruby 是日本人松本行弘發明的語言,與 PHP 一樣是動態語言,主要著重在提供簡潔一致的語言介面,讓開發過程非常直觀且人性化。而 Ruby 在網站開發上通常會搭配 Rails 框架一起使用 (全名 Ruby on Rails),是最早帶起 Web MVC 風潮的框架。Rails 提供了許多強大功能,如 ActiveRecord、程式碼鷹架產生器、資料庫遷移等等,都成為目前各大主流框架的標配。Rails 在國外也有非常龐大的生態圈,各種疑難雜症都有解答或相關程式套件可以協助解決。

Ruby 的效能相較其他語言是較差的,也因此影響了 Rails 框架的效能。不過隨著語言本身的持續更新,目前效能並非讓人無法接受,且在框架中可以藉由快取來增進執行速度,在機器運算能力大幅提昇的現在影響已經不是這麼巨大。另外,Rails 對新手來說學習曲線是較高的。

知名使用者: Twitter, GitHub


我是這樣學會 Ruby on Rails:12 個星期打造 12 個網頁 APP
https://www.inside.com.tw/2015/01/27/how-i-finally-learned-to-build-stuff-with-rails

大數據人才的工作內容及年薪比較

內容出處:https://www.inside.com.tw/2015/05/01/big-data-jobs-salary

根據美國大數據及商業智慧軟體公司 SiSense 調查研究指出,資訊分析相關人才起薪約為年薪 5.5 萬美元,換句話說,相較美國大學畢業生平均年薪為 4.76 萬美元,高出 7400 美元,而最高薪的資料科學家,平均年薪為 13.2 萬美元。

以下根據 Payscale 所提供的職位基本年薪做參考。


● 資料分析師 Data Analyst

「資料分析師」指的是不同行業中,專門從事行業內數據蒐集、整理、分析,並依據這些數據做出研究、評估的專業人員。

這類職缺通常要求應徵者有數學、統計、或是電腦科學等的相關學位跟背景,最常見的工作技能要求是 SQL、R、SAS、Excel,以及隨著需要處理的資料量日漸龐大,Hadoop 也被許多公司列為必備的基本條件之一。

美國地區資料分析師的年薪大約在 $36,139 到 $77,696 美元之間(約等於年薪台幣 110 萬到 240 萬),中間值大約是 $51,224 美元(台幣 160 萬)。擁有統計分析、資料建模(Data modeling)以及 SAS 等技能的應徵者一般來說更有機會得到高薪。


● 資料科學家 Data Scientist

被《哈佛商業評論》譽為「21 世紀最性感工作」的資料科學家可以說是資料分析師的進化版。

兩者的分別可以從職稱的不同看出端倪:資料「分析師」統計分析資料作為評估基準來設計行銷方案時,資料「科學家」則是把心力放在設計分析資料的演算法,提出不同的理論來測試這些結論,最後建立統計模型來判斷消費者行為、找出最關鍵的行為誘發因子。

因此資料科學家需要具備程式開發的能力,例如 Java 或 Python,而且對機器學習(Machine Learning)領域有所瞭解。

美國地區的資料科學家年薪大約落在 $63,192 到 $142,118 美元間,中間值是 $96,579 美元,幾乎是資料分析師的兩倍。


● 資料架構師 Data Architect

資料架構師要負責建立和維持公司資料儲存的技術基準,策劃硬體和軟體的結構,確保資料儲存系統可以支持未來的資料量和分析需求。

資料架構師通常擁有電腦科學學位,並且精通資料庫相關知識,像是關聯式資料庫(Relational database)、資料倉儲(Data warehouse)、以及分散式資料系統(Distributed storage system)等等。

美國地區資料架構師的薪資範圍是 $65,928 到 $147,868 美元,中間值為 $105,581 美元,以目前的趨勢來看,比起 SQL ,擅長 OracleDB 的人才較容易得到高薪。


● 首席資訊長 Chief Information Officer

首席資訊長(簡稱 CIO)是負責企業內部資訊系統和資訊資源規劃和整合的高級行政管理人員,簡單來說,這個最資深、最高級的職位要擔起所有數據策略相關的責任,

CIO 通常會管理一個大團隊,團隊中的資深資料分析師、資料科學家會直接與 CIO 呈報,最後的決策再由 CIO 上報給董事會員。由於擔任 CIO 的人選必須擁有一定的經驗,因此這個職位通常會由董事會直接指派。

美國的公司通常給 CIO 的薪水從 $81,226 起跳至 $269,033 美元不等,中間值是 $142,269 美元。




資料工程師(Data engineers)、大數據分析師(Big data analysits)、數據專家(Data expert or Data specialist)等等職稱基本上都可以歸類到上述四個職位。雖然擁有不同的職稱,但往往這些角色的職責範圍經常互相重疊,端看各公司如何分配工作內容。

機器人

開發板
Arduino:https://en.wikipedia.org/wiki/Arduino
Raspberry Pi (樹莓派):https://en.wikipedia.org/wiki/Raspberry_Pi
單晶片,全稱單晶片微電腦,中國大陸主要採用「单片机」的稱呼,英文縮寫為 MCU:https://en.wikipedia.org/wiki/Microcontroller
Arduino、Arm、樹莓派、單片機:https://kknews.cc/zh-tw/tech/vgyy2.html




星戰 BB-8 玩具解體:http://chinese.engadget.com/2015/09/06/star-wars-bb-8-teardown/


uBreakiFix 把 BB-8 玩具拆解,構造包括了一個陀螺儀、平衡重物、母板、無線充電線圈、把機體滾動的馬達和雙輪、以及把頭部吸著的一對磁石。
由於他們無法找出不損毀機體的打開方法,所以這隻 BB-8 在被拆解後無法再重組。




Pebby 在眾籌網站 Kickstarter 上發起眾籌,最初的籌集目標為 5 萬美元。早期投資者可以半價優惠(124美元)獲得這款產品。
https://www.kickstarter.com/projects/973862487/pebby-the-worlds-most-advanced-robotic-pet-sitter


Pebby 這款產品包括一個智能項圈、充電底座和 Wi-Fi 控制的寵物球。設備能夠在與寵物的交互中跟蹤和監測寵物狀態,並通過配套的 Pebby 手機應用程式將數據呈現給寵物主人。

用戶可通過手機程序對寵物球進行操控。寵物球內置一個 720p 廣角/魚眼鏡頭,內置的鋰電子電池能夠支撐 1.5 小時的遊戲時間,待機時長可達 15 小時。

寵物球內置鏡頭讓主人能夠實時捕捉到愛寵最可愛率真的時刻,拍攝的畫面可通過 Wi-Fi 傳到用戶手機。寵物球配備微控制雙獨立懸架,即使在與寵物的玩耍中也能保持穩定。

Pebby 寵物球直徑 8 公分,內飾採用可更換設計。內置 LED 燈以適應夜晚使用場景。內置揚聲器和雷射燈。

與之匹配的智能項圈可跟蹤寵物行蹤,並將收集來的行動和健康數據發送到 Pebby 手機應用程式。項圈的電池續航為 8 至 10 天,支持有線和無線充電。

「我們打造了一個完整的寵物看護系統,能讓寵物主人完全放心。」Pebby 創始人兼執行長 Hansen Goh 稱,「Pebby 允許寵物主人遠程與愛寵保持接觸,捕捉精彩瞬間。在監控寵物健康狀況的同時也滿足娛樂需求。」

用戶可隨時通過手機應用設置 Pebby,包括調整寵物球運動速度和燈光顏色。當寵物開始玩弄設備時,用戶手機端會收到即時的震動反饋。Pebby 系統還可自動導航到無線充電座進行充電,並具有自動跟蹤和自動斷開功能。Pebby 除了用手機操控之外,也能自動和寵物玩耍。

內置雷射燈 - 逗貓


堅固的機身外殼,不怕寵物咬

Pebby 小球內置了 2550mAh 的電池,當它快沒電時,能夠自動回到充電底座進行快速充電,90 分鐘就能充滿,所以不用擔心沒電需要手動充電的問題。項圈部分續航時間為 1 星期,可以通過 Micro-USB 進行充電。


智能項圈記錄愛寵數據,以了解它的健康。因為項圈包含了陀螺儀、加速器、磁力感應這些傳感器,同時還和小球相連,所以愛寵們在家活動的時候,它就能監測到一切日常數據。一般來說,寵物主人可能不會無聊到每天看看狗狗走了多少步,或者玩了幾個小時。但是透過數據能了解到寵物平時的活動規律,假如某一天主人發現寵物行為反常,就能夠透過數據來分析。

Pebby 小球四處「遊走」的方式比較特別,小球會動,但攝像頭的角度不會變化,這是因為內部的電機和外殼不是連在一起的,能夠通過內部陀螺儀保持方向穩定,概念類似星戰 BB-8 機器人。



機器學習

人類學習的過程,觀察 -> 累積經驗、學習 -> 習得技能。

機器學習的過程,資料 -> Machine Learning -> 習得技能。



技能的定義:

在機器學習上,技能就是透過所搜集到的資料來提升一些可量測的性能,比如說預測得更準確,實例上像是我們可以把股票的歷史交易資料,透過機器學習後,是否可以得到更多的投資報酬。如果可以得到更多的投資報酬,那麼我們就可以說電腦透過機器學習得到了買賣股票賺錢的技能了。

以一個可以辨識樹的圖片的程式為例,程式師直覺上可能會寫一個程式檢查圖片中有沒有綠綠的或是有沒有像葉子的形狀的部份等等,然後寫了幾百條規則來完成辨識樹的圖片的功能,但是如果現在來了一張樹的圖片,上面剛好都沒有葉子,這幾百條規則都沒用了,辨識樹的圖片的功能只能以失敗收場。機器學習可以解決這樣的問題,透過觀察資料的方式來讓電腦自己辨識樹的圖片,可能會比寫幾百條判斷規則更有效。這有點像是教電腦學會釣魚(透過觀察資料學習),而不是直接給電腦魚吃(直接寫規則給電腦)。


機器學習的使用時機:

1. 存在某種潛在規則。
2. 從人類的角度,不知道怎麼把規則很簡單地寫成程式碼/演算法。
3. 有很多資料可以作為觀察、學習的來源。

比如說在火星上的導航,當機器人登上火星後可能會面對各種未知狀況,人類沒有辦法事前寫好所有規則去應對,這時候就可以考慮使用機器學習。

比如說語音辨識、影像辨識。

比如說股市的高頻交易策略。

比如說透過分析大數據,依據用戶喜好或潛在可能需求來實現個人化服務。





台大資工系林軒田教授 Machine Learning Foundations (機器學習 基石):https://www.youtube.com/playlist?list=PLXVfgk9fNX2I7tB6oIINGBmW50rrmFTqf
( 相當於台大 8 週完整課程 )

台大資工系林軒田教授 Machine Learning Techniques (機器學習 技法):https://www.youtube.com/playlist?list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2
( 相當於台大 7 週完整課程 )

機器學習的 基石 + 技法 相當於共 15 週的台大一學期完整課程 (每週 2 小時)





Google 人工智慧帝國,為何這裡一切都是 AI:https://www.bnext.com.tw/ext_rss/view/id/1143081

2015年11月9日,Google宣佈開源機器學習系統 TensorFlow,讓每個人都可以利用電腦和網路去使用這個強大的機器學習平臺。Google 旗下的 50 多個產品都運用了 TensorFlow 深度學習系統,它已變為一家機器學習公司,其產品不斷地為世界創造價值。

為何 Google 要推開源機器學習系統 TensorFlow:https://www.bnext.com.tw/article/37925/BN-2015-11-10-184646-40

TensorFlow 的開放源碼專案:https://www.tensorflow.org/





Aerosolve (A machine learning package built for humans) 的開放源碼專案:http://airbnb.github.io/aerosolve/




深度學習 ( Deep Learning ) 是機器學習 ( Machine Learning ) 中近年來備受重視的一支,深度學習根源於類神經網路 ( Artificial Neural Network ) 模型,但今日深度學習的技術和它的前身已截然不同,目前最好的語音辨識和影像辨識系統都是以深度學習技術來完成,AlphaGo 也是用深度學習做出的驚人應用。

台大電機系李宏毅教授簡介深度學習:https://www.slideshare.net/tw_dsconf/ss-62245351
以下是該課程大綱:

什麼是深度學習
深度學習的技術表面上看起來五花八門,但其實就是三個步驟:設定好類神經網路架構、訂出學習目標、開始學習,這堂課會簡介如何使用深度學習的工具 Keras,它可以幫助你在十分鐘內完成深度學習的程式。另外,有人說深度學習很厲害、有各種吹捧,也有人說深度學習只是個噱頭,到底深度學習和其他的機器學習方法有什麼不同呢?這堂課要剖析深度學習和其它機器學習方法相比潛在的優勢。

深度學習的各種小技巧
雖然現在深度學習的工具滿街都是,想要寫一個深度學習的程式只是舉手之勞,但要得到好的成果可不簡單,訓練過程中各種枝枝節節的小技巧才是成功的關鍵。本課程中將分享深度學習的實作技巧及實戰經驗。

有記憶力的深度學習模型
機器需要記憶力才能做更多事情,這段課程要講解遞迴式類神經網路 ( Recurrent Neural Network ),告訴大家深度學習模型如何可以有記憶力。

深度學習的應用與展望
深度學習可以拿來做甚麼?怎麼用深度學習做語音辨識?怎麼用深度學習做問答系統?接下來深度學習的研究者們在意的是什麼樣的問題呢?
本課程希望幫助大家不只能了解深度學習,也可以有效率地上手深度學習,用在手邊的問題上。無論是從未嘗試過深度學習的新手,還是已經有一點經驗想更深入學習,都可以在這門課中有所收穫。


專家觀點:未來十年,台灣會在哪裡?

https://www.bnext.com.tw/article/43858/next-decade-of-taiwan

方向 1:善用硬體優勢,做服務急起直追

工研院產經中心主任 蘇孟宗

以前台灣做製造業,還在談微笑曲線、做品牌,當我們都還在繳學費的時候,全世界已經走到生態圈了。對台灣來說,要看清楚現在產業的重要議題,善用我們還有的優勢急起直追。過去,台灣在硬體轉到軟體的過程時就轉得不夠,無論在人才、應用、市場都比較缺乏。但未來談的是人工智慧、物聯網,在這一個議題上是硬體軟體都有的,不像過去都是軟體的世界,一部分會跟硬體的製造效率有關,台灣不能放棄這樣的優勢。例如,現在科技產品的趨勢都是越做越小越便宜,有一個相反的是螢幕,螢幕尺寸越做越大,未來無論是家裡螢幕,或者像是自駕車、VR/AR裝置,這些實體產品都是機會。

另外,像是 AI 要透過大數據、資料蒐集,AI 的演算法是一直在進步的,而演算法的周遭跟核心都有我們熟悉的硬體:晶片、感應器,連結到的 IC 設計、晶圓、封裝、半導體產業,甚至傳統的硬體終端,手機、汽車電子,這部分台灣都累積很多經驗。另外,過去我們談軟硬整合,現在談的會是「軟硬融合」,這個概念過去韓國、中國都提過,後面這個「軟」的意思不是軟體,而是軟實力、也就是服務。未來台灣硬實力要在技術的深度超過別人,軟實力就是行業跟應用的 Domain Know-how(領域知識)。

未來不可能全世界所有服務、消費都建置在網路上,只要場景拉到實體、拉到線下,就是台灣的機會。現在台灣有沒有軟實力?要做服務,台灣也還是有發揮空間。例如說智慧交通,我們的 ETC(高速公路電子收費系統)已經有 2 千萬人口的使用量,而且這個系統在很短的時間持續精進,現在也在談海外輸出。台灣的服務模式不像英系、歐系國家的系統可以稱霸全世界,但可以輸出到新興市場,像是東南亞等華人市場有共同訴求的國家,我們的交通環境其實很複雜,有機車、汽車、行人、大眾交通,做智慧交通是有優勢的。未來十年不管新興科技怎麼變,台灣不一定能夠自創大的生態系,但還是會有小的生態系可以發揮,甚至有能力做海外輸出,台灣絕對還是可以扮演生態系的關鍵一員。


方向 2:讓台灣成為機器人王國

台大智慧機器人及自動化國際研究中心主任 羅仁權

全球工業機器人市場目前只開發了 10%,縱使 40、50 年以後,工業機器人絕對都還會有應用!機器人能在 4D(Dirty、Dull、Difficult、Dangerous)環境下工作,更是能帶動很多產業發展的火車頭,它跟食品、紡織、製造各個產業都有連結,經過分析,投資在機器人上帶來的槓桿效應也是最高的。這一塊市場的需求是很大的,只要你有競爭力,其實就不怕那麼多人都在做。

台灣的 hardware(硬體)有優勢,工業機器人就是非常 hardware 的技術,你看我們連控制都可以 PC-based 了。在關鍵零組件:馬達技術、減速機、編碼器這些當然還可以做得更好。我覺得政府應該要痛下決心,把重要的關鍵零組件產業發展起來,因為這一塊如果不掌握,就沒辦法跟國際競爭。台灣現在在工業機器人市場,大概只能排到 20 幾名,新政府之前說生產力 4.0,現在說智慧機械產業化,其實內涵都是一樣的,不過重點是你做事情有沒有速度感,有沒有決心要把這件事情做起來?

另外,服務型機器人也是一塊很有潛力的市場,它很典型的是 B2C、C2B 的生意都可以做,未來面對的更多是一般家庭市場。現在全世界有 70 億人口,大家都想要生活品質好,最後量一定會帶起來,現在台灣廠商算是有跟上,華碩、宏碁都開始都在動了。回到技術,技術你能不能做得好?未來的機器人也一定會結合 AI,它是硬體也是軟體,在 chip(晶片)這裡還是我們的優勢。未來全世界都會做 AI + Robotics,未來 AI 也一定會是一個拚勝負的事情。


方向 3:要抓住 AI 浪潮,先改企業腦袋

趨勢科技董事長 張明正

科技典範正在轉移,未來十年的下一個主流平台,我是看好人工智慧的。去年 AlphaGo 讓大家對 AI 認真起來,現在不到一年它就快把一個長久以來的產業顛覆掉了。現在,大家的興趣甚至將不再是人跟電腦比賽,大家也將不再問「無人自駕車會不會比較不安全?」這種問題,就像以前的 ATM 一樣,大家已經習以為常。我覺得未來 AI 會變成晶片,會開始 verticle(垂直),例如 NVIDIA 想做 AI 的 GPU,這不會像以前的 Intel 時代一樣,我覺得會有新的競爭者出來、專門做某一方面的事情。未來,AI 加上生物科技,會不會有「超人」的出現,我覺得一定會有很大的進展,以前是 AI 很難超越人,現在變成人很難超越 AI。

未來 AI 會滲入所有產業,它就像當年的 micro processor(微處理器)一樣,它來得太快太急太重要了。現在講的 IoT,以後也一定都有某種程度的 AI。現在台灣在 IoT 的重點是有裝置、晶片,我覺得這對現在擁有一堆數據、但還沒想好怎麼用的大企業來說,還是比較占優勢。例如說台積電之所以獲利率、競爭力強,是因為他掌握了每一個 station(機台)每秒的數據,找出不良率的預防方法,這是他在本業裡的運用,這會讓強者越強。

不過,台灣現在還缺少像是資料科學家這樣的人才,學校教育也還多只是停留在 data mining(數據挖掘),我們沒有教育、公司、人才,在大數據、Hadoop 都已經輸了一輪。另外,過去我們做 ODM、OEM,有一個很大的問題,我們不習慣看到終端使用者的痛點,我們永遠不知道市場的痛點在哪裡?這些其實也都是軟體人才比較不喜歡的文化。所以我覺得未來會是企業文化跟人才戰。企業文化要先改,要從原來的 SOP 架構變成更有創造力的文化,你要去找 data、利用 data,你還要去 try error(試錯)、跨部門合作,試著解決市場痛點(pain point)。

最後,我覺得台灣的企業老闆要知道,AI 的趨勢真的會發生,而且會比你想像得更快一些。企業的文化必須被改變,才比較容易留住人才,就像現在,你一講你懂 AI,很快就被中國、美國挖過去了。


方向4:連結新創,做產品落地的最後一哩

美商中經合集團董事總經理 朱永光

台灣過去有很完整的製造業產業鏈,包括硬體設計與製造、晶圓、IT/ICT、無線通訊網路等,擁有具世界水準生產產品的實力,過去優質的製造經驗,造就台灣擁有跨領域、跨產業研發、結合的優異能力。尤其在發展 IoT,或是更進一步的 Smart IoT,都需要 last mile(最後一哩),例如很多 Kickstarter 上的產品延遲產品化或出貨的原因,就是因為沒能將產品想法落實合作的夥伴,讓擁有前端技術的產品可以落地,會是台灣可以切入、善加利用的機會。

台灣要能利用既有優勢,扮演著讓擁有尖端技術想法產品落地的重要角色。突破傳統製造業與代工的圍籬,讓產品設計、製造合作夥伴的角色浮現。未來十年,以企業的布局而言,鴻海也許是目前值得觀察的,看起來正在「拼圖」,雖然仍是以代工為主體的企業,布局方面也許仍有些鬆散。但綜觀近年的發展,包括發展永齡基金會、收購夏普等,鴻海的事業版圖正在改變。透過永齡與夏普,發展醫療相關研究,更進一步跨入醫療的投資與研發,尤其收購了夏普之後,不只是表面上的面板事業,更有背後豐富的醫療資源,讓鴻海集團可以利用其擁有強大技術再投入及利用之處。

最重要的還是,台灣企業掌門人的思維要改變,不能只是線性思考,要把自己的優勢提升到「管理財」的層次。未來十年不知道會發生什麼事,至少要能看到外面世界的變化,當然大象還是要固守舊有的地盤,但我認為與新創公司接軌,未來可能也會成為重要的一部分。畢竟,相較於大企業,新創公司的動作更靈活,要打國際市場的能量也是更大的,以美商中經合投資的新創團隊宅妝為例,他們搭建了房地產、房仲、消費者之間的平台,走出國際市場也更容易。任何產品或平台的創建都需要多方的合作才能成就,台灣只要能善加利用自身的優勢,就能持續在科技產業中占有一席之地。

程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...