第01课:Markdown 在 GitHub
发布日期:2022-02-10 13:35:46 浏览次数:21 分类:技术文章

本文共 2750 字,大约阅读时间需要 9 分钟。

GFM !-)

GitHub 其实是伪装成 git 仓库的 Markdown 编辑平台

GitHub 对 Markdown 是狂热的

从发布之初就宣称: GitHub Flavored Markdown

GitHub 将这种狂热传染给了全球开发者,以致到后来所有 Markdown 编辑器,都得有 GitHub 风格的渲染支持。 这种狂热甚至于高于对 git 的支持,

这也是为什么要将 GitHub 对 Markdown 的支持,放在 git 的支持之前来强调。

为毛?

  • 只是,Markdown 之前同类的简化标记文档规范有很多哪,
    • 为什么 GitHub 忠情 Markdown?
  • 可能,事儿是相反的,正因为 GitHub 选择了 Markdown,从而引发了 Markdown 的极大爆发。
    • 是的,俺说是的 gh-pages
    • 这个古怪的分支,由 GitHub 发明出来
    • 不仅仅令大家用起来了 --orphan 参数
    • 同时带来了几个后果:
      • 提升了 .io 域名的含金量
      • 推动了 Jekyll 框架的爆款
      • 使 Markdown 成为发展最快速的私人建站首选内容格式
  • 当然,从技术角度看,也许原因非常朴素:
    • RoR 创建之初,类似的文本解析器,Ruby 支持的最小的就是 Markdown
    • 同时又想扩展出很多独有的功能
    • 当然选择最简单的那个
    • 所以,Markdown 从一开始就成为 GitHub 的基因
    • 而且是弥散最深最自在的一个
  • 不过,从程序猿心理角度,俺可以很坚定的认为:
    • 就是因为创始人们懒
    • 没心情发明一个自己已经熟悉的 Markdown 格式
    • 就直接拿来用先
    • 没想到一用就丢不下了……

出没. md

在 GitHub 中最常见的输入场景中都支持 Markdown 的解析:

  • 仓库中的 .md 直接编译为对应 html 来展示
  • issue 的正文、回复都默认支持 Markdown
    • 而且包含了很多方便功能
    • 比如说,最受欢迎的 chk-box
    • 而且自动识别,并展示为 issue 标题旁的进展条
    • ……
  • wiki 不用说也是
  • 版本的 commit comment 也支持 Markdown
  • 甚至于,从远程 git 仓库 push 时的 commit log 也支持 Markdown
    • 而且是 GFM ~ 扩展的 Markdown 格式
    • #12 这种将自动转换为相同编号的 issue 链接
    • ec0b06a 这种 commit hash ,将自动指向对应的 commit diff 页面
    • 还能指向用户仓库的具体 commit
    • ……

配合的工具

Markdown 再简洁,也无法在网页上快速激烈地进行大规模的编辑,最简单的全局查找和替换文字就无法简单的在网页上完成。

所以,除了能通过 git 远程编辑仓库和 wiki 中的 Markdown 文本之外,有什么工具,可以帮助我们高速进行在线 Markdown 文本的编辑?

  • Sublime Text 3 等等现代编辑器,都有非常优秀的 Markdown 编辑支持
  • 智能缩进、自动关闭语法、颜色提醒……
  • 如何将网页输入和本地编辑器软件结合起来?
    • 当然,通过 git 仓库可以解决部分输入问题
    • 但是,更多的场景是 issue/commit comments ~ 并没有对应仓库可以 clone
  • 所以,很久之前用的是笨办法:
    • Ctrl + A ,Ctrl + C ,Ctrl + V
    • 对的,将网页 textarea 中的文本全选粘到本地编辑器中
    • 编辑好了,再全选粘回去……
    • 可用,但是,每次可能都丢失当前的编辑位置
    • 而且,傻……
  • 幸好,后来 FireFox 的插件解决了这个问题
    • 哪个插件?
    • 你猜……

问题->mail

