1935 client native

2018-07-19 15:18:35 y601500359 阅读数 1692
  • Navicat无法连接MySQL 8.0的问题解决

    1、MySQL的完整学习路径和底层运行机制 2、掌握发挥MySQL的最佳性能的优化方法 3、掌握如何处理海量业务数据和高并发请求 4、增加工作和面试时的竞争力

    283人学习 刘运强
    免费试看

原文地址:https://developer.chrome.com/native-client/sdk/download

此页面提供了Native Client SDK的概述,以及有关下载和安装SDK的说明。

下载SDK Zip文件

概观

Native Client SDK包括:

  • 支持多个Pepper版本,以针对特定最低版本的Chrome进行编译。
  • 更新实用程序以下载新捆绑包和现有捆绑包的更新。
  • 用于编译Portable Native Client(PNaCl),传统Native Client(NaCl)以及使用glibc编译特定于体系结构的Native Client应用程序的工具链
  • 示例包括说明如何使用NaCl和Pepper的C或C ++源文件和头文件,以及使用每个工具链构建示例的Makefile。
  • 用于验证Native Client模块和从命令行运行模块的工具

请按照以下步骤下载并安装Native Client SDK。

先决条件

Python 2.7

确保Python可执行文件在您的PATH变量中。Python 3.x尚不支持。

  • 在Mac和Linux上,可能预装了Python。python -V 在终端窗口中运行该命令,并确保您拥有的版本是2.7.x.
  • 在Windows上,您可能需要安装Python。转到https://www.python.org/ download /并选择最新的2.x版本。此外,请务必将Python目录(例如 C:\python27)添加到PATH 环境变量中。运行python -V在命令行来验证您正确配置PATH变量。

使

  • 在Mac上,您需要先make在系统上安装,然后才能在SDK中构建和运行示例。获得一个简单的方法make,以及其他一些有用的工具,就是安装Xcode Developer Tools。安装Xcode后,转到XCode菜单,打开“首选项”对话框,然后选择“下载和组件”。验证是否已安装命令行工具。
  • 在Windows上,Native Client SDK包含GNU Make的副本。

平台

Native Client支持多种操作系统,包括Windows,Linux,OSX和ChromeOS。它支持多种体系结构,包括x86-32,x86-64,ARM和MIPS。

版本

Chrome将在六周内发布,Chrome的开发者版本会在每个版本发布前三周推送到公共测试版。与任何软件一样,Chrome的每个版本都可能包含对Native Client和Pepper接口的更改,这些更改可能需要修改现有应用程序。但是,为一个版本的Pepper / Chrome编译的模块应该与后续版本的Pepper / Chrome一起使用。SDK包含Pepper API的多个版本,可帮助开发人员调整API更改并利用新功能:stablebetadev

安装SDK

下载和解压缩

  1. 下载SDK更新zip文件

  2. 解压缩文件:

    • 在Mac / Linux上,unzip nacl_sdk.zip在终端窗口中运行该命令。

    • 在Windows上,右键单击.zip文件并选择“Extract All ...”。将打开一个对话框; 输入一个位置,然后单击“提取”。

    nacl_sdk使用以下文件和目录创建目录:

    • naclsdknaclsdk.bat对于Windows) - 更新实用程序,它是您运行以下载和更新软件包的命令。

    • sdk_cache - 包含清单文件的目录,该文件列出了您已下载的软件包。

    • sdk_toolsnaclsdk命令运行的代码。

安装稳定包

  1. 要查看可供下载的SDK包,请转至该 nacl_sdk目录并naclsdk使用该list命令运行。SDK为每个版本的Chrome / Pepper包含一个单独的捆绑包。

    在Mac / Linux上: 

$ cd nacl_sdk
$ ./ naclsdk list

在Windows上:

> cd nacl_sdk
> naclsdk list

您应该看到与此类似的输出:

Bundles:
 I: installed
 *: update available

  I  sdk_tools (stable)
     vs_addin (dev)
     pepper_31 (post_stable)
     pepper_32 (post_stable)
     pepper_33 (post_stable)
     pepper_34 (post_stable)
     pepper_35 (stable)
     pepper_36 (beta)
     pepper_37 (dev)
     pepper_canary (canary)

上面的示例输出显示可以下载多个软件包,并且您已经安装了该sdk_tools软件包的最新版本,该 软件包已包含在zip文件中。您永远不需要更新sdk_tools捆绑包。无论何时运行,它都会自动更新(如有必要)naclsdk

捆绑标记为稳定后,稳定,beta,dev或金丝雀。这些标签通常与当前版本的Chrome相对应。我们建议您针对“稳定”捆绑包进行开发,因为所有当前Chrome用户都可以使用此类捆绑包。Native Client旨在向后兼容。例如,使用该pepper_37软件包开发的应用程序可以在Chrome 37,Chrome 38等中运行。

2、naclsdk使用该update命令运行以下载推荐的包,包括当前的“稳定”包。

在Mac / Linux上:

$ ./naclsdk update

在Windows上:

> naclsdk update

默认情况下,naclsdk仅下载推荐的捆绑包,通常是那些“稳定”的捆绑包。例如,如果当前的“稳定”捆绑包是pepper_35,那么update捆绑的下载。要下载pepper_36捆绑包,您必须明确要求:

$ ./naclsdk update pepper_36

更新包

  1. naclsdk使用该list命令运行。这将显示可用捆绑包的列表,并验证您已安装的捆绑包。

    在Mac / Linux上:

$ ./naclsdk list

在Windows上:

> naclsdk list

捆绑包旁边的星号(*)表示有可用的更新。例如:

Bundles:
 I: installed
 *: update available

  I  sdk_tools (stable)
     vs_addin (dev)
     pepper_31 (post_stable)
     pepper_32 (post_stable)
     pepper_33 (post_stable)
     pepper_34 (post_stable)
  I* pepper_35 (stable)
     pepper_36 (beta)
     pepper_37 (dev)
     pepper_canary (canary)

如果你naclsdk update现在运行,它会发出类似这样的消息警告你:

WARNING: pepper_35 already exists, but has an update available. Run update
with the --force option to overwrite the existing directory. Warning: This
will overwrite any modifications you have made within this directory.
  1. 要下载并安装新捆绑包,请运行:

    在Mac / Linux上:

$ ./naclsdk update --force

在Windows上:

> naclsdk update --force

帮助naclsdk实用程序

  1. 有关该naclsdk实用程序的更多信息,请运行:

    在Mac / Linux上:

$ ./naclsdk help

在Windows上:

> naclsdk help

下一步

CC-By 3.0许可下提供的内容

2017-12-28 12:42:00 weixin_33795743 阅读数 1197
  • Navicat无法连接MySQL 8.0的问题解决

    1、MySQL的完整学习路径和底层运行机制 2、掌握发挥MySQL的最佳性能的优化方法 3、掌握如何处理海量业务数据和高并发请求 4、增加工作和面试时的竞争力

    283人学习 刘运强
    免费试看

之前在sql server configuration manager中的native client 11.0 configuration中设置client protocol的keep alive的时间的时候,发现并不起作用,我即使将keep alive的时间从默认的30000ms改成了25000ms,但是我用netmon测试的时候发现每一次客户端的keepalive还是没30秒发送一次。

当时以为我改了sql server configuration manager中的keepalive,但是没有修改相应的注册表,所以我去注册表下查看相应的内容,keepalive所对应的注册表键值如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\tcp\Property2

发现Property2中的value已经是25000ms了。那么证明我前面的假设是错误的。

后来经过我SNI10.0上面的value是30000ms,因此怀疑是不是我在cmd中输入的sqlcmd用的是native client10.0的程序。使用sqlcmd连接一个错误的数据源会提示错误信息, 确实用的是10.0的版本。之所以有10.0的版本是因为之前安装visual stuido 2010的时候附带安装了sql server 2008 express,那个时候给我默认安装了sql native client 10.0。现在要使用11.0的解决方法是修改环境变量中的path,将11.0的路径放在10.0的前面就可以了。

还有就是native client有32位跟64位的区别,我这里直接在path中将32位的,跟10.0版本的全部删除了。


本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/08/06/2625019.html,如需转载请自行联系原作者

2015-03-15 20:22:34 vaintwyt 阅读数 3308
  • Navicat无法连接MySQL 8.0的问题解决

    1、MySQL的完整学习路径和底层运行机制 2、掌握发挥MySQL的最佳性能的优化方法 3、掌握如何处理海量业务数据和高并发请求 4、增加工作和面试时的竞争力

    283人学习 刘运强
    免费试看

背景

由于Chrome开始抛弃NPAPI,导致我们原来用NPAPI来实现的插件,需要移植到NaClNative Client)。NaCl目前仅在Chrome浏览器中得到支持,具有本机运行C/C++程序,跨平台,安全沙箱,高性能等特点,比较适用于3D游戏,多媒体播放器,CAD建模等类型的插件开发。简介


还有一种取代NPAPI的技术叫Native Messaging,支持Chrome与本地程序的数据通信,但是不适用于我们的插件,有兴趣的自行了解一下(这里)。


Mac下的开发环境搭建

1.下载SDK

下载界面的下方,有安装的步骤,挺详细的。

如果出现下面错误,可以直接下载提示中的JSON文件,里面有各个平台和版本的SDK下载路径,根据需要下载即可(建议下载最新的稳定版本)。





2.Demo演示

使用终端,进入examples目录,然后执行 make命令编译所有Demo的代码。

接着将tools目录下的httpd.py文件拷贝到examples目录中,使用终端执行 ./httpd.py (需要安装Python2.7),便可以在浏览器中通过http://localhost:5103来访问Demo。(NaCl插件不能直接用本地的js来加载,所以要么是使用服务器的js来调用,要么是虚拟出服务器来执行本地的js)


3.创建自己的项目

这里使用Xcode管理和编译项目

3.1首先创建一个Mac OS下的Bundle工程



3.2在Build Settings-Search Paths中添加NaCl库



3.3添加MakeFile文件到项目中(可以使用SDK-Demo中的MakeFile,然后做适当修改)

TARGET是生成插件的名称,SOURCES用下面这种方式可以方便增删文件。其他应该不需要修改了



3.4添加一个External Build System的Target,用来编译NaCl代码(在需要编译程序的时候,需要选中这个Target来编译)。然后在Info中,添加编译参数和MakeFile的相对路径。

编译参数如果为空,默认是编译pnacl,newlib,glibc三种Release的程序。你可以指定TOOLCHAING=pnacl/newlib/glibc和VERSION=Release/Debug。windows下使用VS2010或以上版本,可以断点调试程序,但是Xcode还不支持。






如果你在编译代码的过程中,未使用的变量和普通警告都以错误形式出现,那需要修改SDK的tools目录中的common.mk文件:将NACL_CFLAGS和NACL_CXXFLAGS中的-Werror去掉,并加上-Wno-unused。


开发代码

这一部分没有什么可以讲啦,只要把Demo中的代码看一遍,就基本上可以开发了。官方网站也有很详细的API介绍:这里

这里要提一下,NaCl的SDK在39版本新增了一个js端发送消息并等待返回结果的机制postMessageAndAwaitResponse,同时需要修改插件中接收消息的代码。以前只有postMessage,发送不等待),适用于那种非耗时的操作。

具体可以参考sdk目录中的examples/api/messaging项目


遇到的坑

1.FileIO操作只能异步

Chrome应该是怕这种耗时操作会影响页面的响应,所以才必须要异步来执行吧。这个地方尝试了不少方法,都行不通。后来只能选择预加载的模式来操作文件数据。


2.FileSystem根据域名来划分

每个调用插件的域名网站,都有独立的文件系统,这样有利于提高安全性,但是带来的弊端就是:即使是同一个插件,也不能几个域名共享本地文件数据(除非使用iframe)


3.使用FileIO存储文件到用户本地,需要申请空间

申请空间有两种方:

一是在manifest.json文件中添加unlimitedStorage权限,这做法适用于Chrome Web Store Application,在用户安装插件程序的时候,会出现下面的小黄条来向用户请求确认。

二是在js中使用navigator.webkitPersistentStorage.queryUsageAndQuotanavigator.webkitPersistentStorage.requestQuota(具体用法可以google)方法,当页面执行requestQuota时,也会出现小黄条。


只要用户不点击确定,那你的插件中跟FileIO相关的操作都会失败。


NaCl的优点

1.通过消息机制实现插件与Chrome的数据通信,使得代码比NPAPI简单很多

2.跨平台,一份代码,多处使用。但是这就意味着NaCl的限制也是非常多的


总结

从NPAPI移植到NaCl的过程,还有一些其他的坑,没有在这里一一列举了。这是一个没走几步,就需要停下来填坑的过程。或许这代表着NaCl根本不适用于我们的插件吧~只是现在还没有找到更好的方案,只能硬着头皮上了。

NaCl这种Chrome独家的API,增加了开发Web插件的成本,导致需要IE内核,Web Kit内核,Chrome三套代码,不好维护。真是希望以后有一种通用的API将它们统一起来。



2012-08-13 14:46:50 suwei19870312 阅读数 15690
  • Navicat无法连接MySQL 8.0的问题解决

    1、MySQL的完整学习路径和底层运行机制 2、掌握发挥MySQL的最佳性能的优化方法 3、掌握如何处理海量业务数据和高并发请求 4、增加工作和面试时的竞争力

    283人学习 刘运强
    免费试看

Chrome Native Client 简介

目的:

Native Client是一种允许在浏览器中运行native compiled code 的技术,允许开发者运用自己熟悉的语言来开发web应用,而不只是JavaScript,目前NativeClient技术只能应用于google自己的chrome中。

一个使用Native client技术的web应用的组成:JavaScript,HTML, CSS, 和Native Client 模块,Native Client 模块:就是用Native语言编写的,供web调用的模块,目前NativeClient SDK只支持C和C++作为native 语言。

 

应用场景:

1.      使用现有的已经存在的软件模块完成一个web 应用,而不需要换一种web语言来编写。

2.      一些传统桌面程序的迁移。

3.      多媒体应用的迁移。

4.      游戏应用的迁移。

 

Native client的工作原理:

一个Native Client应用主要分为3个组成部分:

1, HTML/JavaScriptapplication: 提供了用户界面和时间处理机制。

2, PepperAPI:  使得JavaScript code 和NativeClient module可以相互通信,同时允许Native Client 模块创建和管理浏览器相关的资源。

3, NativeClient module:  通常用于完成大量的计算,和大数据的操作。



下面看一下HTML/JavaScript和Native client Module之间的消息交互过程:

1.      Html/JavaScript代码向NativeClientModule 发送消息:

在HTML/JavaScript代码中以一个<embed>块表示NativeClient module, 例如:

<embed name="nacl_module"

          id="hello_world"

           width=0height=0

           src="hello_world.nmf"

           type="application/x-nacl"/>

在load 完native client 之后,就可以通过getElementByID(hello_world),来获得Nativeclient的句柄--helloworldModule,之后可以通过helloworldModule->PostMessage()向NativeClient发送消息。

2.      Html/JavaScript接收NativeClientModule发送的消息。

在html/JavaScript代码中,通过注册监听message消息,来实现对nativeClient消息的handle.

listener.addEventListener('message',handleMessage, true);

3.      NativeClient Module向html/javaScript发送消息。

在nativeClient端,以一个pp::Instance()来代表html/JavaScript实体, 于是NativeClientModule 就可以通过pp::Instance->PostMessage来向html/JavaScript端发送消息。

4.      NativeClient Module 接收html/javaScript消息。

可以通过pp::Instance()的hanleMessage()接口来处理发过过来的消息。

 

参考:

https://developers.google.com/native-client/overview?hl=zh-CN#intro

https://developers.google.com/native-client/devguide/tutorial#review

2018-07-19 11:01:17 y601500359 阅读数 1972
  • Navicat无法连接MySQL 8.0的问题解决

    1、MySQL的完整学习路径和底层运行机制 2、掌握发挥MySQL的最佳性能的优化方法 3、掌握如何处理海量业务数据和高并发请求 4、增加工作和面试时的竞争力

    283人学习 刘运强
    免费试看

原文链接:https://developer.chrome.com/native-client

Native Client是一个沙箱,用于在浏览器中高效,安全地运行已编译的C和C ++代码,与用户的操作系统无关。 Portable Native Client扩展了该技术的架构独立性,允许开发人员编译其代码一次,以便在任何网站和任何具有提前(AOT)转换的架构上运行。

简而言之,Native Client将本机代码的性能底层控制带到现代Web浏览器,而不会牺牲Web的安全性可移植性。观看下面的视频,了解Native Client的概述,包括其目标,工作原理以及Portable Native Client如何让开发人员在Web上运行本机编译代码。

此站点使用几个Native Client示例。要获得最佳体验,请考虑下载最新版本的Chrome。当你回来时,一定要看看我们的演示

视频链接地址

两种模块

Native Client有两种版本。

  • Portable Native Client(PNaCl):发音为'pinnacle',PNaCl运行单个便携式(pexe)可执行文件,并且在大多数Chrome实现中都可用。Chrome内置的编译器将pexe编译为客户端硬件的本机代码。在执行任何代码之前编译整个模块,而不是在执行代码时编译。PNaCl模块可以从任何Web服务器托管。
  • Native Client(NaCl):也称为传统或非便携式Native Client,NaCl运行依赖于架构的(nexe)模块,这些模块打包到应用程序中。在运行时,浏览器根据客户端计算机的体系结构决定加载哪个nexe。通过Chrome网上应用店(CWS)安装的应用和扩展程序可以使用NaCl模块而无需其他提示。也可以在开发期间从chrome://extensions安装NaCl应用程序,但是,这不是推荐的分发机制。

这些香料在PNaCl和NaCl中有更深入的描述