2013/10/28

[JAVA] Recursive 方式 撰寫 Fibonacci Sequence & Factorial Function

使用遞迴方式實現 Fibonacci 數列 和 Factorial Function 階層函數,兩個函數的內容為:

Fibonacci Sequence
  F(n) = F(n-1) + F(n-2) , n>=3
  F(n) = 1                        , n = 2 or 1
Factorial Function
  F(n) = n * (n-1) * ... * 2 * 1 = n!

[C/C++] 利用gmtime()和mktime()轉換time_t以及struct tm * 時間格式

寫程式的時候常常有機會會抓取系統的時間來做設定,不過在Linux C之中,時間設定分成幾種格式,像是time_t格式,取出來的時間為一個長整數,是自1970年1月1日0分0秒到現在的秒數,藉由ctime()函數就可以轉換成幾年幾月幾日的日期格式。而另外一個時間struct tm *則是一個結構變數,包含了

int tm_sec     秒數(0~61)
int tm_min     分鐘(0~59)
int tm_hour    小時(0~23)
int tm_mday  日期(1~31)
int tm_mon    月份(0~11,從1月算起)
int tm_year    年份(從1900年算起)
int tm_wday   星期幾(日→0、一→1、二→2、以此類推)
int tm_yday    一年中的第幾天
int tm_isdst    夏令時間旗標

2013/10/27

[C/C++] argc 和 argv 引數的應用

寫程式的時候常常可以看到main函數裡面的argc和argv這兩個變數。

int main(int argc, char **argv)
但這兩個變數有什麼應用呢?這兩個是用來傳遞參數到程式裡面。
舉例來說:

./a.out      CCC        aaa        bbb
argv[0]   argv[1]    argv[2]    argv[3], argc=4

2013/10/26

[VirtualBox] Win7&Ubuntu共享資料夾

首先在Windows端建立一個共享資料夾。
D:\\Shared_folder


2013/10/25

[VirtualBox] Samba 下 Ubuntu與Win7共享資料夾設定,利用 host-only網路

使用Samba設置Ubuntu有多種方式,像是Guest OS利用橋接方式與Host OS連結,搭配指定同網段IP的方式來做,但這樣的方式會讓所有區網內的使用者都可以連上Guest OS。只是想在Guest OS上寫寫code應該不用昭告天下吧!
所以為了達到讓Guest OS能夠上網,且同時只有Host OS可以用Samba分享透過內部網路存取Guest OS上的資料,要如何達成呢?

以下用VirtualBox下設置為例
Host OS : Win 7 64bit
Guest OS : Ubuntu 12.04.3 LTS

首先設置VirtualBox網路卡設定



2013/10/22

[OpenSSL] Linux下S/MIME範例教學

在網路的世界中,資料來來往往的傳遞,就會存在著資料是誰送來的,或者,資料安全性的問題。因此就有所謂的SSL(Secure Sockets Layer)的機制,在OSI七層架構的屬於表現層(Presentation Layer)之下的應用。

在OpenSSL的官網上可以載到最新的Library。
http://www.openssl.org/


2013/10/19

[網際網路] ARP協定

ARP(Address Resolution Protocol) ,位址解析協定,屬於OSI七層模型中,資料鏈結層(Data Link Layer)架構的協定,因為 MAC不具有階層性,無法有效尋找到目的位址,因此要透過具有階層性的 IP協定。但一個網路設備上,包括 IP位址與MAC 位址,兩者之間就存在一個對應和轉換的問題。在區域網路之下,才有 ARP協定。

主要是透過『廣播』的方式,也就是說由來源主機先送出一個 APR request『廣播位址』,只要是位於該網路的所有主機,皆會收到此要求,最後只有目的位址符合的主機便會回應該封包,並告訴來源主機,有關自己的 MAC Address。負責將網路設備的網路層 (Network Layer)IP Address 』,轉換或對應成鏈結層中的網路介面卡 (Network Interface Card,簡稱NIC) 上的實體位址『 MAC Address』之協定。

[網際網路] IP定址

IP為OSI七層協定中屬於網路層(Network Layer)的協定,一定會有疑問的是,既然電腦行動設備都具備了獨一無二的MAC位址,為什麼還需要IP協定呢?
舉例來說:雖然MAC是設備獨一無二的確認代碼,但是設備是有移動的可能性的,可能今天在家裡上網之後,隔天又去圖書館使用。因此在網路架構上就必須透過IP的協定,來分類各區域中的電腦,藉由IP定址,讓電腦可以透過區域網路(LAN)及廣域網路(WLAN)來達到上網的功能。
簡單說明,IP定址的目的,就是幫助電腦設備做區域的分類,來達到每個網路及子網路能夠連線以及上網的結果。

1.     子網路遮罩(Subnet mask):幫助子網路的切分,Net_ID為1、Host_ID為0
2.     網關(Gateway):連接兩個網路裝置,所有子網路內的電腦都會透過這台Gateway連線到不同的子網路

An office network consists of six hosts and a router is given as:
Hosts addresses:
 192.168.4.3
 192.168.4.4
 192.168.4.5
 192.168.4.6
 192.168.4.7
 192.168.4.8
Router (this side) address:
 192.168.4.1
The network has a subnet mask of:
 255.255.255.0 (/24 in CIDR notation)

2013/10/17

[網際網路] OSI七層網路模型

OSI七層網路模型,大體來說描述了整個網路架構的概念。從最底層的實體層,透過傳輸介質連線到各網路設備上;資料鏈結層則是包含了MAC定址的協定,讓每個網路設備有獨一無二的辨識碼;然後透過網路層可以分類每一個網路設備所在的區域;確定位置區域及名稱後,就可以利用傳輸層的TCP/UDP協定來建立連線;會議層決定傳輸的模式;表現層則可以做資料的加密及壓縮解壓縮等等;最上層的應用層則是在使用者介面上所開發服務的協定。

以下表格為簡單的整理內容:
功能
舉例
單位
應用層
(Application Layer)
User 操作
HTTP(Port 80), FTP(Port 21), Telnet(Port 23)…
Data/message
表現層
(Presentation Layer)
編碼與轉碼
壓縮與解壓縮
加密與解密
Secure Socket Layer(SSL)
會議層
(Session Layer)
傳輸模式 : 單工、半雙工和全雙工

傳輸層
(Transport Layer)
編定序號
流量控制
可靠性與效率性
TCP/UDP Protocol
(Port)
Segment
網路層
(Network Layer)
IP 定址
路由
Internet Protocol(IPv4, IPv6), Address Resolution Protocol(ARP)
Packet/datagram
資料鏈結層
(Data Link Layer)
介質存取控制方法
MAC 定址
錯誤檢查及更正
Ethernet Protocol(CSMA/CD), Wi-Fi, WiMAX
Frame, MAC Rate(throughput)
實體層
(Physical Layer)
傳送訊號的介質規格
訊號的編碼與轉換
Modem, ISDN
Bit, PHY Rate