2011年11月23日 星期三

奇科電腦 學員經驗分享:張永明 / 奇科電腦CCNP認證課程 短短半年邁向夢寐以求的網路領域

在奇科電腦CCNP認證課程中磨練了七個月,過程中奇科專業指導老師提供相當多具有挑戰且專業性的實作題,直接讓我們瞭解實務上的網路規劃與運用,再搭配書本上的觀念,使得課程的內容非常豐富精彩,再加上沒事就約同學往奇科的機房一起練習使我成功考取到CCNP專業的證照。

想當時在尋找網路教育中心時,由於還算是在職的員工,無法安排課程較密集的訓練方式,之後從有網路背景的朋友口中得知奇科電腦教育中心,便直接到現場瞭解課程與環境,發現除了課程的時間符合我的需求外,還有奇科的網路機房是非常歡迎上過課的學生不斷來此練習,且每個工作人員感覺都像是一家人般的親切 !

考取CCNP專業認證後,我順利轉換跑道應徵到網路系統整合商擔任網路工程師一職,在這短短的半年裡我成功的從防毒、系統領域邁向我夢寐以求的網路領域,假使您像我一樣對網路領域非常有興趣卻苦無進入的門檻,誠摯推薦加入奇科電腦中心網路認證班吧 !

歡迎到奇科官網看更多學員經驗分享 :

2011年11月16日 星期三

奇科電腦 Buffer Overflow 教學(一)

What is a Stack
Stack 是一個抽象性的資料類型,普遍的用於電腦科學的領域中;放置於 Stack 中的物件有一個特性,最後一個被放進去的物件就是第一個要移開的物件,像是我們在一個桶子裡面放東西,最先放進去的將是最後被拿出來的;這種特性通常被稱為 Last In, First Out - LIFO。
Stack 定義了好幾種的操作模式;兩個最重要的手續為:PUSH 及 POP,PUSH 把物件放進 Stack 中,POP 則把最上面的物件移開。
Why do we use a stack
現代的電腦在設計的時候就已經考慮到高階電腦語言的使用了;建構高階電腦語言最重要的技巧就是提供 procedure 或是 function,從一個角度來看,一個 procedure呼叫就如 jump 一般改變了控制的流程(flow of control),但是不像 jump 的地方是:當 procedure 呼叫結束他的工作後,一個 function 把控制權還給statement 或是接下來的 instruction,這種高階的抽象性的運作方式必須藉助 stack 的幫忙才能得以實行。
The stack region
一個 stack 就是一個在記憶體內,連續性並相連的資料;一個名為 SP(stack pointer)的 register 指到 stack 最頂端位址,stack 的最底端是一個固定的位址;stack 的大小是由作業系統的核心動態的調整;而 CPU 則負責 PUSH 及 POP 的運作。
stack 是由一些邏輯的 stack frame 所組成,當呼叫一個 function 就會 push stack frame,當執行結果回傳後就 poped;一個 stack frame 包含了:
  • 一個 function 的參數
  • 他的 local 的變數
  • 復原前一個 stack frame 所需要的資料
  • 當 function call 的時候那些 instruction pointers 的值

根據 implementation,stack 會變大或變小,在這個範例中,將會使用 stack 變小的方式來示範,這種方式普遍的使用在 Intel, Motorola, SPARC 及 MIPS 的中央處理器上,Stack pointer(SP)也倚賴 implementation 而有所不一樣,他可能會指向 stack 的最後一個位址,或是在 stack 後下一個可用的位址;我們將以指向 stack 的最後一個位址為討論的方向。
stack pointer(SP)指向 stack 的最頂端(最低的數字定址),除了 SP 以外,如果有一個 frame pointer(FP)在 frame 中指向一個固定的位置將會讓操作比較方便,有些文件會把 FP 也講成 local base pointer(LB);理論上來說,local variable 可以經由對 SP 的 offset 值被參照到。然而,當 words 從 stack 被 pushed 或 poped,這些 offset 會一直改變,雖然有些 compiler 比較聰明,會紀錄有多少個word在stack內,因此可以正確的更正 offset,但是有些卻不會;不過在所有的觀念裡,一定程度的人為管理還是必需的,更進一步來說,在某些機器上,如 Intel-based 的中央處理器,從 SP 的一個已知距離存取一個變數也需要數個 instructions 來達成。
因為如此,很多 compiler 使用了第二種 register, FP,因為從 FP 到 local variable 及參數(parameter)的距離不會因為 PUSHes 及 POPes 而改變,在 Intel 的 CPU 上,BP(EBP)正是為了該目的而被使用;在 Motorola 的 CPUs 上,除了 A7(the stack pointer)任何定址的 register 都可被使用;因為我們所討論 stack 變大變小的方式,實際上的參數會有正的 offset,而 local variable 則會有負的 offset from FP.
當一個 procedure 被呼叫後要做的第一件事情就是儲存上一個 FP(所以當 procedure 結束後可被復原),接下來 SP 會被複製到 FP 建立一個新的 FP 並且讓 SP 保留一些空間給 localvariable 使用,這些程序稱之為 procedure prolog;當 procedure 離開後,stack 必須再次被清理,稱為 procedure epilog;Intel 的 ENTER 及 LEAVE instructions 及 Motorola 的 LINK 及 UNLINK instructions 做了大部分的 procedure prolog 及 epilog 並讓他們更有效率。

更多技術小秘訣請參考以下網頁
 http://www.geego.com.tw/tech_support/new-tips

奇科電腦 2011.05.24 Embedded C結業(Robert老師)





2011年11月10日 星期四

奇科電腦 輸入一字串及一數字(分成2列輸入),把字串重複n次輸出

#!/usr/bin/perl -w

my @in;
while(chomp($_ = )) {
push @in, $_;
last if $. >= 2;
}
print $in[0] x $in[1], "\n"; 


更多技術小秘訣請參考以下網頁
http://www.geego.com.tw/tech_support/new-tips

奇科電腦 Linux LPIC-2 課程視頻教學(2) : 磁碟陣列(RAID)好處與概念


更多課程相關資訊請參考以下網頁
http://www.geego.com.tw/edm/system_linux_lpic2_certification/index.php?v=google&c=blog&k=linux&p=system&t=lpic2_certification

奇科電腦 2011.05.30 Perl結業(Ben老師)


奇科電腦 輸入一個數字,算出圓周並輸出

#!/usr/bin/perl -w

print $_ = ($ARGV[0] && $ARGV[0] =~ /\d+/) ? 2 * 3.141592654 * $ARGV[0] : 'please give me a number.', "\n";

更多技術小秘訣請參考以下網頁
http://www.geego.com.tw/tech_support/new-tips

奇科電腦 2011.7.27 Linux LPIC-1結業(南風老師)