我的潛意識在搞笑

前幾天, 我有個朋友在臉書上說, 他夢到我們另外一個朋友 4 個月大的小 baby, 忽然說出一句完整的話 “我想要找爸爸", 於是就驚醒了. 我留言安慰他這沒什麼, 說不定繼續看下去還有更好玩的, 要是小 Zoey 可以報明牌不就更好了嗎? 

其實同一天晚上, 我也做了一個夢, 內容更誇張, 大致牽涉好人壞人和妖怪. 之所以沒有恐怖到把我嚇醒, 可能是我的潛意識一直在跟我搞笑吧!

話說好人原本被壞人包圍, 但壞人聽到妖怪殺人於無形, 全都驚慌失措地撤走了. 什麼妖怪這麼厲害? 我一定要看一下.

我把頭探出牆角, 只看到遠處一個小小的身影, 長頭髮蓋住半個身體, 身上穿著白袍.

“這不是前陣子在職棒賽開球的貞子嗎!"

“不!" 我的潛意識 OS 說 (OS = overlapped sound = 旁白). “它是檜子."

“因為它像筷子一樣能把人夾到另外一個世界, 又讓人聯想到劊子手."

嗯, 這樣的名字似乎有點道理啊!

接著我來到一個像是廚房的地方, 牆上有兩層置物的木板, 下方好像是個爐子或是灶. 上層木板放著一個比草綠色深一點點的 “薊", 沒有帶莖的. 帶著莖的話, 我女兒小四年級在韓國見到它, 就叫它 “釋迦棒".

下層木板放著一個削了皮又剖半的水梨, 切口的那一面朝下. 兩層木板上都放了其他的一些都是, 都是基本上灰撲撲的, 只有綠色的薊和雪白的梨看著顯眼.

此時旁白又來了, “你知道這是什麼嗎?" 他接著說 “老薊, 俯梨."

“你想說老驥伏櫪, 志在千里是吧!? 是要我去對付檜子? "

最後那個字唸 “立" 啦! 不過我的潛意識真的很搞笑. 本來不想寫他, 但他剛剛又送給我一個夢.

我夢見我在一個有很多很多民進黨支持者的大房間裡面. 他們討論著怎麼選黨代表; 而我在等他們走光了之後可以洗個澡. 真不知道我們會什麼會出現在同一個空間.

這時候 OS 介紹起撒豆的風俗. 他說有些地方有撒豆驅魔的風俗 (日本吧!?). 但是一般的豆子, 比方說綠豆, 煮熟了就會破皮. 如果是用豆子拿來 “驅趕" 男女朋友,說不定會有撕破臉的聯想.

比綠豆大顆的豌豆沒有這個缺點, 因為豌豆煮久了也不會破皮.於是後來演變成送豌豆給對方, 來表示不想在一起, 但不要傷了和氣 – 也就是以豌豆表示委婉拒絕的意思.

“嗯, 雖然我不下廚房, 我的潛意識也沒有做過菜. 但是這樣講好像很有道理."

我的潛意識佑又把豌豆唸成碗豆了. 他一直是說 “碗豆", 既通俗又有梗.

“這就是婉拒 (碗拒) 一詞的由來."  OS 說.

Android Thread Safe / Lock Free / Atomic 小註解

Atomic (原子) 通常是指一個指令不會被打斷, 例如一道組合語言的指令, 在沒有執行完之前, 就是 ISR (interrupt service routine) 也無法干擾其結果. 同樣的概念如果放到 function 上, 就很難說這個 function 從來都沒有打斷過了. 我們頂多說這個 function 的結果是如預期的.

怎麼樣保證如預期呢?在 Android 當中的 atomic.c 採用暴力的方法進行, 例如要做一個 write.

void android_atomic_write(int32_t value, volatile int32_t* addr) 顧名思義想把 value 寫到這個 addr,  而它裡面的內容就是:

{

int32_t oldValue;

do {

oldValue = *addr;

} while (android_atomic_cmpxchg(oldValue, value, addr);

只要 OldValue 沒有 value, 這個 loop 就不善罷休. 所以一定可以寫成功. 只要成功了, 就準備離開. 大家可以發現, 如果此時別的 thread 也來寫同樣的位置, 那就出事了. 

為了避免後者的狀況發生, 我們最好不允許這個在有效期間之內又被改掉. 解決之道是 lock 此一變數, 直到 unlock 之前, 都不讓別人改寫. 不過 Android 的 atomic 是 lock-free 的, 所以不需要用 lock. 相對地, 它讓其他的 thread 不會影響到當前的 thread, 也就是確保 thread safe.

怎麼做到 lock free, thread safe 呢, 簡單地說就是避免使用全域變數 (global variable), 只用區域變數 (local variable 或 auto variable). 此時每個 thread 都只針對自己的記憶體空間操作, 就不會影響到別人了.

此外, 我們可以指定哪些變數必須是 automic 的, 例如宣告成:AtomicBoolean, AutomicInteger, AutomicLong, AutomicIntegerFieldUpdate<T> …等等就有保護作用. 這些描述在 java.util.concurrent,automic.

當然, Android 還是有 lock, class 是 java.util.concurrent.locks.

[ref]

1. Android SDK

2. Lock-free atomic operations in Android

3. Thread-Safe的理解與分析

我讀 «怪笑小說»

這本書同樣是東野圭吾先生的短篇小說集. 雖然這些故事說得很好, 但是我覺得最棒的是它的後記. 作者把它如何發想每一個故事的背景都介紹給我們, 讓我們也能一窺作家的創作過程.

“鬱積電車" 的故事是說: 在滿滿都是人的車廂裡, 坐著的抱怨站著的老人孕婦似乎強烈暗示自己要讓坐, 站的抱怨坐的裝睡假裝沒看到他, 小的偷瞄對面女的, 也抱怨人大太多遮了他的視線. 一群陌生人的心裡各懷鬼胎, 認為自己最有道理, 其它人都混帳. 但是表面上風平浪靜, 彷彿在打一場沉默的戰爭. 破冰的契機是某個能讓大家說實話的實驗氣體洩漏了, 一場好戲準備上演.

不消說作者自己受過擠車之苦, 於是他揣摩每個人的立場而變成這篇小說. 據說早年在韓國的地鐵也是這樣, 車子擠到需要 push man 把人塞進去, 以致有地獄鐵之稱. 當年我遇到最擠的就是搭公車. 尤其我從台北回中和的方向, 恰好在北一女的下游. 所以經常看到一整車小綠綠把車廂都塞滿了, 公車經常直接不停, 或是假裝停一下, 但半個人也擠不進去. 我只好走一個小時的路回家…

“追星阿婆" 這篇是說原本靠著老人年金勉強度日的阿婆, 因為拿到免費的演唱會門票, 不小心變成帥哥的粉絲. 從此她就過著要追星還是要過日子的掙扎之中. 當然偶像的魅力是超乎想像的, 所以阿婆最後成了濃妝豔抹卻營養不良的犧牲品. 人類常常有所不足, 想要的東西若超出自己的能力範圍, 就變成了一種痛苦.

作者得到這個靈感的契機是家庭因素 – 呃, 不是東野夫人去追星了. 而是作者爸爸的發現. 東野爸爸從事金飾加工業, 他發現有個客人三天兩頭就拿金飾來加工, 一會兒改胸針, 一會兒改戒指或是耳環. 追問之下才知道這是參加影友會的行頭, 歐巴桑為了不想讓偶像看出自己只有一件飾品, 所以流傳著不用花大錢就可以變花樣的這種招數.

“一徹老爸" 的典故來自漫畫巨人之星, 主角的老爸名叫星一徹, 他積極培養兒子星飛雄馬成為職棒選手, 也就是 “巨人之星". 本篇小說中的架構也差不多, 當爸爸的甚至把女兒當男生養, 直到兒子出世才放手. 有了兒子, 女兒變成高爾夫球選手的事, 老爸也都不想聞問, 只顧著兒子如何進入名門高校, 以及被球團選上.

爸爸希望兒子能夠成為左投, 故採取不人道的方式強迫他用左手. 希望他進男校, 以免分心到談戀愛的事情上. 花了一生心力在兒子上的老爸, 最後…兒子勉強得到第六指名 (也就是實況野球中最低的那一種), 和一個讀男校帶來的意外 “副作用".

“逆轉同學會" 這篇的靈感來自作者一向不喜歡老師, 或是說其實老師一向不喜歡東野先生. 因此他假設了一個以老師為主的聚會, 而老師們為了找點新鮮事, 決定邀請他們心目中最優秀的那屆學生來助興. 在老師的眼光中, 學生就是那樣菜菜的, 不論好或壞, 都有值得說笑的地方. 結果學生真的來參加之後, 成就和層次完全把老師比了下去. 學生們談論的法律, 科學或商業話題, 老師們完全插不上嘴. 就在老師們準備敗興而歸的時候, 一位準備當老師的畢業生姍姍來遲, 使得老師們的專長終於有了用武之地.

“超狸理論" 的故事靈感來自於作者討厭偽科學, 於是他安排了一位不知道是否真的看過超級狸貓的人, 舌戰那些自以為了解外星人的專家. 在超級狸貓專家的眼中, UFO 和外星人都可以用狸貓來解釋, 於是偽科學大戰偽科學, 讓人啼笑皆非.

“無人島大相撲轉播" 取材於一位作者家鄉的大叔. 大叔說雖然非常失志, 但是他能背出看過的職棒比賽. 不只是背誦比數等數字而已, 而是像收音機轉播一樣, 可以把球場上每個小動作都依序重現, 大概什麼 “要揮不揮", “轉頭看看二壘跑者, 做了一個假牽制"  之類的東西都沒有漏掉. 於是作者創造了一位可以背誦歷年來所有相撲比賽實況的達人, 並且安排他不遇上不能照本宣科的關頭, 把這個當作小說的高潮.

“獻給某位老爺爺的線香" 說的是第一人稱返老還童的故事. 作者在奶奶以 99 歲高齡過世的守靈夜想出這個故事. 如果人不是變老而是變年輕, 這個題材可以拍成 “班傑明的奇幻旅程". 如果弱智的人接受手術而變成天才, 這個題材被用在 “獻給阿爾吉儂的花束". 後者激發了作者的想像, 因此安排老邁的爺爺逐漸變成一個年輕人, 再迅速退化成老人的心路歷程.  

“尸台社區" 這個故事是講一個命案, 但是看得我快要笑翻了. 作者的靈感來自買不起市區房屋的痛苦. 不得已買到郊區的屋主只能眼睜睜地看市區房價創新高, 而自己的房子卻不停跌價. 此時社區裡竟然發現了一具屍體, 房價肯定又要再跌了. 怎麼辦? 把屍體丟到別的社區去. 另一個社區也有同樣的問題, 竟然如法炮製, 又把屍體丟過來. 一具屍體被來回丟了 N 次, 從偷偷摸摸變成全社區動員大作戰. 最後這具可憐屍骨已經不全了, 久而久之演變成兩個社區間的運動會 – 只要把球放在對方的社區就贏.

“動物家庭" 這篇裡面, 每個人在主角的眼中都變成了不同的動物. 變成動物或是甲蟲這種題材, 應該是老梗了. 本篇最突出的地方大概有兩個: 全篇一開始並沒有說明這些動物的關係, 等到中間的部份我們才理解爸爸是狸貓, 而媽媽是狐狸犬之類的. 另一個特別的地方是, 主角本來並不是甚麼特定的動物, 但是在大家的壓迫之下, 終於明確地變成了最兇暴的噴火怪獸.

LTE 4G 頻段表

這次去韓國, 看到滿街都在賣 4G 手機. 從 2011年 7 月起佈建的 LTE 網路, 據說到 2013 年才能正式完工. 雖然現在沒有那麼完整的覆蓋率, 但是導遊都對他手上的 4G 手機深具信心, 號稱比 3G (3.75G 吧!) 快 5 倍. 我想民族自信心就是這樣來的吧! 雖然咱們導遊是拿台灣護照的, 他對 Samsung 可是讚不絕口.

反觀台灣這個 “科技島", 要到 2015 年才開始建設 4G, 估計要到 2017 年才能把 LTE 或 LTE-A 搞好, 感覺真是不可思議. 一來疑似圖利 WiMax 業者, 二來主要電信業者也過於怠惰. 如果電信業者自命為穩定獲利股, 恐怕真的不想花錢建基地台吧? 

[釜山市 LTE 充斥圖]

SONY DSC

雖然我們已經可以買到 4G 手機了, 但買到的 LTE 手機究竟能不能互通呢? 很抱歉! 看下表就知道基本上很難互通. 目前世界各國主流採用的頻段, 台灣都已經用掉了. 換言之, NCC 若不強制回收現有頻段, LTE 是不可能提早開工的! 更不用說我們的 4G 手機 (非 WiMax) 要買哪個規格都沒辦法預知. 

[世界各國 LTE 頻段表]

下表的 V 代表使用這個頻段,  X 代表這個頻段已經有人用了.

 MHz  700   800  900  1800 1900  2100  2300  2500  2600
 ITU
 北美  V  V
 西歐  V  V
 東歐  V  V  V  V
 亞太  V  V
 中東 / 非洲  V  V
 其他地區或國家  V  V
 預估主流  V  V  V  V
 香港  V  V  V
 日本  V
 韓國  SKT/LG  KT
 中國 (TD-LTE)  V  V
 台灣  X  X  X  X  X  X  X

修復 WordPress 上下標問題

先前就發現了, 即使在編輯器中修改好的上下標字形, 在部落格裡面就硬是爛的. 前陣子寫的幾篇剛好又用到不少上下標, 只好認真去解這個 bug. 

根據 3 年前 moshu 所寫的文章, 這個病因來自於 style sheet.

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}

用來表示上下標的 sub (superscript), 包括 <sub></sub>, 以及表示下標的 sub (subscript), 包括 <sup></sup> 都被 style sheet reset 掉了. 因為單獨寫個測試 html 也是好的, 只不過被 wordpress 的主題給改壞掉.

這個要怎麼改呢?

在 "控制台" 選 "外觀" 的 "佈景主題", 找到 /* reset */, 把那兩個 keyword delete 掉, 再更新檔案就好了.