61阅读

网易版《我的世界》首测在即3天后开启大家准备好抢激活码了吗?-Unity Awards2015开启在即 好游戏快来!

发布时间:2017-08-04 所属栏目:计算机硬件及网络

一 : Unity Awards2015开启在即 好游戏快来!

  Unity Awards 2015(游戏及应用创意大赛)即将正式拉开序幕,新一年的游戏开发狂潮即将创意来袭!Unity 大中华区官方现已面向全社会,开启Unity Awards 2015(游戏及应用创意大赛)官方招募计划,征集各类优秀创意作品!

  Unity Awards(游戏及应用创意大赛)作为全球游戏产业的知名品牌,已经成功推出多年。作为在业界极具影响力的赛事,是将国内优秀作品成功通往海外的重大举措,更是从专业技术角度出发的权威游戏行业盛典。

  大赛面向全球广泛征集具有创意的游戏及应用作品,并邀请到国内外知名的游戏大佬以及厂商,通过对征集上来的作品进行公平公正公开的严格筛选,从原创性、可玩性、视觉效果等各个方面仔细考量,最终甄选出数十款优秀获奖作品。

  回顾2014 精彩纷呈

  回顾2014年Unity Awards(游戏及应用创意大赛)的发展,历经6个月,接触数百家企业,收集了来自学校、独立开发者、中小团队和游戏研发公司的原创及商业作品总共600多款。最终择优而录,共计62款获奖作品。

  2014年大赛获得原创组金立方大奖的是来自台湾的独立游戏开发厂商雷亚(Rayark)的《Implosion》,还有来西班牙团队Moonbite的《Zombeer》和来自西班牙游戏工作室Anima ProjectStudio所制作的游戏的《GATE OFMEMORIES》分别获得银奖和铜奖。

  而商业组金立方大奖的获得者是来自于成都动鱼数码的《血战长空》,灵游坊的《影之刃》以及来自椰岛工作室的《决战喵星》分别获得商业组金立方的银奖和铜奖。

  通过Unity Awards 2014(游戏及应用创意大赛),有20多家优秀获奖团队和作品,除了得到Unity官方的荣誉奖项和资源之外,还获得重大利好的政策支持,成功入驻Unity 与上海市普陀区天地科技软件园合力打造的孵化器“Unity 天地港”。据悉,入驻团队中的13个初创游戏研发团队,已经有6个已获得天使投资;8家成长加速企业中,已经有5个团队已经获得了A轮VC。

  2014第二届游戏及应用创意大赛参赛作品多达600多款,其中很多作品虽然没有夺得最后的各种奖项,但也有很多团队的作品非常具有创意及发展潜力。通过游戏大赛,让更多有实力的开发团队获得了来自Unity官方的扶持与推荐。

  CJ期间的颁奖仪式,更是获得业界的好评,无数业界大佬纷纷参与,来宾更是超过千人,成为CJ期间又一重要活动。

  展望2015 再度启航

  Unity Awards 2015(游戏及应用创意大赛)举办的宗旨是希望通过全民化的游戏及应用大赛,挖掘出市面上更多优秀的原创及创意作品,并通过权威奖项的设立与授权,帮助优秀的作品更加快速的进入市场化运作。更希望通过大赛能够带动IT行业、游戏行业以及多媒体创意交互行业的灵动发展,鼓励更多的开发者使用Unity 引擎创造更多的游戏及应用作品,为游戏及文化行业的征程谱写华美的篇章,共同推动游戏及文化产业的蓬勃发展。

  大赛报名将于3月1日起正式启动。更多信息,请关注 ugc.unity3d.com

  我们也欢迎更多优秀的合作伙伴加入到Unity Awards 2015(游戏及应用创意大赛)的队伍中来,共同为开发者打造更多更好更强而有力的平台!

二 : 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵大神集中营www.09784.com

剑灵合服后带来的十大影响 大家做好准备了吗

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

下文中以“合服”代替“服务器互通”,揭露一些潜规则的逗比原理给大家。(www.61k.com)看完你会笑的,且听小死逗比(本文绝不涉及黑官方的言论,满满都是正能量)~PS官网至今没说清是几个服务器合成一个还是十几个服务器集体合成一个,总之白雾30条线离我们不远了,让我们说说游戏之外的潜规则,合服受益最大的莫过于他们。

