Boost C++ 库

...世界上最受推崇和设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

更新和编辑网站内容

获取内容

网站内容位于 git 仓库 中。

正在进行的工作位于 beta 分支,线上网站位于 master 分支。网站会从 git 仓库自动更新。如果您想更新网站,请创建一个拉取请求。

现有页面

网站的大部分内容是自动生成的,包括发行说明、新闻页面和生成目录中的任何文件。如果您希望编辑这些内容,请参见下文。

网站内容的结构尽可能简单,以便于通用编辑。至少只需要一个文本编辑器和 HTML Tidy 即可编辑内容。该内容出于各种原因使用 XHTML 1.0 Strict,其中最重要的是提高可访问性和强制执行样式与内容的分离。按照上述方法获取要编辑的内容后,进行所需的更改,然后使用以下选项运行 HTML Tidy 结果

tidy --tidy-mark no -i -wrap 78 -m -asxhtml --merge-divs no --merge-spans no --doctype strict fname

使用一组一致的选项运行 HTML Tidy 有助于在存储库中维护准确的更改历史记录。有 示例 说明了直接或通过使用 [class="value"] 属性来支持各种 XHTML 标签的样式。请注意 HTML Tidy 提到的任何错误和警告,并努力消除所有错误和警告。

注意:以下选项适用于tidy的最新版本。特别是--merge-*选项可能在许多 Unix/Linux 发行版和 Windows 实用程序附带的版本中不可用。可以删除不可用的选项,并且可以正常工作。但我们建议安装最新版本tidy(如果可能)。您可以从 HTML Tidy 库项目 获取最新的 Windows 二进制文件和源代码。

这些页面应该可以在大多数浏览器中查看。如果可能,请在尽可能多的浏览器中测试您的更改。如果您使用 Windows,最好至少在两个现代浏览器中进行测试。但是,如果您使用其他平台,最好使用“默认”浏览器进行测试。通常,在 Web 服务器上下文之外查看页面只会显示内容和页脚的一部分。这是因为该站点使用服务器端包含 (SSI),大多数浏览器不会处理 SSI。要查看完整内容,您需要要么运行自己的 Apache 服务器,要么提交更改并在以下位置在线查看更改

站点 URL 分支
Beta http://beta.boost.org/ beta
这是网站的实验版本。开发工作应首先在此处完成,然后合并到线上网站。
线上 https://boost.ac.cn/ master
公众将看到的网站。

新页面

为了便于添加新页面,提供了一个 模板 来帮助您入门。在各个站点部分中,还有一些 _template_.html 文件,其中已经包含了正确的侧边栏菜单。首先,将模板复制到要添加到的网站部分,并将新文件命名为一个合理清晰的名称。部分由您决定,但每个部分的预期内容类型为

简介
帮助新用户了解 Boost 的用途和内容。这是新访客将访问的唯一地方。目录/users
社区
对于有兴趣参与或已经参与的用户,本节描述了 Boost 用户和开发人员社区的运作方式。目录/community
开发
潜在的或现有的 Boost 开发人员可以使用本节快速访问最常用的内容。本节旨在包含对资源的引用或直接包含经常更改的内容。或者仅与库开发人员相关的内容,尽管随着用户更多地参与 Boost 社区,它可能会引起更广泛的兴趣。目录/development
文档
本节组织特定于 Boost 库的文档。这至少包括每个 Boost 发行版随附的库文档。还包括对社区维护的 Wiki 的访问权限。目录/doc

为了提供部分用户界面外观和风格,需要对模板进行一些更改

  • 每个部分在head部分中包含不同的 CSS 样式引用。此引用需要更改为以下之一

    • 简介/style-v2/section-boost.css
    • 社区/style-v2/section-community.css
    • 开发/style-v2/section-development.css
    • 支持/style-v2/section-support.css
    • 文档/style-v2/section-doc.css
  • 每个部分通过使用 SSI 显示不同的上下文相关的侧边栏菜单。需要在sidebar部分中将侧边栏引用的显示更改为以下之一

    • 简介/common/sidebar-boost.html
    • 社区/common/sidebar-community.html
    • 开发/common/sidebar-development.html
    • 支持/common/sidebar-support.html
    • 文档/common/sidebar-doc.html

    sidebar部分中,包含两个菜单,第一个菜单对所有页面都通用,并且包含下载链接和搜索框。请勿替换该侧边栏(/common/sidebar-common.html)。是第二个#include应更改为反映当前部分。

  • 由于这是一个新页面,您还需要在页脚中插入您自己的相应版权信息。

  • 要插入新内容,您需要将其插入到section-body部分中。使用您想要的内容替换{stuff}占位符。此外,您可能还想更改标题,在head,以及在section-title部分中。

