跳到主要内容

15 篇博文 含有标签「Python」

查看所有标签

Hexo博客同步至CSDN

· 阅读需 11 分钟

使用百度搜索,CSDN上的文章经常排在前面,可是,我并不喜欢在CSDN上写博客。而且,如果使用GitHub Pages搭建个人博客,由于GitHub屏蔽了百度的蜘蛛,百度会抓取失败,网站也就没有索引和流量了。虽然Google对于个人博客的收录比较快,也没那么麻烦,但国内使用百度搜索的还是比较多的。除了考虑不用GitHub Pages搭建,还可以考虑把文章同步到CSDN,使用CSDN来进行导流。

上网一查基本都是CSDN文章导出Markdown到Hexo,却没有Hexo博客同步到CSDN的,在GitHub上也没有找到相关的开源程序,无奈之下,只好自己搞一个了。本文就记录一下其中踩到的坑以及解决方案。

Markdown渲染

在CSDN上创建Markdown文章时,会发送一个POST请求,有markdowncontentcontent字段:前者是Markdown内容,在使用CSDN的Markdown编辑器时会使用这个字段;后者是渲染后的内容,在页面上显示博客会使用这个字段。这两个字段是独立的,也就是在页面上显示博客取决于content,和markdowncontent没有关系,反之亦然。

解决leetcode-publisher的代码中文乱码BUG

· 阅读需 3 分钟

在之前的 撸了个LeetCode题解仓库自动生成与发布的工具 中,我提到我撸了个LeetCode题解仓库自动生成与发布的工具。不过,这个工具有个遗憾:代码里的中文注释会显示为乱码。这个问题说小也小,但是,这样一来就不能写中文注释了,有时还是挺不方便的。

这个问题搁置了许久,今天终于想着把这一BUG给解决掉,顺便解决下其它的问题,像减少等待、优化页面等。这里说下代码里的中文乱码的BUG。

也许是为了安全吧,LeetCode在submission详情里将代码中的一些符号使用了其Unicode码进行转换。例如,\n会转为\\u000A>会转为\\u003E等。

之前的处理方式很粗暴:

code = code.encode('utf-8').decode('unicode-escape')

撸了个LeetCode题解仓库自动生成与发布的工具

· 阅读需 5 分钟

前言

看到有不少人在GitHub展示自己的LeetCode题解。其实我自己也在GitHub记录了自己的LeetCode题解,但是,从做题到整理,需要很多时间。本来刷题就需要时间,也够累的,还要整理,再写出来,一道题得花上好久。

最近在LeetCode上刷了上百道题目,当然,不少是Easy难度的。如果让我手动去整理,我觉得太费时间了。我一直贯彻一种理念,简单不麻烦的事容易坚持。于是,我就想着,是否能用程序来去做这些呢?

以前在刷题的时候没注意到右侧的Notes,后来偶尔注意到了,突发灵感,这个不正好可以用来写解题思路吗?于是,我就希望有个工具能整理我刷过的题目和我的解答,还有Notes。但是,找了一圈,没发现合适的,所以,干脆就自己花了大概一天半的时间撸了一个:leetcode-publisher

说一下这个工具和别的类似的工具的不同点吧。在GitHub上看到有人做过类似的工具,但是是基于headless的浏览器做的,我觉得这种方式不够优雅。其实LeetCode的请求构造并没有很麻烦,主要是csrftoken,在cookies里有,在请求头要传x-csrftokenreferer。另外,类似的LeetCode题解仓库其实放的主要是程序源代码,这并不是我想要的。因为Markdown格式可以很方便插入代码,而且,刷题的代码并不长,放在Markdown里,和题目与笔记一起,更为合适。

PPM、PGM、PBM图像格式剖析

· 阅读需 3 分钟

今天突然需要用到PPM这个图像文件格式,之前没见过,在此记录一下。

PPMPGMPBM这三个图像文件格式很少见,其实也不难,分别用于彩色图像、灰度图像、二值图像。这里以PPM格式为例。

PPM格式有两种类型:字节码和ASCII。前者是二进制文件,后者是纯文本文件。

使用convert命令可以将图像转为PPM格式:

# 字节码
$ convert xxx.jpg xxx.ppm
# ASCII
$ convert xxx.jpg -compress none xxx.ppm