九部门深入启动整治网络色情和低俗信息专项行动

2012-02-28 08:55   来源: 新华网

新华网北京 2月27日电 由国家互联网信息办牵头,全国“扫黄打非”办、工信部、公安部、文化部、国务院国资委、国家工商总局、广电总局、新闻出版总署九部门27日下午召开电视电话会议,部署在全国深入开展整治互联网和手机传播淫秽色情及低俗信息专项行动。

中宣部副部长,中央外宣办、国家互联网信息办主任王晨在会上作了动员讲话,全国“扫黄打非”办等部门负责人对本系统积极组织开展专项整治工作提出了要求。

王晨在讲话中强调,整治网络淫秽色情和低俗信息、净化网络文化环境,关系千家万户切身利益,关系社会主义精神文明建设,关系国家和民族的未来。各地区各相关部门要认真贯彻落实中共十七届六中全会关于发展健康向上网络文化的重要部署和中央关于互联网建设、运用、管理的方针政策,认真贯彻落实中央有关净化网络环境、保护青少年健康成长的重要指示,按照抓源头,打基础,切断利益链的要求,加大网络执法力度,集中清理互联网和手机媒体中的淫秽色情和低俗信息,严厉打击传播网络淫秽色情违法犯罪活动,坚决切断淫秽色情和低俗信息传播的利益链条,全面净化互联网和手机媒体环境,为青少年健康成长营造良好的网络环境,为党的十八大胜利召开营造良好的网络文化氛围。

会议指出,自2010年12月整治互联网和手机淫秽色情信息云南现场经验交流会召开以来,各地区、各相关部门和单位认识到位、思想重视、行动迅速,持续开展了整治打击网上涉性用品药品非法信息、非法网络公关行为等一系列专项治理行动,网络淫秽色情和低俗信息蔓延之风得到有力遏制,网络环境明显净化。但是,整治互联网和手机淫秽色情信息是一项长期、艰巨、复杂的任务。近一个时期,一些网站传播淫秽色情和低俗信息的问题又有所抬头,特别是随着网络技术裂变式发展,网络淫秽色情和低俗信息传播形式和渠道更加复杂和多样,并呈现出一些新特点新动向,必须针对整治互联网和手机媒体传播淫秽色情及低俗信息工作的新情况新问题,开展深入整治专项行动。

会议提出,这次专项行动的主要任务是,大力整治淫秽色情和低俗信息集中、人民群众反映强烈的网络传播重点领域,坚决关闭严重违法违规网站、传播淫秽色情和低俗信息的微博客、社交网站和即时通信群组账号,查处传播网络淫秽色情的大案要案,依法严惩违法犯罪分子,依法查处少数为淫秽色情和低俗网站提供代收费的企业,查处少数在淫秽色情和低俗网站投放广告和为其宣传的广告联盟,清理整顿违法违规接入服务商,进一步加强网站备案、审批、接入管理,督促基础电信运营企业、接入服务企业、域名注册管理和服务机构落实信息安全管理责任制,进一步建立健全防范和查处淫秽色情及低俗信息长效工作机制。

会议部署了加强网上重点领域重点环节管理、严厉打击互联网和手机淫秽色情违法犯罪、广泛发动社会公众监督举报、形成打击网络淫秽色情强大舆论声势等七项重点任务。此次专项行动自3月初开始至8月底结束,历时6个月。

Google Web App开发指南第三章:案例研究

2012-02-24 10:05  来源: webapptrend.com

旅程计划应用(Wayfindit: Trip Planner App)

在大多数情况下,Wayfindit的应用必须有很好的易用性。旅行是一件很复杂的事情,不管是商业旅行还是休假旅行,一个顺利的旅程要求从家门到目的都没有意外之忧。Wayfindit的应用要能给旅行者提供所需信息,并且要快而准确。这意味着它需要一个最小的、直观的、响应式界面,能在前端提供有关内容的重要信息——HTML5的地理感知和离线存储特性实现。

一个完美的袖珍指南

它就装在你的口袋里或者包里,即时提供信息。它拥有本地存储和地理感知功能,只需要检查下当天时间,Wayfindit Trip Planner app就能显示出你的日程表,并在你有时间剩余时给出建议,在你靠近一个美丽景点时给出提醒,以及一个智能地图和方位指示。

Wayfindit Trip Planner app利用HTML5的特性给人们提供了一个方便的、随时随地提供服务的、智能的旅程伴侣。它具有很好的交互能力——视觉上清晰,性能优异,能明白旅行者的需求和所处环境。它能让假期更为愉快,使用起来也让人倍觉乐趣。

到达服务

飞机刚刚降落?基于旅客的位置和最后一次访问互联网时的信息,Wayfindit Trip Planner app就能立即提供一辆出租车,以及附近的餐厅或活动信息,或到酒店的路径(以及酒店距离此处的距离)。

所有这些信息的到达都以以毫秒为单位——这个应用由内而外都设计精巧,各部分功能都尽量压缩,以确保它给人感觉迅速。

住房服务

旅行者这时候驾着租来的车驶向了旅馆。应用了解这一点,并会在随后提供停车位数目。所有这些信息都是存储在本地的——不管是否有网络连接,这些信息都是即刻可用的。

多种选择

Wayfindit Trip Planner App采用了HTML5和CSS的响应式设计。在一个较大的屏幕上,比如笔记本或平板电脑,它能提供更多信息。除了酒店入住和出租车租赁信息,还会提供一些周边信息,例如酒店和活动推荐。(在手机上也能看到相同信息,但是需要向下滚动页面。)

酒店和活动推荐是基于旅行者的地点和当日时间。

饭店服务

想要知道去饭店怎么走?Wayfindit的Trip Planner知道怎么到那儿——步行、打车或者使用公共交通(如果它知道那儿没有可租用的车,就采用公共交通)。如果旅行者正在使用这个应用,他只需要一次点击就能呼叫正确的电话号码找到交通工具。

由于这个应用是可感知地理位置的,它能提供周边的景点信息,这些信息存储于本地数据库,Wayfindit Trip Planner App能根据数据库信息作出智能推荐。

总结功能

一日结束后的回顾总结能让旅行者留下更深刻的旅行记忆,这同时也能提升Wayfindit Trip Planner App的明日推荐。Wayfindit Trip Planner App提供了一些漂亮的HTML5表单,让用户可以很方便地为当天活动作出评级。

Khan学院(Khan Academy)

Khan Academy以视频课堂的形式提供了丰富的教育资源,这些资源富于教育性,容易获取,并且完全免费。Khan Academy还提供了一个“知识地图”和一些统计数据,引导你学习课程,并且记录你的进度。这对世界各地的学生而言都是非常好的资源,无论是在校内还是校外,无论是出于教学目的还是仅仅出于兴趣。它值得使用web上最好的展现技术,所以我们将Khan Academy作为一个例子,将其引入HTML5的时代。

焦点集中在教学内容

Khan Academy的视频内容是其网站的焦点,我们做了重新设计,使视频处于前端,免于干扰。视频占满屏幕,辅助信息在不需要的时候都消失了,以提供沉浸体验。当导航出现的时候,它也是最小化的——一切都是为了学生更好地学习。评论和提问部分都是最小化的,并且除非用户需要,评论和提问部分的内容是不会加载的,以节约加载时间。键盘上的一些快捷键让导航更为容易。

界面本身遵循响应式设计的思想,通过使用HTML5的meta viewport tag和CSS的媒体查询功能,移动设备用户在他们的设备上可以看到相同内容,但这些内容都是以最适于他们设备的布局呈现。

一个进度条(使用HTML5的《progress》元素)为学生的学习进度提供了一个直观的视觉反馈。本地存储的使用使得查询学习进度十分方便——无需登录存储或者记录数据,未来,这一应用还将大幅度提升其性能。

学习树

在“学习”标签下,有一个内容明细,Khan Academy的上千学习课程和联系都分成目录和子目录,易于检索。在这里也有一个进度条,提示学生各个标签下课程的学习进度。

在目录和子目录之外,会提供一个课程清单,一门课程中的一组视频是通过栈来指明的。和Khan Academy网站的已有组织不同,Khan Academy的HTML5应用中的视频课程和内容是以相关度进行分组的,这样相关内容都可以在一个地方就可以访问到。

Khan Academy web app使用了HTML5为学生提供了一个设计精良、永远在线的资源,他们可以学习、练习、跟踪所学内容。鼓励学生去学习可能是比较困难的,但是Khan Academy尽可能多地去除了障碍。它速度快,可以交互,并且提供了大量有着直观导航的学习资源,所有资源都可以无干扰使用。

美图(Picture Page)

Picture Page给了人们以一种全新的方式去看发生在世界上的事情。如果说一幅图相当于1000个词,那么Picture Page比世界上大多数出版物提供的都多,情感和细节都得以展现。Picture Page上只是一系列图片,附带有很小的、简单的不显眼的标题,这个站点的强大之处正在这里——它让图片作为焦点,让图片去讲述它们自己的故事。没有弹框,没有难以导航的幻灯片,没有微缩图。这个HTML5 Picture Page app给现有的很多图片新闻网站提供了一个创新的方式,将它们带入了一个全新的web app世界。

顺其自然

Picture Page这个应用名字本身就很好地描述了它——大的图片是它成功的关键。Picture Page的HTML5的re-imagining功能让图片可以以更大方式展现。通过使用CSS的background-size性质来自动缩放照片,照片可以占满全屏,成为焦点。

响应式设计使得移动设备用户能看到大小合适的小版图片;CSS3的媒体查询语句使得图片可以全屏展现而又不影响性能。它还能够像native mobile app一样检测挥动和触屏动作。Picture Page在任何设备上感觉都十分自然。

把用户体验放在第一位

Javascript让用户可以通过键盘快捷键对Picture Page.进行导航。使用左右箭头或者自己约定的J\K键可以向前或向后翻动图片,这样就减少了用鼠标导航时寻找光标带来的干扰。当不需要的时候,箭头是被隐藏的,这样图片就不会受到影响。

使用HTML5的《progress》 tag,可以展现相册访问者的进度。

Picture Page是应用时代没有使用背景构建(ground-up reconstruction)的一个很好的例子。它优雅,视觉效果好,备受喜爱。因此我们可以在合适的地方应用HTML5提供的特性,将现有网站和新鲜的技术结合,展现出更好更大的图片。

本文编译自ling,原文地址

译文出处:webapptrend.com,转载请注明出处链接。

如何在Google成为一名优秀的产品经理?

2012-02-24 11:17   来源: 伯乐在线

导读:有用户在Quora提问:优秀的Google产品经理需要具备哪些素质?前 Google 工程师 Edward Ho 回复了这个问题。编译Edward 的回答,全文如下:

在Google ,我和我所见到过的最优秀的产品经理一起工作过,我会根据自己的经历出一个列表。由于我不是项目经理,所以这些结论都是我在Google观察最优秀的产品经理后的结果。

1. 对产品以及所有相关的问题负责。这会让你积极主动,你是第一个寻找bug的人,第一个与用户沟通的人,以及第一个担心产品是否合格的人。你总是第一个自愿为产品或团队做各种任务的志愿者,像是做会议记录、给客户发邮件、填补临时的空缺、为bug确定优先级,或是快速做出一个实体模型。始终持有这样一个想法:这不是别人的责任,这就是你的责任。当你这么做的时候,你会发现第2条会更容易。

2. 具备难以置信的说服力。(我不知道这是如何做到的,但每天我都会看到)你希望把事情完成,但你不是负责人,所以只能去说服别人。没有哪个团队向你汇报,也没有任何人会按照你的说法行事。在 Google ,你需要通过使别人信服而不是发号施令来完成事情。如果你正在做第1条,事情会变得简单,因为每个人都知道如果有人攻击这个产品,你和他们会位于同一个战壕。

3. 成为一名工程师。我并不是说你真的需要为产品编写代码。我想说的是,你应当像一名工程师那样对产品的构造过程具有好奇心。你应该了解产品功能在开发过程需要的成本,以及为什么开发成本会变得这么高。那个特性使用的是什么算法?为什么这个页面会呈现得很慢?大的架构变动对产品会产生影响,团队中的每个工程师都会对此非常重视,你也应该如此。如果你遇到项目的负责人,他们想要知道一些具体的事情,你应该能够为他们解释一些主要的工程方面的决定以及之前的利弊权衡。在谷歌,最好的的产品经理都会尽可能地变得更加技术化并乐此不疲。

4. 积极,再积极一点。你的团队很可能全部由工程师组成,并且中的一些可能非常愤世嫉俗。一个非常积极向上的产品经理能够在团队中创造一种包容的氛围。尽管每时每刻都保持积极看上去很可笑,但是积极是有传染性的,你的团队会依赖上它。请记住,你和主要的工程师(技术负责人)可能会列出百万种让你沮丧的事情,但是团队中的其他人不应该知道这一切。因为你是产品经理,所以不应该沉浸在自己的担心中,这样会帮助他们更好地完成工作。你就是团队面向整个公司其他部门的窗口和信使。如果你变得消极,团队就会因此认为公司里其他人也是这么看待他们的工作。

如何在Google成为一名优秀的产品经理?

5. 不要自我推荐。这是显而易见的,如果你这么做了,不但非常无聊而且对自身也有害。赞美团队中的其他人,你和技术负责人(们)已经是项目的主要联系人,因而不要做任何的推荐。如果你拿别人的辛苦劳动用来为自己博得赞赏,你不仅错了而且不会得逞。要心胸宽广。无论是撰写项目博客,还是产品新特性的午餐视频发布会,最优秀的产品经理都应该推荐团队的其他成员。看看谷歌最优秀的产品博客,你就会发现这些博客的作者并不总是由产品经理,反而会是团队中的各个成员。产品经理会积极推荐其他人。(请不要误解我这里所说的“推荐” promotion ,这和升职是完全不同的。顺便说一下,在谷歌升职是和绩效考核紧密相关的。)

6. 无所畏惧。这个名词如果是作家来解释可能会更好,但请你不要被字面意思所迷惑。最好的产品经理向领导汇报的内容和给团队中的工程师或设计师讲述的内容应该是一样的。如果你在被领导质问产品设计所作的决定时默不作声,你肯定不会成功。做出简洁明了的回答,并无所畏惧地为你团队的创意辩护。

希望上述内容能有所帮助。

原文:Edward Ho 编译:伯乐在线 – 唐尤华

Google+:Google给Facebook的终极绝杀

昨晚你可能听说在Google.com的顶端出现了一个神秘的黑条,也许你已经亲眼所见,放心,这不是你的幻觉,这个标志表示Google有“重磅武器”登场了,那就是:Google+GooglePlus

你可能会问,Google+是什么东西?不知道是正常的,因为这可是Google在过去几年一直在悄悄研发的高度机密项目。这个项目是由Vic Gundotra和Bradley Horowitz负责,要知道,他们俩在Google的地位,那就相当于美国的巴顿将军和麦克阿瑟将军。尽管一再有关于这个项目的风声走漏,但Google仍尽可能地刻意对此轻描淡写。在这个项目上,Google的态度一直相当低调。但它是真实存在的,现在它终于登场了。 Google一直将Google+低调处理,不是因为不看好它,也不是因为不把它当回事,而是因为它现在还只是整个发展宏图的草稿而已。Gundotra和Horowitz认为Google+不只是一个产品,也不是一种战略方案,而是一个扩展后的Google。 Gundotra上周在接受采访时说,“我们认为目前在线共享服务还不完善,甚至可以说是相当糟糕的。在我们看来,与其他人联系是人类的一个基本需求,在现实生活中我们一直以各种方式与别人接触,但我们的在线工具却很死板,他们要不就硬把我们塞进桶里,要不就将我们完全曝露在公众面前。真实生活的共享是微妙且丰富的,这很难通过软件来实现。” 在Google+的演示视频中,我们可以看到一个设计周到的产品,甚至看起来不太像是Google的作品。Gundotra说,他们投入了很多心思和精力去做Google+的用户界面和用户体验。

