小弟過去曾介紹過微軟 Disk2vhd 這個超好用的 P2V 小工具,軟體版本也從當時的 v1.0  進化到現在的 v1.63。不過前陣子,看到噗友 hunterpo 使用該工具轉 vhd,拉進 Hyper-V 上線後,卻發生每次開機不斷安裝 Hyper-V 整合服務元件,再重開又繼續裝的迴圈中,這才想起來去年 12 月我也曾遇到這個情況。
其實,發生問題的關鍵點在於,如果準備拉進 Hyper-V 使用,那麼就別勾選「Prepare for use in Virtual PC」項目,否則就會陷入無限迴圈中。

Frank 發表在 痞客邦 留言(0) 人氣()

SharePoint 2010 產品及技術包括下列項目:

Microsoft SharePoint Foundation 2010

Frank 發表在 痞客邦 留言(0) 人氣()

磁碟陣列有那些優點:
1.傳輸速率快
2.儲存容量可提升
3.提升I/O每秒的數量
4.增加資料安全性及穩定性
5.大量資料快速及簡易管理
6.增加可用運時間,減少維護
各階層磁碟陣列(RAID)介紹:
磁碟陣列是由2個以上的硬碟,模擬一個邏輯硬碟出現在系統中;使用磁碟陣列控制器以達成其存在,利用不同陣列形式,模擬各種層級。現在我們先來了解磁碟陣列(RAID)到底有幾種模式,一般最常提到及應用的RAID層級分為0、1、0+1、3及5。另外還有一些極少用到的RAID 4及RAID 6在此我們就不提它了。
以下就是各個階層的介紹:
RAID 0:Striping/Span (切分/延展)
RAID 1:Mirroring (磁碟鏡射)
RAID 0+1:Mirror + Striping (磁碟鏡射+切分/延展)
RAID 3:Parallel with Parity (平行同位元檢查)
RAID 5:Striping with Rotating Parity (切分/延展+輪轉同位元)
RAID 0:Striping/Span (切分/延展)
RAID 0,它是將資料儲存在2個以上的硬碟機,其將全部磁碟機的儲存容量合併,藉由將資料切分到全部的磁碟機上,進行平行讀寫,而達到提高效能增加容量。
例如:假設有2顆硬碟都為20G
RAID 0 的結果為 在系統內看到一顆硬碟容量就為 20+20=40G
但是RAID 0缺點是完全沒有容錯能力,只要有一個磁碟故障,就會導致陣列磁碟的所有資料,毀於一旦無法挽回。
RAID 1:Mirroring (磁碟鏡射)
RAID 1,必須由2個以上的硬碟所組成,由磁碟陣列(RAID)來控制,將資料同時寫入第1個與第2個硬碟,其2組硬碟上的資料完全相同,也就是其中一個硬碟是用來作備份用途;當其中有一個硬碟故障時,系統照常運作正常。RAID 1是所有RAID階層上,經濟效益最好效能很高極佳的資料安全性。是所有階層中使用最多最廣最符合當初RAID設計概念的一種。唯一小缺點是,其陣列磁碟容量是全部硬碟容量的一半。 因為二顆硬碟是存放著相同的資料,就浪費了一顆硬碟的空間。
RAID 0+1:Mirror + Striping (磁碟鏡射+切分/延展)
RAID 0+1,是結合了RAID 0與1兩種模式,這個階層須具備4個或以上的雙數硬碟所組成。這個模式是由2個硬碟遵守RAID 0規範,設定成一組,再由每組間遵循RAID 1的規範,使RAID 0+1擁有容錯力及整體讀寫速度與資料安全性。不過,缺點是成本很高
RAID 3:Parallel with Parity (平行同位元檢查)
RAID 3,最少須3個硬碟或以上,這個階層的磁碟陣列具備了同位元高階智慧型演算法,利用一個硬碟來儲存其運算出來的同位元值的資料。當陣列磁碟中有一個硬碟發生故障時(當然不能是同位元碟),只要換上新硬碟後,磁碟陣列控制器就能利用同位元碟的資料,重新演算得到其舊有資料並回寫建立。因為其同位元檢查資料是將資料切割成數個區段,利用XOR演算法計算出同位元資料;而其區段以Bytes計算時,稱為RAID 3,如果是以Block計算時,就稱為RAID 4。所以RAID 3在整體讀寫效能會較慢較差,但在成本上會比RAID 0+1還省一點,其陣列磁碟整體容量計算公式為N-1。
RAID 5:Striping with Rotating Parity (切分/延展+輪轉同位元)
RAID 5,最少須3個硬碟,其工作原理與RAID 3相似,主要差別是其同位元資料沒有固定在同個硬碟,是以輪流方式儲存在每個硬碟上,故稱輪轉同位元。當磁碟陣列控制器利用XOR演算出同位元檢查資料後,會隨著資料分別寫入各台硬碟上,因此整體讀寫效能比RAID 3要好一些,當然比RAID 0要差。不過在大型資料處理時,需同時讀寫多個硬碟,而同位元檢查是由磁碟陣列控制器的XOR邏輯所控制的,所以資料處理越大越多時,一定會有所遺失,但這個階層的RAID還是可以提供很高的容錯能力。
RAID 5 的組成一定是3顆以上的硬碟,其容量的計算是(n-1)顆
假設有a b c 三顆硬碟是20G
組成 RAID 5 之後容量是 20+20+20=40G
RAID 5 結合了 RAID 0 跟 RAID 1,它將硬碟的容量加總了,但是又保留了一顆的容量在作檔案的容錯,在寫入資料時會透過其演算法去寫入三顆硬碟之中,假設C硬碟掛掉了,只要將一顆新的20G取代 C 硬碟,RAID 5 的容錯機制會由A B 二顆硬碟中留下的資料來還原 C 硬碟的資料,但前提是壞一顆硬碟,如果同時壞二顆,那資料亦是全毀。

