2012年1月1日

2012 年第一篇文章

難得我又意識到了「原來我有部落格」,所以就在這 2012 年的第一天,來寫篇網誌吧!雖然我今天寫了一篇,但好的開始絕對不是成功的一半,因此,我不能忘記我是「怠惰網誌管理者同盟」的一員,嗯… 所以,接下來一定也是有一篇沒一篇的啦~嘟嘟嚕~

不免俗的來寫一下新年新希望好了

希望我的家人(包含喵喵)、同學、朋友、同事們都能夠身體健康。





沒錯,就是這麼簡單,不是我懶惰也不是我要拖稿,而是,我實在想不出有什麼「希望」好寫的。畢竟「hope」跟「wish」就有本質上的差異了。嗯… 所以應該改成,新年新期許吧…之類的 anyway。


以下是一篇我個人很喜歡的文章,文章出自於 ELLE 雜誌 2008 年 01 月,是 ELLE 採訪剛拍完「投名狀」的劉德華的訪談紀錄。

ELLE:很多人以你的人生為典範,在你內心排名第一位的東西究竟是什麼?

劉德華:有時我很不明白,為什麼一定要排位?家庭事業朋友愛情,這些東西都不能排位的。如何排位?排出來也沒用,這些排位是應生命中每一天而變化的,今天發生一些事,我會把朋友放第一位;明天我家人需要我,我就排他們去最前面;後天工作很忙,當然是事業先行,對不對?

以前事業排第一,要衝,要建立自己的事業,才可以好好照顧家人及朋友。四十歲後的我,可以很負責任的告訴你,「健康」是我永遠守著的第一位,因為我知道,我的責任很多,假如沒有健康,我又如何可以好好愛我的家人,好好對我的朋友?做好我的事業?
ELLE:多年來都沒有哪天忽然感到疲倦,想停下來的瞬間嗎?

劉德華:肉體上的疲倦是有,肉體上的疲倦只要有足夠的休息便可以了。我很愛我的工作,除非你不愛你的工作,否則你不會覺得工作是一件疲倦的事,你不會想停下來。

ELLE:如何可以像你一樣專注工作20年?

劉德華:愛上你的工作,這是我唯一的秘訣。

ELLE:如果你某天突然退休,那會是什麼原因?過自己想過的生活嗎?

劉德華:我現在的生活也可以稱得上「想過的生活」啊,每個人「想過的生活」都有不同的形式吧?一些人心目中可能是天天坐著無所事事,吃飽了睡睡醒了吃,或者周遊列國,或者瘋狂玩樂...。這樣的生活,我很想反問:你能過幾天?一個月?一年?

我想過的生活就是做自己喜歡的工作,給自己一個健康的身體,有時間多關心家人,擁有一些好朋友。現在我天天都在享受著我建立的世界,很滿足、很開心,沒什麼 好求的。你叫我天天去旅行,我很想告訴你,我坐飛機夠多了,我有時間最喜歡留在家。我也不想吃飽便睡,睡醒又吃,這樣會變肥豬。生命是不停的給予自己新的嘗試,工作是享受學習、面對挑戰的快樂。無所事事不適合我。

我沒想過要退休,我很享受目前的生活,很愛我的工作。可以讓我唱下去,我會唱到八十歲,大家不嫌我的話,我希望下輩子,再下輩子我也叫劉德華。

雖然我還沒工作 20 年(短期內也不會 XD),但我覺得現在的生活,已經是我「想過得生活」了,雖然別人不一定稱羨,哪有人 Facebook 上面 2012 年除了新年快樂的問候之外,第一個留言竟然是有關程式的問題(如果你有我的 Facebook,你可以點這裡看)。

因此,其實我沒什麼新的希望,我一直照著我自己的步調在前進,每天都可以多學點東西,只要不是原地踏步,我覺得就過得很充實了。剩下的只是希望我周遭的親人朋友們,能夠平平安安、健健康康的生活著,那就夠了。

嗯…

總之,2012 年,你好。

新年快樂。

2011年11月28日

我不是好情人

雖然嘴巴上每次都說的好像很厲害一樣,不過,其實我一直知道,我並不是一個好的情人。

大男人主義,是個工作狂,不浪漫,假日寧可去公司加班寫 code 也不願意出去玩,不然就是在家睡一整天。平時的休閒只有卡通漫畫遊戲,標準的「它它」,唯一,唯一一個正常一點的休閒活動是每週二、四晚上去打羽毛球。