Google+

下面简单介绍几款吸引人的Google+功能。 在Google+中,最让人感兴趣的可能是一个叫做“交际圈(Circles)”的功能,交际圈并不是一款独立的产品,而是Google+的一个重要功能。Gundotra说,“它是我们产品中的一部分核心内容。”用户可以通过交际圈来选择加入和组织群组从而达到最优的共享模式,虽然用户不大喜欢做群组管理,但Google尽可能地将管理过程做得讨人喜欢。你只需从一份推荐联系人的名单(来自于你的Gmail或Google通讯录)中选择合适的人选,然后将他们拖进你指定的交际圈中。整个过程的用户界面都简单直观,甚至可能会让人觉得有趣。它完全可以打败Facebook的建群功能。Gundotra知道很多社交服务商尝试让用户建群但最终都以失败告终,但他坚信交际圈会获得成功,因为他们是运用软件来恰当地模拟真实世界。更重要的是,用户还会因使用交际圈而得到好处。

Google+

Google+最大的特色之一是它作为一个工具栏存在于所有Google网站的顶端,你一旦设置了自己的交际圈,就能通过工具栏极为方便地将任何Google网站分享给任何交际圈中的人。 Horowitz说,考虑到不同网站提供所分享模式五花八门的现状,他们希望通过这个名为Sandbar的黑色工具栏来进行统一,这个工具栏以同样的形式存在于Google的扩展浏览器和手机版本等等。 Gundotra还展示了一个名为“火花(Sparks)”的功能,在Gundotra看来,精彩的内容可以成为好的话题,让聊天更为顺利。使用火花,你可以输入一个所感兴趣的东西,Google会在网上帮你找出他们认为你可能会关心的内容,Google可以搜索出任何相关的博客、视频和书籍。如果其中有你喜欢的,你可以将其收藏。你也可以在其他人的收藏区中看到他们所喜欢和谈论的东西。

Google+

为了便于人们互相联系,Gundotra设计了Google+的即时上传(Instant Upload)功能,其想法是让每个人的口袋里都有一台相机。这个功能适用于喜欢使用Android手机拍照和拍视频的用户。这个新的应用程序可以自动将这些内容上传到Google+并存储在一张私人专辑中,用户可以选择是否分享。

Google+

Google+的另一个功能叫做“聚集(Huddle)”,它实质上是一个群发信息的应用软件,可以在Android、iPhone和SMS上面与交际圈的人进行交流。

还有一个功能叫做“巢穴(Hangouts)”,Gundotra说“现在每人都拥有高速的网络,但有多少人会使用群视频聊天呢?没多少人。”群视频聊天不仅需要强大的技术和资金支持,最大的问题在于这种聊天方式并未受到社会欢迎。为了解决这个问题,Google+的团队想到了真实生活中那些坐在门廊的邻居们。如果你的邻居坐在门廊,你知道他们应该有兴趣聊聊天,而且如果你只是一言不发地走过去,这多少有些不礼貌。基于这种想法,Google+的巢穴功能可以让你的好友知道你想要与人聊天,这在某种程度上解决了视频聊天的问题。如果你准备好与交际圈中的人聊天,那交际圈中的每个人将收到一个来你的巢穴逛逛的邀请。它最多能支持10个人同时进行群视频聊天,而且Google+聪明到能够随时分辨出谁是谈话的主角然后关注此人,这将便于聊天者观看聊天过程,就像是有个编辑坐在屏幕后面,随时对视频进行剪接。

Google+还有很多其他实用吸引人的功能,我们会在接下来的报道中陆续为大家介绍,就像Gundotra所总结的,“Google+不只是一个单纯的产品,它是为了让Google得到更好的发展。如今的网络是以人为本的,想要掌握世界动向,必须了解人们的想法。”

Google+

注:那个该死的黑条并不是Google+,想要体验Google+需要获得邀请才可,不知道这玩意会不会像当年的Wave那样。

来源:月光博客

英文原文:Google’s Facebook Competitor, The Google+ Social Network, Finally Arrives

中文翻译:雷锋网

2011 程序员薪资调查报告全文发布

2012-02-23 16:13   来源: 程序员   文/常政

