今天早上打开电脑,第一时间看到PJ官在次升级,下载升级包,备份数据库,运行update结果却出错,程序无法运行,还好常时间用PJ,知道他的脾气所在,很快就调整了错误,然后发表日志发现多了一个meta,完全不错,很好,很强大,在次恭喜升级成功,功能越来越完美

二月 28th, 2009

Posted In: 未分类

时常可以见到一些产品设计和做用户体验的设计师说,那个地方不对,应该这样,这个地方也不对,不能做成这个样子,所有的一切都在围扰着用户在转,常说用户体验,只是我们设计的东西就是用户的感觉,或许不是这样吧,或许只是我们强加给用户我人的思想,让他们按照我们的想法来做,唯一不同的只是限制的人性化

对于一个产品设计或是用户体验来讲,或许要先了解另一个设计师为何会这样设计,他的目的何在,然后在下批论,这样我个人觉的更合适,虽然我不是作产品设计或是用户体验的,可在互联网上混了这么久,或许可以谈一下我自己的感觉,常听到一些设计师讲,别人的东西怎么怎么的麻烦,可我们是否有设计出更简单的,简单的只要用脑子去想一下就能实现的,相反,我们做的只是慢慢的爱好或者说是习惯或是做风强加给用户,让用户去感觉然后提出问题在那,任何一个用户他们不能说你这个产品要完全按照这么来做,所以你一开始限制了他的想法,所以他只能在你的基础之上然后给你提出一点改进的意见,这可能就是我们所谓的用户体验吧,或许你会用一些专业的词,但这只是我一个门外汉的感觉,设计师每个都有自己的做风,我一直想问一句,是自己的产品在慢慢强制改变用户的习惯,还是我们真的完全是按照用户体验来计设的了,什么东西都有正反两年,或许这个问题就相当于是先有蛋或是先有鸡的问题是一样的吧

二月 28th, 2009

Posted In: 未分类

【脱壳一般流程】

查壳(PEID、FI、PE-SCAN)—>寻找OEP(OD)—>脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)—>修复(Import REConstructor)

【工具介绍】
1、查壳
PEID–功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样)
工作原理:核心是userdb.txt(大家看看就完全明白了)[通过壳的入口特征码进行辨认]
使用方法:可以拖放、也可以把PEID添加到右键菜单里面去

FI–功能强大的侦壳工具,DOS界面。
使用方法:可以拖放、可以使用DOS命令行

2、寻找OEP

ollydbg的四个区域

左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.
右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.
cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.
左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.
右下角的是当前堆栈情况,还有注释啊.

几个经常使用的快捷键

F2:在需要的地方下断点(INT3型断点)
F3:选择打开程序
F4:运行到所选择的那一行
F7:单步进入
F8:单步跟踪
F9:执行程序(运行程序)

其中要特别讲一下3个F9的区别和作用:

根据Ollydbg.hlp的中文翻译

Shift+F9 – 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。

Ctrl+F9 – 执行直到返回,跟踪程序直到遇到返回,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条命令执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Alt+F9 – 执行直到返回到用户代码段,跟踪程序直到指令所属于的模块不在系统目录中,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

看这些中文介绍大家可能还不是很明白,用我们通俗的语句来说就是:
Ctrl+F9 运行至retn (一般到了retn之后接上F7返回)
Alt+F9 运行至上层调用的下句
Shift+F9 忽略异常运行

文件:
1.其中包括该菜单的下部有上次打开的纪录,该纪录保存有上次未清除的断点.
2.附加.对付那些Anti-Debug程序.先运行程序,再运行od,文件–>附加.

查看:
1.执行模块(Alt+E),查看程序使用的动态链接库
2.查看断点.Alt+B

调试:
1.运行(F9)加载程序后,运行!
2.暂停(F12)
3.单步进入(F7)遇见CALL进入!进入该子程序.
4.单步跳过(F8)遇见CALL不进去!
5.执行到返回(ALT+F9)就是执行到该子程的返回语句

查看–>文件

二进制文件编辑功能.查看–>文件,打开的文件是二进制显示.选中要改变的机器指令,空格,修改,右击–>保存.

具体的用途在后面的几壳脱壳课程当中将会用到,大家现在理解就行。在后面的操作中学会使用!

其他的一些具体的大家还是要看看OD的中文帮助的

3、Dump
OD自带的脱壳插件–到达OEP之后右键。。。
LordPE、PeDumper–选择所调试的进程–右键–完整脱壳

