最近在研究程式設計的測試部份,總結一下我目前對測試的看法,
因此如果覺得測試是狗屁的,可以跳過不看這篇文章;
而如果想要了解更多測試的知識,可以參考一下:
2015/12/28
2015/10/3
Linux基礎概念(Linux Basic Concept)
一、Linux 核心(Kernel)
Shell/KDE/Application <-> Kernel <-> Hardware
從技術上說Linux只是一個內核。
「內核」指的是一個提供硬體抽象層、磁碟及檔案系統控制、多工等功能的系統軟體。
一個內核並不是一套完整的作業系統。
有一套基於Linux內核的完整作業系統叫作Linux作業系統
Ref:
PS:
沒有永遠不會當機的系統:
只有Windows會藍屏嗎?不
我們偉大的MAC(UNIX),有四國語言的當機畫面,
而LINUX則是有內核錯誤(Kernel panic)。
二、Linux檔案系統(File System)
Windows有所謂的FAT16、FAT32、NTFS,當然LINUX也不例外,
LINUX從一開始的EXT2->EXT3演進到目前的主流EXT4,
以及一些更加先進的FileSystem如:ZFS、XFS、BTRFS等等,
也如同Windows一樣,你可以自行更換FileSystem,只是是比較大的工程,
如果有興趣的話,可以參考其他的相關資料進行研究。
Ref:
http://linux.vbird.org/linux_basic/0230filesystem.php#harddisk
Linux 檔案格式 ext2 ext3 ext4 比較
三、Linux目錄結構(Filesystem Hierarchy Standard, FHS)
Linux的目錄基本上是根據Filesystem Hierarchy Standard (FHS)制定的,
有興趣的可以去研究一下,基本上有幾個比較重要的路徑要記得:
a. 根目錄( / )
b. /etc 放設定檔
c. /opt 放第三方協力軟體又或是自己Compile的資料夾
d. /usr 放原生軟體相關的東西
e. /var 放與系統運作有關的東西
f. /home 放各個使用者家目錄的地方,除了root的家目錄之外
g. /root root的家目錄
h. /usr/bin 通常會把自己寫的Script放在這裡
i. /var/log/ 紀錄許多重要的log
j. /var/mail/ 個人的email目錄
Ref:
http://linux.vbird.org/linux_basic/0210filepermission.php#dir
四、絕對路徑與相對路徑(Relative Path vs Absolute Path)
絕對路徑:由根目錄(/)開始寫起的檔名或目錄名稱, 例如 /home/dmtsai/.bashrc;
相對路徑:相對於目前路徑的檔名寫法。
例如 ./home/dmtsai 或 ../../home/dmtsai/ ,又或是~/test等等。
反正開頭不是 / 就屬於相對路徑的寫法
Ref:
http://linux.vbird.org/linux_basic/0210filepermission.php#dir
五、Linux檔案權限管理(Linux ACL ( Access Control List ) )
用ls -l指令時,我們可以看到類似於下面的權限表,可以分別看成六個區塊:
- rwx rwx rwx root root
1 2 3 4 5 6
1.如果是檔案,顯示「-」;如果是目錄,顯示「d」;如果是軟連結,顯示「l」
2.擁有者的權限
3.擁有群組的權限
4.其他人的權限
5.own-user 擁有者
6.own-group 擁有的群組
r-Read,表示是否可以讀取, w-Write,表示是否可以寫入, x-Excute,表示是否可以執行
而一組權限(rwx),我們可以分別將
x視為2的0次方(1),w視為2的1次方(2),r視為2的2次方(4),
則如果權限全開的時候就是4+2+1=7。大家可以思考一下,權限5是怎樣的權限?
六、Shell
Shell就是我們利用指令跟Kernel溝通的一種文字介面,
就跟我們使用Windows的GUI圖形介面來設定和使用是一樣的,只是改成全部用指令完成。
Shell可以分成這幾種:
/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 預設的 shell)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
其中最常用也是目前Linux大部份預設的是bash(Bourne-Again SHell),基本上只要會用這個就OK了
Linux vs Windows
一、What is Linux?
毫無反應,就是一隻企鵝(誤好,不開玩笑了,其實Linux是根據是一種自由和開放原始碼的類UNIX作業系統。
而UNIX也是一種電腦作業系統,具有多工、多用戶的特徵。
像是FeeeBSD、MAC都是UNIX系統的代表。(UNIX = FreeBSD、MAC)
二、POSIX
說到Linux,一定要提到相關的POSIX,而POSIX = UNIX + LINUX,
想要了解更多的可以去看一下維基百科。
POSIX Ref:https://zh.wikipedia.org/wiki/POSIX
三、Linux Family
Linux家族的家族樹(Family Tree):
1.Debian家族(Debian, Ubuntu(桌面使用者較多), Linux Mint)
2.Fedora家族(
Fedora(最多新功能、RedHat的測試實驗所),
RedHat Enterprise Linux,
CentOS(模仿RedHat Enterprise Linux所做出來的版本,相對較穩定))
3.OpenSUSE
PS: 在各個Linux版本當中,有些時候我們會發現有所謂的LTS版本,
LTS就是所謂的LongTerm Service版本,該版本會提供比一般正式版本更長的後續維護,
像是臭蟲的修正以及其他更新等等的,
如果有要建立一個較正式的服務時應優先考慮LTS版本。
Linux Ref: https://zh.wikipedia.org/wiki/Linux
四、Everything is File. vs Registry.
在Linux當中,一切東西都可以看成檔案,
只有檔案權限的差別以及是否是目錄、可否執行之類的,詳細的可以參考:
https://en.wikipedia.org/wiki/Everything_is_a_file
在Windows當中,許多的設定值為了統一管理,所以是放在Registry當中,
Registry是使用DB-Based存放相關設定,
而其實Windows一開始也是使用File-Based來進行管理,像是「WIN.INI」、「SYSTEM.INI」
就是舊時代留下來的檔案。
Registry缺點:
1 所有設定集中,可能有些東西不需一啟動就載入,系統變慢
2 使用者還是可能意外修改到
Ref:
http://www.ithome.com.tw/node/59748
五、User Is Genius. vs User Is Ordinary People.
Linux當中,會認為使用者都不是一般人,而是對系統有了解,想要更多自訂性可以讓其自行設定;
Windows則是認為很多使用者都只是一般人,所以做了許多通用的預設值,可自訂的部份較少,
而且就如同之前所說的,甚至有些設定要去Registry才可以修改到,有著相當的危險性。
六、Linux, the Most Safe OS ever?
很多人誤解Linux是世界上最安全的系統,而Windows則是最容易被入侵的系統,
但這其實是一個錯誤的印象,
真實的狀況是,因為Linux需要進行很多的設定,而如果設定不當或是根本沒有設定,
那麼Linux反而會是更加不安全的。
而Windows則是因為久病成良醫,對於現在許多的病毒他反而更容易處理,
因此,我們要使用Linux時,一定要好好的學習如何進行設定才行!
2015/9/13
CentOS 7 最小安裝後在VirtualBox的網路設定筆記
如題,大家也可以參考這些網誌的內容來進行設定:
http://www.unixarena.com/2015/04/rhel-7-network-management-nmcli-or-nmtui.html
http://www.arthurtoday.com/2013/07/ubuntu-guest-enables-nat-and-hostonly-adapter.html
首先,先說明一下Virtualbox如果只是要讓VM可以連到外部網路,而不需要連線到實體本機的話,那麼直接用他預設的NAT就可以達成了;
而如果是只要讓VM連到實體本機,不讓VM連到外網的話,則是可以使用「僅限主機」介面卡達成。
而一般如果要讓VM跟實體機都在同網段的話,那麼應該要選擇「橋接介面卡」,那麼如果有DHCP Server的話(一般而言,應該就是無線基地台、IP分享器),那麼就可以在同網段,你可以跟你的VM互通,也可以讓他連線到外部網路,就跟你的實體本機一樣。
因此,如果你想要達成讓VM跟實體機可以互連的話,「橋接介面卡」就是一種方法,另一種方法是讓VM有兩張網路介面卡,一張是NAT,另一張則是「僅限主機」介面卡,設定好兩張介面卡後,那麼VM也就可以連內也可以連外,只是嚴格說起來,他跟實體本機並不是在同一個LAN上面就是了。
下面的例子,是使用第二種方式,也就是NAT+僅限主機介面卡來進行設定教學,我會先教如何進行Virtualbox開虛擬機的設定,再教說如何在CentOS 7 進行相關的設定,那麼就讓我們開始吧!
http://www.unixarena.com/2015/04/rhel-7-network-management-nmcli-or-nmtui.html
http://www.arthurtoday.com/2013/07/ubuntu-guest-enables-nat-and-hostonly-adapter.html
首先,先說明一下Virtualbox如果只是要讓VM可以連到外部網路,而不需要連線到實體本機的話,那麼直接用他預設的NAT就可以達成了;
而如果是只要讓VM連到實體本機,不讓VM連到外網的話,則是可以使用「僅限主機」介面卡達成。
而一般如果要讓VM跟實體機都在同網段的話,那麼應該要選擇「橋接介面卡」,那麼如果有DHCP Server的話(一般而言,應該就是無線基地台、IP分享器),那麼就可以在同網段,你可以跟你的VM互通,也可以讓他連線到外部網路,就跟你的實體本機一樣。
因此,如果你想要達成讓VM跟實體機可以互連的話,「橋接介面卡」就是一種方法,另一種方法是讓VM有兩張網路介面卡,一張是NAT,另一張則是「僅限主機」介面卡,設定好兩張介面卡後,那麼VM也就可以連內也可以連外,只是嚴格說起來,他跟實體本機並不是在同一個LAN上面就是了。
下面的例子,是使用第二種方式,也就是NAT+僅限主機介面卡來進行設定教學,我會先教如何進行Virtualbox開虛擬機的設定,再教說如何在CentOS 7 進行相關的設定,那麼就讓我們開始吧!
Cloud9 Java Runner建立
今天來跟大家介紹一下Cloud9的Java Runner要如何建立,大家也可以直接參考Cloud9還有Stackoverflow的教學:https://docs.c9.io/v1.0/docs/custom-runners
http://stackoverflow.com/questions/28196434/setting-up-cloud9-ide-to-compile-and-run-java
http://stackoverflow.com/questions/28196434/setting-up-cloud9-ide-to-compile-and-run-java
2015/9/6
Koding環境設定筆記
先說明一下,在Koding環境當中,有一個Koding Package Manger ( kpm ) 的程式包管理員存在,如果在下面的教學中,有kpm的話會在最上方,用kpm的方式安裝後,就不用再按照下方的分解步驟安裝了,不過如果想要練功夫的話,倒是可以先用分解步驟安裝。
介紹幾個比較常見的雲端IDE(Cloud IDE)
今天我來跟各位介紹幾個比較常見的雲端IDE,因為目前雲端IDE愈來愈多了,這邊以我認為開發Java的方便度以及根據Slant上面的評分( What is the best cloud IDE? - Slant ),選出前幾名來介紹:
訂閱:
文章 (Atom)