自 2011 年初,CSDN 在网上发起“2011年软件行业技术人员薪资大调查”(网址:http://vip.csdn.net/2011/xinzi/main.html) 以来,引起了广大开发者们的热烈反响,短短两月时间内,近万名开发者提交了调查数据。尽管这只是中国百万开发者大军的一小部分,但他们所在的行业几乎涵盖了整个中国软件的产业链,他们的职位几乎代表了一个软件团队体系的每一个层面,而且“一叶知秋”,所以透过这些调查数据和变化,我们或许可以一瞰中国软件开发者的普遍生存状态,甚至可帮助开发者,更准确地定位自己在产业内的坐标。

2011:程序员的日子不算差

相信每个开发者在回忆当初高校毕业,加入滚滚求职大军的情形时,都能记得那番对美好生活的憧憬和闯荡世界的豪情。而在经济社会,判断成功的可量化方式无疑是薪资了,尽管有点世俗,但暂时也找不到更好的标准。那么现在,中国的程序员们,总体收入水平如何呢?首先我们看程序员们对薪资水平的满意度。

图一

我们发现绝大多数程序员(近 73%)对自己的薪资并不满意,这种普遍不满意的情绪有多少是主观预期过高,多少是客观生存环境造成的呢?我们需要做进一步的考察。

我们按月薪大小把收入水平划分为四类:低收入(小于 2000 元)、中等收入(2000~5000元)、中高收入(5000~10000元)、高收入 (大于 10000 元)。从调查数据看,来自中国 17 座重要 IT 城市的开发者们,占据绝大多数的是月薪 2000~5000元,它在 13 个城市占据最高的比例,其中排前 3 名的是沈阳(67.5%)、济南(65.8%)、珠海(62.5%)。而北京、上海、深圳的开发者收入水平相对高些,这三座城市占据绝大多数的是月薪 5000~10000元的群体。

图二

如果仅依据国家统计局公布的数据显示,2010全年城镇居民家庭人均总收入 21033 元(月平均 1753 元),其中北京城镇居民人均可支配收入 2.9 万元(月平均 2417 元)。这两年国家经济相对比较稳定,估计 2011 年的情况也差不多。所以总的来说,2011年的中国程序员群体,在所处的城市里,和其他居民比,算相对收入不错的了。

当然也有生存环境堪忧的, 我们发现月薪少于 2 0 0 0 元的群体, 主要分布在济南(15.8%) 、西安(13.8%) 、青岛(12.7%)、武汉(12.6%)。

而如果以月薪 10000 元(及以上)算高薪,排名前列的则是上海(26.9%)、北京(20.6%)、深圳(14.7%)、杭州(11.3%),杭州程序员群体的崛起令人关注,说明杭州近年来的信息化建设成就卓著。再回过头来看程序员的薪资满意度,我们通过交叉分析发现,程序员的满意度确实和薪资大小相关,收入越高,不满意的比例越小。但值得注意的是,不管哪个收入群体,都超过 50% 以上都表达了对当前薪资的不满,说明尽管日子过得不算差,但中国程序员们的幸福感普遍不高。

图三

最佳跳槽次数,最好不超过 3 次

跳槽,一直是程序员们在职场生涯里所面临的热点话题。它是一把双刃剑,一方面会带给你更多的视野和经历;另一方面,会降低你的企业忠诚度和所在企业平台的积累。所以很多开发者往往会面临是否跳槽的煎熬和苦恼。那么本次调查的数据显示,资薪和跳槽此数存在潜在的规律吗?

表一

从上面的“薪资/跳槽次数交叉分析表”,我们发现在四个收入群体中,“少于 2000 元”和“2000~5000元”群体中的绝大多数人都未换过工作,而从收入高于 5000 元的群体开始,有跳槽经历的人数显著加大。从工资高于 10000 元的高收入群体看,我们发现有 3 次跳槽经历的人占据最多的比重, 达到 24.6%,但从第 4 次开始又急剧下跌到 10.3%。所以从这样的数据结果可以看出,凡是有一定收入水准的开发者,基本上是有跳槽经历的,但跳槽的次数越多,并不绝对保证薪资高。数据显示跳槽次数存在一个“天花板”——3次。看来适度的跳槽有利于经验和技能的提升,但如果跳槽过于频繁,则不利专业的积累,自然在薪资上提升的空间也不大了。

技术菜鸟到牛人的距离,5年是分水岭

再来看工龄和薪资的具体量化关系,我们发现工作1~2年的开发者,工资在 2000~5000元之间占据绝大多数,而工龄超过 2 年的,大多数人的收入达到 5000 元以上。 同时我们发现薪资在 5000~10000元群体在 10 年以内都基本处于一个稳定状态,没有明显增幅。而 10000 元以上的高收入群体,一个非常显著的变化是,前 5 年的人数增幅明显加快,但之后几年一直均处于稳定状态。

图四

表二

所以,“3年(月薪 5000 元)”、“5年(月薪 10000 元)”是两个关键的分水岭。凡是月薪 5000 元以内的,随着工作年数的增加,人数递减; 但随着年数达到 3 年后,月薪 5000 元以上的群体,人数开始显著递增。这不难理解,因为工龄的增加,开发者的工作熟练程度也越高,所以自然薪水也就高了。 而工龄超过“5年”达到月薪 10000 元以上后的高收入群体,随后也基本开始保持稳定了。这说明,岁月对于技术开发者的薪资,同样存在一个瓶颈,并不是无限制正比例上升的。由此我们似乎可以推断,在中国软件行业,一个程序员菜鸟发展到业界认可的“熟练工”大概是“3年”,而“技术牛人”所需要的成长时间, 大概是“5年”。

什么工作最赚钱?——不上班

“男怕入错行,女怕嫁错郎”。随着信息化在全社会范围内的渗透,所从事的细分行业的信息化发展水平和市场前景,已经成为决定开发者收入水平重要因素。那么作为开发者,选择什么样的工作,选择哪个行业的软件公司最有发展前景呢?调查结果令人诧异——自由职业者(SOHO)收入水准最高,超过 30% 的 SOHO 月收入超过 10000 元,月收入 5000 元以上的比例更是超过 84%。但细想也在情理之中,有勇气做自由职业的开发者,往往具备超高的技术水准和丰富的行业积累。

图五

再看具体的细分行业,高收入开发者比例最高的领域是欧美外包(21.4%),看来中国软件本质上离“中国创造”的目标,还有很长一段距离。其次是原厂商(17.1%),这里的原厂商指的是诸如微软、甲骨文、IBM 等软件巨头,其员工收入高并不意外。排名第三的是移动和手机应用(16.9%),这现象令人欣慰,毕竟未来就是移动互联网的时代。

从调查数据看,最不合适介入的是教育行业,小于 2000 元的低收入者比例接近 15%,月收入小于 5000 元的接近 65%。教育产业在国家属于公共资源,被严格管理,介入门槛比较高,再加上以“高考”为指挥棒的单一教学导向,不容易衍生丰富多彩的信息化应用。此外,餐厅零售行业也是开发者需要谨慎选择的,低收入者 10.87%,小于 5000 元的接近 71%。不过餐厅零售业不像教育那样受到政府的严格管理,所以从乐观的角度,说明这个行业的信息需求没有充分挖掘。

开发语言,选谁都一样

工欲善其事,必先利其器。开发语言、平台对于开发者来说,如同披荆斩棘的利剑。尽管对于顶尖高手来说,达到了编程思想、方法论层面的炉火纯青,可鸟瞰一切平台和工具,但对大多数初涉软件行业的程序员来说,熟悉哪种语言、开发工具往往直接决定了当下的收入水平和生活水准。从调查数据看,绝大多数开发者都使用 JAVA,达到 45.3% 之高,其次是C#、C++、C、.NET、JavaScript,它们相对比较均衡,基本在 25% 左右(注:很多开发者往往实际会使用一种以上语言)。我们发现,C#、.NET 开发者中,小于 5000 元的比例最高,基本在 55%。但不能因此说C#、.NET 没有前途,因为另一数据发现,所有的语言,在 5000~10000元的群体里,比例竟然惊人趋近,基本都在 30%~40% 之间,这说明不管选择哪个平台,只要达到“熟练工”水准,收入不会差太远。至于一些语言的低收入群体比例偏高,这和它容易学习,适合编程菜鸟上手有关,因为我们同时通过交叉分析,注意到工龄 2 年内的 C#、.NET 程序员小于月薪 5000 元收入水平的比例竟然高达 80% 左右,而工龄超过 3 年后,这个比例开始明显下降了。 再看高收入群体,我们发现在使用 Erlang、Perl、Scala 技术的人中,高收入人群的比例较高,分别为 41.2%、36.7%、 36.4%。但我不建议大家一窝蜂地去学习这些语言,因为同时发现它们的样本量极低,分别是 17、98、11,远小于近万份的总样本量,看来主要是物以稀为贵,会的人少,自然收入就上去了。

图六

图七

结束语

在本次调查中,我们还结合英语技能、学历高低对开发者的薪资水平进行了分析,发现结果和常识是一致的,即英语、学历越高,获得高薪资的比重越大。总的来说,开发者要想过更好的物质生活,重要的是在专业性上下工夫,因为尽管随着城市(考虑消费水平在内)、技术平台、行业等外在条件的不同,低收入、中等收入群体的比例千差万别,但高收入群体的比例是基本接近的。

社区运营必看:9类帖子让你的论坛人气爆棚

2012-02-24 09:35 来源: 骆骐博客

很多做论坛/社区类网站的站长或者在大中型互联网公司负责论坛/社区运营的朋友们最关心的莫过于如何让论坛火起来,如何让点击量、回复量双升,人气爆棚?

社区运营

社区运营

但在实际社区运营过程中,论坛运营人员往往走入一种怪圈:我们自己疯狂的添加内容,疯狂的自问自答,但人气依然少的可怜,即使来了浏览型用户也是匆匆一瞥就关掉了论坛运营人员花大力气写的帖文,别说留下只言片语的回复,就是吸引其花个5秒钟注册个用户都没做到。

何解?

我认为根结还在社区运营人员没有理解社区内容建设的真谛,不知道什么样的贴子才是适合论坛发的帖子,什么样的贴子能吸引用户点进来,而且点进来之后,让他他不得不注册一个账号,并积极主动的回复,非发表点自己的见解不可。

那么什么样的帖子才能达到这样的效果呢,笔者在长期的社区型网站运营过程中总结出以下9类话题,这些话题更容易引起用户的回复欲望,有些话题甚至有一种让用户不得不回的魔力:

1、争议帖

争议帖就是在社会上或者某个业界内非常敏感、非常具有争议的话题,能够吸引大部分用户的眼球和兴趣,而且用户会针对争议的话题自动分为两派或者多派,每个派别都有着强烈的倾诉欲望,希望自己的见解/观点能够说服对方或者压倒其他方。

这样的话题一旦出来,用户一般都会一吐为快,纷纷发表自己的见解,如果自己的见解有人批驳,那更会激发用户持续的发帖、回帖等各种动作。

2、投票贴

投票贴是针对论坛主题行业相关的人、事、物进行的投票。因为用户对同一事物的看法迥异,一个好的投票主题,可以吸引用户纷纷给自己支持的标的投票,为此肯定不会吝惜区区的几秒钟来注册和发表投票。

尤其是当这个投票中有自己最喜欢的人、事、物,甚至投票选项中就有自己、涉及自己的事情、涉及自己公司产品的时候,用户更会毫不犹豫的注册、登陆、发帖、回复。

3、负面帖

负面帖炒作是论坛运营常见的一种手法,负面帖因为涉及到具体的人事物的负面信息,因此能牵动利益相关方的神经;同时负面帖又能满足一些网友的幸灾乐祸心理,更能满足其中一部分网友对特定人事物的唾弃心理,尤其是这个负面新闻的主角如果恰好骗了或者伤害了很多网友的时候。

负面新闻也是传统媒体的经营手段之一。相比无关痛痒的歌功颂德的软文类消息,负面新闻往往更容易引起相关各方的关注,事件中的主角及其竞争对手都会特别关注,甚至各方都会就此事安排一大批水军来意图消弭或者搞大事态,一旦这种情况出现,论坛社区则是渔翁得利,UV/PV双丰收。这也是为什么很多负面帖子删除的生意如此火爆的原因。

4、曝光帖

曝光帖可以满足网友的求知欲,尤其是曝光各种惊天内幕的帖文更容易受到网友热捧,小道消息、鲜为人知的内幕总是被人津津乐道,论坛则是这类话题的温床。君不见各类大小论坛中充斥着“惊爆”、“惊天内幕”之类的帖文,先不管其真假,这些帖子的点击率往往在众多帖文中脱颖而上。

用户看了这些帖子,不管真假,网友总想也发表一点自己的看法,或惊叹,或质疑,或分析,或引申……那么我们论坛的点击率和回复量就会随之攀升。

5、情色贴

食色,性也。关于情感、色情之类的文章、图片、话题,在任何论坛都能引起网友的兴趣。这也是为什么各类门事件,尤其是艳照门之类的情色事件层出不穷而又历久不衰的原因。甚至在论坛运营从业者之间流传这样一个经典的传说:一个穿着衣服的美女被发了出来,发帖者声称你在帖子下面回复什么动作,回复后这个美女就会做什么动作,比如回复“脱光”则回复后美女脱光……就是这样一个明眼人一看就是骗人的帖子,却在多个论坛横行多年,且都能轻易爬上热帖排行榜。

6、名人贴

名人包括各类社会名人、娱乐明星、体育明星等等,这些名人关注度高,每个名人背后都有大量的忠实粉丝。一些关于名人的话题总是惹人关注,尤其是设计到名人的隐私之类的八卦传闻,其势不可挡。用户或者说粉丝的热情总是如江水之滔滔不绝。

那么在你自己论坛发一些相关名人的话题,尤其是搜集一些劲爆的小道消息,则调动网友的发帖欲望,则如探囊取物耳。

7、分享帖

分享帖多见于分享一些经验、见解,由于经典的分享帖,往往能反映出发帖人过人的学识和技能,很容易引起网友的崇拜之情。尤其是一些技能类的经验分享,意欲学习该技能的网友总会排队在帖子后面膜拜或者提问,以求得到高手的指点或者回复。

说道这个话题,可以顺便提一下为什么论坛/社区型网站对于明星用户的重视了。论坛有高手,不愁没人来。

8、资料贴

论坛型网站还有一个比较好的功能是资料分享,利用附件或者其他功能,可以发布一些精品资料,而因为下载资料往往需要付出一定的虚拟货币(积分),那么遇到好的资料时,网友肯定会不惜血本,按照楼主和论坛的要求做各种可以获取几分,最后获取这份资料的各种动作。

资料贴会火爆的原因还有,如果该精品资料设置了“回复可见”,那么这个帖子几乎真可以达到人人都回帖的境界。

9、活动贴

活动贴就不用详细说了,但凡官方做的各种活动,坛子内的网友没有理由不关注。且因为这类活动贴往往伴随着一些奖励,或者是虚拟货币,或者是实物现金,那些喜欢空手套点蝇头小利的网友们肯定会乐此不疲。

当然,除了这9类帖子,论坛运营过程中还要根据论坛所在的行业特点,不断挖掘能牵动行业用户神经的话题,这样才能不断打造出让论坛/社区人气爆棚的热帖,最终把论坛和社区带到人气的顶棚。

骆骐原创文章,首发站长之家,点此查看博客原文,欢迎交流!

感谢 骆骐 的投稿

火车票二维码含身份证号 快拍、我查查破译实测

2012-02-20 14:51   来源: 站长之家

站长之家CHINAZ.com 2月20日消息:火车票购买实行实名制后,旧版火车票的一维条码换成了二维码。二维码中包含火车票号、乘车时间、身份证号码等个人敏感信息。通过快拍二维码、我查查等二维码识别软件,可轻松识别。

然而,在微博上有许多网友测试后发现,有时并不能正确识别身份证、乘车时间等信息。那么快拍、我查查等手机二维码识别软件真的可以识别火车票二维码个人信息吗?编辑对此实测一翻。

编辑找来两张车票,一张为K字头普通列车和D字头动车车票。分别使用“快拍二维码”和“我查查”检验测试。

首先检测K字头普通列车,打开软件,用手机摄像头对准车票右下角的二维码扫描。不出几秒钟,火车票号、开车时间及车票主人的身份证号码立刻显示在手机屏幕上,准确无误。

快拍二维识别出的火车票号、开车时间、身份证号均准确无误

我查查也准确识别火车票二维码信息

接下来检测D字头动车车票,快拍二维码除火车票号准确外,开车时间、身份证号均显示错误。我查查则自动退出。

动车检测结果

虽然只识别出火车票号,但可根据查询后火车票号与火车票上票号是否对应,来识别火车票真假。如使用“猜火车”应用,可查询火车票真伪。

猜火车验票真伪

其实,不单是以上两款二维识别软件,其它一些软件也能识别。如通过支付宝的“悦享拍”应用,微信的扫描二维码也能识别二维码信息。虽然扫描结果没有排版,但依然显示出火车票号(蓝色框)和身份证信息(红色框)。

悦享拍显示出火车票号和身份证信息

微信二维码识别结果

为什么普通列车能识别,动车就不能识别呢?

首先得认识下二维码。火车票上所印二维码为QR码,其生成和识别的算法在国际上已公开,生成之前若不加密的话,可以被任何QR识别软件识别。

据了解,动车二维码是加密的,其它暂时没有加密。因此通过有二维识别功能软件都能识别普通火车票上的二维码信息。

警方提醒,火车票实名制后,票面二维码内包含乘客的诸多信息,如果被不法分子获取,可能会用票上信息申请信用卡、制作假证等。因此,为了保护个人信息,旅客须在乘坐火车后妥善保管车票,不要轻易丢弃;如丢弃,一定要撕毁火车票的二维码区域。

编辑也提醒,虽然动车二维码已经加密,但理论仍存在破解的可能性。因此动车火车票的二维码区域也应撕毁。(郭郭)

广东一景区推天体森林浴 年轻女孩成首名游客(图)

2012年02月20日 16:12 来源:广州日报 作者:杨波

这名女孩大胆体验森林浴,让整个身心融入到森林花香之中。

这名女孩大胆尝试(来源:珠江时报)

广州日报讯(记者杨波通讯员叶爱群)早春的阳光透过树叶空隙铺满落叶的地上,金黄如稻穗一样的木姜花盛放在枝头,空气清新而湿润,几声鸟鸣更让森林显得清静幽远。一名年轻女子轻轻脱掉衣服,漫步在阳光斑驳、古树参天、藤蔓缠绕的林荫小道,没有衣物牵绊的身体享受着阳光与森林的轻抚,带来赏心悦目的快乐。三水一景区为让游客与大自然亲密接触,昨天推出天体森林浴,一名前卫大胆的女孩成为体验感受天体森林浴的第一人。

昨天是周日,虽然已经是早春天气,但天气依然春寒料峭。有一名大胆女游客首度来到该景区体验感受天体森林浴。

大胆女孩成“吃螃蟹”第一人

昨日下午2时,这名女游客轻解罗裳,在开满木姜花,洒满落叶的林荫小径上漫步,尽情地享受阳光下的森林浴。

20多分钟后,这名女子体验完了天体森林浴。沐浴了森林与阳光的女孩在接受记者采访时掩饰不住自己的快乐。

她告诉记者,森林浴是一种非常健康的度假休闲方式。森林中的许多树木花草,如樟树、落叶松、蒲公英等,会散发出一种对人有益的药素,这种药素不但可以治疗某些常见病,而且对身体非常有益。而沐浴森林浴,对身体更好,能够让身体没有衣物牵绊地与森林、大自然亲密接触。

争议

支持者:这是一种享受

反对者:还是“有伤风化”

记者随机询问了部分游客,对天体森林浴能否接受?首度体验天体森林浴的女孩认为,与阳光亲吻、与森林拥抱,让身体完全解放,享受特别的乐趣,的确是一种享受。裸游是正常的现象,不必大惊小怪,这体现了人们观念的一种进步,不应该被禁止。“只要不影响他人,那裸游就无可非议。”

来自广州的游客李先生认为,受到传统的道德观念影响,在公众场合“裸体”将被视为是“有伤风化”的举动。因此能冲破那种道德底线的人也寥寥无几。

在南海一间中学做教师的罗先生认为,至今还没有在公共场合推行裸泳、裸体森林浴的做法,该景区推出这个项目值得三思而后行。虽然天体森林浴对身体健康很有好处,但在目前开设天体浴场还是会被多数人认为有伤风化。

而从事律师工作的王先生则认为,法律上尚无明文规定禁止“裸泳”,景区搞森林浴并不违反相关法律。关键要划分男宾区和女宾区,禁止未成年人入裸体浴区,禁止男女混浴(包括夫妻在内),禁止拍照摄影等,使游客能真正释放自我,领略原始森林浴的无穷魅力。

七句话,就知道她是不是真爱他(反过来也适用哦)

七句话,就知道她是不是真爱他(反过来也适用哦)

       不管是做爱还是接吻,当男朋友想更进一步的时候,你却总是不想进行下去,这就是一个暗示了。也许是你们两个类型不合,也许说明你并没有想象中那么喜欢他。无论是哪种原因,都可能把你的感情生活搞得一团糟。

                                          

(楚楚街http://www.chuchujie.com特约编辑供稿)

 

  暗示1:你不想把他介绍给对你来说很重要的人认识

  朋友和家人都很重要。如果你不想把男朋友介绍给他们认识,或者在和家人朋友在一起的时候不希望他在旁边呆着,又或者家人朋友对他的意见你完全不在乎。这个时候,你就应该好好考虑一下,是否应该结束这段感情了。

  暗示2:你常常找借口不和他见面

  你正在家中无所事事,然后收到了他的短信:“出来见个面吧:)”,或者别的什么类似内容。虽然你此时正百无聊赖,也没有穿着睡衣或者有想看的电视节目,但是你的回复却是:“抱歉,有事不能去”。

  暗示3:你不会想念他

  你和他在忙碌着各自的工作已经一个星期了。你们俩连洗个澡的时间都没有,更不用说是见个面喝杯咖啡什么的了。尽管他一直给你打电话或者发短信告诉你他有多想你,可你真的完全没有想他的感觉。

  也许这算得上一个善意的谎言,但是却给了你第一个暗示——他也许不是你想要的那个人。因为如果在你有时间的时候你都不愿意见他,很可能以后你更不会为了他挤时间见面咯。

  如果是这种情况,是该放手了。如果在他表现出对你意乱情迷的时候你都不会想念他,那么即使他永远淡出你的生活,你也一样不会想念他的。

  暗示4:你并不在意他和别的女人出去

  这个暗示在很多人看来也许算不上暗示,因为它简直跟闪烁的霓虹灯一样显眼了。但实际情况是,很多人都没有意识到这一点。

  如果你不介意他和别的女人出去,说明你也不在意他是不是真的喜欢你,因为你本身对他也没有多大兴趣。当你喜欢一个人的时候,你会希望他的眼中只有你,希望自己能够得到他所有的注意力。

  暗示5:你总是没心情干这干那……

  不管是做爱还是接吻,当男朋友想更进一步的时候,你却总是不想进行下去,这就是一个暗示了。也许是你们两个类型不合,也许说明你并没有想象中那么喜欢他。无论是哪种原因,都可能把你的感情生活搞得一团糟。

  暗示6:你经常挑起争端

  无论他做什么都会惹你生气。他把你的房间弄乱了,吵一架;一起吃午饭他抢着帮你付钱,又是一架。如果他做的任何事都会让你火气飙升,那么他也不是你喜欢的人,而是扎进你肉里的一根刺,赶紧把他拔出来,下次遇见玫瑰丛的时候一定要记得避开呀。

  暗示7:你还想再多认识些男人

  又是一个明晃晃的霓虹招牌似的“暗示”。如果你发觉自己的眼光仍然会在别的男人身上徘徊流连,那么现在和你在一起的男人恐怕就不会是你的真命天子。如果你喜欢一个人,你的目光只会停留在他一个人身上。但如果你不喜欢他,你的眼睛就会自动搜寻下一个更好的目标。 


网吧微利时代:为解困局常搞副业赚钱

2012-02-20 09:29  来源: 大洋网-广州日报

一方面,随着宽带普及以及智能手机3G业务的正式上线,随时随地上网成现实,另一方面,房租、人工以及电脑硬件的加快升级等带来的成本上涨,网吧经营业务变得越来越困难。

记者连日走访了市内多家网吧,多数网吧工作人员向记者抱怨称,网吧的经营成本逐年都在上涨,但上座率却是只跌不涨,目前的状况也就是维持微利状态。

而有业内人士称,早在五六年前网吧行业已经进入微利时代,网吧行业面临的政策、市场环境并没有趋向好转。而中国互联网络信息中心最新数据显示,中国网民数量已经突破5亿大关,但手机网民规模大增,而网吧上网网民数量明显下降。但多数网友却表示,目前网吧环境确实好了许多,而且费用并没有增加。

文/记者索冬冬、段郴群

记者来到人民路上的一家网吧,发现该网吧已经变身成了旅店,一位工作人员告诉记者,该网吧老板近期才将店面转手,“在这个地段不好开网吧,租金高不说而且没多少客源”。

记者发现,一些经营情况不错的网吧都是拥有稳定的客源,即使在非高峰时段仍能保持60%以上的上座率。

留住老顾客要大成本

如在天河一间高职院校附近的网吧,据该网吧业主介绍,店内经常会有一些大学生集体过来玩游戏,查询资料等,这批稳定的客源也使得网吧总体盈利情况还可以。但他也表示,“要想留住老顾客,几乎每年都会更新配置、提升网速,但成本不知什么时候才能收回。”

而在中华广场附近的一家网吧内,记者也看到不少年轻人都三三两两地进来,该网吧工作人员称这个地段交通便利,很多人逛街无聊了也会进来看看。

而据本报记者调查,目前由于学校上网方便、家庭宽带的普及,来网吧上网的人,主要是一些刚到某个城市的务工人员,由于还没有固定的落脚之处。

第二类,则是喜欢玩大型游戏的年轻人,虽然在家里也可以玩网络游戏,但由于目前网吧早在几年前就已经使用光纤接入了,其速度要比家庭宽带更快,玩大型的3D网游会更流畅,还有就是一些年轻人喜欢约上几个好友,周末或者节假日一起到网吧打联网游戏,这在目前城市家庭住房紧张的背景下以及追求独立自由的年轻人中比较普遍。

第三类就是一些家里还没有安装宽带的年轻人,这些网友一般都比较喜欢看电影,由于现在即时通讯的发达,上网聊天的同时还可以看大片,使得这些年轻人喜欢到网吧上网。

专家建议:应不断推进整合连锁

一位网吧管理员曹明对本报记者表示,现在网吧生意不好,在某程度上是因为目前网络游戏公司的推广方式发生了巨大变化。据曹明透露,在两年以前,网游公司只要有大型游戏要发布,到网吧进行推广是必须的战略。

但这两年,整个网游产业发展速度减缓,市场费用锐减,网游公司都不再到网吧推广,仅仅利用网络推广,网吧就只好接待散客,生意大受影响。

同时,近年国内宽带普及加速,很多家庭都用上了家庭网络,因此家庭上网的普及导致了到网吧上网人数的减少。中国互联网络信息中心最新的互联网络发展状况统计报告显示,2011年在网吧上网的网民比例明显下降,在网吧上网的网民仅占27.9%。

除了网民逐渐趋向在家上网,另一方面手机上网的普及也一定程度上影响了网吧用户。而租金、人力等运营成本节节攀升也进一步导致目前网吧的生存愈加艰难。一位网吧老板张玲对本报记者表示,在激烈的竞争中占到一席之地,各大网吧都需要对自己的电脑进行更新换代。张玲介绍,即使最便宜,每次换代都要花几十万元,但网友上网的费用没有跟着涨起来,依旧是每小时3元到4元。

进行多元化运营

记者连日探访多家网吧,发现不少网吧里都在售卖零食冷饮,一些更是直接提供餐饮服务,然而多数网吧的营业执照上的营业范围并不包括此项。在人民中路的一家网吧内记者看到,为了招揽顾客,该网吧推出优惠套餐,“充100送10元,充值送饮料”等,但工作人员介绍,该网吧共有100~120台电脑,白天通常也就15%~30%的上座率。

针对网吧目前面临的困境,不少人都建议网吧转型探索新的经营模式,进行多元化运营。

昨日华南理工大学工商管理学院陈明教授认为,一方面,网吧不应单单提供游戏上网等简单的休闲性消费,而是提供复合性的服务性消费,例如网吧应主动提供信息查询,休闲聚会等配套服务。

另外在管理上网吧应不断推进整合连锁。

消息称Windows 8将于今年第四季度推向市场(图)

2012-02-17 09:17  来源: 腾讯科技

消息称Windows 8将于今年第四季度推向市场

传Windows 8将于今年第四季度推向市场(腾讯科技配图)

腾讯科技讯(悦潼)北京时间2月16日消息,据国外媒体报道,据富士通(Fujitsu)产品路线图显示,Windows 8系统将于今年第四季度推向市场。

富士通昨天召开了新闻发布会,展示了数款即将推出的笔记本电脑和平板电脑,与此同时,富士通还播放了一部幻灯片,显示新版Windows 8系统将在今年第四季度推向市场。据博客网站NetbookItalia称,上述幻灯片也展示了一款Metro UI平板电脑,此举表明富士通正在准备同时推出搭载Windows 8系统的平板电脑。

事实上,正如一些媒体的报道那样,这一幻灯片可能是专门来展示富士通的平板电脑产品,但也可以体现出Windows 8系统将于今年第四季度推出。

目前为止,微软还没有公布Windows 8推出的确切时间。去年5月,微软首席执行官史蒂夫·鲍尔默(Steve Ballmer)曾提及称,该公司将在2012年初步亮出Windows 8操作系统,但微软随即就予以否认,称鲍尔默的言论“失实”。

Windows 8用户预览版(Windows 8 Consumer Preview),即微软针对Windows 8的测试版,将于2月29日推向市场。从中可以看出,微软如果不被迫依据用户的反馈或其它问题而对此测试版Windows 8作出重大修改的话,那么几乎可以肯定,Windows 8正式版将会在今年底之前亮相市场。但是,市场的传闻还在猜测,微软还可能会在今年夏季结束时推出正式版Windows 8。

但无论如何,Windows 8确切的推出日期还很难确定,这还需要参考微软完善此新操作系统的速度,以及在推出正式版本之前还需要对该系统进行何种程度的修改。

对于上述消息,微软和富士通方面都没有置评。

谷歌收购摩托罗拉移动扫清障碍:获专利盾牌

2012-02-14 08:15   来源: 新浪科技

在收购摩托罗拉移动后,谷歌将获得一张强大的专利盾牌

在收购摩托罗拉移动后,谷歌将获得一张强大的专利盾牌

新浪科技讯 北京时间2月14日早间消息,欧盟委员会和美国司法部已经批准了谷歌125亿美元收购摩托罗拉移动的交易,并确认谷歌在收购完成之后,将继续推广Android操作系统,公平授权摩托罗拉相关专利。

这笔交易将成为谷歌有史以来最大的一笔收购,而该公司将凭借摩托罗拉移动的1.7万项专利,打造一张坚实的专利盾牌,对抗微软和苹果的攻击。

这一利好消息意味着谷歌只需要再解决一些细枝末节的监管障碍,就可以获得对摩托罗拉移动的控制权,并进而能够首次将自己的业务扩展到生产手机、平板电脑以及其他消费电子设备的领域。

谷歌还将会依靠摩托罗拉移动所持有的17000多项注册专利,使用这些武器来与苹果、微软以及其他竞争对手展开较量,以便在智能手机、平板电脑以及其他移动设备当中获得更多的控制权。

美国司法部在历经6个月的审查之后得出结论,称谷歌收购摩托罗拉的交易将不会影响移动设备市场的健康发展,而欧盟委员会也在调查后得出了相同的结论。

不过在对这笔收购进行批准的同时,欧盟委员会还是提出将会积极关注摩托罗拉以及其专利的授权情况。欧盟竞争事务专员杰奎因·阿尔穆尼亚 (Joaquin Almunia)指出,监管人员将会“继续密切观察该行业当中的所有竞争者的举止,特别是越来越频繁的将专利用于战略措施的行为。”

但是谷歌收购摩托罗拉移动的这笔交易目前还需要获得包括中国大陆和台湾地区以及以色列的政府机构批准。

Android操作系统是核心问题

然而最令人关注的问题则主要围绕在谷歌的Android操作系统,这款免费的软件目前已经被搭载到了全球超过2.5亿台移动设备上,这些移动设备由许多不同的制造商生产,其中也包括了摩托罗拉移动。而如果谷歌向摩托罗拉单独提供最新版本的Android操作系统,或者向其他手机制造商隐瞒一些新型软件的话,将可能会给该行业内的正常竞争带来阻碍。

不过谷歌已经承诺将会把Android提供给所有移动设备合作伙伴,因为即便谷歌敢于对其他手机厂商做出限制,这些厂商还是可以和包括微软、RIM以及惠普等公司展开合作,使用它们的移动设备操作系统。

阿尔穆尼亚在周一发表的一份声明中指出,欧盟的监管机构并不认为这笔交易会破坏正常的竞争秩序。

谷歌的副总法律顾问唐恩·哈里森(Don Harrison)在一篇博客中写道:“这是审批过程当中的一个重要的里程碑,这意味着我们的这笔交易已经接近完成。”

谷歌有信心今年年初完成收购

尽管暂时还没有设定一个具体的时间表,但是谷歌已经表示将有信心在今年年初最终完成对摩托罗拉移动的收购工作。

自从谷歌宣布收购摩托罗拉移动已经经过了6个月的时间,此前摩托罗拉移动正遭到苹果的iPhone以及包括三星在内的其他竞争对手所出品的智能手机的前后夹攻,正处在一个非常危险的境地。

而目前美国和欧盟的监管部门还在进行另外一项广泛的调查,确保谷歌将不会滥用该公司在互联网搜索方面主导地位来干扰其他竞争对手。目前这些调查仍然在进行当中。

而中国政府是否能够批准谷歌收购摩托罗拉移动的交易或许将是接下来的一个关键所在。长期以来谷歌与中国政府之间的关系一直不太稳定。

摩托罗拉移动的125亿美元的收购价甚至已经超过了谷歌从2004年上市以来,已经完成的其他185笔收购交易的金额总和。

专利问题引人注目

欧盟委员会此前决定对谷歌收购摩托罗拉移动一案展开分别审查,尽管谷歌曾经一再强调将会对摩托罗拉的专利进行公平分配。

在本月早些时候,欧盟委员会还发起了一项针对三星的调查,以确定该公司是否使用了一些关键性的专利来阻碍竞争对手的发展。而摩托罗拉、谷歌等公司此前也纷纷与苹果大打专利战,指责苹果的iPad和iPhone当中的部分设计未经授权地盗用了这些公司的专利。当时阿尔穆尼亚就指出,将会对上述企业展开类似的调查以及跟进追踪。

欧盟监管机构在调查后表示没有发现任何潜在的问题,谷歌应该在完成收购摩托罗拉移动之后不会阻止其他设备制造商继续帮助其推广大受欢迎的Android操作系统。

欧盟委员会指出:“Android操作系统有助于推动谷歌的其他服务的延伸。鉴于谷歌的核心业务模型是推动该公司的在线和移动服务以及软件服务,并尽可能获得更多的用户,因此谷歌将不可能将Android的使用范围仅仅局限在摩托罗拉移动身上。”因为摩托罗拉移动在欧洲的市场份额非常小。

谷歌的股票在周一上涨了1%,即6.29美元,报收于每股612.20美元。摩托罗拉移动则上涨了18美分,报收于每股39.63美元。

win7修复系统文件的方法

电脑硬盘神神经经的,在崩溃了一次之后,发现在我的电脑上右键,打不开管理了,提示“没有注册类”,叫我情何以堪,于是上网找答案,各种蛋疼方法无效。

自己估计是系统文件出问题了,于是用管理员权限运行命令行,输入:

   1:   sfc /scannow

一顿噼里啪啦之后,发现提示有文件损坏了,果然,但是无法修复,结果保存在%System%\\logs\\cbs\\cbs.log,打开一看,尼玛全是满满的日志呀,怎么看,没关系,继续在管理员权限的命令行中输入:

   1:  findstr /C:"[SR] Cannot repair member file" %windir%\\logs\\cbs\\cbs.log >sfcdetails.txt

然后回车一下,再输入下一条:

   1:  edit sfcdetails.txt

啪地弹出蓝色的框框,如下,终于知道是什么文件了

mmcndmgr.dll

NlsData002a.dll

下面用DAEMON Tools载入win7的安装光盘,下载一个名为WimTool的工具,把系统盘下source目录中的install.wmi挂载到某个目录中去,懒得截图了偷两张图来说明嘿嘿。

然后从里面提权文件,使用一个叫Se7enFileReplace的工具把系统文件替换掉,问题解决,收工,嘿嘿嘿

作者: Jarett 日期: 2011 年 12 月 9 日

找了很久才找到解决方案,原文引用自http://www.nigesb.com/win7-system-files-repair.html

执子之手 与子偕老

为什么FACEBOOK不如腾讯QQ

2012-02-13 13:22   来源: 雨枫的博客

为什么FACEBOOK不如腾讯QQ

没错,这是个找骂的题目,我知道。所以我要做个小的修正:“为什么在利用海量用户创造收入的商业模式上,今天的Facebook还不如腾讯QQ那么成熟?”

有两类商业模式。第一类譬如Facebook、譬如QQ、譬如360,他们的共同特点是,被视为最重要/最核心的那部分服务/产品,本身是难以直接创造收入的,360的收入来自于浏览器、导航站和游戏联运,腾讯的收入来自于网游、门户和无线,你要问QQ软件本身直接给腾讯带来了多少收入?那也就是客户端广告那点东西了,很少,可以被忽略不计。通过核心产品/服务带来用户基数和黏着度,通过各种手段,把流量逐步引导进赚钱的业务里,再通过这些业务创造利润。QQ和360都是这么做的,微软的IE浏览器也可以被视作这种模式的代表,包括很多人推崇的linux,某种意义上也是这样的。

第二类譬如google、百度这样的搜索引擎,他们的特点则是,主营业务即收入来源。像google本身,因为关键字广告模式的存在,搜索引擎本身就可以直接创造收入,它不需要把搜索引擎的流量导入到其他某个什么站点/服务上,就可以赚到钱。另一方面,在google这个案例里,实现收入的代价,是用户(本次)离开google,前往广告或链接指定的网址。

同样有将近10亿用户,是facebook的商业价值更大,还是google的商业价值更大?在今天看来,google的收入远比fb高,这又是为什么?要点有二:第一,google的用户使用搜索引擎时,带着明确的诉求而来,这诉求很明确、且很容易被转化成商业行为;而facebook的用户在浏览好友信息的时候,其诉求往往是潜藏的,需要有某种方式加以浮现,才有可能被用作商业化。第二,google不害怕用户离开google,而facebook总体上要一直把用户保持在自己的影响范围内。

所以你知道么,其实facebook的广告,不但现在、而且将来很长一段时间里,都不可能超越google,这不仅仅是广告客户的认知程度问题,这里面有更深刻的含义。

说一个简单的例子吧。12年前,我刚开始关注QQ这个软件,那时候它正在为商业模式所困扰。那时候,出于兴趣,我为这个产品设想过许多不同的商业模式,其中一个,是基于用户聊天内容的关键词广告系统。理论上,如果我们有办法对用户的聊天内容进行分析,通过关键词的筛选进行定向的广告投放,那么这个产品理应赚到很多钱才对。结果呢?12年过去了,腾讯每年赚几百个亿,有多少是基于我说的这个模式的?好像没有。

为什么这样一个看起来很完美的模式实际上无法赚钱呢?三方面因素,首先是技术上的制约,起码在当年,建立这么一个庞大的内容筛选和匹配系统,对腾讯来说并不容易,并且也没有比较明确的算法支持,仅仅因为有人说了一句”我用的笔记本是戴尔的“就给人家显示笔记本的广告,其实一点都不明智。对于用户需求的分析和匹配,不但超出当时,甚至超出了今天我们所能达到的的技术能力。其次是隐私方面的考虑,用户的聊天内容如果被作为广告投放依据,那就是变相跟用户说,我正在监视你的一举一动……很明显这不是个好点子。第三,广告内容是对用户社交行为的打断,试想一对陌生男女正在聊什么起劲的激情话题,他们是不是有闲情逸致去关注旁边显示的小广告呢?实际上人家会直接选择性忽视。

这就导致了一种困境:理论上,社交/通讯型网站对用户的了解应当远比门户和搜索引擎更全面,然而实际情况是,当用户不愿意主动告知或与你分享隐私的时候,你对他们的了解其实远不如匿名的搜索引擎和新闻服务(因为频道和关键词会暴露他们的真实需求),可是一旦你要入侵这些用户的隐私领域,一方面你就面临严重的隐私权的指控,另一方面你会发现,由于用户关注的是具体的人而不是抽象的内容,广告的效果其实是不如内容网站那么明确的。

所以我们可以看到,在营收方面,facebook面临的挑战实际上远比看起来的要大得多,虽然他占了很大一片油田(用户基数和社交关系),但是目前它只能把一小部分原油开采出来,卖给炼油公司,赚很少的收入。想要赚大钱,要么它能够开发出一种技术,让汽车直接烧原油就能跑(更精确的广告投放模式);要么它就得收购或者自建炼油厂,把原油精加工成高级燃料,以换取更多的收入。

这方面,我们简单对比一下就知道,腾讯QQ的商业链远比facebook要完善,无论是门户、游戏还是无线互联网,腾讯很有效的把IM的用户导入到了由自己掌控的、利润丰厚的方向,赚钱的同时还没有失去对用户的控制。

当然,很多人会指责QQ的不开放,而把facebook的开放平台战略挂在嘴边。但开放平台的模式是不是真的能成为facebook营收的驱动力?我举个简单的例子吧,APPLE的开放市场APP STORE 年销售额20亿美金,其中苹果自己收30%也就是6亿美金,不少是么?不少。可是当我们比较一下苹果一个季度(注意不是一年)的净利润是130亿美金,6亿美金几乎可以忽略不计。APP STORE的真正价值是对iphone/ipad的销售促进作用,而不是其自身的营收!我们可以看到开放平台是一个很好的保持和扩大用户基数的战略,但是没有任何证据表明这是个好的商业模式。

同样,facebook向开发者一年支付了14亿美金的收入,这意味着它自己的直接分成收入也不过是6亿美金而已。加上广告收入,这个总额可能更高一些,但是相对于其用户基数,这真的不算是很靓丽的表现。

所以,在此做一个大胆预测:FB上市之后的营收成长,会低于很多人的预期,未来3-5年,FB的营收和利润无法达到google的水平。而能够打破这一预测的唯一可能性,是FB开始进入到利润丰厚的新业务领域,譬如C2C电商、搜索引擎甚至是游戏开发(如果不是考虑到表面的公正性,zynga难道不是一个很好的并购对象么?)当中,这些衍生业务,才会是facebook日后最主要的收入来源。

作者:雨枫

文章来源:雨枫的博客

这十条围脖很经典

68539_dec5

1.这世界,反应慢的会被玩死,能力差的会被闲死;胆子小的会被吓死,酒量小的会被灌死;身体差的会被累死,讲话直的会被整死;能干活的会被用死,所以干任何事情不必太认真!不然人在天堂,钱在银行。
2.中国人思维习惯: 一提到女秘,就想到小蜜;一提到女官,就想到被窝; 一提到领导,就想到贪污;一提到贪官,就想到二奶; 一提到桑拿,就想到小姐;一提到办事,就想到关系; 一提到工程,就想到腐败;一提到垄断,就想到奸商; 一提到打假,就想到假打。
3.从睡觉看人的层次: 九点睡是村里人,十点睡是厂里人, 十一点睡是校内人,十二点睡是官府人, 一点睡是网络人,两点睡是文化人, 三点睡是公关人,四点睡是失眠之人, 五点睡是赌博之人,六点睡是广告人, 总是不睡不是人。
4.中国官员现状: 装的是样子,混的是日子,保的是位子, 上的是场子,下的是馆子,圆的是肚子, 练的是胆子,搂的是妹子,哄的是娘子, 享的是乐子,霸的是车子,占的是房子, 把的是章子,盯的是票子,为的是孩子。
5.当代领导的优势: 工资不多存款不少,牌技不高赢钱不少; 讲话不精掌声不少;文章不写发表不少; 外语不懂出国不少;水平不高职称不少; 老婆不用房事不少;吃的不多脂肪不少。
6.常跟领导吃饭,升官是迟早的事; 常跟导演吃饭,走红是迟早的事; 常跟大款吃饭,发财是迟早的事; 常跟老婆吃饭,厌倦是迟早的事; 常跟情人吃饭,肾虚是迟早的事; 常跟异性吃饭,上床是迟早的事。 由此推论:干什么都要先吃饭!
7.物价涨了不是新闻,工资涨了才是新闻; 有人贪了不是新闻,有人廉了才是新闻; 食品假了不是新闻,食品真了才是新闻; 推诿了不是新闻,担当了才是新闻; 被曝光不是新闻,能自查才是新闻; 会上讲话不是新闻,会后讲理才是新闻。 常见的不是新闻,罕见的才是新闻。 神奇不是新闻,奇迹才是新闻…….
8.好好的人生,让股票废了; 好好的一手字,让键盘废了; 好好的电视剧,让广告废了; 好好的广告,让脑白金废了; 好好的羊肉,让瘦肉精废了; 好好的英雄,让美人废了; 好好的女孩,让大款废了; 好好的帅哥,让富婆废了; 好好的干部,让人民币废了; 好好的医德,让医药代表废了。
9.这年头, 老婆像小灵通经济实惠但限本地使用, 二奶像中国电信安全固定但带不出门, 小蜜像中国移动使用方便但话费太贵。 情人像中国联通优雅新潮但常不在服务区!
10.领导讲话最关键的两个字,就是——性、感! 性:必要性、重要性、长期性、艰巨性、复杂性。 感:使命感、责任感、危机感、紧迫感、荣誉感。 补充一点:领导的讲话也像叫床:要,要,不要,还要……

关于内存DC的使用(一)

在windows下搞图形界面的设计难免要使用到内存DC,将所有的绘制工作先绘制在内存DC上,然活一次性拷贝到屏幕DC上。可消除一些图形的闪烁问题,当然还有其他的用处,比如简单游戏中的象素碰撞检测等等。
1,创建兼容DC
CDC m_MenDC;

CDC m_MenDC2;

CDC m_MenDCMap;

CDC m_MenDCMask;
//这个是一个要创建的兼容位图

CBitmap m_Bitmap1;
m_MenDC.CreateCompatibleDC(GetDC());

m_MenDCMap.CreateCompatibleDC(GetDC());

m_MenDCMask.CreateCompatibleDC(GetDC());

m_MenDC2.CreateCompatibleDC(GetDC());
m_Bitmap1.CreateCompatibleBitmap(GetDC(),1024,768);
2,为兼容DC选入一张位图,或兼容位图。
m_MenDC.SelectObject(m_hbmpBK);

m_MenDC2.SelectObject(m_Bitmap1);
3,好了,现在可以在兼容DC上做绘制工作了,
m_btnReturn.DrawButton(m_MenDC); //绘制按钮

m_btnUp.DrawButton(m_MenDC);

m_btnLeft.DrawButton(m_MenDC);

m_btnRight.DrawButton(m_MenDC);

m_btnDown.DrawButton(m_MenDC);

m_btnBack.DrawButton(m_MenDC);

m_btnAnew.DrawButton(m_MenDC);

m_btnFull.DrawButton(m_MenDC);
m_MenDC2.BitBlt(0,0,1024,768,&m_MenDC,0,0,SRCCOPY);

// 绘制背景 DrawPath(&m_MenDCMap); //绘制路径

if(m_bFullView)

{
SetStretchBltMode(m_MenDC2.GetSafeHdc(),HALFTONE );

m_MenDC2.StretchBlt(m_rtMap.left,m_rtMap.top,m_rtMap.Width(),m_rtM ap.Height(), &m_MenDCMap,0,0,m_iMapWidth,m_iMapHeight,SRCCOPY); //绘制平面图,查看全图

}

else

{

m_MenDC2.BitBlt(m_rtMap.left,m_rtMap.top,m_rtMap.Width(),m_rtMap.Height(), &m_MenDCMap,m_xOffset,m_yOffset,SRCCOPY); //绘制平面图

}
4,绘制结果的显示,将这些东西拷到屏幕DC上,所谓的双缓冲就是把所有的绘制工作都做在一个内存DC上。 // 最后一次拷到屏幕DC上,只能有一次 dc.BitBlt(0,0,1024,768,&m_MenDC2,0,0,SRCCOPY); 这里我所强调的“一次”;是不要同时将几个DC的内容都拷到屏幕DC上,这样没有起到双缓冲的效果。如果你搞了很多个内存DC,想把这些东西都显示出来,那你应该先把这多个内存DC的内容同时拷到另外一个内存DC上,再把这个内存DC的内容拷到屏幕DC上。
5,注意的一点:
m_hbmpBK=HBITMAP)::LoadImageAfxGetInstanceHandle),path+"Bk4.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_MenDC.SelectObject(m_hbmpBK);
m_MenDC.绘制工作。
在内存DC上所做的绘制工作实际上都是绘制在你选入的那张位图m_hbmpBK 上。就是说m_hbmpBK 句柄所指向的位图内容改变了,如果以后你在其他的地方在用这个m_hbmpBK 的时候,你会发现这已经不是你想象中的Bk4.bmp了,^_^。如果想再用原图,必须的重新从硬盘导入。
还要注意的一点是,一个位图句柄不可同时选入到两个内存DC中。内存DC对于选入的位图具有排他性,如果你m_MenDC.SelectObject(m_hbmpBK);而m_hbmpBK已经被其他的内存DC选用了话,那刚才这句m_MenDC.SelectObject(m_hbmpBK);是毫无意义的。
在网上看到了许多的关于装位图装载到离屏表面的文章,但是都是使用了WIN32函数,虽然有效,但不是很通用。如果我们要装载其它的格式的文件使用不了WIN32函数,不就无能为力了吗?于是我想直接操作文件,直接读取位图文件的数据到离屏表面。网上还是有这样的文章的,但是很少,并且没有过多的说明。其实,装载文件到离屏表面也很简单,不需要什么算法知识就可以完成的。主要的方法是(以256色位图为准):

