2011-06-27

ㄎㄎ 還是搬家

現在 clifflu 的正式 blog 在 http://blog.clifflu.net 了唷 O.o/

2010-06-21

狡兔要有三窟

人說狡兔三窟,我決定在家裡用 Wordpress 掛一隻備份站囉 XD
網址在  http://dqt.twbbs.org/~clifflu/blog ,內容會盡量與這邊同步的

2010-06-18

[串連]劉政鴻,你可以收買媒體,但是你無法收買部落客!

[串連]劉政鴻,你可以收買媒體,但是你無法收買部落客! – 龜趣來嘻

當一個號稱民主政體的政府,為了任何理由,將財團、政黨或個人的權益,置於人民之上時,我看不出支持這個政府存續的必要性。

2010-06-14

Magic 刷上 Android 2.1

前陣子等 HTC 官方升級等到心寒,就參照這篇說明把我家 Magic 也升上 Android 2.1 囉 XD

Root 後安裝 Overclock Widget 能稍微避免 Lag 的問題;APP2SD 也省了一些空間;裝了 Market-Enabler 之後,終於能購買 Market 上的軟體;WiFi Tethering 無話可說的好用。

我裝的是 sanpei 基於 Hero 2.1 弄出的版本,流暢度不錯(待機啟動會卡個幾秒),鍵盤背光可以用 MyHero LED 開啟;穩定性的話,偶而狂切 2G/3G 基地台後,行動網路會不給開,切到飛航模式再切回來就能解決(Magic 官方 1.5 也會)。Bug 的話,FootPrint 相機預覽是爛的,不過拍出來正常;相機有時會爛掉,就會顯示奇怪的圖片(一個人對著 Blackberry 類 Android 手機的示意圖);似乎在 builtin Plurk APP 裡使用相機會爆炸,需要重開機。

底下是關於刷機步驟的幾點心得補遺:

  1. 使用 HxD 程式製作金卡時,記得選下半邊的 Physical Disk,而非上面的 Logical Disk (Slice, Partition)
  2. 第二步驟安裝歐版 RUU 時請使用 Windows XP(聽說 Vista 也行)。Windows 7 (64bit) 我怎麼試都是 Error 130 (連線錯誤)。我最後是在 Win7 安裝微軟 Virtual PC 的 XP Mode 安裝成功的,不過 VMWare / VirtualBox 一類的產品應該也 ok。中間手機的 USB 連線會斷開一次,建議打開喇叭,聽到 usb disconnect 的聲音後,快速在 VirtualPC / VMware / VirtualBox 的選單連接 USB 到 guest system 即可。

關於跑壘員的兩件規範

(轉自 plurk)

整理棒球規則第七章的時候,看見兩條有趣的東西:

  1. 跑者因觸及擊出球,形成妨礙守備的判定,是不受「球擊中壘包反彈」影響的。因此若一壘有人打帶跑,球擊中二壘壘包 (且守備員站在壘包後,仍有守備機會)反彈碰到跑者,無論跑者是否故意,都要判妨礙守備 (7.08 F 註二)。
  2. 之前陳金鋒還在道奇時,有顆外野飛球被接殺,Jeff Kent 在三壘,並在跑回本壘後,被促請裁決死於三壘。當時主播針對「再觸壘」,認為是誤判。Jeff Kent 原本立於壘包後方,接觸三壘壘包外側,在外野手未接球提前加速,接觸球後才離開壘包。
    但依照規則 7.10 A 註,這樣的行為被稱做 Flying Start,而屬違規。跑者的「再觸壘」義務,指的是接觸壘包,並在守備員觸球後才能啟動。這段註解也存於 MLB Official Rules 之中,因此認定應無疑義(不是台灣特有規則啦)。

關於棒球規則的小事

簡單的說,我把手上的規則書,還有網路上幾個棒球規則來源整理了以後,放到某個網頁上。這邊的規則保證不標準且沒有公信力,然而作為隨手亂查亂翻之用也足夠了;網址在 http://dqt.twbbs.org/~clifflu/br/
另外,文件中仍有些許排版用字上的錯誤,也未必與現行(2010 年)規則完全相符,因此會持續修改,不建議列印成紙本閱讀。

2010-04-25

Blogger 生出的 Code 變好爛

不知道為什麼,上一篇 html 碼裡頭,充滿了無意義的 <div>...</div>,貌似被當成 <p>...</p>使用了。居然會在 blogger 發生這種等級的問題,實在有點出乎意料....


補充一下,連編輯視窗裡的 ">" 還有 "<" 都不會自動被帶換成 &gt; 和 &lt;,是不是越做越回去了啊 ˇˇ (反過來說,html 編輯模式裡的符號,在編輯視窗裡也沒被代換過去)

隨筆:在 Visual Studio 中,使用 Serializable 儲存物件

既然現在 IDE / Framework 都把加速開發當作主要目標,Coder 再混也應該要學一學這些把戲 >///<


以往用 C/CPP 都可以把不含指標的 struct / class 直接 binary read/write,但在 Java / Visual Studio 裡,這樣的流程被稍微擴充,改以 Serialize / Deserialize 作為媒介 。簡單的說,Serialize 就是把一個物件(物件裡可以有指向其他物件的參考),弄成一個 Byte 陣列,可以拿去做其他壞事(傳到別的電腦上,或者存到硬碟裡);Deserialize 就是把這個 Byte 陣列弄回原本的物件,其中所有的變數都完全相同。 我是沒什麼興趣去查 Serialize / Deserialize 的使用限制在哪邊啦,不過碰到有交互參照繞圈圈,或者是變數含有資源(DB / File resources / Socket)的狀況,就算會爆炸也不意外啦。

