2007/02/20

[Google] 用 Gmail 寄信

靠,用 gmail 寄信有什麼了不起?

嘿嘿,我說的可是利用 php 裡面的 libcurl 方式,把資料傳到 gmail 去,讓 gmail 當你的 smtp 呢!

這裡下載 libgmailer

以下是範例程式:


require("libgmailer.php");
$gmail_acc = "帳號@gmail.com";
$gmail_pwd = "密碼";
$my_timezone = "GMT +08:00";
$gmailer = new GMailer();
if ($gmailer->created) {
$gmailer->setLoginInfo($gmail_acc, $gmail_pwd, $my_timezone);
// $gmailer->setProxy("proxy.company.com");
if ($gmailer->connect()) {
// GMailer connected to Gmail successfully.
// Do something with it.
$to = "收件人@gmail.com";
$subj = "主題";
$body = "測試";

$gmailer->send($to, $subj, $body, $cc="", $bcc="", $mid="", $tid="", $files=0, $draft=false, $orig_df="", $is_html=0, $from="", $attachments = array());
} else {
die("Fail to connect because: ".$gmailer->lastActionStatus()."\n");
}
} else {
die("Failed to create GMailer because: ".$gmailer->lastActionStatus()."\n");
}

[Gnome] 新版測試

蠻好玩的一件事:

我想去找找 2.17 的 Feature List ,結果找到 "2.18" 的 Feature List

覺得有點怪嗎? 上面的 link 是寫 "TwoPointSeventeen" 2.17

在前一頁有說明道:
GNOME 2.17.x is an unstable development series intended for testing and hacking purposes. GNOME uses odd minor version numbers to indicate development status, so this unstable 2.17.x series will eventually become the official 2.18 stable release.


2.17.x 是不穩定的發展測試版本。 GNOME 用奇數的版本號碼來代表發展狀態。所以 2.17.x 的版本未來會變成官方的 2.18 穩定版本。

嗯,就是這樣,所以頁面雖然寫的是 2.17 不過實際上會發布的,還是 2.18。
參考: 2.17 目前開發中的截圖

[Linux] Linux 上的病毒


早上起床看到 google news 寄給我的快訊,其中一篇是 "作業系統安全之如付對抗Linux系統病毒 ??這是在寫什麼啊?

作者的中文程度讓我先起了點疑惑,難不成他是想說「作業系統安全之如何 Linux系統病毒」??

好吧,一篇好的文章應該不會在乎這一點點筆誤,所以我就直接點進去看了。

相對於Windows系統而言,Linux穩定、成本低廉,而且非常安全。如果不是超級用戶,惡意感染系統文件的程式很難得逞,也很少發現病毒在Linux上傳播。但這並不是說Linux就真的無懈可擊了。

如今,越來越多的伺服器、工作站和個人電腦開始使用Linux,電腦病毒製造者也開始攻擊這一系統。儘管我們所熟知的威力強大的電腦病毒並不會損壞Linux伺服器,但卻可能傳播給和它接觸的裝有Windows系統的電腦。在實際工作中病毒經常棲息于linux系統中,雖然不會對該系統造成什麼危害,但是卻可以充當windows系統病毒的司令部,使查殺網路中windows系統病毒成為一件非常困難的事情。


呃... 如果這樣也算 Linux 的病毒的話,那還有什麼不能算是 Linux 的病毒的?
因為任何病毒一定可以存放在儲存裝置裡面,如果別的平台的病毒放在 Linux 裡面,也算成 Linux 的弱點的話,那未免笑死人..

一、Linux平台下病毒種類

目前來看,Linux平台下的病毒主要分為以下4大類:

(1)可執行文件型病毒,指能夠寄生在文件中的以文件為主要感染對象的病毒。

(2)蠕蟲(worm)病毒,Linux平台下的蠕蟲病毒極為猖獗,像利用系統漏洞進行傳播的ramen、 lion、 Slapper等,這些病毒都感染了大量的Linux系統,造成了巨大的損失。

