出家如初,成佛有余

企业级搜索引擎Solr交流

Posted in Uncategorized by chuanliang on 2008/12/26

    项目中使用了solr作为网站的搜索引擎,内部做solr培训的ppt,共享一下。

    What is Solr:

    Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。

    关于solr更加详细使用用法可以参考以前的文章:企业级搜索引擎Solr使用入门指南

竞争力的探求-速度、效率、贴身服务

Posted in Uncategorized by chuanliang on 2008/12/21

    申音的《给海归技术创业兄弟的九个忠告》及《中星微之惑:首家海外上市IC设计公司走入低谷》两篇文章写得很棒,很值得所有创业的朋友仔细学习。

    对比中星微与联发科在过去几年中的经历是一件很有趣和发人深省的事情,也回答了诸如华为、中兴、比亚迪、腾讯、百度(姑且不评论这些企业的是否道德)这样的土鳖企业能够在自己所处领域中与国际大公司竞争中胜出的根本性原因(当然不是所有原因),正如文中对联发科完全客户导向部分的精辟总结(真的很经典):

    完全客户导向,选择规模庞大的应用市场而非细分的利基领域,在市场刚刚进入成熟期时迅速杀入,通过对国外技术的消化吸收进行逆向创新,提供真正低成本(但绝对不是低技术)的解决方案,依靠工程师团队而非个别天才作战,用速度、效率和贴身服务来弥补质量上的差距,通过打破行业的现有规则来确立新标准,与自己的上下游结成统一战线…… 。事实上,华为、比亚迪、腾讯、无锡尚德、金风科技这些中国最厉害的高科技公司,和联发科使用的是几乎同一套战法。

    很早以前做电信项目时候,已经深刻体会到华为、中兴这些中国本地制造商“用速度、效率和贴身服务来弥补质量上的差距”的所向披靡。尽管包括500强在内的所有企业都号称自己“以客户为中心”,但那些500强企业们从骨子里其实很高傲,觉得自己就是游戏规则的制定者,你必须完全按照我的游戏规则来玩,于是乎一个很合理、很简单的需求需要经过层层汇总反馈到美国总部,等上一年半载后才能够在新版本的设备中得到满足(那就请购买新的设备吧,美其名曰为扩容、升级),而华为、中兴可以在现场联调时候就满足。

    对于初创性的互联网公司而言,不管所处的是蓝海市场还是红海市场,短期技术上的优势还是很容易被别的竞争者所模仿并被超越(中国大部分企业其实都只是做应用,从本质上并没有什么核心技术优势),企业最为核心的竞争力其实归根结底还是对客户贴身服务,而这是那些巨头们(不管是国内的还是国外的)在高傲的内心深处所不屑于做或不擅长的,这也是小公司们的机会所在。

    当然并不是说互联网公司技术不重要,只有服务、流程、模式才是核心竞争力。恰恰相反,技术对于任何互联网公司而言都是核心竞争力,没有技术的强有力支撑,所谓的速度、效率、贴身服务就无从谈起。技术的核心价值是支撑性工具,工具的领先只是阶段性,并不能从根本上保持企业持久的竞争力。很多时候对最终客户而言很难感知技术的领先性,技术的价值最终还需要通过服务来体现,技术只有与企业的产品服务、流程、商业模式无缝结合后,才能够产生最大的价值。因此我们技术人员在花大量时间提升自己技术能力的时候,更应该多领会公司的业务模式,琢磨技术怎样更好地支撑公司的产品服务,这也是从编码人员晋升为高级技术人员的必由之路。

    有空也买一本《竞争力探求》学习学习联发科说倡导的山寨精神,应该很精彩。在网上看到了一个哥们分享的对《竞争力探求》的思维脑图,借用一下。

竞争力的探求

  《给海归技术创业兄弟的九个忠告》总结了九个朴素的忠告不仅仅适用用海龟们,处于初创性的企业也有很大的价值,摘录与此:

    1、别作“28个半布尔什维克”

    2、别在北京、上海创业

    3、别让技术最牛的那个家伙当CEO

    4、别跟政策要市场

    5、创业公司不要做产业报国梦

    6、忘掉硅谷式的“技术洁癖”

    7、别忘了自己的主要客户是谁

    8、80分主义,不要100分主义

    9、别做卖萝卜卖得最好的

面向对象的分析设计–RUP基础及用例建模

Posted in Uncategorized by chuanliang on 2008/12/19

