2016年6月19日 星期日

Ubuntu 與 Other Linux Distros的Runlevel比較

Runlevel控制了Linux的操作模式,多工、單工、關機、重新啟動、文字或視窗模式。但Ubuntu自11.04版後,更改了Runlevel的設定方式。

Ubuntu11.04以後的版本:
設定檔:/etc/init/rc-sysinit.conf
Runlevel代碼:
0 - shutdown
1 - single user mode
2 - multiuser graphical mode
6 - reboot
修改預設模式:vi /etc/init/rc-sysinit.conf
##env DEFAULT_RUNLEVEL="Runlevel代碼"
##例如:
env DEFAULT_RUNLEVEL=2


Other Linux Distros或舊的Ubuntu OS
設定檔:/etc/inittab
Runlevel代碼:
0 - shutdown
1 - single user mode
3 - multiuser text mode
5 - multiuser graphical mode
6 - reboot
修改預設模式:vi /etc/inittab
##id:"Runlevel代碼":initdefault:
##例如:
id:5:initdefault:



兩相比較,Ubuntu11.04後的版本,不但少了文字多工模式,代碼也與傳統的有了差異,要稍注意。

參考網頁:



2016年6月17日 星期五

Linux檔案系統說明

安裝Linux時,不外乎有一堆檔案系統型態供選擇,而Linux16.04可支援的型態有ext, ext2, ext3, ext4, hpfs, iso9660, JFS, minix, msdos, ncpfs nfs, ntfs, proc, Reiserfs, smb, sysv, umsdos, vfat, XFS

目前較推荐且常用的為ext4以及XFS,它們可支援較大的檔案及儲存空間、有提供jounaling日記的功能、依舊被好好的維護著。
圖片來源:Ubuntu Document

Jounaling功能確保儲存資料時更加地可靠,Jounaling不能保證儲存時,資料一定不會損毀,但是卻可以「避免資料儲存過程發生不一致導致系統的崩壞」以及「加快檔案系統存取的速度」,當資料存取出錯時,系統將會錯誤紀錄下來並Pass過去,避免一再的錯誤讀取。

其他檔案系統型態說明:

  • hpfs:支援OS/2系統,2005停止銷售,已列為古董。
  • iso9660:光碟機檔案系統。
  • minix:支援Minix迷你版類Unix系統,現仍開發中。
  • modos:就是很傳奇很傳奇的DOS使用的檔案系統型態。
  • ncpfs:支援NCP協定的網路檔案系統,用於Novell系統。
  • nfs:網路檔案系統,透過虛擬磁碟讀取遠端電腦。
  • Proc:被預設為虛假的裝置,當我們掛載時,用以作為跟kernel溝通的介面,也就是/dev底下預設的那些資料夾名稱。
  • smb:支援smb協定的網路檔案系統。
  • sysv:an implementation of the SystemV/Coherent file system for Linux. It implements all of Xenix FS, SystemV/386 FS, and Coherent FS.
  • umsdos:Linux所使用的延伸DOS檔案系統。





參考網頁:

2016年6月13日 星期一

查看目前Apache有多少程序數

ps aux | grep apache | wc -l

ps aux => 顯示目前電腦執行的程序
wc -l => 計算有幾列
程序數的設定關乎於/etc/apache2/apache2.conf內容

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>


2016年6月10日 星期五

在E-mail標題使用UTF8字元,解決信件標題亂碼的情形

一般而言,當我們在寄信的時候,如果都採用English或是ASCII範圍的內文字寄送時,收到信件的人皆可正確地閱讀信件內容及標題。但是隨著國際化的普及,ASCII的編碼已經不能應付各國多文字的需求,於是漸漸改採用UTF-8編碼格式。

然而,寄送信件的服務,似乎沒有跟上這樣的改變,嚴格來說,各國SMTP服務預設都會採用各國的編碼,所以一旦輸入了中文的難字或特殊字、或是寄信給其他國家時,亂碼的情形就會發生。

