"game" via 柠檬杀手 in Google Reader
|
|
Posted: 28 Mar 2011 11:28 PM PDT 原文地址:洛克菲勒给儿子的信:热爱你的工作作者:木雨林枫 亲爱的约翰: 我认为,工作是一项特权,它带来比维持生活更多的事物。工作是所有生意的基础,所有繁荣的来源,也是天才的塑造者。工作使年轻人奋发有为,比他的父母做得更多,不管他们多么有钱。工作以最卑微的储蓄表示出来,并奠定幸福的基础。工作是增添生命味道的食盐。但人们必须先爱它,工作才能给予最大的恩惠、获致最大的结果。 我初进商界时,时常听说,一个人想爬到高峰需要很多牺牲。然而,岁月流逝,我开始了解到很多正爬向高峰的人,并不是在“付出代价”。他们努力工作是因为他们真正地喜爱工作。任何行业中往上爬的人都是完全投入正在做的事情,且专心致志。衷心喜爱从事的工作,自然也就成功了。 热爱工作是一种信念。怀着这个信念,我们能把绝望的大山凿成一块希望的磐石。一位伟大的画家说得好:“痛苦终将过去,但是美丽永存。” 但有些人显然不够聪明,他们有野心,却对工作过分挑剔,一直在寻找“完美的”雇主或工作。事实是,雇主需要准时工作、诚实而努力的雇员,他只将加薪与升迁的机会留给那些格外努力、格外忠心、格外热心、花更多的时间做事的雇员,因为他在经营生意,而不是在做慈善事业,他需要的是那些更有价值的人。 不管一个人的野心有多么大,他至少要先起步,才能到达高峰。一旦起步,继续前进就不太困难了。工作越是困难或不愉快,越要立刻去做。如果他等的时间越久,就变得越困难、可怕,这有点像打枪一样,你瞄的时间越长,击中的机会就越渺茫。 我永远也忘不了我的第一份工作———簿记员的经历,那时我虽然每天天刚蒙蒙亮就得去上班,而办公室里点着的鲸油灯又很昏暗,但那份工作从未让我感到枯燥乏味,反而很令我着迷和喜悦,连办公室里的一切繁文缛节都不能让我对它失去热心。而结果是雇主总在不断地为我加薪。 收入只是你工作的副产品,做好你该做的事,出色完成你该做的事,理想的薪金必然会来。而更为重要的是,我们劳苦的最高报酬,不在于我们所获得的,而在于我们会因此成为什么。那些头脑活跃的人拼命劳作决不是只为了赚钱,使他们工作热情得以持续下去的东西要比只知敛财的欲望更为高尚———他们是在从事一项迷人的事业。 老实说,我是一个野心家,从小我就想成为巨富。对我来说,我受雇的休伊特·塔特尔公司是一个锻炼我的能力、让我一试身手的好地方。它代理各种商品销售,拥有一座铁矿,还经营着两项让它赖以生存的技术,那就是给美国经济带来革命性变化的铁路与电报。它把我带进了妙趣横生、广阔绚烂的商业世界,让我学会了尊重数字与事实,让我看到了运输业的威力,更培养了我作为商人应具备的能力与素养。所有的这些都在我以后的经商中发挥了极大效能。我可以说,没有在休伊特·塔特尔公司的历练,在事业上我或许要走很多弯路。 现在,每当想起休伊特·塔特尔公司,想起我当年的老雇主休伊特和塔特尔两位先生时,我的内心就不禁涌起感恩之情,那段工作生涯是我一生奋斗的开端,为我打下了奋起的基础,我永远对那三年半的经历感激不尽。 所以,我从未像有些人那样抱怨他的雇主,说:“我们只不过是奴隶,我们被雇主压在尘土上,他们却高高在上,在他们美丽的别墅里享乐。他们的保险柜里装满了黄金,他们所拥有的每一块钱,都是压榨我们这些诚实工人得来的。”我不知道这些抱怨的人是否想过:是谁给了你就业的机会?是谁给了你建设家庭的可能?是谁让你得到了发展自己的可能?如果你已经意识到了别人对你的压榨,那你为什么不结束压榨,一走了之? 工作是一种态度,它决定了我们快乐与否。同样都是石匠,同样在雕塑石像,如果你问他们:“你在这里做什么?”他们中的一个人可能就会说:“你看到了嘛,我正在凿石头,凿完这个我就可以回家了。”这种人永远视工作为惩罚,在他嘴里最常吐出的一个字就是“累”。 另一个人可能会说:“你看到了嘛,我正在做雕像。这是一份很辛苦的工作,但是酬劳很高。毕竟我有太太和四个孩子,他们需要温饱。”这种人永远视工作为负担,在他嘴里经常吐出的一句话就是“养家糊口”。 第三个人可能会放下锤子,骄傲地指着石雕说:“你看到了嘛,我正在做一件艺术品。”这种人永远以工作为荣,工作为乐,在他嘴里最常吐出的一句话是“很有意思”。 天堂与地狱都由自己建造。如果你赋予工作意义,不论工作大小,你都会感到快乐,自我设定的成绩不论高低,都会使人对工作产生乐趣。如果你不喜欢做的话,任何简单的事都会变得困难、无趣,当你叫喊着这个工作很累人时,即使你不卖力气,你也会感到筋疲力竭,反之就大不相同。事情就是这样。
约翰,如果你视工作为一种乐趣,人生就是天堂;如果你视工作为一种义务,人生就是地狱。 |
|
Posted: 28 Mar 2011 11:28 PM PDT 原文地址:洛克菲勒给儿子的信:现在就去做作者:木雨林枫 人生就是一场伟大的战役 格言:机会是靠机会得来的。 坏习惯能摆布我们,左右成败。它很容易养成,但却很难伺候。 成功地将一个好主意付诸实践,比在家空想出一千个好主意要有价值得多。 (To conquer you have need to do,to do again,ever to do!And your safety is insured。) December24,1897 亲爱的约翰: 聪明人说的话总能让我记得很牢。有位聪明人说得好,“教育涵盖了许多方面,但是他本身不教你任何一面。”这位聪明人向我们展示了一条真理:如果你不采取行动,世界上最实用、最美丽、最可行的哲学也无法行得通。 我一直相信,机会是靠机会得来的。再好的构想都有缺陷,即使是很普通的计划,但如果确实执行并且继续发展,都会比半途而废的好计划要好得多,因为前者会贯彻始终,后者却前功尽弃。所以我说,成功没有秘诀,要在人生中取得正面结果,有过人的聪明智慧、特别的才艺当然好,没有也无可厚非,只要肯积极行动,你就会越来越接近成功。 遗憾的是,很多人并没有记取这个最大的教训,结果将自己沦为了平庸之辈。看看那些庸庸碌碌的普通人,你就会发现,他们都有在被动的活着,他们说的远比做的多,甚至只说不做。但他们几乎个个都是找借口的行家,他们会找各种借口来拖延,直到最后他们证明这件事不应该、没有能力去做或已经来不及了为止。 与这类人相比,我似乎聪明、狡猾了许多。盖茨先生吹捧我是个主动做事、自动自发的行动者。我很乐意这样的吹捧,因为我没有辜负它。积极行动是我身上的另一个标识,我从不喜欢纸上谈兵或流于空谈。因为我知道,没有行动就没有结果,世界上没有哪一件东西不是由一个个想法付诸实施所得来的。人只要活着,就必须考虑行动。 很多人都承认,没有智慧的基础的知识是没用的,但更令人沮丧的是即使空有知识和智慧,如果没有行动,一切仍属空谈。行动与充分准备其实可视为物体的两面。人生必须适可而止。做太多的准备却迟迟不去行动,最后只会徒然浪费时间。换句话说,事事必须有节制,我们不能落入不断演练、计划的圈套,而必须承认现实:不论计划有多周详,我们仍然不可能准确预测最后的解决方案。 我当然不否认计划非常重要,计划是获得有利结果的第一步,但计划并非行动,也无法代替行动。就如同打高尔夫球一样,如果没有打过第一洞,便无法到达第二洞。行动解决一切。没有行动,什么都不会发生。我们无论如何也买不到万无一失的保险,但我们可以做到的是下定决心去实行我们的计划。 缺乏行动的人,都有一个坏习惯:喜欢维持现状,拒绝改变。我认为这是一种深具欺骗和自我毁灭效果的坏习惯,因为一切都在变化之中,正如人会生死一样,没有不变的事物。但因内心的恐惧——对未知的恐惧,很多人抗拒改变,哪怕现状多么不令他满意,他都不敢向前跨出一步。看看那些本该事业有成,却一事无成的人,你就知道不同情他们是件很难的事。 是的,每个人在决定一件大事时,心里都会或多或少有些担心、恐惧,都会面对到底要不要做的困扰。但“行动派”会用决心燃起心灵的火花,想出各种办法来完成他们地心愿,更有勇气克服种种困难。 很多缺乏行动的人大都很天真,喜欢坐等事情自然发生。他们天真地以为,别人会关心他们的事。事实上,除了自己以外,别人对他们不大感兴趣,人们只对自己的事情感兴趣。例如一桩生意,我们获利比重越高,就要越主动采取行动,因为成败与别人的关系不大,他们不会在乎的。这时候,我们最好把它推一把,如果我们怠惰、退缩,坐等别人采取主动来推动事情的话,结果必定会令人失望。 一个人只有自己依靠自己,他才不会让自己失望,并能增加自己控制命运的机会。聪明人只会去促使事情发生。 人生中最令人感到挫折的,莫过于想做的事太多,结果不但没有足够的时间去做,反而想到每件事的步骤繁多,而被做不到的情绪所震慑,以致一事无成。我们必须承认,时间有限,任何人都无法做完所有的事情。聪明人知道,并非所有的行动都会产生好的结果,只有明智的行动才能带来有意义的结果,所以聪明人只会汲取做了以后获得正面效果的工作,做与完成最大目标有关的工作,而且专心致志,所以聪明人总能做出最有价值的贡献,并捞到很多好处。 要吃掉大象需要一口一口的吃,做事也是一样,想完成所有的事情,只会让机会溜掉。我的座右铭是:洛克菲勒对紧急事件采取不公平待遇。 很多人都是自己使自己变成一个被动者的,他们想等到所有的条件都十全十美,也就是时机对了以后才行动。人生随时都是机会,但是几乎没有十全十美的。那些被动的人平庸一辈子,恰恰是因为他们一定要等到每一件事情都百分之百的有利,万无一失以后才去做。这是傻瓜的做法。我们必须向生命妥协相信手上的正是目前需要的机会,才会将自己挡在陷入行动前永远痴痴等待的泥沼之外。 我们追求完美,但是人类的事情没有一件绝对完美,只有接近完美。等到所有条件都完美以后才去做,只能永远等下去,并将机会拱手让给他人。那些要等到所有事情都已经准备妥当才出发的人,将永远也离不开家。要想变成“我现在就去做”的那种人,就是停止一切白日梦,时时想到现在,从现在就开始做。诸如“明天”、“下礼拜”、“将来”之类的句子,跟“永远不可能做到”意义相同。 每个人都有失去自信,怀疑自己能力的时候,尤其是在逆境中的时候。但真正懂得行动艺术的人,却可以用坚强的毅力克服它,会告诉自己每个人都有失败的时候,有失败得很惨的时候,会告诉自己不论事前做了多少准备、思考多久,真正着手做的时候,都有难免会犯错误。然而,被动的人,并不把失败视为学习和成长的机会,却总在告诫自己:或许我真的不行了,以致失去了积极参与未来的行动。 很多人都相信心想事成,但我却将其视为慌言。好主意一毛钱能买一打,最初的想法只是一连串行动的起步,接下来需要第二阶段的准备、计划和第三阶段的行动。在我们这个世界上从来不缺少有想法有主意的人,但懂得成功地将一个好主意付诸实现比在家空想出一千个好主意要有价值得多的人却很少。 人们用来判断你的能力的真正基础,不是你脑子里装了多少东西,而是你的行动。人们都信任脚踏实地的人,他们都会想:这个人敢说敢做,一定知道怎么做最好。我还没听过有人因为没有打扰别人、没有采取行动或要等别人下令才做事而受到赞扬的。那些在工商界、政府、军队中的领袖,都是很能干又肯干的人、百分之百主动的人。那些站在场外袖手旁观的人永远当不成领导人物。 不论是自动自发者还是被动的人,都是习惯使然。习惯有如绳索,我们每天纺织一根绳索,最后它粗大得无法折断。习惯的绳索不是带领我们到高峰就是引领我们到低谷,这主得看好习惯或坏习惯了。坏习惯能摆布我们、左右成败,它很容易养成,但却很难伺候。好习惯很难养成,但很容易维持下去。 要有现在就做的习惯,最重要的是要有积极主动的精神,戒除精神散漫的习惯,要决心做个主动的人,要勇于做事,不要等到万事俱备以后才去做,永远没有绝对完美的事。培养行动的习惯,不需要特殊的聪明智慧或专门的技巧,只需要努力耕耘,让好习惯在生活中开花结果即可。 儿子,人生就是一场伟大的战役,为了胜利,你需要行动,再行动,永远行动!这样,你的安全就能得到保障。 祝圣诞节快乐!我想没有比在此时送给你这封信,更好的圣诞礼物了。 爱你的父亲 |
|
当2000元奖金也值得炫富 游戏行业“发奖”体系是否应该反省 Posted: 28 Mar 2011 02:11 AM PDT 某游戏宣布将给与百名玩家万元奖励,后经网友指出获奖名单实为某大学录取名名单;某游戏宣布挑战最强BOSS成功者,将可以直接获得一幢别墅活动结束后不了了之;某游戏也学别人冲级送Q币,后玩家指出要想获得10QB起码先画200元;某游戏提示开测期间前100级玩家可以集体出游海南,后拍摄照片被同行指出皆为公司工作人员……一旦所有的“奖品”都成为厂商玩弄玩家的武器的时候,整个行业最基本的诚信也不得不得到了质疑。
日前一位名叫“穿着马甲来炫富”的玩家在公会论坛上炫耀自己的奖金,不过这次与以前动作万元甚至汽车手机的奖品不同,他所炫耀的居然是一张面额仅为2000元的汇款单。虽然也依然有玩家对这个事情表示了质疑,但是我们不得不反省为什么厂商和消费者之间居然有了如此大的隔阂?
漠视责任 忽悠玩家 在现实生活中我们市场会碰到商城送卷或者打折的促销手段。从以前的无物可抵到现在的贴钱购买,普通消费者已经对这种伎俩越来越不感冒。同样,正如前言如此多的负面事件,也让玩家对于现在厂商做的诸多活动心声质疑——只不过最后一句“最终解释权归XX所有”让玩家不得不吃一个哑巴亏。
玩家利益侵害 无处可申 事实上现在的厂商也越来越聪明,为了避免玩家对于游戏公正性的怀疑。他们越来越多采用可见的游戏规则来让玩家获奖,比如升级、打怪甚至简单的进入游戏签到。但,我们会发现这其中大部分都是需要玩家支付一定代价的,比如在指定时间内达到指定级别就可能需要玩家大量购买“经验符”(可以提升获得经验的比例);比如在角色等级有限的情况下挑战几乎不可能战胜的怪物……这些都将在玩家获得“芝麻”之前需要消耗“西瓜”。尽管如此,我们还是会发现许多玩家最终即使在获奖名单里而很久得不到奖品。虽然对此有许多玩家投诉到315,但作用也微乎其微!
行业需要责任感企业
正如同前文所描述的那名玩家,虽然贴出的仅仅是2000元的奖金,但也足以见得对应企业《聚仙》的GAMEBAR那样的责任。当不再把奖品作为“炒作”的资本,而是真正低下身认真倾听玩家意见为“游戏玩家自己的游戏”找BUG的公司。放能长久,而整个行业其实缺的不再是噱头,而是脚踏实地以玩家利益为重的“真心企业”!
|
|
Posted: 24 Mar 2011 11:20 PM PDT
与台湾地区魔兽世界同属一家公司? 之前有媒体报道:日前,一则《魔界2》签约台湾智冠科技子公司新干线的消息牵动了不少人的神经。而今日,《魔界2》项目经理透露,其代理费为8位数,单位为美金!根据报道,台湾地区的版本将在2011年上线,眼看大陆如火如荼看来宣传期临近,台湾地区也在使用管用的营销伎俩进行宣传了。同样大陆这边也曾在3月爆出消息,将尽快开放全球公测,而台湾地区很有可能第一批全球上线的版本。届时,不知道会不会上演多国版本的 全“球”争霸…… |
|
Posted: 28 Mar 2011 12:40 AM PDT |
|
Posted: 27 Mar 2011 08:47 PM PDT Q1、关于亡灵意志(在受到致命伤或者生命上限降为0之前不能离场)? 解答(孤魂丧斩):任何直接杀死他或者将它移除游戏的技能都无效,只能通过攻击将其杀死。
Q2、随机、随机目标? 解答(Jibo):比如符合条件的目标有5个,然后依次给他们编号,一般扔一个六面骰子,1~5扔到就是哪个,然后扔到6重掷,依此类推。
Q3、远程伤害、远程攻击的区别? 解答:远程伤害是一种异能,即在攻击时不会受到目标反击;远程攻击是一种攻击方式,攻击时会受到反击。
Q4、回合开始,一个回合开始医疗2的盟军即将重置,对手场上有一张麦凯尔。那么是先进行医疗,还是被麦凯尔打死? 解答(dafu):被买凯尔打死,但是医疗效果会有;
Q5、对手场上一个SS女人,没有特殊能力,我也放SS女人进场,移出对手SS女人。我还可以再用一次移出吗? 解答(lihao):不能了,SS女人就进场时候一次;
Q6、如果对手的女人有其他能力X,我女人进场移出他女人,有能力X吗? 解答(dafu):没能力,前1个魅魔具有的能力并不改变其印制能力;
Q7、海象人的风筝摸牌时,牌库不足十张,怎么办? 解答(dafu):少于10张就摸不了了;
|
|
Posted: 27 Mar 2011 06:53 PM PDT 由于最近入了WOWTCG的坑,所以最近经常和朋友进行闲聊,其中自然也不会少了开包开盒的话题。
众所周知,每个购买补充包或补充盒的朋友,都会关注自己的包盒内是不是会开出1号、2号、3号刮。而不少不玩WOWTCG的玩家也会热忠于购买补包或补盒,要知道现在一只坐骑都是2000+,更不要说是传说中的幽灵虎。但事实真是这样吗?具个人了解,很多店家都是自行拆包,在开出1号刮后,再将其他未开封的包卖给玩家。这样一来,几乎没有人可以在所谓的补包或补盒中开出1号刮。
所以,也请各位朋友注意了……
|
|
Posted: 27 Mar 2011 08:59 AM PDT 近日,香港战旗会发布最新消息:即《权力的游戏》之后,将在三月推出LCG(成长式卡牌)《战锤:入侵》(Warhammer:Invasion)的中文版,而且将以中文版为基础举办相关比赛。
《战锤:入侵》是一款以战锤旧世界各种族之间的战争为背景的双人对战卡牌游戏,而此次与核心包同步发售的战斗补丁包《毁灭的预兆》和《混沌之月》同步发行,之后还会发布《腐蚀循环》与《死敌循环》的补充包。这下战锤系列的FANS又将行动起来了。
PS:本人已订购了核心包与第一战斗补充包,并会在第一时间将游戏体验反馈公布。 |
|
Posted: 27 Mar 2011 07:25 AM PDT FFG于2月9日通过官方网站正式宣布不再开发暴雪旗下《魔兽》主题桌游,并表达了对暴雪和玩家的感激之情。这是即UDE之后,暴雪第二次取消了与其他工作室的合作,之前暴雪官方取消了与UDE的《魔兽TCG》合作项目。现《魔兽》题材的游戏统一交由寒武纪娱乐进行开发。
|
|
Posted: 22 Mar 2011 09:18 AM PDT |
|
Posted: 28 Mar 2011 06:38 PM PDT good & fast won’t be cheap |
|
Posted: 28 Mar 2011 10:59 AM PDT |
|
Posted: 26 Mar 2011 06:33 PM PDT 原文地址:《弟子规》全文及解读作者:蓝彬 弟子规原名〈训蒙文〉,为清朝康熙年间秀才李毓秀所作。其内容采用《论语》学而篇第六条:“弟子入则孝,出则弟,谨而信,泛爱众,而亲仁,行有余力,则以学文。”的文义以三字一句,两句一韵编纂而成,分为五个部份加以演述;具体列举出为人子弟在家、出外、待人接物、求学应有的礼仪与规范,特别讲求家庭教育与生活教育。后经清朝贾存仁修订改编,并改名为〈弟子规〉,是启蒙养正,教育子弟敦伦尽份防邪存诚,养成忠厚家风的最佳读物。 弟子规 圣人训 首孝悌 次谨信 泛爱众 而亲仁 有余力 则学文 易解:弟子规这本书,是依据至圣先师孔子的教诲而编成的生活规范。首先在日常生活中,要做到孝顺父母,友爱兄弟姊妹。其次在一切日常生活言语行为中要小心谨慎,要讲信用。和大众相处时要平等博爱,并且亲近有仁德的人,向他学习,这些都是很重要非做不可的事,如果做了之后,还有多余的时间精力,就应该好好的学习六艺等其他有益的学问。 <入则孝> 父母呼 应勿缓 父母命 行勿懒 父母教 须敬听 父母责 须顺承 冬则温 夏则凊 晨则省 昏则定 出必告 反必面 居有常 业无变 事虽小 勿擅为 苟擅为 子道亏 物虽小 勿私藏 苟私藏 亲心伤 亲所好 力为具 亲所恶 谨为去 身有伤 贻亲忧 德有伤 贻亲羞 亲爱我 孝何难 亲憎我 孝方贤 亲有过 谏使更 怡吾色 柔吾声 谏不入 悦复谏 号泣随 挞无怨 解读: 父母呼唤,应及时回答,不要慢吞吞的很久才应答,父母有事交代,要立刻动身去做,不可拖延或推辞偷懒。父母教导我们做人处事的道理,是为了我们好,应该恭敬的聆听。做错了事,父母责备教诫时,应当虚心接受,不可强词夺理,使父母亲生气、伤心。(君子闻过则喜,小人闻过则怒。) 侍奉父母要用心体贴,二十四孝的黄香(香九龄),为了让父亲安心睡眠,夏天睡前会帮父亲把床铺扇凉,冬天寒冷时会为父亲温暖被窝,实在值得我们学习。早晨起床之后,应该先探望父母,并向父母请安问好。下午回家之后,要将今天在外的情形告诉父母,向父母报平安,使老人家放心。外出离家时,须告诉父母要到那里去,回家后还要当面禀报父母回来了,让父母安心。平时起居作息,要保持正常有规律,做事有常规,不要任意改变,以免父母忧虑。 纵然是小事,也不要任性,擅自作主,而不向父母禀告。如果任性而为,容易出错,就有损为人子女的本分,因此让父母担心,是不孝的行为。公物虽小,也不可以私自收藏占为己有。如果私藏,品德就有缺失,父母亲知道了一定很伤心。 父母亲所喜好的东西,应该尽力去准备,父母所厌恶的事物,要小心谨慎的去除(包含自己的坏习惯)。要爱护自己的身体,不要使身体轻易受到伤害,让父母亲忧虑。(曾子曰:“身体发肤受之父母,不敢毁伤”)。要注重自己的品德修养,不可以做出伤风败德的事,使父母亲蒙受耻辱。当父母亲喜爱我们的时候,孝顺是很容易的事;当父母亲不喜欢我们,或者管教过于严厉的时候,我们一样孝顺,而且还能够自己反省检点,体会父母的心意,努力改过并且做得更好,这种孝顺的行为最是难能可贵。 父母亲有过错的时候,应小心劝导改过向善,劝导时态度要诚恳,声音必须柔和,并且和颜悦色,(子夏问孝。子曰:“色难。”)如果父母不听规劝,要耐心等待,一有适当时机,例如父母情绪好转或是高兴的时候,再继续劝导;如果父母仍然不接受,甚至生气,此时我们虽难过得痛哭流涕,也要恳求父母改过,纵然遭遇到责打,也无怨无悔,以免陷父母于不义,使父母一错再错,铸成大错。
〈出则弟〉 兄道友 弟道恭 兄弟睦 孝在中 财物轻 怨何生 言语忍 忿自泯 或饮食 或坐走 长者先 幼者后 长呼人 即代叫 人不在 己即到 称尊长 勿呼名 对尊长 勿见能 路遇长 疾趋揖 长无言 退恭立 骑下马 乘下车 过犹待 百步馀 长者立 幼勿坐 长者坐 命乃坐 尊长前 声要低 低不闻 却非宜 近必趋 退必迟 问起对 视勿移 事诸父 如事父 事诸兄 如事兄 解读: 出则弟,说的是家中兄弟相处之道,以及如何和长辈 在一起的规矩。在这些规范中,训练小孩谦恭有礼,懂得尊重别人,自然容易融入团体,为大家所接纳。当哥哥姐姐的要能友爱弟妹,做弟妹的应做到 恭敬兄姐,这样兄弟姐妹就能和睦而减少冲突,父母心中就快乐。在这和睦当中就存在孝道。 把身外所用的钱财物品看轻点,少计较,兄弟之间就不会产生怨恨 ;讲话时不要太冲动,伤感情的话要能忍住不说,那么不必要的冲突怨恨就会消失无踪。 日常饮食起居中,有人认为孩子还小,和长辈相处在一起,不要太过要求他们,长大自然就适应了,甚至对孩子宠爱有加,把好吃好用的先给小孩享用,以致小孩认为这样是理所当然的,不知道要礼让长辈,因而误导孩子养成坏的习惯。而《弟子规》却指导我们,不要因为大人的宠爱而忽略了应从小培养礼让的美德,不管是吃东西或喝饮料,要请长辈先用;如果和长辈坐在一起,要请长辈先坐;如果和长辈走在一起,应让长辈先走。 长辈呼叫人时,自己听见了,要替长辈去传唤,如果所叫的人不在时,自己应当回来报告长辈,更能进一步请问长辈,有没有需要帮忙的事情。 称呼长辈时,不可以直呼长辈的名字,那是不礼貌的行为;在长辈面前,不要表现自己很有才能,藐视长辈。 走路时遇见长辈,要赶紧走上前去行礼问候,如果长辈没和我们说话时,就先退在一旁恭恭敬敬的站着,让长辈先走过去。如果自己是骑马的,遇到长辈就应该下马,如果乘坐车辆就应该下车,让长辈先过去,等待大约离我们百步的距离以后,自己才上马或上车。 如果长辈还站着,年幼的我们不应先坐下来,如果长辈坐着,允许我们坐下时才可以坐下。在长辈面前讲话,声音要低,但是回答的声音,低到听不清楚,那也不适当,要和颜悦色,声音要柔和清楚才好。进见长辈时走路要快点,动作表现得很礼节,等到告退时,要慢慢退出。长辈问话时,要站起回答,眼神注视长辈,不要左右移动。 对待叔叔伯伯,要像对待自己的父亲一样恭敬,对待同族兄长,要像对待自己的胞兄一样友爱。 〈谨〉 朝起早 夜眠迟 老易至 惜此时 晨必盥 兼漱口 便溺回 辄净手 冠必正 纽必结 袜与履 俱紧切 置冠服 有定位 勿乱顿 致污秽 衣贵洁 不贵华 上循分 下称家 对饮食 勿拣择 食适可 勿过则 年方少 勿饮酒 饮酒醉 最为丑 步从容 立端正 揖深圆 拜恭敬 勿践阈 勿跛倚 勿箕踞 勿摇髀 缓揭帘 勿有声 宽转弯 勿触棱 执虚器 如执盈 入虚室 如有人 事勿忙 忙多错 勿畏难 勿轻略 斗闹场 绝勿近 邪僻事 绝勿问 将入门 问孰存 将上堂 声必扬 人问谁 对以名 吾与我 不分明 用人物 须明求 倘不问 即为偷 借人物 及时还 后有急 借不难 解读: 为人子,早上要尽量早起,晚上要晚点睡觉,因为人生的岁月很有限,光阴容易消逝,少年人一转眼就是老年人了,所以我们要珍惜现在宝贵的时光。 每天早上起床必须先洗脸,然后刷牙濑口,解完大小便以后把手洗干净,这样才是讲究卫生的好孩子 。 出门帽子要戴端正,穿衣服要把纽扣纽好;袜子和鞋子都要穿得贴切,鞋带要系紧 ,这样全身仪容才整齐。脱下来的帽子和衣服应当放置在固定的位置,不要随手乱丢乱放以免弄皱弄脏。穿衣服注重的是整齐清洁,不在衣服的昂贵华丽,而且要依照自己的身份穿着 ,也要配合家庭的经济状况。 对于食物不要挑剔偏食,而且要吃适当的份量,不要吃过量。我们年纪还小尚未成年 ,更不该尝试喝酒,因为喝醉了丑态百出,最容易表现出不当的言行。 走路时脚步要从容不迫,站立的姿势要端正。注意行礼时要把身子深深地躬下 ,跪拜时要恭敬尊重。 进门时不要踩到门槛,站立时要避免身子歪曲斜倚,坐着时不要双脚 展开簸箕,或者是虎琚的样子,也不要抖脚或摇臀,这样才能表现优雅怡人的姿态。 进门的时候慢慢的揭开帘子,尽量不发出声响,走路转弯时与棱角要远一点 ,保持较宽的距离,才不会碰到棱角伤了身体;拿空的器具要像拿盛满的一样小心,进到没人的屋子里,要像进到有人的屋子里一样。 做事不要匆匆忙忙,匆忙就容易出错,遇到该办的事情不要怕困难,而犹豫 退缩,也不要轻率随便而敷衍了事。容易发生打斗的场所,我们不要靠近逗留;对于邪恶怪僻的事情,不必好奇的去追问。 将要入门之前先问一下:“有人在吗”?将要走进厅堂时,先放大音量要让厅堂里的人知道 ;假使有人请问:“你是谁”,回答时要说出自己的名字,如果只说“吾”或是“我”,对方就听不清楚到底是谁。我们要使用别人的物品,必须事前对人讲清楚,如果没有得到允许就拿来用 ,那就相当于偷窃的行为。借用他人的物品用完了要立刻归还,以后遇到急用再向人借时,就不会有太多的困难。这些平常语言行为的要则,让我们即知即行,掌握自己 ,使处事更有效率,待人更为和谐,创造一个身心调和的环境。如果我们一时做不到也不必气馁,只要能清楚的辨别方向,认同圣贤的教化,肯用功夫慢慢的琢磨,就像 璞石也能慢慢地呈现出美玉来。 〈信〉 凡出言 信为先 诈与妄 奚可焉 话说多 不如少 惟其是 勿佞巧 奸巧语 秽污词 市井气 切戒之 见未真 勿轻言 知未的 勿轻传 事非宜 勿轻诺 茍轻诺 进退错 凡道字 重且舒 勿急疾 勿模糊 彼说长 此说短 不关己 莫闲管 见人善 即思齐 纵去远 以渐跻 见人恶 即内省 有则改 无加警 唯德学 唯才艺 不如人 当自砺 若衣服 若饮食 不如人 勿生戚 闻过怒 闻誉乐 损友来 益友却 闻誉恐 闻过欣 直谅士 渐相亲 无心非 名为错 有心非 名为恶 过能改 归于无 倘掩饰 增一辜 解读: 凡是开口说话,首先要讲究信用,欺诈不实的言语,在社会上可以永远行得通吗?话说得多不如说的少 ,凡事实实在在,不要讲些不合实际的花言巧语,另外,奸邪巧辩的言语,脏不雅的词句及无赖之徒通俗的口气,都要切实戒除掉。 还未看到事情的真相 ,不轻易发表意见,对于事情了解的不够清楚,不轻易传播出去,觉得事情不恰当,不要轻易答应,如果轻易答应就会使自己进退两难。谈吐说话要稳重而且舒畅 ,不要说得太快太急,或者说得字句模糊不清,让人听得不清楚或会错意。遇到别人谈论别人的是非好坏时,如果与已无关就不要多管闲事。 看见他人的优点行为 ,心中就升起向他看齐的好念头,虽然目前还差得很远,只要肯努力就能渐渐赶上。不论大善或小善,都要有思齐的信心和励行的勇气,小善切戒轻呼不 做,而行大善的机会来了也要及时把握,尽心尽力勉强而之。 看见他人犯了罪恶的时候 ,心里先反省自己,如果也犯同样的过错,就立刻改掉,如果没有就更加警觉不犯同样的过错。 当道德学问和才艺不如他人时 ,应该自我督促努力赶上,至于穿的衣服和吃的饮食不如他人时,可以不用担心、郁闷。 听见 别人说我的过错就生气,称赞我就高兴,这样不好的朋友就会越来越多,真诚有益的朋友就不敢和我们在一起。如果听到别人称赞我先自我反省,生怕自己没有这些优点 ,只是空有虚名;当听到别人批评我的过错时,心里却欢喜接受,那么正直诚实的人就越喜欢和我们亲近。 不是有心故意做错的 ,称为过错;若是明知故犯的,便是罪恶。不小心犯了过错,能勇于改正就会越改越少,渐归于无过,如果故意掩盖过错,那反而又增加一项掩饰的罪过了。 〈泛爱众〉 凡是人 皆须爱 天同覆 地同载 行高者 名自高 人所重 非貌高 才大者 望自大 人所服 非言大 己有能 勿自私 人所能 勿轻訾 勿谄富 勿骄贫 勿厌故 勿喜新 人不闲 勿事搅 人不安 勿话扰 人有短 切莫揭 人有私 切莫说 道人善 即是善 人知之 愈思勉 扬人恶 既是恶 疾之甚 祸且作 善相劝 德皆建 过不规 道两亏 凡取与 贵分晓 与宜多 取宜少 将加人 先问己 己不欲 即速已 恩欲报 怨欲忘 报怨短 报恩长 待婢仆 身贵端 虽贵端 慈而宽 势服人 心不然 理服人 方无言 解读: 对于大众有关怀爱护的心,如同苍天与大地,绝对没有私心,不论好人、坏人、聪明、愚笨、宝贵、贫贱、种族国界都一样给予保护和承载,纯是一片仁慈之心,不为名利毫无虚假 。正是“天同覆,地同载”的大同境界。 泛爱众的人人君子,他的心中有人我一体的观念,所以肯放下滔滔私心,关怀大众 ,我们若处处学着仁厚待人,在德行上改过修养,守住人的品格,并深入学习各项才艺,相信也能做出一份番利益大众的事业。 品行高尚的人,名声自然高,人们所敬重的是德行,并不是论外貌是否出众 ;才能大的人声望自然大,人们所信服的是真才,并不是只会发表言论。 自己有能力做的事情,不要自私保守;看到别人有才华,应该多加赞美肯定 ,不要因为嫉妒而贬低别人。 对富有的人态度不谄媚求荣;对贫穷的人不表现出骄傲自大的样子,不厌恶 不嫌弃亲戚老友,也不一味喜爱新人新朋友。至圣先师孔子教导我们,贫穷的人除了不谄媚迎合外,能够在道德上自得其乐更好,富有的人不但不以骄傲的心态妨碍他人 ,更要爱好礼节,恭敬大众。贫和富只是生活方式不同而已,都要学习礼节充实各项才能,发挥人我一体的仁心,才能营造一个“贫而乐,富而好礼”的幸福社会。 他人有事,忙得没有空暇,就不要找事搅乱他;对方身心很不安定,我们就不 再用闲言碎语干扰他。别人的短处绝对不要揭露出来,别人有秘密不想让人知道,我们就不要说出来。 赞美别人的善行,就等于是自己行善,因为对方知道了,就会更加勉励行善 ;宣扬别人的过恶,就等于自己作恶,如果过分的憎恶,就会招来灾祸。行善能相互劝勉,彼此都能建立良好的德行,有了过错而不相互规劝,相方都会在品行上留下缺陷 。 和人有财物上的往来,应当分辨清楚不可含糊。或者,财物只与他人应该慷慨多 布施;取用别人的财物就应少取一些;有事要托人做或有话要和人说,先问一问自己是不是喜欢,如果自己不喜欢就应立刻停止。 他人对我有恩惠,应时时想回报他;不小心和人结了怨仇,应求他人谅解,及早忘掉仇恨 ,报怨之心停留的时间越短越好,但是报答恩情的心意却要长存不忘,对待家中的待婢和仆人,本身行为要注重端正庄重不可轻浮随便,若能进一步做到仁慈、宽厚,那就更完美了 。权势可以获使人服从,虽然表面上不敢反抗,心中却不以为然。唯有以道理感化对方,才能让人心悦诚服而没有怨言。 虽然现在也很少有人用婢仆,但是上下尊卑的关系仍然处处可见,让我们一起来学习仁德君子的泛爱众 ,多为大众着想,共同营造一个相互关怀、相互体谅的温馨社会。 〈余力学文〉 不力行 但学文 长浮华 成何人 但力行 不学文 任己见 昧理真 读书法 有三到 心眼口 信皆要 方读此 勿慕彼 此未终 彼勿起 宽为限 紧用功 工夫到 滞塞通 心有疑 随札记 就人问 求确义 房室清 墙壁净 几案洁 笔砚正 墨磨偏 心不端 字不敬 心先病 列典籍 有定处 读看毕 还原处 虽有急 卷束齐 有缺坏 就补之 非圣书 屏勿视 敝聪明 坏心志 勿自暴 勿自弃 圣与贤 可驯致 解读: 对于孝、弟、谨、信、泛爱众、亲仁这些应该努力实行的本分,却不肯力行,只在学问上研究探索,这样最容易养成虚幻浮华的习性,怎能成为一个真正有用的人呢?相对的 ,如果只重力行,对于学问却不肯研究,就容易执著自己的看法,而无法契合真理,这也不是我们所应有的态度。 今日普遍流行诋毁圣贤的风气,怀疑古人,藐视伦常大道。尤其是基本的孝道 ,近几年来,更被视为隘板落伍,大家虽有心改革社会乱象,也动用大批的人力物力倡导,终因伦常观念被大家忘失太久了,使得社会秩序无法整顿起来。孔子曾指出 :“立志、自立、立仁的君子要广博的研究各种学问,然后用礼节来约束言行,这样一个具有知识和礼节的君子,他的言行就不至于太离谱了。”《弟子规》把礼的内容 具体化,只要循着《弟子规》来实践,兼学各种经典和生活知识,就能拥有高远的智慧和实践的勇气,智勇双全的人,必然不会偏离正道,正道就是直路,很快便能到达目标 。 读书的方法要注重三到,就是心到、眼到、口到。这三到都要实实在在的做到 。读书时正在读这一段,就不要想到别段,这段还未读完读通,不要因为没有兴趣,失去了好奇心,就跳到另一段,而东翻西阅,不肯定下心来,按部就班的读完。读书时要有规范 ,读一本书或一门功课,要有比较宽裕的期限,但是不能因为时间有多余,就等期限快到了才开始读,一急之下反而耽误事情,所以一规化好就要赶紧用功。 遇到滞塞难通的地方,更要专心研究,只要功夫到了,自然就能通达了解,这正是所谓书读千遍 ,其意自现。有疑问的地方,经反复思考,还不能了解的话,就用笔把问题记下来,向有关的师长请教,一定要得到正确的答案才可放过。 书房要整理得简单清洁,四周墙壁保持干净,书桌清洁干净,所用的笔和砚台要摆放端正 ,在砚台上磨墨,如果墨条磨扁了,就是存心不端正,写字若随便不公正,就是心里先有了病,排列经典图书,要安放在固定的地方,读完以后立刻归还原处,即使发生紧急的事也要 先收拾整齐以后才能离开。遇到书本有残缺损坏时,应立刻补好保持完整,你爱书,书爱你,自有一份恭敬在其中,一份恭敬就有一份收获,十分恭敬就有十分收获。 如果不是传输圣贤道理的书籍,一概摒除一旁不要理它,因为书里面不正当的事理会蒙蔽我们 的聪明智慧,会败坏我们纯正的志向。 不要自以为是而狂妄自大,也不要自甘堕落而放弃自己,圣贤的境界的虽高 ,但只要按部就班,循序渐进,人人都可到达。处在蒙昧年幼之时,若采要正正当当的教材,配合优良的环境,来培养学习,就能造就圣贤。《弟子规》所讲的道理,正是圣人的 训诲,从入则孝、出则弟、谨而信、泛爱众,亲仁及余力学文着手,在日常生活中的伦常做起,经家庭扩及到学校、社会,最能孕育出正人君子的品行。所以这本书应该认真的反复读诵 ,深入内心,当成个人反省的镜子至行为的指针。
|
|
Posted: 26 Mar 2011 06:09 AM PDT 有酒宴,亦有茶宴。茶宴随着茶的普遍饮用而出现,距今已有1700年的历史。茶宴最早的记载见于《世说新语·轻诋篇》:“褚太傅初渡江,尝入东,至金昌亭。吴中豪右燕集亭中,褚公虽素有重名于时,造次不相识,别敕左右多与茗汁,少箸粽。”茶宴形式多样,有以茶代酒,花间竹下赏花清饮的(吕温《三月三日茶宴序》);有庆贺新茶初采,品比贡茶,在两州边境举办的品茶歌舞宴(白居易《夜间贾常州、崔湖州茶山境会亭欢宴》);有禅林参禅讲经招待宾客的大型茶宴(径山茶宴、喇嘛寺茶会);有皇帝与重臣共品贡茶的茶宴等……。 茶宴食品与酒宴亦有区别,主要是较清淡的面食与果品,统称茶食。前引《世说》中所提的“粽”即是糯米作的一种茶食,也即是《大金国志》中所提到的茶食——蜜糕。关于茶食的最好记述见日本的《禅林小歌》,书中在介绍源自中国的唐式茶会时写到:“端上水晶包子(葛粉做)、驴肠羹(似驴肠)、水精红羹、鳖羹(状似)、猪羹(形似猪肝)、甫美羹、寸金羹(因金色寸方得名)、白鱼羹(白色、似白鱼)、骨头羹、都芦羹等羹汤类;乳饼(小麦饼、形似乳房)、茶麻饼、馒头、卷饼、温饼等饼类及馄饨、螺结、柳叶面、相皮面、经带面、打面、素面、韭叶面、冷面等。”客人们更相“诬之”(互劝意)。随后用高缘果盒盛装龙眼、荔枝、榛子、苹果、胡桃、榧子、松子、枣杏、栗柿、温州桔、薯等。由于是禅林,上列食品均为素食。在一般人的茶食中,也有荤菜,如陆游独好鸭脚,在《听雪为客置茶果》中写到:“不饤栗和梨,犹能烹鸭脚。” 茶宴初出现时,是士大夫们标榜俭朴,作为酒宴的替代。随着社会的发展,它也演变得铺张、奢华。从茶宴的记录上可以看到,当时人们甚少系缚,自由、快乐,茶宴上有一种勃勃向上之气。自从陆羽提倡茶四修身养性之物,精行检德之人所为后,茶走入淡泊宁静之路,茶宴在中原大地开始走下坡路。对茶宴极为推崇的白居易在其后来所作的《夜泛阳坞入明月湾即事寄崔湖州》之后注:“尝羡吴兴每春茶山之游,泊入太湖,羡意减矣。”可见,此时茶宴已失去了往日的昌盛。到了明代,文人们更认为“饮茶以客少为贵,客众则喧,喧则雅趣尽矣”;“饮茶最忌荤肴杂陈”;“饮茶以客少为贵……五六(人)日泛,七八(人)日施”。这种把茶宴看作施茶,以及冲泡茶的出现,使茶宴完全消失。 茶宴的出现,刺激了茶食的发展。茶宴消失后,茶食则传入民间。在北京、上海、南京、广州、成都等地的茶馆里,茶食不但品种多而精美,且各地自有特色。除茶馆外,茶食在民间习俗中也有一定的地位。在云南昭通地区的绥江,请客人吃点心,他们称之为“摆茶”。结婚时男方要给女方送去一些(一般是十几抬)自制的点心,称之为“茶礼”。无论是“摆茶”的点心还是“茶礼”的点心,都称之为“茶食”,其中有一种当地人称之为“果果”,其制作以优质糯米为主要原料,配上黄豆、花生、芋头、果药等,放阴凉干燥处阴干,再用“油砂”炒酥,再给它穿上蜂蜜、砂糖、猪油、芝麻等的外衣。除果果外,茶食中还有“苕丝”、“玉兰丝”、“油酥米花糖”、“瓜片”、“片糖”、“甜酒耙”等。明代许次纾在《茶疏》中写到:“礼失求诸野,今求之夷矣。”他所说的夷即指当时的南中,今天的云南。可见云南在明代保存了很多中原已失的茶俗。今天的绥江茶食可能就是真正的古风,从中可以看到云南化的中原茶食风俗。□ 杨凯 |
|
Posted: 25 Mar 2011 02:04 AM PDT 原文地址:北京香山中仁游学书院3月27日游学预告作者:北京香山中仁书院 北京香山中仁游学书院3月27日游学预告 本周日(3月27日)上午8:30-9:00点签到(过时不候)下午5点结束。
自备:每人自带《论语》《诗经》或自爱的书。背包午饭干粮水果,水,坐垫或小椅
形式与时间安排:个人介绍,一起读《论语》《诗经》,爬山,才艺,演讲,座谈,自己看书,武术运动,联欢等各活动。男女大小不限,还可以自带小孩子。(注组织者林童星脚痛,不能多走路,不能陪爬山,只能在山下,其它组织者会组织好本次活动。)
欢迎历史知识丰富的来给大家做讲坐。
我们的理念:静读诗书三千年,遥看天外一池星!修己安人,做好自己,影响身边!
北京香山中仁书院QQ群78054060 林童星电话18701582855 张鑫13810607743
报名方式:在此贴下报名:格式
姓名,电话,单位,理想,特长 或把此信息发短信到,上面一个手机上.
|
|
Posted: 28 Mar 2011 04:57 AM PDT http://www.gamedev.net/page/news/index.html/_/general-news/the-daily-gamedevnet-r11942
Mar 25 2011 07:37 AM | mittens in General News 周末!我都不知道我欠着多少游戏还没玩。 直白的头条新闻!Duke Nukem Forever 跳票了(延期到六月)。虽然这算不上什么很严重的跳票,但还是让人觉得很欢乐。至于游戏嘛,我们先忽略它把。我要去玩 Crysis 2 了。 索尼正打算要转移所有的 SCEA 用户帐号,在下周,连带着帐号里的余额,转移至 SNEA(Sony Network Entertainment of America)。看起来也不算什么大的变化,但这只是索尼迈向“网络化”的又一步整合,来迎接即将到来的 NGP。我有提到过我很喜欢 PSP Go 么?我的确很爱它,我应该去玩 Dissidia 012 最终幻想。呃,这名字是有点奇怪哦。 Zynga,再次无敌收购了一家公司,昨天他们收购了 Floodgate Entertainment。Floodgate Entertainment 曾经做了 Flowerz 和 Daycare Nightmare,他们还共同协助制作了主流游戏诸如 Dark Messiah of Might and Migic,还有手机平台版本的 Age of Empires 以及 Nerverwinter Nights。根据消息来源 Shacknews 所说,这是 Zynga 十个月内的第十起收购案了。真强。 看到以下这个消息让我很想去玩一下 Homefront——据说已经卖出了一百万份了,并且经销商已经收到二百四十万份拷贝。 一个高清可下载的生化四的版本,以及生化:Code Veronica?我觉得很棒。但我想我还是去玩 Killzone 3 吧。 哦,嘿!Need for Speed Shift 2 Unleashed 下周面世。这是个大家都应该去玩一下的游戏。 周末愉快吧,游戏开发者们。我想我还是去玩游戏了。 |
|
Posted: 28 Mar 2011 05:30 AM PDT Despite NinjaCamp concluding last friday (25/03/11) We still have plenty of projects that were worked on during the week that we’d like to share with you. Starting with a new component: LOD Group |
| You are subscribed to email updates from "game" via 柠檬杀手 in Google Reader
To stop receiving these emails, you may unsubscribe now. |
Email delivery powered by Google |
| Google Inc., 20 West Kinzie, Chicago IL USA 60610 | |
|
《Michael Jackson The Experience》遊戲介紹 Posted: 29 Mar 2011 08:19 AM PDT
|
|
Posted: 29 Mar 2011 11:08 AM PDT
|
|
Posted: 26 Mar 2011 11:33 PM PDT 周末带女儿去逛公园,去的是深圳南山区海滨生态公园,在公园外面看到一个师傅,正努力地用草编织着工艺品。
凤凰和玫瑰花是1元一个,地面上的十二生肖等动物则开价50元。 据这位师傅说,这是他在山东那边学会的,该技术已经失传,他觉得50元是物有所值,他说完后低头继续编织着1元的玫瑰花。恐怕这时候他有些底气不足,估计也不相信自己的手工艺品会有人愿意50元购买? 说实话让我花50元买一个小牛,确实有点舍不得,呵呵。最后我买了一只1元的凤凰给女儿。这时候旁边走来一位姑娘,她对自己男友说道“你看,手工做的玫瑰花,买一朵给我吧”,那男的说“买这个干嘛?不买……”
我非常感慨这位师傅可以编织出这么美丽的工艺品,也感慨现在赚钱的艰辛。
|
|
Posted: 29 Mar 2011 02:08 AM PDT 原文地址:细说茶在生活中的25种妙用作者:嗜茶客 (1)煮牛肉时除了放入各种调味品,还可以再加一小布袋普通叶,同牛肉一起烧,牛肉熟得快,味道清香。 (2)吃特别辣的辣椒后,若口辣难忍,可先用清水漱一下口,再咀嚼一点茶叶,口中辣味即可消除 (3)将废茶叶用来煮茶鸡蛋,味道清香可口。 (4)吃了生葱、大蒜以后,弄一些残茶叶在口里嚼一些时间,能消除葱、蒜的异味。 (5)将肉放入浓度5%好茶水中浸泡片刻后再冷藏。肉类的保鲜效果不仅更好,而且不易腐烂变质。 (6)饮茶戒烟:须借助吸烟来提神的人,不妨以茶代烟,以乌龙茶戒烟效果最好。 (7)看电视时,饮上一杯茶可以有效地抵御电视机显像管发出的有害射线。茶水还可中止胃癌诱发物-亚硝酸盐在口腔内的形成。 (8)器皿中用鱼腥味,用废茶叶放在其中煮数分钟,便可去腥。 (9)菜锅上有腥味,可先用泡过的茶叶擦洗,再用清水冲净,即可除掉腥。 (10)取少量茶叶放在暖水瓶中,再灌进滚开的水,盖好盖,20分钟后可饮。壶里的水垢在茶碱的作用下也逐渐脱落,连泡几次,即可除净。 (11)将鲜鸡蛋埋入干净的干茶渣中,放阴凉干燥处,鸡蛋可保存2-3个月左右不会变质。 (12)把晒干的废茶叶,装在尼龙袜子内,然后塞进有臭味的鞋子内。茶叶能吸收鞋内水气,去除臭味。成人的鞋子所须的茶叶份量,约为一杯左右。 (13)用50克花茶装入纱布中放入冰箱,可除去异味。一个月后,将茶叶取出放在阳光下爆晒,再装入纱布袋放入冰箱,可反复用多次,除异味效果好。 (14)炊具沾了油垢,用新鲜的湿茶渣在炊具上擦几遍,即可将油垢洗去。如无新鲜的湿茶渣,用干茶渣加开水浸泡湿后亦可擦去油垢。 (15)涂有油漆的门窗、家具,或者是玻璃窗门若染有尘埃,可用冷茶擦洗会显得特别明亮洁白。 (16)用茶渣擦洗镜子、玻璃、门窗、家具、胶纸板及皮鞋上的泥污,去污效果好。 (17)深色衣服上的油渍,用残茶叶搓洗能去污。 (18)新买的木质家具,往往有刺鼻的油漆味,用茶水擦洗几遍,其异味自会消退,比清洁剂效果好。 (19)新衣服或新布料,通常都有一般刺鼻难闻的味道,这是染料所造成的,若不去除,穿在身上令人十难受。抓取一把茶叶燃烧,利用燃烧的烟可将味道熏除。 (20)颜色鲜艳的衣服褪色后,如果用茶汁来漂洗,可恢复它们原来的色泽。 (21)将茶叶一小把,泡成茶水后用来洗绒线衣,同样能够去掉污垢,而且保持颜色鲜亮。 (22)泡过茶叶晾干聚集起来,用袋装好,是很好的枕头芯子,睡起来柔硬清香,又去头火。 (23)废茶叶放在厕所或空气不好的地方燃烧,可以消除恶臭味。 (24)冲泡过的茶叶晒干,在夏季的黄昏,用火点燃可以驱蚊虫,不仅对人体无害,而且会有清香扑鼻。 (25)把茶渣倒在花盆里,能保持土质的水分,与泥混合放入花盆内,又可作花卉的肥料。 |
|
Posted: 28 Mar 2011 11:46 PM PDT 原文地址:[刚创业]6.小谈如何带“菜鸟”新员工作者:十一月的雨 带一个新的团队还是挺操心的。一个字:累。但面对一张张白纸,做为主管还是有责任把他们带好的。在带新人的过程中,我的最大感受是紧凑检查点,随时沟通。说个例子: 一个新策划,没有太多经验,加入了我的开发团队。我第一次交待工作任务,说一周后检查,但一周时间已到,检查工作,发现未完成,同时,方向跑偏。讲解之后,我第二次交待工作任务,要求3天之后检查工作,三天过后,检查工作,发现继续跑偏。第三次交待工作,早上交待,要求下班检查,后来发现还是跑偏…… 这时候,做为任何一个主管,估计都会疯掉的。但后来,我的策划总监开始耐下心来,每两个小时就检查一下这个新员工的工作,随时对他进行指导和纠正。结果很理想,几天下来基本可以完成既定的工作任务和指标了。 其实从这个例子我们可以发现,对于一个新员工来说,能力往往都是具备的,但导致无法完成工作、或者延期,基本都是由于对上司意图不领会和抓不到工作重点导致的。 这个时候,一个主管单纯要求里程碑和绩效没太多意义,得到的结果一定是未完成或者不达标,过程纠正和细节指导成为对这个新员工培养的关键。 前几天,这个新策划要完成一个重要里程碑,我和策划总监、主程都留下来陪他,协助他完成这项工作,因为在团队中,我有一个不成文的规定,员工不下班,其直接领导是要陪同的,这一举措就是为了随时与下属沟通,使其加班的目的更明确、不做无用功、不加无意义的班,在陪同的过程,随时可以对其进行纠正和指导。可能大家会认为这实在太操心了,但这没有办法,在竞争激烈的今天,你指望拥有完美员工是不可能的,完美员工多半要靠自己的培养。我们陪同加班的时候,这个新员工虽然很紧张,但晚上九点多还是完成了工作。我们大家一起高高兴兴下班了,我问他:“怎么样这几个星期,压力很大吧?”他回答说:“是的,但非常有效果,学到不少东西!”的确,以这个员工刚加入我团队之初,交待这三天的工作,可能他要干上两个星期,未必能达到我们的期望。而几个星期下来,这一结果不正是我的团队和他都想要的么? 其实带新人,带团队就是这样了,参差不齐。我从来不指望我的团队中都是精英,但我更希望我的团队有培养精英的机制和能力。 |
|
Posted: 28 Mar 2011 11:44 PM PDT 原文地址:#刚创业# 9.视角的改变就是世界的改变作者:十一月的雨 今天偷个懒,所以只讲两个故事:
故事1:你脖子挂一台相机,四处拍照放在微博上,那没啥新鲜的,而在一只猫脖子上挂个定时自动拍照的相机,自动发微博上,很火,引无数人关注。 故事2:一个女人穿一条超短裙,在自己的后腰上挂了一个摄像头,她回家之后回放录像,发现其实在她转身后,很多人盯着她的屁股看。呵呵……虚荣心得到极大满足。
唉……当我们在吹嘘着自己老资格的时候,我们都不得不承认世界变了、游戏的世界已经变了,不是我们人变了,不吃饭不走路了,而是新一代人的思维方法和经历都变了,如同人走马路,猫钻树林,一个女人的臀部上居然也长眼了。这样的调调,我们不落伍才怪。 最近两年,我试图每天都在与我的思维惯性做抗争,很想忘掉一些我想忘掉的东西,比如,在讨论产品的时候,一个非常简单的问题,手到擒来,但我还想问自己,如果不这么解决还有什么其它的方法?一个逻辑超正常的结构,把他搞混乱之后,再重新排序,我还能复原么?都觉得没有希望的东西,我更想问问到底有多糟糕呢、还能多糟糕。 呵呵,两个小故事,希望今大家可以试试,把我们常做的事情,换个顺序,换个方法!有的时候我们不需要改变世界,而是要换个角度看世界,世界就变了。 |
|
Posted: 29 Mar 2011 06:48 AM PDT 有了前几天的基础,我们可以从顶向下来读 lua gc 部分的代码了。 我们知道,lua 对外的 API 中,一切个 gc 打交道的都通过 /* ** Garbage-collection function */ LUA_API int lua_gc (lua_State *L, int what, int data) { int res = 0; global_State *g; lua_lock(L); g = G(L); switch (what) { case LUA_GCSTOP: { g->GCthreshold = MAX_LUMEM; break; } case LUA_GCRESTART: { g->GCthreshold = g->totalbytes; break; } case LUA_GCCOLLECT: { luaC_fullgc(L); break; } case LUA_GCCOUNT: { /* GC values are expressed in Kbytes: #bytes/2^10 */ res = cast_int(g->totalbytes >> 10); break; } case LUA_GCCOUNTB: { res = cast_int(g->totalbytes & 0x3ff); break; } case LUA_GCSTEP: { lu_mem a = (cast(lu_mem, data) << 10); if (a <= g->totalbytes) g->GCthreshold = g->totalbytes - a; else g->GCthreshold = 0; while (g->GCthreshold <= g->totalbytes) { luaC_step(L); if (g->gcstate == GCSpause) { /* end of cycle? */ res = 1; /* signal it */ break; } } break; } case LUA_GCSETPAUSE: { res = g->gcpause; g->gcpause = data; break; } case LUA_GCSETSTEPMUL: { res = g->gcstepmul; g->gcstepmul = data; break; } default: res = -1; /* invalid option */ } lua_unlock(L); return res; } 从代码可见,对内部状态的访问,都是直接访问 global state 表的。GC 控制则是调用内部 api 。lua 中对外的 api 和内部模块交互的 api 都是分开的。这样层次分明。内部子模块一般名为 此间提到的 api 有两个: LUAI_FUNC void luaC_step (lua_State *L); LUAI_FUNC void luaC_fullgc (lua_State *L); 用于分步 GC 已经完整 GC 。 另一个重要的 api 是: #define luaC_checkGC(L) { \
condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); \
if (G(L)->totalbytes >= G(L)->GCthreshold) \
luaC_step(L); }
它以宏形式定义出来,用于自动的 GC 。如果我们审查 lapi.c ldo.c lvm.c ,会发现大部分会导致内存增长的 api 中,都调用了它。保证 gc 可以随内存使用增加而自动进行。 这里插几句。 使用自动 gc 会有一个问题。它很可能使系统的峰值内存占用远超过实际需求量。原因就在于,收集行为往往发生在调用栈很深的地方。当你的应用程序呈现出某种周期性(大多数包驱动的服务都是这样)。在一个服务周期内,往往会引用众多临时对象,这个时候做 mark 工作,会导致许多临时对象也被 mark 住。 一个经验方法是,调用 另,condhardstacktests 是一个宏,通常是不开启的。 先来看 void luaC_fullgc (lua_State *L) { global_State *g = G(L); if (g->gcstate <= GCSpropagate) { /* reset sweep marks to sweep all elements (returning them to white) */ g->sweepstrgc = 0; g->sweepgc = &g->rootgc; /* reset other collector lists */ g->gray = NULL; g->grayagain = NULL; g->weak = NULL; g->gcstate = GCSsweepstring; } lua_assert(g->gcstate != GCSpause && g->gcstate != GCSpropagate); /* finish any pending sweep phase */ while (g->gcstate != GCSfinalize) { lua_assert(g->gcstate == GCSsweepstring || g->gcstate == GCSsweep); singlestep(L); } 比较耗时的 mark 步骤被简单跳过了(如果它还没进行完的话)。和正常的 mark 流程不同,正常的 mark 流程最后,会将白色标记反转。见 lgc.c 548 行,atomic 函数: /* flip current white */ g->currentwhite = cast_byte(otherwhite(g)); 在 fullgc 的前半程中,直接跳过了 GCSpropagate ,重置了内部状态,但没有翻转白色标记。这会导致后面的 sweep 流程不会真的释放那些白色对象。sweep 工作实际做的只是把所有对象又重新设置回白色而已。 接下来就是一个完整不被打断的 gc 过程了。 markroot(L); while (g->gcstate != GCSpause) { singlestep(L); } setthreshold(g); 从根开始 mark ,直到整个 gc 流程执行完毕。最后,重新设置了 GCthreshold 。注:调用 fullgc 会重置 GCthreshold ,所以如果你曾经调用 stepgc 要相对复杂一些。在 lua 手册的 2.10 解释了 garbage-collector pause 和 step multiplier 的意义,却没有给出精确定义。 回到源代码,我们就能搞清楚它们到底是什么了。 case LUA_GCSETPAUSE: { res = g->gcpause; g->gcpause = data; break; } case LUA_GCSETSTEPMUL: { res = g->gcstepmul; g->gcstepmul = data; break; } 这里只是设置 gcpause gcstepmul 。gcpause 实际只在 lgc.c 59 行的 setthreshold 宏中用到 #define setthreshold(g) (g->GCthreshold = (g->estimate/100) * g->gcpause)
看见,GCSETPAUSE 其实是通过调整 GCthreshold 来实现的。当 GCthreshold 足够大时, case LUA_GCSTOP: { g->GCthreshold = MAX_LUMEM; break; } gcpause 值的含义很文档一致,用来表示和实际内存使用量 estimate 的比值(放大 100 倍)。一旦内存使用量超过这个阀值,就会出发 GC 的工作。 要理解 gcstepmul ,就要从 case LUA_GCSTEP: { lu_mem a = (cast(lu_mem, data) << 10); if (a <= g->totalbytes) g->GCthreshold = g->totalbytes - a; else g->GCthreshold = 0; while (g->GCthreshold <= g->totalbytes) { luaC_step(L); if (g->gcstate == GCSpause) { /* end of cycle? */ res = 1; /* signal it */ break; } } break; } step 的长度 data 被放大了 1024 倍。在 lgc.c 的 26 行,也可以看到 #define GCSTEPSIZE 1024u
我们姑且可以认为 data 的单位是 KBytes ,和 lua 总共占用的内存 totalbytes 有些关系。 ps. 这里 totalbytes 是严格通过 Alloc 管理的内存量。而前面提到的 estimate 则不同,它是一个估算量,比 totalbytes 要小。这是因为,前面也提到过,userdata 的回收比较特殊。被检测出已经访问不到的 userdata 占用的内存并不会马上释放(保证 gc 元方法的安全调用),但 estimate 会抛去这部分,不算在实际内存使用量内。 见 lgc.c 544 行 udsize = luaC_separateudata(L, 0); /* separate userdata to be finalized */ 以及 lgc.c 553 行 g->estimate = g->totalbytes - udsize; /* first estimate */ 从代码逻辑,我们暂时可以把 data 理解为,需要处理的字节数量(以 K bytes 为单位)。如果需要处理的数据量超过了 totalbytes ,自然就可以把 GCthreshold 设置为 0 了。 实际上不能完全这么理解。因为 GC 过程并不是一点点回收内存,同时可用内存越来越多。GC 分标记(mark) 清除(sweep) 调用 userdata 元方法等几个阶段。只有中间的清除阶段是真正释放内存的。所以可用内存的增加( totalbytes 减少)过程,时间上并不是线性的。通常标记的开销更大。为了让 gcstep 的每个步骤消耗的时间更平滑,就得有手段动态调整 GCthreshold 值。它和 totalbytes 最终影响了每个 step 的时间。 下面的关注焦点转向 void luaC_step (lua_State *L) { global_State *g = G(L); l_mem lim = (GCSTEPSIZE/100) * g->gcstepmul; if (lim == 0) lim = (MAX_LUMEM-1)/2; /* no limit */ g->gcdept += g->totalbytes - g->GCthreshold; do { lim -= singlestep(L); if (g->gcstate == GCSpause) break; } while (lim > 0); if (g->gcstate != GCSpause) { if (g->gcdept < GCSTEPSIZE) g->GCthreshold = g->totalbytes + GCSTEPSIZE; /* - lim/g->gcstepmul;*/ else { g->gcdept -= GCSTEPSIZE; g->GCthreshold = g->totalbytes; } } else { lua_assert(g->totalbytes >= g->estimate); setthreshold(g); } } 从代码我们可以看到,GC 的核心其实在于 singlestep 函数。 如果是自动进行的 GC ,当 totalbytes 大于等于 GCthreshold 时,就会触发 如果是手控 GC ,每次 gcstep 调用执行多少次 所以,一两句话很难严格定义出这些控制 GC 步进量的参数的含义,只能慢慢阅读代码,看看实现了。 在 lua 手册的 2.10 这样描述“step multiplier 控制了收集器相对内存分配的速度。 更大的数字将导致收集器工作的更主动的同时,也使每步收集的尺寸增加。 小于 1 的值会使收集器工作的非常慢,可能导致收集器永远都结束不了当前周期。 缺省值为 2 ,这意味着收集器将以内存分配器的两倍速运行。” 从代码看,这绝非严格定义。至少从今天已经分析的代码中还看不出这一点。 gcstepmul 的值和内存增涨速度如何产生联系?明天再写 :) |
|
Posted: 29 Mar 2011 05:35 AM PDT 本文基本上是翻译这篇文章(http://dev-tricks.net/pipe-infix-syntax-for-python)。通过 Pipe 模块,就能够使用 Python 用上中缀语法。这里介绍之。
|
|
Posted: 29 Mar 2011 05:39 AM PDT Yet another video showing a cool project that was worked on during last week’s Ninja Camp, Spline based mesh extrusion! |
|
Posted: 31 Mar 2011 12:47 AM PDT 原文地址:2010年不容错过的223张互联网数据图作者:CNSNS 从2010年7月份起,我几乎每天都在新浪微博上发布最新的关于互联网数据图,取名为《每日企图》,明年没有什么变故的化,我还会继续这件事,如果你喜欢,可以紧密跟随我的微博。
由于微博的信息机制的天生弱点,所以对于过去的图的查看非常不方便,而且到年末了,于是我做一个汇总,也欢迎你转发。
这里要说明的,我收集的这些图是凝聚了国内外那些非常出色的互联网人的思想与智慧,这里表示特别感谢。
同时由于我的兴趣与爱好,因此只选取了其中的一部分,但数量已经足够多了,相信一个人如果认真地看,想,会收获颇丰。
以下做了一个简单的分类
互联网宏观
中国与美国
http://t.sina.com.cn/1642051034/3f4e1bbRF2
EBAY的历程
http://t.sina.com.cn/1642051034/wr0lus9LEU
社会化媒体
美国人在互联网上的行为(数据是AC尼尔森的)
http://t.sina.com.cn/1642051034/3f4e05tsUz
移动互联 APPLE IPHONE APP STORE
(2010年7月数据)
http://t.sina.com.cn/1642051034/3f4dZVkVLM
GOOGLE是否会被拆分
http://t.sina.com.cn/1642051034/wr0qJie5un
网站建设
SEO(搜索引擎优化)指南
http://t.sina.com.cn/1642051034/3f4e2lq1MN 投资情况
GOOGLE的收购、投资史
http://t.sina.com.cn/1709416584/Bh0lsPqr8G
用户行为
女人为什么喜欢逛街
http://t.sina.com.cn/1642051034/3f4e1lpA9v
在线游戏
在线游戏
http://t.sina.com.cn/1642051034/3f4dZVkQbv
云服务&微软的云Azure http://t.sina.com.cn/1642051034/k4Clu4qje
全球在线色情行业状况
http://t.sina.com.cn/1642051034/3f4e0qjcrX
在线教育
在线学习(包括企业级)的现状
http://t.sina.com.cn/1642051034/zF0t380vry
当今IT界,最有价值的品牌
http://t.sina.com.cn/1642051034/3z4egW5sUY
电子邮件的发展图
http://t.sina.com.cn/1642051034/3z4efAmTqd
浏览器史
http://t.sina.com.cn/1642051034/3f4ehrcxGV
YOUTUBE全貌
http://t.sina.com.cn/1642051034/zF0vgheYbn
|
|
Posted: 31 Mar 2011 12:45 AM PDT 原文地址:移动互联网大趋势(四套资料)作者:CNSNS 在TECHWEB 汇总这四套资料。
十年前的这个时候,互联网的泡沫破了,大量的网站倒闭,而过度的基础宽带建设却为今天的高速互联网奠定了基础; 随后的五年中,互联网一直不算景气,但以手机为核心的移动通讯却独树一帜地高速发展,中国的互联网企业也有很多通过手机通讯(短信、彩信)熬过了那个段冰川时期;
再之后,手机与互联网逐渐开始融合,出现了“移动互联网”这一方向,当专家们还在讨论是手机为主体、还是互联网为主体时,这个东西的今天已经由一个方面,变成了大趋势。
这个大趋势的核心是:人们已经通过手机与互联网相融,前所未有地扩大了知晓、参与、表达的权力边界。
以此推论:
1.任何一个行业的从业者,都应关注这个大趋势,关注用户新的行为变化,制定自己的节奏融合进去,这个趋势对你来说很可能是个大机会,也可能是一把铲子,把你铲回原始社会;
2.互联网因此得到了更大的动力,因为它借助手机完成了与人们各种活动的融合,空间会更为宽广,资源会更为注入,十年前所出现的无法落地的泡沫,在今后的十年出现的可能性不大。
3.中国这个世界上最大的手机持有国与制造国,一定又一次缩短与世界的差距,不管是COPY、还是CREATIVE。
这不是那些先知者说的,而是那只手已经在敲响房门。
2011年春节过后,我得到了四份关于移动互联网大趋势的重磅资料,非常高兴将这四份资料转发给大家,相信这四份资料对中国的移动互联网所涉及的人、单位、公司与机构都有很好的参考作用。这些资料可能一时无法告诉你如何做,但这些知道会告诉你:该动身了!
第一份资料,由世界顶尖、美国最大风险投资公司凯鹏华盈(KPCB)于2011年2月10日发布。这份资料从投资者角度表达了对移动互联网的发展趋势的看法。 下载地址是:http://sinaurl.cn/h5w0la ============ 第二份资料,由英国著名的研究机构VISION MOBLE出品《2011年移动互联网大趋势》,其分析报告在TechCrunch上多次被誉为最有深刻性的。这份资料从研究者角度描绘了移动互联网的大趋势,相比起来更为细,我更喜欢这份;
下载地址是:http://sinaurl.cn/hqi9c7 ============ 第三份资料,是由应用商店分析工具提供商Distimo出品《比较WINP7与ANDROID市场》,虽然资料名是比较两个市场,但实际上这份资料站在应用开发者角度分析了移动互联网平台上的应用开发,以及各开发平台(ipad、iphone、BlackBerry、Android、OVI、Palm、WMM、WIN7)的全貌 下载地址是:http://sinaurl.cn/h5wnbT ============ 第四份资料,是由国内的移动互联网从业者@王利杰Leo制作的,这份资料站在中国从业者角度 阐述了全移动互联网的发展所带来的蝴蝶效应。 下载地址是:http://sinaurl.cn/hqiHEy ============ 以上资料以不同的角度描述了移动互联网的态势与趋势,都是这些作者精心研究的成果,在此表示感谢,如果你觉得有帮助,欢迎分享给你的同事、好友。 同时欢迎各位关注我的新浪微博:http://t.sina.com.cn/cnsns |
|
废稿留档:Effective C++ 3rd 的评注版(序) Posted: 31 Mar 2011 02:13 AM PDT Effective C++ 3rd 的评注版要出版了。我在这本书上花了不少心血。编辑约我最后写一篇序。我新码了点文字,用了点以前 blog 上写的旧文。 今天侠少同学说“现在全文看下来还是有些纠结,反对、支持、再反对,再支持,百转千回的小情绪,读者恐怕会犯晕”。嗯,的确很羞愧的。不应该在这本大牛的书前面发牢骚。打算晚上改稿子。旧稿就贴这里存档吧。 序 2010 年秋电子社编辑侠少寄给我一本Effective C++(第三版)英文原版书,并托我为这本书写一些评注,希望做成评注版在国内出版。老实说,之前我并无阅读这本书的计划。 通过更深入地理解 C++ 而获得一种喜悦感,是十多年前的事情了。那时我刚刚从 C 语言迁移到 C++ 来做实际的项目。当时,我接触学习 C++已有六七个年头,一直未把它作为主要工作语言来用。 2000 年前后国内突然出版了大批 C++语言相关的著作,我读了一本后便一发不可收拾。之前已有的语言经验,让我的阅读没有太大障碍。而几乎是空白的 C++大型软件项目经验,让我没有各种先入为主的偏见。从纯粹学习语言的角度来讲,Effective C++ 是相当重要的一本书。阅读到这一本时,我已经用 C++ 编写过一个开源的游戏引擎,有数万行代码,书中总结的条款读来总觉得心有戚戚焉。我几乎是在书店驻足读完大半本书,才去收银台买下来的。 之后的几年里,我用 C++ 编写了数十万行代码。写得越多,对之前的作品越不满意,代码风格也随着阅读而变化,而且慢慢产生怀疑,到底是否存在一种普遍合理高效的C++ 使用方法:它可以让其他程序员,或是将来的自己审阅代码后,表示一致赞赏,而不需要用无休止的重构来满足自己的完美主义倾向。 后来,我的日常工作逐步转移回 C 语言开发,并开始大量使用多语言混合编程(使用的最多的是一种动态类型语言 Lua )。网络上对 C++的批评和质疑的声音越来越多。我自己也在 Blog (http://blog.codingnow.com)上写过数篇响应这种声音的文章。我想我对 C++ 已经足够了解,有较为丰富的实践经验,有能力表达自己的看法。 我觉得,作为一个热爱编程的程序员,在职业生涯中,对特性丰富的 C++ 语言没产生过兴趣并为之吸引,是几乎不可能的事情;而始终停留在对 C++ 的热恋中,把它作为解决一切问题的万能钥匙,亦非优秀的程序员。无论是 C++ 的狂热份子,还是希望了解C++不足的一般程序员,这本书都非常值得一读。当我全部读完这本书,深深地感觉到,较之前些年读的第二版,这简直是一本新书。 这本书,我读得很慢,不仅仅是因为这是一本英文书,还因为编辑之托。对于要印成白纸黑字的文章,不得不谨慎一些。所以,我又重温了《C++语言的设计和演化》的几个章节。可能还是因为我对 C++偏见过多,其程度有如前几年对其的推崇备至。总觉得书里讲得太细,有自己的观点本是好的,只是局限在了 C++ 语言中。明明是 C++ 的缺陷,却让人绞尽心力地回避那些问题,或以 C++ 独特的方式回避。在别的语言中不该存在的问题,却成了 C++程序员必备的知识。人生苦短,何苦制造问题来解决之。 可这也正映射了本书的主题:有效使用 C++ 。读下去,感觉能懂 Scott Meyers了。我不相信大牛如厮,这个主题写了十多年,就没有什么可抱怨的。当我读到 Item 25 ,关于对 std::swap 的扩展问题(原书第109页) 引申到特例化 std 名字空间里的方法时,一句“Alas, the form of the prohibition may dismayyou” 尽显无奈,不由会心一笑。 |
|
Posted: 31 Mar 2011 01:21 AM PDT 今天来说说 write barrier 。 在 GC 的扫描过程中,由于分步执行,难免会出现少描了一半时,那些已经被置黑的对象又被修改,需要重新标记的情况。这就需要在改写对象时,建立 write barrier 。在扫描过程中触发 write barrier 的操作影响的对象被正确染色,或是把需要再染色的对象记录下来,留到 mark 的最后阶段 atomic 完成。 和 barrier 相关的 API 有四个,定义在 lgc.h 86 行: #define luaC_barrier(L,p,v) { if (valiswhite(v) && isblack(obj2gco(p))) \ luaC_barrierf(L,obj2gco(p),gcvalue(v)); } #define luaC_barriert(L,t,v) { if (valiswhite(v) && isblack(obj2gco(t))) \ luaC_barrierback(L,t); } #define luaC_objbarrier(L,p,o) \ { if (iswhite(obj2gco(o)) && isblack(obj2gco(p))) \ luaC_barrierf(L,obj2gco(p),obj2gco(o)); } #define luaC_objbarriert(L,t,o) \ { if (iswhite(obj2gco(o)) && isblack(obj2gco(t))) luaC_barrierback(L,t); }
为何 table 要被特殊对待? 因为 table 的引用关系是 1 对 N ,往往修改同一个 table 是很频繁的。而其它对象之间则是有限的联系。分开处理可以减少 barrier 本身的开销。
void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v) { global_State *g = G(L); lua_assert(isblack(o) && iswhite(v) && !isdead(g, v) && !isdead(g, o)); lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); lua_assert(ttype(&o->gch) != LUA_TTABLE); /* must keep invariant? */ if (g->gcstate == GCSpropagate) reallymarkobject(g, v); /* restore invariant */ else /* don't mind */ makewhite(g, o); /* mark as white just to avoid other barriers */ } 简而言之,当 GC 处于 GCSpropagate 状态(mark 流程中),就标记 v 。否则,把与之联系的节点 o 从黑色置为白色。前面我们已经说过,lua 的 GC 采用了两种白色标记,乒乓切换。在 mark 流程结束后,白色状态被切换。这个时候调用 makewhite 并不会导致 sweep 过程清除这个节点。同时,由于 o 变为白色,就可以减少 barrier 的开销。即,再有对 o 的修改,不会产生
void luaC_barrierback (lua_State *L, Table *t) { global_State *g = G(L); GCObject *o = obj2gco(t); lua_assert(isblack(o) && !isdead(g, o)); lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); black2gray(o); /* make table gray (again) */ t->gclist = g->grayagain; g->grayagain = o; } 这里提到了 grayagain 链,昨天已经看到,这个链表会推迟到 atomic 阶段处理。把 table 设会灰色可使后续对其的修改不再触发 注意,对弱表的修改是不会触发 if (traversetable(g, h)) /* table is weak? */ black2gray(o); /* keep it gray */ 为何要把弱表从黑色设回灰色。 因为弱表又分 key weak 和 value weak ,它倒不一定完全都包含了弱引用。在扫描过程中,对弱表的修改又不会触发 barrier 。这会导致最终扫描完成后,某些弱表里可能还藏有一些新建立的强应用关系。到这里,我们便可以解释昨天遗留的另一个问题,弱表为何到了 atomic 节点需要再次 mark 。见 lgc.c 的 533 行: /* remark weak tables */ g->gray = g->weak; g->weak = NULL; lua_assert(!iswhite(obj2gco(g->mainthread))); markobject(g, L); /* mark running thread */ markmt(g); /* mark basic metatables (again) */ propagateall(g); 再次 mark basic metatables 的原因是,设置基本类型的全局 metatable 并没有设置 write barrier (这组 metatable 比较特殊,不适合用以上的 barrier 函数)。见 lapi.c 的 710 行: switch (ttype(obj)) { case LUA_TTABLE: { hvalue(obj)->metatable = mt; if (mt) luaC_objbarriert(L, hvalue(obj), mt); break; } case LUA_TUSERDATA: { uvalue(obj)->metatable = mt; if (mt) luaC_objbarrier(L, rawuvalue(obj), mt); break; } default: { G(L)->mt[ttype(obj)] = mt; break; } } 这里,修改 table 的 metatable 调用了 如果审查所有的代码,会发现 barrier 的调用分布在很多地方。大多数情况下,barrier 的开销并不大,就是一次条件判断。但 barrier 也会被执行很频繁,性能必须有保障,这也是为什么 barrier 相关 api 都用宏来实现的缘故。 理解了 write barrier 的实现,我们就可以回头来看 propagatemark 过程了。 propagatemark 每次会标记一个灰色对象所有的关联节点,并把自己置为黑色。见 lgc.c 的 273 行。 /* ** traverse one gray object, turning it to black. ** Returns `quantity' traversed. */ static l_mem propagatemark (global_State *g) { GCObject *o = g->gray; lua_assert(isgray(o)); gray2black(o); switch (o->gch.tt) { 之后就是对需要迭代标记的具体类型的处理了。 对 table 的处理是这样的,见 lgc.c 的 282 行: case LUA_TTABLE: { Table *h = gco2h(o); g->gray = h->gclist; if (traversetable(g, h)) /* table is weak? */ black2gray(o); /* keep it gray */ return sizeof(Table) + sizeof(TValue) * h->sizearray + sizeof(Node) * sizenode(h); } 从 gray 链上取掉当前 table 节点,然后迭代这个 table ,如果是一个弱表,则把其还原为灰色。 traversetable 枚举了 table 中的所有引用项。并对弱表做了处理。见 lgc.c 的 166 行: if (mode && ttisstring(mode)) { /* is there a weak mode? */ weakkey = (strchr(svalue(mode), 'k') != NULL); weakvalue = (strchr(svalue(mode), 'v') != NULL); if (weakkey || weakvalue) { /* is really weak? */ h->marked &= ~(KEYWEAK | VALUEWEAK); /* clear bits */ h->marked |= cast_byte((weakkey << KEYWEAKBIT) | (weakvalue << VALUEWEAKBIT)); h->gclist = g->weak; /* must be cleared after GC, ... */ g->weak = obj2gco(h); /* ... so put in the appropriate list */ } } 被扫描到的弱表把自己挂到了 weak 链上。单独保存一个链表是因为弱表在扫描的最后阶段还需要把里面不存在的弱引用项清理掉。关于清理工作,是由 atomic 函数中对 cleartable 调用完成的。昨天已经讲过,无庸赘述。 对 function 的 mark 工作在 traverseclosure 函数中进行,lgc.c 224 行: static void traverseclosure (global_State *g, Closure *cl) { markobject(g, cl->c.env); if (cl->c.isC) { int i; for (i=0; i<cl->c.nupvalues; i++) /* mark its upvalues */ markvalue(g, &cl->c.upvalue[i]); } else { int i; lua_assert(cl->l.nupvalues == cl->l.p->nups); markobject(g, cl->l.p); for (i=0; i<cl->l.nupvalues; i++) /* mark its upvalues */ markobject(g, cl->l.upvals[i]); } } lua 中 C Function 和 Lua Function 的内部结构是不同的。所以是分别独立的代码。主要就是对 upvalue 以及环境表的标记了。 对 thread 的处理相对复杂一点。见 lgc.c 297 行: case LUA_TTHREAD: { lua_State *th = gco2th(o); g->gray = th->gclist; th->gclist = g->grayagain; g->grayagain = o; black2gray(o); traversestack(g, th); return sizeof(lua_State) + sizeof(TValue) * th->stacksize + sizeof(CallInfo) * th->size_ci; } 这里的链表操作可以简述为,把自己从 gray 链上摘下,放到 grayagain 链表中。并把自己保持为灰色状态。 这是因为 thread 关联的对象其实是运行堆栈,堆栈是随着运行过程不断变化的。如果目前尚处于 mark 流程没有结束的话,后面发生变化是很有可能的。而 stack 上数据的修改是不经过 write barrier 的。也没有必要为最频繁的 stack 修改做 barrier ,那样对性能影响就很大了。最简单的办法就是把 thread 推迟到 atomic 阶段重扫描一次。 atomic 函数,lgc.c 537 行的 markobject(g, L); /* mark running thread */ 也是这个用意。 ps. lua 的 GC 在实现时,即使要推迟扫描,也要先做一次。都是为了 atomic 阶段尽量短,把有可能遍历的部分先遍历完。 TPROTO 对象的遍历函数在 lgc.c 的 199 行: /* ** All marks are conditional because a GC may happen while the ** prototype is still being created */ static void traverseproto (global_State *g, Proto *f) { int i; if (f->source) stringmark(f->source); for (i=0; i<f->sizek; i++) /* mark literals */ markvalue(g, &f->k[i]); for (i=0; i<f->sizeupvalues; i++) { /* mark upvalue names */ if (f->upvalues[i]) stringmark(f->upvalues[i]); } for (i=0; i<f->sizep; i++) { /* mark nested protos */ if (f->p[i]) markobject(g, f->p[i]); } for (i=0; i<f->sizelocvars; i++) { /* mark local-variable names */ if (f->locvars[i].varname) stringmark(f->locvars[i].varname); } } 如注释所言,这里有很多的判断。这缘于 prototype 的创建过程是可能分步的,中间有可能被 GC 打断。prototype 的创建伴随着诸多 GCObject 的创建。新对象的创建(大多数是 string)带来的是新的内存申请,很容易触发自动 GC 的进行。如果对 prototype 的创建过程有兴趣,可以去阅读 lparser.c 的 以上就是所有需要迭代遍历的数据类型了。 一切准备妥当后,GC 将切换到 GCSsweepstring 。见 lgc.c 548 行: |
/* flip current white */ g->currentwhite = cast_byte(otherwhite(g)); |
g->sweepstrgc = 0; g->sweepgc = &g->rootgc; |
g->gcstate = GCSsweepstring; |
g->estimate = g->totalbytes - udsize; /* first estimate */ |
这时,userdata 的 gc 元方法虽未调用,所有不再有引用的 userdata 不会在这趟 GC 环节中清理出去,但它们占据的空间已经被 estimate 忽略。 |
|
Posted: 31 Mar 2011 12:42 AM PDT 原文地址:传统媒体的方向(九图)作者:CNSNS 正好在去年的这个时候,胡舒立老师的财新传媒启动了,并提出了“全媒体”战略,具体体现是: “我们正在重新审视现在的读者需求,分析和评估现在的市场环境带来的新机遇、新挑战,力求通过期刊、网站、视频、图书、会议等多种形式,实现更快更多元化的新闻传播,建立全媒体平台。这包括《新世纪》周刊、《中国改革》月刊和财新网,也包括一系列其他新媒体产品,例如视频新闻、手机资讯服务等,有些已经初见成果。另外,财新传媒的图书出版、高端会议活动也已经并将继续与广大读者见面。如今,财新传媒还在广招人才,特别是有志于创新的高端人才,共创新媒体全媒体时代的佳业。” 是的,互联网这个怪兽,以它的极大包容度吞没了读者的视觉和时间,又给读者们另一个空间去表达与自行传播,这使过去的媒体之王报刊、杂志、电视、电台,失去了统治地位,这种状况不但使象胡舒立老师这样优秀的中国传媒人感到压力,更让象美国这样的传媒大国中的巨鳄们已经无法呼吸。 让我们回到数据,来看看美国的传统媒体的在互联网环境下的境遇吧: 图一:1990年-2010年美国主要大报的发行量变化
注意从2000年开始,华尔街日报开始网络化,2003年对于网上内容进行收费,以此保持了较理想的受众量。 上图是关于受众量的,下图则是关于客户量的 图二:传媒的广告战争:TV vs Internet 。从:收益、到达率、增长率以及广告方式四个方面进行对比,结果是 传统的TV广告虽然在现有收益上超过互联网,但在其它三个方面完败。
图三:报业的坍塌。且不去看报业的萎缩现象,看看报业上的分类信息广告为客户带来的收入趋势吧,从2001年至2010年下降了92%(美国数据)。
上帝指着这些图说:其实你们并不是看不到这个趋势,你们真的缺的是面视与改变的勇气,想用IPAD逃避?不,它救不了你们。 是的,胡舒立老师所描述的全媒体,也只是发行渠道的多元化,这是传统媒体的在新的互联网模式下的较偷懒的方式,但又让自己兴奋的方式,包括我国的报纸上网工程,形变而实不变。 我们再回到互联网的真实情况,以FACEBOOK、TWITTER、QQZONE、新浪微博为例: 图一:2010年全球互联网发展图:
社会化媒体方面,每日FACEBOOK上有2000万的APP安装量、这将是其后最大的社会与商业潜力、全球有1.5亿博客作者、TWITTER上有250亿条信息 图二:《全球社会化媒体版图》
图三:2010社会化媒体发展概况
一句话用户把时间都耗在了SNS里了,你是独善其行呢,还是投身捞回呢 图四:再来看看你们的广告顾主的情况
2010美国投放在FACEBOOK上的广告为90亿美元,占美国社会化媒体广告投入170亿美元的53%,而美国社会化媒体广告投入是全球的一半;2011年,百事可乐将在23年以来第一次不再在全美橄榄球上投入广告,全力转向社会化媒体的投入。 图五:纽约时报的外链用户来原统计
相信今后,直接访问网站的比例还会下降。 我有一个著名的朋友曾大骂百度、GOOGLE ,说媒体没法做了,都被搜索引擎占了。哦,我想现在我接着骂:咱媒体没法做了,都被社会化媒体拿去了,不,以后都会被这帮人拿走。 当然传媒人也在不断的思考,今天在新浪微博上《青年时报》社长章丰老师(@青年时报章)贴了这么一张图:
他的解说是:#传媒长尾模型#移动互联时代,长尾模型是传媒转型的可行路径。把头部(广播式媒体)做得更精致有效,关键是提升解释力和公信力;长尾(社会化媒体)作为主要突破方向,关键是引入众包机制,激发用户生产和传播能量;头尾呼应完成过渡期。(他的这一段,也是我写这今天博客的动力) 他的解说,立即让我想起另外一个经典案例:晨星公司,1984年这家以财经信息为起步的公司,不断地深化其信息内容的数据化,着力发展专业方向的分析师,并提供给自己读者个性化的投资信息与工具,最后成为了全球顶尖的基金评级的权威机构。 这个例子完美的诠释了章老师的“把头部(广播式媒体)做得更精致有效,关键是提升解释力和公信力”。也就是说传统媒体要充分利用自身积累下来的信息,深挖信息的纵向扩展,而不是与社会化媒体上的个人比谁早,谁及时,更不是以标题来哗众取宠。 即使你要快,也要快得有深度。 同时对于长尾的信息,就不要自己想着独立建立一个社会化媒体,如凤凰网的微博、财新网的思想家了,融到社会化媒体平台里去吧,学学新周刊的新浪微博操作吧,你可以随时去影响你的用户,而不是看着自己报纸的阅读量或网站的PV,那些在当今已成为了富裕浮云了。 另外一个例子,更为经典。 新浪网开始的十年他们走过了四通利方论坛、新浪新闻、新浪博客,他们曾经的新闻在@老沉 作坊式的推动下,曾经让许多传统媒体叫骂;他们曾经的博客也被人们誉为自媒体地兴起,从而却立了新浪网网上新闻与内容门户的绝对权威,但新浪发展十年后的如今,他们自我的渐进式的革命,产生了新浪微博,这一拥抱社会化媒体大潮的举措,不仅仅使其股价在两年内翻翻,更重要的是蓄积了新浪网今后十年的发展动力,以及用户强大的忠诚度。(见我去年7月写的《新浪的渐变》) 电子商务的运营者们在强大的竞争压力下,已经开始投入社会化媒体之中,因为他们知道那里有自己的潜在用户,那么作为同样是企业的传统媒体,是否不要让上帝再指着鼻子说了呢?,但愿我过去写的关于企业在社会化媒体中的作为(http://cnsns.blog.techweb.com.cn/archives/245),对你有帮助。 这篇文章我不会投到专业媒体(因为从来也没投过),我不是专业的媒体工作者,而且文字、布局都不专业,另外还会有不少错别字,但我会投到新浪微博上,我相信传播力绝不会逊色于一个专栏文章。除了在社会化媒体上传播快之外,更重要的原因是:我对数据做了基本的收集、整理。 最后再次感谢章丰老师,正是他的短短几句,促成了我在短时间里写了这篇东西,让我受益良多。这也是社会化媒体的特点,在短时间里用户之间相互刺激,而产生更新的内容,更准确地说是微博参与了这次内容的创作。 感谢你能看到这里,欢迎您关注我的微博,我的微博的内容很专业,主要是收集、整理、思考以下方面的数据:互联网、社会化媒体、移动终端与电子商务:http://t.sina.com.cn/cnsns,我特别相信你会喜欢这些数据的。 |
|
Posted: 30 Mar 2011 11:43 PM PDT |
|
Posted: 30 Mar 2011 11:15 PM PDT 又是春天了。 每年春天,樱花就那样开了,又落了。 呵呵 [图片来源于网络] |
|
Posted: 30 Mar 2011 10:54 PM PDT
3月30日,史玉柱和他的《征途2》轰轰烈烈的开了一场“第三代网游商业模式”发布会,从一开始在微博搞“向史玉柱提问”,到发布会上冒牌陈天桥、不到40万在线放狗,一出出的“大戏”演得好不热闹,然而巨人的执行团队似乎并没有学到史玉柱的创意手法,发布会的每一个元素几乎都能找到一模一样的案例。在一台以创新商业模式的发布会上搞起山寨大杂烩,难免让人对“第三代商业模式”到底有多少创新产生怀疑。
山寨陈天桥,为报一箭之仇?
网游公司之间相互调侃,这已经是见怪不怪的了,《征途2》发布会现场出现的这位山寨“陈天桥”还是让人颇有似曾相识的感触。去年盛大的All
Star新品发布会,就曾有这样一位带着墨镜的“史玉柱”穿堂而过。你来我往好不热闹,所谓商场如战争,君子报仇十年不晚,各位看官,姑且当成一出闹剧看过罢了。
千金求骂放狗咬无下限炒作为哪般?
网游营销,离不开钱、女人和炒作,巨人这场发布会也没有逃过这个怪圈,先是百万奖金征求意见,再是“不足四十万放狗咬人”,网游大佬频出犀利言语是真心求玩家意见还是一心为炒作?“放狗”之说更是让人对葛斌斌斗鲨鱼无限怀念。就连一向犀利的葛斌斌也跳出来骂“做史玉柱的部下如当狗”。一个连团队都能放狗咬的老板,怎么让人相信他会把玩家当上帝?网游无下限炒作实在让人喜欢不起来。
概念炒作花样翻新,“第三代”能否保障玩家“公平”
这场发布会最大的看点,就是《征途2》宣布自己的“第三代商业模式”,已经从《征途》卖装备的商业模式中尝到甜头的巨人,看来要把“商业模式”炒作进行到底了。但巨人似乎走错了方向,目前仍然保持第一代商业模式时间收费的《魔兽世界》依然是玩家心中最公平最平衡的游戏。商业模式并不决定游戏可玩性,玩家的“公平”也不会从厂商收钱的方式变化中得到根本保障。巨人“第三代商业模式”概念最终恐怕也只能和王峰的“第三代网游公司”一样,成为一句吼着舒服的口号。
《征途2》的发布会,全场几乎对《征途2》游戏本身只字不提,舞台上美女、老板、百万现金各种山寨穿堂而过,网游发布会变成鱼龙混杂的秀场,而史玉柱更像是《征途2》团队请来的“代言人”,各种身不由己,各种被摆布。而如此粗糙的炒作手法怎能逃过史玉柱的眼睛,难怪他要放狗咬自己的团队,这不明摆着自己都看不下去了嘛!好了,闲话少说,别人演的戏各位看官姑且看罢,而作为一个普通玩家,我只想说一句,一切不以介绍游戏为目的的发布会都是耍流氓!
|
|
Posted: 30 Mar 2011 09:34 PM PDT
《Minecraft》,是一款由來自瑞典的 Markus Persson 一人開發的獨立遊戲 (Indie Game)。 《Minecraft》沒有猶如動畫電影般的細膩畫面,也沒有可歌可泣的故事背景,更沒有俊俏美麗的人物角色——它是一款從頭到尾全由像素美術風格 (Pixel Art) 構成的遊戲;從原野、山丘、樹木、洞穴到各種動物,觸目所及全是由像素一點一點構成的物體與景色。 「簡直就像是紅白機時代的遊戲。」 這款貌似樸實無華的獨立遊戲,於今年的遊戲開發者大會 (Game Developer Conference) 中囊括四個獎項,包括 GDCA「最佳新秀遊戲獎」與「最佳下載遊戲獎」,以及獨立遊戲節 (Independent Games Festival) 的「觀眾票選獎」與「Seumas McNally 大獎」,堪稱今年度最受矚目的獨立製作遊戲作品。 (本文首發於 Inside)
Markus Persson 於 2009 年末釋出遊戲的封閉測試 (Alpha Testing) 版本,並開始收費。於 2010 年十月時,《Minecraft》已達到 32 萬套下載量的可觀成績。而在他將遊戲推進至開放測試 (Beta Testing) 階段時,旋即於 2011 年一月突破了 100 萬套銷量,並不斷地持續向上成長。
在市場行銷層面,除了早期曾投入 500 美金嘗試使用 Google AdWords 以外,Persson 完全沒有採用任何的付費行銷及廣告宣傳。而根據官網的統計資料顯示,《Minecraft》現已擁有超過 500 萬名註冊玩家,其中有 160 萬名的付費玩家。截至目前為止,每天都有約 9000 名新玩家加入付費購買的行列中。 獲得如此巨大的成功之後,Persson 招募了幾位新的成員,並且成立自己的遊戲公司 Mojang,目前正積極地著手將《Minecraft》移植到 iOS 及其他遊戲平台,也同時開始籌備他們的第二款遊戲作品。 《Minecraft》目前仍處於開放測試階段,收費方式為一次性的付費下載,同時提供了線上網頁、Windows、Mac 及 Linux 多種不同平台的版本,付費後即可自由下載遊玩任一平台的遊戲版本,包括今年即將上市的正式版。不同於一般獨立遊戲常見的固定價格,Persson 將《Minecraft》依各個開發階段訂定出遞增的價格:
採用階梯式的價格策略,不僅在實質意義上獎勵了那些早期投入的「早鳥玩家」,也促使這些玩家成為遊戲最忠實的粉絲,在網路上製作了許多趣味十足的影片,進而吸引更多的新玩家進入《Minecraft》的世界。而預先收費的作法,也使 Persson 獲得足夠的資金支撐遊戲開發前期所需的花費與支出。 《Minecraft》的核心理念是「探索」與「生存」,主要的玩法機制則在於「拆解」與「組合」兩項基本行為。就像是數位遊戲化的樂高積木玩具一樣,在遊戲中,只要你擁有足夠的創意與執行力,每個人都能夠一磚一瓦親手製作出各種物件以及五花八門的建築物,甚至是雲霄飛車。 另外 Persson 也將「拆解」與「組合」的概念運用在遊戲的名稱上。「Minecraft」是個蘊藏多種意義的有趣複合字,將「Minecraft」拆解為「Mine」與「Craft」二字,Craft 代表著精心製作的工藝作品,而 Mine 不僅點出了遊戲具有無限可能的礦藏資源待玩家探索開發,也強化了遊戲中每樣物品皆出自於「我」手工打造的專屬感。 在遊戲玩家心理學 Bartle Test 中,將玩家分為「成就者」(Achievers)、「探險者」(Explorers)、「社交者」(Socializers) 以及「殺手」(Killers) 四種面向。目前市面上大多數的多人線上遊戲,充斥著無止盡的打怪、搶寶、升級以及相互砍殺的螺旋,幾乎全是為了滿足「成就者」(升級衝裝)、「社交者」(組隊聊天)與「殺手」(PK 與公會戰爭)而製作的遊戲產品。
《Minecraft》不同於我們所熟知的多人線上遊戲,而是大大地滿足了「探險者」類型玩家的渴望。我不知道是否有人曾像我一樣想:「我喜歡的做的事是探索世界,而不是升級打怪。」從《Minecraft》所獲得的斐然成績,證明了確實有為數眾多的玩家渴求著這種類型的遊戲,而 Persson 聽到了他們的心聲。 對於以功利導向為主的「成就者」,或以搗蛋作亂為樂的「殺手」玩家來說,《Minecraft》或許不是他們能夠盡興享樂的遊戲。而對於身為遊戲玩家的你來說,可能還是一樣喜歡栩栩如生的美麗畫面以及壯麗史詩般的故事情節,但如同成熟的電影產業與音樂產業可包容且接納各種不同風格的創作品,「遊戲」做為一種創作形式與一種娛樂媒介,同樣擁有形形色色的樣貌風格與無窮無盡的可能性。 在今年的獨立遊戲節盛會中,由去年「Seumas McNally 大獎」得主 Andy Schatz 致詞,摘錄部分內容如下:
我想我們從《Minecraft》的成功案例中所學到的一課,並不是叫我們每個人都該踹開美術設計者、遞辭呈離開公司,然後開始製作一款復古風格的挖礦遊戲。剝除華麗絢爛的視覺外衣,獨立遊戲開發所追求的核心價值,是一份回歸遊戲本質的樸實樂趣與單純感動。在這個資訊過載的複雜世界中,反璞歸真的簡化設計,有時候反而更能深入人心。
不可否認的是,遊戲,確實有著令人沈迷著魔的負面元素存在;但遊戲的另一面,同樣有著讓我們發揮創造力、獲得啟發及產生改變的正向元素。遊戲不只是一項科技數位化的新玩具,不僅止於小男孩夢中的幻想世界,也並非只有暴力與色情的基因存在。以「遊戲」為名,可以為惡,亦可為善。遊戲,不僅止於你我眼前所見的這些內容。 從獨立遊戲作品的身上,我們所看見的,除了多樣化的遊戲風貌以外,更重要的是作品中展現的創造之美與人性精神。我相信「遊戲可以改變世界」——而且是以好的方式改變。
延伸閱讀: |
|
Posted: 30 Mar 2011 07:00 PM PDT 轉眼轉職為無業遊民已經一個月了,
脫離上班生活的這一個月過得還算是不錯。 原本預計這個月要在玩遊戲、看日劇的每日任務中渡過, 但是桌機大概是知道我預計在三月底開始組新電腦, 所以在這個月初就先自殺了。 桌機自殺打亂了原本玩樂的計劃,畢竟現在沒有電腦是活不下去的, 於是組新電腦的計劃就從三月底提前到三月初。 花了兩、三天,新電腦終於組好了, 但因為換了主機板、CPU等一堆配備,系統需要重新啟動, 再加上又買了新硬碟,於是狠下心來開始重灌電腦, 又花了兩、三天的時間好不容易才把所有應用程式設定好。 接下來又手賤的開始整理起書籤, 把一些失聯很久或是連不上的書籤一個一個挑出來修正。 就這樣一搞,第一個月就過了快一半。 被組電腦和重灌系統佔掉了這個月的不少時間, 不過原本訂的某些目標還是有陸續的在做。 首先是比較正經的部份: 在部落格上開了《線上遊戲開發記事》的相關文章, 規劃是以每週一篇的速度,來寫寫這七年在工作上遭遇的狀況, 並且藉由現在事後的檢討,來分析當初這麼做到底是好還是壞。 目前這一系列的文章已經寫了六篇 (包含前言) ,接著會繼續寫下去。 接下是不正經的部份: 這段時間看完了《外交官黑田康作》 (還連電影版的前傳一起看了)、 還有《繼續2 SPEC》、《靈能力者 小田霧響子的謊言》這兩部去年的日劇。 另外為了看電影版的《詐欺遊戲》,順便把電視版的第一、二部重看了一遍。 線上遊戲的部份,儲了《魔獸世界》的月卡, 用主char帶著小char的方式,練了兩隻60級的角色, 分別重新體驗了一下卡林多以及東部王國的任務線以及劇情。 另外試完了一些Web Game和臉書上的遊戲,也看了不少的漫畫和小說, 這個月的生活算是過得多彩多姿吧。 |
|
Posted: 30 Mar 2011 05:46 PM PDT locomalito最新的作品。推上说游戏的创意源于作者的一次生病。经常在生病躺在床上的时候幻想过要是自己能操纵一个微型机器人进入体内,亲自消灭身体里的病菌。 很佩服locomalito,制作游戏的态度确实太认真了。一个免费游戏都会制作精美的游戏海报、DVD封面以及用户手册。
下载请移步官网 |
|
Posted: 30 Mar 2011 05:02 PM PDT 我相信机遇总是存在的。它在不感兴趣又没有准备的人们眼中,不过是一颗转瞬即逝的流星,抓住了是运气,抓不住也是理所当然的。但对于珍惜机遇的人来说,它却是一颗结实的有待萌芽的种子,即便现在的它距离开花结果遥遥无期,只要细心栽培,总有一天,定会绽放出美丽的色彩。 中国ACG无产业——负面的客观因素你们大抵听得耳朵起茧了。现在若机遇来临,你又愿意为主观的萌芽付出一点自己的汗水吗?事实上,接下来我想鼓励大家去做的事,说“汗水”也真有点夸张了。 在今年1月组织匿名ACG社会调查时,我的出发点纯粹是自娱自乐,好对我这5-6年的吐槽写作有个交代。恰巧的是,某家日本宅公司也在评估中国的ACG消费能力。而我们的报告,经过朋友的层层转告,似乎也引起了该公司的注意。 犹如二次元一般,就是这么一个契机,让某些本来不会发生的事情,变成了有可能发生的事情。而这次,我们希望把这个可能性,托付给深爱它的人去维护。 于是就有了这个全新的调查:《你想要的ACG来了,请决定它的未来吧!》。旅客们或许已经在哪里见过这份调查,若没有,相信在填完之后也会了解这份调查的含义。 也许你会问:“这些提问,能给中国ACG带来什么改变?” 那请问:“假如‘中国ACG无产业’是已知,那中国的ACG产业就是一朵没人见过的花。你又怎么能以种子的外表,判断它成长后的姿态呢?” 希望各位不要吝啬自己的心声,踊跃参与上述调查。 (最后是补充解释:这次的问卷设计和结果收集依旧是本人,我已经和日本方确认最终数据将匿名化公开,任何个人数据均不会转让第三方或置于商业用途;而本人亦不从中收取任何好处。虽然日本方提出满足我的一个愿望,但我很怀疑QB会在我接受后找我追债,所以目前为止没有接受他们的好意。如有任何其他疑问,请在本文留言提出。) (image credit: h2so4) |
|
Posted: 30 Mar 2011 10:13 AM PDT 今天来看一下 mark 过程是怎样实现的。 所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。 开始的两个状态和 mark 过程有关。 初始的 GCSpause 状态下,执行 markroot 函数。我们来看一下 markroot 的代码。见 lgc.c 的 501 行。 /* mark root set */ static void markroot (lua_State *L) { global_State *g = G(L); |
g->gray = NULL; g->grayagain = NULL; g->weak = NULL; |
markobject(g, g->mainthread); /* make global table be traversed before main stack */ markvalue(g, gt(g->mainthread)); markvalue(g, registry(L)); markmt(g); g->gcstate = GCSpropagate; } 主要是把状态复位的操作以及标记根节点。 lua 采用是 Tri-colour marking GC 算法 。需要维护一个灰色节点集。这里用 gary 存放。grayagain 保存着需要原子操作标记的灰色节点。 weak 保存着需要清理的 weak 表。 这里的 markobject 和 markvalue 都是用宏实现的。区别仅在于操作的是 GCObject 还是 TValue 。最终都是通过调用 reallymarkobject 实现的。markmt 也是直接 mark 的 global state 中的若干元表。这些元表作用于基本的几个数据类型。这些加起来成为整个数据的根。对 lua 语言有所了解的话,不难理解这几行实现。 核心的实现见 lgc.c 的 69 行 static void reallymarkobject (global_State *g, GCObject *o) { lua_assert(iswhite(o) && !isdead(g, o)); white2gray(o); switch (o->gch.tt) { case LUA_TSTRING: { return; } case LUA_TUSERDATA: { Table *mt = gco2u(o)->metatable; gray2black(o); /* udata are never gray */ if (mt) markobject(g, mt); markobject(g, gco2u(o)->env); return; } case LUA_TUPVAL: { UpVal *uv = gco2uv(o); markvalue(g, uv->v); if (uv->v == &uv->u.value) /* closed? */ gray2black(o); /* open upvalues are never black */ return; } case LUA_TFUNCTION: { gco2cl(o)->c.gclist = g->gray; g->gray = o; break; } case LUA_TTABLE: { gco2h(o)->gclist = g->gray; g->gray = o; break; } case LUA_TTHREAD: { gco2th(o)->gclist = g->gray; g->gray = o; break; } case LUA_TPROTO: { gco2p(o)->gclist = g->gray; g->gray = o; break; } default: lua_assert(0); } } 它按 GCObject 的实际类型来 mark 它。reallymarkobject 的时间复杂度是 O(1) 的,它不会递归标记相关对象,虽然大多数 GCObject 都关联有其它对象。 保证 O(1) 时间使得标记过程可以均匀分摊在逐个短小的时间片内,不至于停止世界太久。这里就需要用到三色标记法。 reallymarkobject 进入时,先把对象设置为灰色(通过 white2gray 这个宏)。然后再根据具体类型,当一个对象的所有关联对象都被标记后,再从灰色转为黑色。 因为 TSTRING 一定没有关联对象,而且所有的字符串都是统一独立处理的。这里可以做一个小优化,不需要设置为黑色,只要不是白色就可以清理。所以此处不必染黑。 但 TUSERDATA 则不同,它是跟其它对象一起处理的。标记 userdata 就需要调用 gray2black 了。另外,还需要标记 userdata 的元表和环境表。 TUPVAL 是一个特殊的东西。在 lua 编程,以及写 C 代码和 lua 交互时,都看不到这种类型。它用来解决多个 closure 共享同一个 upvalue 的情况。实际上是对一个 upvalue 的引用。问什么 TUPVAL 会有 open 和 closed 两种状态?应该这样理解。 当一个 lua 函数本执行的时候,和 C 语言不一样,它不仅可以看到当前层次上的 local 变量,还可以看到上面所有层次的 local 变量。这个可见性是由 lua 解析器解析你的 lua 代码时定位的(换句话说,就是在“编译”期决定的)。那些不属于你的函数当前层次上的 local 变量,就称之为 upvalue 。upvalue 这个概念是由 parser 引入的。在 Lua 中,任何一个 function 其实都是由 proto 和运行时绑定的 upvalue 构成的。proto 将如何绑定 upvalue 是在 parser 生成的 bytecode 里描述清楚了的。如果对这一块的实现代码有兴趣,可以参考 lvm.c 的 719 行: case OP_CLOSURE: { Proto *p; Closure *ncl; int nup, j; p = cl->p->p[GETARG_Bx(i)]; nup = p->nups; ncl = luaF_newLclosure(L, nup, cl->env); ncl->l.p = p; for (j=0; j<nup; j++, pc++) { if (GET_OPCODE(*pc) == OP_GETUPVAL) ncl->l.upvals[j] = cl->upvals[GETARG_B(*pc)]; else { lua_assert(GET_OPCODE(*pc) == OP_MOVE); ncl->l.upvals[j] = luaF_findupval(L, base + GETARG_B(*pc)); } } setclvalue(L, ra, ncl); Protect(luaC_checkGC(L)); continue; } 我们会看到,调用 一旦函数返回,某些堆栈上的变量就会消失,这时,还被某些 upvalue 引用的变量就必须找个地方妥善安置。这个安全的地方就是 TUPVAL 结构之中。修改引用指针的结果,就被认为是 close 了这个 TUPVAL 。相关代码可以去看 lfunc.c 中 走题太多。现在回来看 TUPVAL 的 mark 过程。mark upvalue 引用的对象之后,closed TUPVAL 就可以置黑了。为何 open 状态的 TUPVAL 需要留为灰色待处理呢?这是因为 open TUPVAL 是易变的。GC 分步执行,我们无法预料在 mark 流程走完前,堆栈上被引用的数据会不会发生变化。 事实上,在 mark 的最后一个步骤,我们会看到所有的 open TUPVAL 被再次 mark 一次。做这件事情的函数是 lgc.c 516 行的: static void remarkupvals (global_State *g) { UpVal *uv; for (uv = g->uvhead.u.l.next; uv != &g->uvhead; uv = uv->u.l.next) { lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); if (isgray(obj2gco(uv))) markvalue(g, uv->v); } } 其它的数据类型处理都很简单。把自己挂在 gray 链表上即可。这条链表将在后面的 GCSpropagate 步骤被处理到。 GC 状态为 GCSpropagate 时,singlestep 就是调用 propagatemark 处理 global state 中的 gray 链。 今天白天因为有些其他工作做,所以没有留太多时间写这篇 Blog ,propagatemark 内部的细节分析得等到下一篇了。从总体看来,propagatemark 标记了各种 GCObject 的直接相关级的对象。 到这里,我们可以回答昨天遗留下来的一个问题:GC 的分步过程是如何控制进度的。 从前面分析过的代码上来,singlestep 的返回值决定了 GC 的进度。在 GC 进行过程中,如何知道做完整个 GC 流程的时间,以及目前做的进度呢? 我们可以依靠的数据只有内存管理器辖下的内存数量。大致上,整个 GC 需要的总时间和 GCObject 的数量成正比。但每种类型的 GCObject 的处理时间复杂度却各不相同。仔细衡量每种类型的处理时间差别不太现实,它可能和具体机器也有关系。但我们却可以大体上认为,占用内存较多的对象,处理时间也更长一点。这里不包括 string 和 userdata 。它们即使占用内存较多,但却没有增加 mark 的时间。虽然不太精确,但对 table ,function ,thread 这些类型来说,这种估算方式却比较接近。 所以在 propagatemark 过程中,每 mark 一个灰色节点,就返回了它实际占用的内存字节数作为 quantity 值。 如果回顾昨天看过的代码。 |
l_mem lim = (GCSTEPSIZE/100) * g->gcstepmul; if (lim == 0) lim = (MAX_LUMEM-1)/2; /* no limit */ g->gcdept += g->totalbytes - g->GCthreshold; do { lim -= singlestep(L); if (g->gcstate == GCSpause) break; } while (lim > 0); |
我们就能理解,当 gcstepmul 为 100 时,每次由 |
if (g->gcstate != GCSpause) { if (g->gcdept < GCSTEPSIZE) g->GCthreshold = g->totalbytes + GCSTEPSIZE; /* - lim/g->gcstepmul;*/ else { g->gcdept -= GCSTEPSIZE; g->GCthreshold = g->totalbytes; } } |
依赖自动 GC ,只有 totalbytes 持续增长才会驱动 我们也可以看到,自动 GC 过程处于 sweep 流程时,收集器也并不那么急于释放内存了。因为释放内存会导致 totalbytes 减少,如果没有新的对象分配出来,totalbytes 是不会增加到触发新的 手动分步 GC 则是另一番光景。 等待所有灰色节点都处理完,我们就可以开始清理那些剩下的白色节点了吗?不,因为 mark 是分步执行的,中间 lua 虚拟机中的对象关系可能又发生的变化。所以在开始清理工作前,我们还需要做最后一次扫描。这个过程不可以再被打断。 让我们看看相关的处理函数。见 lgc.c 526 行: static void atomic (lua_State *L) { global_State *g = G(L); size_t udsize; /* total size of userdata to be finalized */ /* remark occasional upvalues of (maybe) dead threads */ remarkupvals(g); /* traverse objects cautch by write barrier and by 'remarkupvals' */ propagateall(g); /* remark weak tables */ g->gray = g->weak; g->weak = NULL; lua_assert(!iswhite(obj2gco(g->mainthread))); markobject(g, L); /* mark running thread */ markmt(g); /* mark basic metatables (again) */ propagateall(g); /* remark gray again */ g->gray = g->grayagain; g->grayagain = NULL; propagateall(g); |
udsize = luaC_separateudata(L, 0); /* separate userdata to be finalized */ |
marktmu(g); /* mark `preserved' userdata */ udsize += propagateall(g); /* remark, to propagate `preserveness' */ cleartable(g->weak); /* remove collected objects from weak tables */ |
/* flip current white */ g->currentwhite = cast_byte(otherwhite(g)); |
g->sweepstrgc = 0; g->sweepgc = &g->rootgc; |
g->gcstate = GCSsweepstring; |
g->estimate = g->totalbytes - udsize; /* first estimate */ } |
代码中注释的很详细。propagateall 是用来迭代所有的灰色节点的。所以每个关键步骤结束后,都需要调用一下保证处理完所有可能需要标记的对象。第一个步骤是那些 open 的 TUPVAL ,在前面已经提及。然后是处理弱表。 弱表是个比较特殊的东西,这里,弱表需要反复 mark ,跟 write barrier 的行为有关,超出了今天的话题。write barrier 还会引起另一些对象再 mark ,即对 grayagain 链的处理。都留到明天再谈。 接下来处理 userdata 的部分, 所以的一切都标记完后,那些不被引用的对象就都被分离出来了。可以安全的清理所有尚被引用的弱表。cleartable 就是干的这件事情。实现没有什么好谈的,一目了然。这里也不列代码了。不过值得一提的是对可以清理的项的判定函数:iscleared 。见 lgc.c 的 329 行。 /* ** The next function tells whether a key or value can be cleared from ** a weak table. Non-collectable objects are never removed from weak ** tables. Strings behave as `values', so are never removed too. for ** other objects: if really collected, cannot keep them; for userdata ** being finalized, keep them in keys, but not in values */ static int iscleared (const TValue *o, int iskey) { printf("is cleared %p,%d\n", o,iskey); if (!iscollectable(o)) return 0; if (ttisstring(o)) { stringmark(rawtsvalue(o)); /* strings are `values', so are never weak */ return 0; } return iswhite(gcvalue(o)) || (ttisuserdata(o) && (!iskey && isfinalized(uvalue(o)))); } 如果你对 for userdata being finalized, keep them in keys, but not in values 这一句表示困惑的话。可以读读 Roberto 对此的解释 。 和那些被清理掉的 userdata 一样。当 userdata 被标为白色,在下一个 GC 周期中,它便不再认为是 isfinalized 状态。对应弱表中的 k/v 就被真的被清除掉了。 |
|
Noitu Love 2作者新作The Iconoclasts Posted: 30 Mar 2011 09:08 AM PDT 游戏延续了Joakim Sandberg游戏的一贯风格,操作爽快,画面华丽。 Noitu Love 2的作者Joakim Sandberg,终于出新的作品了。在推上Joakim Sandberg对自己近期的工作不是很满意,一直没有新作品出来,貌似经济上出现了问题,希望他能振作起来。
游戏还只是demo。希望Joakim Sandberg能继续完成这个作品。 下载请移步官网。 |
|
Posted: 01 Apr 2011 01:43 AM PDT GC 中最繁杂的 mark 部分已经谈完了。剩下的东西很简单。今天一次可以写完。 sweep 分两个步骤,一个是清理字符串,另一个是清理其它对象。看代码,lgc.c 573 行: case GCSsweepstring: { lu_mem old = g->totalbytes; sweepwholelist(L, &g->strt.hash[g->sweepstrgc++]); if (g->sweepstrgc >= g->strt.size) /* nothing more to sweep? */ g->gcstate = GCSsweep; /* end sweep-string phase */ lua_assert(old >= g->totalbytes); g->estimate -= old - g->totalbytes; return GCSWEEPCOST; } case GCSsweep: { lu_mem old = g->totalbytes; g->sweepgc = sweeplist(L, g->sweepgc, GCSWEEPMAX); if (*g->sweepgc == NULL) { /* nothing more to sweep? */ checkSizes(L); g->gcstate = GCSfinalize; /* end sweep phase */ } lua_assert(old >= g->totalbytes); g->estimate -= old - g->totalbytes; return GCSWEEPMAX*GCSWEEPCOST; } 在 GCSsweepstring 中,每步调用 sweepwholelist 清理 strt 这个 hash 表中的一列。理想状态下,所有的 string 都被 hash 散列开没有冲突,这每一列上有一个 string 。我们可以读读 lstring.c 的 68 行: if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2) luaS_resize(L, tb->size*2); /* too crowded */ 当 hash 表中的 string 数量(nuse) 大于 hash 表的列数(size) 时,lua 将 hash 表的列数扩大一倍。就是按一列一个元素来估计的。 值得一提的是,分布执行的 GC ,在这个阶段,string 对象是有可能清理不干净的。当 GCSsweepstring 步骤中,step 间若发生以上 string table 的 hash 表扩容事件,那么 string table 将被 rehash 。一些来不及清理的 string 很有可能被打乱放到已经通过 GCSsweepstring 的表列里。一旦发生这种情况,部分 string 对象则没有机会在当次 GC 流程中被重置为白色。在某些极端情况下,即使你调用 fullgc 一次也不能彻底的清除垃圾。 关于 string 对象,还有个小地方需要了解。lua 是复用相同值的 TString 的,且同值 string 绝对不能有两份。而 GC 的分步执行,可能会导致一些待清理的 TString 又复活。所以在它在创建新的 TString 对象时做了检查,见 lstring.c 86 行: if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) { /* string may be dead */ if (isdead(G(L), o)) changewhite(o); return ts; } 相同的问题也存在于 upvalue 。同样有类似检查。 此处 GCSWEEPCOST 应该是一个经验值。前面我们知道 singlestep 返回的这个步骤大致执行的时间。这样可以让 GCSsweep 清理的是整个 GCObject 链表。这个链表很长,所以也是分段完成的。记录遍历位置的指针是 sweepgc ,每次遍历 GCSWEEPMAX 个。无论遍历是否清理,开销都是差不太多的。因为对于存活的对象,需要把颜色位重置;需要清理的对象则需要释放内存。每趟 GCSsweep 的开销势必比 GCSsweepstring 大。大致估算时间为 GCSWEEPMAX*GCSWEEPCOST 。 真正的清理工作通过 lgc.c 408 行的 sweeplist 函数进行。 static GCObject **sweeplist (lua_State *L, GCObject **p, lu_mem count) { GCObject *curr; global_State *g = G(L); int deadmask = otherwhite(g); while ((curr = *p) != NULL && count-- > 0) { if (curr->gch.tt == LUA_TTHREAD) /* sweep open upvalues of each thread */ sweepwholelist(L, &gco2th(curr)->openupval); if ((curr->gch.marked ^ WHITEBITS) & deadmask) { /* not dead? */ lua_assert(!isdead(g, curr) || testbit(curr->gch.marked, FIXEDBIT)); makewhite(g, curr); /* make it white (for next cycle) */ p = &curr->gch.next; } else { /* must erase `curr' */ lua_assert(isdead(g, curr) || deadmask == bitmask(SFIXEDBIT)); *p = curr->gch.next; if (curr == g->rootgc) /* is the first element of the list? */ g->rootgc = curr->gch.next; /* adjust first */ freeobj(L, curr); } } return p; } 后半段比较好理解,当对象存活的时候,调用 makewhite ;死掉则调用 freeobj 。sweeplist 的起点并不是从 rootgc 而是 sweepgc (它们的值可能相同),所以对于头节点,需要做一点调整。 前面的 sweep open upvalues of each thread 需要做一点解释。为什么 upvalues 需要单独清理?这要从 upvalue 的储存说起。 upvalues 并不是放在整个 GCObject 链表中的。而是存在于每个 thread 自己的 L 中(openupval 域)。为何要这样设计?因为和 string table 类似,upvalues 需要唯一性,即引用相同变量的对象只有一个。所以运行时需要对当前 thread 的已有 upvalues 进行遍历。Lua 为了节省内存,并没有为 upvalues 多申请一个指针放置额外的链表。就借用 GCObject 本身的单向链表。所以每个 thread 拥有的 upvalues 就自成一链了。相关代码可以参考 lfunc.c 53 行处的 但也不是所有 upvalues 都是这样存放的。closed upvalue 就不再需要存在于 thread 的链表中。在 unlinkupval(uv); setobj(L, &uv->u.value, uv->v); uv->v = &uv->u.value; /* now current value lives here */ luaC_linkupval(L, uv); /* link upvalue into `gcroot' list */ 另,某些 upvalue 天生就是 closed 的。它们可以直接通过 按道理来说,对 openvalues 的清理会增加单次 **sweeplist 的负荷,当记入 singlestep 的返回值。但这样会导致 sweeplist 接口变复杂,实现的代价也会增加。鉴于 thread 通常不多,GC 开销也只是一个估算值,也就没有特殊处理了。 GC 的最后一个流程为 GCSfinalize 。 它通过 GCTM 函数,每次调用一个需要回收的 userdata 的 gc 元方法。见 lgc.c 的 446 行: static void GCTM (lua_State *L) { global_State *g = G(L); GCObject *o = g->tmudata->gch.next; /* get first element */ Udata *udata = rawgco2u(o); const TValue *tm; /* remove udata from `tmudata' */ if (o == g->tmudata) /* last element? */ g->tmudata = NULL; else g->tmudata->gch.next = udata->uv.next; udata->uv.next = g->mainthread->next; /* return it to `root' list */ g->mainthread->next = o; makewhite(g, o); tm = fasttm(L, udata->uv.metatable, TM_GC); if (tm != NULL) { lu_byte oldah = L->allowhook; lu_mem oldt = g->GCthreshold; L->allowhook = 0; /* stop debug hooks during GC tag method */ g->GCthreshold = 2*g->totalbytes; /* avoid GC steps */ setobj2s(L, L->top, tm); setuvalue(L, L->top+1, udata); L->top += 2; luaD_call(L, L->top - 2, 0); L->allowhook = oldah; /* restore hooks */ g->GCthreshold = oldt; /* restore threshold */ } } 代码逻辑很清晰。需要留意的是,gc 元方法里应避免再触发 GC 。所以这里采用修改 GCthreshold 为比较较大值来回避。这其实不能完全避免 GC 的重入。甚至用户错误的编写代码也可能主动触发,但通常问题不大。因为最坏情况也只是把 GCthreshold 设置为一个不太正确的值,并不会引起逻辑上的错误。 后记: 终于把这个系列写完了。接下来的工作,我想做一些分析,看能否以最小代价(尽量少用锁)改造出一个多线程版本的 GC 。 |
|
Posted: 31 Mar 2011 10:54 PM PDT 這裡記錄了我的點點滴滴!
所有一切美ㄉ回憶~幸福ㄉ全紀錄ㄛ~
還有我所有好朋友的紀錄~
還有創業的分享唷~
請多多指教喔~
|
|
Posted: 27 Mar 2011 11:02 PM PDT 手作創意設計 § 高質感&細膩度 §
|
|
Posted: 02 Apr 2011 03:01 AM PDT 上海骏梦网络科技有限公司旗下的中国最大动漫卡通页游平台Haohaowan.com,100-500万人民币高价诚征卡通动漫网页游戏大陆地区独代合作,独代卡通动漫网页游戏,题材和游戏类型不限制。 联系方式: 类别:默认分类 查看评论 |
|
Posted: 02 Apr 2011 01:51 AM PDT 前几天分析了 lua gc 的实现细节。这里先汇总一下:
btw, 阅读 lua 的代码是段很有趣的经历。但如果是重头读 lua 的源码,建议从简单的部分读起。gc 恰巧是最难的一段。LuaJIT 的作者 Mike 在这方面很有发言权,他在回答 Which OSS codebases out there are so well designed that you would consider them 'must reads'? 这个问题时,列过一张推荐阅读次序表。我的观点一致,Lua 是少有的设计优秀,C 程序员必读的代码。 从小处说,如果想进一步改进,那是必须仔细研读的(但这绝对不是主要原因)。Lua 的 GC 实现的已经相当不错了,想找出实现中的问题,改进算法,可能很难。如果有多核处理器,那么把 GC 放到一个独立线程里去做倒是可以考虑的。 如果没有前面的研读,恐怕只能用一把大锁来安全处理多线程的 GC 了。lua 的代码为多线程安全预留了 但是,用它来实现多线程的 gc 是完全没有意义的。GC 部分永远不能并行处理。这个东西只是为了多线程访问同一个 lua state 提供了安全保障而已。 下面我们看看能做点什么。 lua 可以自定义内存管理器。只是一个 但是, 如果你前面有读完 GC 的代码,你会发现,其实 Lua 使用内存是很有规律的。它会在 GC 的 sweep 之前只增不减。然后大批量的释放内存。如果我们想把 GC 放在独立线程中,表面上看需要保证内存管理器的线程安全。但实际上不必要做的那么严格。 释放内存一定只存在 sweep 流程中(除非用户主动调用了 内存申请可以是在一整块内存上简单的循序切分,即,每要一块内存,就简单的从整块中切下来(只是调整一下指针),当 sweep 发生时,把备用内存块切换到新的整块上去,让 sweep 流程可以安全在老的内存上工作。因为没有 cookie ,不用链表,sweep 对内存管理器的操作和逻辑主线程是完全独立的,不需要任何锁。 sweep 过程可以是缓慢的(因为已经独立开去),它可以先将所有释放的内存用链表串起来,然后用一个简单的链表冒泡排序,之后就可以把释放的内存块做合并了。少量的用户主动调用的内存释放(一般也是在 userdata 的 gc 元方法里),可以放到请求一个队列中,留到 GC 线程统一处理。除了用户主动调用的内存释放操作,还有一个 realloc 请求,需要释放旧有的空间,申请新的空间。这些更常见,也需要记录。 sweep 完成后,通常可以回收到整块的连续内存,就可以把最大的一块拿来下次使用了。 内存管理器的优化倒不一定必须在独立线程 GC 中用。完全可以单独写一个提供给现在不加修改的 lua 。如果想优化上面的算法,那步对 freelist 的冒泡排序以及整理,倒是可以私下开一个线程。 我们不必把整个 GC 模块都搬到独立线程中去,只考虑那些耗时的工作即可。这样可以最大限量的避免修改 lua 已有的代码。比如只需要考虑 singlestep 里的大运算量部分。 先看 sweep 流程的并行化。关键在于 GCSpropagate 流程中的 propagatemark 函数。atomic 函数完全可以放在主逻辑线程中运行。 propagatemark 的原则是一次只处理一个 GCObject 对象。简单的修改方法是给正在处理的对象加锁。自然不需要为每个 GCObject 都加一个锁,那样太浪费内存。既然一次只有一个,那么在锁里记录正在处理的对象即可。对 TTABLE , TFUNCTION , TTHREAD , TPROTO 的修改都判定这个锁。主逻辑里,被锁 block 住的可能性是非常低的,那只在 GC 刚好运行到同一个对象时才会碰到。 但是对锁的判断可能依然是一个比较大的开销。我们可以先判定 GC 的状态是否处于 GCSpropagate ,这个判断是不需要锁的(因为 gc 的流程状态切换在主线程中)。只要在 GCSpropagate 流程才需要做锁的处理。 TTHREAD 也是一个开销比较大的地方,lua gc 的原始代码中,特地把 thread 放到了 gcagain 里,推迟到 atomic 阶段再扫描一次,而不是对 stack 的修改都做一个特别的 write barrier 也有这方面的顾虑。毕竟大多数的 lua 运算都是基于 local 的。这相当于所有的 local 变量访问都要做 barrier 。 我的解决方案是,当 GC 扫描到 TTHREAD 时,暂时 stop the world ,而不是做锁。这个 stop 当然要经过协调。原本调用 另一个需要特别处理的 write barrier 。write barrier 会比以前稍昂贵,这里也需要仔细考量一下。 write barrier 做的工作其实是当 A 关联到 B 时,检查是否需要把 A mark 一下(当 B 不是 table),或把 B 放入 gray 链(当 B 是一个 table)。如果改成多线程版本的话,直接判断 marked 位状态变得不太合适。我建议这样实现:先判定 GC 是否处于 GCSpropagate 以决定是否需要 barrier 。如果需要,则把需要关联的 A 和 B 放进一个 FIFO 的管道。然后在 GC 线程中,每做一个 singlestep 就检查这个管道,逐个处理 barrier 。极端情况下,这个管道上的 barrier 请求速度快过处理速度(需要实测看是否真的可能发生),则采用上面 TTHREAD 的处理方式暂停主逻辑线程。 GCSsweepstring 流程,在 lstring.c 里加一把锁是很容易并行化的。这个锁只在创建新 string 时才会遇到,所以不会读主逻辑有太大的影响。 GCSsweep 流程几乎是可以直接并行处理的。因为 GCObject 是条单向链表(分为两段,userdata 是后半段),增加新节点都是在链表头加,而 sweep 则都是修改链表中间,相互不影响。需要特殊对待的是 open upvalue ,这个在之前分析代码时已经讨论过。匹配新的 upvalue 时应该加锁处理。这个过程实际运行时触发不会很频繁,写的时候需要小心而已。 GCSfinalize 不太推荐在独立线程处理,毕竟它会调用一段 lua 代码,同一个 lua state 中的代码是不合适并行化的。 以上即总体思路,期望可以顺利完成这项工作。 |
|
Posted: 01 Apr 2011 11:37 PM PDT 本文基本上是这篇(http://www.ovaistariq.net/490/a-step-by-step-guide-to-upgrading-to-mysql-5-5/)的翻译。mysql 5.5 不仅宣传工作做得好,其实 mysql server 本身也的确是大幅增进了性能,而且 Inno DB 插件的性能也大增。但是没有啥比较好的升级到 Mysql 5.5 的指南,所以我就自己动手写了一个,这也没啥大不了的嘛!
|
|
昆仑在腾讯平台月分成收入超800万元(SNS|SocialGame|facebook|zynga) Posted: 02 Apr 2011 01:36 PM PDT 3月31日消息,据北京昆仑万维科技有限公司透露,加入腾讯社区开放平台后,公司运营的包括“功夫英雄”在内的多款游戏月分成总额已经突破了800万元。据信息显示,昆仑旗下的产品“功夫英雄”、“超级职场”等多款游戏总注册用户数量接近4000万,主要产品的日均活跃用户已超过500万。 对此,昆仑万维CEO周亚辉表示,昆仑万维现阶段的目标是实现单款产品月分成突破1000万。去年上半年接入腾讯社区开放平台后,在半年多的时间里多款产品均取得了不错的成绩。 据了解,目前昆仑万维共有4款游戏产品接入了腾讯社区开放平台,其中包括“功夫英雄”、“超级职场”等已经分别在QQ空间和腾讯朋友上运营。 据了解,腾讯社区开放平台已经上线的应用将近100个,包括游戏类、生活类、商业类、就业类、经营类、工具类等题材,其中既包括知名互联网公司的作品,也包括一些个人合作者的作品。 此前,据腾讯公布的2010年业绩显示,公司已在“开放”方面做好准备:公司增值服务收入高达180亿,其中有约30%都是通过合作伙伴来做的。马化腾称,例如,互动娱乐增值服务的大部分新增收入就来自于合作伙伴开放的产业,未来将有更多关于开放的举措。 业内人士分析认为,作为腾讯战略转型的重要举措之一,腾讯自去年推出社区开放平台以来,其为合作伙伴带来的除了可观的分成收入、流量等,开放计划在腾讯的重要性再次升级
类别:默认分类 查看评论 |
|
Posted: 01 Apr 2011 11:02 PM PDT 長期看銀狐部落格文章的網友應該都知道,
每年的四月一號愚人節銀狐都會轉載Blizzard的愚人節新聞。 今年國內的遊戲新聞網站手腳很快,再加上銀狐現在正在『打混期』, 所以銀狐就沒搶在第一手的時間翻譯相關的新聞。 不過為了維持本部落格每年的傳統,並將這些新聞留個存檔, 銀狐還是整理了今年Blizzard在愚人節發表的四則新聞。 星海爭霸:體感版 (Starcraft : Motion Overdrive) (原始網頁在此) 今年Blizzard主打的愚人節新聞,就是這個『體感版』的星海爭霸。 遊戲將移植到Microsoft的XBOX360,並且支援Kinect的操作模式, 為此,Blizzard還特別製作了一段遊戲操作的實際影片: 看影片真的會覺得這是真的吧,不過請各位記得這是愚人節的玩笑, 如果您有那位朋友再大驚小怪的傳這影片給你, 還很興奮的說「星海要移植到XBOX360上」,你知道該怎麼回應了吧。 魔獸世界地城小幫手 (World of Warcraft Dungeon Helper) (原始網頁在此) 為了幫助眾多在《魔獸世界》地城中奮戰的玩家, 在下次的更新將會推出『地城小幫手』這個工具。 這個小幫手將不時的提供您關於副本的說明, 並且協助您各種有用的技巧與提示。 有使用過Microsoft Office系統軟體的人應該都注意到了, 這個『地城小幫手』不就是那個『迴紋針』的變化版嗎? 而且這個小幫手的名字Crabby,很明顯的是拿『鬼蟹』來開玩笑。 魔獸世界新副本:永暗墓穴 (Tomb of Immortal Darkness) (原始網頁在此) 另一項《魔獸世界》的更新則是最新的副本:永暗墓穴。 這個副本的特色就是裡面一片黑漆漆,玩家幾乎看不到四周, 而配合這個新副本的推出,自然會有新的掉寶以及成就的項目。 比起前兩項新聞,這則新聞的威力就沒有那麼大了。 不過看到全套的地圖設計、掉寶、成就項目以及那一段冒險影片, 也看得出來Blizzard在『製造』這些愚人節新聞時花的心血。 暗黑破壞神手機版赫拉迪克方塊 (Diablo3 Horadrapp) (原始網頁在此) 使用智慧手機的玩家有福了,現在你可以下載這個最新的App, 在您的手機上體驗《暗黑破壞神》中有名的『赫拉迪克方塊』。 你可以將手機上的各種App丟到裡面,試著合成出各種奇妙的應用程式。 有使用智慧手機的人看到這則新聞是不是心癢癢的呢, 這則新聞讓銀狐想到以前在Windows上有個小小的應用程式, 玩家可以將Windows應用程式的Icon丟進去,然後Icon就會進行對戰。 當然這個Diablo3的App一看就知道是在惡搞的, 因為在手機上那幾個Visagebook、Angry Imps的應用程式就是在惡搞, 而這一則新聞,當然又是Blizzard搞出來的愚人節新聞。 如果各位對於這些愚人節新聞有興趣, 建議各位到原始的網頁上去看看,體驗一下Blizzard的用心。 至於明年Blizzard又會搞些什麼,就讓我們期待吧。 |
|
Posted: 01 Apr 2011 08:58 PM PDT 奇虎360上市后的几点疑问
恭喜奇虎360上市,中国互联网行业中,代表个人用户客户端应用的公司能够上市,为今后互联网的发展起到了开拓作用,功高志伟。
|
|
Google与中国政府达成共识,将通过Chrome在中国各ISP推广DNT服务 Posted: 01 Apr 2011 06:38 AM PDT
一度因为搜索内容和中国政府闹僵关系的跨国企业Google在最近一次新闻发布会上称,已与电信部,中宣部和公安部达成多方协议,将在Chrome 13中推出类似Firefox 4的DNT服务。DNT,全称Do Need Track(需要跟踪),将通过与多家电信ISP的根服务器通信,及时汇报谷歌旗下各网站访问者的搜索历史与个人信息,确保Chrome用户在访问任何网站时,都能得到最及时最便捷的贴心提示与专业指导。 据悉,Do Need Track技术最早启用于Google云服务的数据中心。该中心的发言人在新闻会上称,“Google的数据中心遍布全球,每个数据中心内都栖息了300-500万只鸽子。养鸽工程师每天都要花费很多时间寻找传送数据时丢失的鸽子,为此我们自主研发了DNT系统,通过卫星系统定位那些喜欢标新立异的鸽子,做到了及时捕杀,事后红烧的有效管理。” 中国外交部发言人今天亦对Google DNT的发布表示欢迎。在被思维简单时常天真的记者问及该软件的保密性与安全性时发言人称,已从Google Chrome的开发团队得到保证,Chrome 13允许用户完全取消DNT服务。用户只需带上自己的电脑与身份证到就近的派出所,即可在公安叔叔的录像下浏览无DNT技术的互联网。发言人称这套便民措施将在4个大城市率先执行,预计在2025年将扩展到25个城市。 那使用非Google Chrome浏览器的网络用户是不是就无法获得这项福利政策了呢?记者通过电信部门了解到,基于DNT向后兼容的特性,ISP已经为所有用户启用了一定程度的跟踪功能。用户在使用Google搜索和Gmail时应该能注意到类似“安全防护”和“国网准证”的新功能。电信部门的有关负责人称,将进一步优化服务器端的跟踪功能,力争给中国网民营造一个“悠闲上网,安逸喝茶”的好环境。 来自QB通信社的报道。感谢两手抓两手都要硬洗头社记者的协作。 |
|
Posted: 02 Apr 2011 10:28 PM PDT © Wade RockettNew news for PC gamers! The demo for Crysis 2 will be available March 1st to all PC gamers. On March 22nd the whole game will also be available. All you Crysis fans who have been waiting for a number two can now relax and play.
The much loved shooter game is very exciting and if you are a PC gamer and haven't tried it; you have to. If you are a gamer then it is a must to get all sorts ...
|
|
Posted: 02 Apr 2011 11:28 PM PDT http://www.gamedev.net/page/news/index.html/_/general-news/the-daily-gamedevnet-r11956
Mar 31 2011 08:08 PM | mittens in General News 嗨,GameDev.net 的读者们,这里是 Trent Middlename Polack 的最后一篇 GameDev.net 的日报了。我想我以后要少写一些新闻,更多的做一些内容的写作,或者其他什么事情。 我大约在三年前的开始写日报的(Xw.Y: 天哪,真不愿意回忆,貌似翻译这份专栏也有两年半了),回想起最初的那些日子,我还是一个拥有者明亮的大眼睛的年轻游戏程序员,为 Stardock 工作(备注:现在依然是明亮大眼睛的年轻人)。我很喜欢 GameDev.net,但为什么并没有人在真正的讨论游戏呢!每个人都在讨论如何做游戏,但我们真的很少讨论游戏本身。我想这应该改变一下,所以我询问了 Drew Sikora 先生,问他是否能给我一个机会来占用一点主页,做一个日报的专栏。在这个专栏中,我能够讨论一些游戏的事情,还有一些开发的事情,但总是围绕着游戏的角度来展开。我觉得我这个想法很棒,我想大家应该也认同,因为有一阵子的日报中,总是有不少跟贴来讨论游戏,那是一段愉快的时光。当然大部分时候可能没有太多跟贴,我想这是应该改变的,日报的编辑们(Mike,Drew 还有偶尔的 Tiffany——如果你想成为编辑也可以联系她)还会继续为大家提供内容。 总之,那已经是三年前了,时间真长。现在我已经是一个策划了,而不是程序员了。我住在 Austin, TX,也不再 Detroit, MI 附近了。如果过去这段时间大家一直在读这份专栏,那应该坚持。这么多年来大家已经如同朋友一般。 有时候,如同昨天一样,有大量的工作室在裁员,这是业内一个很正常的现象,这对每个受到波及的人都是坏事,希望大家都能尽快落脚。 这里应该提醒大家注意,这个行业是一个充满了竞争和挑战的行业,但我们都在这里是因为我们都热爱游戏,游戏有的时候是一种纯粹的快乐。就像控制着海军陆战队员,或者是一个肥肥的胖子毫无目的的射击,并且总是有一些更好的游戏作品在提醒着你为什么你要选择开发游戏作为工作。比如 Tactics Ogre!那个游戏很棒,还有 Far Cry 2,它也做了很多非常好的东西,或者 Bayonetta,那些让你双手冒汗的 QTE 设计,或者 Vanquish,它,好吧,就是很棒。 恩,差不多就这样了,我最后一篇日报。我想我重审一点:当你很累的时候,一定要停止工作,玩游戏娱乐一下,这样的生活很棒。 ==== 抱歉我的语文实在不好,也许依然是个渣翻译。看完这篇有些感想,多写一些。以前总有人问我,做游戏好不好?有没有前途?和其他 offer 相比如何?发展前景如何?钱多不多?我想在国内,的确有很多生活的压力,迫使大家考虑更多的因素。但是,我想对游戏行业的工作而言,更多的还是要有爱。如果没有对游戏的热爱,即便有一些钱,貌似有一些前景,那又如何呢。国内的游戏行业竞争更加激烈,行业的生存环境更加恶劣,所以如果你是一个热爱游戏的人,那么欢迎加入游戏开发。如果你只看到了现在的游戏风潮,冲着当下的利益和前景,那么请慎重了。那些在业内的兄弟姐妹们,程序美术策划们,大家一起努力把行业做好吧。好吧,最后一句是瞎吹的大话了。。。 |
|
Posted: 02 Apr 2011 10:45 PM PDT http://www.gamedev.net/page/news/index.html/_/general-news/the-gamedevnet-daily-r11951
Mar 30 2011 07:01 PM | Gaiiden in General News 工作室新闻:新的工作室,新的品牌标签,新的招聘信息。Reloaded Production 是一个接手遭遇麻烦的 All Point Bulletin 的开发商,他们正在计划在 Edinburgh, Scotland 开设新的办公场所,并且为当地提供 22 个工作岗位。这个新的地点就在 APB 原先最初的开发商 Realtime Worlds 附近,新的工作室叫做 People Pilot(Xw.Y: 这是在恶搞 People Can Fly 么?),由 Realtime Worlds 的前首席音乐制作 Roland Peddie 领导,他们主要以合同制商业模式的方式提供音乐产品。继续这些被裁员工自主创业的新闻,在 Guitar Hero 倒下后,被裁的一群 Vicarious Visions 的员工一起创建了 Bat Country Entertainment(Xw.Y: 蝙蝠国之娱乐?乡村的棒球棒?),并且已经在开发他们第一款 XBL 上的独立作品。那个 Weinstein 兄弟,以他们的电影制作和发行著名,现在在 TWC Games 旗下和 Beefy Media 一起成立了一个“战略咨询”,以期将他们的一些电影行业上的成果带入移动平台,社交游戏以及主机平台上。如果你正在英国国内找工作,在 Leamington Spa 的工作室 Playground Games 正在接下来的一年中招聘五十多名员工,其中包括一些策划、程序、美术中的重要岗位。 Xaitment 正对一些小成本的工作室,公布了 BrainPack。如果你正在寻找一个 AI 的工具来帮助你项目中的一些表现更加智能,中间件开发商 Xaitment 刚刚宣布了一个新的礼包,其中打包了他们多个很受欢迎的开发工具,并且价格比正常的价格低很多。这主要是针对一些正在寻求 AI 解决方案的小工作室。目前 BrainPack 只面向北美和欧洲的开发者。 Xbox Live 的评价系统有点失控。当 College Lacrosse '11 的制作者们要求粉丝们在 XBox Live 上为游戏评分是,看来人们同时还去诋毁一些竞品游戏。看起来任何一个人都能为一个作品打分,无论他是否真正下载试玩了游戏。这次也会促使微软重审他们的评价系统的策略订制。IndieGames 有完整的前因后果。 Stupid Fun Club 没有被 E3 认可。现在的 E3 已经不是一个开放的展览活动了,人们必须要有足够的强大才能得以进入。但是看来对 Will Wright 的最新的工作室 Stupid Fun Club 也无能为了。当看到他推送了消息说 E3 拒绝了他的艺术总监参加活动,我感到了脸上有一个大面积的手掌印。就截至目前本贴,还没有看到任何来自 E3 官方的回应。 你知道 Dare To Be Digital 竞赛活动么?如果不知道的话最好去看看,报名参加的截止日期是 4 月 3 日! IGN 有一个新的现实秀——The Next Game Boss。 日报提醒 日报中文版 |
|
Posted: 02 Apr 2011 08:05 PM PDT 原文地址:2011 “制服诱惑派对”火热报名中作者:5i话剧团 一群年轻人,穿着各种各样制式服装聚集在一起,在那个温暖、春意盎然的下午,在一段动感十足的开场舞蹈中,一个激情四射的Party开始了,期间有身着各国军服的帅哥、浓郁怀旧情结的板儿绿茶蓝、还有性感魅惑的制服女郎,他们或挺拔、或忧郁、或魅惑的身影,使这派对变成了一场视觉盛宴。这是2010年4月由一缘时尚文化公司5i话剧团主办京城首次以制服为主题的大型Party———“制服诱惑派对”,个性、时尚,网聚了大量的时尚达人,历经4个小时的狂欢,让所有人high到极点。2011年的“制服诱惑派对”除了为都市青年、制服达人、军迷们延续了上一次趣味,轻松,热闹的时尚party元素外,也对活动的宗旨和内容有了新的设计。
让狂欢再飞一会儿,让激情再继续!有了去年成功的经验,一缘时尚公司旗下的京城戏剧先锋联盟联合影空网等各大艺术机构将于2011年4月23日举办《2011制服诱惑Party》届时北京电视台、新浪、腾讯、mosh网、酷6等娱乐媒体都将聚焦此次盛会。无数型男潮女、制服女郎、军迷、演艺圈人士蜂拥而至,势必再次引爆激情,让身处其中的你引领京城Party潮流。 届时,京城最火爆的戏剧制作人和演员、最前沿的影视剧组以及新兴的艺人包装机构都将光临现场,和现场的朋友们一起分享各自的生活理念。同时,精彩的节目和乐队演出也会让大家happy到极点。如果时下的你,关注戏剧和电影,热爱表演,希望能和走在前沿的艺术工作者们有近距离的交流和接触,就不要再犹豫,尽快报名吧!同时,也欢迎广大艺人和当红模特能够一起共度这个愉快,充实的周末! 今年活动的主题: 在现在和未来表演舞台上,我们每个来宾都是演员!都是明星!
主办单位: 北京一缘时尚文化发展有限公司 协办单位: 影空网(中国第一艺人经济平台)
(提前到场150位活动报名者都将得到礼物一份)
军官、警察、消防队员、 医生、护士、女仆、 空姐、OL老处女、法官、 学生、cosplay…… 只要你们可以想到的制服,通通可以穿来!小礼服也欢迎!
本次Party活动预告: 制服秀——来宾均要求身着制服或道具服装;
有关活动详情请参考 http://www.yingkong.net/article-706-1.html 2010年回顾(多图)
届时光临的影视剧组(预告):
活动费用: A、穿着制服的5I会员门票120元(含饮料) B、没有穿着制服者一律150元(含饮料) (神秘礼品惊喜不断,意外收获丰厚而归。) 指定军服供应商: A、搜寻者军品店http://www.souxunzhe.com/ 订购电话:010-65598418 B、赤兔军品店http://www.chituclub.com/ 订购电话:010-66178447
报名方式: 5i会员参加者请留言并发邮件至5id...@sina.com QQ群-42580400制服诱惑 联系电话:18901068440(琴琴) 2011年4月5日前报名,可享受(九折)优惠门票
联系人;琴琴 18901068440
影空网会员通过影空网报名可享受优惠 发送邮件至qi...@yingkong.net 孙老师 邮件上请注明:(影空ID或5i网名)、真实姓名、年龄、性别、是否从艺人员、联系方式等(最好附加照片)
支持媒体单位: 腾讯微博、腾讯军事、酷六视频、北京电视周刊、新浪娱乐、搜狐娱乐mosh网、宽度网、六人行 |
|
Posted: 02 Apr 2011 01:44 PM PDT
GDC,全称Game Developers Conference,中文译名是游戏开发者大会,是个始于1988年的专为游戏设计者开设的讨论和分享业界信息的职业展会。GDC每年都能吸引数万名来自业界的新老成员,齐聚一堂交流从技术到概念到业界内幕的各种资讯。也因为它运营的专业性,GDC的门票价格亦不菲,从最便宜的200美金“大堂”票价到昂贵的2,000美元“全票”不等。鉴于内容限制,各大游戏网站只会报道与游戏展出相关的部分,普通玩家若想看GDC演讲的内容,只有上付费的GDC Vault(Fallout捏它?)才能看到。
但GDC Vault也有免费的内容,而最新这批来自GDC 2011的经典游戏制作回顾(Classic Game Postmortem)更是难得的精品。GDC邀请了久负盛名的十几位开发者,谈他们开发的第一款和成长为系列的游戏:这其中包括Doom(毁灭战士)系列的John Romero,Simcity(模拟城市)系列的Will Wright,Populous(上帝也疯狂)系列的Peter Molyneux,Prince of Persia(波斯王子)系列的Jordan Mechner,Pac-Man(吃豆人)系列的岩谷徹等等。 每个回顾都长达1小时,推荐先看Will Wright,Peter Molyneux和Ron Gilbert的演讲,他们是业界内少数经常演讲的开发者,表达能力与技巧也比宅派的John Romero和Jordan Mechner要强。这里简略记录一下几个开发者提及的有趣内容——
完。 |
|
Posted: 02 Apr 2011 04:29 AM PDT http://www.gamedev.net/page/news/index.html/_/general-news/the-daily-gamedevnet-r11947
Yesterday, 10:22 AM | Ravuya in General News 欢迎阅读新一周的 GDNet 日报。上周末的重要的新闻当属 3DS,但我也还没有拿到,所以我对此不能做太多描述。如果我有一台蓝色的,Trent 有一台黑色的话,我们一定会打起来的。 我对 Hudson 的消失(被卷入了 Konami)感到伤心,但这个执迷于火车的开发者,他威胁 Konami 不要对 Hudson 过分的动手动脚。我不能怪他,为 Hudson 工作看来是很多人的梦想,虽然有一点压力。 我看到生化危机的新作宣布表示兴奋,显然,这次还不止一个。我们还有多久在能玩到呢?考虑到他们还在做大量的僵尸,我猜可能还要一段时间。 有人是在车库中写代码的么?看起来任天堂对你们这类人并不感兴趣。 In-app 这周来到了 Android 上,我还没有完成 Roguelike,最终会叫做“阿里弗莱德 迈克冒险先生在购物或者我会果断杀死你的历险记!” 还记得 QWOP 么?从这个游戏中大家了解了走路的艰难,现在有一个面片的续作,GIRP,给你带来新的挑战。 AMD 相信 Direct3D 不再能够发挥现代显卡的极限,也许是因为他们看了最近的 OpenGL 的实现。 今天结束前,去看一下这个 HTML5 的游戏,有 Akihabara 实验室为大家制作。 |
|
Posted: 04 Apr 2011 04:43 AM PDT 赢球固然是好事,起冲突那是因为双方都不是省油的灯,固然两地媒体各执一词,都说自己才对,是对方球迷没素质,这事情这道理谁都明白。一边让一步啥事都没有。 ——这说的是天津VS恒达排球决赛。 我在天津长大,生活了18年。我在广东求学和工作,生活了12年。清明节过后还要去上班面对很多很多很多广东的同事,谁给我说说我该怎么面对这样的事情?现在只能自求多福没人找茬。 幸亏是排球迷不多,换了足球,还指不定会怎么质问谩骂和冲突呢。记得我大学的时候,天津泰达队把广州松日队踢降级了。那场球是天津队主场,胜负都无所谓,只是个名次变化,广州松日队客场,只有取胜才能保级。结果天津队3:2赢了好像,第二天我就被我班上的同学质问:“你们天津队为什么要把我们松日队踢降级?” 现在想想,幸亏我不在北京啊,不然每年足球京津大战那么多冲突……我怎么躲啊?每年冲突,必冲突,没有不冲突的,我都习惯了。 说起来足球,天津队来越秀山做客的时候,我也会去为天津队加油,只不过客场球确实不是人看的。几十个天津球迷VS差不多2万个广东球迷,这很明显了,谩骂声,嘘声,讽刺声都会有,听着很难受。不过我印象里越秀山的保安还是不错的,散场的时候,为了避免球迷起冲突,会让我们客队球迷暂时不要出去,等主场球迷散了,才让我们客场球迷散去。 其实国外的联赛,似乎俱乐部间球迷冲突也很多,有些几乎是仇恨一样的(比如巴萨VS皇马球迷,两个米兰之间)。只不过是我现在越来越想不通,等到打国际比赛的时候,还不都是一家人么?国内联赛何必这么较真?支持,助威,希望自己的球队赢,都可以理解。但是打架,别管谁打谁,也别管主队客队,都不对。事后媒体各执一词,都说是对方先做错,也非常恶心,真像是小孩打架之后扯皮啊……双方各让一步,哪里来那么多麻烦事? 打起国际比赛来,都是中国人,都是中国球迷,国内比赛时就不能和气点么?
|
|
Posted: 04 Apr 2011 02:39 AM PDT 朋友推荐的一款IPHONE上的语音通讯软件,体验了一下感觉还不错!有兴趣的朋友可以试试! Talkbox 是一款以语音录制、语音传输功能为基础的,为用户提供基于点对点的消息对话和消息推送为核心服务的移动社交产品,可以简单的将其理解为语音版的Kik。Talkbox 的诞生,愿景是希望为移动终端用户免去一切打字的烦劳,并且以一种可能前所未有:更为迅速、更为即时和真切的方式去传达一个人的语音短信;同时,Talkbox 支持群组多人会话。 |
|
Posted: 03 Apr 2011 07:11 PM PDT 第14章:从自发式系统看游戏
------------------------------------------------------------------ 点击图片放大 |
|
Posted: 03 Apr 2011 07:01 PM PDT 第13章:电子游戏的规则
------------------------------------------------------------------ 点击图片放大
|
|
Posted: 03 Apr 2011 06:46 PM PDT 第12章:规则的三个层级
------------------------------------------------------------------ 点击图片放大 |
|
Posted: 03 Apr 2011 07:33 PM PDT 在這款專案中,玩家角色身上的裝備有許多取得的管道,
不過在有工作系統的設計下,最大宗的來源自然是工作系統。 由於工作系統是銀狐加入這個專案的第一份工作, 因此接下來與工作系統有關的工作自然繼續是由銀狐來接手。 在遊戲中有工作系統不斷的產出各種原料的狀況下, 自然需要有相對應的消耗原料的管道, 這樣遊戲世界中的資源以及金錢才能持續有流動。 在這樣的前提下,銀狐接下來的工作就是設計衝裝系統。 會選擇衝裝系統作為接下來的工作項目, 主要的原因是這類的系統可以提供玩家更強的裝備, 也因為這樣的誘因,玩家願意投入金錢與資源去進行裝備的強化。 在開始設計衝裝系統的時候, 首先碰到的問題,就是我們要選擇什麼樣的衝裝失敗模式。 在線上遊戲中,衝裝失敗有許多不同的表現方式, 對玩家來說損失最低的,就是只有損失當次衝裝所使用的金錢或材料; 損失稍微多一些的方式,則是衝裝失敗的時候裝備的強化等級會降低; 至於損失最大的,就是整件裝備會因為衝裝失敗而消失。 這三種衝裝失敗的表現方式各有優缺點, 通常在選擇這些衝裝的失敗方式還會搭配不同的衝裝成功機率。 損失越少的通常衝裝成功率會較低;損失較多的衝裝成功率會較高。 前面有提到過,這個專案的裝備因為有工作系統的關係獲得比較容易, 考慮到要消耗這些工作系統產出的原料以及原料製造出來的裝備, 最後在專案中選擇了衝裝失敗裝備會整個爆掉的作法。 選擇這樣的作法,當然也想到了裝備爆掉對於玩家的損失很大, 因此在衝裝過程中獲得的好處,也要大到有足夠的誘因。 在這款專案中裝備有耐久度的設計, 而且裝備在修理的時候,耐久度的上限是會降低。 這代表著無論是再好的裝備,一次次的修理後總會報銷的。 因此除了每一次衝裝成功可以獲得的能力以及數值外, 我們給衝裝到+9 (最大上限) 附加了『裝備永不損毀』的能力。 換句話說,如果玩家能將裝備衝到+9,這件裝備就永遠不會壞了。 在衝裝系統開放後,收集伺服器上關於衝裝相關的記錄檔。 果然如我們的預期,由於衝裝失敗會導致裝備消失, 因此部份的玩家在衝裝這件事情上因為害怕而不敢進行衝裝。 當然,也因為衝裝最後可以獲得『裝備永不損毀』的能力, 也有部份手中金錢和資源比較充裕的玩家鼓足了勇氣拼命的衝。 從記錄中我們看到,當初選擇了爆裝所以衝裝的成功率相對比較高, 也因次在衝裝系統開放的第一個晚上,就出現了一件+9的裝備, 那是一件裝備在嘴部的飾品 (印象中飾品的名稱是紅玫瑰)。 而衝裝系統也完美的達成了我們預計要它完成的目標, 在回收的金錢以及因為衝裝失敗而消滅的裝備數量上都很讓人滿意。 而系統開放的一週內,因為衝裝系統需要某些遊戲中的物品作為衝裝材料, 造成遊戲內這些物品因需求而導致成交金額爆增則是預料中的事情。 這個衝裝所需的材料,是玩家在掛工作時隨機獲得的五行材料。 由於衝裝系統的推出造成這些材料的需求量大增, 手中持有這些材料的玩家基於惜售的心態開始提高賣價, 因此造成當時不少玩家申請免費試玩帳號靠多開來自力救濟。 造成這樣的狀況,又是因為沒有考慮到公司在營運遊戲有免費帳號的策略, 結果衝裝系統開放的那段時間,免費帳號的申請數量爆增, 雖然說在線人數因為多開而有上升的跡象,不過公司卻沒有因此而多賺到錢。 為了解決這個問題,只好從這些隨機產物獲得的機率公式上下手, 仔細精算免費帳號的試玩時間如果拿去掛工作能夠升到的工作等級, 然後在公式上調整,讓工作等級低於某個程度的角色幾乎掛不到, 接連著兩次修正這個計算的公式後,才解決了玩家多開免費帳號的問題。 後來在檢討這個專案的設計方式時, 衝裝失敗會導致裝備消失的這個設計銀狐自己覺得不是很理想。 因為對玩家來說,爆裝整個裝備都消失的打擊非常的大, 就玩家的心理上,一次的失敗會導致之前的成功全部消失不見。 就算是裝備衝到+8了,只要在衝+9的時候失敗就什麼都不剩, 這樣的設計,的確是太嚴苛的狀況。 如果是希望能夠回收資金以及資源, 其實是可以在衝裝所需的材料上多花點心思去加強, 用其他的方式來回收,也可以達到相同的目的。 |
|
Posted: 03 Apr 2011 04:40 PM PDT 费恩曼的理论说当粒子从A点到B点,它不是走过一条唯一的路径,而是走过每一条可能的路径。不同的路径存在不同的概率幅度,路径之间可以像波那样互相加强或减弱,所以宏观上看两点之间的“经典”路径是一条直线。然而理论上说确实存在粒子从A绕整个地球甚至整个宇宙一圈才来到B点的路径可能性。 而且这个理论允许我们计算的不仅仅是一个粒子,而是一个系统,可以是一组粒子,甚至是整个宇宙。给定系统的初始状态,求取其后某个时刻的结果,物理学家称之为系统的历史。在牛顿的理论中,由于给定某个时刻的状态(比如位置、速度),其它任何时刻的状态都唯一可求并唯一确定,所以系统的历史是确定的。然而量子论打破了这一点,根据量子论,系统的过去,就和未来一样都不是确定的。 量子论认为,如果你“观察”粒子经过哪条路径,就消除了其它的可能性。其含义就是过去没有确定的形状,你在现在对一个系统进行的观测将影响它的过去。打个比方,我从我家到你家可能经过无数种可能的路径,但由于你在现在观察了我实际走的路径,所以反过来决定了我过去走的是哪一条路径。这一点在量子论中被称为延迟选择。 |
|
Posted: 03 Apr 2011 02:31 PM PDT 以前在上海工作的时候,向一个老程序员请教问题,对方拖拖拉拉就是不回答。后来逼得紧了,他说你知不知道我学这些东西花了多少精力,我如果告诉你了,我的优势在哪里。
在国内也谈不上什么技术、知识产权保护,基本上你项目团队里面只要有人拿到了代码,那只要这人一离职,所谓的技术积累就没了。你就是签了保密协议也是没用的,人家只要把变量名字改一下就OK了。于是你花了几年时间写的东西,就变成了别人的了,人家拿来找投资也好,做项目也好,那是忙得不亦乐乎。
|
|
Posted: 05 Apr 2011 02:15 AM PDT 原文地址:给李彦宏先生的一封信作者:韩寒 您好,李彦宏先生。 上周我和出版社的朋友沈浩波先生去山东的纸厂销毁已经印刷完毕的一百多万册《独唱团》第二期,三百多吨的纸和工业垃圾一起进了化浆炉。几百万的损失对您来说可能是个小数目,但是对一个出版公司来说几乎等于一年白干了,那还得是国内数得上数的大出版公司。这个行业就是这么可怜的,一个一百多人的企业一年的利润还不如在上海炒一套公寓,而且分分钟要背上“黑心书商”的骂名。但是沈浩波一直很高兴,因为他说和百度的谈判终于有眉目了,百度答应派人来商量百度文库的事情,李承鹏,慕容雪村,路金波,彭浩翔,都是文化行业里数一数二的畅销书作家,导演和出版商,大家都很激动,准备了好几个晚上各种资料。
于是昨天开始谈判了,您派来几个高傲的中层,始终不承认百度文库有任何的侵权行为。你们不认为那包含了几乎全中国所有最新最旧图书的279万份文档是侵权,而是网民自己上传给大家共享的。你这里只是一个平台。我觉得其实我们不用讨论平台不平台,侵权不侵权这个问题了,您其实什么都心知肚明。您在美国有那么长时间的生活经历,现在您的妻子和女儿也都在美国,您一定知道如果百度开了一个叫百度美国的搜索引擎,然后把全美国所有的作家的书和所有音乐人的音乐都放在百度美国上面免费共享会是什么样的一个结果。您不会这么做,您也不会和美国人去谈什么这只是一个平台,和我没关系,都是网民自己干的,互联网的精神是共享。因为您知道这事儿只有在现在的中国才能成立。而且您也知道谁能欺负,谁不能欺负,您看,您就没有做一个百度影剧院,让大家共享共享最新的电影电视剧。
您也许不太了解出版行业,我可以简单的给您介绍一下。1999年,十二年前,我的书卖18元一本,2011年,卖25元一本,很多读者还都嫌贵。您知道这十二年间,纸张,人工,物流都涨了多少倍,但出版商一直不敢提太多价,因为怕被骂,文化人脸皮都薄。一本25元的书,一般作者的版税是百分之8,可以赚2块钱,其中还要交三毛钱左右的税,也就是可以赚一块七。一本书如果卖两万本,已经算是畅销,一个作家两年能写一本,一本可以赚三万四,一年赚一万七,如果他光写书,他得不吃不喝写一百年才够在大城市的城郊买套像样的两居室。假设一本书卖10元,里面的构成是这样的,作家赚1元,印刷成本2元多,出版社赚1元多,书店赚5元。有点名气的作家出去签售做宣传,住的都是三星的酒店,来回能坐上飞机已经算不错了。出行标准一定还不如你们的低级别员工。最近几年我已经不出席任何宣传签售活动了,但是在2004年前,我至少做过几十场各个城市的宣传活动,而在那个时候,我已经是行业里的畅销书作家,我从没住到过一次300以上的酒店,有的时候和出版社陪同的几个人得在机场等好几个小时,因为打折的那班飞机得傍晚起飞,而多住半天酒店得加钱。这个行业就是这么窘迫的。这个行业里最顶尖的企业家,年收入就几百万。出版业和互联网业,本是两个级别相当的行业,你们是用几百亿身价和私人飞机豪华游艇来算企业家身价的,我们这个行业里的企业家们,我几乎没见过一个出行坐头等舱的。我们倒不是眼红你们有钱,我们只是觉得,你们都那么富有了,为何还要一分钱都不肯花从我们这个行业里强行获得免费的知识版权。音乐人还可以靠商演赚钱,而你让作家和出版行业如何生存。也许你说,传统出版会始终消亡,但那不代表出版行业就该如此的不体面。而且文艺作品和出版行业是不会消亡的,只是换了一个介质,一开始它们被画在墙上,后来刻在竹子上,现在有书,未来也许有别的科技,但版权是永远存在的。我写这些并不是代表这个行业向你们哭穷,但这的确中国唯一一个拥有很多的资源与生活息息相关却没有什么财富可言的行业。尤其在盗版和侵权的伤害之下。我们也不是要求你们把百度文库关了,我们只是希望百度文库可以主动对版权进行保护,等未来数字阅读成熟以后,说不定百度文库还能成为中国作家生活保障的来源,而不是现在这样,成为行业公敌众矢之的。因为没有永远的敌人,也没有永远的利益。我在2006年还和磨铁图书的沈浩波先生打过笔仗,为了现代诗互相骂的不可开交,而现在却是朋友和合作伙伴。百度文库完全可以成为造福作家的基地,而不是埋葬作家的墓地。
在我们这个行业里,我算是生活得好的。李彦宏先生,也许我们一样,虽不畏惧,但并不喜欢这些是非恩怨,我喜欢晒晒太阳玩泥巴,你喜欢晒晒太阳种种花。无论你怎么共享我的知识版权,至少咱俩还能一起晒晒太阳,毕竟我赛车还能养活自己和家庭,但对于大部分作家来说,他们理应靠着传统的出版和数字出版过着体面的生活。也许他们未必能够有自己的院子晒太阳。您的产品会把他们赶回阴暗的小屋里为了生活不停的写,而您头上的太阳也并不会因此大一些。中国那么多的写作者被迫为百度无偿的提供了无数的知识版权和流量,他们不光没有来找过百度麻烦或者要求百度分点红,甚至还要承受百度拥趸们的侮辱以及百度员工谈判时的蔑视。您现在是中国排名第一的企业家,作为企业家的表率,您必须对百度文库给出版行业带来的伤害有所表态。倘若百度文库始终不肯退一步,那我可以多走几步,也许在不远的某天,在您北京的办公室里往楼下望去,您可以看见我。
祝 您的女儿为她的父亲感到骄傲
韩寒 2011年 3月26日
|
|
Posted: 04 Apr 2011 09:13 PM PDT
本来想以产品的生命周期来命名,但是仔细想想,我对产品的生命周期完全没有自己的体会,没资格写这个题目。 产品生命周期(product life cycle),简称PLC。 ——————————————————上面的都是浮云,下面的才是干货 阶段一:产品上线 内测 产品内测刚开始,有几点需要特别注意: 公测 阶段二:成熟,稳定期 这个阶段可以开展多种活动类型,提升付费,丰富玩法。在KPI 的压力下,活动频度和力度也会相应加大。 稳定期对产品意义重大的就是版本更新 阶段三:衰退期 |
|
Posted: 04 Apr 2011 09:09 PM PDT 对于一个活动,换了老板或者换了用户,可能影响都不会太大,但是换了产品,以前的活动就没法玩了。 运营是一个比较尴尬的工作,特别是我刚工作的时候,经常迷失自己: 我个人对产品的理解主要分为2个维度:(千万别当真,仅供参考) 研发是创造产品的人,所以我们必须要通过研发来了解产品的所有细节,对产品有一个全面的了解; 研发脑中的产品: 其实我想说的很简单,甚至可以总结为5个字:看策划文档 看完策划文档,在不玩游戏的情况下就能大致了解下面几个关键问题: 用户眼中的产品: 不只是游戏产品,所有互联网从业者都有一个共同的话题——要不要装用户。 今天下午讨论就扯到一个问题:做运营要更多的凭借经验还是更多的参考数据。 最后说一点最近的体会:
|
|
Posted: 04 Apr 2011 11:44 AM PDT 07年我住在石景山,每天加完班,坐末班地铁回家。出了地铁站已经是半夜了,常能看到不少三轮车夫在招徕客人。现在的三轮车也早不是人拉的,而是电动的。一出站便受到许多热情的招呼。我离的不远,从来不坐那车,总是漠然的出了站,径自回家。
偶有一次,看见城管半夜来抓车,把一辆三轮车拖上卡车,一个坡足的老汉与之大声争执。那老汉头发已见灰白,期间不断听见“下岗”、“孩子上学”的声音,声音颇为酸楚。我不喜热闹,转身就走了。回去的路上便想到一个问题,那老汉是一个孩子的父亲,当他的孩子听说自己的父亲遭受到这样的境遇,对这个社会,会有什么好感吗?一个下岗的职工的孩子,想来在这个依靠走后门的社会里,按平均概率来说,将来的前途也未必会光明到哪里去,一旦,如果他也落到不堪的境地,长久备受折磨的心灵,会不会崩溃,会不会试图向这个社会找回该死的公道?
企业破产,职工下岗,除了陈旧的体制和不先进的生产方式,在中国,还多存在着腐败的因素。上层人士中饱私囊,留下的是无数破产工人阶层几十年的苦,并蔓延到他们的后代的几十年,甚至再往后影响。当有一天,有人报复社会,我们会惊呼,这家伙莫非是疯了?作为普通人,我们永远不会把“精神病患者”们的所做所为与自己扯上半点关系,更不会想到,其实,是我们,组成了这片腐烂的土壤。腐烂的效应会波及每一个人,有的人会受到伤害,最终,也会反射回我们每一个人,只要腐败一天没有消失,恶果必然由我们这些看客,或我们的后代来品尝。
有人说,我没有腐败过,我从来不做这样那样的事。也许你是干净的,但未必你不是腐败的受益者。这这片土地里,每一个细节都充斥着腐败的味道。上学时,我和朋友讨论腐败的问题,他说他会坚持做一个正直的人,永远不做违规的人。我说我问你一个问题,如果你将来有幸成为了一个中学校长,而我想把并不符合入学规定的孩子送进你学校,作为我们几十年的老朋友,你难道忍心驳我的面子?他默认,说确实做不到,无法拒绝一个老朋友的要求。我说这便是了,我们之间的这种可能,就是腐败,我的孩子可能会挤掉另一个孩子的机会,使另一个孩子的命运发生变化。而你知道人的命运是很神奇,但却是非常残酷的。看到此文的人们,你们可以看看海岩的小说《血流成河》,看看女主角的离奇命运,看看那些挣扎在下层的人们,便会非常理解,在一个残酷命运里挣扎的人的苦难。
我从小到大所目睹的腐败,比比皆是。大部分,其实都是发生在生活中。比如我大姨,驾车违规,能够因与交通队的警察认识而免责,她说起此事,满是荣耀之色,丝毫不觉得有什么不对。我们国家是一个多么需要关系的国家,只要你与掌握权利的人认识,你就可以少了许多麻烦,民众对于权力的崇拜到了仅次于金钱的地步。我小时候打架,被抓到派出所,我父亲与所长认识,直接把我领出来,我却感到比打架一事更羞愧。甚至当我成绩不好,可能毕业不了,家里商量给校长送点礼,让我弄个毕业证,我感到无比愤慨,居然努力了一把,靠自己的本事过了分数线。我痛恨不公平的腐败,不管是发生在我身上还是别人身上。
但随着我长大,直至成了一个中年早衰的男人,我却发现,这社会早已经腐败到透,我们不是在指望通过自己的努力去获得成功,而是想办法通过利用权力和金钱帮助我们上位。商人勾结官员,演员勾引官员,谁获得了权力的帮助,谁就可以站在社会的上层,就连本身便是老百姓的司机,如果离官员近一些,也是半个权力的话语者。这些事,难道我们见得还少了吗?可怕的并不是腐败本身,而是全民都视若无睹,这才是最可怕的。即使是跌落到社会最底层的人,一旦给了他钻营的机会,他一样会去抓,就更不用说千千万万的普通民众。
我们如此崇拜权利和金钱,使得我们周身没有一块正常的骨头,全是软的,全是软的。有一次在电梯看见老板,因为挺长时间没见了,就赶紧问好,待他走了,蓦然想起自己刚才近乎于谄媚的表情,真恨不得给自己一个耳光。我们永远做不到美国电影里人与人之间的平等,我们已经养成了面对权力跪下的习惯了。从下跪到上,从上踩到下。社会腐败的结果就是,我们缺少公平的环境,而一旦有不公平,就会有人受伤害,这伤害会改变很多人,他们潜伏在我们看不到的角落里,终有一天,会发起报复。而如果有一天,当我们受到这伤害的反射时,千万不要装作无辜状。当你在新闻里听到有人因为黑暗的腐败受到了伤害,不要觉得庆幸那没有发生在你身上,这社会的腐败是一点一滴累积的,从细微处象滚雪球那么变大,直至覆盖所有人。
那些楼梯间为我们扫烟头的老妇人,那些午夜的三轮车夫,那些早起卖早点而面容憔悴的小生意人,那些背着铺盖卷南奔北走的建筑工们,那些穿着伪劣西服的寒酸业务员们。我们过得比他们好,不是因为我们更聪明,更优秀,而是因为我们或多或少的得到了更好的机会和环境。他们过得辛苦和贫困,是因为那些机会给了我们而不是他们。如果我们仅仅认为我们得到的一切都是正常的,而无视和嘲笑他人的困顿,无视他们遭受的欺压,那么这社会,终有一天会变成地狱。
药家鑫案后,许多人指责学校的教育,并大声的说,中国的教育出了问题。不,不是教育有问题,而是因为我们习惯的把罪恶推给别人。如果我们每个人都不违规,如果我们每个人都尊重别人,不滥用权利,我们本身就是最好的教育。而学校这不过是这个腐败的大环境下的替罪羊,因为每个老师,每个学生都生活在一个巨大的腐败的土壤中,学校教会了什么不重要,社会已经教会了我们如何保护自己,为了自己的利益不惜牺牲其他人。我们根本就是缺乏对个体,对生命的尊重和敬意。我们从不反思自己的所作所为是否有伤害他人的可能性!
所有的人是一个整体,别人的不幸就是你的不幸。所以,不要问丧钟是为谁而鸣,它为你而鸣。
|
|
How to Choose Your Next PC Game such as Assault Cube Posted: 10 Feb 2011 12:59 AM PST © ComputerMongerAs an avid PC gamer, you are often playing video games. You know the ins and outs of many games, including Assault Cube. In fact, you've played several games in your lifetime, and you've finished most of them.
You may have just completed your most recent game, and now you want a new challenge. But how do you go about choosing your next PC Game?
There can be so many games to choose from. One criteria for many gamers is the type ...
|
|
Playing Poker Online Can Be Just as Fun as Real Life Posted: 04 Feb 2011 07:38 PM PST © chrischappelearPoker is premium casino game where hundreds and thousands of dollars can be made. It is a game that requires skill and technique. There's also a special strategy that players must use which involves intelligence and guile. It can be a very addictive game because it is both entertaining and players have the opportunity to win lots of cash.
Playing Texas Holdem poker is usually done at the casinos or even at your a house with a group of poker buddies. However, if ...
|
|
Posted: 06 Apr 2011 04:10 AM PDT 首先感谢"Talkbox交友群69295996" 群主@Wallny,此文基础是其编写而成,对其优化而来。
我的Talkbox账号 web8tv
Talkbox是什么?
不足之处: A:目前还不支持跨平台. 今后能推出android和symbian平台, 相信用户会增加。
进入正题:
(1)安装注册 Talkbox目前为免费软件, 相当于"公测"阶段吧, 日后成熟必然会收费。
注册步骤至此完成, 这时候你只有2个好友 Agent Facebook和Agent Talkbox,
第一个是呼叫Facebook, 第二个是全体呼叫 (建议删除之以免日后酿成大错...) (3)资料管理和设置
不想保存的记录可以在Recents里面删除. 点Edit 之后再点列表中的删除按钮即可 在第四个按钮Setting里. 选第一个My account---Edit 即可修改自己昵称, 还有avatar, 记得修改之后点save保存.
1、流量 这个流量真的很少, 官方解释是每秒约2K数据, 实测在8个人的组群聊1小时数据量不超过5M. 一般3G的用户流量都用不完的, 这点耗费没所谓了。 2、网络 wifi, 3g, 2g, 各种网均可...数据传输并不大,目前延迟的主要问题是在服务器而不是在网速。 3、密码遗忘 Settings--"How Talkbox Works" 点最上面的蓝色FAQ, 然后选第二个, 在点那个有连接的"here", 输入email即可找回密码。 4、iPod Touch, iPad支持 有摄像头的最新iTouch完全可用,老的设备需要外接带有麦克的耳机。如还有问题请升级iOS软件至最新版本,iPad完全可用。
插播小广告: Talkbox 全球交友超级QQ群 69295996 欢迎加入! 我的Talkbox账号 web8tv |
|
【行业活动】杭州游戏人高端Salon邀请函-2010/04/17 Posted: 05 Apr 2011 08:54 PM PDT 【主办单位】杭州市文创办、中共拱墅区委宣传部、浙江省创意设计协会、杭州日报 http://www.hzyouxiren.com/shalong.html 阅读全文类别:专题会议 查看评论 |
|
一本超越期待的 C++ 书——简评《Boost程序库完全开发指南:深入C++“准”标准库》 Posted: 05 Apr 2011 07:03 PM PDT |
|
Posted: 05 Apr 2011 08:56 AM PDT 上一篇博客竟然还是去年写的,一转眼都荒废半年了。
写博客是个挺尴尬的事情,还是写微博容易些。
转载?NONONO……会影响形象……原创?……想想头就大。每次写博客就好像要穿的非常正式,梳洗打扮,长吸一口气~~~~然后开始写。即没人给稿费,又没有什么不吐不快的事情,更何况根本就没什么人看。还是微博容易些,发张图就可以了,转载也不会觉得脸红。
但反过来讲,我还真是挺喜欢看博客的。微博娱乐一下尚可,很少能碰到可以学习提高的东西,相比之下还是博客对成长更重要。将来有机会还是要写博客,现在先继续学习吧~~~~~ |
|
Posted: 05 Apr 2011 07:58 AM PDT 这个脚本可以将复杂的材质,比如有法线贴图的材质进行"烘焙",转变为单一的贴图,可用来将Unity的游戏移植到移动平台时候使用.
![]() 讲脚本放Editor文件夹里,使用时选择一个Material材质,然后在菜单种"Custom/Bake Material"打开并调整照明和其他参数,点击Bake按钮,就会生成一个单一的贴图. 脚本:BakeMaterial.js js 代码class BakeMaterialSettings |
|
Posted: 07 Apr 2011 03:33 AM PDT cdhe 前言
前几日,cityville的“本土化”版本“开心城市”上线了,短期内就达到了150万的用户量,社交游戏魅力和威力展露无疑。社交游戏的精髓在这款游戏内得到了淋漓精致的发挥,抛开画面和创新,开心城市是个挺不错的游戏。 玩了几日之后,我对游戏中的数值系统颇感兴趣,有了一些想法,于是乎有了此文。 这边攻略&数值研究试图去解答以下几个问题 本人才疏学浅,文中若有不当之处,还望各位指点,邮箱:cd...@live.cn 转载请保留作者和链接:http://www.cdhe.cc/kaixincity/ 提醒如果您不是开心城市的玩家,建议您游戏后再观看本文。 基础结构
体力值体力值是个好东西,在很多网络游戏和社交游戏中,都有体力值的设定。在开心城市中,收房租需要体力,收菜需要体力,收商业收益也需要体力,连造房子都是需要体力的。 但是体力的每天是定量的,每5分钟恢复1点。每天访问一个好友获得1点,最多40点。也就是每天最多可以获得328点体力,这还需要凌晨爬起来折腾。 正式因为体力值的存在,才迫使玩家必须去进行选择,进而产生了游戏性。体力值成功的运用源于梦幻西游,梦幻西游成功的经济系统很大程度上要归功于体力值。最近征途2里面,体力值也变成了相当重要的内容,征途2玩家的每日游戏内容基本就是围绕那120点体力值的。 虽然体力值这种设定并不新鲜,但是如果做得好,确实会很有趣的。 房租如开心城市中,每次收取房租需要1点体力,收取房租后需要一定间隔才能再次收取. 比如现在有2栋房子: 1点体力,收平房50¥,比筒子楼多。 在收房租这个系统里,房租的冷却时间是个很重要的属性,这让初级建筑有了一定的价值空间。如果没有冷却时间,很多初级建筑大家就不会造了。进而导致城市的多样性受到影响,城市会变得不好看了。 从玩家的角度来说,房租当然更重要,好看不好看倒是其次的。
假设玩家288点精力全部用于收房租,全部只收1种房子,则有下表。
很明显的可以看出,冷却时间长的房子总时间内收取的房租更多,最王道的房子是“集体宿舍”! 如果全部造集体宿舍,造864个集体宿舍,每日收益就有69120了,哇哈哈哈。只是受到城市人口规模和总造价限制,无法造那么多房子的,呵呵。 关于房子的结论:尽量造冷却时间长的房子,冷却时间长的房子对体力的利用率更高。 曲率从各个等级房子的房租,可以看出开心城市中的房租数值曲率不是很大。初级的平房日收益14400,顶级的独栋别墅日收益66240,增长了4.6倍。
这种比较低的曲率如果放在MMO游戏中,是很难想象的。MMO游戏强调的成长和压迫,“低级小号在高级玩家面前就像渣一样”,“低级玩家的伤害就是高级玩家的零头”等等。 农业开心城市里可以种9种作物,种下去的作物需要一定时间成熟,成熟后可以采收,采收的东西叫货物。货物放到商店里卖就是钱了。
是种冷却1小时的水稻还是种24小时的红辣椒?这是个问题。
从数据上可以明显看到,冷却时间长的作物产量更多。 另一个有趣的事情是,作物的设计思路和房子是不一样的。房子一共有17种,而房子仅仅9种。同样一个冷却时间仅仅只有1种作物。这是个有趣的现象。为什么不设计更多的作物呢?比如冷却72小时产量160的西瓜?这里需要想一想。
农业的曲率比房子收益曲率相当,水稻8640到南瓜44640,线性增长了5.1倍。和房子曲率基本一致。 关于作物的结论:平均种植“红辣椒”“向日葵”和“南瓜”,土地宽裕的情况下多种南瓜。 商业农业的产出就是货物,货物可以出货给商店来赚钱,那么一个货物值多少钱呢?哪个商店卖更划算呢?
上图可以看到,除却初级的一些建筑,高级建筑的性价比大抵在5左右。而开设分店供货,性价比也是5。 也就是说高级建筑的性比价其实都差不多,需要考虑的问题就是供货量的问题了。 供货量大的建筑耗费的体力少,也比较好打理。假设生产了1000个货物,放到这些商店内出售,需要体力和收益情况如下。
可以看的出,高级建筑拥有一定优势,耗费体力少,收益更多,但是和中级建筑相比并没有太大差距,整体曲率低于30%、 关于商业的结论:尽量使用供货量大的高级建筑,供货量100以上的中级建筑大抵也能凑合。 农业和商业的配比计算开心城市商店的货物消耗算法有些奇怪,折腾了很久也没找到规律。于是关于农业和商业的比例只能根据经验估算。 如果采用之前建议的轮播制度,单位产量应该为125左右。商业建筑均为中高级建筑,平均供货125左右。这里可以看出供货和产量是对等的关系。 对应土地应用就是240块农业用地,80个种红辣椒,80个种向日葵,80个种南瓜。 10来个中高级商业建筑就可以消耗掉这些产出,供货的精力点也够用。环境上来说,整个城市还是比较宽松漂亮的的~~~ 关于城市的结论:完美的城市就是80个红辣椒80个向日葵和80个南瓜,每种商业建筑都有1种,然后种满漂亮的花花草草,呵呵。 END时间精力有限,还有不少东西没有弄清楚。 其实,如果只是为了玩这个游戏,大可不必想这么多,呵呵。这个游戏的数值不是很陡,曲率不高,体力值也做了不少限制,所以其实随便玩玩和正儿八经玩差距不是很大。 社交游戏还是蛮有趣的,特别是这种大的社交游戏,虽然看起来蛮简单,但是很多地方还是挺有趣的,呵呵。
cd盒 |
|
Springtime newcomers to the Unity Asset Store Posted: 06 Apr 2011 07:17 PM PDT With springtime comes hopping rabbits, flowers blossoming, and fresh green leaves on the trees. You can pretty much say the same about the Unity Asset Store this April: business is hopping, the catalog is blossoming, and many sellers find fresh green in their bank accounts! (*ducks*). We are nearing the 20K registered Asset Store user mark, have multiple top sellers now making nearly $1000/day, and a steady stream of new content keeps rolling in. Here’s a selection of new, popular and exciting additions to the store.. One of the most popular newcomers is NeoPax’s VIZIO, which has taken off like a rocket! VIZIO is a node-based logic editor which will feel quite friendly to anyone who has ever used Virtools. Their motto “Imagination + Create Art + Draw Blocks + Create the Game” pretty much sums up the workflow VIZIO brings to the Unity developer. VIZIO is the second node-based editor on the Asset Store, preceded by Hutong Games’ popular PlayMaker, another top-selling visual node-based-editor. If the reactions on the forum and in-store reviews are any indicator, both editors appear to be quite successful already. If you’re looking for an alternative to text-based scripting, check these two powerful new tools out! One of my personal new favorites this month is iGui by Avam Studios, the first true WYSIWYG gui editor on the Asset Store. With iGui, you create user interfaces the visual way– dragging and placing GUI elements from the iGui toolbar directly into the game window. It features nested containers, various alignment settings, draggable windows, drop-down menus, buttons, ready-to-go mobile slider panels and much more. When a user interacts with these elements, it calls events which you specify right in the inspector window. Truly fantastic for UI artists, iGui allows you to create great interfaces without ever having to touch the OnGUI event in code– and if you don’t know what OnGUI means, this is UI tool for you! Once you have it, you’ll never imagine UI design in Unity without it. It’s completely compatible with UnityGUI skins, so you can easily customize the UI style as you please– and don’t forget, we have a growing assortment of UnityGUI Skins on the Asset Store too! Also on the incredibly-hot-asset-list is Edy’s Vehicle Physics, by the mysterious content provider known simply as Edy(tm). Whoever he or she is, Edy has done a fine job creating a vehicle editing system with results which (according to some reviewers) surpass the driving experience in the GTA(tm) series. Quite a claim! Personally I find it quite a lot of fun and relatively straightforward to create realistically behaved vehicles– from slow, lumbering, heavy school buses to slick, high performance sports cars. Not only does it provide a great framework and editor for designing your vehicles, it also comes with four well-made prefab vehicles which you can adapt to your needs. Definitely one of the best vehicle editors on the Asset Store. If you’re making a game with any kind of land vehicle, Edy’s Vehicle Physics is going to be a huge timesaver. Mixamo’s in-editor plugin continues to be a popular way for animating characters right inside Unity. Simply drag your rigged character from the Hierarchy View right into the Mixamo plugin window, you might have to do a bit of bone retargeting with a few clicks (easy), and suddenly your character is tapped into terabytes of animation data on the Mixamo database! With some adjustment to sliders, you can procedurally adapt the animation’s movement and cadence to suit your character, right in the Unity editor, whether it’s a lumbering, slow moving giant or a little mouse! Don’t forget– if you’re a modeler, artist, sound designer, scripter, or hardcore programmer, you can sell your content to nearly 20K registered Asset Store users. Submit your masterpiece to the Unity Asset Store! |
|
迪诺的末日大逃亡 Dino Run:Marathon Of Doom Posted: 06 Apr 2011 05:22 AM PDT
看点:敏捷游戏,横版游戏; 玩法:WASD或者方向键移动跳跃。
|