影响一:鬼服双刃剑

对鬼服的影响利大于弊,表示终于能看到活人了。一个大区的小伙伴再也不用跨服见面了,这确实是一件好事,也是无奈之举。下文将给大家说说带来的影响。

影响二:带崩拍卖行,奸商衡行,“逃税”成风

大家有没有感觉这次拍卖行手续费的修改很针对《商人之道》里的几个技巧,批发成组去卖赚差价的方式已经没法造福大家了。这样真的好吗?假如我是奸商,我会为此感到非常高兴,因为你敢这么改,奸商同学就可以玩死你整个服务器。小死作为一个希望剑灵变的更好的玩家表示,坐等拍卖行变拍卖黄吧。

少年天真的以为合服会平衡物价,增加产出?在拍卖没改之前也许是有机会这样的。合服后所有人都在一起,谁还会去拍卖行买贵的东西(税+惩罚手续费导致成本提升)?

合服前大区所有服务器拍卖行互通,假如我是网一逆转阴阳的玩家,而刷锤子的工作室入驻在网一的冰封神殿,我手里没锤子了,只能去拍卖拉点锤子用。现在合区了,工作室就可以开散装锤子店、散装解印符店了。且不说拍卖行的税有多恶心,那个商家手续费真是醉了。

假如右小死是工作室,每个大区我弄个16级的号,都驻扎在绿明村,门派

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵大神集中营www.09784.com

名字随时退出去随时新建,就叫“应急修理工具5银一个,解印符3银一个”,物价变了我再去改门派名字就好,这个和拍卖行比哪个赚,绝对挂一天赚的一比。[www.61k.com)而且人家全大区的人都在这里,谁还去拍卖行买贵的。以前之所以不流行这个是因为工作室分布的太散了,没有必要和积极性去这样做。长此以往,大家就懒得去看拍卖,因为逃税价能省10金我为什么还要去拍卖行呢?而且获得的产出途径还变多了。

喇叭奸商横行,以前奸商发个喇叭,只有一个服务器能收到,坑一个服务器的接盘侠,现在好了,有神经病发一个喇叭说“南天国更新了,以后不能制作XXX了,要绝版了”,有人信吗,我告诉你真有。然后真有人就可爱的去买XXX去了。随着大家都不愿意去拍卖行,这就导致拍卖的物价进入真空,奸商更好垄断售卖。拍卖行和丰汇行是两个跨服联系的关键元素,现在合服后他们将变得岌岌可危。

影响三:交易平台的福音

以前每个交易平台要在每个服务器都有一个帐号,现在方便了,开机成本也大大降低了,以前一个大区要多开N台电脑,现在几个大区用一台电脑就足够了,小死觉得这对他们来说是压缩了任务成本和人力资源成本。

影响四:玩家福音

恭喜各位玩家,白雾森林将变得更卡,可以找爸爸妈妈花钱买高级的新显卡了,CPU因此烧了怕不怕,暑假能换新主机了。好了,不逗比了,合服对于鬼服玩家来说这确实是件正能量的事情,你将会认识到新的朋友,新的门派,这会让你重拾一些新鲜感,只想问你一句起初我们是为什么要玩剑灵的?还不是因为兄弟。

影响五:土豪福音→财务报表福音

刺激土豪消费、洗武器的是什么?真以为是那传说武器的觉醒效果,你错了,其实对他们来说最受不了是有别的土豪,一把又一把传说飘在在喇叭上,刺激了玩家的消费欲望,又是一轮为了面子而洗属性的开始,秀武器宝石不能丢人,必须全炽热,财务报表也是迅猛生长。小死真的劝大家耀光10凑合用吧,洗完立刻出新版本的传2你怕不怕。

影响六:千里传音与百里传音的福音

小死没猜错的话,各个大区的大公会都会开始开会商讨收人做分会的事情了。在合服初期最好的宣传方式莫过于喇叭,到时候土豪顶喇叭顶急了,你懂的。小死表示最看不惯刷喇叭数数的,关了电脑谁也不认识你是谁,玩个游戏还玩出优越感了,唉。

影响七:小门派被兼并,会长走投无路,别急,门派改名帮你抱大腿,只需888

