複雑でリソースを集中的に使用するプロジェクトがあり、ページが呼び出されるたびに数万行のphpコードが解析され、継承のあるクラス、いくつかのテンプレートエンジン、さらにはアクティブなエンジンがある場合数千人のユーザーがいて、パニックや恐怖を引き起こします。そのような開発を実装するための合理的で最適なソリューションを考えるのは理にかなっています。 それどころか、これについて考えたことがないなら、おそらくどんな種類の強力なサーバーも持っていないでしょう。
Mark Zuckerbergと彼のチームは、 HipHopを開発することでこの問題を一度に解決しました。HipHopはPHPスクリプトをC ++に変換し、このプロジェクトのためにコンパイルされたサーバーに転送しました。 似たようなことを行い、コンパイルされた言語ですべてを一度に書くだけで、不必要なコード変換を避け、このプロセスで起こりうるバグを回避します。 さらに、D言語は非常に便利なため、簡単に使用して問題を解決できます。
次の手順は、この全体を展開する方法を示します。
- DLang.orgページにアクセスして、システムの配布キットをダウンロードします。
- 次に、 DUBマネージャーをインストールする必要があります。 それを使用して、プロジェクトを展開、コンパイル、実行します。 リポジトリ、キー、更新の依存関係を追加する必要があります
その後$ sudo wget http://netcologne.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list $ sudo apt-get update && sudo apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring && sudo apt-get update
$ sudo apt-get install dub
- インストールが完了したら、 プロジェクトを作成するプロジェクトフォルダーを作成します。
$ cd /home/< >/projects $ dub init < >
public/ source/ app.d views/ package.json
- package.jsonファイルに興味があります。 開いて、次のテキストを追加します。
"dependencies": { "vibe-d": ">=0.7.16" }
- 次に、任意のエディターでapp.dファイルを開きます。 IDEの使用をお勧めしますが、残念ながら、MS Visual Studio 2008用の本格的なIDEやUbuntuのD言語用のBorland Delphiは見つかりませんでしたが、部分的にしか使用できません。 これまでのところ、 Geanyで自分の選択を選んだ。
冒頭のファイルには、次のように記述しています...#!/usr/bin/rdmd
ファイル自体が実行可能になりますchmod 775
import vibe.d; import std.file; void image(HTTPServerRequest req, HTTPServerResponse res) { auto file = format("./public/images/%s", req.params["f"]); if(exists(file)) { auto image = cast(ubyte[]) read(file); res.writeBody(image,"image"); } else { res.writeBody("Not Found","text/plain"); } } void css(HTTPServerRequest req, HTTPServerResponse res) { auto css = readText(format("./public/css/%s", req.params["f"])); res.writeBody(css,"text/css"); } void index_req(HTTPServerRequest req, HTTPServerResponse res) { auto request = req.params["r"]; res.renderCompat!("index.dt", HTTPServerRequest, "req",string,"title")(req,request); } void index(HTTPServerRequest req, HTTPServerResponse res) { res.renderCompat!("index.dt", HTTPServerRequest, "req")(req); } shared static this() { auto router = new URLRouter; router.get("/:r",&index_req); router.get("/", &index); router.get("/css/:f",&css); router.get("/images/:f",&image); auto settings = new HTTPServerSettings; settings.port = 8080; listenHTTP(settings, router); }
おそらくこの例で気付いたように、スタイルと写真は、それぞれフォルダーpublic / css /とpublic / images /に保存する必要があります。
ビューフォルダーに2つのファイルを追加する必要があります。
layout.dt
!!! 5 html head title Example page body block body
extends layout block body h1 Example page - Home p Hello, World!
すべてのファイルを保存します。 - プロジェクトのフォルダーに移動し、コマンドラインでDUBを実行します
$ cd /home/< /projects/< > $ dub
Checking dependencies in '/home/< >/Projects/< >' Building configuration "application", build type debug Running dmd (compile)... Compiling diet template 'index.dt' (compat)... Compiling diet template 'index.dt' (compat)... Linking... Running /tmp/dub/1994091216/< >... Listening for HTTP requests on :::8080 Failed to listen on 0.0.0.0:8080
ブラウザウィンドウに127.0.0.1:8080をドライブします
出来上がり...私たちのサイト。
変更後は、ターミナルでDUBの作業を中断して再起動するだけで十分です。 すべてのファイルは自動的に再コンパイルされます。