除了新页面的直接内容外,还需要在页面中添加一个条目,以便可以从侧边栏和索引中访问它。请参见下文…

菜单、侧边栏和索引

各种导航元素的结构旨在简化添加新条目并保持所有显示此类条目的位置的一致性。为此,该站点利用 SSI 将包含这些条目的位置减少到一个。这意味着在单个通用位置更改它后,您无需担心更改所有页面,它们都会立即反映新内容。要将项目添加到各个部分菜单,请编辑website/common目录中相应的菜单文件

  • 简介/common/menu-boost.html
  • 社区/common/menu-community.html
  • 开发/common/menu-development.html
  • 文档/generated/menu-doc.html

生成的页面

网站的各个部分是由 php 脚本从 quickbook 源文件生成的:主页、新闻、下载、版本历史记录和 feed。内容不可直接编辑,而是从源 Quickbook 文档生成。例如,要添加新闻项目,您需要

  1. /feed/news目录中创建一个新文件,例如/feed/news/gui_review_ends.qbk.
  2. 在 shell 中,运行/site-tools/update.py脚本。这将生成新新闻项目的页面,重新生成/feed/news.rss文件以包含它,更新链接到新项目的页面并更新文件/site-tools/state/feed-pages.txt,该文件跟踪生成文件的当前状态。
  3. 将新文件添加到 SVN 存储库并提交。

相同的过程适用于其他 feed,但请记住,某些 feed 可能会组合来自多个 feed 子目录的条目。目前,这需要将 Quickbook 和 Python 添加到您的路径中。

本地服务器

即使网站的设计使得只需要一些基本工具和 Web 浏览器即可进行更改,但也有一些方面是动态的,因此如果没有相应的 Web 服务器,这些方面将无法正常工作。要设置用于对动态内容进行更改的本地 Web 服务器,您需要

  1. 安装并运行 Apache 2.xPHP 5.3 或更高版本(将 PHP 作为 Apache 模块安装,而不是作为 CGI 安装)。

  2. 在您的hosts文件中设置符号主机查找,方法是添加“127.0.0.1 boost.localhost".

  3. 在 Apache 中添加一个虚拟主机以匹配新的本地主机。可能有效的配置为

    <VirtualHost 127.0.0.1:80>
      ServerName boost.localhost
      DocumentRoot "/path/to/boost/website"
      <Directory "/path/to/boost/website">
        Options +MultiViews +Includes +ExecCGI +FollowSymLinks +Includes
        AllowOverride All
        Order allow,deny
        Allow from all
        # For apache 2.4:
        # Require all granted
      </Directory>
    </VirtualHost>
    
  4. 为 Boost 特定设置创建一个本地 PHP 配置文件,例如“/path/to/boost/website/common/code/boost_config_local.php”,其中包含类似以下内容的内容

    <?php
    define('BOOST_WEBSITE_SHARED_DIR', '/path/to/boost/shared');
    define('STATIC_DIR', '/path/to/boost/shared/archives/live');
    ?>
    

    在设置官方 Web 服务器时,该文件应改为命名为 config.php,并放置在路径“/home/www/shared/config.php".

    对于这些设置的简要说明,请参阅common/code/boost_config.php文件。

  5. 为了查看文档,您需要设置相应的目录。STATIC_DIR需要是相应 Boost 发行版的解压缩副本的位置,以提供文档服务。默认情况下,boost_config.php 将 STATIC_DIR 设置为 $BOOST_WEBSITE_SHARED_DIR/archives/live。请按照类似的步骤操作,根据需要更改变量

    BOOST_WEBSITE_SHARED_DIR=/home/www/shared
    mkdir -p $BOOST_WEBSITE_SHARED_DIR/archives/live
    cd $BOOST_WEBSITE_SHARED_DIR/archives/live
    wget https://archives.boost.io/release/1.74.0/source/boost_1_74_0.tar.gz
    tar -xvf boost_1_74_0.tar.gz

Ubuntu 设置

要在 Ubuntu 上设置站点,我需要执行以下操作

sudo apt-get install apache2 libapache2-mod-php5
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2enmod include
sudo a2dismod deflate
sudo service apache2 restart

我必须禁用 deflate,因为它与 php 的 virtual 函数存在冲突。