这个“伪需求”是最近才想到的。

关于文章管理的想法,说来话长。我最初是在 CSDN 写技术文章,就用网页上的编辑器。后来在 CppBlog 写,用上了 Windows Live Write,一般在 Word 里面写好,再贴到 WLW 发布。再后来由于太忙了,一直停到现在。其中除了我懒,有两个客观原因,第一是中间好几年不搞 C++,那么在 CppBlog 上写非 C++ 的东西好像有点奇怪;第二是,服务端的东西真的没法每天下班自己玩呀,每天下班提心吊胆地看短信报警,也没哪个心情和时间再去重新开辟一个和白天工作内容迥异的学习场景维持下去。(佩服自己找借口的能力~)

前些年,Markdown 兴起,GitHub Pages 兴起,一众静态博客工具也蓬勃发展。Markdown 真的太适合用来写技术博客了,唯一不足是图片的处理。尽管如此,我还是花了很大的精力把以前所有的文章都转成了 Markdown。然后曾经一度也玩上了 GitHub Pages,用 Huge 生成静态博客。然而,博客的这东西我认为价值点和动力还是在于交流、碰撞,自己写自己看,跟存本地没啥区别——我的 GitHub Pages 几乎没人看……那时候也没写几篇,大概是 2018 年末到 2019 年初的时间。

半年前,我想到了近年来第一个“伪需求”。我嫌 Hugo 这种形态操作太罗嗦:先写 Markdown,再放到 source repo 的 post 里,提交一把;再生成静态页面,把 public 提交到 public repo。如果折腾模版啥的,就更复杂。我就想写 Markdown,写完提交一次 .md,能不能就看到呢?甚至干脆不提交,直接同步到服务端。这样,就得做一套动态系统(相对于 Hogo 的静态页面)去做这件事,而生成被浏览的数据的逻辑理论上跟 Hugo 之类的没本质区别。而一般个人博客这种文章量,根本不用纳入性能上的考量,因此做成动态是完全可操作的。看了下市面上没有此类的工具,于是就开搞了。我把它叫“NoteIsSite”,GitHub 地址 https://github.com/Streamlet/NoteIsSite,Demo 地址 https://note-is-site.streamlet.org/,然后把我所有的文章也用这个工具挂在主页下的一个子分类,见 https://www.streamlet.org/note/。关于这个,以后再开一篇文章细说。

到这里为止,写的过程代价很小了。但是刚才说了,博客这东西,对于我的动力很大一部分来自于评论、碰撞,还是需要发到公共平台上去的好。最近看到一个去年离职的前同事的博客 https://gclxry.com/,我惊叹于人家一直在坚持写。我想我是不是也要捡起来了,还是回归 CppBlog 吧。于是问题就来了。最近觉得最好用的 Markdown 编辑器是 typora,然后它没法发博客;以前的 WLW 虽然还能用,但毕竟不基于 Markdown。然而 typora 不开源,没法给他加一个“发布”功能了事。所以自己做做看?顺便入一下 Electron 的坑,以及前端的坑。

花了这么大篇幅把需求来源说完了。至于为什么选 Electron 呢?就是为了快点搞定……

上周学习了下 Electron 的 demo 以及打包流程:https://github.com/StreamletStudy/ElectronHelloWorld

然后正式用这个 repo:https://github.com/Streamlet/MarkdownBlog
现在功能就两个:编辑、发布。编辑不是所见即所得的,左边 Markdown,右边 HTML。发布要每次填 API 地址、账号,没做管理。整个流程通了,于是停下来写了这篇文章,用刚写的工具发布上来。

发现了 Electron 的一个坑,只要在页面里调用了 alert,页面上的焦点就有问题,输入框再也无法输入内容了。目前用 remote.dialog.* 替代。不知道有没有正解?

后面的规划:

  1. 搞清楚前端的语言体系,然后选择用原生 JS 还是它的衍生语言,把工程组织进一步完善
  2. 搞清楚 UI 复杂度,看要不要选择一个虚拟 DOM 方案
  3. 撸功能,账号管理等
  4. 撸功能,做成所见即所得
  5. 撸功能,支持图片粘贴、上传

再后面,先不规划,做完了再看。当前版本 Release:https://github.com/Streamlet/MarkdownBlog/releases/tag/publish_to_metaweblog_api