使用 C# 時,需加上
using System.Runtime.Serialization ;
using System.Runtime.Serialization.Formatters.Binary ;

並在需要 Serialize / Deserialize 的 class 宣告前加上 [Serializable()]
在物件內,Serialize 時要忽略的變數前加上 [NonSerialized()]

儲存時參考程式碼:
IFormatter f = new BinaryFormatter();
Stream s = new FileStream(FILENAME, FileMode.Create, FileAccess.Write, FileShare.None);
f.Serialize(s, INSTANCENAME);
s.Close();

提取時參考程式碼:
IFormatter f = new BinaryFormatter();
Stream s = new FileStream(FILENAME, FileMode.Open, FileAccess.Read, FileShare.Read);
INSTANCENAME = (CLASSNAME) formatter.Deserialize(s);
s.Close();

註:詳細內容請參照 msdn : SerializableAtribute,欲求不滿再參考 ISerializable

補充,如果是 Class A 裡持有 Class B 變數的話,必須宣告 Class A/B 均為 Serializable(),才能將 Class A Serialize,否則會在 Runtime 出錯;或者可以將 Class B 設為 NonSerialized。另外,Serializable() 不會被繼承,因此要使用的物件需明確宣告。

2010-04-11

DirectX, XNA, OpenGL 什麼是什麼啊

前陣子想把在實驗室開發的一套超簡易模擬系統(模擬什麼就不重要啦,那是秘密!),加上顯示的功能,因此花了點時間瞭解市面上的 3D 繪圖技術。底下稍微把查詢到的東西重新整理,當作備忘 XD

  • DirectX(wikipedia): Microsoft 所開發出的多媒體函式庫,其下又區分為許多與遊戲、多媒體、顯示相關的套件:Direct3D 處理 3D 顯示,DirectInput 處理鍵盤滑鼠 GamePad 輸入,DirectSound 負責音效等等的功能。
    DirectX 9 是最後一個支援 WindowsXP 的版本,而 DirectX 9Ex/10 與 11 則只支援 Vista 與 Windows7。雖然如此,DX9 的功能已成熟到能建構「堪用」的介面,DX 9/Ex/10/11 的差異主要在於效能、效果方面,因此若要開發汎用的 3D 顯示程式的話,Dx9 仍為首選。DX11 新增的 DirectCompute 套件能利用 GPU 進行一般運算(GPGPU, General-purpose computing on Graphics Processing Units),與 nVidia 出的 CUDA 功能類似,算是 DX11 比較讓我感興趣的部份。
    DirectX SDK 為 C 語言的函式庫,因此能以大多數的 C/C++ Compiler 編譯。除了 Microsoft 平台以外,Wine 計畫實做了可安裝於 Un*x 作業系統下的對等 Runtime Library
  • Managed DirectX: Microsoft 在 .Net 熱潮的時候搞出來的東西,把底層的 DX9 API 包成了 Managed Code,讓 .Net coder 可以很爽的以 Visual Studio 快速開發。這套專案已在 2006 年終止,不過目前下載的 DirectX SDK 還是包含這個套件。由於本體還是 DirectX 9,利用這套 Library 開發的程式應該能在安裝 .Net Framework 與 DirectX 9 的電腦上執行(未確認)
  • XNA (wikipedia): Microsoft 推出的另一套遊戲導向的函式庫。與 Managed DirectX 類似,XNA 同樣將 DirectX 9 的功能以 Managed Code 的方式封裝運作。雖說透過 XNA 寫出的執行檔能在 Windows, Zune, XBox 360, Windows Phone 7.0 下運作,客戶端還是需要安裝特定 runtime library 才能執行,因而 XNA 還是受到了一些詬病。然而 XNA 在 2D 與 3D 程式的開發上,確實比 Managed DirectX 更簡單快速。
    Microsoft 將 XNA 定位為供學生或工作室能快速開發遊戲的平台,因此很難期待 MS 會對它的效能與功能做出多少強化。又因為 XBox360 似乎只支援到 DX9,因此 XNA 應該也不會納入 DX10/11 的新特色。
  • OpenGL (wikipedia): 一套由非營利團隊負責的開源碼圖像系統,功能與 DirectX 中的 Direct2D, Direct3D 類似。開源碼專案一般都會有許多熱心人士建立適用於各種環境的 Library,讓像我這種什麼都不懂的人也能自我感覺良好,因此 OpenGL 的平台與環境支援度遠超越 DirectX;然而各家實做的完成度、效率、附加限制,也變成需要考量的重點。既然我什麼都不懂啊,就別期待能看到這方面的內容啦 ㄎㄎ
    除了 OpenGL 以外,還有其他的開源碼專案如 OpenML 處理多媒體、OpenAL 處理音效、OpenCL 進行運算;這些套件合體後,所能提供的功能與 DirectX 也就差不多啦。
    就 OpenGL + .Net Framework 來說,以前我摸過一下下 Tao,前陣子因為 Tao 官網炸裂,就改裝 OpenTK,目前仍在學習中。

最近啊...

最近在摸 C# 還有 3D 顯示相關函式庫 (DirectX, OpenGL, XNA 等等),有追 Plurk 的朋友應該早就發現了吧 XD 與其讓筆記在噗浪的洪流裡消失,還是記在這邊以後比較容易回過頭來查詢。兩週內這邊應該會稍微有為一下!