关于计算机的启动以及巩固对Windows XP开机的加速

前几天原以为解决了Windows登陆慢的问题,后来发现问题还是没有彻底解决。
系统盘中windows\prefetch\下的文件删除掉之后,会自动再生,没几天,开机又很慢了。因此便更详细地了解了一下Windows的开机过程。

计算机的开启过程:

要说Windows的启动过程,最好还是往前追溯一下,从你按下开机按钮那一刻开始吧:

  1. 按下开机按钮之后,首先上场的是BIOS——基本输入输出系统,它是固化在集成电路内部的一组程序,但不同于电脑上其它的程序的是它是存储在ROM(Read Only Memory,只读存储器)中,是属于硬件的一部分。刚打开电脑时你会看到它的踪迹,一般情况下它会首先扫描并检测电脑的各个硬件,一切正常之后就会根据CMOS中存储的启动优先顺序去寻找引导记录,通常情况下是在硬盘的MBR(主引导记录)里检查硬盘分区表,找到引导分区,然后把操作系统调入到内存中运行,即执行NTLDR(操作系统加载器)文件。
  2. 接下来NTLDR会把处理器从实模式(Real Mode)转换为32位保护模式(Protected Mode),然后读取boot.ini文件。接着装载内核,如Windows XP的内核是ntoskrnl.exe(在windows\system32文件夹里)。之后加载硬件抽象层(HAL),完成加载过程。
  3. 初始化内核之后Windows内核正式获得控制权,开始装载并初始化设备驱动程序、Win32子系统以及Windows XP服务。
  4. 接着用户登录,登录后XP会继续配置网络设备和用户环境。
  5. 最后播放开机音乐并且进入用户桌面,开机至此完成。

知道了开机的详细情况之后我们才能对症下药,解决开机速度慢的问题。

巩固对Windows XP开机的加速

在针对开机的过程进行调整之前先专门说一说windows\prefetch这个文件夹,前面一篇文章中提到过这个文件夹,它对Windows的启动速度有很大影响。当时我用了前面那篇文章的方法之后,开机速度明显快了。但才过了一两天,速度又慢了下来。

要解决这个问题还是先了解一下Prefetch到底是个什么东西,下面是网上搜索到的一点介绍:

Prefetch文件夹是从Windows XP操作系统开始后增加的一项新功能——预读取。微软的本意是利用预读取功能来提高系统性能、加快系统启动和文件读取的速度。但其中的文件会随着使用时间的增加而日益增多,而且都是一些以PF为扩展名的文件。这是因为我们每启动一个程序,Windows都会在Prefetch文件夹中留下一个索引(类似于Windows98中的Prolog文件夹),在开机时Windows XP就会将Prefetch文件夹中涉及到的常用程序读入内存(这个过程也就是启动时进度条滚动的时间段)。在这样的情况下,系统在新安装时大家或许没有感觉启动速度很慢,但是时间一长,Prefetch文件夹中生产的预读文件越多,系统启动时需要预读取的内容就愈复杂,系统启动变缓也就不足为怪了。

我的系统中安装的软件特别多,在开始菜单->所有程序中满满两条菜单,由上至下,系统不慢才怪呢。所以我的系统慢主要原因应该就是那大量不断出现的索引文件,下面用3种方式来解决这个问题:

1.禁止索引文件的产生

单击“开始”→“运行”,输入msconfig后回车即可打开系统配置实用程序。切换至“服务”选项卡,找到“Task Scheduler”这个项目。Task Scheduler可以说是产生垃圾索引文件的“罪魁祸首”,当它在后台运行时,就会将我们硬盘中随Windows启动的每一个程序都建立一个索引文件并放入Prefetch文件夹内。只要取消对该项的勾选,我们便可以为Prefetch文件夹“瘦身”了。
2.设置预读对象
因为Prefetch文件夹中包含了所有随Windows XP启动程序的索引,所以我们可以进行一定的设置,使得系统在启动时只读取其中的一部分内容,对未指定的内容不予读取。这样也能有效地加快Windows XP的启动速度。
单击“开始”→“运行”,输入“regedit”,打开注册表编辑器,并依次展开HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters子键,双击右侧窗口中的“EnablePrefetcher”键值项,即可打开编辑窗口并对Windows XP进行预读取设置了。具体数值所对应的预读设置如下:
0——取消预读功能;
1——只预读应用程序;
2——只预读WindowsXP系统文件;
3——预读Windows XP系统文件和应用程序。
在这里我们可将该值设定为“2”,即只预读取Windows XP自身的系统文件,忽略其他应用程序产生的索引文件。
3.清空Prefetch文件夹
第一步:建立批处理文件
新建一个记事本,在其中输入以下内容:
del %SystemRoot%\Prefetch\*.* /q,并将其保存为delpf.bat文件。
第二步:设置每次关机时执行清空操作
单击“开始”→“运行”,输入“gpedit.msc”启动组策略窗口,然后依次展开“计算机配置“→”“Windows设置”→“脚本”,双击右侧窗格中的“关机”选项,进入到关机属性对话框。点击“添加”按钮,将刚才建立的delpf.bat文件添加至关机任务中。这样,每次关机时Prefetch文件夹都会被自动清空,下次系统启动时便不需要进行预读取操作,速度当然如飞了!
解决了这个最大的祸害之后,我们可以针对开机的情况来进一步进行优化:
1、禁止没有用到的外设通过前面对启动过程的了解我们知道,XP在启动时会自动扫描硬件,所以如果在WinXP中禁用一些外设,可以有效地减少系统启动时需要调入的外 设驱动程序数量,从而加快系统的启动速度。如果你的电脑上没有USB设备,请在“设备管理器—通用串行总线控制器”中将所有的USB设备禁用。此法可以让 你的XP开机时间减少约十五秒。其次,如果你没有安装多个硬盘,也可以禁止某些IDE设备以加快启动速度。做法是:右键点击“我的电脑-属性”,然后点击 “硬件”接着点击“设备管理器”,在其中打开“IDE ATA/PATA控制器”(不同芯片略有差异),然后分别进入主要和次要IDE通道,选择“高级设置”,在这里找到“当前传送模式”为“不适用”的一项 (这就是闲置的IDE通道所对应的),将此项的“设备类型”设置为“无”,确定即可。另外还要注意:由于系统默认会自动读取光驱,因此启动时会对光驱进行 检测,如果光驱中放置了光盘,就会自动读取,如果是多媒体光盘那么读取花费的时间就会更长,同样延长电脑的启动时间。所以建议大家平时使用完光盘记得及时 取出来。