4、修复
Import REConstructor 1.6

二月 16th, 2009

Posted In: 未分类

情人节还是不约而至,不管你过还是不过,都会不经意的来到,下班时看到群里就有同事在开玩笑开始过节,开始有了过节的气份,好像我一点也没感觉到,除了两年前的一次很开心的情人节,后来就在也没有过过情人节,记得还和同学开玩笑说“情人节又不是爱人节,干吗一定要和自己的另一半才可以过,话是这么说,可另一同学又过了一个消息
情人节其实可短暂了,
手一拉一松,一个情人没了
手一拉不松,情人变老婆了
情人节最痛苦的事儿是啥,你知道嘛?
情人节没有情人一起过,

情人节最最痛苦的事儿是啥,你知道嘛?
情人节所有情人都找你过,

最最最痛苦的事儿是啥,你知道嘛?
情人节你的情人和别人过…
没错,每个人都有每个人的想法,你又是如何来想的,太多的事情永不能像自己想的那样,节还是要过的,事情还是要做的,情人节光棍节我都照过,顶住

二月 14th, 2009

Posted In: 未分类

前言:本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不提供全文内容。

  在DELL PowerEdge 6850服务器(四颗64 位Inter Xeon MP 7110N处理器 / 8GB内存)、RedHat AS4 Linux操作系统、MySQL 5.1.26、MyISAM存储引擎、key_buffer=1024M环境下实测,单表1000万条记录的数据量(这张MySQL表拥有int、 datetime、varchar、text等类型的10多个字段,只有主键,无其它索引),用主键(PRIMARY KEY)作为Where条件进行SQL查询,速度非常之快,只耗费0.01秒。

  出自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

  基于以上几点,我设计出了这套搜索引擎架构。在生产环境运行了一周,效果非常不错。有时间我会专为配合Sphinx搜索引擎,开发一个逻辑简单、速度快、占用内存低、非表锁的MySQL存储引擎插件,用来代替MyISAM引擎,以解决MyISAM存储引擎在频繁更新操作时的锁表延迟问题。另外,分布式搜索技术上已无任何问题。

一、搜索引擎架构设计:

  1、搜索引擎架构图:

2、搜索引擎架构设计思路:

  (1)、调用方式最简化:

  尽量方便前端Web工程师,只需要一条简单的SQL语句”Select … FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) Where query=’…’;”即可实现高效搜索。

  (2)、创建索引、查询速度快:

  ①、Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。

  Sphinx的特征:

  •Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒)

  •高性能搜索(在2-4 GB的文本上搜索,平均0.1秒内获得结果)

  •高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录)

  •支持分布式检索

  •支持基于短语和基于统计的复合结果排序机制

  •支持任意数量的文件字段(数值属性或全文检索属性)

  •支持不同的搜索模式(”完全匹配”,”短语匹配”和”任一匹配”)

  •支持作为Mysql的存储引擎

  ②、通过国外《High Performance MySQL》专家组的测试可以看出,根据主键进行查询的类似”Select … FROM … Where id = …”的SQL语句(其中id为PRIMARY KEY),每秒钟能够处理10000次以上的查询,而普通的Select查询每秒只能处理几十次到几百次:

 ③、Sphinx不负责文本字段的存储。假设将数据库的id、date、title、body字段,用sphinx建立搜索索引。根据关键字、时间、类别、范围等信息查询一下sphinx,sphinx只会将查询结果的ID号等非文本信息告诉我们。要显示title、body等信息,还需要根据此ID号去查询MySQL数据库,或者从Memcachedb等其他的存储中取得。安装SphinxSE作为MySQL的存储引擎,将MySQL与Sphinx结合起来,是一种便捷的方法。

  创建一张Sphinx类型表,将MyISAM表的主键ID和Sphinx表的ID作一个JOIN联合查询。这样,对于MyISAM表来所,只相当于一个Where id=…的主键查询,Where后的条件都交给Sphinx去处理,可以充分发挥两者的优势,实现高速搜索查询。

  (3)、按服务类型进行分离:

  为了保证数据的一致性,我在配置Sphinx读取索引源的MySQL数据库时,进行了锁表。Sphinx读取索引源的过程会耗费一定时间,由于 MyISAM存储引擎的读锁和写锁是互斥的,为了避免写操作被长时间阻塞,导致数据库同步落后跟不上,我将提供”搜索查询服务”的和提供”索引源服务”的 MySQL数据库进行了分开。监听3306端口的MySQL提供”搜索查询服务”,监听3406端口的MySQL提供”索引源服务”。

  (4)、”主索引+增量索引”更新方式:

  一般网站的特征:信息发布较为频繁;刚发布完的信息被编辑、修改的可能性大;两天以前的老帖变动性较小。

  基于这个特征,我设计了Sphinx主索引和增量索引。对于前天17:00之前的记录建立主索引,每天凌晨自动重建一次主索引;对于前天17:00之后到当前最新的记录,间隔3分钟自动重建一次增量索引。

  (5)、”Ext3文件系统+tmpfs内存文件系统”相结合:

  为了避免每3分钟重建增量索引导致磁盘IO较重,从而引起系统负载上升,我将主索引文件创建在磁盘,增量索引文件创建在tmpfs内存文件系统 “/dev/shm/”内。”/dev/shm/”内的文件全部驻留在内存中,读写速度非常快。但是,重启服务器会导致”/dev/shm/”内的文件丢失,针对这个问题,我会在服务器开机时自动创建”/dev/shm/”内目录结构和Sphinx增量索引。

  (6)、中文分词词库:

  我根据”自整理的中文分词库”+”搜狗拼音输入法细胞词库”+”LibMMSeg高频字库”+… 综合整理成一份中文分词词库,出于某些考虑暂不提供。你可以使用LibMMSeg自带的中文分词词库。

  二、MySQL+Sphinx+SphinxSE安装步骤:

  1、安装python支持(以下针对CentOS系统,其他Linux系统请使用相应的方法安装)