公司内部做面向对象的分析设计培训的ppt,共享一下。

客户关系管理2.0-从深航的会员注册流程谈起

Posted in Uncategorized by chuanliang on 2008/12/16

    近一年老往广东方向出差,因此老坐深圳航空的飞机。对于我这样的怕麻烦的人来说,一直嫌各大航空公司繁琐的申请流程,也懒得每一次坐飞机还要记住带什么会员卡,也没有企图从各大航空公司所谓的会员里程积分计划中得到什么好处,因此一直尚未办理任何航空公司的会员卡。同样的道理,用了移动的全球通8、9年,从未使用过移动所谓的“积分兑换计划”,尽管移动每过几天就会发一堆垃圾短信,告诉提供乱七八糟的奖品。

最近,深圳航空给我寄了一封信,告诉我已经成为深航尊鹏俱乐部的会员,并且附带了会员卡及会员手册等东西。记不得自己填写过什么会员注册表格,这不是像互联网公司常用的垃圾邮件伎俩吗,忽悠人民群众的眼球和点击率,因此一抛了之。没想到又过了几天,深航又发了一个短信给我:

尊敬的深航会员,登录深航网站修改注册证件类型、号码与您实际乘机证件一致,您的飞行里程便可自动累计,详询:4008-808-666[深圳航空]

    这倒是有趣,这么简单,随手登录了深航网站网站,试验了一下,的确能够正常登录。看来航空公司也改变自己的营销策略和客户服务流程了,不管深航的出发点是什么,至少从注册为会员的流程而言,去除无用的繁琐环节,简化了注册流程,有点web 2.0的强调“用户体验为中心”的味道,值得称赞一下。按照当下流行的术语,逢新事物必称“xx 2.0”,我们姑且叫:航空公司客户关系管理 2.0。

谈谈自己对CRM 2.0的一些粗略理解,不成体系且杂乱,有空再梳理。

客户关系管理1.0 下,每一个企业的口号都是“以客户为中心”、“客户至上”,但企业的各种客服、市场营销、运营、产品研发等都是以企业自己想当然的“客户”及“客户需求”为出发点,在企业的各种精英员工内心深处其实还是有一种天生的优越感,以为自己就是权威,以为自己所提供的服务是唯一的,客户对此一定会趋之若鹜。于是乎要设立一堆人为的障碍来淘汰一堆不符合条件的客户,美其名曰“客户漏斗”、“客户细分”、“客户分层”。对于企业而言,其进行数据挖掘关心的客户价值更多的是客户所能带来的消费价值和潜在消费价值,企业所谓的“以客户为中心”中的“客户”其实是所谓的带来80%收益的20%的高端客户;企业营销方式或为Push方式或为Pull方式,所谓的“客户互动”只不过逢年过节的各种名义的联谊会及积分兑换。一个典型的场景就是航空公司的会员注册流程、移动的会员积分计划。

客户关系管理2.0下,企业在遵循2-8原则的基础上(毕竟企业资源是有限的,不可能对所有客户都一视同仁),应当关注并把握整个社会“长尾化、个性化、去中心化”的趋势;关注诸如IM、SNS、Blog、Wiki等新兴媒体在企业客户关系管理中所扮演的口碑效应;更加关注每一个鲜活的个体需求而非千篇一律想当然的群体需求,应当更加关注与客户更加真实、有效的互动形式而非形式化的所谓“回报”、“联谊”;更加关注与客户接触过程中的每一次“用户体验”是否为最佳的而非形式化的“客户满意度调查”,不要担心用户不再使用自己的服务,而应当担心自己的服务是否能够让用户以最低的成本使用完后尽快离开,正如google一贯的宗旨:“让用户尽快离开自己的网站”;

所谓的CRM 2.0还是CRM 1.0都只是各位专家们的术语而已,但对于每一个企业而言,“关注用户体验”、“以客户为中心”并不只是书本上的术语而已,我相信:只有从内心深处真正尊重每一个鲜活个体的个性化需求,企业才能够最终真正满足目标客户群体的需求,从而在日新月异的市场竞争中胜出。

Technorati 标签: ,,,,,

铁拳男人-用爱、责任、信念来度过严冬