2、减少启动时加载的程序

选择“开始”菜单中的“运行”命令,在“运行”对话框中键入“Msconfig”,回车后会弹出“系统配置实用程序”对话框,选择其中的“启动”选项卡,该选项卡中列出了系统启动时加载的项目及来源,仔细查看每个项目是否需要自动加载,否则清除项目前的复选框, 加载的项目越少,启动的速度就越快。建议除了保留输入法(在启动项目中为ctfmon)和杀毒监测程序(比如RavTask)之外,其它的统统都禁止在启动时自动运行。要想更全面消灭开机自动运行程序,请参考这篇文章

3、手动设置IP地址前面已经讲到,XP系统会在开机之后自动检测电脑是否联入局域网,但是一般用户都是单机上网,并且在网络连接中基本上设置的都是自动获取IP地 址。如此以来,系统为了给该机指派一个IP地址就会搜索DHCP服务器,但是一般用户根本不会配置。这就造成每次开机之后,系统都会花很长的时间来搜索 DHCP服务器直到获得IP地址或者服务超时才会停止,这期间即使来到桌面,双击程序也没有任何反映。事实上只要为“本地连接”人工指派一个IP地址就可以简单的解决这个问题,避免Windows XP每次开机的自动网络检测,从而加速启动。具体的做法如下:右键点击“网上邻居”-选择属性,进入窗口后右键点击“本地连接”-选择属性,在这里双击 “Internet协议(TCP/IP)”,选择“使用下面的IP地址”然后输入一个IP地址(比如:192.168.0.1),子网掩码默认即可。(这 样做不会与您上互连网产生任何冲突,这个地址只是用在局域网内的)这样系统再次搜索就会很快的发现IP并快速进入系统。

4.关闭主题清减桌面
很多朋友都喜欢在自己的桌面上放上一个漂亮的背景,比如自己喜爱的某个明星的照片之类。可是漂亮是有代价的,那就是消耗了大量的内存,同时桌面上有太多图标也是一样。因为系统每次启动到显示桌面时,首先需要检查是否启用主题,一旦发现就会加载,很多的主题就这样吃掉了大量的内存(另外很多网友自己制作的主题并不完善,使用后会出现很多兼容问题造成系统故障)。同时系统还会查找和验证桌面快捷方式的有效性,因此快捷方式越多,所花费的验证时间就越长。建议大家平时尽量不要使用主题,最多设置一张漂亮的壁纸就可以了。然后将桌面快捷方式分门别类放到专门的文件夹中便于管理,加速启动一举两得。

通过上述多种途径,我想Windows启动慢应该不会再是一个问题了!


注1:从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务切换和保护任务环境; 4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离; 支持虚拟8086方式,便于执行8086程序。虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。
注2:硬件抽象层(Hardware Abstraction Layer)是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。

很多朋友都喜欢在自己的桌面上放上一个漂亮的背景,比如自己喜爱的某个明星的照片之类。可是漂亮是有代价的,那就是消耗了大量的内存,同时桌面 上有太多图标也是一样。因为系统每次启动到显示桌面时,首先需要检查是否启用主题,一旦发现就会加载,很多的主题就这样吃掉了大量的内存(另外很多网友自 己制作的主题并不完善,使用后会出现很多兼容问题造成系统故障)。同时系统还会查找和验证桌面快捷方式的有效性,因此快捷方式越多,所花费的验证时间就越 长。建议大家平时尽量不要使用主题,最多设置一张漂亮的壁纸就可以了。然后将桌面快捷方式分门别类放到专门的文件夹中便于管理,加速启动一举两得。

【转】Windows自动启动程序的十大藏身之所

一、当前用户专有的启动文件夹

这是许多应用软件自动启动的常用位置,Windows自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:\Documents and Settings\<用户名>\「开始」菜单\程序\启动,其中「<用户名>」是当前登录的用户帐户名称。

二、对所有用户有效的启动文件夹

这是寻找自动启动程序的第二个重要位置,不管用户用什么身份登录系统,放入该文件夹的快捷方式总是自动启动——这是它与用户专有的启动文件夹的区别所在。该文件夹一般在:\Documents and Settings\All Users\「开始」菜单\程序\启动。

三、Load注册键

介绍该注册键的数据不多,实际上它也能够自动启动程序。位置:HKEY_CURRENT_USER\Software\Mi crosoft\WindowsNT\CurrentVersion\Windows\load。

