一个临时解决Wave很卡的方法

说明起来不直观,我把发明的过程贴这儿吧,要是对我这个Wave感兴趣,请搜 with:public by:lnzhaotian

大家这样来使用Wave吧!

以下是我们想到的办法,大家看完就知道怎么回事了:

lnzhaotian: 我突然感觉,如果两个人同时在线的话用Reply会出现太多窗口,要不就一人一个框。

——

Snower: 太多框会拖延浏览速度的,倒是可以在一个框里解决问题,但是不容易分清谁是谁

——

lnzhaotian:对,这个办法只适合同时在线的人对话。又有一个想法,用分隔线。

___

Snower:恩,我也可以编辑你的,这多节约资源

——

lnzhaotian:对,我都不用点Done。就可以等你编辑。

——

Snower:这样才是wave的真正目的吧,应该这样玩才对。

——

lnzhaotian:对,太好了我想稍微整理一下,我把之前我的删掉一些吧。

——

Snower:恩,这样的话,不卡而且能塞入更多的信息量,很不错

——

lnzhaotian:对,你编辑的时候也能看到你的名字,咱们同时说话的人也不至于分不清,再多几个人同时在线也行。

——

Snower:没错,但是我在打字的时候,你能打字吗?

——

lnzhaotian:我觉得应该能吧,不过我和朋友在同一个屋试过,可能是网速的原因,会有延迟,所以不太清楚咱们是不是真的在同时输入。我也试试。对,前一句和这句都是你在打字的时候我输入的。看来没问题。

——

Snower:能,我试了,你刚才打字的时候,我在弄分割线,是可以的,你看,现在就是这样,很好很好,终于体会到wave的别具一格了

——

lnzhaotian: Alfred是我朋友。太兴奋了,这种交流方式。

——

Alfred: 看你们打字不知道有没有卡,但是看起来是挺流畅的。

——

Snower:看你们的名字在串,很流畅。

——

Snower:很高兴认识你们

——

lnzhaotian:我觉得我们可以把这个Wave给新开一个,放到Public里,让大家都看看。还有,把自己说的话前面加上名字吧。不然完了之后别人可能会看不明白。

——

新 开wave可能好点,要不别人看起来乱的,用wave的形式聊天,这样自动有名字了就。

——

Snower:good idea,我也加上名字了。

——

lnzhaotian:我的用户名加上了。

——

lnzhaotian:方框还是太多了,看着不舒服。

——

Snower:没有这样的有乐趣

——

qqchurch:太有趣了,不过,不是google的本意吧,相信以后会稳定的

——

Snower:这应该是意图之一,应用于同时在线的人吧

——

lnzhaotian: 同时协作应该是Google的本意,但像咱们这样自己加线,自己加用户名应该不是他们的本意:) 我先下线了,这会儿得回家了,大概一个小时左右再上线,不知道到时候这个Wave什么样了:) See you guys in an hour!

——

Snower:See you,一小时之后,我就睡觉了:D 大家玩的愉快

——

lnzhaotian: 好吧,我已加你为Contact了,之后聊。

——

Snower:好的,我也加了,这里也是个大基地

——

草木:有创意。就是要手动加名字,而且不知道是什么时候发言的。

——

lnzhaotian: 对,是个问题,不过适合同时在线的。玩吧,看还有没有新花样

——

草木:惟一的愿望就是能快一点。刚才看见你打字,断断续续,不像演示视频那样噼里啪啦的显示,那样就有即时聊天的感觉了。

——

lnzhaotian: 就是,不过我是在打完“是个问题”几个字之后停下来了,因为我这边看到你还没打完。我和朋友在同一屋里试过,有滞后,不过还算流畅。

——

Ray:这个方法很不错,我已经在Twitter上推广了。

——

lnzhaotian: 哇,我太激动了!! 我Follow你之后我再RT你吧

——

Ray:我写的不知对不对,要不你把你的想法写下来?

——

lnzhaotian: 差不多就那样,我已经RT你了。我也不知道怎么描述会更清楚一些,要是Wave有个链接就好了,让别人直接过来看一下就明白了。

——

Ray:我看见了。希望更多人知道这个方法,我在wave上点开一个要点半天的额,郁闷。

——

lnzhaotian: 这样倒是很不卡了:) 哎?很不卡,这个说法有点意思

……

Twitter Weekly Updates for 2009-10-26

  • 有谁知道人为什么要穿内裤吗? #
  • Does anybody know why people wear underpants? #
  • 少数聪明人不断为多数愚蠢的人制定规则,愚蠢的人不断曲解与破坏规则,前者总得疲于改进规则。是不是没有愚蠢的人,这个愚蠢的现象也会停止呢? #
  • 我有Wave了!! #
  • What the hell?! Xmarks is blocked in China too!! #

Powered by Twitter Tools

人体器官寿命全解密:心脏20年更新一次

很多人担心衰老,但很少有人意识到,不管你的寿命多长,你身体的某些器官其实只有几周甚至几天的寿命,这是因为它们在不断进行自我更新的缘故。

肝的寿命:5个月

众所周知,由于血液供应充足,肝自我恢复和再生的能力惊人。这意味着肝把毒素排出体外的工作可以继续下去。如果你奇怪为什么就连酒鬼的肝功能有 时候也会提高的话,这是因为肝细胞只有150天左右的寿命。据悉,如果患者在手术中切除了肝脏的70%,只要2个月的时间,大约90%的肝就会长出来。

心脏寿命:20年

之前人们一直以为心脏不能自我更新。但是,纽约医学院的一项研究发现,心脏上布满不断自我更新的干细胞,它们一生中至少更新2到3次,而且更新一次约需20年。

肠的寿命:2到3天

肠上分布着肠绒毛,这些肠绒毛是小的手指状的触角,可增大表面积帮助肠吸收营养。英国巴特与伦敦医院的免疫学教授汤姆·麦克唐纳德解释说,它们更新速度极快,每2到3天更新一次。

肺的寿命:2到3周

英国肺脏基金会副主席基思·普罗斯说,肺细胞不断自我更新。但是,肺有不同的细胞,它们的更新速度不同。位于肺部深处的、用来交换氧气和气体的气泡或者气囊细胞更新过程稳定,需要约1年的时间。与此同时,肺部表面的细胞必须每隔2到3周进行自我更新。

大脑的寿命:和你寿命相同

英国巴特与伦敦医院的神经外科专家约翰·瓦德莱指出,能持续终生的大多数细胞是在大脑中发现的。瓦德莱说:“我们的脑细胞约有1000亿个,出生时数量已固定,我们大脑的大部分不会随老化而自我更新。”

眼睛的寿命:和你寿命相同

眼睛是身体中为数较少的在你的生命期间不会改变的身体部分之一。眼部唯一不断更新的部位是角膜。英国视光师学院的院长罗伯·霍根表示,如果角膜受损,它能在24小时内复原。

知多D:

指甲的寿命:6到10个月

头发的寿命:3到6年

皮肤寿命:2到4周

(英国《每日邮报》)

用CSS来制作一个立方体

This is the topface.
This is the leftface.
This is the rightface.

如果你用的是Firefox 3.5或者Safari 3.2+或者Google Chorme浏览器的话,你会看到右边有个立方体。它是用DIV+CSS写出来的。由于是在这篇文章当中,所以把CSS样式加到标签里进去了,如果制作网页的话再单独分出来就行。下面是其代码:

<div style=”position: relative; top: 200px;”>

<div style=”-webkit-transform: rotate(60deg); -moz-transform: rotate(60deg); top: -86px; left: 405px; position: absolute;”>
<div style=”-webkit-transform: skewY(-30deg) scaleY(1.16); -moz-transform: skewY(-30deg) scaleY(1.16); background-color: #eee; font-size: 0.862em; padding: 10px; width: 90px; height: 90px;”>This is the topface.
</div>
</div>

<div style=”-webkit-transform: skewY(30deg); -moz-transform: skewY(30deg); background-color: #ccc; left: 350px; position: absolute;”>
<div style=”padding: 10px; width: 90px; height: 90px;”>This is the leftface.
</div>
</div>

<div style=”-webkit-transform: skewY(-30deg); -moz-transform: skewY(-30deg); background-color: #ddd; left: 460px; position: absolute;”>
<div style=”padding: 10px; width: 90px; height: 90px;”>This is the rightface.
</div>
</div>
</div>

关于计算机的启动以及巩固对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