写作利器-Markdown撰写规范

本文将会介绍 Markdown 中 Markdown 标记的典型使用场景使用空格、空行、缩进等元素优化排版的方法常用中文标点符号规范这些是 Markdown 写作的比较常见的排版格式指导,同时也是排版格式约定。遵守它们能使得排版更加美观,更加方便阅读,也能让你有固定的模式可依,降低写作时对于排版的心智负担。 一、Markdown 标记的典型使用标题文章的顶层标题使用二级标题每个小节的标题使用三级标题小节中进一步分层组织时使用四级标题尽量少用五级标题和六级标题,考虑用有序列表和无序列表代替完全不用一级标题粗体、斜体需要强调某处内容时使用粗体,如: 中文全角标点符号占一个汉字宽度,英文半角标点占半个汉字宽度(亦即一个字母宽度)。在中文排版中不使用斜体。在英文排版中可用斜体表达强调,或表示书名、题目。 引用以下情况使用引用标记: 引述内容时(也可直接用引号替代)作示例时给出提示、警告等额外说明时行内代码、代码块某一行文字中嵌入简短代码时使用行内代码,如: 打开 Linux 虚拟终端,输入 echo 'Hello World'。恭喜,你已经入门 Shell 了 :)展示多行代码时使用代码块,也可用于 XML、JSON、配置项等。尽量在使用代码块时给出语言标识,有些 Markdown 工具会针对该语言高亮显示其中的语言元素。如: ```javapublic class Main {&nbsp&nbsp&nbsp&nbsppublic static void main(String[] args) {&nbsp&nbsp&nbsp&nbspSystem.out.println("Hello World");&nbsp&nbsp&nbsp&nbsp}}```将显示为: public class Main { public static void main(String[] args) { System.out.println("Hello World"); }}图片Markdown 中使用 ![图片名称](https://xx.xx/xx) 的方式来插入图片,这里的「图片名称」可以任取,但是推荐使用对图片主题具有描述性的文字。因为在一些网站或软件中,图片无法加载时会显示这个「图片名称」,这时至少还能给读者传递出一点有用信息。 二、空白符号的运用空格Markdown 中半角空格的使用很重要,一些情况下能调节文字间距使得排版更加美观。 中英文混排时,英文前后各加一个空格,如: 请坚信 Markdown 会为你带来生产力的提升。中文和阿拉伯数字混排时,数字前后各加一个空格,如: 2008 年已经过去 11 年了!若英文或阿拉伯数字若紧邻中文全角标点,则其与标点之间不加空格,如: 有了 Markdown,可以不再用 Word。空行正文段落之间用一个空行来分隔,可以显得段落分明、结构不拥挤,如: Markdown 是一种标记语言。在写作时,你的所有文字都是没有样式的纯文本,在其中插入若干 Markdown 标记后,被标记的文字便有了样式。比如,在你所写的文字中,希望某一行的最终排版呈现一级标题的样式,那就给这行文字加个一级标题的标记;某个地方有两个字需要加粗,那就给这两个字加个粗体标记。 ...

June 26, 2019 · 1 min · jiezi

写作利器-Markdown基础编辑器及图床

一、写作排版是个难题写作是每个人日常生活和工作中必不可少的内容,无论是写博客、写邮件,还是写报告、写接口文档、写项目方案文档。 在使用 Word 或类似编辑工具写作时,想必你一定纠结过字体、字号、间距等等的排版问题吧 :)。 Word 这类富文本编辑工具,以所见即所得的方式,为用户提供了大量的可选样式和排版支持。它的功能十分强大,样式选择也足够自由,但也正是因为这样,让没有经验的用户面对排版样式的汪洋,不知所措: 一级标题用什么字号什么字体?二级辩题用什么字号什么字体?正文用什么字号什么字体?正文与前后标题的边距怎么设定?行间距,字间距,段落间距?......由此看来,想要让文字排版成一篇看起来有模有样的文章确实不是一件容易的事,不仅需要掌握一些排版知识,也需要培养基本的排版审美。要是你向我一样有强迫症那就惨了,不停地去调整比对,却总是不尽人意 :)。 那有没有这样一个模版,推荐一个好看的样式,让我不用关心各类字体、字号、间距等等的问题,而是可以直接往里头套用? 试试 Markdown 吧。 二、Markdown 是什么Markdown 是一种标记语言。在写作时,你的所有文字都是没有样式的纯文本,在其中插入若干 Markdown 标记后,被标记的文字便有了样式。样式将会在渲染的时候呈现,并且样式的显示效果由 Markdown 工具决定。 比如,在你所写的文字中,你希望某一行的最终排版呈现一级标题的样式,那就给这行文字加个一级标题的标记;某个地方有两个字需要加粗,那就给这两个字加个粗体标记,最终的排版效果中这两字就会是粗体模样。 Markdown 支持对多种文章元素做标记,包括但不限于: 一至六级标题粗体斜体引用列表图片表格链接代码块当前这篇文章就是用 Markdown 写的。你正在看的这部分内容的 Markdown 形式是这个样子的: Markdown 是一种标记语言。在写作时,你的所有文字都是没有样式的纯文本,在其中插入若干 Markdown 标记后,被标记的文字便有了样式。样式将会在渲染的时候呈现,并且样式的显示效果由 Markdown 工具决定。比如,在你所写的文字中,你希望某一行的最终排版呈现一级标题的样式,那就给这行文字加个一级标题的标记;某个地方有两个字需要加粗,那就给这两个字加个粗体标记,最终的排版效果中这两字就会是粗体模样。Markdown 支持对多种文章元素做标记,包括但不限于:- 一至六级标题- 粗体- 斜体- 引用- 列表- 图片- 表格- 链接- 代码块这些内容经过渲染之后便是你所看的的效果。 三、Markdown 的使用方法前面说了,Markdown 其实就是给文章内容作标记,把某处内容标记成什么那它最终就呈现对应的样式,而这些标记是一些简单的符号。 那 Markdown 标记都有哪些,样式效果是怎么的呢? 常用的标记(1) 二级标题 ## 这是二级标题这是二级标题(2) 三级标题 ### 这是三级标题这是三级标题(3) 四级标题 #### 这是四级标题这是四级标题(4) 粗体 这是**粗体**这是粗体 (5) 引用 > 这是引用这是引用(6) 有序列表 ...

June 26, 2019 · 1 min · jiezi

markdown的瑞士军刀

