SBC vs aptX

這兩個音訊格式都是藍牙所使用的. SBC = sub band CODEC [1], 關於何謂 sub-band, 從頻域來看, 聲音從低頻道高頻都有, 因此可以分成一個個的區段, 這就是 band. 好比手機訊號有 900M, 1800M 這樣.

但人耳對於不同頻段的感知能力不同, 說話的高低音 (300~3KHz) 我們比較容易分辨, 但是對於 16KHz, 20KHz, …這種高音, 聽起來都是很尖而已, 甚至木耳一點就聽不到. 所以我們可分而治之, 在不同的頻段給予不同程度的壓縮. 這就是 SBC.

對於藍牙系統來說, 支援 A2DP (Advenced Audio Distribution Profile) 就要多處理 audio 的壓縮、解壓縮. 如果硬體不夠力, 這樣的小工作也是一個負擔. 在 SBC 的規範當中, 最高可以支援 48KHz 採樣, 單聲道 198 Kbps, 雙聲道 345 kbps. 即使計算量不算太高, 這 bit rate 卻也不低.

至於 aptX [3], 原本叫做 apt-X, 被 CSR 買了之後改為 aptX. Qualcomm 在 2015 年完成對 CSR 的併購, 所以 aptX 算是 Qualcomm 的私有規格. aptX 雖然複雜度比較高, 但仍然是一種 sub band CODEC. 它的好處在於採樣率下降到 44.1 KHz, 所以單聲道最多 176 Kbps, 但雙聲道可以 352 Kbps.

相形之下, aptX 有何種誘因讓大家採用呢? 主要是它的 encode / decode 速度較快. 在 CSR 的官網, 他們大喇喇地宣稱用了其他 audio CODEC 會導致 AV 不 sync [4]. 不過這個說法並不公正. 只不過是因為 audio 到了藍牙裝置後, 被系統視為  HW 輸出, 所以愈接近 real time 的 software audio CODEC 就不會和 video free run. 把它當作一種廣告詞就好了.

[REF]

  1. SBC (codec)
  2. [無線科技] 立體獻聲藍牙人間:淺談Bluetooth技術
  3. aptX
  4. https://youtu.be/e5aG4qIVqSw

IPA 小註解

這裡的 IPA 是指 intermediate physical address. 一般印象中只有 virtual address (VA = 虛擬地址) 和 physical address (PA = 實際地址), 為何又多了不虛不實的中實戶 – 中間實際位址呢? 主要是因為 hypervisor mode 的關係.

首先, CPU 可以透過 MMU (Memory Management Unit) 來完成virtual address 到的 physical address 的映射. 由於需要以位址查位址, 當然就需要有個表格 – translation table. 在 ARM 的 CPU 架構中, 使用 TTBR  (Translation Table Base Register) 來幫忙查詢.

如果 page size 不大, 而 physical address 很大, 那麼就需要使用多層的 page table 分次查詢.  例如 page size = 4 KB, physical address = 1 GB, 那麼 table 就需要 1G/4K = 256 K 個 entry. 分成 3 層表格, 每一層的 entry 數目就會大幅減小. 在這每一層當中所查出來的 “physical address", 因為不是最後的真實值, 就稱之為 level N descriptor PA. 

如果打開 hypervisor mode. CPU 所運行的可能是 guest OS 的 virtual address. 萬一 guest OS 和 hypervisor 的 MMU 映射方式不同, 兩者所看到的同一個 virtual address 就不會是同樣的 physical address 了.

此時需要第二度的轉換 (所謂 stage 2 [ref 1]).  每一次的 level N descriptor PA , 就相當於 level N+1 descriptor 的 IPA, 根據它, 透過  VTTBR (virtual TTBR) 轉出 level N+1 descriptor 的 PA.

因此, IPA 的功能是表彰 hypervisor mode 中的特殊 level N descriptor PA.

[REF]

  1. ARM Virtualization Extensions – Memory and Interrupts (Part 2) – See more at: http://www.futurechips.org/understanding-chips/arm-virtualization-part-2-memory-interrupts.html#sthash.wtHYHshp.dpuf

報稅季節

昨天 (28日)中午可以開始下載報稅的資料了! 本來我以為參加除息會多繳很多稅 – 幾年前確實是如此. 但現在個人薪資和投資所得可以分開計算.

也就是說, 夫妻中一人的薪水高於對方一個級距 [1] 以上, 那麼兩人的差異正好用來放股息收入. 我用 “相對高薪者" 和 “相對低薪者加上股息" 這兩者來討論. 若兩者級距相同, 分開來算也比加在一起算好多了. 因為兩者相加可能又往上突破一級!