四、Userinit注册键

位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\Current Version\Winlogon\Userinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个user init.exe,但这个键允许指定用逗号分隔的多个程序,例如「userinit.exe,OSA.exe」(不含引 号)。

五、Explorer\Run注册键

和load、Userinit不同,Explorer\Run键在HKEY_CURRENT_USER和HKEY_LOCA L_MACHINE下都有,具体位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run,和HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer \Run。

六、RunServicesOnce注册键

RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。Ru nServicesOnce注册键的位置是:HKEY_CURRENT_USER\Software\Microsoft\Wi ndows\CurrentVersion\RunServicesOnce,和HKEY_LOCAL_MACHINE\SOF TWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce。

七、RunServices注册键

RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。 RunServices的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows \CurrentVersion\RunServices,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices。

八、RunOnce\Setup注册键

RunOnce\Setup指定了用户登录之后运行的程序,它的位置是:HKEY_CURRENT_USER\Softwa re\Microsoft\Windows\CurrentVersion\RunOnce\Setup,和HKEY_LOCA L_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ Setup。

九、RunOnce注册键

安装程序通常用RunOnce键自动运行程序,它的位置在HKEY_LOCAL_MACHINE\SOFTWARE\Mic rosoft\Windows\CurrentVersion\RunOnce和HKEY_CURRENT_USER\Soft ware\Microsoft\Windows\CurrentVersion\RunOnce。HKEY_LOCAL_MAC HINE下面的RunOnce键会在用户登录之后立即运行程序,运行时机在其他Run键指定的程序之前。HKEY_CURREN T_USER下面的RunOnce键在操作系统处理其他Run键以及「启动」文件夹的内容之后运行。如果是XP,你还需要检查一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersio n\RunOnceEx。

十、Run注册键

Run是自动运行程序最常用的注册键,位置在:HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\Run,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。HKEY_CURRENT_USER下面的Run键紧接 HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在处理「启动」文件夹之前。

[收藏]wordpress主题设计基础

想了解一下怎么样设计wordpress的主题,Google出这篇文章,收藏下来学习学习。

来源:http://www.freerainbow.cn

一、开发工具及相关资源
本地WordPress架设:Xampp(WordPress官方也推荐了这一软件组合,方便实用)。
代码:Dreamweaver(我选择它仅仅是出于习惯,你完全可以选择一个更称手的)。
图像:Photoshop、Illustrator、Fireworks之类之类。
版本控制:Google Code,在教育网利用svn往google code上传东西实在是太慢了,不过还是推荐。
浏览器测试:Firefox(当然,少不了Web Developer Toolbar)、Internet Explorer 7、Mutiple IEs(包含可独立运行的IE3——IE6)、Opera、Swift(基于WebKit引擎的浏览器,用于Safari兼容性测试)。
相关站点:
WordPress Codex
WordPress Hooks
WordPress Theme Viewer

二、WordPress主题结构——模板文件及其调用
传统的网页通常使用HTML来控制页面结构,并通过样式表(CSS)来控制页面的表现。WordPress也使用样式表来控制网页的表现,但其页面内容则 是由几个模板文件(Template Files)共同构建而成的。其中一些模板文件是全局性的,比如头信息和页脚模块,而有一些则只用于特殊场合。    这些模板文件通常由XHTML和简单的PHP代码构成,只要你有一些基本的网页知识,并且知道什么是“if…else…”,就不用太担心代码问题——当 然,掌握一些基本的XHTML、CSS、PHP和Javascript知识,还是大有好处的。在文章中,我会尽量少涉及模板之外的代码,很多东西,不是拿 来谈论的,比如网页标准,我们遵循它,使用它,就可以了。我们习惯性的将网页分解为 “头信息(Header)”、“内容(Content)”、“侧边栏(Sidebar)”、“页脚(Footer)”这几个主要部分,而这也是主要 WordPress模板文件划分的依据。通常一个普通的WordPress主题会包含一下几个模板文件:样式表:style.css
头信息模块:header.php
内容模块:index.php、page.php、single.php、archive.php、search.php、404.php
侧边栏模块:sidebar.php
页脚模块:footer.php
评论模块:comments.php
搜索表单模块:searchform.php
其中,style.css用于定义主题的外观;头信息模块定义了网站的基本信息,比如标题、关键词等等;站点的主要内容使用index.php输 出,page.php用于输出分页内容,而single.php则被用于单篇汇整,404模块用于返回站点404错误信息;sidebar.php包含了 网站的一些次要内容,比如订阅、分类、链接等等;页脚信息通常会包含站点的版权等相关信息;而其他模块所含内容视情况而定,比如comments.php 用于控制评论输出,而searchform.php则包含了搜索表单。当然,WordPress也允许用户调用自己定义的模块。注意:当 archive.php和search.php不存在时,WordPress会自动调用index.php中的内容,因此这两个模板文件已经不是必需的 了,在此不作介绍。

在WordPress中,主要的模板文件都有自己专用的调用代码:
style.css:<?php bloginfo(’stylesheet_url’); ?>
header.php:<?php get_header(); ? >
sidebar.php:<?php get_sidebar(); ? >
footer.php:<?php get_footer(); ? >
comments.php:<?php comments_template();? >
而其他辅助模块则可以使用相关语句来调用,比如你要在侧边栏里调用搜索模块,就可以在sidebar.php的相关位置输入:<?php include (TEMPLATEPATH . ‘/searchform.php’); ?>该语句也可用于调用你自己创建的模板文件。举个例子,比如在index.php中,我们需要头信息、正文、侧边栏和页脚信息,那么该模板的结构 就是:
<?php get_header(); ?>
…主体内容…
<?php get_sidebar(); ?>
<?php get_footer(); ?>先写这么多吧,

