首页» Page 7

实现wordpress文章(面包屑)导航

in IT互联网 | 评论关闭

什么是面包屑导航?看下下图就知道了。对于以内容为主,分类层次较多的站点来说,一个清晰的面包屑导航设计是非常重要的,因为它总能帮助用户在需要跳出的时候,如同灯塔一样迅速找到方向,所以快观察下你的网站是否有相关方面的考虑和设计,如果还没有面包屑导航的话,请结合自己的主题,按下面讲述的方法来实现wordpress文章面包屑导航.

mbx

具体方法,将下面的带代码增加到functions.php中。

/* 面包屑导航 */
function dimox_breadcrumbs() {
  $delimiter = '»';
  $name = '首页'; //text for the 'Home' link
  $currentBefore = '';
  $currentAfter = '';
  if ( !is_home() && !is_front_page() || is_paged() ) {
    echo '
您当前位于: '; global $post; $home = get_bloginfo('url'); echo '' . $name . ' ' . $delimiter . ' '; if ( is_category() ) { global $wp_query; $cat_obj = $wp_query->get_queried_object(); $thisCat = $cat_obj->term_id; $thisCat = get_category($thisCat); $parentCat = get_category($thisCat->parent); if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' ')); echo $currentBefore . 'Archive by category ''; single_cat_title(); echo ''' . $currentAfter; } elseif ( is_day() ) { echo '' . get_the_time('Y') . ' ' . $delimiter . ' '; echo '' . get_the_time('F') . ' ' . $delimiter . ' '; echo $currentBefore . get_the_time('d') . $currentAfter; } elseif ( is_month() ) { echo '' . get_the_time('Y') . ' ' . $delimiter . ' '; echo $currentBefore . get_the_time('F') . $currentAfter; } elseif ( is_year() ) { echo $currentBefore . get_the_time('Y') . $currentAfter; } elseif ( is_single() ) { $cat = get_the_category(); $cat = $cat[0]; echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); echo $currentBefore; the_title(); echo $currentAfter; } elseif ( is_page() && !$post->post_parent ) { echo $currentBefore; the_title(); echo $currentAfter; } elseif ( is_page() && $post->post_parent ) { $parent_id = $post->post_parent; $breadcrumbs = array(); while ($parent_id) { $page = get_page($parent_id); $breadcrumbs[] = '' . get_the_title($page->ID) . ''; $parent_id = $page->post_parent; } $breadcrumbs = array_reverse($breadcrumbs); foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' '; echo $currentBefore; the_title(); echo $currentAfter; } elseif ( is_search() ) { echo $currentBefore . 'Search results for '' . get_search_query() . ''' . $currentAfter; } elseif ( is_tag() ) { echo $currentBefore . 'Posts tagged ''; single_tag_title(); echo ''' . $currentAfter; } elseif ( is_author() ) { global $author; $userdata = get_userdata($author); echo $currentBefore . 'Articles posted by ' . $userdata->display_name . $currentAfter; } elseif ( is_404() ) { echo $currentBefore . 'Error 404' . $currentAfter; } if ( get_query_var('paged') ) { if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' ('; echo __('Page') . ' ' . get_query_var('paged'); if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')'; } echo '
'; } }

然和在页面的相应位置填写调用函数代码就可以了。

代码作者博客地址:http://nook6.org.ru/

关键字: ,,

CSS自动限制文章中的图片尺寸

in IT互联网 | 5 条评论

经常更换wordpress主题,会有一个困扰,就是之前主题的内容区域宽度比较大,很多正文图片的尺寸可能是500px,而换了一个主题,内容区域的宽度比较小,假设是400px,这时原先的图片宽度都是500px,这样就会撑大整个容器,造成页面布局混乱,或者容器CSS加了overflow:hidden时,图片的右侧会被截去,显得很不协调,下面介绍的小常识是利用CSS等比例缩小图片,这样就可以完美的显示在你的新主题上了。

首先找到内容区域的样式,一般是.entry这个类,在style.css中增加以下代码就可以搞定了。

.entry img {max-width: 400px} 
.entry img { 
  zoom:expression( function(elm) {
  if (elm.width>400) {
  var oldVW = elm.width; elm.width=400;
  elm.height = elm.height*(400 /oldVW);
  }
  elm.style.zoom = '1';
  }(this));
}

根据你的主题内容区域的实际尺寸来设定图片最大宽度,只要小于等于这个宽度即可。将所有出现400px的地方改成你的宽度就好了。
转自:http://www.wheatv.com

关键字: ,

wordpress隐藏升级提示

in IT互联网 | 评论关闭

在functions.php里加上下面的代码:

add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );

关键字:

WordPress 3.+ 的自定义分类功能

in IT互联网 | 2 条评论

WordPress 3.+ 的CMS功能真是很完善了,上篇说到WordPress3+的自定义内容类型功能详解,创建自定义内容类型之后就可以在后台看到你的左侧菜单多出来了一组独立的选项,但是这组选项中却不包含分类选项,这么看来怎么都不像是CMS。现在就倒腾一下这个分类的功能怎么实现,具体效果见下图:

在这篇教程中,我们将讲解wordpress一个空前强大的功能:自定义分类法(taxonomy),wordpress自定义分类法可以让你强有力地将网站内容按自己需要的方式整理分类。虽然wordpress的分类法在2.3版本的时候就引入了,但是在3.0版本里,又被进一步改进了。

之前我们已经讲解过如何在wordpress内自定义文章类型,配合本教程的wordpress自定义分类法,就可以更好地用wordpress进行站点和主题开发。

1.什么是wordpress的分类法(Taxonomy)?

分类法是组织数据的一种简单形式,同样,wordpress的分类法也是组织网站内容的一种方式。可能你没有意识到这个概念,但其实你至少已经熟悉wordpress分类法中的一种,那就是标签(Tag)。标签就是wordpress分类法中的一种,文章可以通过标签联系起来,也可以通过标签查看和组织起来,另一个wordpress自带的分类法是分类目录(post categories)。

分类法让wordpress变得更强大,因为它可以让用户去帅选出他们需要的文章。自定义分类法,顾名思义就是让我们自己定义网站内容的组织形式,自定义分类法既可以运用在自定义的文章类型里,也可以运用在一般的文章和页面中。

下面举一些自定义分类法的例子:

  • 电影的放映年份来分类
  • 省份、邮政编码、等地名来分类
  • 优先级的高低来分类

从上面可以看到,你完全可以根据你的需要来对网站的内容进行自定义分类,如果你阅读过自定义文章类型,你会对之前的例子Event比较熟悉了。下面我们也将继续使用这个例子进行讲解。

我们将在Event这个自定义的文章类型里添加一个自定义的分类法:按事件地点(location)分类,这样我们就可以通过地点来查看事件文章了。这里为了统一代码,还是使用wordpress3.0的默认主题,并且假设你已经按照之前的例子制作出Event的文章类型了。

2.创建一个自定义分类法

和创建自定义文章类型一样,在wordpress创建自定义分类法也非常简单。下面是具体的代码:
[php]
add_action( ‘init’, ‘create_locations’ ); function create_locations() { $labels = array( ‘name’ => _x( ‘Locations’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Location’, ‘taxonomy singular name’ ), ‘search_items’ => __( ‘Search Locations’ ), ‘all_items’ => __( ‘All Locations’ ), ‘parent_item’ => __( ‘Parent Location’ ), ‘parent_item_colon’ => __( ‘Parent Location:’ ), ‘edit_item’ => __( ‘Edit Location’ ), ‘update_item’ => __( ‘Update Location’ ), ‘add_new_item’ => __( ‘Add New Location’ ), ‘new_item_name’ => __( ‘New Location Name’ ), ); register_taxonomy(‘location’,’event’,array( ‘hierarchical’ => true, ‘labels’ => $labels )); }

[/php]

把上面的代码粘贴到主题文件夹的functions.php中。register_taxonomy这个wordpress函数就是用来创建一个分类法,先解释一下传递给这个函数的参数。

location是这个分类法的内部名

event告诉wordpress哪个文章类型将使用这个分类法,在这个例子里,我们用的是之前创建的event的文章类型,你也可以将它替换成postpage,这样就可以将分类法用在一般的文章和页面上。也可以同时运用在多个文章类型上(通过数组)。

array(…)是传递给register_taxonomy的最后一个参数,它告诉wordpress分类法如何运行。具体来解释一下array里面的内容:

hierarchical是一个布尔值,用来确定分类法是否有等级,即是否有子分类。对于地点(location)分类这个例子而言,我们的父分类是楼号(Buliding),子分类是房间号(Room)。