1、将位图文件的颜色表和图像数据读入内存。

2、创建前后表面,离屏表面。

3、根据颜色表创建调色板。

4、将位图数据传输到离屏表面。

5、利用后表面的BLTFAST将图像输出到后表面。

6、翻转表面,将图像显示到屏幕。

先声明几个变量:

BITMAPFILEHEADER bmfh; //位图文件头

BITMAPINFOHEADER bmih; //位图信息头

RGBQUAD rgb[256]; //颜色表

首先,我了解了一下位图文件的结构,其实也是很简单的。

1、文件头: typedef struct tagBITMAPFILEHEADER

{

UINT bfType; //文件标志

DWORD bfSize; //文件大小

UINT bfReserved1,bfReserved2;

DWORD bfOffBits; //数据偏移

}BITMAPFILEHEADER;

bfType:是位图的文件标志,为"BM"。当你从文件中读出放到一个变量中时,它是"MB",即0x4d42。在内存中,存放是高位在前的。所以在磁盘上是"BM",读到内存就为"MB"了,不信?你一个字节一个字节的读,将这两个字节存到两个字符型变量char ch1,ch2;中,你会发现ch1==’B’,ch2==’M’。

bfSize:位图文件的大小。等于位图文件头+信息头+颜色表+位数据。以字节为单位即:
sizeof(bmfh)+sizeof(bmih)+sizeof(RGBQUAD)*256+bmih.biSizeImage

