开源项目是如何让这个世界更安全的?

在安全世界中使用虚拟化进行隔离 --Armv8.4 上的安全世界软件架构 Armv8.4 架构在安全世界中增加了虚拟化支持。本白皮书介绍了引入此功能的原因以及它提供的安全性改进。本文介绍了一种利用这些优势的软件架构。安全 EL2 和此软件架构为平台安全架构 (PSA) 固件框架的 A-Profile 处理器版本提供了基础。 阅读详情

在前不久的上海外滩大会上,蚂蚁资深技术专家、Kata Containers 创始人王旭向参会者分享了开源、开放协作与软件安全可信的话题,本文根据演讲内容编辑整理而成。

 

今天,我想在这里和大家探讨开源与安全的话题。在过去,人们一直有一些疑问:开源是否比闭源更安全?开源项目如何保证自己的安全?如何通过开源社区促进业界改善安全性?

 

这里,我将以 Kata Containers 项目以及蚂蚁基础设施团队的实践为例,对这些问题做一些探讨,来看看社区和业界是怎么做的。

 

开源项目如何保证安全性?

首先是开源比闭源更安全吗?

 

你可能从哪里听说过:开源软件相比闭源软件的一个优越性在于,开源软件更安全。

 

开源运动的一位颇具话题性的早期领军人物 Eric S·Raymond,在他的著作《大教堂与集市》中写道:

 

“在一群足够多的 beta 测试者与共同开发者的情况下,几乎所有问题都可以被快速定位,并且由某个人迅速解决。”

 

“有些所谓安全系统,只有在其不为人所知时才是安全的,当心这些虚假的隐秘性。”

 

这些论点几乎是无可辩驳的。然而,争论就在于——开源是否意味着更多专业的 review,更多的人看到代码甚至是发现漏洞了,他们是否会第一时间来帮助开源项目改善质量而非第一时间利用漏洞进行入侵?开源项目是如何第一时间处理漏洞的?

 

下面让我们来看一个例子。

 

这是 Kata Contaienrs 项目的 VMT 流程图,描述了项目漏洞事件响应团队接收到安全报告后是如何处理的。

 

 

所谓 VMT,是 Vulnerability Management Team,这是一个应对安全事件的“特权”工作组,成熟的、社区化的开源项目都有这样一个核心团队。当安全研究人员发现在他们的研究中发现项目存在安全漏洞的时候,会向 VMT 工作组发出报告,而 VMT 收到之后,会在寻求修复方案的同时,对问题进行评估、去权威机构分配 CVE 编号,在 patch merge 之后,还需要确保主要用户的安全,然后再对外公开修复信息。

 

这里的一个关键点是,开源项目 VMT 团队和安全人员的配合。只有规范运作的开源项目和白帽子们良好互动,才能真的做到第一时间修复漏洞、保护用户,而不是放出 0-day 漏洞。这中间的响应流程,即使对于“开源”软件,也是不开放的。

 

所以,这里我们的结论是——不是你把代码放在 GitHub 上开源了,安全就随之而来了,你要有吸引安全人员的活跃社区和可以响应问题的机制。这里我们知道,有些个人化的开源项目是没有这样的响应机制的,这样的开源项目并没有让用户得到安全,相反,一旦有大量用户使用,得到的是很多惊险。

 

VMT 机制保证了开源项目本身的安全,那么,在一个庞大的开源社区,比如云原生社区,它由数量繁多的开源项目组成生态,关于社区的整体安全性,还会有哪些有趣的互动呢。

 

如何提升开源社区的安全水位

开源的一个便利之处就是,如果你觉得哪里不够好,可以自己去弥补。在云原生  landscape 里,搜一下安全相关的品类,立刻可以得到一大片的开源安全组件或工具:

 

 

需要说明的是,这些项目不是预先设计的目标,而是社区互动产生的结果。它们反映了一个自组织生态里的演化规律,而不是操作守则。在开源协作里,这样的项目会自然的涌现出来。

 

这里,我想以 Kata Containers 为例,来介绍下如何开发一个开源项目并融入社区。

 

首先我先来简单介绍一下 Kata Containers——

 

Kata Containers 首先是一个容器运行时引擎,在生态中的位置和 runc 是一致的。但是,和 runc 不同的是,Kata 用轻量级虚拟化技术来做隔离,这个强隔离带来的不仅是安全隔离,也包括性能隔离和故障隔离。

 

