ホームページ  >  記事  >  バックエンド開発  >  シニア Linux プログラマーの開発経験

シニア Linux プログラマーの開発経験

WBOY
WBOYオリジナル
2016-08-08 09:26:46935ブラウズ

世紀が初めて使用されて以来、 SunOS がサポートされています vi このクリーンな環境、Emacs エディタはになりましたマレーの標準ツール。 UNIXのすべてのフレーバーで動作します。これが、私がクロスプラットフォーム開発に取り組むときにこれを選択する主な理由の1つです。」と彼は言いました。 Linux開発

人々: シェルを知るMurray は、あなたの

シェル

を知るように求めています。 「Bashtcshcshshellは、最も基本的なソフトウェア開発ツールです」と彼は強調しました。 「それはたくさんの驚くべきことを可能にします。すべての仕事はそれとその力に依存しています。」一般的な シェル スクリプトがどれほど強力であるかを示す例として、 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/sh

rh_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

宛先 =$2

echo "バージョン ${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 チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP の知識の共有次の記事:PHP の知識の共有