bfOffBits:位图数据偏移.如果你想直接读取位图的数据.使用 fseek(fil_ptr,bmfh.bfOffBits,SEEK_SET); 这样,可以直接将文件指针指向位图数据开始的地方。

2、信息头: typedef struct tagBITMAPINFOHEADER

{

DWORD biSize; //信息头大小。40字节
LONG biWidth,biHeight; //位图实际宽、高度。

WORD biPlanes; //

WORD biBitCount; //位图每像素的位数。

DWORD biCompression; //

DWORD biSizeImage; //位数据的大小(字节)

LONG biXPelsPerMeter,biYPelsPerMeter; //

DWORD biClrUsed; //

DWORD biClrImprotant; //

}BITMAPINFOHEADER;

介绍一些重要的部分:

biSize:信息头大小,即此结构的大小。为40字节。即sizeof(bmih)。

biWidth,biHeight:位图的像素宽、高。

biBitCount:位图每像素的位数。指定了这个位图文件的颜色深度。在这个例子中是8。

biSizeImage:位图数据区的大小。 这里有需要注意的:位图数据每行是以4字节增充的,如果是一个256色的位图。它的像素占一字节。如果图像宽度为80像素,则图像每行为80字节,如果图像宽度为79像素,则磁盘上的位图文件仍然是80字节。(78,77像素每行也为80字节)。图像每行76,75,74,73像素,则它在文件中占76个字节。因此在从磁盘读出数据时要知道每行的字节数,这里我使用 bytperlin=bmih.biSizeImage/bmih.biHeight; 从磁盘的位图文件中读取数据。 首先是位图文件头,信息头。使用如下语句便可: fread(&bmfh,sizeof(bmfh),1,fil_ptr);

fread(&bmih,sizeof(bmih),1,fil_ptr);

这时两个结构bmfh,bmih就存放了我们需要的一些关于位图的信息了。 再读入颜色表:

RGBQUAD* prgb; prgb=(RGBQUAD*)malloc(sizeof(RGBQUAD)*bmih.biBitCount); //注意,在使用指针之前一定要给它分配内存空间,否则的话程序会退出。

fread(prgb,sizeof(RGBQUAD),1<<BMIH.BIBITCOUNT,FIL_PTR); 这样,我们需要的颜色值放入了动态分配的内存空间了。但是在DD程序中设置调色板的话需要的是PALETTEENTRY结构数组,因此我们要得到PALETTEENTRY结构数据的值。

PALETTEENTRY*ppal= (PALETTEENTRY*)
malloc(sizeof(PALETTEENTRY)*bmih.biBitCount);
for(int i=0;i<(1<<BMIH.BIBITCOUNT);I++)

{
ppal[i].peRed=prgb[i].rgbRed;

ppal[i].peGreen=prgb[i].rgbGreen;

ppal[i].peBlue=prgb[i].rgbBlue;

ppal[i].peFlag=0;

} 之后我们就可以通过这个结构来取得LPDIRECTDRAWPALETTE接口指针。之后为前表面设置调色板(在后面的程序中)。 最后是读入位图位数据了,每个像素是1个字节。位图图像数据的大小在信息头中已经给定了:bmih.biSizeImage 这个大小包括实际的图像数据和为了每行达到4字节而扩充的字节数。

我们用如下方法读入: BYTE* pbuffer=(BYTE*)malloc(sizeof(BYTE)*bmih.biSizeImage); //注意,一定要分配内存空间,否则程序会退出!!!!!!!

fread(pbuffer,sizeof(BYTE),bmih.biSizeImage,fil_ptr); 这样,位图中的数据我们全部读入了。 文件头,信息头只是给我们提供了一个参数,方便我们读入位图数据。 颜色表用于设置调色板。(后面有程序)。 最后是将内存中的图像数据传入到离屏表面中了:

DDSURFACEDESC2 ddsd; ZeroMemory(&ddsd,sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); //注意一定要初始化这个结构,否则程序会退出!!

lpDDS_Off->Lock(NULL,&ddsd,DDLOCK_WAIT|DDLOCK_WRITEONLY,NULL);

(BYTE*)lpSurf=(BYTE*)ddsd.lpSurface; //取离屏表面指针。

//将内存数据复制到离屏表面中

lpDDS_Off->UnLock(NULL); 这样,全部的事情完成了,想要输出离屏表面的数据到后表面,使用后表面的BltFast 就可以了。 下面是具体的程序片段:

//给指定的表面设置调色板

int Create_Palette(LPDIRECTDRAW7 lpDD,LPDIRECTDRAWSURFACE7& lpDDS_Front,LPDIRECTDRAWPALETTE& lpDDP,char* filnam)

{ RGBQUAD rgbquad[256];

PALETTEENTRY pal[256];

if(filnam=="")

return 0; //从文件中读入调色板索引
FILE* fil_ptr;

fil_ptr=fopen(filnam,"rb");

if(fil_ptr==NULL)

return 0;

fseek(fil_ptr,sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER),SEEK_SET);

fread(rgbquad,sizeof(RGBQUAD),256,fil_ptr);

fclose(filnam);

for(int i=0;i<256;i++)

{

pal[i].peBlue=rgbquad[i].rgbBlue;

pal[i].peGreen=rgbquad[i].rgbGreen;

pal[i].peRed=rgbquad[i].rgbRed;

pal[i].peFlags=PC_NOCOLLAPSE;

}

lpDD->CreatePalette(DDPCAPS_8BIT,pal,&lpDDP,NULL);

lpDDS_Front->SetPalette(lpDDP); return 1;

} //装载位图数据,在这个函数中调用创建离屏表面的函数

(Init_Off) int LoadData_8(char* filnam)