不过我要强调的一点是,Kata 仍然是一个容器引擎,在系统中是完全对等替换 runc 的,对云原生应用来说,它是完全透明的,即使从性能和开销角度说,我们也已经对它进行了很多轻量化的改造。

 

所以,我们说,它同时兼有虚拟机和容器两者的优点,secure as VM, fast as containers。

 

三年来,Kata Containers 最让我感到骄傲的,是通过开源社区,我们撬动了社区里的其他大玩家,提升了整个云原生世界的安全水位,利用开放协作提升了云原生领域的安全性、改善了社区的信任。

 

Kata 创立之前的虚拟化容器技术的发展并不快。2015年上半年,我们就开源了 hyperContainer 和 runV,Intel 也同时开源了clear containers。不过,当时我们的影响还是非常有限的,想加入 CNCF 都被拒之门外,但我们还是在 Kubernetes 社区里制造了一些影响。比如在 2016 年的时候,我们和 Kubernetes node 团队一起推动了 CRI 接口,来抽象化容器引擎。

 

2017年9月份,我在一个会议上遇到当时 Intel OTC 的时任 GM,也是Intel 的 SSP VP, Imad Sousou,我们决定一起合作一个开源项目,在基金会的帮助下,我们一起工作了三个月,最终在2017年12月的 KubeCon 大会前一天,发布了 Kata Containers 这个项目。

 

随后的故事可以用峰回路转来形容,在2018年上半年,也就是紧接着 Kata 发布之后的下一次 KubeCon,Google 发布了 gVisor 安全容器项目,再之后半年,在2018年 AWS 发布了轻量虚拟化 VMMFireCracker,并引用了 Kata Containers 项目来做对比。而在这之间的2018年中,Google 推动 containerd 改进了 Shim API,来进一步让安全容器可以和 runC 一起被支持,随后这个被称为 shim-v2 的 API 也得到了 CRI-O 的支持,加上 RuntimeClass 和其他一些改进,可以说,2018年是安全容器的爆发年。

 

今天,Kata 拥有了不小的用户社区,得到了 RedHat,SuSE 和 Ubuntu 三大主流 distro 的支持,也在很多不同行业进入了生产之中,不仅我们蚂蚁、阿里用上了,百度的 Kata 案例也在去年的 OpenInfra Summit 上得到了超级用户大奖,在今年10月19日的 OpenInfraSummit 大会上,我在 Keynote 里正式宣布 Kata Containers 1.x在12个稳定发布之后,正式发布2.0版本。不仅 Kata,Google GKE 的用户还可以用上 gVisor,它帮助用户躲过了前不久的 CVE-2020-14386 漏洞。

 

可以说,开源的力量就在于此——代码只是它对世界的影响力的冰山一角,在水面之下的那些开放协作和互动,让社区的用户受益,得到了更多的好项目,让社区向更好的方向发展。

 

基金会如何让开源世界更安全?

要想促进整个开源世界的安全,开源社区的治理组织不能不提。其中,基金会不仅可以接纳安全项目,还可以安全为目的建立基金会,将天南海北的开发者聚集到一起,攻克共同的安全课题,也是开源安全的重要一环。

 

让我们以 Linux 旗下的机密计算联盟 CCC 为例来说明,蚂蚁通过将项目捐献给 CCC、参与这样的组织从而对开源社区的安全作出贡献。

 

在数据安全和隐私保护越来越受到重视的今天,机密计算(Confidential Computing)是一个具备广泛应用前景的前沿技术领域,可信执行环境(Trusted Execution Environment)作为其重要分支,受到业界科技巨头的重视。

 

机密计算联盟就是在这样的背景下诞生的,CNCF 中国区总监 Keith Chan 告诉我们:CCC 的任务和目标之一是在公有云上实现机密计算,这样我们可以做到以前无法做到的事情,其中比较典型的就是在云上运行敏感数据的计算,机密计算将作为安全体系的核心手段来保护这些敏感数据。

 

要实现这一目标并不容易,因为机密计算仍然处于早期,业界鲜有应用,几家企业各自推进自己的研发应用,但难以对业界形成示范效应。因此需要基金会这样的组织来推进这一过程。

 

CCC 希望通过开源开发的原则聚集全世界的人一起来共建机密计算的技术和平台,具体的做法包括:

  • 定义机密计算,并通过开源的方法让全世界的人可以参与,构建生态圈,加快提高市场的接受度和采用率;

  • 通过开源的方法简化企业对机密计算应用的开发和管理;

  • 定义一些基础的服务和框架,并让开发者能够放心地采用这些技术。

 