一个很现实的问题,就是很多60、70人的门派已经走的还剩下10多个人(小死摸着良心说这算多的),正常的有剩下5、6人,估计很多人会考虑转会,最后留给会长一个苦心经营的8级门派没地儿说理。这可怎么办,等改名券出来以后,你就可以改名字成为大公会的分会,一起战斗了。不过很多人还是喜欢小伙伴一起玩,我还是觉得收一些散人进来补充是好的,千万不要放弃自己付出过的公会。毕竟你是捐过灵石,捐过金子的。

影响八:工作室与固定队的福音,带老板活动开始

其实带老板活动还算不错,洪门神功10的费用大概5000人民币,合服以后更好带人刷补刀什么的了,区域频道你将看到各种热闹的代打武神塔,在这里只

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵合区 剑灵合服后带来的十大影响 大家做好准备了吗

剑灵大神集中营www.09784.com

想说一句少年你太天真要谨防骗子。(www.61k.com]

影响九:PVP技术的共同进步,有交流才有PVP,土门客栈的“小”繁荣 众所周知现在的PVP是一个很硬伤的存在,加上洪门神功的推出,导致更多的人迷恋去PVE,PVE本就是RPG游戏的所谓主流。这就导致很多大区1900分以上已鬼,无人去打。在PVP的水深方便小死不方便多透露什么,但是敢肯定等合服之后,各种要杯的人会越来越多。吃分流继续开启,我相信会有很多退出剑灵的玩家会再回来看看,就跟这次开传说一样。

影响十:赌石竞猜行业的福音,土门客栈的“大”繁荣——服务器里第一赚钱的,肯定是运营商,第二赚钱的就是策划,官网出消息之前让朋友收点几银的海蛇武器、几铜的水月平原之泪就好了。第三赚钱的是工作室和比武代练?NONONO,你错了,第三赚钱的应该是竞猜行业。我不知道各位在你们区遇到没遇到过XX赌石竞猜,也不知道你在里面亏多少钱,我只能说他们之前一个服务器一个Q群,开一个直播被封一个直播。因为这个是不允许的行为。你真的天真的以为猜八卦、赌颜色里没有玄机吗,等合服以后目测这个势头只增不减,大大提高了那些周边行业的积极性。而被坑的往往都是投入金币最多的那部分人,竞猜有风险,而且游戏竞猜水很深。他们一晚上光开竞猜就能收入几万人民币,每个号里每天的流动金币就有几万金(你还真别不信,人家真有那么多)。你觉得他坑不坑,坑,你玩不玩,依旧去玩,可土豪不差钱,就算输了也开心??娱乐还好,奉劝各位纯洁少年,健康玩剑灵,合理规划时间,多陪家人朋友,不要相信各种歪门邪道喔。

本文来源:www.09784.com

三 : 闰年,您的代码准备好了吗?

闰年,您的代码准备好了吗?

闰年 闰年,您的代码准备好了吗?Matt Johnson  高级软件工程师,AzureCAT patterns & practices团队成员

现在已经是二月份了,我们知道2016年是闰年,对大多数人来说,这可能只是一个奇特的月份,会有额外多出一天来工作或者娱乐。(www.61k.com]但是对于软件开发者来说,闰年可能会造成巨大的烦恼。

如果你现在才想起来检查你的代码以应对闰年漏洞的话,那就得尽快了。事实上,漏洞可能已经带来了影响,但是你可能完全还没有意识到。什么样的漏洞会潜伏在你的代码里呢?

  • 差一错误(off-by-one issues),特别是围绕使用日期范围查询来筛选数据
  • 用户界面出现意外或者非预期的行为
  • 由于潜在的边界案例引起的异常、崩溃或异常挂起

“嗯“,你说,“我的代码是好的,因为我们有单元测试。“

“哦,是真的吗?”我说,“你做的测试里面有适当的模拟时钟的案例吗?他们测试过一些边缘情况了吗?包括将2月29号和12月31号考虑在内吗?你测试过你可能使用的底层C++代码和系统的其余部分了吗?你知道闰年漏洞会是什么样的吗?”

通常情况下会一脸茫然。

为什么这个漏洞和Azure有关系呢?

它适用于任何开发人员编写的代码,并且大部分代码可能最终会运行在Azure云上在2012年Azure经历过一次闰年造成的服务中断,我们一直在努力,以确保在这次闰年不会有任何问题。我们希望我们所有的客户可以从上次经历的事故以来我们所做的研究和经验中获益。

那我需要知道什么呢?