参考文献:
Stepping Into Templates
海豚的WordPress Theme教程 part1

三、模板文件解析
首先提一下WordPress的模板标签(Template Tags)。WordPress提供的模板标签十分丰富,你几乎可以利用它们把主题做成任何你想要的样子。了解并掌握重要标签的形式和用法是进行 WordPress主题开发的重要环节。WordPress Codex给出了大部分Template Tags的说明,我就不做重复劳动了。

进入正题,我们以WordPress Default 1.6为例,尽可能详细的分析模板文件中所用到的相关代码及技巧。

3.1    Header.php
我们从头开始好了。打开Header.php,在这里我们可以看到不少常用的模板标签,其中<?php language_attributes(); ?>是WordPress 2.1新增加的标签,用于在头部输出“lang=’zh-CN’”这样的语言标记,站点语言可以在后台定义。    在这里,你可以看到<?php bloginfo() ?>是一个被使用多次的模板标签,用于显示一些站点的相关信息,比如标题、网页类型、字符集、样式表链接、Rss链接等等。其用法 是:<?php bloginfo(’show’); ?>Show是你想要显示的内容,可以是:name、description、url、charset、stylesheet_url等等,另 外,<title> </title>之间的代码用于输出网页的标题,先看WP默认模板的标题输出:除了用<?php bloginfo(’name’); ?>输出Blog的名字之外,该模板还使用了”is_single()”函数来判断当前页面是否是单篇汇整页面,如果是,则输出<?php if ( is_single() ) { ?>…<?php } ?>之间的语句。    这是一个非常常用的技巧,它允许你使用一段代码控制不同页面的输出效果,简便且灵活。除了is_single()之外,常用的还有:is_home()、 is_page()、is_paged()、is_archive()、is_search()、is_404()、is_tag()。意思都很好理 解,is_paged()就是某个存档的除第一页外的后n页(这个解释很别扭,俗称“上一页”…) 如果非再要举个例子,那就来一个豪华的,K2的 theloop.php。有别于普通WP模板按网页结构和存档性质划分模板文件的方法,K2使用theloop.php来定义全部页面的正文内容输出,主 要手段就是通过上面提到的那些函数来判断当前页面的性质以输出相应的内容。尽管原理很简单,但这种处理模板文件的形式大大简化了代码编辑工作,因为你只需 要通过一个模板文件中的几行代码就可以改变几乎任何一个页面上的内容。如果你想要某页面不显示某些内容,只要在is前加上感叹号表示否定即可,

例如:
<?php if ( !is_home() ) { ?>…<?php } ?>

最后,在</head>之前,一定会有一个<?php wp_head(); ?>,wp_head()用于获取一些插件或者主题所需的功能,这些功能通常是在后台就定义好的,比如在一些主题和插件里你可以看到 add_action(’wp_head’, ‘函数名’);这样的语句。大部分主题将导航栏也放在header.php中,就简单提一点:WordPress对当前页定义的CSS Class是current_page_item,而其他页面则是page_item,也就是说,你可以在CSS中定义 current_page_item和page_item以区分当前页和其他页面的样式。

比如:li.current_page_item {

}
li.page_item {

}wp_list_pages()也是一个很有讲究的模板标签,具体用法参见Codex。

参考文献:
Template Tags: bloginfo
Hooks: wp_head
The Loop

3.2    Index.php
以WordPress默认模板的index.php为例。我们先来看看它的结构:首先,通过<?php get_header(); ?>获得头信息;然后是一个循环体(The Loop,不知这样叫对不对);最后通过<?php get_sidebar(); ?>和<?php get_footer(); ?>加载侧边栏和页脚。熟悉The Loop的用法能够让你随心所欲的控制文章的输出,因此我们来着重了解一下The Loop:       WordPress使用一个循环体来控制正文内容的显示,文章将按循环体内代码所定义的格式输出到当前页面上。部分模板标签必须在循环体内使用,如每篇文 章的标题(the_title()),时间(the_time())和分类(the_category()) 。

简单表示如下:<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
…找到相关内容则按格式输出正文…
<?php endwhile; else: ?>
…否则输出错误信息…
<?php endif; ?>      The Loop的用法非常灵活,比如你可以将其和分类标签结合起来以限定某个页面或某一部分只显示某个或几个分类的内容,这就是一个最简单的Asides。有兴 趣的自己不妨找找相关插件或模板来看看。我在这里仅举两个简单的例子。
比如,如果你想要某一页面只显示分类x(x代表该分类的ID)的内容,

你可以这样写:<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if ( in_category(’x’) ) { ?>
…正文内容…
<?php } else { ?>
…其他内容…
<?php } ? >
<?php endwhile; else: ?>
…出错信息…
<?php endif; ?>

进一步,来看一个Asides的例子。假设你需要在某个页面的某一位置(比如侧边栏)输出某个分类的前x篇文章,你可以这样做:

<?php $temp_query = $wp_query; ?>
<?php query_posts(’category_name=分类名字&showposts=x’); ?>
<?php while (have_posts()) : the_post(); ?>
…Asides内容…
<?php endwhile; ?>
<?php $wp_query = $temp_query; ?>