總結:
RAID 0 可以將硬碟容量加總,增加讀取速度,但是沒有容錯功能.
RAID 1 可以將資料鏡射一份,但是讀取速度沒有增加.而且要浪費一顆硬碟.
RAID 5 可以將硬碟容量加總,亦可以增加讀取速度,也有容錯功能.而且多顆組合起來只會浪費一顆硬碟.不像RAID 1每二顆硬碟會浪費一顆。



由於RAID 5 只容許同時有一顆硬碟損壞.就有了RAID 0+1 或 RAID 1+0
這是更安全的作法.但相對的也更浪費硬碟。

舉例RAID 0+1
假設有4個硬碟 A B C D 各20G
RAID 0 A+B => 20+20=40(E)
RAID 0 C+D => 20+20=40(F)
在這裡由A B C D 組成了二顆RAID 0的硬碟.雖然容量加總了.但並沒有容錯功能
所以
RAID 1 E+F => 40+40=40(G)

RAID 1+0 則是反過來運作
RAID 1 A+B => 20+20=20(E)
RAID 1 C+D => 20+20=20(F)
RAID 0 E+F => 20+20=40(G)

作RAID 最好是都用相同容量的硬碟,如果容量不同.則以當中容量最小的為基準
如 A=20G B=30G C=40G
RAID 0 A+B => 20+30=40
RAID 1 A+B => 20+30=20
RAID 5 A+B+C => 20+30+40 => 20+20=40 (n-1)


Frank 發表在 痞客邦 留言(0) 人氣()

   
    * Uninstall all Oracle components using the Oracle Universal Installer (OUI).

    * Run regedit.exe and delete the HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE key. This contains registry entires for all Oracle products.

Frank 發表在 痞客邦 留言(0) 人氣()





 

重要性AndroidManifest.xml是Android應用程式中最重要的文件之一。它是Android程式的全局配置文件,是每個 android程式中必須的文件。它位於我們開發的應用程式的根目錄下,描述了package中的全局數據,包括package中暴露的組件 (activities, services, 等等),以及他們各自的實現類,各種能被處理的數據和啟動位置等重要訊息。 
因此,該文件提供了Android系統所需要的關於該應用程式的必要訊息,即在該應用程式的任何代碼執行之前系統所必須擁有的訊息。一個典型的Android應用程式的結構如下圖所示:
AndroidManifest.JPG 


2012-3-19 15:05 上傳

下載附件 (44.72 KB)

 



