大家往往在向自己的博客或者网站加上百度或者google的搜索框的时候经常会看见乱码。主要是用中文搜索的时候,我用的是zblog,在加百度和google搜索框都出现过这个问题。

现在说说我的解决方法:

1、如果是搜索按钮几个字乱码,那么很可能是你的js文件不是用的UTF-8编码,因为windows的记事本默认的就不是,所以很多人出现过这个问题,解决方法是下载一个记事本代替windows默认的记事本,我用的是notepad++,功能强大不说,格式还可以自己选。

2、输入中文搜索时出现乱码

这个问题的原因是你的网站的编码和百度,google编码不一样,google adsense可以自己选择编码,一般选UTF-8就不会出问题,百度的可以自己加几句说明搜索代码代表的是中文的。(下面的代码中有注释)


互联网 ourys.com

这是我的百度搜索框,如果你想用js调用,将html转化为js,http://www.ourys.com/ad/baidu.js,这是我的网站的百度js调用,我改了一下风格,去掉了百度logo,下面的是html代码,你可以到http://www.hao123.com/haoserver/jstohtm.htm这里转为js。

 

<SCRIPT language=javascript>
function g(formname) {
var url = "http://www.baidu.com/baidu";
if (formname.s[1].checked) {
 formname.ct.value = "2097152";
}
else {
 formname.ct.value = "0";
}
formname.action = url;
return true;
}
</SCRIPT>
<form name="f1" onsubmit="return g(this)">
<table bgcolor="#000000" style="font-size:9pt;">
<tr height="60">
<td>
<input name=word size="30" maxlength="100">
<input type="submit" value="百度搜索"><br>
<input name=tn type=hidden value="bds">
<input name=cl type=hidden value="3">
<input name=ie type=hidden value="UTF-8">   //说明是中文
<input name=oe type=hidden value="UTF-8">   //说明是中文
<input name=hl type=hidden value="zh-CN">    //说明是中文
<input name=ct type=hidden>
<input name=si type=hidden value="www.ourys.com">
<input name=s type=radio> 互联网
<input name=s type=radio checked> www.ourys.com</td></tr></table>
</form>
 

 URL转发,域名绑定,301永久重定向,302暂时性定向,meta 转发之间有不同的概念。

1.URL转发:

分显性转发,隐性转发,如果做SEO,后者直接K掉。一般的URL转发一般指显性转发。

但是URL转发不利于SE,对PR没有传递,所以在用www和没有www的域名之间时,最好用用301永久定向(参考一些著名网站,建议将带www作为你的主域名。)

2、301永久重定向

301对SE很有好,可以传递PR ,这是网站多域名同一个站点的最好方法,由于它对搜索引擎最友好,可以避免多域名造成的pr值权值分散。

3、302暂时性定向

和301重定向差不多,只是它是暂时的网站迁移

4、meta 转发

meta fresh: 其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

各自区别:

但URL转发对已经存在网址统一重新转向新域名。而301重定向如果使用代码一般只针对首页有效,虽然htaccess可以达到目标,但win不支持。最好的方法是有IIS控制台里的重定向,或者htaccess支持(使用正则表达式达到各路径的对应重定向,相当于替换域名)
至于301与302转向的区别:
实施301后,新网址完全继承旧网址,旧网址的排名等完全清零。
实施302后,对旧网址没有影响,但新网址不会有排名。

302即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

如果简单达到目的,那就使用下面的301重定向代码吧。
ASP:
<%@ Language="VBScript"%>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", " http://ourys.com "
%>

php:

<?
header("HTTP/1.1 301 Moved Permanently");
header("Location:  http://ourys.com ");
exit();
?>

ASP .NET:  
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,” http://ourys.com ”);
}

这里讲了我在写css中常用的内容整体居中的三种css方法,每一种方法都兼容ie6,ie7,ie8,火狐,opera,chrome等各大浏览器。

测试文件index.html的代码其中外部的style.css文件地址请自己更换

<html>
<head><link href="style.css" rel="Stylesheet" type="text/css" /></head>
<body>
<div id="wrap"></div>
</body>
</html>

方法一(style.css):

*{margin:0;padding:0;}    /*顶部对齐*/
#wrap
{
 position:relative;
 width:988px;
 margin-left:50%;
 left:-494px;
 height:1200px;
 border:solid 1px red;
}

评论:此方法是先定好内容的宽度,然后向左距离整个浏览器的50%,再向左拉回内容宽度的一半

方法二(style1.css):

*{margin:0;padding:0;}
body{text-align:center;}
#wrap
{
 position:relative;
 margin:0 auto;
 width:988px;
 height:1200px;
 text-align:left;
 border:solid 1px red;
}

评论:此方法是先定好内容的宽度,然后body里面内容居中,然后容器里面内容靠左,注意 margin:0 auto;是为了兼容其他浏览器

方法三(style2.css):

*{margin:0;padding:0;}
#wrap
{
 position:relative;
 width:988px;
    margin-left:-494px;
 left:50%;
 height:100%;
 border:solid 1px red;
}

评论:和方法一类似,可以对比方法一看

 我在使用photoshop cs3的时候,经常遇到使用一个工具对图像进行操作之后却不立即显示本次操作的效果,必须重新选择一下图片才能显示出本次进行的操作。分析了一下原因,现在将我的解决方法和大家分享一下。

我发现只有在我使用了文字工具之后才会出现这种情况,所以我想这一定和文字方面的设置有关,试了好几个关于文字方面的设置,终于让我找到了解决方法。

其实很简单,选择最上面的:编辑—-首选项—-文字—-字体预览大小,把这个选项取消掉,然后重启一下ps就可以了。

