2019年2月10日 星期日

Google Home mini 中文音控設定 與 幼兒教育、長輩戲劇 應用?

GoogleHomeMini

2018年夏天因加速公司研究音控服務,自己買了一台 Google Home mini ,研究的差不多後就擺晾在一旁,今天整理了一下,想說該拍賣掉了 XD 意外發現已經支援中文音控! 可搜尋 "Google Home mini 中文設定教學" 囉!據說這招是需要兩隻 Android 手機也能達成,由於我本身是用 iPhone,就必須搭配另一隻 Android 手機

在此簡介環境,需要:
  1. Google Home mini
  2. Android 手機
  3. iPhone 手機 
  4. Android 手機安裝 Google Home app ; iPhone 安裝 Google Home app 
  5. Android phone 跟 iPhone 上的 Google Home app 都綁定同一個 Google 帳號
首先開啟 Android phone 上的 Google Home app => 右下角"帳戶" => 設定 => Google 助理 => 語言 => 第一語言設定成 "中文(台灣)",並將第二語言設定成 "無",且要讓最下方 "選擇這些裝置的語言" 留白,不做任何選擇 (此時若仍顯示英文,就來靠 iPhone 或另一隻手機處理)

接著換 iPhone 開啟 Google Home app => 右下角"帳戶" => 往下滑到 "Google 助理" 區域,選擇 "更多設定" => 點擊 "Google 助理" 分頁 => "Google助理的聲音" => 把下方的英文也清掉,留下只有第一語言的中文(另外,iPhone 的 Google 助理語言不能選中文,要靠 Android phone 來處理)

後續你的 Google Home mini 就會講中文了!並且無論 Android 或 iPhone 的 Google Home mini ,進入 Google 助理 => 語言,都會看到最下方留白了:

Android Google助理-語言 iPhone Google助理-語言

接下來才是重頭戲 XD 若家裡也有 Chromecast 的話,小孩在吵的時候,就只要說:

OK Google, 請播放 Youtube 上的瑪莎與熊第一集

這樣就可以打發小孩了(誤),更別說還有一卡車正版戲劇可以隨叫隨播,長輩也能開開心心



當然,沒有 Chromecast 還有 Spotify !在台灣已經接近全平台可免費使用,可以直接說:

OK Google, 播放 K-POP 音樂

如此就可以聽聽韓流最新音樂,更別說南韓音樂的快速迭代,立刻有聽不完的韓流音樂

最後,無聊時可以多講講 OK Google ,想必小孩也會學的,接下來請谷歌小姐陪小孩講話唸故事了 XD

2019年2月9日 星期六

十年挑戰

2019 雲林

真是恐怖的數字,想起來人生也可能跟同輩相比停滯了 10 年!很難想像,十年前同輩親友在補習班打工存錢圓夢,十年後的今天則是事業有成,手上的藝術品已可兌換成數百萬現金,年年出國度假了。同輩的同學也已經出國返鄉,回台外商卡好位置 XD 自己推算起來,則是加入過三個團隊,其中兩個團隊默默經過了十歲生日呢。

此外,歷經了幾位長輩過逝,愛犬也離我們而去,還有幾位長輩因身體健康而開始不抽煙,或是需要開始定期吃藥了。

人生十年的變化真的不小。自己努力擠點時間也只做了幾個 side project 把玩,完全無法糊口 Orz 同輩的大大已經可以靠 side project 達成類財務自由呢。十年的技術也從 mobile first、大數據分析、巨型資料分析,接著直播、AI和區塊鏈。而自己大多的 side project 還是在十年前的 mobile first 領域,真是說來慚愧啊,也說明當年 mobile first 題目可是人人可單打獨鬥的美好日子。

這十年體驗了不少跟 "健康" 、 "資訊技能" 、 "公司政治" 、 "養小孩" 相關的議題,沒想到政治比想像中複雜,雜到最後大家只能自私做事,明明都是聰明人卻選擇不同路線(自己的舒適圈?),這時就很佩服朋友的公司,老闆專門 fire 理念不同的人,降低公司的政治複雜度和小圈圈呢 XD