Posted in Uncategorized by chuanliang on 2008/12/13

    最近看了一部罗素.克劳2005年的老片《Cinderella Man》(铁拳男人)。故事讲述了美国经济大萧条时期一段关于爱、责任、信念感人至深的故事。1930年代初,吉姆因为受伤的手而输掉了比赛之后被解雇并失去了拳击手工作。尽管穷困潦倒、几乎绝望,但他牵挂着挚爱的家庭,美丽的妻子梅一如既往地爱他,鼓励他。为了能使全家不受饥饿折磨,吉姆回到激烈的拳击赛场,起初没有人相信他会成功。吉姆靠着爱情的神奇力量和超人的技能战胜了一个又一个对手,从一个码头装卸工成为传奇的“拳场杀手”、“铁拳男人”。在狂大的对手面前,深爱妻儿的硬汉心中涌动出从未有过的求胜意志,一股强大的推动力促使这个为了梦想、为了尊严而奋斗的铁拳男人去挑战极限。

    几个感人的细节:

    1、为了交够所欠的电费和暖气费以把生病寄托在亲戚家的小儿子接回来,吉姆去会馆里向往日的朋友乞讨,“还差1.5个美元就够了!”。在这一刻,男人所谓的尊严已经荡然无存,“生活的压力与生命的尊严那一个重要”?

    2、吉姆的妻子梅得知丈夫决心重返拳台之后,上门找吉姆的经济人乔。在乔家门外叫乔不要躲在豪华公寓里不露面之后,进门后她发现乔竟然已经变卖了自己公寓里的所有家具来支付吉姆的训练费用。在空荡荡的豪华公寓里,乔的妻子说,“在我们嫁给他们的时候,男人们都许诺一切都会很好,然而后来才发现,当他们决定了去做什么的时候,我们只有在背后支持”;

    3、在拳击台上,当吉姆的面部再次迎来重重的一击,牙套飞落在地,场地上空的日照灯在他眼前渐渐模糊,随即大脑中的场景一一出现,充斥的不是观众台上疯狂的嘶喊,更不是来自身体的剧烈疼痛,而是家中妻儿冰冷的床铺,是大雪天里因无力支付暖气费,全家人紧紧相拥瑟瑟发抖的身体。

    4、不是任何人都能得到人生的第二次机会

    在这互联网的寒冬中观看这样的故事,发觉当下所面临的经济状况与故事所处的美国经济大萧条时期如此的类似,于是乎比繁荣时期观看此片有更多刻骨铭心的感受。在寒冬中,我们担心公司裁员失业、担心事业失败、担心空空的口袋无法支撑过这严冬、担心无法让所爱的人过得更加幸福,于是乎每天都处于惶惶不知所措中,再也无法静心去做那些曾经有意义的事情。其实在当下,我们自己最为稀缺的并不是金钱、机会(尽管我们真的也很缺少这些东西),而是缺少对我们自己坚持过的事业抱有宗教般的信仰,于是乎各种不确定的因素就很容易导致我们对事业的热情的下降和对曾经执着过的信念的动摇。

    在这互联网的寒冬中,作为男人、作为丈夫、作为员工的我们更应当承担自己的责任,而不是退缩在角落中抱怨命运的不公。为了我们对所爱的人曾经的承诺、为了曾经付出血汗的事业、为了我们自己的尊严和梦想,我们只能“一直应着风向前”。

    再听一遍老崔的《最后的抱怨》

记得那一天 我的心并不纯洁
我迎着风向前 胸中充满了抱怨
我不知何时被伤害 可这伤害给我感觉
我不是在回忆 我也不想再回忆
可那不明白的过去 使这风显得更加强烈
那不坚定的意志使这伤痛更加厉害
我心中只有爱情 可爱情它不能保护我
OhYe我只能相信我自己
还是在那一天 我要发泄我所有的感觉
我迎着风向前 不怕越走越远
我不知到底为什么愤怒 可这愤怒给我感觉
我不是在回忆 我也不想再回忆
可那多少年的风总是变换地吹个不停
把多少人的伤害吹成了一次次革命
我心中只有爱情 可爱情它不能保护我
OhYe我只能依靠我自己
我要寻找那愤怒的根源
那我只能迎着风向前
我要发泄我所有的感觉
那我只能迎着风向前
我要用希望代替仇恨和伤害
那我只能迎着风向前
我要结束这最后的抱怨
那我只能迎着风向前
向前 向向前 我迎着风向前
向前 向向前 我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前
我迎着风向前

