ubuntu下wine中文乱码的简单解决方法

公司里传文件用一个叫“飞鸽传书”的软件,但有时我有些工作(比如用planner)得在ubuntu里完成,这样在给同事传 文件的时候就有点麻烦了。本来把飞鸽传书的那个文件ipmsg.exe拷过来,在wine里运行就应该可以了,但是我习惯用英文界面,这样wine的中文乱码这个经典问题就出现了。网上搜一搜大多都是说要拷字体,链接字体,还有删注册表键值什么的。都试过了,对ipmsg没用。最后用了一个简单的方法给解决了。分享一下:

  1. 在屏幕上方panel的空白处点右键,选择Add to Panel…,弹出Add to Panel的窗口。
  2. 在窗口中选择Custom Application Launcher,单击Add,弹出Create Launcher窗口。
  3. Name可以随便填,比如我填入IP Messenger。
  4. 在Command那一行先点Browse…在弹出的窗口中找到ipmsg.exe或者你想要用的其它windows程序,点Open回到Create Launcher窗口,在Command后的框里就填入了刚才找到的程序的路径。
  5. 这时在这个路径前面加上”env LANG=zh_CN.UTF-8 wine “,注意代码最后的wine之后有一个空格不能丢了。
  6. 然后点OK然后Close就可以了。
  7. 这时在Panel上单击出现的图标即可运行,并且也没有乱码了。(使用“飞鸽传书”的话会有错误提示,点“确定”就可以,我这里会连着弹出3次,“确定”之后不影响程序使用。)

Ubuntu下修改hosts解决xmarks被墙

我就不骂闲街了,大家都明白,骂了也没用。

刚升级ubuntu9.10不久,不能用xmarks真让人恼火,下面是解决办法:

#sudo gedit /etc/hosts

然后再加入下面的IP,保存即可。

#xmarks
64.147.188.86 www.xmarks.com
64.147.188.92 api.xmarks.com
64.147.188.89 login.xmarks.com
64.147.188.87 sync.xmarks.com
64.147.188.86 static.xmarks.com
64.147.188.86 download.xmarks.com
64.147.188.86 my.xmarks.com

如果还不行就在xmarks的设置里选高级,再选择“全部加密”,接着应该就可以同步了。

一个临时解决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: 这样倒是很不卡了:) 哎?很不卡,这个说法有点意思

……

用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

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的文件全部删除,重启 .

学习脱壳

一、什么是壳

作者编好软件后,编译成exe可执行文件

  1. 有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等
  2. 需要把程序搞的小一点,从而方便使用,于是,需要用到一些软件,他们能将exe可执行文件压缩

实现上述两个功能,这些软件称为加壳软件或压缩软件。它不同于一般的winzip,winrar等压缩软件。它是压缩exe可执行文件的,压缩后的文件可以直接运行。

二、测壳软件

  • FileInfo
    待侦测壳的软件(如aa.exe)和fileInfo.exe位于同一目录下,将aa的图标拖到fi的图标上
  • language2000
    傻瓜式软件,运行后选取待侦测壳的软件即可(open)

三、什么是脱壳

运行加壳程序时, 用户执行的实际上是这个外壳的程序,而这个外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正的程序,由于一切工作都是在内存中运行,用户根本不知道也不需要知道其运行过程,只要执行起来没有变化就好。当时有些人担心这些解压缩的工作会给程序带来额外的运行时间,但实际上所有的可执行文件都要读到内存中去执行,文件小了,从计算机硬盘上读到内存的时间自然也少了,两下相抵,实际上用户并不会感觉程序慢了多少。脱壳的就是把在内存中真正还原的程序抓取下来,修正后变成可执行的文件。

四、压缩工具

在Windows 95/NT/2000 上的文件格式是Portable Executable File Format(即PE格式),该格式应用于所有基于Win32的系统。由于现在windows的普及,下面谈到的壳都是基于这种文件格式。我们这里谈的压缩工具不是Winzip,WINRAR等工具(它们是可压缩任何文件),而是谈专门压缩windows下的 PE 格式EXE或DLL文件的工具,压缩的EXE文件是自解压可执行文件。

名称 作者 介绍
ASPack Alexey Solodovnikov 是俄国作者Alexey Solodovnikov写的一个非常强大的Win32压缩工具,其压缩率、速度和兼容性很不错,是目前很流行的一种压缩工具。
UPX Markus Oberhumer & Laszlo Molnar 非常全能的
Petite Ian Luck 能压缩PE文件的code, data等资源。
PE-PACK ANAKiN 一个自身体积小巧的压缩工具
PKLITE32 PKWARE, Inc. 32-位压缩工具(DLL/EXE).
WWPack32 Piotr Warezak and Rafal Wierzbicki 32-位压缩工具(DLL/EXE).
NeoLite 32-位压缩工具(DLL/EXE).
Shrinker Blink Inc 32-位压缩工具(DLL/EXE).

五、脱壳工具

一般某种压缩工具的壳,都会有相应的脱壳工具,因此只要找到较新版本的脱壳工具, 一般的壳都可轻易脱去。

名称 作者 介绍
ASPack unpacker bane 脱ASPack的压缩PE文件。
UnPEPack M.o.D. 脱PEPack的壳
ProcDump32 十分优秀的“万能”脱壳工具,可惜不升级了,因此只能自动脱些老版本压缩工具的壳,但可通过脚本命令使其升级。也是一款优秀的PE修改工具。

受不了,微软也能出这么好的东西(Courier)啊!

本来已经对微软的东西不感兴趣了,但是看到它即将推出的这个叫做Courier的Booklet产品,真是让人心动不已。

技术指标之类的东西google一下会很多,不用多说了,看看视频吧:

[flashvideo file=http://211.157.113.49/backup/Courier.FLV /]

如果这个东西普及了,我觉得又是一个改变人类生活习惯的东西。我们日常写字、画画都可以不用纸了,又方便又环保。当然如果是非要用纸的艺术创作就另当别论了。

下面再看看图吧(单击可以放大):