这里要介绍许多内容,让我们从最重要的开始吧。

  • 2月29号并不是受闰年影响的唯一一天,还有一个非常重要的日期是12月31号,因为闰年有366天,然而很多的程序错误的把一年硬编码为365天。
  • 基于云技术的特别考虑,同时考虑到绝大多数的云程序都会使用UTC(世界标准时间)-至少应该这样做。这也意味着在2月29号的午夜,在你本地时区它可能是其他时间。例如,美国太平洋时区,2月28号(在日历上是前一天) 4:00PM闰日将到达UTC的2月29号午夜。检查其他时区的时间。
  • 如果针对闰月问题,你正准备实时监视你的系统,那么你应该考虑从2月28号到3月1号的为期三天的时间窗口。同样,你应该从12月30号到1月1号留意第366天的问题。
  • 闰年漏洞能够在任何地方,任何语言中找到,但在C/C++代码中最危险,因为它会导致程序崩溃或者缓存溢出(这会导致安全风险)。
  • 有一些过去闰年造成的一些高影响力、高知名度的漏洞,比如:
  • 2012年 Microsoft Azure 服务中断:一张证书有效期限的计算错误造成服务中断长达12小时
  • 2012年 TomTom GPS 导航错误:造成许多的设备不能定位当前的位置
  • 2010年 Sony PlayStation 网络中断:由于误认2010年为闰年造成的
  • 2008年 所有的Microsoft Zune 设备成板砖: 由于对12月31号这个时间的处理方面的逻辑错误造成的
  • 2008年 Microsoft Exchange 管理漏洞:阻止管理员在2月29号做许多事情
  • Lotus 1-2-3 对于1900年错误的计算,至今还影响着Microsoft Excel,已经长达30年了!

这些都是上过头条的大事件。我敢肯定至少发生了数千起有着不同程度的影响力和引人注目的事件。另一个是1996年鲜为人知的漏洞,直接导致新西兰和塔斯马尼亚岛铝冶炼厂的控制中心在12月31号午夜(第366天)突然关闭。

因为熔融金属的温度不受控制从而导致了数百万美元的设备损坏。一个又一个的???事警示我们软件的小故障对真实世界造成的危险。考虑到最近广泛采用IOT(物联网)与云计算交互,我们都应该保持高度警惕。

两个最危险的闰年漏洞

#1:在C/C++中加上或减去年份

在C/C++代码使用Win32 API时,SYSTEMTIME结构类型是民用时间的常用表示方式,日期的每个部分都用不同的字段来表示,分离出年、月、日和其他值,下面的代码很常见,:

SYSTEMTIME st; // 声明一个SYSTEMTIME的变量GetSystemTime(&st); // 获取当前的日期和时间赋给st变量st.wYear++; // 给st增加1年

上面的代码将成功调用,但是在2月29号被调用的话就会有风险,所得到的值仍会是2月29号,但是所得值的年份却是非闰年,例如,2016-02-29 + 1 年 = 2017-02-29, 这个值并不存在!

在最终作为参数传递给其他函数前,这个值可能被会传递很多次。例如SystemTimeToFileTime

, 它会导致函数失败并返回0。不幸的是,在代码中发现调用方法后却不检查返回值的情况已是司空见惯,这会导致不可预见的错误,例如使一个

FILETIME

值处在未初始化的状态。

  • 经常检查Win32函数调用结果的状态值,特别是:SystemTimeToFileTime。
  • 正确的给SYSTEMTIME增加一年,检查结果的有效性,必要时做出调整。
SYSTEMTIME st; // 声明一个SYSTEMTIME的变量GetSystemTime(&st); // 获取当前的日期和时间赋给st变量st.wYear++; // 给st增加1年// 检查是否为闰年bool leap = st.wYear % 4 == 0 && (st.wYear % 100 != 0 || st.wYear % 400 == 0); // 如果是2月29号但不是闰年,就将28号赋给st.wDayst.wDay = st.wMonth == 2 && st.wDay == 29 && !leap ? 28 : st.wDay;

需要注意的是,类似的错误也可能发生在标准的C++(非Windows)代码中,其使用tm结构类型而不是SYSTEMTIME,它具有略微不同的行为,月份是使用0-11而不是1-12,所以2月在tm中是用1来表示的。你可能调用_mkgmtime来生成time_t结构类型而不是SystemTimeToFileTime。最主要的不同点是,当你传递一个非闰年的2月29号时,它会生成一个表示3月1号的值。如果你的应用程序需要的值是2月28号的话,那就需要做出调整了。

#2:声明一个由全年中每一天构成的数组

int items[365];items[dayOfYear - 1] = x;

上面的C语言代码可以很容易在C#或者其他语言中重写,或使用字符串或者其他类型来代替整数类型。关键点是是我们通过声明一个固定大小的数组来放置数据,并且假设一年中的每一天都在数组中有一个位置。问题是闰年中的第366天即12月31号在数组中将无法放置。

这种方式针对不同的语言产生的影响有很大的不同。在C#中,这会抛出IndexOutOfRangeException异常。在C语言中,在开启编译对边界有效性检查的情况下会产成缓冲区溢出,这些影响或微不足道,或相当重大。JavaScript 开发者在这个问题上不用担心,因为第366个元素会被自动添加。

数据过滤问题

闰年漏洞会影响从前一年的2月28号到下一年的3月1号的数据。通常他们都体现在数据过滤中,当查询范围不能正确计算到多出的一天;或者假设一年总是365天,或者假设2月总是28天。例如下面的SQL 语句:

SELECT AVG(Total) as AverageOrder, SUM(Total) as GrandTotalFROM Orders WHERE OrderDate >= @startdate AND OrderDate < @enddate

这个查询本身是没有问题的,但是如果@enddate设置成今天,@startdate设置成今天减去365天,这样会发生什么情况呢?如果在这范围内正好有一个2月29号,那么这个查询范围就不能覆盖整个一年。假如这个查询是表示一年的数据,那么它是不正确的,因为开始时间少算了一天。

当你对这样的漏洞进行评估的时候,问问你自己这样的漏洞会造成什么样的影响。在这种情况下,这些值会显示在哪里?例如,如果订单的平均金额作为图标的数据显示在仪表盘上,并每天进行更新,那么这可能并没有像在公司的财报(比如证监会季度文件)上显示全年的总销售额那么重要。当然,这个评定需要一些熟悉它的用途和使用情况的人;这没有一个通用的规则去遵守的。

也许通过下面的方法可以解决这个问题:

TimeSpan oneYear = TimeSpan.FromDays(isLeapYear(endDate.Year) ? 366 : 365);

DateTime startDate = endDate - oneYear;

然而这个方法是有缺陷的。我们不能只通过年来确定需要添加的天数。 假如endDatea可以是2016-01-01, 虽然2016年是闰年。但是只要减去365天就可以得到2015-01-01。然而,你必须考虑2月29号是否在范围内,如果手动来做的话,势必会增加代码的复杂度,特别是你需要考虑覆盖多个年份而不仅仅是一个。

最终归结为这样的一个事实,.NET中用TimeSpan来表示绝对时间(其他语言也有类似的类型),将“年“和”月“作为民用时间的单位。一年或者一个月中的时间绝对量是一个变量,它依赖于你所要描述的年和月。当你考虑夏令时,同样可以说是实际上的一天,本片文章将不详述。

.NET中正确的解决方案是:

DateTime startDate = endDate.AddYears(-1);

AddYears方法能够正确的实现所有必要的逻辑来判断需要向前或向后移动多少天(本例子中的-1)。

JavaScript增加一年

JavaScript 开发者在这种情况下真的应该使用moment.js,可以简单的表示如下:

var m = moment();m.add(1, 'years');

然而,一些人仍然喜欢使用笨方式做这件事,所以你经常会看到这样的:

var d = new Date();d.setFullYear(d.getFullYear() + 1);

这儿会产生我之前描述的问题,如果今天是闰年的2月29号,上面代码得到的结果将会是3月1号,这个结果也许是你可接受或不可接受的。考虑到如果对其他日期,得到的月份的值和原值是一样的,同样考虑到你的程序可能希望得到一个月末的日期而不是一个月初的日期。通过下面的方法你能够通过JavaScript语言正确的增加年数而不需要一个完整的库。

function addYears(d, n) { var m = d.getMonth(); d.setFullYear(d.getFullYear() + n); if (d.getMonth() !== m) d.setDate(d.getDate() - 1); } // 使用举例点击打开链接var d = new Date(); addYears(d, 1);

这种方式实现了增加年数,它会检查日期是否过渡到了3月,如果是的话就做出调整。再次强调,不要试着去计算到底增加多少天来实现这个,除非你真的知道你在做什么。

其他常见的错误

下面是其他一些开发者出现的与闰年相关的错误,例如:

  • 搞乱了闰年的算法。并不是每4年一次,而是能被4整除,但是不能被100整除,或者能被400整除的年份。1900年就不是闰年,但是2000年是,2100年也不是闰年。
  • 使用以每个月的天数定义的数组,并将2月份标记为28天。当使用这样的数组时,你必须考虑到闰年的第29天,一个不错的方式就是为闰年准备一个不同的数组以区别于平常的年份。或者更好的方式是使用你拥有的API (当可用的时候)来代替自己做算术。
  • 为闰年创建分支来编写代码,但是没有测试所有的代码。例如,Zune 漏洞的代码在顶部的有一个分支叫IsleapYear(year),这显然是从来没有测试过。
  • 使用单独的年、月和天的值,但不验证有效性。例如,你可能有一个界面通过单独的下拉控件来选择每一个日期的组成部分,如果只是测试某天是否在一个月内有效是不够的,你还必须考虑年。
  • 在日期计算中使用一年的平均长度,例如365.25或者365.2425天。虽然这个可能是在科学上是精确的,但是它绝不适合对民用时间进行这样的操作,至少如果你需要的是精确的值。如果你只需要一个近似值这是没有问题的,但是相关联的当天时间可能会从结果中消失。

怎么捕获闰年漏洞?

  • 仔细检查你的代码。搜寻任何与时间相关的,仔细的排查。
  • 确保你做过很多的单元测试,知道如何“模拟时钟”(下一节介绍)
  • 测试全年,而不只是之前的闰年
  • 验证所有的输入,包括配置
  • 验证结果和完善测试方案,要有一个结果验证失败后的策略(failure strategy)。

经常有人问我其他两种方法:

静态代码分析

如果有一套工具通过跑一下你的代码就可以帮助分析并指出闰年的漏洞就好了,但不幸的是,据我所知没有。目前能给到你的就是,简单的字符搜索或者是正则表达式搜索。

.NET真正需要的是有一整套Roslyn 分析器,它可以捕获普通的日期/时间漏洞包括闰年、时区、夏令时 、语法分析等。可惜,我还没有时间去创建这样的分析器,也许日后我会去做,但现在还没有。

如果C++、JavaScript或者其他语言有类似的工具也是不错的。尽管据我所知是没有的。

时间错位

为什么不将时钟移到到之后的某个时间,看看会发生什么?对于某些系统这个实际上是可行的,但这种想法会有几个问题:

  • 你的单元测试可能仍然捕获不到所有的情况。你也许不会去捕获日期筛选错误,除非你实际在看(用肉眼)你整个程序的屏幕和报告,这肯定是容易出错的。
  • 你可能对安全性有一种错觉,相信一切都是没问题的,只有当你的客户在2月29号或者3月1号给你打电话抱怨的时候,你会意识到你之前的想法是错误的。
  • 许多系统用域服务器进行身份验证,或者使用时间敏感的其他身份验证方案。需要承认的是Kerberos协议有严格的时间同步要求,默认的时间差不超过5分钟。同时考虑SSL证书、代码签名证书和其他与安全有关的依赖于时钟的情况,如果你试图在真实时间上做手脚会导致验证失败。

所以,一般来说,我建议你不要用这个方式,或者至少你需要考虑到外部资源的任何依赖项可能会导致误判或者使某些代码不被测试到。

模拟时钟

如何测试在不同日期有不同行为的代码呢?模拟时钟!

这是在许多可靠的系统中发现一个共同的模式(有时以“虚拟时钟”的名字被人所知道)。最主要的一点是,你所知道的系统时钟告诉你现在是什么时间-不应该随意使用。程序逻辑不应该直接调用DateTime.Now或者DateTime.UtcNow或者new Date()或者GetSystemTime或在你自己所用的语言中用类似的手段来获取当前时间和日期。

取而代之的是,你应该将时钟作为一种服务(在某种意义上),像其他的服务一样,你可以去模拟它。

例如,在.NET中,我们不在程序的逻辑中直接调用

DateTimeOffset.UtcNow

(或者类似的API),而是:

  • 创建一个IClock接口,并声明方法GetCurrentTime,它的返回类型是DateTimeOffset。
  • 创建一个SystemClock类来实现IClock接口,并在GetCurrentTime方法内调用DateTimeOffset.UtcNow。
  • 创建一个FakeClock类实现IClock接口, 它接收一个固定的值作为构造函数的参数,并在GetCurrentTime方法内返回这个固定值。
  • 你只要在你的程序逻辑中依赖IClock接口。这通常叫做构造函数注入。
  • 在测试时使用FakeClock,运行时使用SystemClock。

这个听上去需要做很多工作,但是你只要用过一次你就会看到它的优势,这确实是确保所有对当前日期和时间有依赖性的情况下对代码进行测试的唯一方法。

我没有在这提供代码,因为在不同的语言下这种开发模式是一样的。Noda Time在这方面已经做的很不错了,它在主程序集中提供IClock和SystemClock,在NodaTime.Testing程序集中提供FakeClock。用Noda Time你会做的更好。

JavaScript开发者应该考虑使用像Sinon.JS、MockDate或者built-in mocking support from moment.js这些类库。

其他语言的类库有相似的功能,请务必在试图自己实现前找到它们。

结论

闰年已经到了,不是2000年,也不是2038年,我们不得不定期地与之抗衡。前4年你写了多少代码呢?你确定一切都符合标准?现在花时间来测试和扫描你的代码吧??你也许会发现一些你不知道的潜伏在暗处的事情。

还有问题?请在这留下你的评论,我们将很乐意回答。

这部分内容最初发表在codeofmatt.com,经许可再版。

本文翻译自:https://azure.microsoft.com/en-us/blog/is-your-code-ready-for-the-leap-year/   

四 : 足彩专家新体网首单合买即中任九 称感激新体网带来好运

足彩专家新体网首单合买即中任九 称感激新体网带

来好运

中国人讲究风水,显然,在投注足彩时,也是如此。足彩高手”空谷310“可能对于重庆彩民来说并不陌生,他在多年的足彩探索中积累大量经验,不管是球路还是盘路,可谓不逊于足彩中心的足彩分析师们。在他的长期的投注实践中,也经常中奖,但是说到这次命中任九,正如他自己所说:”第一次到本土网站发起合买就能命中6千多奖金的任九,是新体网带给了他运气,不过跟单的只有两个人,没能让更多的彩民跟着他一起吃火锅,

有点小遗憾。“

虽然中奖不是难事,但是如果有个非常惊艳的开始却不是每个人都能遇到了。其实13064期足彩不可谓不难,主场作战的富勒姆和斯图加特都输了球,当然,他们输球不意外,但是两队的对手都是英超和德甲中已经提前降级了的球队,这多少有些心理冷门的意思。不过”空谷310“在他的144元的合买单中,准确的发现这两场比赛可能会出现意外的结果,从而避开富勒姆,而斯图加特则是全包。最终,恰恰是这两场比赛的联合冷门,使得本期任9奖金多达6千多元。

合买讲究的是整合资源,同时也能让更多人分享胜利的喜悦。”空谷310“不缺钱,他发合买的原因很简单,就像他自己所说:”就是为了给本土网站扎起。“显然,对于一个经常中奖,并且不差钱的人来说,发合买根本不是缺钱,而是想让更多的彩民分享到喜悦。不过有点意外的是,当期”空谷310“144元的合买单只有两人跟单,总额只有12元,但是付出跟收获是成正比的,”空谷“自己保底132元出票的中奖单,收入多达5600余元,而跟单的”LSY615“和”新体网-铁人“分别收获87元和434元的奖金,要知道”LSY615“只跟了区区2元,而”新体网-铁人“则更实惠,10元跟单换来434元的分成。

空谷310当期任九合买实单:

新体网-铁人跟单10元获得434元回报:

”空谷310“将这次中奖看做是最好的开始,他表示,将会在以后的时间里,带领跟单的用户享受更大的中奖乐趣和实惠的回报。

欢迎关注新体网彩票合买平台,”铁杆“、”空谷310“等足彩专家定期做单合买,2013,有彩票更有希望。

本文标题:网易版《我的世界》首测在即3天后开启大家准备好抢激活码了吗?-Unity Awards2015开启在即 好游戏快来!
本文地址: http://www.61k.com/1063224.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1