Archive

Author Archive

larbin与mysql连接

May 6th, 2012

先备份。

从src/interf/useroutput.cc 文件的保存格式对应可以看得出来,不同保存模式分别对应哪个代码

defaultuseroutput.cc 对应默认的什么都不做

mirrorsaveuseroutput.cc 对应镜像模式

statsuseroutput.cc 对应状态模式

saveuseroutput.cc 对应一般模式d*****/f*****

修改src/interf/saveuseroutput.cc

实现将网页下载到磁盘,同时将URL和本地地址记录在mysql,是实现本地快照的基础。

indexFds = creat(fileName, S_IRWXU); //creat the save/d***** index file
if (indexFds < 0) {
cerr << "cannot open file " << fileName << "\n";
exit(1);
}

这段代码是生成index文件,在save/d*****/index,这个文件中就是已经下载的网页列表,对应了id,此id就是文件夹的序号。

由于有了导入mysql功能,为了减轻系统负担,所以将此段禁掉,

ecrireBuff(indexFds, buf, s); 是在index文件中写入条目,可以禁掉

ecrireBuff(fd, page->getPage(), page->getLength()); 是在具体的/d*****/f*****文件中写入下载的html代码

数据库中可以设置ID, Html_Link,PhyLoc, Time, Saved等字段,网络URL对应本地地址。

原文地址:http://hi.baidu.com/hustwk/blog/item/8865dc2a4069fb28d42af1b6.html

另外部分修改地址:http://hi.baidu.com/hustwk/blog/item/689d2a3f007b0fe955e72373.html

为了避免文件名判断混乱,在src/types.h中,改为如下:

#define fifoFile “fifofile”
#define fifoFileWait “fifowait”

options.h 中的 defaultuseroutput.cc

#define DEFAULT_OUTPUT 对应着使用src\interf\defaultuseroutput.cc
#define SIMPLE_SAVE 对应着使用src\interf\saveuseroutput.cc
#define MIRROR_SAVE 对应着使用src\interf\mirrorsaveuseroutput.cc
/#define STATS_OUTPUT 对应着使用src\interf\statsuseroutput.cc

我实验室改的是saveuseroutput.cc,在其中加入mysql语句,保证usr/include下有mysql.h等头文件。

编译makefile的代码方面:

在src/Makefile 中 加入“-L/usr/lib/mysql -lmysqlclient ” ,即为如下:

larbin: $(ABS-UTILS-OBJ) $(ABS-FETCH-OBJ) $(ABS-INTERF-OBJ) $(ABS-MAIN-OBJ)
$(CXX) $(MF) $(LIBS) -L/usr/lib/mysql -lmysqlclient \
-o larbin $(ABS-UTILS-OBJ) \
$(ABS-FETCH-OBJ) $(ABS-INTERF-OBJ) $(ABS-MAIN-OBJ) ../adns/libadns.a

在src/larbin.make 中,加入“-I/usr/include/mysql -g”,即为如下:

CXXFLAGS:= -Wno-deprecated -Wall -D_REENTRANT -I- -I$(BASEDIR) -I$(ADNSDIR) -I/usr/include/mysql -g

备份地址 “larbin与爬虫” 分类下的文章

http://hi.baidu.com/hustwk/blog/category/larbin%D3%EB%C5%C0%B3%E6/index/0

技术爱好

larbin 安装配置注意事项

April 20th, 2012

Larbin是国外的一个开源的高效的搜索引擎爬虫工具(crawler)

larbin官方地址: http://larbin.sourceforge.net/

在fedora或者centos编译安装时,总是出现错误。网上说是要把adns文件夹下internal.h文件568-571注释掉,其实把:adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
vbuf *vb, parsedomain_flags flags,
const byte *dgram, int dglen, int *cbyte_io, int max);

更正为:adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
vbuf *vb, adns_queryflags flags,
const byte *dgram, int dglen, int *cbyte_io, int max);就不会出错了。

安装过程:./configure
make
./larbin
不过在运行larbin之前需要更改一下配置。