二,主要功能它指定了該應用程式的Java包:該包名作為應用程式的一個獨特標識。 
它描述了應用程式組件:該應用程式由哪些activity,service,broadcast receiver和content provider組成。它指定了實現每個組件的類以及公開發佈它們的能力(例如,它們能持有哪個Intent訊息)。這些聲明使Android系統知道這 兒有什麼組件以及在什麼條件下它們可以被載入。 
它決定那些進程將容納應用程式組件。 
它聲明了本應用程式必須擁有哪些許可,以便訪問API的被保護部分,以及與其他應用程式交互。 
它也聲明了其他應用程式在和該應用程式交互時需要持有的許可。 
它列出了Instrumentation類,可以在應用程式執行時提供簡檔和其他訊息。這些聲明僅當應用程式在開發和測試過程中被提供;它們將在應用程式正式發佈之前被移除。 
它聲明了該應用程式所需的Android API的最小化水平。 
它列出了該應用程式必須鏈接的庫。 
三,主要結構及規則下面列表顯示了manifest文件的通常的結構以及它可以含有的元素。每個元素,連同它的所有屬性,會在各個單獨的文檔裡進行充分的描繪。 
<?xml version="1.0" encoding="utf-8"?> 
<manifest>  //根節點,描述了package中所有的內容 
     <uses-permission /> //請求你的package正常運作所需賦予的安全許可。一個manifest能包含零個或更多此元素 
     <permission />  //聲明了安全許可來限制哪些程式能使用你的package中的組件和功能。一個manifest能包含零個或更多此元素 
     <permission-tree />  
     <permission-group /> 
     <instrumentation />  //聲明了用來測試此package或其他package指令組件的代碼。一個manifest能包含零個或更多此元素 
     <uses-sdk />  //指定當前應用程式兼容的最低sdk版本號 
     <application>  //包含package中application級別組件聲明的根節點。此元素也可包含 application中全局和默認的屬性,如標籤,icon,主題,必要的權限,等等。一個manifest能包含零個或一個此元素(不允許多餘一個) 
         <activity>  //用來與用戶交互的主要工具。當用戶開啟一個應用程式的初始頁面時一個activity,大部分被使用到的其他頁面也由不同的activity所實現並聲明在另外的activity標記中。 
             <intent-filter>  //聲明了指定的一組組件支持的Intent值 
                 <action /> 
                 <category /> 
                 <data /> 
                     <type/> 
                     <schema/> 
                     <authority/> 
                     <path/> 
             </intent-filter> 
             <meta-data /> 
         </activity> 
         <activity-alias> 
             <intent-filter> . . . </intent-filter> 
             <meta-data /> 
         </activity-alias> 
         <service>  //Service是能在後台執行任意時間的組件 
             <intent-filter> . . . </intent-filter> 
             <meta-data/> 
         </service> 
         <receiver>   //IntentReceiver能使你的application獲得數據的改變或者發生的操作,即使它當前不在執行 
             <intent-filter> . . . </intent-filter> 
             <meta-data /> 
         </receiver> 
         <provider>  //ContentProvider是用來管理持久化數據並發佈給其他應用程式使用的組件 
             <grant-uri-permission /> 
             <meta-data /> 
         </provider> 
         <uses-library /> 
         <uses-configuration />   
     </application> 
</manifest>
下面是按照字母順序排列的所有可以出現在manifest文件裡的元素。它們是唯一合法的元素;你不能加入你自己的元素或屬性。
<action> 
<activity> 
<activity-alias> 
<application> 
<category> 
<data> 
<grant-uri-permission> 
<instrumentation> 
<intent-filter> 
<manifest> 
<meta-data> 
<permission> 
<permission-group> 
<permission-tree> 
<provider> 
<receiver> 
<service> 
<uses-configuration> 
<uses-library> 
<uses-permission> 
<uses-sdk>
說明:AndroidManifest.xml文件的結構、元素,以及元素的屬性,可以在Android SDK文檔中查看詳細說明。而在看這些眾多的元素以及元素的屬性前,需要先瞭解一下這些元素在命名、結構等方面的規則: 
     元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出現一次。如果一個元素包含有其他子元素,必須通過子元素的屬性來設定其值。處於同一層次的元素,這些元素的說明是沒有順序的。 
     屬性:按照常理,所有的屬性都是可選的,但是有些屬性是必須設定的。那些真正可選的屬性,即使不存在,其也有默認的數值項說明。除了根元素<manifest>的屬性,所有其他元素屬性的名字都是以android:前綴的; 
     定義類名:所有的元素名都對應其在SDK中的類名,如果你自己定義類名,必須包含類的數據包名,如果類與application處於同一數據包中,可以直接簡寫為「.」; 
     多數值項:如果某個元素有超過一個數值,這個元素必須通過重複的方式來說明其某個屬性具有多個數值項,且不能將多個數值項一次性說明在一個屬性中; 
     資源項說明:當需要引用某個資源時,其採用如下格式:@[package :]type :name  例如 <activity android:icon=」@drawable/icon 」 . . . > 
     字符串值:類似於其他語言,如果字符中包含有字符「」,則必須使用轉義字符「\」; 