参考资料

    http://en.wikipedia.org/wiki/Cinderella_Man

    http://www.mtime.com/movie/19887/

    http://laiba.tianya.cn/laiba/CommMsgs?cmm=10668&tid=2627241412043009259

    http://blog.sina.com.cn/s/blog_4e8bd9fb0100a94v.html

基于Webkit的手机浏览器价值思考

Posted in Uncategorized by chuanliang on 2008/12/11

   在互联网时代,IE是浏览器当仁不让的老大。但在无线互联网时代,由于Iphone、Android以及S60 v3都采用了Webkit作为浏览器的核心引擎,因此大有成为无线互联网浏览器核心动力的趋势。

    手机浏览器技术的开发研究是否只是互联网巨头才有资格参与的游戏呢?对于初创型的互联网公司而言手机浏览器技术有怎样的价值呢?就目前而言,无线互联网并没有一家真正意义上的巨头,也没有成功的商业模式可以参考,因此目前在手机浏览器领域的Opera、Ucweb们的模式是否可以作为成功的标杆来作为案例来研究尚待考证,也无从说起笑到最后的肯定就是这些公司。。对于无线互联网公司来说,即使不做手机浏览器,手机浏览器所涉及的各项技术实现也是在研发中必须面临的问题。

    开源的Webkit为我们提供了手机浏览器技术实现的范例,在尚未想清楚商业模式前,尤其是在这个寒冬中,除了期盼春天快点到来外,我们还可以静下心踏踏实实做一些事情,提升自己的能力来慰藉自己,迎接春天的来临。梳理一下这方面的思路,开始Webkit的研究之路。

基于Webkit的手机浏览器价值思考

 

手机客户端网络加速技术方案实现思考

Posted in Uncategorized by chuanliang on 2008/12/07

    与有线互联网初期通过163、169拨号上网慢如蜗牛的时代类似,目前的手机客户端仍然面临类似的“低服务、低带宽、高资费、内容少”的相似情况,对于终端用户而言,每一个流动的byte都是白刷刷的银子,流量费用及网络速度成了使用客户端的众多用户必须逾越的心里障碍。在3G时代“低资费、高带宽、海量内容”的梦想时代来临前,一切都还是近在眼前、远在天边。于是乎,怎样在现有条件下提高手机客户端的网络响应速度、节省流量费用成为手机客户端的核心技术。

    粗略整理一下目前想到的手机客户端网络加速技术方案,后续继续思考中。

1、网络加速基本原则:

  • 减少客户端与服务器端通信交互次数
  • 减少客户端与服务器端报文交互的字节数
  • 去除服务器端返回报文中无用的内容
  • 提升服务器端的响应时间
  • 提升客户端存取时间
  • 充分利用客户端缓存及服务器端缓存
  • 避免网络延迟

2、实现方案模式

  • 纯粹代理服务器(web proxy)模式
  • 代理服务器+内容预处理模式
  • 内容深加工+纯私有通信协议模式

3、方案实现技术

  • 降低图片分辨率
  • 服务器端静态文件内容压缩
  • 网络传输内容压缩
  • 去除网页无用元素
  • 精简自定义协议包,降低协议的字符数
  • 客户端本地缓存
  • 客户端预存取
  • 服务器端缓存
  • 避免dns延迟
  • 客户端并发存取服务器文件
  • 断点续传
  • 保持TCP长连接?

 

 手机客户端网络加速方案思考

4、参考资料:

    http://en.wikipedia.org/wiki/Web_accelerator

    http://wiki.openmoko.org/wiki/Server:WebProxy

    http://forums.mozillazine.org/viewtopic.php?t=355930

    http://www.linux.com/feature/148438

Discuz BBS及SNS用户密码加密算法

Posted in Uncategorized by chuanliang on 2008/12/07

    在做项目时候需要集成discuz bbs、ucenter、ucenter home各个系统,这就要求自己的系统在进行用户注册时候同步在bbs、sns中增加对应的用户信息,由于discuz的各系统密码都为非明文串,因此要做到Discuz的用户帐户体系与业务系统同步,必然面临Discuz 用户密码加密算法问题。同时与同时由于有近百万的老的用户数据需要能够导入到bbs、sns的数据库中,因此方案应当支持批量导入操作。

