2011/12/28

轉學生的作業難題

轉學生與轉系生,很自然地要面對陌生環境的問題,原系的同學都有固定班底了。
我剛轉系時,還好有成功嶺同袍收留我,不然也是分不到組。
隔一年跟大家混熟之後,我要應付的卻是,全班一半都要跟我一組是怎樣。
所以,我只好每一科的組員都不相同。

回歸正傳,你要的作業,書上、網路上都有答案,
對你最好的方式就是,把這些內容內化成你的知識。
然後用自己的方式重新表達出來,
如果這樣,老師、同學、甚至網友都會幫你。

看過很多轉X生的例子,而我是可以在兩個系上自由穿梭的例子。
緣分這種事是不能刻意的,你的懷疑真的是多慮了。
如果你只是單純想要有各組員的話,系上多多少少會有翹課落單的,
主動出擊會比較容易。


我知道你要速成的方式,那我教你,你把網路上的東西,
重新修改弱化成你的版本。如果老師沒有口頭問你,可能ok。

好吧,我又來多管閒事了,分享一個很極端的例子,
我鄰居小朋友,讀南部某間私立技術學院機械科夜間部,
他的說法是,本來以為會落榜,結果還有學校,所以自稱黑馬!?
他不知道現在錄取率多高嗎?我們封他一個外號「白濫X」,

考試怎麼考的呢?老師都會洩題,
同學分兩種,一種比較認真的,就是會做小抄的,不是把題目背起來喔,是做小抄,因為考的一模一樣。
另外一種,比較不認真的,就是考試等著別人抄完小抄,然後傳給他的。不過他還是被當了。

為甚麼?他跟我說,因為坐的太遠,小抄還沒傳到他這邊時,已經下課了。
反正被當都是別人的錯,坐太遠是塞車的錯,小抄沒傳給他是同學的錯,
沒洩題都是老師的錯,考太難是課程的錯。

反正都不是「白濫X」自己的錯,至此我深深的思考,我們國家普及高等教育的政策,是哪裡錯了?

以下開放公幹,對象是我或者我鄰居都可以。

2011/12/27

C# Abstract override修飾子

Abstract修飾子修飾Animal 的MakeNoise函式,這跟C++的虛擬函式是一樣的,
只定義類別函式的名稱但沒有寫程式碼。而在子類別中用override修飾子修飾
MakeNoise函式,
覆寫了父類別所沒有寫的程式碼

abstract class Animal
{
public abstract void MakeNoise();
}
class Cat : Animal
{
public override void MakeNoise()
{
Console.WriteLine("Meow!");
}
}
class Dog : Animal
{
public override void MakeNoise()
{
Console.WriteLine("Woof!");
}
}

C#的資料型態對應到.NET結構,原因是為了讓C#能夠跟.net語言相容。

This design is a part of what makes your C# code portable to other .NET
languages. The C#
values map to .NET structures that can be used by any .NET language, because
any .NET
structure can be used by the CLR. Mapping C# keywords to .NET structures
also enables the
structures to use techniques such as operator overloading to define the
value's behavior when
the type is used in an expression with an operator. You'll examine operator
overloading when
you learn about C# classes.

原來C#的資料型態對應到.NET結構,原因是為了讓C#能夠跟.net語言相容。
因為.NET結構可以對應到CLR。

2011/12/26

C# 定義結構的索引

C# 定義結構的索引 感覺就像是[]的負載而以
Defining Indexers in Structures
Indexers are objects that enable a structure to be indexed in very much the
same way that
arrays do. With an indexer, you can declare several structures at the same
time and refer to
each structure using an index number. This is demonstrated in Listing 7-7,
which declares a
structure called MyStruct containing a string and an index.
Listing 7-7: Including an Indexer Within a Structure
class Listing7_7
{
struct MyStruct
{
public string []data ;
public string this [int index]
{
get
{
return data[index];
}
set
{
data[index] = value;
}
}
}
public static void Main()
{
int x;
MyStruct ms = new MyStruct();
ms.data = new string[5];
ms[0] = "Brian D Patterson";
ms[1] = "Aimee J Patterson";
ms[2] = "Breanna C Mounts";
ms[3] = "Haileigh E Mounts";
ms[4] = "Brian W Patterson";
for (x=0;x<5;x++)
System.Console.WriteLine(ms[x]);
}
}

你的興趣與專長,從你的心去找,只有你知道。

現在是多元化的社會,法定時薪將由103元起跳,
沒有必要去追逐大家認為一樣的路,但卻不是你擅長的路。
每個人只要有一種專長達到專業程度,就能生存,不管是IT、英文、寫作、烹飪、公
關•••••,
你的興趣與專長,從你的心去找,只有你知道。

