易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
小意外与用户行为分析

小意外与用户行为分析

以前的博客文章里介绍了什么是行为:

行为/路径:在一个访问过程中,客户访问过的所有页面的轨迹称为路径,或称为行为。

特定行为:由用户自行定义的行为,包含若干行为步骤,其中行为步骤不受限制,即可以任意设定行为步骤。进而分析出满足设定行为的发生次数及各个步骤之间的转化率。

特定行为转化率:在特定行为中,两个步骤之间的转化率。

行为入口:客户开始访问网站的第一个页面。在Web-IA中,根据入口给出典型行为分析。

行为出口:客户访问网站的最后一个页面。在Web-IA中,根据出口给出典型行为分析。

而行为分析也是做网站的所非常关注的。每年艾瑞斯咨询都会公布一些网上的用户的行为分析报告,这些都是参考资料啊

而我这次所说的,其实只是一个意外,然后引发出来的:用户其实很笨。这句话我不记得是史玉柱说的还是谁说的了。

昨天的事情其实是这样的。我打开一部片子,不知道按了什么快捷键,结果,动画片成中文的声音了。说实话,真的很意外,我发现切换声道后又有英文了。你们看到我这样会认为我的操作很奇怪,但事实上一点也不奇怪。自从播放器越来越高极后,字幕也成了外挂后,我真的忘记可以用声道来切换语音了。再加上也不是每部电影都会有多语音的。慢慢的也就忘了这个功能了。。。。

天涯,这么大的网站,贴子的内容页样式几乎没变过,为什么我不知道,我只知道,用户很笨,因为就怕一变之后找不到操作了。

做网站的都面临这样的情况,网站一改版,就要面临用户习惯的改变:平时这个连接都在左边的现在提上去一点点,我找不到了。。。

以前有一个网站可以提供用户点击热区的。。。现在找不到那个网站了。意外啊。

其实我只是乱说,莫介意

【转】一个月的学习搜索引擎心得

【转】一个月的学习搜索引擎心得

搜索,一直是一个比较大型的工程,效率和匹配就是众人所关心的。而对于搜索引擎来说,数据总量、重复度、抓取等,又是一项复杂的工程

以下来自博客园,纯属参考。。。
原文如下:

一晃时间就过去了一个月的时间了,从找到工作到现在也有一个月的时间了。

回顾这一个月的时间,感觉学习了一些东西,但是没有到理想的效率。

从10月25日差不多正式的开始了解搜索引擎算起,到11月25日,列举一下完成事情的内容,以后这些内容的记录要更频繁一些,也需要分享些经验。东西堆在一起之后就不太想记录下来了。

10月25日 - 11月6日, 看了一下Managing Gigabytes(以下简称MG)这本书,感觉还是很不错的一本书,翻译版叫做《深入搜索引擎》,作者是新西兰的一位教授,属于比较严肃的类型,但是对 知识点讲的还是非常的细,特别是文本压缩,索引,查询,索引构造讲得不错,都是比较传统的方法,最先进的一些方法没有怎么涉及,怪不得是作为 Stanford的教科书和参考书。

11月6日 - 11月12日,lw告诉我,需要下载百度知道,和天涯问答的内容,这样可以构建自己的语料库,程序语言就用perl吧。

于是花了两天来看了下perl,一个非常好用的工具,字符串处理超方便,就是效率不怎么样,可能是我太菜了的原因吧,呵呵。

下载网页的内容无外乎就是做一个简单的爬虫,MG书中没有讲,又去网上查了一些资料,简单的爬虫设计其实挺简单,不停的分析web页面中的html含有的链接,把需要的页面写到文件里面去,这块使用perl天生的正则表达式非常的容易,代码也很短。

百度的网页最好下载,甚至连正则表达式都不需要,因为百度知道的链接是如 http://zhidao.baidu.com/question/126947921.html ,把.html之前的9维数字进行枚举就可以了。

天涯问答的稍微复杂一点,主要需要分析链接的类型,如果是如同

http://wenda.tianya.cn/wenda/thread?tid=40734b71c6b7a07e这样的形式,也就是中间含有thread的,则为问题

如果是

http://wenda.tianya.cn/wenda/label?lid=68aa0de477338ddc& clk=cts_ls,也就是中间含有label的,则为一类问题的集合, 把集合想象为树的节点,问题想象为树的叶子,进行宽度优先搜索或者深度优先搜索就可以了。

如果需要perl源程序的可以跟我联系。