两分钟提高vscode的markdown书写体验对于程序员来说,时常温故知新,写博客是十分有益的,markdown成为众多程序员写作的新宠,不仅简洁,而且优雅,这里推荐一些提高markdown书写效率,并且美化排版的工具. 虽然说是两分钟,也可以30s解决啦,直接看下面. 文中插件插件名作用测试版本Markdown Theme Kit支持自定义markdown预览样式0.1.4Markdown Preview Github Styling以github风格预览markdown0.1.6markdown-formatter支持格式化和快捷输入0.4.0Markdown+Math支持LaTex数学公式2.3.9vscode Setting.json 推荐配置: "[markdown]": { // 保存自动格式化 "editor.formatOnSave": true, // 显示空白字符 "editor.renderWhitespace": "all", // 快速补全 "editor.quickSuggestions": { "other": true, "comments": true, "strings": true }, "editor.snippetSuggestions": "top", "editor.tabCompletion": "on", "editor.acceptSuggestionOnEnter": "on"}或者花点时间看这里. vscode插件推荐原生支持作为一个代码编辑器, 原生支持markdown显示. 只需要 command(ctrl)+shift+p, 输入 Markdown Priview to the side , 就可以预览. 可以定制化的预览样式可以自由地导入markdown展示样式, 也可以通过 Markdown Theme Kit 这样的插件来快速更改修改风格.这里推荐一款 Markdown Preview Github Styling 插件, 可以将预览模式变成github的样式 拥有快速格式化工具推荐一下 markdown-formatter 插件, 可以快速格式化代码. ...

June 24, 2019 · 1 min · jiezi

利用Electron简单撸一个Markdown编辑器

Markdown 是我们每一位开发者的必备技能,在写 Markdown 过程中,总是寻找了各种各样的编辑器,但每种编辑器都只能满足某一方面的需要,却不能都满足于日常写作的各种需求。 所以萌生出自己动手试试,利用 Electron 折腾一个 Markdown 编辑器出来。 下面罗列出我所理想的 Markdown 编辑器的痛点需求: 必须要有图床功能,而且还可以直接上传到自己的图片后台,如七牛;样式必须是可以自定义的;导出的 HTML 内容可以直接粘贴到公众号编辑器里,直接发布,而不会出现格式的问题;可以自定义固定模块,如文章的头部,或者尾部。可以自定义功能,如:自动载入随机图片,丰富我们的文章内容。必须是跨平台的。其它。环境搭建使用 Electron 作为跨平台开发框架,是目前最理想的选择,再者说,如:VS Code、Atom 等大佬级别的应用也是基于 Electron 开发的。 Electron使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用https://electronjs.org/ 初次使用 Electron,我们下载回来运行看看: # 克隆示例项目的仓库$ git clone https://github.com/electron/electron-quick-start# 进入这个仓库$ cd electron-quick-start# 安装依赖并运行$ npm install && npm start VUEVUE 是当前的前端框架的佼佼者,而且还是我们国人开发的,不得不服。本人也是 VUE 的忠实粉丝,在还没火的 1.0 版本开始,我就使用 VUE 了。 electron-vue将这两者结合在一起,也就是本文推荐使用的 simulatedgreg/electron-vue: vue init simulatedgreg/electron-vue FanlyMD 安装插件,并运行: npm installnpm run dev 选择插件1. Ace Editor ...

June 9, 2019 · 5 min · jiezi

vuecli3项目展示本地Markdown文件

【版本】vue-cli3webpack@4.33.0【步骤】1、安装插件vue-markdown-loader npm i vue-markdown-loader -Dps:这个插件是基于markdown-it的,不需要单独安装markdown-it。 2、修改vue.config.js配置文件(如果没有,在项目根目录新建一个): module.exports = { chainWebpack: config => { config.module.rule('md') .test(/\.md/) .use('vue-loader') .loader('vue-loader') .end() .use('vue-markdown-loader') .loader('vue-markdown-loader/lib/markdown-compiler') .options({ raw: true }) }}3、直接上代码 App.vue <template> <my-markdown></my-markdown></template><script>import myMarkdown from './assets/cpu.md';export default { components: { myMarkdown },</script>正常情况下,到这里就结束了。 【坑】由于业务给我的Markdown文档的标题是这样的: ##物理CPU个数物理CPU数就是主板上实际插入的CPU数量……得到的结果并不让我满意: 折腾了大半天才发现,这是由于标题的#井号和文字之间没有空格导致的。证明见下: var MarkdownIt = require('markdown-it'),md = new MarkdownIt();console.log(md.render('# markdown-it rulezz!'))//<h1>markdown-it rulezz!</h1>console.log(md.render('#markdown-it rulezz!'))//<p>#markdown-it rulezz!</p>Fine :) 愚蠢的我想出了一个解决办法:因为HyperDown.js能避免上面那样的情况,于是我用它来对文档做预处理。 安装HyperDown.js npm install hyperdown -D然后把vue.config.js改成了这样。 let HyperDown = require('hyperdown');let parser = new HyperDown;module.exports = { chainWebpack: config => { config.module.rule('md') .test(/\.md/) .use('vue-loader') .loader('vue-loader') .end() .use('vue-markdown-loader') .loader('vue-markdown-loader/lib/markdown-compiler') .options({ // markdown-it config preset: 'default', breaks: true, raw: true, typographer: true, preprocess: function(markdownIt, source) { return parser.makeHtml(source);//重点在这里!!! } }) }}END ...

June 6, 2019 · 1 min · jiezi

博客图片失效使用npm包20行代码一次下载替换所有失效的外链图片

前言大约一个月前,微博的图片外链失效了,以及掘金因为盗链问题也于2019/06/06决定开启防盗链,造成的影响是:个人博客网站的引用了这些图片外链都不能显示。 目前微博和掘金的屏蔽,在CSDN和segmentfault都是可以正常显示的,只影响个人博客。 比如前段时间我的博客:http://obkoro1.com上引用的微博图片都不能显示了。 因为我写博客比较频繁,被屏蔽的图片不在少数,肯定不能一个个手动的替换,查了一番没有找到现成的解决方案,做了个脚本工具,并且写了文档把它开源出来了。 markdown-img-down-site-change(下载/替换markdown中的图片)搜索目标文件夹中的markdown文件,找到目标图片,提供下载图片,替换图片链接的功能-通常用于markdown 图片失效。简介这是一个极为轻量的脚本,引用包,设置好参数,通过API即可轻松上手。 解决什么问题?集中下载markdown文件中某个域名下的图片到一个文件夹下。用新的图片链接替换markdown文件中某个域名的图片链接。// 1. 下载这两个图片// ![](https://user-gold-cdn.xitu.io/2019/5/20/图片名字?w=2024&h=1240&f=png&s=339262)// ![](https://user-gold-cdn.xitu.io/2018/6/16/图片名字)// 2. 替换成:github的链接![](https://raw.githubusercontent.com/OBKoro1/articleImg_src/master/juejin/图片名字?w=2024&h=1240&f=png&s=339262)![](https://raw.githubusercontent.com/OBKoro1/articleImg_src/master/juejin/图片名字)安装:npm i markdown-img-down-site-change -S文档:Github API 更新日志 数据安全:刚上手可能不了解脚本的功能,需要调试一番,这时候万一把markdown文件给改坏了,岂不是要哭死? 脚本有两种形式来防止这种情况发生: 脚本会默认备份你的文件。默认开启测试模式,等到调试的差不多了,可以关闭测试模式。建议:再不放心的话,可以先用一两个文件来测试一下脚本使用:20行代码不到在项目中有一个使用栗子,里面加了蛮多注释和空行的,实际代码20行都不到,可以说很简单了,如下: // npm i markdown-img-down-site-change -S const markdownImageDown = require('markdown-img-down-site-change'); // 文件模块// 传参: 这也是脚本的默认参数,根据情况可以自行修改let option = { replace_image_url: 'https://user-gold-cdn.xitu.io/', read_markdown_src: './source', // 要查找markdown文件的文件夹地址 down_img_src: './juejin', // 下载图片到这个文件夹 var_number: 3 // url前半部分的变量数量 比如上面的日期: /2019/5/20/、/2018/6/16/}// 初始化const markdownImage = new markdownImageDown(option)// 下载外链markdownImage.checkDownImg();// 上传下载下来的图片文件夹到云端 用户自己操作// 上传图片之后 // 脚本会把以前的外链替换成云端地址+拼接一个图片名markdownImage.updateOption({ new_image_url: 'https://xxx.com/目录地址/', // 图片上传的地址 add_end: '?raw=true' // github图片地址有后缀 直接进去是仓库})// 替换外链 // 把replace_image_url的字符串换成new_image_url字符串markdownImage.replaceMarkdown();运行:仔细阅读文本,配置好参数之后 ...

June 5, 2019 · 1 min · jiezi

小技巧使-github-和-segmentfault-的-markdown-支持数学公式

作者:LogM 本文原载于 https://segmentfault.com/u/logm/articles ,不允许转载~ 1. 由来最近在写博客的时候,发现一个问题: segmentfault不支持markdown行内公式渲染;github不支持markdown数学公式渲染。因此,需要想办法正常渲染markdown。否则又要回归繁琐的Github Page了。 2. 解决方法chrome浏览器可以安装MathJax渲染插件解决,比如: MathJax Plugin for GithubTeX All the Things这两个我都用过,可以正常渲染。 第一个插件仅支持github,不需要配置。 第二个插件支持所有的网站,我自己测试在segmentfault上会经常抽风,但多刷新几次页面总有一次能刷出来。右键"Tex All the Things"的图标,选择"选项",可以进行配置。 所以,对于我的博客中带有数学公式的文章,可以有如下几种方式确保数学公式正常渲染: 使用插件2在segmentfault上看博客,虽然抽风情况比较严重;在我的github上找到对应文章,使用插件1查看;在我的github上找到对应文章,点击右上角的"Raw"按钮,把源码复制到markdown阅读器查看。3. 测试这里提供一组测试,确认是否完美解决了问题。 下面参与测试的数学公式的原代码如下:这是一个行内公式:$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$这是两个单行公式:$$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$$$$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$$下面几行是你的显示效果,如果都显示为数学公式,则说明正常渲染: 这是一个行内公式:$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$ 这是两个单行公式:$$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$$ $$P = \frac{C_a^k \cdot C_b^{n-k}}{C_{a+b}^n}$$

June 1, 2019 · 1 min · jiezi

MarkDown语法

一、标题1.使用 = 和 - 标记一级和二级标题输入标题文字,shift + enter 另起一行, 输入两个或两个以上 “ = / - ” 。一级标题==二级标题--2.使用 # 号标记# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题二、段落段落的换行是使用两个以上空格加上回车。1.字体*斜体文本*_斜体文本_**粗体文本**__粗体文本__***粗斜体文本***___粗斜体文本___2.分割线在一行中用三个以上的星号、减号、底线来建立一个分隔线。***---___3.删除线在文字的两端加上两个波浪线 ~~~~BAIDU.COM~~4.下划线可以通过 HTML 的 <u> 标签来实现<u>带下划线的内容</u><u>带下划线的内容</u> 5.脚注脚注是对文本的补充说明格式: [^要注明的文本]例: 需要注明的文本 [^MarkDown]。 [^MarkDown]:Markdown 是一种轻量级标记语言。需要注明的文本 1。 三、列表MarkDown 支持有序列表 和 无序列表1.无序列表无序列表使用星号(*)、加号(+)或是减号(-)作为列表标记* 星号+ 加号- 减号星号加号减号2.有序列表有序列表使用数字并加上 . 号来表示1. 第一项2. 第二项第一项第二项3.列表嵌套列表嵌套只需在子列表中的选项添加四个空格即可1.parent1 +p1-child1 +p1-child22.parent2 -p2-child1 -p2-child2parent1 p1-child1p1-child2parent2 p2-child1p2-child2四、区块1.简单使用1.在段落开头使用 > 符号 ,然后后面紧跟一个空格符号2.区块是可以嵌套的 > MarkDown>> MarkDownMarkDown MarkDown2.区块与列表结合1.区块中使用列表2.列表中使用区块 > 区块中使用列表> 1. 有序> + 无序> 2. 有序> - 无序1. 列表中使用区块 > 区块内容 >> 区块内容2. 列表中使用区块区块中使用列表 ...

May 29, 2019 · 1 min · jiezi

IPress-让你更流畅的书写-Spring-Boot-Vue-VueCli3-markdown

导语很久没有更新文章了, 最近参考showdoc.cc 写了一个 笔记(知识管理/博客)工具 IPress. 技术栈Spring Boot 2.x Mysql 8.x Vue 2.x Vue Router 2.x iview ui 3.x 前后端分离 通过 jwtToken 跨域认证演示地址:Ipress 部署在了码云的Pages上 项目源码获取:已上传 github 项目模块划分:IPress│├─ipress-core 用户权限登录模块 (80%)│├─ipress-pocket 业务功能模块(已完成)│├─ipress-run run 入口│└─ipress-ui 用户界面 (已完成)界面首页: pocket: pocket: 文件夹管理: 编辑器:

May 23, 2019 · 1 min · jiezi

Boostnote及对记笔记的思考

这篇文章就是在Boostnote 中写成的XD 来龙去脉有一阵子,我沉迷于“笔记软件狩猎”中——就是不停寻找各种各样的笔记软件,再一个个试用,企图从中选出一个最强大的。回想起来,我尝试过有道云笔记、印象笔记、Quiver、Boostnote、OneNote、Yu Writer、Leanote(在本地搭建),等等。大部分都是浅尝辄止,例如OneNote,当我发现它不支持代码块语法高亮时,就放弃了它。目前仍然在使用的是Boostnote,并且也是最令我满意的。 走马观花Boostnote自诩为“for developer”的笔记软件,除了书写Markdown以及实时预览之外,还支持绘图(UML、流程图、时序图)、制表,甚至可以添加LaTeX公式。 GitHub上可以找到官方对Boostnote绘图能力的简单示例,但我用得极少。不管是画UML、流程图,还是时序图,方法都是“写代码”。画UML用的是PlantUML的语法(你甚至可以在首选项中找到PlantUML服务器的地址),画流程图用的是flowchart.js的语法。我自己很喜欢这类语绘的方式,只需要熟悉一下语法,画起来图来比鼠标拖拖拉拉不知道要高到哪里去了。说到时序图,我更喜欢用sdedit。 制表只需要敲入竖线和横线即可。例如,下面的内容 |这|是|一||-|-|-||个|表|格|在Boostnote中预览时的效果是如下这样的 这是一个表格制表在Emacs的org-mode中有更风骚的表现。比如,按下tab键可以让光标跳至下一个单元格,同时会自动调整每一列的宽度;甚至,还可以在单元格中使用公式。 既然可以嵌入LaTeX,那么下列的内容 $$ \LaTeX $$就能够用来绘制酷炫版的LaTeX logo了,如下所示 $$ \LaTeX $$ 只可惜这玩意儿不是inline的。 Markdown这门标记语言原本也支持代码块,但稍微现代的编辑器都应当至少支持语法高亮才行。在Boostnote中即便不进行预览,代码块中的代码也是彩色的。 Boostnote自动保存笔记内容,这点上每个人的口味可能还是不太一样的。 槽点尽管可以将剪贴板中的图片粘贴到Boostnote的笔记中,却不能将图片复制到剪贴板中。唯一的办法,就是在粘贴了图片后,按照笔记中的文件路径,在Finder中找到这个文件,然后再复制。 不像Yu Writer和Typora,Boostnote既不支持目录也不支持大纲模式。如果用来写篇幅很长的文章,并且需要频繁在相距比较远的章节之间切换的话,会写得比较辛苦。但也可以认为,Markdown,或者说Boostnote这样的笔记软件,本来也不适合写作大型文档。遇到这种事情,还是应当出动字处理软件(比如Word)或者TeX。 Boostnote没有将笔记的内容以朴素的Markdown形式保存为一个.md文件,而是存储成后缀名为.cson的文件格式。这意味着,即便哪一天有一款完美的Markdown编辑器出现了,也无法在其中查看和编辑这些Boostnote生成的文档。 一些胡言乱语记笔记的目的是什么?我对笔记软件的要求是什么?Boostnote是最合适的吗?它又适合做什么呢?我不是从入手了Mac之后才开始记笔记的,在此之前,我用Emacs的org-mode来记笔记,但也许称其为FAQ更恰当。使用org-mode,写作方式、浏览方式,以及载体都是一致的——用org-mode的语法来写作,同时写下的也就是所看到的(org-mode没有预览一说),最后,存储的也是纯粹的、敲入的文本。但用org-mode来记笔记也有自己的缺陷: 在Emacs中浏览的体验不是非常好不方便使用行内的代码块其它编辑器对.org格式的支持不好不方便粘贴图片因此,才打算构筑新的笔记系统。但新的笔记系统应当不仅仅可以解决org-mode遇到的问题,而是应该贴合我的核心需求才行。我自己曾经总结过,笔记软件应该满足如下的要求: 支持Markdown,它是一门我所熟悉的、轻量级的标记语言,也被众多的软件支持支持编程语言的语法高亮,毕竟是软件开发方面的笔记,总会涉及到代码的以.md文件的形式存储。这个一会儿再聊聊支持树形的文件层级结构,因为我可能会给笔记划分比较多的层级,但这个也值得一会儿聊聊支持Emacs的keymap,这是我所熟悉的操作方式,减少手离开键盘的次数看下来更像是在物色一款好用的Markdown文件编辑器。但一款优秀的Markdown文件编辑器就会是一款优秀的笔记软件吗?我看未必。 实际上,对代码的语法高亮的要求,暴露了一个关键因素,就是:即便我写入的是Markdown代码,也希望能够以渲染后的效果展示出来。所以,为什么不直接使用富文本来书写笔记内容。如果是富文本的编辑器,那么一般便不会是以朴素的.md文件的格式来存储的了,但这并没有什么太值得在意的,毕竟谁也不会闲着没事就将笔记内容在各个软件间迁移着玩。 如果是一些可以公开的笔记,那么直接记录到博客中也不失为一个好办法——博客可以被搜索引擎索引,之后如果想要查找记录过的内容的话,也可以借助于搜索引擎强大的搜索能力来实现。不过,现阶段,我更喜欢这些笔记是私密的。 我的笔记也几乎不会与他人分享,因此不管是书写格式还是存储格式,都只需要我自己用着开心就足够了。大多数情况下,笔记的用途其实是代码片段,在需要的时候能够复制出来略作修改,用到其它地方——例如粘贴到shell中运行,解决一些临时的问题。如果不是因为我喜欢记下最终结果的来龙去脉的话,Boostnote的代码片段功能也许才是最适合我的选择。另外,由于大部分的代码都非常地短,即便没有语法高亮浏览器来也不是大问题,所以语法高亮的需要也就不那么迫切了。 现在看来,Boostnote并不是最合适的(打脸了)。Evernote和Leanote是我用过的笔记软件中比较强有力的两个竞争者。由于Leanote比Evernote支持更多的目录层级,并且还可以选择创建Markdown笔记(而不仅仅是富文本笔记),所以我大概会选择用Leanote来作为接下来的笔记软件的主力吧。 后记用Typora来写,用ElasticSearch来索引笔记,好像也不错?!

May 8, 2019 · 1 min · jiezi

Wizard-开源文档管理系统10发布啦

Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard。这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagger文档管理起来的工具,但在这近两年的时间里,一直断断续续的为其添加各种功能,现在终于下决心发布1.0版本了,目前支持三种类型的文档管理 Markdown:也是Wizard最主要的文档类型,研发团队日常工作中交流所采用的最常用文档类型,在 Wizard 中,对 Editor.md 项目进行了功能扩展,增加了文档模板,Json 转表格,图片粘贴上传等功能 Swagger:支持 OpenAPI 3.0 规范,嵌入了 Swagger 官方的编辑器,通过定制开发,使其融入到 Wizard 项目当中,支持文档模板,全屏编辑,文档自动同步功能 Table:这种文档类型是类似于 Excel 电子表格,采用了 x-spreadsheet 项目,将该项目嵌入到了 Wizard 中,目前还不是很完善 目前主要包含以下功能 Swagger,Markdown,Table 类型的文档管理文档修改历史管理文档修改差异对比用户权限管理项目分组管理LDAP 统一身份认证文档搜索,标签搜索阅读模式文档评论消息通知文档分享统计功能如果想快速体验一下Wizard的功能,有两种方式 在线体验请访问 http://wizard.aicode.cc/ ,目前只提供部分功能的体验,功能预览和使用说明请参考 Wiki。使用Docker来创建一个完整的Wizard服务进入项目的根目录,执行 docker-compose up,就可以快速创建一个Wizard服务了,访问地址 http://localhost:8080 。 起源为了鼓励大家写开发文档,最开始我们选择了 ShowDoc 项目来作为文档管理工具,当时团队规模也非常的小,大家都是直接用 Markdown 写一些简单的开发文档。后来随着团队的壮大,前后端分离,团队分工的细化,仅仅采用 Markdown 开始变得捉襟见肘,这时候,我们首先想到了使用开源界比较流行的 Swagger 来创建开发文档。但是 Swagger 文档多了,总得有个地方维护起来吧? 项目中的文档仅仅用Swagger也是不够的,它只适应于API文档的管理,还有很多其它文档,比如设计文档,流程图,架构文档,技术方案,数据库变更等各种文档需要一起维护起来。因此,我决定利用业余时间开发一款 支持 Markdown 和 Swagger 的文档管理工具,也就是 Wizard 项目了。 起初打算用 Go 语言来开发,但是没过几天发现使用 Golang 来做 Web 项目开发效率太低(快速开发效率,并非指性能,Golang做API接口开发还是很不错的),很多常用的功能都需要自己去实现,遂放弃使用 Golang,转而使用 PHP 的 Laravel 框架来开发。所以虽然项目创建的时间为 2017年7月27日,但是实际上真正开始的时间应该算是 2017年7月31日。 ...

May 6, 2019 · 1 min · jiezi

XKNote-一个集各种神奇功能的云笔记

XK-Note一个集各种神奇功能的云笔记 前言博主是个计科的大学生,所以经常需要将一些不太理解的代码或者经验记录下来,纸质笔记对一些经验还好,一旦涉及代码。。。,所以博主的笔记都是电子的,在弄好这个笔记时使用的是Typora,确实非常好用,但是有个硬伤,同步不便,到机房上课的时候笔记就派不上用场,并且查看还要使用支持Markdown的编辑器。可谓苦不堪言,直到我在Github上看到了Editor.md这个项目,于是便开始了Coding。 简介 IntroductionXK-Note = Laravel . ZUI . Editor.md;一个由上方代码组成,集各种神奇功能的云笔记。 特性 Feature[云存储] 云端撰写笔记,随时保存,多端同步。[跨平台] 多平台支持,撰写查阅只需一个浏览器,无惧任何不兼容情况。[响应式] 所有页面均采用响应式设计,即使尺寸极小的设备也能保持良好的体验。[在线浏览] 拥有独立的浏览模式,查看笔记不再困扰。[Git同步支持] 独有的Git支持,支持版本控制,无惧误操作,随时从旧版本恢复笔记。[浏览器临时保存] 独有的浏览器端保存功能,即使断网了也能安心写作,无惧任何网络波动。[多用户] 笔记主要面向个人使用,但是也支持多人同时使用,每个用户的笔记互相隔离保存,无需担心笔记泄露。[导出笔记] 支持多种导出格式,保存为MD文件,html文件,由本地即时生成,无需繁琐的操作。[多种模式] 拥有多种模式,写作,预览,阅读,满足各种人的需求。还有多种神奇的功能等待你的发掘。演示 DemoXK-Note账号: demo@ixk.me密码: demo 安装 Install前往 Release 下载,然后上传至服务器,并解压到网站根目录安装依赖# Ubuntu/Debian 其他系统请自行查阅sudo apt-get install curl gitcurl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer进入网站根目录,并执行以下命令composer installphp artisan storage:link将根目录下的xknote.sql文件导入到数据库中,并确认是否导入成功修改.env文件,将数据库信息填入.env文件中,并关闭调试模式APP_DEBUG=false修改网站的运行目录到public打开网站,注册一个账户,并确认账户id是否为1(账户id为1代表管理员)enjoy文档 Doc暂无 Githubhttps://github.com/syfxlin/xk... 求 star = ̄ ̄= 维护者 MaintainerXK-Note 由 Otstar Lin和下列贡献者的帮助下撰写和维护。 Otstar Lin - Personal Website · Blog · Github许可证 License 根据 Apache License 2.0 许可证开源。 ...

May 6, 2019 · 1 min · jiezi

markdown超基础语法

今天学到的第一课:如果你真的想做什么事,一定不要把这件事放到最后做,即便你觉得自己有时间做。本来预计好晚上都用来刷题,结果健身+同学讨论+洗澡之后已经十一点了。。 Markdown介绍markdown是一种类似html的工具,能够利用简单的标签给定文字,标题等的格式,还可以非常简单得添加表格,超链接和代码等,让写作也带上编程的感觉。markdown是segmentfault写文章自带的功能,有一些也被做成了快捷键个人觉得这是对于word的一种升级,让格式变得没有那么难搞。毕竟每次写论文的时候,调整格式都很让人蛋疼 语法这里介绍7种常用的语法吧,基本涵盖日常使用,分别是标题,字体,表格,列表,引用,代码,分割线 标题在文字前加上若干个#即可markdown文本 #一级标题##二级标题###三级标题真实效果 一级标题二级标题三级标题以此类推,可以加到六级标题 字体最常用的就是加粗,倾斜,加粗倾斜markdown文本 实际效果 加粗倾斜加粗倾斜 表格markdown的表格语法一直让我很无语,就是用-和|画一个表格出来。。markdown文本 1|2|3-|:-|-:1|2|3实际效果 123123冒号是表明对齐方式,默认左对齐,在右边加:表示右对齐,左右都有:就是居中 列表(无序,有序)无序在文字前加上-+*都可以,注意要和文字之前留一个空格哦markdown文本 - 无序列表+ 无序列表* 无序列表实际效果 无序列表无序列表无序列表有序有序比无序还简单,就是我们平常很常用的数字加英文句号.即可,同样不要忘了加空格markdown文本 1. 无序列表2. 无序列表3. 无序列表真实效果 无序列表无序列表无序列表当然,有序列表有一个问题就是看起来和没效果很像。。(个人感觉) 引用在文字前加上>即可markdown文本 >引用实际效果 引用代码这个专栏本来是想写一些刷题心得,当然不能少了代码啦不过segmentfault的代码块似乎只需要敲tab?这个和别的编辑器好像有点不同,但我觉得更方便了markdown文本实际效果 代码分割线三个以上(包括三个)的---或者*就可以了markdown文本 ---***实际效果 似乎有些淡。。可能有点看不清 结语本文其实主要是想记录一些简单的markdown语法以免忘记,这些都是我觉得非常简单而且又很常用的语法。 当然,这些语法也不用强行记忆,用得多了自然就记住了,如果你没记住,说明你可能并不需要他们哈哈哈。 markdown还有非常多的功能,包括图片,超链接,注脚等等,但是我感觉没有上面提到的这些语法简单而又常用,所以就没有写在这里。 如果你觉得上面这些已经满足不了你的话,可以自行搜索markdown语法。

May 1, 2019 · 1 min · jiezi

摘自ES6标准入门第3版阮一峰著经典案例持续更新中

1.模拟next方法返回值的例子function makeIterator(array){ var nextIndex = 0; return { next: function(){ return nextIndex < array.length ? {value: array[nextIndex++],done:false} : {value: undefined, done: true}; } }}var it = makeIterator(['a','b']);it.next(); // {value: "a", done: false}it.next(); // {value: "b", done: true}it.next(); // {value: undefined, done: true}

April 29, 2019 · 1 min · jiezi

Markodwn-标题对齐的同步滚动

前言需要给正在写的Markodwn编辑器加上同步滚动的功能,百度了一通,没找到比较好的思路。就自己写了一个。 Github上是写好的库,和更直观的Demo。Github 这篇文章主要讲的是实现的思路。 介绍同步滚动的实现方式有很多种。简单粗暴的就直接让HTMLElement.scrollTop相等,还有就是让滚动条等比例滚动,还有标题对齐的滚动(这个是我在stackedit上看到的)。 这篇文章主要的内容是标题对齐同步滚动的实现方式。 个人来讲比较喜欢标题对齐,因为这种方式相对于另外两个对用户更友好。 从原理上来讲标题对齐实际上是等比例滚动的改良版。因为他们的核心都是通过计算编辑区和预览区的高度比值决定滚动的距离。 DEMO下面是DEMO的GIF图注意左边的# 同步滚动 同步滚动。 可以看到随着滚动条的移动,左右两边滚动的距离是不同的。 这个看起来有点像等比例滚动,但是他们是不一样的,区别在等比例滚动根据两边的全文高度决定滚动距离,标题对齐方式根据标题下内容高度决定滚动距离。 思路上图是一张示意图: # heading表示标题,content表示标题下面的内容。我把标题+内容称为片段(fragment)。 等比例滚动我想应该比较好理解,就是通过计算编辑区和预览区的高度比值,然后根据比值再计算滚动距离。 而标题对齐要更加精确一些,它把编辑区和预览区的高度换成了标题高度+标题下内容的高度即片段的高度,然后根据当前的片段对应的高度计算滚动距离。 上面的示意图中的md height和html height就是我们需要的片段的高度。很明显只要我们根据这两个高度的比值就可以计算出相对应滚动的距离。 具体过程首先需要编辑区和预览区的标题信息,数据结构如下。这里用editFragmentsInfo和preFragmentsInfo代替FragmentInfo: { pairId, // 于编辑区/预览区相对应的标题匹配用的id offsetTop, // 距离顶部偏移的距离 height // 标题加上内容的高度}然后需要能够获取当前页面顶部的标题块的方法,这里用getCurrentFragment()代替接下来要在 编辑区(editArea)/预览区(previewArea) 的滚动事件中向 预览区(previewArea)/编辑区(editArea) 发送消息通知它要开始滚动了。在另一区域接收到之后,进行以下操作。(假设主动滚动的是编辑区,被动滚动的是预览区即另一区域) 先要拿到当前在顶部的标题,用上面提到的getCurrentHeading()获取。然后要在预览区中匹配到对应的标题。根据两边headingInfo.height的比值计算出的数值再加上headingInfo.offsetTop的值就是预览区的scrollTop。到此为止,一次同步就结束了。这一过程是绑定在元素的滚动事件上的,每次滚动都会触发一次这样的过程。同步问题因为一个元素的滚动会导致另一个元素滚动,这必定会形成死循环。所以在滚动事件中一定要进行判断,避免死循环。 这是简单的互斥方法,支持两个以上对象的互斥互斥锁

April 28, 2019 · 1 min · jiezi

为了用-Markdown-写微信公众号自定义了一个编辑器

身边应该有不少朋友在写公众号,不知道你们用的是什么编辑器呢? 135编辑器i排版秀米 XIUMI易点编辑器上面这些编辑器,应该是小编们用得最多的几款,它可以快速添加各种样式插件,使文章更吸引眼球,让用户看起来很爽,欲罢不能。毕竟他们最注重的是阅读量,而非内容。 我也有写文章的习惯,但我不是小编,格式上只追求简约大方即可,重点在文字上,希望内容能产生一些价值。自从用了 Markdown 标记语言后,写文章就再也没用过其他的编辑器。 什么是 Markdown?什么是 Markdown?它是目前最流行的写作标记语言,没有之一。它能够通过简单标记就能实现文档格式,让写作者专注于内容。 由于它是纯文本,所以它可以像代码一样进行版本管理,同时,它对 Web 也非常友好,方便转成 HTML,甚至直接将 Markdown 文档生成静态站点,很多免费的自建博客服务都是采用的这种方案。目前几乎所有主流的写作平台,其编辑器都支持 Markdown。 一些 Markdown 编辑器,甚至在其基础上,扩展了很多功能。例如:公式及表格的支持。前段时间,一个外国小哥的数学笔记火了,全程像敲代码一般,紧追数学老师板书,记了 1700 + 页笔记。感兴趣可以看下这篇文章: 1700页数学笔记火了!全程敲代码,速度飞快易搜索,硬核小哥教你上手LaTeX+Vim 为什么不支持 Markdown?虽然支持它的编辑器多到数不过来,可是国内最著名的内容发布平台 —— 微信公众号,它的编辑器就不支持 Markdown,可算折腾坏了一帮写作者。为什么不支持?可能有两个原因吧。 用户学习成本Markdown 语法虽然简单,但对大部分人来说,毕竟也是一门新的知识,这就增加了用户的学习使用成本。你要知道,绝大部分的人,哪怕一点点的新东西都是接受不了的,微信没把编辑器做成 Word 的样式,我觉得已经是克制了的。 支持的样式并不完整Markdown 只提供了简单的样式标签,例如:标题,引用,链接等等,而对于复杂的样式,例如文字背景色等等,它是不支持的。 而微信面对的是全体创作者,单纯使用 Markdown 编辑器定然不能满足基本需求,而兼容 Markdown 的需求优先级并不高。 所以,一直以来,微信并不支持 Markdown,但我猜测,支持 Markdown 的功能迟早还是会做的。 Markdown 写公众号的痛你不是说了 Markdown 对 Web 非常友好嘛,转成富文本样式,然后贴到微信公众号的编辑器里,就可以了呀。道理是没错,但这正是折腾人的关键所在,因为 Markdown 只定义了基础的标签,而没有样式。 于是,各家的 Markdown 编辑器导出的样式都是有差异的,并且,跟微信公众号上的默认样式也不兼容。所以,贴进去后,显示出来的样式各不相同,如果文章里再有一些非标准的 Markdown 语法,显示出来更是五花八门了。一直以来都很纠结,对于一些样式复杂的文章,几乎就不发公众号了,因为调整样式,就要耗费大量的精力。 除了样式兼容性问题,还有微信公众号对外部链接限制问题,公众号内文章只允许引用微信内部链接,不支持外部链接。文章里若添加了第三方链接,我们只能硬生生的将 链接重新再贴进去。或者通过「阅读原文」链接原文地址。 解决方案微信公众号编辑器都几乎成为一种新的行业了,文章开头的那些编辑器,都能自力更生了,说明对小编们来说,公众号编辑器问题真的是一个痛点。 而对于适配公众号样式的 Markdown 编辑器,几乎没有,之前接触过 Md2All,功能上很完整,但是它并非只针对微信公众号,所以在细节方面的处理,总是差强人意。 一直想着,应该写一款符合自己样式风格的公众号编辑器。然而,一个偶然机会,发现了它,花三小时写这个工具,只为一分钟拯救公众号排版。 在程序世界里,有句老话说「不要重复造轮子」,你费好大劲去研究怎么做,没准别人已经都出成品了,这样就造成了资源浪费。幸运的是,我的「轮子」还没有开始动手呢。 总要做点自己的贡献这款公众号编辑器基本符合我的心里预期,简单的界面,优雅的样式风格,你看到的这篇文章的样式,就是通过它生成的。 ...

April 28, 2019 · 1 min · jiezi

关于写作那些事之我该选择哪种格式

markdown和富文本不知道你是否留意过平时写作时的编辑器,有的是 markdown 编辑器,有的是各种富文本编辑器,到底选择哪一个相信你有自己的判断.如果只是在某一家平台上写作,哪一种编辑器都无所谓,只要你喜欢就好.可是如果你需要同时发布到各个平台呢?此时,真的需要停下来思考一下,我该使用哪一种编辑器了?各家的编辑器的界面设计风格迥然不同,不仅按钮排序顺序不一样,而且最终输出效果也不尽相同.这就给我们带来了一个问题,明明已经排好版的文章,复制到另外一家平台样式不一样了,或者格式被清除了?!心中一万只羊驼呼啸而过,尽管如此,还是在心里告诉自己要冷静,要冷静!既然我们追求的一处编写,到处复制,那么我就有必要郑重向你推荐 markdown 编辑器.简单地说,markdown 编辑器是一种标记语言,写的是源码,输出的是 html.所以很多情况下, markdown 更适合技术人员写文章,不用关心排版布局,回归写作本质,而富文本格式适合文学工作者,强调布局美观,重视审美体验.两者看似相互独立,实际上最终展示效果几乎太大差别, markdown 格式和富文本格式最终都输出 html格式,毕竟绝大多数阅读媒介还是各种浏览器.markdown 语法支持嵌套 html 语法,从而可以实现较为复杂的排版布局.markdown 格式如果使用的是 markdown 格式编写文章,首先需要记忆常用的基本语法,半个小时足够入门写博客了,比txt 高级,比 html 简洁,取代 word 地位!正是因为 markdown 语法规范,所以可以说是跨平台的写作语言,基本上各大主流的博客平台均支持 markdown 格式,保证了"一处编写,到处复制"的优良特性.值得注意的是,不同平台对 markdown 格式的渲染结果稍有差异,甚至语法支持度不同,这要求我们尽量写通用语法或者因地制宜有针对性编写文章.## markdown 二号标题- markdown 无序列表1- markdown 无序列表2- markdown 无序列表3markdown 加粗文字效果markdown 超链接文字markdown 快速入门富文本格式平常熟悉的 word 编辑器可以理解为一种富文本格式,布局,标题,超链接,图片等均以控件的形式展示,需要填写标题了点一下按钮,需要加粗效果再点一下按钮,效果直观,不需要二次渲染,但不同的平台自然是不同的布局.一家平台的布局还不一定能够完美复制到另一家平台,虽然适合大多数人,但可移植性差!如果需要同时发布到多家平台,简直不敢相信,复制不了样式,需要重新排版等问题绝对是一种折磨.小结markdown : 拥有编程经验,不关心排版布局,专注写作多家平台发表首选 markdown 编辑器,“一处编写,到处复制”,可移植性好,最值渲染效果也不错!富文本格式: 可视化书写文章,无需编程经验的话,首选富文本编辑器,调整鼠标就能搞定页面布局还是很轻松的,同步更新到多家平台时,页面布局格式差强人意,后期维护难度大!

April 15, 2019 · 1 min · jiezi

Angular2+ 自定义Tree组件(参考Angular-material的CdkTree)

为了方便, 本文所有的Angular均表示Angula2及以上版本,对于使用Angular1/Angular.js的读者可作为参考前言目前正在写一个Angular的Markdown编辑器,需要一个树形组件来写文件系统。刚好之前用过Angular Material的树形组件,就想照着写一个。毕竟直接把Angular Material引进来会多出其他用不到的组件,而且自己实现还能更深入学习Angular。介绍在写之前我百度了一通,发现大部分文章的Tree组件实现都是把节点模板直接写在了组件里,类似下面<!–Tree组件–><tree> <tree-node></tree-node></tree><!–TreeNode组件–><tree-node> <!–本节点内容–> {{ nodeName }} <!–子节点–> <tree-node *ngIf=“hasChildren”> </tree-node><tree-node>说明一下: Tree组件里面包含TreeNode组件,TreeNode组件内部实现了递归子节点的逻辑。 其实这样的结构已经足够满足我的需求了,但是(因为强迫症)这样的可重用性几乎是没有,因为节点的内容已经写死在TreeNode组件里了。 然后我想到了Angular Material的CdkTree。他的结构如下<tree dataSource=“ds”> <tree-node> <!–本节点内容–> {{ nodeName }} <!–子节点出口–> <outlet></outlet> </tree-node></tree>说明: 简单的说就是CdkTree把<tree-node>里的内容作为一个模板保存起来,然后根据数据源递归渲染出来。这样我们就可以在不修改Tree和TreeNode组件前提下改变其内容。实现在实现之前需要理解Angular的几个装饰器,学过Angular的应该都不会陌生。@ViewChild - 在视图中查询匹配的第一个元素@ViewChildren - 在视图中查询匹配的所有元素@ContentChild - 在组件标签包裹的内容中查询匹配的第一个元素@ContentChildren - 在组件标签包裹的内容中查询匹配的所有元素View和Content的区别 View: 在组件的模板中定义的内容,即我们手动写在xxx.component.html里的内容Content: 在Host元素的<opening>和<closeing>标签中的内容概览在Tree组件中有四个比较重要的类@Component: TreeComponent@Component: TreeNodeComponent@Directive: TreeNodeOutletDirective@Directive: TreeNodeDefDirectiveTreeComponent该组件就是我们要是实现的Tree组件,用于包裹TreeNodeTreeNodeComponent树节点组件,我们自定义的模板就写在这里面TreeNodeOutletDirective这个指令设置了子节点的出口位置TreeNodeDefDirective这个指令用来定义树节点所需的数据,即我们使用这个指令让模板可以使用每个树节点对应的数据实现我们先看一下完成后的样子<nb-tree [dataSource]=“fileTree”> <nb-tree-node *nbTreeNodeDef=“let data = data”> <li> <span>{{ data.title }}</span> </li> <ul> <ng-container nbTreeNodeOutlet></ng-container> </ul> </nb-tree-node></nb-tree>(标签前面的nb请忽略,这只是默认的前缀)上面是完成后的简易版。我们可以看到在tree组件上设置了dataSource。然后在treeNodeDef指令中我们导出了数据对象data。然后在模板中使用了它<span>{{ data.title }}</span>。最后我们在<ng-container>上用treeNodeOutlet指令设置了子节点的出口。懒得详细写实习了。。。有空再写吧。本文主要提供一个通用树形组件的思路。想看代码的,看结尾。有一个不是很完善的tree组件,我用在正在写的Markdown编辑器上了。结尾Github: tree组件链接

April 13, 2019 · 1 min · jiezi

vuepress部署静态网站踩坑指南

背景Q1做了个小项目,自动化输出一份文档,把我司某个用户社区的功能点标记出来,并标上图中哪块数据用到哪个接口。完成后输出的方案是做成静态网站 部署到线上。因为我这边是前端,只能拿到后端接口,可能还需要后端或者c端或者其他端补充文档,因此想实现一个,各端同学都方便修改的方案,最后敲定,使用markdown编辑,只需push到gitlab,ci就会自动构建,跑vuepress build,生成静态网站,部署到服务器。2. 实现方式初始化项目-》写好yml->在gitlab配置好ci-》完成我的docker(我的docker其实只是初始化了node的环境)(docker的实现在另一个文章补充)-》push代码到gitlab->gitlab ci自动构建 项目 发布dist下面的文件到服务器-》访问 www.xxx.com/xxx/xx/xx/index.html -》done init npm init npm install vuepress -s-d 目录结构 .yml内容3. 踩到的坑A 本地调试 vuepress dev docs 报错 getReshandler。。。(忘记具体说啥了) 解决过程:statckoverflow搜索 解决方案: 安装 “webpack-dev-middleware”: “3.6.0"B本地localhost:8080 调试的时候没毛病部署到测试服务器 通过 www.xxx.com/xxx/xx/xx/index.html访问的时候 先跳正常页面 然后出现404一脸懵逼找了半天解决方案。把stackoverflow,sf,google翻了一遍发现没找到解决方案心态很崩,甚至想换个工具。然后抱着试一试的心态自己思考了下原因。打印了router 发现是path对应的component是没有的本地不会有这个情况于是乎,想了个骚操作,把to.path对应的跳转全都redirect到/下这下会出现一个问题 www.xxx.com/xxx/xx/xx/index.html刷新会跳到 www.xxx.com这不是我想哟的结果 我肯定是想要正常的访问我的页面突然灵光一现官网的配置有个base选项链接描述天哪因为我一开始不是挂在git上所以一直没注意…现在我修改了下好了现在可以正常访问了 C 因为静态资源上了cdn 所以 html的访问域名是 www.aa.com ,静态资源的路径是 www.bb.com,因此不能用相对路径,否则根本访问不到静态资源 解决方案:vuepress支扩展webpack配置配好后打包的dist对应的引用资源的前缀就会变成publicpath对应的啦~D如果实现 www.xxx.com/xxx/xx/xx/index.html 然后直接通过charles代理 在本地调试而不是loaclhost:8080的方式 好像不行因dev 命令没生成 dist文件夹,npm run dev docs之后 引用了 app.js等文件 而不是build 之后那些形式。。不知道怎么写charles规则。(如果有人懂得话欢迎指导一下~~~)TBC。。。欢迎纠正

April 7, 2019 · 1 min · jiezi

基于Laravel5.8支持Markdown的开源博客VienBlog

laravel-blogVien Blog - 一款基于laravel5.8开发的,支持markdown编辑以及图片拖拽上传的博客系统、SEO友好博主网站VienBlog这里有些小秘密博客亮点界面简洁、适配pc和mobile、有良好的视觉体验支持markdown、并且可以拖拽或者粘贴上传图片、分屏实时预览SEO友好:支持自定义文章slug、支持meta title、description、keywords自定义导航、自定义sidebar、随时去掉不需要的模块支持标签、分类、置顶、分享、友链等博客基本属性支持AdSense支持百度自动提交链接和手动提交链接博客展示Demo演示地址: 这是一个DEMO后台管理文章列表主要操作有创作、编辑、置顶、删除(软删除)创作和编辑创作和编辑页面Markdown编辑器:支持拖拽粘贴上传图片、预览、全屏、分屏预览前端展示参照 这是一个DEMO看完Demo,如果你觉得还过得去,想要用一用试试呢,赶紧往下看喔。使用博客安装获取源码git clone git@github.com:luvvien/laravel-blog.git进入项目目录后,用composer安装依赖composer install生成.env文件cp .env.example .env创建数据库vienblog ,字符集采用 utf8mb4, utf8mb4_general_ci编辑.env文件 vim .env,修改MySQL数据库连接配置,请将DB_HOST,DB_PORT,DB_USERNAME,DB_PASSWORD 改成你的数据库配置。[…]DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=vienblogDB_USERNAME=rootDB_PASSWORD=root[…]数据迁移和数据填充php artisan migratephp artisan db:seed创建storage软连接php artisan storage:link设置目录权限chmod -R 755 storage/chown -R www-data:www-data storage/使用可以选择临时预览,也可以用Nginx部署服务临时预览php artisan serv打开浏览器访问127.0.0.1:8000使用NginxNginx配置,将root指向项目的public目录,请用pwd 查看目录,并且改成你目录,千万不要直接粘贴复制。root /app/laravel-blog/public;完整配置server { listen 8088 default_server; listen [::]:8088 default_server; root /apps/vien_blog/public; index index.php index.html index.htm; server_name _; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; # fpm,因为版本不同路径会有区别,这里请改成你,不知道路径可以执行php-fpm便会显示 # fastcgi_pass 127.0.0.1:9000; # cgi }}打开浏览器访问127.0.0.1:8088后台登录地址/admin默认的admin管理账号是vien@byteinf.com密码是vienblog,进入控制台后可以修改管理员信息使用百度自动推送和主动推送请先在config/vienblog.php中按照注释配置相关的信息,自动推送是在网页访问时推送,主动推送执行以下代码会将未提交过的链接提交到百度php artisan push:baidu讨论群QQ群号:149347741 (欢迎开发者,技术爱好者,站长加入)联系我Email: support@vienblog.comLicense使用Vien Blog构建应用,必须在页脚保留Powered by Vien Blog字样以及相关链接在遵守以上规则的情况下,你可以享受等同于MIT License协议的授权。使用Vien Blog并且遵守上述协议的用户可以享受Vien Blog的博客导航,联系我将你的博客地址添加到Vien Blog的网站导航中。 ...

April 6, 2019 · 1 min · jiezi

微信账单数据可视化项目

微信账单数据可视化项目哈喽各位小伙伴们Night 微信账单分析来袭!让数据说话! Demo网址http://www.dnnnns.com话不多说,导出你的微信账单分析吧,走边了多少个城市,吃遍了多少个馆子,最爱消费的商铺等等…. 小Bill帮你的账单数据可视化。还支持导出账单小票操作吆,又可以装B了。(友商合作可重点看最后一图) 此外本项目完全开源,项目上传GitHub https://github.com/hltfaith/w…废话不多说直接上图,走起

April 2, 2019 · 1 min · jiezi

gitbook 入门教程之前置知识

markdown 基本知识markdown 是一种简化的 html 语法,相比于 txt 无格式文本更强大.你可以用专门的软件去编辑 markdown 文件,就像需要使用软件编辑 txt 文件一样,当然也可以什么软件也不用,甚至直接在记事本或命令行书写,只不过这样的缺点就是无法实时预览输出效果,安全依赖个人经验和想象力了.markdown 文件后缀名是.md,安装了相应插件的浏览器或专门软件能够看到输出效果.标题语法格式: # + 空格 + 文本大多数markdown编辑器支持 h1~h6 级标题,而富文本编辑器一般仅支持到二级标题.示例:# 标题1## 标题2效果:标题1标题2列表列表包括有序列表,无序列表和任务列表,并支持列表嵌套.大多数 markdown 编辑器和富文本编辑器均支持有序列表和无序列表,而任务列表和列表嵌套支持度就不是很好,存在平台兼容性问题.有序列表语法格式:数字 + . + 空格 + 文本示例:1. 有序列表1 2. 有序列表2 3. 有序列表3 效果:有序列表1有序列表2有序列表3无序列表语法格式:- 或 * 或 + + 空格 + 文本示例:- 无序列表1 * 无序列表2 + 无序列表3 效果:无序列表1无序列表2无序列表3链接和图片markdown 编辑器和富文本编辑器均支持链接和图片,值得注意的是有些平台限制或禁止外链.链接语法格式:[显示文本] + (链接地址)示例:https://snowdreams1006.github.io效果:https://snowdreams1006.github.io图片语法格式:! + [图片标题] + (图片地址)示例:效果:代码代码分为单行代码和多行代码,其中多行代码也叫做代码块.大多数 markdown 编辑器均支持代码,富文本编辑器支持度不一样,有的支持单行代码有的支持代码块.单行代码语法格式:+ 单行代码 +示例:code效果:code多行代码语法格式:+ 多行代码 +示例:<pre>function fun(){ echo “这是一句非常牛逼的代码”;}fun();</pre>效果:function fun(){ echo “这是一句非常牛逼的代码”;}fun();这里的富文本支持语法指的是 markdown 渲染后的内容能否正常显示,并不是指 markdown语法本身能够正常渲染,更多详情请参考 markdown 快速入门git 基本知识git 是全世界最先进的分布式版本控制系统,帮助项目更好地进行管理,支持版本历史管理和多人写作管理等功能.简单地说,可以理解为一种优雅的文档备份方式,支持云端备份,多人协作等特点.初始化项目语法格式: git init适合从零开始的本地项目,初始化后的项目才是能够被 git 管理的项目.示例:git init克隆项目语法格式: git clone适合已有远程项目需要下载到本地,作用是将远程项目克隆到本地,和 git init 实现类似的功能.示例:git clone git@github.com:username/username.github.io.git添加文件语法格式: git add将文件添加到暂存区,支持多次添加文件,相当于写入缓存区.示例:git add .提交文件语法格式: git commit将暂存区内容提交到版本库,完成一次历史版本.示例:git commit -m “写入提交备注,简短说明下提交意图和目标"推送文件语法格式: git push将本地版本库推送到远程版本库,相当于本地文件备份到云端服务器.示例:git push origin master拉取文件语法格式: git pull将远程版本库拉取到本地版本库,相当于云端服务器文件恢复到本地.示例:git pull查看状态语法格式: git status查看当前文件状态,包括文件被新增,被修改,被删除,未提交等等.示例:git status 比较差异语法格式: git diff查看两个文件之间的具体差异示例:git diff 历史日志语法格式: git log查看版本库的提交历史日志示例:git log上述仅介绍了 git 的简单命令,实际使用情况远不止这些,更多详情请参考 git 入门教程 ...

March 31, 2019 · 1 min · jiezi

gitbook 入门教程之 gitbook 简介

gitBook 是一个基于node.js的命令行工具,使用 github/git 和 markdown/asciiDoc 构建精美的电子书.gitbook 支持输出静态网页和电子书等多种格式,其中默认输出静态网页格式.gitbook 不仅支持本地构建电子书,而且可以托管在 gitbook 官网上,并享受在线发布和托管图书的便利,完整的文档请参考 gitbook 新版文档(需FQ)或 gitbook 旧版文档(不需FQ)适用场景不仅适用于软件说明文档的发布更新,同样适用于文本文档的连载更新.既适合具有一定编程经验的软件开发从业者,也适用于不满足传统书写方式的文学创作者.简而言之,gitbook 可以条理清晰地整理出零碎知识,打造专属你自己的电子书,漂亮的主题,丰富的插件让你的知识变得从此与众不同!git + markdown = gitbook,其中 git 可以管理书籍内容的变更,并将其托管到云端实现团队协作,而 markdown 简洁的语法特点,使得我们不必关心布局排版问题,专注创作,重拾写作乐趣!如果你还不了解 git 和 markdown 相关知识,赶紧去学习 markdown 快速入门 和 git 入门教程 吧!先睹为快gitbook 教程gitbook 官网gitbook 文档参考文档gitbook 官网(新)gitbook 官网(旧)gitbook 文档(新)gitbook 文档(旧)git 官网github 官网gitbook 新版需要FQ,旧版不需要FQ

March 30, 2019 · 1 min · jiezi

把时间留给重要的事——Markdown 模板功能上线

你是否遇到过因为同事在任务中过于放飞自我而感到头疼?或者经历过因为内容描写的不系统而导致关键信息被忽视?现在,CODING Markdown 模板功能将帮助你解决这些困扰。功能介绍CODING 研发管理系统任务内容支持 Markdown 语言。Markdown 是一种轻量级标记语言,让写作者专注于写作而不用关注样式。CODING Markdown 模板功能主要用于解决企业在项目协作中的内容输出规范问题,同时可以在 CODING 研发管理系统各处的 Markdown 编辑框内实现快速填写指定内容的效果。选择模板后就可以直接根据模板填写内容功能设置企业所有者/管理员可以创建企业级别 Markdown 模板,企业成员通用。项目管理员可以创建项目级别 Markdown 模板,项目成员通用。个人可以创建个人的 Markdown 模板,仅自己可用。选择场景默认模板后,该场景下的 Markdown 编辑框将会自动填充模板内容,且场景默认模板的显示优先级为项目 > 企业 > 个人。功能演示项目 Markdown 模板项目 Markdown 模板功能仅项目管理员可见。项目管理员创建 Markdown 模板后,此项目内成员在本项目内的 Markdown 编辑框可选用。1、【项目】 -> 【项目设置】 -> 【模板设置】 -> 【新建模板】。2、填写模板名称、模板内容后,点击【保存】按钮即创建成功。3、建好模板后可在【模板设置】进行编辑和删除。4、在项目内的某处 Markdown 编辑框点击【模板】按钮(此处以任务编辑框为例)。5、在【选择 Markdown 模板】页面选择所需模板,点击【确定】按钮即可在编辑框内使用模板内容。企业 Markdown 模板企业 Markdown 模板功能仅企业管理员和企业所有者可见。企业管理员或企业所有者创建 Markdown 模板后,该企业下的所有企业成员在企业内所有项目的 Markdown 编辑框均可选用。【头像下拉框】->【企业管理】-> 【模板管理】。个人 Markdown 模板个人 Markdown 模板功能所有用户可用。用户创建 Markdown 模板后,CODING 研发管理系统所有项目内的 Markdown 编辑框均可选用。个人创建的模板仅自己可见。【头像下拉框】-> 【个人设置】->【模板设置】。场景默认模板现支持:项目描述、项目公告、版本发布和 Wiki 四个场景。【新建模板】->【编辑 Markdown 模板】->【选择对应默认模板】-> 【生产相对应的模板】设定规则:如把某模板设置为某场景下的默认模板后,则该场景下的 Markdown 编辑框将会自动填充模板内容。每个场景只能匹配一个默认场景模板, 同一场景选择新模板后旧模板会被替换。场景默认模板的显示优先级为:项目 > 企业 > 个人。比如企业、项目、个人均设置了针对任务描述的场景默认模板,此时在项目内新建一个任务,则默认填充项目级别的任务描述 Markdown 模板。点击链接,立即感受 Markdown 顺滑新体验! ...

March 26, 2019 · 1 min · jiezi

md写作必备知识点

md是一种让博主只需记住少许标签,便可由博客渲染系统产生相应特效,从而把专注力全部投入文章内容的一种语法.如今很多文章分享网站如"知乎" “简书” “github"都能够识别md格式,所以如果你想认真的写个博客,又不想自己折腾显示效果,md将是你写作的一大利器.以下是md必备的知识点.一.标题写法1.在文本下方写上”=",则上方文本就转为大标题,等号个数不为0即可,建议多写几个.如: title ==========2.在文本下方写上减号"-",则上方文本转换为中标题,减号个数不为0,范例同上.3.如果在文本下面的添加的减号或者等号作用了上方的多余内容,则在准备转换成标题的上方添加一个空行.如: 多余部分 准备的标题部分 ====================4.类似html语言,md提供用户六个标题等级,准备使用第几级标题便在前面添加多少个’#’,标题大小依次递减.如: #第一级标题 ##第二级标题 ###第三级标题 …. ######第六级标题二.编辑基本语法1.字体格式强调文本 //斜体_文本_ //斜体文本 //加粗强调文本 //加粗斜体强调2.代码强调用!旁边的 **, 表示代码,表示代码块高亮.示例如下: #include <stiod.h> int main() { return 0; }3.表格描述每一行的内容,同行元素用 | 分隔,第二行代码不可或缺,表格之前要空一行否则未必能正常显示.示例代码如下: 表头|表头|表头 —|—|—| 内容1|内容2|内容3表头表头表头内容1内容2内容34.引用4.1引用图片: //图片链接必须包括协议4.2引用链接链接名称 //只比图片少一个’!‘百度5.列表无符号列表: text //若为子项代码不要缩进,开头,与内容间隔一个空格有符号列表1.first2.second3.third6.换行如html用</br>标签7.引用行首用>标识可能作用多行,用回车分离不用标记的内容让你看看引用的效果本笔记加工自md编写教程8.缩进用两种方式,中文全角空格,html标签 &nbsp;与&ensp;,分号不可省略.本文源代码

March 26, 2019 · 1 min · jiezi

Markdown,抛弃繁琐的格式

Markdown,抛弃繁琐,创作神器 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。 Markdown的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台WordPress和大型CMS如Joomla、Drupal都能很好的支持Markdown。完全采用Markdown编辑器的博客平台有Ghost和Typecho;用于编写说明文档,并且以“README.MD”的文件名保存在软件的目录下面。 Markdown抛弃了word等编辑的繁琐格式,它的简单易用让你更专注于创作。 在这里,推荐一款windows平台下,个人认为好用的markdown编辑器——Typora 接下来,介绍常用的语法格式。目录语法格式:[TOC]markdown编辑器会生成一个目录注:部分md编辑器不支持目录的语法,如简书[TOC]标题标题有两种语法格式第一种:语法格式:#(#的个数表示标题的大小)标题分为h1-h6,类似HTML的标题,逐步递减例如:# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题第二种:语法格式:在标题底下加任意个=或-其中,=代表一级标题,-代表二级标题例如:一级标题(任意个)====== 二级标题(任意个)—— 标题示例:一级标题二级标题三级标题四级标题五级标题六级标题一级标题(任意个)二级标题(任意个)列表列表分为有序列表和无序列表两种有序列表:语法格式: 数字(或字母). 内容注:这里的.是英文格式下的.例如:1. 汉堡包2. 薯条3. 可乐无序列表:语法格式: - 或 * 或 + (空格) 内容,作为无序列表标记。例如:+ 汉堡包* 薯条- 可乐建立多级列表时,每个子级别都要比上个子级别前多打两个以上空格。在 * 前加两个空格键或一个tab键就可以产生一个子列表。无序列表示例:汉堡包薯条可乐有序列表示例:汉堡包薯条可乐引用引用分为常规引用和分级引用常规引用:语法格式:> (空格) 引用内容分级引用:语法格式:> 一级引用 >> 二级引用 >>> 三级引用常规引用示例,引用中支持多级引用(嵌套引用)、标题、列表、代码块、分割线等这是嵌套引用// 嵌套引用代码块public static void main(String[] args) { System.out.println(“Hello World!”);}一级引用二级引用三级引用文字样式加粗文本 或 加粗文本斜体文本 或 斜体文本粗斜体 或 粗斜体删除文本底纹:==高亮 # 807700== 或 ==高亮==非基本语法字体上标、下标语法:这是<sup>上标文字</sup>这是<sub>下标文字</sub>这是上标文字这是下标文字图片和链接图片语法格式:[]内表示图片描述,可忽略()内表示链接的地址链接语法格式:[]内表示链接的描述()内表示链接的地址链接这里又分为行内式、参考式和自动链接。行内式:以[]标记显示的链接文本,后面紧跟()包围链接,文本参考式:[文本][URL] [URL]:….自动链接:<URL>实例:行内式参考式,URL自动链接http://www.baidu.com图片代码块语法格式:行内代码语法格式:Hello World代码不分行,只有一段代码框语法格式:代码片段行内代码实例:Hello World代码框实例:public static void main(String[] args) { System.out.println(“Hello World”);}表格表格语法居左 |:—居中 |:—:|居右 —:||标题|标题|标题||:—|:—:|—:||左|中|右|实例:标题标题标题左中右分隔线语法格式:—***_脚注语法格式:这是一个脚注例子[^脚注内容]实例:这是一个脚注例子1注释注释语法格式:<!–注释–>实例:<!–注释–>增强Markdown的HTML标签<font face=“微软雅黑” color=“red” size=“6”>字体样式</font><p align=“left/right/center”>文本格式</p>换行<br/><u>下划线</u>实例:<font face=“微软雅黑” color=“red” size=“6”>字体样式</font><p align=“left/right/center”>文本格式</p>换行<br/><u>下划线</u>任务列表- [ ] 任务内容 []之间带有空格[ ]内填入x代表完成注:部分Markdown编辑器不支持- [ ] 未完成- [x] 完成实例:[ ] 未完成[x] 完成转义字符\代表转义*转义实例*实例:转义实例扩展支持 jsfiddle、gist、runjs、优酷视频,直接填写 url,在其之后会自动添加预览点击会展开相关内容。http://{url_of_the_fiddle}/embedded/[{tabs}/[{style}]]/https://gist.github.com/{gist_id}http://runjs.cn/detail/{id}http://v.youku.com/v_show/id{video_id}.htmlhttp://{url_of_the_fiddle}/embedded/[{tabs}/[{style}]]/https://gist.github.com/{gist_id}http://runjs.cn/detail/{id}http://v.youku.com/v_show/id{video_id}.html公式使用一对$$包裹TeX或LaTeX格式的数学公式$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a}. $$$$x \href{why-equal.html}{=} y^2 + 1$$$$x \href{why-equal.html}{=} y^2 + 1$$脚注内容 ↩ ...

March 25, 2019 · 1 min · jiezi

markdown博客图床上传的艰辛之路

markdown用着很爽吧,但是图片存哪呢? 写给所有写静态博客,又想搞个图床的人。1. 适用场景假如你用github page用markdown写个人博客的话,而你正好又用到一些图床的话,那你可以继续看下去。2. 图床分类图床可以分为两类:付费类:云服务提供的对象存储: 例如七牛、阿里云提供的对象存储免费类:专门的图床网站: 例如sm.ms, 路过图床,极简图床类似的,一般都是免费。优点是免费,缺点图片丢了就丢了,网站挂了就挂了,毕竟人家又没收你的钱先说云服务提供的对象存储。2.1. 七牛云七牛图床也是推荐比较多的。而且七牛OSS在认证过后提供免费的10G存储空间,你看到的是免费,10G存储空间。但是还有些信息没有告诉你。免费的仅仅是存储空间,流量费超标了,还是要另算费用的哟免费提供的外链仅仅是HTTP, HTTPS可是不免费的哟免费提供的图片的外链是测试的域名,30天后会被回收的哟。也就是说,如果你用测试域名,那么你的图片很可能不知哪天就无法访问了。当然了,你也可以绑定一个正式的域名,但是你需要买个域名,对这个域名进行域名备案、公安网备案。如果你仅仅是为github pages搞个图床,那备案之路是不容易的。就好比你想吃个茶叶蛋,但是小卖部老板要求你要写出一篇不少于800字的文章,从鸡蛋的外壳上去证明这只母鸡产下这枚蛋的心情。你要考虑是否值得。2.2. 阿里云如果你用阿里云的对象存储,阿里云是没有免空间的,但是其实空间并不贵,我之前买的9块钱40G一年的空间。而且阿里云提供正式的外链域名,域名是不会被回收的。但是如果你以为阿里云很划算的话,你就很傻很天真了。阿里云的对象存储计费是慢复杂的,而且不便宜。阿里云OSS计费由四个部分组成: 存储费用 + 流量费用 + 请求费用 + 数据处理费用至于具体计费细节我就不多说了,只说一个真实的故事。七牛云给出测试域名回收通告之后,当天我就把500多张图片,大概24MB左右,全部迁移到阿里云OSS。当晚凌晨左右,正在躺在床上看灌篮高手的正起劲的我,突然收到阿里云OSS欠费通知。于是我虎躯一震,翻身下床,打开电脑,还了欠费,删了OSS。总之,天下没有免费的午餐,出来混,总是要还的。2.3. 又拍云又拍云提供的外链,也是需要绑定域名的,而且域名需要备案。2.4. 专门的图床网站专门的图床网站,一般都是免费的。但是免费的,除非站长能力超强、票子超多,否则没有盈利模式的话,早晚可能还是免不了无法访问的结局。详情可以看一下, 盘点一下免费好用的图床3. 为了方便、还是为了折腾给markdown图片一个图床,出发点是为了方便。为了markdown在迁移时,图片不会无法访问。但是我觉得在这个出发点上,我越绕越远。为了方便,而折腾出一系列麻烦事。4. 解决思路博客尽量少加图片尽量将图片放在博客目录下,不使用图床对于不重要的图片,可以使用免费图床可以购买一些付费的专门的图床服务或者干脆使用github issue写博客,它是支持图片上传的或者就sf,或者一些博客平台写博客各种支持将图片上传到各个图床的工具也层出不穷,小心着用5. 结论天下没有免费的午餐,我妈妈曾经在平多多上买了几分钱的床单,收货后觉得连尿布都不如。(我是笑着劝她不要买????)出来混,最后总要还的如无必要,勿增实体。不要为了简单,反而让事情变得更复杂。奥卡姆剃刀原理

March 25, 2019 · 1 min · jiezi

使用Markdown输出LaTex数学公式

现在大数据、人工智能、数据分析等很多技术岗位都对数学有一定的要求,数学越来越重要,很多人也开始尝试学习数学,脑子里突然就有了结合Python编程来学习数学的想法。在网络上搜索了很多相关资料,看到非常多不错的尝试,但是国内在这方面的资料却比较少,于是就想到开一个技术专栏。实践出一整套便于互联网传播分享的数学公式跨平台编辑、跨环境显示是非常有必要的,如果还是停留在Word或PDF时代,那数学就会被限制在文档或图片里而无法通过最流行的网页方式进行传播,而且Word、PDF等文件处理软件里的数学公式编辑既麻烦,而且最重要的是与编程脱节。数学公式的编辑与显示要将学习心得(尤其是数学公式等)写成文档在知乎、简书、微信公众号以及网站的网页上面展示出来,使用Markdown以及LaTex Math的结合我认为是最佳的方法。与LaTex文档的比较 虽然很多数学学术论文整个文档就像使用Markdown一样是直接使用的LaTex语法来编辑的,但是仔细比对之后发现直接用LaTex语法来写整个文档来,它的效果和Markdown + LaTex Math 方式没有太大的区别。但是LaTex的语法、编辑器、配置、中文支持等都要比Markdown要复杂的多,而且也不及Markdown已经非常成熟的生态(包括工具链、社区等)。编辑器与插件Markdown的编辑器非常多,对于很多初学者来说,个人比较推荐使用VS Code。一是VS Code汉化比较方便,想让更多人学会使用Python来学数学,有一个中文界面还是比较重要的;而且VS Code是跨平台的,Mac、Windows都可以上手;二是VS Code是一款极为优秀的代码编辑器,说起优秀,应该算是目前最为推荐的编辑器之一(可能没有之一);要用Python学数学,就不能用纯Markdown软件,代码编辑器是少不了的,使用VS Code编译Python和Markdown都极为舒适;三是VS Code插件丰富,Python的编译、Markdown的编写与预览、LaTex Math的显示等工具链相当完备。比如Python插件,只需要安装插件集合Python Extension Pack,里面就包含了微软官方插件Python、MagicPython、Jupyter等优秀插件;而Markdown插件,推荐安装Markdown All in One,以及Markdown+Math。LaTex Math的语法LaTex Math的语法多且杂,我们是没法完全记住这些语法的,能记住也不提倡吧,我连Markdown语法都没能全记住。查询手册在手,天下我有,这里比较推荐名校莱斯Rice大学的一个语法手册,莱斯大学LaTex Math在线PDF手册。 当然安装了上述插件的VS Code也是有LaTex Math语法提示的。用英文字符反斜杠就可以为你提示。下面我们就结合这个PDF里LaTex Math的语法在Markdown里面进行实战,以及对这些语法的使用进行一些简单的讲解。希腊字母 使用$LaTex希腊字母语法$,也就是将LaTex的希腊字母语法用两个美元符号围住即可。比如以下案例:$\Gamma$、$\iota$、$\sigma$、$\phi$、$\upsilon$、$\Pi$、$\Bbbk$、$\heartsuit$、$\int$、$\oint$输出的结果就是这样子啦~ $\Gamma$、$\iota$、$\sigma$、$\phi$、$\upsilon$、$\Pi$、$\Bbbk$、$\heartsuit$、$\int$、$\oint$ 值得注意的是希腊字母有大写和小写之分,这个大小写是由LaTex的首字母是否大小写来控制的。三角函数、对数、指数 三角函数、对数、指数的写法以及其他符号的语法和字母是一样的,也是使用$LaTex符号$,也就是将LaTex的希腊字母语法用两个美元符号围住即可,我们来看下面的案例:$\tan$、$\sin$、$\cos$、$\lg$、$\arcsin$、$\arctan$、$\min$、$\max$、$\exp$、$\log$输出的结果如下: $\tan$、$\sin$、$\cos$、$\lg$、$\arcsin$、$\arctan$、$\min$、$\max$、$\exp$、$\log$ 运算符 运算符的写法也是如此,不过要注意的是加号、减号、等于号、大于、小于的写法有点不同,是直接用符号即可,这个要注意一下。$+$、$-$、$=$、$>$、$<$、$\times$、$\div$、$\equiv$、$\leq$、$\geq$、$\neq$ 输出的结果就是: $+$、$-$、$=$、$>$、$<$、$\times$、$\div$、$\equiv$、$\leq$、$\geq$、$\neq$ 集合符号 集合是高中数学就会学习的知识,也是非常重要的基础概念,集合的符号也比较多,所以会特地把它们单独列出来,虽然它们的语法和上面没有区别。$\cup$、$\cap$、$\in$、$\notin$、$\ni$、$\subset$、$\subseteq$、$\supset$、$\supseteq$、$\infty$输出的结果就是: $\cup$、$\cap$、$\in$、$\notin$、$\ni$、$\subset$、$\subseteq$、$\supset$、$\supseteq$、$\infty$数学符号非常多,这里只是列举了一些常用的符号,更多符号细节既可以查看莱斯大学的PDF。数学公式与Markdown Math前面只是介绍了单一的数学符号显示问题,但是一段完整的数学公式则包含多个数学符号、数值,在介绍数学公式之前,我们需要先来了解一下内联与块状的概念。内联输出与块状输出前面我们在输出每个符号的时候,都用两个美元符号$$,这种方式就是内联,所谓内联就是我们可以把数学符号嵌入到文字段落里面,比如:函数式:$f(x)=\frac{P(x)}{Q(x)}$ 函数式:$f(x)=\frac{P(x)}{Q(x)}$ ,我们可以看到这段公式在文字段落里面。 如果我们需要输出的数学公式比较复杂,或者我们需要凸出并独立显示公式,这个时候我们就需要使用到公式的块状输出,块状输出的语法使用4个美元符号$$数学公式$$,我们来看案例。$$f(x)=\frac{P(x)}{Q(x)}$$ 使用块状输出,函数会居中显示,值得一提的是我们在使用块状输出数学公式时,在Markdown里需要换行来写公式。$$f(x)=\frac{P(x)}{Q(x)}$$ 简单的四则运算我们先来看简单的四则运算怎么用Markdown Math编写,$2x - 5y = 8$ $3x + 9y = -12$$7x \times 2y \neq 3z$注意这里的\times是乘号,\neq是不等于,输出的效果如下: $2x - 5y = 8$ $3x + 9y = -12$ $7x \times 2y \neq 3z$指数输出Markdown Math的指数运算符是^,这个在Python里位运算符,Python的指数运算符是**,这个注意区别即可。$x^3+x^9$ $x^y$ 输出的结果为: $x^3+x^9$ $x^y$ n次方根输出\sqrt{}是开平方,注意数值使用大括号{}围住,而开n次方的语法是\sqrt[n]{},n次方的n用中括号[]围住,我们来看下面的案例:$\sqrt{3x-1}+\sqrt[5]{2y^5-4}$输出的结果是: $\sqrt{3x-1}+\sqrt[5]{2y^5-4}$三角公式三角公式通常括号、字母、符号、运算符混杂的比较厉害,所以书写的时候要特别注意,我们来看下面的例子:$$\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$$输出的结果如下: $$\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$$ 输出分数输出带有分子分母的分数的语法为\frac{分子}{分母},使用大括号把分子、分母都围住。$$\frac{x}{2y} +\frac{x-y}{x+y} $$输出的结果如下: $$\frac{x}{2y} +\frac{x-y}{x+y} $$求和输出求和公式比较复杂,会涉及到上标和下标,在输出指数^时我们可以把它看成是上标,使用_来输出下标,我们来看具体案例:$$\sum_{n=1}^\infty k$$输出的结果如下: $$\sum_{n=1}^\infty k$$极限的输出在我们了解了上下标的概念之后,输出极限就会使用到下标,$$\lim\limits_{x \to \infty} \exp(-x) = 0$$输出的结果: $$\lim\limits_{x \to \infty} \exp(-x) = 0$$阶乘的输出$$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$输出的结果如下: $$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$Markdown Math输出矩阵使用\begin{matrix}和\end{matrix}围住即可输出矩阵,矩阵之间用$来空格,用\来换行。$$ \begin{matrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9 \end{matrix} $$输出的结果是:$$ \begin{matrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9 \end{matrix} $$复杂数学公式分段函数的编写分段函数是非常复杂的,这时候会用到LaTex的cases语法,用\begin{cases}和\end{cases}围住即可,中间则用\来分段,具体我们来看下面的例子。$$X(m,n)=\begin{cases}x(n),\x(n-1)\x(n-1)\end{cases}$$分段函数输出的结果如下:$$ X(m,n)=\begin{cases}x(n),\x(n-1)\x(n-1)\end{cases}$$Markdown Math也就是LaTex语法输出数学公式的基本用法,我们先介绍到这里,后面我们会在学习过程中接触到时再来研究。Markdown Math的跨平台显示让数学公式可以在知乎、简书、公众号等自媒体平台以及网页和博客系统Wordpress上优雅的显示,这样才有利于数学公式的阅读与传播。知乎、简书、掘金上显示数学公式简书的Markdown编辑器可以比较完美的支持Markdown语法以及Markdown Math语法,可以直接把用VS Code写的Markdown文件里的内容复制粘贴过去,然后进行一些简单的修改就可以了。 而知乎自带数学公式的插入,如果直接导入Markdown文件显示会出现一些问题,需要把数学公式用知乎自带的Tex编辑器重新书写,只需要把$$删除即可。在网页上显示数学公式由于我们的网页可以不用Markdown,用HTML替换Markdown排版语法就可以,所以我们只需要专注于如何在网页上显示数学公式即可。比较完美的解决方案是使用mathjax,我们只需要在<head>标签内插入mathjaxjs即可。比如下面的案例,大家只需要把下面的代码复制下来并保存为html文件即可,不过要注意的是内联式的语法会有些不同,不再是$符号与公式$,而是:(符号与公式)<!DOCTYPE html><html><head> <meta charset=“utf-8”> <meta name=“viewport” content=“width=device-width”> <script type=“text/javascript” async src=“https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML" async></script></head><body><p> 当 (a \ne 0)时, (ax^2 + bx + c = 0) 会有两个解,它们是: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p></body></html>数学公式在公众号上的显示微信公众号封闭且奇葩,美化微信公众号的排版虽然用的是html和css语法,但是有很多需要注意的地方,因此排版也相对来说比较麻烦,相比知乎、简书等自媒体平台来说,公众号的排版也可以做到更美观。不过要想让数学公式在公众号上显示就比较麻烦,微信公众号是不支持LaTex语法的,所以需要把公式做成图片,其他不支持LaTex的自媒体平台也可以这么处理。公众号显示数学公式有一个比较简单好用的方法就是[Md2All]http://md.aclickall.com/,可以直接把VS Code编辑的Markdown文档粘贴到里面,还能进行精美的排版,但是这个方法有两个问题,一个是生成的图片比较模糊,有碍观瞻;第二就是如果数学公式过多,就需要用七牛云的CDN,配置的方法也比较简单,总体来说Md2All综合效果最佳的方案,相比于其他方法更方便,也能一梭子把Markdown文档以及数学公式进行优雅的公众号排版。 ...

March 16, 2019 · 1 min · jiezi

Sublime Text3安装MarkDown插件

Sublime Text3安装MarkDown插件思否的笔记编辑器不支持MarkDown的实时预览,之前一直是用CSDN的在线编辑器写笔记,笔记换到思否后不是很方便,所以利用一下Sublime Text3的一些小插件实现MarkDown的实时编辑预览。使用效果写在前面的原因是:其实际使用效果并不是很好,可能是Surface的孱弱性能导致其有那么一丝卡顿,而且它似乎不支持自动换行。相比而言,我还是喜欢用CSDN的在线编辑器。。所以本篇笔记就当作记一下Sublime 的插件安装方法笔记吧。。安装工作0.Package Control的安装Package Control是Sublime Text的一个管理插件。可以看这篇Package Control安装1.进入Package Control。按下快捷键shift+Ctrl+P启动sublime的控制台,输入Package Control:Install Package回车进入Package Control的插件包安装界面。2.安装Markdown的插件输入插件名Markdown Editing安装插件Markdown Editing ,左下角等号一直在跑就是正在安装,不动了就是安装完成。Markdown Editing可以在视图设置里的语法提示切换提示和语法高亮以及定义快捷键,比如Ctrl+数字键是分级标题。选择你要开启的主题复制到User里就行了。推荐配置:“color_scheme”: “Packages/Boxy Theme/schemes/Boxy Monokai.tmTheme”, // 修改风格的主题,我这里是sublime的boxy主题自带的,默认有这几种主题 // “color_scheme”: “Packages/MarkdownEditing/MarkdownEditor.tmTheme”, // “color_scheme”: “Packages/MarkdownEditing/MarkdownEditor-Dark.tmTheme”, // “color_scheme”: “Packages/MarkdownEditing/MarkdownEditor-Yellow.tmTheme”,“highlight_line”: true, // 高亮正在编辑的行"line_numbers": true, // 显示行号"tab_size": 4, // tab宽度"translate_tabs_to_spaces": true, // tab转换为空格"trim_trailing_white_space_on_save": true, // 保存时去掉行尾空格"word_wrap": true, // 自动换行"wrap_width": “auto”, // 换行的宽度,默认80会造成左侧大量留白"mde.keep_centered": true, // 可以保持你正在编辑的行始终处于屏幕的中间3.安装插件MarkdownLivePreview同样是进入Package Control后搜索安装,安装后进入设置里启用插件;将左侧的默认设置信息复制到右侧,把第一项的属性由false更改为true。Ctrl+S保存设置实际使用打开sublime后右下角更改文件格式为Markdown,Ctrl+S保存文件后MarkdownLivePreview的窗口就会自动弹出。OK 就酱( ̄▽ ̄)“然而我第一次发文章才发现文章编辑器居然可以在线预览。。建议把笔记编辑器也加上。please~

March 10, 2019 · 1 min · jiezi

react开发 Markdown文本编译器

我用react开发了一个Markdown文本编辑器主要用到: marked github-markdown-css库https://github.com/ilvseyinfu… 地址在这

March 7, 2019 · 1 min · jiezi

Markdown写作中的图床解决方案(基于七牛云、PicGo)

在日常的Markdown写作中,使用图片是必不可少的,所以靠谱的图片存储服务和上传工具显得格外重要。图片存储上我一直使用七牛,个人用户拥有10GB的免费存储空间,并且拥有很成熟易用的图片处理引擎,可以说是个人博客的不二之选。而上传工具的选择一直是我比较头痛的地方。手动打开七牛上传对于我这种懒人是不可能的,而基于MD编辑器的内置图片上传接口不够灵活(小书匠、Typora等),而当初多个工具使用下来iPic无意识Mac端用户体验最佳的工具,但是,他月费的模式并不适合我这种低频使用者。所以,当初我折中的使用了一个小网站叫极简图床。然而,最近他也挂掉了。重新搜索,我发现了今天要介绍的一个工具PicGo。其使用electron-vue进行编写,具有全平台的适用性。体验上也跟iPic无二并支持多个图床的配置,甚至支持插件的编写。言归正传,下面介绍七牛云+PicGo的图床解决方案。1. 七牛云存储配置首先,需要配置七牛的对象存储空间。没有注册的同学首先要注册账号。进入管理控制台,选择对象存储。选择新建存储空间,填写存储空间信息,点击确定创建。创建成功后,可以看到七牛给了我们一个测试域名用于文件访问pnix0pmqw.bkt.clouddn.com。但是该域名仅可用于测试且会在三十日内失效,所以需要进行个人域名的绑定。点击绑定域名,在这里选择普通域名,填入一个已进行公安备案的二级域名作为空间域名。此处已image.test.com为例。其它选项可根据个人需求进行具体调整。点击创建后,等待五到十分钟待七牛配置完毕,就可以去域名管理复制得到自己的CNAME。最后登录自己的域名运营商,配置域名解析。如图中所示,选择CNAME类型,将二级域名指向我们得到的CNAME。自此,存储空间配置完毕。PicGo配置PicGo的安装配置相对简单。首先,我们在github项目首页上下载最新版本的安装文件。安装完成后打开应用,右键点击右上角PicGo的图标选择打开详细窗口,在图床设置中找到七牛图床设置。如图需要我们填入一系列的设置,其中:AK与SK在七牛的个人面板密钥管理中可查。存储空间名称即为我们之前所设置的存储空间名称。( 例子中为test-bucket )访问网址即为我们之前所绑定的域名。( 例子中为image.test.com )可以指定存储路径,将PicGo上传的图片存储到指定目录当中。上传图片时,一种方式是直接拖拽图片到上传区上传成功后PicGo会自动将链接格式对应的图片自制放到剪贴板上以供复制。另一种方式可能更加实用,直接使用微信等自带的截图工具,截图后图片在剪贴板中,此时可使用shift+cmd+p自动上传,同样上传成功后,图片地址会传入剪贴板,可以直接在MarkDown文件中进行复制使用。至此,基于七牛与PicGo的图床配置完成。PicGo还有相应的VsCode插件,同样可以实现多种上传方式,具体的配置可以查看项目文档,此处不再介绍。

February 26, 2019 · 1 min · jiezi

我的最佳写作方式

最佳喜欢上了写作,喜欢自己写的东西能被别人阅读,赞赏,也希望我写的东西能更有价值,体验也更好。今天我分享的是我的最佳写作方式。我的最佳写作方式工具汇总markdown编辑器截图工具gif录制工具图床工具TyporaQQ / wechatlicecapiPicmarkdown编辑器 · Typora完全免费的markdown编辑器,无与伦比的写作体验,让人爱不释手,具体的特性请移步官网:https://typora.io/我最常用的快捷键是Command+/,可以切换源码模式和打字机模式。图传工具iPic仅仅有好的编辑器还不够,还需要图床工具将你的图片自动上传到云端,最好是能够结合你使用的markdown编辑器一起使用,最好是截图后直接粘贴,然后上传。那么iPic是首选,因为Typora内置了iPic的功能,如下图:iPic支持很多种图传工具,我现在用的是腾讯COS,这个工具默认是免费的,但是默认只支持免费的新浪微博图传,如果你要使用其他图传就要收费了,年费50元。iPic的作者是全职独立开发者Jason,已经写了很多类似的mac工具,都很优秀,官网:https://toolinbox.net/截图工具QQ和微信截图应该是大家都在用的,非常方便,截图后可以粘贴到任何地方,QQ还支持视频录制功能。gif录制工具这里我就要介绍强大的LICEcap了,用来做屏幕截图的,录制出来的gif很小,我的所有gif都是通过它来制作的。详细请移步官网:https://www.cockos.com/licecap/

February 26, 2019 · 1 min · jiezi

PDF文件如何转成markdown格式

百度上根据pdf转makrdown为关键字进行搜索,结果大多数是反过来的转换,即markdown文本转PDF格式。但是PDF转markdown的解决方案很少。正好我工作上有这个需求,所以自己实现了一个解决方案。下图是一个用PDF XChange Editor打开的PDF文件,我想将其内容通过markdown格式导出。(1) 首先将该PDF导出成word格式,后缀.docx(2) 使用typora获得该word文档的markdown源代码:此时任务只完成了一半,因为typora这个工具转换成的markdown格式,如果原始的word文档里包含图片,这些图片以本地图片的形式存在于markdown里,那我如果直接将包含了这些本地图片的标签的markdown发布到简书,CSDN,开源中国,腾讯云,阿里云这些支持markdown的社区时,这些本地图片将无法显示。因此我们必须找到一个高效的方法,将word里包含的本地图片先上传到网络上,再用生成的包含了图片网络url的markdown标签替换本地图片标签。(3) 把word文件的后缀从.docx改成.zip, 解压后,在文件夹word的子文件夹media里能找到所有的本地文件。把这些本地文件全部上传到网站,生成下面这些url:我写了一个工具,可以把仅包含了本地图片标签的markdown源代码和包含了上述在线图片url标签的源代码做一个合并,后并后,本地图片标签会被在线图片标签取代:这个工具可以从我github上获得:https://github.com/i042416/Kn…下图就是我的原始PDF转换成markdown格式后发布在某社区上的效果,和原始PDF外观完全一致:要获取更多Jerry的原创文章,请关注公众号"汪子熙":

February 24, 2019 · 1 min · jiezi

两款爱不释手的markdown编辑工具

做软件这行呢,Markdown对于大家来说已不是什么陌生的东西了,即使不写文档也能经常看到Markdown形式的文档,因为全球最大的同性交流网站GitHub就兼容了Markdown的语法,那么Markdown究竟是个什么东东呢?Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。对于陌生者而言,单从上面这句话也不好理解,一定格式到底是什么格式呢?我们用张图来直观的看一下吧。上图中我只简单的举例了几种格式(标题、代码块、数学公式、表情、表格等),markdown所能编写的格式远不止这些,这是普通的文本编辑器做不到的。言归正传,我今天不是来介绍markdown的,而是来介绍两款编辑markdown的工具。我个人感觉这两款工具是我使用过的最好的markdown编辑工具了,哈哈,就不绕弯子了,我已经迫不及待的想跟大家分享了。这两款工具就是Mark Text和Typora我们先来看Mark TextMark Text是一款开源软件,它的优点在于免费、操作简单、可以到处PDF和HTML。下载链接下载最新release的版本打开软件,我们可以根据自己的喜好设置主题也可以设置显示侧栏通过菜单栏我们可以看出,所有的操作都带有快捷键,刚开始使用,这些快捷键记不住也没关系,我们编写文档时只需要输入一个@会弹出自动引导菜单,我们根据需要选择相应的格式插入图片插入表情当我们编辑好文本时,我们可以导出为PDF和HTML下来我们再来看Typora下载链接选择平台下载安装完成后打开界面如下,同样我们可以选择主题,可以看出typora提供了更多的主题Mark text支持的功能typora全都支持还有相比较Mark text的强大之处是它导出的格式更多但是对于新手而言,它的使用没有Mark text方便

February 24, 2019 · 1 min · jiezi

推荐您使用 Markdown 来编辑文章

什么是Markdown?Markdown : 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。简单地说就是通过一些符号使你的文章排版更加清晰、简洁。我第一次接触它是在有道云笔记上,从那之后便一直使用它来做笔记,写文章。它的语法非常简单,比如要加粗文字,就把文字放到 “**” 中间, “#”代表标题一,“##”代表标题二……本篇文章就是使用 Markdown 来编写完成的:下面简单说一下 Markdown 的使用方法。一、Markdown 编写环境Markdown 可在任意环境下编写,你可以在一个 .txt 文本文档中编写,然后将后缀改为 .md 即可,我推荐使用有道云笔记,因为它自带语法提示,对于不熟悉 Markdown 的朋友来说是非常方便的(如下图所示)。在有道云笔记中编写好文章后,可以直接粘贴到简书、GitHub、微信公众号等一些支持 Markdown 的平台上,如果你已经对 Markdown 语法非常熟悉了,那你可以直接在这些平台上去写文章了。二、微信公众号、简书等平台上使用 Markdown这里讲一下如何在微信公众号中使用 Markdown 来编写文章?方式一:借助有道云笔记。先在有道云笔记中编辑好文章,切换到预览模式,复制全文,然后粘贴到公众号文章内容中,这样会将排版格式也一并带过去,文章中的图片也会自动上传到微信公众号中。但是这种方式会对代码有影响,代码不能正确换行,导致有些代码会出现在一行,显得比较乱,如果你的文章中有代码,推荐使用第二种方式。方式二:浏览器安装 Markdown 语法转换工具。首先给浏览器安装一个 Markdown 语法转换插件。点击进入Markdown Here 官网,下载对应浏览器的插件,这里我用火狐来做讲解。安装成功后会在浏览器右上角看到 Markdown Here 的图标。去网站编辑文章,这里用微信公众号来举例。在公众号文章内容中使用 Markdown 格式编辑文章,编辑好后选中,点击浏览器右上角 Markdown Here 的图标,就会转换为 Markdown 格式的文章。这里需要注意的是,如果上传的图片地址是外链,转换之后,当点击保存,图片就会被自动删除,这是因为微信公众号不会自动把外链图片保存并上传到公众号后台导致的,下面来说一下解决办法。解决微信公众号 Markdown Here 渲染图片无法保存的方法。首先还是将编写好的 Markdown 文章选中,点击浏览器右上角 Markdown Here 的图标进行转换。然后再次选中文章内容, Ctrl + X 剪切全文,Ctrl + V 粘贴全文,此时保存文章,图片就全部自动上传到微信公众号的后台,不用再单独上传图片了。因为我的文章中经常会出现代码块,所以我一般会使用第二种方式,因为第一种方式粘贴的代码块不会自动换行,虽然有高亮显示,但会比较乱。如果你只是编辑一些文字图片,推荐使用方式一,这样可以省去解决图片上传的问题。如果您想要在网络平台上写文章(比如微信公众号、简书),但是自己又不能对文章进行很好的排版,那么我推荐您使用 Markdown 来编辑文章,这样您就可以省去排版的时间而去专心去写作了,文章展现一样清晰简洁。期待您的关注!

February 18, 2019 · 1 min · jiezi

那些你不知道的markdown用法(让你的文章高大上)

1.徽章插件主页:https://shields.io/#/生成徽章(markdown图床)帮大家找了个教程https://wdd.js.org/how-to-mak…2.图片描述3.选择框- [x] 选中- [ ] 取消选中- [x] //没有文字时就是段落[x] 选中[ ] 取消选中[x]4.表情window系统 我的是切换到微软中文拼音输入法 —> Ctrl+B —> 选择图形或者 键盘打tu按键 如图=>????????????????????????????????????❤????????????5.字母图案在线生成 http://patorjk.com/software/t… 生成的文本必须放到<code>标签内或 ``,目的防止错位????markdown _ _ | | | | _ __ ___ __ _ _ | | ___| | _____ ___ __ | ‘ _ \ / _ | ‘| |/ / ` |/ _ \ \ /\ / / ‘ \ | | | | | | (| | | | < (| | () \ V V /| | | | || || ||_,|| ||__,|___/ _/_/ || || 最后,祝大家春节快乐!???? ...

February 1, 2019 · 1 min · jiezi

vue组件文档(.md)中自动导入示例(.vue)

症结(懒癌患者)在写组件库文档的时候,会把示例代码粘贴到文档里,这样做有一个很恶心的地方:每次组件迭代或修改示例都需要重新修改文档中的代码片段。长年累月,苦不堪言。猜想(狂想曲)所以我想,可不可以把.vue文件里的template块和script块取出来,放入对应的.md文件中比如在.md文件中 {{:xx.vue?type=(template|script)}} 便替换示例中对应的template|script块# xx## 示例代码// {{:}} 定义变量规则模版(加个冒号防冲突){{:image.vue?type=template}} // 对应.vue 的template{{:image.vue?type=script}} // 对应.vue 的template{{:index.js}} // 对应index.js## 参数说明xxx…output# xx## 示例代码 // image.vue template<template> <div>xx</div></template>// image.vue script<script> …</script>// index.jsvar x = 1## 参数说明xxx…动手(能动手绝不**)要实现以上功能,需要探索以下几点:从.vue里取出template&script塞进对应的.md的变量位置将.md文件转为Vue Componet / html如果按照我们写js的习惯,以下嵌套排列可能更易读将.md文件转为Vue Componet / html找到变量位置,塞进对应的.md的指定位置从.vue里取出template&script一步一步来吧:1、将.md文件转为Vue Componet / html要想在vue中使用.md文件为组件,只需要用loader将md转成Vue Componet即可。这个过程很简单,以下为loader伪代码const wrapper = content => &lt;template&gt; &lt;section v-html="content" v-once /&gt;&lt;/template&gt;&lt;script&gt;export default { created() { this.content = content }};&lt;/script&gt;module.exports = function(source) { // markdown 编译用的 markdown-it return wrapper(new MarkdownIt().render(source)) }2、找到变量位置,塞进对应的.md的指定位置1)找到变量位置使用正则匹配定义的规则,找到被{{:}} 包围的字符串,如上例所示则为‘image.vue?type=template’2)读取文件如果是其他.js、.html等普通文件,直接使用fs.readFileSync读取替换即可,因是.vue,我们希望传入type来获取不同的块(template、script等)const replaceResults = (template, baseDir) => { const regexp = new RegExp("\{\{:([^\}]+)\}\}", “g”) return template.replace(regexp, function(match) { // 获取文件变量 match = match.substr(3, match.length - 5) let [loadFile, query=’’] = match.split(’?’) // 读取文件内容 const source = fs.readFileSync(path.join(baseDir, loadFile), “utf-8”).replace(/[\r\n]*$/, “”) if (path.extname(loadFile) === “.vue”) { let { type } = loaderUtils.parseQuery(?${query}) return replaceVue(source, type) // 根据type提取.vue里的不同块 } return source // 非.vue直接返回文件内容 })};3、从.vue里取出template&scriptconst replaceVue = (source, type) => { const descriptor = templateCompiler.parseComponent(source) const lang = { template: ‘html’, script: ‘javascript’ //, // style: ‘css’ } return lang[type] && \``${lang[type]} ${descriptor[type].content} ``` }如若要取一个文件里的多个块,则需多次调用,考虑到我们的组件库场景,默认返回template和script(未使用type参数时),对上面代码进行优化,一次性从.vue中取出多个块// replaceVue(source, [type])const replaceVue = (source, types = ['template', 'script']) =&gt; { const descriptor = templateCompiler.parseComponent(source) const lang = { template: 'html', script: 'javascript' //, // style: 'css' } return types.map(type =&gt; lang[type] &amp;&amp; ```${lang[type]} ${descriptor[type].content} ``` `).join(’’)}大功告成????????! 那么,如何使用呢?使用(给我小星星????)安装npm i vue-markd-loader -D配置rules: [{ test: /.md$/, use: [ ‘vue-loader’, { loader: ‘vue-markd-loader’, options: { replaceFiles: true , // 默认true, 是否将文件填充进md wrapper:true // 默认true,默认输出Vue Component ,false 时输出html片段 } } ] }]// main.js import ‘highlight.js/styles/github.css’ // 可以使用任意喜欢的主题哟import ‘github-markdown-css’其他第一次撸webpack loader,如有不正确/不足的地方,欢迎指正。源代码git地址npm包地址 ...

January 25, 2019 · 2 min · jiezi

SimpleMDE.JS 轻松打造一个类似简书的纯前端MarkDown语法编辑器

一直想搞一个纯前端的markdown编辑器+解析器。将个人博客zzzmh.cn 的文章语法用markdown实现。既可以大幅节省写文章耗费时间,也能通用到简书或思否。试了多个纯前端markdown库以后,感觉simpleMDE的用法最简单,效果也与简书等最为接近。最终效果演示: https://tczmh.gitee.io/markdown最终源码下载: https://gitee.com/tczmh/markdown入门款demo只需要引入CSS、JS、一个textarea标签即可。无其他依赖。<!DOCTYPE html><html lang=“zh-CN”><head> <meta charset=“UTF-8”> <title>Title</title> <link href=“https://cdn.bootcss.com/simplemde/1.11.2/simplemde.min.css" rel=“stylesheet”></head><body><textarea></textarea><script src=“https://cdn.bootcss.com/simplemde/1.11.2/simplemde.min.js"></script><script> var simplemde = new SimpleMDE();</script></body></html>效果图进阶用法<!DOCTYPE html><html lang=“zh-CN”><head> <meta charset=“UTF-8”> <title>Title</title> <link href=“https://cdn.bootcss.com/simplemde/1.11.2/simplemde.min.css" rel=“stylesheet”> <link href=“https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel=“stylesheet”> <link href=“https://cdn.bootcss.com/highlight.js/9.13.0/styles/github-gist.min.css" rel=“stylesheet”></head><body><textarea></textarea><script src=“https://cdn.bootcss.com/simplemde/1.11.2/simplemde.min.js"></script><script src=“https://cdn.bootcss.com/highlight.js/9.13.1/highlight.min.js"></script><script> var simplemde = new SimpleMDE({ element: document.querySelector(’textarea’), autoDownloadFontAwesome:false,//true从默认地址引入fontawesome依赖 false需自行引入(国内用bootcdn更快点) autofocus:true, autosave: { enabled: true, uniqueId: “SimpleMDE”, delay: 1000, }, blockStyles: { bold: “**”, italic: “*”, code: “" }, forceSync: true, hideIcons: false, indentWithTabs: true, lineWrapping: true, renderingConfig:{ singleLineBreaks: false, codeSyntaxHighlighting: true // 需要highlight依赖 }, showIcons: true, spellChecker: true }); // 默认开启预览模式 simplemde.toggleSideBySide();&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;效果图主要用到的配置启用预览模式启用自动保存(每秒保存到localstorage,防刷新后丢失)启用代码高亮启用自定义地址的font-awesome更多内容可以参考作者在github写的说明文档https://github.com/sparksuite...稍微复制一些说明文档中主要的配置参数说明(在下英语水平有限,翻译就免了,交给有道翻译吧)autoDownloadFontAwesome: If set to true, force downloads Font Awesome (used for icons). If set to false, prevents downloading. Defaults to undefined, which will intelligently check whether Font Awesome has already been included, then download accordingly.autofocus: If set to true, autofocuses the editor. Defaults to false.autosave: Saves the text that's being written and will load it back in the future. It will forget the text when the form it's contained in is submitted.enabled: If set to true, autosave the text. Defaults to false.delay: Delay between saves, in milliseconds. Defaults to 10000 (10s).uniqueId: You must set a unique string identifier so that SimpleMDE can autosave. Something that separates this from other instances of SimpleMDE elsewhere on your website.blockStyles: Customize how certain buttons that style blocks of text behave.bold Can be set to ** or __. Defaults to **.code Can be set to or ~~~. Defaults to ``` .italic Can be set to * or _. Defaults to *.element: The DOM element for the textarea to use. Defaults to the first textarea on the page.forceSync: If set to true, force text changes made in SimpleMDE to be immediately stored in original textarea. Defaults to false.hideIcons: An array of icon names to hide. Can be used to hide specific icons shown by default without completely customizing the toolbar.indentWithTabs: If set to false, indent using spaces instead of tabs. Defaults to true.initialValue: If set, will customize the initial value of the editor.insertTexts: Customize how certain buttons that insert text behave. Takes an array with two elements. The first element will be the text inserted before the cursor or highlight, and the second element will be inserted after. For example, this is the default link value: [””, “”].horizontalRuleimagelinktablelineWrapping: If set to false, disable line wrapping. Defaults to true.parsingConfig: Adjust settings for parsing the Markdown during editing (not previewing).allowAtxHeaderWithoutSpace: If set to true, will render headers without a space after the #. Defaults to false.strikethrough: If set to false, will not process GFM strikethrough syntax. Defaults to true.underscoresBreakWords: If set to true, let underscores be a delimiter for separating words. Defaults to false.placeholder: Custom placeholder that should be displayedpreviewRender: Custom function for parsing the plaintext Markdown and returning HTML. Used when user previews.promptURLs: If set to true, a JS alert window appears asking for the link or image URL. Defaults to false.renderingConfig: Adjust settings for parsing the Markdown during previewing (not editing).singleLineBreaks: If set to false, disable parsing GFM single line breaks. Defaults to true.codeSyntaxHighlighting: If set to true, will highlight using highlight.js. Defaults to false. To use this feature you must include highlight.js on your page. For example, include the script and the CSS files like:<script src=“https://cdn.jsdelivr.net/highlight.js/latest/highlight.min.js"></script><link rel=“stylesheet” href=“https://cdn.jsdelivr.net/highlight.js/latest/styles/github.min.css">shortcuts: Keyboard shortcuts associated with this instance. Defaults to the array of shortcuts.showIcons: An array of icon names to show. Can be used to show specific icons hidden by default without completely customizing the toolbar.spellChecker: If set to false, disable the spell checker. Defaults to true.status: If set to false, hide the status bar. Defaults to the array of built-in status bar items.Optionally, you can set an array of status bar items to include, and in what order. You can even define your own custom status bar items.styleSelectedText: If set to false, remove the CodeMirror-selectedtext class from selected lines. Defaults to true.tabSize: If set, customize the tab size. Defaults to 2.toolbar: If set to false, hide the toolbar. Defaults to the array of icons.toolbarTips: If set to false, disable toolbar button tips. Defaults to true.顺便说下这个工具有什么用哈一般个人建博客站,如果是不用hexo、wp的话,就需要自己写个后台新增编辑文章,这样一来可能每篇文章就都需要用html语法来写大量代码,消耗不少时间,还不能实时查看效果。用本工具既可以用在后台的文章编辑,也可以把编辑器配置成页面显示,直接渲染出html代码。从而大幅缩减开发时间和编辑文章的时间。写出来的内容语法和简书、思否等一致都是markdown,复制过来也完美兼容END本文也会发布在我的个人博客,并会附上在线演示,欢迎查看https://zzzmh.cn/single?id=60最终效果演示https://tczmh.gitee.io/markdown最终源码下载https://gitee.com/tczmh/markdown参考https://yq.aliyun.com/article…simplemde官网https://simplemde.com/Githubhttps://github.com/sparksuite… ...

January 25, 2019 · 4 min · jiezi

Markdown中文简历快速转换为PDF文档

Markdown中文简历快速转换为PDF文档A. 编辑简历内容,导出为HTML文档。按照从零开始说起,你可能需要下面两个在线markdown编辑网站:冷熊简历:http://cv.ftqq.com/ 。它是专门的markdown简历编辑模板。MaHua在线markdown编辑器:http://mahua.jser.me/ 。多样的HTML渲染格式,如果不写简历,用来写文档会很爽。或者本地在你熟悉的编辑器里面寻找markdown编辑方式,比如:在Notepad++:https://notepad-plus-plus.org/添加MarkdownViewer++插件。依次打开 插件 –> Plugins Manager –> Show Plugins Manager。在Available下按m键找到MarkdownViewer++插件,点击install。通常会遇到Notepad++需要更新的提示,点击更新,可能会要重复几次,直到你在 插件菜单栏看到MarkdownViewer++。使用过程:首先在 冷熊简历 编辑好简历内容,然后放到 MaHua在线markdown编辑器 或者 Notepad++ 做调整和样式优化,导出为HTML文档。个人觉得 MaHua在线markdown编辑器 的字体和样式看起来更舒服。B. 安装浏览器插件Print to PDF,将HTML页另存为PDF文件。一番对比评测之后,最省事最好用的是Firefox:http://www.firefox.com.cn/浏览器 + Print to PDF:https://addons.mozilla.org/zh-CN/firefox/addon/print-to-pdf-document/。注意:链接像本文这样写:标题:明文链接。如果需要一个居中的标题,这样写:<center>谢谢!</center>。

December 21, 2018 · 1 min · jiezi

Markdown All in One 书写Markdown利器

特点提供了常用操作便利的快捷键支持目录一边书写一边预览(Ctrl + Shift + V or Ctrl + K V)可轻松转换为HTML文件和PDF文件优化了List editing的编辑可格式化table (Alt + Shift + F) 以及Task list (use Alt + C to check/uncheck a list item)支持特殊数学符号渲染常用快捷键Key CommandCtrl + B 粗体Ctrl + I 斜体Alt + S 删除线Ctrl + Shift + ] 标题(uplevel)Ctrl + Shift + [ 标题(downlevel)Ctrl + M Toggle math environmentAlt + C Check/Uncheck task list item举个快捷键的使用栗子bold标题目录List Editing格式化 TableTask ListMath Rendering一些有用的命令Markdown: Create Table of ContentsMarkdown: Update Table of ContentsMarkdown: Toggle code spanMarkdown: Print current document to HTML ...

December 20, 2018 · 1 min · jiezi

用过的一些Markdown编辑器

开篇买了MacBook Pro之后的一段时间里,为了打造适合自己的知识管理体系,折腾起了笔记类软件(题外话,我还挺喜欢尝试新软件的,尤其在接触macOS后发现许多软件都长得很漂亮)。其实在入手Mac之前,我已经试用过不少笔记类软件和服务了,包括Evernote(还有印象笔记)、有道云笔记、为知笔记,等等。再后来,改用Emacs的org-mode来写笔记——主要是将一些常常搜索的内容或经验记录在了多个.org文件中,算是一份自己的FAQ。后来想看看在macOS的世界中有没有更好的工具,同时渐渐觉得Markdown是一个更好的笔记内容载体,便尝试了一些知名的笔记类软件暨Markdown编辑器。大致上尝试了下列这些:EmacsBoostnoteQuiverTyporaVisual Studio CodeYu Writer本文并不是一篇完整的、专业的软件评测报告,只是我兴趣使然的对各个软件的吐槽和赞美,各位权当打发时间吧。下面我按顺序说一下上面提及的各款软件。EmacsEmacs并不仅仅是一款Markdown编辑器,我用得最多的是用它来做计划(之前还用来写Node.js代码,不过现在交给VSCode了)。用Emacs来写Markdown,坏处是没有live preview的功能。在Emacs中打开了一个.md文件,只会原原本本地显示着井号、星号,三个反引号等Markdown语法的关键字——并且还是白底黑字的模样,而不带有丝毫不同的样式。为了让它们好看点,你还需要安装一个叫做markdown-mode的Emacs扩展。但几遍安装了markdown-mode,也无法实时预览。markdown-mode的菜单栏中有一个叫做“Preview”的功能,它依赖一个名为markdown的命令行工具(用brew install markdown可以安装)。当一切安装完毕点击“Preview”菜单项时,才发现是在网页浏览器中查看的方式——虽然有preview了,但并不live。Emacs在写Markdown方面也并非一无是处。对程序员而言,在一篇Markdown写就的文章中插入代码是再正常不过的事情了。在Emacs中将光标定位到Markdown语法的代码块内,按下control和c的组合键,再敲一下单引号键,Emacs便会另起一个相应模式的buffer,并将代码块中的内容复制到新buffer中供继续编辑。如下图所示在上面的GIF中,代码块以GitHub Flavored Markdown的语法在开头的三个反引号后附上了模式的名字,即lisp,Emacs便会打开lisp-mode的buffer。在这个buffer中可以继续使用Emacs的完整功能编辑对代码,包括语法高亮、自动补全,等等——如果启动了SLIME,甚至可以运行里面的Common Lisp代码。Emacs和VSCode用于在编写代码的同时写写项目的README.md文件应当是绰绰有余的了。BoostnoteBoostnote自诩为“程序员的笔记本”,它并不是我在Emacs之外寻找的第一款笔记软件,在它之前,我还尝试了Notion、Quiver来着。上手后发现,Boostnote简直就是Quiver的开源免费版本,相当的喜爱。Boostnote当然让我格外喜欢的有几点:首先,Boostnote可以实时预览键入的Markdown源文档。会有一列跟编辑区域差不多宽的区域被用来展示Markdown渲染后的效果。(刚刚发现,原来这个区域的宽度是可以拖动调节的)其次,它不仅支持Markdown、带语法高亮的代码块,甚至还支持表格和流程图的绘制!当然我以为,用竖线和连字符绘制表格的功能仅在Emacs的org-mode中存在(孤陋寡闻了汗颜),刚开始用Boostnote制作表格的时候可是相当兴奋。而text-based的绘制流程图的方式也是让我大开眼界(后来才知道原来有flowchart.js这样的工具)——尽管后来我渐渐发现,绘制流程图其实挺少用。然后Boostnote具备在多份笔记中搜索的功能,这对于一款笔记软件而言倒是真的非常重要,因为有时候只能想到一些只言片语,而并不能确定所要查阅的内容究竟在哪一份笔记中。但Boostnote也有一些缺点。首先,Boostnote是用自有的文件格式(而不是纯文本的.md文件)来存储输入的内容的——打开~/Boostnote/notes/可以看到这些后缀为.cson的文件。这样一来,假设我日后发现了一款更优秀的Markdown编辑器,那就不能无痛迁移了,还得先从Boostnote中将这些笔记逐一导出成.md文件才行。其次,Boostnote只支持三层的组织结构——最外层是storage,然后是folder,最后就是笔记本身。当初有道云笔记特别让我喜欢的,就是它支持非常多层级的目录结构。尽管目录不是越多越好,但有这种灵活性总是更好的。否则,笔记的使用者就只能在命名和标签上下功夫了最后一点,就是Boostnote在我的系统上非常容易崩溃。有时候一翻起盖子,看到的就是Boostnote崩溃的提示。不过Boostnote支持往其中粘贴图片,当我需要快速记录一些图文内容时,我还是很喜欢用它的。Yu Writer某一天偶然遇到了Yu Writer,它官网上的截图看着很吸引人,于是我便试用了一下。第一印象是,Yu Writer is awesome!首先它很人性化。它的预览区域是一个minimap——就是Sublime Text最右侧的那一列。在做到实时预览的时候,也不会占用太多的横向空间。其次,它支持大纲视图即上图左侧的目录。恰逢当时我在用Boostnote写一篇比较长的设计文档,深刻地体验到了一个大纲视图的重要意义——对在长文档内的多个标题间跳转非常有帮助。再次,Yu Writer还准备了工具栏,方便不懂得Markdown语法的用户;支持标签页,便于在多个文档间切换;甚至可以把一个Markdown文档作为幻灯片来播放。但Yu Writer也有它自己的劣势。第一,在Yu Writer内,原本在macOS系统中全局可用的Emacs风格快捷键——即control+b往左移动光标、control+f往右移动光标——居然不生效!这些快捷键对我个人还是非常重要的。第二,在Yu Writer中,不能直接插入磁盘上的图片文件的绝对地址,既没有在预览区域显示出来,也没有在文档列表显示成功。据说Yu Writer的作者的主业是厨师,感觉好强TyporaTypora is best。不同于前面提到的几款Markdown编辑器,Typora是“所见即所得”的编辑器。你敲入两个井号,加一个空格,再敲入你的标题内容,最后回车,那么标题内容就会被渲染为二级标题的形式,如下图所示这么一来,屏幕上的空间基本都可以被用来写作,不需要担心被预览用的列给占据了。然后,Typora没有自定义它的存储结构,它直接打开磁盘上的.md文件进行编辑,这些Markdown源文件可以随心所欲地放在任何喜欢的目录下,只要能打开就行。再加上它文件树视图,就实现了不受限制的笔记组织方式了,如下图不过一个可以想到的缺点,就是Typora不支持在所有的Markdown文件上搜索关键字——毕竟它也不知道要去哪个目录下寻找这些待搜索的源文件。尽管Typora外观很简洁,但Boostnote有的功能它一个也没有落下,就像它的官网所说的那样现在我的博客的文章基本都是用Typora来写的,冥冥中感受到了一股乐趣。但Typora毕竟没有搜索功能,所以我又开始摸索额外的搜索笔记的方式了(比如把记录在.org文件中的FAQ导入到ElasticSearch中再借助全文搜索的力量来找到自己要的内容)。后记没有最好的,只有最适合的,祝各位都能找到最适合自己的Markdown编辑器。

December 15, 2018 · 1 min · jiezi

全新的同步渲染 markdown 文章 + 高亮更新 书写体验

live-markd 体验类似 SF 的文章编辑器,但是 live-markd 使用本地服务,使用任意本地编辑器均可!安装 + 使用npm install live-markd -glive-markd .

October 29, 2018 · 1 min · jiezi