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>,把程式碼包起來即可。


顯示結果如下
參考網頁:

2016年5月31日 星期二

在Ubuntu下建立RAMdisk,以加快網頁讀取速度

RAM的中文名稱叫做隨機存取記憶體,俗稱記憶體,有著存取速度快速,當電腦重新開機後記憶體內資料清空的特性。根據這樣的特性,RAMDisk的技術就是把記憶體儲存空間,拿來做硬碟空間使用。(換句話說:本來應該存在電腦硬碟上的資料,卻改存在記憶體中)。 優點當然是:運算速度飛快。
缺點則是:
1.必須使用64位元的OS,才能使用超過4G的記憶體
2.因為是拿記憶體空間作為儲存用,重新開機或電腦當機的話,資料就會消失不見,所以如果只是為了體驗高速的快感,拿來玩玩即可,但千萬不可以儲存重要資料。
3.記憶體品質不佳時,則有可能會發生資料缺漏或儲存錯誤的狀況。(推薦使用ECC記憶體教完穩定)

針對以上的認知與了解後,接下來的實例是在一台提供Apache以及PHP服務的機器上所做的規劃。
當瀏覽者連線讀取我們的伺服器時,會在伺服器端生成Session資料以記錄瀏覽者的私密資料,而這些Session資料預設狀態下是儲存在硬碟空間,但倘使該伺服器的使用者很多時,多少會有Session交換不及的情形,所以我們的做法是把Session改存到記憶體中,反正如果伺服器重新開機或當機,Session本來就應該被清空。

作法:
1.首先,我們先建立Ramdisk的實體路徑,譬如在home底下建立ramdisk資料夾
mkdir /home/ramdisk

2.修改fstab配置,讓/home/ramdisk配置在記憶體而不是硬碟,重要的關鍵字就是「tmpfs」,size大小可以隨自己需求編配,gid=33、uid=33則是Ubuntu系統預設的Apache群組與使用者。
vi /etc/fstab
tmpfs /home/ramdisk tmpfs size=64m,gid=33,uid=33,mode=1755,noexec 0 0

3.再來就是指定session儲存路徑,把他只到我們剛剛設定的RAMDisk路徑
vi /etc/php5/apache2/php.ini
session.save_path = "/home/ramdisk"
4.重啟Apache,php.ini的設定值才會生效
service apache2 restart

5.重啟機器,fstab的設定才會生效


此外,因為我們的伺服器幾乎不關機的,所以Session雖然被寫入到/home/ramdisk,但是卻有可能不會被清除掉,所以我們也可以寫一段script,然後設定排程,定期清除session資料


1.script內容為

#!/bin/bash
/bin/umount
/home/ramdisk/bin/mount
/home/ramdisk

2.設定每天凌晨清除session資料

輸入crontab -e
00 3 * * * /root/ram_mm.txt > /dev/null

啊~會不會有人在凌晨3點讀取我的伺服器卻被踢出呢?嗯~沒錯是有可能,但是這麼晚了應該趕快去睡覺,而不是守在電腦前吧~~科科


參考網頁:

安裝Ubuntu16.04 server中文版,出現無法安裝busybox-initramfs的錯誤

安裝Ubuntu16.04 server中文版的過程中,會跳出『無法安裝busybox-initramfs』的錯誤訊息。


有兩個解決辦法:
方法一:是安裝的過程中選用English進行安裝。

但若不想安裝英文版,執意要安裝中文版時,就得按以下方法處理
方法二:
1.是安裝過程中選定中文語系後,按Ctrl + Alt + F2 進入tty2終端機模式

2.然後輸入以下的訊息,排除鎖定的檔案
while true; do rm /var/run/chroot-setup.lock; sleep 1; done

3.執行上述指令後,不用管畫面顯示或持續回應的訊息,再切回Ctrl + Alt + F1 ,繼續進行系統安裝,就不會再出現錯誤訊息了。


參考網頁:



2016年4月27日 星期三

ZyXEL WAC6103D-I 的DCS動態頻道選擇功能

把縣府配發的ZyXEL Reset後,會發現2.4G 的channel預設為6、5G的Channel預設為36,若校內沒有其他太多的AP的話,是沒什麼差別;反之,則會造成頻道互相干擾,甚至連不上無線網路的情況。

建議的方式,可以手動將鄰近AP的頻道區隔開來。
但是這樣的方式仍舊很難避免學校附近的住家的AP頻道干擾,所以偷懶一點的方式,則可以利用
ZyXEL WAC6103D-I的DCS (Dynamic Channel Selection) 動態頻道選擇的功能,讓智慧的AP,智慧的偵測自動錯開頻道。



設定完2.4G後改設定5G的頻道