日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

資深Linux程序員的開發(fā)經(jīng)驗談( 二 )


freshen.sh 使用指定的 RPM ftp 更新站點上的 RPM 軟件包來更新原有的 RPM 列表 。執(zhí)行過濾器來替換更新 RPM 軟件包 。最后,長長的發(fā)行列表根據(jù)從更新鏡像站點上得到的新 RPM 軟件包完成更新 。
清單 1. fresh.sh

#!/bin/sh;
rh_ver=$1;
rh_path=$2;
update_dir=${rh_path}/RH${rh_ver}-updates;
custom_dir=${rh_path}/RH${rh_ver}-custom;
install_dir=${rh_path}/RH${rh_ver}-install;
# Sanity check for the original directory.;
# Create update and install directories if they don’t exist;
[ -d ${update_dir} ] || mkdir ${update_dir};
[ -d ${install_dir}/RedHat/RPMS ] || mkdir -p ${install_dir}/RedHat/RPMS;
# Get latest updates from fresh rpms FTP site;
./get_update.sh ${rh_ver} ${update_dir};
# Create/update hardlinks from update, and custom directories;
# to the install directory. We assume that original RPMS are already;
# hardlinked to the install directory, so all we need to do is filter;
# out any replaced by updated packages.;
./do-links.sh ${update_dir} ${install_dir}/RedHat/RPMS;
[ -d ${custom_dir} ] && ./do-links.sh ${custom_dir};
${install_dir}/RedHat/RPMS;
# 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};

freshen.sh 調(diào)用 do-links.sh 和 get_update.sh,分別去設(shè)置 RPM 發(fā)行版本的源、宿(省略了源 RPM 軟件包;硬鏈接用來設(shè)置目的 RPM)和檢索更新 。
清單 2. do-links.sh

#!/bin/sh;
src=https://www.rkxy.com.cn/dnjc/$1;
dest=$2;
#for file in $src/*; do;
for file in `find $src -name *.rpm -a ! -name *.src.rpm -print`; do;
base=`basename $file;`;
if test ! -f $dest/$base; then;
echo "Linking $file"
ln $file $dest;
else;
echo "EXISTS: $file"
fi;
done;

清單 3. get_update.sh

#!/bin/sh;
rh_ver=$1;
dest=$2;
echo "Retrieving updates for version ${rh_ver} to $dest";
lftp << EOF;
open ftp.freshrpms.net

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/i486;
mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/i586 $dest/i568;
mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/i686 $dest/i686;
mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/SRPMS $dest/SRPMS;
mirror -n pub/redhat/linux/updates/${rh_ver}/en/os/noarch $dest/noarch;
Java 和 Linux
在Codemonks,相當(dāng)多的開發(fā)工作是在 Linux 上用 Java 完成 。這兩個工具的組合為創(chuàng)建商業(yè)級質(zhì)量的 Web 應(yīng)用提供了一個平臺,Murray 說 ?!霸谧鲞@些項目的過程中,我們發(fā)現(xiàn)我們要總體上了解客戶已有的應(yīng)用代碼”,他回憶說 。locks.c (在下載得到的壓縮文件中的 /developerworks/locks 目錄下) 是一個代碼片段,實現(xiàn)的是用于 Java Virtual Machine Profiler Interface (JVMPI) 的讀/寫鎖以及大量的調(diào)試代碼 。
Linux 開發(fā)人員的代表
“在情況允許的時候,不要寫特定于系統(tǒng)的代碼”,Murray 說,而是克服困難去“寫好的跨平臺的代碼” 。受雇的 Murray 堅持認(rèn)為他最大的資本永遠(yuǎn)是“寫具有商業(yè)品質(zhì)的代碼,構(gòu)建和提供網(wǎng)絡(luò)服務(wù),定制 OS 或內(nèi)核,而且完全基于可靠的開放源代碼的平臺” 。
下面是一個代碼片段,來自于一個跨平臺的定制的 IMAP 服務(wù)器,這個服務(wù)器由 Linux 和 MacOS X 的開發(fā)人員共同開發(fā) 。代碼實現(xiàn)的是一個用來處理字符串的簡單的增長緩存 。這樣避免了緩存溢出的問題(不要忘記那些安全漏洞),而不必要您每次做某些事情的時候重新分配空間 。它是通過維護一個簡單的可變長的緩存來實現(xiàn)的,這個緩存可以寫滿和清空 。這個緩存已經(jīng)被用于一個實驗用的 IMAP 服務(wù)器,這個服務(wù)器是由一個團隊緊張工作了一周完成的 。

推薦閱讀