在这里,我们在Asides的循环体重使用变量temp_query来代替wp_query,以避免同正文部分的循环体发生冲突。更多的例子你可一在文后的参考文献中找到,代码大同小异。另外Durable的index.php也是一个不错的样板。

3.3    Sidebar.php
侧边栏的内容没有太多好说的,记住如果你想自己的侧边栏在不同页面显示不同内容,可以用3.1中提到的方法。我倾向于让用户使用Sidebar widgets或SBM(Sidebar Modules)来自行定义侧边栏的内容,这就是为什么Unnamed默认侧边栏内容偏少的原因。在这里简单解释一下如何让主题支持Sidebar Widgets或SBM:
首先你需要建立一个functions.php,这个文件通常用于控制主题的后台内容,包括一些后台功能和管理页面。然后在functions.php中加入下述代码:
if (function_exists(’register_sidebar’)) { register_sidebars(x,array(’name’=>’Sidebar %d’)); }x代表sidebar的数量。

最后,修改Sidebar.php,以双侧边栏为例:
<div id=”sidebar”>
<div class=”left-sidecolumn”>
<ul>
<?php if ( function_exists(’dynamic_sidebar’) && dynamic_sidebar(1) ) : else : ?>
<li> … </li>
<?php endif; ?>
</ul>
</div>
<div class=”right-sidecolumn”>
<ul>
<?php if ( function_exists(’dynamic_sidebar’) && dynamic_sidebar(2) ) : else : ?>
<li> … </li>
<?php endif; ?>
</ul>
</div>
</div>

参考文献:
The Loop
Widgetizing Themes

四、杂项

4.1    Custom Image Header

Custom Image Header 是WordPress 2.1增加的一个新功能,支持该功能的主题允许用户自定义Header图片。所以今天贫僧来介绍如何让施主们的WordPress主题支持该牛逼闪闪的功 能。本文中涉及的相关代码可以在Unnamed Special Edition 的functions.php中找到。首先,各位施主请看如下几行代码,它们分别定义了header部分的字体颜色、默认背景图片以及图片尺寸:
define(’HEADER_TEXTCOLOR’,’FFFFFF’);
define(’HEADER_IMAGE’,’%s/images/bg_header.jpg’);
define(’HEADER_IMAGE_HEIGHT’,150);
define(’HEADER_IMAGE_WIDTH’,960);

这段代码告诉我们一个道理:Unnamed SE的header部分字体颜色为白色(FFFFFF),默认背景图片为bg_header.jpg,背景图片尺寸为960*150。再来看下面这段代 码,在这里,函数custom_css()包含了定义主题header样式所需的CSS,它会被输出到模板的头部(如果施主不想在页面头部生成过多代码, 可以考虑和Unnamed一样将CSS写入php文件,不过贫僧不推荐这样做,尽管好处大大地,但弊端也很是不少)。

<?php
function custom_css() {
?>
<style type=”text/css”>
#header {
height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;
background:url(<?php header_image() ?>) transparent repeat top center;
}
<?php if (get_header_textcolor()==’blank’ ) { ?>
#header h1, .description {
display:none;
}
<?php } else { ?>
#header h1 a,.description {
color:#<?php header_textcolor() ?>;
}
<?php } ?>
</style>
<?php } ?>

其中,#header部分定义了header图片的高度(HEADER_IMAGE_HEIGHT)和url(header_image());而后一部 分则判断header的文字部分是否需要隐藏;header_textcolor()则用于定义字体颜色。用户们都喜欢所见即所得,所以,为用户着想的施 主们需要在管理页面中设置当前header样式的预览。为了与模板中的样式保持一致,我们用admin_header_style()定义预览部分的样式 (代码意义与前一段基本相同):<?php function
admin_header_style() {
?>
<style type=”text/css”>
#headimg {
background-image:url(<?php header_image() ?>);
background-repeat:repeat !important;
height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;
width:<?php echo HEADER_IMAGE_WIDTH; ?>px;
margin:0 0 10px;
}
#headimg h1 {
font-size:2.2em;
text-align:left;
margin:0;
padding:45px 0 0 20px;
}
#headimg h1 a {
color:#<?php header_textcolor() ?>;
text-decoration: none;
border-bottom: none;
}
#headimg #desc {
color:#<?php header_textcolor() ?>;
font-size:1em;
text-align:left;
padding:0 0 5px 20px;
}
<?php if (’blank’ == get_header_textcolor()) { ?>
#headimg h1,#headimg #desc {
display:none;
}
#headimg h1 a,#headimg #desc {
color:#<?php echo HEADER_TEXTCOLOR ?>;
}
<?php } ?>
</style>
<?php } ?>

