自從 20 世紀 80 年代中期第一次使用 SunOS支持的年代中期第一次使用 SunOS支持的年代中期第一次使用 SunOS支持的 編輯器已經變成 Murray 的標準工具。 "它在各種流派的
UNIX上都可以使用,這是我在致力於跨平台的開發工作時選擇它的主要原因之一”,他說。 Linux開發
人員:了解您的shellMurray shell “Bash、tcsh、csh――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 應用程式: 和 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 二次開發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教程有興趣的朋友有所幫助。