⓪蕭沖 編著
話說自windows 8開始,在windows 8的應用程式大致上被分為二種: 一種就是「桌機」應用程式,這與過去的應用程式沒什麼大不同。另一種就是Metro-Style App。這種應用程式,目前正式的說法叫「Windows Store App」,因為metro style這個詞有一些法律上的問題。不過為了簡易一點的說明,以下我稱它叫 metro app。
先來說說 metro App 與傳統的desktop應用程式有什麼不同? 我個人覺得最主要的不同在於安全性。metro app與iphone上的app真的超像的,也就是app被局限在一個sandbox裡,不能隨意的存取他人的app或是重要的系統資源,比如說系統的根目錄等。metro app裡的目錄只有三個Local folder、Roaming folder 、Temp folder,因此想搞鬼太不容易,這點若有開發iphone app的人應該可以感受很深! 當然,metro app還有一個很大的不同,那就是外觀(UI),使用windows 8的介面後就會知道不同在哪裡…
ok,以上說了一堆,還是沒講到windows run time :p。總要有個前因嘛! 為了達到 metro app的風格、安全等等,當然相對的windows api就要有所改變,不然如何限制不能讀系統檔之類的,你說是吧?! metro app 被限制要使用WinRT這個framework(我不稱它是api)來開發。
那麼WinRT的本質是什麼呢? 說到這裡,又不得要說它又像mac裡的cocoa framework。windows 8 以前,開發人員(非.net)都是和win32 api在打交道。而win32 api其實就是c 函式庫一樣的東西,非物件化、非階層化,像是倒滿地的一堆函式。為了要方便使用這些api,才有了borland的VCL或microsoft的MFC,這二個framework就是把win32 api包起來變成類別,方便開發使用。win32 api超過10年以上的歷史,於是這回microsoft就把這系統層級的api重新包裝起來,「並且考慮可能不同語言都會呼叫它」,加入一些安全機制等,於是就有了WinRT這個東西。它是一種framework,不是散落一地的函式庫。它是一種類似COM技術的包裝方式,所以不同的語言都可呼叫,它是native的碼,所以很快…。這樣的特性才讓我不禁覺得像極了mac上的cocoa framework,雖然cocoa不像com一樣,但在mac/iphone上開發程式就是要和cocoa打交道。
aftcast 發表在 痞客邦 留言(0) 人氣()
⓪著作: 蕭沖
這是自己的一個筆記,關於使用dos命令來組裝數個mp3為一個檔。
md tmp
copy ???????c.mp3 tmp\??????? /y
aftcast 發表在 痞客邦 留言(0) 人氣()
aftcast 發表在 痞客邦 留言(0) 人氣()
⓪著作: 蕭沖
何謂thread-safe? 這個問題我看過許多論壇都有討論過,都總讓人覺得不很滿意。在此,筆者想要用更logical的方式來把議題說清楚。首先,我們要了解它的定義! 定義若都不明白就難以判別安不安全了!
thread是什麼呢? 可能也有人不太了解。就從這裡開始… 當cpu處理一段(區塊)的程式碼時,從開始的第一行程式碼來跑就算是thead的開始,直到區塊的最後一行程式結束,就算是thread的結束。所謂的「主thread」,在dos (或dos like)程式裡,就是指main( )這個函式的開始到結束的一個thread。而主thread以外的一個子thread則是指程式人員自行在主thread裡再定義一個「程式區塊」,並請cpu同步的去執行那個區塊。
aftcast 發表在 痞客邦 留言(7) 人氣()
⓪編著: 蕭沖
我們知道dll最主要的用途就是在於程式碼共享。而共享的過程中又會演生出全域資料(變數)是否共享的問題。
在多個process間共用同一個dll時,變數的共享與否是靠二個機制:
1/ 不共享全域變數 : 使用copy-on-write的觀念來處理 ( windows 系統自動預設是如此)
2/ 共享全域變數: 我們可以透過把變數放入一個share的segment的記憶體區段內,然後process間就可以共用。
aftcast 發表在 痞客邦 留言(2) 人氣()
⓪編著 :蕭沖
Thread Pool
1/ Create map container of thread data MAY including idle property for later SetEvent, event handle property for Reset event later, thread handle property for close handle later .....by thread id as its key.
2/ Create WorkItem Queue (list for insert priority item or deque for normal queue) data with object,parameter pointer,function pointer.....
aftcast 發表在 痞客邦 留言(0) 人氣()
⓪編著 :蕭沖
總的來說,Socket 可分為二種模式 : blocking mode, non-blocking mode。
要使socket成為non-blocking mode只要設定ioctlsocket為non-blocking mode就可以,然而,若配合使用了blocking functions,會使得讀/取不到資料時產生WSAEWOULDBLOCK的error。因此若要成功而完整的使用non-blocking mode,就必需配合適當的socket IO models。
aftcast 發表在 痞客邦 留言(2) 人氣()