TaxRange104-1-620x200

現在報稅有五種算式 [2], 包括:

  1. 夫妻所得合併計稅合併申報
  2. 將妻的薪資所得分開計稅,合併申報
  3. 將夫的薪資所得分開計稅,合併申報
  4. 將妻的各類所得 [3] 分開計稅,合併申報
  5. 將夫的各類所得分開計稅,合併申報

如果 “相對高薪者" 的級距還是比"相對低薪者加上股息" 高, 那麼就可以因為分開計算, 而達到節稅的效果.  此時他們適合第二式或是第三式. 如果夫妻都退休, 或者 “相對高薪者" 的薪資收入還是遠小於股利收入, 那麼薪資、投資有沒有分開計算差異就不大了, 此時是否參加除權息要更精打細算.

由於現在的報稅軟體會自動算出繳稅較少的計算方式, 所以本篇的重點也不在於告訴大家如何報稅, 而是和大家分享 “除權息沒那麼可怕". 特別是像我家這樣, 主要以一個人收入為主的家庭, 比我年薪低的其他收入 (主要是股息) 都能自動節稅.

講個誇張的例子, 即使股息收入超過 1,170,000 NTD, 只要還低於 2,350,000 NTD, 稅率將落在和機率中獎 (中樂透) 一樣的 20%, 而且還有 “可抵扣稅額" 可以扣. 如果只是小小收幾萬幾十萬的股息和利息, 級距更只有 5%~12%. 這和辛苦把錢弄到海外的 10% 稅率也差不了多少. 

工程師年薪百萬不太困難, 但是除息要除到 2,350,000 元, 那得有市值五千萬的 0056 台灣高股息, 才能配出這麼多利息 (4.7%). 如果是同樣市值的 0050 – 台灣 50, 殖利率那麼低, 就根本不用擔心了. 哈! 所以有一定薪資收入的定存族, 只要想開一點, 當作中樂透, 除權幾乎可以放心參加! 特別是一個人賺錢可以分飾兩角繳稅時! 但重點是要結婚才有分開計算~~~要結婚!要結婚!要結婚!

[REF]

  1. 稅率級距表
  2. 夫妻如何申報較為有利
  3. 所謂各類所得, 就是全部所得加總. 如此一來薪資和投資相加, 會導致薪資較高且投資收入也較高的一方繳較多的稅. 因此第四式和第五式適合夫妻中一個薪資高,  而另一個投資收入高的組合.

我讀 «以小勝大»

這本書是麥爾坎葛拉威爾 (Malcolm Gladwell) 在 2013 年出版的作品, 英文名字是 «David and Goliath». 我想大部分的人都聽過這個大衛戰勝巨人歌利亞的故事. 作者在前言說到, 由於牧羊人大衛的飛石原本就有能力擲死蒙哥, 呃,…全身著盔甲只露出額頭的利亞, 只要不採取肉搏戰, 又能大眾敵人的要害等於是必勝. 所以表面上的優勢並不是優勢, 小也可勝大.

翻開本書後, 大部分的推薦序也都在強調 “以小勝大", 原以為勵志會是本書的重心. 但看完全書之後, 了解到作者的重點在唱反調. 基本上本書有三個模型, (1) 表面上看到的優點不是優勢, 甚至是缺點、 (2) 多了也不好, 過猶不及 – 倒 U 曲線、(3) 大家認為有益的事情可能沒有幫助, 甚至有反效果.

個人認為作者略有譁眾取寵的嫌疑, 所以說服力有點不夠. 另外, 對於老中來說, 中庸之道是從小就知道的道理, 所以這本書對我最有意義的地方,  在於思考書中的實例, 配合近來爭議頗多的時事, 想想怎麼樣會更好?

第一部 “優點未必是優勢" 分為三章. 第一章講表面上較弱的一方若採用非正規的作戰, 就有機會大大提高勝率. 譬如條件不好的籃球隊可以靠著全場緊迫盯人, 製造對方失誤打出優異成績 (雖然書中的實例最後都沒有奪冠). 又或者弱小的一方能用游擊戰打垮強大對手, 書上雖然是舉阿拉伯的勞倫斯為例, 但越共打敗美國何嘗不是更顯著的例子 – 作者怕寫了這個會影響銷售量吧, 哈!

