一个时代即将结束:微软CEO鲍尔默宣布将在一年内退休

北京时间8月23日夜,微软在其官网上发表新闻称,微软首席执行官Steve Ballmer将在12个月内退休。
微软在这篇《微软CEO Steve Ballmer将在12个月内退休》新闻中表示,其首席执行官Steve Ballmer已决定将在12个月内退休,尤其是当新的首席执行官人选确定,他就会立马选择退休,另外在此过渡阶段,Steve Ballmer仍将担任微软首席执行官,并继续带领微软向设备和服务公司转型。
目前微软已成立由微软董事会组成的特别委员会,其成员包括微软董事会主席比尔·盖茨,不过该委员会负责人却由微软独立董事John Thompson担任。另外,在这篇新闻稿中还透露,对于未来新首席执行官,他们将同时考虑微软内部和外部的候选人。
而在退休之际,Steve Ballmer还在一封《moving forward》(勇往直前)的内部邮件中向大家表示,对于做这个决定,应该是没有什么特别合适的时间,他之前曾打算在公司转型中期退休,但现在微软更需要一个能够带领微软朝新方向发展的首席执行官。
最后需要指出的是,Steve Ballmer于2000年担任微软公司首席执行官,距今为止已长达13年,而在此前,这位微软首席执行官曾表示,他将会在2018年退休
互联网上的反应

股价表现:在传出微软首席执行官Steve Ballmer将在一年内退休消息之后,微软股价从32.45美元一度涨至35.45美元,截止北京时间23:41分时,微软股价基本稳定在34美元左右,较开盘价上涨5.34%。
张宏江鲍尔默的退休宣布了微软一个时代的结束。非常荣幸与他多次会面,也非常感谢他当年对微软亚洲研究院的大力支持!更要感谢他对微软亚洲工程院和亚太研发集团的支持。这些支持让我受益匪浅。
创新工场董事长兼首席执行官李开复微软宣布鲍尔默12个月内退休,股票大涨7%!(笔者注:这是在暗示Steve Ballmer人心背离吗?)
中国移动互联网产业联盟常务副理事长兼秘书长李易微软官方正式宣布,鲍尔默决定在未来十二个月内退休。对于这个姗姗来迟的决定,恐怕连比尔盖茨都盼望了很久了吧。多说一句,艾洛普在诺基亚卧薪尝胆的苦日子恐怕也快到头了,毕竟下过基层挂职锻炼过了,也该重重提拔啦!

36氪激情褪去,鲍尔默的离开可能是最好的结果。微软 CEO 史蒂夫·鲍尔默宣布将在12个月内退休。这也就意味着,这位微软元老级的人物将在一年内离开这个他几乎为之奉献了整个青春的公司。他的确为这家公司奉献了太多,但也错失了太多机会。
网友吴以四关于微软和鲍尔默的四个不公平:1.微软其实是一家企业级基因更重的公司,外界总拿微软当消费级公司评价;2.微软是一家成熟的“重”公司,外界总拿微软与新兴的互联网“轻”公司比较;3.微软在研发上一直未有怠慢,外界总是期望过高;4.那些批评微软的文字,大部分是在盗版Office和Windows中完成。
网友AbcLite微软宣布更换CEO后股价涨了7%,市值增加了大概200亿美元,以鲍尔默平均年薪140万美元来说,30年总工资是4200万美元(不包括股票奖励),他辞职为公司赚的钱可以请476个鲍尔默联系工作30年…微软怎么都是赢啊!
网友CharlesZuo看微软要换帅了:鲍尔默1年后退休!首先科技行业是个发展迅速的行业,不能用多面人来做掌门CEO,因鲍尔默是个和事老较色,以我的观点必须用技术背景+懂营销商务市场的人,乔布斯就是。然后,新旧交替,很少有人能自己革掉自己的弊端来驾驭新时代,公司更是如此。对于微软要砍业务然后学IBM转型服务。
网友陈翔Justin鲍尔默是一位商业高手,但科技洞察力显然不足。2007年4月,他曾对《今日美国》说”iPhone不可能拿下太大市场份额”,原因是iPhone 499美元合约价过高。但到了2013年,iPhone已拿下美国智能手机市场42%的份额,而微软Windows Phone仅有5%……
接班人会是谁?
微软CEO Steve Ballmer退休之后,微软公司内部和外部谁最有可能执掌微软?国外媒体ZDNET专栏记者Mary Jo Foley给出了她的答案
她认为,在公司内部微软首席运营官Kevin Turner、市场营销执行副总裁Tami Reller、Skype部门前总裁、现微软执行副总裁Tony Bates和服务器与工具部门总裁兼执行副总裁Satya Nadella都是最有利的角逐人选。
不过由于Kevin Turner在微软重组中失去权力,并且不太受员工欢迎,所以他的可能性最低。在剩下的三人中,Tami Reller在2001年微软收购时进入微软,2007年开始负责Windows与Windows设备的商业与营销战略;Tony Bate则是前Skyepe部门总裁,曾在思科担任过总经理,在本次重组中Tony Bate获得重用,因此微软如果会选女CEO的话,她将是一个非常可能的人选;而Satya Nadella目前是服务器与工具部门总裁,在此之前曾在在线服务部门和商业部门做过负责人,因此他的经验最多,从这点来看他担任微软CEO的可能性也是比较大。
在微软公司外部,诺基亚CEO Stephen Elop、Windows 8之父Steven Sinofsky和前Juniper公司CEO Kevin Johnson都是该职位的潜在人选。
其中,Stephen Elop曾担任微软商业部门总裁,有传言称,Stephen Elop就是在微软CEO和董事会默许下去诺基亚的,而传言其作用就是把诺基亚变成微软的部门……而Windows 8之父Steven Sinofsky虽然已离职,但在微软内部拥有众多支持者,他接任Steve Ballmer的职位还是有一定可能性的。最后一位Kevin Johnson曾担任微软平台与服务部门负责人,最近才从Juniper公司退休。
不过在这些候选人中,或许Stephen Elop的可能性最大,为什么呢?因为他为微软做出的牺牲最大……当然,前面这句是玩笑,只是笔者的猜测。不过,大家觉得在这些人中谁最有可能担任微软首席执行官?不妨说说你的理由。(文/张勇 责编/魏兵)

转载自 csdn

jQuery数组处理详解(含实例演示)

jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的介绍,顺便对jQuery数组做个总结.温故,知新.

强烈建议你打开DEMO演示后再看下面的详解: 点此查看DEMO

1. $.each(array, [callback]) 遍历[常用]

解释: 不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~). 回调函数拥有两个参数:第一个为对象的成员或数组的索引, 第二个为对应变量或内容. 如果需要退出 each 循环可使回调函数返回 false, 其它返回值将被忽略.

each遍历,相信都不陌生,在平常的事件处理中,是for循环的变体,但比for循环强大.在数组中,它可以轻松的攻取数组索引及对应的值.例:

1
2
3
4
5
var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; //本文所用到的数组, 下同
$.each(_mozi,function(key,val){
//回调函数有两个参数,第一个是元素索引,第二个为当前值
alert('_mozi数组中 ,索引 : '+key+' 对应的值为: '+val);
});

相对于原生的for..in,each更强壮一点. for..in也可以遍历数组,并返回对应索引,但值是需要通过arrName[key]来获取;

2. $.grep(array, callback, [invert]) 过滤数组[常用]

解释: 使用过滤函数过滤数组元素.此函数至少传递两个参数(第三个参数为true或false,对过滤函数返回值取反,个人觉得用处不大): 待过滤数组和过滤函数. 过滤函数必须返回 true 以保留元素或 false 以删除元素. 另外,过滤函数还可以是可设置为一个字条串(个人不推荐,欲了解自行查阅);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$.grep(_mozi,function(val,key){
//过滤函数有两个参数,第一个为当前元素,第二个为元素索引
if(val=='墨子'){
alert('数组值为 墨子 的下标是: '+key);
}
});

var _moziGt1=$.grep(_mozi,function(val,key){
return key>1;
});
alert('_mozi数组中索引值大于1的元素为: '+_moziGt1);

var _moziLt1=$.grep(_mozi,function(val,key){
return key>1;
},true);
//此处传入了第三个可靠参数,对过滤函数中的返回值取反
alert('_mozi数组中索引值小于等于1的元素为: '+_moziLt1);

3. $.map(array,[callback])按给定条件转换数组 [一般]

解释:作为参数的转换函数会为每个数组元素调用, 而且会给这个转换函数传递一个表示被转换的元素作为参数. 转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组, 并扩展至原始数组中.

这个是个很强大的方法,但并不常用. 它可以根据特定条件,更新数组元素值,或根据原值扩展一个新的副本元素.

1
2
3
4
5
6
7
8
9
10
11
12
13
var _mapArrA=$.map(_mozi,function(val){
return val+'[新加]';
});
var _mapArrB=$.map(_mozi,function(val){
return val=='墨子' ? '[只给墨子加]'+val : val;
});
var _mapArrC=$.map(_mozi,function(val){
//为数组元素扩展一个新元素
return [val,(val+'[扩展]')];
});
alert('在每个元素后面加\'[新加]\'字符后的数组为: '+ _mapArrA);
alert('只给元素 墨子 添加字符后的数组为: '+ _mapArrB);
alert('为原数组中每个元素,扩展一个添加字符\'[新加]\'的元素,返回的数组为 '+_mapArrC);

4 .$.inArray(val,array)判断值是否存在于数组中[常用]

解释: 确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 ).

记得indexOf()方法了吗? indexOf()返回字符串的首次出现位置,而$.inArray()返回的是传入参数在数组中的位置,同样的,如果找到的,返回的是一个大于或等于0的值,若未找到则返回-1.现在, 知道怎么用了吧. 有了它, 判断某个值是否存在于数组中,就变得轻而易举了.

1
2
3
4
5
6
7
8
var _exist=$.inArray('墨子',_mozi);
var _inexistence=$.inArray('卫鞅',_mozi)
if(_exist>=0){
alert('墨子 存在于数组_mozi中,其在数组中索引值是: '+_exist);
}
if(_inexistence<0){
alert('卫鞅 不存在于数组_mozi中!,返回值为: '+_inexistence+'!');
}

5 .$.merge(first,second)合并两个数组[一般]

解释: 返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素.

这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组.

1
2
3
//原生concat()可能比它还简洁点
_moziNew=$.merge(_mozi,['鬼谷子','商鞅','孙膑','庞涓','苏秦','张仪'])
alert('合并后新数组长度为: '+_moziNew.length+'. 其值为: '+_moziNew);

6 .$.unique(array)过滤数组中重复元素[不常用]

解释: 删除数组中重复元素. 只处理删除DOM元素数组,而不能处理字符串或者数字数组.

第一次看到这个方法,觉得这是个很便捷的方法, 可以过滤重复, 哈, 多完美, 但仔细一看, 仅限处理DOM元素. 功能8折了.所以, 我给它定义成了一个不常用的元素, 至少, 我用jQuery以来没用到过它.

1
2
3
4
5
6
7
8
var _h2Arr=$.makeArray(h2obj);
//将数组_h2Arr重复一次
_h2Arr=$.merge(_h2Arr,_h2Arr);
var _curLen=_h2Arr.length;
_h2Arr=$.unique(_h2Arr);
var _newLen=_h2Arr.length;
alert('数组_h2Arr原长度值为: '+_curLen+' ,过滤后为: '+_newLen
+' .共过滤 '+(_curLen-_newLen)+'个重复元素')

7. $.makeArray(obj) 将类数组对象转换为数组[不常用]

解释: 将类数组对象转换为数组对象, 类数组对象有 length 属性,其成员索引为0至 length-1.

这是个多余的方法, 无所不能的$本来就包含了这个功能. jQuery官网上解释的非常模糊. 其实, 它就是将某个类数组对象(比如用getElementsByTagName获取的元素对象集合)转换成数组对象.

1
2
var _makeArr=$.makeArray(h2obj);
alert('h2元素对象集合的数据类型转换为: '+_makeArr.constructor.name);//输出Array

8. $(dom).toArray()将所有DOM元素恢复成数组[不常用]

解释: 把jQuery集合中所有DOM元素恢复成一个数组;

并不常用的方法, 个人甚至觉得它和$.makeArray一样多余.

1
2
var _toArr=$('h2').toArray();
alert('h2元素集合恢复后的数据类型是: '+_toArr.constructor.name);

转载自 jQuery数组处理详解(含实例演示)@Mr.Think

mysql拷贝表的几种方式

mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助。

假如我们有以下这样一个表:

1
2
3
4
5
id      username    password 
-----------------------------------
1 admin *************
2 sameer *************
3 stewart *************
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `admin` (   
`id` int(6) unsigned NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
  1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)

    1
    CREATE TABLE newadmin LIKE admin
  2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。

    1
    2
    3
    4
    5
    CREATE TABLE newadmin AS   
    (
    SELECT *
    FROM admin
    )
  3. 如果你要真正的复制一个表。可以用下面的语句。

    1
    2
    CREATE TABLE newadmin LIKE admin;   
    INSERT INTO newadmin SELECT * FROM admin;
  4. 我们可以操作不同的数据库。

    1
    2
    CREATE TABLE newadmin LIKE shop.admin;   
    CREATE TABLE newshop.newadmin LIKE shop.admin;
  5. 我们也可以拷贝一个表中其中的一些字段。

    1
    2
    3
    4
    CREATE TABLE newadmin AS   
    (
    SELECT username, password FROM admin
    )
  6. 我们也可以讲新建的表的字段改名。

    1
    2
    3
    4
    CREATE TABLE newadmin AS   
    (
    SELECT id, username AS uname, password AS pass FROM admin
    )
  7. 我们也可以拷贝一部分数据。

    1
    2
    3
    4
    CREATE TABLE newadmin AS   
    (
    SELECT * FROM admin WHERE LEFT(username,1) = 's'
    )
  8. 我们也可以在创建表的同时定义表中的字段信息。

    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE newadmin   
    (
    id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
    )
    AS
    (
    SELECT * FROM admin
    )

寻找你喜欢的事情

昨天写的文章回复里,友邻“油豆皮”的回复我很喜欢“列出来自己想的,先去尝试,知道是做什么的,然后思考是否是自己想要的,直到找到自己喜欢的。然后专注自己喜欢的事情上。去做才是关键!总是在我想这个阶段,看似有无限可能,其实不做就一点可能也不会有。”

其实这是很好的办法,我身边的很多人都用这个方法找到了自己喜欢做的事,并且用这件事养活自己,成了书评人、撰稿人、编辑、设计师、交易员、IR、翻译、旅行家、买手、工程师、律师。思考出自己想做的事,是件不算太难的事。当别人向我询问什么事的时候,征求我的意见的时候,我很少提出建议,一般都会建议他自己去试试,事实上我一直在反复强调这个观点,每个人的经验、阅历、位置、角色、道德底线、追求不一样,价值观、人生观、世界观不一样,想得真心不一样。我很坚持具体问题,具体分析的观点,当然,不是说完全不听别人的建议,在搜集资料的阶段,我会大量的咨询别人的意见,储备知识,再自己做决定。在我看来,别人说再多,不如自己试试,试试再决定。当然要系统的试,了解、理解以后才能确定自己到底行不行。简单的做一下,遇到困难就退缩,这不叫试。

我们在读书的时候,有周六日、寒暑假,这些都让我们有充分的时间,去尝试自己想做的事。很遗憾很多人,没有把握这段时间,把他们利用这些时间做了很多美好的事。毕业会成为我们的分水岭,很多时候,有些人是思考出自己未来的方向,然后用大学的时间做了很多美好的事。而还有一些人,没有思考出自己的方向,也用大学的时间做了很多美好的事。我记得我毕业的时候,年级主任和一位同学站在角落了,年纪主任说:“你天天搞对象,能找到喜欢的工作吗?”同学说:“那谁谁也搞对象。”年纪主任说:“人家想好了以后干什么,把证都考下来了,才搞对象。你连自己想干什么都不知道,就跟人家学,你是人家吗?人家干嘛你就干嘛。”很多年以后,我看人生需要揭穿,突然就想到了这一幕,像一个炸雷,一下就惊醒的感觉,一瞬间的了悟。

把大的目标,分割成无数小块,目标就会变得没那么难。只不过我们在还没开始的时候,就否定了自己。比如写书评、其实每周读一本书,写一篇书评,一年就是52篇。有的人就会觉得,你这样平均下来每天至少花3小时,可是这3小时,你不看书,不写书评。你会做什么?看电视?打游戏?侃大山?聊QQ?迈出一步,会发现生活中很多时间浪费的特别冤枉。在书评人QQ群里讨论这件事,写书评的习惯养成以后,就算没有人约书评,每天也要看几页书。我以前觉得看财务报表是件非常困难的事,前辈跟我说,如果能坚持每天看一会儿,然后解决问题,等过一段时间,过了最艰难的那段时间,你会发现其实看财务报表也挺有乐趣的。

我刚开始工作的时候,集团HR跟我说职业和事业的区别:今天上班了,明天还得上,这是职业。今天上班了,明天还想上,这是事业。我想这也是判断你是不是做喜欢的工作的一个方法。

敏锐的观察力

昨天晚上读《可可•香奈儿的私密生活》,封面上写的关于主人公的评论:香奈儿之所以能够成功,是因为她对时代的变化有着敏锐的观察力和非凡的创造力。
  
我发现我看书,总是带着情绪,昨天下午的时候发的广播内容是:“那些跟我说打算做证券,喜欢证券,适合证券的友邻们啊!!!证券真的不是只有股票、只有证券公司、只有客户经理(不是歧视客户经理)。你能看多远,你就能走多远,你要是只看见这些,你真心只能做这些!!!”里面第一条回复,一下就把我点醒了,“真正热爱证券的人,不等你提醒早就百度过无数次证券相关的东西了。不热爱的人,你提醒了他也不会去查的。”
  
于是我带着这种情绪看书,而看到封面上的评价的时候,马上就决定晚上要看这本书,敏锐的观察力,这不是人人都有的能力,而拥有这种能力的人,总能发现身边的机会,在最合适的时候把握住,让自己不断的提高。就像会观察的人,会观察到证券行业无数有上升空间的职位。而没有这种能力的人,只知道证券公司、只知道客户经理。

不光职业,寻找伴侣的时候更会遇到这种情况,以前大家一起聚会的时候,一位大哥A和另外一位大哥B做同样的行业,大哥B为大哥A最近生意为什么转型了,大哥A介绍了一下:新业务市场是空白的,利润高,市场大,没有竞争者,非常好做,开始半年已经成为公司里面的重要利润来源了。大哥B就为大哥A怎么发现这个新机会的,大哥A说“就年初的时候,咱们一块吃饭,那谁谁提的,我媳妇详细了解了一下,就发现了。当时你和你媳妇不是也在场吗?!”大哥B马上懊悔的说“我媳妇傻不拉吉,除了买东西别的都不上心。”大哥A赶紧安慰他说“我媳妇岁数大自然想的就多,再说你媳妇那么好看,一看就不是该为这种事操心的人。”这就是不同的人,在寻找伴侣的时候,观察的地方不一样,有的观察有能力的,有的观察好看的。
  
看书里香奈儿的一生,不是在观察就是在创造,这些积累让她能够有非凡的成就,让她成为优雅的代名词,得到男人的爱慕,更影响几个世纪的女人们的精神追求,成为直到今天,时尚的代名词。
  
这让我想到了初中的时候,上学路上的一块广告牌上的话:你的心有多大,你的世界就有多大。你能看多远,你就能走多远。
  
不知道我理解的对不对,我把这本书里所描述的香奈儿与艺术家们、设计师们的生活、交往等,归纳为:观察能决定你看到什么,而你看到的,可以决定你做什么。因为香奈儿善于发现那些有才华的现代主义艺术家们,而在于这些艺术家们交往的过程中,她有观察到了时代的变化,通过这些变化,她在自己的创造中,把这些时尚的元素融入其中,从而成了那个时代叛逆与进步的代名词。

php调用Google translate_tts api实现代码

以下是对php调用Google translate_tts api的实现代码进行了分析介绍,需要的朋友可以过来参考下
今天用google翻译时,发现个好东西:Google translate_tts,调用这个api就可以听到英文发音,
省掉了自己上传音频文件的麻烦。
我用php写了个调用的方法,可以把音频文件保存在本地。
如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$newfname = '1.wmv';
$reqBaseURL = 'http://translate.google.com/translate_tts?tl=en&q=how%20do%20you%20do';
$remote_file = fopen($reqBaseURL, "rb");
if ($remote_file){
$newf = fopen($newfname, "wb");
if ($newf){
while(!feof($remote_file)){
fwrite($newf, fread($remote_file, 1024 * 8),1024 * 8);
}
}
}
if ($remote_file) {
fclose($remote_file);
}
if ($newf) {
fclose($newf);
}

转载自:http://www.jb51.net/article/40369.htm

11个UI设计秘诀

  1. 尽量使用单栏设计,从上到下一气呵成地展示自己的内容,引导用户阅读页面内容,并采取进一步的行动,而多栏容易导致阅读者分心。
  2. 给用户小礼品,不要上来就卖东西。送礼也是一种有效的说服策略,友好的姿态对销售更有好处。
  3. 合并类似的功能,避免内容过于分散。设计页面时,往往在无意中做了很多功能类似的按钮和元素,太多的UI碎片造成用户学习成本较高,应当尽量合并功能类似的内容。
  4. 社会认同(social proof)是迅速提升转换率的好办法,与其自吹自擂,不如请使用者见证或提供真实的对比数据。
  5. 要强调的部分要反复出现,比如想让用户点击的下载链接或者购买按钮,别只出现一次,建议放在单栏页面的顶端与底部,或在多个页面呈现。
  6. 可点击、已点击、纯文本等三类内容的样式应该是彼此明显不同的,用不同颜色、深度和对比度加以区分,帮助人们了解你的界面导航的基本语言:我在哪里,我能去哪里。应用得当会让人们更容易学习和使用这些线索来浏览网站。
  7. 用推荐,而非提供两个类似的选项。心理学研究表明,当有多个可选项时,用户的选择能力将会下降,因此,强调某款产品的特性可能是个好办法。
  8. 多用善意提醒,如果用户更改了某一选项,用一行文字提醒他们可以“复原”就好,无需大费周章设计“再次确认”弹窗,后者太突兀。
  9. 明确目标客户,可以聚集更多有类似特征的用户,其缺点可能会失去一些潜在客户。但话说回来,信任建立于透明度之上。
  10. 直接比犹豫不决更好。尽量多用肯定语气,少用“也许”、“有兴趣吗?”等词句。
  11. 尝试多用对比内容,比如用对比色和明暗深浅突出显示不同的元素,让某个内容看起来更明显,与其他内容分隔开来。

麦当劳理论

跟同事一道吃午饭,一说到去哪里吃,大家又都没有想法时,通常我会提个建议:去吃麦当劳。然后有趣的事情发生了:大家不约而同地一致反对,之后更好的午餐建议就有了。百试不爽,魔术一般!

似乎我们总能从最坏的想法破冰,讨论一旦开启,人们的创造力就随之丰富起来。我把这称为“麦当劳理论”:倾向于躲避坏想法,而激发出好想法。

工作中我也大量使用这一技巧,不同的项目开启的方式也不同。有时会有正式的需求;有时只是听说有个项目会落到自己这边,于是提前打算;也有时经过几个月的思 考才跟团队分享一个想法。创造性的工作没有固定流程,但我现在相信,所有创造性的活动有一点是相通的:第二步总比第一步好。

Anne Lamott说的“拙劣的初稿”、Nike的标语“做就是了”,跟我所说的“麦当劳理论”都是一回事,都是说第一步没有我们想象的那么难。有次我曾收到乔布斯的一封邮件,里面只有一个词“Go!”。

下一次,当脑子里萦绕一个想法时,找点勇气来平抑一下意识深处的那个小批评家,直接找来纸笔,动手勾画蓝图。那厮可能又在想:“有时间做吗?”“这想法不蠢吗?”或者“先上网逛逛再说。”……闭嘴!别把自己带坏了!

同样的方法也适用于团队一起工作的情形。项目早期讨论时,拿起笔到白板上随便画点什么。或许愚蠢,但这很好!“麦当劳理论”告诉我们,它会触发集体的实际行动。

扳倒第一道障碍,把一些东西真正写到纸上。在脑子里没法完成,你需要写点什么,画点什么,做点什么,然后修改就是了。让自己迈出第一步确实需要非凡的勇气、专注和毅力,但绝非不可能,你需要的只是一个开始。

作者Jon Bell,本文作者是知名博客Medium.com的作者之一,曾创建博客文集“Look What I Made”及“What I Learned Building”。

原文链接:https://medium.com/what-i-learned-building/9216e1c9da7d

W3C小组发布Web存储API推荐标准

日前,W3C的Web应用工作组正式发布了Web Storage的正式推荐标准。该标准为Web Client定义了一组标准的API,用来以键值对的方式访问持久数据存储中的数据。

Web存储API允许Web应用程序将数据存储在Web客户端,尽管桌面和移动浏览器支持该API已有很长一段时间,但想要达到这种状态还需要一段时间。

5201f4f54f06e

什么是Web存储API?

在用户的机器上进行本地存储的最基本的实现方法是利用Web存储API。该API使用key/value对来支持开发人员存储能够被Web应用程序访问的基本信息和变量。该功能的一个理想用例是用于存储用户已经浏览完并且离开应用程序或已经关闭Web浏览器之后需要永久保留的简单数据。例如,保存游戏状态、保存导航位置或存储你希望在整个Web应用程序中使用但你不希望使用cookie的一些特定信息(例如用户名称或姓名)。类似的API还可以用于为个体会话存储数据。这些数据将在用户浏览完离开应用程序或关闭浏览器之后自动清除。
本地存储数据和应用离线运行功能

Web存储API提供一个简单的名称值对存储API(name-value pair storage API),该API被当做一个关键API,允许Web应用离线运行功能;该特性还常被用于在Web中的本地应用及本地应用数据。尽管在浏览器支持要比这大的多,但本地存储范围限制在5MB内。

在所有的HTML5 API中,Web存储API获得广大厂商的广泛支持已有很长一段时间。浏览器支持使用API高达90%以上,包括桌面和移动浏览器。从下面的这幅图表可以看出各大主流浏览器对caniuse.com网站的支持情况。

5201f4b67cd58

英文出自:Programmableweb