漢堡包的blog

A blog about Hamburger Lin

 

PHP Extension Development References and Resources June 13, 2009

Filed under: 程式語言 — hambster @ 10:06 pm

Comprehensive PHP extension development tutorials:

Extension Writing Part I: Introduction to PHP and Zend

Extension Writing Part II: Parameters, Arrays, and ZVALs

Extension Writing Part II: Parameters, Arrays, and ZVALs [continued]

Extension Writing Part III: Resources

 
 

Simplest GMime Example Code June 2, 2009

Filed under: 程式語言 — hambster @ 5:25 pm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio .h>
#include <stdlib .h>
#include <string .h>
#include <gmime -2.0/gmime/gmime.h>
#include <errno .h>
 
void
error_msg(const char *msg)
{
        if (NULL != msg)
                printf("%s - (%d)\n", msg, gmime_error_quark);
 
        exit(1);
}
 
int
main(int argc, char *argv[])
{
        FILE *fp = NULL;
        const char *subject = NULL;
        const char *msg_id = NULL;
 
        GMimeParser     *parser = NULL;
        GMimeStream     *gfs = NULL;
        GMimeMessage    *message = NULL;
        GMimeObject     *part = NULL;
 
        gpointer        user_data;
 
        if (2 != argc ||
                NULL == (fp = fopen(argv[1], "r")))
                error_msg("invalid argument!!");
 
        g_mime_init(0);
 
        if (NULL == (gfs = g_mime_stream_file_new(fp)))
                error_msg("failed to get stream!!");
 
        if (NULL == (parser = g_mime_parser_new_with_stream(gfs)))
                error_msg("failed to get parser!!");
 
        if (NULL == (message = g_mime_parser_construct_message(parser)))
                error_msg("failed to construct message!!");
 
        subject = g_mime_message_get_subject(message);
        msg_id = g_mime_message_get_message_id(message);
 
        printf("Subject: %s\n", subject);
        printf("Message-Id: %s\n", msg_id);
 
        g_mime_shutdown();
 
        return 0;
}
</errno></gmime></string></stdlib></stdio>

 
 

To Build and Compile Code with GMime on CentOS 5.2

Filed under: 程式語言 — hambster @ 1:59 pm

Use pkg-config to generate compilation flags is convenient:

pkg-config –cflags –libs gmime-2.0

On CentOS 5.2, you should install gmime and gimime-devel to make pkg-config output correct compilation

flags:

yum install gmime

yum install gmime-devel

 
 

Java的方便 September 29, 2006

Filed under: 工作心得, 程式語言 — hambster @ 2:05 am

Java的方便, 最近在工作中慢慢有感受到.

跨平台? 或許吧. 我倒認為主要是因為用戶眾多, 所以各Vendor對於Java的Support不遺餘力.

最近有用到JDBC去連Oracle與MSSQLServer.

我先前有請教過Solos, 在Linux下面應該也可以使用Perl來處理跟資料庫的溝通才是.

Solos說Perl的Database Driver不好找. 後來我花了一點點時間去了解, 發現真的是這樣子.

Java啟動雖然慢吞吞, 但是Run起來的效能現在被JIT 給Tune的蠻快的. 但, 我想最方便的是

類似這種應用吧. 舉凡JDBC, Networking, I/O , Threading, 由於能同時在不同OS上執行,

因此提供了不少便利性. 雖然不是百分百Write Once, Run Everywhere. 但至少是Write Once,

Run Almost Everywhere.

 
 

以前寫的程式 - 怎麼寫的這麼爛呀!! March 9, 2006

Filed under: 程式語言 — hambster @ 12:34 am

天呀! 今天心血來潮, 拿出以前自己寫的程式, 真是太羞愧了.

我怎麼會寫出這麼爛的程式, 簡直是爛爆了. 這種東西應該銷毀才對.

如果洩漏出去, 那我可能會羞愧於見人吧. 為了彌補我過去犯下的錯誤,

因此, 我要用贖罪的心情, 把這個程式進行改寫.

想想以前有些程式其實是很有用處的, 像這幾個多目標決策的計算分析

程式, 其實就可以用在很多數據分析上, 想想也好, 重寫成Utility之後,

收進自己的工具箱裡, 亦是個不錯的選擇.

其實以前寫的一些程式, 都算蠻有用處的. 但是都缺乏Organize,所以

看起來除了亂,就是醜. 此外, 並非以工具程式的觀點進行設計, 所以既

非Flexible, 也非 Extensible. 所以最近會花時間把這些東西都收一收,

畢竟是不錯的小程式, Organize的好, 以後拿來Reuse的機會亦是不少.