四,詳細說明值得一提一些常用之處: 
1,幾乎所有的AndroidManifest.xml(以及許多其他Android的xml的文件)在第一個元素中包含了命名空間的聲明 xmlns:android="http://schemas.android.com/apk/res/android"。這樣使得Android中各 種標準屬性能在文件中使用,提供了大部分元素中的數據。 
2,大部分manifests包含了單個<application>的元素,它定義了所有的application級別組件和屬性,並能在package中使用。 
3,任何被用戶看作頂層應用程式,並能被程式啟動器所用的package,需要包含至少一個Activity組件來支持MAIN操作和LAUNCHER種 類。動作android.intent.action.MAIN指示這是應用程式的入口點。類別 android.intent.category.LAUNCHER將此Activity放在啟動器視窗中。
在最外層的<manifest>中包含了包名如 package="cn.androidlover.demo" 、軟體的版本號 android:versionCode="1" 以及 android:versionName="1.0"的屬性,而裡面一層的<application>分支中將可能包含Android程式的 四種對像 Activity、Service、Content Provider以及Receiver。我們每添加上面四個類型中的任一種新對象都需要在androidmanifest.xml文件中添加相應節點,否 則執行時將會產生異常。每一個activity必須要一個<activity>標記對應,無論它給外部使用或是只用於自己的package 中。如果一個activity沒有對應的標記,你將不能執行它。
此文件一個重要的地方就是它所包含的intent-filters。這些filters描述了activity啟動的位置和時間。每當一個 activity(或者作業系統)要執行一個操作,例如:開啟網頁或聯繫簿時,它創建出一個intent的對象。它能承載一些訊息描述了你想做什麼,你想 處理什麼數據,數據的類型,和一些其他訊息。Android比較了intent對像中和每個application所暴露的intent-filter中 的訊息,來找到最合適的activity來處理調用者所指定的數據和操作。關於intent的更多訊息請訪問Intent參考頁面。
application屬性介紹:
有關AndroidManifest.xml文件的application分支我們有必要瞭解一些常見的屬性,這裡可以看到一些我們實用的選項,比如允許 調試android:debuggable、任務關係android:taskAffinity,比如我們常見的方式創建一個新的任務實用標記 FLAG_ACTIVITY_NEW_TASK,為程式制定一個主題,可以使用android:theme指向一個主題文件。平時我們創建的程式使用一些 安全敏感項,會需要請求系統許可權限,這裡可以使用android:permission來制定相關的許可,每個程式的service、 activity、content provider、receiver都需要在application的節點內實現。有關完整的屬性可以查看:
<application android:allowClearUserData=["true" | "false"] 
              android:allowTaskReparenting=["true" | "false"] 
              android:debuggable=["true" | "false"] 
              android:description="string resource" 
               android:enabled=["true" | "false"] 
              android:hasCode=["true" | "false"] 
              android:icon="drawable resource" 
               android:label="string resource" 
              android:manageSpaceActivity="string" 
               android:name="string" 
               android:permission="string" 
               android:persistent=["true" | "false"] 
               android:process="string" 
               android:taskAffinity="string" 
               android:theme="resource or theme" > 
      . . . 