程序代码 程序代码

yum install -y python python-devel

 2、编译安装LibMMSeg(LibMMSeg是为Sphinx全文搜索引擎设计的中文分词软件包,其在GPL协议下发行的中文分词法,采用Chih-Hao Tsai的MMSEG算法。LibMMSeg在本文中用来生成中文分词词库。)

以下压缩包”sphinx-0.9.8-rc2-chinese.zip”中包含mmseg-0.7.3.tar.gz、sphinx-0.9.8-rc2.tar.gz以及中文分词补丁。

下载文件 点击下载此文件

程序代码 程序代码

unzip sphinx-0.9.8-rc2-chinese.zip

tar zxvf mmseg-0.7.3.tar.gz

cd mmseg-0.7.3/

./configure

make

make install

cd ../

 3、编译安装MySQL 5.1.26-rc、Sphinx、SphinxSE存储引擎

程序代码 程序代码

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/

tar zxvf mysql-5.1.26-rc.tar.gz

tar zxvf sphinx-0.9.8-rc2.tar.gz

cd sphinx-0.9.8-rc2/

patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch

patch -p1 < ../fix-crash-in-excerpts.patch

cp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinx

cd ../

cd mysql-5.1.26-rc/

sh BUILD/autorun.sh

./configure –with-plugins=sphinx –prefix=/usr/local/mysql-search/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile

make && make install

cd ../

cd sphinx-0.9.8-rc2/

CPPFLAGS=-I/usr/include/python2.4

LDFLAGS=-lpython2.4

./configure –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql-search

make

make install

cd ../

mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/etc/sphinx.conf.old

第二章第3节之后的正文内容不予公布,全文的目录如下(共24页):

二月 13th, 2009

Posted In: 未分类

Linux下限制网卡的带宽,可用来模拟服务器带宽耗尽,从而测试服务器在此时的访问效果。

  1、安装iproute

yum -y install iproute

  2、限制eth0网卡的带宽为50kbit:

/sbin/tc qdisc add dev eth0 root tbf rate 50kbit latency 50ms burst 1000

  3、限制带宽为50kbit后,在百兆局域网中wget下载一个大文件:

[root@localhost ~]# wget http://192.168.1.7/test.zip

–19:40:27– http://192.168.1.7/test.zip

Connecting to 192.168.1.7:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 23862312 (23M) [application/zip]

Saving to: `test.zip’

37% [=======> ] 8,994,816 457K/s eta 27s

  下载速度为457K/s,限制效果达到。

  4、解除eth0网卡的带宽限制:

/sbin/tc qdisc del dev eth0 root tbf

  5、对比:未作带宽限制情况下,在百兆局域网中wget下载一个大文件:

[root@localhost ~]# wget http://192.168.1.7/test.zip

–19:44:33– http://192.168.1.7/test.zip

Connecting to 192.168.1.7:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 23862312 (23M) [application/zip]

Saving to: `test.zip’

100%[==========>] 23,862,312 6.14M/s in 3.7s