作为 CCC 关键成员的蚂蚁集团也将捐赠 Occlum LibOS,这是来自中国的第一个机密计算开源项目,也是目前易用性最好的机密计算 LibOS。

 

 

通过将其捐赠给基金会,Occlum 将成为社区主导的开源项目,将吸引更多业界专家共建,并将和社区其它开源项目合作,如与 HyperLedger 的 avalon 项目的合作,在更广泛的应用场景中落地。

 

另外,不仅仅是 Occlum,蚂蚁集团还正式开源了 KubeTEE,解决机密计算在集群中的问题,还有正在研发中的 HyperEnclave,解决TEE部署环境问题。这些机密计算的组件,也是蚂蚁对提升整个社区和业界的安全性所做的努力。

 

正是有开发者、组织、业界机构的共同努力,才让开源项目和社区更加安全,而更安全的开源社区,也将让整个世界变得更加安全。

 

Kata Container 延伸阅读

Java模块化:打造更安全、高效的代码世界 本文深入探讨了Java模块化系统如何解决传统Java程序中出现的JAR地狱问题,提高代码封装性与安全,以及实现更清晰的依赖管理。文章通过实际案例和代码示例,展示如何创建和运行模块化程序,以及模块化带来的性能提升和独特包执行强制等优势。 阅读详情

相关推荐

GROMACS新手必看:从PDB文件到完整分子动力学模拟的保姆级教程

本文提供GROMACS分子动力学模拟的保姆级教程,从PDB文件处理到完整模拟流程全覆盖。详细讲解结构预处理、系统构建、能量最小化、生产模拟等关键步骤,并分享性能优化和结果分析技巧,帮助新手快速掌握分子动力学模拟的核心操作。

yhn456789的博客 763

【TEE论文】HyperEnclave: An Open and Cross-platform Trusted Execution Environment(USENIX ATC 2022)

Enclave:灵活性开源、兼容SGX的process-based TEE灵活的飞地模式:supports the flexible enclave operation modes to fulfill various enclave workloads参考文献。

qq_43543209的博客 1975

Windows10开机无限蓝屏(SrtTrail.txt)

这个问题已经有很多的大佬发过解决办法了,这里仅仅作为自己日后方便查找所写文章 无法开机——自动修复失败,报SrtTrail.txt文件错误,且陷入无限蓝屏的循环 事故 故事的起因是这样的: 开开心心的组装电脑,花了几天时间来配置,然后发现USB3.0的接口太少,于是在某宝上搞到一张pcie转7口USB3.0的转接卡,往电脑上一插 插电,开机,电流轻松跑上去 然后,它和原来的磁盘阵列卡冲突,跳过阵列卡自检直接进入系统,boom,就导致了这场悲剧 解决方法 在蓝屏的界面找到:疑难解答->通过命令提示符 使

Holo__的博客 3万+

【亲测免费】 HyperEnclave 项目常见问题解决方案

HyperEnclave 项目常见问题解决方案 项目基础介绍 HyperEnclave 是一个开源的跨平台可信执行环境(Trusted Execution Environment, TEE)项目,旨在提供一个透明且可信赖的执行环境,支持多种异构 CPU 平台。该项目的主要目标是解耦根信任(Root of Trust, RoT)与 CPU 供应商,从而提升 TEE 生态系统的透明度和信任度。Hype...

gitblog_01104的博客 1234

手把手教你用Excel自动化处理G14大额风险暴露报表(含211版模板)

本文针对G14大额风险暴露报表(含211版)手工填报效率低、易出错的核心痛点,提供了一套基于Excel VBA的完整自动化解决方案。文章详细讲解了如何构建从数据采集、清洗、关联客户识别、风险暴露计算到自动化校验与归档的完整工作流,并附有可操作的代码示例,旨在帮助银行风控人员大幅提升报表处理效率与准确性。

weixin_29304985的博客 449

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4392

HyperEnclave 项目使用教程

HyperEnclave 项目使用教程 1. 项目的目录结构及介绍 HyperEnclave 项目的目录结构如下: hyperenclave/ ├── githooks/ ├── crates/ ├── demos/ │ └── RemoteAttestation/ ├── docs/ │ └── images/ ├── lib/ ├── scripts/ ├── src/ ├── .gi...

gitblog_00453的博客 488