(3)腳本病毒,多為使用shell腳本語言編寫的病毒,這類病毒編寫較為簡單,但破壞力卻同樣驚人,像以.sh結尾的腳本文件,一個短短數十行的shell腳本就可以在短時間內感染硬盤中所有的腳本文件。

(4)後門程式,從增加系統超級用戶帳號的簡單後門,到利用系統服務載入、共用庫文件注射、rootkit工具包,甚至可以裝載內核模組(LKM)而產生的後門,Linux平台下的後門技術發展非常成熟,隱蔽性強,難以清除,已經成為 Linux系統管理員極為頭疼的問題。


從第一點我就有意見了...
在 Linux 上面所謂的「可執行文件」實在很難定義:
chmod +x filename 就算「可執行」了嗎?
第二點 是 case by case 的,就先跳過。
第三點 基本上需要 root 權限才有破壞力,那 root 權那裡來的呢? 在 Linux 上面如具有 root 權,就代表整個系統淪陷,大部份的人在拿到 root 權之後,並不做這種大舉入侵的動作,而是傾向安安靜靜的搞跳板之類的事情,也輪不到這種「蠕蟲」病毒。
另外 Linux 的版本 (distro) 太多,所以要設計一個可以應用到各式版本上面的蠕蟲比找出這個漏洞還困難,這也是 Linux 上的病毒之所以很少也很難設計的原因。 (太麻煩了咩)
第四點 原因同上面。但是也因為 Linux 上面監看程式很多,加上定期更新有做到的話,這種問題根本輪不到你操心。

section 三跟四應該是重複寫了。

在賽迪網上面這種似是而非的文章還蠻多的。不知道是不是抄太多了,所以很多東西連檢查都懶得檢查了。

2007/02/18

[Linux] OpenOffice 的直排

Linux Toy 上面 16 號有一篇文章提到 OpenOffice 的直排的用法:


  1. 啟動 Writer,它會自動創建一個新的文檔。
  2. 點選 Format -> Page 菜單命令,在打開的窗口中切換到 Page 選項設置頁面。在 Writer 中要讓文字豎排,起著關鍵作用的選項就是 Text direction。默認情況下,Text direction 被設置為 Left-to-right (horizontal),這樣在 Writer 中就是橫向排列文字,且方向為從左到右。如果要從右至左豎排文字,只需將其設置為 Right-to-left (vertical) 即可,如下圖所示。

    設置好了之後,在 Writer 中輸入文字內容,其效果如下:





感覺還不錯用嗎? 來下載 OpenOffice 使用吧?

[蝦米] 表格製作工作



我在樂多日誌那裡放了檔案,可以下載上次提到的「輸入法表格製作工具」。
這個構想其實是李果正 (LGJ) 提給我的,後來開始為了嘸蝦米輸入法的表格,開始動作。

目前這個表格的部份靠著果正兄的三萬字加上這個月的閒暇時間來作業,如今剛完成了常用字的部份 ( 19968~40895 )。

不過如同上面截圖所示,在 extB 的工作比想像中的困難。字多(四萬)還不是問題,時間夠長就可以解完。但是「不知道怎麼拆字」就成了最大的麻煩。

另外在常用字的部份,也還有很多字需要再重新檢查。

不知道何年何月做得完。

2007/02/14

[Linux] 輸入法表格製作工具 [1]

下載:

newim.tgz

1. 本程式請依 GPL 規範使用,條文內容附載於 doc/license.txt
2. 安裝請依下例步驟:

a. 下載 newim.tgz

b. tar zxvf newim.tgz

c. vi inc/db_connect.inc 填入 mysql 的 host,user,pass

d. vi inc/password.inc 填入未來登入使用的 id/pass

e. cin2db_a.php xxx.cin 匯入第一個表格

f. cin2db_b.php xxx.cin 匯入第二個表格

