首頁  >  文章  >  後端開發  >  資深Linux程式設計師的開發經驗談

資深Linux程式設計師的開發經驗談

WBOY
WBOY原創
2016-08-08 09:26:46906瀏覽

自從 20 世紀 80 年代中期第一次使用 SunOS支持的年代中期第一次使用 SunOS支持的年代中期第一次使用 SunOS支持的 編輯器已經變成 Murray 的標準工具。 "它在各種流派的

UNIX

上都可以使用,這是我在致力於跨平台的開發工作時選擇它的主要原因之一”,他說。 Linux開發

人員:了解您的

shellMurray shellBashtcshcsh――shell 是您最基本的軟體開發工具”,他強調說。 「它可以做許多了不起的事情。所有的工作都要依賴它…和它的強大功能」。作為說明通用的 shell 腳本功能強大的例子,在參考資料部分中有一個可以下載的文件,其中有一組腳本,用於獲得 Red Hat 發行的更新 RPM Red Hat 發行的更新 RPM Red Hat

發行的更新

RPM 包並將它們合併到原始的軟體包和定制的軟體包。下載檔案並解壓縮後,您可以在 /developerworks/rpm_update_scripts 目錄下找到腳本。最終結果是一個包括所有軟體包最新版本的目錄和一個用於網路安裝的升級的 hdlist 檔案。 下面的程式碼片段實現的是對 Red Hat RPM

軟體包的自動更新,以創建一個使用最新的 RPM 的可以安裝的版本。這對任何一個維護公共 Linux 伺服器的人來說是一個基本的步驟。就我們而言,我們通常是維護許多公共 Linux 伺服器上的大量網路服務。以下是可以自動完成更新最新的安全性和功能的過程的部分腳本。 下面的腳本範例證明了普通的 shell 程式設計技術可以廣泛應用於各種系統配置和程式設計應用。腳本使用的是 bourne shell,它是在不同的 UNIX 系統中最常見的 shell。這樣就可以確保這些非常輕的程式碼可以稍加修改或不加修改地在不同的

UNIX 系統上使用。修改 Red Hat 軟體套件的規格以應用於其它 Linux 發行版本是很容易的。 freshen.sh 使用指定的 RPM ftp 更新網站上的 RPM

軟體包更新原有的清單。執行過濾器來替換更新 RPM 軟體包。最後,長長的發行清單根據從更新鏡像站點上得到的新

RPM 軟體包完成更新。

清單

1. fresh.sh

#!/bin/sh 

rh_ver_$1 

rh update_dir=${rh_path}/RH${ rh_ver}-updates  

custom_dir=${rh_path}/RH${rh_ver}-custom 

# Sanity check for the original directory. 

# Create update and install directories if they don't exist mkdir ${update_dir} 

[ -d ${install_dir}/RedHat/RPMS ] || mkdir -p ${install_dir}/RedHat/RPMS 

.

./get_update.sh ${rh_ver} ${update_dir} 

# Create/update hardlinks

# Create/update hardlinks rectory. We assume that original RPMS are already 

# hardlinked to the install directory, so all we need to do is filter 

.

./do-links.sh ${ update_dir} ${install_dir}/RedHat/RPMS 

[ -d ${custom_dir} ] && ./do-links.sh ${custom_dir} 

# Filter out all but the latest version of everything. 

./filter-rpms.pl $install_dir/RedHat/RPMS 

# Rebuild the hard disk lists 

/usr/lib/anaconda-runtime/genhdlist ${install_dir} 

link和

get_update. sh ,分別去設定 RPM 發行版本的來源、宿(省略了來源 RPM 軟體包;硬連結用來設定了來源 RPM 清單 2. do-links.sh

#!/bin/sh 

 

#for file in $src/*; do 

for file in `find $src -name *.rpm -a ! -name *.src.rpm -print`; do 

base=`name $ file;` 

if test ! -f $dest/$base; then 

echo "Linking $file"; 

echo " EXISTS: $file"; 

fi 

done 

清單

. rh_ver=$1 

dest =$2 

echo "Retrieving updates for version ${rh_ver} to $dest" 

lftp

mirror -n pub /redhat/linux/updates/${rh_ver}/en/os/i386 $dest/i386  mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/i486 $dest/i

mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/i586 $dest/i568 

mirror -n pub/redhat/lin/pub/redhat /os/i686 $dest/i686 

mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/SRPMS $dest/SRPMS 

/ updates/${rh_ver}/en/os/noarch $dest/noarch 

Java

Linux

Linux在

Linux

上用

Java 完成。這兩個工具的組合為創建商業級品質的

Web 應用提供了一個平台,

Murray 說。 “在做這些專案的過程中,我們發現我們要總體上了解客戶已有的應用程式碼”,他回憶說。

locks.c (在下載得到的壓縮檔案中的

/developerworks/locks 目錄下

) 是一個程式碼片段,實作的是用來做 Java ) 的讀/