{

if(filnam=="") return 0;

FILE* fil_ptr;

fil_ptr=fopen(filnam,"rb");

if(fil_ptr==NULL)

return 0;

BITMAPFILEHEADER bmfh;

BITMAPINFOHEADER bmih;

fread(&bmfh,sizeof(bmfh),1,fil_ptr);

fread(&bmih,sizeof(bmih),1,fil_ptr);

Init_Off(lpDD,lpDDS_Off,bmih.biWidth,bmih.biHeight);

int bytperlin=bmih.biSizeImage/bmih.biHeight; //位图数据每行字节数 BYTE* pbuffer=NULL; //////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
pbuffer=(BYTE*)malloc(sizeof(BYTE)*bmih.biSizeImage);

fseek(fil_ptr,bmfh.bfOffBits,SEEK_SET);

fread(pbuffer,sizeof(BYTE),bmih.biSizeImage,fil_ptr);

fclose(fil_ptr);

DDSURFACEDESC2 ddsd;

memset(&ddsd,0,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

lpDDS_Off->Lock(NULL,&ddsd,DDLOCK_WAIT|DDLOCK_WRITEONLY,NULL);

BYTE* pSurf=(BYTE*)ddsd.lpSurface;

BYTE* pData=pbuffer;

pData+=bmih.biSizeImage; //指针已经出了数据区,回一位,就是数据区.

for(int row=0;row<BMIH.BIHEIGHT;ROW++)

{

pData-=bytperlin;

memcpy(pSurf,pData,bmih.biWidth);

pSurf+=ddsd.lPitch; //表面从第一行依次向后定位

}

lpDDS_Off->Unlock(NULL);

return 1;

}

//给表面设置透明色

int SetColorKey8()

{

DDSURFACEDESC2 ddsd;

ZeroMemory(&ddsd,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

lpDDS_Off->Lock(NULL,&ddsd,DDLOCK_WAIT|DDLOCK_READONLY,NULL);
大家都知道内存DC是一种提高绘图效率,避免屏幕闪烁的好办法,几乎所有的绘图都必须使用到内存DC,可是在MSDN里一切都不是那么明显. 为了为以后的游戏制作更加顺利,我研究了一下内存DC的标准用法,然后贴在这里也是一个备忘. 其实所有的内存DC的原理都像下图所示:
Class CMyView

{

public:

//内存DC(主DC,临时DC(用来装载位图))

CDC *m_PrimaryMemDC; CDC *m_TempMemDC;

//位图对象

CBitmap *m_bgMap;

//背景

CBitmap *m_bitMap;

//人物

CBitmap *m_tempMap;

//临时

CRect m_rect;

}
然后便是在类的构造函数中建立对象,代码一目了然,我就不多说了.
CMemDCTestView::CMemDCTestView()

{

m_TempMemDC = new CDC;

m_PrimaryMemDC = new CDC;

m_bitMap = new CBitmap;

m_tempMap = new CBitmap;

m_bgMap = new CBitmap;

}
之后在OnCreate函数中初始化这些对象(注意不是构造函数,因为构造的时候还没有DC),OnCrate函数默认在View类中是没有的,所以你要 手动加入.
CMyView::OnCrate(……)

{

CClientDC dc(this); //创建与内存兼容的DC

m_PrimaryMemDC->CreateCompatibleDC(&dc);

m_TempMemDC->CreateCompatibleDC(&dc);

//创建兼容位图

m_tempMap->CreateCompatibleBitmap(&dc,1024,768);

//装载位图

HBITMAP bitmap = (HBITMAP)::LoadImage(NULL,"pic\\bgmap.bmp", IMAGE_BITMAP,1024,768, LR_LOADFROMFILE);

m_bgMap->Attach(bitmap);

bitmap = (HBITMAP)::LoadImage(NULL,"pic\\AppExit_enu.bmp",IMAGE_BITMAP,61,67, LR_LOADFROMFILE); m_bitMap->Attach(bitmap);

//载入位图

m_PrimaryMemDC->SelectObject(m_tempMap);

return 0;

}
我们看到这里主要做的工作是创建和窗口DC相兼容的内存DC,然后是载入位图. 提醒一点就是创建兼容位图,然后把他载入内存DC中这个过程的理解,我是这么理解的只有你的DC中已经有了一张图片,然后才能够往上面贴图片.就像我们画 画的时候先要有一张白纸,然后才能画画. 还是拿画画做例子,再解释另外一个东西,使用SelectObject函数可以看成是换画纸,而BitBlt函数我们就可以看作是把其他画纸上的东西复印 到现在的这个画纸上,所以你的DC必须先有画纸才能用BitBlt.这也就是为什么我刚才试了很多次都不能BitBlt成功的原因. 再往下看,当然到了最关键的OnDraw函数了。
void CMemDCTestView::OnDraw(CDC* pDC)

{

CMemDCTestDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);
GetClientRect(&m_rect);

BITMAP map;

m_bgMap->GetBitmap(&map);

m_TempMemDC->SelectObject(m_bgMap);

m_PrimaryMemDC->BitBlt(0,0,map.bmWidth,map.bmHeight,m_TempMemDC,0,0,SRCCOPY);

m_bitMap->GetBitmap(&map);

m_TempMemDC->SelectObject(m_bitMap);

m_PrimaryMemDC->BitBlt(0,0,map.bmWidth,map.bmHeight,m_TempMemDC,0,0,SRCCOPY);

pDC->BitBlt(0,0,m_rect.Width(),m_rect.Height),m_PrimaryMemDC,0,0,SRCCOPY);

}
在这个函数里我们首先定义了一个数据结构BITMAP通过CBitmap::GetBitmap来得到图像的相关信息(主要是长和宽),之后我们把要载入 的第一幅位图载入暂存DC1(m_TempMemDC)中,之后再把它贴到暂存DC2(m_PrimaryMemDC)上。(注意这时的暂存DC2已经有 一个默认的位图选入了,否则贴图操作不能成功)下面的步骤的重复的贴第二张图片,以此类推,最后把暂存DC2的东西贴到窗口DC上,我猜这个窗口DC一定 在程序创建的时候已经选入一张位图了(不然无法BitBlt)。 好了,这就是内存DC绘图的标准用法,只是繁琐,并不是很难,大家用的时候一定要细心再细心,特别是对于选择默认位图的部分,很容易遗漏。
void CPaintView::OnDraw(CDC* pDC)

{

CMyPaintDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc); //下面是在内存区进行绘图,然后一起输出到屏幕 CDC cdcMem; cdcMem.CreateCompatibleDC(pDC); //产生内存区

CBitmap bitmap; RECT rect; GetClientRect(&rect); int x=pDC->GetDeviceCaps(HORZRES);
//得到设备以像素为单位的宽度

int y=pDC->GetDeviceCaps(VERTRES);
//得到设备以像素为单位的高度

bitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
//产生位图内存区

cdcMem.SelectObject(&bitmap);

cdcMem.FillSolidRect(0,0,rect.right,rect.bottom,RGB(255,255,0));//填充背景色

pDoc->ShowAllShapes(&cdcMem);//画图,是我自已定义的画图函数

pDC->BitBlt(0,0,x,y,&cdcMem,0,0,SRCCOPY);//输出到屏幕

}
位图是一种图形化对象,用于在设备环境里创建、绘制、操纵和接收图片。从[开始按钮]上的小Winodws标志到标题栏上的[关闭]按钮,位图在Windows里无处不在。位图可以看作是一种由像素数组构成的图片,这些像素可以在屏幕上进行绘制。和所有图片一样,位图有自己的高度和宽度。也提供方法来判断位图使用什么颜色。最后,位图也是一个描述位图中每个像素的位(bits)数组。
习惯上,Windows下的位图被划分成两种类型:设备相关位图(DDBs)和设备无关位图(DIBs)。DDBs是一种和具体DC的特性有紧密关系的位图,不容易在有不同特性的DC上绘制。DIBs则相反,它与具体设备无关,因此需要携带足够的信息以便于在任何设备上准确的绘制。

DirectUI的初步分析

来源:DirectUI的初步分析

最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是有距离的,不过其实现还是很有意思的。在写此小结的时候又发现国内一个程序员将这个代码部分移植到WINCE下的代码(见引用二),因为平台的差异性要完全开发一个WINCE下的实际代码还是需要时间的。
由于本人GUI开发做得少,工作中有关这方面的东西主要是提供思路和方法,学习DirectUI的主要目的是为了更新知识学习思路,文章中难免出现错误。

一、核心
1、CWindowWnd: 窗口对象类(窗口实例对象父类)
2、CDialogBuilder: 创建控件类,分析脚本并用递归方式(_Parse函数)创建所有控件实例
3、CPaintManagerUI: 窗口消息及图形绘制管理器类
4、CGUIRenderEngineUI: 图形渲染引擎类,在离屏DC中生成最终显示的图形,可根据需要扩展多种图形效果显示。
5、INotifyUI: 事件通知抽象类
6、IMessageFilterUI: 消息过滤抽象类

二、控件
CControlUI: 控件管理抽象父类,父类INotifyUI
1、button
CButtonUI: 按钮控件
COptionUI: 选择按钮控件

2、combox
CSingleLinePickUI:
CDropDownUI: 下拉控件,父类另有CContainerUI和IListOwnerUI

3、decoration
CTitleShadowUI: 阴影效果
CListHeaderShadowUI
CSeparatorLineUI
CFadedLineUI

4、edit
CSingleLineEditUI: 单行编辑框控件
CMultiLineEditUI: 多行编辑框控件

5、label
CLabelPanelUI: 可设置背景色和文字色的静态标签控件
CGreyTextHeaderUI

6、list
第一种:
CListUI: 列表控件,包含以下几个子控件
(1)CListHeaderItemUI: 列表头
(2)CListExpandElementUI: 列表项
第二种:用法不明
CListHeaderUI: 列表头
CListElementUI: 列表项,父类另有IListItemUI
CListLabelElementUI: 列表项,父类CListElementUI
CListTextElementUI: 列表项
CListFooterUI: 列表尾

7、panel
CTextPanelUI: 父类CLabelPanelUI
CTaskPanelUI:
CNavigatorPanelUI: 导航面板,父类另有IListOwnerUI,包含CNavigatorButtonUI子控件
CSearchTitlePanelUI:
CImagePanelUI: 图片显示
CWarningPanelUI: 警告提示,父类CTextPanelUI
CPaddingPanelUI: 填充栏

8、tab
CTabFolderUI: 父类另有CContainerUI和IListOwnerUI
CTabPageUI: 父类另有CContainerUI

9、toolbar
CToolbarUI: 工具栏,包含以下几个子控件
(1)CToolButtonUI: 图形按钮
(2)CToolSeparatorUI: 分隔符
(3)CToolGripperUI:  gripper

10、title
CToolbarTitlePanelUI:

11、statusbar
CStatusbarUI: 状态栏,父类另有CContainerUI

12、anim
CAnimJobUI: 动画显示类

13、ActiveX
CActiveXUI:

三、容器:
CContainerUI: 容器类,父类CControlUI和IContainerUI。可以认为容器是特殊的控件(见上面控件类关于父类的说明),其目的之一是具有容器特性的控件可以容纳其它控件,这样可以方便的实现控件的叠加;目的之二实际的窗口只有一个,对于叠加的控件必须要进行层次管理才能正确绘图和事件分发。另外可参见引用三
1、画布: CCanvasUI(父类CContainerUI),可绘制背景色、画线、贴图
CWindowCanvasUI: 父类CCanvasUI
CControlCanvasUI: 父类CCanvasUI
CWhiteCanvasUI: 父类CCanvasUI
CDialogCanvasUI: 父类CCanvasUI
CTabFolderCanvasUI: 父类CCanvasUI
2、布局: 管理不同层次的控件
CDialogLayoutUI: 父类CContainerUI
CVerticalLayoutUI: 父类CContainerUI
CHorizontalLayoutUI: 父类CContainerUI
CTileLayoutUI: 父类CContainerUI

四、通用
1、script
CMarkup
CMarkupNode

2、language
CUIUtility

3、multi-thread
CriticalSection
AutoCriticalSection
CMutex
CAutoMutex
CEvent
CAutoEvent
CManualEvent

五、主要数据成员
1、CPaintManagerUI
CControlUI* m_pRoot: 如果控件是叠加的则存放最下层的控件对象,否则存放第一个创建的控件对象
CControlUI* m_pFocus: 存放获得焦点的控件对象指针
CControlUI* m_pEventHover: 存放当前有鼠标移进移出事件的控件对象指针
CControlUI* m_pEventClick: 存放当前有点击事件的控件对象指针
CControlUI* m_pEventKey: 存放当前有按键事件的控件对象指针
CStdPtrArray m_aNotifiers: 记录所有需要事件通知的窗口,根据窗口名称调用相应的消息处理函数
CStdPtrArray m_aNameHash: 保存控件对象指针hash表(用控件名称生成hash值)
CStdPtrArray m_aPostPaint: panel的fade效果
CStdPtrArray m_aMessageFilters: 保存需要进行消息过滤的控件或功能(如动画类)
CStdPtrArray m_aDelayedCleanup:
CStdPtrArray m_aPreMessages: 预处理消息
HWND m_hWndPaint: 控件布局窗口句柄
HDC m_hDcPaint: 控件布局窗口设备DC
HDC m_hDcOffscreen: 离屏内存DC
HBITMAP m_hbmpOffscreen: 离屏内存DC相关联HBITMAP

2、CControlUI
CPaintManagerUI* m_pManager: 窗口消息或绘图管理器
CControlUI* m_pParent: 逻辑上的父窗口(控件)对象指针
CStdString m_sName: 控件标识
CStdString m_sText: 控件显示标题或显示脚本字符串
CStdString m_sToolTip: 控件的Tip信息

3、CContainerUI
CStdPtrArray m_items: 同一层的控件对象或控件对象的子对象,例如canvas上放置的按钮、combox由edit和list两个子对象组成,其它还有tab等。具体见CDropDownUI、CTabFolderUI、CNavigatorPanelUI三个类定义

4、CDialogLayoutUI
CStdValArray m_aModes: 用于存放在Layout上绝对坐标转成相对坐标(CDialogLayoutUI::RecalcArea)的控件对象(指针、大小、模式),目的是否为了让布局上的控件随布局变化而变化,能够正确绘图???

六、控件属性
待完成

七、脚本例子
<Dialog>
  <WindowCanvas pos=/"0,0,600,800/">
  <DialogLayout pos=/"0,0,600,800/">
    <Button pos=/"390, 30, 490, 58/" text=/"OK/" name=/"ok/"/>
  </DialogLayout>
  </WindowCanvas>
</Dialog>

八、绘图及事件处理
1、绘图
STEP01. CWindowWnd::__WndProc: 主窗口程序
STEP02. pThis->HandleMessage: pThis是布局窗口对象指针,并与布局窗口绑定(SetWindowLongPtr)
STEP03. m_pm.MessageHandler: m_pm为CPaintManagerUI唯一实例对象
STEP04. CPaintManagerUI::MessageHandler: 处理WM_PAINT
STEP05. m_pRoot->DoPaint: m_pRoot为最下层的控件对象(在本例中为CWindowCanvasUI控件,对应脚本中的WindowCanvas)
STEP06. CCanvasUI::DoPaint: 往画布上绘制背景色、边角弧形、水印等。
STEP07. CContainerUI::DoPaint: 在最下层具有容器特性的控件(CWindowCanvasUI控件)上画容器内所有控件(控件实例对象保存在m_items中)
STEP08. pControl->DoPaint: pControl为控件对象实例之一,利用多态性来调用不同控件的绘图方法
STEP09. CButtonUI::DoPaint: 按钮(对应脚本中Button)绘图方法,有下面两种方法
i)文字方法: CGUIRenderEngineUI::DPaintButton
ii)图片方法: CGUIRenderEngineUI::DoPaintBitmap
STEP10. 新一轮消息循环