主要该两个文件:larbin.conf和options.h
一般在larbin.conf文件里改:
StartUrl :http://www.hfut.edu.cn //爬虫开始爬的起始网址
limitToDomain: .edu .com .cn .net .com.cn //限制爬虫抓取的网址域名后缀。

在options.h里修改:(我的配置是:)//#define DEFAULT_OUTPUT // do nothing…
#define SIMPLE_SAVE // save in files named save/dxxxxxx/fyyyyyy 简单输出一个目录两千个文件,包含索引。//这个很重要,默认是do nothing ,不会有任何结果输出的。

//#define MIRROR_SAVE // save in files (respect sites hierarchy)镜像方式保存
#define STATS_OUTPUT // do some stats on pages输出统计
#define FOLLOW_LINKS // do you want to follow links in pages
#define LINKS_INFO //是不是得到该页面的子连接
#define NO_DUP  //不允许重复
#define EXIT_AT_END //完成时退出
#define COOKIES
#define CGILEVEL 0 处理服务器端程序,也就是但url中包含? & = 之类的querString时也处理。
#define DEPTHBYSITE
#define THREAD_OUTPUT
#define RELOAD
#define GRAPH
#define STATS
#define BIGSTATS
编辑完成后,需要注意的是如果只修改larbin.conf文件,不需要重新编译,如果修改了options.h文件,需要运行 gmake 重新进行编译。

另外,types.h中有些项也可以自行设置,如 maxUrlsBySite ,maxPageSize

技术爱好

Larbin的使用–安装

April 20th, 2012

1、到网上下载 larbin-2.6.3.tar.gz,然后解压。

tar zxvf larbin-2.6.3.tar.gz
2、 到解压的目录,运行配置文件


./configure

却出现以下的错误:


make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/utils' makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend make[2]: *** [dep-in] 错误 127 make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/utils' make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/interf' makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend make[2]: *** [dep-in] 错误 127 make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/interf' make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/fetch' makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend make[2]: *** [dep-in] 错误 127 make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/fetch' make[1]: *** [dep] 错误 2 make[1]:正在离开目录 `/home/byd/test/larbin-2.6.3/src' make: *** [dep] 错误 2

在上面发现有makedepend,于是输入

makedepend

发现没有安装,有如下的提示


The program 'makedepend' is currently not installed. You can install it by typing: sudo apt-get install xutils-dev

于是就输入命令老老实实的安装xutils-dev了


sudo apt-get install xutils-dev

安装之后,./configure成功

3、编译

在目录下输入make进行编译。又出现了一下的错误


parse.c:113: error: conflicting types for ‘adns__parse_domain’ internal.h:569: note: previous declaration of ‘adns__parse_domain’ was here parse.c: In function ‘adns__parse_domain_more’:

于是直接到adns目录找到internal.h文件注释掉568-572行。


//adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, //vbuf *vb, parsedomain_flags flags, //const byte *dgram, int dglen, int *cbyte_io, int max);

继续make ,又出现一下的错误


sequencer.cc:5: fatal error: iostream.h: 没有那个文件或目录

代码采用的是以前C的编码方式,现在要改成iostream 了。于是将目录下的所有iostream.h 改成iostream。可以采用一下的命令


sed -i -e 's/iostream.h/iostream/g' `grep -rl iostream.h *` 

注意:后面的包含grep 的不是单引号,而是键盘左上角的符号。

继续编译,又出现错误


hashTable.cc:32: error: ‘cerr’ was not declared in this scope hashTable.cc:41: error: ‘cerr’ was not declared in this scope hashTable.cc:42: error: ‘endl’ was not declared in this scope

于是将目录下的所有cerr和 endl改成 std::cerr和std::endl。可以采用类似上面的命令。不过要注意是不是有的endl或cerr已经是std::endl和std::cerr。


sed -i -e 's/cerr/std::cerr/g' `grep -rl cerr *`
sed -i -e 's/endl/std::endl/g' `grep -rl endl *` 

至此编译就没有问题了。

可以发现在目录下已经生成larbin的可执行文件。

输入./larbin就可以运行larbin了。

技术爱好

nginx 301 跳转给网站域名加上www

April 9th, 2012

网站seo时,如果同时存在www和无www的域名访问会造成收录负担,所以有必要对其做个跳转。

方法:在配置文件里面写两个server,第一个里面只留带www的域名
server
{
listen 80;
server_name www.baizoo.cn;
….
}

第二个给无www的域名做301跳转
server
{
server_name baizoo.cn;
rewrite ^(.*) http://www.baizoo.cn$1 permanent;
}

同理如果需要删除www
server
{
listen 80;
server_name baizoo.cn;
….
}

server
{
server_name www.baizoo.cn;
rewrite ^(.*) http://baizoo.cn$1 permanent;
}

网站相关

对网站访问权限做的一些处理记录

March 2nd, 2012

1、限制了部分搜索引擎爬虫的访问。
在robots.txt文件中加入
User-agent: Baiduspider
Disallow: /
User-agent: Slurp
Disallow: /
注:Slurp 是yahoo的爬虫

2、限制了国内ip段的访问权限
在nginx配置文件里,添加blockips.conf文件
然后 include blocksip.conf;
Read more…

网站相关 ,

批处理删除特定时间的备份文件

March 1st, 2012

服务器里有个mysql自动备份的bat

set zhou=%Date:~0,10%
md "E:\mysqlback\%zhou%"
"G:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" --opt -Q sbdb -root -password > G:\mysqlback\%zhou%\db.sql

然后计划任务里让这个bat每天执行。

时间久了,备份文件就会越来越多,占据了大量的服务器硬盘。所以需要删除多余的备份。
如果只需要保留最近一个星期的备份,需要如何操作?
代码:

cd /d G:\mysqlback\
for /f "skip=7" %%i in ('dir /tc /o-d /b') do rmdir /s /Q %%i

Read more…

技术爱好

(转)技术较差的站长更容易成功的秘诀——简单专注

January 30th, 2012

转自落伍。
注:不认同此文内容的,请列出自己的观点,大家互动一下,聚众人之力,总结一下简单的成功之道!
个人站长,越没有技术的,越能获得成功,这是很普遍的现象,为什么呢?我们一起分享一下。李兴平没有技术,对asp都不懂,只会静态的页面,他成功了,成为中国最大的站长,流量超过了SINA,甚至包括落伍的鱼,阿飞,都没有技术,他们甚至连做一个友情链接都不会。但是他们都获得了成功,至少在草根,在站长中都功成名就。为什么?还有很多熟悉的技术很高的朋友,例如有一个技术特牛的程序作者,包括逐浪等国内所有顶尖的小说网站程序都是他写的,但是他在做小说网站的时候,愣是突破不了5000个ip,还没有一般的小说网站一篇小说的访问量。
还有更多的技术人员和营销人员,甚至带了数百万在传统行业很精英的人来做互联网,还做网站,都是失败。难道互联网,难道个人网络世界天生给这些没有技术的人一个后门?
很多人都在纳闷一个问题:我比李兴平学历高,我比他触网早,他做的我都会,我比他更有经验,更有头脑,更有资源,为什么我就是不能成功?
一个高中的学生,也是什么都不会,网络上随便下载了一个音乐程序,做了flash音乐,后来做到20万ip一天,粗糙的页面,很慢的更新速度,为什么他们就能成功,而很多团队运营的音乐网络帝国,买广告,拉风险,最后眼巴巴的看着自己的alexa 最新网络赚钱信息公布与讨论,终于从20万爬到10万了,而年轻的个人站长,早从1万到了2000了。
为什么能成功
简单 专注
如果你看到我这篇文章,好好的体味一下这4个字的价值, 如果你不能体会,你就用毛笔下写来,刻下来,放在你最显眼的地方,每天去研究这4个字。
成功的奥秘
为什么要简单,很多网站自己把自己给做累死了,功能多的自己都数不过来,除了摆摆花架子和累死自己,没有什么其他的用,看看ip138 ,看看baidu,能让网友最简单的更迅速的实现自己的目标才是网友最爱。而不是要网友按照你的设计走过场,你累他也累!为什么要专注,因为你太聪明,你太有才了,所以你会失败,你太聪明了,太有才了,你才不会甘心做一个网站,你才会脚踏两只船,你才会不停的来回奔波,你才会不停的拉长战线,你才不会脚踏实地的去做一件事情,你才不会深究一个领域,你才会疲于奔命。所以你失败了, 就这么简单。成功注意两点:简单 专注!
附:对拒绝游泳的鱼宣谈个人网站运营和坚守精神讲座的摘录

1。实用为王,像做人一样做站。
2。剩者为王,不要轻易地卖站或者放弃。
3。用非常夸张的手法,到处用软文手法做SEO,就为了诱导一些少量的点击。
4。建议大家,去做笨的人。
5。有社会经验,有能力,懂人情事故的,才会机会。
6。现在的个人站长界,已经被弄得太浮燥了。
7。百度越来越聪明,网站已经越来越难去速成了。
8。做站卖站,这样的日子能过多久?
9。地方站或者垂直类的网站,是赚钱的。
10。还没有一个在当地几乎已经垄断的地方站?做大做全,完全是没有机会的。
11。我们要去发现的是,需求。
12。买站卖站卖链接能赚钱,但是不能当作主要目标。
13。网上,只是一个窗口。
14。如果我们要起步的话,还是得利用QQ。
15。做,就是要做共赢的事情。

16。做,就是要做实事。
17。虚假的东西,吹的东西,短期的行为,终究是长不了的,终非王道。
18。有人说,鱼,当年你是运气好,我看你也没啥能力,落伍也是一团糟,你只是运气好。但是,当年比落伍大的社区,光用手指是肯定表达不过来的,但是今天他们已经消失了。
19。愚者,就是在于坚持,我们没有啥好拼的,就是拼,谁能坚持到最后。
20。作为社区,就是要集中力量。版块多有啥用,你顾得过来吗?控制在6个左右。
21。你需要一个卖点,或者一个口号。
22。正面竞争是不太必要的,最好是共赢。
23。做资源的极难去激发荣誉感的,所谓荣誉感是社区类的比较多。
24。让用户产生荣誉感,你可以去感动他,和用户产生感情。
25。个人站,永远不要和别人比功能,比技术,人每天都会有很多想法。
26。站在巨人肩膀上比较好,也就是多去学习下同类的。
27。天气冷的时候问候下,人肉都可以。
28。无论任何类型的网站,你都需要有特点,你向别人介绍的时候,总要一句话能表达出来,你这是干什么的,能提供什么,没特点就属于泛流量站。
29。游戏门户,拼的就是资源的更新速度。基本上,游戏门户,个人是很难的。游戏门户,主要是和游戏关系好,而不是玩家。
30。很多的技巧/手法/SEO等,已经讲得非常多了。

网站相关

vbs自动关机

October 19th, 2011

一个自动关机的vbs 留作备份
a=hour(now)
b=weekday(now)

select case b
case 1,3,4,5,6,7
if a>=23 then
call shut_down()
end if
end select

private sub shut_down()
Set colOS = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * FROM Win32_OperatingSystem")
For Each eOs In colOS
eOs.Win32Shutdown(1)
Next
end sub

下面代码可以写启动项

set ws=createobject("wscript.shell")
ws.Regwrite"HKLM\Software\Microsoft\Windows\CurrentVersion\Run\",wscript.scriptfullname

技术爱好

BT5破解wpa密码

August 24th, 2011

都说破解wpa密码很难,我尝试了一下,确实挺难的。

方法一、用minidwep破解wpa 见 BT5 中文版破解WPA2 WPA简单过程教程

方法二、奶牛博客里提供了命令行下破解wpa的方法 BackTrack5 (BT5)无线密码破解教程之WPA/WPA2-PSK型无线密码破解 这个过程其实跟minidwep是一样的,只是上面图形化了。

方法三、用EWSA 破解 该方法没试过,貌似是windows系统下运行的。

技术爱好 ,

BT5破解wep无线密码

August 24th, 2011

按照前篇日志里的方法制作bt5 u盘启动盘后,进入bt5 运行startx进入图形界面。
下载一个minidwep的安装包 下载

降其放置在root目录下
运行 dpkg -i minidwep-gtk.deb 安装,然后就可以执行minidwep进行wep破解了。

技术爱好 , ,