简介
有一个新的武器,让javascript开发人员在提高性能和生产力的同时,选择他们最喜欢的编程风格。这种武器就是WebAssembly,它将彻底改变客户端的Web开发。
WebAssembly,或wasm,是一种用于浏览器客户端脚本的底层的字节码格式。如果您使用过JVM或.NET,就知道JVM或.NET会将您使用的语言(java、c#等)编译到目标字节码。WebAssembly也扮演着同样的角色,所以当您将软件编译到WebAssembly时,您的软件就可以在所有支持它的平台上使用,换句话说,所有浏览器都可以使用。
实际上,WebAssembly是由浏览器开发人员在现有JavaScript引擎的支持下实现的。本质上,它是用来代替JavaScript作为网站上编译器和转发器的目的地。例如,它的开发人员现在可以编译到WebAssembly,而不是将类型记录编译成JavaScript。简而言之,它不是一个新的虚拟机,它是每个浏览器中包含的相同的JavaScriptVM的新格式。这将使得不使用JavaScript就可以利用现有的JavaScript基础设施。
最小可行产品的设计于2017年3月完成,现在已经为每个主要浏览器准备好了实现。

首先,新的WebAssembly格式承诺在解析性能方面取得显著的进步:

为WebAssembly所考虑的二进制格式可以本机解码,比解析JavaScript快得多(实验显示,速度超过20×10)。在移动平台上,大型编译代码只需20-40秒就能解析,因此本机解码(尤其是与其他技术结合起来,比如流传输以获得比gzip更好的压缩)对于提供良好的冷负载用户体验至关重要。
-WebAssembly FAQ

请注意,我们讨论的是解析性能,而不一定是执行性能。因为在许多情况下,它将在现有的JavaScript引擎上运行。然而,仅仅是解析性能的提高就允许在以前开发的Web软件上使用。例如:虚拟机、虚拟现实、图像识别等。

第一批生产用户可能会成为游戏引擎开发人员,因为他们总是在寻找最佳的性能。在WebAssembly之前,他们所希望的最好的是asm.js(一种简化的JavaScript,为速度优化),这是一种很酷的技术,但实际上并不适用于许多游戏。我记得我尝试过著名的演示史诗城堡(现在离线)由虚拟技术。它实际上运行平稳,但是下载和解析代码需要大约15分钟,这显然不适合快速游戏。

事实上,Autodesk计划支持WebAssembly,支持他们的Stingray游戏引擎和团结技术,他们是团结游戏引擎的创建者,早在2015就开始试验WebAssembly。Rust开发人员也已经在努力支持WebAssembly在Web上运行Rust代码。

它能为你做些什么?
在更大的方案中,WebAssembly的出现意味着您将不再被迫在Web上使用JavaScript,因为它是浏览器中唯一运行的东西。JavaScript名声不好,但实际上它是一种很好的语言,用于快速编写小脚本。问题是,目前您被迫使用所有您需要在网上运行的其他东西,这对于许多大型项目来说是一个问题。

确实,您可以使用更好的JavaScript版本,比如类型记录,甚至是新的语言,比如Kotlin。但是,最终它们都必须编译成JavaScript。反过来,这也给JavaScript开发人员带来了问题,这些问题基本上必须支持所有场景和所有编程风格。WebAssembly将改变这种状况,让每个人都专注于他们能做得更好的事情。

这还不是全部:将WebAssembly移植到其他平台是可能的。这意味着,如果您用编译成WebAssembly的语言编写软件,那么您可能能够在.NET上运行它。事实上,它允许重用Web上已有的JavaScript基础设施,这意味着您已经可以在生产中使用它。

然而,这并不是唯一的选择。您可以为您的需要创建自己的特定实现。您可以为您的语言创建一个优化的编译器。您可以从头创建它,也可以将WebAssembly支持添加到现有的编译器中。因此,您可以利用所有其他WebAssembly模块。

例如,您可以为公司内部使用的DSL创建一个WebAssembly编译器,并使其在客户端的Web上运行,而无需使用诸如Oracle Java插件或AdobeFlash之类的自定义插件。

本文翻译自introduction-to-webassembly

问题呈现
在windows环境下,从anaconda上下载的安装包,发现安装不成功。

allusers is False
Traceback (most recent call last):
  File "_nsis.py", line 176, in <module>
    main()
  File "_nsis.py", line 148, in main
    mk_menus(remove=False)
  File "_nsis.py", line 50, in mk_menus
    import menuinst
  File "E:\deve\anaconda\lib\site-packages\menuinst\__init__.py", line 23, in <m
odule>
    from .win32 import Menu, ShortCut
  File "E:\deve\anaconda\lib\site-packages\menuinst\win32.py", line 58, in <modu
le>
    "documents": get_folder_path(FOLDERID.Documents),
  File "E:\deve\anaconda\lib\site-packages\menuinst\knownfolders.py", line 215,
in get_folder_path
    return get_path(folder_id, user)
  File "E:\deve\anaconda\lib\site-packages\menuinst\knownfolders.py", line 206,
in get_path
    path = path.decode(codec)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-6: ordin
al not in range(128)

原因分析
检查源代码后发现是因为创建菜单时,有一处路径带有中文“我的文档”引起的。
以下为出错地方的python代码:
1.png
Python在进行编码转换时,会将 unicode 作为中间编码,但 unicode 最大只有128,所以这里当尝试将 ascii 编码字符串转换成中间编码(unicode)时由于超出了其范围,就报出了如上错误。

解决方案
解决方法1:在anacondaLibsite-packagesmenuinstknownfolders.py文件开头添加如下代码

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
  reload(sys)
  sys.setdefaultencoding(defaultencoding)

解决方法2:在anacondaLibsite-packages目录下添加一个sitecustomize.py文件,文件内容如下:

import sys
sys.setdefaultencoding('utf-8')

美国职业棒球大联盟
很多名人和运动员使用微博,人人网和Instagram等社交网络与粉丝进行互动并不是秘密。 但是,因为这些平台上的水军、键盘侠太多,导致这些互动并不能深入。 至少这是MLB球员的想法。。
成人棒球运动员协会(MLBPA)正在推出一个名为“Infield Chatter”的应用程序。

该应用程序本质上是一个定制的社交应用,仅供选手和粉丝使用。

像其他社交网络一样,每个人都有自己的个人资料,可以发布图片,视频等。您可以跟随自己喜欢的运动员并对他们的帖子发表评论,他们可以回复。

还有一些更独特的功能 - 例如问答环节和比赛,以赢得玩家的纪念品和玩家独特的体验。其中有一点很体现棒球特色 - 该APP不用“喜欢”,而是用“碰拳”来表示对帖子的肯定。
iphone版界面
超过1,000名MLB运动员已经注册了该应用。 这意味着,粉丝们从第一天开始接触已经可以接触大量的内容。

类似的程序通常会遇到一个“先有鸡还是先有蛋”的问题。没有运动员入驻APP,就没有粉丝入驻;没有粉丝入驻,这应用也将难以发展下去。幸好由于该APP是由MLBPA发起的,因此,联盟中的每个运动员都有兴趣(无论是在职业生涯上还是在潜在的经济上)看到这个APP的发展。

MLBPA表示,APP是根据运动员的要求构建的,他们希望以更个性化的方式与粉丝进行互动,并且可能在此过程中发展个人品牌。 虽然像微博和Instagram这样的平台肯定有很大的影响力,但我们粉了太多人,以致于很容易错过我们实际想要看到的内容。

所以当一个玩家可能有一百万粉丝时,很可能这些粉丝也跟随数以百计的其他账号,比如新闻,娱乐,或者其他球类运动或者其他领域的账号。如果使用该APP(Infield Chatter),则棒球迷们便可以专注于棒球领域。

外场手Rajai Davis说:其他社交媒体就是达到目的,没关系。 但是,这些网站上有很多疯狂的活动,并不总是发布个人资料的最安全的地方。 直到现在,棒球迷还没有一个好地方。 我认为这是棒球选手们同意一起工作的最好的方案之一。

该应用程序与一个名为Honeycommb的创业公司合作建立,它帮助为一群粉丝建立社区。 他们最近为Lady Gaga建立了一个自定义应用程序,可以在比微博等其他社交网络允许的更个性化的级别上与粉丝进行互动。

到目前为止,该应用没有做任何盈利计划。 这样专门的粉丝的平台,很有吸引力,或许能够吸引一些广告商的注意。这意味着如果足够的粉丝加入,MLBPA可能会有一些不错的广告机会。

本文翻译自:https://techcrunch.com/2017/04/18/mlb-players-are-launching-a-new-social-network-just-for-their-fans/