
文档教程【免费下载链接】missing-semesterThe Missing Semester of Your CS Education 项目地址https://gitcode.com/gh_mirrors/mi/missing-semester点击查看免费下载导读本文围绕 The Missing Semester of Your CS Education 项目 2019 年MIT IAP 2019课程索引页_2019/index.md展开系统讲解这份课程总目录如何通过 Jekyll Liquid 模板按日期与课时顺序自动生成 18 讲讲座清单并逐讲梳理课程结构与核心内容同时结合仓库中的_config.yml、布局模板与 Docker 构建配置说明该站点如何本地运行与渲染。读完本文你将掌握课程索引页的生成原理、2019 年全部讲座的主题脉络以及如何基于本仓库快速搭建并预览整套课程站点。索引页是什么一份由数据驱动的讲座目录_2019/index.md在仓库中承担的是课程总索引角色它并不直接书写 18 讲的完整讲义而是通过 Jekyll 的 front matter 与 Liquid 模板把散落在_2019/目录下的各讲座文档按上课日期和课时顺序自动编排成目录。其 front matter 定义如下--- layout: page title: 2019 Lectures description: Lecture notes and videos for Missing Semester, MIT IAP 2019. permalink: /2019/ phony: true ---layout: page指明渲染使用 _layouts/page.html该模板负责输出h1 classtitle{{ page.title }}/h1与页面正文permalink: /2019/决定了该索引页的公开访问路径phony: true是一个标记位配合下方模板逻辑使用表示该页面本身不作为讲座条目被列进课程清单。模板逻辑group_by sort 的自动化编排索引页正文几乎没有静态内容全部依赖一段 Liquid 模板从站点集合数据中动态生成{% assign lecture_date site[2019] | group_by: date | sort: name %} {% for date in lecture_date %} {% if date.name %}{% continue %}{% endif %} h2{{ date.name | date: %A, %-m/%-d }}/h2 {% assign lectures date.items | sort: order %} ul {% for lecture in lectures %} {% if lecture.phony ! true %} li a href{{ lecture.url }}{{ lecture.title }}/a /li {% endif %} {% endfor %} /ul {% endfor %}这段代码的运行逻辑可以拆解为四步数据来源site[2019]读取的是 _config.yml 中声明的集合collection2019其中output: true表示集合内每篇文档都会渲染成独立页面按日期分组group_by: date依据每篇讲座 front matter 中的date字段如2019-01-15把 18 篇文档分为 6 组sort: name保证日期从早到晚排列并过滤掉date.name 的无效条目按课时排序同一天内的多篇讲座再用sort: order排序order字段即该讲座当天的第几课时过滤与输出phony ! true的文档才会以lia href{{ lecture.url }}{{ lecture.title }}/a/li形式渲染成链接lecture.url由_config.yml中的permalink: /:title/规则生成例如Shell and Scripting对应的 URL 为/shell/。正是这套front matter 声明元数据 模板统一渲染的机制让课程维护者只需修改单篇讲座的title、date、order、presenter等字段索引页就会自动更新无需手工维护目录列表。站点级配置对索引页的影响索引页能否正确渲染依赖 _config.yml 中的几个关键配置项markdown: kramdown kramdown: input: GFM hard_wrap: false highlighter: rouge permalink: /:title/ future: true timezone: America/New_York collections: 2019: output: true 2020: output: true 2026: output: truecollections声明了2019、2020、2026三套课程集合因此仓库中同级的_2020/、_2026/目录都采用相同的索引机制permalink: /:title/决定每篇讲座含索引页自身的最终 URL 形态future: true允许渲染日期在当前时间之后的文档配合timezone: America/New_York确保按美国东部时区正确排序课程日期。课程结构六个上课日、18 讲、两段式讲座索引页列出的全部讲座源自 2019 课程概览。该文档明确了课程的整体设计课程主题是hacker 工具面向黑客文化、指技术高超的开发者而非hacker 工具面向安全攻击者共6 个上课日覆盖多种主题讲义在线发布课堂以**现场演示live demonstrations与动手练习hands-on exercises**为主每个上课日拆分为两段 50 分钟讲座中间休息 10 分钟课程鼓励学生在课后自行完成全部练习因为课堂只能启发你了解工具的可能性、讲清部分基础细节无法在有限课时内教完一切。第 1 天01-15 周二入门与基础设施课时讲座讲者1Course Overview课程概览Anish2Virtual Machines and Containers虚拟机与容器Anish、Jon3Shell and ScriptingShell 与脚本Jon课程概览交代课程动机与结构——熟练使用工具能省下大量时间且回报周期极短课程目标是教你新工具、用好现有工具、定制工具、扩展工具。虚拟机与容器虚拟机是被模拟的计算机可在不影响宿主环境的前提下实验操作系统、软件与配置核心优势是隔离可在 VM 中安全运行有缺陷或不可信的软件与快照可捕获整个机器状态并随时回滚劣势是相比裸机更慢且资源开销更大。Shell 与脚本以 bash 为核心讲解 shell 的交互式编程能力涵盖变量、$1~$9、$0、$#、$$等特殊变量for循环与if/test条件参数分割与引号陷阱、通配符globbing、管道|与 STDIN/STDOUT/STDERR 三流模型、后台运行与jobs/fg/bg/disown/nohup进程控制、ps/pgrep/kill信号管理以及命令行 flag 约定-a、-f、-h、-v、-V与--结束符。课程还附带了 PATH/which/type、特殊变量、xargs、shebang、管道与进程替换差异、键盘快捷键等一整套练习。第 2 天01-17 周四命令行环境与数据处理课时讲座讲者1Command-line environment命令行环境Jose2Data Wrangling数据处理Jon命令行环境从别名与函数讲起alias llls -lh、mcd () { mkdir -p $1; cd $1; }并说明别名与函数默认不跨会话保留需写入.bashrc/.zshrc或单独.alias文件后source随后比较不同shell 与框架zsh 的智能通配**、拼写纠错、路径展开cd /u/lo/boh-my-zsh/prezto 等框架及其性能开销再谈终端模拟器与 tmux 复用器字体、配色、快捷键、分栏、滚动缓冲、GPU 加速终端tmux 的 attach/detach 对远程工作流的意义最后系统盘点常用 CLI 工具的现代替代品fasd/autojump之于cd、bat之于cat、exa/ranger之于ls、fd之于find、rg/fzf之于grep、rsync之于cp/scp、trash之于rm、mosh之于ssh、tldr之于man、aunpack之于tar/unzip/unrar。数据处理以分析谁在尝试登录我的服务器为实战主线从ssh myserver journalctl出发逐步叠加grep sshd、grep Disconnected from、sed正则替换构造出ssh myserver journalctl | grep sshd | grep Disconnected from | sed -E s/.*Disconnected from (invalid |authenticating )?user (.*) [^ ] port [0-9]( \[preauth\])?$/\2/的完整流水线随后用sort | uniq -c | sort -nk1,1 | tail -n10统计高频用户名用awk {print $2}提取字段、paste -sd,合并行并演示awk的完整编程能力BEGIN/END块、模式匹配、-F字段分隔符、bc -l做数学运算、R --slave求统计摘要、gnuplot画柱状图以及xargs把行式输出转成命令参数如批量卸载 rustup nightly 工具链。文中系统讲解了正则表达式的核心元字符.、*、、[abc]、(RX1|RX2)、^、$、贪婪匹配与?非贪婪、sed 的-E扩展正则与捕获组\1等。第 3 天01-22 周二编辑器与版本控制课时讲座讲者1Editors编辑器Anish2Version Control版本控制Jon编辑器论证程序员大部分时间在编辑纯文本文件值得投资学习合适的编辑器以 Vim 为核心讲解其模态编辑哲学Normal/Insert/Visual 三种模式ESC回退、i进入插入、v/V/C-v进入选择、基础命令:q/:w/:wq/:e/:ls/:help、高效移动hjkl、w/b/e、0/^/$、gg/G、%、f{char}、{number}{movement}、/regex搜索、文本操作d{motion}/c{motion}、x/s、u/C-r撤销重做、定制~/.vimrc中syntax on、set nu/set rnu、set backspaceindent,eol,start、高级技巧:s搜索替换、sp/vsp分屏、set mousea、q{char}录制宏及其递归执行、插件生态vim-plug 等管理器、ctrlp/fugitive/surround 等常用插件并给出把 XML 转为 JSON 的宏实战案例同时覆盖 Vim 键位在 shellset -o vi/bindkey -v与浏览器Vimium/Tridactyl中的迁移。版本控制从 git 的数据模型讲起——commit 具有唯一哈希、作者与提交信息、指向祖先 commit 的哈希并代表一个 diff随后用git init hackers创建仓库逐行解读git status输出解释master分支、HEAD指针与暂存区git add/git add -p/git rm/git reset/git diff --staged再深入git log/git show/git checkout/git revert/git diff NAME../git reset NAME的历史操作git branch/git tag/NAME^/~的名称体系git commit --amend/git rebase -i/git reset --hard的历史清理以及多人协作中的git clone/git fetch/git push/git pull、merge 冲突解决标记、git mergetool、git merge --abort、push 被拒后的--force-with-lease与 rebase 策略。第 4 天01-24 周四定制、备份、自动化与系统自省课时讲座讲者1Dotfiles点文件Anish2Backups备份Jose3Automation自动化Jose4Machine Introspection机器自省Jon点文件许多程序用以.开头的纯文本文件配置如~/.gitconfig、~/.bashrc、~/.vim、~/.emacs部分程序则用~/.config目录工具往往用专门语言定制如 Vimscript课程建议自己动手定制工具而不是直接克隆他人的 dotfiles并可从 man 手册、技术博客与他人配置中学习定制思路。备份、自动化、机器自省分别讲解数据备份策略、任务自动化如 shell 脚本、定时任务以及如何深入洞察操作系统内部进程、日志、系统调用等。三讲的完整讲义见 backups.md、automation.md 与 machine-introspection.md。第 5 天01-29 周二程序自省、依赖管理、系统定制与远程机器课时讲座讲者1Program Introspection程序自省Anish2Package Management and Dependency Management包管理与依赖管理Anish3OS Customization操作系统定制Anish4Remote Machines远程机器Jose远程机器是本日重点完整覆盖 SSH 实战远程执行命令ssh foobarserver ls且管道可在本地/远程双向组合、密钥认证ssh-keygen -t rsa -b 4096生成密钥、~/.ssh/authorized_keys授权、ssh-copy-id复制公钥、ssh-keygen -y -f校验私钥、文件传输sshtee管道写入、scp递归复制、rsync增量同步与--partial断点续传、后台化进程nohup、tmux/screen、reptyr重新挂接、本地/远程端口转发ssh -L 9999:localhost:8888 foobarremote_server将远程 8888 端口映射到本地 9999RemoteForward反向转发、X11 图形转发-X/-Y及服务端sshd_config中的X11Forwarding yes、mosh 移动终端漫游与断续连接支持、端口 60000–60010 要求、客户端配置文件~/.ssh/configHost/User/HostName/Port/IdentityFile/RemoteForward支持通配符且可被 scp/rsync/mosh 复用并特别警告切勿把 RSA 私钥~/.ssh/id_rsa*放入公开仓库。程序自省、包管理、OS 定制分别关注运行时程序分析、依赖与包管理策略、操作系统层面的个性化配置完整讲义见 program-introspection.md、package-management.md 与 os-customization.md。第 6 天01-31 周四Web 与安全收尾课时讲座讲者1Web and BrowsersWeb 与浏览器Jose2Security and Privacy安全与隐私JonWeb 与浏览器探讨开发者视角下的 Web 工作原理与浏览器工具详见 web.md安全与隐私收尾讲座聚焦个人与系统的安全威胁面与隐私保护实践详见 security.md。课程之外社区传播与致谢索引页正文在模板生成的课程清单之后还保留了两个说明区块。Beyond MIT部分指出课程内容被有意分享到 MIT 之外希望更多人受益于这些资源相关的帖子与讨论发布在 Hacker News、Lobsters、Redditr/learnprogramming 与 r/programming、Twitter 以及完整的讲座视频播放列表YouTube等平台上。这也解释了本仓库作为开源镜像存在的意义——任何人都可以基于讲义与视频自学这套课程。Acknowledgments部分交代了课程的组织背景本课程由 SIPB IAP 2019 项目授课并由 SIPB 与 MIT EECS 共同赞助。这一信息表明 2019 年课程是 MIT 一月独立活动期IAP的官方项目其学术背景保证了讲义内容的权威性。在仓库中本地运行这套课程站点索引页与全部讲义都托管在一个 Jekyll 站点中。如果想在本地浏览完整的 2019 课程页面含自动生成的索引可以按 README.md 的方式构建bundle exec jekyll serve -w随后在浏览器中访问 http://localhost:4000Jekyll 会在文件变更时自动重新构建网站。如果宿主机没有 Ruby 环境仓库还提供了 Docker 方案docker compose up --builddocker-compose.yml 定义了server服务构建missing-semester:latest镜像将宿主机4000端口映射到容器内4000端口并挂载当前目录到/app以便热重载。镜像本身由 Dockerfile 构建基于ruby:3.4-alpine3.21安装ruby-dev与alpine-sdk后执行bundle install最终以bundle exec jekyll serve -w --host 0.0.0.0启动--host 0.0.0.0使容器内站点可被外部访问。小结_2019/index.md虽只是一页目录却是整个 2019 课程体系的门户它用 front matter 元数据 Liquid 模板的自动化编排将 6 个上课日、18 讲讲座按日期与课时顺序组织成清晰索引每一讲又都是独立成篇的完整讲义从 shell 脚本、数据处理、编辑器、版本控制到 SSH 远程运维、安全与隐私构成了一个可自学的计算机教育补全课程。理解索引页的生成机制你就能顺藤摸瓜定位任意讲座的源码位置与讲义内容也可以直接本地构建站点把这套课程当作自己长期的学习资源库。赞分享文档教程【免费下载链接】missing-semesterThe Missing Semester of Your CS Education 项目地址https://gitcode.com/gh_mirrors/mi/missing-semester点击查看免费下载相关推荐Missing Semester 2026 课程索引页深度解析Jekyll 集合、Liquid 模板与课程站点架构Missing Semester 2026 课程索引页深度解析Jekyll 集合、Liquid 模板与课程站点架构 本文以开源仓库 missing semes文档教程The Missing Semester 2020 课程索引MIT 计算机科学教育缺失的一学期11 讲全览The Missing Semester 2020 课程索引MIT 计算机科学教育缺失的一学期11 讲全览 MIT 的《The Missing Semes文档教程The Missing Semester 远程机器实战指南基于 2019 课程讲义系统掌握 SSH 认证、端口转发与远程开发全流程The Missing Semester 远程机器实战指南基于 2019 课程讲义系统掌握 SSH 认证、端口转发与远程开发全流程 本指南以本仓库 2019文档教程上一篇Hazelcast MongoDB 数据连接 TLS 测试密钥材料生成指南openssl 与 keytool 实操下一篇小说下载器教程浏览器里批量保存整本小说为 TXT 和 EPUB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考