</application>
另外:Activity的屬性常用的可能為android:name和android:label兩個,但我們需要瞭解所有的屬性以幫助解決複雜的問題,完整的如下:

  • android:allowTaskReparenting=["true" | "false"]

  • android:alwaysRetainTaskState=["true" | "false"]

  • android:clearTaskOnLaunch=["true"" | "false"]

  • android:configChanges=[one or more of: "mcc" "mnc" "locale" "touchscreen" "keyboard" "keyboardHidden" "navigation" "orientation" "fontScale"]

  • android:enabled=["true" | "false"]

  • android:excludeFromRecents=["true" | "false"]

  • android:exported=["true" | "false"]

  • android:finishOnTaskLaunch=["true" | "false"]

  • android:icon="drawable resource"

  • android:label="string resource"

  • android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"]

  • android:multiprocess=["true" | "false"]

  • android:name="string"

  • android:noHistory=["true" | "false"]

  • android:permission="string"

  • android:process="string"

  • android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nonsensor"]

  • android:stateNotNeeded=["true" | "false"]

  • android:taskAffinity="string"

  • android:theme="resource or theme"

  • android:windowSoftInputMode=[one or more of: "stateUnspecified" "stateUnchanged" "stateHidden" "stateAlwaysHidden" "stateVisible" "stateAlwaysVisible" "adjustUnspecified" "adjustResize" "adjustPan"]



從Provider節點中用到的定義,可以看到包含了權限控制、排序方式完整的如下:
<provider android:authorities="list" 
            android:enabled=["true" | "false"] 
            android:exported=["true" | "false"] 
            android:grantUriPermissions=["true" | "false"] 
            android:icon="drawable resource" 
            android:initOrder="integer" 
            android:label="string resource" 
           android:multiprocess=["true" | "false"] 
           android:name="string" 
            android:permission="string" 
            android:process="string" 
            android:readPermission="string" 
            android:syncable=["true" | "false"] 
            android:writePermission="string" > 
</provider>
而對於服務相關定義如下:
<service android:enabled=["true" | "false"] 
           android:exported[="true" | "false"] 
           android:icon="drawable resource" 
           android:label="string resource" 
          android:name="string" 
           android:permission="string" 
           android:process="string" > 
</service>
最後是Broadcast使用的Receiver定義,一般配合和隱式處理。
<receiver android:enabled=["true" | "false"] 
            android:exported=["true" | "false"] 
            android:icon="drawable resource" 
           android:label="string resource"            
           android:name="string" 
           android:permission="string" 
           android:process="string" > 
</receiver>
總之,AndroidManifest.xml文件雖然看起來複雜,但是,只要我們理清中裡面各元素的作用,那麼一切就變得簡單了。


Frank 發表在 痞客邦 留言(0) 人氣()

在Android中要自行設計按鈕有以下幾種方式, 
 
一: 準備多張不同的按鈕圖片
你可以預先為你的按鈕準備多張不同的圖片,例如如按下前是亮色,按下後變暗, 或是按下前是原圖,按下後變小圖

Frank 發表在 痞客邦 留言(0) 人氣()

android.permission.ACCESS_CHECKIN_PROPERTIES
Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded
允許讀寫訪問 "properties"表在checkin資料庫中,改值可以修改上傳
android.permission.ACCESS_COARSE_LOCATION
Allows an application to access coarse (e.g., Cell-ID, WiFi) location
允許一個程式訪問CellID或WiFi熱點來獲取粗略的位置

Frank 發表在 痞客邦 留言(0) 人氣()

  第一種方法: 使用setOnKeyListener(),不過只能監聽硬體鍵盤所發出的事件。
edittext.setOnKeyListener(new View.OnKeyListener() { 
 @Override
 public boolean onKey(View v, int keyCode, KeyEvent event) {
 textview.setText(edittext.getText());
 return false;
 }
 });

Frank 發表在 痞客邦 留言(0) 人氣()


當初看到這個功能的時候說老實話我也嚇了一跳
沒搞錯吧,手機也要玩全螢幕,如果說一般PC遊戲程式用全螢幕我還相信
因為全螢幕的狀態遊戲程式的效能會比視窗模式還要高上許多
不過Android的確有提供這個功能,就是為了替手機的遊戲程式等提供更乾淨的介面
來看一下這張圖
一個Android應用程式會有兩個不屬於我們佈局檔的東西(圖看不清楚請點開放大)

Frank 發表在 痞客邦 留言(0) 人氣()


要從一個 Activity 中呼叫另一個 Activity,
就必須使用 Intent 物件,
而要從一個 Activity 傳值另一個 Activity,
就必須使用 Bundle 物件,
請參考以下範例 (這裡就不列出 Layout XML 檔案內容了) :

Frank 發表在 痞客邦 留言(0) 人氣()


UseSubmitBehaviot 屬性是控制Button於HTML輸出時Type是否為submit或Button屬性
在ASP.NET的Button控制項中預設是會去執行postback,也就是會在submit時會自動去執行__doPostBack 函式
而如果在Button設定UseSubmitBehaviot=false時,Button必須在onClick事件中自行去呼叫__doPostBack 函式
 

Frank 發表在 痞客邦 留言(0) 人氣()

一.由IIS產生Session並給予一組24字元的SessionID
二.在需要回傳資料給伺服器時由瀏覽器將SessionID附加在HTTP訊息標頭中傳回給IIS做為身份辨識,伺服器處理完資料後依照SessionID回傳給個別的Client端
三.Session在Web.config的常用設定
1.在<System.Web>標籤內
< sessionState
mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
stateNetworkTimeout="number of seconds" 
sqlConnectionString="sql connection string"
sqlCommandTimeout ="number of seconds"
/>
ex.

Frank 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。