好在,我們可以指定信件內文(body)的編碼格式,這必須輸入在信件的表頭(eamil header)中,指定的格式類似像:
Content-Type: text/plain; charset=utf-8

可是,這樣的設定並不更改標題的編碼,因為標題的編碼是獨立的,且其編碼預設為ASCII碼。好在,RFC 1342亦提供了更改的方法,只要遵照其格式以可以修正其編碼,其格式像是:
=?charset?encoding?encoded-text?=

說真的,這樣的格式還滿奇怪的,左右兩個"=",然後藉由"?"把要設定的參數隔開,倘若把這樣的東東再加到PHP程式中,鐵定有看沒有懂。
第1個參數:charset,就是要採用的編碼,當然若要字元能正常顯示,就要採用UTF-8萬國碼
第2個參數:encoding,通常我們會輸入B或Q,這樣的意義是讓信件再用Base64編碼過後傳遞,至於為何/什麼是Base64編碼,簡言之,就是將信件內容不管是文字、影像、影音、其他附加檔案等等....都經過編碼後再傳遞,收到的人自動在解碼還原。聽不懂嗎?那再換句話說就是:「採用Base64編碼技術的話,信件才能寄送文字以外的檔案格式。」
第3個參數:就是要編碼的標題文字為何?但既然第2個參數已經採用Base64編碼,那我們當然也要把輸入的中文利用php函式編碼轉換。

所以我們的寫法會像是:
=?UTF-8?B?".base64_encode('主旨')."?=

針對上面的說明,我們可以簡單的設計一個寄送信件的PHP程式

<?php
$to = " recipient@example.com “; //收件者
$subject = "=?UTF-8?B?".base64_encode(‘信件標題‘)."?=";    //信件標題,解決亂碼問題
$msg = “信件內容“; //信件內容
$header = "'From: example@example.com'."\r\n"
.'Content-Type: text/plain; charset=utf-8'."\r\n";
if(mail($to, $subject, $msg, $header)){
echo “信件已經發送成功。“;//寄信成功就會顯示的提示訊息
}else{
echo “信件發送失敗!“;//寄信失敗顯示的錯誤訊息
}
?>


參考網頁:

2016年6月4日 星期六

Win7輸入法語言列消失修復

學校有一批Win7電腦,遇到一些怪現象,像是語言列會消失不見,重新開機後有時會出現,有時不管怎麼開都還是看不到輸入法語言列,造成無法輸入中文。

另外,電腦關機後,竟然還會不斷DHCP Server送出封包要資料,Active HostName出現dash的名稱。還沒想到是怎麼造成,似乎也沒造成什麼影響,但就是覺得很討厭、很煩。

先說說輸入法語言列消失不見的問題吧,似乎被動地執行ctfmon.exe指令就可以解決。


但是要老師手動輸入ctfmon.exe,有時也顯得麻煩,且偶爾仍舊會發生輸入法語言列無法出現的情形,那就要改是第二種方法,直接寫入Regedit登錄碼,讓電腦開機就直接開啟輸入法語言列。

1.點選開始功能表,在「開始搜尋」的輸入框中輸入"regedit"並執行,找到以下編碼:
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"

在右邊欄位點選右鍵新增字串值"ctfmon",並且修改這個字串值的數值資料為 "C:\Windows\system32\ctfmon.exe",關閉後重新啟動電腦或重新登入,語言列就會正常出現了。




在Blogger上顯示Code碼區塊

為了讓自己的Blogger可以顯示程式碼以方便閱讀及複製,可以在範本中增加CSS的樣式
操左步驟如下
「範本」→「自訂」→「進階」→「新增CSS」→貼上CODE碼→套用至網誌



以下就是要貼上的內容
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; line-height: 1.2em; }


再來剩下最後一哩路,那就是怎麼使用了,其實也很簡單,凡是遇到要輸入程式碼的時候
,請切換到HTML模式下,在頭尾的地方分別加上<CODE>及</CODE>,把程式碼包起來即可。


顯示結果如下
參考網頁: