Ubuntu OSでのD上の独自のWebプロジェクト

この資料は、 danial72の記事Simple site on Dのおかげで生まれました。 Windowsで解析されたのは瞬間だけでした。 私の記事では、Ubuntu 13.04 OSの使用して、 Dプログラミング言語で独自のWebプロジェクトを作成するための作業環境を準備するプロセスを段階的に検討します。



複雑でリソースを集中的に使用するプロジェクトがあり、ページが呼び出されるたびに数万行のphpコードが解析され、継承のあるクラス、いくつかのテンプレートエンジン、さらにはアクティブなエンジンがある場合数千人のユーザーがいて、パニックや恐怖を引き起こします。そのような開発を実装するための合理的で最適なソリューションを考えるのは理にかなっています。 それどころか、これについて考えたことがないなら、おそらくどんな種類の強力なサーバーも持っていないでしょう。



Mark Zuckerbergと彼のチームは、 HipHopを開発することでこの問題を一度に解決しました。HipHopはPHPスクリプトをC ++に変換し、このプロジェクトのためにコンパイルされたサーバーに転送しました。 似たようなことを行い、コンパイルされた言語ですべてを一度に書くだけで、不必要なコード変換を避け、このプロセスで起こりうるバグを回避します。 さらに、D言語は非常に便利なため、簡単に使用して問題を解決できます。



次の手順は、この全体を展開する方法を示します。

  1. DLang.orgページにアクセスして、システムの配布キットをダウンロードします。
  2. 次に、 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
          
          



  3. インストールが完了したら、 プロジェクトを作成するプロジェクトフォルダーを作成します。

     $ cd /home/< >/projects $ dub init < >
          
          



    この操作により、プロジェクトのフォルダーに次のファイル構造が作成されます

     public/ source/ app.d views/ package.json
          
          



  4. package.jsonファイルに興味があります。 開いて、次のテキストを追加します。

     "dependencies": { "vibe-d": ">=0.7.16" }
          
          



    これで、コンパイル時にDUBは自動的に最新のvibe.dパッケージをダウンロードします
  5. 次に、任意のエディターでapp.dファイルを開きます。 IDEの使用をお勧めしますが、残念ながら、MS Visual Studio 2008用の本格的なIDEやUbuntuのD言語用のBorland Delphiは見つかりませんでしたが、部分的にしか使用できません。 これまでのところ、 Geanyで自分の選択を選んだ。

    冒頭のファイルには、次のように記述しています...
     #!/usr/bin/rdmd
          
          



    このコマンドは、 DMDパッケージの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
          
          



    およびindex.dt

     extends layout block body h1 Example page - Home p Hello, World!
          
          



    これはテンプレートエンジンです。 あなたのページを変換する方法はここで説明されます 、そして、自動コンバータはここにあります

    すべてのファイルを保存します。
  6. プロジェクトのフォルダーに移動し、コマンドラインで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
          
          



    最後の行はエラーに対応しているように見えますが、実際にはIPv6をリッスンしようとしているので、アクティブではありません。 IPv4のみが使用されます。



    ブラウザウィンドウに127.0.0.1:8080をドライブします



    出来上がり...私たちのサイト。


変更後は、ターミナルでDUBの作業を中断して再起動するだけで十分です。 すべてのファイルは自動的に再コンパイルされます。



All Articles