世紀が初めて使用されて以来、 SunOS がサポートされています vi このクリーンな環境、Emacs エディタはになりましたマレーの標準ツール。 「UNIXのすべてのフレーバーで動作します。これが、私がクロスプラットフォーム開発に取り組むときにこれを選択する主な理由の1つです。」と彼は言いました。 Linux開発
人々: シェルを知るMurray は、あなたの
シェルを知るように求めています。 「Bash、tcsh、csh—shellは、最も基本的なソフトウェア開発ツールです」と彼は強調しました。 「それはたくさんの驚くべきことを可能にします。すべての仕事はそれとその力に依存しています。」一般的な シェル スクリプトがどれほど強力であるかを示す例として、 Red Hat リリースの ソフトウェア パッケージやそれらを元のパッケージとカスタマイズされたパッケージにマージします。ファイルをダウンロードして解凍すると、/developerworks/rpm_update_scripts ディレクトリにスクリプトが見つかります。最終的には、すべてのパッケージの最新バージョンと、ネットワーク インストール用にアップグレードされた hdlist ファイルが含まれるディレクトリが作成されます。 次のコード スニペットは、 Red Hat RPM パッケージの自動更新を実装し、最新の
RPMを使用してインストール可能なバージョンを作成します。これは、パブリック Linux サーバーを保守している人にとっての基本的な手順です。私たちの場合、通常、多くのパブリック Linux サーバー上で多数の Web サービスを維持しています。以下に、最新のセキュリティと機能を使用して更新プロセスを自動化できるいくつかのスクリプトを示します。 以下のスクリプト サンプルは、通常の シェル プログラミング手法がさまざまなシステム構成やプログラミング アプリケーションで広く使用できることを証明しています。このスクリプトは、さまざまな
UNIXシステムで最も一般的な シェル である bourne シェル を使用します。これにより、これらの非常に軽量なコードは、わずかな変更を加えるだけで、またはまったく変更を加えることなく、さまざまな UNIX システムで使用できることが保証されます。 Red Hat パッケージの仕様を変更して、他の Linux ディストリビューションに適用するのは簡単です。 freshen.sh 指定された RPM ftp
を使用してサイト上のRPM パッケージを更新し、元の RPM リストを更新します。フィルターを実行して、更新された RPM パッケージを置き換えます。最後に、リリースの長いリストが、更新ミラー サイトから入手できる新しい RPM パッケージで更新されます。 リスト 1. fresh.sh
#!/bin/shrh_ver=$1
rh_path=$2
date_d ir=${rh_path}/RH$ { rh_ver}-アップデート
custom_dir=${rh_path}/RH${rh_ver}-custom
install_dir=${rh_path}/RH${rh_ver}-インストール
#元のディレクトリの健全性チェック
[ -d ${install_dir}/RedHat/RPMS ] || mkdir -p ${install_dir}/RedHat/RPMS
# 新しい rpm から最新のアップデートを取得します。 FTP サイト
元の RPMS は既にインストール ディレクトリにハードリンク
# されていると想定しているため、必要なのは、更新されたパッケージ
で置き換えられたものをフィルター
# することだけです。
./do-links.sh ${ update_dir} ${install_dir}/RedHat/RPMS
[ -d ${custom_dir} ] && ./do-links.sh ${custom_dir}
${install_dir}/RedHat/RPMS
# すべての最新バージョンを除くすべてをフィルターで除外します。
# ハードディスクリストを再構築します
/usr/lib/anaconda-runtime/genhdlist ${install_dir}
freshen.sh do-links.sh を呼び出します と _アップデートを取得. sh 、 RPM リリース バージョン のソースとシンクを設定します ( ソース RPM ソフトウェア パッケージを省略しました。ハード リンクは目的 RPM を設定するために使用されます)更新を取得します。
リスト2. do-links.sh
#!/bin/sh
src=$1
dest=$2
#for ファイル in $src/*; do
for file in `find $src -name *.rpm -a ! -name *.src.rpm -print`; do
file;`
if test ! -f $dest/$base; then
echo "$file $dest
else
エコー」存在します: $file";
fi
done
list
3. get_update.sh
#!/bin/sh rh_ver=$1
宛先 =$2echo "バージョン ${rh_ver} の更新を $dest に取得しています"
lftp << EOF
open ftp.freshrpms.net
mirrまたは - 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
ミラー -n pub/redhat/linux/updates/${rh_ver}/en/os/i586 $dest/i568
ミラー -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 では、かなり多くの開発作業が
Linux で行われています完了しました Java を使用します。これら 2 つのツールを組み合わせることで、商用グレードの品質の
Web アプリケーションを作成するためのプラットフォームが提供される、と Murray 氏は述べています。 「これらのプロジェクトに取り組んでいるうちに、顧客がすでに持っているアプリケーション コードを一般的に理解する必要があることがわかりました」と彼は思い出します。ダウンロードした圧縮ファイル locks.c ( /developerworks/locks ディレクトリ内) は、 Java Virtual Machine Profiler Interface (JVMPI) read を実装するコード スニペットです/ロックと多くのデバッグコードを書き込みます。 Linux 開発者代表 Murray 氏は、「状況に応じてシステム固有のコードを作成しないでください」と述べていますが、困難を克服して「優れたクロスプラットフォーム コードを作成してください」と述べています。 」。雇用されている Murray は、自分の最大の資産は常に「商用品質のコードを作成し、ネットワーク サービスを構築および提供し、 OS
またはカーネルをカスタマイズし、完全に信頼できるオープン ソース プラットフォームに基づいている」ことであると主張します。以下は、
Linuxと MacOS X の開発者によって共同開発されたクロスプラットフォームのカスタム IMAP サーバーのコードスニペットです。このコードは、文字列を処理するための単純な増加キャッシュを実装しています。これにより、何かを行うたびにスペースを再割り当てする必要がなく、バッファ オーバーフローの問題(セキュリティ ホールを忘れないでください
)を回避できます。これは、埋めたり空にしたりできる単純な可変長キャッシュを維持することによって行われます。このキャッシュは、実験的な IMAP サーバーに使用されており、熱心な作業者のチームによって 1 週間かけて完成されました。 このコードは、単純な文字列バッファーの実装に加えて、可変サイズの文字列配列も実装しています。実装されているのは、文字列の書き込みが完了したら、その文字列にマークを付けて、次の文字列の書き込みを続けることができるシンプルなインターフェイスです。さらに、これによりスペースの割り当てが節約され、乱雑なコードがまとめられます。 完全な IMAP サーバーのコードは、今年中にリリースされる予定です。 チェックリスト 4. カスタマイズ
IMAPサーバー部分
#ifndef HOED_BUF_H #define HOED_BUF_H
typedef struct { char *
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))) #else #define PRINTF ( f,a) #endif
extern hoed_buf_t *hoed_buf_alloc(int init_size, int max_size); 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 应用程序 对 Murray 来说,有二杀手级的 Linux アプリケーションプログラム: Emacs と Netscape Navigator。 Linux の应用程序”,他「もう一つは Netscape Navigatorです。一度、私は20多くの UNIXをサポートし、私は Linux ですべての作業を完了しました。」 他继说、「興味深いのは、 Linux に基づくアプリケーションプログラムは、多数の異なる风格の UNIX システム上で、さらには実装済み Cygwin の上で動作する可能性があります」 Windows システム。 ”Linux の未来はどう? 現在、Murray 正在中 Linux 项目有好几个、从サポート電子アプリケーション、メッセージ、共有データベースの配布標準ツールを使用するための公開アプリケーションプログラム (標準ツールには、Apache/Tomcat、PHP、PostgreSQL、MySQL、、 Linux)。 Murray 他自己ありは、Murray に対して、 Linux Oracle、WebSphere、Apache、PostgresQL、MySQL、Cyrus IMAP...このリストは長く、そして継続的に続いています。」对Murray Linux 「私たちのすべてのサーバーは Linux上で実行しています。私たちは Linux上で実行しています。私は Linuxを推進しています」给用户来「 Linux」は、急速に発展しているスレッドを切り出し、リソースコードの集合体を解放し、それらをサポートし、低価格で配布するものであり、これらが組み合わされていれば、それが一つであることがわかります。难為击败の平台。 光盘/《细说》 PHP》精要版,详情咨询官网客服: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.cn/online/server/index.php?u=5 JavaScriptコースhttp://yun.itxdl.cn/online/js/index.php?u=5 CTOトレーニングキャンプhttp: / /yun.itxdl.cn/online/cto/index.php?u=5
以上、シニア Linux プログラマの開発経験を内容も含めて紹介しましたので、PHP チュートリアルに興味のある友人の参考になれば幸いです。