如果高手知道原因的可以跟我说一下。

我们在编程过程中经常会出现"0x00000000","0x00000005"等等这样的提示,这些提示是在什么情况下出现的呢?怎么避免这些问题的出现呢?这些问题为造成什么样的危害呢?

本文就略微探讨一下。

内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。

内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。

真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。 

在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。 

所以我们在程序设计过程中要注意:

1、不要有的指针没有申请内存就使用,特别是一个指向结构体的指针,这个结构体里面也有指针,新手往往没有给结构指针申请空间就用了结构体里面的东西,这是不容许的。

2、内存用完就要回收,你可以在你的析构函数等地方及时释放你申请的内存。

一、设置快捷键

首选项---屏幕快捷键,然后添加一个命令,并添加一个你的快捷键,如果你用的是gnome桌面建议用 

gnome-terminal命令添加快捷键,也可以用xterm,还可以用shell脚本,比如我用的是调用下面我贴的一个脚本

命令(脚本见文代码):/home/zhangwei/.gnome2/nautilus-scripts/打开终端

二、设置右键快捷键(打开时为当前目录)

方法一:

执行命令:sudo apt-get install nautilus-open-terminal

此方法是安装一个小软件,但是我安装后和conky冲突了,所以没有用。

方法二:

用脚本,把下面的脚本保存成任意名(我的是:打开终端),然后放在主目录的.gnome2/nautilus-scripts目录下,当然你可以放一些其他常见的脚本,都可以在右键找到。比如发送到邮件/修改文件权限等等实用的功能。

脚本:

#!/bin/bash
#
# This script opens a gnome-terminal in the directory you select.
#
# Distributed under the terms of GNU GPL version 2 or later
#
# Install in ~/.gnome2/nautilus-scripts or ~/Nautilus/scripts
# You need to be running Nautilus 1.0.3+ to use scripts.

# When a directory is selected, go there. Otherwise go to current
# directory. If more than one directory is selected, show error.
if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
set $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
if [ $# -eq 1 ]; then
destination="$1"
# Go to file’s directory if it’s a file
if [ ! -d "$destination" ]; then
destination="`dirname "$destination"`"
fi
else
zenity –error –title="Error – Open terminal here" \
–text="You can only select one directory."
exit 1
fi
else
destination="`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed ‘s/^file:\/\///’`"
fi

# It’s only possible to go to local directories
if [ -n "`echo "$destination" | grep ‘^[a-zA-Z0-9]\+:’`" ]; then
zenity –error –title="Error – Open terminal here" \
–text="Only local directories can be used."
exit 1
fi

cd "$destination"
exec x-terminal-emulator

我的电脑最初是windows xp,然后分了一个盘安装了ubuntu,最后又安装了windows7.
 
现在将我安装过程讲解一下。
 
安装了xp之后安装linux很简单。特别是ubuntu,可以在windows里面直接安装,像安装一个软件一样,但是我不喜欢这种安装方法,感觉神圣的linux都被windows奴役了,所以还是老老实实安装双系统,将光盘放入光驱,剩下的就很简单了,就是分区的时候要注意下,要分配一个交换分区(大约1g多的样子),类似windows里面的虚拟内存,你也可以硬盘安装linux系统,不过这样麻烦点。如果你没有光驱可以选择这种方法。
 
安装好xp和linux双系统之后,然后就可以安装windows7三系统了。
 
首先你需要准备一块分区,如果你的分区有文件,你可以下载一个分区魔术师硬盘版,可以在不丢失文件的情况下改变分区,用分区魔术师更改分区信息后重启就会更改分区信息。

然后你就把window7安装到这个分区里面,当然在过程中要容许其他操作系统存在,安装完后就可以进入windows7和xp了,因为windows7有启动管理工具,可以检测以前的windows操作系统版本。

最后就是重写grub啦,重写完grub之后你就可以轻松玩转三系统啦。

有关重写grub的方法,请看我另一篇文章(根据我的情况我用的是用liveCD进入重写grub):http://ourys.com/post/63.html

 

大家在安装了windows和linux双系统之后,经常因为重装了windows导致进去不了linux系统,原因是windows的的bootloader重写了mbr,导致grub无法启动,这个时候,就必须重写grub。(当然还有其他原因到时grub损坏的。)
 
针对不同情况我们选择不同的修复方法:
一、用安装盘修复:
最简单的是:用安装光盘启动,选升级安装,然后只选安装GRUB.
或者按照下面的方法:
1. 进入linux的终端
 
用lunux的安装盘(livecd)进去界面,选择Linux rescue模式,可以运行fdisk -l 查看/boot位于哪个分区
 
2、终端中输入以下代码
 
>sudo grub                    //以管理员权限进入grub管理
grub>find /boot/grub/stage1
//这时显示的是(hdX,Y),其中x和y是数字,下同
grub>root (hdX,Y)
grub>setup (hdX)
//顺利的话就会出现success
grub>quit
 
3.重启计算机,Grub修复成功

二、linux是用硬盘安装的修复方法:

1、下载一个grub for dos,用纯DOS下进入GRUB界面。

2、选第四项"find and boot linux with menu.list already installed"这样就可以登陆LINUX了。

3、重装GRUB,在终端输“grub-install /dev/hdx(x不定,自己看dev目录。x=a,b,c,d.通常选a.具体看自己安装系统时硬盘位置)。

ps:grub的知识
 linux的grub在/boot/grub/grub.conf。windows的有个隐藏而且只读文件boot.ini也是grub文件
现在解释下里面的代码
“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
比如下个例子:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在启动菜单列表里显示的名字
root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。注意root后面要有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解释了,上面有解释。
rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。
chainloader +1照抄就行,注意空格。