精华内容
下载资源
问答
  • 一整套WordPress模板制作的教程

    千次阅读 2017-01-24 18:09:54
    一整套WordPress模板制作的教程 WordPress基本模板文件 一套完整的WordPress模板应至少具有如下文件: style.css: CSS(样式表)文件 index.php : 主页模板 archive.php : Archive/Category模板 404....

    一整套WordPress模板制作的教程

    WordPress基本模板文件

    一套完整的WordPress模板应至少具有如下文件:
    style.css: CSS(样式表)文件
    index.php : 主页模板
    archive.php : Archive/Category模板
    404.php : Not Found 错误页模板
    comments.php : 留言/回复模板
    footer.php : Footer模板
    header.php : Header模板
    sidebar.php : 侧栏模板
    page.php : 内容页(Page)模板
    single.php : 内容页(Post)模板
    searchform.php : 搜索表单模板
    search.php : 搜索结果模板
    当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。

     

     

    基本条件判断Tag

    is_home() : 是否为主页
    is_single() : 是否为内容页(Post)
    is_page() : 是否为内容页(Page)
    is_category() : 是否为Category/Archive页
    is_tag() : 是否为Tag存档页
    is_date() : 是否为指定日期存档页
    is_year() : 是否为指定年份存档页
    is_month() : 是否为指定月份存档页
    is_day() : 是否为指定日存档页
    is_time() : 是否为指定时间存档页
    is_archive() : 是否为存档页
    is_search() : 是否为搜索结果页
    is_404() : 是否为 “HTTP 404: Not Found” 错误页
    is_paged() : 主页/Category/Archive页是否以多页显示

     

     

    Header部分常用到的PHP函数

    <?php bloginfo(’name’); ?> : 博客名称(Title)
    <?php bloginfo(’stylesheet_url’); ?> : CSS文件路径
    <?php bloginfo(’pingback_url’); ?> : PingBack Url
    <?php bloginfo(’template_url’); ?> : 模板文件路径
    <?php bloginfo(’version’); ?> : WordPress版本
    <?php bloginfo(’atom_url’); ?> : Atom Url
    <?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
    <?php bloginfo(’url’); ?> : 博客 Url
    <?php bloginfo(’html_type’); ?> : 博客网页Html类型
    <?php bloginfo(’charset’); ?> : 博客网页编码
    <?php bloginfo(’description’); ?> : 博客描述
    <?php wp_title(); ?> : 特定内容页(Post/Page)的标题

     

     

    模板常用的PHP函数及命令

    <?php get_header(); ?> : 调用Header模板
    <?php get_sidebar(); ?> : 调用Sidebar模板
    <?php get_footer(); ?> : 调用Footer模板
    <?php the_content(); ?> : 显示内容(Post/Page)
    <?php if(have_posts()) : ?> : 检查是否存在Post/Page
    <?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示
    <?php endwhile; ?> : While 结束
    <?php endif; ?> : If 结束
    <?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
    <?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
    <?php the_title(); ?> : 内容页(Post/Page)标题
    <?php the_permalink() ?> : 内容页(Post/Page) Url
    <?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category
    <?php the_author(); ?> : 作者
    <?php the_ID(); ?> : 特定内容页(Post/Page) ID
    <?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接
    <?php get_links_list(); ?> : 显示Blogroll中的链接
    <?php comments_template(); ?> : 调用留言/回复模板
    <?php wp_list_pages(); ?> : 显示Page列表
    <?php wp_list_categories(); ?> : 显示Categories列表
    <?php next_post_link(’ %link ‘); ?> : 下一篇文章链接
    <?php previous_post_link(’%link’); ?> : 上一篇文章链接
    <?php get_calendar(); ?> : 日历
    <?php wp_get_archives() ?> : 显示内容存档
    <?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接
    <?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

     

     

    与模板相关的其他函数

    <?php _e(’Message’); ?> : 输出相应信息
    <?php wp_register(); ?> : 显示注册链接
    <?php wp_loginout(); ?> : 显示登录/注销链接
    <!–next page–> : 将当前内容分页
    <!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
    <?php timer_stop(1); ?> : 网页加载时间(秒)
    <?php echo get_num_queries(); ?> : 网页加载查询量

     

     

    介绍如何定义index.php以及如何派生出其它文件,在index.php文件中,在body元素内,新建如下结构化标记元素,各元素都带有不同的id属性:

    <div id=”page”>
    <div id=”header”></div>
    <div id=”content”></div>
    <div id=”sidebar”></div>
    <div id=”footer”></div>
    </div>

    这些不同的属性,分别代表着不同的区域,让人一看就知道是什么意思,下面我们重点探讨header,content,sidebar,footer部分的构建。

    (一).构建header

    <div id=”header”></div> 元素的两个标签之间输入下列代码:
    <h1><a href=”<?php bloginfo(’url’); ?>” title=”<?php bloginfo(’name’); ?>”><?php bloginfo(’name’); ?></a></h1>
    <p><?php bloginfo(’description’); ?></p>

    这里用到了 WP 内置的 bloginfo 函数来生成内容,其中:

    bloginfo(’url’)返回网站主页链接;
    bloginfo(’name’)返回网站标题;
    bloginfo(’description’)返回网站描述。
    保存 index.php 文件,然后在浏览器中按 F5 刷新一下页面,看能看到什么?再通过“查看源文件”,核对一下由 WP 的 bloginfo() 函数生成的相关信息。

    (二).构建content

    在 <div id=”content”></div> 中,我们要通过循环显示博文,包括每个博文的标题、作者、发表日期以及其他相关信息。并且,可以分页显示博文(取决于 WP 后台的设置)。
    首先,在 <div id=”content”> 与 </div> 之间输入下列代码:

    <?php while (have_posts()) : the_post(); ?> <div class=”post” id=”post-<?php the_ID() ?>”>
    <!– 博文标题及链接 –>
    <h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”>
    <?php the_title(); ?></a></h2>
    <!– 发表日期 –>
    <div class=”post-date”>
    <span class=”post-month”><?php the_time(’M’) ?></span>
    <span class=”post-day”><?php the_time(’d’) ?></span>
    </div>
    <!– 作者 –>
    <span class=”post-author”><?php _e(’Author’); ?>:<?php the_author(’, ‘) ?></span>
    <!– 类别 –>
    <span class=”post-cat”><?php _e(’Categories’); ?>:<?php the_category(’, ‘) ?></span>
    <!– 注释 –>
    <span class=”post-comments”>
    <?php comments_popup_link(’No Comments ?’, ‘1 Comment ?’, ‘% Comments ?’); ?></span>
    <!– 内容 –>
    <div class=”entry”>
    <?php the_content(’更多内容 ?’); ?>
    </div>
    <!– 其他元(Meta)数据 –>
    <div class=”post-meta”>
    <?php edit_post_link(’编辑’,’ | ‘,”); ?>
    </div> </div>
    <?php endwhile; ?><div class=”navigation”>
    <span class=”previous-entries”><?php next_posts_link(’前一篇’) ?></span> <span class=”next-entries”><?php previous_posts_link(’后一篇’) ?></span>
    </div>
    <?php else : ?>
    <div class=”post”>
    <h2><?php _e(’Not Found’); ?></h2>
    </div><?php endif; ?>

    看似复杂,其实不然。首先:

    <?php while (have_posts()) : the_post(); ?>
    <?php endwhile; ?>

    这两行,是 WP 中的 while 循环。其中,while 语句通过测试 have_posts() 决定是否调用 the_post() 函数。如果测试 have_posts() 返回 true,则调用 the_post() 函数,初始化与博文相关的内置变量。
    在 while 循环内部,首先要注意通过 div、h2、span 这三个元素定义的嵌套语义结构,以及相应元素的 class 和 id 属性(其中只为 class 为 post 的 div 元素定义了一个 id 属性--post-<?php the_ID() ?>)。这是将来使用 CSS 控制外观的关键所在。在这个 div 元素中,为显示博文的相关信息,分别调用了以下 WP 函数:

    the_ID():返回博文 ID;
    the_permalink():返回博文固定链接 URL;
    the_title():返回博文标题;
    the_time(’M’):返回发表日期中的月份;
    the_time(’d’):返回发表日期中的天;
    the_author():返回博文作者;
    the_category():返回博文的类别;
    the_content():返回博文的内容,其中的参数表示用于“更多内容”的链接文本;
    以上函数都是以 the_ 开头的,加上后面的函数名不仅颇有自解释的味道,而且令人联想到 this 关键字。此外
    _e() 函数是一个包装函数,这个函数主要用于语言的转换,如果调用该函数并传递标准的 WP 术语,如:Author 或 Categories,则返回你相应语言包中的译文,在中文包中分别是“作者”和“类别”。当然,不用也可。但会失去一些适应性。
    还有,omments_popup_link() 和 edit_post_link() 两个函数,分别显示注释和编辑链接,这里不多说了。
    另外,在 <?php endwhile; ?> 后面显示了分页导航链接,调用的函数分别是:next_posts_link() 和 previous_posts_link()。此时,如果你的博文总数小于 WP 后台设置的最多显示数目,比如:你在后台设置最多显示 5 篇,而你有 10 篇博文,就会分页显示;否则,如果你的博文少于或等于 5 篇则看不到分页导航链接。
    最后,不要丢下 <?php else : ?> 语句后面的内容:

    <div class=”post”>
    <h2><?php _e(’Not Found’); ?></h2>
    </div>

    显然,这是一个错误提示信息。

    (三).构建sidebar

    sidebar 的内容当然要在 <div id=”sidebar”></div> 元素中构建了。sidebar,中文叫侧边栏,其中可以包含很多内容。比如:分类、页面、链接、日历等等导航及相关信息。
    在 WP 中,sidebar 中的内容都以无序(ul)或有序(ol)列表的形式输出。因此,需要在 <div id=”sidebar”></div> 中输入以下标记:

    <ul>
    <?php if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar() ) : ?>
    <li id=”search”>
    <?php include(TEMPLATEPATH .’/searchform.php’); ?>
    </li> <li id=”calendar”>
    <h2><?php _e(’Calendar’); ?></h2>
    <?php get_calendar(); ?>
    </li> <?php wp_list_pages(’title_li=<h2>页面</h2>’); ?> <li class=”catnav”>
    <h2><?php _e(’Categories’); ?></h2>
    <ul>
    <?php wp_list_cats(’sort_column=name&optioncount=1&hierarchical=0′); ?>
    </ul>
    </li>
    <li class=”archivesnav”>
    <h2><?php _e(’Archives’); ?></h2>
    <ul>
    <?php wp_get_archives(’type=monthly’); ?>
    </ul>
    </li>
    <li class=”blogrollnav”>
    <h2><?php _e(’Links’); ?></h2>
    <ul>
    <?php get_links(’-1′, ‘<li>’, ‘</li>’, ‘<br />’, FALSE, ‘id’, FALSE, FALSE, -1, FALSE); ?>
    </ul>
    </li>
    <li class=”meta”>
    <h2><?php _e(’Meta’); ?></h2>
    <ul><?php wp_register(); ?><li><?php wp_loginout(); ?></li>
    <?php wp_meta(); ?></ul>
    </li>
    <?php endif ?>
    </ul> 以上代码从第三行开始,分别通过包含 searchform.php 显示搜索表单;

    调用 get_calendar() 函数显示日历;
    调用 wp_list_pages() 函数显示页面导航;
    调用 wp_list_cats() 函数显示分类导航;
    调用 wp_get_archives() 函数显示存档导航;
    调用 get_links() 函数显示链接导航。
    在构建侧边栏时,要为生成搜索框新建一个 searchform.php 文件,其内容如下:

    <form method=”get” id=”searchform” action=”<?php bloginfo(’home’); ?>/”>
    <div>
    <input type=”text” value=”<?php echo wp_specialchars($s, 1); ?>” name=”s” id=”s” size=”15″ /><br />
    <input type=”submit” id=”searchsubmit” value=”Search” />
    </div>
    </form>

    将其保存在 myTheme 文件夹中,通过 include 语句包含进来就可以了。注意,常量 TEMPLATEPATH 中保存的是模板路径。
    最后,说明一下以上代码第二行和倒数第二行。显然这是一个 if 语句块。那这个 if 语句块包含 sidebar 是何用意呢?这是部件化侧边栏的需要,就是让 sidebar 适合 Widget 插件(WP 2.0 后内置了 Widget,所以不用再安装了)。如果要使用 Widget 插件,必须对 sidebar 进行部件化。这样,在 WP 后台通过 Widget 插件你就可以使用拖动来方便地定义侧边栏的组件了。部件化侧边栏,除了在 ul 元素内侧放入这个 if 语句之外,还必须在 myTheme 文件夹中建立一个文件 functions.php,其内容如下:

    <?php
    if ( function_exists(’register_sidebar’) )
    register_sidebar(array(
    ‘before_widget’ => ‘<li id=”%1$s” class=”widget %2$s”>’,
    ‘after_widget’ => ‘</li>’,
    ‘before_title’ => ‘<h2 class=”sidebartitle”>’,
    ‘after_title’ => ‘</h2>’,
    ));
    ?>

    (四).构件footer

    footer 中一般都一些版权信息和不太重要的链接。所以可以在 <div id=”footer”></div> 元素中简单地放入下列代码:

    <p>Copyright ? 2007 <?php bloginfo(’name’); ?></p>

    至此,核心 index.php 文件就算是大功告成了!

    接下来,是拆分 index.php 和基于 index.php 派生子模板文件。

    在 myTheme 文件夹中新建 header.php、sidebar.php 和 footer.php 三个文件。把 index.php 中的 <div id=”header”></div>、<div id=”sidebar”></div> 和 <div id=”footer”></div> 三个结构化元素及其内容分别转移(剪切)到这三个新文件中。然后,在 <div id=”header”></div> 原来的位置处输入代码:

    <?php get_header();?>
    在 <div id=”sidebar”></div> 原来的位置处输入代码:
    <?php get_sidebar();?>
    在 <div id=”footer”></div> 原来的位置处输入代码:
    <?php get_footer();?>

    前面说过,这三个 get 函数是 WP 专门为包含结构化的文件定义的。现在你的 index.php 文件应该如下所示:

    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
    <html xmlns=”http://www.w3.org/1999/xhtml“><head profile=”http://gmpg.org/xfn/11“>
    <meta http-equiv=”Content-Type” content=”<?php bloginfo(’html_type’); ?>; charset=<?php bloginfo(’charset’); ?>” /><title><?php bloginfo(’name’); ?> <?php if ( is_single() ) { ?> ? Blog Archive <?php } ?> <?php wp_title(); ?></title><meta name=”generator” content=”WordPress <?php bloginfo(’version’); ?>” /> <!– leave this for stats –><link rel=”stylesheet” href=”<?php bloginfo(’stylesheet_url’); ?>” type=”text/css” media=”all” />
    <link rel=”stylesheet” href=”<?php bloginfo(’stylesheet_directory’); ?>/print.css” type=”text/css” media=”print” />
    <link rel=”alternate” type=”application/rss+xml” title=”<?php bloginfo(’name’); ?> RSS Feed” href=”<?php bloginfo(’rss2_url’); ?>” />
    <link rel=”pingback” href=”<?php bloginfo(’pingback_url’); ?>” /><?php wp_head(); ?>
    </head>
    <body>
    <div id=”page”><?php get_header(); ?> <!– content –>
    <div id=”content”>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?> <div class=”post” id=”post-<?php the_ID() ?>”>
    <!– 博文标题及链接 –>
    <h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”>
    <?php the_title(); ?></a></h2>
    <!– 发表日期 –>
    <div class=”post-date”>
    <span class=”post-month”><?php the_time(’M’) ?></span>
    <span class=”post-day”><?php the_time(’d’) ?></span>
    </div>
    <!– 作者 –>
    <span class=”post-author”><?php _e(’Author’); ?>:<?php the_author(’, ‘) ?></span>
    <!– 类别 –>
    <span class=”post-cat”><?php _e(’Categories’); ?>:<?php the_category(’, ‘) ?></span>
    <!– 注释 –>
    <span class=”post-comments”>
    <?php comments_popup_link(’No Comments ?’, ‘1 Comment ?’, ‘% Comments ?’); ?></span>
    <!– 内容 –>
    <div class=”entry”>
    <?php the_content(’更多内容 ?’); ?>
    </div>
    <!– 其他元(Meta)数据 –>
    <div class=”post-meta”>
    <?php edit_post_link(’编辑’,’ | ‘,”); ?>
    </div> </div>
    <?php endwhile; ?> <div class=”navigation”>
    <span class=”previous-entries”><?php next_posts_link(’前一篇’) ?></span> <span class=”next-entries”><?php previous_posts_link(’后一篇’) ?></span>
    </div>
    <?php else : ?>
    <div class=”post”>
    <h2><?php _e(’Not Found’); ?></h2>
    </div><?php endif; ?>
    </div><!– end content –><?php get_sidebar(); ?> <?php get_footer(); ?></div>
    </body>
    </html>

    然后,是派生子模板文件。把这个“模块化”的 index.php 文件另存为 single.php、page.php、archive.php、 search.php 和 category.php。当然,都保存在 myTheme 文件夹中。这样,WP 在显示页面时就会调用相应的页面文件了。比如,显示博文详细内容时,会调用 single.php;而显示页面内容时,则调用 page.php。
    最后,要做的工作就是自定义这些子模板文件。

    分类: wordpress
    0
    0
    « 上一篇:WordPress模板常用函数
    » 下一篇:WooCommerce代码收集
    展开全文
  • 关于CIS的一整套东西

    千次阅读 2007-05-21 08:01:00
    CIS的具体组成部分 MI:理念识别 BI:行为识别 VI:视觉识别 什么是CIS ? CIS是Corporate Identity System的缩写,意思是企业形象识别系统。60年代,美国人首先提出了企业的CI设计这概念。据说是美国IBM公司是这...

    CIS的具体组成部分 MI:理念识别 BI:行为识别 VI:视觉识别
    什么是CIS ?
    CIS是Corporate Identity System的缩写,意思是企业形象识别系统。60年代,美国人首先提出了企业的CI设计这一概念。据说是美国IBM公司是这方面开先河者。
    CIS的主要含义是:将企业文化与经营理念,统一设计,利用整体表达体系(尤其是视觉表达系统),传达给企业内部与公众,使其对企业产生一致的认同感,以形成良好的企业印象,最终促进企业产品和服务的销售。

    CIS的意义
    对内,企业可通过CI设计对其办公系统、生产系统、管理系统以及营销、包装、广告等宣传形象形成规范设计和统一管理,由此调动企业每个职员的积极性和归属感、认同感,使各职能部门能各行其职、有效合作。
    对外,通过一体化的符号形式来形成企业的独特形象,便于公众辨别、认同企业形象,促进企业产品或服务的推广。

    CIS的具体组成部分
    日本著名CI专家山田英理认为CI包含下面两个方面的概念:
    第一、CI是一种被明确地认知企业理念与企业文化的活动;
    第二、CI是以标志和标准字作为沟通企业理念与企业文化的工具。

    换而言之,CI系统是由MI(理念识别Mind Identity)、BI(行为识别Behavior Identity)、VI(视觉识别Visual Identity)三方面组成。在CIS的三大构成中,其核心是MI,它是整个CIS的最高决策层,给整个系统奠定了理论基础和行为准则,并通过BI与VI表达出来。所有的行为活动与视觉设计都是围绕着MI这个中心展开的,成功的BI与VI就是将企业的独特精神准确表达出来。

    MI:理念识别
    企业理念,对内影响企业的决策、活动、制度、管理等等,对外影响企业的公众形象、广告宣传等。
    所谓MI,是指确立企业自己的经营理念,企业对目前和将来一定时期的经营目标、经营思想、经营方式和营销状态进行总体规划和界定。
    MI的主要内容包括
    企业精神,企业价值观,企业文化,企业信条,经营理念,经营方针,市场定位,产业构成,组织体制,管理原则,社会责任和发展规划等。

    BI:行为识别
    置于中间层位的BI则直接反映企业理念的个性和特殊性,是企业实践经营理念与创造企业文化的准则,对企业运作方式所作的统一规划而形成的动态识别系统。包括对内的组织管理和教育,对外的公共关系、促销活动、资助社会性的文化活动等。通过一系列的实践活动将企业理念的精神实质推展到企业内部的每一个角落,汇集起员工的巨大精神力量。
    BI包括以下内容
    对内:组织制度,管理规范,行为规范,干部教育,职工教育,工作环境,生产设备,福利制度等等;
    对外:市场调查,公共关系,营销活动,流通对策,产品研发,公益性、文化性活动等等。

    VI:视觉识别
    VI:以标志、标准字、标准色为核心展开的完整的、系统的视觉表达体系。将上述的企业理念、企业文化、服务内容、企业规范等抽象概念转换为具体符号,塑造出独特的企业形象。在CI设计中,视觉识别设计最具传播力和感染力,最容易被公众接受,具有重要意义。
    VI系统:
    A.基本要素系统:如企业名称、企业标志、企业造型、标准字、标准色、象征图案、宣传口号等。
    B.应用系统:产品造型、办公用品、企业环境、交通工具、服装服饰、广告媒体、招牌、包装系统、 公务礼品、陈列展示以及印刷出版物等。

    一套VI设计的主要内容:
    I.基本要素系统
    A.标志
    B.标准字
    C.标准色
    D.标志和标准字的组合.

    II.应用系统
    A.办公用品:信封、信纸、便笺、名片、徽章、工作证、请柬、文件夹、介绍信、帐票、备忘录、资料袋、公文表格等。
    B.企业外部建筑环境:建筑造型、公司旗帜、企业门面、企业招牌、公共标识牌、路标指示牌、广告塔、霓虹灯广告、庭院美化等。
    C.企业内部建筑环境:企业内部各部门标识牌、常用标识牌、楼层标识牌、企业形象牌、旗帜、广告牌、POP广告、货架标牌等。
    D.交通工具:轿车、面包车、大巴士、货车、工具车、油罐车、轮船、飞机等。
    E.服装服饰:经理制服、管理人员制服、员工制服、礼仪制服、文化衫、领带、工作帽、钮扣、肩章、胸卡等。
    F.广告媒体:电视广告、杂志广告、报纸广告、网络广告、路牌广告、招贴广告等。
    G.产品包装:纸盒包装、纸袋包装、木箱包装、玻璃容器包装、塑料袋包装、金属包装、陶瓷包装、包装纸。
    H.公务礼品:T恤衫、领带、领带夹、打火机、钥匙牌、雨伞、纪念章、礼品袋等。
    I.陈列展示:橱窗展示、展览展示、货架商品展示、陈列商品展示等。
    J.印刷品:企业简介、商品说明书、产品简介、年历等。 
    展开全文
  • 从上周起,我开始翻译本新书。...这两者本身都广为使用,而且是完全相同的意思。我查了一下中文亚马逊书店,136本IT类中文图书用了“集群”,29本用了“群集”。看上去“集群”更为普及一些,而且...

    从上周起,我开始翻译一本新书。IT类中文书籍的翻译往往有一个术语的问题,如何选择最准确的中文术语,让读者清楚明白而且在实际操作和配置的时候不至于误解,是一件不那么容易的事情。一个简单的例子就是cluster,中文可以译作“集群”或者“群集”。这两者本身都广为使用,而且是完全相同的意思。我查了一下中文亚马逊书店,136本IT类中文图书用了“集群”,29本用了“群集”。看上去“集群”更为普及一些,而且我本人也习惯用“集群”这个术语。那么在本书中到底应该翻译成集群还是“群集”呢?我决定用“群集”。为啥呢?因为vSphere中文版客户端和中文版vSphere Web客户端都使用“群集”作为术语。为了方便读者阅读本书的时候,能够和中文版系统和中文版帮助文件对照起来,所有能够在中文版中找到的术语,我都将用中文版本里面的术语来进行翻译。  

    这本新书是关于VMware VSAN的,为了翻译的VSAN术语更加准确,我需要搭建一个VSAN集群。可是VSAN集群的构建有一些必要的前提条件:

    • 至少3台以上的vSphere ESXi 5.5U1主机

    • 每台主机需要至少一块SSD和一块磁盘(至少有3台主机有这样的配置)提供给VSAN数据存储用

    • 每台主机至少要有千兆网卡,推荐万兆。如果是千兆,建议有一个千兆端口专门提供给VSAN专用。

    • 每台主机最少6GB内存

    • 支持虚拟化技术的Intel或AMD处理器,至少是Intel XEON corei7级别或更高。


    注:关于VSAN的安装和前提条件,可以参考一下文章和资料:    
    http://vsdsrevolution.blog.51cto.com/8674155/1381076
    http://vsdsrevolution.blog.51cto.com/8674155/1386083
    http://www.vmware.com/files/cn/pdf/products/vsan/VMware_Virtual_SAN_Whats_New.pdf

    看了一下,3台主机就有点困难,每台2块千兆网卡、6GB内存,克服一下还能找到,大容量磁盘也还算容易,要搞3块SSD就难度略大。终于咬了咬牙,自己掏钱在亚马逊下单买了2块SSD,加上自己家里原来有的1块,凑够了3块。不过周二拜访了VMware公司,VMware中国研发中心的林博士却给了我一个建议,可以在虚拟机上模拟嘛。至于SSD问题,书里面第3章讲到某些SSD因为RAID-0控制器无法识别成SSD的时候,可以用命令行来强制指定为SSD,那么在虚拟机的情况下,也可以用同样的方法糊弄一下。我恍然大悟,于是回家在自己家里的ESXi主机上开搞。(那2块SSD的钱啊已经花出去了!哭!)    

    我家里只有一台DELL Precision T7500的工作站用作实验用的ESXi主机,这台机器是在淘宝上花4000元淘来的DELL的库存货,虽然是3年前的硬件,但是配上XEON处理器和24GB服务器专用内存,玩个服务器虚拟化还是不错滴。    
    image  

    废话一大篓,现在切入正题。  

    接下去,我就来介绍下如何在一台ESXi主机上配置3个ESXi并组建一个VSAN集群。昨天,我介绍了如何在一台ESXi主机上安装ESXi的客户机(当然这些ESXi本身也是主机哦,还可以在其上部署虚拟机,虽然性能会比较差)。因此,首先就是根据上面所说的硬件条件创建3个虚拟机用来安装ESXi5.5u1。我的配置是每一台主机都包括:  

    • 4个CPU(最少2个)

    • 8GB内存

    • 3个硬盘,一个4GB(用来装系统)、一个40GB(模拟成SSD)、一个400GB(提供给vsan存放数据)

    • 2个网络适配器,一个在子网192.168.10.x用于管理和虚拟机网络,一个在子网192.168.20.x,用于VSAN VMkernel

    • 虚拟机版本10

    image

    注意,为了让ESXi客户机有2个网络适配器,在ESXi主机(本例中起名为esxi01)上的网络配置至少要配置2个不同的端口组,我将这2个端口组分别配置在了2个不同的vSwitch上:

    • vSwitch0,默认vSwitch,配置有管理网络(VMKernel)和VM Network 10端口组

    • vSwitch2,新增的vSwitch,配置有VM Network 20端口组

    • 此外,我还因为有iSCSI存储,因此配置了2个iSCSI的VMKernel分别在vSwitch1和vSwitch2上。

    vSwitch0和vSwitch2的配置截图如下:

    image

    image
    这里有一点要说明的是,如果仅为了vsan网络的通信,vSwitch2可以没有上联的物理适配器,我的截图里面配置了上联的物理适配器是因为我还有一个iSCSI2的VMkernel需要使用。

    安装3台虚拟机的过程就不赘述了,只要你按照我昨天的文章来操作,就可以顺利完成。安装完之后,照例是配置静态IP地址、FQDN主机名、禁用IPv6、DNS并开启SSH和ESXi SHELL以备之后在控制台输入命令行使用。  

    需要强调一次的是,在你的实验网络中,需要配置好一台域控制器,它同时也是DNS服务器,并事先在DNS服务器里面添加好静态的ESXi主机的DNS项。在我的实验环境中,它们是:

    • esxi55u01.home.lab – 192.168.10.31

    • esxi55u02.home.lab – 192.168.10.32

    • esxi55u03.home.lab – 192.168.10.33

    请在黄色DCUI界面(安装完ESXi主机的初次配置界面)里面测试一下网络,如果主机域名也能顺利解析,那就说明网络配置都完备了。DNS对于正确配置VMware集群来说非常重要。  

    接下去就是用vSphere Web客户端再次连接到vCenter(我的是vCSA),把这几台新安装的ESXi主机添加进来,添加的时候要用FQDN,不能是IP地址。    

    现在让我们来看一看这些ESXi主机的磁盘情况(左边窗格点选主机,在右边窗格分别选择管理,存储器和存储设备,如图所示),可以看见置备的3个磁盘都是非SSD。下面要克服的问题是怎样欺骗ESXi,让它以为其中一块40GB的磁盘是SSD,这样才能满足VSAN配置的必要前提条件。

    image

    让我们进入到这台vSphere ESXi主机的管理控制台界面,在命令行里面输入下面的2条命令,就可以完成:  

    # esxcli storage nmp satp rule add --satp VMW_SATP_LOCAL --device mpx.vmhba1:C0:T1:L0 --option=enable_ssd      
    # esxcli storage core claiming reclaim -d mpx.vmhba1:C0:T1:L0


    注意,这里的设备ID要填写你所想要变成SSD的那个磁盘,设备ID就是长的像mpx.vmhba1.C0:T1:L0的那个。    
    输入命令后,如果没有填错,是不返回结果的。回到vSphere Web客户端,刷新一下,你就会发现那个40GB的磁盘的类型变成SSD了。    
    image



    关于VSAN的配置,LeoXiao同学写的很不错,就不多罗嗦了。你可以参考他的文章。    
    http://sanshileilei.blog.51cto.com/3105269/1375551

    我借个图说明下顺序:    
    image  

    多说一句,为了测试NIOC功能,而这个功能只有在分布式交换机上才有,所以,建议VSAN集群配置的时候先配置好分布式交换机,并且把VSAN专用的VMkernel建在分布式交换机上。    








    最后,给大家看一下,要搭建一个VSAN集群的测试环境,在一台主机上至少要配置并开启5台虚拟机——包括1台域控制器,1台vCenter和3台ESXi主机(每台都配了8GB内存哦)。

    image

    虽然还是有一些网络传输上不稳定的问题,不过vsan数据存储好歹是建起来了。

    image

    最后的感慨是24GB内存的主机还是缺内存,555,性能还是好差啊~

    展开全文
  • 仅电销机器人这个方向就至少有近百家公司正在推广运营,商务上的需求非常强烈,整个市场都飞快地热闹起来。 那么一套可提供saas服务的电话机器人系统,你可能看起来功能并不复杂;个网站可注册、充值缴费开票,...

    2020年随着人工智能技术的深入发展,各行业积极拥抱人工智能,近半年来涌现了大量基于人工智能的呼叫中心业务服务商和集成商。仅电销机器人这一个方向就至少有近百家公司正在推广运营,商务上的需求非常强烈,整个市场都飞快地热闹起来。

    那么一套可提供saas服务的电话机器人系统,你可能看起来功能并不复杂;一个网站可注册、充值缴费开票,登录后在后台页面选择或者定制外呼话术脚本,新建外呼任务并导入外呼号码列表,明确外呼策略(时间段、重呼次数),设置外呼机器人数量(同时拨出几个号码),点击开始。然后就可以看着进度条走完,电话机器人按照列表一个个打电话出去。任务完成后,可以查看外呼结果列表。

    这些是电话机器人大致的工作流程。那么电话营销电销机器人,如何从0拥有一整套完美的电话机器人呢?我们总结出搭建一整套系统需要哪些技术和资源:

    1、运营商线路。提供方包括三大运营商、集成线路商。这是我们打电话出去要交电话费,必须涉及的供应商。

    2、呼叫中心设备。商用设备原厂包括avaya、genesys、cisco、华为等。集成商很多。开源的也有一些。在发起外呼任务时,saas平台是把外呼请求发给了呼叫中心设备经由运营商线路而拨出去的。

    3、AI能力。包含语音识别、语音合成、语义理解。这就是外呼机器人的核心组成部分,它能听懂接电话的人所说的话、表达的意思,并回复和引导对话。

    4、saas服务平台。即用户可以注册、登录、缴费、上传呼叫列表、发起外呼任务、外呼结果查看的网站。这个是终端用户唯一可以看得到的前端界面。
    在这里插入图片描述
    通过把握以上几点,不仅仅可以做电话机器人、可以做各类外呼,也可以做VR语音导航、呼入电话客等。有时候如商汤科技联合创始人林达华所说,“中间也存在风险:一边是从应用端往前走,一边是从技术端往后走,大家都想占领技术上的制高点。这需要大家建立一种信任和共赢机制,只有这样合作才能长久”。

    展开全文
  • 有一位老板去年开了一家轰趴馆,坐标重庆大学城,通过定位、引流、截流、回流结合一整套完善的商业模式,开业不到三个月生意就异常火爆,半年基本实现了回本,现在每个月净利润10万左右。 现在重庆这个城市已经有...
  • 本系列教程将引导你完成如下...第章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境。 申请地址为: http://www.sinacloud.
  • Android——SDK和API是什么意思

    千次阅读 2020-02-16 10:37:51
    IOS平台上就是XCode,系列的工具组合在一起,比如你在编辑器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是SDK,提供整套的...
  • 假设企业提出会员在积分兑换商城系统中用积分兑换了商品,那么这整套流程下来的逻辑设计是怎么样的呢?会员用户通过平台购买产品且评论晒单可以不断累积积分,当积分累积到定量后,可以在积分兑换商品的界面中,...
  • 现将我开发过程中用到的一整套记录如下,大部分都是我已经应用成功的链接,也感谢这些博主对我的帮助。 一、安装arcgis Desktop http://blog.csdn.net/bigemap/article/details/52860743 注意问...
  • 一般说的是一整套,这是一个泛指,也有可能是几个人自己的一些词语 spring全家桶就是spring一系列的产品
  • 安卓SDK和API是什么意思、SDK SDK就是kit,通俗讲就是工具箱。系列的工具组合在一起,能实现补全代码。自动错误检查之类的功能,比如点一下run,会调用编译器来自动编译,编译完后悔调用手机或者模拟器来...
  • 什么是SDK? SDK是什么意思

    万次阅读 多人点赞 2018-07-04 10:18:51
    其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。这是个覆盖面相当广泛的名词,可以这么说:辅助开发某类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到...
  • 计算机网络协议是有关计算机网络通信的一整套规则,或者说是为了进行数据交换而制订的规则、约定和标准。网络协议由语法、语义和时序三大要素组成。现在就跟着小编共同来学习一下:了解计算机网络协议的原则与要素...
  • 马甲包的字面意思给产品穿马甲,但是我认为马甲包更像...什么是马甲包 马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不
  • 关于如何建立个严谨数据库的问题,区块链的办法是:将数据库的结构进行创新,把数据分成不同的区块,每个区块通过特定的信息链接到上区块的后面,前后顺连来呈现一套完整的数据,这也是“区块链”这三个字的来源...
  • 以计算机为例,整机保修指的是除键盘,鼠标,耳机等外围设备及赠品以外的整套机子。“计算机”一般是指“电子计算机”,电子计算机(electronic computer)通称电脑,是现代种用于高速计算的电子计算机器。可以进行...
  • 马甲包的字面意思给产品...什么是马甲包 马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。 ...
  • 使用“#define _GNU_SOURCE” 是什么意思? 今天我必须要使用 basename 函数,使用man手册查询了一下这个函数 man 3 basename 发现个奇怪的信息 名称 basename,dirname-分析路径名组件 简介 #include <libgen....
  • 去IOE是什么意思

    千次阅读 2016-11-15 17:08:29
    IBM是服务器提供商,Oracle是数据库软件提供商,EMC则是存储设备提供商,三者构成了个从软件到硬件的企业数据库系统。由这三驾马车构成的数据库系统几乎占领了全球大部分商用数据库系统市场份额。除阿里巴巴这样...
  • 双路cpu是什么意思?下面就起来了解一下。双路CPU是指计算机系统用两块独立的物理CPU,整套系统靠主板协调两块同时工作,性能理论上是CPU的两倍,双CPU一般应用于服务器高计算要求的系统上,由于高工耗和高成本,且...
  • 它包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。OPC是以OLE/COM机制作为应用程序的通讯标准,而OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。 OPC 为...
  • PLM是一种企业信息化的商业战略,它实施一整套的业务解决方案,把人、过程和信息有效集成在一起,作用于整个企业,遍历产品从概念到报废的全生命周期,对产品数据信息进行管理,支持与产品相关的协作研发、管理、...
  • Swifticons Marketing 整套图标已经截取好。直接下载即可使用。 如何传,,缩略图~
  • 电脑编程C++是什么意思

    千次阅读 2008-10-20 09:37:00
    |||C++是种编程 C++是种不完全面向对像的语言~|||1.C++从零...编程 只需要按每个编程语言各自特点变下就OK了 都差不多 学会了C++其他什么JAVA的 |||c++是种编程语言而已 程序员|||我感觉学习编程C++挺基础的 Rel

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,216
精华内容 6,486
关键字:

一整套是什么意思