写一个 Markdown 博客客户端的更多相关文章

  1. 写markdown博客如何截图并快速上传到图床——记一个工具插件的实现

    1. 背景 写博客有一个自己的图床是不错的选择,如果不借助工具,在markdown博客中添加图片的步骤如下: 截取图片,保存到本地(得来回点对话框,选择保存路径,选择文件类型,输入文件名). 上传到图 ...

  2. 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)

    打造一个上传图片到图床利器的插件(Mac版 开源)(2018-06-24 19:44) 更新于2018年2月 做了以下改动: 1.修复了一个bug,把服务器区域做成可配: 七牛有华北,华东,华南以及美 ...

  3. Dropplets – 极简的 Markdown 博客平台

    Dropplets 是一个简单的博客平台,专注于提供正是你在博客解决方案中需要的.当涉及到基础的博客功能,你真正想要做的是写和发表,而这就是 Dropplets 的过人之处.Dropplets 是一个 ...

  4. 我的第一篇Markdown博客

    我的第一篇Markdown博客 这是我第一次用Markdown写博客,发现还是比较好用的,加上Marsedit也支持了Markdown的博客预览,博客园也加了Markdown的格式支持,就更加方便了, ...

  5. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  6. OpenLiveWriter 这篇文章使用博客客户端撰写

    OpenLiveWriter是非常方便的博客客户端,起码相比在浏览器写博客多了一种选择.而且借助于MetaWeblog接口,可以很方便地同步博客文章到多个博客地址.本站cms.xlongwei.com ...

  7. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 构建 RESTful Flask API 定义资源路由 格式 ...

  8. 用 Flask 来写个轻博客 (32) — 使用 Flask-RESTful 来构建 RESTful API 之一

    目录 目录 前文列表 扩展阅读 RESTful API REST 原则 无状态原则 面向资源 RESTful API 的优势 REST 约束 前文列表 用 Flask 来写个轻博客 (1) - 创建项 ...

  9. 用 Flask 来写个轻博客 (24) — 使用 Flask-Login 来保护应用安全

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 用户登录帐号 用户登录状态 Flask-Login 使用 F ...

  10. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...

随机推荐

  1. Xray

    Xray基础操作 代理设置 运行xray.exe xray.exe genca 运行后会生成ca.crt和cr.key 浏览器导入证书 设置代理7777端口 第一次启动 xray 之后,当前目录会生成 ...

  2. 4.可视化API

    模式视图(可浏览api界面) #导包 依赖coreapi from rest_framework.schemas import get_schema_view # 将get_schema_view视图 ...

  3. JS逆向实战7-- 某省在线审批网站params 随机生成

    参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...

  4. 2022,一个Java程序猿的装机配置

    起因 工作一年,身边的老同学都在让我推荐适合他们需求的PC主机.于是仔细研究了一下当下的主机配置.成功试水并积攒了经验后,也给自己装了我的第一台PC主机. 主机配置 CPU:12700 主板:华硕TU ...

  5. JVM堆内存转储

    在发生内存溢出错误 java.lang.OutOfMemoryError 时, JVM自动执行堆内存转储,以方便事后进行排查和分析. JVM提供了一个命令行启动参数 HeapDumpOnOutOfMe ...

  6. Java使用lamda表达式简化代码

    代码,自然写的越简洁越好啦,写的人舒服,看的人也舒服,一切为了高效. 要把有限的时间花到其它有意思的事情上去. 目的 学习简化代码的思路,使用jdk8新特性lamada表达式. 使用 某接口,只有一个 ...

  7. NC-UClient下载安装应用详解

    aliases: [] tags : " #NC " summary: [UClient下载安装NCC应用详解] product: [NCX] author : [yaenli] ...

  8. onps栈使用说明(3)——tcp、udp通讯测试

    4. tcp客户端 在协议栈源码工程下,存在一个用vs2015建立的TcpServerForStackTesting工程.其运行在windows平台下,模拟实际应用场景下的tcp服务器.当tcp客户端 ...

  9. 基于python的数学建模---logicstic回归

    樱花数据集的Logistic回归 绘制散点图 import matplotlib.pyplot as plt import numpy as np from sklearn.datasets impo ...

  10. 如何使用虚拟机下载和安装Centos

    首先先下载虚拟机进行安装我这里使用的是 VMware Workstation Player 当前版本为16.这个是免费使用的可以不需要许可证就能长期使用了 官网VMware Workstation P ...