第二章說富爸爸無法窮養下一代, 所以富貴不過三代. 以及小班制學校未必比大班制好. 因此得出倒 U 行曲線的結論, 說明中等家庭收入 (75K UDS/year), 中等班級大小可能才是最好的. 這個單元, 我認為其實有點牽強附會, 作者的爸爸比他還精準, 有興趣的人可以去看 p97. 根據倒 U 行曲線, 超級有錢人爸爸教養子女跟三級貧戶一樣困難! 因為富爸爸只能跟小孩說我買得起、但我不買;  窮爸爸只能跟小孩說, 我想買給你, 但爸爸買不起. 所以這兩者一樣困難! 呵呵, 最好是.

至於小班沒有比大班好, 作者無法舉出有說服力的證據, 結論是兩者其實差不多, 所以折衷可能最好. 只不過作者統計中的小班是 20 個人, 大班是 40 個人; 如果他知道我們那個年代一班將近 60 個人的話, 舉起例子來就理直氣壯多了. 雖然作者也引用了海外的數據, 但如今少子化社會提供的模型本來就偏差啊! 想想以前同學那麼多, 老師不能和我們互動也是當然的, 不能全怪教育政策或是文化差異.

當年台灣的填鴨式教育, 和早期台灣缺少優秀的師資也有關係. 我們讀小學的時候, 師專畢業的老師就算是水準最高的代表了. 然而師專剛畢業的老師那麼年輕, 對於學生的管教, 其實不如沉穩有社會歷練的退伍軍人. 當然也有學經歷都不符就當上老師的例子.

以我國中的公民老師為例, 小考有次出現 " (哀莫) 大於心死" 的填空題, 同學疑惑地提問空格裡好像不是一個名詞, 但老師說沒關係. 哈! 其實文科的東西, 我從來沒打算要靠老師. 國中課文對健康的定義是 “不生病, 能耐勞; 機能健旺, 身體強壯, 謙和爽朗, 心理正常." 這麼彆扭的課文, 過了 40 年我也還記得. 哈!

第三章相當有啟發性, 印象派的畫家本來不能被法國沙龍展所接受, 所以他們自己辦一個展覽, 勇敢離開大池塘, 游到小池塘. 這章又提到申請名校的學生, 原本很開心能進入頂尖的大學, 但是裡面強者太多, 很多科目可能重修或是只拿到 B, 因此只好轉到原本不擅長的科系. 作者說到, 如果當初他們進到次一級的學校, 或許就能順利取得有興趣的學位.

書上的例子主要是根據大學入學測驗的數學 SAT 分數來論述. 非頂尖大學前 1/3 的學生, 其實入學測驗的數學程度還不及頂尖大學的後 1/3. 但頂大很多人從 STEM (即理工科系 science, technology, engineering, and math) 轉去念文科, 非頂大的同學的前段班不但順利畢業, 連學術成就都不輸給頂大的中後段. 

作者說哈佛大學會刻意招收成績較差、但可以從運動或其他方面得到自信的學生加入, 使得原本資賦優異的入學生, 不會因為墊底而喪失求學的意願。在台灣, 考上不喜歡的科系是很正常的事. 然而台校普遍進去困難、出來容易, 使得這個問題被掩蔽了. 即使名校的某些同學在課業上吃鱉, 至少記者一律會稱之為高材生. 這麼一來, 大家的自信心多少會得到補償, 不用轉系. 哈!

根據上述的討論, 作者建議企業不要只錄取頂尖學校的畢業生,不妨考慮好大學的頂尖學生。我想這兩者各有好處,前者證明此人有潛力,後者除了大學沒考好難過一下, 但在後續學習中可以得到較多的正面回饋,學問和自信可能更佳。

本書的第二部叫做"有益的困境". 同樣分為三章說明閱讀障礙、幼年失親、善用巧計可以讓人生逆轉勝. 閱讀障礙的人因為不擅長拼字, 所以若能傾聽就有機會勝出、成為大律師、大老闆. 小小年紀時若失去爸爸或是媽媽, 成為單親家庭, 此人成為偉人或是犯人的機率都增加. 在 573 位知名人士的自傳中, 1/4 在 10 歲前至少失去父親或母親; 34.5 % 在15 歲前失親、45% 在 20 歲前喪父或是喪母. 美國的 44 任總統中也有 12 位在年輕時喪父.