2、事件
STEP01. CWindowWnd::__WndProc:
STEP02. pThis->HandleMessage:
STEP03. m_pm.MessageHandler:
STEP04. CPaintManagerUI::MessageHandler: 处理WM_LBUTTONDOWN
STEP05. CPaintManagerUI::FindControl: 根据鼠标坐标查找相应控件对象
STEP06. m_pRoot->FindControl:
STEP07. CContainerUI::FindControl: 在最下层具有容器特性的控件(CWindowCanvasUI控件)容器内查找相应控件对象
STEP08. CControlUI::FindControl: 在m_items中查找相对应的控件对象
STEP09. pControl->Event: pControl为控件对象实例之一,利用多态性来调用不同控件的事件方法
STEP10. CPaintManagerUI::MessageHandler: 处理WM_LBUTTONUP
STEP11. m_pEventClick->Event: 利用多态性来调用不同控件的事件方法(m_pEventClick说明见"主要数据成员")
STEP12. CButtonUI::Event: 按钮(对应脚本中Button)事件方法
STEP13. CButtonUI::Activate:
STEP14. m_pManager->SendNotify: 传递控件对象指针和触发事件(文本方式)
STEP15. CPaintManagerUI::SendNotify: 注意以下两点实现是完成控制和业务分离的关键
i)利用重载特性调用注册的监听对象(窗口)的消息处理函数Notify(监听对象保存在m_aNotifiers中)
for( int i = 0; i < m_aNotifiers.GetSize(); ++i )
{
    static_cast<INotifyUI*>(m_aNotifiers[i])->Notify(Msg);
}
ii)布局窗口CStartPageWnd的消息处理,宏定义展开后实际就是重载的Notify函数
DIRECT_BEGIN_NOTIFYMAP(CStartPageWnd)
    PROCESS_BUTTON_CLICK(_T("ok"),OnOk)
    。。。
DIRECT_END_NOTIFYMAP(CStandardPageWnd)
STEP16. CStartPageWnd::OnOk: 控件消息处理函数,此处可以加入具体的事务逻辑处理
STEP17. 新一轮消息循环

3、消息定义(文本)
"click"、"changed"、"link"、"browse"、"itemclick"、"itemselect"、"dropdown"、"itemactivate"、"headerdragging"、"headerclick"、"headerdragged"、"itemexpand"、"itemcollapse"、"windowinit"、"killfocus"、"setfocus"、"timer"

九、疑问
1、Edit、Combox的下拉列表部分、ScrollBar、Tooltip控件是创建的实际窗口,这个与DirectUI思路还是有差别的
2、实例中有创建一个不进行消息处理的窗口(CFrameWindowWnd),然后又创建了一个窗口(CStandardPageWnd)用于具体的控件布局。但是我用一个窗口也能实现,原作者为什么这样还不清楚
3、控件是用文本形式来做标识的,消息类型是文本形式,是否改成数值型比较好

十、引用
引用一: http://www.viksoe.dk/code/windowless1.htm
引用二: http://directui.googlecode.com/
引用三: http://www.cnblogs.com/cutepig/archive/2010/06/14/1758204.html

POPCAPFramework(SexyApp)对中文的支持

注意项目编译选项:使用MBCS和_USE_WIDE_STRING 设置了这两个选项,所有默认的std::string都是本地编码的多字节字符串,SexyString是utf16编码的宽字符字符串 SexyApp内部对中文的处理是针对wstring的,因此可以认为基本没有问题,只需要修改显示相关代码和字符串的入口代码即可,举几个例子 1. 字体 默认的SysFont用的是ANSI_CHARSET,会导致无论创建什么中文字体都是宋体,需要将ANSI_CHARSET改为GB2312_CHARSET,这样设置的字体才有效 2. 中文输入 比如EditWidget中,处理paste的时候,调用的是 SexyString aBaseString = StringToSexyString(mWidgetManager->mApp->GetClipboard()); 这是有问题,需要将GetClipboard的结果用MultiByteToWideString转换为wstring 此外,EditWidget对于默认输入的字符有一个uTheChar<=range的判断,而range的最大值是255,对于中文显然不适用,去掉即可。 3. 其它类似问题,按照以上方案修改即可

编译popcapframework

来源:编译popcapframework

一、下载popcapframework:

http://downloads.sourceforge.net/project/popcapframework/PopCap%20Games%20Framework%20v1.3/PopCap%20Framework/PopCap_Framework_v1.3.zip

二、解压到G:/PopCap_Framework_v1.3

三、打开G:/PopCap_Framework_v1.3/osframework/source/SexyAppFramework/SexyAppBase VS2005.vcproj

四、修改EditWidget.cpp 

(((unsigned int)theChar >= (unsigned int)(L’?)) && ((unsigned int)theChar <= (unsigned int)(L’’))) ||

(L’?) 改成(L’?’)

五、Debug – Incremental 改成Debug

六、下载http://resource.gameres.com/dx9csdk.rar 解压到G:/PopCap_Framework_v1.3/dx9csdk

七、Tools ->Options ->Projects and Solutions ->Include files 加入G:/PopCap_Framework_v1.3/dx9csdk/Include

    Tools ->Options ->Projects and Solutions ->Library files 加入G:/PopCap_Framework_v1.3/dx9csdk/Lib/x86

八、编译,在G:/PopCap_Framework_v1.3/osframework/source/SexyAppFramework/Debug 目录下生成 SexyAppFramework.lib 改名成SexyAppFramework_D.lib

九、将Debug 模式改成Release 模式,重新编译得到Release 版的SexyAppFramework.lib

十、将SexyAppFramework.lib 和SexyAppFramework_D.lib 剪切到G:/PopCap_Framework_v1.3/osframework/source/SexyAppFramework

注意:Release 编译选项用 /MT,Debug 用 /MTD。引用此库的程序也必须依此设置。

对DUILIB重构的一些看法

来源:对DUILIB重构的一些看法

经过一段时间的思考和对游戏引擎HGE和OGRE的学习,我觉得duilib要参照游戏开发的方法来做些重构:在功能层次划分上大体可分为主框架、窗口管理器、事件管理器、渲染处理、逻辑处理、资源管理、时间系统、脚本、GUI,以下是具体内容
1、主框架:负责创建唯一的物理窗口、处理系统消息处理生成输入事件,同时它也是一个主循环应该具有起停功能
2、窗口管理器:所有的窗口都是virtual的,涉及到窗口间的切换以及通信的时候能够很方便的进行管理,同样定义窗口切换的动画时也是很好扩展的
3、事件管理器:对输入事件、逻辑事件进行统一管理。输入事件一般就是由系统消息转换而成的,而逻辑事件一般是逻辑处理产生的。事件通知机制采用类似C#的托管机制,由事件管理器分发到注册的监听者(窗口和控件)
4、渲染处理
(1)做成一种帧回调的方式,这样能够根据实际情况调整刷新的频率。
(2)帧可以拆分成逻辑处理帧和界面渲染帧在不同线程中处理实现完全分离,逻辑帧是对数据及渲染对象状态改变等进行处理,而渲染帧是进行实际的渲染,在处理完一帧结束的时候同步一下。
(3)简单数据的处理可借鉴MFC的DDX机制。比如音量调节,在逻辑处理修改音量这个数据后会触发视图的刷新。
5、逻辑处理:处理数据和事件状态切换、通知渲染处理
(1)简单的逻辑处理直接在事件处理函数中完成
(2)复杂的逻辑处理考虑用有限状态机的方式
(3)逻辑处理和渲染处理是需要有一个同步机制的
6、资源管理器:对图片、文字、声音进行统一管理
(1)在PopCap_Framework这个小游戏开发框架中有一个ResourceGen工具,可以生成资源配置文件包含的只是ID及路径,这样有一个好处就是可以动态的改变图片及文字
(2)资源预读线程。这在资源够多主框架刚起来时对效率的提升还是有帮助的。
(3)高速缓存:防止过多的资源占用大量的内存
7、脚本:如果界面和逻辑分离得比较彻底,那么逻辑处理用脚本来做应该是比较容易了。
8、GUI:duilib现有的控件容器部分其实只是GUI,已经做得比较完善了。不同的是由渲染线程来处理这些图形单元,如果能进一步抽象到点、线、面就更好了。
9、渲染器:这一部分最好抽象出来,一个好处就是具体的渲染模块如GDI、GDI+、D3D、OPENGL可以用插件的方式注册。
10、时间系统:这部分到底需不需要还没想明白。
11、日志记录
12、调试:比如说内存泄漏监控、回收、异常处理机制等等
以上这些纯粹是个人的一些想法,因为游戏不管是逻辑处理还是渲染处理都是要比普通的程序要更复杂的,这些想法实际开发中是否有效还是个未知数。另外强力推荐一本游戏开发的书籍:

<Game Coding Complete 3rd Edition>,建议直接看英文版,我是受益良多吧。

谢谢你们的陪伴

http://im.qq.com/culture/qqbanner.shtml?ADUIN=0&ADSESSION=0&ADTAG=CLIENT.QQ.3847_LoginLogo.0

duilib 开源界面库

Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开发库,她可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。Duilib界面库使用XML来描述界面风格和界面布局,可以很方便的构建高效、绚丽、易于扩展的界面。从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明、动画等。

Duilib界面库的出现解决了使用传统MFC界面库开发软件不美观、界面细节处理不好、使用硬编码、开发效率低下、生成程序体积大等问题。而且传统MFC界面美化库大都使用HOOK等对系统影响比较大的技术,可能会导致系统不稳定或者引发其他错误。而Duilib界面库完全基于GDI在窗口上自绘,无其他依赖,未使用特殊或危险的系统调用,能够很好的解决传统MFC界面的一系列问题。

Duilib界面库完全兼容ActiveX控件(如常见的IE控件和Flash),也可以和MFC等界面库配合使用,用户完全可以不用担心切换到Duilib界面库上面会带来额外的成本或者Duilib界面库会出现功能不够用等情况。

Duilib界面库可广泛用于互联网客户端、工具软件客户端、管理系统客户端、多媒体客户端(如KTV、触摸屏)、车载电脑系统、gps系统和手机客户端软件等。

Duilib界面库可以广泛运行在windows98、Windows2000、WindowsXP、Windows2003、Windows Vista、windows7、WinCE5、WinCE6、Windows Mobile6等平台上,目前支持的开发工具包括vc6、vc2003、vc2005、vc2008、vc2010。

Duilib界面库基于viksoe的DirectUI项目[1],并且以BSD协议开源。

技术特点

1、界面与业务逻辑分离

2、 使用XML配置界面

3、 界面布局方式灵活多样

4、 内置常用的控件

5、 支持自定义控件

6、强大的控件组合能力,复杂功能可通过简单控件组合完成

7、强大的事件处理机制

8、基于GDI和脏矩形的高效绘制技术

9、支持多种资源方式,支持多种图片格式

10、支持alpha混合,支持窗口透明

11、强大的图片绘制描述方式

12、类html字符串绘制技术

13、支持动态变换色调

14、支持动态切换资源位置方式换肤

15、支持ansi和unicode,支持多国家语言

16、支持插件系统

17、内存占用小

18、无第三方库依赖

19、提供可见即所得的ui编辑器

20、丰富易上手的demo例子

21、可以非常容易和mfc、wtl结合使用

参考资料
扩展阅读:

Android 4.0用户份额已达1%

2012-02-03 08:50  牛华网  rocky

据牛华网北京时间2月3日消息,据国外媒体报道,Google刚刚公布了Android系统的用户使用情况。截至2012年2月1日的两周内,访问Android Market的Android手机用户系统分布如下:

*Android 4.0(Ice Cream Sandwich)用户已占1%。当然,这些用户都使用三星Galaxy Nexus;

*Android 3.0 (Honeycomb)用户占3.4%,较前一个月攀升1个百分点;

*Android 2.3(Gingerbread)用户占58.6%,前一个月为55.5%;

*Android 2.2(Froyo)用户下滑3个百分点至27.8%;