labels是输出这个分类法的一些相关信息(由create_locations函数的$labels来定义)。

add_action( ‘init’, ‘create_locations’ )是指wordpress初始化时,会调用create_locations这个函数。

3.将自定义分类法添加到文章

地点(location)这个分类法已经创建完成了,现在登陆到wordpress的后台,在自定义的文章类型Event里创建一些地点。在Events的目录下,可以看到一个新的链接Locations,点击它就可以进入如下图的页面,你可以在此进行新增、编辑、删除地点等操作。

wp-自定义分类法

下面来创建一些地点:

1.Building1(父分类)

2.Conference Room A(子分类)

3.Conference Room B(子分类)

完成之后,你可以看到一张地点的表格,如下图:

wp-自定义分类法

这样,当你创建一个新的Event文章时,你会在创建页面的右边看到一个新的地点(location)选项(如下图),因为我们在创建wordpress自定义分类法location时,已经把它传递给了自定义文章类型Event。

wp-自定义分类法

选择一个地点,然后点击发布就可以了,整个界面操作和wordpress的选择分类目录很接近,如果是使用没有等级的分类法,那就和标签的方法有些类似。

我们已经创建完地点分类法,并且新建了一些地点,现在我们要在前台页面上显示这些地点,以便让用户看到。

4.在前台页面显示分类法信息

当打开一个单独的事件文章的页面时,我们要在这个页面上看到事件的地点。在之前的文章里,主题文件夹里创建过一个命名为single-event.php的文件,这是用来显示单独事件文章的页面模板。我们要把相关的地点信息加入到这个文件里。如果你要把地点信息加入到一般的文章和页面中,只需要编辑single.php或者page.php文件。

下图是还没有加入地点信息的前台页面样式:

wp-自定义分类法

我们可以用get_the_term_list这个wordpress函数来将地点信息加入到页面中,代码如下:
[php]
get_the_term_list( $id, $taxonomy, $before, $sep, $after )
[/php]

下面是对这个函数的简单解释:
  1. $id – 事件文章的ID号
  2. $taxonomy – 想要显示的分类法 (如’tag’, ‘location’等)
  3. $before –列表之前的html标签
  4. $sep – 列表项目间的分隔
  5. $after –列表之后的html标签

下面我们用get_the_term_list来显示事件文章的所有地点:
[php]
<?php echo get_the_term_list( get_the_ID(), ‘location’, "Location: " ) ?>
[/php]
这段代码中, get_the_ID()告诉wordpress使用当前页面的文章ID,使用location这个分类法,并在地点信息前加入文本“Location:”。

默认的分隔符号是分号,你也可以用“-”或者“|”来代替默认分隔符。同样地点信息会有一个超链接,点击这个超链接可以进入所有和这个地点有关的事件文章。(随后我们会讲解如何自定义这个页面模板)。

single-events.php文件中的参考代码如下:
[php]<div class="entry-meta">
<?php twentyten_posted_on(); ?>
</div><!– .entry-meta –>
<div class="entry-meta">
<?php echo get_the_term_list( get_the_ID(), ‘location’, "Location: " ) ?>
</div><!– .entry-meta –>
[/php]
现在在浏览器中刷新页面,你会看到如下效果:

wp-自定义分类法

5.通过自定义分类法来查看文章

现在我们已经在每一个事件文章页面里显示了地点分类法的相关信息,下面我们要制作一个页面模板用来显示和特定地点相关的所有事件文章。例如点击Conference Room A,就会进入一个页面,这个页面显示出所有和Room A有关的事件文章。

在还没开始之前,点击这个链接,会弹出如下错误提示:

wp-自定义分类法

了解这个错误原因,你可能需要具备一些WordPress模板等级的知识,当wordpress载入页面时,它会查找你的主题文件夹并根据命名载入正确的模板页面,当载入一个分类法页面时,wordpress的查找顺序如下:

taxonomy-[your_taxonomy_term].php > taxonomy-taxonomy.php > taxonomy.php > archive.php > index.php

wordpress会从左到右开始查找这些文件,如果文件不存在就跳到下一个文件。在wordpress3.0的默认主题TwentyTen中,第一个符合的文件是archive.php,因为前面三个文件在这个主题文件夹中都是不存在的,所以我们就会看到上面的错误页面。