不過我們不要因為作者這樣講, 就認為這些困境真的有益. 不只書上略略提到, 隨便 Google 也有好多篇. “Rebecca O’Neill (2002)提出失父兒童的心理健康較雙親兒童低雙倍,且有心理及精神偏差的問題。她指出失父孩童的不快樂比雙親孩童高出2.5倍,而針對學習及測量上,失父孩童的自我評價比雙親孩童低於3.3倍。"[1] 重點不在於困境, 而在於面對困境的態度.

這一部分對我最有啟發性的是英國人對德軍轟炸的態度. 受到德軍猛烈轟炸的結果有三種: (1) 被炸死. (2) near misses – 差點被擊中, (3) remote misses – 遠遠躲過. 真正受到影響的是差點被集中, 他們就算是自已或親人未受波及, 也會惶惶不可終日. 但遠遠躲過者就不一樣了, 他們慢慢把這個威脅不當一回事, 反而愈來愈堅強. 好比八二三炮戰後, 中共單打雙不打持續了 20 年之久 (1958~1978 年), 台灣有再怕嗎?

第二部第六章黑人民權運動使用巧計得逞, 和第三部 “懷柔寬容是最大的力量" 其實都牽涉政治與社會的主題, 我把它們一起討論. 黑人民權領袖金恩希望打破種族隔離的現狀, 但白人社會上基本不太能接受黑人, 黑人也幾乎沒有膽量衝撞白人統治. 金恩原本希望他抗議的時候被捕 (有益的逆境), 但聰明的警察局長自己找人把他保釋出來. 沒被關就無法引起同情.

金恩找不到奧爾巴尼市 (Albany) 政府的破綻, 便轉往伯明罕市抗議. 由於響應者太少, 金恩想要號召千人大遊行, 但參與者一直都是個位數. 有一次他們找到了 22 示威者要在 2:30pm 出發, 不小心拖到了 4:00pm 才啟程. 由於拖得太久, 路人慢慢聚了一千人之多. 第二天的報紙寫到遊行人數約 1,100 人之多, 這啟發了他們的靈感.

此後他們每次公告示威遊行都會延遲很久才出發, 等到傍晚下班人潮聚集, 就號稱千人大遊行. 一個月後, 警局覺得示威的人太多了, 便派出高壓水柱和警犬來鎮壓. 結果警犬咬示威年輕人照片登上全國各大報紙的版面, 震驚朝野. 一年之後美國國會立法通過 1964 年民權法案 (Civil Rights of 1964), 金恩的革命得到成功. 事實上, 那張照片的下一秒是年輕人踢碎警犬的顎骨 (p261), 但黑人被欺壓的形象已經製造出來.

第三部的七、八、九三個章節分別說到北愛爾蘭如何動亂, 紐約如何改善治安, 喪女雙親如何面對加害人、以及庇護猶太人的地方政府等議題. 作者認為紐約市對青少年犯恩威並施 (嚴密監視, 感恩節送火雞) 是改善治安的良藥, 而三振出局法案 – 累犯加倍處罰、三犯加重其刑且不得減刑假釋, 雖然減少了凶殺案 50%, 但那只是迷思.  個人認為這說法似乎偏頗, 只是為了第九章要做有愛最美結論.

畢竟紐約市面對的是青少年虞犯, 加州面對的是殺人犯、甚至是連續殺人犯. 以更大的愛心面對有教化希望的對象是很感人的作法, 但對於連續殺人犯, 送他月餅年糕是沒用的. 就算三振法案不能從根遏止連續殺人, 但嘴砲同樣不能. 本書第八章就是講原諒加害人這個主題. 前陣子殺幼童案非常熱門, 大家都說要修法. 作者在此除了吐槽嚴刑峻法沒用, 其實 (當然也) 拿不出辦法.

然而, 作者有個觀點很好, 那就是執政要有正當性 (以北愛爾蘭、紐約黑幫為例). 正當性原則 (principle of legitimacy) 有三個要素: (1) 被要求服從的人必須能夠發聲而且被聽見、(2)法律必須是可預期的、(3)當權者必須公平. 反觀我們快下台的政府. 對於人民的抗議, 總統似乎都去聽了, 但民眾感受就是聽聽而已, 甚至說了不得體的話, 造成反效果. 恐龍法官讓人民認為法律不可預期. 再加上當權者老是對聲音大的一方沒轍, 自己的立場站不穩. 除此毛病之外, 輕易讓反對者營造出被害形象也是一大蠢事, 能犯的政治錯誤都犯了, 難怪會失去政權啊!

