發表文章

目前顯示的是 2010的文章

Slab allocation

雖然 Linux 的相關文章發表了不少,有些看起來也很有深度(只是看起來),但其實我沒有這麼大的熱情去了解 Linux 的核心運作。通常都是我遇到一個奇怪的現象或是想了解某一個問題才會認真的去看 kernel 的程式碼。今天要介紹的東西也是如此,先說明一下發生的情境(按照慣例,全部不打人名):
同事A:我使用 OSW_MEMALLOC (相當於 malloc,只是考慮到跨平台的問題,我們團隊開發了套介面來加以包裝)以後,結果它告訴我分配出來的記憶體已經被使用了 ...
這樣的描述讓我覺得很有趣(至於造成這個現象的問題就一點都不想贅述,反正就是有人 pointer 使用上出了包),有趣的點在於,malloc 會跟系統要一塊空間,如果系統記憶體用光無法分派這我可以理解(反正就是有人寫了 memory leak 的程式),但是,怎麼有可能系統分派了空間在告訴你說這塊空間有人使用呢??
在另外一位同事(Parrot)的幫助之下,我開始看 Linux Kernel 的記憶體的一些處理方式,並找到了這個問題的答案。
在開始看之前,我們先來介紹一下 Slab Allocator 這個東西。Slab Allocator 由 Sun 的工程師所提出來的 memory allocator。基本的概念可以參考下面的文章(取自 wikipedia):
The fundamental idea behind slab allocation technique is based on the observation that some kernel data objects are frequently created and destroyed after they are not needed anymore. This implies that for each allocation of memory for these data objects, some time is spent to find the best fit for that data object. Moreover, deallocation of the memory after destruction of the object contributes to fragmentation of the memory, …

婚禮紀錄03 ~ 決定婚紗店

接下來要分享的是婚紗部份的紀錄。我們所選的婚紗店是林莉婚紗。為甚麼選這一家呢 ... 恩,沒有任何理由,因為我老婆(當時的女朋友)喜歡嘛~之前參考許多朋友的結婚紀錄,老婆覺得這家最好,好在哪裡呢??我不知道 :p 反正老婆喜歡就好了(而且老婆漂亮穿甚麼都好看~)。但喜歡還是不夠的,沒比較還是無法放心,因此我老婆勇敢的前往中山北路作第一次調查了 ...
等一下,那不負責任的我在哪裡?
因為聽說很多婚紗店都會把顧客困在店內,所以呢?老公要留在外面「支援」,一旦老婆出不來的話,就可以用「要問問我老公的意見」為理由脫身。以上為官方說法,其實是我老婆的體貼,為了不要麻煩到我,就在「我不知道」的情形下前往龍潭虎穴了。在經過我老婆詳細的調查、詢價後,最後就決定林莉了。
接下來就輪到我出馬了 ... 才怪 :p 對於買東西一向很阿莎莉的我來說,是最不適合在中山北路的婚紗店生存的。所以就拜託我老媽出馬,於是三個人(兩個殺價人員加上一個金主)就浩浩蕩蕩的前往林莉了...
接待我們的門市是 Dolly,不過中間也有 LisaBenson 來談過價格,中間經過許多的腥風血雨,我還有印象的畫面如下:
殺價方:
1. 我們是朋友介紹的啊~ 2. 我們可是因為林莉的關係才會選擇在國賓飯店宴客啊!(2010年國賓有跟林莉合作,但坦白說,如果沒有殺價的話,根本沒有甚麼優惠) 3. 今天是新娘的生日ㄟ(是的,我老婆去談的時候剛好是生日) 4. 你沒辦法作主就請你們的經理 Benson 出來(Benson 這個名字是國賓的李經理給的) 5. 哪有人一次付清的啊?(雖然我很討厭殺價,但老媽,這一點我絕對支持你~)
防守方:
1. 媽媽,這個價格已經很優惠了(這句話可以顯示我們的攻擊火力主要是誰 ... ) 2. 媽媽,老實說,Lisa 是我的主管,這是只有她可以給的優惠,我還給不起呢 ... (原來 Lisa 是主管啊 ... 說真的 ... 我完全不知道,在網路上搜尋林莉的話,找到 Benson 這個名字的機會比較大) 3. 真的,我們已經因為國賓的關係,給了很多的折扣呢(聽說我們是國賓今年第一對到他們那邊去的新人) 4. 真的,只有一次付清才有這個價格 ... 不然各退一步,先付 2/3 好不好?(先付 2/3 我沒很多意見啦,但是全付我有意見,如果出問題怎麼辦 ... )
Well ... 坐在旁邊的我在幹麼呢 ... 恩…

婚禮紀錄02 ~ 決定台北國賓飯店

求完婚以後就要開始準備婚禮囉。在所有婚禮的籌備流程中,最需要早點進行的就是決定飯店。以目前台北市各大飯店來說,幾乎都需要一年以前預定,這也是為什麼很多人說準備婚禮要一整年的主要原因。對我和我太太〔當時的女朋友〕來說,只剩下半年就要結婚的我們其實沒有太多考慮的時間,只能夠立刻飯店走透透,選定我們結婚的場地。

不料,這卻是我跟我老婆第一個為婚禮爭執的點 ...

我老婆心目中的第一選擇世貿33婚宴會館〔台北世界貿易中心聯誼社〕。這是一個很讚的場地,菜色不錯,更有著大部分場地無法匹敵的夜景。我老婆非常喜歡這個場地,理由很簡單,當年她哥哥就是在那邊完成終生大事,而當時身為伴娘的她,對著那挑高的場地有著夢幻般的憧憬 ...

但是我非常不想選這個場地。理由也很簡單,因為她哥哥在那邊辦婚禮 ... 而我討厭這種重複的感覺,而且Cliff,我的學長兼同學,在短時間內也要在那邊舉辦婚哩,更讓我不想在那邊舉辦。

最後誰贏了呢 ... 像我這樣愛老婆的人怎麼可能贏的了嘛 ... 所以在我老婆聯絡後,就開始請我媽出馬談判了〔殺價的功力還是老人家比較利害〕。

等一下,如果這樣的話,那為什麼跟標題的雷不一樣呢 ?? 這就要從世貿33的訪問開始說起了。當我們三人在約定的時間到達後,負責接待我們的那位經理態度相當急促,給了我們一種很想要趕快打發我們的感覺,一付要來就來不來拉倒的神情〔不過以他們家的知名度好像也可以這樣做就是了〕。不過最重要的一點還不是這個,話說當我一踏入會場後,我就一直瞪著天花板看,看著我老婆口中[挑高又夢幻]的場地,心中開始納悶 ... 我老婆是不是最近長高了啊 ... 這哪裡算是挑高的場地啊 ... 從我老婆逐漸失望黯淡的眼神裡,我知道她的夢想破滅了 ... 感謝主 :p

第一選擇破滅了,那就輪到第二選擇登場了。我老婆的第二選擇是 ~ 晶華酒店。晶華酒店的三樓宴會廳場地非常漂亮,挑高的場地不講,還有樓梯可以直接通往會場,想像一下白紗托在地上,新娘緩緩步入禮堂的場景,何等夢幻又令人羨慕。在第一選擇夢幻破滅後,我老婆把她的希望寄託放到了第二選擇上。

我還是不喜歡這個選擇,理由同第一個選擇,我們有一對教會的朋友就在那邊結婚,而我也不想跟他們重複 ... 處女座的人果然很龜毛 ...

不過這個選擇被我老爸的一句毫無根據的話給粉碎了 ... 我這邊的朋友加上親戚大概是六桌吧 ...。以事後來看,這幾乎…

婚禮紀錄01 ~ 求婚規劃

Blog 已經很久沒有更新了,因為一直都處在很忙碌混亂的階段,直到現在才比較能夠好好地靜下來喘口氣。接下來一段時間,Blog 的更新會集中在婚禮的籌備心情,稱現在還有印象的時候,把這一生一次(也不過就一次)的經驗給記錄下來,也許以後還可以說給孩子聽 ... 我會不會想太多了 :p
哪時候決定要求婚的呢?正確的時間是2007年5月4日。認識我一段時間的人都知道,我這個人是對結婚充滿著憧憬的,從小時候就夢想著能夠牽著另一半的手一同步向紅毯的另一端。所以,當我在向女孩子告白的時候,我所想的就是:「你願意跟我走一輩子嗎?」而 2007/5/4 就是我和內人告白成功的日子。
不過這個源頭也太遠了(而且應該不會被我內人承認 ... 哪有當初告白就等於求婚的 ...),所以來談談實際要開始籌備婚禮的日子吧~
認識交往了三年,對婚姻生活的期待,在加上那時候的生涯規劃(雖然以慘敗收場),都強化了我在2009年夏天求婚的決心。但應該要怎麼求婚呢?在生活中、網路上看過眾多誇張的求婚方式(買通餐廳、賄賂朋友進行友情攻勢這都小 case,我某對朋友去時代廣場求婚也挺浪漫的但不合我的胃口),本來也想要好好地籌備一番,動員我所有的人力資源來場大的求婚(最好在把它錄下來),但就在內人(當時的女友)一句話之下全盤瓦解:「我很討厭那種一堆人的感覺,在那種場合好像不答應都不行,有被威脅的感覺 ...」Good ... 規劃全盤被推翻 ... 但我不會就這樣放棄的 ...
以我女友開出來的條件,綜合我自己的浪漫個性(有嗎?),我訂了以下的求婚條件:
1. 要有我自己的創作。我內人希望我多寫點東西、或是親手做些東西,這樣比較感動。 2. 不可假手於他人,不可有旁人。這是我內人的禁忌。 3. 要有音樂。這可真是我的罩門... 我小時候是寧可上數學課也不想上音樂課,學期末的歌唱考試更是要了我的命,但我內人 ... 很喜歡音樂。 4. 要有意義。我個人討厭無意義的東西。
很好 ... 整個求婚行動 ... 真是超難的 ... (到這邊我真的覺得那種包下餐廳準備花束的求婚方式,真是最省力、省時間的方法 )
好,那就一點一滴來克服吧。首先解決得是意義的部份,這部份很簡單,也感謝神親自為我預備了日子,那就是 2009年8月26日(農曆7月7日),不但是我的生日,也同時是七夕情人節,你說,有比這更好的一天嗎?(以後過生日還可以一起慶祝求婚…

我的光碟機消失了!!

好久沒發文章了,今天新增一個標籤 PCFAQ,這個標籤將會記錄我遇到在電腦上的疑難雜症。

今天要解決的問題是:

我的光碟機消失了!!(實體以及虛擬都消失了)

用裝置管理員去看,發現這個裝置啟動時出現錯誤,錯誤帶碼為 19:
Windows 無法啟動這個硬體裝置,因為它的設定資訊 (在登錄中) 不完整或已損毀。如果要修正這項問題,您可以先嘗試執行 [疑難排解精靈]。如果這種方法無效,您應該先解除安裝硬體裝置後再重新安裝。(代碼 19)

在網路上找了一下,這是 Nero 的問題 ... 解決方法如下:

當你安裝 Nero 後,它會在 register 的光碟機碼上加點料:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
右邊視窗有兩個名稱如右的東東(有可能是一個):UpperFilters、LowerFilters(小弟的案例是只剩UpperFilters這一個 字串值)。 請把這兩個東東砍了,再重開機,應該就正常了!

[轉錄] 我和羅本有個約定

這是一篇從大陸來的轉錄文章,作者不詳,很好笑,但對皇家馬德里的球迷來說可能看得很辛酸。為了避免以後忘記,先來作點背景介紹。
2009 皇家馬德里更換主席,Florentino Perez 二度上任,出資三億元打造銀河艦隊二代,高價買來了 Kaka (AC Milan, 6,775萬歐元)、Cristiano Ronaldo (Manchester United, 9,400萬歐元)、Xabi Alonso (Liverpool, 3,500萬歐元)、Karim Benzema (Lyon, 3,500萬歐元) 等眾多明星,目地當然是為了取得歐洲職業球會的最高榮譽~歐洲冠軍杯!更值得注意的是,這一屆的歐洲冠軍杯決賽場地在 Estadio Santiago Bernabéu,也就是皇家馬德里的主場,主席更希望把獎盃留在自己家裡。當然球隊人數是有上限的,有人來就有人離開,荷蘭明星球員 Arjen Robben 和 Wesley Sneijder 就是被迫轉會得球員,故事就從這裡開始...
=========================================================================== 時間:西元2009年某日上午皇馬訓練課後 地點:伯納烏更衣室內
“真的要走?”羅本頭也不抬,一邊脫著護腿板一邊問。
斯內德注視著更衣櫃上自己的名字和號碼,輕聲答到:“嗯。”
“不是說不去義大利麼?”羅繼續問,“這鞋怎麼這麼緊,嗎的!”
“沒辦法,主席說了,俱樂部雖大,可惜容不下我。”斯內德答。
“真操蛋,博格洛坎普,范德梅德難道你不認識?還這樣選?你丫一輩子有幾個25歲?膽子還真夠大的!”羅本把自己的鞋用力朝斯甩過去。
斯內德一把接住鞋,然後放在板凳上,說:“獵手也說了,他也去米蘭。”
羅本用毛巾擋住自己臉,說;“想當年我荷蘭幫多麼得勢,可現在呢?真是應了中國那句古話—樹倒猢猻散啊!”
斯內德說:“你不得走撒?”
“毛,我應該也要走,我不像你,佩萊格裏尼(Manuel Luis Pellegrini Ripamonti, 皇馬教練)不會給我位置的。”羅本說。
“他肯給我位置有什麼用,關鍵是主席不給。哎,聽印球衣的道格拉斯說,俱樂部都準備把我的十號給拉斯了。對了,你離開馬德里會去哪兒?”
“不知道,有可能會追隨范加爾,如果實在不行,乾脆回荷蘭算了。”羅本悻悻的說。
“什…

10 個 Linux 上最酷的單行指令

下面是來自 Commandlinefu 網站由用戶投票決出的 10 個最酷的 Linux 單行命令。(資料來源: Linuxtoy)sudo !! 以 root 帳戶執行上一條命令。python -m SimpleHTTPServer 利用 Python 搭建一個簡單的 Web 服務器,可通過 http://$HOSTNAME:8000 訪問。:w !sudo tee % 在 Vim 中無需權限保存編輯的文件。(我不喜歡 VIM)cd - 更改到上一次訪問的目錄。 ^foo^bar 將上一條命令中的 foo 替換為 bar,並執行。cp filename{,.bak} 快速備份或復制文件。mtr google.com traceroute + ping。!whatever:p 搜索命令歷史,但不執行。$ssh-copy-id user@host 將 ssh keys 複製到 user@host 以啟用無密碼 SSH 登錄。ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg 把 Linux 桌面錄製為螢幕。

AF_INET 和 PF_INET 的區別

一個很小很小的紀錄,免得自己忘記(事實上一定會忘記啦,但是留個紀錄起碼可以再回來查)
從 Linux 裡面的註解來看
AF = Address Family
PF = Protocol Family
但實際使用上根本沒有差別!!原因如下:
linux/include/linux/socket.h
#define AF_INET 2 /* Internet IP Protocol */ /* Protocol families, same as address families. */ #define PF_INET AF_INET
很明顯的,從 Linux Kernel 的註解來看,Linux 已經完全不打算去區分這兩的差別了。
附錄: Manual page socket(2)
POSIX.1-2001 does not require the inclusion of , and this header file is not required on Linux. However, some historical (BSD) implementations required this header file, and portable applications are probably wise to include it.
The manifest constants used under 4.x BSD for protocol families are PF_UNIX, PF_INET, etc., while AF_UNIX etc. are used for address families. However, already the BSD man page promises: "The protocol family generally is the same as the address family", and subsequent standards use AF_* everywhere.
The header file is only required for libc4 or earlier. Some packages, like util-linux, claim portability to all Linux …