前些天,我聽到了一句話「別把那些事情當作是你應得的,沒有什麼事情是你應得的」。是的,我想的確如這句話所說的一樣,沒有誰是應該要付出、應該要對我好的。

我的確想認同這句話,為什麼說「想」呢?就某些不親密的關係上來說,我對人可能真的就是這樣,不是我勢利,而是我無暇以對。我有太多太多想做的事情,夢想想去實現,加上我並不是個期望長命百歲的人,因此講自私一點,也許我只是想要自我實現罷了,浪費時間在一些我覺得值得的事情上面,從我喜歡的事情裡面找到自己的成就感,找到自己的存在感。

也許說到這裡,有些人會覺得我這只是一種逃避現實的行為,嗯,也許,我不否認,但我體驗過差點迷失自己的環境,嘿!我必須承認,那是在我讀大學的時候。同學很好、老師很好,學校很好,只可惜我選了我自己不喜歡的科系,不好的只有我。雖然那時候蹺課看起來很快樂,但仔細想想,也許那是我目前為止最痛苦的一段時間。幸好我有好同學、好室友及好老師們支持著我,當然喵喵也一直在背後鼓勵著我,加上遇到了一些貴人,幸運的,我終於能走到我有興趣的領域。

這就是我想做的事情,我不想在浪費任何一點時間去繞一大圈,這樣應該可以勉強解釋我,為什麼現在是個工作狂…(因為摩羯座!?)

好,回到正題,雖然看起來不像,但其實我很少把自己的付出放在天平兩端去取捨、衡量,對我來說,值得的人就是值得,不值得的人,一開始就不會出現。也許我會偶爾拿出來說嘴,但從來就不是認真的去計較過。

嗯…我想,也許只是我變成了一個「不值得的人」了吧… 或者說,我一直以來就是個不及格的情人罷了…

九月底,十月初吧,我有這種感覺。

解釋?辯解?no 我想只是紀錄一下心情罷了,我很糟的,沒有人應該要對我付出什麼,也許,我也沒資格得到吧,當作人家施捨給我的似乎會比較好過。

嘟嘟嚕~


2011年5月1日

在 C# 中取得 process 中載入的 dll的相關資訊

其實是為了某個最近剛出沒多久的 SLG 遊戲… 雖然有 SSG 檔,但是少一個插座很不方便有些地方很不方便,所以才想要自己寫一個,不過雖然參考 SSG 可以抓位置,但是實際上連 SSG 都還看不是很懂呢… 總之先備份一下… 感覺之前寫其他遊戲的修改器也常用到

processPtr = FindWindow(@"AliceStartWindowClass", null);
GetWindowThreadProcessId(processPtr, out ProcessId);
ProcessHandle = OpenProcess(0x1F0FFF, true, ProcessId);

EnumProcessModules(ProcessHandle, ModuleHandles, 20, out requireSize);
ModuleHandles = new IntPtr[requireSize/4];
EnumProcessModules(ProcessHandle, ModuleHandles, requireSize, out requireSize);

// 剛好最後一個 dll 是我要找的那個
dllHandle = ModuleHandles[requireSize/4 - 1];

GetModuleFileNameEx(processPtr, dllHandle, fileName, 260);
GetModuleInformation(ProcessHandle, dllHandle, out ModInfo, 12);

基本上是參考這篇 VB 的改寫而來的…

接下來就是要看懂 SSG 了啊~
--
C# 中引用 win32 api 的 list

2011年4月28日

在 Firefox 中使用 video tag 播放 webm 影片

這是一個非常神秘的… 呃,應該算問題而不算 bug…
理論上來說,在支援 HTML5 的 browser 中,可以直接用 video tag 來播放 webm、ogv、mp4 的影片(當然實際的 codec support 狀況還是要看各家瀏覽器啦),不過我自己主要在用的 Firefox Nightly 和 Chrome 都可以正常撥 webm、ogv,IE 的話我沒有測試。(後來補充測試了 IE9,我把結果列在底下)

但是今天實做上的時候發現了一個容易漏掉的地方。我先把網路上隨便的 avi 檔案,用 WebmProject 建議的轉檔軟體:Miro Video Converter 來轉成 webm 的格式,接著丟到我自己的 server 上去,但無論怎麼測試,Firefox 就是無法正確播放我轉出來的影片,chrome 卻可以正常播放… 可是我用 Firefox 到 youtube 開啟 html5 mode 之後,是可以正常播放 webm 影片的… 而直接把 source 改去別人的 webm 影片,Firefox 卻又可以正常播放… 完全猜不透問題在哪裡…

