├── .nojekyll ├── INTRODUCTION.md ├── 02~月熊的成长之路 ├── 2015 │ ├── 如何成为优秀的软件工程师.md │ └── 熊写代码这三年: 阅读写作与技术成长.md ├── 2016 │ ├── 怀着被抛弃的恐惧在奋斗中前行.md │ ├── 某熊的阅读与写作日常.md │ └── 2016~我的技术之路与知识体系.md ├── 2017 │ ├── 2017~知识图谱.md │ ├── 2017~程序员的自我修养: 我写代码这五年.md │ └── 2017~Web 进阶路线图.md ├── 2018 │ ├── 数据浪潮之间的前端工程师.md │ ├── 我在菊场这一年.md │ ├── 知识管理与高效学习.md │ └── 2018-我的技术之路.md ├── 2019 │ ├── 2019-016-4-锁.md │ ├── 2019-016-2-并发 IO.md │ ├── 2019-016-3-线程安全.md │ ├── 2019-011-Linux 存储与 IO 导论.md │ ├── 2019-014-工业互联下的 Netty 与 MQTT 设备上报网关.md │ ├── 2019-006-一文了解多层次缓存机制与策略.md │ ├── 2019-009-Web 面试题集锦,从语法框架到架构优化.md │ ├── 2019-008-存储技术纵览:Linux 虚拟存储,并发 IO,数据库与消息中间件.md │ ├── 2019-002-分布式系统导论.md │ ├── 2019-018-Web 开发中动态主题、皮肤的不同姿势.md │ ├── 2019-010-浅谈工业云平台中的微服务化领域架构设计.md │ ├── 2019-017-分布式系统导论.md │ ├── 2019-007-ChaosScanner.md │ ├── 2019-我的技术之路.md │ ├── 十年铲码.md │ ├── 2019-004-2-Cendertron,动态爬虫的滑动验证码绕过策略.md │ ├── 2019-004-0-Cendertron,动态爬虫与敏感信息泄露检测.md │ └── 2019-004-1-Cendertron,安全爬虫的分布式与稳定性优化之路.md ├── 2020 │ ├── 产品思维与技术课程设计.md │ ├── K8s 中微服务解决方案的选择,Dapr 初探.md │ ├── 微前端 & K8s,创业团队的多平台前端项目的构建之路.md │ ├── M 端产品设计札记.md │ └── 2020~我的技术之路.md ├── 2021 │ ├── 研发效能:架构复杂性与高可用.md │ ├── 5W Plan.md │ ├── 2021~随笔录.md │ └── 浅析从作坊型手扳厂到小批量分布式制造变革中,在品牌营销、客户服务、生产管理、经营洞察等方面的一揽子问题.md ├── 2022 │ ├── 我的前三十年:愿不忘,少年游.pdf │ ├── 2022-按产品力评估模型(九维度综合评估).md │ └── 2022-某熊的技术 & 产品成长之路:重启的第二曲线.md ├── 2023 │ ├── 2023~研发效能.xmind │ ├── 2023~年度任务.md │ ├── 2023~随笔录.md │ └── 2023~某熊的成长之路.md ├── 2024 │ ├── 2024~在八卦中锻炼消息的分析、提炼与响应,提高不确定的应对能力.md │ ├── 2024~月熊的年度总结与展望.md │ ├── 2024~随笔录.md │ ├── 2024~年度迭代.md │ ├── 2024~月熊的成长之路.md │ └── 2024~过去五年中我在软件产品研发中犯下的二十多个错误的自省.md ├── 2025 │ ├── 2025~月熊的成长之路.md │ ├── 月熊的重生计划.xmind │ └── 2025~月熊的重生计划.md ├── README.md └── 某熊的人生指向标.md ├── .github ├── META │ ├── INTRODUCTION.md │ ├── README.md │ ├── gitcp │ ├── ABOUT.md │ ├── commit-all.sh │ ├── settings.json │ ├── LICENSE.code │ ├── clone-all.sh │ ├── README.book.md │ ├── 技术体系.xml │ ├── README.examples.md │ ├── README.code.md │ └── index.html ├── ISSUE_TEMPLATE │ ├── custom.md │ ├── feature_request.md │ └── bug_report.md └── SCRIPTS │ ├── commit-all.sh │ └── commit-all.doc.sh ├── 02~月熊的职业道路 ├── 2019~联泰 │ ├── 01~Unionfab 数字化理念 │ │ └── README.md │ ├── 02~Unionfab 团队管理 │ │ └── README.md │ ├── 03~Unionfab 产品线 │ │ └── README.md │ ├── 04~Unionfab 技术治理 │ │ └── README.md │ ├── README.md │ └── 打印服务调研.md ├── 2017~华为 │ └── README.md ├── 2014~运之林 │ └── README.md ├── 2018~阿里 │ └── README.md ├── 2013~君立华域 │ └── README.md ├── 2025~D-MTM │ └── README.md └── 2024~程序员的中年危机.md ├── 02~月熊的知识体系 ├── 99~参考资料 │ ├── 《How to Take Smart Notes》 │ │ └── README.md │ └── 2022~Tiago Forte~《Building a Second Brain》 │ │ ├── README.md │ │ └── 《Building a Second Brain》内容摘要与分章节总结.md ├── 2024~知识体系.md ├── 2023~知识体系.xmind ├── 2024~知识体系.xmind ├── 2025~知识体系.xmind ├── 2025~笔记系统要点.xmind ├── 2023~知识体系与技术脉络.xmind └── 2024~CS 各领域通用技术要点.xmind ├── 02~月熊的投资之路 └── README.link ├── 01~月熊的编程之道 └── README.link ├── 02~月熊存在的痕迹 ├── MLGT Copilot │ └── MLG Copilot.md ├── Zero Notes │ ├── Zero Notes 宽屏.webp │ ├── Zero Notes 箭头循环.webp │ └── Zero Notes,如何用 AI 赋能打造对抗遗忘的知识库(第二大脑).md ├── README.md ├── 虎虎 │ └── 出生日.md └── 播客 │ └── 2024.1~小宇宙选题.md ├── .gitattributes ├── books.html ├── .gitignore ├── README.md ├── index.html ├── _sidebar.md └── header.svg /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /INTRODUCTION.md: -------------------------------------------------------------------------------- 1 | # 本篇导读 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-016-4-锁.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2025/2025~月熊的成长之路.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-016-2-并发 IO.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-016-3-线程安全.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/META/INTRODUCTION.md: -------------------------------------------------------------------------------- 1 | # 本篇导读 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-011-Linux 存储与 IO 导论.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/01~Unionfab 数字化理念/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/02~Unionfab 团队管理/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/03~Unionfab 产品线/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/04~Unionfab 技术治理/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2017/2017~知识图谱.md: -------------------------------------------------------------------------------- 1 | # 2017-我的知识图谱与技术体系 2 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2017~华为/README.md: -------------------------------------------------------------------------------- 1 | > DocId: AiOUSiT 2 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/README.md: -------------------------------------------------------------------------------- 1 | > DocId: Sj3Fp5q5N6a 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-014-工业互联下的 Netty 与 MQTT 设备上报网关.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的知识体系/99~参考资料/《How to Take Smart Notes》/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2014~运之林/README.md: -------------------------------------------------------------------------------- 1 | > DocId: ANlcriWWoXF 2 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2018~阿里/README.md: -------------------------------------------------------------------------------- 1 | > DocId: urgH5pleh6km 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-006-一文了解多层次缓存机制与策略.md: -------------------------------------------------------------------------------- 1 | # 一文了解多层次缓存机制与策略 2 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2013~君立华域/README.md: -------------------------------------------------------------------------------- 1 | > DocId: e1bPvQpdQ4SyeqsnC 2 | -------------------------------------------------------------------------------- /02~月熊的知识体系/2024~知识体系.md: -------------------------------------------------------------------------------- 1 | > DocId: xzXix9mFuUkZd 2 | 3 | # 知识体系 4 | -------------------------------------------------------------------------------- /02~月熊的投资之路/README.link: -------------------------------------------------------------------------------- 1 | https://github.com/wx-chevalier/Investment-Notes -------------------------------------------------------------------------------- /02~月熊的知识体系/99~参考资料/2022~Tiago Forte~《Building a Second Brain》/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-009-Web 面试题集锦,从语法框架到架构优化.md: -------------------------------------------------------------------------------- 1 | # Web 面试题集锦,从语法框架到架构优化 2 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2025~D-MTM/README.md: -------------------------------------------------------------------------------- 1 | > DocId: AqXoSG9RFVDR1 2 | 3 | # D-MTM 4 | -------------------------------------------------------------------------------- /01~月熊的编程之道/README.link: -------------------------------------------------------------------------------- 1 | https://github.com/wx-chevalier/Awesome-Coding-Philosophy -------------------------------------------------------------------------------- /02~月熊存在的痕迹/MLGT Copilot/MLG Copilot.md: -------------------------------------------------------------------------------- 1 | > Doc Id: e535ac3f-0419-5325-8b9c-57be86014cef 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-008-存储技术纵览:Linux 虚拟存储,并发 IO,数据库与消息中间件.md: -------------------------------------------------------------------------------- 1 | # 存储技术纵览,Linux 虚拟存储,并发 IO,数据库与消息中间件 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2021/研发效能:架构复杂性与高可用.md: -------------------------------------------------------------------------------- 1 | # 研发效能 2 | 3 | 更好、更快地以更小的成本完成现在与未来的业务需求。在笔者的笔记体系中,两个系列偏务虚地来讨论这些问题。 -------------------------------------------------------------------------------- /.github/META/README.md: -------------------------------------------------------------------------------- 1 | git checkout -b gh-pages & git push --set-upstream origin gh-pages & git checkout master 2 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-002-分布式系统导论.md: -------------------------------------------------------------------------------- 1 | # 分布式系统理论札记:CAP,BASE 与数据一致性 2 | 3 | # CAP 4 | 5 | # BASE 6 | 7 | # 数据一致性 8 | -------------------------------------------------------------------------------- /02~月熊的知识体系/2023~知识体系.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2023~知识体系.xmind -------------------------------------------------------------------------------- /02~月熊的知识体系/2024~知识体系.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2024~知识体系.xmind -------------------------------------------------------------------------------- /02~月熊的知识体系/2025~知识体系.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2025~知识体系.xmind -------------------------------------------------------------------------------- /02~月熊的知识体系/2025~笔记系统要点.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2025~笔记系统要点.xmind -------------------------------------------------------------------------------- /02~月熊的成长之路/2023/2023~研发效能.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的成长之路/2023/2023~研发效能.xmind -------------------------------------------------------------------------------- /02~月熊的成长之路/2025/月熊的重生计划.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的成长之路/2025/月熊的重生计划.xmind -------------------------------------------------------------------------------- /02~月熊的知识体系/2023~知识体系与技术脉络.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2023~知识体系与技术脉络.xmind -------------------------------------------------------------------------------- /02~月熊的成长之路/2021/5W Plan.md: -------------------------------------------------------------------------------- 1 | # 冲刺 Github Star 5W+ 2 | 3 | # 文章发布 4 | 5 | # 课程发布 6 | 7 | # 知乎问题回答 8 | 9 | # SegmentFault 问题回答 10 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2022/我的前三十年:愿不忘,少年游.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的成长之路/2022/我的前三十年:愿不忘,少年游.pdf -------------------------------------------------------------------------------- /02~月熊的知识体系/2024~CS 各领域通用技术要点.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊的知识体系/2024~CS 各领域通用技术要点.xmind -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-018-Web 开发中动态主题、皮肤的不同姿势.md: -------------------------------------------------------------------------------- 1 | # Web 开发中动态主题、皮肤的不同姿势 2 | 3 | 在 [Awesome Interviews]() 中,笔者就提及面试的时候偶尔也会碰上动态主题的问题,这也是很多大型项目的必备功能之一。 4 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2020/产品思维与技术课程设计.md: -------------------------------------------------------------------------------- 1 | # 产品思维与技术课程设计 2 | 3 | 录制课程和写文章还是有非常大的差异的。 4 | 5 | - 如何避免生硬?每个小节先展示下最终的效果,然后引导同学一起来进行编码实现。 6 | - 每门课程一定要依托于某个具体的案例。 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.xmind filter=lfs diff=lfs merge=lfs -text 2 | *.zip filter=lfs diff=lfs merge=lfs -text 3 | *.pdf filter=lfs diff=lfs merge=lfs -text 4 | -------------------------------------------------------------------------------- /02~月熊存在的痕迹/Zero Notes/Zero Notes 宽屏.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊存在的痕迹/Zero Notes/Zero Notes 宽屏.webp -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-010-浅谈工业云平台中的微服务化领域架构设计.md: -------------------------------------------------------------------------------- 1 | # 浅谈工业云平台中的微服务化领域架构设计(一) 2 | 3 | 我们希望遵循领域驱动的原则,针对需求碎片化特别严重的 MES 系统设计可扩展的微服务架构,从而优化整体的研发效能,保障交付的效率与质量。 4 | -------------------------------------------------------------------------------- /02~月熊存在的痕迹/Zero Notes/Zero Notes 箭头循环.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Developer-Zero-To-Mastery/master/02~月熊存在的痕迹/Zero Notes/Zero Notes 箭头循环.webp -------------------------------------------------------------------------------- /.github/META/gitcp: -------------------------------------------------------------------------------- 1 | # !/bin/bash 2 | 3 | msg=${1:-update articles or snippets} 4 | 5 | git add --all 6 | git commit -m "feat: ${msg}" --no-verify 7 | git pull 8 | git push -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~在八卦中锻炼消息的分析、提炼与响应,提高不确定的应对能力.md: -------------------------------------------------------------------------------- 1 | # 2024~在八卦中锻炼消息的分析、提炼与响应,提高不确定的应对能力 2 | 3 | # 参考资料 4 | 5 | - 2022~极客时间~讲好故事 6 | - 2023~混沌学园~在不确定的世界里提高成功概率 7 | - 2023~信息大盗解读技术 8 | -------------------------------------------------------------------------------- /02~月熊存在的痕迹/README.md: -------------------------------------------------------------------------------- 1 | > DocId: 1c250704-a69b-5cdf-825e-5a37168ab130 2 | 3 | # 留给世界的痕迹 4 | 5 | - 重要的瞬间:微信朋友圈、QQ 空间 6 | - 证件与书籍:WPS 7 | - 图片与视频:百度云盘 8 | - 知识文档/工作经历:Github,其中图片存放在阿里云; 9 | - 密码:Bitwarden 10 | - 投资:涨乐财富通 11 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~月熊的年度总结与展望.md: -------------------------------------------------------------------------------- 1 | # 月熊的年度总结与展望 2 | 3 | - 2024 总结: 4 | 5 | - 目标聚焦与团队协调等组织能力的提升; 6 | - 系统编程、产品思维、投资方法论的体系化学习; 7 | - Zero Notes: 8 | 9 | - 2025 期望: 10 | 11 | - 继续 2024 未竟的事业: 12 | - 构建全球视野: 13 | - MLG Copilot: 14 | - 重启个人知识品牌: 15 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2022/2022-按产品力评估模型(九维度综合评估).md: -------------------------------------------------------------------------------- 1 | # 2022 2 | 3 | 在王诗沐编著的《幕后产品:打造突破式产品思维》一书中,总结的产品经理的能力与阶段概括如下: 4 | 5 | ![幕后产品](https://pic.imgdb.cn/item/638b15b316f2c2beb1b90998.jpg) 6 | 7 | # 参考资料 8 | 9 | - https://maimai.cn/article/detail?fid=749646980&efid=qdz2BSOERPJomrTZE-z-7w 10 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2020/K8s 中微服务解决方案的选择,Dapr 初探.md: -------------------------------------------------------------------------------- 1 | # K8s 中微服务解决方案的选择,Dapr 初探 2 | 3 | 主流地微服务/RPC 方案 4 | 5 | - 契合 K8s:K8s 这样的云操作系统,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态。在过去 6 | 7 | - 跨语言友好: 8 | 9 | - 支持协议 Schema: 10 | 11 | - 非侵入式,多环境部署,运维简单:ServiceMesh,包括我们的公有云。Istio/Envoy 的运维还是较为复杂,不适合于还没有专业运维团队的我们。 12 | -------------------------------------------------------------------------------- /.github/META/ABOUT.md: -------------------------------------------------------------------------------- 1 | # About | 关于 2 | 3 | # Principles 4 | 5 | - Awesome-Lists/Awesome-CS-Books 层次无限制,但须尽可能少;Awesome-CheatSheets/Developer-Zero-To-Mastery 中不可超过两层,其余文档类仓库如无额外情况,目录层次不可超过三层。单层子文件数目尽量不超过 20,若超过则考虑拆分或者上浮。 6 | 7 | - Awesome-Lists/Awesome-CS-Books 中以知识图谱结构为基准,其余仓库以可理解性为基准;弱化 Awesome-CheatSheets,仅为其余各仓库内容汇总的速览导出版,不可作为原始内容存放处。 8 | 9 | - 同一目录下文件类型除 README.md 外应当保持一致,通用的目录名包括:导论、架构机制、Specials;通用的文件名包括:安装与配置。 10 | 11 | # Credits | 致谢 12 | 13 | 由于笔者平日忙于工作,几乎所有线上的文档都是我夫人帮忙整理,在此特别致谢;同时也感谢我家的布丁安静的趴在脚边,不再那么粪发涂墙。 14 | 15 | # Roadmap | 规划 16 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2025/2025~月熊的重生计划.md: -------------------------------------------------------------------------------- 1 | # 月熊的重生计划 2 | 3 | # 2025.1115 4 | 5 | - 先放松,归零; 6 | - 少想,多做,干中学; 7 | - 你就是个废物,不要对自己有啥预期; 8 | - 要知足; 9 | 10 | # 2025.1101 11 | 12 | - 对抗焦虑 13 | 14 | - 核心的焦虑点: 15 | 16 | - 长期的收入焦虑: 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 | -------------------------------------------------------------------------------- /books.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 16 | 17 | 18 | 23 | 24 |
知识体系 12 | 《Awesome Lists | CS 资料集锦》 15 |
19 | 《Awesome Lists | CS 资料集锦》 22 |
25 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~随笔录.md: -------------------------------------------------------------------------------- 1 | # 2024 随笔录 2 | 3 | # 2024.1.1 4 | 5 | 和朋友想尝试在小宇宙录一期《真诚与幸福感》的播客,聊到家庭,朋友说他父系艺术世家,母系烟草世家,问我家族的背景。之前跟亲戚交流不多,正好来参加表妹的婚礼,发现大部分是和我一样进厂拧螺丝的,有全年无休贴瓷钻攒钱给孩子买房的,有开货车做配菜当保安干几份工的,大家都在泥泞里勤劳的生活。我回答朋友我的家族应该是「进城务工世家」,在这个充满草台班子和不确定性的年代,努力工作,认真躺平,真诚待人的都可以在自己的世界里获得绝对的幸福感~ 6 | 7 | # 2024.6 8 | 9 | 年纪越大越感觉稳定的情绪内核,理性友善温和的沟通方式的重要。尽量少一些丧,对抗,激动,攻击性的被动句或者反问句,将愤怒等负面情绪作为一种手段而非习惯,优先地选择心平气和地沟通而不是让环境变得紧张。 10 | 11 | 感觉很多人的内耗,来自于想要而未可得。对内不愿真实地面对自己,无法与自己(本我,自我,超我)达成和解;对外不愿接受现实的可能性,无法与外界真诚地沟通。最后把自己束缚在内外之间,漂泊不定,在内耗与外耗的死亡螺旋中耗尽自己的精力,错过一路的风景。 12 | 13 | # 2024.7 14 | 15 | - 能力建在组织上,流程即业务; 16 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-017-分布式系统导论.md: -------------------------------------------------------------------------------- 1 | # 分布式系统导论 2 | 3 | 许多年前,笔者就想攒一篇分布式系统导论,可惜囿于能力一直未能成篇;本文也是对 []() 系列文章提纲挈领的总结,也算是承接自[并发编程导论](https://ng-tech.icu/books/DistributedSystem-Notes/#/fen-bu-shi-ji-suan/bing-fa-bian-cheng)。 4 | 5 | # 延伸阅读 6 | 7 | [![技术视野](https://s3.ax1x.com/2021/02/21/yTSKdH.png)](https://github.com/wx-chevalier/Awesome-MindMaps) 8 | 9 | 您还可以前往 [NGTE Books](https://ng-tech.icu/books-gallery/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 10 | 11 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books-gallery/) 12 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2021/2021~随笔录.md: -------------------------------------------------------------------------------- 1 | 不顺的地方:平台这个概念,在顶层认知上仍然是松散的、碎片化的集合,而不是一个有体感的、有想象空间、科技认知的有机完整实体。 2 | 3 | 我们的认识:中短期内,可体现或者我们正在实现的平台价值: 4 | 5 | - 面向消费者/终端企业/第三方制造平台的专业化,一站式,全流程可数字化追踪的 3d 打印云平台。反馈指标:平台用户数,线上流水 6 | - 面向 3d 打印制造企业,打造了可以快速复制的数字化工厂模板,包含全链路自动化、专业化解决方案,赋能工厂快速扩张,降本提效。反馈指标:连入设备数,托管式生产流水,效率提高比例,工厂节点复制速度,生产经验大数据(譬如快速报价模型,可生产性分析等) 7 | - 面向小批量制造需求,整合上下游产业链,构建了分布式制造协同网络。反馈指标:协同网络内玩家数,动态调配的能力体现 8 | 9 | 需明确的定位:Unionfab 是面向消费者和终端企业个性化、小批量需求的一站式云平台;同时赋能数字化制造工厂,打造柔性分布式制造协同网络,形成具备指数效应的行业价值网络。 10 | 11 | 需权衡的考量: 12 | 13 | - 假设目前的平台的前进速度是 1,实现以上目标需要 1-2 年,是否需要提速。 14 | - 目前已知是在设备连接和托管式生产作为指标,是否需要在其他指标上进行投入? 15 | -------------------------------------------------------------------------------- /.github/SCRIPTS/commit-all.sh: -------------------------------------------------------------------------------- 1 | rm -rf /Users/zhangzixiong/Desktop/Workspace/Github/ngte/wx-chevalier.github.com/content/books 2 | rm -rf /Users/zhangzixiong/Desktop/Workspace/Github/ngte/wx-chevalier.github.com/docs/books 3 | 4 | for file in *; do 5 | [ -d "$file" ] || continue 6 | 7 | if [ "$file" == "Private" ] || [ "$file" == "config" ] || [ "$file" == "examples" ] || [ "$file" == "models" ] || [ "$file" == "algorithms" ] || [ "$file" == "code" ]; then 8 | continue 9 | fi 10 | 11 | echo "cd $file" 12 | cd ./$file 13 | 14 | ./commit-all.sh 15 | 16 | cd .. 17 | done 18 | -------------------------------------------------------------------------------- /.github/META/commit-all.sh: -------------------------------------------------------------------------------- 1 | (cd /Users/zhangzixiong/Desktop/Github/AI/Soogle/sg-index-doc && npm run ts ./src/cli/generate-toc.ts) 2 | 3 | for file in *; do 4 | [ -d "$file" ] || continue 5 | 6 | if [ "$file" == "config" ] || [ "$file" == "examples" ] || [ "$file" == "models" ] || [ "$file" == "algorithms" ] || [ "$file" == "code" ]; then 7 | continue 8 | fi 9 | 10 | echo "cd $file"; 11 | cd ./$file 12 | # git lfs uninstall 13 | git lfs track *.zip 14 | 15 | git add --all 16 | git commit -m "feat: update articles" 17 | git pull 18 | git push 19 | cd .. 20 | done -------------------------------------------------------------------------------- /02~月熊存在的痕迹/虎虎/出生日.md: -------------------------------------------------------------------------------- 1 | # 2023.3.28 虎虎出生 2 | 3 | 7:30 出门 4 | 9:00 到医院,进入待产间 5 | 10:06 开始挂水,插入留置针,可痛了。 6 | 10:43 开始做 B 超 7 | 11:00 左右上药开始宫缩,顺产宫缩太可怕了。全身疼的发紫,不停打颤,有点发烧,还是决定剖腹产了。 8 | 13:00 左右取药之后疼痛略有减少,慢慢进入睡眠 9 | 13:30 签订脐带血协议 10 | 14:00 医生检查的时候发现开指了,还是再等等能不能顺产 11 | 15:00 开始吃螺蛳粉 12 | 16:00 又越来越疼,疼痛还可以忍受,胎心恢复到 150 左右 13 | 16:30 指检还是一公分左右 14 | 16:45 起床散步,希望加快开指 15 | 17:15 砰的一声,破水,还没开两指 16 | 18:30 继续宫缩等待中,一两分钟就疼一次,疼痛加剧 17 | 18:50 开两指,准备打无痛,转入 LDR 产房 18 | 19:05 等待麻醉医生过来,直接八指 19 | 19:09 麻醉医生终于来了 20 | 19:30 开始摆好生产姿势 21 | 19:38 二虎出生,3390g,50cm 22 | 20:22 因为羊水浑浊和母体发烧,送往新生儿科 23 | 20:41 帮虎虎办理入院 24 | 21:15 开始吃饭 25 | 22:00 转移到 15 楼 V27 号房 26 | 22:18 帮忙下床 27 | 11:30 下床排尿 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2020/微前端 & K8s,创业团队的多平台前端项目的构建之路.md: -------------------------------------------------------------------------------- 1 | # 微前端 & K8s,创业团队的多平台前端项目的构建之路 2 | 3 | 本文笔者想换一种表述方式,不同于之前文章中的条分缕析,而是以问-答形式记述这半年来的一些思考。 4 | 5 | # 业务 VS 技术? 6 | 7 | 在《领域建模》系列文章中, 8 | 9 | 统一认知 10 | 11 | # 如何提高团队的研发效能? 12 | 13 | - 够用的脚手架、统一的配置 14 | 15 | - 所谓中台 16 | 17 | 这两年中台的概念很火,很多公司都进行了所谓中台的落地性实践,这里我们也借用中台这个概念,笔者认为每个最小组织的团队,都应该也有自己的中台武库。还是要强调下,这里不希望形而上学,借用了所谓中台的概念,只是为了去描述为了提高整个团队,面向业务交付侧的研发效能的提升,应该做的努力。 18 | 19 | 前端的中台,有交付向的、数据向的、体验向的(譬如 [UEME](https://github.com/FE-Kits/ueme))、可视化搭建向的等等,对于创业团队,可能无法很快地将某些设想系统化。典型的就像页面搭建的能力,我们也需要面向不同的客户提供不同的 20 | 21 | # 不同的项目之间应该如何平衡共享-个性化之间的差异? 22 | 23 | 正如笔者在《软件系统架构》系列文章中的讨论,无论是对于微服务还是微前端,过早地进行优化绝对是潜在风险。 24 | 25 | # 如何平滑团队同学间的能力差异? 26 | 27 | - 使用 TypeScript 28 | 29 | [【NEXT 公开课】TypeScript 应用实践](https://ke.qq.com/course/982020?taid=6253979190098948&tuin=16f17b88) 30 | 31 | - 使用 ESLint & TSLint 32 | 33 | - 使用 VSCode Snippets 34 | 35 | # 如何提高产品的体验感? 36 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-007-ChaosScanner.md: -------------------------------------------------------------------------------- 1 | ![](https://website/vHMJtwd4/image.png) 2 | 3 | # Chaos Scanner,从零构建的多策略(爬虫扫描 & POC 扫描)、模块化、分布式安全扫描器 4 | 5 | 在 [Awesome InfoSecurity List](https://ngte-al.gitbook.io/i/infosecurity) 中就列举了很多开源的扫描器以及安全工具。但是,即使像 w3af 这样著名的开源扫描器,其也存在扫描不稳定、无法进行大规模分布式扫描、无法进行人机协作的半自动化扫描等问题,也无法完美地解决笔者的问题。因此我们打算自己从零开始开发一款尽可能贴近商业级扫描器要求的、模块化、弹性可伸缩的扫描器,我们最初只是从简单的分布式 POC 执行框架开始,逐步完善漏洞库与 POC 库;再逐步用自己实现的 SQL 注入、命令执行、XSS、CSRF 等经典的基础扫描模块替换 SQLMap 等。 6 | 7 | # 部署配置 8 | 9 | 使用 ctop 查看容器部署状态: 10 | 11 | ![](https://website/SK2k9vCV/image.png) 12 | 13 | 使用 htop 查看当前系统的资源使用情况: 14 | 15 | ![](https://website/9QNXMNLX/image.png) 16 | 17 | 可以发现,Chaos Scanner 是 CPU 密集型程序,后面我们会在并发调度上采取进一步的优化措施。 18 | 19 | # 功能特性 20 | 21 | ## POC 与组件基础框架 22 | 23 | ![](https://website/W37592Pn/image.png) 24 | 25 | ## 资产的全生命周期管理 26 | 27 | ## 扫描管理 28 | 29 | ## 设备管理 30 | 31 | ## 数据沙盘 32 | 33 | ![](https://website/y8JrV4F1/image.png) 34 | 35 | # 架构设计 36 | -------------------------------------------------------------------------------- /.github/SCRIPTS/commit-all.doc.sh: -------------------------------------------------------------------------------- 1 | for file in *; do 2 | [ -d "$file" ] || continue 3 | 4 | if [ "$file" == "config" ] || [ "$file" == "examples" ] || [ "$file" == "models" ] || [ "$file" == "algorithms" ] || [ "$file" == "code" ]; then 5 | continue 6 | fi 7 | 8 | echo "cd $file" 9 | cd ./$file 10 | 11 | docsify-x-auto-sidebar -s -d . 12 | docsify-sync-to-hugo -d . -t /Users/zhangzixiong/Desktop/Workspace/Github/ngte/wx-chevalier.github.com/content/books 13 | 14 | # git lfs uninstall 15 | # git lfs track *.pdf 16 | # git lfs track *.zip 17 | 18 | git add --all 19 | git commit -m "feat: update articles" 20 | git pull 21 | git push --set-upstream origin master 22 | 23 | git checkout gh-pages 24 | git merge master 25 | git push --set-upstream origin gh-pages 26 | 27 | git checkout master 28 | # 将 gh-pages 合并进来,避免提交过程中的修改 29 | git merge gh-pages 30 | cd .. 31 | done 32 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2024~程序员的中年危机.md: -------------------------------------------------------------------------------- 1 | # 程序员的中年危机 2 | 3 | 路在何方?路在脚下呀。笔者此言意思是,不同人的选择肯定是不一样的。在过去十年的代码生涯中,感觉大部分码农对程序的态度,更多的是工作;即使在年轻的时候充满兴趣,随着时间的推移、业务的消磨,慢慢也就变成了平淡。笔者并不认为这样不好,毕竟工作的首要目的还是赚钱,而不是兴趣,但是不同的底座,也就决定了对未来路的选择不同。 4 | 5 | 无论哪条路,我们都要能在岁月的长河中留下自己的痕迹,而不是日复一日地重复,这才是最大的危机。 6 | 7 | # 套路流 8 | 9 | 成为合格的管理者/协调者,熟知大中型公司的套路,能够在不同的公司里找到自己的定位。这个流派应该是大部分人的选择,因为它不需要选择,典型的以不变应万变。但是有得就有失,当发生剧烈的行业、阶层变革时候,过去的套路往往会烟消云散,这也是很多人所谓中年危机的来源吧;成为了某个公司的专用人才、掌握了某些固有的套路。 10 | 11 | 虽然有明显的缺陷,但也不意味着这个流派就一无是处;恰恰相反,这应该是每个人都要提醒自己注意的方向。所谓宏观战略,中观套路,微观体感,其实就是中观套路最容易形而上学;笔者自我感觉从阿里学到的最大的价值点就是它的黑话与套路,这种培养出来的职业基因可能会被淘汰,但会是未来创新基因培育的土壤。 12 | 13 | 如果你既不喜欢技术,也不喜欢行业,倒不如多留心些套路,让岁月在你的身上能够沉淀些璀璨的东西,即使是拿来主义。 14 | 15 | # 技术流 16 | 17 | 如果你是技术流,即对技术会保持终身的热爱,而不仅仅将其作为赚钱的工具,那笔者却是首先想提醒你,要小心了。技术即是你安身立命的依仗,也会是你成长的羁绊,限制你的人生格局;笔者的前两次创业都是因为太囿于技术,而遗憾告终。如果你是技术流,我反而想提醒你务必要具有产品,或者行业视野,对绝大部分人而言,要始终对业务、对产品心怀敬畏。 18 | 19 | # 行业流 20 | 21 | 认准某个行业,在行业的成长中分享属于自己的红利。就像前几年的互联网,笔者从进入职场到现在,一直都在寻找能落地的行业方向。未来技术会越来越普及,编程将会成为人们的通用技能,而唯有不同的行业,才能诞生好的商业模式,诞生值得技术去培育的生存之基。 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | 28 | - OS: [e.g. iOS] 29 | - Browser [e.g. chrome, safari] 30 | - Version [e.g. 22] 31 | 32 | **Smartphone (please complete the following information):** 33 | 34 | - Device: [e.g. iPhone6] 35 | - OS: [e.g. iOS8.1] 36 | - Browser [e.g. stock browser, safari] 37 | - Version [e.g. 22] 38 | 39 | **Additional context** 40 | Add any other context about the problem here. 41 | -------------------------------------------------------------------------------- /.github/META/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "python.formatting.provider": "autopep8", 4 | "files.exclude": { 5 | "**/.classpath": true, 6 | "**/.project": true, 7 | "**/.settings": true, 8 | "**/.factorypath": true, 9 | "**/*.ts": true, 10 | "**/*.go": true, 11 | "**/*.java": true 12 | }, 13 | "files.watcherExclude": { 14 | "**/algorithms/**": true, 15 | "**/examples/**": true, 16 | "**/models/**": true, 17 | "**/code/**": true, 18 | "**/boilerplates/**": true, 19 | "**/*.ipynb": true 20 | }, 21 | "search.exclude": { 22 | "**/node_modules": true, 23 | "**/bower_components": true, 24 | "build/": true, 25 | "temp/": true, 26 | "library/": true, 27 | "**/.git": true, 28 | "**/*.o": true, 29 | "**/*.cmd": true, 30 | "**/*.tmp*": true, 31 | "**/*.git*": true, 32 | "**/*.symvers": true, 33 | "**/*.order": true, 34 | "**/algorithms/**": true, 35 | "**/examples/**": true, 36 | "**/models/**": true, 37 | "**/code/**": true, 38 | "**/boilerplates/**": true 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /.github/META/LICENSE.code: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 wx-chevalier 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2023/2023~年度任务.md: -------------------------------------------------------------------------------- 1 | # 2023~年度任务 2 | 3 | - 技术:掌握 C++ & Rust 4 | 5 | - [ ] 学习 Google 的 Rust 教程; 6 | - [ ] 学习 QT 基础教程; 7 | - [ ] 阅读并整理 BytebyteGo 的文章; 8 | - [ ] 阅读《Clojure 编程乐趣第二版》 9 | - [ ] 阅读并整理[《Modern-CPP-Programming》](https://github.com/federico-busato/Modern-CPP-Programming/tree/master) 10 | - [ ] 阅读并整理[《计算几何》](https://zhuanlan.zhihu.com/p/33355636) 11 | - [x] 阅读《计算机图形学(微课版)》 12 | 13 | - AI:Follow 并实验 3D AIGC 相关研究 14 | 15 | - [ ] Follow 最新的 3D-CV & Generation 领域的论文; 16 | - [ ] 学习 [Fast.ai Courses](https://course.fast.ai/); 17 | 18 | - 产品:构建体系化产品与管理认知 19 | 20 | - [ ] 翻译并且阅读完 《About The Startup CTO's Handbook》; 21 | - [ ] 听完齐俊杰高效能人士的七个习惯音频; 22 | - [ ] 学习至少三个系列的 SEO 教程:[《CrossBorder-Notes》](https://ng-tech.icu/books/CrossBorders-Notes) 23 | 24 | - 命理学 25 | 26 | - [ ] 整理袁树珊、周德元老师几篇书籍的前言序为电子版; 27 | - [ ] 看完 YouTube 上关于手相的一节; 28 | 29 | - 投资:建立对于投资的体系化认知 30 | 31 | - [ ] 阅读《置身事内》 32 | 33 | - 英语:持续学习,建立国际化视野 34 | 35 | - [ ] 完成多邻国的英语两阶段课程; 36 | - [ ] 每日复习有道词典单词库内容; 37 | - [ ] 浏览[海之光英语](https://www.youtube.com/watch?v=1usCP_lD3Wk)的系列学习视频并笔记; 38 | 39 | - 健康:让运动成为习惯 40 | 41 | - [ ] 每周至少去两次健身房; 42 | - [ ] 进行两次体检; 43 | - [ ] 更新保险; 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore all 2 | * 3 | 4 | # Unignore all with extensions 5 | !*.* 6 | 7 | # Unignore all dirs 8 | !*/ 9 | 10 | .DS_Store 11 | 12 | # Logs 13 | logs 14 | *.log 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | 19 | # Runtime data 20 | pids 21 | *.pid 22 | *.seed 23 | *.pid.lock 24 | 25 | # Directory for instrumented libs generated by jscoverage/JSCover 26 | lib-cov 27 | 28 | # Coverage directory used by tools like istanbul 29 | coverage 30 | 31 | # nyc test coverage 32 | .nyc_output 33 | 34 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 35 | .grunt 36 | 37 | # Bower dependency directory (https://bower.io/) 38 | bower_components 39 | 40 | # node-waf configuration 41 | .lock-wscript 42 | 43 | # Compiled binary addons (https://nodejs.org/api/addons.html) 44 | build/Release 45 | 46 | # Dependency directories 47 | node_modules/ 48 | jspm_packages/ 49 | 50 | # TypeScript v1 declaration files 51 | typings/ 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional REPL history 60 | .node_repl_history 61 | 62 | # Output of 'npm pack' 63 | *.tgz 64 | 65 | # Yarn Integrity file 66 | .yarn-integrity 67 | 68 | # dotenv environment variables file 69 | .env 70 | 71 | # next.js build output 72 | .next 73 | -------------------------------------------------------------------------------- /.github/META/clone-all.sh: -------------------------------------------------------------------------------- 1 | # !/bin/sh 2 | 3 | git clone git@github.com:wx-chevalier/AIDL-Series 4 | git clone git@github.com:wx-chevalier/Application-Series 5 | git clone git@github.com:wx-chevalier/Awesome-CheatSheets 6 | GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:wx-chevalier/Awesome-CS-Books.git 7 | git clone git@github.com:wx-chevalier/Awesome-Interviews 8 | git clone git@github.com:wx-chevalier/Awesome-Lists 9 | git clone git@github.com:wx-chevalier/Awesome-MindMaps 10 | git clone git@github.com:wx-chevalier/Awesome-RoadMaps 11 | git clone git@github.com:wx-chevalier/Backend-Series 12 | git clone git@github.com:wx-chevalier/Business-Series 13 | git clone git@github.com:wx-chevalier/Cloud-Series 14 | git clone git@github.com:wx-chevalier/Database-Series 15 | git clone git@github.com:wx-chevalier/Developer-Zero-To-Mastery 16 | git clone git@github.com:wx-chevalier/DistributedSystem-Series 17 | git clone git@github.com:wx-chevalier/Frontend-Series 18 | git clone git@github.com:wx-chevalier/HA-Series 19 | git clone git@github.com:wx-chevalier/Java-Series 20 | git clone git@github.com:wx-chevalier/JavaScript-Series 21 | git clone git@github.com:wx-chevalier/Linux-Series 22 | git clone git@github.com:wx-chevalier/Mathematics-Series 23 | git clone git@github.com:wx-chevalier/MicroService-Series 24 | git clone git@github.com:wx-chevalier/Product-Series 25 | git clone git@github.com:wx-chevalier/ProgrammingLanguage-Series 26 | git clone git@github.com:wx-chevalier/SoftwareEngineering-Series 27 | git clone git@github.com:wx-chevalier/Spring-Series 28 | git clone git@github.com:wx-chevalier/Web-Series -------------------------------------------------------------------------------- /02~月熊的成长之路/2016/怀着被抛弃的恐惧在奋斗中前行.md: -------------------------------------------------------------------------------- 1 | - [怀着被抛弃的恐惧在奋斗中前行](https://zhuanlan.zhihu.com/p/25435411) 从属于笔者的[程序熊的自我修养](https://github.com/wx-chevalier/Coder-Knowledge-Graph/tree/master/I-AM-Coder)系列,本文并非技术向文章,而是笔者对于近日一些事件阅读的感悟,慎入。 2 | 3 | 还有半年就要毕业了,要进入最近裁员风波闹的沸沸扬扬的某司工作,心情有些复杂,期待与忧虑并存。2016 年的年末,笔者莫名开始有些恐慌的情绪,一部分来自于学业与工作的压力,另一部分却是来自于对于未来的未知的恐惧。笔者目前所兼职带技术团队的公司是负责政府相关的一些技术服务,这个行业很明显感觉整体的技术水平与外部相差很多;就好像井底之蛙,被厚厚的壁垒与外部的江河隔开,仅看到那一方小小的天地。年会上做年度总结的时候,看着下面坐着的,跟了我三四年的那些年轻的面孔,处于对他们的责任感我很担心哪一天这个壁垒被打破之后,他们会陷入所谓的中年危机。另一方面,笔者自己在南大就读的也是人工智能与数据挖掘相关,虽然是个门外汉但看着大潮浩荡而来,许多曾经的巅峰被征服,笔者不免担心会不会未来就是巨头的天下?。这一轮人工智能深度学习的浪潮可能难再现当年互联网浪潮下千帆竞渡的盛景,也就意味着不会有那么多面向我们这些一无所有的年轻人的机会。后来听了吴恩达等大牛的演讲认识到端到端的学习尚未主导,心中不免送了一口气,又杞人忧天了一回。未来简史中分析二十一世纪会存在三种人:无用的人、没有自主的人与神人。工业革命是发挥人的生产力,而智能革命则是替代人,虽然笔者认为现阶段的人工智能的目标是辅助人工智能,但是依然会在未来取代很多行业的职位,并且这些辅助性的人工智能会比你自己更了解自己,也更能影响你自己。如果有一天我们真的成为了电影里每日衣食无忧,不用烦恼的神人,那么和过去城隍庙里被人供奉,每日享受些香火的泥塑菩萨又有什么区别? 就像[DeepCoder: Learning to Write Programs](https://arxiv.org/abs/1611.01989) 或许只是初生儿,但是谁也不敢质疑真的会有程序员被抛弃的那一天。 4 | 5 | 诚如福楼拜所述,浅薄且不甘平庸是最大的原罪;但是我们平凡的大多数只能具有平凡的目光,绝大多数人注定不会成为那些幸存者。笔者这三年里作为旁观者也看过公司里迎来送往很多人,很多员工从入职到离职一直很努力,很认真负责,但是因为家庭、因为健康,或多或少的会影响到工作,影响到自己的产出。看着他们抱着纸箱离开的时候,我想起昨天晚上和 CEO 一起拟定这份裁员名单时候的决然和此时的心有不忍;很多时候,没有选择。笔者并不意为某司辩驳或者洗白,毕竟作为无产阶级与资本之间天然的竞合关系要求我们屁股决定脑袋;但是这种被抛弃可能并不会以人为意志为转移,就像房价一样,似乎所有人都不希望房价继续高歌猛进,但是天地不仁以万物为刍狗,在浩荡的时代潮流面前我们只是尔曹之流。 6 | 7 | 人的生命是可以被定量的,记得罗胖有专门的一集讨论过这个;人的价值和功劳也是可以被定量的,不知道这算不算按劳分配。笔者生长于苏北十八线小城市,从小被教育的,被立为榜样的都是体制内的人物。小时候最大的梦想就是找一个铁饭碗,我也无法忘记长辈们在领导面前的唯唯诺诺。我不想只活到二十岁,然后重复六十年;我选择了这条奋斗的道路,也要做好为之付出代价的准备。年轻的我靠奋斗可能超越某些人,未来的我也注定会被超越。 8 | 9 | 我终将被这个时代所抛弃,但希望是在我离开这个世界之后。我们也没有选择,唯有怀着被抛弃的恐惧在奋斗中前行。 10 | 11 | 写到这里头有点疼了,虽然今日的任务一件没有完成,但我知道我该睡了。 12 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~年度迭代.md: -------------------------------------------------------------------------------- 1 | # 2024 OKR 2 | 3 | # 科技 4 | 5 | - 技术:掌握 C++ 6 | 7 | - [ ] 阅读 2019~《The Pragmatic Programmer - Your Journey to Mastery》~V2 8 | - [x] 熟练掌握 Clojure 进行开发; 9 | - [ ] 熟练掌握 C++ 进行开发; 10 | - [ ] 学习 QT 基础教程; 11 | - [ ] 阅读并整理 ByteByteGo 的文章,包括题图与 2023 的订阅博客; 12 | - [ ] 阅读《Clojure 编程乐趣第二版》 13 | - [ ] 阅读并整理[《Modern-CPP-Programming》](https://github.com/federico-busato/Modern-CPP-Programming/tree/master) 14 | 15 | - 掌握 Rust 16 | 17 | - [ ] 学习 Google 的 Rust 教程; 18 | - [ ] 完成 [rust-seo-checker](https://github.com/lycheeverse/lychee); 19 | - [ ] 参考 [foxtrot](https://github.com/formlabs/foxtrot/); 20 | 21 | - 熟悉图形学 22 | 23 | - [ ] 阅读并整理[《计算几何》](https://zhuanlan.zhihu.com/p/33355636) 24 | - [x] 阅读《计算机图形学(微课版)》 25 | - [ ] 阅读[《OI-Wiki》](https://github.com/OI-wiki/OI-wiki) 26 | 27 | - AI:Follow 并实验 3D AIGC 相关研究 28 | 29 | - [ ] Follow 最新的 3D-CV & Generation 领域的论文; 30 | - [ ] 学习 [Fast.ai Courses](https://course.fast.ai/); 31 | 32 | - 编程理念 33 | - [ ] 整理 ByteByteGo [10 Coding Principles Explained in 5 Minutes](https://www.youtube.com/watch?v=GmXPwRNIrAU); 34 | - [ ] 阅读极客时间系列中的感兴趣的内容; 35 | 36 | # 商业 37 | 38 | - 产品:构建体系化产品与管理认知 39 | 40 | - [ ] 翻译并且阅读完 《About The Startup CTO's Handbook》; 41 | - [ ] 听完齐俊杰高效能人士的七个习惯音频; 42 | - [ ] 学习至少三个系列的 SEO 教程:[《CrossBorder-Notes》](https://ng-tech.icu/books/CrossBorders-Notes) 43 | 44 | - 投资:建立对于投资的体系化认知 45 | 46 | - [ ] 阅读《置身事内》 47 | - [ ] 完成估值对比表格; 48 | 49 | - 3D 打印 50 | - [ ] 阅读并记录 《Oqton~Design for AM Guide》 51 | 52 | # 玄学 53 | 54 | - 命理学 55 | 56 | - [ ] 整理袁树珊、周德元老师几篇书籍的前言序为电子版; 57 | - [ ] 看完 YouTube 上关于手相的一节; 58 | - [ ] 了解面相的基础知识; 59 | 60 | - 英语:持续学习,建立国际化视野 61 | 62 | - [ ] 完成多邻国的英语两阶段课程; 63 | - [ ] 每日复习有道词典单词库内容; 64 | - [ ] 浏览[海之光英语](https://www.youtube.com/watch?v=1usCP_lD3Wk)的系列学习视频并笔记; 65 | - [ ] 阅读完毕《30 天突破商务英语》 66 | 67 | - 健康:让运动成为习惯 68 | 69 | - [ ] 每周至少去两次健身房; 70 | - [x] 进行两次体检; 71 | - [x] 续订保险; 72 | 73 | - 笔记:不断整理、写作 74 | - [x] 合并 Awesome Lists 与 Awesome CheatSheets 75 | -------------------------------------------------------------------------------- /02~月熊的成长之路/README.md: -------------------------------------------------------------------------------- 1 | ![](http://upload-images.jianshu.io/upload_images/1647496-d281090a702045e5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 2 | 3 | # 某熊的技术之路 4 | 5 | `Copyright © 王下邀月熊` 6 | 7 | 我到达的地方就是我的梦想。 8 | 9 | # 前言 10 | 11 | 技术分为术与道两者,术即是具体的做事的方法,而道则是做事的逻辑抽象的原则与原理。一味地追求术的人往往都是希望走捷径,不求甚解的。而道之所求也是符合一万小时原理,需要大量的付出与总结。借用数学之美中的例子,如果你想要去建立一个搜索引擎,直接拿来主义,用上 Solr、ElasticSearch 之类的,是术。而根据下载、索引与排序这三个抽象步骤来进行提炼与升华,这就是道。计算机科学有两类根本问题。一类是理论:算法,数据结构,复杂度,机器学习,模式识别,等等等。一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,等等等等。理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合。 12 | 13 | 做系统,确实不提倡“重复发明轮子”。但注意,是不提倡“重复发明”,不是不提倡“重新制造”。恰恰相反的,我以为,系统的编程能力正体现在“重新制造”的能力。系统编程能力体现在把已有的代码拿来并变成更好的代码,体现在把没用的代码拿来并变成有用的代码,体现在把一个做好的轮子拿来能画出来轮子的设计蓝图,并用道理解释出设计蓝图中哪些地方是关键的,哪些地方是次要的,哪些地方是不容触碰的,哪些地方是还可以改进的。 14 | 15 | # 目录 16 | 17 | - 2018 18 | 19 | - [创业二三言, 从零到一的蹒跚之路](./2018/创业二三言.md) 20 | - [我在菊场这一年](./2018/我在菊场这一年.md) 21 | - [笔记系统与知识管理](./2018/笔记系统与知识管理.md) 22 | 23 | - 2017 24 | 25 | - [2017~我的技术之路](./2017/2017-我的技术之路.md) 26 | - [2017~Web 进阶路线图](https://parg.co/U4T) 27 | - [2017~我的知识图谱与技术体系](./2017/2017-我的知识图谱与技术体系.md) 28 | - [The-Top-Rising-JavaScript-Trends-To-Watch-In-2017](./2017/The-Top-Rising-JavaScript-Trends-To-Watch-In-2017.md) 29 | - [Top JavaScript Frameworks & Topics to Learn in 2017](https://parg.co/U42) 30 | - [程序员的自我修养:我写代码这三年](./2017/程序员的自我修养:我写代码这三年.md) 31 | 32 | - 2016 33 | 34 | - [2016~我的技术之路与知识体系](./2016/2016-我的技术之路与知识体系.md) 35 | - [2016~我的前端之路](./2016/2016-我的前端之路.md) 36 | - [How-It-Feels-To-Learn-JavaScript-In-2016](./2016/How-It-Feels-To-Learn-JavaScript-In-2016.md) 37 | - [The State of Front-End Tooling 2016 - Results](https://parg.co/U4z) 38 | - [怀着被抛弃的恐惧在奋斗中前行](./2016/怀着被抛弃的恐惧在奋斗中前行.md) 39 | - [某熊的阅读与写作日常](./2016/某熊的阅读与写作日常.md) 40 | 41 | - 2015 42 | 43 | - [2015-我的技术之路与知识体系](./2015/2015-我的技术之路与知识体系.md) 44 | - [2015-我的前端之路](./2015/2015-我的前端之路.md) 45 | - [如何成为优秀的软件工程师](./2015/如何成为优秀的软件工程师.md) 46 | - [熊写代码这三年:阅读写作与技术成长](./2015/熊写代码这三年:阅读写作与技术成长.md) 47 | 48 | # 狗粮 49 | 50 | 如果觉得本系列对你有所帮助,欢迎给我家布丁买点狗粮(支付宝扫码)~ 51 | 52 | # 版权 53 | 54 | ![](https://parg.co/bDY) ![](https://parg.co/bDm) 55 | 56 | 笔者所有文章遵循 [知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh),欢迎转载,尊重版权。 57 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2023/2023~随笔录.md: -------------------------------------------------------------------------------- 1 | # 2023 随笔录 2 | 3 | # 2023.12 ONE 的反思 4 | 5 | 我之前一直不太理解为什么要通用版,以及通用版到底会是个啥,最近才内外夹击之下慢慢感觉悟了。所谓 ONE 的定制版与通用版,并不是从软件侧的区分,软件侧天然就是一套代码,多场景组合。ONE 的定制版本质上是指影响生产的工艺流程参数被写死在了软件里(分散在了 ONE、PD、BPC、RSCON 中等),而通用版是要求设备配套软件整体能够将工艺调制能力解耦合,外化,让 ONE 成为满足垂直行业快速开发应用的、能够数据驱动的软件辅助开发平台。 6 | 7 | ONE 通用版的对联泰的终极目标是成为设备的操作系统,提供工艺数字化工具,能够将工艺,软件,硬件解耦。对客户的终极目标是提供简捷生产的自动化软件。2022-2023 ONE 团队本质上是做了联泰内部软件和工艺的最后集成商,以客户为中心提供产品。我们花了 60% 的精力为 DSCON、RSCON、BPC 和各种来自业务、工艺需求做定制化的兼容、优化,就像正雅项目,我们趟平了最后一公里。在这种资源有限,需求明确又紧急,内外都在表达不满催促,的背景下,我们将大量工艺参数写死在了代码里。 8 | 9 | 2024 年开始整合的 ONE 通用版,最大的挑战就是如何既实现模块调用解耦,参数解耦的同时,还要保证整体稳定性和效率,还要保证按时完成业务方的交付要求。如果站在核心竞争力的角度,未来想要以工艺应用和数据为主要抓手,那么 ONE 通用版就是道阻且长的事情。 10 | 11 | # 2023.11 产品反思 12 | 13 | - 做好产品定义 14 | 15 | - 产品的定义是多维度的 16 | - 产品定义是资源投入的前置条件 17 | - 有些产品是无法定义的 18 | 19 | - 平衡好务虚与务实 20 | 21 | - 战略决定上限,组织决定下限 22 | 23 | - 做有共识的事,与合适的人共事 24 | 25 | - 很难依赖组织创新 26 | - 共识是层层递进的 27 | - 有的人因为看到所以相信,有的人因为相信所以看到 28 | - 从一个成功走向另一个成功 29 | 30 | - 尊重软件开发的自然周期 31 | - 通用并不是最好的 32 | - 合理使用第三方软件 33 | 34 | # 2023.9.5 35 | 36 | 回顾这几年 Unionfab 软件产品发展的过程,做出一定结果的是三家工厂用的 UTK MES(Unionfab Cloud V1)、海外业务用的独立站及运营后台、给行业客户使用的 X ONE 与方便大客户集成的 ONE API;讨论了多次没做或者放弃的是老的产能协同、老的国内独立站、Martrix 独立站、光鱼、模型库、手扳厂的自动排产与自动前处理、极印等等。二者相对比,最大的差异性是做成的都是有迫切的场景价值需求,会对实际的资源投入以极强的吸引力;只是个人执念推动的,在资源有限的情况下,往往难以有持续性。 37 | 38 | 而从产品内在成长的角度看,最初两年做 UTK MES 的时候,我们是技术功能驱动产品,是把客户零碎的需求以软件功能实现、封装;从去年到今年构思 ONE、极印、海外独立站的时候,我们是开始产品定义驱动产品,在完整的产品定义与路线图指导下的缓慢推进。前述两个成长方式时至今日造成了一定的割裂感,软件显示度不足,我们一直在不断地补齐短板而非拉长长板。 39 | 40 | 下一阶段,我们面临最大的挑战就是如何做出软件的显示度,在保证软件基座平稳的基础上,打造产品长板。这会要求我们能够穿透需求,还原真实需求场景,巧妙地定义场景粒度与范围,对业务进行正确抽象;并合理评估场景价值和可实现性,产品经理做出对有价值场景的优先级排序与决断。 41 | 42 | 未来,我们的生死也会系于是否能够不断发现切实有价值的用户场景,我们现在做的产品体系能够决定我们的下限,不断地场景实现才能拓宽我们的上限。 43 | 44 | # 2023.6.22 45 | 46 | 今天和一个朋友讨论某个案例,感慨于中型组织在治疗小企业病进行规范化转型的过程中也是容易走向平庸最终失去活力慢性死亡。创业初期要么依赖于势,在好的赛道等风来,自然求之于势不责于人;要么依赖核心人员的跨纬度竞争力构建比较优势。而在组织走向成熟的过程中,扩张的冲动会分散组织的精力,层级的建立会迟钝反射链路,制度的完善会让大家从拿结果转而关注程序正义,最终抑制组织活力,既让核心人员失去创业心,也会让新的有价值的人员不断流失。而中型组织也没有足够的资源与空间去试错,不可能破而后立,只能陷入不断以制度补制度的循环,过多的制度又会进一步压制组织活力;大部分普通的中型组织不可能以制度创新对后来者形成长期竞争优势,制度能构成护城河,但是只能守成而不能进取,真正地突破还是要依赖人才。失去了组织活性犹如困于长城之内的晋宋,而不能像汉唐明那样犁庭扫穴。 47 | 48 | # 2023.2.27 49 | 50 | 就像机器学习中的过拟合与欠拟合一样,产品设计也是徘徊在对业务的百分百复刻与能以无代码实现这二者之间;特别是在同一领域的不同客户异同参半的情况下,既要能够满足各家个性化的需求(合适是最快的提效方式),也要能够具备一定的通用性(降低开发与交付成本)。在深度使用了 Notion、企微智能表格等相关的软件后,发现确实大部分的工作场景都可以由表格、看板、工作流等等构成,就像企微的智能表格在小项目管理上就很轻便。 51 | -------------------------------------------------------------------------------- /02~月熊的成长之路/某熊的人生指向标.md: -------------------------------------------------------------------------------- 1 | > DocId: a382af7a-19ac-5805-b15a-c72d853df368 2 | 3 | # 某熊的人生指向标 4 | 5 | # 2025.0523 6 | 7 | - 股票投资 8 | 9 | - 个人投资收益 10 | 11 | - 形成稳健的投资风格,能够形成正向现金流; 12 | 13 | - 自媒体号 14 | 15 | - 逐步累积自媒体内容; 16 | - 思维方法论分享主题; 17 | - 企业基本面分析主题; 18 | 19 | - 联泰扫尾 20 | 21 | - UT ONE 通用版的发布; 22 | - 手板前处理解决方案的发布; 23 | - 逐步将文档规整到飞书(包括 WPS 中的记录); 24 | 25 | - 认知体系化 26 | 27 | - 产品 28 | 29 | - 技术管理 30 | 31 | - 抖音运营 32 | 33 | - 技术开发 34 | 35 | - C++ 开发能力 36 | 37 | - 掌握 QT 项目开发; 38 | - 参与部分 RenderKits 的开发; 39 | 40 | - Python、Rust、Go 各完成一个开源项目 41 | 42 | - 其他副业 43 | 44 | - TG 45 | 46 | - 确认正向现金流 47 | 48 | - 美高 49 | 50 | - 确认正向现金流 51 | 52 | - 爬宠 53 | 54 | - 确认养殖可行性 55 | 56 | # 2025.0511 57 | 58 | - 股票投资 59 | 60 | - 年内高点后,重塑资产负债表 61 | - 构建稳定盈利的投资模型,胜率优于赔率,仓位控制很重要 62 | 63 | - ONE 64 | 65 | - 产品真实研发落地 66 | 67 | - 自媒体号 68 | 69 | - 培育好定期发内容的习惯 70 | 71 | - 投顾课程 72 | 73 | - 梳理并尝试好流量端的打法 74 | - 闲鱼店可以顺手挂着 75 | - ❎ 不做销售、推广的事情 76 | 77 | - 爬宠 78 | 79 | - 确认爬宠事项的可行性 80 | 81 | - TG 82 | 83 | - 跑完整个环节,形成解决方案 84 | 85 | # 2025.0126 86 | 87 | - ONE & 算法库 88 | 89 | - 开始学习机械结构、电子电路、嵌入式相关资料; 90 | - 推动 ONE & 算法库在业务场景的确定性落地; 91 | 92 | - 美术高考 93 | 94 | - 深度了解艺术生的日常沟通与知识点; 95 | - 建立学业规划的完整的项目规划; 96 | 97 | - 桌游店 98 | 99 | - 梳理出完整的桌游店服务流程; 100 | 101 | - 理财卖课 102 | 103 | - 重新尝试理财信息分享,建立公众号; 104 | 105 | - 海外拓客 106 | 107 | - 每周至少发出三个开发信; 108 | 109 | - 海外研发 110 | 111 | - 招聘合格的架构师; 112 | - 推动 API 的渐进式重构; 113 | 114 | # 2024.1020 115 | 116 | - 有始有终 117 | 118 | - 完成 ONE V1 的正式发布; 119 | - 完成算法库 Uni Kits V1 的正式发布; 120 | - 完成 D-MTM 项目代码的开发,不寻求从零构建,以接手现有代码为主; 121 | 122 | - 未来缘起 123 | 124 | - 实现海外业务闭环,星火计划一期顺利结项; 125 | 126 | # 2024.1009 127 | 128 | - 后续的核心能力 129 | 130 | - 技术能力 131 | 132 | - C++/Rust 等底层开发能力 133 | - Java/Go 等应用与微服务开发能力 134 | - JavaScript 及 Web 前端开发能力 135 | - 系统架构能力 136 | - 微服务、云原生等高可用架构 137 | - 系统逻辑架构设计 138 | - 分布式系统及中间件架构 139 | 140 | - 产品能力 141 | 142 | - 产品思维、产品战略设计、产品规划 143 | - 产品数据分析 144 | 145 | - 管理能力 146 | 147 | - 团队组织与管理 148 | - 项目管理 149 | - 领导力、人才梯队培养 150 | 151 | - 软技能 152 | - 创业精神 153 | - 学习、知识管理的能力 154 | - 沟通、演讲能力 155 | 156 | - 中期目标 157 | 158 | - 围绕合伙人计划形成《星火》项目; 159 | - 完成算法与端应用的年度发布会; 160 | - 完成交互式前处理的开发; 161 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2020/M 端产品设计札记.md: -------------------------------------------------------------------------------- 1 | # 设计札记 2 | 3 | [Unionfab 团队](https://cloud.unionfab.com/landing/)在 3D 打印与工业互联领域深耕多年,希望能面向行业提供,依托 3D 打印通用技术的、综合性数字化生产、及智慧工厂解决方案。我们的愿景包含了:SDM 软件定义制造、数据驱动,工业互联、MaaS,3D 制造即服务。本文是对笔者进来在软件产品设计、开发过程中的一些想法的记述。 4 | 5 | > 更多产品与行业的思考参阅 [《Product-Notes》](https://github.com/wx-chevalier/Product-Notes?q=); 6 | 7 | 制造端(M 端)的场景不同于泛 B 端,其也融入了许多 C 端的设计理念与原则。所谓 M 端,其特点在于: 8 | 9 | - 事:制造端必然脱离不了线下,任何的业务流程、软件系统的设计都需要考虑与线下场景的融合性,考虑人机交互的友好性;ToM 的产品,特别是含协同侧的产品,需要解决全流程(即某个可闭环流程)中的问题,其中往往涉及到譬如 CAD/CAM/CAE 等硬核科技难点,也会涉及到譬如不同设备数字化打通等生态交互的难点; 10 | 11 | - 人:制造端的很多用户往往缺乏软件相关的背景与认知,在习惯了固有的工作模式后往往抗拒改变,对系统变革过程中带来的阵痛会产生较大反弹;人员流动性大且纯软销售的商业模式不易,不适合投入大量的培训成本; 12 | 13 | - 异:不同行业、不同工厂之间的流程同中有异,不同职位、背景的人对系统的需求、期望有极大的差异; 14 | 15 | # 中国制造业的价格黑洞 16 | 17 | 任何的产品设计都脱离不了背后的商业模式,多次创业失败的经历也让笔者认识到从产品,即使是最基础的功能,设计之初就要不断思索未来的可运转的、能够产生正向现金流的商业模式。中国是世界工厂,制造业能力居世界之首,作为消费者是莫大的幸事,但是作为创业者就不可避免地经历及其残酷的价格竞争;这也就意味着想以制造业本身的利润去驱策高昂的软件研发投入,有着一定的风险。另一方面,目前国内的 ToM 软件付费的习惯,特别是在像 3D 打印这样细分领域内,还没有养成,软件想在初期即完成一定的正循环也是极难的。 18 | 19 | 很多企业服务创业者,都面临着技术和商业路径的折中和平衡;客户不关心技术,只关心解决方案,只关心你能否体现出真正的价值,而不是你 PPT 的酷炫程度。经过十余年数字化的洗礼,很多的制造工厂已经通过 QQ、Word、Excel 完成了一定的数字化改造,这点不能忽视;现在也绝不是拿着一个看板就能忽悠企业老板付费的年代。ToM 产品设计之初需要摈弃纯技术思维、产品思维,不能脱离你的行业背景或者现在的阶段去追求纯技术上的优越或者纯产品体验的优化;也不能以技术洁癖去重复造轮子,而是要能快速组合搭配到合适的方案。不过新技术可以成为敲门砖,新技术必须要比原有的解决方案产生更好的效果;一旦某家企业能够提早实现新技术的效能,就有可能成为超额利润的来源。 20 | 21 | 这次创业初期笔者也颇多自我怀疑,特别是以纯软方式在市场碰壁多次之后;相信很多的创业者也会有这样的漫漫长夜。这时候确实就要多想想底线思维与终局思维,所谓的底线思维,就是我们现在做的有没有价值,所处的行业是不是在发展,你自己有没有提高;即愿赌则不畏输,有所得即可。终局思维就是我们想达成的目标是不是被认可的未来的发展方向,就像云计算,就像新能源汽车,如果你笃定看到了未来的方向,那么过程中碰到的困难只要坚持了,总会有所汇报。 22 | 23 | # 产品设计的一些注意点 24 | 25 | - 主动、深入的需求挖掘:如前文所述,ToM 软件产品的用户往往对软件认知较少,不像大型的科技公司,业务会积极抛出需求;在制造业中需要我们以戴目倾耳、抽丝剥茧的方式去挖掘出需求。开发不能脱离工厂,脱离一线,要以敬畏之心主动参与到生产制造环节,去梳理然后复刻那些优秀的经验。 26 | 27 | - 点面结合,左冲右突:创业公司在设计产品的时候往往会有一个方向的考虑,是先以爆款单点突破还是直接推出大而全的平台型产品。笔者颇有感触的一点事,如果你只是提出像 MES、CRM、ERP 这种偏协同的信息化系统(譬如纯粹信息采集的工业互联系统),那么必然只能浮于表面,难以解决工厂真正的痛点;而如果你花费大力气解决了一两个关键节点,但是又缺乏全流程的系统支持,那么也无法让客户最终买单。在创业阶段各种资源有限的情况下,其中权衡只能是冷暖自知。 28 | 29 | - 化繁为简,降低认知门槛:软件的设计者、开发者往往很难想象自己看来很简单的几个功能,在用户看来是多么的复杂与难以理解。ToM 产品因其内在逻辑而不可避免地会包含诸多的流程、模块,我们需要做的就是如何降低用户的认知门槛,特别是对于那些可能连微信都不会的用户。笔者在这里是首要帮助用户建立角色认知,让他们将系统的功能与之前线下日常工作中的行为相勾连,逐步完成迁移。 30 | 31 | - 消息强通知与主动引导:这一点颇为重要,其核心是要让**用户不需要思考我要做什么,而是能够根据系统的引导、指令,知道自己要去做什么**。在流动性特别大、培训周期短的制造业工厂中,软件系统从被动向主动的转变,起到真正中枢调动的作用,是其核心价值所在。但是,需要强调的是,我们也不能直接建立空中楼阁,这一点的实现还是建立在已有系统各个原子模块完善,允许用户随时干预的前提下。 32 | 33 | - 灵活交互,便捷为上:所谓麻烦留给自己,便捷留给用户。这一点要求我们在对用户实际工作场景,譬如是否有电脑、是否能用手机、是否有大屏幕、是否方面输入等等,有明确认知的基础上,灵活选择交互方式。譬如对于需要录入较长文本的情况下可以选择扫码枪等,譬如不方便操作键盘鼠标的情况下采用脚踩式按钮等。 34 | -------------------------------------------------------------------------------- /02~月熊存在的痕迹/Zero Notes/Zero Notes,如何用 AI 赋能打造对抗遗忘的知识库(第二大脑).md: -------------------------------------------------------------------------------- 1 | ```md 2 | - 现代社会,短视频冲击之下,人们的记忆力越来越差; 3 | - 重点不是不会忘记,而是能够快速找回; 4 | - 随手记,重点不在多而在精,记录自己需要记录的、适合自己的最快的学习路径与方法; 5 | - 对抗遗忘的关键点: 6 | - 适合自己的学习路径/方式; 7 | - 适合自己的有价值的资料; 8 | - 关键点: 9 | - 强知识体系建构、树状索引目录结构; 10 | - 良好的阅读与检索体验; 11 | - AI 对于内容进行提炼、精简、改写; 12 | - 从写手变成编辑,人负责提纲,AI 负责整理并填充内容; 13 | ``` 14 | 15 | # Zero Notes | 零一拾记:如何用 AI 赋能打造对抗遗忘的知识库(第二大脑) 16 | 17 | 在当今快节奏的信息时代,我们面临着前所未有的知识挑战。本文将探讨如何利用人工智能(AI)技术来构建一个强大的个人知识管理系统,帮助我们更好地对抗遗忘,提高学习效率。 18 | 19 | ## 现代社会的记忆挑战 20 | 21 | - 在这个信息爆炸的时代,我们每天都被海量的信息所包围。短视频、社交媒体等新兴媒体形式的兴起,虽然带来了丰富多彩的内容,但也对我们的注意力和记忆力造成了巨大的冲击。 22 | 23 | - 研究表明,频繁接触碎片化信息会导致人们的注意力持续时间变短,深度思考能力下降。这种现象被称为"数字痴呆"(Digital Dementia)。 24 | 25 | - 在这样的环境下,如何有效地管理和利用我们获取的知识,成为了一个迫切需要解决的问题。 26 | 27 | ## 记忆的本质:重在快速找回 28 | 29 | - 传统的学习方法往往强调死记硬背,试图将所有信息都牢记在脑中。然而,这种方法不仅效率低下,而且往往事倍功半。 30 | 31 | - 现代认知科学研究表明,人脑的记忆系统更像是一个索引系统,而不是一个存储系统。我们并不需要记住所有的细节,关键是要能够在需要时快速找到并提取相关信息。 32 | 33 | - 因此,构建一个高效的个人知识管理系统的重点不应该放在如何不忘记上,而应该关注如何能够快速找回所需的信息。 34 | 35 | ## Zero Notes 系统的关键点 36 | 37 | 为了实现这个目标,我们提出了 Zero Notes 系统。这个系统的核心理念是利用 AI 技术,结合人类的认知特点,打造一个高效的个人知识库。以下是 Zero Notes 系统的关键点: 38 | 39 | ### 1. 树状强索引目录结构 40 | 41 | - 构建一个层次分明的知识体系是 Zero Notes 系统的基础。这个结构应该反映你的思维方式和知识领域的逻辑关系。 42 | 43 | - 使用树状结构可以帮助我们更好地组织和理解复杂的知识体系。每个主题都可以作为一个节点,下面可以有多个子主题。 44 | 45 | - 强索引意味着我们需要为每个知识点创建多个入口。这可以通过标签系统、交叉引用等方式实现。 46 | 47 | - AI 可以在这个过程中发挥重要作用,帮助我们自动分类、生成标签,甚至提供相关主题的建议。 48 | 49 | ### 2. 随手记:质量胜于数量 50 | 51 | - Zero Notes 系统鼓励用户随时记录灵感和想法,但重点不在于记录的数量,而在于质量。 52 | 53 | - 记录的内容应该是对自己真正有价值的信息,特别是那些能够加速学习和理解的关键点。 54 | 55 | - 记录的方式应该是最适合自己的、最快捷的方法。这可能是文字笔记、语音备忘录、思维导图等多种形式。 56 | 57 | - AI 可以帮助我们快速整理和提炼这些随手记的内容,将零散的想法转化为结构化的知识。 58 | 59 | ### 3. 个性化学习路径 60 | 61 | - 每个人的学习方式和认知特点都是独特的。Zero Notes 系统应该能够根据个人的学习习惯和知识背景,定制最适合的学习路径。 62 | 63 | - 这个学习路径应该是动态的,能够根据学习进度和反馈不断调整和优化。 64 | 65 | - AI 可以通过分析用户的学习行为和成果,推荐最有效的学习资源和方法,甚至预测可能的学习瓶颈并提供针对性的建议。 66 | 67 | ### 4. AI 辅助的知识连接与拓展 68 | 69 | - 人脑擅长模式识别和创造性思维,但在大量信息的处理和关联上往往力不从心。这正是 AI 可以发挥重要作用的地方。 70 | 71 | - 利用自然语言处理和机器学习技术,AI 可以帮助我们在看似不相关的知识点之间建立联系,发现潜在的关联。 72 | 73 | - AI 还可以基于我们的知识库内容,推荐相关的扩展阅读材料,帮助我们拓展知识面。 74 | 75 | ### 5. 定期复习与知识巩固 76 | 77 | - 艾宾浩斯遗忘曲线告诉我们,定期复习对于长期记忆至关重要。Zero Notes 系统应该包含一个智能的复习提醒机制。 78 | 79 | - AI 可以分析每个知识点的重要性和遗忘概率,为用户制定最优的复习计划。 80 | 81 | - 复习的形式可以是多样化的,如问答、思维导图填空、情景应用等,以增加趣味性和效果。 82 | 83 | ## 结语 84 | 85 | 在这个信息过载的时代,打造一个高效的个人知识管理系统变得越来越重要。Zero Notes 系统通过结合 AI 技术和人类认知特点,为我们提供了一种对抗遗忘、提高学习效率的新方法。 86 | 87 | 记住,重点不在于不忘记,而在于能够快速找回。通过构建一个强大的知识索引系统,辅以 AI 的智能分析和推荐,我们可以将大脑从繁重的记忆任务中解放出来,专注于更高层次的思考和创造。 88 | 89 | 让我们携手利用 AI 技术,共同打造属于自己的第二大脑,在这个知识经济时代中保持竞争力! 90 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2016/某熊的阅读与写作日常.md: -------------------------------------------------------------------------------- 1 | - [某熊的阅读与写作日常](https://zhuanlan.zhihu.com/p/25191664) 从属于 [程序熊的自我修养](https://github.com/wx-chevalier/Coder-Knowledge-Graph/tree/master/I-AM-Coder) 2 | 3 | 最近加入了 InfoQ 的社区编辑,负责一些线索搜寻与文章翻译,突然想写一篇文章记录下我的日常生活中的阅读与写作模式。一年多以来基本上所有的文章都是希望纯技术主题的;突然也想整理一个系列来讲讲个人对于技术的不严谨的看法与感悟,不敢妄称程序员,就叫[程序熊的自我修养](https://github.com/wx-chevalier/Coder-Knowledge-Graph/tree/master/I-AM-Coder)吧,可能会包含以下部分: 4 | 5 | - 【程序熊的自我修养】我写代码这三年 6 | - 【程序熊的自我修养】知识体系与自我定位 7 | - 【程序熊的自我修养】阅读与积累 8 | - 【程序熊的自我修养】工具与实战 9 | - 【程序熊的自我修养】产品与工程化 10 | - 【程序熊的自我修养】编程之道:编程语言、数据结构与算法、编程范式 11 | - 【程序熊的自我修养】Web 前端 12 | - 【程序熊的自我修养】服务端应用程序架构 13 | - 【程序熊的自我修养】数据科学与人工智能 14 | 15 | 言归正传,本文我希望来描述下每日的阅读与写作模式,重点是阅读的来源与使用的工具。首先需要强调的是,因为本文是日常阅读,所以并不会包括类似于 SICP,CSAPP 这样的大部头。笔者目前兼职于某建筑行业软件公司,公司业务包括交易平台、交易 APP、数据管理中心、数据分析报告等;笔者负责技术团队的日常运作,整个技术团队大约十个人;早期会负责产品架构与核心代码开发,不过随着日趋稳定笔者每天只是在现场打酱油。笔者这个阶段最主要的任务还是毕业论文,暂且把毕业论文与公司归为工作一类;总体来说笔者每日在工作与阅读学习上的时间开支正好对半分。 16 | 17 | 每天早上骑着小电驴和妹子(妹子是公司的产品经理)一起到公司之后,笔者首先会浏览下文章列表,然后将感兴趣的文章添加到 [Pocket](https://getpocket.com) 中;如果是类似于 [Deeplearning Textbook](https://exacity.github.io/deeplearningbook-chinese/Chapter1_introduction/) 这样的在线书籍或者 CS224D 这样的课程会加入到 [Chrome](https://chrome.google.com)书签中。然后在 iPad、手机上都可以随时同步 Pocket 与 Chrome 中的阅读记录与书签,Pocket 还支持离线阅读,都是非常推荐的应用。笔者在早期主要是刷中文社区,现在的话主要以英文文章为主,这里就涉及到所谓的科学上网的问题了。笔者推荐 [Shadowsocks](https://shadowsocks.org/) 或者 [云墙](netfits.io) 作为辅助,在 iPad 中可以使用 [Shadowrocket](https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8),Android 中可以使用影梭,都是不错的工具。 18 | 笔者每天首先会刷一波资讯阅读类网站,包括但不限于: 19 | 20 | - [Reddit](https://www.reddit.com/),可以订阅一些感兴趣的主题。 21 | 22 | - [Regular Geek](http://regulargeek.com/),每日资讯合集。 23 | 24 | - [MyBridge](https://www.mybridge.co/todaytop),可以订阅一些感兴趣的主题。 25 | 26 | - [Github Trending](https://github.com/trending) 27 | 28 | - [Twitter](https://twitter.com/),可以 Follow 一些大牛获取一手信息。 29 | 30 | - [Medium](https://medium.com/),这是笔者每日浏览最多的网站了,目前也是笔者认为质量最高的站点之一。 31 | 32 | 阅读只是前行的第一个准备,下面我们需要能够将阅读到的知识沉淀下来,也就是所谓的笔记与写作。对于写作工具笔者考量过[为知笔记](www.web-wiz.com),有道笔记,印象笔记等,不过笔者的基本需求包括: 33 | 34 | - 允许自定义多层目录结构,这样的话才方便将合适的笔记放置到合适的地方。 35 | - 允许 MarkDown。 36 | - 支持 LaTeX 数学表达式。 37 | 38 | 综合考量之下貌似只有为知笔记符合以上三个需求。笔记是对于自己知识的积累与总结,而写作则能帮助你打造个人品牌,提升社区影响力,并且能让你的知识经过更多的批判与讨论,非常有助于个人的成长。初期能力不足的话建议以翻译为主,上文笔者推荐的不少每日阅读网站都是英文阅读网站,可以选取感兴趣的文章进行翻译。笔者最早是在 CSDN 博客进行写作的,不过老实说体验不是很好。后来笔者迁到了[SegmentFault-某熊的全栈之路](https://segmentfault.com/blog/wx-chevalier)与[知乎-某熊的全栈之路](https://zhuanlan.zhihu.com/wx-chevalier),这两个网站的用户体验,SEO 以及 读者沉淀做的都不错,值得一试。文章写好了之后我们自然希望能有更多的人阅读,做过互联网营销的相信都非常熟悉所谓的分享渠道,而我们也需要主动地将自己的文章分享到渠道中;笔者常用的渠道包括: 39 | 40 | - CSDN 极客头条,有 Chrome 插件 41 | - SegmentFault 头条 42 | - 开发者头条 43 | - Gank.io 44 | - 掘金 45 | - 技术头条 46 | - 奇舞周刊 47 | 48 | 最后还想说一句,如果有什么笔者未提及的渠道欢迎告知~ 49 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2022/2022-某熊的技术 & 产品成长之路:重启的第二曲线.md: -------------------------------------------------------------------------------- 1 | # 2022-某熊的技术 & 产品成长之路:重启的第二曲线 2 | 3 | 在过去的 2022 年,伴随着经济寒冬感觉技术也进入了静默期,除了 AI 领域之外少了许多令人激动的技术突破、发现。在过去十年里因为各种新技术、新框架的出现、发展而诞生的各种技术造轮子、布道及各种新 KPI 的机会,在去年也感觉愈来愈少,内卷也是越来越厉害。另一方面,自己也是深刻感觉工作以来学习、阅读、笔记的时间越来越少了,可能是以工作繁忙为借口,沉湎于日常事务性工作,而忽略了自身的成长。 4 | 5 | 从互联网公司这种充满了软件技术氛围换到制造业,也是随着工作年限的增长和职责的变化,发现再以做题的方式工作,越来越难以及格。在过去习惯的道路上再卷再努力,考得的分数却是一次比一次低;在多少次反思之后,发现不一定是自己做题的方式错了,而可能是这个题目错了。就像 “都选 C” 里面讲述的,不如掀翻桌子自己重新命题。而这种命题的能力映射过来就是对自己新的能力的突破。 6 | 7 | 目前笔者自身来看,过去十年积累的都可算作应用层的开发,包含了从大前端到服务层以及中间件、云基础架构等等纵向技术栈,也包含了各种硬性编程算法能力、技巧、设计模式、逻辑架构等等。结合工作需要,笔者期望的第二曲线,会是对于产品力以及 CG 相关算法力的学习与突破。之前在大公司里可以面向领导工作,在创业的环境下市场就是唯一的检验标准。如何精准地把握客户需求,用有限的资源做出符合市场需要的产品,如何短平快地推广、交付、运营,都是需要以产品的思维去考虑、实践的工作。而 CG 相关是为了在软件产品上构建出核心能力的算法关键之一,打通 CG 与 3D CV,将其他领域成熟的算法与模型迁移到当前的制造业的某个领域,做好 Github 复制粘贴工程师。 8 | 9 | 在年底的时候我也再次升级了个人网站:[ng-tech.icu](https://ng-tech.icu),也是结合过去一年公司里海外独立站运营的经验,将网站做了面向运营的升级: 10 | 11 | ![网站截图](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230226164428.png) 12 | 13 | 网站虽然没有运营,但是日常还是有十余人浏览,是要不断完善提高大家的阅读体验的: 14 | 15 | ![网站流量截图](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230226151221.png) 16 | 17 | 去年还是差不多持续阅读、写代码,追风赶月莫停留,平芜尽处是春山: 18 | 19 | ![提交截图](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230126233208.png) 20 | 21 | # 知识体系 22 | 23 | 对于知识体系也进行了一定的升级: 24 | 25 | ![知识体系](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230219151000.png) 26 | 27 | 同时今年会开始整理各种产品方面的认知与考虑: 28 | 29 | ![按产品力评估模型](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/%E6%8C%89%E7%BB%B4%E5%BA%A6%E8%AF%84%E4%BC%B0%E6%A8%A1%E5%9E%8B.png) 30 | 31 | # 一年的感慨 32 | 33 | - 疫情之下,反而能沉浸在做 ToM 软件与类海外电商平台两个项目,从产品规划、技术实现、推广运营都有涉及,在合作中也让我反思,无论哪一角色,需要的核心都是化繁为简。首先是要能繁,譬如产品规划要明了技术边界,沉入客户场景,思考易于合作伙伴理解交付落地的抓手,然后抽象为几个核心词,再扩展为可行的路线图。譬如 SEO 需要在 GA4,SC,Semrush 等上进行大量的关键字,竞品,用户行为分析,然后剪枝归纳出几个核心标签,再扩展为一整套当前资源能够实现的方案。很多人卡在了三点,不够繁,即信息采集能力不足;无法归纳,只能意大利面式推动;无法扩展,难以从单一目标扩展为整个体系。我发现之前十年,最让我头痛的所谓大规模知识管理,就是我的大概数千文档,数万知识点,怎么把每一篇文档合理的放到它该在的地方,再向上抽象为某一单一知识点认知,也就是不断地化繁为简的过程。 34 | 35 | - 似乎创业和做生意一直是平行线,特别是在互联网与软件方面的创业,习惯了先砸钱攒流量再薛定谔变现。在软件也成了传统行业之后,可能从初期就要认真考虑三张表,怎么以合理的成本赚取超预期的利润。在一个大组织内的时候,不可避免地会有扩张的冲动,以及滞后的结果反馈;而当大组织被迫不断解构,每一个单元也会再经历一次创业与做生意的选择。 36 | 37 | - 会议要变成解密引导式,不能预期一次性把所有东西呈现出来。向上超出预期,Surprise。向下符合预期,No Surprise。 38 | 39 | - 今天想到一句话:授人以渔,不如退而结网。一层意思是,与其培训半天,不如给到简单好用的工具。另一层意思是,与其站在岸边,不如编个网一起下海捕鱼。 40 | 41 | - 怀着持续优化的心,跨领域一些资源技术的应用整合,新的火花加上小批量量产的能力会带来变革。这也让我想到当前 Unionfab 在软件侧的使命,就是打通三个全连接。一个是客户、渠道/中间商、销售/客服的全连接,让客户拥有透明极致体验,让各种营销手段分成模式信手拈来,让销售/客服简单而专注的工作。一个是工厂内外的全连接,让订单能够自由流动(拆转并排),让产能能够运筹帷幄。一个是人与机器的全连接,不受地域限制地触达设备,不受时间限制地使用设备,不受专业限制地用好设备。 42 | 43 | - 今天在一个小的交流会上谈到主题:如何提问?这确实是很好的问题。对领导向上提问的时候:(1)可以借机塑造人设,展示你或朴实或沉稳或激进地一面(2)提问之前要想好问题链,想好答案,通过提问塑造他人认知,引导你期望的方向(3)不要问蠢问题,要问有思考价值的问题(4)要问具体的问题,但是可以抽象为选择题或者有参考答案的主观题,而不是抛出不可解决的问题。而对同事或下属提问的时候,这也是很好地凝聚共识、激励团队的机会,特别是在大环境不好,物质激励不确定性大的时候,要给大家提出在他能力边缘的、具体可解决的问题,通过从感受到解题的成功走向下一个成功,来培养个人及团队的综合能力。 44 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~月熊的成长之路.md: -------------------------------------------------------------------------------- 1 | # 2024 某熊的成长之路 2 | 3 | 2024 年,我开始了从技术 & 打工向产品 & 商业(赚钱、创业、投资)的转变,尝试建立底层系统性思维模式,着力解决两个问题:如何从个人认知到团队的产品有效产出、如何建构交易系统让自己亏的心安理得。年末的时候构建了以 DPDE、BAEE 等为核心的思维模型,并在内外团队中进行小范围实验。2025 年初我也构建好了自己的 AI 内容管线,希望在国内外不同的场景下进行一波流量实验,早日达到 10W+ 粉丝。 4 | 5 | 个人感觉比较有突破性的几个方向: 6 | 7 | - 建构了 DPDE 基础思维模型,开始进行结构化、系统化思考; 8 | - 尝试以 BAEE 组织管理模型,来反思自己的团队协调能力; 9 | - 尝试搞清楚从想法到产品落地的路线图,并在本职工作和某一些细分赛道上进行实践; 10 | - 建构自己的投资体系,让自己亏的有道理; 11 | 12 | # DPDE 思维模型 13 | 14 | 今年思维模型的核心,是在对发现且面对问题、做出个人的预测、参与集体决策,并由团队共同执行; 15 | 16 | ![DPDE 思维模型](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/IHNUsgG36uFc.png) 17 | 18 | # BAEE 组织管理与实务性经验 19 | 20 | ![BAEE](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/5u11EpWTfRyF.png) 21 | 22 | 组织管理认知,要解决的就是为什么总感觉有人会容易夸夸其谈,无法落地,不接地气; 23 | 24 | ![从认知到价值的公式](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/RgBHY5yGjPoA.png) 25 | 26 | 做年度复盘的时候我自己也反思了下,过去几年我个人的能力与认知不足也给团队造成了很大的阻碍,走了很多弯路,做了很多无用功。工作中纷纷扰扰,争争吵吵大都是自己德不配志,能力无法支撑梦想的执念。而这里的能力不足主要体现为: 27 | 28 | 1. 缺乏实务性研发团队管理经验,不能有效地组织团队,以组织关系促进研发效能; 29 | 2. 缺乏系统性产品思维,不能准确地抽象出产品定义,并根据业务真实需求与团队承载力制定合理地产品路线图; 30 | 3. 缺乏实务性项目管理经验,不能合理有效地应对各种外部压力、突发情况、意外事件,及时识别项目关键问题并及时响应妥善安排; 31 | 4. 缺乏复杂项目的技术治理经验,只着眼于单一视角或者执行层面,以战术的勤奋掩盖战略的懒惰,而不能纵向全局以架构设计先于代码实现、横向以有序迭代演化替代应激式屎山堆叠; 32 | 33 | 经过一年的蹒跚,感觉应对这四个问题也是抽象出了下图的四个方法论,团队核心人员的认知往往会决定团队的上限,这时候必须要有明确、有共识的制度保障。不过,制度能够支撑组织的下限,但是必须认识到人也是制度的一部分,对于创业而言,不能追求下限,而是要依靠制度充分发挥人的创造力和主观能动性。君子豹变,组织制度也要因人而变。 34 | 35 | ![个人复盘](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/CR2iJl4i7nXw.png) 36 | 37 | # 投资思维模式 38 | 39 | ![商业模式分析模型](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/N5CTqcV1H28K.png) 40 | 41 | ![投资思维模式](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/Qw7eFheP2nVh.png) 42 | 43 | ![PDE 交易模式](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/I0YYX9C6raW8.png) 44 | 45 | # 产品思维模式 46 | 47 | 产品思维模式,是以产品经理这个角色为核心,考虑能够驱动整个团队产品落地的思维模式。 48 | 49 | ## 核心能力 50 | 51 | - 产品发现: 52 | 53 | - 用户研究:会做用户访谈、问卷设计、数据分析 54 | - 需求管理:能做需求收集、需求分类、优先级排序 55 | - 市场分析:懂得做竞品分析、行业研究、商业模式分析 56 | - 产品规划:能做产品定位、功能规划、路线图制定 57 | 58 | - 产品交付: 59 | 60 | - 文档输出:能写 PRD 文档、产品说明书、验收文档 61 | - 原型设计:会用 Axure/Figma 画原型、交互流程图 62 | - 项目管理:懂得排期规划、进度跟进、风险管控 63 | - 团队协作:能与研发、设计、测试等团队有效沟通 64 | 65 | - 产品运营: 66 | - 数据分析:会用数据工具、建立数据指标、分析用户行为 67 | - 活动运营:能策划活动、设计运营方案、评估效果 68 | - 用户运营:懂得用户分层、精细化运营、会员体系 69 | - 渠道管理:能做渠道分析、投放优化、效果评估 70 | 71 | ## 扩展能力 72 | 73 | - 商业能力: 74 | 75 | - 商业模式:能分析盈利模式、成本结构、收入来源 76 | - 财务分析:懂得看财务报表、ROI 分析、成本核算 77 | - 市场营销:了解营销策略、品牌建设、渠道推广 78 | - 商务谈判:具备谈判技巧、合作推进、商务沟通 79 | 80 | - 技术能力: 81 | 82 | - 技术认知:了解主流技术架构、开发流程、系统设计 83 | - 开发协作:懂得技术评估、接口文档、测试用例 84 | - 数据能力:会用 SQL、数据分析工具、数据可视化 85 | - 安全与规范:了解安全要求、隐私保护、行业标准 86 | 87 | - 领导力: 88 | 89 | - 团队管理:会做团队建设、任务分配、绩效管理 90 | - 资源协调:能做跨部门协作、资源调配、冲突处理 91 | - 战略规划:懂得战略分析、目标制定、执行推进 92 | - 文化建设:营造团队文化、价值观塑造、人才培养 93 | 94 | - 行业认知: 95 | - 专业知识:深入理解行业特点、业务流程、专业术语 96 | - 政策法规:了解行业政策、合规要求、发展趋势 97 | - 生态关系:把握产业链、合作伙伴、竞争态势 98 | - 创新机会:识别行业痛点、创新方向、发展机遇 99 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2018/数据浪潮之间的前端工程师.md: -------------------------------------------------------------------------------- 1 | # 数据浪潮之间的前端工程师 2 | 3 | 十年来,波澜壮阔的移动互联网浪潮促进了 Web 技术的迅猛发展,随着浏览器性能、网络带宽等基础设施的提升,Web 也能够承载起包含复杂交互、可视化、计算逻辑需求的富客户端应用。同时 RN, Weex, 小程序为代表的混合式开发日趋成为与 Android、iOS 原生开发并肩的开发模式之一;而 VR, AR, IoT 等新的交互方式或者媒介也正步入消费级市场,原本前端之间的隔阂逐渐消亡,我们慢慢进入了大前端的时代。笔者认为大前端不仅仅是横向地指泛 GUI 的接入端,纵向来看基于 Node.js 的全栈开发、中台化背景下的 BFF 模式,微前端架构等也是大前端的有机组成,也给予了前端工程师更广阔地舞台。 4 | 5 | # DT 时代 6 | 7 | 繁多的互联网接入端也催生了海量数据的产生与富集,开启了所谓的 DT 时代;我们利用云计算、人工智能、深度学习等手段分析数据、利用数据,将数据作为燃料,赋能新的商业模式。算法、数据与工程是优秀的智能化产品不可或缺的组成部分,前端作为与数据的产生源头--用户最贴近的部分,也在未来全连接的架构里迸发出更绚烂的火花。 8 | 9 | 前端首先能够通过埋点、监控等方式,采集到用户行为、偏好、应用运行状态等丰富的数据,我们团队(阿里南京 NUE)也自研了高性能 Web 实时录屏与回放的产品,赋能客户服务的体验提升与前端开发者的线上调试。基于数据与算法,前端也可以设计更好地人机交互模式,譬如人脸识别的登录方式、智能问答客服、智能音箱的语音控制;数据可视化也是典型的前端与数据水乳交融的领域,ECharts, G2, D3, Three.js 等框架允许我们更便捷、友好地、深刻地展现统计数据、关系数据、地理空间数据、时间序列数据与文本数据等多源异构数据集。此外,TensorFire, TensorFlow.js 等深度学习框架利用客户端的 GPU 计算能力,pix2code 或者 SketchCode 利用算法来快速实现原型界面,Guess.js 能够帮助优化构建好的包体与智能添加预抓取策略。 10 | 11 | 值得一提的是,近几年区块链技术的爆炸性发展也促进了 Web 3.0 概念的思辨与实践,IPFS, Ethereum dApp 等工具或者开发框架允许我们便捷地编写去中心化的 Web 应用。Web 3.0 提倡以人为本,看重隐私,反垄断网络,旨在更开放的网络上进行集体贡献并实现共享利益,这也给予了前端开发者更多样化的未来。在 DT 时代,我们或许不能站在浪潮之巅,但是随波逐流顺势而下也可以找到自己的位置,或高或低地翱翔于天。 12 | 13 | # 数据流驱动的界面 14 | 15 | 数据的核心操作是存储与计算,传统的 Web 应用因为单线程与离线不可用性往往是即用即走,而 PWA 这样的应用设计模式,提倡使用 Service Worker 添加离线支持,充分利用 IndexDB, CacheAPI 等进行灵活地数据存储与检索,并且给予用户贴近原生的体验。另一方面,Web Worker, WebAssembly 等亦从不同的方面释放或者增强前端的计算能力,不仅使得 Web 中运行高性能要求的应用或动画,也可以借鉴边缘计算的理念,未来将更多地数据聚合、计算的逻辑前移。感性地说,当数据逐渐活跃、富集,如百川汇海,自然需要流动起来。 16 | 17 | 广义的数据流驱动的界面有很多的理解,其一是界面层的从以 DOM 操作为核心到逻辑分离,其二是数据交互层的前后端分离。在 jQuery 时代,我们往往将 DOM 操作与逻辑操作混杂在一起,再加上模块机制的缺乏使得代码的可读性、可测试性与可维护性极低;随着项目复杂度的增加、开发人员的增加与时间的推移,项目的维护成本会以几何级数增长。随着 ES6 Modules 的广泛应用,我们在前端开发中更易于去实践 SRP 单一职责原则,也更方便地去编写单元测试、集成测试等来保证代码质量。而像 React、Vue 这样现代的视图层库为我们提供了声明式组件,托管了从数据变化到 DOM 操作之间的映射,使得开发者能够专注于业务逻辑本身。并且 Redux, MobX 这样独立的状态管理库,又可以将产品中的视图层与逻辑层剥离,保证了逻辑代码的易于测试性与跨端迁移性,促进了前端的工程化步伐。 18 | 19 | 近两年来随着无线技术的发展和各种智能设备的兴起,互联网应用演进到以 API 驱动的无线优先(Mobile First)和面向全渠道体验(Omni-channel Experience Oriented)的时代,BFF 这样前端优先的 API 设计模式与 GraphQL 这样的查询语言也得到了大量的关注与应用。GraphQL 是由 Facebook 开源的查询语言标准,包含了数据格式、数据关联、查询方式定义与实现等等一揽子东西的数据抽象层。GraphQL 并不能消融业务内在的复杂度,而是通过引入灵活的数据抽象层,尽量解耦前后端之间的直接关联或者阻塞;在满足日益增长不断变化的 Web/Mobile 端复杂的数据需求的同时,尽可能避免服务端内部逻辑复杂度的无序增加。 20 | 21 | # 工程化与微前端 22 | 23 | 编程生态往往会经历三个阶段:涌现大量工具的原始阶段、复杂度提升后引入大量设计模式的框架阶段、具有更好的团队组织与协调机制的工程化阶段。大部分时候我们谈论到工程化这个概念的时候,往往指的是工具化;工具的存在是为了帮助我们应对复杂度,在技术选型的时候我们面临的抽象问题就是应用的复杂度与所使用的工具复杂度的对比。而工程化,即是面向某个产品需求的技术架构与项目组织,致力于尽可能快的速度实现可信赖的产品;尽可能短的时间包括开发速度、部署速度与重构速度,而可信赖又在于产品的可测试性、可变性以及 Bug 的重现与定位。 24 | 25 | 在 DT 时代中,很多公司也开启了大中台,小前台的战略,即在中台中完成一系列可开放能力的聚合,赋能前端业务,加速迭代开发。工程化是中台化的基石,通过制定标准化的规范、基于元数据的可配置业务流等,完成前后端的业务衔接;而统一的服务中台又是在复杂业务场景下实现微前端/微服务的保障。微服务与微前端,都是希望将某个单一的单体应用,转化为多个可以独立运行、独立开发、独立部署、独立维护的服务或者应用的聚合,从而满足业务快速变化及分布式多团队并行开发的需求。微前端的落地,需要考虑到产品研发与发布的完整生命周期;我们会关注如何保证各个团队的独立开发与灵活的技术栈选配,如何保证代码风格、代码规范的一致性,如何合并多个独立的前端应用,如何在运行时对多个应用进行有效治理,如何保障多应用的体验一致性,如何保障个应用的可测试与可依赖性等方面。 26 | 27 | 最后,对于个人而言,随着团队技术栈的相对稳定,关注点也会逐步从组件库的建设变化为基础设施的建设,从考虑选择怎样的技术栈到如何在立足某个技术栈更好地服务于业务规划。这个知识爆炸与终身学习/碎片化学习为主的时代,我们要进行更有效地学习,从知识广度,编程能力与知识深度等方面提升自己。 28 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2023/2023~某熊的成长之路.md: -------------------------------------------------------------------------------- 1 | # 2023~某熊的成长之路 2 | 3 | 2023 确实是颇为艰难的一年,以为是先立再破,没想到最后经济大环境还是变成了不破不立;时代的浪潮呼啸而来,让很多个体都感觉到了风雨飘摇。2023 年也是孕育希望的一年,我认识了将陪伴我一生的、又一位只有死亡才能将我们分开的(超难带)虎子哥;我自己感觉也开始继续地睁眼看世界,努力地打破惯性的认知的桎梏,尝试、拥抱新的东西,虽然已经三十多岁了,但是感觉跟小时候看到的大人不一样。既不像小时候看到的大人那样成熟稳重,也不想早早地躺在床上等着八十岁下葬。 4 | 5 | # 睁(小)眼看世界的知识体系,拥抱国际化 6 | 7 | 2023 年在知识体系上最大的变化就是从纯 CS 技术体系扩展到了产品、商业、投资等诸多方面。 8 | 9 | ![知识体系](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20240215141639.png) 10 | 11 | 2024 年随着我们海外业务的扩张,我也开始真正地拥抱国际化,持续地用蹩脚地英语与海外的客户、合作伙伴进行交流。出海在最初认为就是做翻译、做 SEO、做海外社媒,后来发现,真正地壁垒还是在于 Think in Native。相信未来随着一带一路的不断推进,随着地缘政治、人民币国际化的不断深化,在中国重回世界之巅的征途上,会像当年的英美一样带来许多新的机会。 12 | 13 | # 组织建设、产品定义、领域数据建模、技术治理 14 | 15 | 2023 年学到的最大教训就是要重视组织性与产品定义,这也是从技术开发的视角向保障组织成功的最大转变吧。在漫长的征途上,个人的热情与投入很重要,但是往往也是非常充满不确定的。团队需要的对结果的相对确定性,这是对上、对下、对自己的负责。 16 | 17 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20240215141956.png) 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 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/%E6%9C%88%E7%86%8A%20%C2%B7%20%E7%9C%9F%E5%AE%9E%E5%91%BD%E7%90%86%E5%AD%A6%E5%91%BD%EF%BC%9A%E6%97%A2%E5%AE%9A%E4%B9%8B%E4%BA%8B%E8%BF%90%EF%BC%9A%E6%9C%AA%E5%AE%9A%E4%B9%8B%E4%BA%8B.png) 45 | 46 | 编程的乐趣在于能够亲手去创造虚拟地世界,与自然博弈;算命的乐趣在于能够去探索人类的心理,与未知博弈;买股票的乐趣在于能够去探索人类的欲望,与自己博弈;。算命与买股票都是概率游戏,虽然 2022 & 2023 年成功地在中国最大的知识付费平台亏掉了 90W。不过站在知行合一的角度,我还是坚定地认为 2024 年锚定合理估值和流动性溢价的机构自救,还有半导体科创会是两个大概率的机会。 47 | 48 | # 年度任务 49 | 50 | 果然,2023 的年度任务有很多没有做完的,2024 继续加油咯; 51 | 52 | - 技术:掌握 C++ & Rust 53 | 54 | - [ ] 学习 Google 的 Rust 教程; 55 | - [ ] 学习 QT 基础教程; 56 | - [ ] 阅读并整理 BytebyteGo 的文章; 57 | - [ ] 阅读《Clojure 编程乐趣第二版》 58 | - [ ] 阅读并整理[《Modern-CPP-Programming》](https://github.com/federico-busato/Modern-CPP-Programming/tree/master) 59 | - [ ] 阅读并整理[《计算几何》](https://zhuanlan.zhihu.com/p/33355636) 60 | - [x] 阅读《计算机图形学(微课版)》 61 | 62 | - AI:Follow 并实验 3D AIGC 相关研究 63 | 64 | - [ ] Follow 最新的 3D-CV & Generation 领域的论文; 65 | - [ ] 学习 [Fast.ai Courses](https://course.fast.ai/); 66 | 67 | - 产品:构建体系化产品与管理认知 68 | 69 | - [ ] 翻译并且阅读完 《About The Startup CTO's Handbook》; 70 | - [ ] 听完齐俊杰高效能人士的七个习惯音频; 71 | - [ ] 学习至少三个系列的 SEO 教程:[《CrossBorder-Notes》](https://ng-tech.icu/books/CrossBorders-Notes) 72 | 73 | - 命理学 74 | 75 | - [ ] 整理袁树珊、周德元老师几篇书籍的前言序为电子版; 76 | - [ ] 看完 YouTube 上关于手相的一节; 77 | 78 | - 投资:建立对于投资的体系化认知 79 | 80 | - [ ] 阅读《置身事内》 81 | 82 | - 英语:持续学习,建立国际化视野 83 | 84 | - [ ] 完成多邻国的英语两阶段课程; 85 | - [ ] 每日复习有道词典单词库内容; 86 | - [ ] 浏览[海之光英语](https://www.youtube.com/watch?v=1usCP_lD3Wk)的系列学习视频并笔记; 87 | 88 | - 健康:让运动成为习惯 89 | 90 | - [ ] 每周至少去两次健身房; 91 | - [ ] 进行两次体检; 92 | - [ ] 更新保险; 93 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2018/我在菊场这一年.md: -------------------------------------------------------------------------------- 1 | ![](http://upload-images.jianshu.io/upload_images/1647496-6bede989c09af527.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 2 | 3 | # 我在菊场这一年 4 | 5 | 尚未入职的时候我就会想,这篇文章的标题会是怎样,一年?两年?更短,或者更长。尘埃落定,虽只有大半年的时间,四舍五入下,还是写成了一年。2016 年中,彼时尚未毕业,也尚未入职,耳闻一些消息,写下了[怀着被抛弃的恐惧在奋斗中前行](https://parg.co/UTA);现在看来,也不过是人云亦云罢了。我读书少,却也是发自内心的敬佩公司和团队;这是一个伟大的公司,有着一致的目标与坚韧的团队,能成他人不能之事。不过其模式确实也难以复制,特别是对于初创团队,某些优秀的特性反而会是致命毒药。 6 | 7 | 入职之前,断断续续也有个几年不成气候的数十人的创业型技术团队协调经验,也算是带着许多的疑问与求教的心加入;大半年下来,印象或者说感悟最深的,当属“研发效能”与“组织气氛”这两个词。不同公司的模式,价值观可能是截然不同的,个人浅见,菊场能够以其强力的目标管理与组织气氛,磨平棱角,将不同能力、背景的人绑合在一起,形成强大战斗力。而一些公司则是会更强调选择合适的人,充分发挥个人的主观能动性,最终形成快速突击的能力。汝之蜜糖,彼之砒霜,不同背景、能力、想法的人的最佳选择自然也是不一样的,适合的场所也是不一样;对于大部分普通人而言,尽量让自己顺势而行,莫逆流而上。 8 | 9 | 技术人员可能会陷入自己的理想国,从四年前初创团队开始,不断地与真实进行磨合,认识到世界,或者说是人的多样性。很多时候并无法做最好的选择,只能做最合适的选择;存在即有其合理性,面对现实,忠于理想,命运还是要掌握在自己手里。 10 | 11 | 研发效能是广泛而又直观的概念,笔者目前以该词来度量某个研发团队的真实价值,在下文有详细阐述。而组织气氛,却是笔者之前尚未认真考虑或面对过的;从学校里出来,没经历过正规军,可能会觉得大家每天开开心心就足够了。与经历过物质较为匮乏年代的 80 后相比,对于 90 后一代管理的复杂性也在不断增加;物质生活的相对富裕使得并不能简单的物质激励就能解决一切问题,我们可能会考虑个人的兴趣,考虑未来的空间等等。这也就意味着针对合适的岗位,招聘合适的人也愈发困难;才不配位,对团队与个人都有压力,太多优秀则又难以安定,往往也会给团队带来噪音,使得难以力出一孔。从工作本身,无论喜欢或者排斥,干好本职工作都应该是程序员的基本素养。我也看到了些许因为环境的不合适,或者期望落空导致的消极与抵抗,不利于自己,也不利于团队。人生苦短,及时发泄,不喜欢就转换方向,何必怨天尤人,即委屈了自己,也委屈了他人。 12 | 13 | 时间尚短,感慨不多,本文也聊为注脚,提醒自己莫忘所得。下文是笔者的 [Awesome Coder](https://github.com/wx-chevalier/Awesome-Coder) 的导读语,加在此处也作为笔者对于研发效能的浅述。 14 | 15 | 在这个知识爆炸与终身学习/碎片化学习为主的时代,我们面临的问题之一就是如何进行有效学习,不仅能有效平衡广度与深度,并且能真正的积淀下来,提升自己的研发效能。笔者个人浅论,技术能力的培养主要分为三个方面:知识广度,编程能力与知识深度。 16 | 17 | 所谓知识广度,即是为实际问题选择合适的解决方案的能力,广义来说也是眼界与格局的表现。它并不拘泥于某个技术方向或者行业领域,而需要对传统/流行的各类语言、工具、框架、库、服务等有一定的认识;能够明晰各个方案的优劣,并在较高的层次(High Level)描述相关原理。知识广度的拓展与保持需要建立在庞大的阅读量与知识沉淀能力上,笔者习惯利用碎片时间浏览 HN, Reddit, Medium, Twitter 来了解资讯文章,在维护 [Frontend Weekly, 每周阅读清单与前端开发周报](https://parg.co/UHG)的过程中也不断强迫自己去阅读与探究。另一方面,笔者坚定地即认为,唯有建立符合自己认知方式的知识图谱,才能有效地沉淀知识,明晰知识边界并进行不断地探索。上车伊始,笔者即致力于构建自己的 [MindMap, IT 技术图谱与知识架构](./MindMap),并在数年来不断维护与刷新;同时,笔者将日常阅读、学习与实践中发掘的优秀的资料,按照知识图谱中定义的各个领域的知识体系分门别类地存放在 [AwesomeList: Guide to Galaxy](https://github.com/Awesome-Lists) 中,以方便快速地检索与查找。 18 | 19 | 知识广度的拓展也并非一蹴而就之事,需得循序渐进,从初窥门径,到登堂入室,最后融会贯通;笔者这几年技术视野与能力的变迁,亦可以参考仓库中的 [技术之路, 技术之路](./技术之路)系列文章。另一方面,乱花渐欲迷人眼,太多的碎片化知识反而会使人迷失方向;此时便需要不断阅读 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 中收录的优秀书籍/系列。 20 | 21 | 所谓编程能力,其外在表现之一即是能够随时随地用合适的语言无阻塞地实现某些功能需求,对于常见的语法,接口,算法,设计模式等能够做到心随意动,信手拈来。编程能力是提升研发效能的重要保障,于笔者而言也是毕生应该追求的目标与爱好之一。笔者的编程能力较弱,日常开发,特别是在多语言多框架并用的场景下,往往会需要不断地中断,查找以继续工作,也是令我颇为苦恼。笔者目前是致力于完善 [Awesome Cheatsheet: 语法速览, 实践备忘,从零到一,上手即用](https://github.com/wx-chevalier/Awesome-CheatSheets),对于日常开发中用到的相关知识的备忘录/清单进行总结, 快速掌握或者回顾某个语言/框架/工具的语法或使用要点。同时将常用的,有借鉴或者锻炼价值的代码片,沉淀到 [coding-snippets: Code Snippets, DataStructure, Algorithm and DesignPattern Implementations for Several Programming Language, Web, etc.](https://github.com/wx-chevalier/coding-snippets) 中。 22 | 23 | 所谓知识深度,即是能够对某个方面做到深入了解,并且达到融会贯通,洞若观火,可以随心所欲地加以扩展、优化、创新等改造或变换。这方面则更加的见仁见智,不同的领域与方向对于深度的定义与挖掘方向也是千差万别。笔者自知能力有限,也不敢妄加评判,根据自己浅薄的认知将常见的工程师成长路径总结在了 [RoadMap, 成长路线图](./RoadMap) 中,此外若有兴趣可以前往笔者的 [Github 笔记仓库](https://github.com/wx-chevalier?tab=repositories)浏览指正某些领域的浅薄探究。 24 | 25 | 感谢,菊场;你好,未来几年的伙伴们。 26 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2021/浅析从作坊型手扳厂到小批量分布式制造变革中,在品牌营销、客户服务、生产管理、经营洞察等方面的一揽子问题.md: -------------------------------------------------------------------------------- 1 | # 浅析从作坊型手扳厂到小批量分布式制造变革中,在经营洞察、品牌营销、客户服务、生产管理等方面的一揽子问题 2 | 3 | 在《十载浮沉:数字化赋能与重塑 3D 打印等非标服务型制造业的几个底层思考及展望》一文中,我们论述了数字化的未来,论述了去中心化的小批量制造以及价值网链的分布式制造这两个大的制造业的发展趋势,本文则会依托于笔者在分布在长三角、珠三角的十余个手扳厂深度调研及实践的基础上,对于以 3D 打印为主体的,来图加工式、非标定制型、服务型制造,这样的企业进行剖析,对于它们可能的瓶颈与解法阐述自己的浅见。 4 | 5 | 因为实际的工厂运营涉及问题较多,本文采用 Q/A 方式,仅对关键问题进行阐述,待到 Unionfab 完成整合,再进行金字塔式地脉络梳理。以 3D 打印为代表之一的小批量制造行业,正在经历量涨价降的拐点;这必然要求企业不断地降本提效,通过**提升自己的吞吐量、降低边际成本、提高单客服务能力与附加价值**来提高竞争力、构筑护城河。 6 | 7 | 在同质化竞争加剧(价格战、供给数、资本化)、生产成本增加(人工成本、合规成本、其他成本)的情况下,客户日益复杂多变的产品需求(多工艺、小批量、一站式、短交期、低价格)、服务需求(体验好、响应快、标准化、专业化),与工厂供给能力(多工艺、专精化、一站式、本地化)、履约能力(吞吐量、质量一致性、准时率/生产效率、生产成本)之间的矛盾。 8 | 9 | ## 经营洞察 10 | 11 | ### 手扳厂的组织形式 12 | 13 | 关于手扳厂在发展过程中的几个点: 14 | 15 | - 小型手扳厂:典型的夫妻店模式,团队人数不足 5 人,设备不超过 10 台,月销量不超过 500 单,月销售额不超过 30 万; 16 | - 中小型手扳厂:单点团队人数超过 15 人,设备超过 30 台,月单量超过 1500 单,月销售额超过 100 万; 17 | - 中型手扳厂:单点团队人数超过 100 人,设备超过 100 台,月单量超过 3500 单,月销售额超过 300 万; 18 | - 中大型手扳厂:单点团队人数超过 300 人,设备超过 300 台,月单量超过 15000 单,月销售额超过 1000 万; 19 | - 分布式手扳厂:各个节点之间能够有效链接,形成价值网链:多厂区快速复制、多厂区有效协作、多环节价值协同、安全与效率并重; 20 | - 专业型手扳厂:拥有除 3D 打印外核心的服务能力竞争力,典型的譬如设计能力,复杂多工艺处理能力等; 21 | 22 | 朴素的管理模式无法进行线性扩张 23 | 24 | 首先,我们来阐述下一个关键的问题,`人效 VS 流程`: 25 | 26 | - 人效优先:一人多职 27 | - 流程优先: 28 | 29 | 当然,人效与流程并不完全冲突,它们主要是在某个手扳厂转型的初期会带来一定的阵痛;宝剑锋从磨砺出,梅花香自苦寒来,变革不是请客吃饭。 30 | 31 | ### 手扳厂的核心竞争力 32 | 33 | - 销售额: 34 | - 产值: 35 | - 毛利率: 36 | - 净利率: 37 | 38 | - 量与质:如何提高单台设备产值,提高满板率,提高克单价 39 | 40 | - 品牌与营销:品牌认知度、推广能力、渠道能力、获客费效 41 | - 服务与体验:体验好、响应快、标准化、专业化 42 | - 供给:领先的工艺/行业专精、多工艺完备、低价、本地化、可选择的交期 43 | - 履约:交期速度、质量、生产成本、供应链、吞吐量 44 | 45 | 很多公司在小的时候能够通过人来保证,但是扩张之后就难以管理,全盘垮掉 46 | 47 | ### 数字化平台的不同介入阶段 48 | 49 | #### 在线化 50 | 51 | - 在线化:规范化管理,规模化扩张,从`以人为核心驱动力的朴素组织形式`转化为`以系统为枢纽的集团化作战` 52 | 53 | - 有效沟通、高效协同:设备与人、人与人之间的有效沟通;线上化流转,信息传递无偏差,事件可追溯、无遗漏,减少重复劳动 54 | - 全流程透明化、可量化:当前生产进度 55 | - 工作的标准化、流水线化: 56 | - 经营数据化、可分析: 57 | - 组织的平滑扩张:平滑方差、人员可复制、人的可复制性、组织的可复制性 58 | 59 | #### 网链化 60 | 61 | #### 专业化/自动化 62 | 63 | #### 智造化 64 | 65 | 数据驱动制造 66 | 67 | ## 数字化营销 68 | 69 | ### 从个人联接到品牌心智 70 | 71 | ### 管理客户的预期:高匹配度、可预测性与一致性 72 | 73 | 客户筛选 74 | 75 | ### 客户的定价方式:行业、交期、品质 76 | 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 | ### 1 件、100 件、1000 件的区别 104 | 105 | ### 数据处理流水线:一人行 VS 多环节(预排产、预处理、排版) 106 | 107 | ### 从人工自动化到机器自动化 108 | 109 | ## 后记 110 | 111 | 从亨利·福特发明流水线到像富士康这些的大规模制造巅峰企业,生产管理与组织方式在消费侧与供给侧两个角度的磨合中不断演进;我们也能预见在未来个性化、离散化的需求,与去中心化、分布式制造的供给,这两个大背景下必然也会形成新的生产模式。这种生产模式能够充分依托信息技术带来的数字化平台,完成从数字化营销、数字化服务、数字化生产、数字化协同、数字化交付等多元一体的全流程重塑。就像互联网改变了人与人沟通的方式,随着数字化的进展,整个社会中的一切都会被数字化。以确定性、可预测性为主要特征的机械论发展到控制论、系统论、信息论,从技术战略、组织发展到外部生态,新时代的产业发展都彰显新方法论的底层思想内涵。我们已经看到互联网和工业的深度融合,可以预见未来,这一进程会加速发展。 112 | 113 | 风已起于青萍之末,浪成于微澜之间,而又会有多少过客止于草莽之间;不能在浪潮之间凝练内功,膘肥体壮,又怎堪傲立风口之上,浪潮之巅。 114 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2018/知识管理与高效学习.md: -------------------------------------------------------------------------------- 1 | 题注:欢迎关注 [阿里南京技术专刊](https://zhuanlan.zhihu.com/ali-nanjing),也欢迎投递简历,发送邮件到 zixiong.zzx@alibaba-inc.com,诚邀各路大佬前来指教。 2 | 3 | # 知识管理,笔记系统与高效学习 4 | 5 | 在这个焦虑的时代,唯有不断地,自我可观测的成长,才能给予自己不断挑战地动力。知识管理是为了更高效地学习,所谓高效,一个是有效,看到的、实践的能真正沉淀下来;二个是效率高,能够用尽可能短地时间去掌握相关的知识。高效学习地目的是为了更好地转化为生产力,转化为个人或者团队的研发效能。 6 | 7 | **笔记系统,是知识管理中不可或缺的一部分。** 8 | 9 | 这是一个知识爆炸的年代,我们面对的矛盾不再是无处学习,而是学习的速度跟不上新知识产生的速度,这个时代已经容不得我们过于缓慢。弱水三千,只取一瓢;知行合一,方成大器。我看来的知行合一,也是分为两个方面,一是以更高层次的知驱动正确的行,这就是下文会提及的以高于自己当前层次的知识体系让自己更有效地学习与积累。另一个是以可以实现的行去驱动自己的认知衍化,这里的行主要就是阅读与实践,而这里的认知衍化绝不是简单的了解某个概念、名词,而是能够将知识填充到前者所谓的知识体系中,并不断地扩充、完善这个知识体系。 10 | 11 | # 知识管理与知识图谱 12 | 13 | 技术分为术与道两者,术即是具体的做事的方法,而道则是做事的逻辑抽象的原则与原理。构建专属笔记系统的目的,是为了让自己更好地管理知识,既能够避免自己重复地学习,来使自己能够接触到更广泛或者更深度的知识,探索属于自己的道;也能够通过快速命中有效方案,来提升自己及所在团队的研发效能,从而高效地利用已有的术去解决问题。于笔者自身而言,构建笔记系统的初衷并非是想让自己不去忘记什么,而是希望能够在需要的时候,以适合自己思维、理解的方式,快速地重新掌握。 14 | 15 | 参考杰瑞德·霍瓦特的研究(引用李翔知识内参),在互联网时代,回想记忆(Recall Memory),也就是大脑自发地调用信息去回忆过去的能力,已经变得不那么重要了,认知记忆(Recognition Memory),即记住大量事物、地方以及各种人物形象的能力才最重要。他说:“只要你知道在哪儿可以查到这个信息、如何查找,就不需要回忆它了。”互联网相当于我们的外部记忆(Externalized Memory),有一项研究指出:“如果人们知道他们能在网上获取信息,那么他们回忆信息的机率就较小。” 同时,这又是一个碎片化阅读的时代,两相结合,会让我们觉得自己持续地学到了东西,却也可能只是虚假的满足感。我们既要利用这种特性,利用互联网提供的便捷的检索、阅读,去构建专属的外部记忆;就像建立缓存服务器一样,我们可以直接去获取,而不需要费时费力的重新检索、筛选。同时也需要真的沉淀下来,脱离碎片化获取带来的混淆与可能的肤浅,真的能成体系地,探究到某项技术或某个领域的深层知识、实践。 16 | 17 | 知识管理的首个难点,在于知识的检索,与更新;直观地来说,就是当我们想到某个知识时,应该如何去找到对应的笔记,或者说当我们想去记录某些心得体会时,应该把它们放在什么地方。一般来说,目前的笔记组织结构,可以是树形层级目录式,就像思维脑图一样,从某个点展开,延伸到各个具体的技术领域;也可以是标签式,即为每个笔记进行人工地主题词提取,然后依赖于搜索功能进行检索。笔者上车伊始,即主张:知识应该放在它应该在的地方,因此数年来一直以近乎强迫的方式,去构建 [ITCS 技术体系与知识图谱](https://github.com/wx-chevalier/Awesome-Coder/blob/master/MindMap/README.md),并且将其作为泛笔记系统的目录规范。这种细致的划分方式,往往会随着自身对于技术世界的认知变化而不断衍化,因此也是建立在广泛的阅读、涉猎的基础上;不过磨刀不误砍材工,若能坚持下来,浇灌培育出属于自己的知识体系树,也是别有一番滋味在心头。 18 | 19 | # 笔记系统与类型划分 20 | 21 | 有了遨游星海的星图指引,我们就要开始逐个探索美丽的知识星球了。根据知识本身的特点,使用的频次,检索与更新的方式,我们又可以将笔记分为索引式、清单式、书籍式与代码式;下面我会结合自身的实践认知,来阐述这几个不同类型的笔记的构建与使用。 22 | 23 | - 索引式笔记,典型的代表是 [Awesome Links](https://github.com/wx-chevalier/Awesome-Lists),其按照知识图谱来将各个领域的有效的链接沉淀下来。与 Google 这样搜索引擎搜出的结果相比,其含金量会更高。一方面,纳入到 AwesomeList 当中的链接,往往都是自身阅读、筛选过的,尽可能去芜存菁,去重留一,无论是分享某个技术领域的文章给他人,还是自己学习阅读,都能够避免冗余阅读。另一方面,很多优秀的文章并不一定会出现在搜索引擎的前几页,而是需要依靠自己日常浏览中主动发现、归纳。[Awesome Links](https://github.com/wx-chevalier/Awesome-Lists) 中还包含了很重要的一个部分,`*-OpenSource-List`,是对于各个领域的常见开源项目的归档;即可以方便快速查找所需的框架与库、开发工具等,也能够提供一些优秀的,可以借鉴的开源项目来学习。 24 | 25 | - 清单式笔记,典型的代表是 [Awesome CheatSheet](https://github.com/wx-chevalier/Awesome-CheatSheets),即是对于某个领域、方向的精华,以及日常工作中常用知识点的归档。无论是快速学习,还是作为日常开发中的工具手册,都是极好的。 26 | 27 | - 书籍式笔记,即可以是 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 这样对于优秀书籍的搜集,也可以是 [现代 Web 开发](https://github.com/wx-chevalier/Web-Notes),[深入浅出分布式基础架构](https://github.com/wx-chevalier/Distributed-Infrastructure-Notes) 等这样子各个领域的自己的笔记的编排。值得一提的是,书籍式笔记,并不强调一定要遵循知识图谱的结构,而是赋予其一定灵活性,以方便记录与交流。 28 | 29 | - 代码式笔记,典型的代表是 [coding-snippets](https://github.com/wx-chevalier/coding-snippets), 对于程序员这个角色而言,代码也是我们笔记系统的重要组成。在这个之上,我们又可以构建出一系列小的项目。 30 | 31 | 讲了一些,都是笔者这几年的心得体会;构建知识体系、笔记系统也并非一蹴而就之事,而且每个人皆有其独特的方式与目标,可以先读而后记,而后边读边记,最后成一家之言。每当抬头仰望浩瀚、无垠,且不断变化,有无数璀璨明星闪烁的知识星海,不免会觉得有疲惫与无力感;而正是自己这么多年构建下的知识体系与笔记系统,成为了我遨游星海,领略美景的一叶扁舟。 32 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2018/2018-我的技术之路.md: -------------------------------------------------------------------------------- 1 | # 2018-我的技术之路: 做些有趣的产品 2 | 3 | 年初的时候,我就在想,今年的主题词是什么;上半年考虑的较多的是所谓**研发效能的提升**,下半年却渐渐发现自己更多的会在想**产品**这两个字。从代码出发,在写代码的时候会想到模块/库/框架/平台等等概念,但是突兀地发现好像从未想过,做的任何东西都是产品。印象深刻的 Case 就是浏览了 [Don’t Make Me Think](https://parg.co/64R) 及其他书籍之后,慢慢发现自己之前无论是写页面(譬如[个人主页](http://wx-chevalier.github.io))、PPT 还是论文,都推崇草蛇灰线,却是极大地违反了受众的习惯;为了勉励自己能在 2019 年更加的下沉到产品思考,就将本文重定位为,**做些有趣的产品**。 4 | 5 | # Github,知识检索与知识图谱 6 | 7 | 今年投入精力较多的算是对于笔记/代码的重整合,使得各个模块、脉络更为清晰,也方便外化。偶尔会瞅瞅 Github 的总 Star 数,不知不觉终于要破万了,这种行为没啥大意义,但是会告诉我生活不止眼前的苟且或磅礴,还有属于自己的路。阅读,写作,编程本身就是乐趣,而不仅仅是他们的结果。生,活不难,生活却艰难,给人生多**几个坐标,几个赛道**也是舒缓压力不错的方式。我的 [Github 知识类仓库](https://github.com/wx-chevalier),大概分为如下几部分: 8 | 9 | ![default](https://user-images.githubusercontent.com/5803001/50385677-2996cd80-0714-11e9-8f7f-55945c435375.png) 10 | 11 | 前几年喜欢强调对于**资讯的掌握程度**,以逛各种聚合阅读、博客为主,虽然想着要系统化学习,却不可否认地在这里逡巡还是只能窥冰山一角,还是需要阅读大部头的书籍,完整地学习某些课程或者自己从零开始造些玩具轮子。笔者开始降低每日的阅读量,而是尝试改为专题式的学习,每周可以定一个 Topic,专注地,不贪多贪全地去学习。这里 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 存放了笔者阅读过的书籍以及书摘,而 [InfraS-Wheels](https://github.com/wx-chevalier/InfraS-Wheels) 则是希望能够在重造轮子的过程中,提升自己的基础掌握与代码实践能力。 12 | 13 | 为了方便检索,我也特地重构了[个人主页](http://wx-chevalier.github.io),把知识图谱、知识架构与知识检索结合到了一起: 14 | 15 | ![image](https://user-images.githubusercontent.com/5803001/50374921-2b876080-0630-11e9-87b1-ef3fea261324.png) 16 | 17 | 不得不说,这个个人主页做的极烂,极大地违反了 Don’t Make Me Think 这个原则。交互并不限于界面,应该是完整的用户流程;虽然笔者用了 PWA/Web Worker 等些许的优化手段,网页搜索的响应,包括每次需要打开浏览器,而无法 One Stop 一键直达等性质,让我选择自建了 [alfred-sg](https://parg.co/6Vs) 这个工具: 18 | 19 | ![](https://user-images.githubusercontent.com/5803001/50546216-fd70d480-0c5e-11e9-9b6b-cceaf7860c58.png) 20 | 21 | 可以先在 MAC 上安装效率神器 [Alfred](https://xclient.info/s/alfred.html),然后直接使用 NPM 安装即可: 22 | 23 | ```sh 24 | $ npm install -g alfred-sg 25 | ``` 26 | 27 | 欢迎使用,欢迎 [ISSUE](https://github.com/wx-chevalier/xCompass/issues)。做了许久的 MD 工程师,不知道何时能晋升到高级 MD 工程师。 28 | 29 | # 数据浪潮之间的前端工程师 30 | 31 | 现在是专门做前端的工程师,却感觉自己离前端愈来愈远;今年唯一与前端相关的总结就是[数据浪潮之间的前端工程师](https://parg.co/6KA)了吧,写完自己却觉得索然无味。数据浪潮之后,有 Web 前端、数据富集与处理、人工智能,自己却更像 API 调用工程师,针对不同的业务场景选择合适的 API,选择合适的模型。 32 | 33 | 这里不再赘述,笔者还是想随意说些其他的前端感想: 34 | 35 | - **No Warning**,在编写 JS/TS 项目时习惯了不放过任一的 ESLint/TSLint Warning, 很多 Bug 就隐藏在 Warning 之下。 36 | 37 | - **面向重构编程**,使用 ts;拥抱变化,项目之处的很多规划、设计、业务可能都会改变,不畏变化,随时重构。 38 | 39 | - **圆角,阴影,边距**,良好的交互源于细节,产品不仅仅可用就好。 40 | 41 | - **恰到好处地主动优化**,平衡用户体感,业务价值与自我排期;过度/提前优化也是万恶之源。 42 | 43 | - **用产品思维做技术**,用技术赋能产品。 44 | 45 | - **GraphQL 并非银弹**,不建议直接替换客户端的状态管理,详情参看 [GraphQL CheatSheet](https://github.com/wx-chevalier/Awesome-CheatSheets/blob/master/Backend/Architecture/Style/GraphQL-CheatSheet.md)。 46 | 47 | # 杂谈 48 | 49 | 今年年初的时候完成了跳槽,换了个吃饭的地方。即有意料之中,也有意料之外。不过自我的主观情绪确实是有很大的波动,工作的压力,自我的迷茫,更加地勤奋与分秒必争。也会要去关注主要矛盾,不能为,那些重要但是仍为支路,或者无法以主观愿望为转移的事务,过多的倾入情感,平滑这些压力或者挫折;**不断地自我学习,关注行业变化**。 50 | 51 | 这个冬天真的很冷,都冻掉了几层皮,希望来年能温暖一些吧。几年前从创业开始踏入社会,称兄道弟者多,能互称 SD 者少,确实很开心能在新的岗位碰到一群 **SD**。下半年在新工作岗位上愈发忙碌,写字的时间都少了;有时候也会感慨,愈忙碌,越懒惰,越不能专注与坚持,忙忙碌碌,碌碌无为。 52 | 53 | - 阅读、记录、整理、编码,在工作的主航道之外还有些通幽曲径,让自己休憩释怀。竞争意识会降低竞争力,使你局限在某个困境或者泥潭中,从而忘记自己的规划与目标。 54 | 55 | - 思考与执行分离,充分讨论,坚决执行。使用番茄工作法 过多的碎片化信息反而会带来副作用;求全求杂,过多的碎片化工作也很难带来可感的成就感或者可度量的成长。 56 | 57 | - 我的编程能力不行,所以希望提升编程能力。编程能力是提升研发效能的重要保障,对于笔者而言,良好编程能力的外在表现是能够随时随地用合适的语言无阻塞地实现某些功能需求。 58 | 59 | 今年恰好是上一个三年的结束,得失兼有;希望下一个三年,**不负韶华不负卿**。希望明年,我能继续前行,不再懒惰,能做些有趣的事;有目的的,批量地处理事情,无论是工作,娱乐(刷朋资讯,看漫画)都应该专注地去做。 60 | -------------------------------------------------------------------------------- /02~月熊的知识体系/99~参考资料/2022~Tiago Forte~《Building a Second Brain》/《Building a Second Brain》内容摘要与分章节总结.md: -------------------------------------------------------------------------------- 1 | # 《Building a Second Brain》内容摘要与分章节总结 2 | 3 | 一、内容摘要 4 | 5 | 在当今信息爆炸的时代,我们每天都会接触到海量的信息,然而,大脑的记忆和处理能力有限,这使得我们难以有效地管理和利用这些信息。Tiago Forte 在《Building a Second Brain》中提出,我们可以通过构建一个外部的数字系统,即 “第二大脑”,来帮助我们收集、整理、提炼和表达信息,从而将知识转化为价值。 6 | 7 | 作者以自身经历为切入点,讲述了在面对健康问题时,通过记录和整理信息,最终找到缓解病痛的方法,这让他深刻认识到笔记的力量。随后,他将这种方法应用到学习和工作中,取得了显著的进步,并逐渐发展出 “第二大脑” 这一系统概念。 8 | 9 | 书中介绍了构建第二大脑的核心方法:CODE,它包括四个关键步骤: 10 | 11 | 1. **捕捉(Capture)**:收集与你产生共鸣的信息,建立知识银行,从想法中获得复利。 12 | 13 | 2. **组织(Organize)**:运用 PARA 技术,将信息按照项目(Projects)、领域(Areas)、资源(Resources)和归档(Archives)进行分类,让信息便于管理和行动。 14 | 15 | 3. **提炼(Distill)**:通过渐进式总结,找到信息的本质,突出重要内容,提高信息的可用性。 16 | 17 | 4. **表达(Express)**:运用整理和提炼后的信息,进行创作和分享,展示作品,实现知识的价值。 18 | 19 | 此外,作者还强调了创意执行的艺术,介绍了扩散与聚合的平衡做法以及创意工作的三个策略:构想列岛、海明威桥和缩减规模。同时,书中指出培养良好的习惯对于第二大脑的有效运作至关重要,如建立专案检查表、进行每周和每月例行检讨以及关注各种行动时机等。 20 | 21 | 二、分章节总结 22 | 23 | ### 第一部分:基础 - 理解可能性 24 | 25 | #### 第一章:一切从何开始 26 | 27 | 作者讲述了自己在大学三年级时突发喉咙疼痛,在漫长的求医过程中,医生们无法确诊病因,各种治疗方法也均告无效,他陷入了绝望。在这个过程中,作者开始在笔记本上记录自己的病情发展、尝试过的治疗方法以及内心的感受等。他将病历扫描到电脑上,方便搜索、整理和分享。通过对这些信息的整理和研究,作者最终发现自己的问题并非疾病,而是功能性问题,需要改变生活方式。他开始研究呼吸、营养、发声习惯等对神经系统的影响,并尝试新的生活方式和发声练习,最终缓解了疼痛。这次经历让作者深刻认识到笔记的力量,他开始将这种方法应用到学习和工作中,取得了显著的进步。后来,作者在咨询公司工作时,意识到笔记不仅是个人工具,更是一种知识资产。他将自己的整理方法分享给同事,从午餐聊天逐渐发展成读书俱乐部、工作坊,最终演变成付费课程,“第二个大脑” 系统也由此诞生。 28 | 29 | #### 第二章:什么是第二个大脑? 30 | 31 | 现代社会信息爆炸,我们每天平均要消耗大量信息,如《纽约时报》报道每人每天平均消耗 34GB 信息。信息过载让我们不堪重负,升级旧石器时代的记忆能力迫在眉睫。作者提出将笔记数字化,这种数字化的常用笔记即 “第二个大脑”,它具有可搜索、可整理、可跨设备同步以及可备份到云端安全保存等优势。笔记在现代知识工作中被重新定义为 “知识构建块”,是通过个人独特视角解读并存储在大脑之外的离散信息单元,具有离散性、可组合性、可重复使用性等特征。科技使笔记发生革新,我们不再受限于纸质笔记的诸多不便。作者通过对比没有第二个大脑和拥有第二个大脑的两个人一天的生活,展示了拥有第二个大脑的人能够更好地捕捉灵感、整理思路、高效完成工作并实现个人目标。此外,科技已发展到足以与大脑融合的程度,每个人都应拥有扩展的思想,以过上更充实的生活。 32 | 33 | #### 第三章:第二个大脑如何运作 34 | 35 | 作者以沃森和克里克发现 DNA 双螺旋结构为例,说明即使训练有素的科学家在关键时刻也需借助物理模型辅助思考,区分了 “重 lift” 方法(要求大脑即时产生结果)和 “慢烧” 方法(让思维慢慢酝酿),指出第二个大脑可让我们摆脱当前时刻限制,利用长期积累的想法。作者推荐将笔记应用程序作为第二个大脑的核心,列举了其多媒体、可搜索、可同步、可链接等四大优势。同时,阐述了第二个大脑的超能力,即揭示想法之间的新联系,通过记忆、连接、创造三个阶段实现个人知识管理。此外,还介绍了 CODE 方法的四个步骤,为构建第二个大脑奠定基础。 36 | 37 | ### 第二部分:方法 - CODE 的四个步骤 38 | 39 | #### 第四章:捕捉 - 保留与你产生共鸣的内容 40 | 41 | 创造知识银行,从想法中获得复利。我们在捕捉信息时,应以未来能使用或大脑能理解为目的,只捕捉对生活有价值的信息,摒弃其余信息。当难以决定是否保留某信息时,可问自己该信息是否令自己惊讶或已知。作者推荐了一些用于捕捉信息的应用程序,如电子书阅读器、稍后阅读应用、基本笔记应用、社交媒体、网页剪辑应用和转录应用等。同时,强调在首次接触一个想法时,不要急于判断其意义,应先搁置,保持客观,因为当下看似无用的信息,未来可能具有极大价值。 42 | 43 | #### 第五章:整理 - 为可操作性而保存 44 | 45 | 为行动而组织信息是多数笔记记录者面临的困境。作者提出 PARA 技术,即创建项目(Projects)、领域(Areas)、资源(Resources)和归档(Archives)四个单独的文件夹。项目包含正在进行的短期任务;领域涵盖长期推进的责任范围;资源是当前无用但未来项目可能有用的材料;归档则针对当前不活跃或已完成项目的材料。重要的是,可根据个人偏好将单个笔记复制、粘贴到多个文件夹中。构建工作流程应定制化,符合个人舒适感,且个人生活目标应与核心价值观一致,所从事项目应朝着生活目标前进。 46 | 47 | #### 第六章:提炼 - 找到本质 48 | 49 | 提炼要求我们不仅捕捉和整理笔记,还要能一眼获取笔记的要点。作者建议对捕捉到的重要内容进行加粗,以层次化方式突出更重要的点,并最终用自己的话撰写总结。渐进式总结可通过多种方式实现,如对文本进行分层标注、撰写摘要等,帮助我们从大量信息中提取核心内容,提高信息的可用性和记忆效果。 50 | 51 | #### 第七章:表达 - 展示你的作品 52 | 53 | 表达是最终目的,笔记系统的价值在于能否实现切实的成果,为我们带来决心、动力和成就感。我们要利用所捕捉和整理的信息,结合自身思考,将信息进行连接和表达。表达可分为三个阶段,通过展示作品,将知识转化为对他人有价值的内容,实现知识的价值最大化。 54 | 55 | ### 第三部分:转变 - 让事情发生 56 | 57 | #### 第八章:创意执行的艺术 58 | 59 | 打造第二大脑需将工作方法标准化,通过获取、组织、萃取想法并组合思维精髓创造价值,实现知识工作的精进。扩散与聚合是创意工作的根本模式,贯穿于创造领域。作者介绍了创意工作的三个策略:构想列岛,即重新发明阶层式大纲,将要点分层罗列,执行时串联起来;海明威桥,在每个工作时段保留部分时间和精力,记录接下来要做的事,利用昨天的动能推动今天的工作;缩减规模,交付小而具体的结果,维持反复循环递进的迭代过程,直到完成工作并分享成果。 60 | 61 | #### 第九章:习惯的力量 62 | 63 | 培养习惯能减轻认知负担,释放心智能力,为自由思考和创意创造空间。对于第二大脑,有三大习惯至关重要:建立专案检查表,确保项目有始有终,善用过去项目成果;进行每周和每月例行检讨,定期检视工作与生活,决定是否改变;关注各种行动时机,留意编辑、强调、搬移笔记的时机,方便未来取用笔记。我们应构建有效的系统,使其成为日常生活的一部分,接受不完美但实用的系统。 64 | 65 | #### 第十章:自我表达之路 66 | 67 | 我们打造第二大脑收集的事实和数据是为了发现内在的内隐知识,需要外部工具挖掘这些知识并使其进入自觉意识。自我表达是人类基本需求,如同食物和住所一样关键,我们必须有能力分享人生故事。通过构建第二大脑,我们能够更好地整理和表达自己的想法,实现自我表达,为个人成长和发展提供有力支持。 68 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2015/如何成为优秀的软件工程师.md: -------------------------------------------------------------------------------- 1 | - [原文地址:How to Be a Successful Software Engineer](https://medium.com/@swissspidy/how-to-be-a-successful-software-engineer-dfc3f9e63462#.vii2llqfp) 2 | 3 | > 这篇文章还是挺符合笔者思想的。笔者涉世不深,见识短浅,不过讲真,这么多年来遇到的,笔者觉得真正能做到以下几点的,聊聊无几。这个性质往往不是由你的经验和你已知的决定,而是由你对技术本身的态度决定。笔者现在不玩游戏不看剧,每天看看文章写写代码,本身就是一件非常开心的事情。获得知识与创造的快感,只可意会不可言传。 4 | 5 | 文首是原作者参加一次会议所感,实际上绝大部分踏入程序猿这个行业的人都会考虑,怎么才能成为一名优秀的程序员,无论是为了物质生活还是精神追求,而本文列举的几点也是原作者所想。 6 | 7 | > 需要注意,这篇文章是 Opinionated,请批判的去看。笔者也插入了很多自己的观点,不过主旨上还是和原文保持一致,只是做些讲解。 8 | 9 | # Know What You’re Not Doing:知你不知 10 | 11 | 有个非常著名的适用于基本上所有领域的论断,当然肯定也合适与软件开发啦: 12 | **I know that I know nothing:知我所知** 13 | 14 | 牛逼的工程师往往都会选择合适的事情去做,譬如知道你能够完成哪些任务,知道在当前任务下应该选择怎么样的解决方案,知道应该钻研或者关注哪些技术等等。优先做处在关键节点上的事情,相对应地,也需要知道你现在还不懂哪些东西。 15 | 16 | > 不要让你已有的东西成为你的阻碍 17 | 18 | 所有人都会说学习一门语言没啥的,但是人们在选择解决方案或者承接任务的时候不可避免地会受到已会的语言的影响,就像笔者会尽可能避免使用.Net,毕竟不精通。所以你要明白,不要拘泥于你会的,不要沾沾自喜于你的经验,老实说笔者有时候听某些人动不动炫耀自己 N 年的工作经验,还是有点反感的。你应该根据需要学习任何东西,面试官更希望用你未来可以达到的去衡量你,而不是你现在所处的境界与位置。 19 | 20 | > 一直记得苏格拉底的一句话,就是认识你自己,映射到程序猿中,就是能知道你可以做的和不可以做的,而尽可能地少去迷惑自己到底能不能做。无论是对于技术选型还是项目规划都适用这个观点,随着学习的深入和了解的东西的增加,自然会越发觉得知识海洋的浩瀚无垠。庄子有云,吾生也有涯,而知也无涯。以有涯随无涯,殆已!笔者之前也一直会问,当我学习的速度远远赶不上新知识出现的速度,莫大的悲哀啊。这好像一个 NP 问题,而笔者自我解决的办法就是建立一个合理的健壮的知识体系,这样我虽然记不住或者没时间深入研究很多东西,但是至少可以把它们放到合适的地方,可以借鉴笔者的[]()。笔者自己目前最主要的信息来源主要是 5 个信息聚合的站点: 21 | 22 | - [Medium](https://medium.com/@swissspidy/how-to-be-a-successful-software-engineer-dfc3f9e63462#.vii2llqfp):你可以在 Medium 上订阅一些 Tags 或者 Publication 或者 Following Users,笔者自己感觉这个的整个质量和粮草比例最高。不过缺陷是要上这个得自带梯子。 23 | 24 | - [Reddit](https://www.reddit.com/):可以订阅譬如 web_dev 等等感兴趣的 subreddit,经常会看到不错的文章与分享。 25 | 26 | - [InfoQ](http://www.infoq.com/cn/):挺不错的,经常出现精品,但是也有不少文章感觉太过于阳春白雪。 27 | 28 | - [开发者头条](http://toutiao.io/u/142222/subjects):笔者一般只会看推荐的头条精选等,还是有很多不错的。 29 | 30 | > 仅笔者自己感觉,如果想成为一名了解前沿的开发者,还是需要多关注 Medium 与 Reddit,整体而言中文咨询的活跃度与质量还是略有差距。其他的譬如 CSDN 每个月的程序员杂志与 InfoQ 的架构师质量也都非常高。 31 | 32 | # Communication Skills:沟通技巧 33 | 34 | Dirkjan 与 Carmen 讨论了 Github 的工作氛围以及它们是怎么基于高效的通信来保证工作顺利进行。实际上,沟通能力也是一个至关重要的技巧。譬如,大部分在 Github 上的团队都散布四方,甚至于都不一定有两个雇员在一个城市。并且不同成员之间习惯的沟通方式也大相径庭,有的人喜欢用 Slack,而有的人喜欢用 Issue 或者 Pull 这种方式。因此,如果你也是远程工作并且沟通方式不一致,那么你应该及时记录你说了啥以及和他人达成的一些协议。 35 | 36 | **You don’t want to be known as the guy who writes bad commit messages.你肯定不想成为天天写错误的提交信息的人** 37 | 38 | 你要能够让别人知道你已经理解了他们的问题并且能够合适的表达自己。尽可能地遵循公司统一的 Workflow,如果要和新的伙伴合作,一定要多做些预研。我挺喜欢 Github 的工作方式的,即使你在一间办公室里也不会天天让你开会,不过会基于 Pull 与 Issues 来进行异步的会议。这种方式会让新人不可避免地爱上它。 39 | 40 | # Do not Ask for Work:不要等着别人分你分配工作 41 | 42 | > 笔者也觉得,搬砖和设计之间的一个很大区别就是会不会自己去划分乃至于发现潜在的任务 43 | 44 | 我第一次进行远程工作的时候就发现主动性非常重要,工作并不会主动找上门来,就像上帝重不垂青无准备之人。有时候当你发现了问题的时候,并不意味着你的领导也看到了并且会主动让你去修复。这个道理在 FaceBook 是这样的: 45 | 46 | > Nothing at **Facebook** is **someone else’s problem.**:Facebook 里,你的问题不一定是别人的问题 47 | 48 | 把这个认知结合到远程工作中,更不会像传统的办公室里还有人天天盯着你,你主动参与更加重要,这也是你的责任之一: 49 | 50 | ![img](http://7xi5sw.com1.z0.glb.clouddn.com/1-g-xIJKP25SLytKx_re8MRg.jpeg) 51 | 52 | # Take Your Time to Think:留点时间思考 53 | 54 | Basecamp 的 CEO Jason Fried 提到他非常担心现在人们越来越充满压力,像个机器人一样工作。这点也引起了我的自省,我上一次主动思考是在啥时候? 55 | 56 | ![img](http://7xi5sw.com1.z0.glb.clouddn.com/1-ioZgc6wGQotwNxQbSk9vcA.jpeg) 57 | 58 | Fried 建议是不要老在一个地方工作或者每天走走来让你从正在做的事情里暂时抽身出来,多思考思考 how、why、when。很多时候创意就来自于这短短的思考过程,而不会来源于你的朝九晚五。更重要的是,这个对你的身体和精神都很重要哦。 59 | 60 | # Contribute to Open Source Software:贡献开源社区 61 | 62 | > 笔者一直认为,与传统的简历相比,博客与开源项目更能展示你 63 | 64 | 本次讨论有个主题是[I’ve been advocating myself](https://speakerdeck.com/swissspidy/from-blogger-to-wordpress-core-committer),关于贡献开源社区的好处。你不能仅仅因为贡献开源项目会让你的 Github 资料好看就去做,而应该是真的出于你的兴趣。 65 | 66 | ![img](http://7xi5sw.com1.z0.glb.clouddn.com/1-AFF-qyL6gxjtVL-x78x8Tg.png) 67 | 68 | 在反馈给他人和 review 它们的贡献的时候,不仅能增加你自己的编程技巧,还能增加你的远程工作能力与沟通技巧。 69 | 70 | # Final Notes 71 | 72 | > Just do it. 73 | -------------------------------------------------------------------------------- /.github/META/README.book.md: -------------------------------------------------------------------------------- 1 | [![Contributors][contributors-shield]][contributors-url] 2 | [![Forks][forks-shield]][forks-url] 3 | [![Stargazers][stars-shield]][stars-url] 4 | [![Issues][issues-shield]][issues-url] 5 | [![license: CC BY-NC-SA 4.0](https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-lightgrey.svg)][license-url] 6 | 7 | 8 |
9 |

10 | 11 | Logo 12 | 13 | 14 |

15 | 在线阅读 >> 16 |
17 |
18 | 速览手册 19 | · 20 | 代码实践 21 | · 22 | 参考资料 23 | 24 |

25 |

26 | 27 | 28 | 29 | # Introduction | 前言 30 | 31 | [![Product Name Screen Shot](https://s2.ax1x.com/2020/01/06/lr2YdJ.md.png)](https://example.com) 32 | 33 | Here's a blank template to get started: 34 | **To avoid retyping too much info. Do a search and replace with your text editor for the following:** 35 | `wx-chevalier`, `repo`, `twitter_handle`, `email` 36 | 37 | 更多介绍与导览参阅 [INTRODUCTION](./INTRODUCTION.md)。 38 | 39 | ## Nav | 关联导航 40 | 41 | # About | 关于 42 | 43 | 44 | 45 | ## Contributing 46 | 47 | Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. 48 | 49 | 1. Fork the Project 50 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 51 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 52 | 4. Push to the Branch (`git push origin feature/AmazingFeature`) 53 | 5. Open a Pull Request 54 | 55 | 56 | 57 | ## Acknowledgements 58 | 59 | - [Awesome-Lists](https://github.com/wx-chevalier/Awesome-Lists): 📚 Guide to Galaxy, curated, worthy and up-to-date links/reading list for ITCS-Coding/Algorithm/SoftwareArchitecture/AI. 💫 ITCS-编程/算法/软件架构/人工智能等领域的文章/书籍/资料/项目链接精选。 60 | 61 | - [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books): :books: Awesome CS Books/Series(.pdf by git lfs) Warehouse for Geeks, ProgrammingLanguage, SoftwareEngineering, Web, AI, ServerSideApplication, Infrastructure, FE etc. :dizzy: 优秀计算机科学与技术领域相关的书籍归档。 62 | 63 | ## Copyright & More | 延伸阅读 64 | 65 | 笔者所有文章遵循[知识共享 署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh),欢迎转载,尊重版权。您还可以前往 [NGTE Books](https://ng-tech.icu/books/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 66 | 67 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books/) 68 | 69 | 70 | 71 | 72 | [contributors-shield]: https://img.shields.io/github/contributors/wx-chevalier/repo.svg?style=flat-square 73 | [contributors-url]: https://github.com/wx-chevalier/repo/graphs/contributors 74 | [forks-shield]: https://img.shields.io/github/forks/wx-chevalier/repo.svg?style=flat-square 75 | [forks-url]: https://github.com/wx-chevalier/repo/network/members 76 | [stars-shield]: https://img.shields.io/github/stars/wx-chevalier/repo.svg?style=flat-square 77 | [stars-url]: https://github.com/wx-chevalier/repo/stargazers 78 | [issues-shield]: https://img.shields.io/github/issues/wx-chevalier/repo.svg?style=flat-square 79 | [issues-url]: https://github.com/wx-chevalier/repo/issues 80 | [license-shield]: https://img.shields.io/github/license/wx-chevalier/repo.svg?style=flat-square 81 | [license-url]: https://github.com/wx-chevalier/repo/blob/master/LICENSE.txt 82 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-我的技术之路.md: -------------------------------------------------------------------------------- 1 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books-gallery/) 2 | 3 | # 2019 我的技术之路:分布式系统到分布式制造 4 | 5 | 2020 开春一场疫情,打乱了许多人的安排,也成为了此文拖延的借口;果然年年岁岁花相似,岁岁年年拖延症啊。2020 年于我而言也是折腾的一年,离开阿里重回第三次创业的轨道;不同于之前的互联网与大数据这种纯软的方向,我们一些五年前在 3D 打印领域折戟的小伙伴重聚,依托于母公司的设备、材料研发的能力,自己独立地去运行几家分布在全国的 3D 打印工厂,尽可能地贴近制造的根本,然后以此探索数字化、智能化能力在未来的 3D 浪潮中的赋能落地。 6 | 7 | # 面向 2020 的某熊知识体系 8 | 9 | 在阿里的一年多时间,我有幸系统地学习了软件架构以及较为完整的大规模软件系统的开发、测试、部署与运维流程,及其间完整的支撑系统设计。其中很多的理念、思想,包括正面、反面的东西,结合着半年的实践,让我了解对于一家初创阶段的公司,应该在技术上进行怎样的取舍、怎样的储备、怎样的有备无患。 10 | 11 | 同时,这一年我虽然日渐惫懒,唯一坚持的就是多端连续性协作。现在几乎所有的文本内容都直传到 Github,在 MAC 上使用 VSCode,在手机上使用 WorkCopy,搭建基于 Git 的个人多端协作方式。经过一年多的使用,感觉还挺顺手的。 12 | 13 | ![Github Commit](https://s2.ax1x.com/2020/02/23/331NDK.md.png) 14 | 15 | 年末笔者还重构了自己的[个人主页](https://wx-chevalier.github.io),同时将所有的文档利用 Docsify 工具直接发布为 Github Pages,端的也是特别方便。基于此,笔者将所有的文章整理到了 [NGTE Books](https://ng-tech.icu/books-gallery) 当中: 16 | 17 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books-gallery/) 18 | 19 | 笔者目前的沉淀分为两大系列: 20 | 21 | - 其一为编程笔记系列,已有数十仓库千篇文章百万字,涵盖了 [编程语言、软件工程、模式与架构、Web 与大前端、服务端架构、分布式基础架构、数据科学,人工智能与深度学习](https://ng-tech.icu/books-gallery)。你可以在[某熊的技术之路指北 ☯](https://github.com/wx-chevalier/Developer-Zero-To-Mastery)查阅详细的导航。可以前往 [Awesome Lists](https://ngte-al.gitbook.io/i/) 或者 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 查阅分门别类的资料与书籍,抑或前往 [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) 查阅完整的知识体系、脉络与要点的脑图,或者 [Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps) 了解不同技术领域的进阶指南。最后,你还可以前往 [Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews) 做最后面试前的准备,或者用常见的技术面试题去检验自己学习的结果。 22 | 23 | - 其二为代码实践系列。对应于笔者的知识体系,也为了更好地进行管理协作,笔者将数十个仓库划分到了 [Dev-Snippets](https://github.com/Dev-Snippets)、[FE-Kits](https://github.com/FE-Kits)、[BE-Kits](https://github.com/BE-Kits)、[AI-Kits](https://github.com/AI-Kits) 等不同的组织中。 24 | 25 | [![技术视野](https://s3.ax1x.com/2021/02/21/yTSKdH.png)](https://github.com/wx-chevalier/Awesome-MindMaps) 26 | 27 | 本来打算在此文中多聊些分布式系统与分布式制造关联的体悟,还请读者移步[《DistributedSystem-Notes》](https://github.com/wx-chevalier/DistributedSystem-Notes)。 28 | 29 | # 3D 打印与分布式制造 30 | 31 | 作为典型的互联网产品与研发团队,我们真实地运营了多家手扳厂,同时也深入到了多个垂直终端行业。在 CCO 的时光让我深刻认知到了服务的重要性,特别是对于制造业,最终就是由服务驱动产品、技术、制造。但是对于服务的核心,不同于互联网的软件产品的体感、人对人服务的温度,制造业服务的核心还是性价比。 32 | 33 | ## 浅谈工业互联网 34 | 35 | 工业互联网在蓬勃地发展,也必然会有光明的未来,但是前进的路途势必曲折,螺旋式上升。这两年参观工博会都能够看到很多智造的企业,特别是数控机床、激光等;工业互联网则是将原来工厂单点变成一个全产业链、全价值链、全要素的一个融合,就像打通任督二脉,工厂本身也能利用新技术提升它的效率,变成数字化、智能化的工厂。我们能看到现在工业互联网利用到的来自消费侧、政务侧的信息技术,首先就是 IoT 以及云与大数据的基础设施,各种流程化、个性化搭建工具帮助我们的工厂快速地构建 ERP、CRM、MES 等信息系统,极大地节约了原本的 IT 设施的成本。 36 | 37 | 其次,在数据时代,工业设备是天然的数据产生者,原本离散的工业设备可以变成在线的智能化设备,在这个基础上我们能够建立统一的数据中台、制造中台。然后,工业的场景天然是多场景连接的,我们的客户可能在 PC 上建立工单、执行排产,然后在移动端实时接收消息,在厂区的大屏上查看运行状态等等。不过就像很多的 ToC 侧的创业者碰到的困难,从单点来考虑前途光明的事业一旦失速狂奔反而万劫不复;工业互联网的落地亦充满坎坷,设备的差异暂且不说,就看似通用的 ERP 订单部分,在不同的行业、不同的工厂都是同中有别,这也是恰恰难于下手的地方。 38 | 39 | 工业互联网最需要解决的还是要能够真正地深入客户,发现需求,梳理需求,定义需求。工业互联网不是,也不能够阳春白雪。我们团队在前几个月深度走访了数十家工厂,我们也有自己的分布在全国各地的多个工艺技术中心、生产中心组成的分布式工厂。很多的互联网创业者在下场的时候都会建很多的空中楼阁,不接地气,不愿意去深入某个具体的行业、企业;这肯定是有问题的。但是另一方面,我们也看到很多做定制化 MES,做 ERP 的,他们的定制化程度、实施费用都很高,很难进行跨企业、跨行业的推广;像 ThingWorx、根云、iSESOL 这样的头部企业都有快速进行行业解决方案构建的一揽子技术底座,但是具体研发效能如何,也是如人饮水冷暖自知。 40 | 41 | ## 其他心得 42 | 43 | 时间仓促,笔者未言太多,寥寥记述几笔吧: 44 | 45 | - 不要感动自己:不能以考试的心态去创业,没有明确的题目,没有明确的答案,也不会因为你努力就给你高分。 46 | 47 | - 脱离互联网思维:踏踏实实地去赚钱,用好每一分钱。 48 | 49 | - 脱离技术思维:对于非技术的创业而言,要学会尊重技术;对于我们这样的开发出身,要能够脱离技术思维。一方面不能只着眼于技术,沟通协调、商业市场都是非常的重要。 50 | 51 | 大半年的实践下来,感觉做 M 端的产品,即面向 M 端产品和 B、C 端的产品还是有非常大的差异的;这些会在[《Product Series》](https://github.com/wx-chevalier/Product-Notes)中进行详细阐述。 52 | 53 | # 二十七载始读书 54 | 55 | 往年都是推荐大家阅读很多的资讯、书籍,今年我自己的知识来源除了阅读之外,音频播客成了最大的补充。在喜马拉雅、得到、荔枝等等音频的 App 上每天都会有大量的碎片时间进行收听,譬如早起洗漱、上下班通勤或者是工作间歇休息的时候。曾经我一直有考虑自己会在哪一年能开始读书,没想到是今年通过听书的方式来完成了这个夙愿。在[《Financial Series》](https://github.com/wx-chevalier/Financial-Notes)中我也打算记述有关财经与投资的相关笔记。 56 | 57 | 年近而立,希望能有机会拿到下一段旅程的入场券;想都是问题,做才是答案,干就得了,鸡汤有毒,以毒攻毒。今年,我回继续写文章,码代码,偶尔录制一些视频。 58 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2020/2020~我的技术之路.md: -------------------------------------------------------------------------------- 1 | ![2020 NGTE Books Cover](https://s3.ax1x.com/2021/02/21/yo8jXT.png) 2 | 3 | # 2020-我的技术之路:创业公司中的研发效能与技术赋能 4 | 5 | 2020 年,诸多不易,大家都是披荆斩棘砥砺前行;在这一年我在技术、产品、行业认知上也是起起伏伏,在挫折、摔打中不断地深化自己对行业的认知,融入制造团队,打磨产品,构建更顺滑的体验与交付能力。从技术与产品的视角看,2020 我的核心关注点如下: 6 | 7 | - 研发效能,以尽可能小的技术团队保障全线产品的按时上线、交付。我们的产品涵盖了典型的 工业互联网/MES/CRM/电商系统,跨越了 Web/移动端/小程序/桌面端等多个触达点,服务于海内外客户(需要维护跨地域的公/私有云及边缘节点)。 8 | - 技术赋能,挖掘并驱动业务发展,单点突破与全线贯通齐头并进,以正合,以奇胜。我们需要某些产品点打动客户,但是如果不能给客户提供完整的解决方案,是无法得到最好的认可。 9 | 10 | # 做时间的朋友:八大体系超千篇数百万字技术笔记 11 | 12 | 天地逆旅,时光飞逝,岁月如梭,年近而立也是愈发感觉有急迫感;每次回顾过去十年的职业生涯,想起自己曾经学过、做过很多,但是也忘了很多,不由地内心惶惑。此时唯有自己做的这数百万字笔记体现了技术一途上留下的痕迹:[在线阅读:wx-chevalier.github.io/books](https://ng-tech.icu/books-gallery/),书籍托管于 Github:https://github.com/wx-chevalier 13 | 14 | ![笔记汇总](https://s3.ax1x.com/2021/02/21/yTSKdH.png) 15 | 16 | 今年我会针对每个系列编写专门的导读文章,希望能与更多的人分享我看到的、学到的、记下的。 17 | 18 | # 既能组装也能造轮子:模板、库、项目的沉淀 19 | 20 | 经历了不同的大厂与创业团队,对于技术人员而言需要具备极强的机动性、灵活性;在小型的创业团队中不能墨守成规,照搬大厂的规范、流程、制度以及技术架构。另一个方面,也不能因为是小团队就忽略了对于架构、编程规范(如 Lint)、重构(如 Code Review)等的坚持,否则随着业务发展迅速增加的技术负债终会显示出它的破坏力。就如笔者在《[SoftwareArchitecture-Notes](https://github.com/wx-chevalier/SoftwareArchitecture-Notes?q=)》中关于所谓复杂性的讨论,软件架构的核心价值,即是控制系统的复杂性,将核心业务逻辑和技术细节的分离与解耦;互联网软件系统架构的设计不是一蹴而就,而需要渐进、持续、多次设计的。 21 | 22 | 作为创业团队的技术人员,核心矛盾是提高生产力,提高团队的研发效能。我们既要能发现现有的轮子,去快速组装他们,去支撑业务需求;也要能造轮子,去完成团队自身的工具化与工程化。同时也不能盲目追新,很多令人激动的新技术、新特性,但是也要考虑到新技术本身的不确定性、团队成员的学习成本。这里以 Web 开发做简单示例,在 [wx-fe](https://github.com/topics/wx-fe) 主题下大概有十来个项目,其典型包括: 23 | 24 | - [`m-fe-*` 系列](https://github.com/wx-chevalier?tab=repositories&q=m-fe&type=&language=): 微前端工程化系统项目,包含了前端开发基础脚手架、React/Vue/Node/Electron/Taro 以及各种微前端模板。 25 | - [micro-components 系列](https://github.com/topics/micro-components):包含 Web 电子白板、Excel 全栈解决方案等一系列项目。 26 | - [`ueme-*` 系列](https://github.com/wx-chevalier?tab=repositories&q=ueme-&type=&language=): 构建用户体验中台系列项目。 27 | 28 | 这部分笔者会在单独的专题中进行讨论,此处仅引出笔者的代码库的沉淀。 29 | 30 | # 杂谈:程序员的职业转折,小团队与大团队 31 | 32 | 不觉入行已有十年,十年苍狗,我却是一直怀着对行业的焦虑前行,35 的槛一直如达摩克里斯之剑;不过回头来看,至少对于身边认识的很多前辈,在这个时代以 IT/编程为敲门砖进入某个行业/领域是极好的选择。只要是真正的有心人,能够在日常工作中进行人脉、管理、行业等等多维度的积累,是肯定能打破职业生涯的桎梏,完成转型的。技术好的,不妨进入一些传统行业。只要跨过了行业门槛,有公平竞争的机会,以更现代化的产品与研发效率,也是有可能进行降维打击的。 33 | 34 | 但是,需要特别强调的是,无论进入哪个行业,必须心怀敬畏;毫无行业经验的人,看了几个 PPT 就扬言要颠覆行业,不觉得是对于前人的不尊重吗?同时不能太过画饼,于己于人皆是如此,反对强行让别人为自己的梦,或者错误买单。很多人既要独断专行的权利,却不愿意承担责任义务。 35 | 36 | ## 职责的变化 37 | 38 | 我从 2014 年开始一直陆陆续续参与创业团队的工作,期间也在大厂工作了三年;颇有感触的一点是,创业对于纯技术背景的同学并不友好,往往技术越强,落差越大。譬如心态的转变,很多技术背景的管理者往往会不适应类似于接口协调这样的工作,觉得似乎是在浪费生命。但是需要慢慢地将自己从日常工作中抽身出来,为团队保驾护航,上善若水,水利万物而不争;然后慢慢起身远眺,做更偏重于协调,以业务整体绩效为目标的事情。此时在团队沟通上也需要注意技巧,良好的组织气氛,是提升团队研发效能的重要保障。就像玩游戏一样,对于团队、对于自己,想要翻越某些藩篱的时候,需要不断地给予正向反馈。无论是公司、团队的管理,还是自我管理,成就感都是非常不错的活力棒与路标;而保证自己在日常工作或者 Side Project 中获得成就感的一种前提,就是尽可能细粒度的切分任务。 39 | 40 | 此外,研发往往有明确的目标、指标,但是在未知行业中,要提取、抽象出指标却并非易事,并且目标也是不断的变化;这点在大公司中往往是由 PD、PM 去屏蔽,但是在创业团队中缺颇为考验技术人员的辨识能力。譬如目标和过程的区分。最初我们以为目标是:客户能够用上我们的软件与解决方案,后来发现这只是实现最终商业目标的过程,后来发现我们需要的过程是建立联接而不是拘泥于软件使用这件事。竞争意识损害竞争力,同样达成目标的执念有时反而会损害执行力,很多开始以为的阶段目标反而会成为你要征服的最高的巅峰。 41 | 42 | ## 团队的组成 43 | 44 | 在创业型小团队中,团队构成不稳定。开发往往身兼数职,不仅仅实现功能,经常要处理用户反馈和投诉,还要和产品讨论需求、和设计讨论界面实现,甚至有时要修电脑、装软件、解决疑难杂症。同时创业期的产品可能质量要求不高。用户量级小,即使质量稍差也能接受。做的功能亦不太考虑可扩展性,能用就行。技术视野狭隘。整体业务场景少,技术以使用为主,很少深挖底层原理和实现。产品的生命周期不可预测。做了 1、2 年的产品,可能因为各种原因而无法上线。但是,小团队也同样具备优势。人数少的优势,使得团队易于扁平,决策层到执行层是直接关系,甚至有时执行层也参与决策。指令下达速度快,沟通成本降低。而且作为早期参与者,在渡过艰难的生存期之后,更容易成为核心人员。核心代表着股份与期权,持股干活更是动力十足。再往后,如果团队能够扩招,核心人员往往是管理人员的首选。 45 | 46 | 合适的人才是团队的基石,招聘也是团队长久的任务与挑战;特别是对于技术负责人,往往也需要承担起招聘。早期的团队往往是内部推荐,或者以人带人,应当尽量招聘合适的人才,过低或者过高往往都会加重团队的管理成本。在第一轮快速扩张之后的平稳期,稳定是重中之重,同时注意流水不腐,户枢不蠹。同时团队无论大小,即使没有专门的 HR,也需要尽量保证面试流程的正规性,并且针对不同的面试者展示团队不同的优势:氛围良好/极客文化/快速发展/行业优势等等。不过随着团队的迅速扩张,人员扩充本身是熵增的过程,但是熵增也意味着混乱与无序,作为技术团队的领导者,需要不断地进行重新定位与角色转变。从早期的核心开发者,到渐进的团队协调者,再到团队的管理者。 47 | 48 | 健康的团队,应该是离开任何人都可以正常运转;反过来看,如果核心成员发现自己在团队中的地位是无可替代的,反而需要有危机感,宁可牺牲些可用性,也要换取些分区容忍性。技术负责人首先要能够将任务合理划分,将业务型的与通用型的模块化切割开来,尽可能地定义明确边界与交互的接口协议。这样就能够将任务打包给兼职/实习人员,尽可能地实现调度优化。 49 | 50 | # 结语 51 | 52 | 前两日有校友撰文写道:人生之路,不似挥舞剑花那般行云流水,更若一首平仄绝句,错落有致。面对道路的蜿蜒,唯有携着“柳暗花明又一村”的笃定坚守,才能穿过眼前横亘的“山重水复”。国学大师陈寅恪曾说,“唯此独立之精神,自由之思想,历千万祀,与天壤而同久,共三光而永光。”于个人,既要失败要乘早,穷人家的孩子承担不起失败的代价。不过也要随时转换,如多年前一次失败的创业,创业痛苦的并不是灿烂热烈的死去,而是将死不死,虽静美却无心赏秋叶。 53 | 54 | 最后,谨以此文,致敬认识的或者不认识的创业者,也是赠言给身边走在创业路上的朋友。 55 | -------------------------------------------------------------------------------- /.github/META/技术体系.xml: -------------------------------------------------------------------------------- 1 | 7V1bk5u4Ev41enSKO9Ij+JLd2tnsVOZsTfKUwrbGJoONC+PMzP76IwmEuRvb3OzgSmVACCHUn1rdre4GyOPN+2fP2q3/dpfYAZKwfAfyBEgSUgXyPy34CAo0pAUFK89eBkXiseDJ/g+HheF9q4O9xPtERd91Hd/eJQsX7naLF36izPI89y1Z7cV1kk/dWSucKXhaWE629Nle+uuwVNTQ8cIf2F6tw0dDSQ8uzK3F68pzD9vweUCSX9gvuLyxeFvhi+7X1tJ9ixXJUyCPPdf1g6PN+xg7dGj5sAX3zQquRv328NavdIOuqME9vyzngHmnWdf8Dz4ceElGJzzdulvyx2TviGkrAjn7edjsUhXW/sYhZyI5jF6SVnWsOXbMaJjGruN6x7v2vuX5BqVgqmxmO07YAt4ueY2FY+339iIoDKvQJ/7Evv8Rwso6+C4pcj1/7a7creU8uO6O98z33FfM+0CIJc1UUx9HVzjxZVLy4m79mbWxHYrpP7DzC/v2wgovhM8StfA83qSsKOqENrmzFvZ2RUpVcpalVEi8vXvwFjgiT4g4MgYrzCvqmhKUUsLEbg5p/Bm7G+x7H6SChx3Lt38lYW2Fs2MV1TsihByEICkEjDYA5uYAo4sdAkYfAHNzgNGEDgEDB8DcHGBUuUPAoCxgpjpAM2CoYAqBMQNQoyXGFBgiuyTQkjSojgiilHhb2z5+IiNEr74ROfcKCMVpmihMkJOgJY/wl5J5xn6k3HLs1ZZikxAWe/zG8L3FDA4sbxG2qpOzHfZsQhPsPUWVpDKw/MKej99LIRBeVVAoe4ZaggyFT2HJW0zq5srEOiZw60IduOEtX8xoxLYZzcVcZApVTZEu5yJKCbyS6EljK4XquYBlrFXnNpyvpLiN1h23UcUBNTeKGrVD1EgDam4UNR0q27xHMdR8xdYSSJpD+mfOPXK0okdgigCCAHJ5xzR7Lt1gDpKrIZGRbsox0pZ0I3EVKpJulKrSjXa+dPPvHnv/zH9SY6gkMHoFt47dJRkTSfhqLTeExjm4gcDUKWKIVGwawCQHKkAmMKc5lVmvHHv7GjS+9n1qkDVop6TZyvbXh/mnhbshJ2/vHx/vCxEh2mPWidFXN+yDlIS4EhvGcAL0FrUvAsRQbBm1Qouo1ZIiuSo0CVpyGsNtKY6NN7wn7ZFC03VfyZ9n8pZr97DH+ZhGOoAEygowETA0zh3F+jAddmg0fhrRHu1HsQ6lAK4OAO8PwEUlxZXVfgCcI5OM0pZj8wj6B3vv73kV0mq8Vh6ms20xRq8CqICpBhD5hxjHV4AhUY5vjgHVxgsecN0UeSB37jOzQhtmRX9mRYrtS2rLbD8j+npfX79/+SJpy5+yvnO+/W+88L6MRCjAUqXpqJ9Mj6UpHSqGG/xu+9/oSH9Sw7Pv4ExrbRx5VTGQsb6lFShNMc1pgQJVoOGcQH0CZGlFL08ZrKgxcerHNaZ80ukIdaVGFWBJVC/AUiX0kDHzPr7FT75H9c5V0utQyC/AU1UsN4ATWDdO2K0E39ZHrMLOtbf+PtbyIy04ckRVT6pvmpLypEjVV5Tr6utJTw26fLIeHxEevfpVoM/uetQNeuGTIKIk8DUhKnjkaxhnPsN8KJ0PUKh9J7aV+aAh+ar6euhSVdd8OI55zJY2dpd0WczRIFW6V4imVFiGEKCs2NEvAVXUEFrWYmDtqTUtvVeoclfBFm1pE7ynYyMJj5ZP3pEePW3t3Q77+0tVpCVrcrQLGhztE83FoBsfnL4rS5oyn+M2LLutKUeplRo2B70zDAacd12NQctZuR65uimGnzTArzfw01Av4GcQ1Eye2oGfPMCvP/ATWoVfRo6zHife44/3t6/zH9Lnh7+kxx+bTUxKvtAwJORrOfz4qL7Ts8l7eAc7+QBnaiOXmIwyKsxMgLqg5gLyHFNQ0kexumEopYxU0XiUrMaTT8vQAtDK/jrvVUwnMLzFmj5Emj0TtpS7vaQCcwII8yLKgSECQ6YPJIUwsKor7Oq45xpDBKDfRWOQVLlBm3YOtlC5fTHXa7kaD4osLaBO82JN/solnKluI4qaZSlk2NsKdSiSjOiAk7GkohEBN97ncRCNMgg4YVzDCH2SDZO5YWjU7GBq4QFU6tuyDjs24t1KSVk3tU2tWi8qvCMpS5eTYlbElzoSswgehjiv6lytRp/GQjClAnRq92WtZveVuCMrbyLgyeFdKcyVmmhPu/qM19jyn9YY+7lMlDk6GhPKKU2Zui9MEYACDfugl3RquJ3OqGcDHMcMuszfzVRZiQKgzsS5WWTivcITKOpthrXqA2vtjrVmTMeVo0ya461DhFu/eOtpXZXP4hYEyzxdQqlFl+BGixxdol5XhdvTJXKDGpHUsS7x6Lkrz9psAkv/g7VdHWjqijLVQme+fEG4IwQwvk5CViLUp1HEusf7VqRdoGEJ7G4JlNS+aRd6djN+WAF7pF3U7qzXtnZR0SFKR3op7i70KD3PaNett6koGYZZAL5+eZvqOVgtImvtAcIXeU0hKYlvJfS/K/KCStdXBTUF+2u9oPgYJiIKfbJk/8rd6tDo9gYRGaJYgX7vaoiSZc3veVcjbSek8SsKiv0aW9eLRNT3sbvZkfXwUhkyeX8MqLcUIKKJC40++24DRBBM467J3bSKMuS1iaVuJ6S+bI3udUh93pLN53ZHphT5fEWjkinldzKXwFwLGfdM68xcMvPIa53ae2V2f4PZ/SFim7B877U2uwjvR4ExBN5UyPvdGUNS+wF6q7aQwl2vPycPpbBVWHoGg21X6SyxGXM3oiUQQJk6HU2ZqA7F0L8gqEzqGJChfsIi4YOQeCFRme6Iiaxlg9UpqQzplplh0ElDYEz9FJozL9IxKZpCg7dCl94KgtDhFMpZ1OGwodaJOTE/HFCoLkjUn8m4wNCY0l8kTeT6ywlTY06kGkw0JcopVAdCUR02SwLsnNSWA7C7BHYszhXB1K4p0grjXAvnQ1KEhp3Nh2qG90xDupCaDUpds6FIUnrG8xJBKbiasw1am1RCnlAglCAhNuCDUNKyUCKKXQolhUGjNqGEPT/4mGqlf25fPIsUHBb+wSvfx1ep/xpkwrjJBPwgSw8MErTNmHSvU9dhap1vzmk41v9RsvdFk+CWYlXvbhKkN5Ba3ukvmgVP7ov/ZjHET7cre4vJAOQF3hdPB0gVXCNI6WYyqEd6cOTokpkXtc0C3v9Y54vgLw3w7w7+qTxWvUG/u3LwpdjbYMsbUUGaSNpUhpolIVe6AX4jOPztts8UvacJ1sTy3ZHq+YFAjdsjN5vo50SKq5TPlVS36ndtgrRyp+MrckXdGRbKnKgbwEntAY75mr0kSgmeFcXYn9Dsz/WRkuXkog3FVjKhRZ/gqxXdwgk43BnyG0B37d8RqgWUmnwVKAslw4aTp5QO/a0Ih/eWUaXjjD6Vc+1esvwPuXYb8n4+kVW3SiLJvsmXAmpKvmwoQ8bdrcBngKcfy3I6XqQlWVFsRFYcUkU3gtRm1KOOkVqYbMa1HeztyJvg1oXIWwrpvDshMp3VoKdCpHhJeF2lgLqBO2ZShFfhjp19ArEIIJd80WMQArsBTz+CKnXUicFQbERdEQakNoHU2nO11ILUhqyIz2uMnZbFv5Aag/jXkQe+1KkNsQiJL3g0r0EjSTZTDY635HZ2d3CUURKOPflGAgsgena91zneLtaXojGvlVNolAY09kc3hlov0Mjz79Zhs8lpqxowh28pdPothV6yyX+xtfAvRWLs5lPYu6WYzbvDXtozvCcS4+eDtb94ZV4dbz6FvZtyh7137PWE77F4lqfRdepzTiOnsHhL6aDvHostf9CoJNPr8sAKT6SACDKXIJllY9BpMAwNCdMBYec0WixKeI5oDIzJvvKOTJr8nEbFTMNvTaQrQxYwM2aPgAAZPIM6i5+EEm2nlc9QVPkiUN9nTB+DajLTI2cSFduaUv5qzX5Jp8pmY9FHwHKC5ROBwCyFSdqITwbGT0EkbRAX2C+H1OyXRyk64ITYjhFe2NjLJdsQyENnMlo/jg6tHgpqelIhVjSYQ0GoZgkoa2cTsCq1uFNNgloa/Y4D/XADYTtTmmrmt6SW/ilJL1mSO6dWNm9oTuag35BacsrRpx9zS8qhlkqXcXM2UKudmQVoOjrXj2/ukZdc/+0uqcw3/T8= -------------------------------------------------------------------------------- /.github/META/README.examples.md: -------------------------------------------------------------------------------- 1 | [![Contributors][contributors-shield]][contributors-url] 2 | [![Forks][forks-shield]][forks-url] 3 | [![Stargazers][stars-shield]][stars-url] 4 | [![Issues][issues-shield]][issues-url] 5 | [![MIT License][license-shield]][license-url] 6 | 7 | 8 |
9 |

10 | 11 | Logo 12 | 13 | 14 |

15 | 关联文章 16 | · 17 | 更多项目 18 | · 19 | 参考资料 20 |

21 |

22 | 23 | 24 | 25 | # Introduction 26 | 27 | 本篇是有关 [repo-Series](https://github.com/wx-chevalier/repo-Series) 系列文章的代码示例。 28 | 29 | ## Nav | 导航 30 | 31 | # Getting Started 32 | 33 | To get a local copy up and running follow these simple steps. 34 | 35 | ## Prerequisites 36 | 37 | This is an example of how to list things you need to use the software and how to install them. 38 | 39 | - npm 40 | 41 | ```sh 42 | npm install npm@latest -g 43 | ``` 44 | 45 | ## Installation 46 | 47 | 1. Clone the repo 48 | 49 | ```sh 50 | git clone https://github.com/wx-chevalier/repo.git 51 | ``` 52 | 53 | 2. Install NPM packages 54 | 55 | ```sh 56 | npm install 57 | ``` 58 | 59 | 60 | 61 | ## Usage 62 | 63 | Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources. 64 | 65 | _For more examples, please refer to the [Documentation](https://example.com)_ 66 | 67 | # About 68 | 69 | 70 | 71 | ## Roadmap 72 | 73 | See the [open issues](https://github.com/wx-chevalier/repo/issues) for a list of proposed features (and known issues). 74 | 75 | 76 | 77 | ## Contributing 78 | 79 | Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. 80 | 81 | 1. Fork the Project 82 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 83 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 84 | 4. Push to the Branch (`git push origin feature/AmazingFeature`) 85 | 5. Open a Pull Request 86 | 87 | 88 | 89 | ## License 90 | 91 | Distributed under the MIT License. See `LICENSE` for more information. 92 | 93 | 94 | 95 | ## Acknowledgements 96 | 97 | - [Awesome-Lists](https://github.com/wx-chevalier/Awesome-Lists): 📚 Guide to Galaxy, curated, worthy and up-to-date links/reading list for ITCS-Coding/Algorithm/SoftwareArchitecture/AI. 💫 ITCS-编程/算法/软件架构/人工智能等领域的文章/书籍/资料/项目链接精选。 98 | 99 | - [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books): :books: Awesome CS Books/Series(.pdf by git lfs) Warehouse for Geeks, ProgrammingLanguage, SoftwareEngineering, Web, AI, ServerSideApplication, Infrastructure, FE etc. :dizzy: 优秀计算机科学与技术领域相关的书籍归档。 100 | 101 | ## Copyright & More | 延伸阅读 102 | 103 | 笔者所有文章遵循[知识共享 署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh),欢迎转载,尊重版权。您还可以前往 [NGTE Books](https://ng-tech.icu/books/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 104 | 105 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books/) 106 | 107 | 108 | 109 | 110 | [contributors-shield]: https://img.shields.io/github/contributors/wx-chevalier/repo.svg?style=flat-square 111 | [contributors-url]: https://github.com/wx-chevalier/repo/graphs/contributors 112 | [forks-shield]: https://img.shields.io/github/forks/wx-chevalier/repo.svg?style=flat-square 113 | [forks-url]: https://github.com/wx-chevalier/repo/network/members 114 | [stars-shield]: https://img.shields.io/github/stars/wx-chevalier/repo.svg?style=flat-square 115 | [stars-url]: https://github.com/wx-chevalier/repo/stargazers 116 | [issues-shield]: https://img.shields.io/github/issues/wx-chevalier/repo.svg?style=flat-square 117 | [issues-url]: https://github.com/wx-chevalier/repo/issues 118 | [license-shield]: https://img.shields.io/github/license/wx-chevalier/repo.svg?style=flat-square 119 | [license-url]: https://github.com/wx-chevalier/repo/blob/master/LICENSE.txt 120 | -------------------------------------------------------------------------------- /.github/META/README.code.md: -------------------------------------------------------------------------------- 1 | [![Contributors][contributors-shield]][contributors-url] 2 | [![Forks][forks-shield]][forks-url] 3 | [![Stargazers][stars-shield]][stars-url] 4 | [![Issues][issues-shield]][issues-url] 5 | [![MIT License][license-shield]][license-url] 6 | 7 | 8 |
9 |

10 | 11 | Logo 12 | 13 | 14 |

15 | Demo 16 | · 17 | 更多项目 18 | · 19 | 参考资料 20 |

21 |

22 | 23 | 24 | 25 | # Introduction 26 | 27 | [![Product Name Screen Shot](https://s2.ax1x.com/2020/01/06/lr2YdJ.md.png)](https://example.com) 28 | 29 | Here's a blank template to get started: 30 | **To avoid retyping too much info. Do a search and replace with your text editor for the following:** 31 | `wx-chevalier`, `repo`, `twitter_handle`, `email` 32 | 33 | ## Nav | 导航 34 | 35 | # Getting Started 36 | 37 | To get a local copy up and running follow these simple steps. 38 | 39 | ## Prerequisites 40 | 41 | This is an example of how to list things you need to use the software and how to install them. 42 | 43 | - npm 44 | 45 | ```sh 46 | npm install npm@latest -g 47 | ``` 48 | 49 | ## Installation 50 | 51 | 1. Clone the repo 52 | 53 | ```sh 54 | git clone https://github.com/wx-chevalier/repo.git 55 | ``` 56 | 57 | 2. Install NPM packages 58 | 59 | ```sh 60 | npm install 61 | ``` 62 | 63 | 64 | 65 | ## Usage 66 | 67 | Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources. 68 | 69 | _For more examples, please refer to the [Documentation](https://example.com)_ 70 | 71 | # About 72 | 73 | 74 | 75 | ## Roadmap 76 | 77 | See the [open issues](https://github.com/wx-chevalier/repo/issues) for a list of proposed features (and known issues). 78 | 79 | 80 | 81 | ## Contributing 82 | 83 | Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. 84 | 85 | 1. Fork the Project 86 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 87 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 88 | 4. Push to the Branch (`git push origin feature/AmazingFeature`) 89 | 5. Open a Pull Request 90 | 91 | 92 | 93 | ## License 94 | 95 | Distributed under the MIT License. See `LICENSE` for more information. 96 | 97 | 98 | 99 | ## Acknowledgements 100 | 101 | - [Awesome-Lists](https://github.com/wx-chevalier/Awesome-Lists): 📚 Guide to Galaxy, curated, worthy and up-to-date links/reading list for ITCS-Coding/Algorithm/SoftwareArchitecture/AI. 💫 ITCS-编程/算法/软件架构/人工智能等领域的文章/书籍/资料/项目链接精选。 102 | 103 | - [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books): :books: Awesome CS Books/Series(.pdf by git lfs) Warehouse for Geeks, ProgrammingLanguage, SoftwareEngineering, Web, AI, ServerSideApplication, Infrastructure, FE etc. :dizzy: 优秀计算机科学与技术领域相关的书籍归档。 104 | 105 | ## Copyright & More | 延伸阅读 106 | 107 | 笔者所有文章遵循[知识共享 署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh),欢迎转载,尊重版权。您还可以前往 [NGTE Books](https://ng-tech.icu/books/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 108 | 109 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books/) 110 | 111 | 112 | 113 | 114 | [contributors-shield]: https://img.shields.io/github/contributors/wx-chevalier/repo.svg?style=flat-square 115 | [contributors-url]: https://github.com/wx-chevalier/repo/graphs/contributors 116 | [forks-shield]: https://img.shields.io/github/forks/wx-chevalier/repo.svg?style=flat-square 117 | [forks-url]: https://github.com/wx-chevalier/repo/network/members 118 | [stars-shield]: https://img.shields.io/github/stars/wx-chevalier/repo.svg?style=flat-square 119 | [stars-url]: https://github.com/wx-chevalier/repo/stargazers 120 | [issues-shield]: https://img.shields.io/github/issues/wx-chevalier/repo.svg?style=flat-square 121 | [issues-url]: https://github.com/wx-chevalier/repo/issues 122 | [license-shield]: https://img.shields.io/github/license/wx-chevalier/repo.svg?style=flat-square 123 | [license-url]: https://github.com/wx-chevalier/repo/blob/master/LICENSE.txt 124 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2016/2016~我的技术之路与知识体系.md: -------------------------------------------------------------------------------- 1 | # 2016- 我的技术之路与知识体系 2 | 3 | ![](https://camo.githubusercontent.com/1a7ddd081e0fcc80e7acf9ed04c5705f2028862c/68747470733a2f2f636f64696e672e6e65742f752f686f7465616d2f702f43616368652f6769742f7261772f6d61737465722f323031362f31302f332f312d6d44523069425643615f7a3750655a6864595a7859512e6a706567) 4 | 5 | 去年年底,笔者发表了一篇[我的编程之路:知识管理与知识体系](https://segmentfault.com/a/1190000004612590),是我那时对于技术体系的认知。在即将过去的 2016 年中我参与到了更多的实践当中,特别是在 Web 前端开发领域更深入了几分。触类旁通,举一反三,在整个软件编程体系内的各个知识都可以相互印证。技术分为术与道两者,术即是具体的做事的方法,而道则是做事的逻辑抽象的原则与原理。一味地追求术的人往往都是希望走捷径,不求甚解的。而道之所求也是符合一万小时原理,需要大量的付出与总结。不过平心而论,很多初学者是务必从道学起,笔者今年也带了很多的新人,发现绝大部分人还是学过的知识忘了,写过的代码没了,前行的速度抵不上时间的流逝。本文的立意还是希望以一家之言勾勒出灿烂星空,辅你打造知识海洋里的一叶扁舟。 6 | 7 | > 知识应该放在它应该在的地方:王下邀月熊 8 | 9 | # 技术纵览 10 | 11 | 欲穷千里目,更上一层楼,首先我们需要高屋建瓴,先看下软件世界的版图是何样的,更多信息参阅[技术体系概览思维脑图](https://www.processon.com/view/link/58593ea3e4b0db9f2e1407bb)。 12 | 13 | ## 延伸阅读 14 | 15 | - [如何成为一名优秀的软件工程师](https://github.com/wx-chevalier/Coder-Knowledge-Graph/blob/master/how-to-be-a-successful-software-engineer.md) 16 | 17 | - [王下邀月熊的 2016 上半年博客精选](https://segmentfault.com/a/1190000006017467) 18 | 19 | # ProgrammingLanguage:编程语言 20 | 21 | 学习一门语言最痛苦的反而是大量的细节语法,譬如字符串截取、数组或者字典类型的索引之类的。下面要进行讨论的一些语法特性是目前流行的一些语言的总结,可能有些语言尚不支持部分特性,但是要么有些第三方库进行辅助,要么会在未来的版本中添加如下特性。更多信息参阅[编程语言知识要点思维脑图](https://www.processon.com/view/link/5858d52ce4b0f767285df0b0)。 22 | 23 | ## 延伸阅读 24 | 25 | - [我应该从哪一门编程语言上车 ?](https://segmentfault.com/a/1190000007398287) 26 | 27 | # CoderEssentials:编程基础 28 | 29 | 在学习完编程语言之后,我们需要了解编程基础知识。更多信息参阅[编程基础思维脑图](https://www.processon.com/view/link/5858f45be4b0db9f2e0e7ee4)。 30 | 31 | ## 延伸阅读 32 | 33 | - [程序员必备编程基础](https://github.com/wx-chevalier/Coder-Essentials) 34 | 35 | # Client:泛客户端开发要点 36 | 37 | 本部分是泛客户端开发要点,笔者对于之前 iOS/Android/Web/ReactNative/Weex 中通用知识点进行了归纳。更多信息参阅[泛客户端开发要点思维脑图](https://www.processon.com/view/link/5858fa8fe4b0db9f2e0f548e)。 38 | 39 | ## 延伸阅读 40 | 41 | - [GUI 应用程序架构的十年变迁 :MVC,MVP,MVVM,Unidirectional,Clean](https://segmentfault.com/a/1190000006016817) 42 | 43 | - [iOS 入门与工程实践](https://github.com/wx-chevalier/iOS-Introduction-And-Best-Practices) 44 | 45 | - [Java 入门与工程实践](https://github.com/wx-chevalier/Java-Introduction-And-Best-Practices) 46 | 47 | # Web Frontend:Web 前端 48 | 49 | 本部分是笔者的 Web 前端开发知识纲要总结,更多信息参阅[Web 前端思维脑图](https://www.processon.com/view/link/5858cab0e4b04ce387a7cb53)。 50 | 51 | ## 延伸阅读 52 | 53 | - [Web 前端从入门菜鸟到实践老司机所需要的资料与指南合集](https://segmentfault.com/a/1190000007611188) 54 | 55 | - [Web 前端入门与最佳实践](https://github.com/wx-chevalier/Web-Frontend-Introduction-And-Best-Practices) 56 | 57 | - [2015- 我的前端之路:数据流驱动的界面](https://segmentfault.com/a/1190000004292245) 58 | 59 | # ServerSideApplication:服务端应用程序架构 60 | 61 | 本部分是笔者的服务端应用程序架构知识纲要总结,更多信息参阅[服务端应用程序架构思维脑图](https://www.processon.com/view/link/5858fa40e4b0f767286314f3)。 62 | 63 | ## 延伸阅读 64 | 65 | - [服务端应用程序入门与实践](https://github.com/wx-chevalier/ServerSideApplication-Introduction-And-Practices) 66 | 67 | - [SpringMVC 入门与工程实践](https://github.com/wx-chevalier/SpringMVC-Introduction-And-Best-Practices) 68 | 69 | - [基于对资源配置动态生成 API 并进行权限审查的平台](https://github.com/wx-chevalier/ConfigurableAPIServer) 70 | 71 | # DataScience:数据科学与机器学习 72 | 73 | 笔者只是菜鸟一枚,本部分只是笔者暂时的总结,更多信息参阅[数据科学与机器学习思维脑图](https://www.processon.com/view/link/5858d6a1e4b0c1fa6c6ebdf8)。 74 | 75 | ## 延伸阅读 76 | 77 | - [程序猿的数据科学与机器学习实战手册](https://github.com/wx-chevalier/DataScience-And-MachineLearning-Handbook-For-Coders) 78 | 79 | - [面向程序猿的数据科学与机器学习知识体系及资料合集](https://github.com/wx-chevalier/DataScience-And-MachineLearning-Handbook-For-Coders/DataScience-List) 80 | 81 | - [数据科学与机器学习导论](https://segmentfault.com/a/1190000005801260) 82 | 83 | - [深度学习带来的变革:深度学习的十个典型应用](https://segmentfault.com/a/1190000007391860) 84 | 85 | - [基础深度学习概念备忘录](https://zhuanlan.zhihu.com/p/24436419) 86 | 87 | - [有趣的机器学习概念纵览:从多元拟合,神经网络到深度学习,给每个感兴趣的人](https://segmentfault.com/a/1190000005746236) 88 | 89 | # Infrastructure:基础架构 90 | 91 | 本部分关注服务端中的基础架构部分,更多信息参阅[基础架构思维脑图](https://www.processon.com/view/link/5858fb18e4b0f76728632fd4)。 92 | 93 | ## 延伸阅读 94 | 95 | - [Apache 流处理框架详细对比](https://segmentfault.com/a/1190000004593949) 96 | 97 | # InformationSecurity:信息安全 98 | 99 | 本部分关注信息安全相关知识体系,更多信息参阅[信息安全思维脑图](https://www.processon.com/view/link/5858f77fe4b0f7672862b84f)。 100 | 101 | ## 延伸阅读 102 | 103 | - [信息安全实战](https://github.com/wx-chevalier/InfoSecurity-In-Action) 104 | 105 | - [Web 应用安全基础](https://github.com/wx-chevalier/InfoSecurity-In-Action/blob/master/Reinforce/WebSecurity/basics-of-web-application-security.md) 106 | 107 | - [Awesome-Hacking](https://github.com/Hack-with-Github/Awesome-Hacking#awesome-fuzzing): 一系列对于 Hack 安全资料的搜集 108 | 109 | - [国外最佳互联网安全博客 TOP 30](https://jaq.alibaba.com/community/art/show?articleid=601&f=tt) 110 | 111 | - [The Social-Engineer Toolkit ](https://github.com/trustedsec/social-engineer-toolkit): 一系列仅用于测试用途的社会工程工具 112 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/十年铲码.md: -------------------------------------------------------------------------------- 1 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230304111036.png) 2 | 3 | # 十年铲码,八大体系超千篇数百万字技术笔记系列汇总(GitBook 悦享版) 4 | 5 | 十年铲码两茫茫,纵思量,却易忘;不觉笔者步入程序员已有十年。十年里一直浮沉沉沉沉,愈深入,愈觉得世界之大,宇宙浩瀚。十年之期,正巧笔者从阿里离开,重回 3D 打印制造业的怀抱,希望能依托于设备优势逐步、真正构建分布式制造网络。十年里,笔者从最初的自我摸索、摔爬滚打,到进入华为、阿里这样的大厂,不断地完善对于完整的技术世界观的理解,并且尝试对于自我产品意识的启蒙。 6 | 7 | 十年里,学的也很多,忘的也很多,如今发现自己还是在许多技术的门槛处徘徊。从小愚钝,只能以笔代记,以勤补茁。洋洋洒洒百万字,数十万行垃圾代码,也是笔者存在过的痕迹。同时也是借此文对过去几年里的 TL(@Henry https://github.com/mjolnirjs)和小伙伴表示感谢,让我不断地体悟什么是以客户/用户为中心,将技术产品化,慢慢褪去过去的纯技术导向的思维。人生有幸,与有趣的人,做有趣的事,下一个三年,依旧江湖再见。 8 | 9 | # 文章指北 10 | 11 | 在这个知识大爆发的时代,笔者所见许多人面临的问题不再是知识的匮乏,也不是缺乏学习的动力、毅力或激情,而是在浩汤洪流之中迷失了方向,也无足够的承载知识的容器,终致学的越多,忘的越多,竹篮打水一场空。[某熊的技术之路](https://github.com/wx-chevalier)系列文章/书籍/视频/代码即是笔者为自己构建的**知识围栏**,也是笔者蹒跚行进于这条路上的点滴印记,包含了笔者作为程序员的技术视野、知识管理与职业规划,致力于提升开发者的学习效率与实际研发效能。 12 | 13 | 目前笔者已有数十仓库千篇文章百万字,你可以在[某熊的技术之路指北 ☯](https://github.com/wx-chevalier/Developer-Zero-To-Mastery)查阅详细的导航。可以前往 [Awesome Lists](https://ngte-al.gitbook.io/i/) 或者 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 查阅分门别类的资料与书籍,抑或前往 [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) 查阅完整的知识体系、脉络与要点的脑图,或者 [Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps) 了解不同技术领域的进阶指南。最后,你还可以前往 [Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews) 做最后面试前的准备,或者用常见的技术面试题去检验自己学习的结果。 14 | 15 | [![技术视野](https://s3.ax1x.com/2021/02/21/yTSKdH.png)](https://github.com/wx-chevalier/Awesome-MindMaps) 16 | 17 | 您还可以前往 [NGTE Books](https://ng-tech.icu/books-gallery/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 18 | 19 | [![NGTE Books](https://s2.ax1x.com/2020/01/18/19uXtI.png)](https://ng-tech.icu/books-gallery/) 20 | 21 | # Awesome MindMaps 22 | 23 | [Awesome ITCS MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) 是笔者所有系列文章、代码、项目中的知识系统的脑图形式的总结: 24 | 25 | - 知识脉络 26 | 27 | ![知识脉络](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230416202635.png) 28 | 29 | - 知识要点 30 | 31 | ![知识要点](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230416202703.png) 32 | 33 | # Awesome RoadMaps 34 | 35 | 当我们站在技术之路的原点,未来可能充满了迷茫,也存在着很多不同的可能;我们可能成为 **Web/(大)前端/终端工程师、服务端架构工程师、测试/运维/安全工程师等质量保障、可用性保障相关的工程师、大数据/云计算/虚拟化工程师、算法工程师、产品经理**等等某个或者某几个角色。在这个知识爆炸与终身学习/碎片化学习为主的时代,我们面临的问题之一就是如何进行有效学习,不仅能有效平衡广度与深度,并且能真正的积淀下来,提升自己的研发效能。于笔者而言,常常郁结于胸的就是以下三个问题: 36 | 37 | - 应该学习什么?这是怎样的一个技术世界?存在着怎样的高峰与路径? 38 | - 如何克服遗忘带来的无效学习? 39 | - 如何不再碎片化地学习? 40 | 41 | 究其根本,也就是需要拓展自己的**知识广度**,精进自己的**知识深度**,锤炼自己的**编程能力**。所谓知识广度,即是为实际问题选择合适的解决方案的能力,广义来说也是眼界与格局的表现。它并不拘泥于某个技术方向或者行业领域,而需要对传统/流行的各类语言、工具、框架、库、服务等有一定的认识;能够明晰各个方案的优劣,并在较高的层次(High Level)描述相关原理。知识广度的拓展与保持需要建立在庞大的阅读量与知识沉淀能力上。在[能力模型](https://github.com/wx-chevalier/Awesome-RoadMaps/blob/master/%E6%8A%80%E6%9C%AF%E4%B9%8B%E5%A4%96/%E8%83%BD%E5%8A%9B%E6%A8%A1%E5%9E%8B.md)一节中,我们从业务、团队、技术这三个维度,对技术人员的五个层次进行了梳理: 42 | 43 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230416203710.png) 44 | 45 | [Awesome Lists](https://github.com/wx-chevalier/Awesome-Lists) 就为我们准备了精而全的技术开发学习与实践资料索引,去芜存菁,去重留一;譬如其中的 [Awesome WebSites](https://github.com/wx-chevalier/Awesome-Lists/blob/master/Specials/Awesome-WebSites.md) 一文就为我们推荐了值得阅读的资讯、博客等站点列表。知识广度的拓展也并非一蹴而就之事,需得循序渐进,从初窥门径,到登堂入室,最后融会贯通,当我们感觉乱花渐欲迷人眼,太多的碎片化知识反而使自己迷失方向之际,就可以前往 [Awesome CS Books Warehouse](https://github.com/wx-chevalier/Awesome-CS-Books),去深入地阅读学习各个领域的精选书籍、课程等系统化的内容。 46 | 47 | 俗话说,好记性不如烂笔头,当我们阅读的多了,自然也要开始记录;而笔者认为记录的开始就要有自己的知识体系。在自己的知识体系下随看随记、定期整理。唯有建立符合自己认知方式的知识图谱,才能有效地沉淀知识,明晰知识边界并进行不断地探索。上车伊始,笔者即致力于构建自己的 [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps),提供了软件工程通用、前端、后端、DevOps、测试、架构师、人工智能工程师等多领域的知识图谱、学习成长路线与面试必备内容,并在数年来不断维护与刷新。 48 | 49 | 笔者目前选择的是以 MarkDown 格式记录,并且将所有的笔记存放于 [Github-文档札记](https://github.com/topics/wx-doc)以 Git 方式进行版本管理;编辑器是直接使用的 VSCode,移动端编辑的话也是用的 GitGo/WorkCopy 这样的 Git 应用。这些笔记即是笔者自身技术视野与认知的外化,也类比于外设之于内存,在需要的时候分页加载到脑海中使用,以应对这知识爆炸的时代。其中的典型代表,[Awesome CheatSheets](https://github.com/wx-chevalier/Awesome-CheatSheets),对于日常开发中用到的相关知识的备忘录/清单进行总结, 适合快速掌握或者回顾某个语言/框架/工具的语法或使用要点。[Tech Road, 我的技术之路](https://github.com/wx-chevalier/Developer-Zero-To-Mastery/blob/master/技术之路)是对于笔者多年学习与认知变迁的总结。 50 | 51 | 先贤有云,知行合一,知是行之始,行是知之成,Linus Torvalds 也曾提到:'Talk is cheap. Show me the code.',在阅读与笔记之后,就是要开始实践编码。所谓编程能力,并不仅仅是编写代码(Write Code)的能力,而是包含了阅读、编写、理解、重构、抽象等多个方面,是所谓的代码管理/掌控。其外在表现之一即是能够随时随地用合适的语言无阻塞地实现某些功能需求,对于常见的语法,接口,算法,设计模式等能够做到心随意动,信手拈来。编程能力是提升研发效能的重要保障,于笔者而言也是毕生应该追求的目标与爱好之一。笔者的编程能力较弱,日常开发,特别是在多语言多框架并用的场景下,往往会需要不断地中断,查找以继续工作,也是令我颇为苦恼。[Coding Snippets](https://github.com/topics/wx-snippets) 系列仓库,即是对笔者在编程语言、前后端编码过程中常用的模板、模式等代码片、工具库的汇聚。 52 | 53 | 前文重在讨论如何拓宽技术视野、追寻技术的广度,但是需要铭记的是,技术深度才是技术广度的基石,正如中国自古以来常用道术之辩,知其然,也要知其所以然;亦如 Richard Feynman 所述:”What I cannot create, I do not understand.”。所谓知识深度,即是能够对某个方面做到深入了解,并且达到融会贯通,洞若观火,可以随心所欲地加以扩展、优化、创新等改造或变换。这方面则更加的见仁见智,不同的领域与方向对于深度的定义与挖掘方向也是千差万别。[Reinvent Wheels](https://github.com/topics/wx-code) 系列仓库即是笔者在前后端到基础架构中重造的轮子的汇总。 54 | 55 | 我们需要自己去从零开始造些轮子,才能深刻理解使用的框架/库/平台的内部原理,才能在碰到故障时快速地修复;在下文的几乎每个章节中,我们都会提到某些笔者自造的轮子。笔者目前将所有的文档归类到了不同的系列中,每个系列又分为 篇-章-节-小节 这样的层次结构。 56 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2015/熊写代码这三年: 阅读写作与技术成长.md: -------------------------------------------------------------------------------- 1 | > 本文是非技术向的随笔,慎点! 2 | 3 | - [熊写代码这三年:阅读写作与技术成长](https://zhuanlan.zhihu.com/p/25191664) 从属于 [程序熊的自我修养](https://github.com/wx-chevalier/Coder-Knowledge-Graph/tree/master/I-AM-Coder)系列。临近毕业,随手写了篇随笔,聊以纪念我过去研究生三年间的技术之路,感谢陪伴我这三年的家人,感谢所有陪我一起打拼过的战友,感谢所有阅读过我文章的陌生人。 4 | 5 | 本文是一篇种田流水文,希望以平淡的笔触记录笔者这三年的成长。本文整体大概会包括自我定位、阅读、写作、知识殿堂这几个部分,为了避免过于正式就不分章节了。 6 | 7 | 笔者的第一份工作从大三开始,在南京某家安全公司从事安全培训与渗透平台开发,兼职做做讲师;老实说肚子里没几滴墨水却要对着台下数百听众,搜肠刮肚地忽悠他们,很锻炼面皮啊。后来某个来头不小的二代找我说一起创业吧,他想颠覆世界,问我敢不敢一起。于是我就拉着身边的兄弟走了出来,很感谢我的两个舍友那些年里给我的支持与包容,容忍了我做的那些傻逼的事情。现在想起来,我还挺佩服 CEO 勇气的,竟敢找我来创业,真的是年轻啊。那个时候经常逛的是以 DZone 为代表的这类网站,并非说它们不好,不过确实太多的标题党,动辄新一代产品或者性能提升 100%。那时的我太过年轻,才从农村出来尚不知城市套路深,轻信了这些标题党,当然根本原因还是我们毫无经验,结果两个月的时间开发出来的 Hybrid APP 启动时间 20 多秒;当时我还一脸无法理解为什么 CEO 会露出绝望的眼神,毕竟之前参加某软件大赛的作品启动要将近两分钟还得到了好评。经历了技术波折之后我们老老实实回到了原生开发,接下来的一年多时间我技术上不一定成长多少,市面却是见了不少,充分认识到关系不是万能的、产品经理是必须的、需求是不能随便变的、领导的话是不能轻易相信的等等等等。后来,公司黄了,一分钱没赚到。后来,我参与到其他的创业当中,满怀热情,也看着那些年的冬日里熄灭的火苗。次数多了,也就不会痛了,印象比较深刻地还参与过某在线婚庆创业,某 3D 打印创业等等,直至现在有时候会去妹子所在的某建筑行业软件服务公司帮帮忙。如今公司招人,我引以为豪地能拿出来讲夸公司的一大优点就是,我们公司有稳定收入,不会吃了上顿没下顿,不会一朝入冬。想想走过的路,有两个自己打自己脸啪啪响的典型,一个是大二的时候推崇底层开发,裸写机器码,觉得 Web 不过是套模板的毫无前途的活计;另一个是跟运营商接触多了觉得传统软件行业里都是观念陈旧的老技术、毫无创新理念与创新动力。然后我现在主要依托于 Web 技术栈,在于政府合作的建筑投标软件行业里混饭吃。这三年走过大江南北,到过万里之外,见过异域风情,写过数百万字,赚到数十万元。印象最深的是爱人相伴,友人相随,笑过哭过,也有后悔。 8 | 9 | 笔者啰啰嗦嗦这么多,想表述的不过是认识你自己。天地不仁,万物刍狗,我们要相信勤奋是会有回报的;念念不忘,必有回响,连机器都能通过大量学习优化模型,何况智人乎?笔者是早产儿,七个月的时候出生,差一点就不能跟这个世界说你好。从小略显愚笨,弱于常人,就像笔者对于数学心有畏惧,这么些年一直没学好算法结构与机器学习。笔者也没有过人的毅力与执着的态度,到现在也没能真正的好好锻炼过,也没能如预期般学完一个课程或者看完一本书。更多的时候我是想着怎么跟自己妥协,寻找到真正能够完成的,精神与肉体上都能接受的方案。另外在将技术相关的东西之前,笔者还是希望读者能认清自己的定位,不是说一定要怀着莫大的热情才能进入 IT 领域,而是尽可能地找到自己的定位。我觉得很好的例子就是我夫人,当年也是在某外包公司做嵌入式码农,每天工作都是痛苦万分;后来慢慢地摸索,发掘了她某个最大的优势:以轻微的强迫症去做产品经理,女生特有的细心与品质决定了她能更好地去催促程序员赶进度。现在她同时实现了自我价值与集体价值,成为了公司运转的核心之一。知前路之漫漫,敢披荆而斩棘,相信大家都能找到合适自己的位置。 10 | 11 | 化学中的放射性元素往往有所谓半衰期的概念,即某种特定物质的浓度经过某种反应降低到剩下初始时一半所消耗的时间。同理,知识的半衰期则是用于衡量知识的价值随着时间流逝它消失的速度。相对变更较慢的医学知识的半衰期约 45 年,物理学知识的半衰期是 10 年,而计算机知识的半衰期可能只有两年,一直在激烈变化的互联网领域知识可能只有几个月。沉舟侧畔千帆过,就像笔者在[怀着被抛弃的恐惧在奋斗中前行](https://zhuanlan.zhihu.com/p/25435411)描述的,鱼与熊掌不可兼得,放弃安逸的铁饭碗而进入竞争激烈的 IT 行业,势必会被后来者超越的,我们只有不断修修打打自己,才能不被这个时代所抛弃。古语有云,开卷有益,对于笔者的阅读相关可以参考[某熊的阅读与写作日常](https://zhuanlan.zhihu.com/p/25191664) ,这里不作赘述。不过回望自己的阅读流程,我最初是从刷推酷的每日推荐开始,大概每天能看数百篇,选出有价值的放到 Pocket 里面留待后看。后来慢慢的发现每天刷的列表里面仅有两三篇会被留存下来,慢慢的就转向了 Reddit、HackerNews、Medium 这些;老实说笔者并非崇洋媚外,不过目前来看中国的社区相对整个世界还是一汪浅水,所以我默默地把公司默认搜索引擎设置成了 Google。在成长之初碎片化的阅读很有益处,虽然会感觉很痛苦,仿佛被强行填食的鸭子,但是如破茧而出,帮你打开广阔的世界。笔者现在逐步的有强迫自己去看书,虽然有时候跟看文章一样一目十行,蜻蜓点水,但是不得不承认书和论文里成体系的描述介绍不是碎片化的文章所能给予的。这里推荐笔者前一阵子收集的[追求技术之上的进阶阅读学习索引](https://zhuanlan.zhihu.com/p/25642783)与[机器学习、深度学习与自然语言处理领域推荐的书籍列表](https://zhuanlan.zhihu.com/p/25612011)。 12 | 13 | 文以载道,歌以咏志。当我们阅读积累到了,自然就会形成自己的想法,并且想对这个世界说出来。笔者的写作分为两步,首先是做笔记,而后是写文章,厚积薄发,切不能强求。笔者最初做笔记的时候,很多朋友会质疑,记录的笔记真的会去看吗?是不是记录之后就能记住了?答案自然是否定的,笔者一直以来鼓励自己做笔记的动力并不是让自己不会遗忘,而是希望在下一次需要的时候能够以最快的速度学习让自己回忆起之前的东西。笔者发现身边很多人的学习能力并不弱,但是技术能力难以进步突破的问题却是在于永远都在重复学习,譬如笔者团队中秉持岗位轮换的原则,可能做几个月的服务端再轮换做一些简单的前端,但是每次都需要重新学习,看不出什么进步。罗曼罗兰说过,多数人二十或三十多岁已经死了,他们变成自己的影子,不断重复以前的自己。有时候我们的笔记会是我们生命存在的痕迹,让你能够记得自己走过的路,踩过的坑。笔者现在大概分门别类地有两千多篇笔记,断断续续地写了二百多篇文章;并不是说没有积累就不能写作,而是你没有积累很难去进行长时间的持续地写作。写文章本身不仅是让你的思想曝光于世,让别人帮你发现自己的不足;还是很好的打造个人品牌,增加自己社区影响力的好方法。 14 | 15 | 如果你是前端新人或者技术新人,很建议从尝试翻译开始;InfoQ 网站包括其架构师月刊等一直是我认为国内质量比较高的资讯来源之一,年后也有幸成为了其社区编辑。我发现他们有个很不错的任务领取与报酬机制,如果你希望相互督促,也能转点零花钱,那么可以尝试加入这个大社区,跟着大家一起前行。 16 | 17 | 记得包法利夫人里面有一句总结,浅薄且不甘平庸是最大的原罪;而在技术之路上,在没有知识体系的情况下,学习的知识都是相互独立,难以互相借鉴,举一反三,阅读也不过是春风拂面,一掠而过,不留痕迹,知识也就难以真正的沉淀下来。笔者非常支持认可碎片化学习的思想,但是否定在没有知识体系的情况下盲目的碎片化学习。特别是对于尚未建立基础知识体系与认知能力的同学,如果突发性地吸收过多的知识,反而会摧毁自己的认知能力。就好像传说中的吸星大法,乱吸的后果就是体内真气斑驳不堪,最终走火入魔,爆体而亡。因此我们必须要建立自己的知识体系与思维宫殿,梭罗在《瓦尔登湖》中写道:知道自己知道什么,也知道自己不知道什么,这就是真正的知识。知我所知是对于自己能力的正确认识,知我所不知则能为自己未来的路明确些方向。笔者关于自己的对于软件世界的认知写在了[2016~我的技术之路:编程知识体系结构图](https://zhuanlan.zhihu.com/p/24476917)里。Program into Your Language, Not in It. 18 | 19 | 前端工程化这个词一直很火,笔者在[2016~我的前端之路:工具化与工程化](https://zhuanlan.zhihu.com/p/24575395)、[2015-我的前端之路:数据流驱动的界面](https://segmentfault.com/a/1190000004292245) 这两篇年度总结里都有详细的不成熟的自我思想的介绍。记得面试腾讯的时候面试官问道你这么激进地使用现代语法,使用 Babel 然后导致包体增倍怎么能兼顾老旧浏览器或者带宽上不是很好的地方的用户呢?我默默想起了现在公司碰到的一个有趣的事件,我们做的某个投标工具(Web & Electron)对于浏览器或者系统有较高要求,但是政府客户典型的标配 XP 与 IE。我们思考了好久如何去达成兼容性,最后欧了一波笔记本电脑跟软件产品打包发售,还额外赚了一笔的说。工程做久了,有时候会发现自己陷入到某种瓶颈。本节可能过于主观了,对于我们所熟知的云计算与大数据、服务端应用程序架构(API、微服务与高可用等)、基础架构(数据存储、虚拟化、分布式系统与集群计算等)等等偏工程的进阶之路,老实说并不是螺丝钉们所能轻易实践的。笔者之前一直感慨于混迹在小公司之间,所谓大数据不过镜花水月,很难真正有实践的场景。除了工程向的进阶之外,笔者个人主观感觉还有两个偏理论的进阶向,即使不能有所实际成就也能提升个人品味的方向,一个是偏向于数据学科与人工智能,包括机器学习、深度学习、自然语言处理等等;另一个是偏向编程语言原理、计算机系统基础理论、数据库系统基础理论的方向。笔者本科的时候发了四五篇文章,遗憾的是在南大的三年未能投身学术,一文未发,愧对师长。有时候看着其他同学仰望星空,自己只能默默在沼泽地里蹒跚前行。 20 | 21 | 本文最后,笔者还是想对于所有阅读过我的文章的朋友说声谢谢,你们的支持是我前行的动力,希望在未来的岁月里我能够继续完善我的知识体系中的内容,也希望能够帮助到所有花时间阅读我文章的人。诚如罗胖所说,未来的世界是时间的战场,愿意花时间阅读的朋友本身也是一种付出。笔者这些年来一直笔耕不缀,不过写的绝大部分都是属于某个领域中某个技术细节的介绍与实践总结,借这篇随笔之际,笔者也是打算以随笔的方式,描述自己对于编程的认知、感悟、猜想,因为这个系列更多的是非技术性的思考,希望能得到真正的大家指导,与其他人思维碰撞。笔者不敢取名为程序员的自我修养,毕竟笔者自己都不知道自己是否称得上合格的程序员,因此取名为程序熊的自我修养。【[程序熊的自我修养](http://6me.us/JltQ8)】系列拟会包含以下部分: 22 | 23 | - 【程序熊的自我修养】知识体系与自我定位 24 | 25 | - 【程序熊的自我修养】阅读与积累 26 | 27 | - 【程序熊的自我修养】工具与实战 28 | 29 | - 【程序熊的自我修养】产品与工程化 30 | 31 | - 【程序熊的自我修养】编程之道:编程语言、数据结构与算法、编程范式 32 | 33 | - 【程序熊的自我修养】Web 前端 34 | 35 | - 【程序熊的自我修养】服务端应用程序架构 36 | 37 | - 【程序熊的自我修养】数据科学与人工智能 38 | -------------------------------------------------------------------------------- /02~月熊的职业道路/2019~联泰/打印服务调研.md: -------------------------------------------------------------------------------- 1 | # 打印服务客户调研 2 | 3 | 我已全面分析了您提供的邮件内容,以下是详细的分析报告和营销建议。 4 | 5 | ### **核心客户痛点与问题分析 (Top 5)** 6 | 7 | 通过对邮件的整体分析,客户的咨询和疑虑主要集中在以下五个方面,这些是您营销内容应该重点解决的“痛点”。 8 | 9 | #### **1. 价格与成本的不确定性 (Pricing & Cost Uncertainty)** 10 | 11 | 这是所有邮件中出现频率最高、最核心的问题。客户在做决策前,对价格极度敏感和关注。 12 | 13 | - **具体表现:** 14 | 15 | - 直接询价 (RFQ, Request for Quotation) 是最常见的邮件主题。 16 | - 关心性价比,如邮件中提到 `“This OFFER is well above market costs”`,表明客户会进行比价。 17 | - 希望降低成本,如 `“Can you give us a solution to reduce this offer considerably?”` 以及对中空设计(hollow inside)的询问。 18 | - 对最终费用构成不清晰,如对运费、增值税(VAT)的疑问。 19 | - 关心批量折扣,如 `“Please quote for 1, 3, & 5 pieces of each for now.”` 20 | 21 | - **客户心理:** 客户希望获得**快速、透明、有竞争力**的报价。他们不仅想知道“多少钱”,更想知道“为什么是这个价格”,以及“如何能更便宜”。 22 | 23 | #### **2. 技术可行性与设计挑战 (Technical Feasibility & DFM)** 24 | 25 | 客户不确定自己的设计是否能被完美制造出来,这是第二大痛点。 26 | 27 | - **具体表现:** 28 | 29 | - 大型部件的打印方式,如 `“Please can you quote parts in link below, ideally not cutting the parts please.”` 30 | - 对打印细节的担忧,如 `“The logo of the train on the map, the wall thickness is very thin, the printing will be missing, is it acceptable?”` 31 | - 对内部结构的处理,如 `“These parts have to be emptied inside. Can you do hollow inside use 10-15% infill inisde.”` 32 | - 对公差和精度的要求,如 `“I require surfaces that are absolutely smooth, without any printing texture”` 和 `“The flat walls should have no warping effects”`。 33 | 34 | - **客户心理:** 客户需要专业的**“可制造性设计(DFM)”**建议。他们希望供应商是专家,能帮助他们预见并解决设计问题,避免打印失败和成本浪费。 35 | 36 | #### **3. 材料选择的困惑 (Material Selection Confusion)** 37 | 38 | 客户常常不清楚哪种材料最适合他们的应用场景,需要专业指导。 39 | 40 | - **具体表现:** 41 | 42 | - 直接寻求推荐,如 `“Can you recommend a material which can print as one part?”` 43 | - 与已知材料进行对标,如 `“Can you tell me if you have resin as good as RCP30 from Envisiontec?”` 44 | - 根据应用场景描述需求,如 `“is requested by the parts of UAV,drones or robotics.”`,需要耐用、耐高温、抗紫外线等。 45 | - 对材料性能不了解,如 `“I'm not sure if the A60 would be a good choice, but do you think a higher hardness could be better?”` 46 | 47 | - **客户心理:** 客户需要清晰、直观的材料对比和基于真实应用案例的推荐。他们希望供应商能听懂他们的需求,并给出最佳方案。 48 | 49 | #### **4. 流程与物流的透明度 (Process & Logistical Clarity)** 50 | 51 | 从下单到收货的整个流程,客户希望能清晰、可控。 52 | 53 | - **具体表现:** 54 | 55 | - 关心生产周期和交付时间,`“Please provide your best delivery date.”` 56 | - 关心运输方式和成本,`“Transport --- Air for my company with DDU. (Barcelona Airport)”` 57 | - 关心付款条件,如 `“How soon can we be set up for Net 30?”` 58 | - 对合作流程的疑问,如保密协议(NDA)的签署。 59 | 60 | - **客户心理:** 客户寻求的是**可靠和省心**的服务。清晰的流程、可预期的交付时间和便捷的支付方式能极大地增加客户的信任感。 61 | 62 | #### **5. 后处理与外观效果 (Post-Processing & Finishing)** 63 | 64 | 产品的最终外观和质感是客户非常关心的部分,尤其对于展示模型和最终产品。 65 | 66 | - **具体表现:** 67 | 68 | - 对特定后处理工艺的兴趣,如免费的 Vapor Smoothing(蒸汽平滑)服务。 69 | - 对表面效果的明确要求,如 `“polished finish”`、`“anodised black”`、`“wrought iron' effect”`。 70 | - 对颜色和质感的关注,如 `“Material: White Resin”`、`“Finish: Black”`。 71 | 72 | - **客户心理:** 客户希望看到直观的效果展示。他们需要了解不同的后处理能带来什么样的外观和性能提升,以及成本如何。 73 | 74 | --- 75 | 76 | ### **社媒营销内容指导建议** 77 | 78 | 基于以上痛点分析,以下是为您市场部量身定制的社媒内容策略,旨在精准回应客户关切,建立品牌专业形象。 79 | 80 | #### **内容主题一:【成本揭秘】系列 - 解答价格疑虑** 81 | 82 | - **目标:** 建立价格透明度,展示性价比。 83 | - **内容创意:** 84 | 1. **图文/短视频:** 《3D 打印成本是如何计算的?》 - 分解说明材料费、打印时间、后处理、体积、支撑结构等如何影响最终价格。 85 | 2. **案例分析:** 《如何通过优化设计,为您的项目节省 30%成本?》 - 展示一个客户案例,通过 Unionfab 的 DFM 建议(如中空、壁厚调整)成功降低成本。 86 | 3. **优惠活动推广:** 突出 `“50-70% Lower than US and EU suppliers”` 和 `“NO MOQ”` 这两大核心优势。可以制作对比图表,一目了然。 87 | 88 | #### **内容主题二:【打印专家说】系列 - 解决技术难题** 89 | 90 | - **目标:** 塑造 Unionfab 的专家形象,建立技术信任。 91 | - **内容创意:** 92 | 1. **“翻车”到“成功”对比帖:** 展示一个常见的设计错误(如壁厚太薄)导致的打印失败品,和经过优化后的成功打印件。形式可以是图片轮播或短视频。 93 | 2. **技术小贴士 (Pro-Tip):** 《打印大尺寸模型?何时需要拆分?》、《MJF 尼龙打印如何避免翘曲?》、《0.1mm 的细节也能清晰呈现!》 - 制作一系列简短、专业的知识卡片或短视频。 94 | 3. **幕后视频:** 展示工程师如何评审客户图纸,如何进行拆分和拼接,让客户看到 Unionfab 的专业流程。 95 | 96 | #### **内容主题三:【材料选择指南】系列 - 成为客户的材料顾问** 97 | 98 | - **目标:** 帮助客户快速找到合适材料,展示材料库的丰富性。 99 | - **内容创意:** 100 | 1. **材料对决 (Material Showdown):** 《SLS 尼龙 vs. MJF 尼龙:无人机零件怎么选?》、《耐高温树脂大比拼》 - 用表格、视频或图文形式,对比不同材料的关键性能(硬度、韧性、耐温性等)和适用场景。 101 | 2. **“所见即所得”视频:** 拍摄各种材料样件的高清特写视频,展示其真实质感、颜色和柔韧度。 102 | 3. **客户案例故事:** 采访一位客户(如无人机、机器人公司),讲述他们为什么选择了某款特定材料,以及最终产品的使用效果。 103 | 104 | #### **内容主题四:【无忧下单】系列 - 优化服务体验** 105 | 106 | - **目标:** 展示流畅、专业的服务流程,打消跨国合作的顾虑。 107 | - **内容创意:** 108 | 1. **流程图/动画:** 《从上传图纸到全球送达,只需 5 步!》- 清晰展示从询价、审核、生产到交付的全过程。 109 | 2. **服务亮点海报:** 突出 `DDP (Delivered Duty Paid)` 服务,解释这能为客户省去多少清关麻烦。强调支持 `Net 30` 付款方式,展示对 B 端客户的友好。 110 | 3. **客户服务团队展示:** 介绍您的客户成功经理(如 Season, Frank, Daniel 等),附上他们的专业照片和一句服务承诺,增加亲切感和信任度。 111 | 112 | #### **内容主题五:【“美”不胜收】系列 - 展示后处理工艺** 113 | 114 | - **目标:** 直观展示后处理带来的巨大价值,刺激客户对高品质外观的需求。 115 | - **内容创意:** 116 | 1. **“变身”对比视频:** 展示一个刚打印出来的粗糙部件,经过打磨、蒸汽平滑、喷漆等工序后,变成光滑精致成品的“变身”过程。 117 | 2. **效果图库:** 制作高清图集或视频,专门展示不同后处理效果,如“真空电镀的金属光泽”、“蒸汽平滑的丝滑触感”、“尼龙染色的均匀色彩”。 118 | 3. **限时免费活动推广:** 重点宣传 `“FREE Vapor Smoothing for Nylon,ABS parts”` 这类活动,配上效果惊艳的对比图,吸引客户尝试。 119 | 120 | ### **总结与建议** 121 | 122 | 您的客户群体既有经验丰富的项目经理,也有初次接触 3D 打印的创客。营销内容应兼顾**专业深度**与**通俗易懂**。 123 | 124 | - **核心营销信息:** Unionfab 不仅是中国领先的**低成本**制造中心,更是一个能帮助客户解决技术难题、优化设计、选择最佳材料的**专业合作伙伴**。 125 | - **内容形式:** 建议多采用**视频**和**高质量图片**,因为 3D 打印的效果和质感很难用文字完全描述。 126 | - **行动号召 (CTA):** 每个内容都应有明确的行动号召,如“立即获取免费报价”、“上传模型获取免费 DFM 分析”、“联系我们的材料专家”等,引导潜在客户进入销售漏斗。 127 | 128 | 通过系统性地解决这些来自一线的真实痛点,您的社媒营销将不再是泛泛而谈,而是能够直击客户内心,有效建立信任并促进转化。 129 | -------------------------------------------------------------------------------- /02~月熊存在的痕迹/播客/2024.1~小宇宙选题.md: -------------------------------------------------------------------------------- 1 | # 小宇宙选题 2 | 3 | # 2024.1 4 | 5 | ## 房地产政策最新的动向? 6 | 7 | - 各地建立协调机制筛选本地可予融资支持的项目名单 8 | 9 | - 周五晚上住建部和金管局发了一个新文件。大概内容是要求各地建立协调机制筛选本地可予融资支持的项目名单。 10 | - 首先说协调机制就是一个临时成立的小组,这个小组目前明确要由地级市分管地产工作的副市长担任组长,由地方住建部门和银行监管部门派人参加。这种权力格局意味着什么?意味着把银行放贷的责任部分转移出了银行。现在银行不敢放贷的一大原因是金融反腐不断抓人,谁也不敢担责,导致前期各种以银行为决策主体的地产支持政策到了下面根本没人敢执行。这次小组的人员构成说明中央意识到了这个问题,直接把责任方转移到了地方监管部门的头上,某种程度上就是让银行能在这个节骨眼上“少背锅”。这是第一个看点。由副市长牵头还有个好处就是政府这边的利益考虑肯定是希望感觉解决烂尾问题,让经济重新好起来,那么现在把一部分“发货币救地产”的决策权给了地方政府,那能动性肯定不是一般的高。当然,银行这端是否认真执行现在是最大不确定。 11 | 12 | - 第二个看点是这次的“白名单”落地方式是以具体的楼盘项目为单位,而非以地产企业母公司集团为单位,之前白名单实操的一个风险就是如果以地产企业为支持单位,那么母公司拿了钱之后会不会又去拆东墙补西墙,又去乱搞。那么现在这个落地方式便杜绝了这个问题。另一方面也显示出了现在的地产拆雷是精细化运作为导向的精神,由地方政府主导根据每个楼盘的具体情况实现定点风险拆除,这是中央目前最希望能贯彻下来的路线。但这种方式也有一个问题,就是那些上市的母公司主体就得不到什么利好了,而那些上市母公司由大部分在境外发债融资,这样母公司不断爆雷,会对境外投资者形成很大的负面印象,导致外资要一直担心中国会不会爆发地产引起的系统性危机。 13 | 14 | - PSL 15 | 16 | - 2024.01.02 号央行按照惯例公布了每个月抵押补充贷款情况(以下简称“PSL”)。但不同的是,12 月 PSL 新增 3500 亿元。PSL 是什么呢?这个是央行专门借给国开行,口行和农发行三大政策性银行的一种贷款。一般由三大政策性银行专款专用,而“专用”的地方一般都是和房地产有关。这个工具创设于 2014 年,在 2015 年到 17 年实际作用就是给棚改货币化提供资金。 17 | - 这次 PSL 新增 3500 亿,这是一个什么级别信号呢?实际上,自从 18 年初棚改货币化政策结束以来,PSL 余额大部分时间是不增加的,而是一直在消化以前的烂账。从 19 年 4 月份的峰值 3.5 万亿,到上个月下降至 2.9 万亿。期间只有在 22 年封控的 11 月前后出现过一次较大幅度的增长,那次增长可以理解为对冲特殊性因素的结果。实际上,自从 9 月份地产降首付效果不佳以来,关于再出大招救地产的呼声和政治氛围已经越来越浓。其中以央行重启 PSL 支持“三大工程”这个重磅政策为重要期待点之一。最开始有小道消息流传出来时,外部性的听友已经在开始讨论,当时我也认为这个政策最终出台的概率很大,现在则是释放了一个更加明确的信号,未来几个月我们可以继续观察,如果 PSL 单月新增持续超千亿的话,那么发货币支持三大工程的政策就是真正落地了。 18 | - 周末的时候,央行和金管局,连续发文支持住房租赁供给侧改革的信贷支持力度,发放经营性贷款。引导各类资金投资住房租赁领域,很多人都不理解这是要干啥。黄奇帆最近有一段演讲,一下打开了思路。他说现在法拍房太多,全国大概 400 万套,这个会严重影响房价预期,几乎占了全年房地产成交面积的 30%-40%,所以下一步当法拍房价格跌到 60%左右的时候,国家和当地要出手,低价收购这些房子,然后做成保障性住房。这样既能稳定当地的楼市和房价,又能迅速增加保障租赁住房的规模。现在我们只有 5%左右的保障性租赁住房,通过这个手段可以快速提升到 20%。而且这么做,确实政府也不亏,你土地出让金卖了一道,然后又 6 折把现成的房子收回来,也就留足了出租率的空间。也就是说,现在按照市面价格租金回报率,只有 2%。那是没办法买房去出租的,不够资金成本,但是要六折买,租金回报率就有望接近 4%。那么至少政府借款买房,然后出租就没有负担了,未来以租养贷就可以了。当然如果还想再赚点,那就等 5 折再收回来。这也就是黄奇帆判断,到 6 折以下政府一定会出手的原因,因为已经有利可图。 19 | - 上一波棚改货币化去库存,说白了就是把企业的杠杆,加到居民的身上,通过提升居民杠杆率的方式来给房地产去库存,带动经济恢复。但现在,居民已经加不起杠杆了,是不是经济就起不来了呢?并非如此,这次的方式就从居民买房,变成了政府买房 ,通过政府加杠杆的方式,去库存,托底房地产,拉动经济。老百姓买不起了,就政府来买,通过负债加杠杆的方式,把房子买过来,再租给老百姓。这样就盘活了资产,让这些资产有了收入,就抵押,再授信,然后慢慢还债。通过赎买的方式,把保障房迅速做起来了。既去了库存,化解了法拍房危机,又增加了政府未来的收入来源。这种国有的住房租赁公司,相当于未来住房市场上的大庄家,他控制着整个城市的房屋租赁价格,可以通过增加和减少供给的方式,来进行调节。进而为后面的房产税出台,做好准备。也就是说,大量的租赁住房都在政府手里,你房东想涨房租,转移税负是很难做到的。 20 | - 以前我们对经济表示悲观,是没找到加杠杆的空间,但现在这一系列组合拳打出来之后,让我们看到了一定的希望,整个商业模式形成了闭环,政府买房然后转租,将成为下一阶段托底房地产的重点。可以预见的是,这一波操作下来,租房比重大量增加,房价是不会再涨了,但整个的地产链,是有望活跃起来的。那种没有期限的长租房,其实跟买房也没啥太大的区别,所以也会重新带动家电,建材等相应的消费。谁说一辈子的稳定居所,一定要出钱去买呢?这只是过去 10 几年被宣传教育的刻板印象而已。要知道 2000 年之前,99%的中国人,都是租房或者靠分房过日子的。所以必须贷款买房这个观念破除掉后,消费就会重新活跃,经济也就会重新启动。那些存下来准备买房的钱,都有望进入消费市场。 21 | 22 | ## 为什么现在公布爱泼斯坦萝莉岛? 23 | 24 | - 2024 年美国大选 1.15 号正式开始,1.5 号暴露的名单;名单上的克林顿、奥巴马基本上代表了民主党几十年来的权力核心;可能是传说中的影子政府出手; 25 | - 1973 年到 1975 年期间,杰弗里·爱泼斯坦在曼哈顿道尔顿学校担任教师并教授物理学和微积分[5],学生包括投资银行贝尔斯登公司董事长阿伦·格林伯格的儿子。[4]1976 年,爱泼斯坦开始在贝尔斯登公司担任交易员;[5]他在特殊交易部门工作,为那些高净值人士提供税务建议。[5]杰弗里·爱泼斯坦在其金融职业生涯中取得了成功,并于 1980 年成为贝尔斯登公司的有限合伙人。[5]1982 年,爱泼斯坦成立了自己的财务管理公司——杰·爱泼斯坦公司(J. Epstein & Co.),管理的客户资产净值超过 10 亿美元。1987 年,总部位于俄亥俄州的连锁女装店莉米特德的创始人及董事长莱斯利·韦克斯纳成为爱泼斯坦公司最著名的客户。[5]就在韦克斯纳成为爱泼斯坦客户的第二年,他就收购了 Abercrombie & Fitch。1992 年,他将纽约市上东区的一所私立学校改建为一栋房产。爱泼斯坦后来购买了这套位于纽约最富裕地区的房产。1996 年,爱泼斯坦将自己的公司改名为“金融信托公司(Financial Trust Company)”,并基于税收优惠原因将公司迁往美属维尔京群岛的圣托马斯岛。[5]2003 年,爱泼斯坦申请收购《纽约》杂志,当时的竞争对手包括:广告人唐尼·德茨奇、投资家纳尔逊·佩尔茨、媒体大亨及《纽约每日新闻》出版人莫蒂默·扎克曼、电影制片人哈维·韦恩斯坦等,但最终被华尔街投资家布鲁斯·沃瑟斯坦以 5,500 万美元出价击败。[7]2004 年,爱泼斯坦与扎克曼承诺出资 2,500 万美元入股雷达在线,这是一家由马尔·罗山创立的关于名流和流行文化的网络杂志。爱泼斯坦、扎克曼作为合资企业的平等合伙人存在;而罗山则以主编身份保留了少数股份。[8] 26 | - 1993 年-2001 年比尔·克林顿任职; 27 | - 根据《国际财经时报》报道,在 2006 年的诉讼文件显示,爱泼斯坦在其房产的许多地方都安装了隐蔽摄像机。爱泼斯坦以摄像机拍下名人与未成年少女的性活动以达到自己的非法目的,例如敲诈勒索。[16]据称爱泼斯坦将少女“出借”给权贵并让他们交往,以此获得可以勒索的相关信息。2008 年 6 月,杰弗里·爱泼斯坦承认了一项州指控,即与一名 14 岁女孩进行性交易,[22]被判处 18 个月监禁。不同于佛罗里达州其他被判刑的性罪犯,爱泼斯坦没有像他们一般身陷州立监狱的铁牢之中,而是被送入位于棕榈滩的一个“设有围栏的私人机构”。在这里,他能够安排自己的服刑生活,例如,每周六天、每天 12 小时,他可以因“工作假释”前往他位于市中心的办公室。[23]按照裁决,他服刑一年后可以申请假释,因而爱泼斯坦在服刑 13 个月之后即被假释。在假释期间,他被多次允许搭乘其私人飞机往返位于曼哈顿和美属维尔京群岛的家。[23]爱泼斯坦在获释时,于纽约州注册为三级性罪犯(再犯案几率最高),并贴上这一终生的标签。 28 | - 2014 年 12 月 30 日,美国司法部同意了杰弗里·爱泼斯坦在 2008 年的有限认罪,在佛罗里达州据《刑事受害人权利法》向联邦法院提起民事诉讼。该诉讼同时也指控阿伦·德肖维茨对爱泼斯坦所提供的未成年少女实施性虐待。[46][47]可是,针对德肖维茨的指控被法官排除在本次诉讼之外,法官认为他们不能在法律诉讼范围内重新提交认罪协议。[28][48]一份提供给法庭的文件指出爱泼斯坦营运着一个“性虐圈”,并向“重要的美国政治家、显赫的商业领袖、外国总统、知名总理及政府高干”提供未成年少女。[49]2016 年 4 月,一名女子在加利福尼亚州向杰弗里·爱泼斯坦和唐纳德·特朗普提起诉讼,指控特朗普在爱泼斯坦的系列派对上性侵自己,而她当时只有 13 岁。这项指控在 2016 年 5 月被联邦法官驳回,理由是起诉者没有根据联邦法律提起有效的诉讼赔偿。该女子随后于 2016 年 6 月在纽约州提起另一项联邦诉讼,但该诉讼在三个月后撤回。2016 年 9 月,她在纽约第三度提起诉讼。后两次诉讼中还包括一名匿名人士所提交的证词,这份证词证明了诉讼中的指控内容;此外还有一个匿名人士宣称他从原告曾告诉过案件发生的时间。原告的姓名是匿名的,官方文件上都以“Jane Doe”称呼她。她原计划于 2016 年大选投票前六天召开记者会,但随后突然取消;其律师丽莎·布鲁姆断言这名女子已经受到威胁。该诉讼于 2016 年 11 月 4 日被撤销。特朗普的律师阿伦·加登(Alan Garten)否认了这些指控;而爱泼斯坦则拒绝回应。[50][51][52][53]2019 年 7 月 6 日,爱泼斯坦在美国新泽西州被捕,联邦调查局特工在其位于纽约曼哈顿的住宅中发现大量淫秽照片。纽约南区联邦检察院 8 日起诉他进行性交易及合谋人口贩卖未成年女性[54]。 29 | - 2019 年 8 月 10 日,爱泼斯坦在曼哈顿的监狱中自缢身亡[3]。11 日,纽约市首席法医芭芭拉·桑普森(Barbara Sampson)的办公室完成了爱泼斯坦的尸体解剖,将其死因列为待定。验尸发现,爱泼斯坦颈部多处骨折,其中一处为舌骨骨折。美国法医协会协会主席乔纳森·阿登(Jonathan L. Arden)表示,舌骨断裂通常与谋杀性勒死有关,但也不排除自杀的可能[55]。另外,依据纽约监狱的规章制度,爱泼斯坦所在的牢房需要每半小时检查一次,然而就在他自杀的那晚,这一程序因为“人手不足”并未被执行。[56] 30 | 31 | - 以色列目前面临困境,迫切需要美国的支持;然而,为了避免今年大选时受连累,拜登最近对以色列的支持力度明显减弱,特别是在以色列暗杀“哈马斯”高层后,布林肯推迟了原定的访问。这间接反映了,至少现在拜登并不希望以色列左右美国的政治议程。然而,拜登可能只是暂时疏远以色列,而以色列并不愿意接受这一现实。因此,爱泼斯坦文件的曝光可以被视为犹太游说集团对民主党的集体施压。这也解释了为什么名单上基本都是民主党高层。这份名单不仅对特朗普来说是重大利好,提振了他今年选举的前景,对民主党来说则是巨大的打击。 32 | - 特朗普政府对以色列的支持表现在多个方面。一方面,特朗普政府将驻以色列大使馆从特拉维夫迁至耶路撒冷,这一举措意在巩固两国之间的战略合作关系,并满足特朗普竞选承诺。此外,特朗普政府还加大了对以色列的经济和军事援助,使其军备能力得到了显著提升。 33 | 34 | ## 聊聊繁花与职场? 35 | 36 | - 职场很难有真朋友 37 | 38 | ## 雪球产品结构? 39 | 40 | - 为什么不能暂停 IPO? 41 | - 暂停 IPO 会导致一级市场崩溃; 42 | 43 | ## 历次股市熊市回顾 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Logo 4 | 5 | 6 |

7 | 中文版本 8 | | 9 | English Version 10 |

11 |

12 | 13 | 在这个知识大爆发的时代,笔者所见许多人面临的问题不再是知识的匮乏,也不是缺乏学习的动力、毅力或激情,而是在浩汤洪流之中迷失了方向,也无足够的承载知识的容器,终致学的越多,忘的越多,竹篮打水一场空。[某熊的技术之路系列文章、书籍、视频、代码、项目](https://github.com/wx-chevalier)即是笔者为自己构建的**知识围栏**,纳知识与己内;也是笔者蹒跚行进于这条路上的点滴印记,包含了笔者作为程序员的技术视野、知识管理与职业规划,致力于提升开发者的学习效率与实际研发效能。 14 | 15 | 笔者目前的沉淀分为两大系列: 16 | 17 | - 其一为编程笔记系列,已有数十仓库千篇文章百万字,涵盖了编程语言、软件工程、模式与架构、Web 与大前端、服务端架构、分布式基础架构、数据科学,人工智能与深度学习等领域。你可以在[某熊的技术之路指北 ☯](https://github.com/wx-chevalier/Developer-Zero-To-Mastery)查阅详细的导航。可以前往 [Awesome Lists](https://ngte-al.gitbook.io/i/) 或者 [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) 查阅分门别类的资料与书籍,抑或前往 [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) 查阅完整的知识体系、脉络与要点的脑图,或者 [Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps) 了解不同技术领域的进阶指南。最后,你还可以前往 [Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews) 做最后面试前的准备,或者用常见的技术面试题去检验自己学习的结果。 18 | 19 | - 其二为代码实践系列。对应于笔者的知识体系,也为了更好地进行管理协作,笔者将数十个仓库划分到了 [Dev-Snippets](https://github.com/Dev-Snippets)、[FE-Kits](https://github.com/FE-Kits)、[BE-Kits](https://github.com/BE-Kits)、[AI-Kits](https://github.com/AI-Kits) 等不同的组织中。 20 | 21 | # Nav | 导航 22 | 23 | 24 | 25 | [某熊的技术之路指北 ☯ ](https://github.com/wx-chevalier/Developer-Zero-To-Mastery)就是对笔者不同领域方面沉淀下的知识仓库的导航与索引,便于读者快速地寻找到自己需要的内容。路漫漫其修远兮,吾正上下而求索,也希望能给所有遇见过笔者痕迹的同学些许帮助,在浩瀚银河间能顺利达到一个又一个彼岸。Just Coder,Travel in Galaxy,让我们一起前行。 26 | 27 | ## 个人主页 28 | 29 | 您可以前往 [NGTE Books](https://ng-tech.icu/books-gallery/) 主页浏览包含知识体系、编程语言、软件工程、模式与架构、Web 与大前端、服务端开发实践与工程架构、分布式基础架构、人工智能与深度学习、产品运营与创业等多类目的书籍列表: 30 | 31 | [![NGTE Books](https://pic.imgdb.cn/item/607a8fef8322e6675c691315.png)](https://ng-tech.icu/books-gallery/) 32 | 33 | ![书籍清单](https://pic.imgdb.cn/item/607a91f48322e6675c6e5c65.png) 34 | 35 | ## 知识图谱 36 | 37 | [![技术视野](https://s3.ax1x.com/2021/02/21/yTSKdH.png)](https://github.com/wx-chevalier/Awesome-MindMaps) 38 | 39 | 您可以通过以下导航来在 Gitbook 中阅读笔者的系列文章,涵盖了技术资料归纳、编程语言与理论、Web 与大前端、服务端开发与基础架构、云计算与大数据、数据科学与人工智能、产品设计等多个领域: 40 | 41 | - 知识体系:[《Awesome Lists | CS 资料集锦》](https://ng-tech.icu/books/Awesome-Lists)、[《Awesome CheatSheets | 速学速查手册》](https://ng-tech.icu/books/Awesome-CheatSheets)、[《Awesome Interviews | 求职面试必备》](https://ng-tech.icu/books/Awesome-Interviews)、[《Awesome RoadMaps | 程序员进阶指南》](https://ng-tech.icu/books/Awesome-RoadMaps)、[《Awesome MindMaps | 知识脉络思维脑图》](https://ng-tech.icu/books/Awesome-MindMaps)、[《Awesome-CS-Books | 开源书籍(.pdf)汇总》](https://github.com/wx-chevalier/Awesome-CS-Books) 42 | 43 | - 编程语言:[《编程语言理论》](https://ng-tech.icu/books/ProgrammingLanguage-Notes/#/)、[《Java 实战](https://ng-tech.icu/books/Java-Notes)、[《JavaScript 实战》](https://ng-tech.icu/books/JavaScript-Notes)、[《Go 实战》](https://ng-tech.icu/books/Go-Notes)、[《Python 实战》](https://ng-tech.icu/books/ProgrammingLanguage-Notes/#/)、[《Rust 实战》](https://ng-tech.icu/books/ProgrammingLanguage-Notes/#/) 44 | 45 | - 软件工程、模式与架构:[《编程范式与设计模式》](https://ng-tech.icu/books/DesignPattern-Notes/)、[《数据结构与算法》](https://ng-tech.icu/books/AlgoDS-Notes/)、[《软件架构设计》](https://ng-tech.icu/books/SoftwareArchitecture-Notes/)、[《整洁与重构》](https://ng-tech.icu/books/SoftwareEngineering-Notes/)、[《协作与项目管理》](https://ng-tech.icu/books/SoftwareEngineering-Notes/)》 46 | 47 | * Web 与大前端:[《现代 Web 全栈开发与工程架构》](https://ng-tech.icu/books/Web-Notes/)、[《数据可视化](https://ng-tech.icu/books/Frontend-Notes/)、[《iOS》](https://ng-tech.icu/books/Frontend-Notes/)、[《Android》](https://ng-tech.icu/books/Frontend-Notes/)、[《混合开发与跨端应用》](https://ng-tech.icu/books/Web-Notes/)、[《Node.js 全栈开发》](https://ng-tech.icu/books/Node-Notes/) 48 | 49 | * 服务端开发实践与工程架构:[《服务端功能域》](https://ng-tech.icu/books/Backend-Notes/#/)、[《微服务与云原生》](https://ng-tech.icu/books/MicroService-Notes/#/)、[《测试与高可用保障》](https://ng-tech.icu/books/Backend-Notes/#/)、[《DevOps》](https://ng-tech.icu/books/Backend-Notes/#/)、[《Spring》](https://ng-tech.icu/books/Spring-Notes/#/)、[《信息安全与渗透测试》](https://ng-tech.icu/books/Backend-Notes/#/) 50 | 51 | * 分布式基础架构:[《分布式系统》](https://ng-tech.icu/books/DistributedSystem-Notes/#/)、[《分布式计算》](https://ng-tech.icu/books/DistributedSystem-Notes/#/)、[《数据库》](https://github.com/wx-chevalier/Database-Notes)、[《网络》](https://ng-tech.icu/books/DistributedSystem-Notes/#/)、[《虚拟化与云计算》](https://github.com/wx-chevalier/Cloud-Notes)、[《Linux 与操作系统》](https://github.com/wx-chevalier/Linux-Notes) 52 | 53 | * 数据科学,人工智能与深度学习:[《数理统计》](https://ng-tech.icu/books/Mathematics-Notes/#/)、[《数据分析](https://ng-tech.icu/books/AI-Notes/#/)、[《机器学习》](https://ng-tech.icu/books/AI-Notes/#/)、[《深度学习](https://ng-tech.icu/books/AI-Notes/#/)、[《自然语言处理》](https://ng-tech.icu/books/AI-Notes/#/)、[《工具与工程化》](https://ng-tech.icu/books/AI-Notes/#/)、[《行业应用》](https://ng-tech.icu/books/AI-Notes/#/) 54 | 55 | * 产品设计与用户体验:[《产品设计》](https://ng-tech.icu/books/Product-Notes/#/)、[《交互体验](https://ng-tech.icu/books/Product-Notes/#/)、[《项目管理》](https://ng-tech.icu/books/Product-Notes/#/) 56 | 57 | * 行业应用:[《行业迷思》](https://github.com/wx-chevalier/Business-Notes)、[《功能域》](https://github.com/wx-chevalier/Business-Notes)、[《电子商务](https://github.com/wx-chevalier/Business-Notes)、[《智能制造》](https://github.com/wx-chevalier/Business-Notes) 58 | 59 | 此外,你还可前往 [NGTE Website](https://ng-tech.icu/books/) 交互式地检索、查找需要的文章/链接/书籍/课程;或者也可以关注微信公众号:**某熊的技术之路**以获取最新资讯。 60 | 61 | # About 62 | 63 | ## Copyright | 版权 64 | 65 | ![](https://parg.co/bDY) ![](https://parg.co/bDm) 66 | 67 | 笔者所有文章遵循[知识共享 署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh),欢迎转载,尊重版权。如果觉得本系列对你有所帮助,欢迎给我家布丁买点狗粮(支付宝扫码)~ 68 | 69 | ## Stargazers over time 70 | 71 | [![Stargazers over time](https://starchart.cc/wx-chevalier/Developer-Zero-To-Mastery.svg)](https://starchart.cc/wx-chevalier/Developer-Zero-To-Mastery) 72 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | DevOps Series 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 34 | 38 | 40 | 45 | 46 |
47 | 64 | 97 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 143 | 144 | 145 | 146 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /.github/META/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Documents 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 34 | 41 |
42 | 59 | 92 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 146 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2017/2017~程序员的自我修养: 我写代码这五年.md: -------------------------------------------------------------------------------- 1 | - [【程序熊的自我修养】我写代码这五年](https://zhuanlan.zhihu.com/p/24884338)。谨以此文,纪念我过去五年的技术之路,感谢陪伴我这五年的家人,感谢所有陪我一起打拼过的战友,感谢所有阅读过我文章的陌生人。 2 | 3 | # 程序员的自我修养:我写代码这五年 4 | 5 | 五年里最忙的时候需要兼顾两个公司的团队,还有论文和自己待出版的书,最多的时候直接负责过二十多人的技术团队。不过从写博客以后虽然也是断断续续,但总算坚持了下来。一年多里写了两百多篇博文,各渠道总阅读量超两百万(估算)。我的成绩不值一提,我唯一觉得让我骄傲的是我比五年前的自己会更加成熟与稳健,做成了一些我希望自己去做的事情。感谢批判我的人让我及时发现自己的不足与失误,校准方向;感谢支持我的人给我不断前行的动力。五年里陪着爱人走过几个国家,看过一些风景, 6 | 7 | 在对待所谓成功与经验的态度上,我是蛮欣赏勃学的态度,认清自己的同时不去盲目崇拜,不以物喜,不以己悲,。笔者在回顾自我的道路时,我觉得最大的特点会是可行的,当然也是因为我尚在起点左近吧。我没有天赋过人,当年七个月早产出生,差一点就不能跟这个世界说你好。从小略显愚笨,弱于常人,就像笔者对于数学心有畏惧,这么些年一直没学好算法结构与机器学习。笔者也没有过人的毅力与执着的态度,到现在也没能真正的好好锻炼过,也没能如预期般学完一个课程或者看完一本书。更多的时候我是想着怎么跟自己妥协,寻找到真正能够完成的,精神与肉体上都能接受的方案。 8 | 9 | 贯穿笔者整个系列的方法论,概括而来就是王阳明的知行合一,心学博大精深,我也是以自己的方式与实践尝试去理解。知行合一最简单粗暴的理解就是认知与实践的相统一,不过借用韩寒的一句话,读过很多道理,却仍然过不好这一生。现代社会我们每天或多或少的都会被灌入一些鸡汤,但是那些明明很有道理的道理却是如此的难于贯彻。我自身的自制力本就不强,因此更多的思考会立足于可行性,不过做太多超乎我执行力之外的规划,梦想总是要有的,但尽可能的让它能够实现。 10 | 11 | # 高屋建瓴的技术知识体系 12 | 13 | 在物理学科中放射性元素有所谓半衰期的概念,即某种特定物质的浓度经过某种反应降低到剩下初始时一半所消耗的时间。 14 | 15 | Stay Hungry,Avoid Foolish 16 | 17 | 睁眼看世界。心有多大,世界就有多大。井底之蛙 18 | 19 | 笔者不喜欢别人称呼大牛或者类似的头衔,在我看到的世界里不过是刚刚上路的初学者,尚有山高水长,千难万险,若现在就称大牛,真是汗颜。 20 | 21 | ## 知识的半衰期 22 | 23 | 从系统化学习到碎片化学习、从阶段性学习到终身学习、从专业学习到通才学习。孔子曰,三人行,必有我师焉。技术中所谓的术道之分,本文提及的《人类简史》与《未来简史》,都是文学家编著的,但是其中提及的人类社会的衍化都是基于人工智能、大数据、云计算这些很技术的名词。 24 | 25 | 术业有专攻,专才能有,通才难得。 26 | 27 | 从指向性学习到跨界式学习从小学到大学的学习模式,所有的课程都是提前设置和规划好的,是一种序列式的指向性学习。而大学毕业以后,其实就进入了自我教育的阶段,因为工作的原因,我们不得不进行跳跃式学习。这个时候学习知识就不能太具有指向性,也就是一个知识只用来解决一个问题,而是要对知识进行跨界的迁移。回顾下我们的程序员的知识, 我是在大学里开始学习计算机知识的, 学习的操作系统原理, 算法和数据结构等这类知识的半衰期也是比较长的, 也是我们后面的跨界式学习的基础, 所以在大学里学习一定要打好基础, 可惜现今的大学已经变成了简单的培训机构 . 毕业后我的第一份工作是系统集成工作,打交道的是网络,交换机,操作系统,也是在那时的工作中结识了 Linux,从此就爱上了 Linux,不过大学专业学的计算数学,个人感觉还是搞软件更有未来,所以在那个网络很好赚钱的 2000 年我开始学习软件开发,用过 C++、Powerbuilder,看过微软推出的 C# 最顺眼,而且当时大名鼎鼎的米格尔正在搞开源项目 Mono,我就跟着米格尔开始进入 .NET 开发,开发的大部分 .NET 应用都跑在 Windows 上,也有一部分跑在 Linux 上,到了今天,微软也爱上了 Linux,今后我开发的 .NET 应用都会跑在 Linux 上,这个过程中我在 .NET 社区推广 Mono,现在推广 .NET core,逐渐的从非主流变成主流。 28 | 29 | 从整体化学习到碎片化学习所谓碎片化,是一个相对概念。比如你敢一天不刷朋友圈,第二天上班同事聊天,就能一句让你插不上话,一天不看手机就会感觉整个世界都变了。另外碎片化除了占用学习时间短以外,还要能保证学习的随时随地,比如蹲厕所、等公交、开车时都可以进行学习,也就是可以满足多场景。知识的更新迭代实在是太快了,整体化学习越来越不适应市场竞争,碎片化学习的时代已经到来。所以,未来基于互联网的语音分享和视频直播,会慢慢成为人们主要的学习方式。大学里还有机会去系统的学习,工作了大部分时间被加班占据,我们的时间已经变成了碎片,每天能够抽出 30 分钟出来学习,研究新技术,日积月累,几年后就和抽不出时间的人拉开差距,这就可以很好的解释很多人工作时间越长越没有竞争力了,这么多年的时间里都没有进行学习,知识的半衰期又是这么短,经常在社区听到有人在抱怨微软的技术更新太快,“vs2017 出来了,我还在用 vs2005” 等等的论调,问题出在自身,而不反思。希望大家能够抽些时间学习最新的 .NET Core,Linux 的知识。 30 | 31 | 从阶段性学习到终身式学习时间会消磨一切的价值,随着时代的演进,技术被再次突破,审美被迭代,甚至使用的场景也发生了根本性的变化,一劳永逸的学习方式一去不复返了。我们这代人,注定一生花在学习上的时间比真正花在实践上的时间多。因为终身式学习来了。现在已经进入到云计算时代,软件架构也要从单体过渡到微服务,.NET Core 就是为了适应微服务而对 .NET 进行重构,以前你构建软件的那些知识已经衰减了,需要补充新知识了,我通过运营公众号,每天推送几篇文章,很多文章都是新知识,这也是一个学习的过程,我希望通过公众号让更多的人和我一样终身学习,目前公众号有 25000 粉丝,每天文章阅读量却只有 8000,很多人关注了,并没有看过的文章,其实我推送的每篇文章都是有所考虑的,但是公众号是个单向的交流,里面的交流基本没有,我创建了一个付费的小密圈想把真正一起学习的同伴识别出来,可以一起交流。 32 | 33 | ## 记忆宫殿:有效地碎片化学习 34 | 35 | > Learn Everywhere, Anytime. 36 | 37 | 在如今这个知识爆炸的时代,限制我们学习的不再是知识的来源,而是我们自身的学习能力与学习方式。不可否认不同人的能力是不一致的,我们也不能奢望自己能够勤奋到囊萤映雪、凿壁偷光。不仅是大部分人的努力程度之低尚谈不上比拼天赋,而且我们几乎很少能达到自己的既定目标。对于很多工作的人而言,可能只能利用晚上或者周末时间进行学习,即使制定了详细的计划往往也会因为家庭或工作的突发事件而无疾而终。这种现实的无奈是很难以人为意志为转移,因此在无法像学校那时的完全的系统化的学习。在初级阶段,我们势必是要进行碎片化学习的,这总比不学习来得好。笔者非常支持认可碎片化学习的思想,但是否定在没有知识体系的情况下盲目的碎片化学习。特别是对于尚未建立基础知识体系与认知能力的同学,如果突发性地吸收过多的知识,反而会摧毁自己的认知能力。就好像传说中的吸星大法,乱吸的后果就是体内真气斑驳不堪,最终走火入魔,爆体而亡。另外,。在没有知识体系的情况下,学习的知识都是相互独立,难以互相借鉴,举一反三,阅读也不过是春风拂面,一掠而过,不留痕迹,知识也就难以真正的沉淀下来。 38 | 39 | 从笔者自己的经历而言,最初的阅读,这个阶段非常的痛苦。在碎片化学习的过程中,我们不仅要感受到每日阅读、学习的东西,还要能够感受这些知识真正的聚沙成塔、集腋成裘,成为了你的知识体系中不可分割的一部分。 40 | 41 | ## 知我不知,穿越未来 42 | 43 | > I Know What I Dont Know 44 | 45 | 梭罗在《瓦尔登湖》中写道:知道自己知道什么,也知道自己不知道什么,这就是真正的知识。知我所知是对于自己能力的正确认识,知我所不知则能为自己未来的路明确些方向。 46 | 47 | 我们不能让已有的知识,已有的技术,已有的成就,已有的地位成为阻碍。 48 | 49 | ## 知识在它该在的地方 50 | 51 | Code Complete》里面强调的 "programming into a language rather than programming in a language" 原则,即我们应该把编程的通用原则和规范应用到具体编程语言中,而不是受某门编程语言的限制而忽略了编程的通用原则。 52 | 53 | # 笔记与博客:知识的积淀 54 | 55 | 阳明先生朝思夕计,终于领悟了格物致知,知行合一的道理,也是他面对这个世界的方法论,从此为天地立心,为生民立命,为往圣继绝学,为万世开太平。前文所讲我们竭力地去为自己开拓 56 | 57 | ## 生命存在的痕迹 58 | 59 | 笔者最初做笔记的时候,很多朋友会质疑,记录的笔记真的会去看吗?是不是记录之后就能记住了?答案自然是否定的,笔者一直以来鼓励自己做笔记的动力并不是让自己不会遗忘,而是希望在下一次需要的时候能够以最快的速度学习让自己回忆起之前的东西。笔者发现身边很多人的学习能力并不弱,但是技术能力难以进步突破的问题却是在于永远都在重复学习,譬如笔者团队中秉持岗位轮换的原则,可能做几个月的服务端再轮换做一些简单的前端,但是每次都需要重新学习,看不出什么进步。 60 | 61 | 罗曼罗兰说过,多数人二十或三十多岁已经死了,他们变成自己的影子,不断重复以前的自己。 62 | 63 | ## 打造个人品牌 64 | 65 | 在带领团队的时候我一直会思考,应该如何激励他人,常用的方式包括责任心、对于技术的追求以及物质的刺激。物质的刺激是笔者最不想用的,人的欲望是无穷的,物质的刺激作为额外的辅助,但是一直作为主要的刺激手段不免终有黔驴技穷的一天。回到本部分的主题,笔者在这几年里一直建议敦促身边的朋友们尝试着写写文章,不过能坚持下来的寥寥,更多的则是三分钟热度。估计很多阅读本文的读者也逃脱不了这个问题,因为繁忙的工作、因为总是觉得尚未准备好,一而再再而三的推迟文章的计划。最终在那一天蓦然回首,当初的梦想终归是梦想。 66 | 67 | 因此在这里,笔者想特别陈述下文章与博客对于个人发展的重要价值。 68 | 69 | 我们很多人想着去赚钱,但其实应该让自己先值钱,才能去赚钱。 70 | 71 | # 时刻阅读 72 | 73 | Read Everywhere, Learn Anytime. 74 | 75 | ## 按需阅读 76 | 77 | > Read It When You Need It 78 | 79 | ## 辩证式阅读 80 | 81 | 尽信书,则不如无书,不过这并不是不去读书的理由。 82 | 83 | 王安石天命不足畏, 祖宗不足法, 人言不足恤。笔者看完今年的时间的朋友跨年演讲之后,特地看了下评论中与知乎上反驳的内容,从不同的视角、不同的立场进行考虑,实在是有趣。 84 | 85 | ## 每日阅读清单 86 | 87 | # 认识你自己 88 | 89 | 对于所谓成功者或是所谓天才,爱因斯坦说过,天才是百分之一的灵感,百分之九十九的汗水;但那 1% 的灵感是最重要的,甚至比那 99% 的汗水都要重要。 90 | 91 | 笔者并不敢随便置喙这个千古谜题,不过从笔者个人的成长经历而言,既然机器都可以通过大量的数据而不是算法的革新来提升自己的认知能力,那么人类在大量的训练、见过了很多的风景之后缘何不会得到提升呢?天地不仁,万物刍狗,在这样一个崇尚个人自由的年代,笔者相信只要奋斗就能提升自己成才的概率。苏格拉底有句名言叫认识你自己,而实际上以我们现有的认知能力很难去勾画出未来的自己,就好像你永远不知道未来的自己有多强大。入无法家拂士,出无敌国外患者,国恒亡,人也是这样,安逸的环境会掘下梦想的坟墓,本部分也是希望先描述笔者对于未来的担忧,来思考应该给予自己未来怎样的定位,才不会被这个时代所抛弃。 92 | 93 | 对于笔者而言,我认识到自己的天赋普通,也没有傲人的背景,接受的也是一般的教育与平凡的经历。笔者不会奢求完成某些小目标,但是既然外在的力量能够通过细致的分析去发现你自己,那么我们是否能通过换位的分析来更加地了解自己呢? 94 | 95 | ## 未来幸存者 96 | 97 | 2016 年的年末,笔者莫名有些恐慌的情绪,一部分来自于学业与工作的压力,另一部分却是来自于对于未来的未知的恐惧。笔者目前所在的公司是负责政府相关的一些技术服务,这个行业很明显感觉整体的技术水平与外部相差很多,就好像井底之蛙,被厚厚的壁垒与外部的江河隔开,仅看到那一方小小的天地。年会上做年度总结的时候,看着下面坐着的,跟了我三四年的那些年轻的面孔,处于对他们的责任感我很担心哪一天这个壁垒被打破之后,他们会陷入所谓的中年危机。另一方面,笔者自己在南大就读的也是人工智能与数据挖掘相关,虽然是个门外汉但看着大潮浩荡而来,许多曾经的巅峰被征服,笔者不免担心会不会未来就是巨头的天下?。这一轮人工智能深度学习的浪潮可能难再现当年互联网浪潮下千帆竞渡的盛景,也就意味着不会有那么多面向我们这些一无所有的年轻人的机会。后来听了吴恩达等大牛的演讲认识到端到端的学习尚未主导,心中不免送了一口气,又杞人忧天了一回。未来简史中分析二十一世纪会存在三种人:无用的人、没有自主的人与神人。工业革命是发挥人的生产力,而智能革命则是替代人,虽然笔者认为现阶段的人工智能的目标是辅助人工智能,但是依然会在未来取代很多行业的职位,并且这些辅助性的人工智能会比你自己更了解自己,也更能影响你自己。如果有一天我们真的成为了电影里每日衣食无忧,不用烦恼的神人,那么和过去城隍庙里被人供奉,每日享受些香火的泥塑菩萨又有什么区别?正如赫拉利所说,笔者思考这些不是希冀去预测未来,而是想把自己从过去解放出来,敢于去想象不同的命运。不求流芳百世,不愿遗臭万年,只希望生如夏花,总有那么绽放的岁月。笔者希望自己能做有价值的人,对家人、对朋友、对社会有价值的人;活在未来,不是不死,而是不会被这个时代所抛弃。 98 | 99 | ### 独立而可变的意识 100 | 101 | ## 我是程序员 102 | 103 | ### 程序员的自我革命 104 | 105 | 很浮躁,很多关于技术的讨论不再关注技术本身,而是要么互相吹捧,要么人身攻击。我个人很不喜欢所谓的师徒这种关系。 106 | 107 | 程序员的使命就是自我革命 108 | 109 | 所谓更牛,就是换个罪受,我们一生都在处于不断地向上,在资讯爆炸外部资源极大丰富的年代,更大的瓶颈还是在我们自己。 110 | 111 | ### 他山之石,求同存异 112 | 113 | 君子慎独, 不欺暗室, 何况于网络乎?现在网络上的戾气越来越大了 114 | 115 | 道不同,不相为谋。 116 | 117 | 相看两不厌,唯有敬亭山。 118 | 119 | 渡尽劫波兄弟在,相逢一笑泯恩仇。 120 | 121 | ## 不想当将军的士兵不是好士兵 122 | 123 | 技术与管理二者互不冲突,笔者不太提倡单纯的炫技,我们对于技术的追求本质上还是为了构建更好的产品,而伟大的产品需要伟大的团队作为支撑,当年求伯君单枪匹马睥睨天下的时代已是明日黄花。笔者经常会思考,我的价值在哪里?实际上,而是所谓格局。格局是一个很抽象的词汇,有的人写代码的时候看到的是眼前的代码,有的人看到的是一个模块,有的人看到的是一个产品,有的人则看到的是在使用着产品的用户场景。 124 | 125 | 软件架构(software architecture )是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。传统软件架构描述的对象是直接构成系统的抽象组件,侧重于系统的抽象、拆分、组织方式等。 126 | 127 | ### 定位在未来 128 | 129 | 我至今为止没有在大公司实习或者工作过 130 | 131 | ### 君子有责,当仁不让 132 | 133 | 老人常说,吃亏是福。 134 | 135 | 火影里鸣人穷其一生是为了获得认同,虽然有很多的羁绊,但是一生是有意义的。德国社会学家马克斯韦伯说过,人是悬挂在自己编织的意义之网上的动物。 136 | 137 | 在西欧的一些高福利国家,譬如德国,很多穷人选择主动失业以获取高福利。我们工作的目标不仅仅是为了获取 138 | 139 | 德国的穷人失去了自制力,变得不守时,变得懒惰与放纵。 140 | 141 | 我们体面着装不是炫耀的工具,而是约束自己的工具。我们以为追求生活的美好而自律,因为自律而达成体面。 142 | 143 | # 路上 144 | 145 | 我在路上,仰望星空。 146 | 147 | 2013 年 10 月我拿到了南大的保研资格,2014 年 11 月我开始了第一次创业,约球吧。不出三月失败而终,幸好有朋友接手,开始了 LiveForest 与南京运之林。一年创业之后,开始尝试转型,这个阶段参与过在线婚庆的创业,参与了 3D 打印行业的创业。自己本身在南大参与的也是机器学习相关。就像罗振宇在跨年演讲中提及的,狗真的会是最后的胜利者吗? 148 | 149 | ## 如果时光倒流 150 | 151 | ## 浪潮之间 152 | 153 | 悲悲戚戚,如丧考妣 154 | 155 | # 致谢 156 | 157 | 本文最后,笔者还是想对于所有阅读过我的文章的朋友说声谢谢,你们的支持是我前行的动力,希望在未来的岁月里我能够继续完善我的知识体系中的内容,也希望能够帮助到所有花时间阅读我文章的人。未来的世界是时间的战场,愿意花时间阅读的朋友本身也是一种付出。 158 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2017/2017~Web 进阶路线图.md: -------------------------------------------------------------------------------- 1 | # 2017 Web 进阶路线图 2 | 3 | # 前言 4 | 5 | 本书囊括了笔者五年来在前端工程领域的实践总结,笔者希望对于不同等级的开发者都能有所收获。本书最核心的目标 6 | 7 | - 希望对于没有经验的开发者能够在本书选定的最短路径上快速成为一名合格的现代前端开发者。每一小节都会讲解最基础的语法或者使用要点,但是不会长篇大论地介绍语法细节这些应该查看文档的内容。通过简单的示例快速上手之后,笔者会介绍很多工程当中的具体实践。可能刚入门的开发者并不能理解这些实践的意义或者价值,但是首先保证能用,而后在自己的实践中慢慢回味,逐渐明了。 8 | 9 | * 而对于有一定前端开发经验的开发者,本书能够帮你梳理现代纷繁复杂的前端开发状况,探寻百花齐放的工具库背后蕴藏的设计理念与编程范式,最终融会贯通,形成自己的前端工程化思想与体系。 10 | 11 | 本书最大的优势在于形成了完整的知识体系结构,让你合理归纳自己学到的知识,将知识放在它该在的地方。另外笔者想强调的是,无论 React 还是 Vue 或者 Angular2 都是非常优秀的前端框架,使用哪个框架还是属于术的范畴。本书虽然立足于 React,但是其中蕴含的设计模式与工程架构可以通用于任何框架。笔者也着力于不希望受到某个具体框架的太多的束缚,毕竟在这个日新月异的前端世界,说不准哪天就落于人后了。读者阅读完本书之后,参照 Demo 的流程可形成属于自己的组件库。 12 | 13 | # 序 14 | 15 | # 第一部分 初窥门径,看山是山 16 | 17 | # Hyper Text Markup Language,10 页 18 | 19 | ## HTML 语法基础,5 页 20 | 21 | ### HTML 22 | 23 | - 介绍基本的 div、p、a、script ( asyhc 属性) 24 | - 介绍 meta 属性 doctype viewport 25 | - 介绍 HTML 方面的优化小知识 26 | - HTML5 Boilerplate 27 | 28 | ## H5,3 页 29 | 30 | - 介绍 HTML5 规范,讲明 H5 到底是什么 31 | - 介绍 H5 实现的典型事件,譬如地理位置、触感等等 32 | - 基本的基于 H5 的小 Demo 33 | 34 | ## Semantic HTML,2 页 35 | 36 | - 介绍语义化 HTML 布局 37 | 38 | # CSS,20 页 39 | 40 | ## CSS 语法基础,3 页 41 | 42 | - 介绍 CSS 基础选择器,包含选择器优先级 43 | - CSS 引入方式 44 | - 介绍 BEM 命名法 45 | 46 | ## CSS 元素样式,5 页 47 | 48 | - 介绍基本的尺寸设置,介绍尺寸单位,还有 width、height/line-heght (垂直居中)等属性 49 | - 介绍基本的文本属性,包括字体大小、文本省略、文本换行等 50 | - 介绍基本的背景属性 51 | 52 | ## CSS 元素定位:盒模型与文档流,3 页 53 | 54 | - 介绍盒模型,包括内边距,边框,外边距,连写情况下顺序(上下 左右;上右下左),以及边距合并,百分比值效果 55 | - 介绍文档流,,介绍基本定位方法,提及 float 56 | - 介绍所谓的七种居中方法 57 | 58 | ## Flexbox 与网格系统,3 页 59 | 60 | - 介绍 CSS 网格系统的理念与传统做法 61 | - 介绍 Flexbox 基础语法 62 | - 介绍 Flexbox 的 Polyfill 63 | - 介绍 Flexbox 的使用示范 64 | 65 | ## SCSS,2 页 66 | 67 | - SCSS 语法基础与基本用法,建议使用 node-sass 编译 68 | - SCSS 文件组织与命名规范(BEM-SCSS ) 69 | - 常用的 SCSS 辅助库,home.scss,等 Todo 70 | 71 | ## CSS 工程实践,4 页 72 | 73 | - CSS 样式指南,1 页 74 | - CSS Linting,1 页 75 | - CSS 目录结构,1 页 76 | - CSS reset,1 页 77 | 78 | ## JavaScript,25.5 页 79 | 80 | ### JavaScript 语法基础,9 页 81 | 82 | - JavaScript 和 ECMScript 的演化过程,1 页 83 | - JavaScript 基本变量定义、声明(变量提升),2 页 84 | - node 环境搭建(npm,cnpm,nvm 的基本使用,babel-node 的安装),2 页 85 | - es6 模块系统(简单命令行例子,babel-node 运行),1 页 86 | - 介绍变量赋值方法,解构赋值,1 页 87 | - 常见类型列表和类型转换,2 页 88 | ### JavaScript 数据结构,4.5 页 89 | - 数组类型,1.5 页 90 | - 字符串类型,1.5 页 91 | - 时间与日期类型,1.5 页 92 | 93 | ### JavaScript 控制流,3 页 94 | 95 | - 循环,2 页 96 | - 异常处理,1 页 97 | ### JavaScript 函数,6 页 98 | - 函数定义,1 页 99 | - 函数参数,1 页 100 | - 函数调用,2 页 101 | - 词法作用域与闭包,2 页 102 | ### JavaScript 类与对象,6 页 103 | - class,属性定义(语法糖),1 页 104 | - 方法,构造器(单例模式),原型,快速 ORM,3 页 105 | - 类继承,2 页 106 | ## DOM,16.5 页 107 | ### 元素选择与操作,4.5 页 108 | - DOM 选择器,选择器 polyfill,1.5 页 109 | - 属性的判断和获取,1.5 页 110 | - 常见元素操作(元素创建、插入),1.5 页 111 | ### 事件响应,4 页 112 | - event 对象与事件绑定及参数传递,2 页 113 | - 事件分发传递、常用事件列表,2 页 114 | ### Ajax,4 页 115 | - XHR 对象,1 页 116 | - fetch,1 页 117 | - cors,2 页 118 | ### 客户端存储,4 页 119 | - Cookie,1 页 120 | - localstorage,session storage,2 页 121 | - websql,indexdb,1 页 122 | # 常用的前端工具库,9 页 123 | ## jQuery,5 页 124 | ### jQuery 基础,2 页 125 | - jQuery 选择器,0.5 页 126 | - jQuery 元素操作,0.5 页 127 | - jQuery 事件绑定,0.5 页 128 | - jQuery 动画,0.5 页 129 | 130 | ### jQuery Plugins,2 页 131 | 132 | 本章节介绍部分优秀的 jQuery Plugins 133 | 134 | - `fullPage.js`,1 页 135 | - `LightBox`,1 页 136 | ### 你并不需要 jQuery,1 页 137 | ## Lodash/Underscore,2 页 138 | ### Lodash/Underscore 基础,1 页 139 | ### 你并不需要 Lodash/Underscore,1 页 140 | ## Pattern Library,2 页 141 | ### jQuery UI,1 页 142 | ### BootStrap,1 页 143 | # React 初探 144 | ## 数据流驱动的页面,2 页 145 | - 本部分主要介绍 React 设计思想,从命令式编程到声明式编程的变化,及以 jQuery 与 React 实现相同功能的例子对比。 146 | ## 搭建你的脚手架,7.5 页 147 | ### create-react-app,2.5 页 148 | - 引导建立 hello-world app,2 页 149 | - 介绍 yarn,0.5 页 150 | ### webpack 入门,5 页 151 | - JavaScript 模块化发展历程与 webpack 介绍,1 页 152 | - webpack 的 hello-world 应用引导,1.5 页 153 | - 基于 webpack 的 react 最简应用搭建,2.5 页 154 | - 列举一些 boilerplate 及评价,0.5 页 155 | ## React 组件,16 页 156 | ### JSX,3 页 157 | - JSX 基础与转化,1 页 158 | - 语法,2 页 159 | ### 组件基本介绍,4 页 160 | - 组件声明,说明 createClass 与继承的关系,2 页 161 | - state,1 页 162 | - props,1 页 163 | - context,1 页 164 | ### 组件生命周期,3 页 165 | - 正常生命周期,2 页 166 | - 无状态组件生命周期,1 页 167 | ### 组件样式,4 页 168 | - 行内样式设定,1 页 169 | - CSS 样式, 类名与模块化,2 页 170 | - 基于 context 的主题传递,1 页 171 | ### 组件中 DOM 处理,2 页 172 | - findDOMNode,0.5 173 | - refs 与 jQuery 的封装使用 ,1.5 页 174 | ## React 事件交互 175 | ### React 事件绑定与处理 176 | 177 | ### React 合成事件 178 | 179 | ### React 事件列表 180 | 181 | ## React Router 182 | 183 | ### 路由配置 184 | 185 | ### 路由控制 186 | 187 | # React 技术栈 188 | 189 | ## MobX 190 | 191 | ### MobX 设计思想 192 | 193 | ### Observable 194 | 195 | ## Redux 196 | 197 | ### Redux 设计思想 198 | 199 | ### 简单的 Redux 实例 200 | 201 | ### 简单的 MobX 实例 202 | 203 | # 第二部分 登堂入室,看山不是山 204 | 205 | # 第五章 深入 JavaScript 工程实践 206 | 207 | ## JavaScript 静态类型 208 | 209 | ## JavaScript 函数式编程 210 | 211 | ## JavaScript 异步编程 212 | 213 | ### Promise 214 | 215 | ### Generator 216 | 217 | ### Async/Await 218 | 219 | ## JavaScript 面向对象 220 | 221 | ### 琢磨不透的 this 222 | 223 | ### 原型链与继承 224 | 225 | ### JavaScript 类的几种实现方式 226 | 227 | ## JavaScript 数据绑定 228 | 229 | ### 脏检测 230 | 231 | ### ES6 Proxy 232 | 233 | ## JavaScript 性能优化与样式规范 234 | 235 | ### 变量 236 | 237 | ### 数据类型 238 | 239 | ### 函数 240 | 241 | # React 工程实践 242 | 243 | ## React 设计模式与样式指南 244 | 245 | ### High-Order Component 246 | 247 | ### Stateless Functional Component 248 | 249 | ### Pretty Component 250 | 251 | ## React 优化 252 | 253 | ### 包体优化 254 | 255 | ## React 动画 256 | 257 | ### CSS 动画 258 | 259 | ### JavaScript 动画 260 | 261 | ### React Transition 262 | 263 | ## 基于 React 的 Pattern Library 264 | 265 | ### Material UI 266 | 267 | ### antd 268 | 269 | # 第五章 深入 React 内部原理 270 | 271 | ## 简单的 Virtual DOM 实现 272 | 273 | ## React Diff 算法 274 | 275 | ## React setState 276 | 277 | ## React Fiber 278 | 279 | ## Virtual DOM Alternatives 280 | 281 | # 前端状态管理 282 | 283 | ## Redux 的得与失 284 | 285 | ## 渐进的前端状态管理 286 | 287 | ## 常见的状态管理模式 288 | 289 | ## 合理的状态设置 290 | 291 | # 前端测试 292 | 293 | ## 单元测试 294 | 295 | ## 组件测试 296 | 297 | ## 自动化测试 298 | 299 | # 前端性能优化 300 | 301 | ## 浏览器渲染原理 302 | 303 | ## 前端性能评测 304 | 305 | ## 资源加载 306 | 307 | ## 首页与关键路径 308 | 309 | ## 渲染策略 310 | 311 | # NodeJS 312 | 313 | ## NodeJS 初窥 314 | 315 | ## 常用 NodeJS 框架 316 | 317 | ### Express 318 | 319 | ### Koa 320 | 321 | ## 服务端渲染 322 | 323 | ### 跨平台开发利器 Electron 324 | 325 | # 移动开发 326 | 327 | ## Mobile First 328 | 329 | 本部分介绍移动开发的常见注意点,包括响应式尺寸、响应式布局、移动开发中存在的点击问题等。 330 | 331 | ## React Native 332 | 333 | 介绍 React Native 的基本原理与语法,能够利用 Deco 开发一个简单的 TODOList。 334 | 335 | ## 微信小程序 336 | 337 | 介绍微信小程序的基本用法,能够基于微信小程序开发简单的 TODOList。 338 | 339 | # 第三部分 融会贯通,看山还是山 340 | 341 | # GUI 应用程序架构变迁 342 | 343 | ## MVC 344 | 345 | ## MVP&MVVM 346 | 347 | ## Flux Unidirectional Data Flow 348 | 349 | # REST 表现层状态转化 350 | 351 | ## Hyper Text Transport Protocol 352 | 353 | ### HTTP 协议基础 354 | 355 | ### HTTP 请求与响应 356 | 357 | ### HTTP 缓存 358 | 359 | ### HTTPS 与 HTTP/2 360 | 361 | ## RESTful API 362 | 363 | ## RESTful API 最佳实践 364 | 365 | ## REST 的不足与 GraphQL 366 | 367 | # 前端工程化 368 | 369 | ## 前后端分离与全栈 370 | 371 | ## 合理的使用工具 372 | 373 | ## 渐进式的工程架构 374 | 375 | ## 微服务与微前端 376 | 377 | ### 模块化 378 | 379 | 介绍常见的模块化形式:CommonJS、AMDJS、System.import 介绍小模块难题 380 | 381 | ### 组件化 382 | 383 | 介绍 Web Components 规范(Shadow DOM,Custom Elements)以及典型的符合 Web Components 规范的框架 Polymer 分析 React 与 Web Components 规范的优劣分析 Vue 与 WebComponents 规范的优劣分析何谓好的组件 384 | 385 | # 数据可视化 386 | 387 | ## 数据可视化范式 388 | 389 | ## 常见的数据可视化库 390 | 391 | ### ECharts 392 | 393 | ### D3.js 394 | 395 | # Web 安全基础 396 | 397 | ## 输入校验与内容编码 398 | 399 | ## SQL 注入 400 | 401 | ## XSS 跨站脚本 402 | 403 | ## CSRF 跨域请求伪造 404 | 405 | # Web 的未来 406 | 407 | ## WebAssembly 408 | 409 | ## WebVR 410 | -------------------------------------------------------------------------------- /_sidebar.md: -------------------------------------------------------------------------------- 1 | - 1 99~参考资料 [1] 2 | - [1.1 2023~About The Startup CTO's Handbook](/99~参考资料/2023~About%20The%20Startup%20CTO's%20Handbook/README.md) 3 | 4 | - [2 INTRODUCTION](/INTRODUCTION.md) 5 | - 3 杂学 [5] 6 | - 3.1 两性感情 [3] 7 | - [3.1.1 感情基础](/杂学/两性感情/感情基础.md) 8 | - [3.1.2 爱情与事业](/杂学/两性感情/爱情与事业.md) 9 | - [3.1.3 自杀挽救](/杂学/两性感情/自杀挽救.md) 10 | - 3.2 人情世故 [2] 11 | - [3.2.1 《社会不教,精英不讲,坎儿还得自己过》](/杂学/人情世故/《社会不教,精英不讲,坎儿还得自己过》.md) 12 | - [3.2.2 绿茶语录](/杂学/人情世故/绿茶语录.md) 13 | - 3.3 健康养生 [4] 14 | - [3.3.1 2023~恢复视力的多种方法缓解眼疲劳](/杂学/健康养生/2023~恢复视力的多种方法缓解眼疲劳.md) 15 | - [3.3.2 2023~颈椎病腰突康复指南](/杂学/健康养生/2023~颈椎病腰突康复指南.md) 16 | - [3.3.3 口腔溃疡](/杂学/健康养生/口腔溃疡.md) 17 | - [3.3.4 女生大姨妈](/杂学/健康养生/女生大姨妈.md) 18 | - 3.4 商业创业 [1] 19 | - [3.4.1 商业名言](/杂学/商业创业/商业名言.md) 20 | - 3.5 诗词名言 [2] 21 | - [3.5.1 少年](/杂学/诗词名言/少年.md) 22 | - [3.5.2 岁月与梦想](/杂学/诗词名言/岁月与梦想.md) 23 | - [4 某熊的成长之路 [10]](/某熊的成长之路/README.md) 24 | - 4.1 [4] 25 | - [4.1.1 我的前端之路](/某熊的成长之路/2015/2015-我的前端之路.md) 26 | - [4.1.2 我的技术之路与知识体系](/某熊的成长之路/2015/2015-我的技术之路与知识体系.md) 27 | - [4.1.3 如何成为优秀的软件工程师](/某熊的成长之路/2015/如何成为优秀的软件工程师.md) 28 | - [4.1.4 熊写代码这三年: 阅读写作与技术成长](/某熊的成长之路/2015/熊写代码这三年:%20阅读写作与技术成长.md) 29 | - 4.2 [4] 30 | - [4.2.1 我的前端之路](/某熊的成长之路/2016/2016-我的前端之路.md) 31 | - [4.2.2 我的技术之路与知识体系](/某熊的成长之路/2016/2016-我的技术之路与知识体系.md) 32 | - [4.2.3 怀着被抛弃的恐惧在奋斗中前行](/某熊的成长之路/2016/怀着被抛弃的恐惧在奋斗中前行.md) 33 | - [4.2.4 某熊的阅读与写作日常](/某熊的成长之路/2016/某熊的阅读与写作日常.md) 34 | - 4.3 [4] 35 | - [4.3.1 Web 进阶路线图](/某熊的成长之路/2017/2017-Web%20进阶路线图.md) 36 | - [4.3.2 我的技术之路](/某熊的成长之路/2017/2017-我的技术之路.md) 37 | - [4.3.3 知识图谱](/某熊的成长之路/2017/2017-知识图谱.md) 38 | - [4.3.4 程序员的自我修养: 我写代码这五年](/某熊的成长之路/2017/程序员的自我修养:%20我写代码这五年.md) 39 | - 4.4 [4] 40 | - [4.4.1 我的技术之路](/某熊的成长之路/2018/2018-我的技术之路.md) 41 | - [4.4.2 我在菊场这一年](/某熊的成长之路/2018/我在菊场这一年.md) 42 | - [4.4.3 数据浪潮之间的前端工程师](/某熊的成长之路/2018/数据浪潮之间的前端工程师.md) 43 | - [4.4.4 知识管理与高效学习](/某熊的成长之路/2018/知识管理与高效学习.md) 44 | - 4.5 [25] 45 | - [4.5.1 001 MySQL 索引的原理与应用](/某熊的成长之路/2019/2019-001-MySQL%20索引的原理与应用.md) 46 | - [4.5.2 002 分布式系统导论](/某熊的成长之路/2019/2019-002-分布式系统导论.md) 47 | - [4.5.3 003 在 Google Colab 中快速实践深度学习](/某熊的成长之路/2019/2019-003-在%20Google%20Colab%20中快速实践深度学习.md) 48 | - [4.5.4 004 0 Cendertron,动态爬虫与敏感信息泄露检测](/某熊的成长之路/2019/2019-004-0-Cendertron,动态爬虫与敏感信息泄露检测.md) 49 | - [4.5.5 004 1 Cendertron,安全爬虫的分布式与稳定性优化之路](/某熊的成长之路/2019/2019-004-1-Cendertron,安全爬虫的分布式与稳定性优化之路.md) 50 | - [4.5.6 004 2 Cendertron,动态爬虫的滑动验证码绕过策略](/某熊的成长之路/2019/2019-004-2-Cendertron,动态爬虫的滑动验证码绕过策略.md) 51 | - [4.5.7 005 fc whiteboard,支持镜像、录播、回放的 Web 电子白板](/某熊的成长之路/2019/2019-005-fc-whiteboard,支持镜像、录播、回放的%20Web%20电子白板.md) 52 | - [4.5.8 006 一文了解多层次缓存机制与策略](/某熊的成长之路/2019/2019-006-一文了解多层次缓存机制与策略.md) 53 | - [4.5.9 007 ChaosScanner](/某熊的成长之路/2019/2019-007-ChaosScanner.md) 54 | - [4.5.10 008 存储技术纵览:Linux 虚拟存储,并发 IO,数据库与消息中间件](/某熊的成长之路/2019/2019-008-存储技术纵览:Linux%20虚拟存储,并发%20IO,数据库与消息中间件.md) 55 | - [4.5.11 009 Web 面试题集锦,从语法框架到架构优化](/某熊的成长之路/2019/2019-009-Web%20面试题集锦,从语法框架到架构优化.md) 56 | - [4.5.12 010 浅谈工业云平台中的微服务化领域架构设计](/某熊的成长之路/2019/2019-010-浅谈工业云平台中的微服务化领域架构设计.md) 57 | - [4.5.13 011 Linux 存储与 IO 导论](/某熊的成长之路/2019/2019-011-Linux%20存储与%20IO%20导论.md) 58 | - [4.5.14 012 K8s 实战之概念、部署、服务配置](/某熊的成长之路/2019/2019-012-K8s%20实战之概念、部署、服务配置.md) 59 | - [4.5.15 014 工业互联下的 Netty 与 MQTT 设备上报网关](/某熊的成长之路/2019/2019-014-工业互联下的%20Netty%20与%20MQTT%20设备上报网关.md) 60 | - [4.5.16 015 软件架构万字漫谈](/某熊的成长之路/2019/2019-015-软件架构万字漫谈.md) 61 | - [4.5.17 016 0 并发基础与内存模型](/某熊的成长之路/2019/2019-016-0-并发基础与内存模型.md) 62 | - [4.5.18 016 1 进程、线程与协程](/某熊的成长之路/2019/2019-016-1-进程、线程与协程.md) 63 | - [4.5.19 016 2 并发 IO](/某熊的成长之路/2019/2019-016-2-并发%20IO.md) 64 | - [4.5.20 016 3 线程安全](/某熊的成长之路/2019/2019-016-3-线程安全.md) 65 | - [4.5.21 016 4 锁](/某熊的成长之路/2019/2019-016-4-锁.md) 66 | - [4.5.22 017 分布式系统导论](/某熊的成长之路/2019/2019-017-分布式系统导论.md) 67 | - [4.5.23 018 Web 开发中动态主题、皮肤的不同姿势](/某熊的成长之路/2019/2019-018-Web%20开发中动态主题、皮肤的不同姿势.md) 68 | - [4.5.24 我的技术之路](/某熊的成长之路/2019/2019-我的技术之路.md) 69 | - [4.5.25 十年铲码](/某熊的成长之路/2019/十年铲码.md) 70 | - 4.6 [5] 71 | - [4.6.1 我的技术之路](/某熊的成长之路/2020/2020-我的技术之路.md) 72 | - [4.6.2 K8s 中微服务解决方案的选择,Dapr 初探](/某熊的成长之路/2020/K8s%20中微服务解决方案的选择,Dapr%20初探.md) 73 | - [4.6.3 M 端产品设计札记](/某熊的成长之路/2020/M%20端产品设计札记.md) 74 | - [4.6.4 产品思维与技术课程设计](/某熊的成长之路/2020/产品思维与技术课程设计.md) 75 | - [4.6.5 微前端 & K8s,创业团队的多平台前端项目的构建之路](/某熊的成长之路/2020/微前端%20&%20K8s,创业团队的多平台前端项目的构建之路.md) 76 | - 4.7 [6] 77 | - [4.7.1 我的技术之路](/某熊的成长之路/2021/2021-我的技术之路.md) 78 | - [4.7.2 2021~随笔录](/某熊的成长之路/2021/2021~随笔录.md) 79 | - [4.7.3 5W Plan](/某熊的成长之路/2021/5W%20Plan.md) 80 | - [4.7.4 十载浮沉:数字化赋能与重塑 3D 打印等非标服务型制造业的几个底层思考及展望](/某熊的成长之路/2021/十载浮沉:数字化赋能与重塑%203D%20打印等非标服务型制造业的几个底层思考及展望.md) 81 | - [4.7.5 浅析从作坊型手扳厂到小批量分布式制造变革中,在品牌营销、客户服务、生产管理、经营洞察等方面的一揽子问题](/某熊的成长之路/2021/浅析从作坊型手扳厂到小批量分布式制造变革中,在品牌营销、客户服务、生产管理、经营洞察等方面的一揽子问题.md) 82 | - [4.7.6 研发效能:架构复杂性与高可用](/某熊的成长之路/2021/研发效能:架构复杂性与高可用.md) 83 | - 4.8 [2] 84 | - [4.8.1 按产品力评估模型(九维度综合评估)](/某熊的成长之路/2022/2022-按产品力评估模型(九维度综合评估).md) 85 | - [4.8.2 某熊的技术 & 产品成长之路:重启的第二曲线](/某熊的成长之路/2022/2022-某熊的技术%20&%20产品成长之路:重启的第二曲线.md) 86 | - 4.9 [3] 87 | - [4.9.1 2023~年度任务](/某熊的成长之路/2023/2023~年度任务.md) 88 | - [4.9.2 2023~某熊的成长之路](/某熊的成长之路/2023/2023~某熊的成长之路.md) 89 | - [4.9.3 2023~随笔录](/某熊的成长之路/2023/2023~随笔录.md) 90 | - 4.10 [2] 91 | - [4.10.1 2024~年度任务](/某熊的成长之路/2024/2024~年度任务.md) 92 | - [4.10.2 2024~随笔录](/某熊的成长之路/2024/2024~随笔录.md) 93 | - 5 某熊的投资之路 [4] 94 | - 5.1 99~参考资料 [1] 95 | - 5.1.1 齐俊杰 [1] 96 | - 5.1.1.1 《齐俊杰日课》 [1] 97 | - [5.1.1.1.1 2023.12.14~周期投资风格](/某熊的投资之路/99~参考资料/齐俊杰/《齐俊杰日课》/2023.12.14~周期投资风格.md) 98 | - 5.2 交易系统 [1] 99 | - [5.2.1 锚定估值的周期性配置](/某熊的投资之路/交易系统/锚定估值的周期性配置.md) 100 | - 5.3 宏观周期 [2] 101 | - [5.3.1 周期投资风格](/某熊的投资之路/宏观周期/周期投资风格.md) 102 | - [5.3.2 国联投顾](/某熊的投资之路/宏观周期/国联投顾.md) 103 | - 5.4 投资日记 [3] 104 | - [5.4.1 2023~投资日记](/某熊的投资之路/投资日记/2023~投资日记.md) 105 | - [5.4.2 2024~投资日记](/某熊的投资之路/投资日记/2024~投资日记.md) 106 | - [5.4.3 投资策略](/某熊的投资之路/投资日记/投资策略.md) 107 | - 6 留给世界的痕迹 [2] 108 | - 6.1 播客 [1] 109 | - [6.1.1 2024.1 小宇宙选题](/留给世界的痕迹/播客/2024.1%20小宇宙选题.md) 110 | - 6.2 虎虎 [1] 111 | - [6.2.1 出生日](/留给世界的痕迹/虎虎/出生日.md) 112 | - [7 编程之道 [6]](/编程之道/README.md) 113 | - [7.1 代码能力](/编程之道/代码能力.md) 114 | - [7.2 公共知识杂谈](/编程之道/公共知识杂谈.md) 115 | - [7.3 开发环境](/编程之道/开发环境.md) 116 | - [7.4 思维模型](/编程之道/思维模型.md) 117 | - [7.5 技术趋势 [1]](/编程之道/技术趋势/README.md) 118 | - [7.5.1 软件行业的变革](/编程之道/技术趋势/软件行业的变革.md) 119 | - [7.6 道、法、术、器](/编程之道/道、法、术、器.md) 120 | - [8 软技能 [6]](/软技能/README.md) 121 | - 8.1 PPT 演讲 [1] 122 | - 8.1.1 PowerPoint [2] 123 | - [8.1.1.1 PPT 模板推介](/软技能/PPT%20演讲/PowerPoint/PPT%20模板推介.md) 124 | - [8.1.1.2 配色](/软技能/PPT%20演讲/PowerPoint/配色/README.md) 125 | 126 | - [8.2 团队组织](/软技能/团队组织/README.md) 127 | 128 | - 8.3 学习方法 [2] 129 | - [8.3.1 学习方法](/软技能/学习方法/学习方法.md) 130 | - [8.3.2 构建自己的笔记系统](/软技能/学习方法/构建自己的笔记系统.md) 131 | - [8.4 文档写作 [3]](/软技能/文档写作/README.md) 132 | - 8.4.1 LaTeX [1] 133 | - [8.4.1.1 LaTex](/软技能/文档写作/LaTeX/LaTex.md) 134 | - 8.4.2 Markdown [5] 135 | - 8.4.2.1 99~参考资料 [1] 136 | - [8.4.2.1.1 Markdown 简介](/软技能/文档写作/Markdown/99~参考资料/2018-Markdown%20简介.md) 137 | - [8.4.2.2 Gitbook](/软技能/文档写作/Markdown/Gitbook.md) 138 | - [8.4.2.3 MarkDown](/软技能/文档写作/Markdown/MarkDown.md) 139 | - [8.4.2.4 StyleGuide](/软技能/文档写作/Markdown/StyleGuide.md) 140 | - [8.4.2.5 图表](/软技能/文档写作/Markdown/图表.md) 141 | - 8.4.3 文档排版 [1] 142 | - 8.4.3.1 99~参考资料 [1] 143 | - [8.4.3.1.1 中文文案排版指北](/软技能/文档写作/文档排版/99~参考资料/2018-中文文案排版指北.md) 144 | - [8.5 科学上网](/软技能/科学上网/README.md) 145 | 146 | - 8.6 证书认证 [1] 147 | - [8.6.1 软考](/软技能/证书认证/软考.md) -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-004-2-Cendertron,动态爬虫的滑动验证码绕过策略.md: -------------------------------------------------------------------------------- 1 | ![](https://camo.githubusercontent.com/ddb37bd59e73e8e19e18c9b88c644b64ab477864/68747470733a2f2f692e706f7374696d672e63632f76484d4a747764342f696d6167652e706e67) 2 | 3 | # Cendertron,动态爬虫的滑动验证码绕过策略 4 | 5 | 在《[InfoSecurity-Notes](https://github.com/wx-chevalier/InfoSecurity-Notes?q=)》安全动态爬虫系列中我们依次介绍了安全爬虫的设计、爬虫的集群搭建,本篇则是讨论有关于滑动验证码的绕过策略。 6 | 7 | 本文采用的策略与代码来自 [How to bypass “slider CAPTCHA” with JS and Puppeteer](https://medium.com/@filipvitas/how-to-bypass-slider-captcha-with-js-and-puppeteer-cd5e28105e3c) 一文。 8 | 9 | ## 爬虫中滑动验证的绕过 10 | 11 | 验证是常见的反爬虫策略之一,在现在的很多站点中我们会引入滑动验证的方式,来校验访问者的真实性。譬如下面著名的 jQuery 滑动插件: 12 | 13 | ![](https://website/wx4830CM/image.png) 14 | 15 | 在模拟登陆时,我们往往需要绕过这样的滑动验证,而基于 Puppeteer 的动态爬虫也给予了便利;往往我们需要进行以下步骤:移动到滑条中间,按下鼠标,移动鼠标,释放鼠标。 16 | 17 | ```js 18 | const puppeteer = require("puppeteer"); 19 | 20 | async function run() { 21 | const browser = await puppeteer.launch({ 22 | headless: false, 23 | defaultViewport: { width: 1366, height: 768 }, 24 | }); 25 | const page = await browser.newPage(); 26 | 27 | await page.goto("http://kthornbloom.com/slidetosubmit/"); 28 | await page.type('input[name="name"]', "Puppeteer Bot"); 29 | await page.type('input[name="email"]', "js@automation.com"); 30 | 31 | let sliderElement = await page.$(".slide-submit"); 32 | let slider = await sliderElement.boundingBox(); 33 | 34 | let sliderHandle = await page.$(".slide-submit-thumb"); 35 | let handle = await sliderHandle.boundingBox(); 36 | 37 | await page.mouse.move( 38 | handle.x + handle.width / 2, 39 | handle.y + handle.height / 2 40 | ); 41 | await page.mouse.down(); 42 | await page.mouse.move(handle.x + slider.width, handle.y + handle.height / 2, { 43 | steps: 10, 44 | }); 45 | await page.mouse.up(); 46 | 47 | await page.waitFor(3000); 48 | 49 | // success! 50 | 51 | await browser.close(); 52 | } 53 | 54 | run(); 55 | ``` 56 | 57 | 在实际的案例中,我们可以以淘宝的注册界面为例: 58 | 59 | ```js 60 | const puppeteer = require("puppeteer"); 61 | 62 | async function run() { 63 | const browser = await puppeteer.launch({ 64 | headless: false, 65 | defaultViewport: { width: 1366, height: 768 }, 66 | }); 67 | const page = await browser.newPage(); 68 | 69 | await page.evaluateOnNewDocument(() => { 70 | Object.defineProperty(navigator, "webdriver", { 71 | get: () => false, 72 | }); 73 | }); 74 | 75 | await page.goto("https://world.taobao.com/markets/all/sea/register"); 76 | 77 | let frame = page.frames()[1]; 78 | await frame.waitForSelector(".nc_iconfont.btn_slide"); 79 | 80 | const sliderElement = await frame.$(".slidetounlock"); 81 | const slider = await sliderElement.boundingBox(); 82 | 83 | const sliderHandle = await frame.$(".nc_iconfont.btn_slide"); 84 | const handle = await sliderHandle.boundingBox(); 85 | await page.mouse.move( 86 | handle.x + handle.width / 2, 87 | handle.y + handle.height / 2 88 | ); 89 | await page.mouse.down(); 90 | await page.mouse.move(handle.x + slider.width, handle.y + handle.height / 2, { 91 | steps: 50, 92 | }); 93 | await page.mouse.up(); 94 | 95 | await page.waitFor(3000); 96 | 97 | // success! 98 | 99 | await browser.close(); 100 | } 101 | 102 | run(); 103 | ``` 104 | 105 | ![](https://website/LX4w81vj/image.png) 106 | 107 | 另一种常见的滑块则是如下这种拼图性质的滑块: 108 | 109 | ![](https://website/3NdqgQsR/image.png) 110 | 111 | ```js 112 | const puppeteer = require("puppeteer"); 113 | const Rembrandt = require("rembrandt"); 114 | 115 | async function run() { 116 | const browser = await puppeteer.launch({ 117 | headless: false, 118 | defaultViewport: { width: 1366, height: 768 }, 119 | }); 120 | const page = await browser.newPage(); 121 | 122 | let originalImage = ""; 123 | 124 | await page.setRequestInterception(true); 125 | page.on("request", (request) => request.continue()); 126 | page.on("response", async (response) => { 127 | if (response.request().resourceType() === "image") 128 | originalImage = await response.buffer().catch(() => {}); 129 | }); 130 | 131 | await page.goto("https://monoplasty.github.io/vue-monoplasty-slide-verify/"); 132 | 133 | const sliderElement = await page.$(".slide-verify-slider"); 134 | const slider = await sliderElement.boundingBox(); 135 | 136 | const sliderHandle = await page.$(".slide-verify-slider-mask-item"); 137 | const handle = await sliderHandle.boundingBox(); 138 | 139 | let currentPosition = 0; 140 | let bestSlider = { 141 | position: 0, 142 | difference: 100, 143 | }; 144 | 145 | await page.mouse.move( 146 | handle.x + handle.width / 2, 147 | handle.y + handle.height / 2 148 | ); 149 | await page.mouse.down(); 150 | 151 | while (currentPosition < slider.width - handle.width / 2) { 152 | await page.mouse.move( 153 | handle.x + currentPosition, 154 | handle.y + handle.height / 2 + Math.random() * 10 - 5 155 | ); 156 | 157 | let sliderContainer = await page.$(".slide-verify"); 158 | let sliderImage = await sliderContainer.screenshot(); 159 | 160 | const rembrandt = new Rembrandt({ 161 | imageA: originalImage, 162 | imageB: sliderImage, 163 | thresholdType: Rembrandt.THRESHOLD_PERCENT, 164 | }); 165 | 166 | let result = await rembrandt.compare(); 167 | let difference = result.percentageDifference * 100; 168 | 169 | if (difference < bestSlider.difference) { 170 | bestSlider.difference = difference; 171 | bestSlider.position = currentPosition; 172 | } 173 | 174 | currentPosition += 5; 175 | } 176 | 177 | await page.mouse.move( 178 | handle.x + bestSlider.position, 179 | handle.y + handle.height / 2, 180 | { steps: 10 } 181 | ); 182 | await page.mouse.up(); 183 | 184 | await page.waitFor(3000); 185 | 186 | // success! 187 | 188 | await browser.close(); 189 | } 190 | 191 | run(); 192 | ``` 193 | 194 | 这里我们采用了简单的图片对比的方式,即在滑动过程中,如果发现了有符合阈值的差异,则认为是已经滑动成功。 195 | 196 | ## Spider 配置 197 | 198 | 在 [Cendertron](https://github.com/wx-chevalier/Chaos-Scanner/tree/master/cendertron) 中,提供了一类特殊的 Slider Captcha Monkey,在传入的 SpiderOption 中添加如下参数即可: 199 | 200 | ```ts 201 | export interface SpiderOption { 202 | allowRedirect: boolean; 203 | depth: number; 204 | // 页面插件 205 | monkies?: { 206 | sliderCaptcha: { 207 | sliderElementSelector: string; 208 | sliderHandleSelector: string; 209 | }; 210 | }; 211 | } 212 | ``` 213 | 214 | # 延伸阅读 215 | 216 | 您可以通过以下任一方式阅读笔者的系列文章,涵盖了技术资料归纳、编程语言与理论、Web 与大前端、服务端开发与基础架构、云计算与大数据、数据科学与人工智能、产品设计等多个领域: 217 | 218 | - 在 Gitbook 中在线浏览,每个系列对应各自的 Gitbook 仓库。 219 | 220 | | [Awesome Lists](https://ngte-al.gitbook.io/i/) | [Awesome CheatSheets](https://ngte-ac.gitbook.io/i/) | [Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews) | [Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps) | [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) | [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) | 221 | | ---------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | 222 | 223 | | [编程语言理论](https://ngte-pl.gitbook.io/i/) | [Java 实战](https://ngte-pl.gitbook.io/i/go/go) | [JavaScript 实战](https://github.com/wx-chevalier/JavaScript-Notes) | [Go 实战](https://ngte-pl.gitbook.io/i/go/go) | [Python 实战](https://ngte-pl.gitbook.io/i/python/python) | [Rust 实战](https://ngte-pl.gitbook.io/i/rust/rust) | 224 | | --------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------- | 225 | 226 | | [软件工程、数据结构与算法、设计模式、软件架构](https://ng-tech.icu/books/SoftwareEngineering-Notes/) | [现代 Web 全栈开发与工程架构](https://ngte-web.gitbook.io/i/) | [大前端混合开发与数据可视化](https://ngte-fe.gitbook.io/i/) | [服务端开发实践与工程架构](https://ng-tech.icu/books/Backend-Notes/#/) | [分布式基础架构](https://ng-tech.icu/books/DistributedSystem-Notes/#/) | [数据科学,人工智能与深度学习](https://ng-tech.icu/books/AI-Notes/#/) | [产品设计与用户体验](https://ng-tech.icu/books/Product-Notes/#/) | 227 | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- | 228 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2024/2024~过去五年中我在软件产品研发中犯下的二十多个错误的自省.md: -------------------------------------------------------------------------------- 1 | #! https://zhuanlan.zhihu.com/p/706845920 2 | ![职业背景图](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/cQE3GhrPiI6f.png) 3 | 4 | [toc] 5 | 6 | # 过去五年中我在软件产品研发中犯下的二十多个错误的自省 7 | 8 | 谨以此文,向这些年来被我的认知错误坑惨的 {已经离开的,仍在努力的} 伙伴们致以最深切的歉意。 9 | 10 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/uPic/r0etWgkKiXdb.png) 11 | 12 | ## 0.1 错误带来的现象/结果是什么? 13 | 14 | - **产品不如人意** 15 | 16 | - 产品的影响力、呈现度不如预期,外部人员对于产品认知较为混乱; 17 | - 产品的实际用户、收入不如预期,产品的预定价值无法体现,成为业务瓶颈; 18 | - 产品如同鸡肋,食之无味,弃之可惜; 19 | 20 | - **进度不及预期** 21 | 22 | - 研发失序,恶性延期,研发整体效能低于预期,蹒跚难行; 23 | - 业务方无法信任、依赖研发给出的时间表以进行业务活动; 24 | - 核心业务阻塞点成了房间里的大象,不断拉扯,纠缠不清,分散精力而难以解决; 25 | 26 | - **团队陷入焦虑** 27 | 28 | - 缺乏成就感、获得感,忙忙碌碌,碌碌无为,精力投入如泥牛入海; 29 | - 内外部的信任危机,团队的凝聚力、向心力逐渐消失; 30 | - 团队成员丧失驱动力,缺乏对于组织的信心,容易抑郁,最终导致团队解体; 31 | 32 | ## 0.2 为什么会犯错? 33 | 34 | - **缺乏从零到一的完整软件产品从需求管理、产品定义与设计、项目管理、研发过程管理、版本交付/部署、产品后运营等全流程的经验;** 35 | 36 | - 对于产品全生命周期的链路没有清晰的认知,容易陷入某个环节的细节,而忽略了整体的把控; 37 | - 对于每个环节的核心抓手、方式方法、损益对比没有清晰的认知; 38 | 39 | - **职业性不足,缺乏对于产研团队的实务性管理经验;** 40 | 41 | - 不明白内外部真正想要地是什么; 42 | - 对于外部的愿景,要平衡好**核心产品力、商业化的需求、形式化的需求、业务短期需求、大客户支持**等诸方面; 43 | - 对于内部的愿景,要从追求 WLB 到追求实际的物质回报、个人成长、成就感获得感等诸方面;我们团队主要由外地来沪的进城打工仔组成,能够让他们真的劳有所得,在大城市立足是我们的责任; 44 | - 不能有效地将理论方法融入实践,不断地尝试不同的管理手段方式,难以识别适合于当前团队的真正管理抓手; 45 | - 不能够公私分离,在很多事情上容易夹杂个人情感; 46 | 47 | - **缺乏对于行业、业务、客户、国际化等多场景的经验认知;** 48 | 49 | - 不能有效地把握核心需求、痛点、价值点;容易闭门造车; 50 | - 无法将长期地产品建设,围绕不同阶段的业务性需求进行有效切分,导致产品与业务的不匹配; 51 | 52 | ## 0.3 为什么下文有很多自相矛盾的断言? 53 | 54 | 我们听过很多道理,却依然过不好此生,纸上得来终觉浅,绝知此事要躬行。就像软件工程中没有银弹一样,没有一成不变的规则,只有适合当前情况的最佳实践。所以,我在这里列出的错误,有些是因为我没有遵守某个规则,有些是因为我过度遵守了某个规则,有些是因为我没有找到适合当前情况的规则。 55 | 56 | 没有银弹,只有 Tradeoff。 57 | 58 | # 1. 组织建设 59 | 60 | ## 1.1 依赖团队拿到结果,重视多层次/梯队的团队建设,重视岗位流程制度、角色分配与培养等组织建构的关键流程 61 | 62 | - 在组织建设的早期,人员较少,可以强调个人主义,但是随着场景复杂性的提升,必然要转向团队主义,依赖团队共同拿到结果; 63 | 64 | - 麻雀虽小,五脏俱全,即使组织再小(三人及以上)也要构建与之相匹配的流程制度;要明确组织里面的岗位角色,角色之间的流转机制;人不足的时候可以一人多岗/一人多角色,但是要避免职责交叉、角色混乱; 65 | 66 | ## 1.2 负责人要重视成员招募,要重视组织承载力的提升,要选择与组织相匹配的合适的人 67 | 68 | - 要认识到团队建构的必要人员要求,在预算允许的情况下,要尽可能地为团队争取资源,提高团队达成目标的概率; 69 | 70 | - 巧妇难为无米之炊,忽略客观事实而只讲唯心主义往往会被现实暴击;人员不足往往会导致组织混乱,核心技术人员忙于琐事,核心研发时间无法保障; 71 | 72 | - 团队负责人要以成员招募为要务,不等不靠,积极主动地从各种渠道寻找合适的人才,必要的时候持续进行人员的滚动替换; 73 | 74 | - 要正视组织的承载力,要选择合适的人、臭味相投的人,坦然接受人与组织的不匹配 75 | 76 | - 不能单纯地追求高学历、高能力、高背景,在组织承载力的基础上,尽可能选择优秀的人,充分考虑到人员的稳定性、适应性、成长性、合作性等方面的重要性; 77 | - 不能因私废公,要积极拥抱不同出事风格的人,要积极接受比自己优秀的人并向他们学习; 78 | 79 | ## 1.3 明确团队的核心价值目标,以拿结果为第一性目标,兼顾展示性、短期救火、特别大客户等时机情况 80 | 81 | - 核心价值目标是动态变化的,要拥抱变化,因时而异,但是要保持团队的认知一致性; 82 | 83 | - 在团队工作的过程中,即使领导或其他决策者在节点会议上明确好了目标,但是往往因为各种原因,可能会插手、委派各种临时性的、非主线的任务;我们要做好不同目标之间资源投入的平衡性,以核心目标、核心价值为骨,守正出奇; 84 | 85 | - 人们可能会因为你过程的付出而鼓掌,但是最终一定只为结果买单;没结果的事情可以做,但是少做、慎做; 86 | 87 | ## 1.4 平衡好个人影响力与组织协作性;推崇职业性,尊重组织,尊重角色与流程,相信团队,权责统一 88 | 89 | - 在创业团队中,我们**不是在划分权力,而是在划分责任**;权力来源于责任的承担,谁负责,谁决定;谁决定,谁负责; 90 | 91 | - 在团队扩张的过程中,老员工往往会被迫走出舒适圈,改变自己的习惯;这时候要推崇团队的职业性,回到岗位、角色职责处理好责任的交接,不要因为个人的影响力而影响团队的协作性; 92 | 93 | - 我们要尊重组织、尊重角色,避免因为个人的影响力而破坏组织的协作性;个体可以在讨论中积极发言,可以在评审中提出异议,但是在决策后要尊重角色的职责,不能妄加干预; 94 | 95 | ## 1.5 以角色赋能,关注个人的获得感与成长感,重视团队的凝聚力与向心力 96 | 97 | - 要积极为团队成员考虑,不能只空谈空想 PUA,要关注他们获得的实际物质回报,要关注他们的成长感、成就感; 98 | 99 | - 要主动地考虑到团队成员的个人发展的诉求,主动地与他们沟通职业规划乃至于人生规划;尽可能将他们个人的诉求与团队的发展方向相结合,最终让个人与团队取得双赢; 100 | 101 | - 要推崇简单、真诚、直接的团队文化与沟通方式,避免因为猜忌、置气、对立等导致的团队内耗;要避免出现团队的黑洞; 102 | 103 | ## 1.6 重视绩效管理,要求他人对过程负责,要求自己对结果负责 104 | 105 | - 要重视绩效管理的制度性与仪式感,以年度绩效与季度绩效为抓手,一对一的进行绩效沟通与复盘;将团队核心目标拆解到成员的绩效目标,以绩效目标来规范团队成员的行动方向; 106 | 107 | - 在团队成员的考核中,强调以绩效目标的结果进行考核,但是也要充分考虑到过程中复杂因素的影响;对于复杂问题要求成员按照既定的规则、规范来,保证过程的正当性;但是对团队负责人要求对结果负责,要从结果倒推需求成文的各种制度规范; 108 | 109 | # 2. 产品设计 110 | 111 | ## 2.1 重视产品定义,产品定义要抽象而具体 112 | 113 | - 产品定义是产品的灵魂,是凝聚团队认知的核心;产品定义是随着产品的认知不断迭代、演化的,我们可能给不出一个完美的产品定义,但是我们一定要给出产品定义; 114 | 115 | - 产品定义是分层次的、分目标的,产品定义是统一而多样的,我们要在统一的产品定义之上,对于不同背景的对象,基于他们的认知基础给出符合他们预期的阐释; 116 | 117 | - 产品定义是对业务需求、功能定义、产品基建、技术能力的综合抽象,产品定义不能是对客户需求、业务语言的简单翻译,要结合自身的理解、各关联方的诉求形成的合理抽象; 118 | 119 | - 产品定义是要务实、具体、有体感、可操作的,产品抽象绝不能只务虚不务实,产品定义要能够让听众产生能够实际解决的问题的联想,要能够与听众产生共鸣;; 120 | 121 | ## 2.2 重视需求管理与问题定义,既不能闭门造车,忽略业务;也不能盲目跟风,缺乏抽象归纳 122 | 123 | - 需求管理是多维的,以售前/项目为核心,与客户之间的需求反馈表;以产品经理为核心,要建立包含业务需求、产品基建、技改优化等多类型的统一需求管理表;以交付为核心,要建立问题反馈表,问题的一部分可以认为是需求; 124 | 125 | - 团队间不同角色之间的沟通,要以需求为载体进行沟通,产品经理既要对需求的描述进行一定提炼、抽象,同时要避免需求异化,导致实际的解决方案与原始需求不匹配; 126 | 127 | - 要正确面对来自领导的「不合理」需求,不能简单虚与委蛇、阳奉阴违,对于关键需求要反复确认,对于不合理需求可以多方论证,要求给出需求关联的量化指标;可以做好需求的复盘,在需求实现后基于指标对需求的合理性再次进行论证,作为前车之鉴; 128 | 129 | ## 2.3 产品设计要重视竞品分析,它山之石,可以攻玉,不能闭门造车 130 | 131 | - 产品设计首先要拿来主义,要多从竞品中学习,分析其缺陷与优势,不能全抄,也不能不抄;要尊重客户已经被竞品培养好的使用习惯于认知,要做微创新,慎做颠覆式创新; 132 | 133 | - 要多从 Youtube 等平台了解竞品实际的使用演示,要多从 Reddit、Discord 等社区多多了解竞品的用户反馈,要多从 Github 等开源社区了解竞品的技术实现; 134 | 135 | ## 2.4 重视产品路线图,平衡好短期业务需求与中长期产品基建 136 | 137 | - 产品定义是站在某个时间节点对于产品的整体概述,是相对静态的表述;只谈产品定义不谈产品路线图,可能会导致产品真实落地的遥遥无期;产品路线图与里程碑是给与内外部对产品信心的重要抓手; 138 | 139 | - 产品路线图要真实反馈产品的发展方向与演化路径,要以需求为最小单元进行排布,要重视里程碑的标志性,不能眉毛胡子一把抓; 140 | 141 | ## 2.5 重视统一语言,保证团队内成员对于业务的理解、关键术语的认知趋于一致 142 | 143 | - 要重视团队内对于关键概念的统一术语(中英文),避免因为术语的混乱导致沟通的困难; 144 | 145 | - 要让技术同学反讲需求、产品设计给产品经理,要让产品经理反讲核心技术设计的理念给技术同学; 146 | 147 | ## 2.6 重视非功能性需求定义,非功能性需求极大影响产品架构与技术架构 148 | 149 | - 产品经理要能够预期到从产品功能开发好到客户真实用的爽之间的非功能性需求,要主动引导技术人员思考像现场部署、问题调试、环境复现、性能优化、安全防护等方面的需求; 150 | 151 | - 产品的可调试性、可观测性、可维护性、可扩展性、可靠性、安全性、性能等等,都是非功能性需求的体现; 152 | 153 | ## 2.7 重视异常场景设计,充分考虑失效安全、防呆防错,避免产品断头路 154 | 155 | - 产品经理在进行产品设计时候,要合理地考虑产品的岔路,既不能只考虑主场景、主流程,也不能太过发散,导致研发任务的量增加很多; 156 | 157 | - 我们不能按照自己的理解去假设客户会按照我们的预期去使用产品,我们要考虑到客户的各种可能的使用场景、使用习惯、使用心理; 158 | 159 | - 要重视客户使用的心理门槛,就像 iPhone 经典的 Home 键,要给用户能够简单重置、快速解决问题的途径,避免让用户产生不安全感,或者对犯错之后的高代价惩罚感; 160 | 161 | # 3. 项目管理 162 | 163 | ## 3.1 以项目为载体进行资源投入与跨部门人员组织,重视项目流程的仪式感,平衡好形式主义与实用投入,重视制度的附加成本 164 | 165 | - 项目是连接业务/产品目标与资源投入的最小单元,项目包含了项目经理、产品经理、SE 及其他项目成员,项目是进行跨部门、跨团队、跨岗位的协作的有效抓手; 166 | 167 | - 项目经理要注重项目流程的仪式感,平衡好形式主义与实用投入,激发项目成员的工作热情; 168 | 169 | ## 3.2 重视项目的里程碑与路线图的真实性,不断对比迭代,逐步让预估逼近真实 170 | 171 | - 项目里程碑与产品路线图有一定的关联性,但是项目的里程碑与路线图可以考虑到更多的实际因素,特别是来自于临时目标、大客户需求的影响; 172 | 173 | - 项目路线图要时间维度上明确、具体,要不断地对预估值与实际值的差异进行复盘,逐步让预估逼近真实; 174 | 175 | ## 3.3 重视文档沉淀,以文档作为交流的载体,对文档进行统一、结构化管理,明确文档的负责人,避免死文档 176 | 177 | - 要重视培养团队成员的文档习惯与文档规范,鼓励大家不要只是口耳相传,要注重文档的沉淀;在讨论的时候要主动倒逼团队成员以文档的方式呈现; 178 | 179 | - 写文档的时候要充分考虑受众的理解能力、阅读体感,不能只是为了写文档而写文档,只是为了让自己看而写文档; 180 | 181 | - 文档要指定专人进行持续地整理、规范,文档不宜太过散乱或者目录过深,要选择低门槛的文档工具,最好与当前的主要办公软件相结合,要让团队成员简单、快捷地即可以写作、可以阅读; 182 | 183 | ## 3.4 重视 DoR(Definition of Ready) 与 DoD(Definition of Done),降低各角色的摩擦成本 184 | 185 | - DoR:PRD 完整且通过评审、对外需求 UED 出图、技术方案通过评审、产品完成依赖/影响评估并与研发确认、研发反讲保证与产品认知一致、有第三方依赖需明确联系人和排期、需求故事首先满足大需求拆解为可一次迭代交付的小需求,其次外部依赖需要安排在同一迭代周期交付联调; 186 | 187 | - DoD:包含 Code Review、自测、功能测试、回归测试、产品验收测试、预发与线上一致、配置文件正确、依赖资源正常、灰度上线先验证、产品、UED 验收、通过 UAT(用户验收); 188 | 189 | ## 3.5 重视项目内外利益关联方的主动沟通,积极、主动暴露风险,对齐认知 190 | 191 | - 项目经理要主动与项目内外利益关联方进行沟通,要积极、主动暴露风险,要对齐认知,避免因为信息不对称导致的沟通障碍; 192 | 193 | - 要考虑依赖方自身的工作安排、规划,要对依赖方可能的延期、延误、交付不符预期等情况进行预判,释放风险,提前准备预案; 194 | 195 | ## 3.6 重视核心研发时间投入的保证 196 | 197 | - 要积极主动关注团队核心研发人员的时间分配,要保证核心研发人员的时间投入在核心研发任务上,避免因为琐事、非核心任务的干扰,导致核心研发任务的延期; 198 | 199 | # 4. 研发过程 200 | 201 | ## 4.1 重视业务建模,业务类研发避免盲目动手 202 | 203 | - 开发不能拿到任务就埋头写代码,要注意先做业务建模、技术设计,要认识到慢就是快,基础不牢,地动山摇; 204 | 205 | - 业务建模包含业务实体建模、实体流程建模、数据库建模、接口建模等环节,建模的结果要在产研团队内充分讨论、周知,要保证业务建模的一致性、完整性、可理解性; 206 | 207 | ## 4.2 重视技术设计、技术评审,识别好技术风险点与外部依赖项;不追求造轮子,不追求技术完美,不追求使用新技术 208 | 209 | - 在进行关键模块的技术选型、编码的时候,要进行基于文档的技术设计,要识别好技术风险点与外部依赖项; 210 | 211 | - 技术评审可以基于技术语言表达,但是要尽可能地让与会者听得懂;技术评审要讲清楚技术方案、可行性论证、关键技术项、难点技术项、在执行过程中可能面临的风险判断及其诱发原因分析、技术方案风险的预设解决预案; 212 | 213 | - 对于中间件、非核心业务组件等,能买则买,能租则租,能用则用,能不用则不用;看似自己动手做省了钱,实际上浪费了昂贵的研发人力资源,浪费了业务的机会成本; 214 | 215 | ## 4.3 重视 Code Review,及时矫正项目的岔路,审慎进行大规模重构,合理对待技术负债 216 | 217 | - 在新人较多的团队内,团队负责人要积极组织 Code Review、集体 Review,要及时矫正项目的岔路,避免因为新人的不熟悉导致的项目的偏离; 218 | 219 | - 不能因为项目的技术负债过多,就盲目进行大规模重构,要审慎进行大规模重构,要合理对待技术负债,要在项目的迭代中逐步还清技术负债; 220 | 221 | ## 4.4 避免过早优化、过度优化,但是要对业务阻塞点敏感 222 | 223 | - 在技术设计中要明确好产品的性能要求基准线,在基准线之上的话不要过度优化、过早优化;优先以实现业务目标为第一位,不能因为技术的优化而导致业务目标的延期; 224 | 225 | - 可以在一定时期内,接受房间里的大象,但是要对业务的核心阻塞点敏感,充分识别哪些技术优化是重要紧急的,哪些是重要不紧急的; 226 | 227 | ## 4.5 重视团队测试文化的培育,测试工作是开发工作的一部分,测试用例要不晚于开发过程 228 | 229 | - 要鼓励开发自测,要重视代码的单元测试用例、集成测试用例; 230 | 231 | - 测试人员要在 PRD 评审/技术评审后完成测试用例的设计,要将核心链路的测试用例在团队周知,鼓励开发人员提测前或发布前进行自测,避免反复联调导致的时间损失,降低因为测试人员对系统的不熟悉导致的漏测、误测; 232 | 233 | # 5. 发布与发布后运营 234 | 235 | ## 5.1 重视技术支持团队的建设,以多阶段客户体验而第一位,面对产品有缺陷的必然周期 236 | 237 | - 要接受产品是必然存在缺陷的,不能对客户的困扰置之不理,不能一味地推脱给后续的产品优化;要以技术支持团队帮助客户尽可能顺滑地使用好产品; 238 | 239 | - 要明确技术支持团队与开发团队的职责边界,不能让现场技术支持、解决问题消耗太多开发的时间,而延误后续地产品迭代速度; 240 | 241 | ## 5.2 重视线上可用性指标、可观测性的建设 242 | 243 | - 有问题不可怕,怕的是问题不清晰、不明确、不可测、不可量化;要重视线上可用性指标、可观测性的建设,要让问题尽早暴露,尽早解决; 244 | 245 | - 可观测性要包括日志、监控、报警、灰度、AB 测试等方面,要让团队成员对于产品的运行状态有清晰的认知,要有简单、快速可访问的面板; 246 | 247 | ## 5.3 重视异常预案准备,出现问题首要解决问题,避免阻塞,而不是定位根因 248 | 249 | - 出现问题首要解决问题,避免阻塞,而不是定位根因;要重视异常预案准备,要让团队成员对于异常情况有清晰的认知,有明确的处理流程; 250 | 251 | - 不能因为问题的复杂性、深度而导致问题的解决时间过长,要避免因为问题的解决时间过长而导致客户的不满; 252 | 253 | ## 5.4 重视与客户的 SOW 及合同约定,明确系统边界、职责边界、协议接口 254 | 255 | - 要重视与客户的 SOW 及合同约定,要明确系统边界、职责边界、协议接口,要避免因为客户的需求不断扩张导致产品的功能膨胀,要保证产品的核心功能的稳定性; 256 | 257 | - 不要自我感动,好心办坏事,要充分重视客户的诉求,将客户放在第一位;但是也要做好自我保护,不能因为客户诉求而乱了自己的阵脚、乱了自己的计划,要以产品为骨,个性化为皮; 258 | 259 | ## 5.5 重视问题台账的建设,避免一团乱麻,纠缠不清,客户失去耐心 260 | 261 | - 出现问题,特别是反复出现问题后,一定要建立问题台账,不能让问题一团乱麻,纠缠不清,客户失去耐心;要让问题抽丝剥茧、条分缕析、井井有条地解决; 262 | 263 | - 要主动组织与客户的复盘会议,让客户明确团队解决问题的决心、解决问题的思路与方法;要让客户对团队保持信心; 264 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-004-0-Cendertron,动态爬虫与敏感信息泄露检测.md: -------------------------------------------------------------------------------- 1 | ![](https://website/6pYfMBv7/image.png) 2 | 3 | # Cendertron,动态爬虫与敏感信息泄露检测 4 | 5 | > Cendertron = Crawler + Rendertron 6 | 7 | Cendertron 是基于 Puppeteer 的 Web 2.0 动态爬虫与敏感信息泄露检测工具。其依托于 [xe-crawler](https://github.com/wx-chevalier/xe-crawler) 的通用爬虫、调度与缓存模型,新增了 Monkey Test 以及 Request Intercept 等特性,以期尽可能多地挖掘页面与请求。同时针对渗透测试的场景,Cendertron 内置了目录扫描、敏感文件扫描的能力,能够模拟用户实际在浏览器登录状态下的自定义字典爆破。Cendertron 在大量实践的基础上设置了自身的去重策略,能够尽可能地避免重复爬取,加快扫描速度。Cendertron 同时也是正在闭源开发的 [Chaos-Scanner](https://github.com/wx-chevalier/Chaos-Scanner) 模块化安全扫描解决方案的一部分,为基础扫描与智能扫描提供前置输入。 8 | 9 | ![](https://website/8PcCmt6t/image.png) 10 | 11 | # Usage | 使用 12 | 13 | ## Locally Development | 本地开发 14 | 15 | 在本地开发中,我们只需要如正常的 Node 项目一样启动,其会使用 Puppeteer 内置的 Headless Chrome 来执行界面渲染操作: 16 | 17 | ```sh 18 | $ git clone https://github.com/wx-chevalier/Chaos-Scanner 19 | $ cd cendertron 20 | $ yarn install 21 | $ npm run dev 22 | ``` 23 | 24 | 启动之后可以按提示打开浏览器界面: 25 | 26 | ![](https://website/Tw8Y2cKc/image.png) 27 | 28 | 这里我们可以以 [DVWA](http://www.dvwa.co.uk/) 作为测试目标,在输入框内输入 `http://localhost:8082/` 然后执行爬取,即可得到如下结果: 29 | 30 | ```json 31 | { 32 | "isFinished": true, 33 | "metrics": { 34 | "executionDuration": 116177, 35 | "spiderCount": 51, 36 | "depth": 4 37 | }, 38 | "spiderMap": { 39 | "http://localhost:8082/vulnerabilities/csrf/": [ 40 | { 41 | "url": "http://localhost:8082/vulnerabilities/view_source.php?id=csrf&security=low", 42 | "parsedUrl": { 43 | "host": "localhost:8082", 44 | "pathname": "/vulnerabilities/view_source.php", 45 | "query": { 46 | "id": "csrf", 47 | "security": "low" 48 | } 49 | }, 50 | "hash": "localhost:8082#/vulnerabilities/view_source.php#idsecurity", 51 | "resourceType": "document" 52 | } 53 | // ... 54 | ] 55 | } 56 | } 57 | ``` 58 | 59 | 需要说明的是,因为 DVWA 是需要登录后爬取,因此如果想进行完整的测试请参考下文的 POST 方式创建任务。 60 | 61 | ## Deploy in Docker | 部署在 Docker 中 62 | 63 | ```sh 64 | # build image 65 | $ docker build -t cendertron . 66 | 67 | # run as contaner 68 | $ docker run -it --rm -p 3033:3000 --name cendertron-instance cendertron 69 | 70 | # run as container, fix with Jessie Frazelle seccomp profile for Chrome. 71 | $ wget https://raw.githubusercontent.com/jfrazelle/dotfiles/master/etc/docker/seccomp/chrome.json -O ~/chrome.json 72 | $ docker run -it -p 3033:3000 --security-opt seccomp=$HOME/chrome.json --name cendertron-instance cendertron 73 | 74 | # or 75 | $ docker run -it -p 3033:3000 --cap-add=SYS_ADMIN --name cendertron-instance cendertron 76 | 77 | # use network and mapping logs 78 | $ docker run -d -p 3033:3000 --cap-add=SYS_ADMIN --name cendertron-instance --network wsat-network cendertron 79 | ``` 80 | 81 | ## Deploy as FC | 以函数式计算方式部署 82 | 83 | Install cendertron from NPM: 84 | 85 | ```sh 86 | # set not downloading chromium 87 | $ PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true 88 | 89 | $ yarn add cendertron 90 | # or 91 | $ npm install cendertron -S 92 | ``` 93 | 94 | Import `Crawler` and use in your code: 95 | 96 | ```js 97 | const crawler = new Crawler(browser, { 98 | onFinish: () => { 99 | callback(crawler.spidersRequestMap); 100 | }, 101 | }); 102 | 103 | let pageUrl = 104 | evtStr.length !== 0 && evtStr.indexOf("{") !== 0 105 | ? evtStr 106 | : "https://www.aliyun.com"; 107 | 108 | crawler.start(pageUrl); 109 | ``` 110 | 111 | If you want to use it in Alibaba Function Computing Service, [cendertron-fc](./deploy/fc) provides simple template. 112 | 113 | # Strategy | 策略 114 | 115 | Cendertron 的内部架构如下所示: 116 | 117 | ![](https://website/LsPNxSzM/image.png) 118 | 119 | Crawler Scheduler 会负责定期重启 Headless Chrome 以控制缓存,并且针对待爬取的请求返回已缓存的内容。Crawler Scheduler 会为每个无缓存的目标创建 Crawler,Crawler 会根据策略创建不同的 Spider,每个 Spider 依次执行并且将结果推送到 Crawler 中;Crawler 在全部 Spider 执行完毕后会将结果推送到缓存并且通知 Crawler Scheduler: 120 | 121 | ```ts 122 | export interface CrawlerOption { 123 | // 爬取深度,如果设置为 1 就是单页面爬虫 124 | depth: number; 125 | // 爬虫的唯一编号 126 | uuid?: string; 127 | // 爬虫缓存 128 | crawlerCache?: CrawlerCache; 129 | 130 | // 单页面爬取出的最多的子节点数 131 | maxPageCount: number; 132 | // 总站点的总延时 133 | timeout: number; 134 | // 单页面的延时 135 | pageTimeout: number; 136 | 137 | // 是否仅爬取同站内容 138 | isSameOrigin: boolean; 139 | // 是否忽略媒体资源 140 | isIgnoreAssets: boolean; 141 | // 是否设置为移动模式 142 | isMobile: boolean; 143 | // 是否开启缓存 144 | useCache: boolean; 145 | // 是否使用弱口令扫描 146 | useWeakfile: boolean; 147 | 148 | // 页面 Cookie 149 | cookie: string; 150 | // 页面的 localStorage 151 | localStorage: object; 152 | } 153 | ``` 154 | 155 | ## 模拟操作 156 | 157 | ![](https://website/0Qp5zJm1/image.png) 158 | 159 | Cendertron 内置了 Click Monkey, Gremlins 等多种随机执行器,会点击按钮并且执行一些随机操作: 160 | 161 | ```js 162 | function initGermlins() { 163 | gremlins 164 | .createHorde() 165 | .gremlin(gremlins.species.formFiller()) 166 | .gremlin(gremlins.species.clicker().clickTypes(["click"])) 167 | .gremlin(gremlins.species.toucher()) 168 | .gremlin(gremlins.species.scroller()) 169 | .gremlin(function () { 170 | if ("$" in window) { 171 | window.$ = function () {}; 172 | } 173 | }) 174 | .unleash(); 175 | } 176 | ``` 177 | 178 | ## 请求监听与提取 179 | 180 | Cendertron 会监听打开的页面与所有的 Ajax 请求: 181 | 182 | ```js 183 | await page.setRequestInterception(true); 184 | 185 | // 设置目标监听 186 | const targetCreatedListener = (target: puppeteer.Target) => { 187 | const opener = target.opener(); 188 | 189 | if (!opener) { 190 | return; 191 | } 192 | 193 | // 记录所有新打开的界面 194 | opener.page().then((_page) => { 195 | if (_page === page) { 196 | target.page().then((_p) => { 197 | if (!_p.isClosed()) { 198 | openedUrls.push(target.url()); 199 | _p.close(); 200 | } 201 | }); 202 | } 203 | }); 204 | }; 205 | 206 | // 监听所有当前打开的页面 207 | browser.on("targetcreated", targetCreatedListener); 208 | 209 | page.on("request", (interceptedRequest) => { 210 | // 屏蔽所有的图片 211 | if (isMedia(interceptedRequest.url())) { 212 | interceptedRequest.abort(); 213 | } else if ( 214 | interceptedRequest.isNavigationRequest() && 215 | interceptedRequest.redirectChain().length !== 0 216 | ) { 217 | interceptedRequest.continue(); 218 | } else { 219 | interceptedRequest.continue(); 220 | } 221 | 222 | requests.push(transformInterceptedRequestToRequest(interceptedRequest)); 223 | 224 | // 每次调用时候都会回调函数 225 | cb(requests, openedUrls, [targetCreatedListener]); 226 | }); 227 | ``` 228 | 229 | ## URL 归一化与过滤 230 | 231 | 所谓的 URL 归一化,就是将同一资源下被随机串处理的 Path 们泛化成同一个 Pattern,从而减少重复爬取的数目;当然,在安全扫描的场景下我们需要进行尽可能地去重,而在数据爬取的场景下,则往往不需要进行过多的过滤。目前 Cendertron 只是采取了简单的 UTL 归一化算法,并且使用 Set 进行过滤,如果你想了解更复杂的 URL 归一化与聚类算法。 232 | 233 | ```js 234 | export function hashUrl(url: string): string { 235 | // 将 URL 进行格式化提取 236 | const _parsedUrl = parse(url, url, true); 237 | 238 | let urlHash = ""; 239 | 240 | if (!_parsedUrl) { 241 | return urlHash; 242 | } 243 | 244 | // 提取出 URL 中的各个部分 245 | const { host, pathname, query, hash } = _parsedUrl; 246 | 247 | // 判断是否存在查询参数 248 | const queryKeys = Object.keys(query).sort((k1, k2) => (k1 > k2 ? 1 : -1)); 249 | 250 | if (queryKeys.length > 0) { 251 | // 如果存在查询参数,则默认全路径加查询参数进行解析 252 | urlHash = `${host}#${pathname}#${queryKeys.join("")}`; 253 | } else { 254 | // 如果不存在查询参数,则去除 pathname 的最后一位,并且添加进来 255 | const pathFragments = pathname.split("/"); 256 | 257 | // 判断路径是否包含多个项目,如果包含,则将所有疑似 UUID 的替换为 ID 258 | if (pathFragments.length > 1) { 259 | urlHash = `${host}#${pathFragments 260 | .filter((frag) => frag.length > 0) 261 | .map((frag) => (maybeUUID(frag) ? "id" : frag)) 262 | .join("")}`; 263 | } else { 264 | urlHash = `${host}#${pathname}`; 265 | } 266 | } 267 | 268 | if (hash) { 269 | const hashQueryString = hash.replace("#", ""); 270 | const queryObj = parseQuery(hashQueryString); 271 | Object.keys(queryObj).forEach((n) => { 272 | if (n) { 273 | urlHash += n; 274 | } 275 | }); 276 | } 277 | 278 | return urlHash; 279 | } 280 | ``` 281 | 282 | ## 权限认证 283 | 284 | 以 DVWA 为例,可以用 Docker 快速开启测试环境:`docker run --rm -it -p 8082:80 vulnerables/web-dvwa`,然后向 `/scrape` 提交 POST 请求: 285 | 286 | ```json 287 | { 288 | "url": "http://localhost:8082/vulnerabilities/csrf/", 289 | "cookies": "tid=xx; PHPSESSID=xx; security=low" 290 | } 291 | ``` 292 | 293 | 在 Cendertron 中,其会使用如下方式设置 Cookie: 294 | 295 | ```js 296 | const puppeteer = require("puppeteer"); 297 | 298 | let rockIt = async () => { 299 | const browser = await puppeteer.launch({ headless: false }); 300 | const page = await browser.newPage(); 301 | var cookie = [ 302 | // cookie exported by google chrome plugin editthiscookie 303 | { 304 | domain: "httpbin.org", 305 | expirationDate: 1597288045, 306 | hostOnly: false, 307 | httpOnly: false, 308 | name: "key", 309 | path: "/", 310 | sameSite: "no_restriction", 311 | secure: false, 312 | session: false, 313 | storeId: "0", 314 | value: "value!", 315 | id: 1, 316 | }, 317 | ]; 318 | await page.setCookie(...cookie); 319 | await page.goto("https://httpbin.org/headers"); 320 | console.log(await page.content()); 321 | await page.close(); 322 | await browser.close(); 323 | }; 324 | rockIt(); 325 | ``` 326 | 327 | 未来也会支持 localStorage 等存储方式: 328 | 329 | ```js 330 | await page.evaluate(() => { 331 | localStorage.setItem("token", "example-token"); 332 | }); 333 | ``` 334 | -------------------------------------------------------------------------------- /02~月熊的成长之路/2019/2019-004-1-Cendertron,安全爬虫的分布式与稳定性优化之路.md: -------------------------------------------------------------------------------- 1 | ![](https://camo.githubusercontent.com/ddb37bd59e73e8e19e18c9b88c644b64ab477864/68747470733a2f2f692e706f7374696d672e63632f76484d4a747764342f696d6167652e706e67) 2 | 3 | # Cendertron,安全爬虫的分布式与稳定性优化之路 4 | 5 | [Cendertron](https://github.com/wx-chevalier/cendertron)是基于 Puppeteer 的 Web 2.0 动态爬虫与敏感信息泄露检测工具,其为 [Chaos-Scanner](https://github.com/wx-chevalier/Chaos-Scanner) 后续的基础扫描与 POC 扫描提供的扫描的 URL 目标。我们[前文](https://github.com/wx-chevalier/Chaos-Scanner/tree/master/cendertron)介绍了 Cendertron 的基础使用,这里我们针对实际扫描场景下的爬虫参数设计与集群架构进行简要描述。不得不说,再优雅的设计也需要经过大量的数据实践与经验沉淀,与前一个版本的 Cendertron 相比,更多的是来自于细节的适配。 6 | 7 | # 基于 Docker Swarm 的弹性化集群部署 8 | 9 | 在 [Docker 实战](https://ng-tech.icu/books/DistributedSystem-Notes/#/xu-ni-hua-yu-bian-pai/docker)系列中,我们详细介绍了 Docker 及 Docker Swarm 的概念与配置、这里我们也是使用 Docker 提供的 Route Mesh 机制,将多个节点以相同端口暴露出去,这也就要求我们将各个爬虫节点的部分状态集中化存储,这里以 Redis 为中心化存储。 10 | 11 | 实际上,Chaos Scanner 中的 POC 节点与爬虫节点都遵循该调度方式,不过 POC 扫描节点主要是依赖于 RabbitMQ 进行任务分发: 12 | 13 | ![](https://website/Cxp9YMmS/image.png) 14 | 15 | 整体爬虫在扫描调度中的逻辑流如下: 16 | 17 | ![](https://website/Z5P2qkM3/image.png) 18 | 19 | 这里我们可以基于基础镜像编辑 Compose 文件,即 docker-compose.yml: 20 | 21 | ```yml 22 | version: "3" 23 | services: 24 | crawlers: 25 | image: cendertron 26 | ports: 27 | - "${CENDERTRON_PORT}:3000" 28 | deploy: 29 | replicas: 2 30 | volumes: 31 | - wsat_etc:/etc/wsat 32 | 33 | volumes: 34 | wsat_etc: 35 | driver: local 36 | driver_opts: 37 | o: bind 38 | type: none 39 | device: /etc/wsat/ 40 | ``` 41 | 42 | 这里我们将 Redis 的配置以卷方式挂载进容器,在 Chaos Scanner 好,不同设备的统一注册中心即简化为了这个统一的配置文件: 43 | 44 | ```json 45 | { 46 | "db": { 47 | "redis": { 48 | "host": "x.x.x.x", 49 | "port": 6379, 50 | "password": "xx-xx-xx-xx" 51 | } 52 | } 53 | } 54 | ``` 55 | 56 | Redis 配置完毕之后,我们可以通过如下的命令创建服务: 57 | 58 | ```sh 59 | # 创建服务 60 | > docker stack deploy wsat --compose-file docker-compose.yml --resolve-image=changed 61 | 62 | # 指定实例 63 | > docker service scale wsat_crawlers=5 64 | ``` 65 | 66 | 这里我们提供了同时扫描多个目标的创建方式,不同的 URL 之间以 `|` 作为分隔符: 67 | 68 | ```yml 69 | POST /scrape 70 | 71 | { 72 | "urls":"http://baidu.com|http://google.com" 73 | } 74 | ``` 75 | 76 | 在集群运行之后,通过 `ctop` 命令我们能看到单机上启动的容器状态: 77 | 78 | ![](https://website/SK2k9vCV/image.png) 79 | 80 | 使用 `htop` 命令可以发现整个系统的 CPU 调用非常饱满: 81 | 82 | ![](https://website/9QNXMNLX/image.png) 83 | 84 | # 面向失败的设计与监控优先 85 | 86 | 在[测试与高可用保障](https://ng-tech.icu/books/Backend-Notes/#/?q=测试与高可用保障)系列文章中,我们特地讨论过在高可用架构设计中的面向失败的设计原则: 87 | 88 | ![](https://website/zDK3YzGQ/image.png) 89 | 90 | 这些原则中极重要的一条就是监控覆盖原则,我们在设计阶段,就假设线上系统会出问题,从而在管控系统添加相应措施来防止一旦系统出现某种情况,可以及时补救。而在爬虫这样业务场景多样性的情况下,我们更是需要能够及时审视系统的现状,以随时了解当前策略、参数的不恰当的地方。 91 | 92 | 在集群背景下,爬虫的状态信息是存放在了 Redis 中,每个爬虫会定期上报。上报的爬虫信息会自动 Expire,如果查看系统当前状态时,发现某个节点的状态信息不存在,即表示该爬虫在本事件窗口内已经假死: 93 | 94 | ![](https://website/ydSV9b4s/image.png) 95 | 96 | 我们依然通过 `GET /_ah/health` 端口来查看整个系统的状态,如下所示: 97 | 98 | ```json 99 | { 100 | "success": true, 101 | "mode": "cluster", 102 | "schedulers": [ 103 | { 104 | "id": "a8621dc0-afb3-11e9-94e5-710fb88b1291", 105 | "browserStatus": [ 106 | { 107 | "targetsCnt": 4, 108 | "useCount": 153, 109 | "urls": [ 110 | { 111 | "url": "" 112 | }, 113 | { 114 | "url": "about:blank" 115 | }, 116 | { 117 | "url": "" 118 | }, 119 | { 120 | "url": "http://180.100.134.161:8091/xygjitv-web/#/enter_index_db/film" 121 | } 122 | ] 123 | } 124 | ], 125 | "runingCrawlers": [ 126 | { 127 | "id": "dabd6260-b216-11e9-94e5-710fb88b1291", 128 | "entryPage": "http://180.100.134.161:8091/xygjitv-web/", 129 | "progress": "0.44", 130 | "startedAt": 1564414684039, 131 | "option": { 132 | "depth": 4, 133 | "maxPageCount": 500, 134 | "timeout": 1200000, 135 | "navigationTimeout": 30000, 136 | "pageTimeout": 60000, 137 | "isSameOrigin": true, 138 | "isIgnoreAssets": true, 139 | "isMobile": false, 140 | "ignoredRegex": ".*logout.*", 141 | "useCache": true, 142 | "useWeakfile": false, 143 | "useClickMonkey": false, 144 | "cookies": [ 145 | { 146 | "name": "PHPSESSID", 147 | "value": "fbk4vjki3qldv1os2v9m8d2nc4", 148 | "domain": "180.100.134.161:8091" 149 | }, 150 | { 151 | "name": "security", 152 | "value": "low", 153 | "domain": "180.100.134.161:8091" 154 | } 155 | ] 156 | }, 157 | "spiders": [ 158 | { 159 | "url": "http://180.100.134.161:8091/xygjitv-web/", 160 | "type": "page", 161 | "option": { 162 | "allowRedirect": false, 163 | "depth": 1 164 | }, 165 | "isClosed": true, 166 | "currentStep": "Finished" 167 | } 168 | ] 169 | } 170 | ], 171 | "localRunningCrawlerCount": 1, 172 | "localFinishedCrawlerCount": 96, 173 | "reportTime": "2019-7-29 23:38:34" 174 | } 175 | ], 176 | "cache": ["Crawler#http://baidu.com"], 177 | "pageQueueLen": 31 178 | } 179 | ``` 180 | 181 | # 参数调优 182 | 183 | 因为网络震荡等诸多原因,Cendertron 很难保障绝对的稳定性与一致性,更多的也还是在效率与性能之间的权衡。最后我们还是再列举下目前 Cendertron 内置的参数配置,在 `src/config.ts` 中包含了所有的配置: 184 | 185 | ```ts 186 | export interface ScheduleOption { 187 | // 并发爬虫数 188 | maxConcurrentCrawler: number; 189 | } 190 | 191 | export const defaultScheduleOption: ScheduleOption = { 192 | maxConcurrentCrawler: 1, 193 | }; 194 | 195 | export const defaultCrawlerOption: CrawlerOption = { 196 | // 爬取深度 197 | depth: 4, 198 | 199 | // 单爬虫最多爬取页面数 200 | maxPageCount: 500, 201 | // 默认超时为 20 分钟 202 | timeout: 20 * 60 * 1000, 203 | // 跳转超时为 30s 204 | navigationTimeout: 30 * 1000, 205 | // 单页超时为 60s 206 | pageTimeout: 60 * 1000, 207 | 208 | isSameOrigin: true, 209 | isIgnoreAssets: true, 210 | isMobile: false, 211 | ignoredRegex: ".*logout.*", 212 | 213 | // 是否使用缓存 214 | useCache: true, 215 | // 是否进行敏感文件扫描 216 | useWeakfile: false, 217 | // 是否使用模拟操作 218 | useClickMonkey: false, 219 | }; 220 | 221 | export const defaultPuppeteerPoolConfig = { 222 | max: 1, // default 223 | min: 1, // default 224 | // how long a resource can stay idle in pool before being removed 225 | idleTimeoutMillis: Number.MAX_VALUE, // default. 226 | // maximum number of times an individual resource can be reused before being destroyed; set to 0 to disable 227 | acquireTimeoutMillis: defaultCrawlerOption.pageTimeout * 2, 228 | maxUses: 0, // default 229 | // function to validate an instance prior to use; see https://github.com/coopernurse/node-pool#createpool 230 | validator: () => Promise.resolve(true), // defaults to always resolving true 231 | // validate resource before borrowing; required for `maxUses and `validator` 232 | testOnBorrow: true, // default 233 | // For all opts, see opts at https://github.com/coopernurse/node-pool#createpool 234 | }; 235 | ``` 236 | 237 | # 延伸阅读 238 | 239 | 您可以通过以下任一方式阅读笔者的系列文章,涵盖了技术资料归纳、编程语言与理论、Web 与大前端、服务端开发与基础架构、云计算与大数据、数据科学与人工智能、产品设计等多个领域: 240 | 241 | - 在 Gitbook 中在线浏览,每个系列对应各自的 Gitbook 仓库。 242 | 243 | | [Awesome Lists](https://ngte-al.gitbook.io/i/) | [Awesome CheatSheets](https://ngte-ac.gitbook.io/i/) | [Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews) | [Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps) | [Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps) | [Awesome-CS-Books](https://github.com/wx-chevalier/Awesome-CS-Books) | 244 | | ---------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | 245 | 246 | | [编程语言理论](https://ngte-pl.gitbook.io/i/) | [Java 实战](https://ngte-pl.gitbook.io/i/go/go) | [JavaScript 实战](https://github.com/wx-chevalier/JavaScript-Notes) | [Go 实战](https://ngte-pl.gitbook.io/i/go/go) | [Python 实战](https://ngte-pl.gitbook.io/i/python/python) | [Rust 实战](https://ngte-pl.gitbook.io/i/rust/rust) | 247 | | --------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------- | 248 | 249 | | [软件工程、数据结构与算法、设计模式、软件架构](https://ng-tech.icu/books/SoftwareEngineering-Notes/) | [现代 Web 全栈开发与工程架构](https://ngte-web.gitbook.io/i/) | [大前端混合开发与数据可视化](https://ngte-fe.gitbook.io/i/) | [服务端开发实践与工程架构](https://ng-tech.icu/books/Backend-Notes/#/) | [分布式基础架构](https://ng-tech.icu/books/DistributedSystem-Notes/#/) | [数据科学,人工智能与深度学习](https://ng-tech.icu/books/AI-Notes/#/) | [产品设计与用户体验](https://ng-tech.icu/books/Product-Notes/#/) | 250 | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- | 251 | -------------------------------------------------------------------------------- /header.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 101 | 366 |
367 |

368 | 某熊的技术之路指北 ☯ 369 |

370 |

371 | 技术视野、知识管理与职业规划 372 |

373 |
374 | 375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 | 391 | 392 |
393 |
394 |
--------------------------------------------------------------------------------