我舉個例子,玩線上遊戲時,
明明我就是一個魔法師,我的專業就是魔法攻擊,我要提高的就是MP,
我沒有必要去學戰士一樣,去加強力量,或者物理攻擊。
不人云亦云,要抓對自己的方向。

2011/12/23

如何壓縮Hyper-V的vhd檔

我發現光光刪除Hyper-V虛擬機器中的檔案不能減少vhd檔案大小,
這也沒錯,因為光光看名稱dynamically expanding virtual hard disk,動態擴展,
並沒有動態減少,
而且考慮到Disk固有的外部破碎(external fragmentation),直接縮減vhd大小也顯然
很奇怪。
直覺就是需要先做defragmentation,然後使用工具或hyper-v的功能去壓縮她,所以我
估到了這篇,
http://blogs.technet.com/b/tonyso/archive/2008/10/09/hyper-v-how-to-shrink-a
-vhd-file.aspx

covarience與contravariance千言萬語不如一段程式碼

Covariance(共變性)與contravariance(逆變性)講了半天,有沒有霧茫茫的感覺。
看一段程式碼就明白囉,varience就是不定型別的變數,像VB就是varience,
而傳統的C/C++包含VC++等等都是variable,也就是在編譯時期就決定了資料型態,
Integer就是integer,char就是char。而varience就是在必要時期,例如run-time時才
決定了資料型態,
使用varience的language很多,例如javascript等等。
下面這是由別的地方擷取出來的C#範例。Delegate是很像function point的東東,要先
懂Delegate才能理解covarience與contravariance,
其實我就把他當成函數參考來看,很少人提到這個,所以我也不翻了,就Delegate
四個函數如下:
static object GetObject() { return null; } static void SetObject(object obj)
{ }

static string GetString() { return ""; } static void SetString(string str) {
}

static void Main()
{
// Covariance. A delegate specifies a return type as object,
// but I can assign a method that returns a string.
//英文寫得很清楚 ==> 共變性就是使用delegate時,這個delegate指定傳回一個物件
(或是說varience),但是在statement中卻指定了一個函數是傳回有型別的變數(這邊是
variable)
Func<object> del = GetString;

// Contravariance. A delegate specifies a parameter type as string,
// but I can assign a method that takes an object.
//英文寫得很清楚 ==> 逆變性就是使用delegate時,這個delegate指定傳入一個
variable (這邊是string),但是在statement中卻指定了一個函數是傳入varience(無
型別的變數)
Action<string> del2 = SetObject;

// But implicit conversion between generic delegates is not supported
until C# 4.0.
//不過在下面這個delegate(函數參考)直接的指定,在C#4.0前卻是不合法的。
Func<string> del3 = GetString;
Func<object> del4 = del3; // Compiler error here until C# 4.0.
}

在給一段msdn的程式碼就懂了...
class Mammals{}
class Dogs : Mammals{}
class Program
{
// Define the delegate.
public delegate Mammals HandlerMethod();
public static Mammals MammalsHandler()
{
return null;
}

public static Dogs DogsHandler()
{
return null;
}

static void Test()
{
HandlerMethod handlerMammals = MammalsHandler;

// Covariance enables this assignment.
HandlerMethod handlerDogs = DogsHandler;
}
}
//////////////////////////////////
//contravairence
// Event hander that accepts a parameter of the EventArgs type.
private void MultiHandler(object sender, System.EventArgs e)
{
label1.Text = System.DateTime.Now.ToString();
}

public Form1()
{
InitializeComponent();

// You can use a method that has an EventArgs parameter,
// although the event expects the KeyEventArgs parameter.
this.button1.KeyDown += this.MultiHandler;

// You can use the same method
// for an event that expects the MouseEventArgs parameter.
this.button1.MouseClick += this.MultiHandler;

}

2011/12/1

以儒墨道法四家精神領袖的身份來分析,建置容錯移轉叢集與高可用性的觀點,哪一家學說最為完備?

以儒墨道法四家精神領袖的身份來分析,建置容錯移轉叢集與高可用性的觀點,哪一家學說最為完備?

儒家主張是「博愛」,其理想是「世界大同」,只從事資料備份,萬一系統發生錯誤,修復系統後將資料還原即可。

墨家主張「兼愛」、「非攻」,只需要資料本身隨時可用,萬一需要容錯移轉時,對於實際執行層級效能較不在乎。

道家主張「無為而治」,只在設備上放置乖乖,即可確保系統運作正確無誤。

法家主張「勢」、「術」、「法」,以強兵富國為資料中心之首要,制定完整的SOP與進行頻繁的切換演練,伺服器叢集會在 OS 層級運作,其中涉及重複的硬體及共用磁碟資源,以供叢集存取。

如果您喜歡我的文章風格,歡迎加入FB粉絲專頁 [ kira3c產品評測團] !