最后,我们通过add_custom_image_header()来输出CSS到主题和管理页面的头部。<?php add_custom_image_header(’custom_css’, ‘admin_header_style’); ?>这样,当该WordPress主题被激活时,系统会自动加载Custom Image Header管理页面,用户可以通过该页面上传和处理header背景图片。更多内容可以参考/wp-admin/custom-header.php。 4.2    后台管理页面    先来介绍一下今天的主角——Wordpress Theme Toolkit 和 Unnamed 0.4.1:Wordpress Theme Toolkit 是著名 WordPress 达人 Ozh 开发的专用于编写 WordPress 模板后台管理页面的工具(Ozh 开发了很多经典且实用的WordPress插件和工具,施主可以在这里找到更多好玩的东西)。尽管已经有很久没有更新,但经过测试,发布于九个月前的、将 该工具性能压榨殆尽的 Unnamed 0.4 至今仍能非常稳定的工作在 WordPress 2.3-Alpha 平台下,足见 Theme Toolkit 的经典程度。Download Unnamed 1.22
对比 Unnamed 1.2 的后台管理页面,施主们可以发现,这九个月来,Unnamed 虽然一直在进步,但其基本框架是在 0.4 时代就定型了的。从Unnamed 0.5 起,贫僧开始自己编写后台页面,代码最多时达到700余行,而 0.4 的后台管理页面只有区区200行代码,简练易读。贫僧认为,对于初学者,Theme Toolkit 提供的方便而强大的开发环境可以让施主事倍功半。OK,现在我们来介绍 Theme Toolkit 的使用方法。1. 调用themetoolkit.php
首先,我们利用下面这条语句将所需的themetoolkit.php加入functions.php中:
<?php include(dirname(__FILE__).’/themetoolkit.php’); ?>然后,我们来看如何在 functions.php 定义模板所需要的功能:
<?php
themetoolkit(
‘mytheme’, array(
‘option1′ => ‘Text for Option One’,
‘option2′ => ‘Text for Option Two’,
‘option3′ => ‘Text for Option Two’,
),
__FILE__
);
?>

其中,mytheme 为主题的别名,这无关紧要,数组 array() 中的内容才是关键,

第一部分 “option1”为模板某个选项的名称,而 “=>” 之后的部分定义了 option1 的说明文字、样式(比如单选框、复选框、输入框和文本框,不支持下拉选框)和选项状态(比如enable或者disable)。

2. 单选框 (radio)   来看Unnamed 0.4中控制Live Search选项的代码:
‘live_search’ => __(’Live Search’,’unnamed’).’ {radio|enable|’.__(’Enable Live Search(Default)’,’unnamed’).’|disable|’.__(’Disable Live Search’,’unnamed’).’} ## ‘   这是一个典型的单选框应用,__(’…’,’unnamed’) 为本地化代码请直接忽略,我们将代码化简一下得到:
‘live_search’ => ‘Live Search {radio|enable|Enable Live Search(Default) |disable| Disable Live Search} ‘   这便是调用单选框的基本格式,即:
‘选项名称’ => ‘选项标题 { radio | 选项1 | 说明文字1 | 选项2 | 说明文字2 }’

3. 复选框 (checkbox)复选框的调用方法基本类似:
‘选项名称’ => ‘选项标题 { checkbox | 选项1 | 说明文字1 | 选项2 | 说明文字2 | 选项3 | 说明文字3… }’

4. 输入框 (input field)施主可以在Unnamed 0.4中找到如下代码,它通过输入框来定义Unnamed文字字体的大小:
‘font_size’ => __(’Text Size’,’unnamed’).’ ## ‘.__(’Type in pixel size of the text. ‘,’unnamed’)我们很容易看出输入框的调用格式为:
‘选项名称’ => ‘ 选项标题 ## 说明文字 ‘

5. 文本框 (textarea)文本框的调用格式为:
‘选项名称’ => ‘选项标题 {textarea|行数|列数} ## 说明文字’

6. 设置默认值
我们需要为各个功能设定它们的默认值,开看看Unnamed是怎么做的:if (!$unnamed->is_installed()) {
$set_defaults[‘live_search’] = ‘enable’;
$set_defaults[‘ajax_commenting’] = ‘enable’;
$set_defaults[‘sliding_menu’] = ‘enable’;
$set_defaults[‘header’] = ‘header’;
$set_defaults[‘sidebar_align’] = ‘right’;
$set_defaults[‘width_type’] = ‘3′;
$result = $unnamed->store_options($set_defaults);
} 注意$unnamed为模板的别名,即前面的”mytheme”,代码很好理解,就不多解释了。

7. 利用函数控制和输出功能
在了解如何调用各种样式来控制模板功能之后,我们需要将这些功能添加到模板中去,我们需要自己编写一些简单的函数来控制和输出这些功能。比如,当 Live Search 选项为 enable 时,模板的 Live Search 可用,否则禁用。在模板中,这就相当于是否加载 livesearch.js。九个月前的贫僧是这样做的:在 functions.php 中,定义 unnamed_livesearch() 函数,判断 live_search 选项是否为 enable,若是,则返回真值。function unnamed_livesearch() {
global $unnamed;
if ($unnamed->option[‘live_search’] == “enable”) {
return true;
} else {
return false;
}
}

在 header.php 中施主可以看到如下代码,当 live_search 为 enable 时,即 unnamed_livesearch() 的值为真时,调用livesearch.js.php,Live Search 功能被加载,否则该功能被禁用。
<?php if(function_exists(’unnamed_livesearch’) and unnamed_livesearch()) { ?>
<script type=”text/javascript” src=”<?php bloginfo(’template_directory’); ?>/js/livesearch.js.php”></script><?php } >    实际上施主还可以写的更简单一些。    还可以利用 Theme Toolkit 来改变模板的样式,比如 header 图片,字体,色彩,宽度等等,具体施主可以看unnamed_options_css () 这个函数是怎么写的,由于和上一节 Custom Image Header 类似,在此就不赘述了。8. 其他
Theme Toolkit 会自动生成删除选项,令施主们没有后顾之忧。施主还可以对themetoolkit.php做一些改动,让它符合自己的特定需求。如果有兴趣自己编写后台 管理页面,贫僧强烈建议施主去读 Codex 上的 Plugin API 及其他相关文章。参考文献:
Wordpress Theme Toolkit