11月12日 - 11月22日, 看了一些Information Retrieve这本书,看了其中的一些内容,好些不太懂,看英文还是有点费力-_-,这本书写得我感觉比MG要轻松易懂一点,主要看了看 Clustering(聚类)和Classification(分类)的方法,主要有kNN与向量法。

学会了用perl处理下载下来的网页,将无用的信息删除,比如一篇内容就剩下分类和主要的文本内容,html标签和一些无用的东西都删除了。

学会了基本的分词算法,最简单的分词算法是正向,反向,最大匹配法,在这基础上有一个叫做双向最大匹配法,其实就是在正向和反向分词做完之后选择一个结果更好的,可以认为留下的单字越少越好,也可以认为分出的词数越少越好,分词后的结果可能是下面的

(不然)\引用\起来\必然\要\出现\牵强\附会\(的)\

现象\
造成\引用\(不得)\体\
今天\(来)\老师\(把)\(这)\一组\诗句\奉献\(给)\(你)\
希望\(你)\(能)\收录\(在)\(自己)\(的)\文件\夹\中\
梅须逊雪三分白\
雪却输梅一段香\
卢\梅\坡\
雪\似\梅花\
梅花\似\雪\
似和不似都奇艳\

括号括出来的是停用词,看起来效果还是不错把,呵呵。 另外对诗句的处理就是用了一些小小的trick,可能造成的错误很多,仅仅是做个实验。

11月24日 - 11月28日 这几天不幸感冒,今天才算缓过气来,准备一下计划吧。

另外公布一个我注册的google code地址作为我的第一篇日志的总结,如果有需要的朋友可以任意使用里面的内容,包括了我的代码和一些我找到的参考资料,可以无责任的使用他们,另外如果有朋友想要扩充这个知识库,可以联系一下我

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

原文地址:http://www.cnblogs.com/LeftNotEasy/archive/2009/11/27/1612144.html

使用ucweb上网

使用ucweb上网

真的没有想到opera会被咔嚓掉,所以看wap网站就。。。。 默认的浏览器无法看wap网站,很意外的,但又可以理解,毕竟电脑上的chrome也看不了老的wap网站。 所幸还有ucweb,最初的版本是java的,如今已经是apk的了,不错的软件呢。 本文就是在手机上使用ucweb发表,手机打字真的很累
完美解决PHP中文乱码

完美解决PHP中文乱码

关于以下内容,我对于数据库那段还真的不知道。。。原来可以通过这样的方式来强制执行我们一直会遗忘的那句话:set names utf8。。。

PHP中文乱码一般是字符集问题,编码主要有下面几个问题。

一.首先是PHP网页的编码

1. php文件本身的编码与网页的编码应匹配

a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总 是删除,再保存就可以去掉BOM信息了。

2. php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

二.PHP与Mysql的数据交互

PHP与数据库的编码应一致

1. 修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码

