├── .nvmrc ├── .prettierrc.cjs ├── docs ├── log.txt ├── .vitepress │ ├── public │ │ ├── favicon.ico │ │ └── vercel.json │ ├── settings │ │ ├── index.ts │ │ ├── router.ts │ │ ├── themeConfig.ts │ │ └── head.ts │ ├── theme │ │ ├── index.ts │ │ └── utils │ │ │ └── router.ts │ └── config.ts ├── 如何使用掘金社区 │ ├── 22-深入掘金:👨‍💻 如何通过掘金找到好工作.md │ ├── 2-了解掘金:⚖️ 掘金基本法.md │ ├── 19-深入掘金:📚 如何贡献掘金的标签.md │ ├── 18-使用掘金:💬 如何给掘金社区提建议 & Bug.md │ ├── 20-深入掘金:💸 如何在掘金投放广告.md │ ├── 6-了解掘金:📖 掘金术语.md │ ├── 7-使用掘金:👤 掘金的账号系统.md │ ├── 17-使用掘金:👩‍🎓字学模块介绍.md │ ├── 5-了解掘金:掘友等级体系.md │ ├── index.md │ ├── 15-使用掘金:🎈 如何玩转沸点.md │ ├── 1-了解掘金:❓ 为什么做掘金社区.md │ ├── intro.md │ ├── 21-深入掘金:💰 如何通过掘金赚钱.md │ ├── 4-了解掘金:🏆 掘力值、创作者等级与权限(新).md │ ├── 13-使用掘金:❎ 掘金社区行为规范&处罚措施.md │ ├── 11-使用掘金:📐 掘金社区内容的标准和规范.md │ ├── 3-了解掘金:⛏️ 掘金的功能简介.md │ ├── 23-⚠️ 常见问题.md │ └── 10-使用掘金:👮‍♀️掘金的内容审核和推荐规则.md ├── index.md ├── 源码共读第一期|掘金会员专属活动 │ ├── 26-前端|classnames.md │ ├── 30-前端|Vue团队核心成员开发的39行小工具 install-pkg 安装包.md │ ├── 10-前端|axios 工具函数.md │ ├── 8-前端|为什么 Vue2 this 能够直接获取到 data 和 methods.md │ ├── 23-前端|create-vue Vue 团队公开的全新脚手架工具.md │ ├── 31-前端|open 打开浏览器.md │ ├── 22-前端|element 初始化组件功能.md │ ├── 33-前端|delay 带取消功能的延迟函数.md │ ├── 28-前端|一行代码统一规范 包管理器.md │ ├── 20-前端|揭秘 create-vite 原理.md │ ├── 9-前端|yocto-queue 队列 链表.md │ ├── 27-前端| js-cookie.md │ ├── 12-前端|await-to-js 如何优雅的捕获 await 的错误.md │ ├── 16-前端|p-limit 限制并发数.md │ ├── 29-前端|项目中常用的 .env 文件原理是什么?如何实现?.md │ ├── 5-前端|omit.js 剔除对象中的属性.md │ ├── 13-前端|promisify.md │ ├── 7-前端|vue2工具函数.md │ ├── 18-前端|如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等.md │ ├── 21-前端|vue 3.2 是怎么发布的 vue-release.md │ ├── intro.md │ ├── 14-前端|mitt、tiny-emitter 发布订阅.md │ ├── 11-前端|vue3 工具函数.md │ ├── 24-前端|tdesign-vue 初始化组件.md │ ├── 25-前端|为 vite 项目自动添加 eslint 和 prettier.md │ ├── 19-前端| 跟着 vant-weapp 学习开发小程序组件.md │ ├── 15-前端|跟着underscore学防抖.md │ ├── 6-前端|arrify 转数组.md │ ├── 2-后端|Netty 学习 第二周.md │ ├── 3-后端|Netty 学习 第三周.md │ ├── 4-后端|Netty 学习 第四周.md │ ├── 17-前端| koa-compose.md │ ├── index.md │ └── 32-前端|vue-devtools 组件可以打开编辑器.md ├── 如何写一本掘金小册 │ ├── index.md │ ├── 8-内容变更记录.md │ ├── 6-如何保护掘金小册的内容版权.md │ ├── 5-如何维护读者的提问和反馈.md │ ├── 4-如何定价并正式发布售卖小册.md │ ├── intro.md │ ├── 7-有小册想法,如何成为小册作者.md │ ├── 2-如何使用掘金发布小册.md │ └── 1-什么是掘金小册.md └── 稀土开发者大会2022 │ ├── 1-谭待:大会致辞.md │ ├── 23-陈婧文:智能座舱 AI 推荐.md │ ├── 19-崔洪波、姚煜:英特尔与您共举汽车行业的数字化未来.md │ ├── 55-许金柱:携程在数据库选型方面的探索与实践.md │ ├── 29-梁宇宁:开源:商业成功的保障?.md │ ├── 2-程从超:助力开放生态建设,解锁基础设施潜能.md │ ├── 54-陈尧:携程在数据库选型方面的探索与实践.md │ ├── 24-刘涛:车载语音对话新体验.md │ ├── 6-陈满砚:一次 300 人参与、周期一年的单盲实验.md │ ├── 5-王保平(玉伯):技术人如何做产品.md │ ├── 65-陆扬:视频云的机遇挑战与最佳实践方案.md │ ├── 63-任晓蕾:云原生数据库技术趋势与英特尔最佳实践.md │ ├── 25-李志明:采用 CXL 加速内存架构演进.md │ ├── 32-翟佳:从0-1:锻造开源创业团队的道与术.md │ ├── 35-陈驰远:CTO 职责体系构建:商业、团队和技术.md │ ├── 3-何晓冬:多模态智能人机对话交互技术的发展与产业实践.md │ ├── 47-王越:创作正当时,相伴共成长.md │ ├── 28-刘建航:AI 专有芯片如何平衡高性能和通用性.md │ ├── 30-黄东旭:在全球化和多云环境中看开源软件的商业化探索.md │ ├── 56-夏磊:如何利用 Intel 加速工具构建端到端的高性能应用.md │ ├── 20-李银龙:数据驱动的智能驾驶云.md │ ├── 10-刘凡:Google Cloud 为您的云原生软件交付链保驾护航.md │ └── 11-于鸿磊:云原生技术跨向生物信息计算领域的最后十公里.md ├── src ├── spider │ └── task │ │ ├── index.ts │ │ ├── common.ts │ │ └── spiderAll.ts ├── utils │ ├── regx │ │ └── index.ts │ ├── index.ts │ ├── data │ │ └── index.ts │ ├── cookie │ │ └── index.ts │ ├── course │ │ └── index.ts │ ├── parse │ │ └── index.ts │ ├── request │ │ └── index.ts │ ├── puppeteer │ │ └── index.ts │ ├── command │ │ └── index.ts │ └── logger │ │ └── index.ts ├── types.d.ts ├── config │ └── index.ts └── index.ts ├── .npmrc ├── .lintstagedrc ├── .editorconfig ├── .github └── workflows │ ├── pr-welcome.yml │ ├── emoji-helper.yml │ ├── notfoundbot.yml │ ├── automerge.yml │ ├── issue-label.yml │ ├── contributor-help.yml │ ├── clear.yml │ ├── images.yml │ ├── sync.yml │ ├── deploy.yml │ ├── issue-reply.yml │ └── test.yml ├── .prettierignore ├── .eslintrc.cjs ├── scripts └── build.js ├── tsconfig.json ├── .gitignore ├── .env └── package.json /.nvmrc: -------------------------------------------------------------------------------- 1 | 18 -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = require('@femm/prettier') 2 | -------------------------------------------------------------------------------- /docs/log.txt: -------------------------------------------------------------------------------- 1 | Triggered by schedule at Sat Nov 9 14:30:42 UTC 2024 2 | -------------------------------------------------------------------------------- /src/spider/task/index.ts: -------------------------------------------------------------------------------- 1 | export * from './common' 2 | export * from './spiderAll' 3 | -------------------------------------------------------------------------------- /docs/.vitepress/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dext7r/juejinBooksSpider/HEAD/docs/.vitepress/public/favicon.ico -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # https://docs.npmjs.com/cli/configuring-npm/npmrc/ 2 | # https://pnpm.io/npmrc 3 | 4 | registry=https://registry.npmmirror.com 5 | -------------------------------------------------------------------------------- /src/utils/regx/index.ts: -------------------------------------------------------------------------------- 1 | export const ValidUrl = /https:\/\/juejin.cn\/book\/(\d+)/ 2 | export function isValidUrl(url) { 3 | return ValidUrl.test(url) 4 | } 5 | -------------------------------------------------------------------------------- /docs/.vitepress/settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './head' 2 | // export * from './nav' 3 | // export * from './sidebar' 4 | export * from './router' 5 | export * from './themeConfig' 6 | -------------------------------------------------------------------------------- /.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "*.{json,json5,jsonc}": ["eslint --fix"], 3 | "*.{css,scss,less}": ["prettier --write"], 4 | "*.{js,cjs,mjs,jsx,ts,tsx,mts,cts,vue,html,md,yaml,yml}": ["eslint --fix", "prettier --write"] 5 | } 6 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logger' 2 | export * from './data' 3 | export * from './regx' 4 | export * from './cookie' 5 | export * from './course' 6 | export * from './request' 7 | export * from './parse' 8 | export * from './puppeteer' 9 | export * from './command' 10 | -------------------------------------------------------------------------------- /docs/.vitepress/public/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "headers": [ 3 | { 4 | "source": "/assets/(.*)", 5 | "headers": [ 6 | { 7 | "key": "Cache-Control", 8 | "value": "max-age=31536000, immutable" 9 | } 10 | ] 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.github/workflows/pr-welcome.yml: -------------------------------------------------------------------------------- 1 | name: PR Welcome 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened] 6 | 7 | jobs: 8 | welcome: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions-cool/pr-welcome@v1.1.2 12 | with: 13 | pr-emoji: '+1, heart' 14 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # See https://github.com/prettier/prettier/blob/main/docs/ignore.md 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # compiled output 7 | dist 8 | build 9 | cache 10 | .cache 11 | .temp 12 | .tmp 13 | 14 | # lock files 15 | pnpm-lock.yaml 16 | package-lock.json 17 | yarn.lock 18 | -------------------------------------------------------------------------------- /src/utils/data/index.ts: -------------------------------------------------------------------------------- 1 | import dayjs from 'dayjs' 2 | 3 | export function formatDate(date?: Date | string | number, format = 'YYYY-MM-DD HH:mm:ss'): string { 4 | const targetDate = date ? dayjs(date) : dayjs() // 使用当前时间如果未传递日期参数 5 | const formattedDate = dayjs(targetDate).format(format) 6 | return formattedDate 7 | } 8 | -------------------------------------------------------------------------------- /.github/workflows/emoji-helper.yml: -------------------------------------------------------------------------------- 1 | name: Emoji Helper 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | emoji: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions-cool/emoji-helper@v1.0.0 12 | with: 13 | type: 'release' 14 | emoji: '+1, laugh, heart, hooray, rocket, eyes' 15 | -------------------------------------------------------------------------------- /.github/workflows/notfoundbot.yml: -------------------------------------------------------------------------------- 1 | name: notfoundbot 2 | on: 3 | schedule: 4 | - cron: '0 5 * * *' 5 | jobs: 6 | notfoundbot: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - name: Fix links 11 | uses: tmcw/notfoundbot@v2.0.0-beta.1 12 | env: 13 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 14 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/22-深入掘金:👨‍💻 如何通过掘金找到好工作.md: -------------------------------------------------------------------------------- 1 | # 深入掘金:👨‍💻 如何通过掘金找到好工作 2 | 3 | 目前您可以使用「[内推招聘](https://juejin.cn/topic/6819970850532360206 "https://juejin.cn/topic/6819970850532360206")」找到正在招聘的公司职位,或者在「[求职中](https://juejin.cn/topic/6824710203426996238 "https://juejin.cn/topic/6824710203426996238")」主动求职。 4 | 5 | ## 招聘功能 6 | 7 | ⌛️ 开发中 8 | 9 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795388620808) -------------------------------------------------------------------------------- /src/utils/cookie/index.ts: -------------------------------------------------------------------------------- 1 | export async function setPageCookie(page: { setCookie: (arg0: any) => any }, cookie: string) { 2 | const cookies = cookie.split(';').map((pair) => { 3 | const name = pair.trim().slice(0, pair.trim().indexOf('=')) 4 | const value = pair.trim().slice(pair.trim().indexOf('=') + 1) 5 | return { name, value, domain: '.juejin.cn' } 6 | }) 7 | await page.setCookie(...cookies) 8 | } 9 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/2-了解掘金:⚖️ 掘金基本法.md: -------------------------------------------------------------------------------- 1 | # 了解掘金:⚖️ 掘金基本法 2 | 3 | ## 👍 倡导 4 | 5 | * 分享原创文章、开源项目 6 | * 基于技术及事实分享有价值的信息 7 | * 一个干净的技术讨论环境 8 | * 不断坚持学习和进步 9 | 10 | ## 👎 不欢迎 11 | 12 | * 不文明的讨论和人身攻击 13 | * 错误、虚假、抄袭的内容或标题 14 | * 不劳而获 15 | 16 | ## 🚫 不允许 17 | 18 | * 违反中国或者用户所在国家地区法律法规的行为和内容 19 | * 对网站的运营安全有潜在威胁的内容 20 | * 色情、激进时政、意识形态方面的话题 21 | 22 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795367649288) -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | ## 本小册由 juejinBooksSpider爬取 项目主页 h7ml.github.io/juejinBooksSpider 2 | 3 | ### 小册总览 4 | 5 | - 如何写一本掘金小册 6 | 7 | - 如何使用掘金社区 8 | 9 | - 源码共读第一期|掘金会员专属活动 10 | 11 | - 稀土开发者大会2022 12 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['@antfu/eslint-config-ts', 'plugin:prettier/recommended'], 4 | rules: { 5 | 'new-cap': 'off', 6 | 'no-console': 'off', 7 | 'antfu/if-newline': 'off', 8 | '@typescript-eslint/no-require-imports': 'off', 9 | '@typescript-eslint/no-var-requires': 'off', 10 | 'no-unused-expressions': 'off', 11 | 'no-sequences': 'off', 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /.github/workflows/automerge.yml: -------------------------------------------------------------------------------- 1 | name: automerge 2 | on: pull_request_target 3 | jobs: 4 | dependabot: 5 | if: github.actor == 'dependabot[bot]' 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Enable auto-merge for Dependabot PRs 9 | run: gh pr merge --auto --squash "$PR_URL" 10 | env: 11 | PR_URL: ${{github.event.pull_request.html_url}} 12 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 13 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs-extra' 2 | import { build } from 'esbuild' 3 | 4 | const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8')) 5 | 6 | const config = { 7 | bundle: true, 8 | entryPoints: ['src/index.ts'], 9 | outfile: 'dist/index.cjs', 10 | format: 'cjs', 11 | platform: 'node', 12 | target: 'node12', 13 | } 14 | 15 | config.define = { 'process.env.PACKAGE_VERSION': JSON.stringify(pkg.version) } 16 | 17 | build(config) 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "esnext", 5 | "lib": ["esnext", "DOM"], 6 | "baseUrl": ".", 7 | "paths": { 8 | "@/*": ["src/*"] 9 | }, 10 | "moduleResolution": "node", 11 | "esModuleInterop": true, 12 | "strict": true, 13 | "strictNullChecks": true, 14 | "resolveJsonModule": true, 15 | "outDir": "dist", 16 | "rootDir": "src" 17 | }, 18 | "include": ["src"] 19 | } 20 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/19-深入掘金:📚 如何贡献掘金的标签.md: -------------------------------------------------------------------------------- 1 | # 深入掘金:📚 如何贡献掘金的标签 2 | 3 | 掘金里的标签是掘金社区组织内容最基础的形式,每一个标签都需要精心的管理和维护。因而,贡献标签是掘友们较高的一个权限,以防止使用不善导致社区内容混乱的潜在风险。 4 | 5 | ## 掘金共建者权限 6 | 7 | 唯有「掘金共建者」权限的用户可以参与到掘金社区的标签维护和贡献中。如何获得权限请参考:[掘力值、等级与权限](https://juejin.cn/book/6844733795329900551/section/6844733795371843597 "https://juejin.cn/book/6844733795329900551/section/6844733795371843597") 8 | 9 | ## 具体方法 10 | 11 | 🙊 相应权限用户可获得 12 | 13 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795384426510) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # editor directories and files 4 | .idea 5 | .vscode 6 | 7 | # dependencies 8 | node_modules 9 | 10 | # compiled output 11 | dist 12 | build 13 | cache 14 | .cache 15 | .temp 16 | .tmp 17 | 18 | # log and lock files 19 | *.log 20 | yarn.lock 21 | package-lock.json 22 | 23 | # local env files 24 | .env.local 25 | .env.*.local 26 | 27 | # misc 28 | .DS_Store 29 | 30 | # user-specific files 31 | 32 | **/books/* 33 | -------------------------------------------------------------------------------- /src/utils/course/index.ts: -------------------------------------------------------------------------------- 1 | import inquirer from 'inquirer' 2 | import { isValidUrl } from '..' 3 | 4 | export async function inquirerCourse() { 5 | const { url } = await inquirer.prompt([ 6 | { 7 | type: 'input', 8 | name: 'url', 9 | message: '请输入小册链接:', 10 | validate: (val) => { 11 | if (val && isValidUrl(val)) { 12 | return true 13 | } 14 | return '请输入合法的小册链接,例如https://juejin.cn/book/6844723704639782920' 15 | }, 16 | }, 17 | ]) 18 | return url 19 | } 20 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/26-前端|classnames.md: -------------------------------------------------------------------------------- 1 | # 前端|classnames 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 学会 classnames 的用法 10 | 2. 学会 classnames 的原理 11 | 3. 多关注测试用例 12 | 13 | ## 学习任务 14 | 15 | * 仓库地址:[github.com/JedWatson/c…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2FJedWatson%2Fclassnames "https://github.com/JedWatson/classnames") 16 | * 可以多关注测试用例 17 | 18 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169471505984667678) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/index.md: -------------------------------------------------------------------------------- 1 |

如何写一本掘金小册

2 | 3 |

原文地址

4 | 5 | - 1 什么是掘金小册 6 | 7 | - 2 如何使用掘金发布小册 8 | 9 | - 3 如何选题、定提纲和组织内容 10 | 11 | - 4 如何定价并正式发布售卖小册 12 | 13 | - 5 如何维护读者的提问和反馈 14 | 15 | - 6 如何保护掘金小册的内容版权 16 | 17 | - 7 有小册想法,如何成为小册作者 18 | 19 | - 8 内容变更记录 20 | 21 | -------------------------------------------------------------------------------- /docs/.vitepress/settings/router.ts: -------------------------------------------------------------------------------- 1 | import AutoConfigureNavSidebarPlugin from '@w3ctech-editorial-department/vitepress-auto-configure-nav-sidebar' 2 | 3 | const site = [ 4 | { 5 | text: '前端物语', 6 | link: 'https://www.h7ml.cn', 7 | }, 8 | ] 9 | const { nav, sidebar } = AutoConfigureNavSidebarPlugin({ 10 | ignoreFolders: ['.vitepress', 'public', ''], 11 | ignoreFiles: ['log.txt'], 12 | // dirPrefix: '', 13 | // filePrefix: 'docs', 14 | showNavIcon: false, 15 | showSidebarIcon: true, 16 | collapsed: true, 17 | singleLayerNav: true, 18 | }) 19 | 20 | export { nav, sidebar, site } 21 | -------------------------------------------------------------------------------- /src/utils/parse/index.ts: -------------------------------------------------------------------------------- 1 | import html2md from 'html-to-md' 2 | import hpdf from 'hpdf' 3 | 4 | const generator = new hpdf.PdfGenerator({ 5 | min: 3, 6 | max: 10, 7 | }) 8 | 9 | export async function toMd(html: string) { 10 | return await html2md(html) 11 | } 12 | export async function toPdf(html: string) { 13 | return await generator.generatePDF(html) 14 | } 15 | 16 | export async function sleepAsync(milliseconds: number): Promise { 17 | // 使用Promise实现异步操作 18 | return new Promise((resolve) => { 19 | // 设置定时器,每隔milliseconds毫秒执行resolve函数 20 | setTimeout(resolve, milliseconds) 21 | }) 22 | } 23 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/30-前端|Vue团队核心成员开发的39行小工具 install-pkg 安装包.md: -------------------------------------------------------------------------------- 1 | # 前端|Vue团队核心成员开发的39行小工具 install-pkg 安装包 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 如何学习调试源码 10 | 2. 如何开发构建一个 ts 的 npm 包 11 | 3. 如何配置 github action 12 | 4. 配置属于自己的 eslint 预设、提升版本号等 13 | 5. 学会使用 execa 执行命令 14 | 6. 等等 15 | 16 | ## 学习任务 17 | 18 | * 参考文章 [Vue团队核心成员开发的39行小工具 install-pkg 安装包,值得一学!](https://juejin.cn/post/7039494476913442824 "https://juejin.cn/post/7039494476913442824") 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176615043759341571) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/18-使用掘金:💬 如何给掘金社区提建议 & Bug.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:💬 如何给掘金社区提建议 & Bug 2 | 3 | ## 「反馈 & 建议」沸点话题 4 | 5 | ![「反馈 & 建议」沸点话题](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/4/12/16a10c3f4c66454e~tplv-t2oaga2asx-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | 对于日常使用的不便、功能的建议、体验的优化、小 Bug。大家可以直接在沸点话题「[反馈 & 建议](https://juejin.cn/topic/6824710202692993037 "https://juejin.cn/topic/6824710202692993037")」提出,我们的小编都会随时回复,有问题我们也会记录并加入迭代流程。 8 | 9 | ## 联系我们 10 | 11 | 如果上述渠道仍没有满足您的反馈您可以: 12 | 13 | * 发送邮件至 `feedback@xitu.io` 14 | * 直接联系我们的微信号:`chnyifan` 15 | 16 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795384442893) -------------------------------------------------------------------------------- /.github/workflows/issue-label.yml: -------------------------------------------------------------------------------- 1 | name: Issue Labeled 2 | 3 | # 新增标签时触发 4 | on: 5 | issues: 6 | types: [labeled] 7 | 8 | jobs: 9 | issue-labeled: 10 | # 打标签和提交 issue 的不是同一个人才执行 11 | if: github.actor != github.event.issue.user.login 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Need more info 15 | if: github.event.label.name == 'TODO' 16 | uses: actions-cool/issues-helper@main 17 | with: 18 | actions: 'create-comment' 19 | token: ${{ secrets.GITHUB_TOKEN }} 20 | issue-number: ${{ github.event.issue.number }} 21 | body: | 22 | Something is being better!🥰 23 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/10-前端|axios 工具函数.md: -------------------------------------------------------------------------------- 1 | # 前端|axios 工具函数 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 初步学会看源码 10 | 2. 学会 axios 中的10多个工具函数 11 | 3. 等等 12 | 13 | ## 学习任务 14 | 15 | * 看这篇文章 [阅读axios源码,发现了这些实用的基础工具函数](https://juejin.cn/post/7042610679815241758 "https://juejin.cn/post/7042610679815241758"),看源码。 16 | * [github.com/axios/axios](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Faxios%2Faxios "https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Faxios%2Faxios") 17 | 18 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172386546358681611) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/20-深入掘金:💸 如何在掘金投放广告.md: -------------------------------------------------------------------------------- 1 | # 深入掘金:💸 如何在掘金投放广告 2 | 3 | ## 商业广告位 4 | 5 | 我们有丰富的商业广告合作方案,广告位包含但不限于: 6 | 7 | * 推荐信息流内 8 | * 网站侧边栏 9 | * 文章侧边栏豆腐块 10 | * 移动应用启动页 11 | * 移动应用发现页 12 | * 浏览器插件位 13 | 14 | 等等多个广告位置 15 | 16 | ## 商务合作 17 | 18 | 除了单纯的广告合作,我们还提供多种的商务服务,包含但不限于: 19 | 20 | * 技术沙龙 21 | * 技术大会 22 | * 技术内容传播 23 | * 招聘服务 24 | * 技术征文 25 | * 大型文档翻译 26 | 27 | 等等 28 | 29 | ## 联系我们 30 | 31 | 如果您对我们的商务合作很感兴趣,您可以访问我们的[商务页面](https://bd.juejin.cn "https://bd.juejin.cn")或者联系我们: 32 | 33 | * 发送邮件到 `bd@xitu.io` 34 | * 您也可以直接填写需求,我们会第一时间回复:[需求问卷](https://link.juejin.cn?target=https%3A%2F%2Fwj.qq.com%2Fs%2F1165537%2Fb638 "https://wj.qq.com/s/1165537/b638") 35 | 36 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795384442894) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/8-前端|为什么 Vue2 this 能够直接获取到 data 和 methods.md: -------------------------------------------------------------------------------- 1 | # 前端|为什么 Vue2 this 能够直接获取到 data 和 methods 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 如何学习调试 vue2 源码 10 | 2. data 中的数据为什么可以用 this 直接获取到 11 | 3. methods 中的方法为什么可以用 this 直接获取到 12 | 4. 学习源码中优秀代码和思想,投入到自己的项目中 13 | 14 | ## 学习任务 15 | 16 | * **没使用过vue2的也可以学习**,有很多基础知识可以复习巩固,比如:构造函数 this 指向 call、bind、apply Object.defineProperty 17 | * 参考文章:[为什么 Vue2 this 能够直接获取到 data 和 methods ? 源码揭秘!](https://juejin.cn/post/7010920884789575711 "https://juejin.cn/post/7010920884789575711") 18 | * 自己动手学会调试vue2源码。 19 | * 将笔记文章链接发在该章节评论区。 20 | 21 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7171799801074450470) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/23-前端|create-vue Vue 团队公开的全新脚手架工具.md: -------------------------------------------------------------------------------- 1 | # 前端|create-vue Vue 团队公开的全新脚手架工具 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习任务 8 | 9 | * 学习 npm init vue@3 npx 等,学会create-vue使用和原理 10 | * 我的掘金文章 [juejin.cn/post/701834…](https://juejin.cn/post/7018344866811740173 "https://juejin.cn/post/7018344866811740173") 11 | * * 按照我文章的配置环境和调试源码的方法调试学习 12 | * 最终可以简单输出笔记 13 | * 也可以参考 upupming 优秀笔记 [www.yuque.com/ruochuan12/…](https://link.juejin.cn?target=https%3A%2F%2Fwww.yuque.com%2Fruochuan12%2Fgroup16%2Fispvpm "https://link.juejin.cn?target=https%3A%2F%2Fwww.yuque.com%2Fruochuan12%2Fgroup16%2Fispvpm") 14 | * 等等 15 | 16 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176148754586665016) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/31-前端|open 打开浏览器.md: -------------------------------------------------------------------------------- 1 | # 前端|open 打开浏览器 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 电脑竟然乖乖的帮我打开了浏览器原理和源码实现 10 | 2. 学会使用 Node.js 强大的 child\_process 模块 11 | 3. 学会调试学习源码 12 | 4. 等等 13 | 14 | ## 参考资料 15 | 16 | * [每次启动项目的服务时,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!](https://juejin.cn/post/7026505183819464734 "https://juejin.cn/post/7026505183819464734") 17 | * 克隆项目,按照我的文章要求,调试源码学习,最终提交笔记。 18 | * git clone [github.com/lxchuan12/o…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-analysis "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-analysis").git 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7178739821878181926) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/22-前端|element 初始化组件功能.md: -------------------------------------------------------------------------------- 1 | # 前端|element 初始化组件功能 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 学会调试学习源码 10 | 2. element-ui 如何初始化新的组件 11 | 3. 可以学以致用应用到自己开发的项目中,比如新增页面等 12 | 4. 等等 13 | 14 | ## 学习任务 15 | 16 | * [每次新增页面复制粘贴?100多行源码的 element-ui 新增组件功能告诉你减少重复工作](https://juejin.cn/post/7031331765482422280 "https://juejin.cn/post/7031331765482422280") 17 | * 克隆项目,按照我的文章要求,调试源码学习,最终提交笔记。 18 | * git clone [github.com/lxchuan12/e…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Felement-analysis.git "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Felement-analysis.git") 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176145605423530044) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/33-前端|delay 带取消功能的延迟函数.md: -------------------------------------------------------------------------------- 1 | # 前端|delay 带取消功能的延迟函数 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 学会如何实现一个比较完善的 delay 函数 10 | 2. 学会使用 AbortController 实现取消功能 11 | 3. 学会面试常考 axios 取消功能实现 12 | 4. 等等 13 | 14 | ## 学习任务 15 | 16 | * 参考文章:[面试官:请手写一个带取消功能的延迟函数,axios 取消功能的原理是什么](https://juejin.cn/post/7042461373904715812 "https://juejin.cn/post/7042461373904715812") 17 | * 克隆文章中的项目学习 18 | * 学习源码 [github.com/sindresorhu…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fdelay%2Fblob%2Fmain%2Findex.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fdelay%2Fblob%2Fmain%2Findex.js") 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7178740343133700107) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/28-前端|一行代码统一规范 包管理器.md: -------------------------------------------------------------------------------- 1 | # 前端|一行代码统一规范 包管理器 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 如何学习调试源码 10 | 2. 学会 npm 钩子 11 | 3. 学会 "preinstall": "npx only-allow pnpm" 一行代码统一规范包管理器 12 | 4. 学到 only-allow 原理 13 | 5. 等等 14 | 15 | ## 学习任务 16 | 17 | * [从 vue3 和 vite 源码中,我学到了一行代码统一规范团队包管理器的神器](https://juejin.cn/post/7033560885050212389 "https://juejin.cn/post/7033560885050212389") 18 | * 克隆项目,按照我的文章要求,调试源码学习,最终提交笔记。 19 | * git clone [github.com/lxchuan12/o…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fonly-allow-analysis.git "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fonly-allow-analysis.git") 20 | 21 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176615043595763724) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/1-谭待:大会致辞.md: -------------------------------------------------------------------------------- 1 | # 谭待:大会致辞 2 | 3 | ![幻灯片1.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d9535219843e4eeebcf6c3e2276057d0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60f9b8fa57c64a029045fac2fad3313c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b8b3309c1b24996bd8999af98d129da~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0773185062244d9a9b96bf60e39fa952~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/445542eeb00b40ee8d94e3f990db9a4f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127192279898390567) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/8-内容变更记录.md: -------------------------------------------------------------------------------- 1 | # 内容变更记录 2 | 3 | ## 2021 4 | 5 | **06.18 :** 目前,作者在平台的收入将继续实行税费代缴,分成比例为作者70%,平台30%。 6 | 7 | ## 2020 8 | 9 | **01.12 :** 未来的小册将致力于创作者变现,更多的激励策略正在策划中。 10 | 11 | ## 2019 12 | 13 | **09.12 :** 在小册即将上架的前夕,跟财务和税务对接,作者在平台的收入将继续实行税费代缴,分成比例为作者70%,平台30%。 14 | 15 | **03.22 :** 详细描述了小册发布流程的介绍文字,帮助作者更好地理解小册从申请到写作、再到发布的整个流程。具体可见:[如何使用掘金发小册](https://juejin.cn/book/6844723704639782920/section/6844723704753029133 "https://juejin.cn/book/6844723704639782920/section/6844723704753029133") 16 | 17 | **03.01 :** 由于 19 年新税法的发布,平台将对稿费产生相关的税实行代扣代缴,分成调整为作者 50% ,平台 50% 。3 月 1 日之前申请的小册分成策略不变。具体可见:[如何定价并正式发布售卖小册](https://juejin.cn/editor/book/59e414a5518825541b03ce66/section/59e41504f265da43195551aa "https://juejin.cn/editor/book/59e414a5518825541b03ce66/section/59e41504f265da43195551aa") 18 | 19 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704761417742) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/20-前端|揭秘 create-vite 原理.md: -------------------------------------------------------------------------------- 1 | # 前端|揭秘 create-vite 原理 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * 源码:[github.com/vitejs/vite…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvitejs%2Fvite%2Fblob%2FHEAD%2Fpackages%2Fcreate-vite%2Findex.js "https://github.com/vitejs/vite/blob/HEAD/packages/create-vite/index.js") 10 | * create-vite 不到400行代码; 11 | * 可以学会如何写一个脚手架等等; 12 | * **注意:如果克隆的最新的代码(最新的create-vite已升级为 ts),按照我文中的方式不能调试。推荐使用**`npx esno src/index.ts`**调试源码。** 13 | 14 | ### 参考资料 15 | 16 | * 参考学习若川的文章,按照文章克隆源码,调试学习,写笔记 17 | * [《vite 3.0 都发布了,经常初始化 vite 项目,却不知 create-vite 原理?揭秘!》](https://juejin.cn/post/7125199469796130853 "https://juejin.cn/post/7125199469796130853") 18 | 19 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169414471885488136) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/9-前端|yocto-queue 队列 链表.md: -------------------------------------------------------------------------------- 1 | # 前端|yocto-queue 队列 链表 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习任务 8 | 9 | * [github.com/sindresorhu…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fyocto-queue "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fyocto-queue") 10 | * github1s: [github1s.com/sindresorhu…](https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Fsindresorhus%2Fyocto-queue%2Fblob%2FHEAD%2Findex.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Fsindresorhus%2Fyocto-queue%2Fblob%2FHEAD%2Findex.js") 11 | * yocto-queue 源码行数不多, 67 行 12 | * 学习 `Symbol.iterator` 的使用场景 13 | * 可以克隆代码下来,关注测试用例,自己多通过测试用例调试 14 | * 学习链表和数组的区别,时间复杂度 15 | 16 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172379618341552161) -------------------------------------------------------------------------------- /.github/workflows/contributor-help.yml: -------------------------------------------------------------------------------- 1 | name: Contributor 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 * * *' 6 | 7 | jobs: 8 | contributor: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@master 12 | 13 | - uses: actions-cool/contributor-helper@v1 14 | with: 15 | token: ${{ secrets.GITHUB_TOKEN }} 16 | style: 'simple' 17 | update-files: 'README.md' 18 | update-places: '/' 19 | 20 | - name: Commit and push if changed 21 | run: |- 22 | git diff 23 | git config --global user.email "actions@github.com" 24 | git config --global user.name "github-actions" 25 | git pull 26 | git add -A 27 | git commit -m "🤖 docs: Auto update contributors" || exit 0 28 | git push 29 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/6-了解掘金:📖 掘金术语.md: -------------------------------------------------------------------------------- 1 | # 了解掘金:📖 掘金术语 2 | 3 | 在更详细地了解掘金之前,我们有必要给大家介绍一下属于掘金的一些特别的掘金术语。这些词汇、文字是掘金的用户们经过长期的贡献和积累一点点营造出来的,也是大家未来在某处彼此相认的法宝! 4 | 5 | ## 基本语法 6 | 7 | * 掘友:掘金的用户对彼此的称呼(自此,我在后面都用掘友来表达掘金用户哦) 8 | * 小编:掘金的日常管理者,用以推荐优质内容、屏蔽错误内容、维护社区日常秩序 9 | * 掘力值(Juejin Power / JP):掘友们在掘金的累计贡献值 10 | 11 | ## 进阶语法 12 | 13 | * 掘学:掘友们经过多年的学习和历练掌握的各项技术 14 | * Panfish:掘金吉祥物 ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a79b2cf6a4304a16a2b4e7a981983e7b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 15 | * [闰土](https://juejin.im/user/360295545446525 "https://juejin.im/user/360295545446525"):掘友们挚爱的掘金当家英短🐱,也可以叫他「土土」,可以来友情投食哦 ![土土](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dc56fc9dd1ab4b75b6f0b6bc32e4b896~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ## 高深语法 18 | 19 | * 驳学:进入到技术探讨的深入层次,互相驳斥对方观点 20 | * 暗号:子非猿,安知掘金之乐也 21 | 22 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795376037902) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/7-使用掘金:👤 掘金的账号系统.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:👤 掘金的账号系统 2 | 3 | ## 注册、登录 4 | 5 | 掘金支持多种注册方式 6 | 7 | * 手机号 8 | * 第三方登录:微博、微信、GitHub 9 | 10 | 根据国家法律法规《[网络安全法](https://link.juejin.cn?target=http%3A%2F%2Fwww.cac.gov.cn%2F2016-11%2F07%2Fc_1119867116.htm "http://www.cac.gov.cn/2016-11/07/c_1119867116.htm")》,您需要绑定手机号后才可在掘金社区内发布内容。因此,我们会要求您绑定您的手机号。 11 | 12 | ![登录掘金账号](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0dd3149e7fb54f7ea88759d850be008b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 13 | 14 | ```! 15 | 未绑定手机号的用户可以阅读、点赞、收藏、关注,但是您无法在社区里生产公共内容,如评论、文章、沸点等 16 | ``` 17 | 18 | ```! 19 | 部分老用户依然可以使用邮箱登录,但是如果需要生产公共内容,仍需要绑定手机号 20 | ``` 21 | 22 | ## 个人账户设置 23 | 24 | * [个人资料](https://juejin.cn/user/settings/profile "https://juejin.cn/user/settings/profile"):修改个人信息 25 | * [账号关联](https://juejin.cn/user/settings/account "https://juejin.cn/user/settings/account"):配置、删除各个关联账号 26 | 27 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795376054285) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/27-前端| js-cookie.md: -------------------------------------------------------------------------------- 1 | # 前端| js-cookie 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. js-cookie 源码 10 | 2. 了解 cookie、localstorage、sessionStorage 的区别 11 | 3. 等等 12 | 13 | ## 学习任务 14 | 15 | * 参考文章:[github.com/haixiangyan…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fhaixiangyan%2Fmy-js-cookie "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fhaixiangyan%2Fmy-js-cookie") 16 | * 学习 [js-cookie](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjs-cookie%2Fjs-cookie "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjs-cookie%2Fjs-cookie") 源码 17 | * 仓库:[github.com/js-cookie/j…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjs-cookie%2Fjs-cookie "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjs-cookie%2Fjs-cookie") 18 | 19 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176615016903213088) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/17-使用掘金:👩‍🎓字学模块介绍.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:👩‍🎓字学模块介绍 2 | 3 | ## 字学版块 4 | 5 | 字学是字节跳动联合掘金为学生用户打造的专属平台,旨在让学生用户通过自我学习获得成长,字学将提供知识、技能、品格这三个方面的综合能力培养,全面提升学生的IT职业胜任力。 6 | 7 | 在字学,你可以亲切地称呼其他人为“学友”,与“学友”们一同自在地学习,参加“字学”的活动及课程就能获得相应的学习卡,解锁不同权益。 8 | 9 | 未来,字学还将联合国内外多所顶级高校联合开发“IT职业胜任力课程体系”,构建胜任力培养模型,另外,我们还会举办多种线下实践活动,不仅有玩法多样的`技术训练营`、备受广大学生喜爱的`Byte Camp`,还有新奇有趣的`字节跳动OpenDay`等你线下来体验! 10 | 11 | 在字学,字在学习,跳动青春 。 12 | 13 | ## 学习卡 14 | 15 | 在字学里我们会使用学习卡来计算一个学生在字学版块的活跃程度。当用户积极签到并参加字学的各类活动、课程时,学习卡就会不断增加,累积到一定数值就可以兑换相应权益。 16 | 17 | 设置学习卡的目的是为了让主动学习的学生可以获得更多实践机会,学生可以在“我的主页”上看到自己的学习卡数量。 18 | 19 | ## 学习卡的价值 20 | 21 | 1. 学习卡代表着学生在字学的活跃程度。学习卡越多,证明自学能力越强。 22 | 2. 学习卡累积到不同量级,就可以解锁不同权限,包括但不限于获得字节周边礼品、以及字节活动、实践项目的直接参与资格等。 23 | 24 | ## 学习卡如何获得 25 | 26 | 1. 积极报名参加字学的活动,根据活动的难易程度增加不同的学习卡数量。 27 | 2. 主动学习字学的课程,每学习完一门课程就会获得一定数量的学习卡。 28 | 3. 本校学生参与字学的线下课程打卡,即可获得相应数量的学习卡。 29 | 4. 贡献优质文章且文章被推荐至首页,即可获得一定数量的学习卡。 30 | 31 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6891866728775548943) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/12-前端|await-to-js 如何优雅的捕获 await 的错误.md: -------------------------------------------------------------------------------- 1 | # 前端|await-to-js 如何优雅的捕获 await 的错误 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 如何学习调试源码 10 | 2. await-to-js 使用和原理 11 | 3. 可以多看测试用例 12 | 13 | ## 学习任务 14 | 15 | * 读的库: [github.com/scopsy/awai…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fscopsy%2Fawait-to-js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fscopsy%2Fawait-to-js") 代码较少,简单易读,学完也能用上。 16 | * 官方文章:[How to write async await without try-catch blocks in Javascript](https://link.juejin.cn?target=https%3A%2F%2Fblog.grossman.io%2Fhow-to-write-async-await-without-try-catch-blocks-in-javascript%2F "https://link.juejin.cn?target=https%3A%2F%2Fblog.grossman.io%2Fhow-to-write-async-await-without-try-catch-blocks-in-javascript%2F") 17 | * 写笔记发布在掘金,再在本章节下评论放上提交笔记的链接。 18 | 19 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172385155313565700) -------------------------------------------------------------------------------- /.github/workflows/clear.yml: -------------------------------------------------------------------------------- 1 | name: claer 2 | on: 3 | schedule: 4 | - cron: '30 06 * * *' 5 | push: 6 | workflow_dispatch: 7 | 8 | jobs: 9 | clean: 10 | name: Clean 11 | runs-on: ubuntu-latest 12 | timeout-minutes: 60 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v2 16 | with: 17 | repository: Apocalypsor/Workflows-Cleaner 18 | - name: Set up Python 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: '3.9' 22 | - name: Install pipenv 23 | run: python -m pip install --upgrade pipenv wheel 24 | - name: Install dependencies 25 | run: | 26 | pipenv requirements > requirements.txt 27 | pip install -r requirements.txt 28 | - name: Clean 29 | env: 30 | GITHUB_REPO: ${{ github.repository }} 31 | GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} 32 | EXPIRE_TIME: 12h 33 | run: python run.py 34 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/16-前端|p-limit 限制并发数.md: -------------------------------------------------------------------------------- 1 | # 前端|p-limit 限制并发数 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习任务 8 | 9 | * [github.com/sindresorhu…](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fp-limit "https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Fp-limit") 10 | * github1s: [github1s.com/sindresorhu…](https://link.juejin.cn/?target=https%3A%2F%2Fgithub1s.com%2Fsindresorhus%2Fp-limit%2Fblob%2Fmain%2Findex.js "https://link.juejin.cn/?target=https%3A%2F%2Fgithub1s.com%2Fsindresorhus%2Fp-limit%2Fblob%2Fmain%2Findex.js") 11 | * p-limit 源码行数不多, 68 行 12 | * 学习 p-limit 的使用场景 13 | * 可以克隆代码下来,关注测试用例,自己多调试 14 | 15 | ## 参考文章 16 | 17 | [Node.js 并发能力总结](https://link.juejin.cn/?target=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2F6LsPMIHdIOw3KO6F2sgRXg "https://link.juejin.cn/?target=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2F6LsPMIHdIOw3KO6F2sgRXg") 18 | 19 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176118573508051000) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/29-前端|项目中常用的 .env 文件原理是什么?如何实现?.md: -------------------------------------------------------------------------------- 1 | # 前端|项目中常用的 .env 文件原理是什么?如何实现? 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 学会 dotenv 原理和实现 10 | 2. 学会使用 fs模块 获取文件并解析 11 | 3. 等等 12 | 13 | ## 学习任务 14 | 15 | * 先阅读我的文章:[面试官:项目中常用的 .env 文件原理是什么?如何实现?](https://juejin.cn/post/7045057475845816357 "https://juejin.cn/post/7045057475845816357") 16 | * 源码地址:[github.com/motdotla/do…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmotdotla%2Fdotenv%2Fblob%2Fmaster%2Flib%2Fmain.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmotdotla%2Fdotenv%2Fblob%2Fmaster%2Flib%2Fmain.js") 17 | * github1s访问更方便 [github1s.com/motdotla/do…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmotdotla%2Fdotenv%2Fblob%2Fmaster%2Flib%2Fmain.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmotdotla%2Fdotenv%2Fblob%2Fmaster%2Flib%2Fmain.js") 18 | * 看文章,看源码,写笔记,交流讨论。 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176615043516563460) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/5-前端|omit.js 剔除对象中的属性.md: -------------------------------------------------------------------------------- 1 | # 前端|omit.js 剔除对象中的属性 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * omit.js 剔除对象中的属性 10 | * github仓库 [github.com/benjycui/om…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fbenjycui%2Fomit.js "https://github.com/benjycui/omit.js") 主要看这个。然后写笔记写文章记录。 11 | * npm [www.npmjs.com/package/omi…](https://link.juejin.cn?target=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fomit.js "https://www.npmjs.com/package/omit.js") 12 | * **这期比较简单,主要学会通过测试用例调试源码。** 可以多关注怎么发布npm包的、commonjs、esm、测试用例 、ts 等(也可以不关注)。 13 | * 建议克隆代码下来,关注测试用例,自己多通过测试用例调试,**自己调试过才能够学会,感受更深一些**。 14 | 15 | ### 参考资料 16 | 17 | * 关于如何调试看这篇:[新手向:前端程序员必学基本技能——调试JS代码](https://juejin.cn/post/7030584939020042254 "https://juejin.cn/post/7030584939020042254") 18 | * [若川说”可能是历史上最简单的一期omit.js”源码共读,但我学到了这些 - 掘金](https://juejin.cn/post/7119702439355220004 "https://juejin.cn/post/7119702439355220004") 19 | 20 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169420227510272031) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/13-前端|promisify.md: -------------------------------------------------------------------------------- 1 | # 前端|promisify 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. Node 加载采用什么模块 10 | 2. 获取 git 仓库所有 tags 的原理 11 | 3. 学会调试看源码 12 | 4. 学会面试高频考点 promisify 的原理和实现 13 | 5. 等等 14 | 15 | ## 参考资料 16 | 17 | * [从22行有趣的源码库中,我学到了 callback promisify 化的 Node.js 源码实现](https://juejin.cn/post/7028731182216904740 "https://juejin.cn/post/7028731182216904740") 18 | 19 | * 克隆项目,按照我的文章要求,调试源码学习,最终提交笔记。 20 | 21 | * git clone [github.com/lxchuan12/r…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fremote-git-tags-analysis.git "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fremote-git-tags-analysis.git") 22 | 23 | * 写笔记发布在掘金,再在本章节下评论放上提交笔记的链接。 24 | 25 | 作者:若川 26 | 链接:[juejin.cn/post/708315…](https://juejin.cn/post/7083151186137251876 "https://juejin.cn/post/7083151186137251876") 27 | 来源:稀土掘金 28 | 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 29 | 30 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172387644867870723) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/7-前端|vue2工具函数.md: -------------------------------------------------------------------------------- 1 | # 前端|vue2工具函数 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. Vue2 源码 shared 模块中的几十个实用工具函数 10 | 2. 如何学习源码中优秀代码和思想,投入到自己的项目中 11 | 3. 如何学习 JavaScript 基础知识,会推荐很多学习资料 12 | 4. 我的一些经验分享 13 | 5. 等等 14 | 15 | ## 学习任务 16 | 17 | * **没使用过vue2的也可以学习**,有很多基础知识可以复习巩固。 18 | * 看文章:[初学者也能看懂的 Vue2 源码中那些实用的基础工具函数](https://juejin.cn/post/7024276020731592741 "https://juejin.cn/post/7024276020731592741") 19 | * 在线vscode 查看 [github1s.com/vuejs/vue/b…](https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Fvuejs%2Fvue%2Fblob%2Fdev%2Fsrc%2Fshared%2Futil.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Fvuejs%2Fvue%2Fblob%2Fdev%2Fsrc%2Fshared%2Futil.js") 20 | * 打包后的工具函数 [github.com/vuejs/vue/b…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvuejs%2Fvue%2Fblob%2Fdev%2Fdist%2Fvue.js%23L14-L379 "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvuejs%2Fvue%2Fblob%2Fdev%2Fdist%2Fvue.js%23L14-L379") 21 | 22 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169477436118138888) -------------------------------------------------------------------------------- /docs/.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | import { h } from 'vue' 2 | import { useData } from 'vitepress' 3 | import Theme from 'vitepress/theme' 4 | import 'vitepress-plugin-nprogress/lib/css/index.css' 5 | import vitepressLifeProgress from 'vitepress-plugin-life-progress' 6 | import 'vitepress-plugin-life-progress/lib/css/index.css' 7 | import vitepressBackToTop from 'vitepress-plugin-back-to-top' 8 | import 'vitepress-plugin-back-to-top/dist/style.css' 9 | import googleAnalytics from 'vitepress-plugin-google-analytics' 10 | 11 | export default { 12 | ...Theme, 13 | Layout: () => { 14 | const props: Record = {} 15 | // 获取 frontmatter 16 | const { frontmatter } = useData() 17 | 18 | /* 添加自定义 class */ 19 | if (frontmatter.value?.layoutClass) { 20 | props.class = frontmatter.value.layoutClass 21 | } 22 | 23 | return h(Theme.Layout, props) 24 | }, 25 | setup() { 26 | vitepressLifeProgress() 27 | }, 28 | enhanceApp: (ctx) => { 29 | googleAnalytics({ 30 | id: 'G-DTRHS9NHB5', 31 | }), 32 | vitepressBackToTop({ 33 | threshold: 300, 34 | }) 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/23-陈婧文:智能座舱 AI 推荐.md: -------------------------------------------------------------------------------- 1 | # 陈婧文:智能座舱 AI 推荐 2 | 3 | ![幻灯片1.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b3f1eaee9584c69a0f29b076b412354~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9d12abde290b42aeaf91b72a171b251f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ec497f7e9bc43d39368bfc523573b3c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9d81a36d7c25437b9c5dcd0c1150dde7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2d59841ea3b5449499ba85e62127b534~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8595399bd1834e72bb90ac047ee98a44~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/79dd15e01222498abd724e27011fa8ee~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127539272344666150) -------------------------------------------------------------------------------- /src/spider/task/common.ts: -------------------------------------------------------------------------------- 1 | export const bookRegUrl = `https://api.juejin.cn/booklet_api/v1/booklet/get?aid=2608&uuid=` // 小册的接口 2 | export const bookThumbnailUrl = `https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/` // 小册的封面图 3 | export const bookSectionListSelector = '.section-list' // 小册的章节列表选择器 4 | export const bookSectionContentSelector = '.section-content' // 小册的章节内容选择器 5 | export const bookSectionTitleSelector = '.section-title' // 小册的章节标题选择器 6 | export const bookSectionAnchorSelector = '.section-anchor' // 小册的章节锚点选择器 7 | export const bookSectionAnchorActiveSelector = '.section-anchor-active' // 小册的章节锚点激活选择器 8 | export const anchorTagsSelector = `.title-line.text-line-2 > a` // 小册的锚点选择器 9 | export const waitElement = 'div[data-book-id=' // 等待元素 10 | export const mdContentSelector = '.markdown-body' // markdown内容选择器 11 | export const ignoreStyle = /)<[^<]*)*<\/style>/gi // 忽略的样式 12 | export const courseUrl = 'https://juejin.cn/my-course' // 我的小册地址 13 | export const juejinUrl = 'https://juejin.cn' // 掘金地址 14 | export const juejinBookRegurl = `https://api.juejin.cn/booklet_api/v1/booklet/bookletshelflist` // 掘金小册地址 15 | export const juejinBookSectionUrl = `https://juejin.cn/book/` // 掘金小册章节地址 16 | -------------------------------------------------------------------------------- /.github/workflows/images.yml: -------------------------------------------------------------------------------- 1 | name: images 2 | on: 3 | pull_request: 4 | # Run Image Actions when JPG, JPEG, PNG or WebP files are added or changed. 5 | # See https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths for reference. 6 | paths: 7 | - '**.jpg' 8 | - '**.jpeg' 9 | - '**.png' 10 | - '**.webp' 11 | jobs: 12 | images: 13 | # Only run on Pull Requests within the same repository, and not from forks. 14 | if: github.event.pull_request.head.repo.full_name == github.repository 15 | name: calibreapp/image-actions 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Checkout Repo 19 | uses: actions/checkout@v2 20 | 21 | - name: Compress Images 22 | uses: calibreapp/image-actions@main 23 | with: 24 | # The `GITHUB_TOKEN` is automatically generated by GitHub and scoped only to the repository that is currently running the action. By default, the action can’t update Pull Requests initiated from forked repositories. 25 | # See https://docs.github.com/en/actions/reference/authentication-in-a-workflow and https://help.github.com/en/articles/virtual-environments-for-github-actions#token-permissions 26 | githubToken: ${{ secrets.GITHUB_TOKEN }} 27 | -------------------------------------------------------------------------------- /src/utils/request/index.ts: -------------------------------------------------------------------------------- 1 | import https from 'node:https' 2 | import fs from 'node:fs' 3 | import puppeteer from 'puppeteer' 4 | import { logger } from '@/utils' 5 | 6 | export async function downloadImage(imageUrl: string, savePath: string): Promise { 7 | return new Promise((resolve, reject) => { 8 | https 9 | .get(imageUrl, (response) => { 10 | const fileStream = fs.createWriteStream(savePath) 11 | response.pipe(fileStream) 12 | fileStream.on('finish', () => { 13 | logger.info(`已下载图片: ${savePath}`) 14 | fileStream.close() 15 | resolve() 16 | }) 17 | }) 18 | .on('error', (error) => { 19 | logger.error(`下载图片失败: ${savePath}`, error) 20 | reject(error) 21 | }) 22 | }) 23 | } 24 | 25 | export async function saveElementAsAVIF( 26 | url: string, 27 | selector: string, 28 | savePath: string, 29 | ): Promise { 30 | const browser = await puppeteer.launch() 31 | const page = await browser.newPage() 32 | await page.goto(url) 33 | 34 | const element = await page.$(selector) 35 | if (element) { 36 | await element.screenshot({ 37 | path: savePath, 38 | type: 'avif', 39 | omitBackground: true, 40 | }) 41 | logger.info(`已保存图片: ${savePath}`) 42 | } else { 43 | logger.error('未找到匹配的元素') 44 | } 45 | 46 | await browser.close() 47 | } 48 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | cookie='csrf_session_id=32eaae67d0c4013bef6c90191645e596; _tea_utm_cache_2608=undefined; __tea_cookie_tokens_2608=%257B%2522web_id%2522%253A%25227261198715104265769%2522%252C%2522user_unique_id%2522%253A%25227261198715104265769%2522%252C%2522timestamp%2522%253A1690629589870%257D; passport_csrf_token=7a069b90cd922c74ad13dfc3b70887e3; passport_csrf_token_default=7a069b90cd922c74ad13dfc3b70887e3; n_mh=MPHRKGEs6Mdv8j9-lYQ_xItbJLeVCy02zT61y_-m6jI; sid_guard=e28c4599aa284c0928f62362384c4902%7C1690629626%7C31536000%7CSun%2C+28-Jul-2024+11%3A20%3A26+GMT; uid_tt=1d82efcaa8f700f8b9d822cecdb4d9ed; uid_tt_ss=1d82efcaa8f700f8b9d822cecdb4d9ed; sid_tt=e28c4599aa284c0928f62362384c4902; sessionid=e28c4599aa284c0928f62362384c4902; sessionid_ss=e28c4599aa284c0928f62362384c4902; sid_ucp_v1=1.0.0-KDczOTE2MDJkNGJiZDNiNmU0YWFiYTdiYmFmZTdmMWU5OTQwNmRiZjYKFwjYidDfv824BxD665OmBhiwFDgCQO8HGgJscSIgZTI4YzQ1OTlhYTI4NGMwOTI4ZjYyMzYyMzg0YzQ5MDI; ssid_ucp_v1=1.0.0-KDczOTE2MDJkNGJiZDNiNmU0YWFiYTdiYmFmZTdmMWU5OTQwNmRiZjYKFwjYidDfv824BxD665OmBhiwFDgCQO8HGgJscSIgZTI4YzQ1OTlhYTI4NGMwOTI4ZjYyMzYyMzg0YzQ5MDI; store-region=cn-zj; store-region-src=uid; msToken=wwcEsHQoYxMwK_qRFiRrp8u6GAB-1Yu9uhNCduCFcvf1isgc8DDcIho-qz-niiWfrGKnIU-4ecnMxhJQiuAgv8ujt-le3NcaRSk8R1D5i0CrRoFa8x4X_eg_JfeefA==' 2 | isLog=true 3 | storeDir=docs 4 | course=https://juejin.cn/book/6844723704639782920 5 | spiderAll=false 6 | filetype='md' 7 | headless=true 8 | addIndex=false 9 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/18-前端|如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等.md: -------------------------------------------------------------------------------- 1 | # 前端|如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * 参考学习文章[《还在用开发者工具上传小程序? 快来试试 miniprogram-ci 提效摸鱼》](https://juejin.cn/post/7124467547163852808 "https://juejin.cn/post/7124467547163852808"),按照文章**只学 release-it 部分(也就是第7小节)** ,非常通用。生成 changelog 、打 tag、自动管理版本号 10 | * 最后可以发一个简单的包到 npm 上,可以使用 npx xxx -v 显示版本,作为结果。有能力觉得需要,也可以学我的这篇文章的其他部分。 11 | * npx @ruochuan/mini-ci -v 查看版本 12 | * npx @ruochuan/mini-ci -h 查看帮助信息 13 | * 可以参考我的仓库,我是如何发布包的~ 14 | * [github.com/lxchuan12/m…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fmini-ci "https://github.com/lxchuan12/mini-ci") 15 | * 还可以参考这篇文章:[图文结合简单易学的npm 包的发布流程](https://juejin.cn/post/7125709933709885448 "https://juejin.cn/post/7125709933709885448") 16 | 17 | ### 辅助工具 18 | 19 | 基于微信小程序 [`miniprogram-ci`](https://link.juejin.cn?target=https%3A%2F%2Fdevelopers.weixin.qq.com%2Fminiprogram%2Fdev%2Fdevtools%2Fci.html "https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html") 开发的**更快速、更方便且支持多选等功能**的小程序上传、预览自动化工具:[github.com/lxchuan12/m…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fmini-ci "https://github.com/lxchuan12/mini-ci") 20 | 21 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169115927999414279) -------------------------------------------------------------------------------- /docs/.vitepress/settings/themeConfig.ts: -------------------------------------------------------------------------------- 1 | import type { DefaultTheme } from 'vitepress' 2 | import { nav, sidebar, site } from '../settings' 3 | 4 | export const themeConfig: DefaultTheme.Config = { 5 | outlineTitle: '本页目录', 6 | lastUpdatedText: '上次更新', 7 | i18nRouting: false, 8 | logo: 'https://www.h7ml.cn/logo.png?q=juejinBooksSpider', 9 | nav: [...nav, ...site], 10 | sidebar, 11 | carbonAds: { 12 | code: 'your-carbon-code', 13 | placement: 'your-carbon-placement', 14 | }, 15 | outline: { 16 | level: 'deep', 17 | label: '本页目录', 18 | }, 19 | editLink: { 20 | pattern: 'https://github.com/h7ml/juejinbooksspider/edit/master/docs/:path', 21 | text: '在 GitHub 上编辑此页', 22 | }, 23 | 24 | socialLinks: [{ icon: 'github', link: 'https://github.com/h7ml/juejinbooksspider' }], 25 | darkModeSwitchLabel: '外观', 26 | returnToTopLabel: '返回顶部', 27 | 28 | /* Algolia DocSearch 配置 */ 29 | // algolia, 30 | 31 | docFooter: { 32 | prev: '上一篇', 33 | next: '下一篇', 34 | }, 35 | footer: { 36 | message: 37 | 'Released under the MIT License.', 38 | copyright: 39 | '51la网站统计
Copyright © 2024-present juejinbooksspider', 40 | }, 41 | } 42 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/21-前端|vue 3.2 是怎么发布的 vue-release.md: -------------------------------------------------------------------------------- 1 | # 前端|vue 3.2 是怎么发布的 vue-release 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 学会调试和看懂vue-next是怎么发布的 10 | 11 | 学习后可以优化自己实际项目的发布流程 12 | 13 | ## 学习任务 14 | 15 | 学习200余行代码,vuejs如何发布的~ 16 | 参考文章: 掘金链接:[Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?](https://juejin.cn/post/6997943192851054606 "https://juejin.cn/post/6997943192851054606") 阅读体验更好~ 17 | [github.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Frelease "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Frelease") 或者 这个链接访问更快 [github1s.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Frelease "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Frelease") 18 | 19 | 文件路径 [github.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Fvue-next%2Fscipts%2Frelease.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Fvue-next%2Fscipts%2Frelease.js") 克隆了我的仓库的小伙伴,拉取最新代码看文章 md/release。 20 | 21 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176118525973495867) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/intro.md: -------------------------------------------------------------------------------- 1 | ![1307-734@3x.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/be975524d2004f409390ad0757a2b54d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 2 | 3 | ## 活动介绍 4 | 5 | 本活动为掘金会员专属活动,主题为源码共读,每一期会邀请不同的领读员,带大家一起阅读源码~ 6 | 7 | 活动链接:[juejin.cn/post/716950…](https://juejin.cn/post/7169502488557518878 "https://juejin.cn/post/7169502488557518878") 8 | 9 | ## 本期领读员 10 | 11 | **前端**:[若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 12 | 13 | **后端**:[挖坑的张师傅](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 14 | 15 | ## 面向人群 16 | 17 | **掘金社区年度会员。** 18 | 19 | ## 活动规则 20 | 21 | 1. 本小册为本次活动的阅读资料和任务,可以根据阅读任务进行源码阅读并生产笔记; 22 | 2. 根据阅读源码任务输出相应笔记,并将笔记链接贴在相关的小册章节评论中,领读员看到后可能会评论你的文章哦; 23 | 3. 本活动为「掘金年度会员」专属活动,活动期间未成为年度会员的用户无法参与。 24 | 25 | ## 投稿规则 26 | 27 | 1. 在正文第一句加上「我正在参与掘金会员专属活动-源码共读第一期,[点击参与](https://juejin.cn/post/7169502488557518878 "https://juejin.cn/post/7169502488557518878")」,并将文章加上[「源码阅读」](https://juejin.cn/tag/%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB "https://juejin.cn/tag/%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB")的标签;; 28 | 2. 文章要求原创,内容符合掘金社区的内容标准和规范,字数不得少于500字,不得有打广告、加二维码引流和凑字数行为; 29 | 3. 如果发现有一篇非原创文章,立刻取消该作者的所有获奖资格; 30 | 4. 文章不能只贴代码,要有自己的分析思考,代码文字比不得超过70%,否则该篇文章不计数; 31 | 5. 活动期间,作者如果有刷阅读量、刷赞、刷评论等严重违反社区规范的行为,直接取消所有获奖资格。 32 | 33 | ## 源码章节 34 | 35 | * 第一章为后端任务,该章节内容涵盖了多个子任务; 36 | * 每周会更新新的任务记得关注哦; 37 | * 会员们可以通过阅读这些源码产出相关的笔记参与活动。 -------------------------------------------------------------------------------- /src/types.d.ts: -------------------------------------------------------------------------------- 1 | import { PuppeteerLaunchOptions } from 'puppeteer' 2 | 3 | import type { Browser } from 'puppeteer' 4 | 5 | // 全局变量 6 | declare global { 7 | namespace globalThis { 8 | var _browser: Browser | null 9 | } 10 | 11 | interface Window { 12 | extendsPropName: { 13 | _browser: Browser | null 14 | } 15 | } 16 | } 17 | 18 | // 导出类型 19 | export type FileFormat = 'pdf' | 'md' | 'html' | '' 20 | export interface EvConfig { 21 | // 日志记录 22 | log: string | boolean 23 | // 文件存储目录 24 | storeDirs: string 25 | // 保存cookie 26 | cookie: string 27 | // 课程 28 | course: string 29 | // 扫描所有 30 | spiderAll: string | boolean 31 | // 是否启用浏览器 32 | headless: string | boolean 33 | // 文件类型 34 | filetype: FileFormat 35 | // puppeteer launch options 36 | puppeteerOptions: PuppeteerLaunchOptions 37 | // 添加文件序号 38 | addIndex: string | boolean 39 | 40 | ignoreCourses: string[] 41 | } 42 | 43 | type UserInfo = { 44 | // 用户ID 45 | user_id: string 46 | // 用户名 47 | user_name: string 48 | // 公司名称 49 | company: string 50 | // 职位 51 | job_title: string 52 | } 53 | 54 | export type BookBaseInfo = { 55 | title: string 56 | summary: string 57 | } 58 | 59 | 60 | export type Booklet = { 61 | // 图书编号 62 | booklet_id: string 63 | // 是否购买 64 | is_buy: boolean 65 | // 是否新书 66 | is_new: boolean 67 | // 用户信息 68 | user_info: UserInfo 69 | 70 | // 71 | base_info: BookBaseInfo 72 | } 73 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/14-前端|mitt、tiny-emitter 发布订阅.md: -------------------------------------------------------------------------------- 1 | # 前端|mitt、tiny-emitter 发布订阅 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | * 了解 mitt、tiny-emitter 作用和使用场景 10 | * 应用场景: 11 | * 学习 发布订阅 设计模式 12 | * 等等 13 | 14 | ## 参考资料 15 | 16 | * [github.com/developit/m…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fdevelopit%2Fmitt "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fdevelopit%2Fmitt") 17 | * [github.com/scottcorgan…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fscottcorgan%2Ftiny-emitter "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fscottcorgan%2Ftiny-emitter") 18 | * clipboard 继承自 tiny-emitter [github.com/zenorocha/c…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fzenorocha%2Fclipboard.js%2Fblob%2Fmaster%2Fsrc%2Fclipboard.js%23L26 "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fzenorocha%2Fclipboard.js%2Fblob%2Fmaster%2Fsrc%2Fclipboard.js%23L26") 19 | * vue3事件总线 [v3.cn.vuejs.org/guide/migra…](https://link.juejin.cn?target=https%3A%2F%2Fv3.cn.vuejs.org%2Fguide%2Fmigration%2Fevents-api.html%23%25E4%25BA%258B%25E4%25BB%25B6%25E6%2580%25BB%25E7%25BA%25BF "https://link.juejin.cn?target=https%3A%2F%2Fv3.cn.vuejs.org%2Fguide%2Fmigration%2Fevents-api.html%23%25E4%25BA%258B%25E4%25BB%25B6%25E6%2580%25BB%25E7%25BA%25BF") 20 | 21 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7171463614480678951) -------------------------------------------------------------------------------- /src/utils/puppeteer/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-restricted-globals */ 2 | import type { Browser, LaunchOptions } from 'puppeteer' 3 | import puppeteer from 'puppeteer' 4 | import { logger } from '@/utils' 5 | import { evConfig } from '@/config' 6 | 7 | // 定义一个异步函数,用于获取浏览器 8 | async function getBrowser(options?: LaunchOptions): Promise { 9 | // 如果_browser不存在,则尝试启动浏览器 10 | if (!global._browser) { 11 | try { 12 | const browser = await puppeteer.launch({ 13 | ignoreDefaultArgs: ['--disable-extensions'], 14 | args: [ 15 | '--no-sandbox', 16 | '--disable-setuid-sandbox', 17 | '--use-gl=egl', 18 | '--disable-web-security', 19 | '--disable-features=IsolateOrigins,site-per-process', 20 | ], 21 | defaultViewport: { width: 2560 / 2, height: 1600 }, 22 | headless: Boolean(evConfig.headless), 23 | ...evConfig.puppeteerOptions, 24 | ...options, 25 | }) 26 | global._browser = browser 27 | } catch (error) { 28 | logger.error(error || 'puppeteer启动失败') 29 | } 30 | } 31 | 32 | // 返回_browser 33 | return global._browser || null 34 | } 35 | 36 | // 定义一个异步函数,用于关闭浏览器 37 | async function closeBrowser(): Promise { 38 | // 如果_browser存在,则关闭浏览器 39 | if (global._browser) { 40 | await global._browser.close() 41 | global._browser = null 42 | } 43 | } 44 | 45 | // 导出一个对象,包含getBrowser和closeBrowser函数 46 | export { getBrowser, closeBrowser } 47 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/11-前端|vue3 工具函数.md: -------------------------------------------------------------------------------- 1 | # 前端|vue3 工具函数 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | 重点看若川写的文章,文章中写了如何阅读源码。 8 | [初学者也能看懂的 Vue3 源码中那些实用的基础工具函数](https://juejin.cn/post/6994976281053888519 "https://juejin.cn/post/6994976281053888519") (阅读体验较好) 9 | 10 | 按照文章要求,克隆项目 `git clone https://github.com/lxchuan12/vue-next-analysis.git` ,开始学习源码,有问题在群里交流讨论,记录笔记。 11 | 不关心如何编译打包得来的js文件(非必选),**可以直接看第三部分。** 12 | 13 | 暂时不想不克隆也可以通过github访问、或者 github1s 访问。 14 | 15 | * [github.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Futils "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Futils") 16 | * [github1s.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Futils "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvue-next-analysis%2Ftree%2Fmaster%2Fmd%2Futils") 17 | 18 | ## 选学 19 | 20 | * 如何调试 vuejs 源码 21 | * 其他自己补充资料等 22 | * [为什么 Vue2 this 能够直接获取到 data 和 methods ? 源码揭秘!](https://juejin.cn/post/7010920884789575711 "https://juejin.cn/post/7010920884789575711")可以学会调试源码。 23 | * [初学者也能看懂的 Vue2 源码中那些实用的基础工具函数](https://juejin.cn/post/7024276020731592741 "https://juejin.cn/post/7024276020731592741") vue3工具函数姐妹篇,可能这篇更简单些 24 | 25 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172387070311301158) -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | import process from 'node:process' 2 | import dotenv from 'dotenv' 3 | import type { FileFormat } from '../types' 4 | import type { EvConfig } from '@/types' 5 | 6 | dotenv.config() 7 | 8 | // 解析布尔值 9 | function parseBoolean(value: string): boolean | string { 10 | if (value === 'false') { 11 | return false 12 | } 13 | if (value === 'true') { 14 | return true 15 | } 16 | return value 17 | } 18 | 19 | // 定义evConfig类型 20 | export const evConfig: EvConfig = { 21 | log: process.env.isLog ?? false, // 是否写入日志 默认为false 22 | storeDirs: process.env.storeDir ?? '', // 文件存储目录 默认为当前目录 23 | cookie: process.env.cookie ?? '', // 掘金账户cookie 若爬取的小册为免费小册,则不需要cookie 若爬取小册为已购买小册,则需要cookie。 如果你想爬那些付费且没购买的小册,那直接退出吧,这个项目不支持 24 | course: process.env.course ?? '', // 掘金小册地址 必传 25 | spiderAll: process.env.spiderAll ? parseBoolean(process.env.spiderAll) : false, // 是否爬所有已购买小册 默认为false 26 | headless: process.env.headless ? process.env.headless : false, // 是否开启无头模式 默认为true 27 | filetype: (process.env.filetype || 'md') as FileFormat, // 保存文件格式 默认为md 28 | addIndex: process.env.headless ? parseBoolean(process.env.headless) : false, // 是否添加文件序号,默认为false 29 | puppeteerOptions: { 30 | // executablePath: 'D:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', 31 | }, // puppeteer配置项 默认为空 文档参考 https://pptr.dev/browsers-api/browsers.launchoptions/ 32 | ignoreCourses: 33 | process.env.ignoreCourses 34 | ?.split(',') 35 | .map((v) => v.trim()) 36 | .filter(Boolean) ?? [], // 忽略的小册列表 37 | } 38 | -------------------------------------------------------------------------------- /.github/workflows/sync.yml: -------------------------------------------------------------------------------- 1 | name: Upstream Sync 2 | 3 | permissions: 4 | contents: write 5 | 6 | on: 7 | schedule: 8 | - cron: '0 0 * * *' # every day 9 | workflow_dispatch: 10 | inputs: 11 | timeoutStr: 12 | description: Timeout duration 13 | required: false 14 | default: '30' 15 | 16 | jobs: 17 | sync_latest_from_upstream: 18 | name: Sync latest commits from upstream repo 19 | runs-on: ubuntu-latest 20 | if: ${{ github.event.repository.fork }} 21 | 22 | steps: 23 | # Step 1: run a standard checkout action 24 | - name: Checkout target repo 25 | uses: actions/checkout@v3 26 | 27 | # Step 2: run the sync action 28 | - name: Sync upstream changes 29 | id: sync 30 | uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 31 | with: 32 | upstream_sync_repo: h7ml/juejinBooksSpider 33 | upstream_sync_branch: main 34 | target_sync_branch: main 35 | target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set 36 | 37 | # Set test_mode true to run tests instead of the true action!! 38 | test_mode: false 39 | 40 | - name: Sync check 41 | if: failure() 42 | run: | 43 | echo "::error::由于权限不足,导致同步失败(这是预期的行为),请前往仓库首页手动执行[Sync fork]。" 44 | echo "::error::Due to insufficient permissions, synchronization failed (as expected). Please go to the repository homepage and manually perform [Sync fork]." 45 | exit 1 46 | -------------------------------------------------------------------------------- /docs/.vitepress/settings/head.ts: -------------------------------------------------------------------------------- 1 | import type { HeadConfig } from 'vitepress' 2 | import { keywords } from '../../../package.json' 3 | 4 | export const head: HeadConfig[] = [ 5 | ['meta', { name: 'keywords', content: keywords.toString() }], 6 | ['meta', { name: 'baidu-site-verification', content: 'codeva-OYbCZh4rt9' }], 7 | ['meta', { name: 'theme-color', content: '#3eaf7c' }], 8 | ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }], 9 | ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }], 10 | ['link', { rel: 'apple-touch-icon', href: 'https://www.h7ml.cn/logo.png?q=juejinBooksSpider' }], 11 | [ 12 | 'link', 13 | { 14 | rel: 'mask-icon', 15 | href: 'https://www.h7ml.cn/logo.png?q=juejinBooksSpider', 16 | color: '#3eaf7c', 17 | }, 18 | ], 19 | [ 20 | 'meta', 21 | { 22 | name: 'msapplication-TileImage', 23 | content: 'https://www.h7ml.cn/logo.png?q=juejinBooksSpider', 24 | }, 25 | ], 26 | ['meta', { name: 'msapplication-TileColor', content: '#000000' }], 27 | [ 28 | 'script', 29 | { 30 | charset: 'UTF-8', 31 | id: 'LA_COLLECT', 32 | src: '//sdk.51.la/js-sdk-pro.min.js?id=K0H1mns8NCFL0WWv&ck=K0H1mns8NCFL0WWv&autoTrack=true&hashMode=true', 33 | }, 34 | ], 35 | [ 36 | 'script', 37 | { 38 | charset: 'UTF-8', 39 | id: 'LA-DATA-WIDGET', 40 | crossorigin: 'anonymous', 41 | src: 'https://v6-widget.51.la/v6/K0H1mns8NCFL0WWv/quote.js?theme=0&f=12', 42 | }, 43 | ], 44 | ] 45 | -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/6-如何保护掘金小册的内容版权.md: -------------------------------------------------------------------------------- 1 | # 如何保护掘金小册的内容版权 2 | 3 | > 盗版问题是所有内容创作者的**痛** 4 | 5 | > 但完全解决盗版问题是**不可能**的 6 | 7 | 掘金小册在设计之初就在思考如何有效地抑制内容盗版,维护内容创作者的权益,也因此做了如下设计: 8 | 9 | * 掘金小册内容只可以在掘金的产品内消费,暂时不支持 `.epub`、`.pdf`、`.mobi` 等电子书格式 10 | * 盗版往往出现于生产结束与正式发布的周期间隙中,间隙时间越长、可能产生的盗版传播就越严重。因而,掘金小册从完成提交到正式上线发售的流程非常简便,缩短这部分时间周期。 11 | * 掘金平台会帮助作者根据正规流程向 [中国版权保护中心](https://link.juejin.cn?target=http%3A%2F%2Fwww.ccopyright.com.cn%2F "http://www.ccopyright.com.cn/") DCI 登记,每本掘金小册都会得到相应的版权保护 12 | 13 | ![数字版权唯一标识符 - Digital Copyright Identifier,简称 DCI](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f29171d4e69b4fa6abd36af7378923a5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ## 掘金小册内容的著作权(版权)归属及双方权利与义务 16 | 17 | 1. 掘金小册内容的著作权(版权)归小册内容作者所有。 18 | 2. 小册内容作者保证在本协议合作期内接受掘金委托所提供的版权内容为其原创,或已经合法取得相关著作权人、表演者及其他权利人的充分有效授权,小册内容作者享有签署、履行本协议所需的一切必要许可、授权及权利。若由此产生第三方争议及纠纷或主管部门处罚的,应由小册作者自行解决处理并承担全部法律责任,若掘金平台因此遭受损失(包括但不限于律师费、公证费、诉讼费、赔偿金及和解金等)的,小册内容作者应全额赔偿。 19 | 3. 在合作协议期间(自小册上线正式发售日起至之后 3 年),掘金平台获得小册内容作者授予的**独家**线上发布、销售的权利,小册内容作者不可通过掘金之外的任何渠道、以任何形式在线出版、售卖与掘金小册内容一致或相似的内容产品。 20 | 4. **本合作协议不限制小册内容作者与传统出版机构合作出版与该小册相同或相近主题的纸质书籍。** 21 | 22 | ## 掘金小册产品的版权管理与法务追责声明 23 | 24 | 掘金小册产品版权归掘金平台(北京北比信息技术有限公司)所有,任何机构、媒体、网站或个人未经本网协议授权不得转载(或以其他任何方式)复制发表、发布,违者掘金平台将依法追究其法律责任。 25 | 26 | 1. 付费读者享有掘金小册内容的消费权利,但不可以任何形式复制、修改、传播掘金小册内容。 27 | 2. 作者在未经掘金平台的允许的情况下,不可以任何形式免费传播掘金小册内容。 28 | 3. 掘金平台在未经作者的允许的情况下,不可以任何形式转载、免费传播掘金小册内容。 29 | 30 | ### [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 31 | 32 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704757223432) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/24-前端|tdesign-vue 初始化组件.md: -------------------------------------------------------------------------------- 1 | # 前端|tdesign-vue 初始化组件 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习任务 8 | 9 | * github仓库地址 [github.com/Tencent/tde…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2FTencent%2Ftdesign-vue%2Fblob%2Fdevelop%2Fscript%2Finit%2Findex.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2FTencent%2Ftdesign-vue%2Fblob%2Fdevelop%2Fscript%2Finit%2Findex.js") 10 | * github1s: [github1s.com/Tencent/tde…](https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2FTencent%2Ftdesign-vue%2Fblob%2Fdevelop%2Fscript%2Finit%2Findex.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2FTencent%2Ftdesign-vue%2Fblob%2Fdevelop%2Fscript%2Finit%2Findex.js") 11 | * 克隆源码 12 | 13 | ```bash 14 | git clone --recurse-submodules https://github.com/Tencent/tdesign-vue.git 15 | 16 | cd tdesign-vue 17 | # 开发预览 18 | npm i # 可以用 yarn install yarn 相对更快 19 | 复制代码 20 | ``` 21 | 22 | * 主要学习这两个命令。可以查看贡献文档。 23 | * 新增组件: npm run init \[组件名\] 24 | * 删除组件:npm run init \[组件名\] del 25 | * 如果出现克隆时没有权限问题,可以修改 根目录的 .gitmodules 的 url 为 https 的 26 | 27 | ```ini 28 | [submodule "src/_common"] 29 | path = src/_common 30 | url = https://github.com/Tencent/tdesign-common.git 31 | 复制代码 32 | ``` 33 | 34 | ## 参考文章 35 | 36 | [每次新增页面复制粘贴?100多行源码的 element-ui 新增组件功能告诉你减少重复工作](https://juejin.cn/post/7031331765482422280 "https://juejin.cn/post/7031331765482422280") 37 | 38 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169108142893203487) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/25-前端|为 vite 项目自动添加 eslint 和 prettier.md: -------------------------------------------------------------------------------- 1 | # 前端|为 vite 项目自动添加 eslint 和 prettier 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * 为 vite 项目自动添加 eslint 和 prettier 10 | * github仓库地址 [github.com/tzsk/vite-p…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Ftzsk%2Fvite-pretty-lint "https://github.com/tzsk/vite-pretty-lint") 11 | * github1s: [github1s.com/tzsk/vite-p…](https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Ftzsk%2Fvite-pretty-lint "https://github1s.com/tzsk/vite-pretty-lint") 12 | * 建议克隆源码 git clone [github.com/tzsk/vite-p…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Ftzsk%2Fvite-pretty-lint.git "https://github.com/tzsk/vite-pretty-lint.git") 13 | 14 | ### 参考资料 15 | 16 | * 可以用 npm init vite 或者 yarn create vite 生成一个 vite 的项目 17 | * 在这个vite项目的基础上,再执行 npm init vite-pretty-lint 或者 yarn create vite-pretty-lint 18 | * 如果对 npm init 不了解的,可以参考我之前的[create-vue 文章 npm init](https://juejin.cn/post/7018344866811740173#heading-2 "https://juejin.cn/post/7018344866811740173#heading-2"),源码共读中的第9期。 19 | * 这样就可以看到添加 eslint 和 prettier 的效果了。添加后的变更效果可以参考我的 vite 项目 commit 记录。[github.com/lxchuan12/v…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvite-project%2Fcommit%2F6cb274fded66634191532b2460dbde7e29836d2e "https://github.com/lxchuan12/vite-project/commit/6cb274fded66634191532b2460dbde7e29836d2e") 20 | 21 | * 学会此思路后,可以批量给多个项目添加一些配置或者修改文件等。 22 | 23 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169455336955314212) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/19-前端| 跟着 vant-weapp 学习开发小程序组件.md: -------------------------------------------------------------------------------- 1 | # 前端| 跟着 vant-weapp 学习开发小程序组件 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * 可以克隆该仓库调试学习 [git clone https://github.com/lxchuan12/vant-weapp-analysis.git](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvant-weapp-analysis.git "https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fvant-weapp-analysis.git") 10 | 11 | 1. 学会如何通过调试看源码 12 | 2. 如何写一个微信小程序的组件 13 | 3. 学会开发一个 stepper 步进器组件 14 | 15 | ### 参考资料 16 | 17 | * 参考学习我的文章,按照文章克隆源码,调试学习,写笔记 18 | * [经常用 vant-weapp 开发小程序,却不知道如何开发一个组件?学!](https://juejin.cn/post/7126545101228081188 "https://juejin.cn/post/7126545101228081188") 19 | * **如果对小程序版本的 stepper 不感兴趣** 20 | * 也可以学习 vue2 vant 版本的 stepper 组件 21 | * [github.com/vant-ui/van…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvant-ui%2Fvant%2Ftree%2F2.x%2Fsrc%2Fstepper "https://github.com/vant-ui/vant/tree/2.x/src/stepper") 22 | * 或者 vue3 vant 版本的 stepper 组件 23 | * [github.com/vant-ui/van…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvant-ui%2Fvant%2Fblob%2Fdev%2Fpackages%2Fvant%2Fsrc%2Fstepper%2FStepper.tsx "https://github.com/vant-ui/vant/blob/dev/packages/vant/src/stepper/Stepper.tsx") 24 | * 或者 react 版本的 taroify stepper 组件 [taroify.gitee.io/taroify.com…](https://link.juejin.cn?target=https%3A%2F%2Ftaroify.gitee.io%2Ftaroify.com%2Fcomponents%2Fstepper "https://taroify.gitee.io/taroify.com/components/stepper") 25 | 26 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169115927789699085) -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import process from 'node:process' 2 | import { spiderBooks } from './spider' 3 | import { getAllBooksList, juejinBookSectionUrl } from './spider/task' 4 | import { evConfig } from '@/config' 5 | import { inquirerCourse, isValidUrl, logger, runDevCommand } from '@/utils' 6 | 7 | async function processBooks() { 8 | logger.info(`开始获取小册信息`) 9 | const book = (await getAllBooksList(evConfig.cookie)) ?? [] 10 | const promises: Promise[] = book.map(async (item) => { 11 | if (evConfig.ignoreCourses.includes(item.booklet_id)) { 12 | logger.info(`忽略小册:${item.base_info.title}`) 13 | return 14 | } 15 | await runDevCommand(juejinBookSectionUrl, item.booklet_id, item.base_info.title) 16 | }) 17 | await Promise.all(promises) 18 | logger.info(`所有小册爬取完成`) 19 | } 20 | async function main() { 21 | try { 22 | // 获取脚本文件路径 23 | const args = process.argv.slice(2) // 排除前两个默认参数(node 和脚本文件路径) 24 | const url = args[0] // 第一个参数作为小册链接 25 | // 如果没有设置爬取所有小册,且设置了课程,则开始爬取课程 26 | const setCookie = evConfig.cookie.length > 0 27 | 28 | if (evConfig.spiderAll && setCookie) { 29 | await processBooks() 30 | process.exit(0) 31 | } else if (url && isValidUrl(url)) { 32 | logger.info('开始爬取指定小册') 33 | await spiderBooks(url || evConfig.course, setCookie) 34 | } else { 35 | logger.error('请输入正确的小册地址') 36 | // 请输入正确的小册地址 37 | const url = await inquirerCourse() 38 | await spiderBooks(url, setCookie) 39 | } 40 | // process.exit(0) 41 | } catch (error) { 42 | logger.error(error) 43 | // process.exit(1) 44 | } 45 | } 46 | 47 | main() 48 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/5-了解掘金:掘友等级体系.md: -------------------------------------------------------------------------------- 1 | # 了解掘金:掘友等级体系 2 | 3 | # 掘友等级介绍 4 | 5 | ## 什么是掘友等级 6 | 7 | 掘友等级是一套用于统计掘友们在基础信息完善、社区学习、社区活跃、社区影响力、社区规范维度的数值体系,**用来体现掘友们在社区的贡献和声望。** 8 | 9 | 掘金社区鼓励掘友们在社区学习干货,输出优质内容和观点,友善交流互动,对抄袭、缺乏友善等社区违规行为坚决打击。**鼓励行为将会获得掘友分的增加,违规行为将会导致掘友分被扣减。因此掘友分会随着行为产生增减浮动变化。** 10 | 11 | ## 掘友等级权益 12 | 13 | 完成每日升级任务,即可获得掘友分。掘友分到达指定区间,即可升级至对应的掘友等级,解锁有特色的掘友头衔,自动解锁对应权益。不同等级所需掘友分及权益见下表: 14 | 15 | ![等级规则new01.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8570122c2caf488394feaa4c85591079~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | * **掘友等级的更新** 18 | 19 | 掘友分采取实时计算方式,掘友等级也会实时变化。 20 | 21 | * **等级权益的领取** 22 | 23 | 等级提升将自动解锁对应权益,无需手动领取。权益功能在等级上线时还在紧急开发中,后续会逐渐上线开放给满足条件的用户,感谢掘友们的耐心等待。 24 | 25 | * **掘友分的有效期** 26 | 27 | 掘友分暂时不设置有效期,掘金社区不希望掘友们因为保级规则而产生压力,也不希望掘友短期内刷分升级,掘金社区希望能一直长期陪伴每一位掘友持续成长。 28 | 29 | # 掘友分的获得与扣减 30 | 31 | ## 加分规则 32 | 33 | ![等级规则new02.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8bb1b5e6a0d4f6ca9a9d0e00c963844~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | \*\*\*\*\* **以上社区行为及对应获取的分值,可能根据稀土掘金社区未来活动的更新进行动态调整。** 36 | 37 | * **每日得分说明:** 38 | 39 | * 社区影响力:每日积分没有上限。 40 | * 社区活跃:每日积分有上限,超过上限部分不会获得掘友分。 41 | * 社区学习:每日积分有上限,超过上限部分不会获得掘友分;单次学习90秒以上,记为一次有效学习行为。 42 | * 社区基础:每个账号仅可完成1次。 43 | 44 | * **初始得分说明:** 45 | 46 | * 社区影响力:按照掘金成立至今,掘友的历史数据\*20%折算计入。 47 | * 社区基础:完成相关行为的掘友,可以直接获得对应行为的掘友分。 48 | * 社区活跃:全部掘友均从0开始计算。 49 | * 社区学习:全部掘友均从0开始计算。 50 | 51 | ## 减分规则 52 | 53 | ![等级规则new03.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bb5d04d1d8c54782818f941b6f8ce743~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 54 | 55 | [原文地址](https://juejin.cn/book/6844733795329900551/section/7109810300471214119) -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Build and Deploy 2 | 3 | # 触发条件: push 到 master 分支后 4 | on: 5 | watch: 6 | types: started 7 | workflow_dispatch: 8 | # schedule: 9 | # - cron: '00 12 * * *' 10 | push: 11 | branches: 12 | - master 13 | # 只在下列路径变更时触发 14 | paths: 15 | - 'docs/**' 16 | - 'package.json' 17 | 18 | # 设置上海时区 19 | env: 20 | TZ: Asia/Shanghai 21 | 22 | # 任务 23 | jobs: 24 | build-and-deploy: 25 | # 服务器环境:最新版 ubuntu 26 | runs-on: ubuntu-latest 27 | steps: 28 | # 拉取代码 29 | - name: Checkout 30 | uses: actions/checkout@v2 31 | with: 32 | persist-credentials: false 33 | 34 | # 安装 pnpm 35 | - name: Install pnpm 36 | uses: pnpm/action-setup@v2 37 | with: 38 | version: 7.26.3 39 | 40 | # 设置 node 版本 41 | - name: Set node version to 18 42 | uses: actions/setup-node@v3 43 | with: 44 | node-version: 18 45 | cache: 'pnpm' 46 | 47 | # 打包静态文件 48 | - name: Build 49 | run: | 50 | pnpm install 51 | rm -rf docs/log.txt 52 | pnpm build:github 53 | 54 | - name: Copy files 55 | run: cp README.md ./dist/ 56 | 57 | # 部署 58 | - name: Deploy 59 | uses: JamesIves/github-pages-deploy-action@releases/v3 60 | with: 61 | # GitHub 密钥 62 | ACCESS_TOKEN: ${{ secrets.GIT_TOKEN }} 63 | # 指定仓库 64 | REPOSITORY_NAME: h7ml/juejinbooksspider 65 | # GitHub Pages 读取的分支 66 | BRANCH: gh-pages 67 | # 静态文件所在目录 68 | FOLDER: dist 69 | -------------------------------------------------------------------------------- /.github/workflows/issue-reply.yml: -------------------------------------------------------------------------------- 1 | name: Issue Reply 2 | 3 | on: 4 | issues: 5 | types: [labeled] 6 | 7 | jobs: 8 | reply-helper: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: help wanted 12 | if: github.event.label.name == 'PR Welcome' || github.event.label.name == 'help wanted' 13 | uses: actions-cool/issues-helper@v1 14 | with: 15 | actions: 'create-comment' 16 | issue-number: ${{ github.event.issue.number }} 17 | body: | 18 | Hello @${{ github.event.issue.user.login }}. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please be sure to fill in the default template in the Pull Request, provide changelog/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution! 19 | 20 | 你好 @${{ github.event.issue.user.login }},我们完全同意你的提议/反馈,欢迎直接在此仓库创建一个 Pull Request 来解决这个问题。请务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献。 21 | 22 | - name: Need Reproduce 23 | if: github.event.label.name == 'need reproduce' 24 | uses: actions-cool/issues-helper@v1 25 | with: 26 | actions: 'create-comment' 27 | issue-number: ${{ github.event.issue.number }} 28 | body: | 29 | Hello @${{ github.event.issue.user.login }}. In order to facilitate location and troubleshooting, we need you to provide a realistic example. You can create a dumi project by clicking [here](https://github.com/umijs/dumi-template/generate) and provide the GitHub warehouse address and reproduce examples. 30 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/15-前端|跟着underscore学防抖.md: -------------------------------------------------------------------------------- 1 | # 前端|跟着underscore学防抖 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | 1. 学会防抖的使用场景 10 | 2. 学会防抖的原理 11 | 3. 学会使用测试用例测试源码 12 | 13 | ## 学习任务 14 | 15 | * 可以克隆源码也可以直接引用cdn写demo 16 | * 参考文章 [JavaScript专题之跟着underscore学防抖](https://juejin.cn/post/6844903480239325191 "https://juejin.cn/post/6844903480239325191") 17 | * underscore 源码 18 | * [github.com/jashkenas/u…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjashkenas%2Funderscore%2Fblob%2Fmaster%2Fmodules%2Fdebounce.js "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjashkenas%2Funderscore%2Fblob%2Fmaster%2Fmodules%2Fdebounce.js") 19 | * 可以看测试用例学习 [underscore debounce 测试用例](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjashkenas%2Funderscore%2Fblob%2Fmaster%2Ftest%2Ffunctions.js%23L514-L685 "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fjashkenas%2Funderscore%2Fblob%2Fmaster%2Ftest%2Ffunctions.js%23L514-L685") 20 | * lodash 源码 21 | * [lodash.com/docs/4.17.1…](https://link.juejin.cn?target=https%3A%2F%2Flodash.com%2Fdocs%2F4.17.15%23debounce "https://link.juejin.cn?target=https%3A%2F%2Flodash.com%2Fdocs%2F4.17.15%23debounce") 22 | * [github.com/lodash/loda…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flodash%2Flodash%2Fblob%2F4.17.15%2Flodash.js%23L10304 "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flodash%2Flodash%2Fblob%2F4.17.15%2Flodash.js%23L10304") 23 | * 参考文章:[深入浅出防抖函数 debounce](https://juejin.cn/post/6844903863061839885 "https://juejin.cn/post/6844903863061839885") 24 | 25 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169474977123532807) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/6-前端|arrify 转数组.md: -------------------------------------------------------------------------------- 1 | # 前端|arrify 转数组 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ### 学习任务 8 | 9 | * github仓库地址 [arrify](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fsindresorhus%2Farrify "https://github.com/sindresorhus/arrify") 10 | * github1s: [github1s.com/sindresorhu…](https://link.juejin.cn?target=https%3A%2F%2Fgithub1s.com%2Fsindresorhus%2Farrify "https://github1s.com/sindresorhus/arrify") 11 | * 这期源码行数不多, 就十几行。 12 | * 学习 Symbol.iterator 的使用场景 13 | * **这期比较简单,主要学会通过测试用例调试源码。** 可以多关注怎么发布npm包的、esm、测试用例 、ts 等(也可以不关注)。 14 | * 建议克隆代码下来,关注测试用例,自己多通过测试用例调试,**自己调试过才能够学会,感受更深一些**。 15 | 16 | ### 参考资料 17 | 18 | * 关于如何调试看这篇:[新手向:前端程序员必学基本技能——调试JS代码](https://juejin.cn/post/7030584939020042254 "https://juejin.cn/post/7030584939020042254") 19 | * [深入浅出package.json](https://juejin.cn/post/7099041402771734559 "https://juejin.cn/post/7099041402771734559") 20 | * [ES6标准入门 Iterator 和 for...of 循环](https://link.juejin.cn?target=https%3A%2F%2Fes6.ruanyifeng.com%2F%23docs%2Fiterator "https://es6.ruanyifeng.com/#docs/iterator") 21 | * [mdn Symbol.iterator](https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FSymbol%2Fiterator "https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator") 22 | * [mdn 迭代器和生成器](https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN%2Fdocs%2FWeb%2FJavaScript%2FGuide%2FIterators_and_Generators "https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Iterators_and_Generators") 23 | 24 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7169108143039840263) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/index.md: -------------------------------------------------------------------------------- 1 |

如何使用掘金社区

2 | 3 |

原文地址

4 | 5 | - 1 了解掘金:❓ 为什么做掘金社区 6 | 7 | - 2 了解掘金:⚖️ 掘金基本法 8 | 9 | - 3 了解掘金:⛏️ 掘金的功能简介 10 | 11 | - 4 了解掘金:🏆 掘力值、创作者等级与权限(新) 12 | 13 | - 5 了解掘金:掘友等级体系 14 | 15 | - 6 了解掘金:📖 掘金术语 16 | 17 | - 7 使用掘金:👤 掘金的账号系统 18 | 19 | - 8 使用掘金:✏️ 如何使用掘金编辑器写专栏 20 | 21 | - 9 使用掘金:🔥 如何让你的文章获得更多曝光和认可 22 | 23 | - 10 使用掘金:👮‍♀️掘金的内容审核和推荐规则 24 | 25 | - 11 使用掘金:📐 掘金社区内容的标准和规范 26 | 27 | - 12 使用掘金:🚁 掘金社区签约作者内容品控文档 28 | 29 | - 13 使用掘金:❎ 掘金社区行为规范&处罚措施 30 | 31 | - 14 使用掘金:✍🏻如何快速上手创作者中心 32 | 33 | - 15 使用掘金:🎈 如何玩转沸点 34 | 35 | - 16 使用掘金:👤 如何玩转团队号 36 | 37 | - 17 使用掘金:👩‍🎓字学模块介绍 38 | 39 | - 18 使用掘金:💬 如何给掘金社区提建议 & Bug 40 | 41 | - 19 深入掘金:📚 如何贡献掘金的标签 42 | 43 | - 20 深入掘金:💸 如何在掘金投放广告 44 | 45 | - 21 深入掘金:💰 如何通过掘金赚钱 46 | 47 | - 22 深入掘金:👨‍💻 如何通过掘金找到好工作 48 | 49 | - 23 ⚠️ 常见问题 50 | 51 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/2-后端|Netty 学习 第二周.md: -------------------------------------------------------------------------------- 1 | # 后端|Netty 学习 第二周 2 | 3 | ### 本章任务提供 4 | 5 | [挖坑的张师傅](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 6 | 7 | ### 领读员说 8 | 9 | > 大家好,我是张师傅。为了能帮助到更多对源码感兴趣、想学会看源码、提升自己后端技术能力的同学。组织了大家一起学习源码共读活动。 10 | > 11 | > 我对各个中间件源码非常感兴趣,过去一段时间阅读了 MySQL、JVM、Nginx、Netty、Spring、Linux 内核相关的源码,也写过很多关于根据源码来定位问题的文章,详见我的掘金博客 [juejin.cn/user/430664…](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 12 | > 13 | > 对于 Java 后端的同学,Netty 的源码是非常经典的学习资料,它不仅包含了丰富的网络编程相关的知识,还在代码中展示了很多 Java 编程的高级技巧,是我们深入学习网络编程、理解事件驱动、高性能编程不可多得的经典。 14 | 15 | ## 任务说明 16 | 17 | 后端任务在整个源码学习的过程中出现,和前端分离的子任务不同,本篇包含了多个学习任务,除了以学习任务为核心产出的笔记以外,在阅读源码的时候产出的其他笔记也可参与本次活动。 18 | 19 | ## 学习任务 20 | 21 | 阅读 NioEventLoopGroup 的代码 22 | 23 | > 任务:NioEventLoopGroup 默认的构造函数会起多少线程,可以通过什么方式修改?这些线程的职责是什么 24 | 25 | 早期 Java 版本 NIO 存在严重的 epoll 空轮询 bug,请查询相关的文章。 26 | 27 | ![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3c611f49bfd74c03b707a844fc93cc8d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | > 任务 : 阅读 NioEventLoop.java 的代码,尝试分析 Netty 是如何解决 JDK 中的 epoll 空轮询 BUG 的? 30 | 31 | Netty 内部有一个核心的类 ByteToMessageDecoder,它定义了两个累加器 MERGE\_CUMULATOR、COMPOSITE\_CUMULATOR 32 | 33 | ![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e27f06cdb60a42f19d58cc3a098ff63c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | > 任务 1:分析这两个累加器有什么不同 36 | 37 | > 任务2:写一个 LengthFieldBasedFrameDecoder 定长编码的消息拆包类,实现如下格式消息的解码,并按逗号拼接 38 | 39 | |Length|Content| 40 | |---|---| 41 | |4 字节|变长| 42 | 43 | ### 额外任务:零拷贝知识 44 | 45 | 1. 任务 1:了解什么是零拷贝,C/C++中如何实现零拷贝 46 | 2. 任务 2:Java 中如何实现零拷贝 47 | 3. 任务 3:netty 是如何实现零拷贝的 48 | 49 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7171463783146061862) -------------------------------------------------------------------------------- /docs/.vitepress/theme/utils/router.ts: -------------------------------------------------------------------------------- 1 | import { sideBar } from 'vitepress-plugin-sidebar' 2 | 3 | interface MenuItem { 4 | link: string 5 | items?: MenuItem[] 6 | } 7 | 8 | interface SidebarOptions { 9 | ignoreMDFiles?: string[] 10 | ignoreDirectory?: string[] 11 | collapsed?: boolean 12 | collapsible?: boolean 13 | } 14 | 15 | export function getSidebar(path: string, options?: SidebarOptions) { 16 | const { 17 | ignoreMDFiles = ['index'], 18 | ignoreDirectory = ['node_modules'], 19 | collapsed = false, 20 | collapsible = true, 21 | } = options || {} 22 | return sideBar(path, { 23 | ignoreMDFiles, 24 | ignoreDirectory, 25 | collapsed, 26 | collapsible, 27 | }) 28 | } 29 | 30 | export function mergeSidebarRoutes(routes: MenuItem[]) { 31 | const mergedRoutesMap: Record = routes.reduce((map, route) => { 32 | const { link, items } = route 33 | const existingRoute = map[link] 34 | if (existingRoute) { 35 | existingRoute.items = existingRoute.items ? [...existingRoute.items, ...items] : items 36 | } else { 37 | map[link] = route 38 | } 39 | return map 40 | }, {} as Record) 41 | 42 | return Object.values(mergedRoutesMap) 43 | } 44 | function mergeSidebarItems(parentItems: MenuItem[], childItems: MenuItem[]) { 45 | for (const childItem of childItems) { 46 | const parentItem = parentItems.find((item) => item.link === childItem.link) 47 | if (parentItem) { 48 | mergeSidebarItems(parentItem.items || [], childItem.items || []) 49 | } else { 50 | parentItems.push(childItem) 51 | } 52 | } 53 | } 54 | 55 | export function getRouter(path: string) { 56 | const routes = getSidebar(path) 57 | return mergeSidebarRoutes(routes) 58 | } 59 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/15-使用掘金:🎈 如何玩转沸点.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:🎈 如何玩转沸点 2 | 3 | ## 沸点是什么 4 | 5 | 沸点是掘友们的朋友圈,是开发者们交流的小天地。无论你是想休息摸鱼、讨论技术问题、理财交流、运动健身还是交友相亲等等。只要是咱们开发者感兴趣的方向,都能在这里看到新鲜的内容,找到有共同爱好的伙伴! 6 | 7 | ## 沸点圈子 8 | 9 | * ### 圈子的定义 10 | 11 | 圈子是同好聚集地,一部分人因为共同的爱好聚在一起。比如有不少掘友喜欢科技产品,那么可以加入“科技交流圈”,一起聊聊新推出的产品,一起云看苹果发布会。 12 | 13 | * ### 圈子的类型 14 | 15 | 围绕开发者的兴趣爱好,涵盖了“吃喝玩乐”、“书影音”、“职场”、“技术”、“理财”等类型,多达30多个圈子。每个圈子有自己的规则,是一群人的小天地,大家都有着相同的兴趣,你说的我都懂。 16 | 17 | 上班无聊了,来“上班摸鱼”休息一下。想尽情吐槽职场生活,来“打工人的日常”聊聊。想提桶换工作的朋友,“内推招聘广场”不要错过。 18 | 19 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe2e30ae77624d7a81feebc5d6d5ad0a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | * ### 圈子怎么玩 22 | 23 | 选择喜欢的圈子加入,进入圈子的详情页后,可以浏览这个圈子的所有沸点。觉得关注的圈子不够看?试试点击圈子广场,发现更多有趣的圈子。 24 | 25 | 在首页发布沸点时,记得要选择圈子的tag,让圈内小伙伴能及时看到你的内容! 26 | 27 | 这几个圈子需要特别注意下: 28 | 29 | * **掘金官方**:用于发布官方公告和社区活动,其他用户请不要使用该圈子。 30 | 31 | * **沸点福利**:这是给掘友们的「沸点官方福利」的圈子,只能是官方发布,或者和官方合作的伙伴发布。 32 | 33 | * **反馈建议**:用户发反馈建议的地方,大家可以在这里给掘金提需求、反馈 bug。 34 | 35 | **友情提醒**:不符合话题要求的沸点会从话题下移除并保留原内容 36 | 37 | ## 沸点话题 38 | 39 | * ### 话题的定义 40 | 41 | 话题主要是围绕一个时事热点、或者一个观点,来发表自己的看法。就像之前很火的话题#小米换logo了,你怎么看?#,或者是经典的话题#买东西应该分期付款吗? #,大家可以在具体的话题下讨论交流,碰撞出思想的火花。 42 | 43 | * ### 话题怎么玩 44 | 45 | 首页的话题榜单、个别圈子的详情页中有推荐话题,选择自己感兴趣的话题,进入话题详情页,能看到该话题下的所有沸点,还可以点击参与讨论。 46 | 47 | 在首页发布沸点时,记得要选择话题的tag,让关注了该话题的小伙伴能及时看到你的内容!当然啦,也可以同时选择合适的圈子tag,增加沸点的曝光机会。 48 | 49 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a0a4400d9de94609b2a36b6e9387790f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 50 | 51 | ## 沸点推荐须知 52 | 53 | 大家发的沸点一般都会被推荐,但要注意以下几类是不会被推荐的。 54 | 55 | 1. 不符合圈子的公告要求的沸点 56 | 2. 用美女网图来钓鱼的等各种广告、引流帖 57 | 3. 三观不正、涉黄、引战、挂人的内容 58 | 4. 树洞、内推招聘广告、掘金相亲、反馈建议这四个圈子。涉及到邮箱投递简历、加好友微信或者QQ号时,大家要擦亮眼睛辨别清楚,切勿受骗 59 | 60 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795384426509) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/5-如何维护读者的提问和反馈.md: -------------------------------------------------------------------------------- 1 | # 如何维护读者的提问和反馈 2 | 3 | 掘金小册团队一直在想,除了纸质书固有的出版流程周期、实体携带及传播效率的问题,到底是哪种功能的缺失让我们觉得需要更好的产品来承载内容。 4 | 5 | > 我们最终的结论是:与读者的互动性 6 | 7 | 当下是一个互联网流量聚集度很高的时代,每一个人的朋友圈好友是流量、微博或知乎粉丝是流量、掘金上的关注者也是流量、小密圈的付费读者也是流量。人们用各种方式去获得和维护自己的流量,并从中找到价值。 8 | 9 | 一个人“流量”的积累可以是社交目的,也可以是品牌目的,更可能是实打实的收入目的。无论是哪一种目的,都是这个互联网流量时代给每一个独立的个人的赋能。而我认为,含金量最高的流量就是: 10 | 11 | * 作者生产内容 12 | * 读者通过付费来获取内容 13 | * 读者认可作者 14 | 15 | 这里有几个必不可少的元素: 16 | 17 | 1. 作者 18 | 2. 读者 19 | 3. 原创内容 20 | 4. 付费 21 | 5. 认可 22 | 23 | 我认为只有这 5 点都满足的情况下,流量的价值才可以转化为信任。如果更具体一点,就是流量得以留存和发展,可以创造实际价值了。为了这样的目的,掘金的小册非常在意付费读者与作者以及付费读者之间的沟通。 24 | 25 | ## 读者的提问和反馈 26 | 27 | 现在掘金小册的每个小节下用户可以像在掘金专栏里提问一样讨论,作者和其他读者都可以轻松地添加评论并参与讨论。同时,所有读者都可以为每一条评论点赞。这样,通过让用户提问讨论可以更容易地筛选出优质内容。 28 | 29 | > 但是,一个更复杂的问题是,如何才能维持一个好的提问讨论氛围? 30 | 31 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/16d9c041cb1c4956b9cbf942a4958ff4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | 1. 掘金小册的讨论规则依然遵从[掘金基本法](https://juejin.cn/book/6844733795329900551/section/6844733795367649288 "https://juejin.cn/book/6844733795329900551/section/6844733795367649288"),通过有效规范和减少劣质的、脱离技术的、有攻击性的内容,让有意义的评论可以凸显出来。 34 | 2. 作者有义务去对读者的提问和反馈进行回答,包括读者对内容中出现的疏漏的提出,都可以第一时间在掘金小册中修复。 35 | 3. 掘金小册是作者的一个作品,而每本小册小节下的提问、反馈和讨论我们认为是这个作品的一部分。就像一场演唱会,歌手的表演是重点,但是观众也同样是这场演唱会完整展现的一部分。 36 | 37 | 👍 掘金小册支持的讨论内容,例如: 38 | 39 | * 在具体学习实践中遇到的问题和解答 40 | * 小节内容中的疏漏 41 | * 资源、信息、外链补充 42 | * 阅读后的感想和总结思考 43 | * ... 44 | 45 | 👎 掘金小册不支持的讨论内容,例如: 46 | 47 | * 对作者或任意其他读者有不文明的言语和人身攻击行为 48 | * 任何推广(招聘、广告)方面的内容 49 | * 违反中国或者用户所在地法律法规的行为和内容 50 | * 对网站的运营安全有潜在威胁的内容 51 | * 色情、激进时政、意识形态方面的话题 52 | * ... 53 | 54 | ```! 55 | 掘金编辑和掘金小册作者有权利删除违反上述规则的评论内容 56 | ``` 57 | 58 | ### [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 59 | 60 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704757223431) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/19-崔洪波、姚煜:英特尔与您共举汽车行业的数字化未来.md: -------------------------------------------------------------------------------- 1 | # 崔洪波、姚煜:英特尔与您共举汽车行业的数字化未来 2 | 3 | ![英特尔与您共举汽车行业的数字化未来_页面_01.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3fb0ce05dc17487cafd589fe88b747c8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![英特尔与您共举汽车行业的数字化未来_页面_02.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1ec57a71e19348cd81badc2376113aae~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![英特尔与您共举汽车行业的数字化未来_页面_03.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d560fefba4d14e0da699cd602c5c4371~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![英特尔与您共举汽车行业的数字化未来_页面_04.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/da4ac62c9f104e82a846b09e27f39295~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![英特尔与您共举汽车行业的数字化未来_页面_05.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e4e2bc84bd29439d8141dbe46b1d0af4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![英特尔与您共举汽车行业的数字化未来_页面_06.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/99f5de18f29f40a3977c48814b1a2cee~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![英特尔与您共举汽车行业的数字化未来_页面_07.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/78bb1d9646cd4170be699a81835fe53e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![英特尔与您共举汽车行业的数字化未来_页面_08.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/91f969fb3ad8470581a52ebb749a62d9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![英特尔与您共举汽车行业的数字化未来_页面_09.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2d409f57eea2456ab9d95a9e62861a53~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![英特尔与您共举汽车行业的数字化未来_页面_10.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4cf23affcd2a47e69d72019da5e56eac~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127569303276093452) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/3-后端|Netty 学习 第三周.md: -------------------------------------------------------------------------------- 1 | # 后端|Netty 学习 第三周 2 | 3 | ### 本章任务提供 4 | 5 | [挖坑的张师傅](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 6 | 7 | ### 领读员说 8 | 9 | > 大家好,我是张师傅。为了能帮助到更多对源码感兴趣、想学会看源码、提升自己后端技术能力的同学。组织了大家一起学习源码共读活动。 10 | > 11 | > 我对各个中间件源码非常感兴趣,过去一段时间阅读了 MySQL、JVM、Nginx、Netty、Spring、Linux 内核相关的源码,也写过很多关于根据源码来定位问题的文章,详见我的掘金博客 [juejin.cn/user/430664…](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 12 | > 13 | > 对于 Java 后端的同学,Netty 的源码是非常经典的学习资料,它不仅包含了丰富的网络编程相关的知识,还在代码中展示了很多 Java 编程的高级技巧,是我们深入学习网络编程、理解事件驱动、高性能编程不可多得的经典。 14 | 15 | ## 任务说明 16 | 17 | 后端任务在整个源码学习的过程中出现,和前端分离的子任务不同,本篇包含了多个学习任务,除了以学习任务为核心产出的笔记以外,在阅读源码的时候产出的其他笔记也可参与本次活动。 18 | 19 | ## 学习任务 20 | 21 | Netty 的数据读写是以 ByteBuf 为单位的,它的结构如下: 22 | 23 | ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2eabb3b13370401c93ef1485cc1e20a4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | 任务 1:阅读 ByteBuf 的代码,总结它与 Java NIO 中的 ByteBuffer 有什么区别? 26 | 27 | ByteBuf 可以通过扩展底层的数组来实现自动扩展。当缓冲区的容量不足以存储新的数据时,ByteBuf 就会自动扩展底层数组的大小,以便容纳更多的数据 28 | 29 | 任务 2:Netty 中的 ByteBuf 源码是如何实现自动扩展的,请写出伪代码 30 | 31 | 任务 3:阅读相关代码,ByteBuf 是线程安全的吗? 32 | 33 | 任务 4:为什么 ByteBuf 读写需要加锁? 34 | 35 | ByteBuf 支持多种内存管理模型,包括堆内内存(heap buffer)、堆外内存(direct buffer)和内存池(pooled buffer)。 36 | 37 | 任务 5:堆外内存、堆外内存、内存池的优缺点有哪些,分别用在哪些场景 38 | 39 | 任务 6:下面的分配方式分别对应上面的哪种类型 40 | 41 | ```ini 42 | 43 | ByteBufAllocator allocator = ByteBufAllocator.DEFAULT; 44 | ByteBuf buffer = allocator.heapBuffer(); 45 | 46 | ByteBufAllocator allocator = ByteBufAllocator.DEFAULT; 47 | ByteBuf buffer = allocator.directBuffer(); 48 | 49 | ByteBufAllocator allocator = ByteBufAllocator.DEFAULT; 50 | ByteBuf buffer = allocator.pooledBuffer(); 51 | ``` 52 | 53 | ByteBuf 的读写操作是非阻塞的,阅读相关代码。 54 | 55 | 任务 7:非阻塞特性是通过 ByteBuf 的什么原理实现的 56 | 57 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7172389086643093537) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/1-了解掘金:❓ 为什么做掘金社区.md: -------------------------------------------------------------------------------- 1 | # 了解掘金:❓ 为什么做掘金社区 2 | 3 | > 掘金的出现,是源于中国开发者的需求 4 | 5 | 掘金当然不是第一个开发者社区,它诞生的时候已经有非常成功的 GitHub、Stack Overflow 及中国的 CSDN 了。他们以及繁多的技术网站已经有了多年的历史,但是当我看到中文语境下社区时出现了这样几个问题: 6 | 7 | * 筛选信息的效率太低 8 | * 不准确,低质量,重复性内容过多 9 | * 社区交流讨论活跃度低 10 | * 单一品类的技术社区生命周期很短 11 | 12 | 这是服务端出现的问题,而更重要的原因出现在中国的开发者本身。随着众多科技企业的成功,中国的信息技术及下一个阶段的智能技术已经处于高速增长。也就是说,除了繁荣的互联网所带来的开发者数量需求,随着技术的创新,开发者质量的需求也越来越大。甚至,会有很多的新技术是由中国开发者创造并影响世界的。然而,中国开发者现在并没有一个地方去沉淀、生产、分享、学习技术内容,而这就是我做掘金的社区的原因。 13 | 14 | **掘金:一个帮助开发者成长的社区** 15 | *Become a Better Developer by Sharing and Learning* 16 | 17 | ### 学习的价值 18 | 19 | Programming 编程技术与许多的技术品类不同,它本身就处在一个高速的更新换代之中。每天,我们在用的编辑器在更新、编译器在更新、代码版本在更新、依赖框架在更新、开源库在更新、浏览器在更新、操作系统在更新 ... 20 | 21 | 每当有人问我,我学那项技术好时,我都难于回答。因为我无法告诉他,这是一个没有终点的旅行,但同时它又是每一个开发者都要走过的路。 22 | 23 | * 基础知识 24 | * 算法能力 25 | * 系统思维 26 | 27 | 这是凌驾于某一个编程语言、框架、系统之上的价值。他们变得并不快,二十年前互联网让基础的代码包管理变得轻松,分布式的数据同步已经有了服务。自然那个时候的服务和如今 GitHub 提供给我们的代码管理及版本更新是不能比的,背后的价值却是一样的,是客观的技术(如网络速度、处理器速度、存储系统等)限制了产品模式。因而,每一个开发者都需要学习,从如何握住🔧到最终制造🚀。 28 | 29 | ### 分享的价值 30 | 31 | 分享在许多的行业是不被鼓励的,包括很长一段时间的软件行业。但是,分享是开发者天然的使命,我们每一个人都站在巨人的肩膀上,是 Free Software Movement 和 Open Source 的繁荣让我们几乎无成本地体验着所有伟大的代码。 32 | 33 | 但同时,也只有分享才能让人不断地成长。有价值的内容会吸引会思考的读者,会思考的读者会向你反馈有价值的信息,这些反馈可以加深你的理解与思考。这是一个健康的循环。当然,优质的分享也会为你带来更多的关注者与影响力,让你的思想被更多人阅读。最终,分享会为你带来物质的回馈:优秀的分享者也往往是对技术理解最深的人,他们更易于找到好的工作,或者通过分享好的内容直接获得收益。 34 | 35 | ### ❗️掘金社区要解决的问题 36 | 37 | 每一个社区的都希望有好的用户和内容,但是问题又往往不只存在于此。在[如何建立一个可持续激励优质内容的社区 - 掘金](https://juejin.cn/post/6844903791427338253 "https://juejin.cn/post/6844903791427338253")文章中我解释了一个好的内容社区最重要的三要素是:定位、文化、规则。但目前看到诸多的开发者社区并没有做好这一点,这让社区的情况非常有问题。而掘金的三要素是: 38 | 39 | 1. 定位:服务中国的开发者,来掘金看值得学习的技术内容 40 | 2. 文化:坚信善于分享和学习优质内容的开发者会成长得越来越好 41 | 3. 规则:激励持续输出原创优质内容的用户,赋予流量、影响力、收入,但是对于抄袭、剽窃、人身攻击的内容和用户绝不容忍 42 | 43 | 因此,做掘金社区的核心目标就是: 44 | 45 | * 如何让更多开发者写出好的内容 46 | * 如何让好的内容被更多开发者看到 47 | * 如何让开发者产生有价值的交流 48 | 49 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795355066381) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/55-许金柱:携程在数据库选型方面的探索与实践.md: -------------------------------------------------------------------------------- 1 | # 许金柱:携程在数据库选型方面的探索与实践 2 | 3 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_01.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e3dcafdededf4f90b616d09d123acfd3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_02.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f3ee7296535a49ac8eaccc32de413011~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_03.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c8778828602342f4bfc109ca68be9cd5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_04.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cb10a45359054bdebac1964926ca6113~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_05.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cdd07a9e9c1b439387a492f7e8a4705d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_06.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4cd13c40bea6435cb8e6c46173c2a049~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_07.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d2fbd583a5e144ebb70ccadc9b28e73b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_08.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/749d0702221743ff853d7033b7c68362~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_09.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/23498d2ee5524a6fbc0b096a09900d1c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![业务背后的架构演进-许金柱-OceanBase读写分离探索与源码改造_10.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a6cd786b9b24fd8b32e460f287417dc~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127833422541619231) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/4-如何定价并正式发布售卖小册.md: -------------------------------------------------------------------------------- 1 | # 如何定价并正式发布售卖小册 2 | 3 | ## 定价 4 | 5 | 每一本小册都是值得珍视的,而售价的高低对最终的销售情况有非常直接的影响,因此为小册内容设定合理的价格就显得尤为重要。 6 | 7 | 目前,掘金有以下建议定价: 8 | 9 | * `¥29.9` 参考长度:约 18 小节或 120 分钟的阅读时长 10 | * `¥39.9` 参考长度:约 24 小节或 180 分钟的阅读时长 11 | * `¥49.9` 参考长度:约 32 小节或 240 分钟的阅读时长 12 | * `¥59.9` 参考长度:约 40 小节或 300 分钟的阅读时长 13 | * `¥69.9` 参考长度:约 48 小节或 360 分钟的阅读时长 14 | * 其他定价 15 | 16 | 而影响这本小册订价的基础是内容难度、受众大小、作者影响力、营销方法等条件。根据内容的具体情况,作者可在发布时定价提交,掘金会最终审核是否上线发售。而上线发售时的小册定价叫做**基础价格**,根据具体的宣传、营销需求,在推广中的折扣优惠只在这一基础价格上进行调整,但不会改变小册本身的基础价格。 17 | 18 | ## 作者收入结算 19 | 20 | 小册作者的收入分成比例为`70%`。掘金会按月与作者结算,结算金额的计算公式如下: 21 | 22 | `作者本月结算收入` = `小册本月销量` × (`小册基本价格` - `折扣`\-`分销扣减`) × `70%` 23 | 24 | 在小册结算的时候,有如下注意事项: 25 | 26 | * 推广折扣:在推广期会有不同的优惠折扣,结算将按照折扣后的单价进行结算 27 | * 结算日期:在所有章节写作完成后,每月第 10 个工作日进行结算 28 | 29 | ```! 30 | 预售模式的小册会在小册完整完成的当月底开始逐月结算 31 | ``` 32 | 33 | ## 宣传售卖 34 | 35 | 每一本小册的完成都凝结了作者的智慧和努力,同时也有掘金责任编辑和平台的支持和付出。让一本小册被更多需要它的人读到,成为一个有影响力的优质作品,是作者和掘金小册平台的共同心愿。因而,掘金小册正式上线发售后,我们希望作者和掘金一起来宣传小册。 36 | 37 | > 但问题是,到底怎样去推广小册呢? 38 | 39 | ### 推广方法论 40 | 41 | 我们基于不断积累的推广经验给出了如下几个方法: 42 | 43 | 1. **推荐人**:掘金会请作者邀请 2 名的推荐人,在小册上线前对小册内容进行审核和推荐 44 | 2. **上线优惠**:在上线早期对热心的读者进行折扣促销,如早鸟抢购 6 折 等 45 | 3. **运营推广**:掘金小册有专门的运营人员,负责通过各渠道将小册信息送达潜在读者,实现购买转化 46 | 4. **口碑传播**:好的小册都会以口碑来进行传播,因而我们会通过已经购买小册的读者来二次传播小册 47 | 5. **适时激励**:用户的消费心理会在想要购买产品时因为促销折扣被打动,因而如何在读者真正需要内容的这时候给予适当的折扣激励可以有效地刺激消费效果。根据我们的历史数据: 48 | * 自然流量销售转化率:`2.5%` - `3%` 49 | * 折扣流量销售转化率:`8.5%` - `10%` 50 | 51 | 而整个产品抽象出来的**销售模型**是: 52 | 53 | ```javascript 54 | z(x, y) = 0.5 * x * f(y) * p * y 55 | 56 | // x: 小册流量 57 | // p: 小册价格 58 | // y: 小册折扣 59 | // f(y):小册转化率,折扣比例越低,销售转化率越大 60 | // z(x, y):小册作者收入,变量为流量数及小册售卖的折扣 61 | ``` 62 | 63 | ### 营销功能 64 | 65 | 掘金小册平台,在不断地优化小册基本阅读体验的同时,也在不断优化营销推广功能,以帮助作者快速有效地推广自己的小册,如折扣码、组合优惠、分享优惠等。这些功能会陆续上线,成为作者及平台方不断优化购买流程体验的。 66 | 67 | 不过,不论如何宣传,内容的品质和口碑才是一本小册宣传的基础,因而我们还是应该专注在内容上,让内容本身的价值成为传播的原动力。 68 | 69 | ### [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 70 | 71 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704753029128) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/29-梁宇宁:开源:商业成功的保障?.md: -------------------------------------------------------------------------------- 1 | # 梁宇宁:开源:商业成功的保障? 2 | 3 | ![幻灯片1.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/24dfe1f22cbf4e868adb9d643e29bcae~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0d9bbb63a06d4ce88bc59b63bdee152b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ff782804c867487690f9cce9af4a6039~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0d74307a18ad434da015f5a644517d12~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/56d4053f72d44e5082eea39365e486c6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/90ba2959c43a4f8f91091b50fbe4ca99~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/15bccc9164874dd8a08abd7c9e129729~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6c318f85d3c641d4b012530cac595c75~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/37843baa39fd4de0b74039115884a633~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/501c86067d8c4e8b941e753ce73523ca~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5924b8e80b3433eab3cc28a91844129~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/959e82f0a1d54810a7c6a5e7f81dc7e4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a114eb3e3181474bb27f7c597735a1f1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127548818928697356) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/4-后端|Netty 学习 第四周.md: -------------------------------------------------------------------------------- 1 | # 后端|Netty 学习 第四周 2 | 3 | ### 本章任务提供 4 | 5 | [挖坑的张师傅](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 6 | 7 | ### 领读员说 8 | 9 | > 大家好,我是张师傅。为了能帮助到更多对源码感兴趣、想学会看源码、提升自己后端技术能力的同学。组织了大家一起学习源码共读活动。 10 | > 11 | > 我对各个中间件源码非常感兴趣,过去一段时间阅读了 MySQL、JVM、Nginx、Netty、Spring、Linux 内核相关的源码,也写过很多关于根据源码来定位问题的文章,详见我的掘金博客 [juejin.cn/user/430664…](https://juejin.cn/user/430664257374270 "https://juejin.cn/user/430664257374270") 12 | > 13 | > 对于 Java 后端的同学,Netty 的源码是非常经典的学习资料,它不仅包含了丰富的网络编程相关的知识,还在代码中展示了很多 Java 编程的高级技巧,是我们深入学习网络编程、理解事件驱动、高性能编程不可多得的经典。 14 | 15 | ## 任务说明 16 | 17 | 后端任务在整个源码学习的过程中出现,和前端分离的子任务不同,本篇包含了多个学习任务,除了以学习任务为核心产出的笔记以外,在阅读源码的时候产出的其他笔记也可参与本次活动。 18 | 19 | ## 学习任务 20 | 21 | Netty Recycler 是 Netty 中的对象回收池,用于复用对象,减少内存分配和 GC 的次数。它通过使用双向链表维护对象池,在对象被回收时将其插入链表的头部,在对象需要被分配时从链表的头部取出。这样可以减少内存分配的次数,提高系统的效率。 22 | 23 | ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b59100eb73914c4095f4b22211127c69~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | 任务 1:用 Recycler 写一个 demo 实现自定义类 User 的对象复用 26 | 27 | 任务 2:阅读 Recycler 轻量级对象池的源码,画出 Recycler 的内部结构图 28 | 29 | FastThreadLocal 是 Netty 中的快速线程局部变量工具,在高并发场景下表现优异。 30 | 31 | ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2fa252b8824b42418a10d29da149ad28~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | FastThreadLocal 是 Netty 重新设计的更快的 ThreadLocal,主要实现涉及: 34 | 35 | * FastThreadLocalThread 36 | * FastThreadLocal 37 | * InternalThreadLocalMap 38 | 39 | 阅读相关类的代码: 40 | 41 | 任务 3:分析 FastThreadLocal 的创建过程 42 | 43 | 任务 4:分析 FastThreadLocal 的 get、set 方法实现 44 | 45 | ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ef5758553c0e48b5822a1103f890abff~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e3630797bcf4f84ba6093c7e3bcc80b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | 任务 5:分析 FastThreadLocal 为什么会比 Java 中的 ThreadLocal 性能更加优秀? 50 | 51 | 任务 6:分析 FastThreadLocal 在了 Netty 的哪些场景比较适用 52 | 53 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176118503878393916) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/intro.md: -------------------------------------------------------------------------------- 1 | ## 作者介绍 2 | 3 | 我叫[阴明](https://juejin.cn/user/413072061127479 'https://juejin.cn/user/413072061127479'),社区里大家可以叫我站长。2015 年下半年的时候,我和[江昪](https://juejin.cn/user/1503787634398126 'https://juejin.cn/user/1503787634398126')建立了掘金社区。故事一开始并没有那么顺利,您可以看:[我不是 Fenng,也不像纯银那么会写文章,我就想好好地做个技术社区](https://juejin.cn/post/6844903441135845383 'https://juejin.cn/post/6844903441135845383'),[这是掘金的前 6 个月,一个半运营](https://juejin.cn/post/6844903488460161032 'https://juejin.cn/post/6844903488460161032'),[不如我们从头来过 | 掘金](https://juejin.cn/post/6844903715019685896 'https://juejin.cn/post/6844903715019685896')。 4 | 5 | 如果想要更了解掘金背后的故事,您也可以访问 [Xitu Inc.](https://xitu.io/ 'https://xitu.io/') 6 | 7 | ## 小册介绍 8 | 9 | ⏩ 更多视频 10 | 11 | 1. [为什么做掘金社区](https://link.juejin.cn?target=https%3A%2F%2Fwww.bilibili.com%2Fvideo%2Fav49221381 'https://www.bilibili.com/video/av49221381') 12 | 2. [掘金社区的基本法与基本功能简介](https://link.juejin.cn?target=https%3A%2F%2Fwww.bilibili.com%2Fvideo%2Fav49662768 'https://www.bilibili.com/video/av49662768') 13 | 14 | 这本小册的目的是让每一个用户可以更好地了解和使用掘金社区,即可以了解它背后的价值,同时也可以更好地熟悉掘金各个功能和模块,甚至可以直接深入贡献掘金。掘金社区的功能并不复杂和奇特,它的目的就是好好地让掘金用户看到好的内容,生产好的内容,最后能从中成长。 15 | 16 | 这本小册会长期更新,它也会随着掘金社区功能的变化不停地迭代自己。这是我们做掘金社区一开始的想法,没有最好,只有更好。我们不会只满足于比 XX 社区更好,我们希望做到让每个用户与我们一起成长,真心地喜爱和需要我们。同样,掘金社区的发展也需要每一个用户! 17 | 18 | ## 你会学到什么? 19 | 20 | 这本小册会分为三个核心模块: 21 | 22 | - 了解掘金:帮助你了解掘金出现的目的,用户如何使用起来,以及你使用掘金最后能获得的回报 23 | - 使用掘金:介绍掘金的核心功能,以及每一个功能用户的使用介绍,帮助你更好地在掘金里生产和消费内容,甚至成为掘金的超级用户 24 | - 掘金里的文章是怎么被分发的? 25 | - 编辑器怎么使用,有什么隐藏功能? 26 | - 发文章怎么选择标签? 27 | - 沸点怎么玩起来? 28 | - 如何在掘金里运营和发展自己? 29 | - 深入掘金:如果你对这个感兴趣,那么我真的非常高兴。我们相信社区的发展要依赖每一个用户,这部分会讲解您如何更深入地支持和帮助掘金 30 | 31 | ## 适宜人群 32 | 33 | ✅ 34 | 35 | - 每一个掘金用户 36 | - 每一个乐于帮助他人的开发者 37 | - 每一个愿意不断学习的开发者 38 | 39 | ❌ 40 | 41 | - 懒于学习 42 | - 懒于贡献 43 | - 不相信技术 44 | 45 | ## 购买须知 46 | 47 | 1. 本小册为图文形式内容服务,共计 17 节; 48 | 2. 全部文章预计一直要更新下去; 49 | 3. 购买用户可享有小册永久的阅读权限; 50 | 4. 掘金小册为虚拟内容服务,一经购买成功概不退款; 51 | 5. 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任; 52 | 6. 在掘金小册阅读过程中,如有任何问题,请邮件联系 [xiaoce@xitu.io](mailto:xiaoce@xitu.io 'mailto:xiaoce@xitu.io') 53 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/21-深入掘金:💰 如何通过掘金赚钱.md: -------------------------------------------------------------------------------- 1 | # 深入掘金:💰 如何通过掘金赚钱 2 | 3 | 目前掘金提供了 2 种比较直接的变现方式: 4 | 5 | * 掘金课程; 6 | * 掘金课程分销。 7 | 8 | ## 掘金课程 9 | 10 | 当掘金用户的掘力值增长到 `Lv7` 则会获得掘金课程写作权限,掘金课程的写作可以让你获得收益,目前在线写作与掘金的提成比例是 70%,一经课程完成上线,每月都可以结算收入。 11 | 12 | 当然,如果你在掘金内的掘力值很高,有非常多的粉丝,那么相信你的课程也一定可以卖出很好的结果哦! 13 | 14 | 关于掘金课程 [👉 了解更多](https://juejin.cn/book/6844723704639782920 "https://juejin.cn/book/6844723704639782920") 15 | 16 | ## 掘金课程分销奖励提现 17 | 18 | 如果你不想参与课程写作,那么来对掘金课程进行分销,也是赚钱的途径之一。 19 | 20 | 你可以在支持分销功能的课程中,生成属于自己的课程分销海报/链接,他人如果通过你分享的海报/链接购买了此课程,你便可以获得一定的佣金。 21 | 22 | ### 如何找到并推广课程? 23 | 24 | 支持推广的课程可以在课程详情页找到推广入口。 25 | 26 | * 电脑端示例: 27 | 28 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/16d92afac4174b759f3121a9a8e10f18~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 29 | 30 | * H5 端示例: 31 | 32 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aff26488df994ef3ad9ab98b98e41eeb~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 33 | 34 | * App 端示例: 35 | 36 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ae76761c4a974ef7b40afb87d279983f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 37 | 38 | * 你也可以在稀土掘金 「App - 我 - 推广中心」找到支持推广的课程列表。 推广课程列表示例: 39 | 40 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/57a3af7c9007470b93cc447408ddff66~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 41 | 42 | ### 「推广」佣金的规则 43 | 44 | 将支持分销的课程分享给好友,好友通过你分享的链接访问并购买该课程后,你将得到如下规则的返现: 45 | 46 | * 如果好友的**实际支付金额**大于等于 60% 的课程原价,则你可获得等于**课程原价 20%** 的推广佣金; 47 | 48 | * 如果好友的**实际支付金额**低于 60% 的课程原价,则可获得等于**实际支付金额 30%** 的推广佣金。 49 | 50 | *PS:推广入口处展示的金额是按照课程原价 20% 的推广佣金来计算的,实际收到的推广佣金以推广中心 - 账单明细为准。* 51 | 52 | ### 如何查看推广收益? 53 | 54 | 在稀土掘金 App - 我 - 推广中心,可查看推广佣金收入。 55 | 56 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e155200a44b4baa9a653f26409ad2fb~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 57 | 58 | ### 如何提现? 59 | 60 | 提现请前往稀土掘金 App -我的-推广中心⻚面。提现金额将发放至你当前登录的微信账号零钱账户中;如果提现遇到问题,请联系客服 010-83461079。 61 | 62 | 注意:如果你提供了分销海报,别人通过你的分享购买后,你没有获得返现? 63 | 64 | 常见原因有两种:一种为该课程不支持推广;第二种为被邀请人可能在点开链接后跳转至其他⻚面,并不是直接通过你分享的链接或海报完成的购买。 65 | 66 | ## 打赏 67 | 68 | ⌛️ 开发中 69 | 70 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795388620807) -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | permissions: 3 | contents: write 4 | on: 5 | watch: 6 | types: started 7 | workflow_dispatch: 8 | # schedule: 9 | # - cron: '00 00 * * *' 10 | fork: 11 | types: [created] 12 | 13 | jobs: 14 | test: 15 | runs-on: ${{ matrix.os }} 16 | 17 | strategy: 18 | matrix: 19 | os: [ubuntu-latest] 20 | node-version: [20.x] 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | - name: Cache dependencies 📦 25 | uses: actions/cache@v2 26 | with: 27 | path: ~/.pnpm-store 28 | key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('pnpm-lock.yaml') }} 29 | restore-keys: | 30 | ${{ runner.os }}-node-${{ matrix.node-version }}- 31 | 32 | - name: Use Node.js ${{ matrix.node-version }} 🚀 33 | uses: actions/setup-node@v3 34 | with: 35 | node-version: ${{ matrix.node-version }} 36 | 37 | - name: Install pnpm 🚀 38 | uses: pnpm/action-setup@v2 39 | with: 40 | version: 7 41 | run_install: false 42 | 43 | - name: Install dependencies 🚀 44 | run: pnpm install 45 | 46 | - name: test 🚀 47 | run: pnpm run test 48 | 49 | - name: Create and write to info.log 🚀 50 | run: | 51 | echo "Triggered by schedule at $(date)" > docs/log.txt 52 | 53 | - name: Commit files 🚀 54 | run: | 55 | git add docs/log.txt 56 | git config --local user.email "action@h7ml.cn" 57 | git config --local user.name "github-actions[bot]" 58 | git commit --allow-empty -m ":rocket: Update today's hot rank on $(date)" -a 59 | - name: Push changes 🚀 60 | uses: ad-m/github-push-action@master 61 | with: 62 | github_token: ${{ secrets.GITHUB_TOKEN }} 63 | branch: ${{ github.ref }} 64 | 65 | - name: update cache 🚀 66 | uses: JamesIves/github-pages-deploy-action@v4.3.3 67 | with: 68 | branch: master 69 | folder: . 70 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/17-前端| koa-compose.md: -------------------------------------------------------------------------------- 1 | # 前端| koa-compose 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习目标 8 | 9 | * 了解 koa-compose 作用,应对面试官提问koa中间件 10 | * 学会使用 vsocde 和测试用例 调试源码 11 | * 学会 jest 部分用法 12 | * 等等 13 | 14 | ## 参考资料 15 | 16 | * 【必看】文章 [github.com/lxchuan12/k…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fkoa-compose-analysis "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fkoa-compose-analysis") 17 | 掘金链接:[50行代码串行Promise,koa洋葱模型原来是这么实现?](https://juejin.cn/post/7005375860509245471 "https://juejin.cn/post/7005375860509245471") 18 | * koa-compose 涉及到的设计模式叫职责链模式~ 19 | * 可以翻阅《JavaScript设计模式与开发实践》第十三章 20 | * 我的koa源码,可以参考:[学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理](https://juejin.cn/post/6844904088220467213 "https://juejin.cn/post/6844904088220467213") 21 | * [github.com/koajs/compo…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkoajs%2Fcompose "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkoajs%2Fcompose") 22 | * [github.com/koajs/koa](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkoajs%2Fcompose "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkoajs%2Fcompose") 23 | * 优秀笔记 [【第五期】izjing- koa-compose](https://link.juejin.cn?target=https%3A%2F%2Fwww.yuque.com%2Fruochuan12%2Fbn1ps1%2Ffbbw3g "https://link.juejin.cn?target=https%3A%2F%2Fwww.yuque.com%2Fruochuan12%2Fbn1ps1%2Ffbbw3g") 调试写的非常详细~ 24 | 25 | ### 选学:redux compose 26 | 27 | * [github.com/reduxjs/red…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Freduxjs%2Fredux%2Fblob%2Fmaster%2Fsrc%2Fcompose.ts "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Freduxjs%2Fredux%2Fblob%2Fmaster%2Fsrc%2Fcompose.ts") 28 | * 有余力的小伙伴,也可以看看redux 的compose~根据测试用例看compose 29 | * 我写过redux compose~ 30 | * [lxchuan12.gitee.io/redux/#\_5-2…](https://link.juejin.cn?target=https%3A%2F%2Flxchuan12.gitee.io%2Fredux%2F%23_5-2-redux-compose-functions "https://link.juejin.cn?target=https%3A%2F%2Flxchuan12.gitee.io%2Fredux%2F%23_5-2-redux-compose-functions") 31 | * 看文章,看源码,写笔记发布在掘金。再在本章节下评论放上提交笔记的链接。 32 | 33 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7176118549793275960) -------------------------------------------------------------------------------- /docs/.vitepress/config.ts: -------------------------------------------------------------------------------- 1 | import { createWriteStream } from 'node:fs' 2 | import { resolve } from 'node:path' 3 | import { SitemapStream } from 'sitemap' 4 | import type { PageData } from 'vitepress' 5 | import { defineConfig } from 'vitepress' 6 | import { cut } from '@node-rs/jieba' 7 | import { SearchPlugin } from 'vitepress-plugin-search' 8 | 9 | import pkg from '../../package.json' 10 | 11 | import { head, themeConfig } from './settings' 12 | 13 | const links: { url: string; lastmod: PageData['lastUpdated'] }[] = [] 14 | 15 | export default defineConfig({ 16 | outDir: '../dist', 17 | // eslint-disable-next-line n/prefer-global/process 18 | base: process.env.APP_BASE_PATH || '/', 19 | 20 | lang: 'zh-CN', 21 | title: pkg.name, 22 | description: pkg.description, 23 | head, 24 | themeConfig, 25 | lastUpdated: true, 26 | cleanUrls: true, 27 | 28 | /* markdown 配置 */ 29 | markdown: { 30 | lineNumbers: true, 31 | languageAlias: { 32 | svg: 'html', 33 | }, 34 | headers: { 35 | level: [0, 0], 36 | }, 37 | }, 38 | vite: { 39 | plugins: [ 40 | SearchPlugin({ 41 | previewLength: 20, 42 | buttonLabel: '搜索', 43 | placeholder: '文章搜索', 44 | tokenize(str) { 45 | return cut(str, false) 46 | }, 47 | }), 48 | ], 49 | }, 50 | vue: { 51 | template: { 52 | compilerOptions: { 53 | isCustomElement: (tag) => tag.startsWith('custom-'), 54 | }, 55 | }, 56 | }, 57 | /* 生成站点地图 */ 58 | transformHtml: (_, id, { pageData }) => { 59 | if (!/[\\/]404\.html$/.test(id)) 60 | links.push({ 61 | url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'), 62 | lastmod: pageData.lastUpdated, 63 | }) 64 | }, 65 | buildEnd: async ({ outDir }) => { 66 | const sitemap = new SitemapStream({ hostname: 'https://h7ml.github.io/juejinbooksspider/' }) 67 | const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml')) 68 | sitemap.pipe(writeStream) 69 | links.forEach((link) => sitemap.write(link)) 70 | sitemap.end() 71 | // eslint-disable-next-line promise/param-names 72 | await new Promise((r) => writeStream.on('finish', r)) 73 | }, 74 | }) 75 | -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/intro.md: -------------------------------------------------------------------------------- 1 | ## 小册简介 2 | 3 | 相信很多人在学习技术、完成工作、业务开发的过程中,都是带着具体的问题去寻找答案的: 4 | 5 | ![开发者往往是通过问题来学习的](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2017/10/20/846ce526646cb74bed4b08857203413d~tplv-t2oaga2asx-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | 我们渴望一份可以解决自己内心疑问的、类似于最佳实践的答案。可是,我们往往会搜索到很多很多的文章,它们是碎片化的、只言片语的、未必准确的半成品。我们需要一种内容,它系统性地、完整地、高效地帮助我找到自己需要解决的问题的完整答案,给予我们学习内容的一份安全感。 8 | 9 | 为了实现这样的目的,承载这样内容,掘金团队创造出了**掘金小册**。我们希望每一本掘金小册都是: 10 | 11 | ![掘金小册的价值](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2017/10/20/ca232c6820fe204d28585c15f1cfe066~tplv-t2oaga2asx-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | 伴随着问题,读者可以通过更高浓度的内容找到问题的答案,而作者可以通过小册以更低的写作成本完成篇幅较小但是内容充实的内容。这些内容一册册地成体系排列,让读者有章可循,而伴随着内容被更多人购买消费,作者可以获得应得的收入和回报。 14 | 15 | 作者可以专注在内容的生产和写作上,把复杂的技术知识用更好地结构来传播,让读者以更低的成本获得有需要的内容,并在产品中沉淀有价值的讨论。 16 | 17 | ![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2017/10/20/6876f42a9f738add49841e5c7f7df1d0~tplv-t2oaga2asx-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | 《如何写一本掘金小册》作为掘金的代号 `JJID-0001` 的第一本小册,目的是去帮助读者理解小册,帮助作者更好地完成小册内容。如何成为小册的签约作者?如何组织小册里的内容?什么样的内容读者更喜欢消费?如何保护小册的内容版权?等等问题都会在这本小册中得到解答。 20 | 21 | ### ✏️ 作者简介 22 | 23 | ![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2017/11/22/15fe1a40b0f67d97~tplv-t2oaga2asx-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | [阴明](https://juejin.cn/user/413072061127479 "https://juejin.cn/user/413072061127479") 创业者,本科就读于香港中文大学,毕业后于剑桥大学获得计算机系硕士学位。学生时代兼职开发产品 GradChef 运营 8 个月后被收购,研究生毕业后与合伙人江昪创办 [Xitu Inc.](https://xitu.io "https://xitu.io") 并开发运营了[掘金](https://juejin.cn "https://juejin.cn")产品,现在每月服务超过 400 万开发者。 26 | 27 | ### 🎓 你会学到什么? 28 | 29 | * 掘金小册产品的各个细节 30 | * 从选题、组织内容到定价发售的写作建议 31 | * 帮助你维护好读者和自己的版权权益 32 | * 成为掘金签约作者,获得更多收益 33 | 34 | ### ✅ 你应该已经了解什么? 35 | 36 | * Markdown 编辑语法 37 | * 掘金产品及基本功能 38 | * 一个或多个擅长的技术领域 39 | 40 | ### 🛠 你需要准备什么? 41 | 42 | * 一个自己愿意贡献内容的好点子 43 | * 一个不太卡的电脑 44 | * 一段专注创作的时光(不过我保证比写一本书的时间要短很多) 45 | * 一个心愿清单(只要内容好,用小册收入犒劳一下自己) 46 | 47 | ## 购买须知 48 | 49 | 1. 本小册为图文形式内容服务,共计 7 节; 50 | 2. 掘金小册为虚拟内容服务,一经购买成功概不退款; 51 | 3. 购买掘金小册后,读者可直接开始阅读全本小册并享有小册永久的阅读权限; 52 | 4. 在掘金小册阅读过程中,如有任何问题,请邮件联系 [xiaoce@xitu.io](mailto:xiaoce@xitu.io "mailto:xiaoce@xitu.io"); 53 | 5. 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者本网将依法追究责任。 -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/2-程从超:助力开放生态建设,解锁基础设施潜能.md: -------------------------------------------------------------------------------- 1 | # 程从超:助力开放生态建设,解锁基础设施潜能 2 | 3 | ![幻灯片1.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7c983f969050415c86e01513c1a8d5f5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/347db454e76b4e0ca938fee6701ca9b9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e7e415e90cec42d2bf4884d6d21fda3d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c8e653b3e6af49319d44781ef31ceb0b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7f64b73eafb44efe88e1403a415e4117~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/64856c0505a3467d84a3429931895d7a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0c3a5cc9dd9843a7a0d1b168bd91039a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8197bd1622ce48aa909848cfaf81048c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2cf06d3e8cd643e0a7bac8202d086d9f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9cc9864f771d4a2280d68a7abcfa2db8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c43b1aba16174a19a50c1c0fc3744678~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c42841f93769431db67604c5e336bed4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cd22f041b48447c4ad8972bcaa131f2b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ad9532ead229454bbea5a46629f60f0d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127203694604451844) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/54-陈尧:携程在数据库选型方面的探索与实践.md: -------------------------------------------------------------------------------- 1 | # 陈尧:携程在数据库选型方面的探索与实践 2 | 3 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_01.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77aa611ff2664662af250887ffaa1c00~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_02.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6d5e1363503542cfaa60598c2ebf8ce7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_03.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b330b4c67ca14b998ee36c7601254d45~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_04.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/af3a6b83f9da47d1b84cb20d26098e5a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_05.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0ac5ab9f83504a1caa5d3dfaefedc5b2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_06.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/46e99bbbcdcd4478aab4e02037bdae2d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_07.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c0d7429c37a48cfbd3ed9c4b979c862~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_08.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3779dfc9377f41148e71f55256cf719f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_09.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/675b5d974c3d4f29b5a7d489c8d4b962~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_10.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aaddccd1c88c42139455a6091024700d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_11.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c29e0916bc224c49863952887a3dc1fb~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![业务背后的架构演进-陈尧-携程MySQL转Oceanbase实践_12.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/da978d03e11d46c8a5eed27fc95d9662~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127834089016524830) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/7-有小册想法,如何成为小册作者.md: -------------------------------------------------------------------------------- 1 | # 有小册想法,如何成为小册作者 2 | 3 | 很感谢你阅读到这本小册的最后一节,你大概已经对如何写一本掘金小册有一个基本了解了,让我们最后再来总结一下: 4 | 5 | 1. 掘金小册是一款服务于有明确目的的、成体系的学习诉求的内容产品 6 | 2. 掘金小册的内容应该聚焦在一个具体的问题来完整地提供解决方案 7 | 3. 掘金小册降低了内容生产者的写作成本、提高了销售传播效率,在完成内容后可以快速定价、上线、发售 8 | 4. 掘金小册支持并鼓励读者和作者产生有价值的讨论,形成良性的社群关系 9 | 5. 掘金愿意与优质的内容生产者深度合作,签约作者可以得到责任编辑的支持和现金奖励 10 | 6. 掘金小册关注并保护作者对其内容的版权归属 11 | 12 | 但是,这些功能的细节都无法逾越一个基础: 13 | 14 | * 读者对于内容热切的消费需求 15 | * 作者有意愿去生产可以满足这些需求的内容 16 | 17 | 而掘金小册会以此为目标不断迭代产品。 18 | 19 | ## 小册最终会变成什么样子? 20 | 21 | 说了这么多小册要怎么写、怎么做、怎么卖,我们希望最终小册能够创造怎样的价值呢? 22 | 23 | 我们希望一本本小册成为中国最大的、质量最高的开发者学习知识库。就像前文中提及到的 MSDN、developerWorks 和 MDN 一样,借由这些内容创造一个完整的可以满足开发者精准学习需求的内容全集。 24 | 25 | ![掘金小册内容库的完善,有赖于所有人的贡献](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/110a280e618f4008a153e06dfe97bad4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | 而这还不是掘金小册的最终目的,开发者的学习永远伴随着问题,以我自己为例,我在最早主动学习技术的过程中提出了这样的几个问题: 28 | 29 | > 如何开发一个每次打开浏览器都可以跳转到自己要去访问的网站的导航页面? 30 | 31 | 围绕着这个问题,我通过搜索找到了自己可能需要学习的知识: 32 | 33 | * 前端基本的 HTML、CSS 知识 34 | * 浏览器插件调用的 API 知识 35 | * JavaScript 调用浏览器插件 API 的知识 36 | 37 | 围绕着这些需求,我去图书馆里找了《Beginners for HTML, CSS and JavaScript》这本书,并在具体开发中不断访问 Chrome API 接口文档。 38 | 39 | 开发了最简单的基于 `` 的导航页之后,我想要去学习如何让页面更美观。然后我又去找了类似于 `
` 页面搭建相关的文章,记得书名大概是《Modern CSS》 ,最终开始写一些页面的交互逻辑并且看之前的书籍中不断提及 jQuery,因此去读了《Fundamentals of jQuery》来学习 jQuery 基本知识。 40 | 41 | 就这样一步一步去深入了自己的学习路径,最终实现了一个自己很喜欢的属于自己的导航页面。 42 | 43 | **掘金小册让每一个人学习技术都“有路可循”** 44 | 45 | 基于上述这个需求,围绕同一门类的内容,小册会一步步深入为一个系列小册。而在小册依赖其他门类知识的时候,小册间的学习依赖关系又会成为一个完整的小册知识网络。 46 | 47 | ![为你的学习目找到一条有路可循的学习路径](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a2ad8ad585a4150ae49074de17a509b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | 当掘金的小册内容不断完善时,系列小册的深入和内容矩阵的依赖关系帮助每一位需要学习的读者找到一条明确的学习路径,从而可以一册册地消费和学习内容。 50 | 51 | 这就是掘金小册最终的价值:用小篇幅、高浓度、成体系、有收益的小册,完成一个巨大的技术内容库,真正地满足每一位开发者的学习需求! 52 | 53 | ## 来申请成为作者吧! 54 | 55 | 如果你看完我们关于小册介绍,有任何的内容创作想法和冲动,想要成为小册作者获得收益,请填写以下个人信息及小册介绍等内容: 56 | 57 | [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 58 | 59 | 填写完后可直接联系微信:chnyifan 60 | 61 | ```! 62 | 提供完善申请信息者优先,曾经写过技术书籍、系列文章者优先。 63 | ``` 64 | 65 | 其他联系方式: 66 | 67 | * 电话:17600618101 68 | * 微信:chnyifan 69 | 70 | ```! 71 | 提交完申请的作者,请不要着急,初次审核反馈会在 7-15 个工作日内完成。 72 | ``` 73 | 74 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704757223438) -------------------------------------------------------------------------------- /src/spider/task/spiderAll.ts: -------------------------------------------------------------------------------- 1 | import { juejinBookRegurl, juejinUrl } from '.' 2 | import { getBrowser, logger, setPageCookie } from '@/utils' 3 | import type { Booklet } from '@/types' 4 | const freeBooksIds: string[] = [ 5 | '6844733795329900551', 6 | '6844723704639782920', 7 | '7127092198096502822', 8 | '7169108142868365349', 9 | ] 10 | export async function getAllBooksList(cookie: string) { 11 | const browser = await getBrowser() 12 | if (!browser) return 13 | const page = await browser.newPage() 14 | let data: Booklet[] // 存储小册数据的变量 15 | try { 16 | await page.goto(juejinUrl) 17 | await setPageCookie(page, cookie) 18 | await page.goto(juejinUrl) 19 | // 点击.avatar-wrapper 20 | await page.click('.avatar-wrapper') 21 | // 等待 a 标签的 href 属性为 /my-course 的元素出现 22 | await page.waitForSelector('a[href="/my-course"]') 23 | 24 | // 点击 a 标签的 href 属性为 /my-course 的元素 25 | await page.click('a[href="/my-course"]') 26 | 27 | await page.waitForNavigation() 28 | // 等待元素加载完成 .books-container 29 | await page.waitForSelector('.books-container') 30 | // 刷新页面 31 | await page.reload() 32 | 33 | // 创建一个Promise 34 | const dataPromise = new Promise((resolve) => { 35 | // 获取所有的书籍 36 | page.on('response', async (response) => { 37 | const url = response.url() 38 | if (url.includes(juejinBookRegurl)) { 39 | const content = await response.json() 40 | const { data: books = [] } = content 41 | if (books.length) { 42 | logger.info(`共有${books.length}本小册`) 43 | const buyBooks = books.filter((item: { is_buy: boolean }) => item.is_buy) 44 | const freeBooks = books.filter((item: { booklet_id: string }) => 45 | freeBooksIds.includes(item.booklet_id), 46 | ) 47 | logger.info(`共有${freeBooks.length}本免费小册`) 48 | logger.info(`共有${buyBooks.length}本已购小册`) 49 | data = buyBooks?.length ? buyBooks : freeBooks 50 | } else { 51 | logger.warn('获取小册数量为0,可能是 cookie 失效了,或者是没有购买小册') 52 | } 53 | resolve(data) // 解析Promise并返回数据 54 | } 55 | }) 56 | }) 57 | 58 | // 等待Promise解析并返回数据 59 | data = await dataPromise 60 | } finally { 61 | // await browser.close() // 关闭浏览器 62 | return data 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/2-如何使用掘金发布小册.md: -------------------------------------------------------------------------------- 1 | # 如何使用掘金发布小册 2 | 3 | ### 掘金小册产品功能 4 | 5 | 目前,掘金为掘力值达到到 `Lv7` 的用户默认开通写作权限,同时也为掘力值还没达到相关要求的掘友提供了相应的申请渠道,待编辑确认后会开通写作权限,因而只有开通了相关权限,才算进入正式的写作阶段。掘金小册的申请[问卷地址](https://wenjuan.feishu.cn/m?t=sOxzuZJRgRzi-maf3 "https://wenjuan.feishu.cn/m?t=sOxzuZJRgRzi-maf3")。掘金小册的写作入口: 6 | 7 | ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6f33d19317748419ed282cd841bf9e3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | 每一本小册有这样几个重要的元素: 10 | 11 | ![每本小册的重要元素](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bcbd3ca1869d4d5eac36fefec88dcc42~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | * 标题:小册的标题 14 | * 摘要:一句简洁的小册介绍 15 | * 作者:小册的作者,通过掘金账户登录 16 | * 定价:每一本小册的售价 17 | * 封面:小册的封面设计图 18 | * 小节:每本小册的内容会被分到一个个小节当中 19 | * 小册介绍:一段小册的介绍文字,帮助读者了解小册解答的问题、适宜阅读人群等信息 20 | 21 | 然后,作者就可以进入写作界面。写作界面分为 22 | 23 | ![写作页面](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/afca6a23b5ff4822a6569272b08e110d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | * 头部工具栏:编辑小册的基础信息及提交发布入口 26 | * 目录侧边栏:排序、编辑每一个小节的标题 27 | * Markdown 编辑器:中间是类似于掘金专栏的小册小节的编辑器功能,请使用标准 Markdown 语法写作 28 | * 小册介绍入口:专门编辑小册简介内容,请使用标准 Markdown 语法写作 29 | 30 | 作者在使用掘金产品的写作界面过程中,内容会随时自动保存,图片可以通过拖拽、复制等方法轻松上传。而在作者精心写作完成后,作者需要完成小册的摘要还有介绍位子,最终通过头部工具栏确定价格、基础信息后提交发布入口,等待掘金后台的审核。 31 | 32 | ### 掘金小册发布流程 33 | 34 | ![发布一本掘金小册流程图](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e603ddd833534913a5cb6ff5b35cc108~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 35 | 36 | 小册的写作的整体流程: 37 | 38 | 1. 小册申请:作者可以通过[提交申请](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ")申请小册。请务必填写尽可能完整的信息。 39 | 2. 小册大纲:在您的提交申请通过编辑审核后,编辑会与您联系沟通,给予相应反馈意见。 40 | 3. 样章审核:大纲审核通过后,作者会被要求提供 3 篇样章,编辑会对您的写作内容进行审核与评估,给予真实反馈。 41 | 4. 写作开启:大纲和样章通过审核后,编辑会为您开通小册写作权限,进入正式的写作阶段。同时,编辑也会与您确定更新的频次,一个预设的截止日期,以及一个暂定的上线时间。 42 | 5. 写作至发布:作者开始小册的完整写作流程,编辑会定期给予反馈。同时,我们会邀请专家协作编审,小册完成超过 50% 时,可以发起预售,但要保证后续小册的定期更新(每周 2 篇)。 43 | 6. 上架准备:作者与编辑确认最终上架时间,掘金开始做封面设计及上架准备工作。 44 | 7. 正式发售:小册正式上线销售,作者按照约定每周更新文章。上架小册就会出现在 [juejin.cn/course](https://juejin.cn/course "https://juejin.cn/course") 页面,并可被读者访问。这之后,我们就进入小册最终的维护推广阶段了。 45 | 46 | ```! 47 | 特别提醒作者:在 1. 2. 3. 三个环节中,如果您的内容未达到编辑审核的要求,则会反馈无法上架。 48 | ``` 49 | 50 | 我们在思考小册的创作流程中有一个重要的依据: 51 | 52 | > 让作者专注于内容创作 53 | 54 | 因而,在整个创作周期里,作者都是以内容创作为主要工作责任,而责任编辑会敦促其他配合工作的完成。上线后,作者专注于推广宣传还有维护读者的提问反馈,最终通过好的运营实现更好的销售结果。 55 | 56 | ### [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 57 | 58 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704753029133) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/24-刘涛:车载语音对话新体验.md: -------------------------------------------------------------------------------- 1 | # 刘涛:车载语音对话新体验 2 | 3 | ![幻灯片1.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/320be38a2c684114ac036df2344bb976~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a6b7e945baa4d1e98fc41b9b1685db5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7526aa176abc409e9cab7afa78d21406~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/71b9866c07df491aa24bfcd9c3538d31~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1260cf7fbf2349d782aa52f6c5f4d4be~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fda14735a9e94ce78b2d0a042f361527~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/287aae2f6f5345c8b5e2a48490a99f6b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bd4645e267e44a3d8d0e2bce46781675~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9b9dd992527842e9a00aa13468891c36~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ef585dc991a64b859c4547676ab53cfd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0b330af29d8a4d8897b227287d8398d0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e408aef03ca34afa85059bb15bdb57a9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b335eedec63143a9ac6f57e42d9d0ec8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/47526982d95140d6be4d84748fe3c37e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6fae4864ea1844648838fbe4455a8084~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/df927fb8657a4800915701678ee14d62~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127550360771624964) -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/index.md: -------------------------------------------------------------------------------- 1 |

源码共读第一期|掘金会员专属活动

2 | 3 |

原文地址

4 | 5 | - 1 后端|Netty 学习 第一周 6 | 7 | - 2 后端|Netty 学习 第二周 8 | 9 | - 3 后端|Netty 学习 第三周 10 | 11 | - 4 后端|Netty 学习 第四周 12 | 13 | - 5 前端|omit.js 剔除对象中的属性 14 | 15 | - 6 前端|arrify 转数组 16 | 17 | - 7 前端|vue2工具函数 18 | 19 | - 8 前端|为什么 Vue2 this 能够直接获取到 data 和 methods 20 | 21 | - 9 前端|yocto-queue 队列 链表 22 | 23 | - 10 前端|axios 工具函数 24 | 25 | - 11 前端|vue3 工具函数 26 | 27 | - 12 前端|await-to-js 如何优雅的捕获 await 的错误 28 | 29 | - 13 前端|promisify 30 | 31 | - 14 前端|mitt、tiny-emitter 发布订阅 32 | 33 | - 15 前端|跟着underscore学防抖 34 | 35 | - 16 前端|p-limit 限制并发数 36 | 37 | - 17 前端| koa-compose 38 | 39 | - 18 前端|如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等 40 | 41 | - 19 前端| 跟着 vant-weapp 学习开发小程序组件 42 | 43 | - 20 前端|揭秘 create-vite 原理 44 | 45 | - 21 前端|vue 3.2 是怎么发布的 vue-release 46 | 47 | - 22 前端|element 初始化组件功能 48 | 49 | - 23 前端|create-vue Vue 团队公开的全新脚手架工具 50 | 51 | - 24 前端|tdesign-vue 初始化组件 52 | 53 | - 25 前端|为 vite 项目自动添加 eslint 和 prettier 54 | 55 | - 26 前端|classnames 56 | 57 | - 27 前端| js-cookie 58 | 59 | - 28 前端|一行代码统一规范 包管理器 60 | 61 | - 29 前端|项目中常用的 .env 文件原理是什么?如何实现? 62 | 63 | - 30 前端|Vue团队核心成员开发的39行小工具 install-pkg 安装包 64 | 65 | - 31 前端|open 打开浏览器 66 | 67 | - 32 前端|vue-devtools 组件可以打开编辑器 68 | 69 | - 33 前端|delay 带取消功能的延迟函数 70 | 71 | -------------------------------------------------------------------------------- /docs/源码共读第一期|掘金会员专属活动/32-前端|vue-devtools 组件可以打开编辑器.md: -------------------------------------------------------------------------------- 1 | # 前端|vue-devtools 组件可以打开编辑器 2 | 3 | ### 本章任务提供 4 | 5 | [若川](https://juejin.cn/user/1415826704971918 "https://juejin.cn/user/1415826704971918") 6 | 7 | ## 学习文章 8 | 9 | * 学习文章,其实跟vue和react相关性不大,而是nodejs小项目,不会nodejs也能基本看懂。 10 | * 据说 99% 的人不知道 vue-devtools 还能直接打开对应组件文件?本文原理揭秘 11 | 12 | * 博客地址:[lxchuan12.gitee.io/open-in-edi…](https://link.juejin.cn?target=http%3A%2F%2Flxchuan12.gitee.io%2Fopen-in-editor "https://link.juejin.cn?target=http%3A%2F%2Flxchuan12.gitee.io%2Fopen-in-editor") 13 | * 掘金地址:[juejin.cn/post/695934…](https://juejin.cn/post/6959348263547830280 "https://juejin.cn/post/6959348263547830280") 14 | 15 | **共读目的** 16 | 17 | * 帮助学会调试源码 18 | * 锻炼耐心 19 | * 学会查阅资料 20 | * 学以致用 打开组件文件 21 | 22 | **学习流程** 23 | 24 | * 安装 vue-devtools 对应 vue3 的版本。无法访问谷歌应用市场的小伙伴,可以下方链接去下载安装。 25 | * [或者点此下载安装 vue3版本的vue-devtools](https://link.juejin.cn?target=https%3A%2F%2Fchrome.zzzmh.cn%2Finfo%3Ftoken%3Dljjemllljcmogpfapbkkighbhhppjdbg "https://link.juejin.cn?target=https%3A%2F%2Fchrome.zzzmh.cn%2Finfo%3Ftoken%3Dljjemllljcmogpfapbkkighbhhppjdbg") 26 | * [点此下载安装 vue2 版本的 vue-devtools](https://link.juejin.cn?target=https%3A%2F%2Fchrome.zzzmh.cn%2Finfo%3Ftoken%3Dnhdogjmejiglipccpnnnanhbledajbpd "https://link.juejin.cn?target=https%3A%2F%2Fchrome.zzzmh.cn%2Finfo%3Ftoken%3Dnhdogjmejiglipccpnnnanhbledajbpd") 27 | * 克隆项目,按照文章中流程,先跑起来 28 | * [本文仓库地址](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-in-editor.git "https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-in-editor.git"):git clone [github.com/lxchuan12/o…](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-in-editor.git%25EF%25BC%258C%25E6%259C%25AC%25E6%2596%2587%25E6%259C%2580%25E4%25BD%25B3%25E9%2598%2585%25E8%25AF%25BB%25E6%2596%25B9%25E5%25BC%258F%25EF%25BC%258C%25E5%2585%258B%25E9%259A%2586%25E4%25BB%2593%25E5%25BA%2593%25E8%2587%25AA%25E5%25B7%25B1%25E5%258A%25A8%25E6%2589%258B%25E8%25B0%2583%25E8%25AF%2595%25EF%25BC%258C%25E5%25AE%25B9%25E6%2598%2593%25E5%2590%25B8%25E6%2594%25B6%25E6%25B6%2588%25E5%258C%2596%25E3%2580%2582 "https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Flxchuan12%2Fopen-in-editor.git%25EF%25BC%258C%25E6%259C%25AC%25E6%2596%2587%25E6%259C%2580%25E4%25BD%25B3%25E9%2598%2585%25E8%25AF%25BB%25E6%2596%25B9%25E5%25BC%258F%25EF%25BC%258C%25E5%2585%258B%25E9%259A%2586%25E4%25BB%2593%25E5%25BA%2593%25E8%2587%25AA%25E5%25B7%25B1%25E5%258A%25A8%25E6%2589%258B%25E8%25B0%2583%25E8%25AF%2595%25EF%25BC%258C%25E5%25AE%25B9%25E6%2598%2593%25E5%2590%25B8%25E6%2594%25B6%25E6%25B6%2588%25E5%258C%2596%25E3%2580%2582") 29 | * 调试全流程 30 | * 记录笔记 31 | 32 | [原文地址](https://juejin.cn/book/7169108142868365349/section/7178739231848661003) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/6-陈满砚:一次 300 人参与、周期一年的单盲实验.md: -------------------------------------------------------------------------------- 1 | # 陈满砚:一次 300 人参与、周期一年的单盲实验 2 | 3 | ![幻灯片1.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/29f8a73b8b81459ba5a3c7edd5561f9c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a97cdde5aff4f0db54bce89e6446d3b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c0755d752fa04528862f86bddca73e71~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/52bfd1b589514a63895dcb1739210ba3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2c3ed4cbbdf941099f51dcd3438829b0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a67e4adbf052452eba97e8f1a342ccae~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b2d05a3460cf4c7db4a792dfcbd4bd7e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ffa0ab88e3a54032ad8f8ee0b75a1a5a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/71c00f933120411c94d0436fb6e764c2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e794bd81aaec421ab08d92fbae568f0d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/102a767d4a7c4212996544d22a951173~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f2500f7b3b164ba7806294e59735851f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec1b8606108d48e3b5d81c7f9ba1b888~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1bd57bb667fb4d2faa25d82bd7fe55c7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eca84fc2d8f04bb2a3bf8ad2a25ef383~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/24b95edb2c184dba90691c6241170040~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/969e7e6ee8b74deb8d79f085bf288095~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127188613791481868) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/5-王保平(玉伯):技术人如何做产品.md: -------------------------------------------------------------------------------- 1 | # 王保平(玉伯):技术人如何做产品 2 | 3 | ![幻灯片1.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1de948b4fbb43a2b815cb98270804cd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c4af61fd9fe4ad3be9f4a4da295f1ac~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b6816d39b0514e0da642fbe14c69a38e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/421e83201caa4b508b94ce7e9ba31a81~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60ee6b4f221648a2ae5649d5685a74f8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4d146d146eab4c818994b915fdadd2e3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9c848b8c1b2a4097bed66f5564356fe1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0c03f95fbb06428098b4ed83b5d9def2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf663a1268cd4fb085868e8709841f7e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a54c95a63a324bbfb2c4efe7849b770f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7aa69dd2e7dd4cd781d1548d79abff12~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e6d6eccbc46e4fdf8db75d114ac8ea39~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5b7731c0f3bb48ba8f3edbd71acc2097~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/42cf811d755540c183565dfa3225ae53~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a2269c75de3d470ca15135dc237bc77f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/15a6116ba511488fb30c9a23eb088886~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6f64b036642f4de7b7480f42bf8eed2e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/56547f297e424a6dad5cb0a98a44f685~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127208709352063015) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/4-了解掘金:🏆 掘力值、创作者等级与权限(新).md: -------------------------------------------------------------------------------- 1 | # 了解掘金:🏆 掘力值、创作者等级与权限(新) 2 | 3 | ## 什么是掘力值? 4 | 5 | 在社区,我们会使用掘力值来计算一个掘友创作贡献,累计贡献值的目的是为了更好地回馈优质的创作者,同时也借由他们生产的优质内容帮助到更多的掘友们。掘力值也叫 Juejin Power 或者可以简写为 JP,您可以在您的个人主页和创作中心页面上看到自己的掘力值。当前仅文章会被计入掘力值。 6 | 7 | 我们鼓励大家坚守创作初心,把创作当作一种习惯,创作对掘友有帮助的文章、创作真正优质的文章,基于此,掘力值将由以下四个维度构成: 8 | 9 | 1. **创作行为:** 10 | 11 | 创作行为掘力值是衡量创作者在掘金创作活跃度方面的得分,创作掘力值是为了激励用户在掘金平台持续创作,只要发布行为符合官方规定,便会被计入创作行为分。 12 | 13 | 2. **创作影响力:** 14 | 15 | 创作影响力掘力值是衡量创作内容发布后获得掘友反馈的得分,是系统根据发布内容所获得的点赞、评论、收藏、阅读等进行综合计算的得分。 16 | 17 | 3. **创作质量:** 18 | 19 | 创作质量掘力值是衡量创作者内容质量的得分,是系统根据内容的质量表现进行的综合计算的得分,我们鼓励创作者创作真正优质的内容。 20 | 21 | 4. **创作违规扣减:** 22 | 23 | 创作违规扣减掘力值是为了更好的规范创作行为,在作者被认定严重创作违规后,会额外进行惩罚性掘力值扣除。 24 | 25 | ## **掘力值有什么价值?** 26 | 27 | 1. 掘力值会影响到你发的文章的排序,掘力值高且活跃的用户所生产的内容会被推荐给更多的用户。 28 | 29 | 2. 掘力值会影响你是否被推荐,越来越多的掘友通过关注来消费内容,因而被推荐并获得关注可以有效地提高你的影响力。 30 | 31 | 3. 掘力值会有不同的权限,随着掘力值的不断提高,越来越多的功能和权限会被解锁,让你在掘金里畅行无阻。 32 | 33 | ## **掘力值如何计算?** 34 | 35 | ``` 36 | JP(掘力值)=创作行为 掘力值+创作影响力 掘力值+创作质量分 掘力值-创作违规扣减掘力值 37 | ``` 38 | 39 | *PS:2022年7月28日进行新掘力值的初始化计算,在掘力值明细里可以看到自己的历史掘力值计算详情,后续将会每天更新掘力值变化。* 40 | 41 | 具体如下: 42 | 43 | 1. ## 创作行为掘力值: 44 | 45 | * 每发1篇文章,+10掘力值,每日最多2篇会计入掘力值。 46 | 2. ## 创作影响力掘力值: 47 | 48 | * 每篇文章每获得1个赞,+1掘力值; 49 | * 每篇文章每获得100个阅读,+1掘力值; 50 | * 每篇文章每获得1个收藏,+1掘力值; 51 | * 每篇文章每获得1个人的评论(一级评论),+1个掘力值。 52 | 53 | 3. 创作质量掘力值: 54 | 55 | * 创作质量掘力值是衡量创作者内容质量的得分,是系统根据内容的质量表现进行的综合计算的得分,被系统认定高质量的文章+15掘力值。 56 | 57 | 4. 创作违规扣减掘力值: 58 | 59 | * 作者通过综合认定为涉嫌刷量等违规行为,需要额外扣减作者的掘力值N(N=运营在后台根据违规程度判定的分数)。 60 | * 违规扣减标准详见:[掘金社区行为规范&处罚措施-社区内容发布规范介绍章节](https://juejin.cn/book/6844733795329900551/section/6844733795380232200 "https://juejin.cn/book/6844733795329900551/section/6844733795380232200") 61 | 62 | **抄袭:** 63 | 64 | ```diff 65 | - 首次抄袭发现扣除抄袭文章所获得的所有掘力值 66 | - 连续两次抄袭扣除抄袭文章所获得的双倍掘力值 67 | - 连续三次及以上抄袭扣除抄袭文章所获得的三倍掘力值 68 | ``` 69 | 70 | **刷量:** 71 | 72 | ```diff 73 | - 首次发现刷量发现扣除刷量文章所获得的所有掘力值 74 | - 连续两次发现刷量扣除刷量文章所获得的双倍掘力值 75 | - 连续三次及以上刷量全平台封禁刷量账号 76 | ``` 77 | 78 | 特别注意: 79 | 80 | 1. 掘力值每日凌晨5点更新前日数据,如遇文章被删除,文章评论、点赞、收藏、推荐被删除或取消,创作违规等情形,对应日期的掘力值会被扣减。创作违规行为被撤销会恢复相关扣减分值。 81 | 82 | 2. 一经发现某一用户通过机器等手段刷点赞、阅读等数据,恶意提高自己的掘力值,掘金小编在核实后会给予额外扣除掘力值惩罚,撤销所有权限及成就。 83 | 84 | * **掘力值、创作等级和权益是如何对应的?** 85 | 86 | 掘力值是影响创作者等级的唯一因素,不同的掘力值对应着不同的等级,不同的等级享有不同的权益。 87 | ![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/def1d043c7d84a309bd4520d72342d57~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 88 | 89 | 90 | **关于新等级上线后一些权限的说明:** 91 | 92 | 1.历史违规和被取消权限用户,新等级升级后依旧不会获得相应权限 93 | 94 | 2.关于近期部分用户的文章没有被推荐的说明: 95 | 96 | * 近期掘金升级了创作者权益相关的规则和机制,上线之后也受到了大家的广泛关注。但是上线后,我们也遇到了很多掘友和反馈和吐槽。笔记和更文等水文和低质量内容频繁被推上首页,更有甚者,日更占楼贴也会自动进行推荐。 97 | * 目前掘金的推荐加入二层过滤机制,对于自动推荐但是不符合推荐标准的内容进行人工干预。 98 | 99 | ### 关于旧等级、权益(成就)的处理 100 | 101 | **等级/掘力值** 102 | 103 | * 不再保留历史的等级和掘力值 104 | 105 | * 用户的等级和掘力值全按照新的计算方式 106 | 107 | **旧等级已经取得的权益(成就)** 108 | 109 | * 可以继续使用,相关权益不受等级升降影响 110 | * 等级对应权益的解锁状态,按照新等级、权益之间的关系展示。 111 | 112 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795371843597) -------------------------------------------------------------------------------- /src/utils/command/index.ts: -------------------------------------------------------------------------------- 1 | import { ChildProcess, spawn } from 'node:child_process' 2 | import { logger } from '@/utils' 3 | 4 | export type QueueTask = () => Promise 5 | export let runningProcesses = 0 6 | export const processQueue: QueueTask[] = [] 7 | export const maxConcurrentProcesses = 4 8 | 9 | export async function runDevCommand1( 10 | juejinBookSectionUrl: string, 11 | bookletId: string | number, 12 | title: string, 13 | ): Promise { 14 | const command = `npm run dev:all ${juejinBookSectionUrl + bookletId}` 15 | logger.info(`开始爬取小册:${title}`) 16 | 17 | // 包装 spawn 调用为一个 promise 18 | function spawnProcess(): Promise { 19 | runningProcesses++ 20 | const childProcess: ChildProcess = spawn(command, [], { shell: true, stdio: 'inherit' }) 21 | 22 | return new Promise((resolve, reject) => { 23 | // 监听进程退出事件 24 | childProcess.on('exit', (code) => { 25 | runningProcesses-- 26 | if (code === 0) { 27 | logger.info(`小册:${title},爬取成功`) 28 | } else { 29 | logger.error(`小册:${title},爬取失败,退出码:${code}`) 30 | reject(new Error(`进程退出码为 ${code}`)) 31 | } 32 | checkQueue() // 检查队列以启动下一个进程 33 | resolve() 34 | }) 35 | 36 | // 监听进程启动失败事件 37 | childProcess.on('error', (err) => { 38 | runningProcesses-- 39 | logger.error(`小册:${title},启动失败:${err.message}`) 40 | checkQueue() // 检查队列以启动下一个进程 41 | reject(err) 42 | }) 43 | }) 44 | } 45 | 46 | // 检查队列并启动新的进程(如果有空间) 47 | function checkQueue(): void { 48 | if (processQueue.length > 0 && runningProcesses < maxConcurrentProcesses) { 49 | const nextTask = processQueue.shift() 50 | if (nextTask) { 51 | nextTask() 52 | } 53 | } 54 | } 55 | 56 | // 将任务加入队列或立即执行 57 | if (runningProcesses < maxConcurrentProcesses) { 58 | await spawnProcess() 59 | } else { 60 | processQueue.push(spawnProcess) 61 | } 62 | } 63 | export async function runDevCommand( 64 | juejinBookSectionUrl: string, 65 | bookletId: string | number, 66 | title: string, 67 | ) { 68 | const command = `npm run dev:all ${juejinBookSectionUrl + bookletId}` 69 | logger.info(`开始爬取小册:${title}`) 70 | 71 | // 包装 spawn 调用为一个 promise 72 | function spawnProcess() { 73 | runningProcesses++ 74 | const childProcess = spawn(command, [], { shell: true, stdio: 'inherit' }) 75 | 76 | return new Promise((resolve) => { 77 | childProcess.on('exit', () => { 78 | runningProcesses-- 79 | checkQueue() // 检查队列,看是否可以启动新的进程 80 | resolve() 81 | }) 82 | }) 83 | } 84 | 85 | // 检查队列并启动新的进程(如果有空间) 86 | function checkQueue() { 87 | if (processQueue.length > 0 && runningProcesses < 3) { 88 | const nextTask = processQueue.shift() 89 | if (nextTask) nextTask() 90 | } 91 | } 92 | 93 | // 将任务加入队列或立即执行 94 | if (runningProcesses < 3) { 95 | await spawnProcess() 96 | } else { 97 | processQueue.push(spawnProcess) 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/65-陆扬:视频云的机遇挑战与最佳实践方案.md: -------------------------------------------------------------------------------- 1 | # 陆扬:视频云的机遇挑战与最佳实践方案 2 | 3 | ![幻灯片1.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f698d57ea5894e5188cfa4f434c8a16c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4bcfaade0f144e31abcbffe6e47c0a89~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/675f8c9f6dfb4a2382e909d6e3b7b331~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/521be3b037c74c19ad6524266a03c241~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7a4bfb848b5a4c68a44bd49234f29ef3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/786ecff8c54c48538d14ddcb00605e0f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0aa93df717a44a998ada2a7792d151f2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bbf715948f66407a9dbb02a3f94e7c2d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b859b33c04284534a23ff9d79aa98c98~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e05a1cecb40e481cb56d4965ff532954~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a3737303982940449ea3c0e30461db4b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d3b3bd80e0db469c9b23443e034e8890~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f7c3f6647f9a4333a4e5befd3d6d1673~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0cd52a26a90f42799a661d929042d8a4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2ecd06c5b5b5495fb6ffbb1f3d652670~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eb4b0deb60584c25ba2248d65ab91b6c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c24dbeb12a8240638f44825af881a33d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3183e42b34c246d0ad4bccb7b84ccc6b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c13ddba5b12a4cde96c5fe2e02730e97~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f52b3ed18d41427ca8331b176f77efd8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7128271512758386696) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/63-任晓蕾:云原生数据库技术趋势与英特尔最佳实践.md: -------------------------------------------------------------------------------- 1 | # 任晓蕾:云原生数据库技术趋势与英特尔最佳实践 2 | 3 | ![幻灯片1.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dda7fb5d44154c679276ed216f3d8359~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d94e3ef8b984afda9d3a0e6eca6243d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1f0128015c364410a95b9bac4b3cba07~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a511f82d16fd4b67a6cce06dd1c70709~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/920fb4af3b4b472f8b1a9b9b99305fa6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/185add92c7244fccacdf971a2cc95c7e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c6daa2bb5bc4cde8cbd57c082c5725b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/20a16e5cecd54ec8956fa039079424c1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18a6bff8e0e14f5a9d15e7c35d1ae2fd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/427fe69fe1a6402f91f17d0cfe4413e1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b2a3095ee6af47ca822ad100a4e17a89~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7dbbd1605ce04e0ab1b0292b4b589e09~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26b1d62505f84d96ba1343add39061ed~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e1901a258d34536b6d84bb9b03ba96b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1ccfb670ab3c43379f7f8b7e5ba06909~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60d417c88849447fa341b04f1fcd0ba3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/39f01904c8124893be836c821a8e5977~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/598d8bc02fa74563ba1cf8f62106e776~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/24780d8cae81464f86addfd06cdfb105~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60697065e65940e489def6b601522578~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7128271031709466654) -------------------------------------------------------------------------------- /docs/如何写一本掘金小册/1-什么是掘金小册.md: -------------------------------------------------------------------------------- 1 | # 什么是掘金小册 2 | 3 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/63aa1ff976974469a1c3526d04908487~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | 开发者会消费各种各样的内容,例如资讯、问答讨论、经验文章、最佳实践、开源库、文档等等,每一种内容都有自己的消费场景和它背后的真实需求,掘金作为一个帮助开发者成长的社区,一直专注于如何更好地满足开发者这些内容消费需求。 6 | 7 | 但是只有碎片化的内容是不足以完成读者系统性学习的需求的,尤其是无法帮助那些有明确需求并渴望尽快知道完整答案的读者。以“如何准备 BAT 校招面试”为例,这是一个可以找到成千上万文章的问题,作为一个即将毕业的软件学院的学生,也是一个明确的需求。可是,网络中无穷无尽的博客文章、知乎万赞回答、微信爆款头条是无法系统性地帮助一个年轻学生清清楚楚地找到这个问题答案的。 8 | 9 | 需要一本厚重大部头的书吗?似乎成本太高;一些散乱的文章呢?肯定不够;那怎样的内容才是我们想要的,才是可以帮助到读者的呢?而另外一端,是否有作者有能力写出这样的文章?他们是否得到了应有的财务回报呢?如果出版一本书籍是否时间成本过高? 10 | 11 | 基于这样的思考,我们想要通过一个产品去解决这个问题,而它就是:**掘金小册** 12 | 13 | ### 技术内容的载体 14 | 15 | 我们把开发者需要的内容如下排列: 16 | 17 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/126259d2d42d468b822dc2dfeb876f9b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | 从图中可以看到,我们把这些内容根据两个坐标轴来排列: 20 | 21 | * X 轴:从碎片化内容到需要长时间连贯深入阅读的内容 22 | * Y 轴:从我明确知道自己需要获取什么信息的学习需求,到非常不明确自己需要获取什么信息的探索需求 23 | 24 | 而开发者需要的各式各样的内容也根据它们不同的使用场景和内容形式被放到了不同的内容载体中去传播。 25 | 26 | 比如,行业新闻、资讯还有社区各种闲杂的讨论,用户每天去获取这样的信息往往是上下班、工作间隙的闲暇时间看一看,不带有任何的具体的目的一定要获得什么,只是期待相应的产品可以稳定的符合预期的得到自己想要的信息。可能是新的、有趣的、有用的等等。因而,类似于微博、资讯文章这样的内容载体就很适合来承载这部分内容。 27 | 28 | 又比如,作为业务开发者,我们需要看源代码,了解一个开源库的安装、使用方法、接口参数,甚至深入去了解它的最近的更新等等,而承接这么多内容需求的就是通过一个个 Git 仓库来实现的。 29 | 30 | > 当然,所有开发者都需要连贯地、深入地并且带有明确目的性地去获取信息,而这样的内容载体会是什么呢? 31 | 32 | ### 技术内容分发模式 33 | 34 | 有了这么多不同种类的内容载体,这些内容也需要不同的内容分发模式让用户获取到这些内容。目前掘金的产品包含了我们的网站、移动应用和浏览器插件,大家可以在产品里看到自己的感兴趣的内容,刷刷网站首页、搜索一下或是去到某个关注的高手的页面、某个标签下去找内容。这一切的目的,都是希望帮助用户更方便的看到自己需要的东西。 35 | 36 | 那么,如果我们还使用之前的 X、Y 轴去分拆内容,那么不同种类的内容应该如何来分发呢: 37 | 38 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2248bd2fc8474bd7a050dbba3347bdac~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 39 | 40 | 借由这些不同的内容分发模式,用户可以在不同的场景下来消费内容。例如,早晨上班想看看最新的技术资讯、行业八卦或者是自己需要了解的经验文章,刷刷首页推荐的内容;写代码的时候需要找到某一个具体的库,在某一个编程语言的库下面一点点去找;遇到了解决不了的问题,去搜索一下问题的答案等等。 41 | 42 | > 那么,当开发者持续连贯地学习某种需要深入理解的知识的时候,是怎样的分发模式在帮助读者一层一层地去持续地消费呢? 43 | 44 | ### 掘金小册 45 | 46 | 围绕着上述两个核心的问题: 47 | 48 | 1. 是什么内容载体可以去满足开发者明确的、系统性的内容需求? 49 | 2. 是什么内容分发模式可以满足开发者快速有效地获得这样的内容? 50 | 51 | 我想,掘金决定去做的小册就是为了解决上面的问题: 52 | 53 | 1. 每一本小册是一个解决具体问题的成体系的内容,确保读者的问题可以在小册内容下得到完整的解答。 54 | 2. 小册之间应该有明确的体系关系,让读者根据自己的需求可以一个一个连续阅读消费,而这样的一个完整的学习路径可以成为读者选择下一个去消费的内容的主要依据。 55 | 56 | 举个例子:当我想要明确地学习如何用 Python 做一个爬虫系统的时候,掘金小册里可以找到它,但是这个内容可能需要你去了解 Python 的基本语法、也可能需要你去了解一些前端的基本知识,这一个个的具体的内容需求形成一个内容的网络,当这些小册交织成一个完善的内容网络,也就成为了一个需要深度学习内容的分发模式。 57 | 58 | 在这个核心功能需求之上,我们同样希望解放作者的劳动力,让作者专注于内容,提高生产内容的效率。只要能完整地解答小册核心的内容需求,作者不再需要长篇累牍地完成数百页的写作,因为里面大多数的内容可以在掘金的其他内容库中找到。而线上售卖的效率、作者更高的收入比例、读者作者间的社群关系,可以更好地帮助作者完善内容,获得应得收入。 59 | 60 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6a4df121715140ef81bdf07b1cd231f1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 61 | 62 | 一本掘金小册,应该是**小篇幅**、**高浓度**、**成体系**、**有收益**的内容。既满足读者的学习需求、也满足作者的创作和收益需求,而个中效率的提升就依赖着掘金小册产品模式的优化。 63 | 64 | ![每一本掘金小册都有专属的掘金设计的封面](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0de5c979c10c4980b41e9829b9ab4843~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 65 | 66 | 特别值得一提的是,每一本小册都是作者的作品,掘金官方会为它单独设计一个漂亮的封面。而我们也期待有千百个小册被创作出来,成为一个完整的技术内容库。 67 | 68 | ### [申请成为小册作者](https://sourl.co/zDEMwJ "https://sourl.co/zDEMwJ") 69 | 70 | [原文地址](https://juejin.cn/book/6844723704639782920/section/6844723704736251917) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/13-使用掘金:❎ 掘金社区行为规范&处罚措施.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:❎ 掘金社区行为规范&处罚措施 2 | 3 | 为了帮助掘友们更好地使用掘金社区发布和阅读文章,我们总结了掘金社区的几类常见违规行为,并公布相应的处罚措施。同时,也希望掘友们可以配合我们一起监督和维护。毕竟,掘金社区并不是独立存在的,它由每一位掘友组成的,只有掘友们的共同维护,才会让社区的生态环境变得更为适宜。❤️ 4 | 5 | # 社区内容发布规范 6 | 7 | ## 一、抄袭行为 8 | 9 | 抄袭是所有内容社区的大忌,这种行为既不尊重个人的版权,更不尊重知识的价值。所以,掘金社区对抄袭帖零容忍,掘金的工作同学会定期对文章进行“反抄袭”的抽查,同时,大家也可以主动举报抄袭的文章。 10 | 11 | **适用情况:** 12 | 13 | * 情况1:像素级抄袭或大篇幅抄袭 14 | 15 | * 在无转载许可的前提下,全文超过80%的内容完全复制其他文章。 16 | 17 | * 小于40%的内容与其他文章重合认定为引用,大于40%的文章内容重合认定为抄袭。 18 | 19 | * 情况2:洗稿型抄袭 20 | 21 | * 两篇文章具备结构相似,主要内容重合度高,代码基本一致等特征,会被判断为洗稿。 22 | 23 | * 情况3:利用ChatGpt等AIGC工具,发布文章。 24 | 25 | * 人工智能生成技术文章,或者其他技术体裁内容在掘金直接发布。 26 | 27 | **处罚措施:** 28 | 29 | * 抄袭文章一经投诉/举报发现,视抄袭严重程度自见或删除处理。 30 | * 人工智能生成的文章,全部不推荐,且都纳入笔记范围。一旦发现有利用类似文章参加掘金活动的行为,永久取消活动参与资格,并进行账号降权,不排除拉黑禁言等处罚策略。 31 | 32 | * 如果是参与掘金社区有奖活动的文章,视抄袭严重程度自见或删除处理,同时取消其参与的活动以及双月上线的所有活动的评奖评优资格。举例:2022年1月10日,掘金发布了某有奖征文活动,小A在参与该活动中,出现抄袭行为,那么小A在该活动中的评奖评优资格被取消,同时,如果小A参与了2022年1月-2月的其他有奖活动,也一并取消评奖评优资格。 33 | 34 | **掘力值扣减措施:** 35 | 36 | * 首次抄袭发现扣除抄袭/洗稿文章所获得的所有掘力值 37 | * 连续两次抄袭扣除抄袭/洗稿文章所获得的双倍掘力值 38 | * 连续三次及以上抄袭扣除抄袭/洗稿文章所获得的三倍掘力值 39 | 40 | ## 二、刷量行为 41 | 42 | **适用情况:** 43 | 44 | * 情况1:通过机器刷量,提升文章阅读量 45 | * 情况2:通过机器或批量注册小号,給自己的文章点赞,提升文章点赞量 46 | * 情况3:通过机器或批量注册小号,参与社区活动薅羊毛 47 | * 情况4:通过脚本或者其他未知方式,批量对他人或者自己的文章沸点进行点赞评论 48 | 49 | **处罚措施:** 50 | 51 | * 如果作者刷阅读量,官方第一次发现、第二次发现,将通过系统消息发送警告,第三次直接取消创作权限(权限不再恢复),同时禁言 30 天。创作权限包括但不限于添加多个标签权限、文章自动推荐至首页权限、资讯创作权限。 52 | 53 | * 如果作者刷阅读量严重,官方第一次发现,将通过系统消息发送警告;第二次直接取消创作权限(权限不再恢复),同时禁言30天。 54 | 55 | * 如果作者通过机器或批量注册小号给自己的文章点赞,一经发现,官方将通过系统消息发送警告,同时取消创作权限 30 天。 56 | 57 | * 如果作者通过机器或其他方式,批量给其他作者文章点赞,給其他作者造成严重打扰,官方将通过系统消息发送警告,并永久禁言。 58 | 59 | * 通过脚本或其他方式,批量给其他作者文章点赞,給其他作者造成严重打扰,官方将通过系统消息发送警告,并永久禁言。 60 | 61 | * 如果作者通过机器或批量注册小号参与社区活动薅羊毛,一经发现,官方将直接封禁所有账号并取消活动资格。 62 | 63 | * 掘力值扣减措施: 64 | 65 | * 首次发现刷量发现扣除刷量文章所获得的所有掘力值 66 | * 连续两次发现刷量扣除刷量文章所获得的双倍掘力值 67 | 68 | ## 三、发布恶意内容 69 | 70 | **适用情况:** 71 | 72 | * 发布诋毁谩骂、暴露他人隐私、引战或其他恶意内容,包括文章、沸点、评论,这类内容极不友善,并且引发矛盾,破坏社区氛围。 73 | 74 | **处罚标准:** 75 | 76 | * 一经举报发现,官方将自见/删除处理以上内容,通过系统消息警告作者,并禁言 7 天。如多次发布恶意内容,一经核实,永久封禁。 77 | 78 | ## 四、发布触犯国家相关法律法规的内容 79 | 80 | **适用情况:** 81 | 82 | 互联网信息服务管理办法规定,互联网信息服务提供者不得制作、复制、发布、传播含有下列内容的信息: 83 | 84 | * 反对宪法所确定的基本原则的; 85 | * 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的; 86 | * 损害国家荣誉和利益的; 87 | * 煽动民族仇恨、民族歧视,破坏民族团结的; 88 | * 破坏国家宗教政策,宣扬邪教和封建迷信的; 89 | * 散布谣言,扰乱社会秩序,破坏社会稳定的; 90 | * 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; 91 | * 侮辱或者诽谤他人,侵害他人合法权益的; 92 | * 含有法律、行政法规禁止的其他内容的。 93 | 94 | **处罚措施:** 95 | 96 | * 如作者发布违反法律的内容,官方将删除其所有文章、沸点、评论,永久禁言/拉黑账号,情节严重将举报相关公安机关予以处理。 97 | 98 | ## 五、发布广告内容 99 | 100 | **适用情况:** 101 | 102 | * 广告类内容以推广、曝光、品牌宣传为目的,会对其他用户造成骚扰,影响社区的生态。个人在其他平台的付费教程、视频教程、书籍推广等内容也属于此范围。 103 | 104 | **处罚措施:** 105 | 106 | * 广告类内容一经发现,根据严重程度,进行自见/删除处理,并对发布者进行警告、禁言等相关处理。 107 | 108 | ## 六、发布虚假信息内容 109 | 110 | **适用情况:** 111 | 112 | * 虚假消息,包括文章内链接跳转第三方钓鱼网站、木马、病毒网站等。 113 | 114 | **处罚措施:** 115 | 116 | * 虚假信息内容一经发现,将删除相关内容,同时禁言发布者 30 天。如果故意多次虚假钓鱼信息,一经核实,将对发布者拉黑账号处理。 117 | 118 | * 冒充他人发布的文章也属于发布虚假消息范畴,一经发现,删除其所有文章、沸点并拉黑账号。 **最后,我们真诚地希望,每一篇文章都出自你的原创,在掘金,每一份知识,都会得到尊重。** 119 | 120 | ## 七、头像、昵称违规 121 | 122 | **适用情况:** 123 | 124 | * 违反社区基本规范,利用第三方工具,绕过官方规定设置,违规上传动图或差异化图片以及擦边动图。 125 | 126 | **处罚措施:** 127 | 128 | * 头像只支持支持 jpg、png、jpeg类型,对于其他格式的头像变更,一律审核不通过。 129 | * 多次上传擦边动态图,封禁30 天以上头像变更权限。 130 | 131 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795380232200) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/11-使用掘金:📐 掘金社区内容的标准和规范.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:📐 掘金社区内容的标准和规范 2 | 3 | ## 内容规范 4 | 5 | ### 标题规范 6 | 7 | * 标题尽量简单、简约、不夸张 8 | * 禁止标题党,夸大、错误的信息 9 | * 掘金官方有权利根据规范修改标题 10 | 11 | ### 配图规范 12 | 13 | * 一定要图文相关,图片与文章内容有强相关联系,突出主题,并包含与主题强相关的技术名词 14 | * 图片背景简单,图片背景是单一的颜色或者纯色 15 | * 不要选择太大众化的内容,文章封面配图尽量选择独特、新颖的图片,有利于吸引读者 16 | * 必须遵守**掘金图片政策** 17 | 18 | ### 专栏规范 19 | 20 | > 好文章标准 技术文章是指涉及技术(这里是指程序设计)的文章,与开发相关的**技术分享**、**开发技巧**、**工具介绍**、**技术设想**、**业界评论**、**自我创作**、**职业心得**、等。 21 | 22 | 技术文章可以是: 23 | 24 | **技术细节型** 25 | 26 | 技术细节型的文章侧重于解决某个具体的问题,比如某个开源库中存在什么bug?如何解决这个bug?如何使用某个具体的技术?等等 27 | 28 | * [CocoaPods 都做了什么?](https://juejin.cn/post/6844903445367881735 "https://juejin.cn/post/6844903445367881735") 29 | * [3 分钟搞定 Vue 2.0 服务端渲染](https://juejin.cn/post/6844903447007854606 "https://juejin.cn/post/6844903447007854606") 30 | 31 | **干货型** 32 | 33 | 这类文章是作者对于某一块的内容进行的总结,具有较高的收藏价值,是属于较为受欢迎的一类文章,也更加容易在社区内和社区外传播。 34 | 35 | * [关于RxJava最友好的文章](https://juejin.cn/post/6844903447280484360 "https://juejin.cn/post/6844903447280484360") 36 | * [iView:一套基于Vue的高质量UI组件库](https://juejin.cn/post/6844903445812477965 "https://juejin.cn/post/6844903445812477965") 37 | 38 | **翻译文章,如翻译英文的技术文章** 39 | 40 | 将好的外文文章翻译为中文也是具有很高的价值,比如目前掘金官方在运营的[掘金翻译计划]。当然,给予我们对原创的尊重,如果是翻译的文章,尽量在文章前面加一个[译],并在文章的显要位置注明原作出处 41 | 42 | * [\[译\] 我最终是怎么玩转了 Vue 的作用域插槽](https://juejin.cn/post/6844903795516768263 "https://juejin.cn/post/6844903795516768263") 43 | * [Android7.0写给开发者的一封信(官网同步翻译)](https://juejin.cn/post/1 "https://juejin.cn/post/1") 44 | 45 | **实践总结型** 46 | 47 | 实践总结型的文章更像是技术细节型和干货型的结合,面向特定领域的技术,也属于干货。对于这一类型的文章,更依赖于代码,读者需要根据代码一步步往下深入 48 | 49 | * [Android和iOS开发中的异步处理(一)——开篇](https://juejin.cn/post/6844903441727225870 "https://juejin.cn/post/6844903441727225870") 50 | * [Android和iOS开发中的异步处理(二)——异步任务的回调](https://juejin.cn/post/6844903441832083463 "https://juejin.cn/post/6844903441832083463") 51 | * [Android和iOS开发中的异步处理(三)——执行多个异步任务](https://juejin.cn/post/6844903441832083470 "https://juejin.cn/post/6844903441832083470") 52 | 53 | **行业见解,职业选择** 54 | 55 | 通过自己在行业的理解和沉淀,加以事实的依据,帮助他人更完整地理解行业的发展情况以及作为开发者的职业选择、职业成长,让读者在技术之外全面提升 56 | 57 | * [小菜前端的技术栈是如何规划和演进的](https://juejin.cn/post/6844903807340511246 "https://juejin.cn/post/6844903807340511246") 58 | * [我在淘宝做前端的这三年 — 第一年](https://juejin.cn/post/6844903783198097416 "https://juejin.cn/post/6844903783198097416") 59 | 60 | 此外: 61 | 62 | * 文章的封面图和内容中的配图必须遵守掘金图片政策 63 | * 文章内容须遵守掘金社区原则和价值观 64 | 65 | ### 不受欢迎的内容 66 | 67 | * **很水的帖子式文章**:做个人备忘、记录、笔记类的内容更应该是草稿而不是正式发表的文章 68 | * **杂乱无序的内容**:排版混乱,文章结构不清晰,内容逻辑不符都可以被定义为垃圾文章 69 | * **任何推广(招聘、广告、SEO等)方面的内容**:广告如:“个人视频教程、书籍推广等内容”,这类内容属于不允许用户发布的内容范围,是对其他用户危害最大的内容。一经发现,立即删除,并对发布者给予处理 70 | * **线下活动类**:请勿私自发布线下活动类内容,如有需要请联系掘金市场部工作人员,发邮件至 `bd@xitu.io`。 71 | * **标题党式的文章**:例如夸张式标题“0202 年了,还在用 vue2.x ?”悬念式标题“震惊:这篇VUE的干货竟然说的这么全!”强迫式标题“迄今为止最全的面试题,不看后悔一辈子?” 72 | 73 | ### 评论规范 74 | 75 | * 任何用户都可对掘金内的任何文章进行评论 76 | * 评论需要紧紧围绕文章的主要内容展开 77 | * 对文章内容或者部分观点提出疑问、回复和解答其他用户的疑问、对文章内容拓展延伸、对文章中的错误观点友善的指正等行为都是掘金所倡导的 78 | * 评论内容必须客观、公正,不得对他人有不文明的言语和人身攻击行为 79 | * 不能发布任何推广(招聘、广告)方面的内容 80 | * 须遵守掘金社区原则和价值观 81 | * 但凡违反上述规则的评论会被删除,甚至采取封号处理 82 | 83 | ### 违规内容的处理 84 | 85 | * 但凡属于不受欢迎的内容,或违反**社区指导原则**和**优质内容定义**的文章给予隐藏、甚至删除的处理 86 | * 对于多次恶意发布违规内容的用户,将收回**掘金优秀作者**的相关权限,情节严重者则给予封号处理 87 | 88 | ### 掘金图片政策 89 | 90 | * 请勿上传涉及他人隐私、淫秽色情、暴力、血腥、违反国家法律法规的任何图片 91 | * 用户需要对自己所上传的图片版权负责,掘金不承担因此带来的任何第三方责任及法律风险 92 | * 违反使用规则的内容在被发现后立即删除,并对涉及的用户账号进行相应的处理,甚至采取封号处理 93 | 94 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795380232199) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/25-李志明:采用 CXL 加速内存架构演进.md: -------------------------------------------------------------------------------- 1 | # 李志明:采用 CXL 加速内存架构演进 2 | 3 | ![幻灯片1.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/21c9d96f599441c5ab0e03912f262625~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1156e996e0c46ce964379f5eef27b3e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e4ee87b63f654a339f4eb4362bb9c730~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f99f630618534fca829fd82f38fac324~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/68033ddfef8144c29e423d026057474b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8404e6f494264beb9c747e7b78e14381~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/63cb550e0fee4a328a357332536b6f37~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/51c6ede88626492dbac394bf15ed4321~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e08afd1680b404ba007001f3bd66fc8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9b197ef1b8594e1aa8f8e979479dc4ac~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70590d3313244091849856112d9d4050~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a16ced85b58147c280980c472ede2bf7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e0abf0a951224086b7a458054c7b5ece~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/867a92663194420996db20eb2da67ac7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c0f38f06c496429e8d93c4b984f1c252~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4dd3247ea11f42d092a92aa21affa83d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f93b56725fef479b90248e3dc4a66ab3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f35f22b842fd44b4bd6bb8b5632f8117~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4688e2e96334dada8c70135b25eed71~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/879ffe650feb4c6a97dd5084b6e074b6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e8317fa295bb442c97a19a514e455dbb~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6292427c2e04fde93ab2876b37eb0c0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127232960343834636) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/32-翟佳:从0-1:锻造开源创业团队的道与术.md: -------------------------------------------------------------------------------- 1 | # 翟佳:从0-1:锻造开源创业团队的道与术 2 | 3 | ![幻灯片1.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab3c7cd61db54103ae47fd35c369f2b6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1e0fd6a40b434722ab33c9afde749c2c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f463f5d77d8b460198ce4e5cf66b3dd7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1065155cce04ba0ada57a0b08f3b704~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e0f90f0b2494afebac9ba59f9b66c4d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70df8308a5584140a398461eb98d5378~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/11f51819796741d0a8bab89aa1aa444d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/da5e675cb80e49a78985db8cd95f61b1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f140081f8c43475db68ece05c3703d77~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65ea63f651d04a6eb5fb621e6ae74b43~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0279bcd37d0f4a7aaca951e7f9204b5e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/415282fbc5d24cd0b4bd0c90a6252c95~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6077cabd82aa44b1b90e3c82acf9ad14~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b77eaefbfce14b039849691a0399c97a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5bdbdbbf6fe24ac7a3c5b2d91f366f38~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6c9b5ee315d94274aea70589c529c852~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ffdb116eaaf842c5be7a3877f8e51d85~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4170aa6b2174af1a08550a1027aa176~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6ddcbb518240408c9aff93cc10e9757b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/68039ae358d5487689c75a10f86f471a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26697c83a182405bbb7be6c34a3c0fd2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f6e2ec2798f142258a51890361b350a7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127553016542003233) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/35-陈驰远:CTO 职责体系构建:商业、团队和技术.md: -------------------------------------------------------------------------------- 1 | # 陈驰远:CTO 职责体系构建:商业、团队和技术 2 | 3 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.001.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ea430920cc2f406a8f0ff6ca8908b977~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.002.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b1ef84ae194b47f5b408a6d04158562f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.003.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6eb3327e91864a23b7cc1c383ae81c51~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.004.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5510af6303ec46aa9052b5c6bd87bcfe~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.005.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6b44980e584467f872199d8dda642b2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.006.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/734cd42dc2f6489786e02758af40d48f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.007.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/07b7072195f543f68bbdd2ec7b7f35d1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.008.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f602f2e642534ee49994954eaed3193f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.009.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b51d39d7a06c4129a95a9cb4508fe4f7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.010.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/622b43ab2b0a4ba6a839bd4bc101c76f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.011.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e0c2dafa7264c04952dda0a5e71ddb5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.012.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b66c82f5fe0743fba352e3f65f7e7c14~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.013.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/404fe196c03b4dafb5f9256f93da1123~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.014.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/04ef92a3db7144a3905e1f6fdf02d5c3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.015.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d7325e5605334cd1b490571ec20ec328~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.016.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fb68cf52f39c4aaf9b2e53f59d275dfe~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.017.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/78f9d7d2e34b4a66aab4768988a789b4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.018.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f02c5b63a31442af8b6b10bfb05816f4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![2022年稀土分享-陈驰远-青橙科技-0715-03.019.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ef508e21f349417792d190c1184f0502~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127534705452253195) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/3-何晓冬:多模态智能人机对话交互技术的发展与产业实践.md: -------------------------------------------------------------------------------- 1 | # 何晓冬:多模态智能人机对话交互技术的发展与产业实践 2 | 3 | ![何晓冬_页面_01.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70c796aa579d45d399de95c13525123a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![何晓冬_页面_02.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1a32d4b0c8d49bda963490f8d2f90b9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![何晓冬_页面_03.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/47397be8a6a14e4d990eb67cfafd80c3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![何晓冬_页面_04.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/de1121b428464d3f810700e911960b77~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![何晓冬_页面_05.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d19e651acb24477a15b9b184a5ebe26~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![何晓冬_页面_06.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dbea6ae22a814b629b9629c4650a3d7b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![何晓冬_页面_7.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab8cc07bad2a4bcea29deaacf8da1b95~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![何晓冬_页面_08.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/53824411e3d74ecca635e6938b31abc4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![何晓冬_页面_9.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5ae92bc74981419799e5a2238c2baeb4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![何晓冬_页面_10.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/38f032eb4fd44953919193f30d7b1926~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![何晓冬_页面_11.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5aa47d381f6a466885e71392b35a90a1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![何晓冬_页面_12.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ef93500f13c24eb9a31bcddfe3e07bae~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![何晓冬_页面_13.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fa95dd0dc9d34c10ae64da653d57f73b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![何晓冬_页面_14.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/23f6cc2c6b2543a7af73bc41ef5f6244~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![何晓冬_页面_15.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f08f68de60c14b9ca5c6121be5c82325~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![何晓冬_页面_16.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/33dc1c305b2442eea6530c7df989f94f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![何晓冬_页面_17.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a2894f023e5c477682eea06e341b3652~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![何晓冬_页面_18.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/521a4e81e8694ce8bfaacbd093409046~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![何晓冬_页面_19.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/756063c25ced41e994b67abc3788ff3f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![何晓冬_页面_20.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ad663dfb928743a58b377a4d2a32c7ab~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![何晓冬_页面_21.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d860db1b395f4c298314fdad9768d57b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![何晓冬_页面_23.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8d166ebf4dea4589aa30311da4d9f2e2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127158975010701316) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/47-王越:创作正当时,相伴共成长.md: -------------------------------------------------------------------------------- 1 | # 王越:创作正当时,相伴共成长 2 | 3 | ![稀土掘金创作者专场-王越7.6_01.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a213834389c4f1da509d433dd586212~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![稀土掘金创作者专场-王越7.6_03.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4f5eb7e97f1442c18c8733434383e266~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![稀土掘金创作者专场-王越7.6_04.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/69449c7b7c3f47509819c1ef75bf592d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![稀土掘金创作者专场-王越7.6_05.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5d35f161ed44426fbf8b9a69d14270dc~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![稀土掘金创作者专场-王越7.6_06.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/96c73a39a5a94e5280056f10d9b57622~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![稀土掘金创作者专场-王越7.6_07.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e28601d5b0484afea410ef8c9a62ed99~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![稀土掘金创作者专场-王越7.6_08.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0ac970683f834fc4a1cb14169f0c0d15~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![稀土掘金创作者专场-王越7.6_09.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f247f99252c0422fbf6e35e039f9343f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![稀土掘金创作者专场-王越7.6_10.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eeb8f709b99449b4b13ad73006926b01~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![稀土掘金创作者专场-王越7.6_11.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/abdad16cc92842d1a2c8272bc4fbd079~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![稀土掘金创作者专场-王越7.6_12.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8b43affb44f8485492e74a6b0aae47d1~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![稀土掘金创作者专场-王越7.6_13.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e02ed2e58b424c018665b69e626e2f14~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![稀土掘金创作者专场-王越7.6_14.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec9e8bae79f547b5aa58dfad940abbd8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![稀土掘金创作者专场-王越7.6_15.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/198f81153bb543169e3183cf85de3fa8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![稀土掘金创作者专场-王越7.6_16.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6fd0a6fe603c40169741458926783e8f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![稀土掘金创作者专场-王越7.6_17.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/29196fa95f4e44fb8677181e058e6cc8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![稀土掘金创作者专场-王越7.6_18.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/39541c0f696e46318f7a00d1b4b1c4af~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![稀土掘金创作者专场-王越7.6_19.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2834bd274f3a4953907d2cb1d425479d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![稀土掘金创作者专场-王越7.6_20.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/95f2e31908624a3a834b7347a5a76d5c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![稀土掘金创作者专场-王越7.6_21.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f7d57673d1344b6aa80a05e78d60e00a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![稀土掘金创作者专场-王越7.6_22.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6a1d20624b6b4f71b4f861b62870cecc~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127833785432801294) -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "juejinbooksspider", 3 | "type": "module", 4 | "version": "1.0.0", 5 | "packageManager": "pnpm@7.26.3", 6 | "description": "掘金小册爬虫脚本。将小册保存为markdown,pdf,html格式", 7 | "author": { 8 | "name": "h7ml", 9 | "github": "https://github.com/h7ml", 10 | "mail": "h7ml@qq.com" 11 | }, 12 | "license": "Apache-2.0", 13 | "homepage": "https://h7ml.github.io/juejinBooksSpider", 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/h7ml/juejinBooksSpider.git" 17 | }, 18 | "bugs": { 19 | "url": "https://github.com/h7ml/juejinBooksSpider/issues/new" 20 | }, 21 | "keywords": [ 22 | "稀土掘金", 23 | "掘金", 24 | "掘金小册", 25 | "掘金小册爬虫", 26 | "掘金小册爬虫脚本", 27 | "掘金小册markdown", 28 | "掘金小册pdf", 29 | "juejin", 30 | "book", 31 | "spider", 32 | "markdown", 33 | "pdf", 34 | "html" 35 | ], 36 | "sideEffects": false, 37 | "main": "dist/index.cjs", 38 | "types": "src/types.d.ts", 39 | "scripts": { 40 | "dev:all": "cross-env spiderAll=false tsx ./src/index.ts", 41 | "dev": "tsx ./src/index.ts", 42 | "build": "node ./scripts/build.js", 43 | "test": "node ./scripts/build.js && node ./dist/index.cjs https://juejin.cn/book/6844723704639782920", 44 | "build:github": "cross-env APP_BASE_PATH=/juejinBooksSpider/ npm run docs:build", 45 | "docs:dev": "cross-env NODE_ENV=development vitepress dev docs", 46 | "docs:build": "vitepress build docs", 47 | "prepublish": "npm run build", 48 | "format": "prettier --write .", 49 | "lint": "eslint .", 50 | "lint:fix": "eslint . --fix", 51 | "lint:md": "markdownlint-cli2 '**/*.md'", 52 | "prepare": "husky install" 53 | }, 54 | "devDependencies": { 55 | "@antfu/eslint-config-ts": "^0.39.3", 56 | "@femm/prettier": "^1.1.0", 57 | "@node-rs/jieba": "^1.6.2", 58 | "@types/fs-extra": "^11.0.1", 59 | "@types/inquirer": "^9.0.3", 60 | "@types/lodash-es": "^4.17.8", 61 | "@types/node": "^20.4.8", 62 | "@types/puppeteer": "^7.0.4", 63 | "@vitejs/plugin-vue-jsx": "^3.0.0", 64 | "@w3ctech-editorial-department/vitepress-auto-configure-nav-sidebar": "^1.0.0", 65 | "chalk": "^5.3.0", 66 | "cross-env": "^7.0.3", 67 | "dayjs": "^1.11.9", 68 | "dotenv": "^16.3.1", 69 | "esbuild": "^0.18.19", 70 | "eslint": "^8.41.0", 71 | "fs-extra": "^11.1.1", 72 | "hpdf": "^1.0.3", 73 | "html-to-md": "^0.8.3", 74 | "husky": "^8.0.3", 75 | "inquirer": "^9.2.10", 76 | "lint-staged": "^13.2.2", 77 | "log4js": "^6.9.1", 78 | "markdownlint-cli2": "^0.12.1", 79 | "prettier": "^2.8.8", 80 | "puppeteer": "^21.0.1", 81 | "rimraf": "^5.0.1", 82 | "sitemap": "^7.1.1", 83 | "tsx": "^3.12.7", 84 | "typescript": "^5.1.6", 85 | "vite": "^4.1.4", 86 | "vitepress": "1.0.0-rc.39", 87 | "vitepress-plugin-back-to-top": "^1.0.1", 88 | "vitepress-plugin-google-analytics": "^1.0.2", 89 | "vitepress-plugin-life-progress": "^0.0.2", 90 | "vitepress-plugin-nprogress": "^0.0.4", 91 | "vitepress-plugin-search": "1.0.4-alpha.19", 92 | "vitepress-plugin-sidebar": "^0.0.7", 93 | "vitepress-plugin-tabs": "^0.5.0", 94 | "vue": "^3.4.15" 95 | }, 96 | "volta": { 97 | "node": "18.0.0" 98 | }, 99 | "licenses": [ 100 | { 101 | "type": "Apache-2.0", 102 | "url": "https://github.com/h7ml/hooks/tree/main/LICENSE" 103 | } 104 | ] 105 | } 106 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/3-了解掘金:⛏️ 掘金的功能简介.md: -------------------------------------------------------------------------------- 1 | # 了解掘金:⛏️ 掘金的功能简介 2 | 3 | ## 网站、移动应用、浏览器插件 4 | 5 | 掘金社区的内容可以通过不同的产品访问,核心有 3 个: 6 | 7 | ![掘金社区功能](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9b5dcdfbbac74ca4ab5118963512a421~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | 1. 网站:[juejin.cn](https://juejin.cn "https://juejin.cn") 10 | 2. 移动应用:[juejin.cn/app](https://juejin.cn/app "https://juejin.cn/app") 支持 iOS、Android 11 | 3. 浏览器插件:[juejin.cn/extension](https://juejin.cn/extension "https://juejin.cn/extension") 12 | 13 | ## 账号 14 | 15 | 掘金社区有自己的唯一账号,既可以使用手机号注册,也可以通过微博、微信、GitHub 第三方登录。 16 | 17 | ## 专栏 18 | 19 | 掘金的核心功能就是让掘友生产、分享有价值的技术内容。作者可以在导航栏处(如下图)生产不同的内容。 20 | 21 | ![生产入口](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f636121d465d425480309600de152ffc~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | 在掘金上直接写作的技术文章叫做`专栏`。特别值得注意的是,在写作或分享完成后一定要配置合适的分类及标签。这样掘友们才可以更方便地找到您的内容,同样您的内容也才会被推荐给更多的用户。 24 | 25 | ### 掘金标签 26 | 27 | ![掘金标签](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b037413cf050430bb9a440021b80ed57~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | 掘金上有许多的技术[标签](https://juejin.cn/subscribe/all "https://juejin.cn/subscribe/all"),用以定义大家分享的技术内容。请大家根据自己的需要来关注合适的内容标签,基于此我们会不断推荐相关的内容和优秀作者给你。 30 | 31 | ## 沸点 32 | 33 | [沸点](https://juejin.cn/activities "https://juejin.cn/activities")是掘友们的朋友圈,这是一个懂得开发者酸甜苦辣的地方。无论你是累了、高兴了、悲伤了、惊呆了,这里都有你看不完的新鲜事儿和聊不完的掘友们。日常刷一刷,上班刷一刷,午休刷一刷,睡觉刷一刷,和掘友们一起成长!这里我会推荐几个有趣的话题给你: 34 | 35 | * [开源推荐](https://juejin.cn/topic/6824710203196309518 "https://juejin.cn/topic/6824710203196309518"):来推荐你觉得优秀的开源项目,不限于开源框架、开发工具 36 | * [内推招聘](https://juejin.cn/topic/6819970850532360206 "https://juejin.cn/topic/6819970850532360206"):与大厂面对面,零距离。 37 | * [掘金相亲](https://juejin.cn/topic/6824710202416332807 "https://juejin.cn/topic/6824710202416332807"):千里姻缘掘金牵,有情人终成眷属。 38 | * [上班摸鱼](https://juejin.cn/topic/6824710203301167112 "https://juejin.cn/topic/6824710203301167112"):来分享下你上班看到的好东西吧 39 | * [应用案例](https://juejin.cn/topic/6824710202785267719 "https://juejin.cn/topic/6824710202785267719"):分享好玩、高颜值、实用的 APP、插件、扩展、小程序、H5… 40 | * [开发工具](https://juejin.cn/topic/6824710202000932877 "https://juejin.cn/topic/6824710202000932877"):来推荐一些你常用的能帮你提高效率的开发工具,不限于 IDE,开发框架,构建工具 41 | * [New 资讯](https://juejin.cn/topic/6824710203464761352 "https://juejin.cn/topic/6824710203464761352"):来分享你刚看到过的商业科技 / 互联网 / 科技数码资讯吧 42 | 43 | 掘友们也可以访问[话题](https://juejin.cn/topics "https://juejin.cn/topics")看到更多有趣的沸点内容! 44 | 45 | ## 小册 46 | 47 | [掘金小册](https://juejin.cn/books "https://juejin.cn/books")是一个小篇幅、高浓度、成体系、有收益的技术学习平台,目的是让优秀的开发者基于自己的经验写出成体系的高质量技术内容。好的内容需要付费,而掘友们可以根据自己的需要来阅读和学习各式各样的好内容。 48 | 49 | ![如何写一本掘金小册](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e90235d6a8d741f1ba29a73c5ad55851~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 50 | 51 | * 如果想要了解更多,请阅读《[如何写一部掘金小册](https://juejin.cn/book/6844723704639782920 "https://juejin.cn/book/6844723704639782920")》 52 | * 如果想要申请小册作者,您可以 53 | 1. 获得 `Lv5` 及以上的等级,[更多详情](https://juejin.cn/book/6844733795329900551/section/6844733795371843597 "https://juejin.cn/book/6844733795329900551/section/6844733795371843597") 54 | 2. 在《[如何写一部掘金小册](https://juejin.cn/book/6844723704639782920 "https://juejin.cn/book/6844723704639782920")》最后一节有具体申请方法 55 | 56 | ## 字学 57 | 58 | 字学是字节跳动联合掘金为学生用户打造的专属平台,旨在让学生用户通过自我学习获得成长,字学将提供知识、技能、品格这三个方面的综合能力培养,全面提升学生的IT职业胜任力。 59 | 60 | 在字学,你可以亲切地称呼其他人为“学友”,与“学友”们一同自在地学习,参加“字学”的活动及课程就能获得相应的学习卡,解锁不同权益。 61 | 62 | 未来,字学还将联合国内外多所顶级高校联合开发“IT职业胜任力课程体系”,构建胜任力培养模型,另外,我们还会举办多种线下实践活动,不仅有玩法多样的技术训练营、备受广大学生喜爱的Byte Camp,还有新奇有趣的字节跳动OpenDay等你线下来体验! 63 | 64 | 在字学,字在学习,跳动青春 。 65 | 66 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795371843592) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/28-刘建航:AI 专有芯片如何平衡高性能和通用性.md: -------------------------------------------------------------------------------- 1 | # 刘建航:AI 专有芯片如何平衡高性能和通用性 2 | 3 | ![幻灯片1.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ae837e7050a4c819a911d821d4e6fb9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e017716d346e4d6ca0f296b2c8fc4535~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/214f336756854935ba663f6571c33fd2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6272a3bd8ecd47ef90cf57f877308d8a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8cff01832fad4fde9946af3fb7f0efbf~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e6ba78abc2d248a4a3b1dbafc42a633c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9e2fc552f309448e86461ab58216712a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3e7a0c4026ca425db969a2e28cf4ea64~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ee05c55be3454d17ac2ca3f6c929aa3c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/426ec5a14f004ba592cf86f988afcfc6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c713d9d4f4454faebc78b513d77193a7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b1e260c226804223b6b47b4f2201c3f3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/05201d95b9044ab2a44dc31b9a196bc2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c440cc6efe4745c2bee1a06572a5b631~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45af3125712045d095dcfbd294981c1a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8a265653664a4a538a082445d1302d6d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d85ce56c89a74d579ba4d9c2b70c531c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/220946c318dd47aab703ebb543ad4dcd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4a08f7f23abb467b81f97c9927337ee4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/611dc912abdc4cbfb309d9e28b76778d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dfa8db0b943c42df97f82b3e3fda01c6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f5aa2ef4d09e43f8a5552b05d9f85a43~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | ![幻灯片23.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7028799d092b4480a601fbab2bcb1c3a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127227694386774027) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/30-黄东旭:在全球化和多云环境中看开源软件的商业化探索.md: -------------------------------------------------------------------------------- 1 | # 黄东旭:在全球化和多云环境中看开源软件的商业化探索 2 | 3 | ![幻灯片1.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1f99258ec8424a728a01b9f5ef9695f9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8fc961bd6504528b9b3864e3c7da423~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5ac96ebd59fb44b4b645c689b1c40562~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/939ce56aba48470d97f01b73d1a90884~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6c54de37d1494bbb87c3d8cb5876da90~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/60bf086e276e4fb1a3d2ce7fb42fe00d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0ef589e4264547518d1b2fecbcf02416~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/218632b905594cf7825184d60e8b80f8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65a984975abc4b0c9ea21219d0b62852~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d4115cc6f6b043b2981c3c8c8d3676f8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9301328dd82f4ab7b70ae2eee5375e06~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/92a03b51de1e40438ee40ee9e8ef88d3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d79c87a0350443329c0cc9c36212769b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fdad86e6171a42e096a105d10138f684~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/37fb7de978c54ca2ab481b700c5962dd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6a747083ddb47b0b7eb79d3920f93a2~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf53223a3ed745fd804008b86df39649~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7c42b75d32aa4722a39e10b42c23ac95~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9ccd02a670154c499cb186ac2d588cb3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5dcdbe96b286408983be2e04d73f6653~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ca50fed88437485cb3bbe437aff7c04a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba8262e66c6f49a5b2ca9dc0ef7adc4d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | ![幻灯片23.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f85668f663af430ca4335a4591a72d37~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127553016172904481) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/56-夏磊:如何利用 Intel 加速工具构建端到端的高性能应用.md: -------------------------------------------------------------------------------- 1 | # 夏磊:如何利用 Intel 加速工具构建端到端的高性能应用 2 | 3 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_01.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/571006ab624b4464b8be2e1107f5046c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_02.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3e041eb8a92d40778bcc854edda9c3bd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_03.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1ca716b94c24b539511634071d5b4c4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_04.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4cb7e17f87d49fd93d3321eeb7fd427~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_05.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3b55b7a211b3462dbc95750f258c70b3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_06.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f735e4e2c7a476683c1c25c3106e81a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_07.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/94af9b3964724a1fbdabe355af5b4f29~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_08.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bc60f881554248da80b0a5b4b0b05648~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_09.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/195cee5399bc418284ed391acfc58618~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_10.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7265647710d74bc29e7a4f82d9858b99~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_11.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eff0efcd31ae4c7fbeed86a6481ab2db~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_12.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a3c5de03b3484b0db4a8b51427c56ba6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_13.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c80f4f23650a46a489b537231043d416~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_14.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/127137f2a8084f8fbb3bd419b086e579~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_15.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ac0b3e5ff0d4b15998698a35973d9c4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_16.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6574a21ad05a457bb1b766d221885e67~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_17.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d5869e2595ca49838ced7d5f3ed964db~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_18.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec701c7151da4636a13041930d026253~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![AI开发工具与大模型演进-夏磊-加速无处不在的AI应用-7.11 (1)_19.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/81ebefdeaa934977804b36674ea2d60f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127835799264952356) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/20-李银龙:数据驱动的智能驾驶云.md: -------------------------------------------------------------------------------- 1 | # 李银龙:数据驱动的智能驾驶云 2 | 3 | ![幻灯片1.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/465eb16334cc421bb4e34e06c660f6c6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3b44b9d5646047b5ba3c463a25c7f254~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/337e0b7bc7d146c98a677e9f51b01f16~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/132ee56ec87d48b8ac96fc37e1a18053~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/54fbdbb1f2eb478089ad9317296261cb~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b906a9bb9ca0494ab001ca22545ce873~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/12b7fc4ea96f4da4b3944d84aa8e9844~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a886ce48e49a4f1d8f165b7aee76d345~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6934b29c217e4bb4883eb41e96309878~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d605c813a8e641aea1c7a479c9786d4a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2963622baa2c487e90134a8f9bb88928~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b17ff08bc0b54860a558b62f726ecf61~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9fcb4f47b79c4bffa287d963ef054063~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/770842fd72c94277991c479541ac4ab5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3de1136baac845aa9321c59e0ca4af2d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/038c876e89d0442a9bd0f98a4bb06028~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2187b832e25241a8b342f2efb0a010d4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e610926d2bdf4bb89f87c37499a30305~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/880c885c3abd41e59f5badd6cdf08d7b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8cba7d85cbd433f869c3d2090369294~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2b17de62a9dd4f5bb1f0405cb3f77ea9~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65cb7d627fa84546849a49d6d6dbbdc8~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | ![幻灯片23.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e0dac61b21c4d68aeb5e21d2d4e9636~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | ![幻灯片24.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/52027cd13e5e4e2b9917d8318f0aa94a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 50 | 51 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127534705242537995) -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/10-刘凡:Google Cloud 为您的云原生软件交付链保驾护航.md: -------------------------------------------------------------------------------- 1 | # 刘凡:Google Cloud 为您的云原生软件交付链保驾护航 2 | 3 | ![幻灯片1.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ee0fc6f484a467e9cfee7cf2730aca4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![幻灯片2.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8d16b228141a41a884aff3a95a5389ca~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![幻灯片3.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8ea0aaed5e8148a290557510d9692ade~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![幻灯片4.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9daffa4622a24ddfa292f465806e4510~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![幻灯片5.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ca287f6d9b1a42bdaa18bcd76c8fed6d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![幻灯片6.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7026cfd7109d4a668b527b92447fc71c~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![幻灯片7.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/470ecc5402c0430cba96469c97d75787~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![幻灯片8.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/91dbb6b7ddd64b169c14113f1d9b2c28~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![幻灯片9.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d8b76b6622774227bc0afc41d763df2f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![幻灯片10.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/531bbd699a4f4065bbca9b5704006913~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![幻灯片11.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bb85e98ba60a41cb91e3c67292e56b7f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![幻灯片12.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b3bd101a65f42cf8c20f1cf66bfab16~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![幻灯片13.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70f68416e1bf471a9320044a00097dbe~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![幻灯片14.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ace54b02eee645708da3ac2d8baf8885~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![幻灯片15.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9494d467f5df4d34a1a4674fd1a26cba~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![幻灯片16.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cc31735951f642bfb1179be392b0d193~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![幻灯片17.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3bfbf0e793d44166addd541e6d929501~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![幻灯片18.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d853a2be38a74a34a2d711f45d00cef4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![幻灯片19.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f31f219e476f4764baa006a2da658281~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![幻灯片20.jpeg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0bd899a76682417a9af36aad17183f41~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![幻灯片21.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/043f6cab64964faab17aff5ea4dcc1f5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | ![幻灯片22.jpeg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b8ccf8ef106f4473ba9ac5fc69f9ef26~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 46 | 47 | ![幻灯片23.jpeg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab220389b333428c82a881d6cb8bb9e6~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 48 | 49 | ![幻灯片24.jpeg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77cf6c952c85470289fc7ca2028bb0a0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 50 | 51 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127212048257122343) -------------------------------------------------------------------------------- /docs/如何使用掘金社区/23-⚠️ 常见问题.md: -------------------------------------------------------------------------------- 1 | # ⚠️ 常见问题 2 | 3 | 最后,我们会持续更新大家的常见问题在此,如果内容需求比较大,我们也会更新此小册。 4 | 5 | ## 用户 6 | 7 | **如果我不小心注册了多个掘金账号怎么办?** 8 | 掘金目前的账号体系中支持第三方注册,但如果要发表内容,都必须添加**手机号**。但是掘金早期的业务中有许多未认证的账号,因此对于老用户不小心注册多账号是一个比较复杂的处理流程: 9 | 10 | - 我们尚未有账号合并的功能 11 | - 可以在 APP 去尝试注销其中你不用的账号 12 | - 如果出现了一个账号购买了小册,一个账号是日常使用的情况,迁移暂时困难 13 | - 如果你不方便,你也可以联系官方来处理,请你发送邮件到 [feedback@xitu.io](mailto:feedback@xitu.io 'mailto:feedback@xitu.io') 邮箱。 14 | - 邮件内容包含: 15 | - 你的个人账户主页链接(举例:[juejin.cn/user/852876…](https://juejin.cn/user/852876722177533%EF%BC%89 'https://juejin.cn/user/852876722177533%EF%BC%89') 16 | - 你要注销账号绑定的相关信息 17 | - 这里也说一声抱歉,后续我们会专门就此问题提升账户系统解决 18 | **我现在绑定的手机号停用了,想换绑手机号,怎么办?** 19 | - 请你发送邮件到 [feedback@xitu.io](mailto:feedback@xitu.io 'mailto:feedback@xitu.io') 邮箱。 20 | - 邮件内容包含 21 | - 你的个人账户主页链接(举例:[juejin.cn/user/852876…](https://juejin.cn/user/852876722177533%EF%BC%89 'https://juejin.cn/user/852876722177533%EF%BC%89') 22 | - 你原来的手机号 xxxx、新的手机号 23 | 24 | ## 等级权限 25 | 26 | **如何提升自己的掘金等级?** 27 | 生产更多优质的专栏,并让他获得更多的阅读数与点赞数。目前,只有原创专栏会计作掘力值的增长,沸点、分享的点赞阅读是无法增长掘力值的。 28 | 29 | - [了解掘金:🏆 掘力值、等级与权限](https://juejin.cn/book/6844733795329900551/section/6844733795371843597 'https://juejin.cn/book/6844733795329900551/section/6844733795371843597') 30 | **如何获得掘金小册写作权限?** 31 | 获得掘金小册权限,需要您的掘力值提升到 10000 以上,获得 `Lv5` 等级。或者,请访问《[如何写一本掘金小册](https://juejin.cn/book/6844723704639782920 'https://juejin.cn/book/6844723704639782920')》并通过正规申请渠道申请掘金小册。 32 | 33 | - [了解掘金:🏆 掘力值、等级与权限](https://juejin.cn/book/6844733795329900551/section/6844733795371843597 'https://juejin.cn/book/6844733795329900551/section/6844733795371843597') 34 | - 《[如何写一本掘金小册](https://juejin.cn/book/6844723704639782920 'https://juejin.cn/book/6844723704639782920')》**我已经是 lv4 了,为啥没有自动推荐权限?** 35 | - 近期掘金升级了创作者权益相关的规则和机制,上线之后也受到了大家的广泛关注。但是上线后,我们也遇到了很多掘友和反馈和吐槽。笔记和更文等水文和低质量内容频繁被推上首页,更有甚者,日更占楼贴也会自动进行推荐。 36 | - 目前掘金的推荐加入二层过滤机制,对于自动推荐但是不符合推荐标准的内容进行人工干预。 37 | 38 | ## 文章 39 | 40 | **为什么我发布的内容在推荐的最新里找不到?** 41 | 每个用户生产的内容需要根据其掘力值与影响因子的高低才能进入推荐列表。如果想让您的的内容尽快被推荐,则需要您生产更多、更好地内容。如果您的掘力值提升到 5000 即 `Lv4` 等级以上,您发布的内容会直接进入推荐列表。 42 | 43 | 而关注您的人,可以在关注入口中直接阅读您的内容,因而获得更多粉丝很有价值! 44 | 45 | - [了解掘金:🏆 掘力值、等级与权限](https://juejin.cn/book/6844733795329900551/section/6844733795371843597 'https://juejin.cn/book/6844733795329900551/section/6844733795371843597') 46 | - [使用掘金:🔥 如何让你的文章获得更多曝光和认可](https://juejin.cn/book/6844733795329900551/section/6844733795380232206 'https://juejin.cn/book/6844733795329900551/section/6844733795380232206') 47 | - [使用掘金:👮‍♀️ 掘金的内容审核和推荐规则](https://juejin.cn/book/6844733795329900551/section/6876001660431400967 'https://juejin.cn/book/6844733795329900551/section/6876001660431400967') 48 | - [使用掘金:❎ 违规文章是什么样的,有哪些处罚措施?](https://juejin.cn/book/6844733795329900551/section/6844733795380232200 'https://juejin.cn/book/6844733795329900551/section/6844733795380232200') 49 | - 添加我们小编微信:`chnyifan` 他会协助你。**我想发布的内容没有合适的标签** 50 | 目前,掘金的标签体系是封闭的,有小编们管理。因而,当您发布的内容没有合适的标签时,可以直接反馈给我们的小编。但是,请务必注意,掘金的标签是定义内容的核心数据,因而比较杂乱、模糊的标签不会被添加。 51 | 52 | - [使用掘金:🔥 如何让你的文章获得更多曝光和认可](https://juejin.cn/book/6844733795329900551/section/6844733795380232206 'https://juejin.cn/book/6844733795329900551/section/6844733795380232206') 53 | 54 | - [使用掘金:💬 如何给掘金社区提建议 & Bug](https://juejin.cn/book/6844733795329900551/section/6844733795384442893 'https://juejin.cn/book/6844733795329900551/section/6844733795384442893') 55 | 56 | - 添加我们小编微信:`chnyifan` 他会协助你。 57 | 58 | ## 付费相关问题 59 | 60 | **我买了小册或者会员如何开发票呢?** 61 | 62 | 目前,购买小册和会员都是可以开发票的,如果你要开发票,你可以填写以下问卷: 63 | 64 | - [发票申请链接](https://wenjuan.feishu.cn/m?t=s4bEwCnPlpyi-hxgc 'https://wenjuan.feishu.cn/m?t=s4bEwCnPlpyi-hxgc') 65 | 66 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6844733795392815117) 67 | -------------------------------------------------------------------------------- /docs/如何使用掘金社区/10-使用掘金:👮‍♀️掘金的内容审核和推荐规则.md: -------------------------------------------------------------------------------- 1 | # 使用掘金:👮‍♀️掘金的内容审核和推荐规则 2 | 3 | ## 审核规则 4 | 5 | #### 为什么会有安全审核? 6 | 7 | * **根据国家相关法律法规规定,保障平台内容安全**:过滤**涉黄、涉暴、涉毒、赌博**等安全底线问题 8 | * **保障用户体验,有助于提升平台长期价值**:打击**低俗、辱骂、广告**等低质内容 9 | * **掘金平台病友新闻等筛选机制,所以平台内容只限于技术范围内,时政类累内容会严格管控。** 10 | 11 | #### 什么样的内容需要审核? 12 | 13 | **按照相关法律法规要求,用户在掘金平台发布和传播的内容均需要审核,包括但不限于:** 14 | 15 | * 资料:用户头像昵称、职位、个人介绍等...... 16 | * 所有写入内容:文章、沸点、图片、评论、视频...... 17 | 18 | #### 常见的几种审核状态? 19 | 20 | * **审核中:内容发布后将进入审核状态,同时会有系统消息发送给你,提示你的内容正在审核中。** 21 | * **审核不通过(自见):内容审核不通过,系统会有消息提醒,请参考消息中的社区规范,进行内容调整,内容修改并提交后,会再次进入审核。** 22 | 23 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d64436db606a4b60938c00935b1211d4~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) ![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/df8748f5383f4a14b05a3f89fb9ed1dd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | * **审核通过:审核通过后的文章会发布成功并可能获得被推荐机会。** 26 | * **内容被删除:如果你发布的内容不符合相关法律法规要求,会直接删除,同时会有系统消息发送给你。** 27 | 28 | #### **申诉渠道** 29 | 30 | * 审核未通过的内容,如果作者自查后,仍无法感知到问题所在,请访问沸点话题「[反馈 & 建议](https://juejin.cn/topic/6824710202692993037?sort=newest "https://juejin.cn/topic/6824710202692993037?sort=newest")」提交你的问题和文章链接,掘金官方将在排查后给你留言反馈相关调整策略。 31 | 32 | ## 推荐规则 33 | 34 | 掘金与诸多社区的不同在于,我们一直专注在筛选和推荐优质的技术内容给合适的读者。因而,首页的推荐信息流的质量和数据反馈我们也非常关注。我们一直在努力的帮助好的文章获得更多的读者,让优秀的作者获得更多的关注者。 35 | 36 | 目前掘金内容的排行和热度就是根据掘金的热度算法的规则来进行推荐,关于算法的具体信息你可以到《[计算内容热度的算法解释》](https://juejin.cn/post/6844903833856901133 "https://juejin.cn/post/6844903833856901133")中了解。 37 | 38 | #### 推荐文章的基本标准 39 | 40 | * 内容形式:对他人有启发性且必须原创或者本人翻译的文章 41 | * 排版要求:行文排版优雅 42 | * 题材要求:原则上不限制具体题材,但是文章要符合与开发相关的技术细节、技巧干货、开源工具介绍、实践总结、行业见解、职业选择等方向;当然也可以是优秀的翻译文章,这方面可以参考前掘金官方在运营的[掘金翻译计划]。 43 | * 符合标准的引流规范:掘金作为一个帮助开发者成长的技术社区,我们原则上不支持这一行为,但是本着服务用户的原则我们也不禁止这一行为。为了帮助用户拥有更好的阅读体验,我们现对张贴公众号行为作出以下规范: 44 | * **可以是文字引导用户关注公众号**,但是对于添加个人微信账号、引导用户进群、推广产品等威胁用户信息安全的行为一律禁止。 45 | 46 | 关于评判优质内容的更多详情,请参考掘金小册中关于[掘金社区内容的标准和规范](https://juejin.cn/book/6844733795329900551/section/6844733795380232199 "https://juejin.cn/book/6844733795329900551/section/6844733795380232199")的内容规范部分。 47 | 48 | #### 影响你文章流量的相关因素 49 | 50 | 我们期待与开发者的共同成长,因而在速度与质量中,我们偏向后者,也相信在我们的模式下成长起来的开发者会有更大的回报。 与你的文章能否获得足够的流量直接相关的是: 51 | 52 | 1. 你的掘力值 53 | 2. 你文章的平均点赞数、阅读数、评论数 54 | 3. 你写专栏的活跃度 55 | 4. 文章的标签 56 | 5. 你的粉丝数 57 | 58 | 更多资料:[使用掘金:🔥 如何让你的文章获得更多曝光和认可](https://juejin.cn/book/6844733795329900551/section/6844733795380232206 "https://juejin.cn/book/6844733795329900551/section/6844733795380232206") 59 | 60 | #### 什么样的文章不会被推荐 61 | 62 | 1. **非原创文章**:内容为百科式概念定义和介绍,或做个人备忘、书摘、笔记类,没有个人研究、洞察、实践体验的文章。 63 | 64 | 2. **标题过短或篇幅过短的文章**:标题只有一两个单词,或者内容字数少于250字,很少能讲透一个知识点或解决一个问题,这样的内容本质不能称之为文章。 65 | 66 | 3. **杂乱无序的文章**:排版混乱,文章结构不清晰都可以被定义为垃圾文章,例如纯代码文章(基本没有文字描述直接贴代码)等。 67 | 68 | 4. **配图不当的文章**:图裂、使用真人或卡通美女照等恶俗配图,或者配图品质过低的文章。 69 | 70 | 5. **推广类文章**:包括招聘、广告、SEO、活动等推广内容。如“个人视频教程、书籍推广等内容”,这类内容属于不允许用户发布的内容范围,是对其他用户危害最大的内容,一经发现,立即删除,并对发布者给予处理(注:活动推广信息可以在沸点“活动推荐”圈子发布)。 71 | 72 | 6. **引流类文章**:文章含有加群或个人微信二维码、公众号二维码,一律不推荐(注:仅允许用文字引导关注公众号)。 73 | 74 | 7. **标题党文章**:故意夸大其词,或者题不对文,用与正文无关的字眼刻意煽动读者惊悚、好奇等情绪。例如:夸大悬念&震惊党标题,“震惊:这篇VUE的干货竟然说的这么全!”;强迫式标题,“迄今为止最全的面试题,不看后悔一辈子?”;用小姐姐、女朋友、男朋友等两性话题作为吸睛点,“我是如何助力小姐姐提升100%开发效率的”;以及其他标题严重与内容不符的文章。 75 | 76 | 8. **面试类文章**:机械罗列汇总面试题的文章,一律不推荐,刷题打卡类文章一律不推荐。 77 | 78 | 9. **资讯类文章**:搬运现有资讯,罗列文字链接,无个人观点表达的文章。 79 | 80 | 10. **非技术类文章**:非技术类、无厘头内容文章一律不推荐。 81 | 82 | ## 快速推荐通道与作者交流 83 | 84 | * 目前文章推荐一般时效为发布后24h内,请大家耐心等待,如想自荐优质文章可以发布在沸点:[好文推荐](https://juejin.cn/pin/club/6824710203389247501?sort=newest "https://juejin.cn/pin/club/6824710203389247501?sort=newest") 下。 85 | * 请联系掘金酱:zwcatfly,发送文章链接即可。 86 | 87 | ## 更多社区规则内容 88 | 89 | [掘金小册:如何使用掘金社区](https://juejin.cn/book/6844733795329900551 "https://juejin.cn/book/6844733795329900551") 90 | 91 | [掘金小册:如何写一本掘金小册](https://juejin.cn/book/6844723704639782920 "https://juejin.cn/book/6844723704639782920") 92 | 93 | [原文地址](https://juejin.cn/book/6844733795329900551/section/6876001660431400967) -------------------------------------------------------------------------------- /src/utils/logger/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import type { LoggingEvent } from 'log4js' 3 | import log4js from 'log4js' 4 | import type { ChalkInstance } from 'chalk' 5 | import chalk from 'chalk' 6 | import { formatDate } from '@/utils' 7 | 8 | type LevelEmoji = Record 9 | // unused-imports/no-unused-vars 10 | type LevelColor = Record 11 | 12 | const levelEmoji: LevelEmoji = { 13 | TRACE: '🔍', 14 | DEBUG: '🐞', 15 | INFO: 'ℹ️', 16 | WARN: '⚠️', 17 | ERROR: '❌', 18 | FATAL: '💥', 19 | } 20 | 21 | const levelColor: LevelColor = { 22 | TRACE: chalk.gray, 23 | DEBUG: chalk.cyan, 24 | INFO: chalk.green, 25 | WARN: chalk.yellow, 26 | ERROR: chalk.red, 27 | FATAL: chalk.bgRed.white, 28 | } 29 | const __dirname = path.resolve() 30 | const filePath = path.join(__dirname, 'logs') 31 | // Configure appenders and categories 32 | log4js.configure({ 33 | appenders: { 34 | console: { type: 'console' }, 35 | file: { type: 'file', filename: `${filePath}/app.log` }, 36 | traceFile: { type: 'file', filename: `${filePath}/trace.log` }, 37 | debugFile: { type: 'file', filename: `${filePath}/debug.log` }, 38 | infoFile: { type: 'file', filename: `${filePath}/info.log` }, 39 | warnFile: { type: 'file', filename: `${filePath}/warn.log` }, 40 | errorFile: { type: 'file', filename: `${filePath}/error.log` }, 41 | fatalFile: { type: 'file', filename: `${filePath}/fatal.log` }, 42 | }, 43 | categories: { 44 | default: { appenders: ['console', 'file'], level: 'info' }, 45 | trace: { appenders: ['console', 'traceFile'], level: 'trace' }, 46 | debug: { appenders: ['console', 'debugFile'], level: 'debug' }, 47 | info: { appenders: ['console', 'infoFile'], level: 'info' }, 48 | warn: { appenders: ['console', 'warnFile'], level: 'warn' }, 49 | error: { appenders: ['console', 'errorFile'], level: 'error' }, 50 | fatal: { appenders: ['console', 'fatalFile'], level: 'fatal' }, 51 | }, 52 | }) 53 | 54 | export const logger = log4js.getLogger() 55 | 56 | // Custom layout for colored log output 57 | log4js.addLayout('coloredLayout', (): ((logEvent: LoggingEvent) => string) => { 58 | return (logEvent: LoggingEvent): string => { 59 | const level = logEvent.level.toString() 60 | const emoji = levelEmoji[level] || '' 61 | const now = formatDate() 62 | const message = logEvent.data[0] 63 | const colorFn = levelColor[level] || chalk.reset 64 | const formattedMessage = `${colorFn(emoji)} ${colorFn(now)} ${colorFn(level)} ${colorFn( 65 | message, 66 | )}` 67 | return formattedMessage 68 | } 69 | }) 70 | 71 | // Configure console appender with colored layout 72 | log4js.configure({ 73 | appenders: { 74 | console: { type: 'console', layout: { type: 'coloredLayout' } }, 75 | file: { type: 'file', filename: `${filePath}/app.log` }, 76 | traceFile: { type: 'file', filename: `${filePath}/trace.log` }, 77 | debugFile: { type: 'file', filename: `${filePath}/debug.log` }, 78 | infoFile: { type: 'file', filename: `${filePath}/info.log` }, 79 | warnFile: { type: 'file', filename: `${filePath}/warn.log` }, 80 | errorFile: { type: 'file', filename: `${filePath}/error.log` }, 81 | fatalFile: { type: 'file', filename: `${filePath}/fatal.log` }, 82 | }, 83 | categories: { 84 | default: { appenders: ['console', 'file'], level: 'info' }, 85 | trace: { appenders: ['console', 'traceFile'], level: 'trace' }, 86 | debug: { appenders: ['console', 'debugFile'], level: 'debug' }, 87 | info: { appenders: ['console', 'infoFile'], level: 'info' }, 88 | warn: { appenders: ['console', 'warnFile'], level: 'warn' }, 89 | error: { appenders: ['console', 'errorFile'], level: 'error' }, 90 | fatal: { appenders: ['console', 'fatalFile'], level: 'fatal' }, 91 | }, 92 | }) 93 | 94 | export default logger 95 | -------------------------------------------------------------------------------- /docs/稀土开发者大会2022/11-于鸿磊:云原生技术跨向生物信息计算领域的最后十公里.md: -------------------------------------------------------------------------------- 1 | # 于鸿磊:云原生技术跨向生物信息计算领域的最后十公里 2 | 3 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_01.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/824c45a8794340e4b6aaa09a7712705b~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 4 | 5 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_02.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e653a074a8184d5aa27baa41ab3f0449~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 6 | 7 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_03.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c74bbf8a087e4332a544eaf886aaafd3~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 8 | 9 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_04.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/30b657e882034db5bed01f01e33846d7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 10 | 11 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_05.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/59d08721f54d42d6b2808cc59114c0e5~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 12 | 13 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_06.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1feefc18445b47d190b8f6e613a7da8d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 14 | 15 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_07.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3f7b4f2505d34d61a762d1164f78c0ce~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 16 | 17 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_08.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec19df2d5ece46329b5b5fd7d4210d38~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 18 | 19 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_09.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c44a7fceddb34427893687435aab3841~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 20 | 21 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_10.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b9471036747841d596e5dae7a30712f7~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 22 | 23 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_11.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2be3af5f44c4430b921dee5a14c2f16a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 24 | 25 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_12.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/918ea3d7e6b945acb4c91f5b5f31b947~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 26 | 27 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_13.jpg](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7b5bb546f17e4b91abc91f46ccc406cd~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 28 | 29 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_14.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c64074d0d9fc464586febc4efe1b433e~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 30 | 31 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_15.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d7e3f4d3c03a459f948c8e09047bafa0~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 32 | 33 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_16.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/83540d62c91a4ab086e2e6fddbda635d~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 34 | 35 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_17.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9843a42be4ef4f728af48946674fc93f~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 36 | 37 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_18.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4f85b6b6bfc846278bab178fffab02be~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 38 | 39 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_19.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9d53a224aa6e46dbbcfbdb4fb2d22388~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 40 | 41 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_20.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9ebfbede9d1f4b0ebedf3eca2363f98a~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 42 | 43 | ![于鸿磊 - 云原生技术跨向生物信息计算领域的最后10公里_页面_21.jpg](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2dc7674a25c5473dbd7dfb4ac1ed5067~tplv-k3u1fbpfcp-jj-mark:1512:0:0:0:q75.awebp) 44 | 45 | [原文地址](https://juejin.cn/book/7127092198096502822/section/7127188613539823655) --------------------------------------------------------------------------------