*Andoird 2.0(Eclair用户占7.6%,前一个月为8.5%

据统计,Android设备目前日激活量超过70万台。(rocky)

猜灯谜 闹元宵

站长之家一周新闻盘点:互联网口水战再升级

2012-02-03 15:40 来源: 站长之家

龙年伊始,互联网爆发多宗口水战。方舟子与韩寒口水战愈演愈烈。京东商城与阿里巴巴旗下一淘网的口水战,也吸引了众多目光,当当网李国庆也不甘寂寞,加入混战……而本周最引人注目的,莫过Facebook,它的上市标志着社交网络行业高速发展和商业化时代的到来。

Facebook提交IPO申请 融资50亿美元

事件:Facebook再引国内业界思考:移动决定未来

北京时间2月2日消息,Facebook已经提交IPO申请。Facebook递交首次公开募股(IPO)一事,再次引发的国内互联网行业的思考和讨论。

点评:作为全球最大的社交网站,Facebook递交招股书、启动IPO具有极强的标志性意味,这也将是美国历史上最大规模的科技公司IPO交易。在这一全球性的事件中,尽管Facebook尚未获准进入中国市场,但国内的互联网行业无法不对此高度关注。移动互联网决定着行业的未来,而基于社交网络的生态系统重构,正推动新一轮数字商业变革。

一淘网发布价格指数 引发电商巨头口水战

事件:李国庆介入一淘报告风波:公开表示支持京东

一淘网的一份价格数据监测报告引起轩然大波。一场口水战在各大电子商务网站老板的微博上开始了。

点评:资深业内人士认为,这种分析报告应交给没有利益冲突的独立第三方。“否则一淘评价京东,京东不服气。不过,一向与京东商城打价格战的当当网却与京东站到了同一阵营。一场数据报告引发的企业大战已超过了其本身的意义,而数据背后的利益之争更耐人寻味。

香橼创始人表示将继续炮轰奇虎

事件:香橼将继续炮轰奇虎 周鸿祎称不打口水战

北京时间周二凌晨,美国独立研究机构香橼(Citron)创始人安德鲁·莱福特(Andrew Left)对记者独家透露,“我会继续采取行动,向全世界证明奇虎360这家公司涉嫌欺诈”。 奇虎360董事长周鸿祎就此表示,“当下最重要的是踏踏实实做好公司”。

点评:这场始于去年11月的“口水战”,在莱福特的主动“宣战”下似乎还没有结束,但从其网站上刊登四份质疑奇虎360的报告结果看,并没有对其股价造成严重打击。双方很显然各有立场,根本上说,这种‘口水战’就是美国资本市场上游戏的一部分。

去哪儿网副总与携程再爆口水战

事件:去哪儿副总戴政:动用一切力量报道携程负面

携程旅行网高层和华北公关执行人员收到去哪儿网副总裁戴政的短信,其不仅通过短信辱骂携程员工为“混蛋”,并称将公开征集携程的投诉案例,动用一切力量让央视315栏目组报道携程的负面新闻。

点评:目前在线旅游领域竞争进入白热化阶段。携程旅行网发布春运安全购票指南,提醒消费者购买火车票和机票时应谨防诈骗。去哪儿网认为携程故意针对自己。为此去哪儿网副总裁戴政和携程公关人员在微博上展开了激烈的辩论。

方舟子与韩寒口水战愈演愈烈

事件:韩寒起诉方舟子索赔10万 方舟子毫不示弱

1月29日,作家韩寒委托律师,就知名科普作家方舟子(方是民)通过互联网“质疑韩寒代笔”期间一些言论已构成造谣、对韩寒名誉造成损害事宜,在上海提起法律诉讼。

点评:今天凌晨4点,韩寒撰写博文,表示不再回应代笔事件。这并不意味着此事的终结,“休战”只是韩寒方面一厢情愿,方舟子表示,无论韩寒“逃跑”与否,自己不会放弃这场“打假”。这是一场磁性十足的论战。一名出版人表示,不愿意对此事发表任何看法,因为太无聊。

互联网地图服务新规今实行 谷歌仍未获测绘资质

事件:谷歌或将退出互联网地图服务 恐影响数百万智能手机用户

2月1日起未申请互联网地图服务资质的单位一律不得从事互联网地图服务。因谷歌合资单位目前仍未获得相关资质,则谷歌恐面临退出互联网地图服务,若果真如此,数百万智能手机用户恐将受到波及。

点评:此前有分析认为,新规实施后由于部分公司无法获得资质,将引发互联网地图行业的大洗牌。对此,孔祥来表示,这么说有点为时过早,还要再看情况,事情并没有想象中那么严重。多数业内人士认为,从大量基于谷歌地图的应用和官方以及谷歌态度来看,其短期内不会退出中国市场。

结束语:春节长假后的第一周即将结束,上班族们也逐渐摆脱“节后综合征”。让我们打起精神,面对新的一年的工作生活!(文/姚尧)

信阳市浉河区吴家店镇龙灯舞狮迎元宵庆佳节热闹非凡!

2012-02-05 15:35 来源:信阳电视网

2月4日,吴家店镇东园舞龙狮在吴家店乡政府组织领导下走上单位街头为大家奉献精彩舞龙舞狮,表演现场人山人海,不是爆发掌声鞭炮声,欢乐气氛中共迎元宵佳节。

2012祥龙登场
2012祥龙登场
2012祥龙吴家店镇中心校精彩表演
2012祥龙吴家店镇中心校精彩表演

更多精彩:http://www.xytv.cn/NEWS/shizhengxinwen/2012/0205/28754.html

传谷歌地图未获牌因安全审校人员未符合相关规定

2012-02-02 09:26  来源: 每日经济新闻

此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,2月1日起未申请互联网地图服务资质的单位一律不得从事互联网地图服务。

国家测绘局相关人士:正在审批

昨日,国家测绘局相关负责人员对《每日经济新闻》表示,国家测绘地理信息局正在按法定程序对谷歌地图获得资质进行审查,在资质审批过程中,其互联网地图服务可维持现状,但不得增加新的互联网地图服务内容。

搜狗地图总经理孔祥来则对《每日经济新闻》表示,地图更新服务是衡量地图互联网应用提供者最重要的指标,这或许对谷歌的地图业务是一个致命的打击。

事实上,自从国家测绘局2010年5月推出了全新的互联网地图认证系统,网络地图服务提供商必须向国家测绘局申请牌照。根据规定,外企申请地图营业牌照至少需要两个重要条件:第一是将存放地图数据的服务器设在中华人民共和国境内;第二是依法采取合资、合作的形式进行审批,即:外国组织或个人来华从事互联网地图服务的必须依法设立合资企业,而且必须是中方控股。此前,谷歌地图的牌照申请工作就一直不顺畅。

此后,国家测绘局对外资互联网企业申请地图服务资质略微松绑。将原来的规定:必须设立中外合资或者合作企业,修改为只允许设立中外合资企业;中外投资者的出资比例,由必须中方控股(中方投资比例占51%以上)修改为外方投资者的出资比例最终不得超过50%。这一改变,让面临僵局的谷歌地图迎来了新的转机。

2011年6月份,国家测绘局的相关人员向《每日经济新闻》透露,谷歌已经以北京谷翔信息技术有限公司的名义向国家测绘局提交了申请。然而,时隔半年之久,谷歌的牌照申请迟迟未获得审批。

孔祥来对《每日经济新闻》表示,按照相关规定,提交申请的企业需要提交一系列的材料,包括符合认证工程师培训并通过相关资格考试、地图内容审查等申报环节,一般来说,符合上述条件者,1~2个月便可以获得牌照。

一位知情者向《每日经济新闻》透露,谷歌之所以至今还未获得牌照是因为谷歌申报材料中,安全审校人员未符合相关规定。

“除此之外,独立的地图引擎、地图服务器的审核,谷歌均符合相关的规定。”上述知情人士进一步指出,根据《测绘资质分级标准》规定,谷歌要申请甲级资质互联网地图服务单位应具有经国家测绘局考核合格的地图安全审校人员5人,而谷歌的安全审校人员未符合规定。上述知情人士拒绝透露谷歌安全审校人员未符合规定的细节。

另一方面,《每日经济新闻》从国家测绘局渠道了解到,2011年,国家测绘局曾两次在西宁举办过相关资质培训考核,一次是6月16日~6月18日,另外一次则为8月31日~9月2日。

“也不排除谷歌在此期间安全审校人员已经获得相关的资格,而正在重新走行政程序。”上述知情人士表示。

针对上述事实,《每日经济新闻》多次致电谷歌中国公关负责人王锦红,其电话一直未接通。而针对谷歌牌照的其他内容,其公关人士表示,目前并无具体的新内容共享。

地图业务将持续受冲击

据国家测绘局相关人士透露,截至2012年1月31日,全国共有151家单位获得了甲级互联网地图服务测绘资质证书,有128家单位获得乙级资质证书。

“国家测绘地理信息局已基本完成了对目前已知互联网地图服务单位的资质发证工作。”国家测绘局相关人士表示。

这也意味着,正在申请审批流程的谷歌能否获得牌照也成为其未来命运的最后一搏。事实上,这种长期没有结局的审批正冲击着谷歌的地图业务。

根据国家测绘局的说法,谷歌互联网地图服务虽然可维持现状,但不得增加新的互联网地图服务内容。

孔祥来对《每日经济新闻》表示,对于互联网地图服务商来说,更新的内容来自两部分,第一:是上游互联网地图数据提供商高德和四维图新两家地图内容的更新;第二则是各地图厂商在餐饮、旅游、酒店等垂直领域的内容更新。

“高德和四维图新一年也就更新4次,这对谷歌地图影响不大,真正受影响的是谷歌自身对垂直领域内容的更新。”孔祥来对此表示,由于大部分的地图服务商均需要通过不断更新其对垂直领域合作伙伴整合而获得高增长率。

而这也意味着,谷歌地图在停止更新之后或受到重挫。来自谷歌合作伙伴也有自己的担心。领团网CEO王启亨对 《每日经济新闻》表示,目前该公司在PC端领域已经取消了同谷歌的合作而转投搜狗,但是在手机端依然还是适用谷歌地图。

根据易观国际的数据分析,在中国,谷歌地图在PC端只有不到10%的市场份额,但在手机端市占率达87.6%。

据王启亨透露,鉴于谷歌地图命运的不确定性,该公司目前正在研究手机端如何切换到其他例如搜狗、百度地图上。

易观国际分析师阎小佳则表示,谷歌地图受牌照影响最大的受害者有可能是部分手机地图用户和众多涉及地图API调用服务的中小网站。最有可能的受益者是地图API市场的高德、百度、搜狗、腾讯等;另外一个细分市场手机地图受益者则是高德地图、百度地图等主流竞争者。

行业专家龙威廉也指出,如果关闭谷歌地图网站,不仅会殃及国内大量地图服务的商业网站,还会影响国内所有的iPhone和Android等智能手机用户。他认为,目前流行的苹果iPhone手机以及应用Android系统的智能手机都内置了谷歌地图,“一旦谷歌地图无法运营,中国数百万高端智能手机用户以及数百家商业地图网站势必受到强烈冲击。”

对此,也有业内人士认为,移动互联网是谷歌的重点,尽管谷歌方面获得牌照还存在某些障碍,但谷歌不会对互联网地图服务轻言放弃。

Facebook招股书概要:去年净利润10亿美元

2012-02-02 08:49 [小 大] 来源: 新浪科技

Facebook提交IPO上市申请

Facebook提交IPO上市申请

全文:Facebook招股书英文原版

新浪科技讯 北京时间2月2日凌晨消息,Facebook今天向美国证券交易委员会提交上市申请文件,正式启动IPO(首次公开招股),最多融资50亿美元。

S-1文件显示,2011财年,Facebook营收达37.1亿美元,净利润达10亿美元。扎克伯格2011年收入150万美元。

Facebook上市承销商包括摩根史丹利、JP摩根、高盛、美银美林、巴克莱资本和Allen & Company,股票交易代码为“FB”。

以下是招股书概要:

Facebook公司

我们的任务是让世界更加开放和连接。

人们使用Facebook与朋友和家人保持连接、发现周围所发生的世界大事、共享和表达人们关注的事情。

开发者借助Facebook平台开发应用程序和网站,并集成在Facebook中以覆盖我们的全球网络用户,创造更具个性化、社交和迷人的产品。

开发者借助Facebook平台开发应用程序和网站,并集成在Facebook中以覆盖我们的全球网络用户,创造更具个性化、社交和迷人的产品。

广告商可以与Facebook上的逾8亿月活跃用户或部分用户基于后者选择共享的信息进行互动,这其中包括年龄、地理位置、性别和兴趣。我们为广告主提供独一无二的覆盖度、关联性、社交环境和参与度组合来提升他们的广告价值。

我们相信,对于加快、简化、丰富人们相互之间的通讯方面,我们站在业界的最前列。Facebook已经成为我们用户日常生活的主要组成部分。

我们在用户数量和参与度方面经历了快速增长:

–截至2011年12月31日,我们拥有8.45亿月活跃用户,相比2010年12月31日时的6.08亿增长39%。

–2011年12月,我们日平均活跃用户达到4.83亿,相比2010年12月的3.27亿增长48%。

–2011年12月,我们有逾4.25亿用户使用Facebook移动产品。

–截至2011年12月31日,Facebook平台上的朋友联系次数超过了1000亿次。

–截至2011年12月31日的季度中,我们的用户每天平均发表27亿次“赞”(Like)和评论。

为了描述我们如何计算我们的月活跃用户、日活跃用户以及其它影响这些指标的因素,请参看“业界数据和用户指标”和“管理层讨论和财务条件、运营结果分析–我们的用户指标趋势。”

财务状况

Facebook 2011财年营收为37.11亿美元,净利润为10亿美元,归属于A类和B类普通股股东的每股摊薄收益为0.46美元。Facebook 2010财年营收为19.74亿美元,净利润为6.06亿美元,归属于A类和B类普通股股东的每股摊薄收益为0.28美元。

Facebook 2011财年总成本和支出为19.55亿美元,其中营收成本为8.60亿美元,营销和销售支出为4.27亿美元,研发支出为3.88亿美元,总务和行政支出为2.80亿美元。Facebook 2010财年总成本和支出为9.42亿美元,其中营收成本为4.93亿美元,营销和销售支出为1.84亿美元,研发支出为1.44亿美元,总务和行政支出为1.21亿美元。

Facebook 2011财年运营利润为17.56亿美元,2010财年运营利润为10.32亿美元。

Facebook 2011财年来自于运营活动的净现金流为15.49亿美元,2010财年来自于运营活动的净现金流为6.98亿美元。

Facebook 2011财年利息支出为4200万美元,2010财年利息支出为2200万美元。

Facebook 2011财年广告营收为31.54亿美元,支付及其他服务费营收为5.57亿美元

Facebook 2010财年广告营收为18.68亿美元,支付及其他服务费营收为1.06亿美元。

在截至12月31日的2011财年第四季度,Facebook总营收为11.31亿美元,其中广告营收为9.43亿美元,在总营收中所占比例为83%;支付及其他服务费营收为1.88亿美元,在总营收中所占比例为17%。Facebook 2011财年第四季度总成本和支出为5.83亿美元,其中营收成本为2.47亿美元,营销和销售支出为1.32亿美元,研发支出为1.24亿美元,总务和行政支出为8000万美元。

Facebook 2011财年第四季度净利润为3.02亿美元,运营利润为5.48亿美元。

业绩分析

营收

Facebook 2011年营收达到37.11亿美元,高于上年的19.74亿美元,高于2009年的7.77亿美元。Facebook 2011年营收增幅达到88%,不及2010年154%的营收增幅。

Facebook 2011年广告营收达到31.54亿美元,高于上年的18.68亿美元,高于2009年的7.64亿美元。Facebook 2011年广告营收增幅达到69%,不及2010年145%的广告营收增幅。

Facebook 2011年支付和其它营收为5.57亿美元,高于上年的1.06亿美元,高于2009年的1300万美元。

2011年,Facebook大约56%的营收来自于美国的广告客户和平台开发者,比例低于上年的62%。

营收成本

Facebook 2011年营收成本为8.60亿美元,较上年的4.93亿美元增长74%。Facebook 2011年营收成本所占公司营收的比例为23%,低于上年的25%。

Facebook 2010年营收成本为4.93亿美元,较2009年的2.23亿美元增长121%。Facebook 2010年营收成本所占公司营收的比例为25%,低于2009年的29%。

销售与营销支出

Facebook 2011年销售与营销支出为4.27亿美元,较上年的1.84亿美元增长132%。Facebook 2011年销售与营销支出所占公司营收的比例为12%,高于上年的9%。

Facebook 2010年销售与营销支出为1.84亿美元,较2009年的1.15亿美元增长70%。Facebook 2010年销售与营销支出所占公司营收的比例为9%,低于上年的15%。

研发支出

Facebook 2011年研发支出为3.88亿美元,较上年的1.44亿美元增长169%。Facebook 2011年研发支出所占公司营收的比例为10%,高于上年的7%。

Facebook 2010年研发支出为1.44亿美元,较上年的8700万美元增长66%。Facebook 2010年研发支出所占公司营收的比例为7%,低于上年的11%。

总务与行政支出

Facebook 2011年总务与行政支出为2.80亿美元,较上年的1.21亿美元增长131%。Facebook 2011年总务与行政支出所占公司营收的比例为8%,高于上年的6%。

Facebook 2010年总务与行政支出为1.21亿美元,较上年的9000万美元增长34%。Facebook 2010年总务与行政支出所占公司营收的比例为6%,低于上年的12%。

备付所得税

Facebook 2011年备付所得税为6.95亿美元,较上年的4.02亿美元增长73%。Facebook 2011年备付所得税所占公司营收的比例为41%,高于上年的40%。

Facebook 2010年备付所得税为4.02亿美元,高于上年的2500万美元。Facebook 2010年备付所得税所占公司营收的比例为40%,高于上年的10%。

净利润

Facebook 2011年净利润为10.0亿美元,较上年同期的6.06亿美元增长65%;Facebook 2011年每股摊薄收益为0.46美元,高于上年的0.28美元。

Facebook 2010年净利润为6.06亿美元,较上年同期的2.29亿美元增长165%;Facebook 2010年每股摊薄收益为0.28美元,高于上年的0.10美元。

股权结构

Facebook股权结构

Facebook股权结构

招股书显示,Facebook CEO马克·扎克伯格持有56.9%的股份,联合创始人达斯汀·莫斯科维茨持股7.6%,Peter Thiel持股2.5%;机构股东中,Accel Partners持股11.4%成为最大赢家,其次是和DST的5.5%。

扎克伯格持有533,801,850股B类普通股,B类股权比例是28.4%,持有IPO前28.2%投票权。其中,包含(1)扎克伯格持有的407,265股B类普通股;(2)扎克伯格本人、扎克伯格2008年金信托人2008年3月13日持有的3,642,323股B类普通股;(3)扎克伯格本人、扎克伯格2008年金信托人截至2006年7月7日持有的 409,752,262股B类普通股;(4)2011年12月31日的60天内可行使的 120,000,000股B类普通股选择权。

在Windows 7 X64位调试运行Visual C + + 6.0

VC6不能正常退出 VC6在64位Win

VC6在64位Windows7下调试的时候,再结束调试,程序无法退出。
问题描述:当我击F5开始一个项目的调试时,程序在我设置的断点处停止,这时我按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调试时产生的进程图标。该进程不能被结束,即使我使用任务管理器,也不可以。这时如果我再次按下F5,并按下Shift+F5后,任务栏上会留下两个这样的图标,这两个进程都可以在任务管理器上看到,不占CPU资源,但占用一定的内存。我想结束该进程的唯一的办法是(在任务栏上去掉该图标):关闭VC6,并重新开启.
一般的解决方法:不使用"结束调试"这个功能,让程序正常结束(就是放个可以退出的菜单或者按钮, 而不是使用Shift+F5的退出)。
终极解决方法:检查文件DM.dll版本,DM.dll在程序安装目录的“Common/MSDev98/Bin”———–正确的版本是6.0.9782.0。
下载TLLOC.DLL版本:

TLLOC.7z (3.18 K, 下载次数:469)

(程序解压后大小为28KB)
将下载的版本替换到程序安装目录“Common/MSDev98/Bin/TLLOC.dll”
这样VC6在windows 7 64位的系统调试时,就可以任意退出了。

 

原文地址:http://bbs.mafuyun.com/showtopic-2051.aspx