[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=MyISAM
在[mysqld]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'

2. 在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了

三.PHP与操作系统相关

Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如 move_uploaded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下 面的错误:

Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

Warning: filesize() [function.filesize]: stat failed for ... in ...

Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码 转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现 乱码,也可以正常读取文件,实现中文名称文件的上传、下载。

其实还有更好的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库 中,这样调用move_uploaded_file()就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下

header("Pragma: public");
header("Expires: 0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("Content-type: $file_type");
header("Content-Length: $file_size");
header("Content-Disposition: attachment; filename=\"$file_name\"");
header("Content-Transfer-Encoding: binary");
readfile($file_path);

$file_type是文件的类型,$file_name是原来的名字,$file_path是保存在服务上文件的地址。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wufongming/archive/2008/11/08/3256186.aspx

bluehost。。。

bluehost。。。

网上找了N多资料,翻阅了大量网站。一些国外虚拟主机对比啥的也都看了一遍。最后,我选择了bluehost

算是盲目中的选择吧?但最主要的可能还是搜索到的一些:bluehost因为不能做成人网站,所以被国内墙的机会比较小。

购买还算比较方便,直接支持信用卡【双币的都支持】。在支付了一年的费用后,走上了国外虚拟主机的路。在人没有出去前,我的网站已 经先我一步到了国外。

cpanel的设置让一开始的我有点头晕 ,但我还是挺过来了。

bluehost默认没有开启ssh,需要你发送一张身份证照片【扫描或者拍摄的都行】给他们就行了。为了防止滥用,我在图片上打上了巨大的水印【ONLY FOR BLUEHOST / ENABLE SSH CLIENT】,所幸,我通过了。(大约10分钟左右就收到开通邮件了,网上很多人说老外不太认中国身份证,很多人提交了也被咔嚓了。)

有了ssh,事情稍微好了一点,但 事实上,管理不了系统设置之类的,也就只能做做普通操作了。用ssh上去wget还是可以的。。

添加域名和绑定域名,我折腾了很久,还好,又搞定了。。。

事情总算有点顺利

一小段代码

一小段代码

群内突然有人【桔子】提问:

$str = '0001';//这个数有可能是'001020'……请问怎么取到前导有多少个'0'?('0001'结果为3,'001020'结果为2)

然后自问自答,说这些是他同事写的:

//算法1
$str = '001020';
echo strlen(str_replace((int)$str, '', $str));

//算法2
$text = '0001';
$zero = strlen($text) - strlen(ltrim($text, '0'));
return $zero;

然后说了他自己写的:

$string = '000 012012';
$string = str_replace(' ', '', $string);
$length = strlen($string);

$x = 0;
for ($i = 0; $i < $length; $i++)
{
$currentStr = $string{$i};
if ($currentStr != 0)
{
break;
}
$x++;
}
echo $x;

最后我也写了两个,一个正则,一个是利用现有函数:

$str = '00 0 000100002000';
preg_match( "/^0{0,}/", str_replace( " ", "", $str ), $out );
echo( $out[0] );

$str = '00 0 000100002000';
$tt = str_word_count(str_replace( " ", "", $str ),1,'0');
echo( $tt[0] );

之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?

哈哈完事。。。

thinksns在整合Ucenter的时候注意事项

thinksns在整合Ucenter的时候注意事项

thinksns在整合ucenter的时候难度并不大。主要有几个思路,不要错过就行了

1、不要想着把thinkphp框架整合进去,那样只会让你效率大低
2、合理应用thinksns提供的API,在API里面有取得当前登录用户的资料等信息,而且也有一个比较完整的数据库操作类【主要是不需要再调用config等配置了】

3、利用ucenter整合的时候,只能利用thinksns的一个cookie: remembor【开始为了这个我折腾了半天,我一直都打成remember。。。。汗一下先】(由于现在我是在一台机器上试,对于$_SERVER['USER_AGENT']是否一致还没有完全测试。。。)

4、整合的两个重要环节就是同步登录和退出。登录的时候要注意一下,两边的密码机制不一样,第一次同步资料的时候需要注意一下,否则一旦整合就不能使用原来的密码了。

5、同步登录的时候,如果需要强制注册,则必须要调用$api->user_add($data)这样的方法,具体的变量参数可以参考thinksns的lib中的indexAction.class.php ,顺便说一下,它的代码,注册中的隐私,其实没有插数据库。。。。骗子啊

6、起初的时候,我考虑需要读系统配置,就调用了$api->option_get()结果出错,由于ucenter api的出错是不显示的。调试了半天,才发现。原来是option_get()调用的get方法中,居然有一个ts_cache函数,而这个函数却是在api的范围之外,即它是属于thinksns的common方法中,在api中并没有被包含进来。。导致无法执行出错。

其他就没啥了。。至于feed同步啥的,则需要一点点的测试和更新,以同步到thinksns的feed库中。是个劳心劳力的过程。

PS:我会把本文同步到http://www.ucapi.com/wiki/上

考虑部分迁移国外机房

虽然已经迁到江阴机房,但这种不稳定的因素实在太多了,而且备案不备案的也受不了太多的折腾。呵呵

如果有朋友推荐好的国外虚拟主机【稳定的,价格不要太离谱的】,我可以考虑更换了。

而且这样还有一个好处,在备案没有下来之前,可以将网站先放在国外,备案下来后再迁回来

实在不想备案的就永远扔在国外算了。。

推荐请留言,谢谢

怒江 机房 曝光

怒江 机房 曝光

到google搜索标题这样的关键字,你会搜索到将近15000条记录。
好象有是央视曝光一些做色情网站的人,以及所牵连到的机房。

不幸的是,怒江移动机房在其中,前几天我已经说过类似的事情,但最后还是封了。幸好,在edong的协助下,目前,服务器已经迁往江阴机房。

所以,如果发现自己网站不能正常的访问的问题,请将你们的域名指向更换为我现在的IP

不知道IP是多少的,可以PING一下我的域名就行了。

最后贴个新闻:

据最新消息透露,上海移动怒江机房的排查工作仍在进行中,但80%的服务器已经处于解封状态,而包含大量WAP内容的网站将被圈定集中检查,据悉将有300-400个IP可能被封停。

消息人士称,昨天移动老总也在机房待了一天,主要的工作人员都集中召开了紧急会议,积极配合色情信息的审查。

DedeCMS官方传来消息,已经可以拿出服务器了,但百炼表示,这个时候转移服务器时间有一点来不及,希望大家耐心等待,织梦很快就会回来。

许多与移动机房有业务联系的IDC商则无奈的表示,此次行动与服务质量完全没有关系,他们一样有苦难言。
开发环境和生产环境布署的解决?

开发环境和生产环境布署的解决?

谈到这个问题,就不得不谈现时电子商务网站的现状了。
很多时候,在测试机上做开发的代码杂七杂八的功能都非常多,在没有使用UNIT等单元测试的时候,一些废弃功能也就永久的留在测试机上不会被删除。短时间内看不出啥问题,但时间长了,原有开发人员离职后,新的开发人员进入,如果再做上这些事情,那么时间长之后,哪些代码有效,哪些是测试代码就再也分不清了。

以下就是一位网友的经历:

首先,之所以把这个问题发到首页,一是我身边的朋友都有类似的问题,并且目前都没有最好的解决方案;二是有些朋友有好的解决方案,但是不一定是合理的方案,所以发到首页来相互学习,讨论。

我们进行WEB系统的电子商务系统开发,目前我有个问题不知道该怎么解决,想问问大家,看有什么好办法解决,情况如下:

1、我公司自己开发了一套电子商务系统,1.0的版本已经在运营。

2、现在开发人员要对该系统进行后续版本的功能增加,比如增加一些1.0中未实现的功能,甚至有时候还要改动1.0中的业务逻辑。

那么我的问题是:

在开发人员对后续功能进行增加的过程中,如果有一天发现1.0的版本中,有个严重的BUG,需要马上处理;

但是目前因为增加后续版本功能,代码已经修改了很多,这个时候,如果把1.0版本中的BUG修复,再布署到生产环境中的话,会出现很多两个版本中间不配套的问题,而出现程序错误;

然而,又不能全部布署最新的版本,因为当前的版本功能还没能完成。

这个时候,怎么办?

另外,我们开发环境中的数据库和生产环境中的数据库,数据同步的问题,比如1.0版本中的数据库已经有真实的用户数据和销售数据,但是我们后续的开 发工作可能增加了表,或修改了表的字段;本来是把后续的修改更新上去就可以了,但是我们在开发新功能的时候,开发环境中的数据库可能需要生产环境中的最新 数据才能进行。

这个时候,怎么办?

第一个问题,有朋友告诉我使用源码管理中的“分支”功能;

第二个问题,有朋友告诉我,在有需要最新的生产环境数据的时候,直接手工把数据导过来;

但是我总觉得应该还有更好的办法,或还有更细节的地方需要考虑和注意,特请有相关经验的人士一起讨论,谢谢。

补充:

虽然程序会经过严格的质量测试,但是布署到生产环境中的时候,难免还会有错误,像支付宝、淘宝这样的系统,他们除了质量测试,还有其他的技术手段来保证新的程序版本布署到生产环境中出现错误,不知道他们是如何做的。

关于程序的发布,另外还有两个朋友告诉我两种不同的解决方式:

1、是WEB程序的版本路径来区分,比如1.0的版本,上线发布的地址就定为:

http://pay.baidu.com/v1.0/login

而1.1的版本上线地址则为:

http://pay.baidu.com/v1.1/login

这样可以避免版本的冲突,但这个方法不适合我们的系统

2、上线的时候采用两台服务器切换,一旦有问题,直接切换到另已台服务器(这个方式我想没有正面地解决问题)

2009-11-18 晚上22:03

回家在网上找了资料,看了微软的一本书《使用 Visual Studio Team Foundation Server 进行团队开发》,简称“使用TFS进行团队开发”,其中看到两幅图,如下:

ec58276b7b8d82d35ce2d4f6341f220b

0dd429d7910d2e99f45ce54d1db845a3

再参考了一下相关的文字说明,我想,解决我面临的问题,最佳的办法应该还是使用版本控制是最好的,在此感谢园子里面所有给予建议和解决思路的朋友,谢谢你们。

-----EOF----

最后这位作者想到了使用版本控制,事实上版本控制是非常有必要的,有些时候我们还是需要为一段程序加上分支。要知道电子商务网站加减新功能可能是很频繁的。。

随便看看,好象自己没发表啥意见 。。。