simulink中无迹卡尔曼(UKF)模块使用

simulink的UKF模块简单说明

qq_41059950的博客 2820

HyperEnclave启动和初始化流程

深入分析蚂蚁开源的HyperEnclave项目启动和初始化流程,结合源码详细解析其实现原理和底层机制。

明月朗,潇水寒 452

RJ45以太网接口EMC设计方案

RJ45以太网接口EMC设计方案 一、 接口概述 RJ45以太网接口是目前应用最广泛的通讯设备接口,以太网口的电磁兼容性能关系到通讯设备的稳定运行。赛盛技术应用电磁兼容设计平台(EDP)软件从接口原理图、结构设计,线缆设计三个方面来设计以太网口的EMC设计方案。 二、 接口电路 原理图的EMC设计 百兆以太网接口2KV防雷滤波设计 图1 百兆以太网接口2KV防雷滤波设计 接口电路设计概述: 本方案从EMC原理上,进行了相关的抑制干扰和抗敏感度的设计;从设计层次解决EMC问题;同时此电路兼容了百兆以太网接

兰陵笑笑生SD的博客 1万+

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5631

开源与闭源

我的观点: 开源与闭源软件都有各自的优势和劣势,没有绝对的对错之分。..

m0_62645012的博客 5839

通信原理 | 通俗理解 | 因子图、消息传递以及它们之间的关系

在算法迭代过程中,通过反复更新这些消息,直到收敛,最终可以得到每个变量的边缘概率分布或最有可能的整体状态。算法通过因子图中的节点反复交换消息,直到找到最优解或所有消息稳定下来,从而解决了比如聚会日期这样的优化问题。在实际应用中,这种方法可以用来解决更复杂的问题,比如图像识别、语音识别和机器学习中的其他问题。,特别是在处理概率模型和执行概率推断时,因子图提供了一个强大的工具。(比如朋友的空闲时间和地点的可用性),并且你希望尽可能让所有人满意。在真正的因子图和消息传递算法中,这个过程被数学化和形式化。

若北辰 1196

蚂蚁资深技术专家王旭:开源项目是如何让这个世界更安全的?

王旭蚂蚁资深技术专家读完需要10分钟速读仅需 1 分钟在前不久的上海外滩大会上,蚂蚁资深技术专家、Kata Containers 创始人王旭向参会者分享了开源、开放协作与软件安全可信的话...

中生代技术 649

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SpyNote:一款深入探索世界的开源项目

SpyNote:一款深入探索世界的开源项目 在开源世界里,SpyNote V6.4项目以其独特的设计和强大的功能吸引了许多开发者和技术爱好者的关注。本文将详细介绍SpyNote的核心功能、项目技术分析、应用场景以及特点,帮助您更好地了解和使用这一开源项目。 项目介绍 SpyNote V6.4是一款开源项目,旨在为用户提供一种深入了解世界的工具。该项目提供了完整的源代码,使得开发者可以自由地探索和定...

gitblog_01021的博客 1003

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

世界开源项目_您应该知道的5个使世界变得更美好的开源项目

世界开源项目 开源社区的优势之一是其能够集中精力解决重大问题的能力。 当发生悲剧或迫切需要时,会有一些人聚集在一起,试图以社区的方式解决问题。 您可能没有听说过这五个开源项目,但是它们正在攻击世界上一些最大的问题,并对人们的生活产生了真正的影响。 乌沙希迪 http://www.ushahidi.com 在2007年肯尼亚总统大选之后,暴力爆发了。 要说结果有争议,那就轻描淡写了...

cumo7370的博客 432

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

世界模型 有哪些 开源项目

世界模型作为物理AI的核心技术,能够理解物理规律并预测未来状态,广泛应用于自动驾驶、机器人等领域。文章梳理了当前主流开源世界模型项目:自动驾驶领域包括NVIDIA Cosmos(物理AI基础模型)、百度BEVWorld(多模态融合)、CarDreamer(学习平台)和OpenDriveLab Vista(高保真模拟);通用领域则有蚂蚁灵波LingBot-World(交互式3D环境生成)。这些项目均提供开源代码和预训练模型,支持不同场景的快速部署与二次开发,为物理AI时代提供关键技术支撑。

luoganttcc的博客 2204

Wowser: 在浏览器中体验魔兽世界的开源项目