因此如果我们要正确显示分类法页面,就要建立一个新文件,把它命名为taxonomy-location.php。这样wordpress在载入分类法页面时,就会启用这个模板。因为我们的分类法页面和标签(Tags)页面外观比较像,为了方便起见,把tag.php中的内容复制到刚刚建立的文件中。

先将下面的代码复制到get_header()的下面。
[php]
<?php $term = get_term_by( ‘slug’, get_query_var( ‘term’ ), get_query_var( ‘taxonomy’ ) ); ?>[/php]
这样,和分类法有关的信息(ID,名称等)都存储在变量$term中,我们就可以将它输出到任何地方了。在这里,我们想把这些信息放置在页面的顶部,所以将tag.php文件的代码替换掉。
原代码:
[php]
<h1 class="page-title"><?php
printf( __( ‘Tag Archives: %s’, ‘twentyten’ ), ‘<span>’ . single_tag_title( ”, false ) . ‘</span>’ );
?></h1>
[/php]
新代码:
[php]
<h1 class="page-title"><?phpprintf( __( ‘Events in Location: %s’, ‘twentyten’ ), ‘<span>’ . $term->name . ‘</span>’ ); ?></h1>

[/php]
完成后,当我们再次点击Conference Room A这个链接时,就可以看到如下显示地点分类的页面:

wp-自定义分类法

但是这个页面还没有任何的事件文章,我们要通过修改WordPress loop代码来查找自定义文章类型Events的文章,而不是一般的文章。添加下面的代码,用来进行自定义的wordpress查询:
[php]
<?php query_posts(array( ‘post_type’=>’event’, ‘location’=>$term->slug)); ?>

[/php]
query_posts用来查询和当前locoation相关的所有事件文章。但是当前Wordpress有一个bug(不知截至发稿前是否修正),任何和这个location有关的文章类型的文章都会显示出来。现在刷新页面会发现和Conference Room A相关的事件文章都列在页面上了,如下图:

wp-自定义分类法

如果你想在页面显示和Conference Room A的相关描述(Description)的话也非常简单,只需要把下面的代码复制到h1的标签下面即可。
[php]
<strong>Description:</strong><?php echo term_description( ”, get_query_var( ‘taxonomy’ ) ); ?>
[/php]
完成后页面如下:

wp-自定义分类法

6.总结

通过这个例子,你应该已经学会了如何在wordpress自定义分类法,我们再把流程总结一下:

  • 创建一个自定义的分类法(地点分类法)
  • 将自定义分类法加入到文章中
  • 在文章中显示自定义分类的信息
  • 通过自定义分类来查看和组织文章
  • 为自定义分类法创建一个页面模板

通过结合自定义文章类型(Custom post type)和自定义分类法(Custom taxonomy),wordpress在内容管理方面已经非常强大了。

原文链接:A Guide to WordPress Custom Taxonomy

关键字: ,,

RAID磁盘阵列详解

in IT互联网 | 评论关闭

基本上在机房里面混的同学对RAID都已经很熟悉了,当然也有一部分不熟悉但是也在机房混的。

RAID可分为级别0到级别6,通常称为:RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6。我们在此只记录常见的几种RAID方式:RAID0,RAID1,RAID0+1/RAID1+0,RAID5

一、概念

RAID0:RAID0并不是真正的RAID结构,没有数据冗余,RAID0连续地分割数据并并行地读/写于多个磁盘上。因此具有很高的数据传输率,但RAID0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效,将影响整个数据。因此RAID0不可应用于需要数据高可用性的关键应用。

RAID1:RAID1通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据。RAID1可以提高读的性能,当原始数据繁忙时,可直接从镜像中读取数据。RAID1是磁盘阵列中费用最高的,但提供了最高的数据可用率。当一个磁盘失效,系统可以自动地交换到镜像磁盘上,而不需要重组失效的数据。

RAID5:RAID5没有单独指定的奇偶盘,而是交叉地存取数据及奇偶校验信息于所有磁盘上。在RAID5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID5更适合于小数据块,随机读写的数据。RAID3与RAID5相比,重要的区别在于RAID3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID5中有”写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

RAID0+1/RAID1+0 其实就是RAID0和RAID1的不同组合

二、详细介绍

1、RAID0

RAID0是具有提速和扩容的目的