g. 在瀏覽器填入 http://xxxx/newim

h. 登入,並開始新增字碼表。

i. 下載表格: http://xxxx/output_cin.php

3. 作者: Anton Yu 就是我啦.... (= =;)
附註:

本工具目前使用的 cin table 僅供 scim 使用。

未來計畫將可提供其它輸入法使用。

2007/02/13

[Blogger] 引言跟原始碼的部份

雖然這部份看我的 css 就知道了,不過我還是說明一下:

blogger 的引言是用 blockquote 標籤包起來的,所以在 css 裡面可以加以規範成你想要的樣式。
以下是我的樣式:

blockquote {
display: block;
padding: 0 10px;
background-color: #e5e5e5;
border: 2px solid #ffffff;
}

blockquote:before, blockquote:after {
color: #69c;
display: block;
font-size: 600%;
width: 50px;
}

blockquote:before {
content: open-quote;
font-family: AR PL New Sung, 標楷體;
height: 0;
margin-top: 0px;
margin-left: -95px;
}
blockquote:after {
content: close-quote;
font-family: AR PL New Sung, 標楷體;
height: 50px;
margin-top: 10px;
margin-left: 100%;
}


另外,原始碼的部份我是很早以前就參考別人網站的 css ,因為時間久遠,所以有點忘記了,麻煩如果有人記得再通知我改正一下:


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;
}

[生活] 口罩戴那一面?


最近又感冒了,感冒期間,深怕家人跟著被感染,還是學著戴一下口罩以免四處害人。

結果問題來了:「口罩該戴那一面啊?」

還好有 google 可以查: 網路追追追

上面很清楚的寫道:

網路上關於口罩怎麼戴的信件有二,第一個是活性碳口罩,一位讀者投書報紙,認為電視上示戴黑色朝外,白色朝內的戴法是錯的。我們找到疾病管制局的網頁,上面並沒有說明那個顏色該朝外,只說明應該把帶子頭露出的那一面朝外,如果以市售的一般活性碳口罩來說,那就是白色朝外囉?先別急,還有下文。


下文是什麼?

原來,白色朝外的原因就是為了要防水,怕人家的口水噴到你啦,所以是「防水」的那邊朝外。這是最重要的理由。其它的都只是附加的啦。

2007/02/09

[Linux] flawfinder and splint

這裡有提到一個在 Linux 上面幫你檢查程式碼的工具。

嘿嘿,這個工具顯然對我這種肉腳有很大的幫助。

在軟件開發過程中,我們可以利用源碼檢查工具來找出常見的編程錯誤以及安全漏洞。這些工具用起來並不複雜,下面介紹splint和flawfinder這兩款源碼檢查工具的使用方法。

splint是一款靜態源代碼檢查工具,能對源代碼進行全面的分析。對於沒有註釋的源代碼,可以使用-weak選項:

splint -weak *.c -I./inc

其中,./inc是頭文件所在的子目錄。此外,Splint還支持標準檢查模式(選項-standard),若要進行中等強度檢查則使用選項-checks,若使用選項-strict則進行最嚴格的檢查。

flawfinder也是一款用來尋找源代碼錯誤的靜態分析工具。通過該工具提供錯誤消息,開發人員可以更快的找到錯誤所在。請看下面的例子:

$ flawfinder test.c
test.c:11: [2] (buffer) char:
Statically-sized arrays can be overflowed. Perform bounds
checking, use functions that limit length, or ensure that
the size is larger than the maximum possible length.
$

本例中,flawfinder給出了一個提示,指出靜態尺寸的數組可能被惡意利用的潛在危險。

2007/02/08

[Linux] 中文字型缺字



中文字型的問題,在 Linux 上面因為近年來 Linux 開放源碼運動的關係,許多開放源碼的朋友的成果,得以由此造福大眾。不得不說開放源碼在資訊普及上面的確有著顯著的效果。

讓許多人可以不用花錢就享受到一樣高品質的網路資源。

o.s: 在說什麼啊... 總之就是,我的中文不缺字了~ 耶
上篇寫完新增字型只給 root 用,忘了給一般使用者權限,所以我的字型統統沒有出來~
耍了一整天的笨~

[Linux] 光用 Bash 抓網頁

黑糖的文章

應用1 - 簡單的顯示完整 HTTP Message

  $ exec 5<> /dev/tcp/outian.net/80
  $ printf "GET / HTTP/1.0\n\n" >& 5
  $ cat <& 5

[Linux] 中文字型缺字

最近在追加嘸蝦米的表格,發生一些字元秀不出來的情況。

碰巧 ptt 的 Liu 版在討論字型的問題,有人提供了連結:
這裡下載字型

95.1.2版 27,484字 新增CNS11643第三字面原美國與香港所使用之國際用字
247字。
95.1.2版 16,830字 新增CNS11643第三字面原美國與香港所使用之國際用字
247字


去下載下來用,雖然不是 GPL 的 license ,不過還是對於我的工作很好用的。

現在可以很順利的在 Linux 底下打出「忈」「奣」等字,也「嫑」擔心會秀出怪怪的字碼。

2007/02/06

[Linux] 專門記錄系統使用情況的工具: acct

今天介紹一個專門記錄系統使用情況的工具: acct

原介紹網址在這裡:賽迪網

一些異常用戶試圖移去系統上的所有活動記錄(比如 ~/.bash_history), 不過我們可以使用專門的工具來監視所有用戶執行的命令。推薦你使用進程記帳來記錄用戶的活動, 你可以通過進程記帳查看每一個用戶執行的命令, 包括CPU時間和記憶體佔用。

Psacct程式提供了幾個進程活動監視工具: ac, lastcomm, accton和sa。

◆ac命令顯示用戶連接時間的統計。

◆lastcomm命令顯示系統執行的命令。

◆accton命令用於打開或關閉進程記帳功能。

◆sa命令統計系統進程記帳的情況。


在我的 Ubuntu 上面安裝這個工具很簡單,只要做

apt-get install acct

就夠了。

2007/02/01

[筆記] php.ini 的配置說明

原始出處是這裡: http://leexuan.blogbus.com/logs/2367737.html
我有再修過兩岸一些用語上的不同。

php.ini 或 php3.ini 是 PHP 在啟動時會讀取的配置文件。該文件的存放路徑為 /usr/local/lib/。在 PHP 3.x 版的配置文件為 php3.ini;而在 PHP 4.x 版改為 php.ini。若 PHP 安裝成服務器的模組,則在 Web 服務器啟動執行時會讀取,之後就不再讀取,因此改動配置的話要重新啟動 Web 服務器。若使用獨立 PHP CGI 方式,則每次都讀一次。

要看目前的系統配置,可以用phpinfo()看到。以下為選項配置

php_value name value
配置變數名稱和值。本選項需 PHP 4.x 版之後才能使用。

php_flag name on|off
配置標誌布林變數選項。本選項需 PHP 4.x 版之後才能使用。

php_admin_value name value
配置 Apache 的配置文件變數。原來在 .htaccess 的配置改到這個選項配置。本選項需 PHP 4.x 版之後才能使用。

php_admin_flag name on|off
配置布林變數當標誌。本選項需 PHP 4.x 版之後才能使用。

asp_tags boolean
配置 PHP 程序是否解析以 ASP Script 語法 <% %> 的標記 (tag)。本選項在 PHP 3.0.4 之後才可使用。更多的細節可以參考>嵌入方法的部份。

auto_append_file string
配置本選項可以讓指定的文件附加在原 PHP 程序後面自動執行。若 PHP 程序中有用到 exit() 函數,則指定的文件不會執行。參數 string 即為指定自動執行的文件。

auto_prepend_file string
配置本選項可以讓指定的文件在原 PHP 程序之前自動執行。參數 string 即為指定自動執行的文件。

cgi_ext string
本選項配置 CGI 程序的擴展名。

display_errors boolean
本選項配置是否要將執行的錯誤信息顯示在用戶的瀏覽器上。

doc_root string
配置服務器的文件及 PHP 文件放置的根目錄。

engine boolean
本選項需要使用apache的模組方式使用 PHP。可配置是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可配置某目錄或某虛擬網站是否要用 PHP 解析器。

error_log string
本選項用來配置錯誤記錄文件。在 UNIX 系統上參數 string 即為文件名。Windows NT 會將記錄記在事件檢視器的日誌之中。Windows 95/98 則不支持系統記錄。

error_reporting integer
本選項用來配置系統記錄的等級。參數 integer 即為等級的級數標誌,可以加在一起,預設值為 7,見下表
級數 說明
1 一般的錯誤
2 一般的警告
4 解析錯誤
8 非關鍵的警告

open_basedir string
本選項用來配置提供 PHP 存取的最底層目錄。從該指定目錄之下的文件或目錄,PHP 程序才能存取。使用本選項主要是為了系統安全性的考慮。參數 string 即為要限制的最底層目錄節點。值得注意的是在 UNIX 系統中,若該節點之下的文件或目錄有符號鏈結 (symbolic link),則可能會讓使用本選項的目的打折,因此在目錄的設計上考慮,也是 Webmaster 的重要任務。預設值是所有文件均可存取。在 PHP 3.0.7 版之後,可以配置多個底層目錄。

gpc_order string
配置 GET/POST/COOKIE 三種模組的順序及規則。參數 string 即為要配置的規則,例如:配置成 "GP" 表示忽視 cookie,並在存取方法 (method) 相同時,以 POST 取代 GET。

ignore_user_abort string
預設值為 Off。用來配置當傳輸未完成時,用戶端斷線是要繼續處理。

include_path string
為 PHP 程序中 require、include 及 fopen_with_path 等函數的文件搜尋路徑。在 UNIX 或 Windows 中的斜線方向不同。

log_errors boolean
指定程序錯誤時是否要記錄在 log 文件中。

magic_quotes_gpc boolean
配置 GET/POST/COOKIE 三種模組的特殊字符,包含單引號、雙引號、反斜線、及空字符 (NUL) 是否要自動加入反斜線當溢出字符。

magic_quotes_runtime boolean
配置返回資料是否自動加入反斜線當溢出字符。

magic_quotes_sybase boolean
配置 sybase 資料中單引號要自動加上反斜線當溢出字符。

max_execution_time integer
配置程序最久執行時間。單位是秒。

memory_limit integer
配置程序最多使用多少內存。

short_open_tag boolean
配置是否使用短的 PHP 標記 ()。若不使用,則必須要用
track_errors boolean
打開本選項可使最後的錯誤信息跟著全局變數 $php_errormsg。

track_vars boolean
打開本選項可讓用戶輸入的字串自動解析到變數之中,而不用自己處理。

upload_tmp_dir string
指定上傳文件臨時路徑。

user_dir string
指定用戶根目錄的路徑。

warn_plus_overloading boolean
若打開本選項,字串間就只能用英文的句號 (.) 鏈接,而不能用加號 (+) 鏈接字串。

SMTP string
在 Windows 系列操作系統中,用來指定 SMTP 服務器,供 mail 函數使用。參數 string 為 SMTP 服務器名字。

sendmail_from string
配置 "From: " 字串供 Windows 系列操作系統使用 mail 函數。

sendmail_path string
配置 sendmail 程序的放置路徑。例如 /usr/sbin/sendmail。

safe_mode boolean
配置 PHP 在安全模式下執行。

safe_mode_exec_dir string
配置安全模式程序執行的路徑。

debugger.host string
指定遠端調試的服務器名稱,可以是 IP 或 Domain Name。

debugger.port string
配置遠端調試服務器的端口 (port)。

debugger.enabled boolean
配置是否可以為調試模式。

enable_dl boolean
本選項要使用apache模組 (Apache module) 的方式才有效。用來配置 PHP 的函數可否作用。當系統處於安全模式 (safe-mode) 時,本選項 enable 也無法使用 dl() 函數。

extension_dir string
配置動態函數的路徑。

extension string
PHP 啟動時所要載入的動態擴充功能。

mysql.allow_persistent boolean
配置是否允許 MySQL 數據庫持續連接 (persistent connections),會影響函數。

mysql.max_persistent integer
配置每個處理程序最多保持幾個 MySQL 持續連接。

mysql.max_links integer
配置每個處理程序最多開幾個 MySQL 連接,包括持續連接。

msql.allow_persistent boolean
配置是否允許 mSQL 數據庫持續連接 (persistent connections),會影響函數。

msql.max_persistent integer
配置每個處理程序最多保持幾個 mSQL 持續連接。

msql.max_links integer
配置每個處理程序最多開幾個 mSQL 連接,包括持續連接。

pgsql.allow_persistent boolean
配置是否允許 Postgres 數據庫持續連接 (persistent connections),會影響函數。

pgsql.max_persistent integer
配置每個處理程序最多保持幾個 Postgres 持續連接。

pgsql.max_links integer
配置每個處理程序最多開幾個 Postgres 連接,包括持續連接。

sybase.allow_persistent boolean
配置是否允許 Sybase 數據庫持續連接 (persistent connections),會影響函數。

sybase.max_persistent integer
配置每個處理程序最多保持幾個 Sybase 持續連接。

sybase.max_links integer
配置每個處理程序最多開幾個 Sybase 連接,包括持續連接。

sybct.allow_persistent boolean
配置是否允許 Sybase-CT 數據庫持續連接 (persistent connections),預設值是打開的。

sybct.max_persistent integer
配置每個處理程序最多保持幾個 Sybase-CT 持續連接。預設值為 -1 表示無限制。

sybct.max_links integer
配置每個處理程序最多開幾個 Sybase-CT 連接,包括持續連接。預設值為 -1,表示沒有限制。

sybct.min_server_severity integer
配置 Sybase-CT 服務器錯誤報告的最少筆數。預設值為 10。

sybct.min_client_severity integer
配置 Sybase-CT 客戶端錯誤報告的最少筆數。預設值為 10。

sybct.login_timeout integer
配置 Sybase-CT 最久可以使用的登入時間。預設值…置值,都在 PHP 4.x 以上的版本方支持。在 php.ini 的配置文件中。

session.save_handler
定義 session 儲存資料的文件名稱。預設值為 files。

session.save_path
定義 session 儲存資料的文件路徑。預設值為 /tmp。

session.name
配置 session 所使用的 cookie 名稱。預設值為 PHPSESSID。

session.auto_start
配置 session 是否自動打開。預設值為 0 (否)。

session.lifetime
配置 cookie 送到瀏覽器後的保存時間,單位為秒。預設值為 0,表示直到瀏覽器關閉。

session.serialize_handler
定義連續/解連續資料的標頭,本功能只有 WDDX 模組或 PHP 內部使用。預設值為 php。

session.gc_probability
配置每筆要求回應時的垃圾蒐集 (gc, garbage collection) 處理機率。預設值為 1。

session.gc_maxlifetime
配置垃圾被清除前的存活秒數。

session.extern_referer_check
決定參照到客戶端的 Session 代碼是否要刪除。有時在安全或其它考慮時,會配置不刪除。預設值為 0。

session.entropy_file
配置 session 代碼建立時,使用外部高熵值資源或文件來建立,例如 UNIX 系統上的 /dev/random 或 /dev/urandom。

session.entropy_length
配置 session 從高熵值資源讀取的位組數。預設值為 0。

session.use_cookies

配置是否要將 session 變成 cookie 存在用戶端。預設值為 1,表是打開本功能。

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...