寫鎖以及大量的調試程式碼。 Linux 開發人員的代表“在情況允許的時候,不要寫特定於系統的代碼”,Murray 說,而是跨平台寫的代碼」。受僱的 Murray 堅持認為他最大的資本永遠是“寫具有商業品質的代碼,構建和提供網絡服務,定制 OS 或內核,而且完全基於可靠的開放源代碼的平台” 。 下面是一個程式碼片段,來自於一個跨平台的客製化的 IMAP 伺服器,這個伺服器由 Linux 的 MaccOS XOS 程式碼實現的是一個用來處理字串的簡單的增長快取。這樣避免了快取溢出的問題(不要忘記那些安全漏洞)

,而不必要您每次做某些事情的時候重新分配空間。它是透過維護一個簡單的可變長的快取來實現的,這個快取可以寫滿和清空。這個快取已經被用於一個實驗用的 IMAP 伺服器,這個伺服器是由一個團隊緊張工作了一周完成的。

除了一個簡單的字串緩衝區的實作之外,這段程式碼還實作了一個可變大小的字串陣列。它完成的是一個簡單的接口,當您寫完一個字串以後,您可以標記它然後繼續寫下一個。此外,這樣會節約空間分配,並將比較亂的程式碼組織在一起。 完整的 IMAP 伺服器的程式碼將在今年某個時間發布。 清單

4. 自訂 IMAP 伺服器一部份#ifndef HOEDEDA_H typedef struct {  char *str; 

int 大小; 

int 長度; 

int str_start; 

int max_size; 

int n_strings; 

int size_strings; 

int *str_posn; 

char **str_set; 

} hoed_buf_t; 

#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) 

#define PRINTF(f, a)    __attribute__((format (printf, f, a))) ine PRINTF( f ,a) 

#endif 

extern hoed_buf_t *hoed_buf_alloc(int insize, inint in int insize); 

extern void hoed_buf_free(hoed_buf_t *); 

extern void hoed_buf_reset(hoed_buf_t *); 

extern void hoed_buf_new_string(hoed_buf_t *); 

extern char **hoed_buf_get_set(hoed_buf_t *, int *n_string); 

extern char *hoed_buf_put_char(hoed_buf_t *, char toadd); 

extern char *hoed_buf_sprintf(hoed_buf_t *, const char *format,...) 

   PRINTF(2,3); 

extern char *hoed_buf_strcat(hoed_buf_t *, const char *append); 

extern char *hoed_buf_cat_sprintf(hoed_buf_t *, const char *format, ...) 

   PRINTF(2,3); 

#endif /* HOED_BUF_H */ 

被稱為殺手級的 Linux

被稱為殺手級的 Linux

言語中,有兩個殺手級的 Linux 應用程式:

Emacs

Netscape Navigator。 ,他說。他繼續說,「有趣的是,基於 Linux 的應用程式可以在許多不同風格的 UNIX 系統上運行,甚至安裝了 Cygwin 系統上運行,甚至安裝了 Cygwin 的系統Linux 的未來如何Murray 帶來了多個資料庫和多個資料Murray 帶來了多個資料庫和多個來源

使用標準工具的網路應用程式

標準工具包括:Apache/Tomcat, PHP, PostgreSQL, MySQL, 和網路應用程式提供主機服務的公司。 PostgresQL、MySQL、Cyrus IMAP...這個清單很長並且在不斷增長。目標平台如何,我們主要的開發都在Linux上進行;我們把Linux

推薦給用戶來“運行伺服器應用程式”,他說。開放原始碼組織代碼對其的廣泛支持,要知道的開發費用,如果把這些結合在一起,你就是一個難以戰勝的擊敗的平台」。

免費領取LAMP

兄弟連連 原創PHP教程作品/《PH》 http:// www.lampbrother.net

PHPCMS

二次開發http://yun.itxdl.cn/online /phpcms/index.php?u=5 http://yun.itxdl.cn/online/weixin/index.php?u=5行動網路伺服器端開發

http://yun.itxdl . server/index.php?u=5

Javascript課程http://yun.itxdl.cn/online/js/index.php?u=5

:0CTOphp?u=5 /yun.itxdl.cn/online/cto/index.php?u=5 以上就介紹了資深Linux程式設計師的開發經驗談,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP知識分享下一篇:PHP知識分享