Android 思考1-开放手机联盟思考

    这段时间,Google真的是风光无限,先是Google Chrome的发布,以及最近的T-Mobile G1的隆重上市,铺天盖地都是Google的消息,不得不感叹品牌的力量。

    整理一下对于Android的一些零碎的思考,以加深的无线互联网的理解。分成几部分思考一下:

    1、对Android 开放手机联盟思考

    2、Android 的商业模式思考:Android的商业模式、Google的无线互联网战略

    3、Android动了谁的奶酪:手机操作系统的竞争格局

    4、有中国特色的Android:Android山寨化、中国移动的Android平台

    5、Android的技术思考:

1、Android开放手机联盟

    在成立1年多后,Google发起的以Android为核心的Open Handset Alliance终于推出了第一款真机T-Mobile G1,应该说在类似的产业联盟中,能够在如此短的时间内推出真机,效率还是蛮高。如果举办一个有中国特色的“Android上市庆功表彰大会”的话,致辞中应该有类似“在联盟xxxx的光辉思想指引下,我们克服了重重困难,终于迎来了这个属于伟大的xxxx的光辉时刻。在这里我要感谢x、感谢xxxx,感谢xxxx,…”。

    一个成熟的手机产业联盟应当涵盖手机产业链中的半导体芯片制造商、设备制造商、运营商、软件提供商(软件服务器商、软件开发商、集成商、第三方开发者)等。从目前来看,Google发起的以Android为核心的Open Handset Alliance包含了手机产业链上的一些重量级的公司(参考open handset alliance members),这些重量级的会员加入对于尽快催熟整个围绕Android的产业链,帮助Android在目前Symbian、Windows Mobile、Linux、Apple OS X等手机操作系统平台竞争的乱世中迅速崛起起着至关重要的作用。但Google应当很清楚时间及成果对于维系这样松散联盟的重要性,因此也是其必须尽快推出G1这样的标杆产品的原因。从目前已知的资料而言,我觉得T-Mobile G1毋宁说是一个“IPhone的梦魇”的产品,还不如说是Google的Labs Beta产品。从G1的硬件配置、所支持的应用、用户体验等而言,尚有很多需要完善的地方,如果这样的产品都算完美的话,那就太低估人民群众的审美能力了。

    就目前竞争阶段而言,Google需要的不是一个完美的产品,而是需要一个证明联盟价值的东西,哪怕是半成品。

    Google应当很清楚,每一个联盟的参与者都不是为了慈善事业而参加这样的商业联盟,每一个游戏的参与者都希望从中获取最大的商业利益。就目前的竞争格局而言,整个智能手机操作系统的竞争尚处于初级阶段,胜负尚难言定,Android能否在手机操作系统的竞争中成为主导平台尚需要很长一段时间。因此在联盟的这些会员中,除了Google自己,我认为先半导体芯片制造商、终端设备制造商、软件提供商、运营商等大部分都是机会主义者,基本上都脚踩几只船,他们关心的是“怎样的无线互联网时代获取更大的市场份额”,参加各种这样的联盟只是他们的手段之一。

    对于半导体芯片制造商而言,吸引他们的是“怎样卖出更多的芯片、怎样占领更大的市场份额”。

    对于设备制造商而言,吸引他们的是“怎样降低终端的制造成本,卖出更多的设备”。对于Samsung、LG、HTC这样没有自己核心操作系统的厂商而言,采取墙头草式的跟随战略还可以理解。而对于Motorola而言这样的举措就是愚蠢之极(Motorola Building Up 350-Person Android Team. Nokia Also Sniffing Around.)。到现在为止,Motorola自己还没搞清楚自己在移动产业的核心竞争力所在-平台为王,没有搞清楚移动终端竞争的根本-用户体验至上。放弃自己还相对成熟的Linux平台当山大王的机会不用(或者借助已经参加的LiMo联盟),甘愿去另外一个联盟充当一个二流的喽啰角色,Motorola完蛋了。 同样的道理,如果Nokia也放弃自己的Symbian平台,加入 Open Handset Alliance  ,那Nokia也是愚蠢之极。对于这些设备制造商而言,放弃自己的与竞争对手有所区隔的竞争点不用,在竞争中采用与竞争对手完全同质化的产品,这样的竞争能有多少价值,利润能有多少。

    对于运营商而言,吸引他们的是“怎样让所有的终端都符合自己的规范,卖出更多电信服务”。

    对于软件提供商而言,吸引他们的是“谁的平台市场份额最大、谁的平台开发最为容易”。

    对于Google而言,Android作为其无线互联网战略的一个重要棋子,通过开放平台(是不是真正意义的开源平台尚待观察)的方式来颠覆手机操作系统的竞争格局,从一个局外人一跃成为游戏的参与者。其最大的兴趣是成为游戏规则的制定者(加入Android成功的话)。关于Google的无线互联网布局以及Android在Google无线互联网战略的意义的继续思考中…。

    关于手机联盟,比较有意思的是,可以比较一下几个与Open Handset Alliance联盟类似的基于Linux的产业联盟的会员:

        LiMo(http://www.limofoundation.org/

        OpenMoko(http://www.openmoko.org/

        LiPS(http://www.lipsforum.org/

        Maemo(http://maemo.org/intro/

    法国电信从LiPS联盟转为LiMo的故事很有趣,很值得一看:Mobile Linux组织融合背后的故事

    每一个人都希望自己在联盟中当老大,掌握无上的话语权,没有不能放弃的原则,只要利益使然。对于曾经“不作恶”的Google亦然,尤其是在作为成功者需要捍卫已有利益时候。

参考资料:

    http://www.androidin.com/android-827-1-1.html

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

 


站内标签:,,,,,,

还记得年少的的梦吗?

    十一呆在家中,没心没肺地看电影。看了部典型励志类电影的火箭小子(Rocket Boys)。故事根据美国NASA火箭专家Homer Hickam的畅销自传小说《ROCKET BOYS》改编http://en.wikipedia.org/wiki/Rocket_Boys,主要讲述了美国西弗吉尼亚州一个矿山小镇上的四个高中生百折不挠,完成自制火箭的梦想。老美描述故事的能力还是强大、很煽情。

    其实从儿时到现在,我们自己也像Homber一样曾经拥有过多少如此的梦想,那些梦想的光环是如此的绚丽,以致我们都只是远远观望,而忘记了去向梦想迈进。又有多少梦想我们曾经去尝试过呢,又有多少梦想我们曾经去坚持过一段时间?曾经拥有过的很多梦想只是象征性的尝试了一下就以各种冠冕堂皇的理由放弃掉了,更多的梦想尚来不及去尝试就已经被遗忘掉了。

    最为可悲的是,在经历现实生活中一次次的从梦想到挫折的经历后,我们发现在现实面前我们是如此的脆弱和无助,发现其实我们都只是凡夫俗子,于是我们不再梦想,也不再为梦想付出时间和精力。有的只是陷在沙发上,吃着各种垃圾食品,看肥皂剧里别人的梦想、别人的成功故事;有的只是参加各种成功学讲座,听关于成功学的速成秘籍;有的只是过着行尸走肉般的生活,日复一日、年复一年地做同样的事情。我们彻底丧失了对于未来、对于事业梦想的能力,更丧失了为梦想坚持和付出的勇气和动力,相反我们自己也开始嘲讽Homer Hickam对梦想唐·吉柯德式的固执坚持,嘲讽自己曾经的年少轻狂、不韵世事。

   千万不要放弃追求梦想的激情,有梦想才会有奇迹!

 

Technorati 标签: ,,

站内标签:,,

三鹿事件思考

    在中国这片充满神奇的土地上,像三鹿这样的事件不是第一起,也绝对不会是最后一起。对于一个丧失了自己核心传统价值观、基本诚信严重缺失的社会,对于一个无所畏惧和毫无任何道德信仰的民族而言,这样令人发指的事件还会源源不断地涌现。拜托我们的人民公仆们不要再一次一次自淫什么中华民族的传统美德,一遍又一遍厚颜无耻地让大家对自己感恩戴德。如果我们的祖先曾经有过善良、与人为善的美德,那么这些美德早已经在一次又一次的革命运动中被洗刷掉了。其实一个民族或者企业最为恐怖的不是经济的贫穷、也不是环境的残酷,最为恐怖是整个民族丧失了基本的善恶标准,丧失了对自己基本信仰的坚持。

   有两种东西,我们愈是时常愈加反覆地思索,它们就愈是给人的心灵灌注了时时翻新, 有加无已的赞叹和敬畏 ——头顶的星空和心中的道德法则。 ——康德墓碑铭文

    我自己有多久没有仰望过头顶的星空和三省吾身了?没有自己信仰的东西,那始终不会因为满足而快乐,这或许是我自己不快乐的根源吧。

    经过此次事件,按照正常人的逻辑推断而言,三鹿应当倒闭,也必须倒掉。如果经历这样的事件后,这样的企业还能生存下来,那真是对整个社会莫大的讽刺,然而我相信最后基于各种“有中国特色的理论”的论证,三鹿事件会很快平息下来,三鹿最终也不会倒掉,这才是让我辈感到崩溃和绝望的。

    同样不道德的康师傅在矿泉水事件后仍然可以生存下来,因此矿泉水并不是其核心业务,而三鹿的奶粉是其生存的根本。每一个企业和各人都有自己核心品牌和核心竞争力,一定要好好捍卫好自己的核心品牌和核心价值,对于自己的核心价值不能拿一时的利益去交换。相信三鹿的各位老板也曾经权衡过得失利弊,最终还是屈从于利益的需要。当我面对自己的三鹿事件时候,我自己能够坚持自己的核心信仰吗?

    最好的危机公关是不制造危机,将自己的命运寄托在与自己一样不道德的人的身上,永远没有好的下场。

    与其相信并指望那些伟大、光荣、正确的东西,与其相信那些商场上光怪陆离的利益交换,还不如指望自己的努力来换取幸福和快乐,还不如相信自己心中的善恶标准,至少我们可以通过对心中信仰的满足来得到相对的宁静,至少还可以按照自己的标准过得相对的道德。

    每一个人都会面对自己的三鹿事件,我们该怎样应对?


站内标签:,,,

关于Google Chrome的那些事儿

    Google Chrome出来后,整个互联网都处于亢奋之中,铺天盖地都是关于Chrome的专题文章、博文,多到有点让人发吐的地步。大家从云计算入口、SaaS服务、无线互联网、浏览器等角度谈论了Chrome对于Google的战略意义,也有大量从“产品设计、用户体验”角度大力推崇其极简主义风格的,呵呵,当然更少不了的“挑战微软的垄断地位、挑战微软的霸权”之类的中国特色的口号。

    由于这段时间忙项目开发的事情,也没时间仔细去思考此事情,今天有空梳理一下自己对Google Chrome的理解。

1、战略性产品 vs. 战术性产品

    我同意Google Chrome对于Google整个互联网战略布局的意义。就目前而言,浏览器仍然是互联网应用的“入口”,作为”互联网入口“的客户端比网页形式的在线应用在展现上及服务推送上更为灵活,更能够有效培养用户对服务的依赖性和忠诚度,因此客户端是每一个互联网公司必争的地盘。对Google而言,应该是希望通过Google Chrome来摆脱对操作系统、浏览器等第三方资源的依赖,为自己的服务及应用找一个统一的控制点和接入点(当然这些服务及应用也可以以当下时尚的“云计算”的外壳来包装),早期的Toolbar、Desktop、Gtalk等桌面应用已经无法支撑Google的需求。Chrome早晚肯定会成为Google所有应用的聚合平台和入口平台,尽管目前Beta版本没有附带任何Google的产品。

    目前互联网大战的游戏才刚刚开始,目前只是google暂时领先(尽管其领先的优势还是蛮明显的),谁能够真正成为千秋万代的霸主尚言太早。其实并不是google做得太好了,而是因为微软做得太差了,看看微软的互联网产品就知道其内部战略有多么的混乱,真浪费了那么多好的资源,其实微软并不缺互联网应用的基础,缺少的是具有互联网思维方式、持续性的互联网战略及舍弃当前部分利益挥刀自宫的决心。但如果微软调整好其互联网战略,那这场互联网游戏就很好玩了,其Office Live(商务化平台)+XBox Live(娱乐化平台)+Windows Mobile(无线互联网平台)+其他传统资源及其他Live应用的组合(例如垃圾的Live Search)还是蛮具有杀伤力的,尤其是在操作系统、浏览器等互联网基础设施上其先天的优势。其中基于XBox Live的娱乐化平台(尽管目前尚处于亏损状况),个人极其看好其未来,而Google目前尚未有任何能力和资源能够进入。

   从微软这个公司的基因分析而言,个人认为不管微软目前互联网战略有多么糟糕,这个庞大的帝国肯定会顺利完成其转身的,只是是其付出的时间及成本而已,因此从Google角度而言,必须在微软完成转身前构筑起竞争壁垒,而通过对互联网入口的控制来强化自己对整个互联网的话语权是手段之一。那么对于Google而言,Google Chrome算是“战略性产品”、“战术性产品”抑或是“20%时间的产品”,是用于防御、进攻、防御性进攻?从Google各位老大的重视程度来看,Google Chrome应该是一个战略性产品,而就目前chrome的产品特征目前尚看不出有太多进攻性的特征,正如施密特所言“由于试图防止微软利用其占市场主导地位的Internet Explorer浏览器包抄自己,谷歌的此项决定带有一定的防御成分”。

    既然是战略性产品,就我辈理解,那Google Chrome所被寄予的期望就不单纯是浏览器了,其承载的Google通过客户端(PC、无线)掌控互联网入口的野心。

2、Google Chrome的朋友和敌人(Google Chrome vs. Firefox)

   伟大领袖告诉我们:“谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题 ”

   我相信Google在打算自己推出Chrome前所作的产品规划中肯定已经明确回答了此问题,不知其内部是怎样定位Firefox、Opera、Safari这些早期的合作伙伴的。其实Google Chrome最大的受伤者不是微软,我觉得是Firefox,也是Google自己。预计在未来一段时间内,Google还是会作为Firefox顶级的商务合作伙伴(不是技术合作伙伴)对Firefox进行赞助,但没有理解Google自己为何对Firefox现有各种社区资源、丰富成熟扩展、良好的合作关系不顾,而直接选择了基于Webkit重启炉灶来开发自己的东西。如果是以为了提供“更快的速度、更好的用户体验、更强大的功能”的创新噱头而采用这样的策略,我觉得至少就目前Beta版本功能而言,Google Chrome并不能称得上一个典型的“Google式“创新的产品,如果一定要说创新,我觉得只能说是杂交了当下各种浏览器部分优点的产品而已。Google Chrome或许有美好的未来,但就当前而言,Google 在客户端战略上需要做的应当是团结一切可以团结的力量,利用一切可以利用的资源来帮助自己达到革命目标,而不是现在就开始从阵营内部分化。

    Google Chrome的目标不应当是做好的浏览器,而是为用户使用Google各种应用及服务(云计算)提供最好的接入点。其实Google Chrome可以考虑采用Webkit+Gecko双核心策略,这样可以兼顾各方的利益,同时可以应当充分利用Firefox现有的各种资源。

3、简洁制胜?(Google Chrome vs. Gtalk)

    其实Google并不是没有好的桌面端(手机端)整合接入工具, 一直觉得Google 其实白白浪费了Gtalk这么好的整合工具。不知Google对Gtalk的定位是怎样的,Gtalk发展了这么多年,一直还是到死不活的状态。一个软件出道时候标榜自己简洁可以博得众多的喝彩,但要是经过这么多年还是简洁到什么功能都不完善的程序,那还不如放弃算了。简洁≠功能简单≠功能不能强大。

    其实Gtalk要是早就采用开放平台策略(不单纯是通信协议的开放),参考Firefox或Chrome的扩展机制,提供一个足够简洁的核心基础框架,然后让众多人去帮助做插件和应用,这样可以保持内核框架的简洁和功能强大的平衡性,同时可以形成自己核心的社区。要是Gtalk早就按照此种思路去做,尤其是通过Gtalk来整合其搜索、地图、Orkut、Blogger等社区化元素,那Google现在做SNS或Chrome就容易多了。

    历史总是一次一次重复类似的故事,不知当年鼓吹“Gtalk简洁制胜,只用Gtalk”的各位仁兄们还有多少人仍然在坚持自己当初的承诺,但愿Google Chrome不要再走Gtalk及其他诸如Blogger、Orkut等Google产品老路子。

 

4、Google Chrome的核心应用场合

   众多人都说无线互联网是Google Chrome是核心应用场合。是的,没错,无线互联网是下一个Big Deal,当然少不了Google,当然也少不了Google的战略性产品的身影。只是个人觉得Google Chrome的最大价值是google各种应用的聚合接入点,而不单纯是其中的一个市场,也不单纯是一个浏览器本身。

   其实这一点Google Chrome应当充分学习Firefox社区及各种应用扩展的思路,把自己的各种应用无缝融入Google Chrome中,我想这应该是Google内部度量Google Chrome是否成功的标准之一。

   Google Chrome距离成功还有很大的距离,只不过这对于我辈并不重要,重要的是浏览器战火的重燃、竞争的加剧才能激发各产品的创新动力,而我们是最大的受益者。


站内标签:,,,

使用awstats完成门户社区流量统计分析

    Web站点中主要有三类数据:内容数据、结构数据、使用数据。同时Web Mining也分成三类:Web Content Mining、Web Structure Mining、Web Usage Mining。

    Web Content Mining和Web Structure Mining的对象都是网络上的原始数据。

    Web Usage Mining面对的是用户和网络交互过程中抽取出来的二手数据,这些数据主要是用户在访问Web时在Web日志(logs)里留下的信息,以及其它一些交互信息,包括:访问日期、时间、用户IP地址、服务器IP地址、方法、所请求URL资源、服务器响应状态、用户代理、发送字节等。Web Usage Mining就是对Server Logs、Error Logs、Cookie Logs等日志信息,以及用户的注册数据、社区发帖数据、点击行为数据、消费数据等进行挖掘,以发现有用信息。

    可以说对门户社区的访问流量进行统计分析是进行社区运营的重要手段,可以根据用户行为分析结果及时调整网站结构,提高用户体验。

    对用户行为分析最为准确的还是诸如协同过滤这样的技术,但由于涉及统计分析等复杂算法,后期再逐步引进,目前先针对访问日志进行统计分析。

    对Web日志的分析采用awstats来完成,下面简单说明一下awstats的安装使用。

1、 系统环境:

OS:Red Hat Enterprise Linux Server release 5

Apache:httpd-2.2.3-6.el5

Perl:perl-5.8.8-10

2、 关闭selinux

vi /etc/selinux/config

SELINUX=disabled

将SELINUX=enforcing修改为disabled,重启服务器

如果不想重启服务器,执行如下命令,但是只在当次启动有效:

selinuxenabled 0

查看目前selinux的状态: sestatus

如果要查询到更多的信息,可使用sestatus –v

查看selinux对httpd的参数值:getsebool -a | grep httpd

要设定selinux对httpd的参数值,可利用setsebool,例如:

setsebool -P httpd_disable_trans 1

3、 下载awstats

wget http://awstats.sourceforge.net/files/awstats-6.9.tar.gz

4、 安装awstats

tar zxvf awstats-6.9.tar.gz

mv awstats-6.9 /usr/local/awstats

cd /usr/local/awstats/tools

perl awstats_configure.pl

………………………省略部分内容…………………………

Do you want to continue setup from this NON standard directory [yN] ? //具体设置

输入y,如果awstats放在/usr/local/目录下,则不会显示这一步

—–> Check for web server install

………………………省略部分内容………………………….

输入/etc/httpd/conf/httpd.conf

………………………省略部分内容………………………….

—–> Need to create a new config file ?

输入y

………………………省略部分内容………………………….

—–> Define config file name to create

输入你想分析的网站域名如:localhost

………………………省略部分内容………………………….

—–> Define config file path

默认即可

………………………省略部分内容………………………….

—–> Add update process inside a scheduler

回车即可

A SIMPLE config file has been created: /etc/awstats/awstats.localhost.conf

You should have a look inside to check and change manually main parameters.

You can then manually update your statistics for ‘localhost’ with command:

> perl awstats.pl -update -config=localhost

You can also read your statistics for ‘localhost’ with URL:

> http://localhost/awstats/awstats.pl?config=localhost

Press ENTER to finish…

回车安装完毕

5、 安装来访者IP未知插件:

wget http://www.ieasy.org/download/qqhostinfo.pm

cp qqhostinfo.pm /usr/local/awstats/wwwroot/cgi-bin/plugins

wget http://www.ieasy.org/download/qqwry.pl

cp qqwry.pl /usr/local/awstats/wwwroot/cgi-bin/plugins

下载QQWry.Dat(http://update.cz88.net/soft/qqwry.rar),上传到/usr/local/awstats/wwwroot/cgi-bin/plugins下

也可以使用GeoLiteCity.dat,但GeoIP对中国城市的统计不准确,在国内还是珊蝴虫和纯真版IP数据库相对准确。

6、 配置httpd

修改/etc/httpd/conf/httpd.conf,修改内容如下:

AddHandler cgi-script cgi pl

#

# Directives to allow use of AWStats as a CGI

#

Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"

Alias /awstatscss "/usr/local/awstats/wwwroot/css/"

Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"

ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#

# This is to permit URL access to scripts/files in AWStats directory.

#

<Directory "/usr/local/awstats/wwwroot">

Options None

AllowOverride None

Order allow,deny

Allow from all

</Directory>

7、 配置awstats

mkdir -p /var/lib/awstats

chmod -R +x /var/lib/awstats

修改/etc/httpd/conf/httpd.conf

将CustomLog “logs/access_log” common修改为

CustomLog “logs/access_log” combined

LoadPlugin=”qqhostinfo”

编辑/etc/awstats/awstats.localhost.conf 修改

LogFile="/etc/httpd/logs/access_log"

perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=localhost –update

8、 重启httpd

service httpd restart

9、 访问awstats

http://192.168.1.202/awstats/awstats.pl?config=localhost

10、 参考资料

http://www.ieasy.org/reload/cat2/awstats_qqhosti.html

http://www.chedong.com/tech/awstats.html

http://www.osxcn.com/journal/awstats-plugins.html


站内标签:,,,,,,,

在linux下使用nfs及软链接解决图片文件共享问题

    由于在门户社区中,诸如图片、下载软件这样的资源都较大,且在下载过程中,对带宽资源的占用也较大,因此为不影响正常业务应用,一般情况下都是将图片等资源部署到一台单独的服务器上以分配单独的带宽(在同一台服务器上也将这些资源存放在磁盘空间较大的地方),此种情况下图片等资源与应用不一定在同一台服务器上,即使在同一台服务器上也不一定部署在同一目录下。方案如下:

1、 图片等资源部署在单独的另外一台服务器上

    此种模式可以通过linux的nfs来把完成远程文件mount为本地的文件目录(类似于windows的网络共享),步骤如下:

    下面以将192.168.1.199(NFS服务器端)上的目录/liang mount到192.168.1.202(NFS客户端)上为例,说明一下远程mount的实现

1) NFS服务端(192.168.1.199)执行如下操作

  • 在NFS服务端(192.168.1.199)修改/etc/exports,内容如下
         /liang 192.168.1.*(rw)

    格式如下:directory machine1(option11,option12)

  • 在NFS服务器端启动NFS:

    /etc/rc.d/init.d/portmap start

   /etc/rc.d/init.d/nfs start

  • exportfs命令:

    在启动了NFS之后又修改了/etc/exports后可以用exportfs命令来使改动立刻生效,命令格式如下:

    exportfs [-aruv]

      -a :全部mount或者unmount /etc/exports中的内容

      -r :重新mount /etc/exports中分享出来的目录

      -u :umount 目录

      -v :在 export 的时候,将详细的信息输出到屏幕上。

2) 在NFS客户端(192.168.1.202)执行如下操作

  • 建立本地mount点目录

    mkdir /liang

  • mount远端目录到本地目录

    mount 192.168.1.199:/liang /liang

  • 修改/etc/fstab以在系统重启时候自动mount:
     # device       mountpoint     fs-type     options      dump fsckorder
     192.168.1.199:/liang  /liang    nfs          rw            0    0
  • showmout命令

    -e :显示指定的NFS SERVER上export出来的目录。

    -a :是用来显示已经mount上本机nfs目录的cline机器,一般在NFS SERVER上使用

2、 图片等资源与应用部署在同一台服务器上,但资源目录与应用目录不在一处

    此种情况,采用linux的软链接把图片等资源链接链接到应用的目录下。

        ln  -s /image /www/newwap/wap/image

    由于安全上的考虑,tomcat及jboss缺省情况下都不允许访问软链接的文件,改动如下:

    在conf/server.xml中或conf/Catalina/localhost(根据虚拟主机配置情况做相应改变)下的context中增加如下内容:

        <Context path="" docBase="/www/newwap/wap"  allowLinking="true">

                <Resources className="org.apache.naming.resources.FileDirContext"

                         allowLinking="true"/>

                <Logger className="org.apache.catalina.logger.FileLogger"/>

        </Context>

3、参考资料

    http://nfs.sourceforge.net/nfs-howto/ar01s04.html


站内标签:,,,,,

Ucenter Home 1.5安装及单点登录集成方案

    整理一下安装Ucenter Home1.5版本及Discuz BBS的过程及与公司自己的门户社区整合过程中的注意事项作为备忘。

下面以在服务器192.168.1.202上安装配置说明一下整合过程。

    操作系统:Redhat AS 4

    Mysql : 5.0

   

1、下载UCenter、UCenter Home、Discuz! 集成安装包

    http://download.comsenz.com/UC_UCH_DZ/UC_UCH_DZ_SC_GBK.zip

2、下载ucenter home 1.5

    http://www.jz123.cn/soft/download.asp?softid=12538&downid=62&id=12427

    目前ucenter home 1.5版本为beta版本,官方尚未正式发布,由于功能相对全,因此采用此版本。

3、下载ucenter头像升级页面

    http://u.discuz.net/download/avatar.zip

4、数据库安装,以utf8创建数据库并创建sns的用户

    create database sns default character set utf8;

    grant all privilege on *.* to sns@’localhost’ identified by ’sns’;

    flush privileges;

5、apache及php安装配置

   使用Redhat AS 4自带的httpd及php,修改/etc/httpd/conf/httpd.conf

       port  80

        DocumentRoot "/var/www/html/sns"

6、安装UCenter、UCenter Home、Discuz! 集成安装包

    mkdir /var/www/html/sns

    unzip UC_UCH_DZ_SC_GBK.zip

    mv upload/* /var/www/html/sns/ 

7、访问http://192.168.1.202,开始安装过程

        UCenter的访问网址:

            http://192.168.1.202/ucenter

        DISCUZ!的访问网址:

            http://192.168.1.202/bbs

        管理员访问网址:
            http://192.168.1.202/bbs/admincp.php
        UCenter Home的访问网址:
            http://192.168.1.202/home
        管理员访问网址:
            http://192.168.1.202/home/admincp.php

8、将ucenter home从1.0版本升级ucenter home 1.5版本

     将UCenter_Home_1[1].5RC1_SC_GBK.rar中的upload目录下的文件upload/ 目录中,除 config.new.php 文件、install/ 目录以外的其他所有文件全部上传到home/目录下并覆盖当前程序,特别注意的是,最新数据库结构 ./data/install.sql 文件不要忘记上传将程序包UCenter_Home_1[1].5RC1_SC_GBK.rar update目录中的update.php文件上传到home/目录目录,并在浏览器运行。

    http://192.168.1.202/home/update.php

    升级成功完成安装后:

      删除home/update.php文件

      删除 home/data/tpl_cache目录中的所有模板缓存文件

      上传avatar.zip中的avatar.php到ucenter/下并覆盖原来的文件

9、为整合门户社区需要进行的修改问题汇总

9.1、ucenter home注册及登录页面校验逻辑修改

注释掉sns安装目录下home/source/function_common.php下的对formhash认证的函数,修改如下:

    //判断提交是否正确

function submitcheck($var) {

        if(!empty($_POST[$var]) && $_SERVER[’REQUEST_METHOD’] == ‘POST’) {

                if((empty($_SERVER[’HTTP_REFERER’]) || preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER[’HTTP_REFERER’]) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER[’HTTP_HOST’])) ) {

//删除  && $_POST[’formhash’] == formhash()

//              if((empty($_SERVER[’HTTP_REFERER’]) || preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER[’HTTP_REFERER’]) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER[’HTTP_HOST’])) && $_POST[’formhash’] == formhash()) {

                        return true;

                } else {

                        showmessage(’submit_invalid’);

                }

        } else {

                return false;

        }

}

9.2、门户集成ucenter home注册页面实例

一个典型的注册页面

<form id="registerform" name="registerform" action="do.php?ac=register&&ref" method="post" class="c_form">

<table>

  <tr><th>Username</th><td><input type="text" id="username" name="username" value="" /></td></tr>

  <tr><th>Pass</th><td><input type="password" name="password" id="password" value=""  /></td></tr>

  <tr><th>Pass2</th><td><input type="password" name="password2" id="password2" value=""  /></td></tr>

  <tr><th>mail</th><td><input type="text" id="email" name="email" value="@" /></td></tr>

  <tr><td><input type="submit" id="registersubmit" name="registersubmit" value="register" /></td></tr>

</table>

<input type="hidden" name="refer" value="space.php?do=home" />

</form>

注意上述提交按钮<input type="submit" id="registersubmit" name="registersubmit" value="register" />必须以此种形式提交,因为是ucenter程序验证了submit的name或id,在程序提交时候不要忘记了此参数。

9.3、注册码问题:

由于用户一般情况下并不需要登录UCHOME的注册页面,因此此处可以先注释掉注册码验证逻辑,只验证用户名称及密码。

注释方法,修改home/source/do_register.php,注释掉

/*

                if($_SCONFIG[’seccode_register’]) {

                        include_once(S_ROOT.’./source/function_cp.php’);

                        if(!ckseccode($_POST[’seccode’])) {

                              showmessage(’incorrect_code’);

                      }

                }

    */

9.4、注册时候需要验证邮箱的问题

由于我们目前注册时候并不需要用户输入邮箱(号码管家也不要求用户使用邮箱注册),而sns注册时候需要用于邮箱,而此部分代码在ucenter中控制,此部分代码加密了的,没有办法修改,目前为简单起见,如果用户在注册时候填写了邮箱,则在门户提交给sns的注册页面参数中以用户填入为准,如果没有,则以用户手机号+”@”+mobile-soft.cn为用户邮箱。

9.5、自动激活问题

UCHOME、BBS通过UCENTER整合到一起后,在UCHOME注册后,在使用BBS时候首先必须进行激活操作,这对于用户体验并不是很好。

因此注册时候,同时完成用户在BBS的激活操作。

 注册时候自动激活用户BBS帐号:

在手软门户登录注册时候同时在cdb_members、cdb_memberfields中插入相应的数据,其中在cdb_members中的password字段可以任意填写

INSERT INTO `cdb_members` VALUES (’21′, ‘liang6′, ‘liang6′, ”, ‘0′, ‘0′, ‘10′, ‘0′, ”, ‘192.168.1.7′, ‘1220466585′, ‘192.168.1.7′, ‘1220466638′, ‘1220466672′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘liangchuan@mobile-soft.cn’, ‘0000-00-00′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘0′, ‘1′, ‘1′, ‘1′, ‘0′, ‘9999′, ‘0′, ‘0′, ‘2′, ‘26′, ‘0′, ‘0′);

INSERT INTO `cdb_memberfields` VALUES (’21′, ”, ”, ”, ”, ”, ”, ”, ”, ”, ”, ”, ”, ‘0′, ‘0′, ”, ”, ”, ”, ”, ”, ‘0′, ‘0′);

以上插入记录的用户的id号可以从uc_members表中获得

9.6、门户集成ucenter home登录实例

<form id="loginform" name="loginform" action="do.php?ac=login&amp;&amp;ref" method="post" class="c_form">

<table class="formtable" cellpadding="0" cellspacing="0">

<tr><th width="100"><label for="username">Username</label></th><td><input name="username" id="username"  value="" type="text"></td></tr>

<tr><th><label for="password">Password</label></th><td><input name="password" id="password"  value="" type="password">

  </td></tr>

<tr><td><input id="loginsubmit" name="loginsubmit" value="Login" class="submit" tabindex="5" type="submit">

</td></tr>

</table>

<input name="refer" value="space.php?do=home" type="hidden">

</form>

9.7、bbs登录注册问题

由于bbs的注册通过sns的注册已经解决了,因此不需要单独的注册页面,开发时候把bbs的注册页面修改为手软门户的注册页面。

要实现在登录门户时候同时自动登录bbs相对简单,一个典型的登录表单:

    <form id="loginform" method="post" name="login" action="logging.php?action=login&amp;loginsubmit=true">

        <input name="username" value="" type="text"><br>

        <input id="password" name="password" type="password"><br>

        <button name="userlogin" type="submit" value="true">login</button>

</form>

 


站内标签:,,,,,,

下一页 »