commit 3e0da32c18f051ce3562f496b0cdd272667c8cc1 Author: liumangmang <362165265@qq.com> Date: Mon Dec 15 23:16:59 2025 +0800 第一次提交 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6146024 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +package-lock.json + +# VuePress +src/.vuepress/.cache/ +src/.vuepress/.temp/ +src/.vuepress/dist/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Logs +logs/ +*.log + +# Environment +.env +.env.local +.env.*.local diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..10fabd9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the “Licensor.” The text of the Creative Commons public +licenses is dedicated to the public domain under the CC0 Public Domain +Dedication. Except for the limited purpose of indicating that material +is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..057e83b --- /dev/null +++ b/README.en.md @@ -0,0 +1,36 @@ +# 博客 + +#### Description +一个专注于分享编程知识、技术趋势和开发经验的开源博客,旨在帮助开发者提升技能,促进技术交流与学习。 + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md new file mode 100644 index 0000000..cdb29df --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# 博客 + +#### 介绍 +一个专注于分享编程知识、技术趋势和开发经验的开源博客,旨在帮助开发者提升技能,促进技术交流与学习。 + +#### 软件架构 +软件架构说明 + + +#### 安装教程 + +1. xxxx +2. xxxx +3. xxxx + +#### 使用说明 + +1. xxxx +2. xxxx +3. xxxx + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 +5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/package.json b/package.json new file mode 100644 index 0000000..cc6f444 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "mangmangblog", + "description": "我的个人博客", + "version": "2.0.0", + "license": "MIT", + "type": "module", + "scripts": { + "docs:build": "vuepress-vite build src", + "docs:clean-dev": "vuepress-vite dev src --clean-cache", + "docs:dev": "vuepress-vite dev src", + "docs:update-package": "npx vp-update", + "update:browsers": "npx update-browserslist-db@latest" + }, + "devDependencies": { + "@vuepress/bundler-vite": "2.0.0-rc.22", + "@vuepress/plugin-git": "^2.0.0-rc.99", + "sass-embedded": "^1.87.0", + "vue": "^3.5.13", + "vuepress": "2.0.0-rc.22", + "vuepress-theme-hope": "2.0.0-rc.85" + } +} diff --git a/src/.vuepress/components/BlogHero.vue b/src/.vuepress/components/BlogHero.vue new file mode 100644 index 0000000..1ad48a1 --- /dev/null +++ b/src/.vuepress/components/BlogHero.vue @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts new file mode 100644 index 0000000..28392af --- /dev/null +++ b/src/.vuepress/config.ts @@ -0,0 +1,26 @@ +import { defineUserConfig } from "vuepress"; +import { getDirname, path } from "vuepress/utils"; + + +const __dirname = getDirname(import.meta.url); + +import theme from "./theme.js"; + +export default defineUserConfig({ + base: "/", + + lang: "zh-CN", + title: "氓氓小栈", + description: "氓氓小栈", + theme, + alias: { + "@theme-hope/modules/blog/components/BlogHero": path.resolve( + __dirname, + "./components/BlogHero.vue", + ), + }, + + + // 和 PWA 一起启用 + // shouldPrefetch: false, +}); diff --git a/src/.vuepress/navbar.ts b/src/.vuepress/navbar.ts new file mode 100644 index 0000000..35a4c70 --- /dev/null +++ b/src/.vuepress/navbar.ts @@ -0,0 +1,25 @@ +import { navbar } from "vuepress-theme-hope"; + +export default navbar([ + "/", + { + text: "编程", + icon: "mdi:code-tags", + link: "/programming/", + }, + { + text: "工作", + icon: "mdi:briefcase", + link: "/work/", + }, + { + text: "应用", + icon: "mdi:application", + link: "/apps/", + }, + { + text: "工具箱", + icon: "mdi:toolbox", + link: "/tools/", + }, +]); diff --git a/src/.vuepress/public/assets/icon/apple-icon-152.png b/src/.vuepress/public/assets/icon/apple-icon-152.png new file mode 100644 index 0000000..434fcc3 Binary files /dev/null and b/src/.vuepress/public/assets/icon/apple-icon-152.png differ diff --git a/src/.vuepress/public/assets/icon/chrome-192.png b/src/.vuepress/public/assets/icon/chrome-192.png new file mode 100644 index 0000000..6645f52 Binary files /dev/null and b/src/.vuepress/public/assets/icon/chrome-192.png differ diff --git a/src/.vuepress/public/assets/icon/chrome-512.png b/src/.vuepress/public/assets/icon/chrome-512.png new file mode 100644 index 0000000..a146f00 Binary files /dev/null and b/src/.vuepress/public/assets/icon/chrome-512.png differ diff --git a/src/.vuepress/public/assets/icon/chrome-mask-192.png b/src/.vuepress/public/assets/icon/chrome-mask-192.png new file mode 100644 index 0000000..530977a Binary files /dev/null and b/src/.vuepress/public/assets/icon/chrome-mask-192.png differ diff --git a/src/.vuepress/public/assets/icon/chrome-mask-512.png b/src/.vuepress/public/assets/icon/chrome-mask-512.png new file mode 100644 index 0000000..a4f90ae Binary files /dev/null and b/src/.vuepress/public/assets/icon/chrome-mask-512.png differ diff --git a/src/.vuepress/public/assets/icon/guide-maskable.png b/src/.vuepress/public/assets/icon/guide-maskable.png new file mode 100644 index 0000000..75449b6 Binary files /dev/null and b/src/.vuepress/public/assets/icon/guide-maskable.png differ diff --git a/src/.vuepress/public/assets/icon/ms-icon-144.png b/src/.vuepress/public/assets/icon/ms-icon-144.png new file mode 100644 index 0000000..2464124 Binary files /dev/null and b/src/.vuepress/public/assets/icon/ms-icon-144.png differ diff --git a/src/.vuepress/public/assets/images/cover1.jpg b/src/.vuepress/public/assets/images/cover1.jpg new file mode 100644 index 0000000..06f33cf Binary files /dev/null and b/src/.vuepress/public/assets/images/cover1.jpg differ diff --git a/src/.vuepress/public/assets/images/cover2.jpg b/src/.vuepress/public/assets/images/cover2.jpg new file mode 100644 index 0000000..edf5b38 Binary files /dev/null and b/src/.vuepress/public/assets/images/cover2.jpg differ diff --git a/src/.vuepress/public/assets/images/cover3.jpg b/src/.vuepress/public/assets/images/cover3.jpg new file mode 100644 index 0000000..ad79fc9 Binary files /dev/null and b/src/.vuepress/public/assets/images/cover3.jpg differ diff --git a/src/.vuepress/public/bg/bgImage.jpg b/src/.vuepress/public/bg/bgImage.jpg new file mode 100644 index 0000000..7cac8b5 Binary files /dev/null and b/src/.vuepress/public/bg/bgImage.jpg differ diff --git a/src/.vuepress/public/favicon.ico b/src/.vuepress/public/favicon.ico new file mode 100644 index 0000000..7a99168 Binary files /dev/null and b/src/.vuepress/public/favicon.ico differ diff --git a/src/.vuepress/public/logo.png b/src/.vuepress/public/logo.png new file mode 100644 index 0000000..ccd732e Binary files /dev/null and b/src/.vuepress/public/logo.png differ diff --git a/src/.vuepress/public/logo.svg b/src/.vuepress/public/logo.svg new file mode 100644 index 0000000..364d184 --- /dev/null +++ b/src/.vuepress/public/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/.vuepress/public/logo/logo.png b/src/.vuepress/public/logo/logo.png new file mode 100644 index 0000000..d6501fb Binary files /dev/null and b/src/.vuepress/public/logo/logo.png differ diff --git a/src/.vuepress/public/logo/logoDark.png b/src/.vuepress/public/logo/logoDark.png new file mode 100644 index 0000000..a1f75ca Binary files /dev/null and b/src/.vuepress/public/logo/logoDark.png differ diff --git a/src/.vuepress/public/logo/transparentLogo.png b/src/.vuepress/public/logo/transparentLogo.png new file mode 100644 index 0000000..4c3104e Binary files /dev/null and b/src/.vuepress/public/logo/transparentLogo.png differ diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts new file mode 100644 index 0000000..8dbaede --- /dev/null +++ b/src/.vuepress/sidebar.ts @@ -0,0 +1,186 @@ +import { sidebar } from "vuepress-theme-hope"; + +export default sidebar({ + "/programming/": [ + { + text: "前端", + collapsible: true, + expanded: false, + icon: "mdi:vuejs", + prefix: "frontend/", + children: [ + { + text: "Vue", + icon: "mdi:vuejs", + collapsible: true, + prefix: "vue/", + children: "structure", + }, + { + text: "CSS", + icon: "mdi:language-css3", + collapsible: true, + prefix: "css/", + children: "structure", + }, + { + text: "HTML", + icon: "mdi:language-html5", + collapsible: true, + prefix: "html/", + children: "structure", + }, + ] + }, + { + text: "后端", + collapsible: true, + expanded: false, + icon: "mdi:code-tags", + prefix: "backend/", + children: [ + { + text: "Java", + icon: "mdi:language-java", + collapsible: true, + prefix: "java/", + children: [ + { + text: "框架", + icon: "mdi:code-braces", + collapsible: true, + prefix: "框架/", + children: "structure", + }, + { + text: "功能整理", + icon: "mdi:puzzle", + collapsible: true, + prefix: "功能整理/", + children: [ + "01XJar.md", + "02Maven.md", + "03WebSocket和HTTP关系.md", + "05防止表单和参数重复提交.md", + "06Spring Boot JAR 瘦身与加密.md", + ], + }, + { + text: "试题", + icon: "mdi:comment-question", + collapsible: true, + prefix: "AI试题/", + children: "structure", + }, + ] + }, + { + text: "Go", + icon: "mdi:language-go", + collapsible: true, + prefix: "go/", + children: [ + { + text: "Go基础语法", + icon: "mdi:book-open-outline", + collapsible: true, + prefix: "Go基础语法/", + children: [ + "01Hello World.md", + "02变量与类型.md", + "03slice和map.md", + "04Struct、方法与接收者类型详解.md", + "05接口.md", + "06错误机制.md", + "07从零实现 Mini 日志库.md", + ], + }, + ], + }, + { + text: "C++", + icon: "mdi:language-cpp", + collapsible: true, + prefix: "c++/", + children: "structure", + }, + ] + }, + { + text: "Linux", + collapsible: true, + expanded: false, + icon: "mdi:linux", + prefix: "linux/", + children: [ + { + text: "基础", + icon: "mdi:console", + collapsible: true, + prefix: "基础/", + children: "structure", + }, + { + text: "Linux_Mint", + icon: "simple-icons:linuxmint", + collapsible: true, + prefix: "Linux_Mint/", + children: "structure", + }, + { + text: "凝思", + icon: "mdi:server", + collapsible: true, + prefix: "凝思/", + children: "structure", + }, + ] + }, + { + text: "Docker", + collapsible: true, + expanded: false, + icon: "mdi:docker", + prefix: "docker/", + children: "structure", + } + ], + "/work/": [ + { + text: "工作日志", + collapsible: true, + expanded: false, + icon: "mdi:file-document-outline", + prefix: "log/", + children: "structure", + }, + { + text: "常用记录", + icon: "mdi:star", + link: "/work/常用.md", + } + ], + "/apps/": [ + { + text: "自建应用", + icon: "mdi:apps", + collapsible: true, + children: "structure", + } + ], + "/tools/": [ + { + text: "工具箱", + icon: "mdi:toolbox", + collapsible: true, + children: [ + "01gkd.md", + "02WSL2.md", + "03Scoop.md", + "04gitee-ssh.md", + "05Google.md", + "06MobaXterm.md" + ], + }, + ] +}); diff --git a/src/.vuepress/styles/config.scss b/src/.vuepress/styles/config.scss new file mode 100644 index 0000000..801637b --- /dev/null +++ b/src/.vuepress/styles/config.scss @@ -0,0 +1,2 @@ +// you can change config here +$theme-color: #DC143C; diff --git a/src/.vuepress/styles/index.scss b/src/.vuepress/styles/index.scss new file mode 100644 index 0000000..7e64ce0 --- /dev/null +++ b/src/.vuepress/styles/index.scss @@ -0,0 +1,13 @@ +// place your custom styles here +// .vuepress/styles/index.scss + +/* .vuepress/styles/index.scss */ + +.hitokoto-text { + color: #DC143C !important; // 替换为你想要的颜色 +} + +.hitokoto-author { + color: #DC143C!important; // 可选:也可自定义作者名颜色 +} + diff --git a/src/.vuepress/styles/palette.scss b/src/.vuepress/styles/palette.scss new file mode 100644 index 0000000..d271cb0 --- /dev/null +++ b/src/.vuepress/styles/palette.scss @@ -0,0 +1 @@ +// you can change colors here diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts new file mode 100644 index 0000000..b673857 --- /dev/null +++ b/src/.vuepress/theme.ts @@ -0,0 +1,116 @@ +import {hopeTheme} from "vuepress-theme-hope"; + +import navbar from "./navbar.js"; +import sidebar from "./sidebar.js"; +//VuePress Theme Hope主题的博客 +export default hopeTheme( + { + // 网站域名配置(用于SEO和RSS等功能) + hostname: "https://mangmang.fun/", + + // 作者信息 + author: { + name: "LiuMangMang", + }, + + // 网站许可证 + license: "CC 4.0", + + // 导航栏配置(从 navbar.js 文件导入) + navbar, + + // 侧边栏配置(从 sidebar.js 文件导入) + sidebar, + + // 网站logo设置 + logo: "logo/transparentLogo.png", // 亮色模式下的logo + logoDark: "logo/transparentLogo.png", // 暗色模式下的logo + + // 支持简写仓库名称,会解析到 GitHub 上,同时也可以是一个完整的 URL + // repo: "https://gitea.mangmang.fun/mangmang/blog", + // 默认从 `repo` 内容中推断为以下之一: + // "GitHub" / "GitLab" / "Gitee" / "Bitbucket" / "Source" + repoLabel: "Gitea", + repoDisplay: true, + + // 是否显示编辑链接 + editLink: true, + + // 文档源码目录 + docsDir: "src", + + // 页脚配置 + footer: "蜀ICP备2025176018号-1 | Powered by VuePress | Theme by Hope", + displayFooter: true, + + // 是否显示最后更新时间 + lastUpdated: false, + + // 深色模式配置(toggle表示用户可以切换) + darkmode: "toggle", + + // 博客相关配置 + blog: { + description: "一个后端开发者", + intro: "/intro.html" + }, + + // Markdown增强功能配置 + markdown: { + align: true, // 启用文本对齐 + attrs: true, // 启用属性支持 + codeTabs: true, // 启用代码选项卡 + component: true, // 启用组件支持 + demo: true, // 启用演示支持 + figure: true, // 启用图片描述 + gfm: true, // 启用GitHub风格的Markdown + imgLazyload: true, // 启用图片懒加载 + imgSize: true, // 启用图片尺寸设置 + include: true, // 启用文件包含 + mark: true, // 启用标记高亮 + plantuml: true, // 启用PlantUML图表 + spoiler: true, // 启用剧透标记 + + // 文本样式化配置 + stylize: [ + { + matcher: "Recommended", + replacer: ({tag}) => { + if (tag === "em") + return { + tag: "Badge", + attrs: {type: "tip"}, + content: "Recommended", + }; + }, + }, + ], + + sub: true, // 启用下标 + sup: true, // 启用上标 + tabs: true, // 启用选项卡 + tasklist: true, // 启用任务列表 + vPre: true, // 启用v-pre支持 + }, + + // 插件配置 + plugins: { + // 启用博客功能 + blog: true, + + // 组件配置 + components: { + components: ["Badge", "VPCard"], + }, + + // 图标配置 + icon: { + prefix: "fa6-solid:", + }, + }, + }, + { + // 自定义主题配置 + custom: true + } +); \ No newline at end of file diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..db7514e --- /dev/null +++ b/src/README.md @@ -0,0 +1,48 @@ +--- +home: true +layout: BlogHome +hero: true +title: 博客主页 +heroText: '' +tagline: '' +#heroImage: logo/transparentLogo.png +#heroImageDark: logo/transparentLogo.png +#heroAlt: 可爱小熊猫 +bgImage: bg/day.png +bgImageDark: bg/night.png +heroFullScreen: true +icon: house + +#projects: +# - icon: folder-open +# name: 项目名称 +# desc: 项目详细描述 +# link: https://你的项目链接 +# +# - icon: link +# name: 链接名称 +# desc: 链接详细描述 +# link: https://链接地址 +# +# - icon: book +# name: 书籍名称 +# desc: 书籍详细描述 +# link: https://你的书籍链接 +# +# - icon: newspaper +# name: 文章名称 +# desc: 文章详细描述 +# link: https://你的文章链接 +# +# - icon: user-group +# name: 伙伴名称 +# desc: 伙伴详细介绍 +# link: https://你的伙伴链接 +# +# - icon: https://theme-hope-assets.vuejs.press/logo.svg +# name: 自定义项目 +# desc: 自定义详细介绍 +# link: https://你的自定义链接 + +#footer: Powered by VuePress | Theme by Hope +--- diff --git a/src/apps/01Jellyfin.md b/src/apps/01Jellyfin.md new file mode 100644 index 0000000..fc28e6b --- /dev/null +++ b/src/apps/01Jellyfin.md @@ -0,0 +1,97 @@ +--- +title: Jellyfin音乐目录结构规范总结 +icon: music +date: 2025-05-23 +category: + - 应用 +tag: + - jellyfin +--- + + +Jellyfin音乐目录结构规范总结 + + + +# Jellyfin音乐目录结构规范总结 + +Jellyfin作为一款优秀的媒体服务器,对音乐文件的组织有着特定的规范和建议,以确保最佳的识别和播放体验。本文将详细总结Jellyfin音乐目录的结构规范,包括专辑组织、多碟片处理、歌词文件管理、图片资源使用以及文件格式兼容性等方面。 + +## 专辑组织基本原则 + +Jellyfin的音乐库管理遵循"一个文件夹一个专辑"的基本原则。每个专辑必须被包含在单独的文件夹中,这是Jellyfin识别专辑的基础。值得注意的是,Jellyfin并不严格要求您如何组织这些专辑文件夹,只要确保每个专辑都有其独立的文件夹即可。例如,您可以按艺术家创建上层文件夹,然后在其中放置该艺术家的各个专辑文件夹;也可以直接在音乐根目录下放置各个专辑文件夹。 + +文件命名方面,Jellyfin主要依赖音频文件中嵌入的元数据进行识别,而非文件名本身。这意味着即使文件名不规范,只要音频文件中包含正确的元数据信息(如曲目标题、艺术家、专辑名等),Jellyfin仍能正确识别。只有在找不到其他元数据的情况下,Jellyfin才会使用文件名作为曲目标题。 + +尽管如此,文件命名时仍应避免使用特殊字符,因为它们可能导致问题。已知会引起问题的字符包括:`<`、`>`、`:`、`"`、`/`、`\`、`|`、`?`、`*`。这些字符在文件系统中有特殊含义,可能导致文件访问或识别错误。 + +## 多碟片专辑处理 + +对于包含多张碟片的专辑,Jellyfin主要通过音频文件元数据中的"碟片编号"和"总碟片数"字段进行识别。处理多碟片专辑时,有两种组织方式: + +第一种方式是将所有碟片的曲目放在同一个专辑文件夹中,通过元数据区分不同碟片的曲目。这种方式简单直接,完全依赖元数据进行组织。 + +第二种方式是在专辑文件夹内为每张碟片创建单独的子文件夹(如"Disc 1"、"Disc 2"等),然后将相应碟片的曲目放入对应子文件夹。这种方式在视觉上更加清晰,但需要注意的是,嵌入的元数据优先级仍高于文件夹结构,因此确保元数据正确尤为重要。 + +无论采用哪种组织方式,确保音频文件中包含正确的碟片信息元数据是关键,这样Jellyfin才能准确识别和组织多碟片专辑的内容。 + +## 歌词文件管理 + +Jellyfin支持为音乐文件添加歌词,实现边听歌边看歌词的功能。歌词文件必须与对应的音频文件位于同一文件夹中,且文件名(不含扩展名)必须完全匹配。例如,音频文件"01 Death Eternal.mp3"对应的歌词文件应为"01 Death Eternal.lrc"、"01 Death Eternal.elrc"或"01 Death Eternal.txt"。 + +Jellyfin支持两种类型的歌词文件:同步歌词和非同步歌词。同步歌词是交互式的,允许用户点击任意行跳转到歌曲中对应的时间点。同步歌词文件通常包含时间戳信息,格式如下: + +``` +[ar: 艺术家名称] +[ti: 歌曲标题] +[al: 专辑名称] +[by: 作者] +[length: 2:57] +[00:10.89]第一行歌词 +[00:14.58]第二行歌词 +... +``` + +创建同步歌词可以手动完成,但这可能耗时且不够精确,建议使用如MiniLyrics等歌词同步软件辅助完成。 + +非同步歌词则更容易实现,但用户跟唱时可能不够方便。非同步歌词文件格式简单,仅包含按顺序排列的歌词文本,没有时间戳信息: + +``` +第一行歌词 +第二行歌词 +... +``` + +## 图片资源管理 + +Jellyfin音乐库中的图片资源主要有三种类型:封面图(Primary)、背景图(Backdrop)和标志图(Logo)。这些图片可以来自不同来源,但外部图片文件优先级最高。 + +外部图片文件应放置在媒体文件旁边,即与音频文件位于同一文件夹中。如果没有提供封面图,Jellyfin会回退使用第一个带有嵌入专辑图片的音轨。如果没有可用的背景图或标志图,Jellyfin会回退使用专辑艺术家的相应图片。 + +不同类型的图片文件可以使用以下命名: +- 封面图(Primary):folder、poster、cover、default +- 背景图(Backdrop):backdrop、fanart、background、art、extrafanart +- 标志图(Logo):logo + +对于背景图,可以提供多张图片实现循环切换效果。只需在文件名后直接或在连字符后添加数字即可,如"backdrop1.jpg"、"backdrop-2.jpg"等。 + +## 文件格式兼容性 + +Jellyfin支持大多数常见的音乐格式,但有一些例外情况需要注意: + +1. 仅包含音频的MP4文件:".mp4"文件不会被识别为音乐,应将其重命名为".m4a"。 +2. 仅包含音频的MKV/WebM文件:".mkv"和".webm"文件不会被识别为音乐,应将其重命名为".mka"。 +3. WebA文件:".weba"文件不受支持,应将其重命名为".mka"。 +4. 带有嵌入WebP图片或ID3标签的".flac"文件可能在基于Chromium的浏览器(Chrome、Edge、Opera、Brave等)或Firefox中无法播放。如遇此问题,请在客户端设置中启用"始终重新封装FLAC音频文件"选项。 +5. 使用ID3v1标签的文件大多数字段长度限制为30字节,超出部分将被截断。建议升级到ID3v2.4。 + +对于有问题的文件,可以使用ffmpeg将其重新封装为".mka"容器,命令如下: +``` +ffmpeg -i <输入文件> -c:a copy <输出文件>.mka +``` + +需要注意的是,重新封装过程可能会导致元数据混乱,嵌入的图片可能无法保留,因此可能需要手动或使用其他程序恢复元数据。 + +## 总结 + +Jellyfin的音乐目录结构规范主要围绕"一个文件夹一个专辑"的核心原则展开,同时提供了灵活的组织方式。正确的元数据是Jellyfin识别音乐内容的关键,而外部资源如歌词和图片则需要遵循特定的命名和放置规则。了解并遵循这些规范,可以帮助用户构建一个组织良好、功能完善的Jellyfin音乐库,获得最佳的音乐欣赏体验。 diff --git a/src/apps/07RustDesk自建远程桌面服务器.md b/src/apps/07RustDesk自建远程桌面服务器.md new file mode 100644 index 0000000..b2a990e --- /dev/null +++ b/src/apps/07RustDesk自建远程桌面服务器.md @@ -0,0 +1,258 @@ +--- +icon: tabler:device-desktop-analytics +date: 2025-07-04 +category: + - 实用工具 +tag: + - RustDesk +title: RustDesk自建远程桌面服务器 +--- +在日常工作中,我们经常需要远程控制电脑,比如远程家中电脑进行下载、远程办公,或者帮助朋友解决技术问题。除了向日葵、QQ远程、ToDesk等商业软件,RustDesk提供了一个开源、安全、高效的替代方案。 + +# RustDesk自建远程桌面服务器 + +## 为什么选择RustDesk? + +在日常工作中,我们经常需要远程控制电脑,比如远程家中电脑进行下载、远程办公,或者帮助朋友解决技术问题。除了向日葵、QQ远程、ToDesk等商业软件,RustDesk提供了一个开源、安全、高效的替代方案。 + +### RustDesk的主要优势 + +- **安全性**:使用安全的加密通信协议,确保数据传输安全 +- **跨平台**:支持Windows、macOS、Linux、Android等多个平台 +- **高性能**:使用Rust编写,具有高效和并发的特点 +- **低成本**:一台1C1G的服务器就能满足个人或小团队使用 + +## 服务器准备 + +### 服务器配置要求 + +- **Linux服务器**:推荐1C1G配置(如AWS EC2或Lightsail) +- **Windows服务器**:建议至少2C4G配置 +- **网络要求**:需要开放特定端口 + +### 需要开放的端口 + +- **TCP端口**:21115, 21116, 21117, 21118, 21119 +- **UDP端口**:21116 + +## 服务器初始化 + +### 1. 连接服务器 + +使用SSH连接服务器: +```bash +ssh admin@<服务器IP> -i +``` + +### 2. 更新系统 + +```bash +# 更新软件包 +sudo apt update -y + +# 设置时区(可选) +sudo timedatectl set-timezone Asia/Shanghai +``` + +### 3. 创建用户(可选) + +```bash +# 创建新用户 +sudo useradd -m rustdesk + +# 设置密码 +sudo passwd rustdesk + +# 切换用户 +sudo su - rustdesk +``` + +## RustDesk服务端部署 + +### 1. 下载服务端程序 + +```bash +# 创建目录 +mkdir ~/rustdesk && cd ~/rustdesk + +# 下载最新版本(请到GitHub查看最新版本号) +wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip + +# 解压 +unzip rustdesk-server-linux-amd64.zip +mv amd64 server +cd server +``` + +### 2. 测试运行 + +安装screen用于管理进程: +```bash +sudo apt install screen +``` + +启动hbbs(ID服务): +```bash +screen -S hbbs +./hbbs +# 按Ctrl+A然后按D退出screen +``` + +启动hbbr(中继服务): +```bash +screen -S hbbr +./hbbr +# 按Ctrl+A然后按D退出screen +``` + +### 3. 获取公钥 + +运行后会生成公钥文件,查看并复制公钥内容: +```bash +cat id_ed25519.pub +``` + +保存这个公钥,客户端配置时需要使用。 + +## 注册为系统服务 + +### 创建hbbs服务 + +创建服务文件: +```bash +sudo nano /etc/systemd/system/rustdesk-hbbs.service +``` + +写入以下内容: +```ini +[Unit] +Description=RustDesk Hbbs +After=network.target + +[Service] +User=rustdesk +Type=simple +WorkingDirectory=/home/rustdesk/rustdesk/server +ExecStart=/home/rustdesk/rustdesk/server/hbbs +ExecStop=/bin/kill -TERM $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target +``` + +### 创建hbbr服务 + +```bash +sudo nano /etc/systemd/system/rustdesk-hbbr.service +``` + +写入以下内容: +```ini +[Unit] +Description=RustDesk Hbbr +After=network.target + +[Service] +User=rustdesk +Type=simple +WorkingDirectory=/home/rustdesk/rustdesk/server +ExecStart=/home/rustdesk/rustdesk/server/hbbr +ExecStop=/bin/kill -TERM $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target +``` + +### 启动服务 + +```bash +# 重载systemd配置 +sudo systemctl daemon-reload + +# 启动服务 +sudo systemctl start rustdesk-hbbs +sudo systemctl start rustdesk-hbbr + +# 设置开机自启 +sudo systemctl enable rustdesk-hbbs +sudo systemctl enable rustdesk-hbbr + +# 查看服务状态 +sudo systemctl status rustdesk-hbbs +sudo systemctl status rustdesk-hbbr +``` + +## 客户端配置 + +### 1. 下载客户端 + +访问[RustDesk官方发布页面](https://github.com/rustdesk/rustdesk/releases)下载对应系统的客户端。 + +### 2. 配置客户端 + +1. 打开RustDesk客户端 +2. 点击右上角的三个点,进入设置 +3. 选择"网络"选项 +4. 解锁网络配置 +5. 填入配置信息: + - **ID服务器**:你的服务器IP地址 + - **中继服务器**:你的服务器IP地址 + - **公钥**:之前复制的公钥内容 + +### 3. 测试连接 + +配置完成后,客户端会显示一个ID号码。在另一台设备上安装并配置好RustDesk客户端,输入这个ID即可建立连接。 + +## 进阶配置 + +### 启用强制加密 + +如果希望强制使用密钥验证,可以在启动服务时添加参数: + +修改服务文件中的ExecStart行: +```ini +ExecStart=/home/rustdesk/rustdesk/server/hbbs -k _ +ExecStart=/home/rustdesk/rustdesk/server/hbbr -k _ +``` + +这样客户端必须配置正确的公钥才能连接。 + +### 使用域名 + +如果你有域名,可以在客户端配置中使用域名替代IP地址,但请注意: +- 域名必须直接解析到服务器IP +- 不支持CDN加速的域名 + +## 常见问题解决 + +### 1. 连接失败 + +检查以下几点: +- 服务器防火墙是否开放了必要端口 +- 服务是否正常运行:`sudo systemctl status rustdesk-hbbs rustdesk-hbbr` +- 客户端配置是否正确 + +### 2. 性能问题 + +- 确保服务器网络带宽充足 +- 可以考虑升级服务器配置 +- 检查是否有其他程序占用资源 + +### 3. 安全考虑 + +- 建议启用强制加密 +- 定期更新RustDesk版本 +- 使用防火墙限制访问来源 + +## 总结 + +通过本教程,你已经成功搭建了自己的RustDesk远程桌面服务器。这个方案具有以下优势: + +1. **完全掌控**:数据不经过第三方服务器 +2. **成本低廉**:最低1C1G服务器即可满足需求 +3. **安全可靠**:开源代码,支持端到端加密 +4. **性能优秀**:基于Rust的高效实现 + +现在你可以享受安全、高效的远程桌面服务了!如果遇到问题,建议查看官方文档或者在GitHub上寻求帮助。 \ No newline at end of file diff --git a/src/apps/README.md b/src/apps/README.md new file mode 100644 index 0000000..eaca969 --- /dev/null +++ b/src/apps/README.md @@ -0,0 +1,13 @@ +--- +title: 自建应用 +index: false +icon: mdi:apps +category: + - 应用 +--- + +## 自建应用列表 + +记录个人搭建的各类应用服务。 + + diff --git a/src/demo/README.md b/src/demo/README.md new file mode 100644 index 0000000..31ede9b --- /dev/null +++ b/src/demo/README.md @@ -0,0 +1,9 @@ +--- +title: 主要功能与配置演示 +index: false +icon: laptop-code +category: + - 使用指南 +--- + + diff --git a/src/demo/disable.md b/src/demo/disable.md new file mode 100644 index 0000000..ff54b57 --- /dev/null +++ b/src/demo/disable.md @@ -0,0 +1,42 @@ +--- +title: 布局与功能禁用 +icon: gears +order: 4 +category: + - 使用指南 +tag: + - 禁用 + +navbar: false +sidebar: false + +breadcrumb: false +pageInfo: false +contributors: false +editLink: false +lastUpdated: false +prev: false +next: false +comment: false +footer: false + +backtotop: false +--- + +你可以通过设置页面的 Frontmatter,在页面禁用功能与布局。 + + + +本页面就是一个示例,禁用了如下功能: + +- 导航栏 +- 侧边栏 +- 路径导航 +- 页面信息 +- 贡献者 +- 编辑此页链接 +- 更新时间 +- 上一篇/下一篇 链接 +- 评论 +- 页脚 +- 返回顶部按钮 diff --git a/src/demo/encrypt.md b/src/demo/encrypt.md new file mode 100644 index 0000000..20d8d23 --- /dev/null +++ b/src/demo/encrypt.md @@ -0,0 +1,15 @@ +--- +icon: lock +category: + - 使用指南 +tag: + - 加密 +--- + +# 密码加密的文章 + +实际的文章内容。 + +段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字。 + +段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字。 diff --git a/src/demo/layout.md b/src/demo/layout.md new file mode 100644 index 0000000..b89b60a --- /dev/null +++ b/src/demo/layout.md @@ -0,0 +1,31 @@ +--- +title: 布局 +icon: object-group +order: 2 +category: + - 指南 +tag: + - 布局 +--- + +布局包括: + +- [导航栏](https://theme-hope.vuejs.press/zh/guide/layout/navbar.html) +- [侧边栏](https://theme-hope.vuejs.press/zh/guide/layout/sidebar.html) +- [页脚](https://theme-hope.vuejs.press/zh/guide/layout/footer.html) + +同时每个页面包含: + +- [路径导航](https://theme-hope.vuejs.press/zh/guide/layout/breadcrumb.html) +- [标题和页面信息](https://theme-hope.vuejs.press/zh/guide/feature/page-info.html) +- [TOC (文章标题列表)](https://theme-hope.vuejs.press/zh/guide/layout/page.html#标题列表) +- [贡献者、更新时间等页面元信息](https://theme-hope.vuejs.press/guide/feature/meta.html) +- [评论](https://theme-hope.vuejs.press/zh/guide/feature/comment.html) + +主题也带有以下元素: + +- [夜间模式按钮](https://theme-hope.vuejs.press/zh/guide/interface/darkmode.html) +- [返回顶部按钮](https://theme-hope.vuejs.press/guide/interface/others.html#返回顶部按钮) +- [打印按钮](https://theme-hope.vuejs.press/guide/interface/others.html#打印按钮) + +你可以在主题选项和页面的 frontmatter 中自定义它们。 diff --git a/src/demo/markdown.md b/src/demo/markdown.md new file mode 100644 index 0000000..33e65b9 --- /dev/null +++ b/src/demo/markdown.md @@ -0,0 +1,323 @@ +--- +title: Markdown 展示 +icon: fa6-brands:markdown +order: 2 +category: + - 使用指南 +tag: + - Markdown +--- + +VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。 + +你需要创建并编写 Markdown,以便 VuePress 可以根据文件结构将它们转换为不同的页面。 + + + +## Markdown 介绍 + +如果你是一个新手,还不会编写 Markdown,请先阅读 [Markdown 介绍](https://theme-hope.vuejs.press/zh/cookbook/markdown/) 和 [Markdown 演示](https://theme-hope.vuejs.press/zh/cookbook/markdown/demo.html)。 + +## Markdown 配置 + +VuePress 通过 Frontmatter 为每个 Markdown 页面引入配置。 + +::: important Frontmatter + +Frontmatter 是 VuePress 中很重要的一个概念,请阅读 [Frontmatter 介绍](https://theme-hope.vuejs.press/zh/cookbook/vuepress/page.html#front-matter) 了解详情。 + +::: + +## Markdown 扩展 + +VuePress 会使用 [markdown-it](https://github.com/markdown-it/markdown-it) 来解析 Markdown 内容,因此可以借助于 markdown-it 插件来实现 [语法扩展](https://github.com/markdown-it/markdown-it#syntax-extensions) 。 + +### VuePress 扩展 + +为了丰富文档写作,VuePress 对 Markdown 语法进行了扩展。 + +关于这些扩展,请阅读 [VuePress 中的 Markdown 扩展](https://theme-hope.vuejs.press/zh/cookbook/vuepress/markdown.html)。 + +### 主题扩展 + +通过 VuePress 插件,主题扩展了更多 Markdown 语法,提供更加丰富的写作功能。 + +#### 选项卡 + +::: tabs#fruit + +@tab apple + +Apple + +@tab banana + +Banana + +@tab orange + +Orange + +::: + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/content/tabs.html) + +#### 脚注 + +此文字有脚注[^first]. + +[^first]: 这是脚注内容 + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/content/footnote.html) + +#### 导入文件 + + + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/content/include.html) + +#### TeX 语法 + +$$ +\frac {\partial^r} {\partial \omega^r} \left(\frac {y^{\omega}} {\omega}\right) += \left(\frac {y^{\omega}} {\omega}\right) \left\{(\log y)^r + \sum_{i=1}^r \frac {(-1)^i r \cdots (r-i+1) (\log y)^{r-i}} {\omega^i} \right\} +$$ + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/grammar/math.html) + +#### 任务列表 + +- [x] 计划 1 +- [ ] 计划 2 + +[查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/grammar/tasklist.html) + +### 图片增强 + +支持为图片设置颜色模式和大小。 + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/grammar/image.html) + +#### 上下角标 + +19^th^ H~2~O + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/sup-sub.html) + +#### 组件 + +```component VPCard +title: Mr.Hope +desc: Where there is light, there is hope +logo: https://mister-hope.com/logo.svg +link: https://mister-hope.com +background: rgba(253, 230, 138, 0.15) +``` + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/component/grammar.html) + +#### 提示容器 + +::: v-pre + +安全的在 Markdown 中使用 {{ variable }}。 + +::: + +::: info 自定义标题 + +信息容器,包含 `代码` 与 [链接](#提示容器)。 + +```js +const a = 1; +``` + +::: + +::: tip 自定义标题 + +提示容器 + +::: + +::: warning 自定义标题 + +警告容器 + +::: + +::: caution 自定义标题 + +危险容器 + +::: + +::: details 自定义标题 + +详情容器 + +::: + +- [GitHub 警示](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/alert.html) +- [提示框](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/hint.html) + +#### 自定义对齐 + +::: center + +我是居中的 + +::: + +::: right + +我在右对齐 + +::: + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/align.html) + +#### 属性支持 + +一个拥有 ID 的 **单词**{#word}。 + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/attrs.html) + +#### 标记 + +你可以标记 ==重要的内容== 。 + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/mark.html) + +#### 剧透 + +VuePress Theme Hope !!十分强大!!. + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/spoiler.html) + +#### 样式化 + +向 Mr.Hope 捐赠一杯咖啡。 _Recommended_ + +- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize/stylize.html) + +#### 图表 + +