在RAID0模式中,数据被分割为一定数量的数据块(Chunk)交叉写在多个硬盘上,一般的来说在RAID0系统中数据被分割的数量同RAID阵列所使用的硬盘的数量是有关的,比如RAID0中采用了3块硬盘,那么数据将会被分为三份依次的写入三个硬盘,通俗的说这种模式其实就是利用RAID技术让系统认为三块硬盘组成一个容量更大的硬盘,因为这个过程没有数据校验所以这种RAID模式是读写速度最快的一种。

RAID0并没有从安全性角度考虑,实际上,如果RAID0当中的一块硬盘坏了,所有数据都会损坏,并且没有办法恢复。这使得RAID0的安全性能非常差,所以很多用户出于安全考虑没有使用RAID0模式。虽然如此,RAID0毕竟是所有RAID方式当中速度最快的一种模式,如果RAID0模式当中有两块硬盘的话,那么RAID0的存储读取数据的速度会是单个硬盘双倍。,如果使用6块硬盘的话,那么理论速率就是单个硬盘的6倍。如果在RAID0模式当中使用不同的硬盘会造成两方面的问题,首先,RAID0的有效硬盘容量会是最小的硬盘的容量乘上硬盘的个数,这是因为如果容量的最小的硬盘存满了之后,RAID0依然会将文件平均分配到各个硬盘当中,此时便不能完成存储任务了;其次,如果RAID0当中的硬盘速度不同,那么整体的速度会是速度最慢的硬盘的速度乘上硬盘的个数,这是因为RAID0模式是需要将上一部的存储任务完成之后才能进行下一步的进程,这样,其它的速度快的硬盘会停下来等待速度慢的硬盘完成存储或者读取任务,使得整体性能有所下降。所以,在这里建议使用RAID0模式的用户最好选择容量和速度相同的硬盘,最好是同一品牌的同种产品。

因此RAID0在严格意义上说不是”冗余独立磁盘阵列”。RAID0模式一般用于需要快速处理数据但是对于数据的安全性要求不高的场合。这种RAID模式的特点是简单,而且并不需要复杂和昂贵的控制器。采用RAID0模式至少需要2块硬盘,最终得到的存储容量也是这两块硬盘的和。

RAID0的随机读取性能:很好

RAID0的随机写入性能:很好

RAID0的持续读取性能:很好

RAID0的持续写入性能:很好

RAID0的优点:最快的读写性能,如果每块硬盘拥有独立的控制器性能将会更好。

RAID0的缺点:任何一块硬盘出现故障所有的数据都会丢失,大部分的控制器都是通过软件实现的,所以效能并不好。

2、RAID1

RAID1模式是让组成RAID1模式的硬盘互为镜像,当你向硬盘中写入数据的时候,两个硬盘同时存储相同的数据,这样即使其中一个硬盘出现了故障,系统利用另外一个硬盘一样可以正常运行。RAID1相对于单块硬盘来说它的数据读取性能会更好一些,因为当一块硬盘处于忙的状态时,RAID控制器可以去读取另一块硬盘中同样的数据,但是写入数据性能不但没有增长而且可能会有轻微下降。当其中一块硬盘出现故障之后,新的数据可以写入仍然能够正常工作的硬盘,当使用新的硬盘替换掉原来的硬盘之后,RAID控制器会自动的把数据复制到新的硬盘上。RAID1模式的最大特点就是冗余性高,但是由于大部分的功能是利用软件来实现的,所以它会增加处理器的负担。这种RAID模式非常适合对数据的安全性有极高要求的人。

在RAID1模式当中,所使用的硬盘最好是相同的,否则会出现浪费硬盘空间的情况。由于RAID1模式是将相同的信息写入到不同的硬盘当中,所以RAID1模式的有效硬盘容量是阵列当中容量最小的硬盘的容量。举例来说,如果RAID1模式中有一块容量为20GB的硬盘和一块容量为30GB的硬盘,那么总体的RAID1的有效容量是20GB,从此那块30GB硬盘上剩下的10GB容量就会被浪费。同时,如果两块硬盘的速度不同的话,那么速度较快的那块硬盘依然会停下来等待速度较慢的那块硬盘完成任务之后再进行下一步行动。

RAID1的随机读取性能:好

RAID1的随机写入性能:好

RAID1的持续读取性能:一般

RAID1的持续写入性能:好