基本上, 本書用小蝦米戰勝大鯨魚做出漂亮的開場, 中繼三局有點偏弱, 後援的部分則因為不能做出結論而失焦了. 即便如此, 本書仍有值得品味的地方, 我省略了很多點沒有提及, 像是 email “Jay" Freireich 發現血小板可以治癒白血病的事蹟 (第五章), 本身就是個好故事, 只是為了和幼年喪父的主題呼應, 主人翁的老爸似乎非死不可了. 

[REF]

  1. http://www.splendoroflife.org/chastity/epaper/2012/11/004.html

Android 6.0 記憶卡擴充小註解

雖然 Android 6.0 有了把外部 SD Card 變成內部記憶體的能力, 但是各家廠商都捨不得這個賺錢的法門, 老大哥 iphone 的手機就是用內部記憶體大小定價的啊, 不然 128GB 以後要賣誰? Android 廠商都快活不下去了, 當然比照辦理, 硬是把這個功能給隱藏了. 原本想說 Android 親生的 Nexus 系列總該以身作則吧!? 想不到 Nexus 竟然連插卡功能都不給, 這樣就不能說他們違反 CTS 了.

以 Samsung S7 系列為例, 雖然上個月才出來, 網路上已經有一大堆 adaptive storage (SD card) 的教學, 中文英文都有 [1,2]. 不過按圖施工也不一定會成功, 這邊就讓我來做 debug 的小註解吧!

  1. 首先要備份 SD card, 因為裝好之內內容會被清掉. 卡要選速度快的, 容量愈大愈好. (see 11)
  2. 安裝 adb, Windows / Mac 都可以裝. Windows 裝 adb 的方法很多, Mac 參考這一篇 [3] 的 option 1.
  3. 手機要連到電腦 – 不過我的 Windows 10 從來沒有成功過, 兩台Macbook 都可以. 至於 Windows 8.1 應該沒問題, 因為大部分的人都是用這個環境. 其中要把開發人員選項叫出來, 才能打開 USB debug 功能 [2].
  4. adb devices 要能看到 device. 如果看不到, 可能之一是手機進入休眠, 所以沒點到螢幕上是否同意連接 adb 的選單. 允許之後就  OK.
  5. 如果 adb devices 還是失敗, 請參考 [4].
  6. 進入 adb shell 之後, 大概就可以順利執行 sm list-disks, 長相是這樣: 文字或數字 179.xxx  這個文字或是數字就是 SD Card 的代號. 如果 xxx 不是 0, 後面就簡單了.
  7. 用 sm partition disk:179,xxx private 把整個 SD Card 指定成內部記憶體, 用  sm partition disk:179,xxx  mixed 50, 其中 50 代表切給內部的 ratio.
  8. 可以用 sm list-volumes all 看到所有的內容. 完整指令如下:sm-command-1-620x200
  9. 如果很不幸地, 看到 SD Card 是 179.0, 那麼可能會伴隨各種 Java error…etc. 網路上災情不少. 例如: Error: java.lang.IllegalStateException: java.util.concurrent.TimeoutException: Thread Binder_B gave up waiting for partitionPrivate after 180000ms, 或者
    Error: java.lang.IllegalArgumentException: command ’45 volume partition disk:179:0 private’ failed with ‘500 45 Unknown disk’
  10. 這要麼辦呢? 我想應該是 Java 版本的關係. 當我在第一台比較少用的 Macbook 看到上述第二種錯誤後, 試了各種網路上建議的: 重新 format SD 卡, 改變 USB 連接方式….等等. 但是拿到另外一台 Macbook 卻是簡單地過關.
  11. 這樣做有沒有風險呢? 我認為有, 包括我自己的平台, 以及網路上其他人貼的圖. 系統把實際記憶體高估了, 也就是內部+外部記憶體, 對我來說是 32 + 64 = 96 (GB), 但系統顯示有 128GB, 其中 64GB 已使用 [1-2].
  12. 做了個實驗, 如果是內建 32GB + 外插 128GB, 合併之後, 系統認為總共是 256GB. 所以手機會固定把外部記憶體 x 2 當作總記憶體數. 已使用的部分再細項的部分都是正確的, 但是合併之後的"已使用", 包含虛胖的 128GB (假內部) – 32GB (真內部) = 96GB, 然後再加上真正已使用的部分.
  13. 不過根據 [2], 這個動作可以還原, 所以至少不影響保固.

[REF]

  1. Here’s how to configure adoptable storage on your S7 / S7 Edge
  2. 三星不給你的自己來!Galaxy S7 / Edge 合併記憶卡空間【免 Root】
  3. Installing ADB on MAC OS X
  4. ADB server didn’t ACK