下個十年,或許算是搭上火箭吧?開始好好打團體戰,適應政治圈了

2019年1月31日 星期四

iOS 開發筆記 - [BoringSSL] nw_protocol_boringssl_input_finished, boringssl_context_alert_callback_handler, boringssl_session_errorlog, boringssl_session_handshake_error_print 處理方式

CFNETWORK_DIAGNOSTICS=3

看到以下訊息,完全摸不著頭緒:

[BoringSSL] nw_protocol_boringssl_input_finished(1543) [C294.1:2][0x11f2823d0] Peer disconnected during the middle of a handshake. Sending errSSLClosedNoNotify(-9816) alert
TIC TCP Conn Failed [294:0x2812a5a40]: 3:-9816 Err(-9816)
[BoringSSL] nw_protocol_boringssl_input_finished(1543) [C295.1:2][0x108589540] Peer disconnected during the middle of a handshake. Sending errSSLClosedNoNotify(-9816) alert
TIC TCP Conn Failed [295:0x2812d0540]: 3:-9816 Err(-9816)
[BoringSSL] boringssl_context_alert_callback_handler(3724) [C296.1:2][0x108450060] Alert level: fatal, description: inappropriate fallback
[BoringSSL] boringssl_session_errorlog(224) [C296.1:2][0x108450060] [boringssl_session_handshake_incomplete] SSL_ERROR_SSL(1): operation failed within the library
[BoringSSL] boringssl_session_handshake_error_print(205) [C296.1:2][0x108450060] 4838922792:error:1000043e:SSL routines:OPENSSL_internal:TLSV1_ALERT_INAPPROPRIATE_FALLBACK:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl/boringssl-109.230.1/ssl/tls_record.cc:586:SSL alert number 86
[BoringSSL] boringssl_context_get_error_code(3617) [C296.1:2][0x108450060] SSL_AD_INAPPROPRIATE_FALLBACK
TIC TCP Conn Failed [296:0x2812d0a80]: 3:-9860 Err(-9860)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9860)
Task <FAB06FFC-73C2-48D8-AAEA-750F2FCF1969>.<0> HTTP load failed (error code: -1200 [3:-9860])
NSURLConnection finished with error - code -1200


最後拜讀 StackOverflow - XCode 9 iOS 11 BoringSSL SSL_ERROR_ZERO_RETURN 可以定義 CFNETWORK_DIAGNOSTICS = 3 數值來 debug,並透過 Xcode's scheme 管理環境變數即可,收工!

2019年1月29日 星期二

使用 Google Sheets 與 Google Script 進行簡易的人力管理

專案貢獻計算01

應該稱得上是第二份工作,老闆是一位三進三出工研院的強者,他主張所有都公開透明,採用美式(G社)的管理風格,讓各類 Project 都灑出去,決定好 Project Owner 後,各個 Project Owner 再去找成員進去。

每個 Project 重要程度不一,若成員想要達到好考績,不見得要參加各種專案,但是只參加一個專案肯定分數上又不是不夠的,而各類 Project 都參加又不貢獻,那分數依舊不佳。

這其實是一個有效管理極度壓榨人力的機制!但是好是壞,就看實際應用情況了,像是我也被老闆提醒一個觀念:資深工程師,本身就會身負重要職責,那本身就是對應著他價碼的任務的,若強用這種架構,那不就資淺的永遠難以翻身?

先無論其實用性,在這樣的概念上,試試看純靠 Google Sheets 製作,列個專案列表且每個專案依照其重要程度或開發時間列個重要分數,每個專案在列出成員貢獻度,最後再來個 Google Script 把各個成員的分數算一下,收工!

專案貢獻計算02

而 Google script 就只是輸入 工作表名稱 和 成員名稱,接著就會把他們計算出來,程式碼如下:

專案貢獻計算03