Twitter Weekly Updates for 2009-10-18

  • bit.ly is down. #
  • 刚在天上看到有一闪一闪的东西,但不是飞机,移动得很慢,是不是UFO啊!是在安贞桥这里看到的。晚上光线不行,用iPhone拍不到。 #
  • 才几天没上推,itweet.net也被GFW了? #
  • 刚才又在外面看了一下,UFO不见了,太遗憾了,都没拍到照片。 #
  • 收藏 RT @rtmeme RT @EnochLu RT @lawlee: 这个firefox插件很有用,可以设置自动将http网址转为https,于是twitter的许多第三方服务就能正常使用了 http://is.gd/4hFkZ #
  • 睡觉,在中国上个网太让人恶心了,太没度量了,什么都封! #
  • 我从昨天开始,正式相信僵尸了。http://bit.ly/KBiiw #
  • 好久没人说过我像学生了,刚刚买了一个包背上,公交车售票员就当我是学生了。 #

Powered by Twitter Tools

Windows XP 系统 登陆慢 启动慢的问题的解决办法

最近我的XP系统开机总是很慢,登陆之后开机启动的程序倒是正常的,一个接一个都打开了。但是如果这时候打开“我的电脑”的话就会发现有个手电筒在那里一直扫啊扫的,就是不出现内容。还有就是网络连接的图标总是不出来。大约需要一分多钟之后一切才能正常。

在网上找了找,按照下面的方法试了试,效果很明显,在此分享一下。

解决办法:
一、首先,请升级杀毒软件的病毒库,全面杀毒,以排除病毒原因。什么?你没安杀毒软件!?——除非你是老鸟(此文大虾和老鸟跳过^_^),否则建议安装。What?盗版的,不能升级!?这个问题别问偶,自己想办法!
二、开始→运行,输入msconfig→确定。在打开的系统系统配置程序里,将一些不重要的服务以及启动程序关闭,重启电脑。
三、进入“我的电脑”——工具——文件夹选项——查看——取消“自动搜索网络文件夹和打印机”的勾选。
四、在Windows XP启动进入桌面后系统会暂时停滞一段时间,这时启动任何程序都会没有反应,这是因为Windows XP的DHCP Client服务正在为网卡分配IP地址,系统会暂时停滞一段时间。解决这个问题,只要在“控制面板→网络连接”里,用鼠标右键单击“本地连接”图标,然 后选择属性,在弹出的属性窗口(如图)的“常规”选项卡的列表里选择“Internet协议(TCP/IP)”一项,然后单击“属性”按钮。在弹出的属性 窗口中,选择“使用下面的IP地址”选项,并在“IP地址”和“子网掩码”中分别输入“192.168.0.1”和“255.255.255.0”,最后 单击OK退出设置窗口。
开始→设置→网络连接→右击“本地连接”→属性→双击“Internet 协议 (TCP/IP)”→如果IP地址为空的话,点“使用下面的IP地址”指定IP地址和子网掩码。如可以将IP地址设为192.168.0.X(X为 1-255之间任一值),子网掩码可设为255.255.255.0→确定→确定。
五、清除预取目录,进入C:WINDOWSPrefetch文件夹,将扩展名为pf的文件全部删除,重启 .

一封员工要求加薪的英文信,以及老板的回信

员工的信

Dear Bo$$
In thi$ life, we all need $ome thing mo$t de$perately. I think you $hould be under$tanding of the need$ of u$ . worker$ who have given $o much $upport including $weat and $ervice to your company.
I am $ure you will gue$$ what I mean and re$pond $oon.
Your$ $incerely,
Marian $hih

第二天,她收到了老板的回信:

Dear Marian
I kNOw you have been working very hard.NOwadays,NOthing much has changed. You must have NOticed that our company is NOt doing NOticeably well as yet.
NOw the newspaper are saying the world`s leading ecoNOmists are NOt sure if the United States may go into aNOther recession. After the NOvember presidential elections things may turn bad.
I have NOthing more to add NOw. You kNOw what I mean.

Yours truly,
Manager

Twitter Weekly Updates for 2009-10-12

  • SMS4Twitter好是好,但是要用手机号注册,我有点担心。我听说卖手机号的事挺多的。 #
  • 不好意思,自己RT一下,不过确实是很好的网站,刚给一学员实战了一下,效果很好的。RT @lnzhaotian 两个学习外语的网站 | 赵金海的 http://bit.ly/3SMbMW #
  • I just created a list for English Teachers in China. Please RT if you want to be added into this list. http://tweepml.org/?t=14640 #
  • 刚在TweepML建了一个给中国的英语老师的列表,如果你想被加进去的话请RT这个推。http://tweepml.org/?t=14640 #
  • 周围都管制了哪还能有观众过去啊?RT @rtmeme: RT @cnwiki RT @yangpigui: 笔者根据录像仔细分析了参加庆典的所有人的角色。那天安门前几十万人中确实没有任何观众,连一位观众也找不到,绝对找不到!http://bit.ly/2fXzyJ #
  • 在英语培训界这些年我真为中国的英语学习者感到悲哀,因为很多人学不好英语不是他们自己的原因,而是中国的英语老师普遍素质太低了,唉。 #
  • Nice post. I might try some out. RT @SunyoungCho: RT @TweetRightBrain Ten Ways To Get Inspired – Invent Creativity http://bit.ly/10GnDd #
  • "现在"走得太快了,你用意识去追它好像永远都追不上。不过我猜测,当你不用意识的时候可能就和"现在"同步了。 #
  • I’d like to try it out. RT @englishraven: English iTalk – Simple, flexible, personalized online conversation program for adult English l … #
  • 强!RT @rtmeme: RT @yeahsky RT @isole: 这样一个淫荡的下午,远处飘来了一首淫荡的歌:舔咪咪,你笑着舔咪咪。好像那话儿开在唇缝里,开在唇缝里。在哪里,在哪里奸过你,你的笑容这样兽袭,我一时想勃起,啊,在梦里,梦里,猛力奸过你。| -_-!!! #
  • 中国的英语老师是不是没有上Twitter的呢?怪不得中国的学生英语这么差呢。 #
  • 是不是邮件客户端都会自动识别出服务器的名称呢?比如XX网发过来的邮件,地址我没有存过,但是会在发件人地址前有该网站的名字。我这儿公司有个服务器,用的hMail,发出去的邮件里会有服务器的名称,我不想显示这个,有谁知道怎么弄吗? #
  • 好多人都在批判国庆阅兵,但是仔细想想,不阅兵能行吗?大家都知道政府的习惯,到了60周年却不阅兵了,你觉得大家会说什么?仔细想想阅兵几乎是肯定的了。如果只是骂街,不做点什么,没什么意思。还是向那几位活跃分子多学习学习吧,不光骂,还干事。 #
  • google的Logo变成这个了http://bit.ly/14fzdv #
  • -你上网都干什么?-看新闻,弄博客。-有没有什么高尚点的?-讨论国家大事,为人类的进步做出贡献。-就没有什么实际点的?-在这个国家实际点就不高尚了。 #
  • 虚惊一场,还以为服务器又被人给黑了,到机房一看,原来是网线坏了。 #

Powered by Twitter Tools

Local man married to his blood sister committed suicide

Local man married to his blood sister committed suicide

by Princess Conswenna

Alex Wang, a 32-year-old man, was found dead in his bedroom by his neighbor Mrs. Li yesterday. According to Mrs. Li, Alex was a nice and helpful man, working in a IT company. He married a woman from the same hometown a month ago. Mrs Li went to their wedding and they were really a happy couple and so made for each other. Nobody could believe he would committ suicide a month later.

The police cordoned off the spot and found a letter from his newly married wife, in which, she said when she went back home after their wedding, she found out Alex was her brother, who was lost at the age of 2. Their mother recognized him from a honey moon picture taken on the sea shore, in which Alex showed his very special birthmark shaped like a three-leg horse on his chest. The mother went to talk to Alexes present parents to confirm it. It turned out it’s true. The happy couple are brother and sister. The bide was desperately sad and decided to leave without telling him where she was going.

Alexes parents came right after they recieved phone call from the police. The four parents cried together for the lost of both children.

两个学习外语的网站

学习一门外语时如果没有语言环境的话,当然离不开多听多看了。今天介绍两个很好的网站,一个是专门用来听的,另一个用来看(当然也包括听)。

第一个:Listen and Write

这个网站是专门用来做听写练习的。

举例说明,单击这里打开一个练习,首先会下载音频,完成后应该会跟下图所示一样:

Listen-and-Write-example可以看到,有两个播放按钮,第一个(Click play to listen all audio at once下面的)用来听全文。第二个(Click play to start dictation…下面的)用来做听写练习。操作其实非常简单,需要注意以下几点:

  • 开始听写后,你只需在下面的小方框里输入你听到的句子就可以了,不需要输入标点符号(有点不好的是像I’m都只需要输入im,我觉得不利于培养初学者正确的英文输入习惯)
  • 它会自动逐个字母地进行检查,如果输入错了它会自动删掉,如果正确的话会一个单词一个单词地显示在上面的大方框里
  • 在当前听的句子全听写完之前,音频会自动循环播放
  • 听写完成后,会在播放完当前这一句之后再播放一遍当前句,之后自动进入下一句
  • 以上说的是在默认情况下。你也可以更改一下如Auto Repeat和Auto Complete之类的选项,让它更符合你的需求。

Listen-and-Write-example注册后还可以查看自己的得分记录等等,也可以自己上传音频并且分段成练习题,和大家一起共享。

第二个:TVWeb360

这个是个在线看电视的网站,前面那个网站可以用做精学工具,而这个就可以作为泛学工具了。

你可以选择不同语言的节目,或者不同国家的节目,也可以根据不同类别来选择喜欢的节目。除了电视节目之外,还有一些地方的摄像头,你可以看到那些地方的实时画面。当然由于种种原因,可能有些节目可能收看不了,那就换台吧。

TVWeb360

那些疯子_The Crazy Ones

很多人都喜欢的一个Apple的广告。

下面是视频的文本,我简单翻译了一下。

Here’s to The Crazy Ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently.

献给那些狂放的人。他们是与常人格格不入的人。他们是反叛的人。他们是惹事生非的人。他们是往方孔里钉的圆木栓。他们是用不同的眼光看待事物的人。

They’re not fond of rules and they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. But the only thing you can’t do is ignore them. Because they change things. They push the human race forward.

他们不喜欢规则,他们不会尊重任何已有的东西。你可以引述他们的话,也可以反对他们。你可以美化他们,也可以诋毁他们。但你唯一做不到的事,是忽视他们。因为他们能改变事物。他们推动人类前进。

And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.

当有些人把他们当做疯子的时候,我们看到的他们是天才。因为那些发疯到认为自己能够改变世界的人,正是能够改变世界的人。