~ 唯一的 Markdown 支持不一致场景

  • GitHub 其实也支持 mailling-list 的
  • 只是不是内置的服务
  • 而是通过 整合服务( Integrations & Services ) 接入
    • 当初只有几个服务
    • 现在已经扩充为上百个了……
  • 所以,和 googlegroup 自然的关联起来起来后
    • 大家就能不上 GitHub 网站
    • 从 gmail 邮箱中自然的接受到所有 仓库/issue 相关变化了
    • 神奇的是,用邮件回复 issue
    • 将自动的发布为对应 issue 的回复
    • 只是,这时,邮件中的文本,就不被解析为 Markdown 了

问题是,项目托管服务在 gh 之前,从未有哪个服务,有这种邮件的双向渠道支持, 一般都是单向的,并在邮件标题中强调:

不得回复

所以,GitHub 的创始者们,一定非常懒,连自己网站都懒得上, 才创造出这种通过邮件也能完成协同的功能,

太爽了!

gh-pages

  • web 1.0 时代,大家怎么发布个人网站的?
    • 租主机/空间,自行构建 LAMPs 体系
  • web 2.0 时代,大家又都是怎么发布个人网站的?
    • 免费通过 blogger 等服务发布
  • GitHub 之后呢?
    • 当然首先是用 github.io 来发布静态网站
    • 然后简单的通过 CNAME 的配置完成私人域名的绑定

甚至于,由于 GitHub 选择了 Markdown 以及免费发布了 gh-pages 服务, 依托 gh-pages 发布了:

  • blogging
  • CMS
  • wiki
  • PKM
  • ……
  • 各种工具来帮助人们快速完成各种信息的发布。

功德无量

笔者和小伙伴甚至于用 gh-pages 快速发布过技术大会的官网……

gh-pages 还能作什么?是否能结合前端技术,直接变成可用的 SPA?

  • 答案是肯定的, 而且早已有社区这么作了
  • 最常用(之于中国程序猿)的应就是:

ipynb?

木星笔记本

从 IPython notebook 进化为 Jupyter Notebook 后, ipynb 文件,其实已经支持包含 Java/php/ruby 等其它语言了。

但是,狂热的将相关模块加载在后台,直接支持在仓库页面解析 。ipynb 文件的项目托管服务, GitHub 是第一家。

当然,肯定不会是最后一家,毕竟在数据科学时代, 可运行的文档这种形式是基础形式了。

问题是:

  • GitHub 是否能足够好的解决依赖模块的自动化安装?
  • 以及 GitHub 是否原意支撑大家在 GitHub 页面上进行 ipynb 的创作和交流?
  • 如果实现的话,可能应用的发布/部署形式又多了一个……

提问

~ 是的,GitQ 不是单向灌输,双向交流才真诚

  • Markdown 同类结构化文本还有什么?
  • 什么是 WYTIWYG ?比 WYSIWYG 好还是挫?
  • GitHub 中还有哪儿不支持 Markdown ?

欢迎大家来我的读者圈评论作答或提问交流 ~

转载地址:https://blog.csdn.net/zoomquiet/article/details/108729666 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:第02课: Git 在 GitHub
下一篇:计算机网络通过IP地址计算子网掩码

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月22日 11时21分32秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java多线程的11种创建方式以及纠正网上流传很久的一个谬误 2019-04-27
JDK源码研究Jstack,JMap,threaddump,dumpheap的原理 2019-04-27
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 2019-04-27
javac编译原理和javac命令行的使用 2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器 2019-04-27
Unity使用RenderTexture实现裁切3D模型 2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一 2019-04-27
Unity iOS接SDK,定制UnityAppController 2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C) 2019-04-27
python遇到了‘module‘ object has no attribute ‘socket‘问题,大概率是这个原因 2019-04-27
记一次iOS闪退问题的定位:NSLog闪退 2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS) 2019-04-27
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标 2019-04-27
Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息) 2019-04-27
Unity中获取物体的尺寸(size)的三种方法 2019-04-27
Unity中的关节组件和绳子效果的实现 2019-04-27
Unity可视化编程插件: Bolt,可以像UE4的蓝图那样啦 2019-04-27
Android使用adb logcat时日志中文乱码问题,使用chcp 65001设置编码即可 2019-04-27
Android的.dex、.odex与.oat文件扫盲 2019-04-27
Unity移动应用如何在Bugly上查看崩溃堆栈 2019-04-27