1、可选方案

  • 程序通过ajax方式或httpclient模拟调用discuz ucenter home及bbs的注册url地址,提交接口所需要的各种参数完成注册操作

    此种方案中最为关键的是需要处理formhash问题,其他参数相对容易。

    在单个用户注册时候可以通过ajax方式或httpclient调用sns及bbs的注册接口自动完成注册。但在需要导入将近百万的老的用户数据时候,采用url接口调用方式性能太差,需要能够批量导入用户注册。    

  • 绕过web前端,从后端程序直接把用户注册数据插入数据库表中

    采用此种方案相对灵活,不用再受web前端的各种逻辑限制,同时对于大数据量导入也较好处理,因此采用此种方案。   

 

2、Discuz BBS及SNS密码加密算法

    Discuz SNS及BBS的密码采用非明文方式,加密算法如下(采用mysql函数方式描述):

        md5(concat(md5(‘password’),salt))

    其中salt为各用户在uc_members表中salt字段存放的随机串,实际上就是md5算法中的salt随机串,在批量导入时候,为方便起见,可以采用统一的字符串,我们测试暂且采用123456

    算法描述在ucenter/model/user.php中:

function check_login($username, $password, &$user) {
        $user = $this->get_user_by_username($username);
        if(empty($user['username'])) {
                return -1;
        } elseif($user['password'] != md5(md5($password).$user['salt'])) {
                return -2;
        }
        return $user['uid'];
}

function add_user($username, $password, $email, $uid = 0) {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        $sqladd = $uid ? 'uid=''.intval($uid).'',' : '';
        //$appid = $this->base->app[appid];
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='".$this->base->onlineip."', regdate='".$this->base->time."', salt='$salt'");
        $uid = $this->db->insert_id();
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
        return $uid;
} 

3、插入用户数据方案

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    insert into uc_members (uid,username,password,salt) values(id,‘username’, md5(concat(md5(‘password’),’123456′)),’123456’);

    insert into cdb_members (uid,username,password, groupid) values(id,‘username’, md5(concat(md5(‘password’),’123456′)),12);

    insert into cdb_memberfields(uid,nickname) values(id,’username’);

其中:

    id为max(uid)+10,uid本身在bbs、sns数据库中是自增的,但为保证3个表数据uid的同步,因此由程序指定uid,而不是自增方式。

    123456为salt值

    例如:

    insert into uc_members (uid,username,password,salt) values(203,’test5′, md5(concat(md5(‘test5′),’123456′)),’123456’);

    insert into cdb_members (uid,username,password, groupid) values(203,’test5′, md5(concat(md5(‘test5′),’123456’)),12);

    insert into cdb_memberfields(uid,nickname) values(203,’test5′);

   采用此种方案简单测试了一下,应该能够自动完成用户在BBS、Ucenter home中的自动登录,而且登录bbs时候不需要用户进行激活操作。先凑合用用,有空再完善相关功能。

4、表结构

  • uc_members表结构:

CREATE TABLE `uc_members` (

  `uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `username` char(15) NOT NULL DEFAULT ”,

  `password` char(32) NOT NULL DEFAULT ”,

  `email` char(32) NOT NULL DEFAULT ”,

  `myid` char(30) NOT NULL DEFAULT ”,

  `myidkey` char(16) NOT NULL DEFAULT ”,

  `regip` char(15) NOT NULL DEFAULT ”,

  `regdate` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `lastloginip` int(10) NOT NULL DEFAULT ‘0’,

  `lastlogintime` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `salt` char(6) NOT NULL,

  PRIMARY KEY (`uid`),

  UNIQUE KEY `username` (`username`)

) ENGINE=MyISAM AUTO_INCREMENT=194 DEFAULT CHARSET=utf8

  • cdb_members表结构

CREATE TABLE `cdb_members` (

  `uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `username` char(15) NOT NULL DEFAULT ”,

  `password` char(32) NOT NULL DEFAULT ”,

  `secques` char(8) NOT NULL DEFAULT ”,

  `gender` tinyint(1) NOT NULL DEFAULT ‘0’,

  `adminid` tinyint(1) NOT NULL DEFAULT ‘0’,

  `groupid` smallint(6) unsigned NOT NULL DEFAULT ‘0’,

  `groupexpiry` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `extgroupids` char(20) NOT NULL DEFAULT ”,

  `regip` char(15) NOT NULL DEFAULT ”,

  `regdate` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `lastip` char(15) NOT NULL DEFAULT ”,

  `lastvisit` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `lastactivity` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `lastpost` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `posts` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `digestposts` smallint(6) unsigned NOT NULL DEFAULT ‘0’,

  `oltime` smallint(6) unsigned NOT NULL DEFAULT ‘0’,

  `pageviews` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `credits` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits1` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits2` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits3` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits4` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits5` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits6` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits7` int(10) NOT NULL DEFAULT ‘0’,

  `extcredits8` int(10) NOT NULL DEFAULT ‘0’,

  `email` char(40) NOT NULL DEFAULT ”,

  `bday` date NOT NULL DEFAULT ‘0000-00-00’,

  `sigstatus` tinyint(1) NOT NULL DEFAULT ‘0’,

  `tpp` tinyint(3) unsigned NOT NULL DEFAULT ‘0’,

  `ppp` tinyint(3) unsigned NOT NULL DEFAULT ‘0’,

  `styleid` smallint(6) unsigned NOT NULL DEFAULT ‘0’,

  `dateformat` tinyint(1) NOT NULL DEFAULT ‘0’,

  `timeformat` tinyint(1) NOT NULL DEFAULT ‘0’,

  `pmsound` tinyint(1) NOT NULL DEFAULT ‘0’,

  `showemail` tinyint(1) NOT NULL DEFAULT ‘0’,

  `newsletter` tinyint(1) NOT NULL DEFAULT ‘0’,

  `invisible` tinyint(1) NOT NULL DEFAULT ‘0’,

  `timeoffset` char(4) NOT NULL DEFAULT ”,

  `newpm` tinyint(1) NOT NULL DEFAULT ‘0’,

  `accessmasks` tinyint(1) NOT NULL DEFAULT ‘0’,

  `editormode` tinyint(1) unsigned NOT NULL DEFAULT ‘2’,

  `customshow` tinyint(1) unsigned NOT NULL DEFAULT ’26’,

  `xspacestatus` tinyint(1) NOT NULL DEFAULT ‘0’,

  `customaddfeed` tinyint(1) NOT NULL DEFAULT ‘0’,

  PRIMARY KEY (`uid`),

  UNIQUE KEY `username` (`username`),

  KEY `email` (`email`),

  KEY `groupid` (`groupid`)

) ENGINE=MyISAM AUTO_INCREMENT=194 DEFAULT CHARSET=utf8

  • cdb_memberfields表结构

CREATE TABLE `cdb_memberfields` (

  `uid` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `nickname` varchar(30) NOT NULL DEFAULT ”,

  `site` varchar(75) NOT NULL DEFAULT ”,

  `alipay` varchar(50) NOT NULL DEFAULT ”,

  `icq` varchar(12) NOT NULL DEFAULT ”,

  `qq` varchar(12) NOT NULL DEFAULT ”,

  `yahoo` varchar(40) NOT NULL DEFAULT ”,

  `msn` varchar(40) NOT NULL DEFAULT ”,

  `taobao` varchar(40) NOT NULL DEFAULT ”,

  `location` varchar(30) NOT NULL DEFAULT ”,

  `customstatus` varchar(30) NOT NULL DEFAULT ”,

  `medals` text NOT NULL,

  `avatar` varchar(255) NOT NULL DEFAULT ”,

  `avatarwidth` tinyint(3) unsigned NOT NULL DEFAULT ‘0’,

  `avatarheight` tinyint(3) unsigned NOT NULL DEFAULT ‘0’,

  `bio` text NOT NULL,

  `sightml` text NOT NULL,

  `ignorepm` text NOT NULL,

  `groupterms` text NOT NULL,

  `authstr` varchar(20) NOT NULL DEFAULT ”,

  `spacename` varchar(40) NOT NULL,

  `buyercredit` smallint(6) NOT NULL DEFAULT ‘0’,

  `sellercredit` smallint(6) NOT NULL DEFAULT ‘0’,

  PRIMARY KEY (`uid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8

5、关于discuz的formhash问题的备注

    从目前研究的结果来看,discuz bbs的formhash有两种:登录(注销)的formhash和发帖(回帖)的formhash

    获取discuz bbs的formhash的方案如下(ucenter home的有空再研究,应该与此类似):

     在登陆前,首先在未登录状态下访问bbs登录url地址:http://www.yeeach.com/bbs/logging.php?action=login以获取登录formhash,然后使用此formhash进行正常的登录操作。

    在发帖前,首先访问发帖url地址http://www.yeeach.com/bbs/post.php?action=newthread&fid=101以获取发帖formahsh,然后使用此formhash进行正常的发帖操作。

 

6、参考文档

    http://www.akii.org/discuz_md5_salt/