19:44:36 (6.16 MB/s) – `test.zip’ saved [23862312/23862312]

  下载速度为6.16MB/s。

二月 13th, 2009

Posted In: 未分类

我告诉自己不准哭疼不在乎
不要再回头不让泪再流
我的爱无力挽留
我告诉自己不准哭泪却忍不住
那场刻骨温柔被你带走
留在心底的伤口让我承受
爱的往事萦绕心头纠缠不休
想要挥去无能为力
它就像一场无情的雨
转身远去的你早已忘记
曾经的诺言昨日相守的美丽
想找个借口骗自己远走
不再停留
心总是不舍你的温柔
忍不住再次为你守候
也许爱的规则从未看透
如果当一场游戏就不会太在意
我告诉自己不准哭疼不在乎
不要再回头不让泪再流
我的爱无力挽留
我告诉自己不准哭泪却忍不住
那场刻骨温柔被你带走
留在心底的伤口让我承受
music….
我告诉自己不准哭疼不在乎
不要再回头不让泪再流
我的爱无力挽留
我告诉自己不准哭泪却忍不住
那场刻骨温柔被你带走
留在心底的伤口让我承受
那道心底的伤口让我承受

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

二月 12th, 2009

Posted In: 未分类

哎~~~,总算BLOG搬了家了,以前的IDC能给人气死,在这里就不说了,换了新的地方,访问速度快了起来,还是兄弟提供的免费空间,在这里要感谢“哇噢”提供空间,在此表示感谢,总算把这两天玩的照片上传了上去,嘿,虽然说是aspjpeg自动压缩的缩略图看起来效果要差一点,但了省了偶很多事,批量上传一下就到了相册了,嗯,在嗨一次,嘿,www.waosoft.net,在此提供一个连接,有需要空间的朋友可以选择下,小广告哦
不过说实在的,速度是很不错,当然服务器的安全以后就是偶来帮着做了,稳定性偶说了算,不是有一句话说的好,我的地盘听我的,嘿,高兴下……

二月 12th, 2009

Posted In: 未分类

俗话说的好,钱在自己包里面才是老大,确实是这样,偶的这个空间就因为一个aspjpeg的组件问题,不知道联系IDC多少次,还好,总算是给偶装上了,可是没几天就不能用了,然后就没人管了,可偶的程序还要运行哪,天杀的,没办法,只能在找个IDC,换个空间,朋友说国外的空间挺好,打算测试一下看看效果,丫丫的,就是这样一来访问速度可能就慢下来了,偶的图片比较多呀,同事的BLOG可是除了文字什么都没有,怎么访问速度都快,现在的IDC价格还很高,考滤下给换到那个IDC去,哎,选择中

二月 8th, 2009

Posted In: 未分类

 magent是一款开源的Memcached代理服务器软件,其项目网址为:

  http://code.google.com/p/memagent/

  一、安装步骤:
  1、编译安装libevent:
[code]
wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure –prefix=/usr
make && make install
cd ../
[/code]

  2、编译安装Memcached:
[code]
wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure –with-libevent=/usr
make && make install
cd ../
[/code]

  3、编译安装magent:
[code]
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../
[/code]

  二、使用实例:
[code]
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213
[/code]
  1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
  2、11211、11212端口为主Memcached,11213端口为备份Memcached;
  3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
  4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
  5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的 Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。

  三、整个测试流程:
[code]
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
stats
memcached agent v0.4
matrix 1 -> 127.0.0.1:11211, pool size 0
matrix 2 -> 127.0.0.1:11212, pool size 0
END
set key1 0 0 8
zhangyan
STORED
set key2 0 0 8
zhangyan
STORED
quit
Connection closed by foreign host.

[root@centos52 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.

[root@centos52 ~]# telnet 127.0.0.1 11212
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
END
quit
Connection closed by foreign host.

[root@centos52 ~]# telnet 127.0.0.1 11213
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.

模拟11211、11212端口的Memcached死掉
[root@centos52 ~]# ps -ef | grep memcached
root 6589 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
root 6591 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
root 6593 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
root 6609 6509 0 01:44 pts/0 00:00:00 grep memcached
[root@centos52 ~]# kill -9 6589
[root@centos52 ~]# kill -9 6591
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.

模拟11211、11212端口的Memcached重启复活
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
END
quit
Connection closed by foreign host.
[/code]

二月 3rd, 2009

Posted In: 未分类

无觅相关文章插件,快速提升流量