标签:# 工具教程

工具箱

这里收集自己平时发现的实用、精美小工具,列表内容会持续更新的。 名称 分类 简介 fotor 在线图片编辑工具 一个在线图片编辑工具,具备常用的按比例裁剪、按形状裁剪、调整大小等等功能 TWsaver 下载工具 推特视频下载工具,只需要把推文链接贴上去,它就可以将推文的视频下载下来 Dark Reader、Night Eye Chrome 插件 可以把任何网站都变成黑夜模式的工具,相比之下 Dark Reader 看起来更舒服一点 FasterChrome Chrome 插件 当用户鼠标悬停在链接上面,就开始预加载网页,使得真正点击的时候,页面瞬间就能加载。 screenrecord 在线录屏 一个录屏工具,在线录制是它最大的优点,省去了安装录屏软件的麻烦 Cmder 终端工具 一个 Windows 下的终端工具,可以像在 linux 下一样敲命令,提供了 mini 版和 full 版,如果遇到问题可以看这篇文章 Visualgo 数据结构资料 该网站将一些基础的、常见的算法用视频来展示,方便学习者的理解,是不错的数据结构、算法学习资源 Unsplash、Pexels 资源素材 图片非常精美,而且都可以免费使用,不用担心版权问题 Mixkit 资源素材 免费可直接下载的视频资源库,包括商业、城市、自然、生活方式等常用类型的视频,里面都是非常干净、原创度很高的视频素材 Facebook Design 资源素材 由 Facebook 设计团队出的资源网站,这个网站有很多设备模型,比如:手机、电脑、iPad、Apple Watch,同时还包括 Pixabay 资源素材 它除了图片素材外,也包含了很多视频素材,视频素材同样精美、干净 优品 PPT 资源素材 里面有很多精美的 PPT 模板,优点是该网站提供直接免费下载方式,并不需要注册账户、付费等等繁杂的流程 icons.download 资源素材 一个完全免费的开源矢量图标,它提供了16种款式,212个图标,有实体和轮廓,尖锐和圆润,4种宽度,免费且可商用 Countrymeters 世界人口时钟 可以实时查看世界人口的变化,也可以缩小反馈查看具体的国家、地区等等,也提供了世界五大死亡原因 敏感词防和谐 敏感词防和谐工具 这个工具通过在每个字符之间插入零宽字符来防止敏感词被和谐,每年都会经历的论文查重也可以通过插入这样的零宽字符来避免 Gridea 博客工具 一个静态博客写作客户端,可以实现博客文章一键部署到 𝖦𝗂𝗍𝗁𝗎𝖻 𝖯𝖺𝗀𝖾𝗌 或 Coding Pages,并且支持 Markdown 语法,但是软件做的比较卡 Tailwind CSS CSS 框架 一个实用的CSS框架,用于快速构建自定义设计,它提供了底层的实用工具类,让您可以在不离开HTML的情况下构建完全定制的设计。 Linux-command 文档 Linux 常用命令都能通过它搜索到,并且伴随着简明易懂的示例,它也提供了 Chrome 插件 Instant.page Js 库 当用户鼠标悬停在链接上面,就开始预加载网页,从而使得用户真正点击的时候,页面瞬间就能加载。 ThenBy Js 库 一个可以实现多字段排序的 js 库 IconGo 图标库 开源的图标搜索引擎 RegExr 正则工具 在线正则表达式学习测试工具,提供正则式编辑、学习、创建和测试 sms-activate 接码平台 很棒的接码平台 [Openverse][https://wordpress.org/openverse/] 素材资源 一个图片和音频的搜索引擎,据说包含超过6亿件作品,都可以自由使用,不用付费 中国地铁信息概览 数据资源 可视化显示全国各个城市的地铁概况,包括每日的客流量
Read More ~

用 flomo 管理自己的奇思妙想瀑布流

使用 flomo 已经有一段时间了,太喜欢它的简洁与便捷了。它的微信输入方式可以随时随地记录突然冒出来的灵感;使用微信读书的时候看到一段写的很漂亮的文字,顺手贴到 flomo 的小卡片中便于下一次再回顾;使用 #todo 标签记录一些重要的待办事项...... 基本上的脑力劳动者都会有记笔记的习惯,我也习惯去捡日常零零星星掉下的小拼图块,找到一个适当的时机再用这些小拼图块进行排列组合完成一个小作品,作品可以是一篇文章、可以是某个问题的解决方案,亦或是简单的工具、词句集合。 我用了「拼图块」这个词是因为我觉得人接收的信息就是碎片化的,尤其在充斥着各种奶头乐 APP 的时代,信息被磨揉的更加细碎无营养。不管是生活中还是工作上遇到的问题,很多都不是简简单单的接收一点碎片化知识就能找到解决方案的。学习新知识也是逐个去吸收小的知识点,再用这些小的知识点构建自己的知识体系,一些让主干更加粗壮,另一些让枝桠更加繁茂。 flomo 背后的笔记理念就是去捡那些小小的拼图块,这和我现在的理念是保持一致的。借用 flomo 网站上的话说就是我们不可能都成为作家或者发表论文,但是我们都需要记录和思考。写 MEMO(卡片)而不是写文章的价值在于,能让我们更好的思考。 大部朋友记笔记都仅仅是在辛勤的记录,最重要的思考环节却被忽略了,在之前写的你如果只是一直囤干货,那永远不可能进步中也提过没必要去假装学习。这里没有倡导不去记笔记的意思,而是找到一个适合自己的记录方式,笔记究竟要记什么中有一部分答案。 我使用的第一个笔记软件是有道云笔记,用了有将近两年的时间,让我放弃它的原因是文件同步老出问题,另一个原因就是速度太慢了。印象笔记更是使用时间三天都没有超过,它那些看似强大实际却毫无用处的功能严重分散了我的注意力,这违背了我记笔记的初衷。 还有像为知笔记、石墨文档一类的软件其实也还不错,但是和印象笔记、有道云笔记类似,它们的共同问题都是以文章的形式在组织笔记。这让记笔记变成了一件极为费时的事情,我看到一篇文章的字数少于 600 就难受,强迫症患者。 所以有一段时间我选择了使用本地 VsCode + Markdown 插件方式记笔记,Markdown 的标题语法可以很轻松的将每个小片段分开,不同的文件(名)自然而然就变成标签了。一个新的技术点记到「技术.md」中,一段摘录记到「摘录.md」中。不过因为 VsCode 本身是一个方便程序员使用的文本编辑器,所以我这种方式记笔记总是有一点别扭,具体哪里别扭我自己也说不出来,总之就是用起来差那么点感觉。 这里不得不提一下现在比较流行的数据库类型软件 Notion,这个工具做的让我有一种只有我想不到没有它做不到的错觉。团队在设计一个数据度量系统的时候,我还多次提出过借鉴 Notion 中 Block 的思想。Notion 是一款很优秀的软件,但仅对记笔记这件事来说它显得大材小用了,功能过于强大、使用过于灵活到变成了我不选择它作为笔记软件的原因。 一小段时间使用知识星球做为笔记软件,但是它的搜索功能做的太弱了。一直使用到现在的笔记软件是微信,我建了只有我一个人的群,一些突然冒出来的想法、读书时的思考与摘录、todo things 都直接通过对话框发到群里。我看到有很多朋友也用了我类似的方法,选择发送到文件助手,这种方式的好处是可以借用微信强大的「查找聊天内容」功能,虽然有些鸡肋但用起来也还凑合。 其实我的记笔记方式是逐渐在向 flomo 靠拢的,虽然它出现的比较晚。flomo(浮墨笔记)看起来像是一个个人版的 twitter,或者就像少楠自己说的是一个加强版的文件传输助手,没有多余的功能去扰乱我的视线,就是一个简简单单的流式布局一元笔记软件。 大多数习惯于像装抽屉一样去组织文件,windows 的文件系统也是这样设计的,不同的文件夹放不同的类别的文件,看起来好像很符合我们现实生活的打扫房间的场景。但不知道你有没有意识到每次去找一个具体的文件夹都要耗费大把的时间,这种初衷极好的分类整理方式竟然渐渐变成阻止我们去记录绊脚石。 一款好用的文件系统更多的应该聚焦于搜索上,当用户搜索时能够快速的返回与之相关的文件才是关键,而不是把目光放在文件的分类上面。同样,一款好的笔记软件也应该是这样的,今天我看到一朵花,恍惚记得之前有记过与花相关的笔记,当我去搜索时它能够快速返回我想要的记录就 OK,flomo 在这两点上做的刚好甚得我心。 当然 flomo 还开放了 API 功能,这让记笔记这件事变得方便且有趣,比如在 iOS 上选中文字发送到 flomo 就变成了一个 MEMO,同样也可以实现在 Mac 上选中文字发送到 flomo,不过我使用最多的还是它的微信输入和随机漫步功能。 记笔记是为了更好的让自己思考,不要像微信和 QQ 收藏那样,让 read it later 变成了 read it never。最后说一下可以通过邀请链接注册 flomo 获得 28 天 PRO 会员。
Read More ~

如何搭建一个属于自己的博客/企业网站

本文参考内容: 如何做博客/企业站以及注意事项 Typecho支持Emoji表情方法 说明:此篇文章得益于王红星的指导,喜欢直接粗暴一点的朋友可以跳过前面,直接从程序的选择开始阅读。 我的博客搭建之路 说起来有点惭愧,我自己是计算机科学与技术专业出身,虽然博客系统在我眼里是很简单的系统,但是我却一直畏惧从零开始搭建一个系统的麻烦性,因为但是安装程序的运行环境就会耗掉我大量的时间,再加上我写代码、测试、上线等工作少说也得要四五天!所以我一直都在 CSDN 一类的平台写作,然而这些平台为了利益把体验做的越来越差! 还在大学时听说过 WordPress 可以搭建博客,不过总是迈不出行动的步伐,认为一旦涉及到服务器的工作就不会简单。直到我在 Twitter 发现有人推荐 Gridea,才发现搭建博客系统原来可以这么简单,主要还是免费的。 于是我借用 Gridea 和 Github Pages 搭建了一个博客系统,EryouHao 开发的这个写作软件用起来相当便捷。但是 Github Pages 在国内总是速度很慢,而且图片资源经常加载不出来,而且 Gridea 是用 Vue 技术开发的,打包成桌面软件后总会出现卡顿情况,自己写作的那个劲又逐渐褪去了。在2020 年国庆观《我和我的家乡》有感所写中也提到在知乎一不小心就违反了社区规范,索性花功夫研究如何搭建自己的博客系统,也才有了这篇简单的教程。 一个博客/企业站需要什么 可以在网络上访问的东西背后都有一套程序支撑,博客系统(企业站点)就是运行在某处的一套程序。要把一套程序运行起来,肯定需要运行程序的空间和驱动程序运行的系统,比如我们的手里的电脑就是一种运行程序的空间,你使用的系统(Windows、macOS、Linux)就是驱动程序运行的系统,下面推荐的服务器都已经把把空间和驱动给你安装好了,所以完全不用担心自己不懂如何安装。 程序运行起来了还得让外面的人看到才行,所以我们还需要一个域名(类似于www.baidu.com一样的东西),我们把这个域名绑定到服务器上,别人在浏览器输入这个域名就能看到我们的博客(程序)了。 如果希望自己的博客打开速度很快,除了选择比较好的空间外,还可以购买 CDN 服务;希望自己的文章能更好的被百度之类搜索引擎收录的话,可以购买独立 IP 主机。 程序的选择 WordPress 应该是目前全球使用的最广泛的开源程序,结构良好,功能强大,社区内容丰富。但是对于博客(企业站点)来说,WordPress 就显得比较臃肿。Typecho 是一个轻量、简洁、快速的程序,除了官方论坛,在https://typecho.me/也有很多主题和插件。虽然 Typecho 各种主题、插件没有 WordPress 丰富,但是对于搭建博客系统已经足够了。 网上也有文章对两个系统做了对比,比如这篇:个人博客平台选择 Typecho 还是 WordPress ?Typecho 是原生支持 Markdown 语法的,可能是喜欢 Markdown 写作同学的福音,具体选 Typecho 还是 WordPress 可以凭自己的感觉,两个程序之间也是可以互相迁移的。 WordPress 安装包下载:https://wordpress.org/download/(12.4M) Typecho 安装包下载:http://typecho.org/(400K) 空间的选择 空间类型包括服务器、VPS和虚拟主机,它们的价格是逐渐减少的。对大部分人来说并不是越贵越好,比如服务器和 VPS 还需要自己懂一些运维知识才行。仅仅只是搭建博客(企业站点)的话,一个虚拟机就足够使用了,又便宜又不费心。 空间地理位置是需要重点考虑的一个因素,如果你做的是英文站点、都是国外用户,那可能一个美国主机更适合你;如果你的用户是国内的话,那大陆主机和香港主机可能更适合你。 王红星在他的文章中推荐了两个主机商,分别是衡天主机和戈戈主机。我自己选的是衡天主机,有问题可以随时通过他们的客服询问或是提工单,体验很不错!偷偷告诉你,在购买前可以搜搜优惠码!阿里云也很不错,只是稍微有点贵! 域名注册 国内有腾讯云、阿里云、爱名网等域名注册商,国外有 Name、Namecheap、Godaddy、Dynadot 等域名注册商。有些域名商默认会提供域名保护功能,有的则需要购买该功能。各个域名注册商的价格也都差不多,根据自己的实际需求选一个就可以了。 我自己选的是腾讯云,它第一年域名的优惠力度比较大,比如我要注册guanngxu.com这个域名,可以看到都是有优惠的。 腾讯云:https://dnspod.cloud.tencent.com/ 阿里云:https://wanwang.aliyun.com/ 爱名网:https://www.22.cn/ 域名解析 我们所有的准备工作都做好了,下一步就是安装程序搭建博客系统了,下面我以衡天主机安装 Typecho 为例进行一个简略的讲解,结合我下面的内容和网上的资料,应该很快就能搭建自己的博客系统了。 主机购买后就知道它的 IP 地址了,首先我们去域名注册商处选择把域名解析到我们买的服务器上面。以腾讯云为例,在「我的域名」页面点击「解析」-->「快速添加网站/邮件解析」后会弹出如下页面。 选择「网站解析」的「立即设置」后会弹出另一个页面,你只需要在这个页面把你购买的主机 IP 地址填进去就可以了。稍等几分钟直接在浏览器输入域名访问,如果浏览器出现了页面而不是报找不到服务器 IP 地址,那么域名解析就完成了。 安装 Typecho 进入到云主机管理面板后,点击「文件管理器」可以看到如下图的目录,其中public_html目录就是咱们博客程序的目录,我们把下载好的 Typecho 包上传到这个目录并解压。 需要注意的是解压后的目录是build目录,我们需要将解压后的目录移动到上一级,,保证public_html目录看到的是下图这个样子的,然后再输入域名去访问自己的博客。 如果不出意外,输入域名后出现的应该是下面的页面,点击「我准备好了,开始下一步」发现了什么?需要填写数据库信息。我们再回到衡天云主机管理面板,滑到「数据库管理」选择「新建数据库」,设置数据库名、数据库用户名、密码等,点击「创建」即可,这些信息就是安装 Typecho 需要的信息,再回到之前的页面把这些信息填进去,自己的博客系统就搭建完成了。 那么现在你就拥有了一个自己的博客系统,如果样子不太好看你可以去官方论坛或https://typecho.me/里面找自己喜欢的主题,如果有能力甚至可以自己修改或原创主题,一些插件在上面也都是可以找到的。 Typecho 官方也提供了相应的安装文档,如何使用插件、如何调整网站外观等常见问题在官方链接http://docs.typecho.org/doku.php也都已经有说明了,此处便不再作赘述! 让 Typecho 支持 Emoji 表情 21 世纪的互联网时代怎么能少了 Emoji 表情呢?由于编码问题,Typecho 默认是不支持 Emoji 表情的,所以我们只需要将编码改成支持 Emoji 表情的编码就可以了,具体一点就是把原来的utf8编码修改为utf8mb4,修改编码的方式如下: 修改数据库编码 在衡天云主机管理面板选择「phpMyAdmin」,然后选择你刚才建立的数据库,选择「操作」-->「排序规则」-->「utf8mb4_unicode_ci」-->「执行」 修改表编码 在 phpMyAdmin 面板点击「SQL」,直接运行下面的语句就可以了。要注意你所建表的前缀,我建表所填写的前缀是gx,所以我都是gx_xxxxxxxxx,默认前缀是typecho。 alter table gx_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_options convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table gx_users convert to character set utf8mb4 collate utf8mb4_unicode_ci; 修改数据库配置文件 数据库配置文件在public_html文件夹下,文件名为config.inc.php,其中有一行的内容是charset => utf8,将它修改为charset => utf8mb4就可以了。 看看有了小表情是不是很可爱?
Read More ~

那些鲜为人知的微信使用技巧,让微信更便捷高效

本文整理的技巧基于两种目的,一种是实用方便用来解决生活中的小问题的,另外一种是用来装逼去撩小妹妹的,可能大多数人都更喜欢装逼撩妹的技巧吧。 被人@时掉表情包 在微信群内聊天时如果发送的消息触发了某个关键词就会掉下来表情包,为聊天增添了一些乐趣。我们可以通过人为的方式让别人一@你,就自动掉表情包。操作起来很简单,就是在群聊昵称末尾添加一些不同的字符,比如我在群聊昵称末尾加了「คิดถึง」顶部就掉下来了满屏的星星✨。 其实把这个泰文翻译一下就知道没有那么神秘了,微信内置的翻译功能将「คิดถึง」解释为「想念」,这下就明白为什么会掉星星✨了吧。「สุขสันต์วันเกิด」解释为「生日快乐」就会掉蛋糕,其它还有很多可以自己翻译一下就可以了。 同一条朋友圈别人评论/点赞不再提示 如果某个朋友发了一条朋友圈,你在下面评论或是点赞了,那么当你们的共同好友也对同一条朋友圈点赞或评论时,就会在「发现」有消息提示,但很多时候我们并不想要这样的提示,那怎么办呢?点到朋友圈的消息页中,iOS 向左滑动(安卓长按)就可以看到有个「不再通知」按钮,点击之后共同好友再点赞或评论就不会收到提示啦! 用好微信内置的代办事项 微信内置的代办事项功能估计没多少人知道,微信无疑是我们打开频率最高的 APP,把代办事项放在微信就更不容易忘事了。 可以看到它被置顶在微信的首页界面,每次启动微信都能看到,非常的方便,那么如何把代办事项置顶呢? 第一步:打开微信 > 我 > 收藏 > 右上角➕号 > 右下角图标 > 代办 第二步:右上角三个点 > 左下角在聊天中置顶 重要事件提醒 我们经常会在微信上答应别人一些事情,为此可能去找一些清单软件来提醒自己,问题是清单软件又不常打开,常常会导致事情的忘记,给别人留下一个言而无信的形象。其实微信自身就已经带了提醒功能,长按任何一条消息,上面有一个提醒按钮,点击设置提醒时间,到了提醒时间后,会在「服务通知」中有推送的提醒。 改善公众号阅读体验 微信公众号阅读文章的体验不佳,不支持分组,也不支持进行上一次阅读,这时可以选择公众号任意一篇文章,点击右上角之后找到「在微信读书中打开」,如果没有这个功能,可能需要升级微信或者下载微信读书 App。 建立一个人的微信群 怎么建立只有一个人的微信群呢?选择 -> 添加朋友 -> 面对面建群 -> 输入数字 -> 建群完成。这个只有自己的群就相当于一个信息分组,可以把自己平时的想法、待阅读的文章、写作灵感等发到里面,就自己一个人看,而且还可以对微信群进行置顶操作,不会受到其他微信群信息的影响,处理完的信息也可以像删聊天记录一样删掉,当然也可以选择发给文件助手或者自己。 使用微信编辑图片 我们有时候为了别人能更方便的理解自己想表达的意思,或者图片上的某些位置不想被别人看到,可以在添加图片的时候选择「预览」,就可以对图片进行编辑了。最实用的就是斗图的时候,对方一张图过来,如果手里没有合适的图片,可以直接基于对方的图片进行编辑,怼回去。 利用微信收藏快速拼图 选择「收藏」,在里面添加图片,然后选择右上角三个...的按钮,之后选择保存为图片,这样你添加的图片就拼接为了一张长图了,非常方便的操作,有的朋友喜欢分享聊天记录,就可以这么拼接。 善用「搜一搜」 微信的「搜一搜功能很强大,比如有一天你无意在朋友圈看到一条信息,当时没有发现它的价值,过了一段时间因为其他事,突然恍惚记起了以前某条朋友圈提到过相关的情况,想查一查。这时就可以通过「搜一搜」来快速查找了。除此之外,「搜一搜」还能搜索文章,方便你快速查看与某个主题相关的文章;以及表情包搜索等功能,在斗图的时候不会再为没有表情包而烦恼。 僵尸粉检测 相信很多人都遇到过别人给你发一条消息,上面注明是为了清僵尸粉的,但是这样会打扰到绝大部分微信好友,也给别人留下很不好的印象,我很反感收到别人的清粉消息。如果你怀疑某个人删除了你,你试着转账测试一下就可以了。 推荐几个小程序 微信发票助手,经常出差的朋友或者行政小姐姐,常遇到的问题是在开公司发票的时候,需要填写一些信息,一般有记不住的,可以使用这个小程序填写好,之后每次需要的时候打开就好了,或者别人需要的时候,你分享二维码给他就可以了。发票信息填完后,会在「个人信息」底部多一个「我的发票抬头」,很方便的哦。 微信指数,有时候可能会做一些调查,比如写文章的朋友,文章标题到底是用“旅游”还是“旅行”好呢?这个时候就可以用微信指数来做调查,可以查看不同词汇之间的热度。 文章截图,IOS 用户比较苦恼的应该就是截长图了吧,有人就专门做了一个小程序,只需要把文章的链接复制过去,就可以自动生成截图,还可以生成 PDF 文件哦。 蚂蚁清单,很多人都有使用待办事项管理软件,但是有时候又忘记打开,这时不妨把它放到日常打开频率最高的微信里面去,而且还能为手机节省一点空间,蚂蚁清单的体验很好,可以自己去尝试。 一条人生经验 最后说一条人生经验吧,敏感和违法不和谐的话题不要聊。
Read More ~

Vim 常用命令快捷查询

参考内容 Learning Vim The Pragmatic Way 《鸟哥的 Linux 私房菜》 Vim 可以认为是 Vi 的高级版本,Vim 可以用颜色或下划线的方式来显示一些特殊信息,您可以认为 Vi 是一个文本处理工具,而 Vim 是一个程序开发工具,现在大部分 Linux 的发行版都以 Vim 替换 Vi 了。在 Linux 命令行模式下有很多编辑器,但是 Vi 文本编辑器是所有 Unix-like 系统都会内置的,因此学会 Vi/Vim 的使用时非常有必要的,对于 Vi 的三种模式(命令模式、编辑模式、命令行模式)这里就不在做说明了,下面是一些比较常用的命令。 一般命令模式下 命令 说明 h、j、k、l 与键盘的方向键一一对应,分别为左、下、上、右,在键盘上着几个字母是排在一起的 Ctrl+f、Ctrl+b 分别对应键盘的「Page Down」、「Page Up」,我更习惯于这两个键,而不是前面的组合键 0、$ 分别对应键盘的「Home」、「End」,即移动到该行的最前面/后面字符处 n<Enter> n 为数字,光标向下移动 n 行 /word、?word 向光标之上/下寻找一个字符串名称为 word 的字符串 n、N 如果我们刚刚执行了上面上面的 /word 或 ?word 查找操作,那么 n 则表示重复前一个查找操作,可以简单理解为向下继续查找下一个名称为 word 的字符串,N 则与 n 刚好相反 :n1,n2s/word1/word2/g 在第 n1 行与 n2 行之间寻找 word1 这个字符串,并将这个字符串替换为 word2,如果前面的 n1,n2 使用 1,$ 代替则表示从第一行到最后一行,最后的 g 后面可以加个 c,即 :1,$s/word1/word2/gc,这样就会在替换钱显示提示字符给用户确认(confirm) x、X 分别对应键盘的「Del」、「Backspace」键 dd、yy 删除/复制光标所在的那一整行 p、P p 将已复制的数据在光标下一行粘贴,P 粘贴在光标上一行 u 恢复前一个操作,类似于 Windows 下的 Ctrl+Z Ctrl+r 重做上一个操作 . 小数点,重复上一个操作 命令行模式下 命令 说明 :w 将编辑的数据写入硬盘中 :w! 若文件属性为只读,强制写入该文件,不过到底能不能写入,还是跟文件权限有关系 :q、:q! 与 w 一样,q 为关闭的意思 :r [filename] 在编辑的数据中读入另一个文件的数据,即将[filename]这个文件的内容追加到光标所在行的后面 :w [filename] 将编辑的数据保存为另一个文件 :set nu/nonu 显示/不显示行号 编辑模式下 组合键 作用 [ctrl]+x -> [ctrl]+n 通过目前正在编辑的这个文件的内容文字作为关键字,予以自动补全 [ctrl]+x -> [ctrl]+f 以当前目录内的文件名作为关键字补全 [ctrl]+x -> [ctrl]+o 以扩展名作为语法补充,以 Vim 内置的关键字予以补全 当我们在使用 Vim 编辑器的时候,Vim 会在与被编辑的文件目录下再建立一个名为.filename.swp的文件,我们对文件的操作都会记录到这个 swp 文件中去,如果系统因为某些原因掉线了,就可以利用这个 swp 文件来恢复内容。如果存在对应的 swp 文件,那么 Vim 就会主动判断当前这个文件可能有问题,会给出相应的提示。 我们也可以给 Vim 环境设置一些个性化的参数,虽然在命令行模式下可以使用:set来设置,但是这样每次设置实在是太麻烦,因此我们可以设置一些全局的参数。Vim 的整体设置值一般放在/etc/vimrc中,我们一般通过修改~/.vimrc这个文件(默认不存在)来设置一些自己的参数,比如: " 该文件的双引号是注释 set nu "在每一行的最前面显示行号 set autoindent " 自动缩进 set ruler " 可显示最后一行的状态 set bg=dark " 显示不同的底色色调 syntax on "进行语法检验,颜色显示,比如 C 语言等 最后附上一张命令速查卡,此图来源于Learning Vim The Pragmatic Way,PDF 版下载链接在这里。
Read More ~

使用订阅号实现微信公众号历史文章爬虫

微信公众号已经成为生活的一部分了,虽然里面有很多作者只是为了蹭热点,撩读者的 G 点,自己从中获得一些收益;但是不乏好的订阅号,像刘大的码农翻身、Fenng的小道消息、曹大的caoz的梦呓等订阅号非常值得阅读。 平时有时候看到一些好的公众号,也会不自觉去查看该公众号的历史文章,然而每次都看不完,下一次再从微信里面打开历史文章,又需要从头翻起。而且对于写了很多年的大号,每次还翻不到底。有一些平台提供了相关的服务,但是得收几十块钱的费用,倒不是缺几十块钱,主要是觉得这种没必要花的钱不值得去浪费。 网上搜如何爬微信公众号历史文章,大致给了三种思路,第一是使用搜狗微信搜索文章,但是好像每次能搜到的不多;第二是使用抓包工具;第三种是使用个人订阅号进行抓取。 简单来说就是使用程序来模拟人的操作,抓取公众号历史文章。首先登录微信公众号个人平台,期间需要管理员扫码才能登录成功。 def __open_gzh(self): self.driver.get(BASE_URL) self.driver.maximize_window() username_element = self.driver.find_element_by_name("account") password_element = self.driver.find_element_by_name("password") login_btn = self.driver.find_element_by_class_name("btn_login") username_element.send_keys(USERNAME) password_element.send_keys(PASSWORD) login_btn.click() WebDriverWait(driver=self.driver, timeout=200).until( ec.url_contains("cgi-bin/home?t=home/index") ) # 一定要设置这一步,不然公众平台菜单栏不会自动展开 self.driver.maximize_window() 进入微信公众平台首页后,点击素材管理,然后点击新建图文素材,就会进入到文章写作页面,此时前面打开的微信公众平台首页就不需要了,可以将其关闭。 def __open_write_page(self): management = self.driver.find_element_by_class_name("weui-desktop-menu_management") material_manage = management.find_element_by_css_selector("a[title='素材管理']") material_manage.click() new_material = self.driver.find_element_by_class_name("weui-desktop-btn_main") new_material.click() # 关闭公众平台首页 handles = self.driver.window_handles self.driver.close() self.driver.switch_to_window(handles[1]) 在文章写作页面的工具栏上面有一个超链接按钮,点击超链接即会弹出超链接编辑框,选择查找文章,输入自己喜欢的公众号进行查找,一般第一个就是自己想要的结果,点击对应的公众号,该公众号所有的文章就会通过列表的形式展现出来。 def __open_official_list(self): # 超链接 link_click = self.driver.find_element_by_class_name("edui-for-link") link_click.click() time.sleep(3) # 查找文章 radio = self.driver.find_element_by_class_name("frm_vertical_lh").find_elements_by_tag_name("label")[1] radio.click() # 输入查找关键字 search_input = self.driver.find_element_by_class_name("js_acc_search_input") search_input.send_keys(OFFICIAL_ACCOUNT) search_btn = self.driver.find_element_by_class_name("js_acc_search_btn") search_btn.click() # 等待5秒,待公众号列表加载完毕 time.sleep(5) result_list = self.driver.find_element_by_class_name("js_acc_list").find_elements_by_tag_name("div") result_list[0].click() 文章列表已经展现出来了,直接抓取每条文章超链接的信息即可,每抓取完一页就进入下一页,继续抓取文章列表信息,直到所有文章信息都抓取完毕。 def __get_article_list(self): # 等待文章列表加载 time.sleep(5) total_page = self.driver.find_element_by_class_name("search_article_result")\ .find_element_by_class_name("js_article_pagebar").find_element_by_class_name("page_nav_area")\ .find_element_by_class_name("page_num")\ .find_elements_by_tag_name("label")[1].text total_page = int(total_page) articles = [] for i in range(0, total_page-1): time.sleep(5) next_page = self.driver.find_element_by_class_name("search_article_result")\ .find_element_by_class_name("js_article_pagebar").find_element_by_class_name("pagination")\ .find_element_by_class_name("page_nav_area").find_element_by_class_name("page_next") article_list = self.driver.find_element_by_class_name("js_article_list")\ .find_element_by_class_name(" my_link_list").find_elements_by_tag_name("li") for article in article_list: article_info = { "date": article.find_element_by_class_name("date").text, "title": article.find_element_by_tag_name("a").text, "link": article.find_element_by_tag_name("a").get_attribute("href") } articles.append(article_info) next_page.click() return articles 至此,微信公众号历史文章的爬虫已经实现,其实整个过程只不过是用程序来模拟的了人类的操作。需要注意的是,程序不能设置太快,因为微信做了相关限制,所以设太快会在一段时间内无法使用文章查找功能;另外一点是使用选择器选择页面元素的时候,会有一些坑,而且我发现不同账号登录,有很少部分的页面元素虽然直观上是一样的,但是它的 html 代码有细微的差别。 这个小程序会用到selenium库,和chromedriver,前者直接pip install即可,后者自行下载;另外你还需要一个订阅号才行,本文只实现了关键的文章信息抓取,并没有进行文章信息的持久化存储,完整代码在这里。
Read More ~