提交 35286886 编写于 作者: L Librahang

Merge branch 'master' of gitee.com:openeuler/website into fixDocsPage20200505

# Conflicts:
#	themes/project/layouts/partials/scripts.html
......@@ -21,6 +21,10 @@ buildFuture = true
# Define the number of posts per page
paginate = 10
[taxonomies]
tag = "tags"
archive = "archives"
[menu]
# Main menu
......@@ -443,9 +447,10 @@ paginate = 10
# Enable and disable widgets for the right sidebar
[params.widgets]
categories = false
tags = false
categories = true
tags = true
search = false
archives = true
[params.cards]
enable = true
......
......@@ -177,7 +177,7 @@ openEuler is an open community. We hope that all participants in the community a
**For reviewers**, it is strongly recommended that you surpass yourselves, respect each other, and promote collaboration in accordance with the [Code of Conduct](https://gitee.com/openeuler/community/blob/master/code-of-conduct.md). [The Gentle Art Of Patch Review](https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/) puts forward a series of review focuses, explaining that the review is to promote the participation of new contributors and prevent the contributors from being overwhelmed by subtle errors at the beginning. Therefore, when you review PRs, focus on the following:
**For reviewers**, it is strongly recommended that you surpass yourselves, respect each other, and promote collaboration in accordance with the [Code of Conduct](https://gitee.com/openeuler/community/blob/master/code-of-conduct.md). ["The Gentle Art Of Patch Review"](https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/) puts forward a series of review focuses, explaining that the review is to promote the participation of new contributors and prevent the contributors from being overwhelmed by subtle errors at the beginning. Therefore, when you review PRs, focus on the following:
+ Is the idea of the contribution reasonable?
+ Whether the contribution architecture is correct?
......@@ -189,7 +189,7 @@ Note: If your PR does not draw enough attention, you can seek help through the S
### Test <a name="Test"></a>
TBD
### Packaging Community Components <a name="Packaging_Community_Components"></a>
......
......@@ -23,13 +23,13 @@ We hope that you can report the potential vulnerability of an openEuler product
### Reporting Channel
You can send the potential security vulnerabilities of an openEuler product to the e-mail of the openEuler security team (securities@openeuler.com). Given that the vulnerability information is sensitive, you are advised to use the <a href="security/public_key_securities.asc" download>public GPG key</a> of the security team to encrypt the e-mail.
You can send the potential security vulnerabilities of an openEuler product to the e-mail of the openEuler security team (<securities@openeuler.org>). Given that the vulnerability information is sensitive, you are advised to use the <a href="security/public_key_securities.asc" download>public GPG key</a> of the security team to encrypt the e-mail.
The information of the security team members is described as follows:
+ Liu Jinggang @ liujinggang09, liujingang09@huawei.com, <a href="security/public_key_liujingang.asc" download>public GPG key</a>
+ Yang Li [@yangli69393], y69393@huawei.com
+ Yan Xiaobing [@yanxiaobing2020], yanxiaobing@huawei.com, <a href="security/public_key_yanxiaobing.asc" download>public GPG key</a>
+ Zhu Jianwei @ zhujianwei001, zhujianwei7@huawei.com, <a href="security/public_key_zhujianwei.asc" download>public GPG key</a>
+ Liu Jinggang [@ liujinggang09], <liujingang09@huawei.com>, <a href="security/public_key_liujingang.asc" download>public GPG key</a>
+ Yang Li [@yangli69393], <runningforever@gmail.com>
+ Yan Xiaobing [@yanxiaobing2020], <yanxiaobing@huawei.com>, <a href="security/public_key_yanxiaobing.asc" download>public GPG key</a>
+ Zhu Jianwei @ zhujianwei001, <zhujianwei7@huawei.com>, <a href="security/public_key_zhujianwei.asc" download>public GPG key</a>
### Reporting Content
To quickly identify and verify suspected vulnerabilities, the reporting e-mail should include but is not limited to the following content:
......
......@@ -15,7 +15,7 @@ summary = "windows下使用qemu安装openEuler虚拟机"
- openEuler开源社区下载qcow2镜像:[openEuler-20.03-LTS.aarch64.qcow2.xz](http://repo.openeuler.org/openEuler-20.03-LTS/virtual_machine_img/aarch64/openEuler-20.03-LTS.aarch64.qcow2.xz) (aarch64)
<img src="/zh/blog/traffic_millions/2020-03-27-qemu-media/download_qcow2.png" >
<img src="/zh/blog/traffic_millions/2020-03-27-qemu-media/download_qcow2.png" style = "width:90%;" >
### 【安装步骤】
......
......@@ -148,7 +148,7 @@ SIG就是Special Interest Group的缩写,openEuler社区按照不同的SIG来
#### 下载代码和拉分支 <a name="下载代码和拉分支"></a>
如果要参与代码贡献,您还需要了解如何在Gitee下载代码,通过PR合入代码等。openEuler使用过的是Gitee代码托管平台,向了解具体的指导,请参考[Gitee Workflow Guide](<https://gitee.com/openeuler/community/blob/master/zh/contributors/Gitee-workflow.md>)。该托管平台的使用方法类似GitHub,如果您以前使用GitHub,本章的内容您可以大致了解甚至跳过。
如果要参与代码贡献,您还需要了解如何在Gitee下载代码,通过PR合入代码等。openEuler使用Gitee代码托管平台,想了解具体的指导,请参考[Gitee Workflow Guide](<https://gitee.com/openeuler/community/blob/master/zh/contributors/Gitee-workflow.md>)。该托管平台的使用方法类似GitHub,如果您以前使用GitHub,本章的内容您可以大致了解甚至跳过。
......@@ -177,7 +177,7 @@ openEuler是一个开放的社区,我们希望所有参与社区的人都能
**对于检视者**,强烈建议本着[行为准则](<https://gitee.com/openeuler/community/blob/master/code-of-conduct.md>),超越自我,相互尊重和促进协作。在检视其他人的PR的时候,[补丁审核的柔和艺术](<https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/>)提出了一系列检视的重点,旨在说明检视的活动也希望能够促进新的贡献者积极参与,而不会使贡献者一开始就被细微的错误淹没,所以检视的时候,可以重点关注包括:
**对于检视者**,强烈建议本着[行为准则](<https://gitee.com/openeuler/community/blob/master/code-of-conduct.md>),超越自我,相互尊重和促进协作。[《补丁审核的柔和艺术》](<https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/>)一文中提出了一系列检视的重点,说明代码检视的活动也希望能够促进新的贡献者积极参与,而不会使贡献者一开始就被细微的错误淹没,所以检视的时候,可以重点关注包括:
+ 贡献背后的想法是否合理
+ 贡献的架构是否正确
......@@ -189,6 +189,7 @@ openEuler是一个开放的社区,我们希望所有参与社区的人都能
### 测试 <a name="测试"></a>
TBD
### 选择社区组件打包 <a name="选择社区组件打包"></a>
......
+++
title = "华为马海旭:鲲鹏展翅,力算未来,共赢多样性计算时代"
date = "2019-08-29"
tags = ["theme"]
banner = "img/banners/banner-20190829ai.png"
author = "华为智能计算"
summary = "8月29日,在第二届世界人工智能大会上,华为智能计算业务部总裁马海旭发表了《鲲鹏展翅,力算未来,共赢多样性计算时代》 的主题演讲。"
+++
大家好,非常荣幸能参加本次世界人工智能大会,同时也感谢大家,在百忙之中莅临华为智能计算大会·上海站。计算是人类永恒的需求,是智能世界的源动力,华为一直持续投入计算产业,今天我将与大家一起分享,华为在计算产业的创新之路。
18世纪中叶以来,人类历史上先后经历了三次工业革命,蒸汽机推动了农耕文明向工业文明的过渡,电力促进了通信、钢铁、机械等工业兴起,极大提高了生产力,信息技术让国家和地区都进入到全球一体化的进程中。当前,人类正在迎来以智能技术为代表的第四次工业革命,人工智能、物联网、5G、机器人、生物工程等新技术已融入到人类社会的方方面面。智能技术成为经济增长的新动能,驱动产业数字化转型,智能技术作为关键引擎,将推动世界的进步与发展。
智能世界带来了丰富的应用,产生了海量的数据。根据华为GIV 2025预测,97%的大企业将使用AI,14%的家庭将拥有智能机器人,蜂窝车联网技术将嵌入到全球15%的汽车中,而全球58%的人口将享有优质的5G网络服务。丰富的应用将带来数据的爆炸增长,预计2025年全球每年的数据量将达到180ZB。丰富的应用和海量的数据对算力产生了极大的需求,而CPU的性能却从每年提升超过1.5倍降到1.1倍,摩尔定律逐渐失效,带来了算力供应的稀缺和昂贵,严重制约着行业数字化和智能化的发展。
为了应对这一矛盾,突破摩尔定律,华为提出了多样性计算理念,面向不同应用,通过多种算力组合,在系统级恢复摩尔定律,推动计算创新。
PU、NPU、GPU、FPGA等同时存在。华为聚焦把计算产业核心竞争力构筑在「鲲鹏处理器」和「昇腾AI处理器」上,鲲鹏面向通用计算场景,昇腾面向人工智能场景,通过两个芯片系列来引领计算产业迈向智能和多样性计算时代。
**华为从鲲鹏计算平台、昇腾计算平台和x86计算平台进行多样性计算战略布局:**
- **基于鲲鹏计算平台**,打造面向通用计算的TaiShan服务器产品,在大数据、分布式存储、ARM原生等应用场景,为客户提供性能出众、能效更优、安全可靠的解决方案;
- **基于昇腾计算平台**,打造面向AI计算的Atlas系列产品,在平台、架构、算法和应用软件等多个层次与业界ISV深入合作,共同实现普惠AI的战略目标;
- **基于x86计算平台**,我们会继续与Intel保持合作,面向数据中心场景,引入智能加速和智能管理,持续为客户和合作伙伴提供有竞争力的计算产品。
今天的计算系统仍然遵循冯•诺依曼架构,由计算子系统、存储子系统、I/O子系统和管理子系统组成,同时随着人工智能的兴起,AI算力已经成为计算产品不可或缺的重要能力,对每一个子系统,都需要一颗关键的芯片。华为从2004年投资研发第一颗处理器芯片开始,历经15年,已累计投入超过2万名工程师,形成了以 “鲲鹏处理器 + 昇腾AI处理器”为核心的芯片族。
鲲鹏920是华为第三代处理器,单处理器拥有64核,整型计算的性能跑分达930分,超过当前业界处理器最高性能25%。基于鲲鹏处理器,我们打造了TaiShan系列服务器,其是华为在计算技术和整机工程方面17年长期积累的精品之作,充分优化了散热、高速互联、可靠性设计以及质量品控等工程工艺技术。泰山是中国的五岳之首,我们用泰山命名基于鲲鹏处理器的服务器,是希望TaiShan服务器能够引领中国的计算产业,成为计算标杆产品。
**TaiShan服务器包括三个型号:**
> - **2280均衡型**,计算、存储和网络能力均衡,可适用于多种应用;
> - **5280存储型**,适用于海量存储场景,单柜可达5.6PB容量;
> - **X6000高密型**,适用于海量整型计算场景,单柜可达10240核,约等于5000台个人电脑的算力。
华为在鲲鹏计算产业与各行业ISV共同孵化、完善了五大解决方案,在多个行业实现了规模商用,通过多核并行处理的优势,在大数据场景下性能比传统平台提升30%以上;通过内置数据压缩引擎与多核并行处理的优势,减少分布式存储场景66%的压缩时间,实现每秒I/O操作的性能提升20%以上;在数据库、原生应用以及云服务场景,TaiShan服务器都表现出了极致的性能。
**下面我为大家介绍一下华为全栈全场景AI解决方案。**
我们提出的全场景,是指包括公有云、私有云、各种边缘计算、物联网行业终端以及消费类终端等应用场景。全栈是技术功能视角,包括芯片、芯片使能、训练和推理框架和应用使能在内的全堆栈方案。
昇腾(Ascend)系列AI处理器,采用华为自研的面向张量计算的达芬奇架构,通过独创的3D Cube设计,每时钟周期可以进行4096个16位半精度浮点MAC运算,为人工智能提供强劲的算力支持。昇腾310在2018年10月10日已经上市,面向推理场景,具有极致高能效,8W功耗可以提供16TOPS INT8的算力。昇腾910在上周8月23日刚刚进行了全球上市发布,获得业界一致关注与好评,是目前面向训练场景中算力最强的AI处理器,性能是当前主流产品的2倍,在今年9月18日上海的华为全联接大会上,华为还将重磅发布基于昇腾910的系列新品,让我们共同期待。
基于昇腾AI处理器,我们开发了Atlas系列人工智能产品。Atlas源自古希腊神话中撑起宇宙的擎天大力神,华为用Atlas命名人工智能计算产品,是希望其能够成为撑起万物智能时代的“擎天大力神”,实现智能无所不及。其中,「Atlas 200 AI加速模块」,可以嵌入到机器人、摄像头、无人机等实现终端智能;「Atlas 500 智能小站」是面向边缘部署的智能小站,可实现交通、楼宇、园区等边缘智能场景;在数据中心面向训练和推理场景,我们则提供了「Atlas 300 AI加速卡」和「Atlas 800 AI服务器」;同时面向广大开发者,我们还提供「Atlas 200 DK AI开发者套件」,方便开发者快速熟悉Atlas的开发环境。
**任何IT产业的成功都是生态系统的成功,使能伙伴是华为在智能计算产业的重要使命,我们有以下3个具体措施:**
- **以行业聚合应用**:在政府、金融、运营商、互联网等关键行业,形成完整的生态链和具有竞争力的解决方案。
- **以联盟孵化标准**:通过绿色计算产业联盟、边缘计算产业联盟构建基础软硬件的标准体系,促进产业的健康发展。
- **以社区发展开发者**:开发者是一个产业的灵魂,华为将鲲鹏开发者社区打造成计算产业的主流社区,力争通过5年时间,发展100万开发者。
创新重塑产业,科技引领未来,我们希望携手广大合作伙伴与客户,立足中国,面向全球,打造开放的计算产业生态,共赢多样性计算新时代!一年一度的华为全联接大会将于9月18日至20日在上海盛大举行,届时业界领袖与产业精英将共聚一堂,共同探讨产业发展方向,同时华为也将向业界重磅发布多款计算产品。
期待与大家一起见证智能新高度,谢谢大家!
+++
title = "华为发布全世界最快AI产品,训练ResNet-50只需59.8秒"
date = "2019-09-18"
tags = ["theme"]
banner = "img/banners/banner-20190918.png"
author = "华为智能计算"
summary = "不止5G和鸿蒙,华为最新大招,扔出AI计算核弹。刚刚,华为全联接大会开幕,推出又一重量级AI产品Atlas900。"
+++
不止5G和鸿蒙,华为最新大招,扔出AI计算核弹。
刚刚,华为全联接大会开幕,推出又一重量级AI产品Atlas900。
此前接受外媒采访时,任正非就已经预告:这是“目前全世界最快的AI平台”。
全球最快是多快?
华为给出数据——训练ResNet-50只需59.8秒。
在同等精度上,比排名第二的选手快15%。
华为副董事长胡厚崑说,如此算力还可以广泛应用到科学研究与商业创新中,比如天文探索、气象预测、自动驾驶、石油勘探等领域。
与此同时,华为方面也宣布:Atlas900的相关集群服务,也会以极优惠的价格向全球科研机构和大学开放。
伴随该产品发布,华为还披露了整体计算战略,这也是华为首次对外公开这一战略。
#### 集成数千颗算力最强AI芯片
Atlas 900由数千颗昇腾910组成,算力能达256~1024 PFLOPS@FP16。
训练ResNet-50只用了59.8秒的集群规模,用到了1024颗昇腾910。
实际应用中表现也非常亮眼。在天文领域,能够将传统169天的任务,缩短到10秒02。
昇腾910芯片亮相于去年的全联接大会,今年8月正式商用,是全球第三款、中国首款AI训练芯片。
昇腾910采用华为自研的达芬奇架构,号称“算力最强的AI处理器”,7nm工艺制程,最大功耗为350W,实测310W。
该芯片跑分对标也很明确。直接对标英伟达Tesla V100,主打深度学习的训练场景,客户面向AI数据科学家和工程师。
芯片如何强悍?华为同样给出了“吊打”友商的数据:
相同的功耗下,昇腾910的算力是V100的两倍,训练速度更快,用户需要得出训练产出的时间会更短。在典型案例下,对比V100,昇腾910的计算速度可以提升50%-100%。
而伴随着Atlas 900的发布,华为的计算版图宣告正式构建完成,全面迈入落地阶段。
华为将如何落地?怎样驱动落地?华为现在也全盘托出。
#### 华为计算战略首次披露
整体来看,华为的计算战略以“芯片”为核心,一共分为四大部分,囊括芯片技术,整体规划,商业策略以及生态建设:
首先,是架构创新。
核心面向投资基础研究,比如达芬奇架构,重点解决全场景智能的架构问题。
其次,是全场景芯片,也就是处理器族。
目前,华为一共有4大芯片系列,其中包括面向通用计算的鲲鹏系列,面向AI的昇腾系列,面向智能终端的麒麟系列,以及面向智慧屏的鸿鹄系列。
胡厚崑说,将来还有一系列处理器,面向更多的场景。
第三是商业策略,有所为有所不为。
华为也再次明确了自己的芯片商业模式,硬件开放、软件开源,使能应用开发和迁移。
但芯片不直接对外销售,以云服务和部件的形式面向客户,优先支持合作伙伴发展整机。
最后,构建开发生态。
在这一步,华为倡导开放,更新沃土计划,目标是未来5年,投入15亿美元,汇聚500万开发者,来使能全球合作伙伴发展应用及解决方案。
这些背后,是新的商业机遇和更大的空间。华为,早已不再是一个销售通信设备的供应商。
胡厚崑开场即强调,之前华为被人以“联接”认知,但新时代新阶段面临新机遇,华为如今要面向智能产业,打造从联接到计算的宏伟蓝图。
#### 华为怎么看未来?
不仅仅只是发布战略,胡厚崑也披露了背后的逻辑,并给出预判。
他说,随着计算模式不断演进,面向机器学习的计算已成为主流。
但现在,计算正在进入智能时代,其具备三大特征:暴力计算、从中心侧、到端侧无处不在的泛在计算,以及端边云高效联动的协同计算。
最好的解决方式是,在中心节点暴力计算,训练通用模型,在边缘进行个性化部署。
但是,想要实现这一规划,仍旧面临着不少难点,比如能够支持全场景智能计算的新架构,这是当前计算产业发展面临的巨大挑战,同时也是巨大的机会。
到底有多大?
胡厚崑援引了Gatener报告——全球计算产业总空间为两万亿美元。
在他看来,这是一片大蓝海,华为将坚定在计算领域的投入,并推进落地。
#### 回应吹下的牛:AI落地进展
在现场,华为也对去年吹下的牛,给出答辩。
2018年全连接大会,华为发布全栈全场景AI战略,而计算,正是这一战略的基石与核心。
今天,胡厚崑答辩心态,交出一年落地成绩单:年8月份,伴随着昇腾910以及MindSpore发布,华为的AI解决方案已经搭建完成。
从全栈来看,华为已经拥有了昇腾处理器系列IP和芯片、芯片使能CANN(芯片算子库和高度自动化算子开发工具)、应用使能ModelArts及训练和AI框架MindSpore。
从全场景角度来看,昇腾处理器的产品和解决方案,已经覆盖了云、边、端。在华为云上,提供了相应的推理和训练服务。
Atlas系列板卡、模组和服务器已经上市。搭载昇腾系列处理器,已经广泛应用在华为的智能手机上。
而且, 华为也将进一步介绍了通用计算的落地状况,总共分四步走:
首先,打造有竞争力的通用计算处理器。
其次,持续投资板卡、服务器、操作系统、数据库、编译器等关键技术和产品,打通生态全链条,完成系统级验证,帮助合作伙伴更好地销售整机。
第三,华为与伙伴合作共同打造鲲鹏产业生态基地,目前已落地北京、上海、重庆、深圳、成都等城市,在平台搭建、培养人才、应用示范等领域开展全面合作。
而且,这些产品不仅仅只在中国。
之前华为就透露,基于鲲鹏处理器的系列产品、解决方案和服务,将面向全球市场,起于中国,服务全世界。
华为副董事长说:华为有AI,华为在务实落地,大家可以放心跟华为合作。
你怎么评价华为这次扔出的“核弹”?
+++
title = "openEuler 2019年9月动态"
date = "2019-10-01"
tags = ["theme"]
banner = "img/banners/banner-20190918.png"
author = "openEuler Community"
summary = "从2019年9月19日openEuler宣布开源到现在,openEuler社区有哪些进展?"
+++
### 2019年9月openEuler社区动态
1、2019年9月19日,openEuler正式开源
[HUAWEI CONNECT 2019](https://www.huawei.com/cn/press-events/events/huaweiconnect2019)的第二天,华为宣布[openEuler开源](https://www.huawei.com/cn/press-events/news/2019/9/atlas-series-products-cloud-services-all-scenario-ai-solutions)
2、openEuler软件仓升级
为了适应服务器操作系统开源软件的开发特征(Repo数量众多,并行开发者多),[Gitee](gitee.com)已经默默地将[openEuler](https://gitee.com/openeuler)升级为企业版。
3、CI对接启动
如果你查看<https://gitee.com/organizations/openeuler/projects>,你会发现增加了新的Repo:
* [ci-bot](https://gitee.com/openeuler/ci-bot)
* [go-gitee](https://gitee.com/openeuler/go-gitee)
没错,CI对接正在进行中。
欢迎有兴趣的您,加入到我们来共同[筹建](https://openeuler.org/zh/developer.html)这个新开业社区。
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
+++
title = "2019华为全联接大会于9月18日 - 9月20日在上海举行"
date = "2019-09-18"
tags = ["meetup", "summit"]
banner = "img/banners/banner-hc.jpg"
author = "openEuler"
summary = "2019华为全联接大会于9月18日 - 9月20日在上海世博展览馆&世博中心举行。"
+++
ADVANCE INTELLIGENCE
共创智能新高度
2019华为全联接大会于9月18日 - 9月20日在上海世博展览馆&世博中心举行。
会议链接:https://www.huawei.com/cn/press-events/events/huaweiconnect2019
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
\ No newline at end of file
+++
title = "openEuler开源社区基础设施上线"
date = "2020-01-01"
tags = ["theme"]
banner = "img/banners/banner-20200101.png"
author = "openEuler Infrastructure Team"
summary = "历经3个多月的准备,openEuler开源社区基础设施上线了。"
+++
openEuler开源社区基础设施上线
在2019年9月17日openEuler被宣布要在年底开源之日起,openEuler基础设施团队开始准备基础设施。在历经3个多月的开源准备后,openEuler社区基础设施正式启用。
2019年12月31日晚,openEuler基础设施团队做年度总结时提到:“我们走到现在这一刻,是一件非常激动人心的事,很难想象的是我们要管理上千个代码仓库,并保证它们能编译通过,在这里要非常感谢所有参与贡献的人”。构建这个社区最大的挑战在于要管理如此多的代码仓库,这个数量的仓库会对整个基础设施系统带来很大的负载。
如Gitee展示,openEuler主要包含两个组织仓库,一个用于源代码存放,当前显示该仓库有20+仓库,在这里,被重点推荐的有两个项目:iSulad和A-Tune。iSulad是一个轻量级基于gRPC服务的容器运行时,相比runc来讲,iSulad是用C语言编写但所有接口兼容OCI。另一个项目是A-Tune,A-Tune是一个基于AI技术能自动优化的基础系统软件。除此之外,你还将能看到几个支持基础设施的项目,它们组建起了社区的运行系统,从这些项目的提交记录来看,这些系统是通过脚本自动化在华为云上构建而成。
另一个组织是src-openeuler,主要是用来存放软件包,这些软件包构建起了openEuler操作系统的ISO和安装包,从Gitee的统计来看,这里当前存放了1000个左右软件包,每一个软件包都提供了ARM64和X86架构的版本,这样数量的工程超出了任何人的想象。并且这些包的数量还会继续增加。
从Gitee的统计来看,目前社区有超过50个贡献者,近600次commit,网站上也定义了将近20个SIG(项目组)。
目前openEuler社区还处于筹备阶段,如果您有兴趣,请联系infra@openeuler.org加入基础设施小组。
特别感谢如下贡献者:
- dogsheng
- freesky-edward
- imjoey
- tommyhusheng(husheng)
- xiangxinyong
- zerodefect(Fred_Li)
+++
title = "新闻"
+++
\ No newline at end of file
......@@ -17,14 +17,14 @@ openEuler社区非常重视社区版本的安全性,openEuler安全委员会
如果您认为openEuler产品存在一个疑似安全漏洞,我们希望您将漏洞上报给openEuler社区,并与我们配合以负责任的方式修复和披露该问题。
### 漏洞上报方式
您可以通过email将openEuler产品的潜在安全漏洞发送到openEuler安全团队邮箱(securities@openeuluer.com)。因为漏洞信息比较敏感,建议您使用安全团队邮箱<a href="security/public_key_securities.asc" download>GPG公钥</a>对邮件信息进行加密。
您可以通过email将openEuler产品的潜在安全漏洞发送到openEuler安全团队邮箱(<securities@openeuler.org>)。因为漏洞信息比较敏感,建议您使用安全团队邮箱<a href="security/public_key_securities.asc" download>GPG公钥</a>对邮件信息进行加密。
安全团队成员信息如下:
+ 刘金刚@liujingang09,liujingang09@huawei.com, <a href="security/public_key_liujingang.asc" download>GPG公钥</a>
+ 刘金刚@liujingang09,<liujingang09@huawei.com>, <a href="security/public_key_liujingang.asc" download>GPG公钥</a>
+ 杨丽[@yangli69393],<runningforever@gmail.com>
+ 颜小兵[@yanxiaobing2020],yanxiaobing@huawei.com, <a href="security/public_key_yanxiaobing.asc" download>GPG公钥</a>
+ 颜小兵[@yanxiaobing2020],<yanxiaobing@huawei.com>, <a href="security/public_key_yanxiaobing.asc" download>GPG公钥</a>
+ 朱健伟@zhujianwei001,<zhujianwei7@huawei.com>, <a href="security/public_key_zhujianwei.asc" download>GPG公钥</a>
......
......@@ -84,7 +84,7 @@ other = "Events"
other = "News"
[main_blog_title]
other = "blog"
other = "Blog"
[main_list_more]
other = "More"
......@@ -127,7 +127,7 @@ other = "Mail List"
# DOC page
[doc_git_footer]
other = "Edit this page"
other = "Feedback"
# 404 page
[404_title]
......
......@@ -123,7 +123,7 @@ other = "/zh/about_openeuler/docs/whtisopeneuler.html"
other = "邮件列表"
# DOC page
[doc_git_footer]
other = "编辑此页"
other = "意见反馈"
# 404 page
[404_title]
......
......@@ -20,13 +20,19 @@ do
if [ -d ./community/sig/$dir ]
then
sed -i "s/\r//g" ./community/sig/$dir/OWNERS
mt=$(sed '1d' ./community/sig/$dir/OWNERS | awk '{print $2}' | tr '\n' ', ')
sed -e "s/{{sig_name}}/$dir/g" $fd/sig.temp > $dir.md
sed -i "s/{{maintainers}}/$mt/g" $dir.md
if [ -f ./community/sig/$dir/README.md ]
then
mail=$(grep -P "[a-zA-Z|-]+@openeuler.org" -o ./community/sig/$dir/README.md)
mail=$(grep -P "[a-zA-Z|-]+@openeuler.org" -o ./community/sig/$dir/README.md | head -1)
if [ "$mail"x = "sig-yousigname@openeuler.org"x ]
then
continue
fi
if [ -n "$mail" ]
then
echo "replace mail to $mail"
......
......@@ -49,6 +49,9 @@
- id: continueReading
translation: "View All"
id: archivesTitle
translation: "归档"
- id: readMore
translation: "Read more"
......
......@@ -49,6 +49,9 @@
- id: continueReading
translation: "查看全文"
- id: archivesTitle
translation: "归档"
- id: readMore
translation: "阅读更多"
......
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<div id="all">
<header>
{{ partial "nav.html" . }}
</header>
{{ partial "breadcrumbs.html" . }}
<div id="content">
<div class="container">
<div class="row">
<div class="col-md-9">
<section class="post">
{{range .Data.Pages}}
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
<h5 class="author-category">
{{ if isset .Params "author" }}
{{ .Params.author }}
{{ end }}
</h5>
<p style="float:right;margin-right:76px;" class="date-comments">
<a href="{{ .Permalink }}"><i class="fa fa-calendar-o"></i>
{{ .Date.Format .Site.Params.date_format }}</a>
</p>
<br>
<p>{{ .Params.Summary }}</p>
</section>
{{ end }}
<ul class="pager">
{{ if .Paginator.HasPrev }}
<li class="previous"><a href="{{ .Paginator.Prev.URL }}">&larr; {{ i18n "newer" }}</a></li>
{{ else }}
<li class="previous disabled"><a href="#">&larr; {{ i18n "newer" }}</a></li>
{{ end }}
{{ if .Paginator.HasNext }}
<li class="next"><a href="{{ .Paginator.Next.URL }}">{{ i18n "older" }} &rarr;</a></li>
{{ else }}
<li class="next disabled"><a href="#">{{ i18n "older" }} &rarr;</a></li>
{{ end }}
</ul>
</div>
<div class="col-md-3">
<h3 style="overflow:hidden"><a href="/zh/blogguidance.html"><img src="{{ "/svg/edit.svg" }}" alt="edit" >
{{i18n "main_postablog_source"}}</a></h3>
{{partial "widgets/tags.html" . }}
{{partial "widgets/archives.html" . }}
</div>
</div>
</div>
</div>
{{ partial "footer.html" . }}
</div>
{{ partial "scripts.html" . }}
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
{{ partial "head.html" . }}
<body>
<div id="all">
<header>
{{ partial "nav.html" . }}
{{ partial "nav.html" . }}
</header>
{{ partial "breadcrumbs.html" . }}
<div id="content">
<div class="container">
<div class="row">
<!-- *** LEFT COLUMN *** -->
<a href="/zh/blogguidance.html" target="_blank" >
<p class="col-md-10"style = "font-family: PingFangSC-Medium; font-size: 25px;text-align: right;">{{ i18n "main_postablog_source" }} </p>
</a>
<div class="col-md-10" id="blog-listing-medium">
<!-- *** LEFT COLUMN *** -->
<div class="col-md-9">
{{ $paginator := .Paginate (where .Data.Pages "Type" "blog") }}
{{ range $paginator.Pages }}
<section class="post">
<div class="row">
<div class="col-md-12">
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
<div class="clearfix">
<p class="author-category">
{{ if isset .Params "author" }}
{{ .Params.author }}
{{ end }}
{{ if isset .Params "categories" }}
{{ if gt (len .Params.categories) 0 }}
in <a href="{{ $.Site.BaseURL }}categories/{{ index .Params.categories 0 | urlize | lower }}">{{ index .Params.categories 0 }}</a>
{{ end }}
{{ end }}
</p>
<p class="date-comments">
<a href="{{ .Permalink }}"><i class="fa fa-calendar-o"></i> {{ .Date.Format .Site.Params.date_format }}</a>
</p>
</div>
<p class="intro">{{ .Params.Summary }}</p>
<p class="read-more"><a href="{{ .Permalink }}" class="btn btn-template-main">{{ i18n "continueReading" }}</a>
</p>
</div>
</div>
<h2><a href="{{ .Permalink }}">{{ .Title }}</a>
</h2>
<h5 class="author-category">
{{ if isset .Params "author" }}
{{ .Params.author }}
{{ end }}
</h5>
<p style="float:right;margin-right:100px;" class="date-comments">
<a href="{{ .Permalink }}"><i class="fa fa-calendar-o"></i>
{{ .Date.Format .Site.Params.date_format }}</a>
</p>
<br>
<p>{{ .Params.Summary }}</p>
</section>
{{ end }}
<ul class="pager">
{{ if .Paginator.HasPrev }}
<li class="previous"><a href="{{ .Paginator.Prev.URL }}">&larr; {{ i18n "newer" }}</a></li>
<li class="previous"><a href="{{ .Paginator.Prev.URL }}">&larr; {{ i18n "newer" }}</a>
</li>
{{ else }}
<li class="previous disabled"><a href="#">&larr; {{ i18n "newer" }}</a></li>
{{ end }}
......@@ -70,6 +60,17 @@
</ul>
</div>
<!-- /.col-md-9 -->
<div class="col-md-3">
<h3 style="overflow:hidden"><a href="/zh/blogguidance.html"><img src="{{ "/svg/edit.svg" }}" alt="edit" >
{{i18n "main_postablog_source"}}</a></h3>
{{partial "widgets/tags.html" . }}
</div>
<div class="col-md-2">
{{partial "widgets/archives.html" . }}
</div>
</div>
<!-- /.row -->
</div>
......@@ -84,5 +85,6 @@
{{ partial "scripts.html" . }}
</body>
</html>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
{{ partial "head.html" . }}
<body>
<div id="all">
<header>
{{ partial "nav.html" . }}
{{ partial "nav.html" . }}
</header>
{{ partial "breadcrumbs.html" . }}
<div id="content">
<div class="container">
<div class="row">
<!-- *** LEFT COLUMN *** -->
<div class="col-md-10" id="blog-post">
<p class="text-muted mb-small text-right">{{ if .Params.author }}{{ .Params.author }} | {{ end }}{{ .Date.Format .Site.Params.date_format }}</p>
<div id="post-content">
{{ .Content }}
</div>
<!-- /#post-content -->
{{ if .Site.DisqusShortname }}
<div id="comments">
{{ template "_internal/disqus.html" . }}
</div>
{{ end }}
</div>
<!-- /#blog-post -->
<!-- *** LEFT COLUMN END *** -->
<div class="col-md-9" id="blog-post">
<p class="text-muted mb-small text-right">{{ if .Params.author }}{{ .Params.author }} |
{{ end }}{{ .Date.Format .Site.Params.date_format }}</p>
<div id="post-content">
{{ .Content }}
</div>
{{ if .Site.DisqusShortname }}
<div id="comments">
{{ template "_internal/disqus.html" . }}
</div>
{{ end }}
<!-- *** RIGHT COLUMN *** -->
</div>
<div class="col-md-3">
<h3 style="overflow:hidden"><a href="/zh/blogguidance.html"><img src="{{ "/svg/edit.svg" }}" >
{{i18n "main_postablog_source"}}</a></h3>
{{partial "widgets/tags.html" . }}
{{partial "widgets/archives.html" . }}
<div class="col-md-3">
</div>
</div>
<!-- /.row -->
<div class="box" style="margin-top:15px;">
<div style="font-size:12px;color:gray">
<strong>【免责声明】</strong>本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
</div>
<div style="font-size:12px;color:gray;margin-top:8px;"><strong>[Disclaimer]</strong> This article only
represents the author's opinions, and is irrelevant to this website. This website is neutral in terms of the
statements and opinions in this article, and does not provide any express or implied warranty of accuracy,
reliability, or completeness of the contents contained therein. This article is for readers' reference only,
and all legal responsibilities arising therefrom are borne by the reader himself.</div>
</div>
<div>
<!-- *** MENUS AND WIDGETS *** -->
{{ partial "comments.html" . }}
</div>
{{ partial "sidebar.html" . }}
<!-- *** MENUS AND FILTERS END *** -->
</div>
<!-- /.col-md-3 -->
</div>
<!-- *** RIGHT COLUMN END *** -->
</div>
<!-- /.row -->
<div class="box" style="margin-top:15px;">
<div style="font-size:12px;color:gray"><strong>【免责声明】</strong>本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。</div>
<div style="font-size:12px;color:gray;margin-top:8px;"><strong>[Disclaimer]</strong> This article only represents the author's opinions, and is irrelevant to this website. This website is neutral in terms of the statements and opinions in this article, and does not provide any express or implied warranty of accuracy, reliability, or completeness of the contents contained therein. This article is for readers' reference only, and all legal responsibilities arising therefrom are borne by the reader himself.</div>
</div>
<div >
<!-- 加入评论功能 -->
{{ partial "comments.html" . }}
</div>
</div>
{{ partial "footer.html" . }}
<!-- /.container -->
</div>
<!-- /#content -->
</div>
{{ partial "footer.html" . }}
</div>
<!-- /#all -->
{{ partial "scripts.html" . }}
{{ partial "scripts.html" . }}
</body>
</html>
</html>
\ No newline at end of file
......@@ -20,20 +20,28 @@
<div class="container docscontainer">
<input type="checkbox" style="display: none" id="menu-control" />
<div class="slide_nav" id="slideNav">
<img src="/svg/menu.svg" alt="Menu"><p>{{ i18n "docs_nav_menu_name" }}</p>
<img src="/svg/menu.svg" alt="Menu">
<p>{{ i18n "docs_nav_menu_name" }}</p>
</div>
<main class="flex container docscontainer">
<aside class="book-menu fixed" id="menu">
{{ partial "docs/menu" . }}
</aside>
<div class="book-page" id="page">
<!-- {{ partial "docs/mobile-header" . }} -->
{{ template "main" . }}
{{ partial "docs/git-footer" . }}
{{ partial "docs/inject/footer" . }}
<main class="container docscontainer">
<div class="row">
<div class="col-md-3">
<aside class="book-menu" id="menu">
{{ partial "docs/menu" . }}
</aside>
</div>
<div class="col-md-9">
<div class="book-page" id="page">
<!-- {{ partial "docs/mobile-header" . }} -->
{{ template "main" . }}
{{ partial "docs/git-footer" . }}
{{ partial "docs/inject/footer" . }}
</div>
</div>
</div>
{{ template "toc" . }}
</main>
......
......@@ -47,7 +47,7 @@
<!-- *** MENUS AND WIDGETS *** -->
{{ partial "sidebar.html" . }}
<!-- {{ partial "sidebar.html" . }} -->
<!-- *** MENUS AND FILTERS END *** -->
......
<!-- valine -->
{{- if .Site.Params.valine.enable -}}
<!-- id 将作为查询条件 -->
<link rel="stylesheet" href="{{ "css/comment.css" | absURL }}" />
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src='//unpkg.com/valine/dist/Valine.min.js'></script>
<!-- valine -->
{{- if .Site.Params.valine.enable -}}
<!-- id 将作为查询条件 -->
<link rel="stylesheet" href="{{ "css/comment.css" | absURL }}" />
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/4.0.4/av-min.js"></script>
<script src='//unpkg.com/valine/dist/Valine.min.js'></script>
<script type="text/javascript">
new Valine({
el: '#vcomments' ,
appId: '{{ .Site.Params.valine.appId }}',
appKey: '{{ .Site.Params.valine.appKey }}',
notify: true,
verify: true,
avatar:'{{ .Site.Params.valine.avatar }}',
placeholder: '{{ .Site.Params.valine.placeholder }}',
visitor: true,
meta: ['nick','mail','link'],
lang:"en"
});
</script>
{{- end -}}
\ No newline at end of file
<script type="text/javascript">
new Valine({
el: '#vcomments',
appId: '{{ .Site.Params.valine.appId }}',
appKey: '{{ .Site.Params.valine.appKey }}',
notify: true,
verify: true,
avatar: '{{ .Site.Params.valine.avatar }}',
placeholder: '{{ .Site.Params.valine.placeholder }}',
visitor: true,
meta: ['nick', 'mail', 'link'],
lang: "en"
});
</script>
{{- end -}}
\ No newline at end of file
......@@ -22,3 +22,7 @@
{{ end }}
</div>
{{ end }}
<div style="width:100%;margin-top:30px;margin-bottom:30px;">
<a class="btn btn-primary" id="docPreviousPage">{{ i18n "newer" }}</a>
<a class="btn btn-primary"id="docNextPage">{{ i18n "older" }}</a>
</div>
......@@ -145,13 +145,15 @@
});
$(' a[href^="#"][href!="#"]').click(function () {
var target = document.getElementById(decodeURI(this.hash).split('#')[1]);
if (!target) return;
var targetOffset = $(target).offset().top - 140 +"px";
if (!target) {
return;
}
var targetOffset = $(target).offset().top - 140 + 'px';
$('html,body').animate({
scrollTop: targetOffset
},
300);
return false;
});
});
});
</script>
\ No newline at end of file
{{ if .Site.Params.widgets.archives }}
{{ if isset .Site.Taxonomies "archives" }}
{{ if not (eq (len .Site.Taxonomies.archives) 0) }}
{{$lan := index (split .URL "/") 1 }}
<div class="panel sidebar-menu">
<div class="panel-heading">
<h3 class="panel-title">{{ i18n "archivesTitle" }}</h3>
</div>
<div class="panel-body">
<ul class="tag-cloud">
{{ range (where .Site.RegularPages "Section" "blog").GroupByDate "2006-01" }}
<li> <a href="{{ $.Site.BaseURL }}/{{$lan}}/archives/{{ .Key | urlize }}.html"><i
class="fa fa-tags"></i>{{ .Key }}({{ len .Pages }})</a><br>
</li>
{{ end }}
</ul>
</div>
</div>
{{ end }}
{{ end }}
{{ end }}
\ No newline at end of file
{{ if .Site.Params.widgets.tags }}
{{ if isset .Site.Taxonomies "tags" }}
{{ if not (eq (len .Site.Taxonomies.tags) 0) }}
{{$lan := index (split .URL "/") 1 }}
<div class="panel sidebar-menu">
<div class="panel-heading">
<h3 class="panel-title">{{ i18n "tagsTitle" }}</h3>
......@@ -8,8 +9,8 @@
<div class="panel-body">
<ul class="tag-cloud">
{{ range $name, $items := .Site.Taxonomies.tags }}
<li><a href="{{ $.Site.BaseURL }}tags/{{ $name | urlize | lower }}"><i class="fa fa-tags"></i> {{ $name }}</a>
{{ range $index, $items := .Site.Taxonomies.tags }}
<li><a href="{{ $.Site.BaseURL }}/{{$lan}}/tags/{{ $index | urlize }}.html"><i class="fa fa-tags"></i> {{ $index }}</a>
</li>
{{ end }}
</ul>
......
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<div id="all">
<header>
{{ partial "nav.html" . }}
</header>
{{ partial "breadcrumbs.html" . }}
<div id="content">
<div class="container">
<div class="row">
<div class="col-md-9">
<section class="post">
{{range .Data.Pages}}
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
<h5 class="author-category">
{{ if isset .Params "author" }}
{{ .Params.author }}
{{ end }}
</h5>
<p style="float:right;margin-right:76px;" class="date-comments">
<a href="{{ .Permalink }}"><i class="fa fa-calendar-o"></i>
{{ .Date.Format .Site.Params.date_format }}</a>
</p>
<br>
<p>{{ .Params.Summary }}</p>
</section>
{{ end }}
<ul class="pager">
{{ if .Paginator.HasPrev }}
<li class="previous"><a href="{{ .Paginator.Prev.URL }}">&larr; {{ i18n "newer" }}</a></li>
{{ else }}
<li class="previous disabled"><a href="#">&larr; {{ i18n "newer" }}</a></li>
{{ end }}
{{ if .Paginator.HasNext }}
<li class="next"><a href="{{ .Paginator.Next.URL }}">{{ i18n "older" }} &rarr;</a></li>
{{ else }}
<li class="next disabled"><a href="#">{{ i18n "older" }} &rarr;</a></li>
{{ end }}
</ul>
</div>
<div class="col-md-3">
<h3 style="overflow:hidden"><a href="/zh/blogguidance.html"><img src="{{ "/svg/edit.svg" }}" alt="edit" >
{{i18n "main_postablog_source"}}</a></h3>
{{partial "widgets/tags.html" . }}
{{partial "widgets/archives.html" . }}
</div>
</div>
</div>
</div>
{{ partial "footer.html" . }}
</div>
{{ partial "scripts.html" . }}
</html>
\ No newline at end of file
......@@ -679,8 +679,11 @@ footer .notice span {
text-decoration: none;
color: inherit;
padding: 6px 0px;
overflow: hidden;
}
.book-menu .jstree-default .jstree-node{
overflow-x: hidden;
}
.book-menu .jstree-default .jstree-anchor a {
text-decoration: none;
color: inherit;
......@@ -819,6 +822,7 @@ footer .notice span {
.container .book-menu {
font-size: inherit;
flex: 0 0 5rem;
margin-bottom:30px;
}
.container div.book-page {
......
......@@ -981,7 +981,6 @@ fieldset[disabled] .btn-template-primary.active {
border-radius: 0;
color: #467fbf;
margin: 5px 5px 5px 0;
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 700;
font-size: 12px;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册