RAID1的优点:数据高可靠性,易于实现,设计简单。

RAID1的缺点:比RAID0相比速度较慢,特别是写入速度,另外就是我们仅仅能使用一半的硬盘容量。

3、RAID0+1

这种RAID模式其实是RAID0和RAID1模式的组合,至少需要4块硬盘。其中任何两块组成一个RAID0磁盘阵列,然后两个RAID0磁盘阵列可以看成两个容量更大、速度更快的硬盘,它们再组成一个RAID1磁盘阵列。这样的系统保证了较高的磁盘性能和较高的数据安全性。当然缺点也是显而易见的就是成本较高,构造比较复杂。RAID0+1在容错性能方面仅次于RAID5,一般用于文件服务器等方面。

RAID0+1的随机读取性能:很好

RAID0+1的随机写入性能:好

RAID0+1的持续读取性能:很好

RAID0+1的持续写入性能:好

RAID0+1的优点:相对于单块硬盘具有更高的读写性能,而且大大提高了数据的安全性。

RAID0+1的缺点:成本较高,至少需要4块硬盘。

4、RAID5

RAID5使用至少三块硬盘来实现阵列,它既能实现RAID0的加速功能也能实现RAID1的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要的存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是1号硬盘和2号硬盘用来存储分割后的文件碎片,那么在下次存储的时候可能就是2号硬盘和3号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存储分割后的文件碎片另一块硬盘用来存储校验信息。

这个校验信息一般是通过RAID控制器运算得出的,通常这些信息是需要一个RAID控制器上有一个单独的芯片来运算并决定将此信息发送到哪块硬盘存储。RAID5同时会实现RAID0的高速存储读取并且也会实现RAID1的数据恢复功能,也就是说在上面所说的情况下,RAID5能够利用三块硬盘同时实现RAID0的速度加倍功能也会实现RAID1的数据备份功能,并且当RAID5当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。

RAID5是截止到目前我们所介绍的几款RAID模式中控制器设计最复杂的一种。RAID5可以应用在大部分的领域中,比如多用户和多任务环境中。目前的很多Web服务器和其它的Internet服务器都是采用这种形式的磁盘阵列,比如最近推出的Quantum Snap服务器就采用了外置式的RAID5磁盘阵列的设计。奇偶校验一般会占据大约33%的磁盘空间的容量,所以对于一个总容量为120GB的RAID5磁盘阵列而言,可用的空间将是80GB左右。不过这种磁盘阵列模式在一般的主板进程的RAID控制器中都不提供支持,比如Abit KR7A-RAID主板仅仅支持RAID0、RAID1、RAID0+1。当然只要采用校验码的方式,就会一定程度上影响写入性能,因此很多磁盘阵列厂商都在磁盘阵列中加入了写缓存来提高写入性能。

RAID5模式并不是一切都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都需要重新调用。同样,如果要做RAID5阵列的话,最好使用相同容量相同速度的硬盘,RAID5模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘的数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。

RAID5的随机读取性能:非常好(当使用大数据块时)

RAID5的随机写入性能:一般,但是优于RAID3或都RAID4

RAID5的持续读取性能:好(当使用小数据块时)

RAID5的持续写入性能:一般

RAID5的优点:不需要专门的校验码磁盘,读取速度快,而且解决了写入速度相对较慢的问题。

RAID5的缺点:写入性能依然不尽如人意。

热交换和热冗余

在RAID系统中一般都具有热交换和热冗余能力。热交换允许在不关闭系统或电源的前提下更换故障硬盘,当然更换上的新硬盘也可以被系统动态的识别出来并且正确的配置和添加,而这些都不需要重新启动计算机。这样做的好处是勿庸置疑的,对于维护人员来说非常的简单,而对于很多应用场合,比如Web服务器等,用户并不希望服务器停机,这样造成的损失将是不可估量的。很多HP/DELL服务器产品和RAID磁盘阵列都具有热交换的能力。

热冗余一般用于不适于热交换的场合。这种设计一般是在故障出现之前就在计算机中配置了额外的硬盘,当有硬盘出现故障的时候,这块冗余的就可以自动替代故障的硬盘的位置,对于这样的系统在系统关闭之前是不能把损坏的硬盘拔下来的。热冗余虽然不如热交换方便,但是总比没有好一些。

小结