有需要可以參考:github.com/changyy/blog.changyy.org/blob/master/note/calc-member-contribution.gs

2019年1月26日 星期六

Chromecast 與 微型投影機 EZCast Beam J2 提供 Netflix 大螢幕投影

Chromecast + EZCast Beam J2 + Netflix

Chromecast 大家都不陌生,倒是有沒有人想一台小型、隨身投影機並且搭配 Chromecast 使用?投影機搭配 Chromecast 的好處是支援各大需要 DRM 保護的內容服務,如 Netflix、myVideo、Hami Video、CatchPlay 等線上影音服務,當 Chromecast 發現輸出 HDMI 資料的過程可能被竊聽/盜取資料時,整個輸出就會變成黑畫面的!

Chromecast + EZCast Beam J2

而使用 EZCast Beam J2 投放 HDMI 資料是符合數位內容保護機制,因此 EZCast Beam J2 微型投影機是可以搭配 Chromecast 使用,將 Netflix 等頻道內容投放出去眾樂樂。洽逢2019年初活動,入手了一台。

EZCast Beam 開箱 01
EZCast Beam 開箱 02 - 背後有規格: 3000 mAh 電池
EZCast Beam 開箱 03 - 主機 + 說明說 + 遙控器 + 電源
EZCast Beam 開箱 04 - 主機 + 遙控器 + 電源

先來提一下 EZCast Beam J2 這台定價台幣一萬元的微型投影機的定位(各大通路常有特價八折的價格)。在微型投影機的領域,常見台幣兩千以下的產品,與那些低價產品主因是硬體用料、投影技術的差別,反應在投影機亮度甚至投影機壽命。而投影機亮度常見單位是 ANSI 流明 跟 ISO 流明,兩者是計算的方式不同,而 ISO 流明數字是 ANSI 六倍左右。通常 2000 元以下的投影機,都會故意誇大自己的流明數,像是用 ISO 計算方式的流明或是胡亂標記,畢竟用戶很難認真比較、計算,建議使用上,還是參考投影機品牌的價格去推估。

EZCast Beam 開箱 05 - 散熱孔 + DLP
EZCast Beam 開箱 06 - 供電 + USB + HDMI + 耳機

就 EZCast Beam J2 而言,提供的投影機亮度是 ANSI 300流明 (約略 ISO 1800 流明)。拿 300 流明去 Google 一下,大概很容易看到破萬以上的品牌產品,如 Sony/Benq/Optoma/Acer/ASUS 等等,對等之下,EZCast Beam J2 在各大通路的特價後的八千價格,親民許多!可惜的是市場上太多低價投影機,導致萬元出頭的中階投影機容易失色於價格市場,甚至容易被誤會,這也是目前各大消費型品牌投影機碰到的困局,要嘛專注三五萬以上的高階機種,要嘛就跳下去做廉價的商品。

此外,影響投影機的價格還有:重量、體積大小。這兩個領域上 EZCast Beam J2 重量 400g / 體積 11.5公分x11.5公分x3.2公分 表現是很出色的,大多台幣1萬5以下的投影機,還很常看到 800g~1kg 等超過一瓶礦泉水的重量。

聊完一些價格上常吃悶虧的 EZCast Beam J2 後,回歸主題!當 Chromecast 搭配 EZCast Beam J2 後,可以有什麼便利的應用?當然是家裡電視不夠大,靠投影機投放到布幕上!透過微型投影機自帶 USB 插槽跟行動電源功能,可以便利地幫 Chromecast 供電,方便帶著走。

接下來就可以靠 Chromecast 提供的功能,播放 Netflix 影集等需要 DRM 保護的數位內容了。

Chromecast + EZCast Beam J2 + Youtube TWICE MV
Chromecast + EZCast Beam J2 + Youtube iKON MV

若對 EZCast Beam J2 感興趣,可以參考其他兩篇簡介及官網規格資訊,其實他根本不用靠 Chromecast 就可以完成很多無線/有線投影服務:
其他 Chromecast 相關簡介: