2010年12月12日 星期日

Population Count of a Uint32

When studying Android audio system, I saw a interest function code in google’s AndioSystem class:

uint32_t AudioSystem::popCount(uint32_t u)

{

    u = ((u&0x55555555) + ((u>>1)&0x55555555));

    u = ((u&0x33333333) + ((u>>2)&0x33333333));

    u = ((u&0x0f0f0f0f) + ((u>>4)&0x0f0f0f0f));

    u = ((u&0x00ff00ff) + ((u>>8)&0x00ff00ff));

    u = ( u&0x0000ffff) + (u>>16);

    return u;

}

Honestly, I cannot understand how this code come from. Fortunately, the code leave a reference link for us: http://www.df/lth/se/~john_e/gems/gem002d.html.

And telling the trust again, for me, it’s still hard to understand after reading the reference algorithm. So, I decide to make a node, and just copy the code when I need it ~ 吐舌頭.

2010年12月5日 星期日

會無好會

今天在參與了一個案子的 Kick-Off Meeting,會議過程亂七八糟,會議內容五花八門,會議目標模糊不清。真的是讓我上了一堂震撼教育,原來公司大頭們開會是這樣子開的喔!?

2010年11月28日 星期日

姓名學雜記

小孩快滿月了,最近正為了取名字傷透腦筋。雖說自己並不是很信那些算命、命理類的東西,但是基於旁人的要求與未了小孩好,還是不免要找找老師、做做功課。

本來想說做做功課比較不會被唬來唬去,沒想到一看下去,沒完沒了!一個姓名學五花八門、各行各派都有,你說我不準、我說你找碴。難怪最後大家都樂於花錢了事…

這邊是我的小小筆記:

五行相生:木生火、火生土、土生金、金生水、水生木

五行相剋:木剋土、土剋水、水剋火、火剋金、金剋木

五格:以名字三個字為例,姓的比畫加一為「天格」,姓與名的第一個字的比畫相加為「人格」,名字兩個字的比劃相加為「地格」,姓與名的第二個字的筆劃相加為「外格」,三個字的總比劃為「總格」。

五格與五行(熊崎):取五格的個位數,1與2 為木、3與4為火、5與6為土、7與8為金、9與0為水。其中基數為「陽」,偶數為「陰」。例如15劃為「陽土」。

五格與五行(河洛):從河洛的九宮圖而來,一樣取五格的個位數,1與6為水、2與7為火、3與8為木、4與9為金、0與5為土。可以看到一樣是五行,它與熊崎的數理五行定義不同,所以…

生肖姓名學:很多地方可以找到,不同的生肖有不同的適宜的、或是不好的字。例如虎落平陽,所以屬虎的不宜有「田」的字型;因為畫蛇添足,所以屬蛇的最好不要用有腳的形狀的字。目前主流去給老師算名字都可以聽到這一套,我想可能是最容易找到你名字的破綻吧。難怪它在網路上被姓稱為「找碴姓名學」。

字的五行:除了五格求出的五行外,每一個字也有它所對應的五行,有些是看形狀、有些看讀音、有些我壓根看不出來邏輯在哪(Orz)。我也不知道有甚麼書可以查到每個字的五行對應,有些算命書則會列出一些。

寫到這其實我已經頭昏眼花了,光一個五格的五行就有不一樣的解釋,在加上被戲稱為「找碴姓名學」的生肖姓名學,難怪每個老師都可以輕易推翻另外一個老師的命名來建議你改名。

我想,還是找個老師,錢花下去,他說啥就是啥吧~XD

2010年11月19日 星期五

台北慈濟婦產科

一個多禮拜前,老二順利的在台北慈濟醫院生下來了。家裡的兩個小孩都是在台北慈濟出生的,倒不是因為醫院有多好,而純粹只是對這個醫生還蠻滿意的,而且離家又比較近。

不過,第二次住進慈濟醫院的婦產科病房,之前第一胎時遇到的問題,果然也幾乎再次浮現,甚至,遇到更多。我不清楚這到底是不是通例,畢竟我只有兩個小孩…

2010年11月15日 星期一

Wi-fi 干擾與 AP Channel 設定

最近為了一些原因看了一些有關 WiFi 的文章,赫然發現原來 WiFi 這麼容易遇到干擾啊。也順便了解了之前設定 Wireless AP 時,一直不知道那是幹啥用的 channel 是啥。

原來 Wifi 把 2.4GHz (~2.483GHz) 的頻段切割成 11 (依照國家不同,有些切到 15)個頻段,每一個頻段就是一個 channel。因為相同頻率的信號波會互相干擾,所以當同一個地點有兩個無線訊號使用相同 channel 時,802.11 設計了一套避免干擾的方法,那就是:等別人用完了再用!

簡單的說,就是發射訊號前先檢查 channel 裡有沒有訊號正在傳送,有的話,就「等」。等到 channel 安靜下來,它才開始傳送自己的資料。顯而易見的,這個方法會影響到傳輸的速率。所以當同一個地點有很多 wifi 使用相同 channel 的話,看起來訊號很強,其實連線的問題很大!

所以,要避免這種干擾。最好讓環境裡的無線訊好號越少越好(我知道,這可能不是自己能控制的事);再不然,至少不要讓這些無線網路使用相同的(或鄰近的)channel 來減少訊號干擾的機會。

以切成 11 個 channel 來說,有三個 channel 是幾乎不會互相覆蓋到的:1、6、11。所以理論上把自己的 AP 設成這三個 channel 應該是最好的。

而根據像我這種不懂,把 AP 買回家用預設值換個密碼、設個 WEP 就上線的人應該不少。所以,我想把 channel 改到 6 或 11 應該可以避免不少干擾才是。

今天回家就試試看吧~

參考:IEEE 802.11 (wiki)
參考:避免2.4GHz ISM頻段各種類型無線設備干擾的技術

2010年11月14日 星期日

Print enumeration name in C, C++

Print out enumeration name as string is useful for debugging, but I does not how to do it until I read a sample code from MSDN on last week. That’s really shame for being an engineer (害羞).

2010年11月4日 星期四

輕鬆讓你的 Windows7 變無線 AP

Windows7 有一個新的功能叫做 Soft-AP,顧名思義就是軟體模擬的無線 AP。有了這東西,你可以輕易的用你的電腦或筆電模擬成一台無線 AP,讓家裡面其它的裝置,例如 iPad、手機、遊戲機等都透過它來上網。而不用另外花錢買一台頻寬分享器。

以下是設定的步驟: