Client SDK https://developers.google.com/native-client/sdk/download 需要设置两个环境变量, Python2.7.3的安装路径加到PATH里, NACL_SDK_ROOT ++ 教程 https://developers.google.com/native-client/devguide/tutorial 先确保所有环境变量有效 设置下Chrome, 让它能够运行本地的NaCl 程序 编译: nacl_sdk\pepper_21\examples>make 启动服务器: nacl_sdk\pepper_21\examples>httpd.cmd 运行示例: http://localhost SDK pepper_23(或更高) CHROME_PATH 环境变量指向chrome.exe NACL_SDK_ROOT 环境变量指向nacl_sdk\pepper_23\ 下载测试版本SDK: nacl_sdk>naclsdk update pepper_23 下载VS插件: nacl_sdk>naclsdk update vs_addin 安装插件: vs_addin\install.bat
Updated README instructions Don't use sgen for non-nacl mono build for parity brushing off some nacl all for NaCl Add nacl cross-compile target Fix up bugs in x86-codegen for NaCl, use 4.0 for regression First pass nacl glibc work More glibc nacl work, builds shared library. nacl code. NaCl Mono build Re-enable dlopen support in NaCl Mono Enable 'make check' for NaCl on root build directory
已经有前人做了一些NaCl的移植工作了 这个是Bullet的NaCl版本演示: http://bulletphysics.org/nacl/ 代码在这里: https://github.com/erwincoumans 我们这里只关心Bullet怎么在NaCl里使用 编译运行 从github上Clone下来 ? HTML5 不过, 想要渲染性能高, 还是把3D部分也用NaCl实现的好 另外, VS2010的属性表配置真是方便, 安装过NaCl的插件后, 在c:\Users\[USERNAME]\AppData\ Local\Microsoft\MSBuild\v4.0\下会有NaCl32, NaCl64, PPAPI的配置. 所以, 把现有的C++工程转换成NaCl的版本, 只需要增加对应的配置就可以了, 十分方便
一些限制 相对于Win32来说, NaCl相当于另一个平台, 一些操作系统相关的API需要移植. 文件只能访问HTTP服务器或者本地Cache中的 (限制了资源加载来源) 这些限制都是为了保证安全性(想想ActiveX为什么失败了)和跨平台(Win/Linux/OSX使用同一个版本) 从Win32到NaCl 参考nacl_sdk\vs_addin\examples\hello_nacl_cpp\hello_nacl_cpp.sln 使用PPAPI平台编译运行(编译成Chrome DLL插件, 可以调用现有的 (&uMsg); DispatchMessage(&uMsg); } } return uMsg.wParam; 替换WndProc为回调函数, 这样窗口和NaCl 可以发布了, hello_nacl_plus目录(包含nexe)拷贝到example目录, 启动HTTP服务器, 像运行示例程序那样运行 可以说, 有了PPAPI插件的帮助, 整个移植过程相当的平滑,
NaCl的3D渲染API使用的GLES2.0, 这也很好理解, 因为这已经是公认的跨平台标准了. 手机, 平板, 网页, PC都可以使用. 之前有在手机上做过一个简单的GLES渲染器, 有一些差异总结一下吧(不限于NaCl): GLES没有固定管线, 就算画条线要也写个shader.
此时 NaCl 和 PNaCl 应运而生。 因此在 2008 年,Google 的 Brad Chen、Bennet Yee 以及 David Sehr 开源了 NaCl 技术,2009 年,NaCl 技术正式达到生产可用状态。 NaCl 应用及其模块在性能上与原生应用的差距非常小,但由于 NaCl 与 CPU 架构强关联且不具有可移植性,需要针对不同的平台进行开发和编译,导致开发者无法自由分发 NaCl 应用及模块。 NaCl 的性能损耗极小 PNaCl 的全称为"Portable Native Client",其通过替换 Native Code 为 LLVM IR 子集并在客户端编译为 NaCl 的方式解决了 NaCl 同时,其开发难度、成本以及糟糕的兼容性问题(2011 年开始 Firefox 及 Opera 正式支持 PPAPI 及 NaCl)都成为了 NaCl/PNaCl 普及的最大障碍。
extended)两种1.标准ACL(config)#ip access-list stand listname 定义命名标准列表,命名为listname,stand为标准列表(config-std-nacl 流量通过注:deny:拒绝通过;可选:deny(拒绝通过)、permit(允许通过)192.168.30.0 0.0.0.255:源地址及源地址通配符;可使用any表示任何IP(config-std-nacl )#permit any(config-std-nacl)#end 返回2.扩展ACL(config)#ip access-list extended listname 定义命名扩展列表 ,命名为listname,extended为扩展(config-ext-nacl)#deny tcp 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 eq www (config-ext-nacl)#permit ip any any 允许其它通过(config-ext-nacl)#end 返回(config)#interface vlan
研究系统揭示了氮原子优先掺杂为硫提供锚定位点,实现硫含量从0.72%提升至2.32%,并通过实验与理论计算阐明了硫掺杂增强Cl₂吸附与加速NaCl/Cl₂可逆转化的催化机制。 极化电压对比进一步表明,高硫材料有效降低了NaCl沉积/溶解过程中的极化,提升了反应可逆性。图4:电池反应机理与可逆性研究。 原位拉曼光谱中D/G峰信号在放电时减弱、充电时恢复,表明NaCl在高硫表面可逆沉积与剥离。超声波扫描成像进一步直观展示了高硫电池中Cl₂与NaCl的高可逆转化过程。图5:DFT计算与电池综合性能展示。 吉布斯自由能计算证实硫掺杂显著降低了NaCl氧化为Cl₂的能垒。 机制上,氮掺杂引起的电子结构重排与缺陷位点为硫原子锚定提供了理想环境,形成的噻吩/呋喃型硫结构显著增强了Cl₂的化学吸附并降低了NaCl/Cl₂转化的反应能垒。
PPT: 《C++ on the Web: Run your big 3D game in the browser》, 里面提到了他们把游戏移植到网页上所做的各种尝试 主要提到了三种技术: Google NaCl 到最后还是选择了emscripten, 这里有一些他的Demo: http://www.flohofwoe.net/demos.html 在他之前的Blog中也有提到各个方案的问题: NaCl: 仍然没有开放 不限浏览器, 支持HTML5+WebGL即可 目前主要的问题是IE对于WebGL的支持, 但是IE11已经对WebGL开始实验性的支持了, 从这一点来说, 这个方案还是一种不错的预研选择 环境搭建的话, 跟NaCl
config)# ip access-list { standard | extended } access-list-name 2、如果是标准命名ACL,命令语法如下: Router(config-std-nacl 24的流量通过,而拒绝其他流量,标准命名ACL命令如下: R1(config)#ip access-list standard test #创建名为test的标准命名ACL R1(config-std-nacl )#permit host 192.168.1.1 #允许主机192.168.1.1的流量通过 R1(config-std-nacl)#deny any #拒绝其他流量 若退出后还要继续修改规则,可直接在全局模式下执行 :Router(config)# ip access-list standard test进入ACL命名ACL组,继续写入如: Router(config-std-nacl)#15 permit host Router(config-ext-nacl)# permit ip any any #允许所有流量通过 以上规则的作用是禁止192.168.1.0网络访问主机192.168.2.2的21端口,而允许其他任何流量通过
加密数据 : 按照优先级,应该选择: (1) 首选 NaCl库,或者libsodium库,使用里面的crypto_secretbox()/crypto_secretbox_open() 函数 (2) 非对称加密 应该使用NaCl库 适用场景:当你需要加密消息,发给陌生人,并且对方异步接收消息,做离线解密时。 NaCl库,那就使用NaCl库。 NaCl库: http://nacl.cr.yp.to/ 是密码学学术权威 Daniel J. Bernstein教授 设计的一个密码学算法库,2008年发开始公布。 NaCl的特点是:api简洁而易用,高性能,高安全性,主要用于网络通信,加密,解密,签名等,NaCl提供了构建高层密码学工具的核心功能。 2.
extended)两种 1.标准ACL (config)#ip access-list stand listname 定义命名标准列表,命名为listname,stand为标准列表 (config-std-nacl ;可选:deny(拒绝通过)、permit(允许通过) 192.168.30.0 0.0.0.255:源地址及源地址通配符;可使用any表示任何IP from wljslmz (config-std-nacl )#permit any (config-std-nacl)#end 返回 2.扩展ACL (config)#ip access-list extended listname 定义命名扩展列表 ,命名为listname,extended为扩展 (config-ext-nacl)#deny tcp 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 eq (config-ext-nacl)#permit ip any any 允许其它通过 (config-ext-nacl)#end 返回 (config)#interface
NaCl 与 WebAssembly 对执行环境要求复杂,但是执行性能与效率会比 Node.js 与 Python 高很多。 那么,现阶段在 Docker 容器内部运行 WebAssembly 函数相比于 NaCl 有什么好处呢? 与 NaCl 函数不同,WebAssembly 函数是跨平台的。允许开发者在自己的电脑上测试函数,然后部署在任何服务器,硬件架构,公共云,或者容器上。 远比 NaCl 动态库容易管理。 WebAssembly 比 NaCl 函数更安全,因为 WebAssembly 提供了一个安全隔离的沙箱。 这比任何其他基于 C、C++、Rust 的 NaCl TensorFlow API 都简单好用很多。值得你来学习! 快速开发的模板 在这里,我们提供了一个模板,可以快速上手进行开发。
extended)两种 1.标准ACL (config)#ip access-list stand listname 定义命名标准列表,命名为listname,stand为标准列表 (config-std-nacl 流量通过 注:deny:拒绝通过;可选:deny(拒绝通过)、permit(允许通过) 192.168.30.0 0.0.0.255:源地址及源地址通配符;可使用any表示任何IP (config-std-nacl )#permit any (config-std-nacl)#end 返回 2.扩展ACL (config)#ip access-list extended listname 定义命名扩展列表 ,命名为listname,extended为扩展 (config-ext-nacl)#deny tcp 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 eq (config-ext-nacl)#permit ip any any 允许其它通过 (config-ext-nacl)#end 返回 (config)#interface
)#permit 10.1.0.0 0.0.255.255 EG1(config-std-nacl)#permit 11.1.0.0 0.0.0.255 EG1(config-std-nacl)#permit )#permit 10.1.0.0 0.0.0.255 R1(config-std-nacl)#per 12.1.0.0 0.0.0.255 R1(config-std-nacl)#permit 13.1.0.0 R1(config-std-nacl)#permit 192.1.100.0 0.0.0.255 R1(config-std-nacl)#ex R1(config)#route-map ACL110 )#permit 10.1.0.0 0.0.0.255 EG2(config-std-nacl)#permit 11.1.0.0 0.0.0.255 EG2(config-std-nacl)#permit 194.1.10.0 0.0.0.255 EG2(config-std-nacl)#permit 194.1.20.0 0.0.0.255 EG2(config-std-nacl)#ex EG2(config
)#permit 10.1.0.0 0.0.255.255 EG1(config-std-nacl)#permit 11.1.0.0 0.0.0.255 EG1(config-std-nacl)#permit )#permit 10.1.0.0 0.0.0.255 R1(config-std-nacl)#per 12.1.0.0 0.0.0.255 R1(config-std-nacl)#permit 13.1.0.0 R1(config-std-nacl)#permit 192.1.100.0 0.0.0.255 R1(config-std-nacl)#ex R1(config)#route-map ACL110 )#permit 10.1.0.0 0.0.0.255 EG2(config-std-nacl)#permit 11.1.0.0 0.0.0.255 EG2(config-std-nacl)#permit 194.1.10.0 0.0.0.255 EG2(config-std-nacl)#permit 194.1.20.0 0.0.0.255 EG2(config-std-nacl)#ex EG2(config
(config-ext-nacl)#permit ip any any 允许其它通过 (config-ext-nacl)#end 返回 (config)#interface Switch (config-ext-nacl)#deny icmp any 192.168.1.1 255.255.255.0 禁止端口号为135的应用。 Switch (config-ext-nacl)# deny tcp any any eq 135 禁止协议为www的应用。 Switch (config-ext-nacl)#deny udp any any eq www 允许所有行为。 Switch(config-ext-nacl)# permit ip any any 将ACL应用到具体的接口上: Switch (config)#interface range f 0/1
列表的维护 可以在列表的任意位置加若干条或者删除其中任何一条 二.标准命名的配置命令 router(config)#ip access-list standard 名字 router (config-ext-nacl )#permit ip host 主机地址 网段地址 子网掩码反码 router(config-ext-nacl)#deny ip any any 查看命名ACL router#show access-lists 删除单-ACL语句 router(config-ext-nacl)#no acl 命名编号 删除整个ACL命名列表 router(config)#no ip access-list extended
PC6R3的g0/0口出方向 deny ip host 192.168.1.4 permit any R3(config)ip access-list standard 1 R3(config-std-nacl )deny host 192.168.1.4 R3(config-std-nacl)permit any R3(config-std-nacl)int g0/0 R3(config-if-GigabitEthernet
PC2 MSW1(config)#ip access-list standard kxybz //配置命名ACL standard是标准ACL kxybz名称 MSW1(config-std-nacl )#deny 192.168.1.0 0.0.0.255 MSW1(config-std-nacl)#permit any MSW1(config-std-nacl)#exit MSW1(config-if Server的Web服务器 R1(config)#ip access-list extended gby //配置命名ACL standard是扩展ACL gby名称 R1(config-ext-nacl )#deny udp 192.168.2.0 0.0.0.255 8.8.8.0 0.0.0.255 eq domain //使PC2无法使用Server的DNS服务 R1(config-ext-nacl )#permit ip any any R1(config-ext-nacl)#int f0/0 R1(config-if)#ip acc gby in 实验验证 PC1 ping PC2 PC2 访问