其实磁盘阵列的种类非常多,我们今天介绍的是部分基本的应用模式,在实际应用为了达到足够的性能和稳定,可以把各种RAID模式搭配使用,当然这样对于RAID控制器的要求会更高,磁盘阵列系统的成本也就更高。

服务器所采用的RAID一般是基于SCSI的,所以这样RAID系统的成本将会更加高昂。其实这个功能对于我们个人的应用还具有一定的距离,即使你拥有了一张整合了RAID控制器的主板,也需要至少2块硬盘(一般的要求这两块硬盘在容量、品牌、转速上都是一样的),对于个人用户来说这是一笔不小的开支。当然如果你有特殊的需要,比如需要假设一个工作站或者Web服务器,但是又不想花费太多的资金,那么IDE RAID还是一个不错的选择。这里需要提醒大家的是,一般的板载IDE RAID的处理器占用率较高,并且IDE RAID在部分应用中还不如SCSI硬盘。

关键字: ,,,

IP地址,天气,邮编,外汇等常用查询Web Service接口

in IT互联网 | 评论关闭

 

关键字: ,,

wordpress3.1 功能解释之二-文章样式功能

in IT互联网 | 评论关闭

wordpress3.1版本 正式发布,看过官方说明之后,渐渐发现wp越来越像CMS了。虽然增加的功能很多,但是国内的教程少之又少,纯英文文档对很多童鞋来说还是有一点点难度的。所以我会陆陆续续写下wordpress3的新增功能的具体用法,助人助己。前面写过一篇WordPress3+的自定义内容类型功能详解,这一篇则是介绍wordpress3.1的文章样式功能。

 

1.小窥wordpress3.1文章样式

文章样式一种meta信息,主题可以通过这些信息来定制文章的样式。简单地说,文章样式就是设计某篇文章表现形式的一种方式。利用文章样式功能,你 可以指定某一篇文章所显示出的格式效果。这个功能挖掘出了WordPress在微博方面的潜力,用户可以把视频、链接、图像、音频、引用文字等整合到一 处,并进行相应样式设计。

假设你发现某个外部网站的某篇文章很有意思,你想分享给你的读者。为了告诉读者你的分享,你得写一篇新文章并给出相关的外部链接,否则读者不知道这是篇什么类型的文章,他们要点开链接读完全文才可能了解你想告诉他们的内容。文章样式功能可以帮你解决这个问题。

这有点类似于微博,你可以像在微博上一样发表一些小段子,然后不用费很大功夫就可以为不同文章设定不同的样式。例如,当你发现一条值得分享的句子,就可以立即在自己的WordPress博客上分享出来,并且只需要一个点击动作,就可以突出显示这句话。

文章样式的主要目的就是让WordPress成为一个全方位的博客平台。

和文章缩略图、菜单、自定义背景等功能一样,文章样式也需要通过主题激活。这意味着,如果你的主题不兼容,那么你就没法使用这个功能。

警告:若要进行以下操作,最好熟悉HTML、CSS代码,并对WordPress循环函数具有一定了解。

打开主题的functions.php文件,加入以下代码:

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

注意:aside和galery只是列举出的两个可用的文章样式而已。可用的文章样式包括:

aside —— 通常没有标题,类似于社交网站上的状态更新

chat —— 聊天记录

gallery —— 图片库(多幅图片)

link —— 外部链接

image —— 单幅图片

quote —— 引用语句

status —— 简短的状态更新,通常限制在140个字符内,类似微博

video —— 单个视频

在functions,php中加入代码后,你会在文章编辑界面右侧的文章发布设置区看到一些新内容。

编辑完文章之后,你可以在这里更改文章的样式并点击发布,让文章以预先设置好的格式发布到前台。

但是我们并没有预先设置任何文章样式,因此即使你在下拉菜单里选择了新的样式,前台所显示的效果也和其他文章没什么区别。所以现在我们需要做的就是编辑文章的主循环。

我们会用到条件标签has_post_format()。

if ( has_post_format( 'aside' ) {
// code to display the aside format post here
} else if (has_post_format('gallery')) {
// stuff to display the gallery format post here
} else if (has_post_format('link')) {
// stuff to display the link format post here
}else {
// code to display the normal format post here
}

对开发人员来说,这或许算不上什么,但最终用户应该可以受益不少了。

 

关键字:

1 ... < 7 Older Entries> ... 23