我測試過 video tag、換用 mac os 來轉檔、換一套轉檔軟體等等的方法,就是沒辦法在我的 server 上播放我轉出來的 webm 影片… 好,現在就來解答…

答案就是 apache 設定裡面要加上
AddType video/webm webm
就這麼簡單…加上了之後我的 Firefox 就可以正常播放 webm 影片了…

Chrome 裡面似乎有特別做 webm 的判斷,所以即使我 server 沒有加入這個 mime type 還是可以正常播放… 也就是因為 Chrome 作弊… 害我完全沒想到問題出在 server 端… 總之,就是這麼簡單…

另外下面附上 Firefox 6.0a1、Chrome 13.0.749.0、IE9、IE10pp2、Safari 5、Opera 11 與 webm、ogv、mp4 的支援…

\
webmogvmp4
Chrome 13.0.749.0
Firefox 6.0a1
Opera 11
Safari 5
IE 10 pp2
IE 9

總之,最保險的就是全放上去
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>

<body>

<video id="movie" width="640" height="352" preload controls>
 <source src="test.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
 <source src="test.webm" type='video/webm; codecs="vp8, vorbis"' />
 <source src="test.ogv" type='video/ogg; codecs="theora, vorbis"' />
</video>

</body>
</html>

考慮空間的話就是 webm/ogv 擇一,然後再補 mp4 囉~

2011年4月27日

Google Chrome 現在可以刪除 Flash 的 cookie 了

其實這個消息是從 InstantFundas 的 RSS 中看到的,看了一下手邊的 Canary Build 似乎早就加入了這個功能。(廢話,因為最近才加到 dev channel 中…)


稍微看了一下 Nightly,好像還是提供一般以網站為主的 cookie 列表來讓使用者選擇是否要刪除,不知道這有沒有包涵 plugin 的 cookie…

Cacti:使用自訂 script 來繪製圖表

一直以來都有在用 mrtg / cacti 來做主機監控,雖然 mrtg 可以用自己的 script 來抓資料繪製圖表,不過要設定的好我覺得難度有點高… 所以這次就把一些 mrtg 用的 script 改成 cacti 用得來試試看。
大概記一下流程。

就拿擷取 bbs 站上人數來當作範例好了。一般 Maple 3 itoc 版本的 bbs 都會在 login 畫面 show 出目前站上人數,因此我們只要寫個 script 去抓這個數字,再依照 cacti 要吃的參數格式輸出就好。

1. 首先建立擷取資料的 script
以下是我用 php 寫的 script:(當然你可以用 python、ruby、shell script 都可以~)
(在 Debian 下,是存在 cacti 目錄底下的 scripts:/usr/share/cacti/site/scripts)
<?php
    $bbs_ip = 'xxx.xxx.xxx.xxx';

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_connect($socket, $bbs_ip, 23);

    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    socket_recv($socket, $buffer, 1024, 0);
    $buffer = iconv("big5","utf8",$buffer);
    preg_match('/\[([0-9]+)\]/', $buffer, $matches);
    printf('user:%s', $matches[1]);
    exit;
?>

要特別注意的是,輸出的格式為
filed1:value1 field2:value2 ...

2. 接著到 cacti [console]->[Collection Methods]->[Data Input Methods]
按右上角的[Add],
Name:Linux - BBS - Online Users(隨便你輸入)
Input Type:Script/Command(雖然他有PHP專用的,但是沒差,用這個通用的就好)
Input String:php <path_cacti>/scripts/bbs.php(就是你 script 的位置)
之後按[save]儲存。

3. 儲存之後在點進去剛剛的 [Linux - BBS - Online Users],在 [Output Fields] 上點下 [Add]
Field [Output]:user(對照到你 script 的 filed1)
Friendly Name: BBS Online Users(取一個比較好記的描述)
Update RRD File:就打勾吧!

4. 接著到 [console]->[Templates]->[Data Templates],按下右上角的[Add],
[Data Templates]
Name:Linux - BBS - Online Users(隨便你輸入)
[Data Source]
Name:Linux - BBS - Online Users(隨便你輸入)
Data Input Method:Linux - BBS - Online Users(請選擇你剛剛建立的 Data Input Method)
Associated RRA's:全選
Step:300(間隔秒數,五分鐘)
Data Source Active:打勾
[Data Source Item]
Internal Data Source Name:Online_Users(隨便你輸入)
Minimum Value:0(先讓他預設是0)
Maximum Value:0(先讓他預設是0)
Data Source Type:GAUGE
Heartbeat:600

5. 接著到 [console]->[Management]->[Data Source],按下右上角的[Add],
Selected Data Template:Linux - BBS - Online Users(選擇你剛剛建立的 Data Template)
Host:(選要繪這個圖的主機)

6. 到 [console]->[Templates]->[Graph Templates],選擇 [Unix - Logged in Users] 後,按右下方的選單調到 [Duplicate] 然後按 [go]。
(以 Unix - Logged in Users 的圖為範本來建立新的圖)
Title Format:Linux - BBS - Online Users(請輸入圖的title)
複製完畢後會跳進設定畫面
[Graph Template Items] 只留下 Item #1,把 Item #2 到 Item #4 砍掉。
[Graph Item Inputs] 基本上不用動,不過也可以點進去改顯示名稱
[Template] 就是改顯示名稱
[Graph Template] 顯示名稱可以改一改,以及下面的 [Upper Limit] 可以改成 0,讓他自動設定上限。

7. 接著在 [console]->[Management]->[Graph Management] 按下右上角的[Add],
Selected Graph Template:Linux - BBS - Online Users(選擇你剛剛建立的 Data Template)
Host:(選要繪這個圖的主機)

8. 建立後會多出兩個選項
Legend Color:(隨便你改)
Data Source:Linux - BBS - Online Users(就選剛剛建立的 Data Source)

9. 到這裡論上應該就建立完成了,如果圖片還是沒有出來的話,表示 rra 檔案可能有問題,
請先到 [console]->[Graph Management] 點進你剛剛建立的 Graph,然後開啟右上角的 [*Turn On Graph Debug Mode.],如果 RRDTool Says: 不是 ok,而是檔案不存在的話,可以到 [console]->[Management]->[Data Source],點進剛剛建立的 Data Source 並且開啟右上角的 [*Turn On Graph Debug Mode.],複製 Data Source Debug 的指令,並且進到系統直接複製貼上來建立這個檔案。

--
參考網站:http://blog.xuite.net/jyoutw/xtech/39869008?ref=rel

2011年4月26日

Firefox channel

Mozilla 在 Firefox 4 beta 的時候釋出了未來 Firefox 的 roadmap。簡單來說就是把 Firefox 的開發模式轉換成類似 Chrome 的 Channel 模式。分為 Nightly、Aurora、Beta、Final Release 四個 channel,對照到 Chrome 的話大概就等於 Canary、Dev、Beta、Stable。

以下是 Firefox 各個 Channel 的 icon:(Channel 的介紹可以看 Mozilla 的官網

Nightly:是最新的 Channel,幾乎每三、四天就更新一次,也是我目前主要在用的版本,截稿為止的版本號為 6.0a1 (2011-04-25)。因為我從 Firefox 4 的時候就開始用 pre-release 的版本,所以當 Firefox 4 正式 release 的時候他就自動幫我 update 到 6.0,我當初還以為 Firefox 要跟其他瀏覽器一樣在追版本號勒… 原來只是自動更新到 Nightly Channel。
Aurora:目前的版本號為 5.0a2,基本上就是 Nightly 穩定的功能就會放到 Aurora 裡面。

Beta:目前官網還沒有釋出這個 channel 的資訊~



Final Release:就現在 stable 的 Firefox 4。




另外,roadmap 中也提到,2011年(也就是今年)Firefox 將會發到 7… 看來連 Firefox 也要跳入瀏覽器版本號之戰了…。

Chrome 自然不用說… 現在我在用的 Canary build 版本號是 12.0.747.0…
而隔壁棚的 IE 則是在四月中旬正式 Release IE9之後,馬上推出 IE10 Platform Preview 1(而且還不支援 Windows Vista,只支援 Windows 7 以上的系統。)
It doesn't matter, 身為一個 web developer,我只希望他們能夠支援 W3C 的標準…
另外就是 IE6、7、8 可以快點死死好嗎…

--
Firefox Nightly 可以從這邊下載到最新版
Firefox Aurora 可以從這邊下載到最新版