Archive for the ‘程序设计’ Category

WordPress只显示首页友情链接

WordPress里的widget的确很方便,不过显示都是在全部页显示的。对于一个seoER来说,所有页面都显示友情链接实在是很难接受。为了解决这问题特地google了下。


有两种解决办法


1、添加is_home函数


编辑sidebar.php文件


在要增加友情链接的地方加入


1
2
3
4
5
6
7
<p>&lt;?php if (is_home()) {?&gt;<br />
&lt;ul&gt; <br />
&lt;?php get_links_list(); ?&gt; <br />
&lt;/ul&gt; <br />
&lt;?php }?&gt;

</p><p><br class="spacer_" /></p>

不过这种方法还要自己写样式,不是很方便。




2、使用Widget Logic插件

其可以将任意Widget小工具设置是否在文章页显示

使用方法:只需要在WordPress后台中搜索插件Widget Logic,后安装激活,在小工具的设置时即会出现Widget Logic选项:

在选项中填is_home()&&!is_paged() 即可做到友情连接只在博客首页显示


附相关参数设置:

is_home() 主页
is_admin() 管理员帐号
is_single() 文章页
is_page() 页面
is_category() 文章分类页
is_tag() 文章标签页
is_archive() 归档页
is_404() 页面无法找到页
is_search() 搜索结果页
is_feed() 订阅页
!is_category(5) 仅在ID非5的分类显示
is_home() || is_category(’baked-goods’) 在主页或名称为baked-goods的分类显示
is_page(’about’) 仅在关于页显示

织梦(DEDECMS)管理员密码加密分析

织梦的管理员账号和密码保存于数据库表dede_admin里
密码乍一看以为是经过MD5加密的,但是奇怪的竟然有20位!
仔细分析下,原来密码经过MD5加密后为32为,去掉了前5位和后7位,所有就20位了.
那如何使用呢?
也很简单去除前3位和最后一位就是有效MD5密码了。
比如8f2531f09a5c31f529c4
化简后得531f09a5c31f529c
解密后为Sroan

DEDECMS问答模块绑定二级域名无法登陆解决办法

1、在后台 系统管理 里 增加一个新变量 ,归类到 核心变量 ,并且命名为cfg_domain,中文描述为 本站域名,
值等于您的域名,我这里填写的是 33iq.com
2、找到安装目录根下 include/inc_functions.php 文件,改下面两个函数。

//按默认参数设置一个Cookie
function PutCookie($key,$value,$kptime,$pa="/"){
global $cfg_cookie_encode,$cfg_pp_isopen,$cfg_basehost,$cfg_domain;
if(empty($cfg_pp_isopen)
||!ereg("\.",$cfg_basehost)||!ereg("[a-zA-Z]",$cfg_basehost))
{
setcookie($key,$value,time()+$kptime,$pa,$cfg_domain);
setcookie($key.'ckMd5',substr(md5($cfg_cookie_encode.$value),0,16),time()+$kptime,$pa,$cfg_domain);
}else{
$dm = eregi_replace("http://([^\.]*)\.","",$cfg_basehost);
$dm = ereg_replace("/(.*)","",$dm);
$dm = $cfg_domain;
setcookie($key,$value,time()+$kptime,$pa,$dm);
setcookie($key.'ckMd5',substr(md5($cfg_cookie_encode.$value),0,16),time()+$kptime,$pa,$dm);
}
}

C++文件复制

方法一:逐个字符复制

#include < fstream >

std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);
char ch;

while (input.get(ch)) output < < ch;

注意:如果使用input>>ch读取字符,则必须先调用input.unsetf(ios::skipws)取消输入流默认的跳过空白符的输入格式,因为换行符是空白符的一种。(BEN注:流失操作以空白字符'/0'为字符串的分割,并忽略它们,直接操作会缺失这些空白字符)

方法二:逐行复制

#include < fstream >
#include < string >

std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);
std::string line;

while (getline(input,line)) output < < line << "\n";

注意:这里的代码有一个小小的缺陷,如果文件不是纯文本格式的文件,或者文本文件的最后没有换行符,那么会导致复制后的文件末尾添加了一个多余的换行符。(BEN注:可以使用.gcount ()来判断是否到达文件尾,到达则不添加多余的'\n')

方法三:迭代器复制

#include < fstream >
#include < iterator >
#include < algorithm >

std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);
input.unsetf(ios::skipws);

copy(istream_iterator(input),istream_iterator(),ostream_iterator(output,""));

同样这里也有一个小技巧,输入流的格式默认为跳过空白字符,因此调用unsetf取消这个格式,才可保证正确的复制。

方法四:缓冲区复制

#include < fstream >

std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);

output << input.rdbuf();

这里直接使用了输入流的缓冲区,因此没有引入额外的临时对象。(BEN注:不管哪种方式操作,最好都使用缓冲提高效率,比如,可以使用字符串存储文件内容,再一次性写入到新文件,这样可以减少对文件的操作,因为对文件存储器的操作也就是I/O设备相对于内存是极其缓慢的)

很显然,上述四种方法中,最后一种方法最简洁,由于直接操作输入流的缓冲区,从运行效率上来说,也比其他方法有着略微的优势(当然,由于操作系统可能提供了额外的基于设备的文件缓冲机制,也许你无法证实这一点)。因此,除非要对输入内容进行处理,直接复制文件推荐最后一种方法,既不容易出错,又能获得良好的性能。

VC显示行号

VC6LineNumberAddin下载

http://search.xunlei.com/search.php?keyword=VC6LineNumberAddin

1. 如果你的VC安装在C盘,请拷贝文件VC6LineNumberAddin.dll到如下目录:

C:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns

2. 注册

双击VC6LineNumberAddin.reg进行注册。

3. 启用

打开vc6,菜单栏:Tools -> customize -> Add-ins and Macro Files
选中VC6LineNumber Developer Studio Add-in