From e2dc79393a05bb4f3222879f810cd85fc5da5145 Mon Sep 17 00:00:00 2001 From: zjkjzj Date: Thu, 18 Mar 2021 15:07:35 +0800 Subject: [PATCH] docs(readme): add --- docs/index.md | 30 ++-- docs/readme/badge.md | 28 ++++ docs/readme/imgs/badge.png | Bin 0 -> 50148 bytes docs/readme/imgs/readme生成器.md | 113 +++++++++++++ docs/readme/index.md | 10 ++ docs/readme/postscript.md | 4 + docs/readme/译-规范.md | 220 +++++++++++++++++++++++++ docs/tool/generator-standard-readme.md | 113 +++++++++++++ mkdocs.yml | 7 +- templates/CHANGELOG | 0 templates/LICENSE | 201 ++++++++++++++++++++++ templates/MINIMAL_README.md | 36 ++++ templates/MINIMAL_README.zh-CN.md | 36 ++++ templates/STANDARD_README.md | 111 +++++++++++++ templates/STANDARD_README.zh-CN.md | 112 +++++++++++++ templates/logo.png | Bin 0 -> 19414 bytes 16 files changed, 1004 insertions(+), 17 deletions(-) create mode 100644 docs/readme/badge.md create mode 100644 docs/readme/imgs/badge.png create mode 100644 docs/readme/imgs/readme生成器.md create mode 100644 docs/readme/index.md create mode 100644 docs/readme/postscript.md create mode 100644 docs/readme/译-规范.md create mode 100644 docs/tool/generator-standard-readme.md create mode 100644 templates/CHANGELOG create mode 100644 templates/LICENSE create mode 100644 templates/MINIMAL_README.md create mode 100644 templates/MINIMAL_README.zh-CN.md create mode 100644 templates/STANDARD_README.md create mode 100644 templates/STANDARD_README.zh-CN.md create mode 100644 templates/logo.png diff --git a/docs/index.md b/docs/index.md index 000ea34..6a7fb85 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,17 +1,15 @@ -# Welcome to MkDocs +# GitGuide -For full documentation visit [mkdocs.org](https://www.mkdocs.org). - -## Commands - -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. - -## Project layout - - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. +* 规范 + * README编写 + * 消息提交 + * 版本提交 +* 工具 + * Git + * Commitizen + * conventioanl-changelog + * CommitLint+Husky + * generator-standard-readme +* 平台 + * GitLab + * GitHub \ No newline at end of file diff --git a/docs/readme/badge.md b/docs/readme/badge.md new file mode 100644 index 0000000..eda484c --- /dev/null +++ b/docs/readme/badge.md @@ -0,0 +1,28 @@ + +# 徽章 + +经常在`README`文件中发现许多徽章,很多都是使用[http://shields.io](http://shields.io/)或类似服务创建和托管的 + +## 自定义 + +进入`shields.io` + +![](./imgs/badge.png) + +输入标签名和徽章信息,选择颜色即可生成静态`SVG`图像 + +``` +https://img.shields.io/badge/ZHUJIAN-BADGE-brightgreen +``` + +![](https://img.shields.io/badge/ZHUJIAN-BADGE-brightgreen) + +## 添加链接 + +在徽章图像上添加链接,点击图像跳转到仓库 + +``` +[![](https://img.shields.io/badge/ZHUJIAN-BADGE-brightgreen)](https://shields.io) +``` + +[![](https://img.shields.io/badge/ZHUJIAN-BADGE-brightgreen)](https://shields.io) \ No newline at end of file diff --git a/docs/readme/imgs/badge.png b/docs/readme/imgs/badge.png new file mode 100644 index 0000000000000000000000000000000000000000..037eab5296a8c89403945a7891b2bf6c80435357 GIT binary patch literal 50148 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 yo使用示例 // 简短说明 + + TODO: Fill out this long description. // 详细说明 + + ## Table of Contents // 下面的章节列表,每个章节都可以点击跳转 + + - [Background](#background) + - [Install](#install) + - [Usage](#usage) + - [Maintainers](#maintainers) + - [Contributing](#contributing) + - [License](#license) + + ## Background // 背景 + + ## Install // 安装 + + ``` + ``` + + ## Usage // 用法 + + ``` + ``` + + ## Maintainers // 主要维护人员 + + [@zjZSTU](https://github.com/zjZSTU) + + ## Contributing // 参与贡献方式 + + PRs accepted. + + Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification. + + ## License // 许可证 + + MIT © 2019 zjZSTU \ No newline at end of file diff --git a/docs/readme/index.md b/docs/readme/index.md new file mode 100644 index 0000000..bcb97a0 --- /dev/null +++ b/docs/readme/index.md @@ -0,0 +1,10 @@ + +# 如何写好README + +`README`常常是工程的第一个入口,经常不知道写些什么,如何介绍工程的内容。在网上找了资料,发现这是很多人遇到的问题,也有很多热心人士发表了自己的意见 + +主要参考[RichardLitt/standard-readme](https://github.com/RichardLitt/standard-readme),里面提出了一整套`REAMDE`规范,包括编写规范、`linter`、生成器、徽章以及示例 + +另外[kylelobo/The-Documentation-Compendium](https://github.com/kylelobo/The-Documentation-Compendium#templates)和[如何写好Github中的readme?](https://www.zhihu.com/question/29100816)也给出了很多建议 + +最终实现:[如何编写好的README](https://blog.zhujian.life/posts/79f69ebe.html) \ No newline at end of file diff --git a/docs/readme/postscript.md b/docs/readme/postscript.md new file mode 100644 index 0000000..df0c66b --- /dev/null +++ b/docs/readme/postscript.md @@ -0,0 +1,4 @@ + +# 后记 + +坚持README规范的编写对于仓库的维护确实很有用。在之后的学习过程中,我又发现了许多 \ No newline at end of file diff --git a/docs/readme/译-规范.md b/docs/readme/译-规范.md new file mode 100644 index 0000000..af14f5f --- /dev/null +++ b/docs/readme/译-规范.md @@ -0,0 +1,220 @@ + +# [译]规范 + +原文地址:[Specification](https://github.com/RichardLitt/standard-readme/blob/master/spec.md) + +## 引言 + +`README`必须满足下面列出的所有要求 + +>注意:标准自述文件是为开源库设计的。尽管它在历史上是为`node`和`npm`项目创建的,但它也适用于其他语言的库和包管理器 + +要求: + +* 称为`README.md`(大写) +* 如果项目支持[i18n](https://baike.baidu.com/item/I18N/6771940),则必须相应地命名该文件:`README.de.md`,其中`de`是[BCP 47](https://tools.ietf.org/html/bcp47)语言标记。对于命名,请优先考虑语言的非区域子标记。如果只有一个`README`且语言不是英语,则允许文本中使用不同的语言而无需指定`BCP`标记:例如README.md可以是德语。在包含多种语言版本的情况下,`README.md`固定为英语 +* 是一个有效的`Markdown`文件 +* 章节必须按下面给出的顺序出现。可省略可选部分 +* 除非另有说明,否则每个章节必须具有下面列出的标题。如果`README`是另一种语言,则必须将标题翻译成该语言 +* 不能包含无法访问链接 +* 如果有代码示例,则应该像在项目的其余部分中对代码进行`linted`一样对它们进行`linted` + +## 内容列表 + +>注意:这只是规范的导航指南,并不是任何符合规范的文档定义或强制使用术语 + +* 章节 + * 标题(`Title`) + * 横幅(`Banner`) + * 徽章(`Badges`) + * 简短说明(`Short Description`) + * 详细描述(`Long Description`) + * 内容列表(`Table of Contents`) + * 安全(`Security`) + * 背景(`Background`) + * 安装(`Install`) + * 用法(`Usage`) + * 附加内容(`Extra Sections`) + * 应用编程接口(`API`) + * 主要维护人员(`Maintainers`) + * 致谢(`Thanks`) + * 参与贡献方式(`Contributing`) + * 许可证(`License`) +* 定义 + +## 章节 + +### 标题 + +* 状态(`status`):必须 +* 必要条件(`requirements`): + * 标题必须与`repository、folder`和`package manager`名称匹配,或者它可以有另一个相关的标题,旁边的`repository、folder`和`package manager`标题用斜体字和括号括起来。例如: + + ``` + # Standard Readme Style _(standard-readme)_ + ``` + 如果任何文件夹、存储库或包管理器名称不匹配,则在详细描述中必须有一条说明原因 +* 建议(`suggestions`):符合内容要求,做到显而易见 + +### 横幅 + +* 状态:可选 +* 必要条件: + * 不能有自己的标题 + * 必须链接到当前存储库中的本地图像 + * 必须直接出现在标题后面 + +### 徽章 + +* 状态:可选 +* 必要条件: + * 不能有自己的标题 + * 必须用换行符分隔 +* 建议:使用[http://shields.io](http://shields.io/)或类似服务创建和托管图像 + +### 简短说明 + +* 状态:必须 +* 必要条件: + * 不能有自己的标题 + * 小于`120`个字符 + * 以`>`开始 + * 一定是单独一行 + * 必须与包装管理器`说明`字段中的描述匹配 + * 必须匹配`github`的描述(如果在`github`上) +* 建议(*`js`相关*): + * 使用`gh description`设置并获取`github`描述 + * 使用`npm show . description`显示本地`npm`包中的描述 + +### 详细描述 + +* 状态:可选 +* 必要条件: + * 不能有自己的标题 + * 如果任何文件夹、存储库或包管理器名称不匹配,必须在此处说明原因。参考[标题](https://github.com/RichardLitt/standard-readme/blob/master/spec.md#title) +* 建议: + * 如果太长,考虑移动到背景章节 + * 介绍构建存储库的主要原因 + * `应该用宽泛的术语来描述模块,一般只在几段中;模块的例程或方法、冗长的代码示例或其他深入的材料的更多细节应该在后面的章节中给出。` + + `理想情况下,稍微熟悉模块的人应该能够刷新他们的内存,而不必点击“向下翻页”。当读者继续阅读文档时,他们应该会逐渐获得更多的知识。` + + ~[Kirrily "Skud" Robert, perlmodstyle](http://perldoc.perl.org/perlmodstyle.html) + +### 内容列表 + +* 状态:必须;对于小于`100`行的`README`是可选的 +* 必要条件: + * 必须链接到文件中的所有markdown章节 + * 必须从第二节开始;不要包含标题或目录标题 + * 必须至少有一个深度:必须捕获所有二级标题(`##`) +* 建议: + * 可以捕获三级(`###`)和四级(`####`)深度的标题。如果是长目录,这些是可选的 + +### 安全 + +* 状态:可选 +* 必要条件: + * 如果有必要强调安全问题,则说明。否则,它应该在`Extra Sections` + +### 背景 + +* 状态:可选 +* 必要条件: + * 涵盖动机 + * 覆盖抽象依赖项 + * 涵盖知识来源:`see also`也很合适 + +### 安装 + +* 状态:默认是必须的,对于文档仓库而言是可选的 +* 必要条件: + * 使用代码块说明如何安装 +* 子章节(`subsections`): + * 依赖(`dependencies`):如果有不寻常的依赖项或依赖项必须手动安装,必须提出 +* 建议: + * 链接到编程语言的必备站点:[npmjs](https://npmjs.com/)、[godocs](https://godoc.org/)等 + * 包括安装所需的任何系统特定信息 + * 增加一个`updating`章节是有用的 + +### 用法 + +* 状态:默认是必须的,对于文档仓库而言是可选的 +* 必要条件: + * 使用代码块说明常见用法 + * 如果兼容于`cli`,用代码块说明其用法 + * 如果可导入,用代码块表示导入功能和用法 +* 子章节: + * `CLI`:如果命令行功能存在则是必要的 +* 建议: + * 覆盖可能影响使用的基本选项:例如,如果是`javascript`,则覆盖`promises/callbacks`(对`ES6`而言) + * 可以指向示例代码的可执行文件 + +### 附加内容 + +* 状态:可选 +* 必要条件: + * 无 +* 建议: + * 这不应称为附加内容。可容纳`0`个或多个章节,每个章节必须有其标题 + * 这应该包含任何其他相关的内容,放在用法之后,应用程序接口之前 + * 具体来说,如果安全章节不够重要,不需要放在上面的话,可以放在这里 + +### 应用编程接口 + +* 状态:可选 +* 必要条件: + * 描述开放的函数和对象 +* 建议: + * 描述签名、返回类型、回调和事件 + * 覆盖类型不明显的地方 + * 描述注意事项 + * 如果使用外部`api`生成器(如`go-doc、js-doc`等),那么指向外部`api.md`文件即可 + +### 主要维护人员 + +* 状态:可选 +* 必要条件: + * 列出存储库的维护人员,以及联系他们的一种方式(例如`github`链接或电子邮件) +* 建议: + * 这应该是一个负责这个仓库人员的小名单。这不应该是所有拥有访问权限的人,例如整个组织,而是应该`ping`并负责管理和维护存储库的人 + * 列出过去的维护者是友好的 + +### 致谢 + +* 状态:可选 +* 必要条件: + * 必须称为`Thanks, Credits`和`Acknowledgements`的其中一种 +* 建议: + * 陈述任何对项目开发有重大帮助的人或事 + * 列出公共联系人的超链接(如果可以的话) + +### 参与贡献方式 + +* 状态:必须 +* 必要条件: + * 说明用户可在哪里提问 + * 说明是否接受`PR` + * 列出参与的任何要求;例如,对提交进行审核 +* 建议: + * 如果有的话,链接到`CONTRIBUTING`文件 + * 尽可能友好 + * 链接到`github`问题库 + * 链接到行为准则(`Code of Conduct`)。`Coc`通常位于贡献部分或文档中,或者设置在整个组织的其他位置,因此可能不需要在每个存储库中包含整个文件。但是,强烈建议始终链接到代码,无论它位于何处 + * 也可以在这里增加一个小节,列出贡献者 + +### 许可证 + +* 状态:必须 +* 必要条件: + * 列出许可证全名或标识符,参考[`SPDX`许可证列表](https://spdx.org/licenses/)。对于未授权的存储库,添加标识`UNLICENSED`。对于许可证的详细信息,添加`see license in `并链接到许可文件。(参考[npm](https://docs.npmjs.com/files/package.json#license)设置) + * 列出许可证拥有者 + * 必须是最后一节 +* 建议: + * 链接到本地存储库中较长的许可证文件 + +## 定义 + +*提供这些定义是为了理清上述使用的任何术语* + +* 文档仓库(`Documentation repositories`):仓库中没有任何功能代码,比如[RichardLitt/knowledge](https://github.com/RichardLitt/knowledge) \ No newline at end of file diff --git a/docs/tool/generator-standard-readme.md b/docs/tool/generator-standard-readme.md new file mode 100644 index 0000000..95672bc --- /dev/null +++ b/docs/tool/generator-standard-readme.md @@ -0,0 +1,113 @@ + +# README生成器 + +[RichardLitt/generator-standard-readme](https://github.com/RichardLitt/generator-standard-readme)提供了一个`npm`命令行工具,用于生成`README`文件 + +## 安装 + +``` +npm install --global yo generator-standard-readme +``` + +## 使用 + +命令行输入 + +``` +$ yo standard-readme +``` + +接下来会提出很多问题,然后生成一个README文件。所有问题如下: + +``` +What do you want to name your module? +What is the description of this module? +Do have a banner image? + Where is the banner image? Ex: 'img/banner.png' +Do you want a TODO dropped where your badges should be? +Do you want a TODO dropped where your long description should be? +Do you need a prioritized security section? +Do you need a background section? +Do you need an API section? +What is the GitHub handle of the main maintainer? +Do you have a CONTRIBUTING.md file? +Are PRs accepted? +Is an MIT license OK? + What is your license? +Who is the License holder (probably your name)? +Use the current year? + What years would you like to specify? +``` + +## 示例 + +``` +$ yo standard-readme +? ========================================================================== +We're constantly looking for ways to make yo better! +May we anonymously report usage statistics to improve the tool over time? +More info: https://github.com/yeoman/insight & http://yeoman.io +========================================================================== Yes +? What is the name of your module? zj +? What is the description of this module? yo使用示例 +? Do have a banner image? No +? Do you want a standard-readme compliant badge? Yes +? Do you want a TODO dropped where more badges should be? Yes +? Do you want a TODO dropped where your long description should be? Yes +? Do you need a prioritized security section? No +? Do you need a background section? Yes +? Do you need an API section? No +? What is the GitHub handle of the main maintainer? zjZSTU +? Do you have a CONTRIBUTING.md file? No +? Are PRs accepted? Yes +? Is an MIT license OK? Yes +? Who is the License holder (probably your name)? zjZSTU +? Use the current year? Yes + create README.md +``` + +生成文件如下: + + # zj // 标题 + + [![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) // 徽章 + TODO: Put more badges here. // 可以添加更多徽章 + + > yo使用示例 // 简短说明 + + TODO: Fill out this long description. // 详细说明 + + ## Table of Contents // 下面的章节列表,每个章节都可以点击跳转 + + - [Background](#background) + - [Install](#install) + - [Usage](#usage) + - [Maintainers](#maintainers) + - [Contributing](#contributing) + - [License](#license) + + ## Background // 背景 + + ## Install // 安装 + + ``` + ``` + + ## Usage // 用法 + + ``` + ``` + + ## Maintainers // 主要维护人员 + + [@zjZSTU](https://github.com/zjZSTU) + + ## Contributing // 参与贡献方式 + + PRs accepted. + + Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification. + + ## License // 许可证 + + MIT © 2019 zjZSTU \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 77b85f2..daaf19e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -37,4 +37,9 @@ extra_javascript: # 导航 nav: - - Home: index.md \ No newline at end of file + - Home: index.md + - 规范: + - README: + - 引言: readme/index.md + - '[译]规范': readme/译-规范.md + - '徽章': readme/badge.md \ No newline at end of file diff --git a/templates/CHANGELOG b/templates/CHANGELOG new file mode 100644 index 0000000..e69de29 diff --git a/templates/LICENSE b/templates/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/templates/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/templates/MINIMAL_README.md b/templates/MINIMAL_README.md new file mode 100644 index 0000000..a869eed --- /dev/null +++ b/templates/MINIMAL_README.md @@ -0,0 +1,36 @@ +# PyNet + +[中文版本(Chinese version)](./MINIMAL_README.zh-CN.md) + +> Numpy-based deep learning library + +## Table of Contents + +- [Install](#install) +- [Usage](#usage) +- [Contributing](#contributing) +- [License](#license) + +## Install + +``` +``` + +## Usage + +``` +``` + +## Contributing + +PRs accepted. + +Small note: + +* Git submission specifications should be complied with [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0-beta.4/) +* If versioned, please conform to the [Semantic Versioning 2.0.0](https://semver.org) specification +* If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification. + +## License + +[Apache License 2.0](LICENSE) © 2019 zjZSTU diff --git a/templates/MINIMAL_README.zh-CN.md b/templates/MINIMAL_README.zh-CN.md new file mode 100644 index 0000000..333d007 --- /dev/null +++ b/templates/MINIMAL_README.zh-CN.md @@ -0,0 +1,36 @@ +# PyNet + +[英文版本(English version)](./MINIMAL_README.md) + +> 基于numpy的深度学习库 + +## 内容列表 + +- [安装](#安装) +- [用法](#用法) +- [参与贡献方式](#参与贡献方式) +- [许可证](#许可证) + +## 安装 + +``` +``` + +## 用法 + +``` +``` + +## 参与贡献方式 + +接受合并请求 + +请注意: + +* git提交请遵守[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0-beta.4/) +* 如果进行版本化,请遵守[Semantic Versioning 2.0.0](https://semver.org)规范 +* 如果修改README,请遵守[standard-readme](https://github.com/RichardLitt/standard-readme)规范 + +## 许可证 + +[Apache License 2.0](LICENSE) © 2019 zjZSTU diff --git a/templates/STANDARD_README.md b/templates/STANDARD_README.md new file mode 100644 index 0000000..e10dc81 --- /dev/null +++ b/templates/STANDARD_README.md @@ -0,0 +1,111 @@ +# PyNet + +![](logo.png) + +[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) + +[中文版本(Chinese version)](./STANDARD_README.zh-CN.md) + +> Numpy-based deep learning library + +Implementation of deep learning based on numpy, modular design guarantees easy implementation of the model, which is suitable for the introduction of junior researchers in deep learning. + +## Table of Contents + +- [Background](#background) +- [Badge](#badge) +- [Install](#install) +- [Usage](#usage) +- [CHANGELOG](#CHANGELOG) +- [TODO](#todo) +- [Maintainers](#maintainers) +- [Thanks](#Thanks) +- [Contributing](#contributing) +- [License](#license) + +## Background + +Systematic learning convolution neural network has been nearly half a year.Using librarys such as pytorch can't understand the implementation in depth. So I plan to complete a deep learning framework from scratch.The initial implementation will refer to the operation of cs231n, and then we will implement it in the form of computational graphs. I hope this project can improve my programming ability and help others at the same time. + +## Badge + +If you use PyNet, add the following Badge + +[![pynet](https://img.shields.io/badge/pynet-ok-brightgreen)](https://github.com/zjZSTU/PyNet) + +To add in Markdown format, use this code: + +``` +[![pynet](https://img.shields.io/badge/pynet-ok-brightgreen)](https://github.com/zjZSTU/PyNet) +``` + +## Install + +PyNet need the following prerequisites + +* python3.x +* numpy +* opencv3.x + +## Usage + +Refer to the sample code under the [example](https://github.com/zjZSTU/PyNet/tree/master/examples) folder + +Full version reference [releases](https://github.com/zjZSTU/PyNet/releases) + +Realized Network Model(Located in [pynet/models](https://github.com/zjZSTU/PyNet/tree/master/pynet/models) folder): + +* 2-Layer Neural Network +* 3-Layer Neural Network +* LeNet-5 +* AlexNet +* NIN + +Realized Network Layer(Located in [pynet/nn](https://github.com/zjZSTU/PyNet/tree/master/pynet/nn) folder): + +* Convolution Layer (Conv2d) +* Fully-Connected Layer (FC) +* Max-Pooling layer (MaxPool) +* ReLU Layer (ReLU) +* Random Dropout Layer (Dropout/Dropout2d) +* Softmax +* Cross Entropy Loss +* Gloabl Average Pool (GAP) + +## CHANGELOG + +see the [CHANGELOG](./CHANGELOG) on this repository. + +## TODO + +* Realization of batch normalization +* Realization of Computational Graph + +## Maintainers + +* zhujian - *Initial work* - [zjZSTU](https://github.com/zjZSTU) + +## Thanks + +Thank you for your participation. + +[![](https://avatars3.githubusercontent.com/u/13742735?s=460&v=4)](https://github.com/zjZSTU) + +Refer to the following Library + +* [cs231n](http://cs231n.github.io/) +* [PyTorch](https://pytorch.org/) + +## Contributing + +Anyone's participation is welcome! Open an [issue](https://github.com/zjZSTU/PyNet/issues) or submit PRs. + +Small note: + +* Git submission specifications should be complied with [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0-beta.4/) +* If versioned, please conform to the [Semantic Versioning 2.0.0](https://semver.org) specification +* If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification. + +## License + +[Apache License 2.0](LICENSE) © 2019 zjZSTU diff --git a/templates/STANDARD_README.zh-CN.md b/templates/STANDARD_README.zh-CN.md new file mode 100644 index 0000000..c773357 --- /dev/null +++ b/templates/STANDARD_README.zh-CN.md @@ -0,0 +1,112 @@ + +# PyNet + +![](logo.png) + +[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) + +[英文版本(English version)](./STANDARD_README.md) + +> 基于Numpy的深度学习库 + +基于`Numpy`的深度学习实现,模块化设计保证模型的轻松实现,适用于深度学习初级研究人员的入门 + +## 内容列表 + +- [背景](#背景) +- [徽章](#徽章) +- [安装](#安装) +- [用法](#用法) +- [版本更新日志](#版本更新日志) +- [待办事项](#待办事项) +- [主要维护人员](#主要维护人员) +- [致谢](#致谢) +- [参与贡献方式](#参与贡献方式) +- [许可证](#许可证) + +## 背景 + +系统性的学习卷积神经网络也快半年了,使用`pytorch`等库不能很好的深入理解实现,所以打算从头完成一个深度学习框架。最开始的实现会参考`cs231n`的作业,之后会以计算图的方式实现。希望这个项目能够切实提高自己的编程能力,同时也能够帮助到其他人 + +## 徽章 + +如果你使用了`PyNet`,请添加以下徽章 + +[![pynet](https://img.shields.io/badge/pynet-ok-brightgreen)](https://github.com/zjZSTU/PyNet) + +Markdown格式代码如下: + +``` +[![pynet](https://img.shields.io/badge/pynet-ok-brightgreen)](https://github.com/zjZSTU/PyNet) +``` + +## 安装 + +`PyNet`需要以下必备条件 + +* `python3.x` +* `numpy` +* `opencv3.x` + +## 用法 + +参考[example](https://github.com/zjZSTU/PyNet/tree/master/examples)文件夹下的示例代码 + +完整版本参考[releases](https://github.com/zjZSTU/PyNet/releases) + +已实现网络模型(位于[pynet/models](https://github.com/zjZSTU/PyNet/tree/master/pynet/models)文件夹): + +* `2`层神经网络 +* `3`层神经网络 +* `LeNet-5` +* `AlexNet` +* `NIN` + +已实现网络层(位于[pynet/nn](https://github.com/zjZSTU/PyNet/tree/master/pynet/nn)文件夹): + +* 卷积层 +* 全连接层 +* 最大池化层 +* `ReLU` +* 随机失活 +* `Softmax` +* 交叉熵损失 +* 全局平均池化层 + +## 版本更新日志 + +请参阅仓库中的[CHANGELOG](./CHANGELOG) + +## 待办事项 + +* 批量归一化实现 +* 计算图实现 + +## 主要维护人员 + +* zhujian - *Initial work* - [zjZSTU](https://github.com/zjZSTU) + +## 致谢 + +感谢以下人员的参与 + +[![](https://avatars3.githubusercontent.com/u/13742735?s=460&v=4)](https://github.com/zjZSTU) + +参考以下库 + +* [cs231n](http://cs231n.github.io/) +* [PyTorch](https://pytorch.org/) + +## 参与贡献方式 + +欢迎任何人的参与!打开[issue](https://github.com/zjZSTU/PyNet/issues)或提交合并请求。 + +注意: + +* `git`提交请遵守[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0-beta.4/) +* 如果进行版本化,请遵守[Semantic Versioning 2.0.0](https://semver.org)规范 +* 如果修改README,请遵守[standard-readme](https://github.com/RichardLitt/standard-readme)规范 + +## 许可证 + +[Apache License 2.0](LICENSE) © 2019 zjZSTU diff --git a/templates/logo.png b/templates/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4a17acede6442b21303f76c9dc364d663b0274 GIT binary patch literal 19414 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 literal 0 HcmV?d00001