Wowser: 在浏览器中体验魔兽世界的开源项目 1. 项目基础介绍与主要编程语言 **项目简介:**Wowser 是一个开源项目,旨在将经典游戏《魔兽世界》搬入浏览器中运行。该项目通过使用 JavaScript 和 WebGL 技术实现了这一创举,为游戏爱好者提供了一种全新的游戏体验方式。 **主要编程语言:**JavaScript, GLSL 2. 项目核心功能 **用户认证:**支持通过用...

gitblog_00763的博客 433

热带世界(Tropicraft) 开源项目使用教程

热带世界(Tropicraft) 开源项目使用教程 1. 项目介绍 热带世界(Tropicraft) 是一款为《我的世界(Minecraft)** 游戏设计的拓展模组,它带来了全新的热带维度,让玩家沉浸在茂盛的丛林、奇异树木、丰富的海洋生物之中。这个模组不仅增添了新的生态环境,如繁花似锦的景观、热带水果、独特的生物,还引入了新的挑战,比如戴着草帽的苦力怕和穿草裙的骷髅。玩家可以探索海底沉船寻宝、享...

gitblog_00174的博客 689

人道主义开源项目让世界更美好

开源社区的一个优势是它有能力集中精力面对大麻烦。当悲剧发生时,或有迫切需要时,总有一群人聚集在一起,试图解决问题,就像一个社区。 你可能没有听说过这五个开源项目,但他们正在解决一些世界上最大的问题,给人们的生活带来实实在在的影响。 Ushahidi http://www.ushahidi.com 2007肯尼亚总统大选后,爆发了暴力事件。要说这个结果

杜达的专栏 989

请收下这 10 个安全相关的开源项目

本期的项目虽然没有太多的趣味性,但都是良心之作“苦口婆心”。代码安全无小事,只有不出事和事故两种情况,嘴上喊一万遍“安全第一”(我都懂,空了就改),不如立马带上个“安全帽”(跑个安全扫描器)来得实在。❤️接下来我将给各位同学划分一张学习计划表!

qq_44005305的博客 1167

什么?让每一个开源项目更安全?啊?还有IDE工具?难道是它?

入编程界6年来,大大小小的安全漏洞是真滴听了不少,xxx通过日志入侵了,xxxx通过请求入侵了,等等等等。 近期fastJson又报安全漏洞,敢巧自己又“被”跳槽到了新公司,看着手里热腾腾的“毫无注释、毫无代码洁癖可言的”项目,头大,结果发现使用的json还正好是fastjson、且是fastjson漏洞版本,更是让我孰不可忍。 github --> fastjson --> 解决方案 --> 到项目解决。 赶巧,就随手看了下最近周榜上的受欢迎最高的项目,结果刚star完某个项目,我

murphysec的博客 247

今日热门开源项目:awesome - 探索开源世界的珍宝

今日热门开源项目:awesome - 探索开源世界的珍宝 【免费下载链接】awesome 关于各种有趣话题的超棒列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome ...

gitblog_01336的博客 786

推荐开源项目:《对齐手册》 —— 走向更智能、更安全的自然语言处理未来

在人工智能快速发展的今天,语言模型的对齐(Alignment)问题已成为制约AI安全性和实用性的关键瓶颈。《对齐手册》(The Alignment Handbook)作为Hugging Face推出的开源项目,为解决这一挑战提供了系统性的解决方案和最佳实践。 你是否曾经遇到过这样的困境: - 训练出的语言模型虽然技术先进,但输出内容不够安全可靠? - 想要基于人类偏好优化模型,却苦于缺乏成熟的训...

gitblog_00804的博客 688

从工具到实践:如何在GitHub上保障开源项目安全?

当有人利用外部供应商或能够访问你的企业的数据和系统的第三方组件来渗透你的数字基础设施时,就会发生软件供应链攻击。供应链攻击的类型多种多样,本文将聚焦于开源供应链。任何人都可以通过开源举措为项目的开发做出贡献。利用这个切入点,黑客可以将漏洞编入开源项目中,当企业将该项目引入其软件中时也引入了新的威胁,而且往往是在不知情的情况下,通过遍历依赖或间接依赖引入。2016年的GitHub Universe上,首次引入GitHub Marketplace。它是一个开发者可以找到集成插件并将其落实到工作流程中的地方。

A1_3_9_7的博客 1556
上一篇: 10月28日线上直播《Service Mesh 在 CDN 边缘场景的落地实践》
下一篇: SOFA Weekly | SOFAArk、SOFABoot 发版、10月28日线上直播预告
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值