宿舍有个树莓派常年开着吃灰,装了 Transmission 用来挂种子。由于挂下来的资源大部分都是视频类型,所以也不必下载下来。于是我配置了一个开了 autoindex 的 Nginx 服务器,在校园网内,直接通过一个内网的 URL 来实现资源的访问。

源网页

最近开始接触纸片人,有时候想把一个文件夹里面的剧集加到播放列表,几十个视频一个个添加显然是一件很麻烦的事情。观察发现,PotPlayer 可以批量添加 URL,所以说,我只要把所有的链接一起导出、添加就好了。

阅读全文 »

最近自己有个批量调用 API 抓取数据的需求,类似爬虫抓数据的感觉。听到爬虫二字,我们常常想到的是 Python, Beautiful Soup 之流,而对于简单地抓取数据这种需求来说,一个小米加步枪就能干掉的东西,拉个加农炮来,显得有些大材小用。实际上,只需要围绕着 抓取->格式转换处理->保存 这简单三步,然后用合适的工具或编程语言实现就好了。

驱动整个批量抓取过程的核心在于一个循环,把所有要访问的 URL 放在一个数组,循环遍历一下。对于我这样搞前端的来说,结合现代 JS 的 async/await 很容易就可以写出类似下方的代码(这里我用了 Axios 库处理 HTTP 请求)。

// Input
let read = fs.readFileSync('url-list.txt', 'utf-8');
let urlList = read.split('\n');

(async () => {
  for (let current = 0; current < urlList.length; current++) {
    const url = urlList[current];
    console.log(current, url);
    // get
    let { data } = await Axios.get(url);
    fs.writeFileSync(`result/${url}`, JSON.stringify(data));
  }
})();

阅读全文 »

有时候觉得,人的大脑有点类似一个单核CPU的电脑,同一时刻只能做一件事情,如果中途需要做别的事情的话,得把正在干的事情的上下文保存起来,再切换到新的事情上,新的事情处理完后又切回来,加载回原本的上下文继续干活。

电脑CPU可以随时切换,可以把之前保存的工作上下文完美地恢复,于是设计电脑的人可以把CPU的运行时间切割成很短的时间片,然后让CPU一个个任务切换着执行,每个任务耗完一个几毫秒的时间片之后就切到下一个任务,运行几毫秒又切到下一个任务,如此往复循环,看起来好像真的是“同时执行多个任务”的样子。

而人的话,任务切换的过程中,任务的上下文并不能很好地保存,切换回来正在执行的工作的时候,相比之前往往会有一些信息以及思路的丢失,任务的切换伴随着保存和加载上下文的过程的开销,对于电脑来说,这些开销都是小菜一碟; 但对于人脑来说,保存和恢复上下文过程的脑力开销是十分巨大的。

平时学习工作的时候,时不时无意识地掏出手机刷刷,或者是突然来了一条微信/QQ信息,这都无形中引起了任务的切换。最可怕的是,我们的大脑因为忙于处理它们传来的各种符号和感官刺激,导致了这一切都发生在无形之中而不自知。

For example, 在你平时看着书的时候,如果有人突然找你做些什么事情的话,这个打断是很明显的,而手机。。。

于是,直到一天快结束的时候,才开始说:
“我特么一整天究竟干了些啥???”


这是在去年修《操作系统》课程的时候曾经冒出的一些小小的想法,当时随手发到了朋友圈,今天偶然在一个群里遇到了这个话题,突然想起以前思考过这个,找了好久才找到,想来还是搬运过来吧,尘封在票圈的信息洪流之中,自己都不去看的感觉,有点小小的难受。也不得不说,人总是下意识地喜欢那些顺手的东西。

这学期的安全学课程有个作业,内容是写一个软件实现 SHA3 Hash 值的快速计算。想一想老师这么安排,大致上也有一种推广新的密码学算法的意图。既然希望应用起来,天然跨平台的 Web 显然是一项非常具备优势的技术,想到 HTML5 有定义网页与文件系统交互的 File API 标准,而且很多浏览器已经实现,基于浏览器端,实现一个 Sha3 的在线哈希岂不是更好?

根据文档,浏览器端的 FileReader 对象提供了 readAsArrayBuffer 的方法,可以将文件的二进制内容读取到 ArrayBuffer 字节数组对象中,然后就能通过JS去操作包含文件内容的字节数组,这也让浏览器端实现文件哈希提供了可能。当然,实际上也是可以实现的,这里分为两个部分来介绍这个过程。

阅读全文 »

开放的互联网对我来说一直都充满着魅力。一直觉得,互联网的各种开放协议设计得十分精巧,很多东西都恰到好处,就像邮件、日历、RSS订阅之流。大学两年来,我接触的最多的也是它们,于是乎对于身边事物的追求,也有类似的近乎极致的强迫症,很多东西都希望向着某些极致的标准去设计。

大概也是如此,一直以来我对于工具、对于解决问题的方式这一块似乎都带着一种莫名的执念。在看《Learning How To Learn》的时候,我遇到一个叫 Anki 的记忆工具,发现这个工具所带来的便利,我为此疯狂了一段时间,仿佛一切的学习,都应该是围绕着艾宾浩斯记忆曲线间隔重复的记忆。后来遇到了一个名为 MarginNote 的软件,看了介绍,并因为它能够自动制作 Anki 卡片而有所期待。但因为这软件只能在 Apple 的平台下运行,一直只能干巴巴地看着。

最近终于攒够零花钱,入了 iPad + Apple Pencil,搞上了 MarginNote 3 的试用,几天内刷了好几章的 CSAPP,的确舒爽。在这过程中,也把 Evernote,OneNote,Reeder 等东西也一并安了过去。通过 iPad 和无敌的触控笔,我也开始体会到这一系列设计的及其人性化的工具的便利,但对于它们的使用,似乎还是有那么一些迷茫。

在工具的不断切换中,我越来越觉得,自己的关注重点是不是有点偏了,我追求的应该是某些工具或者某种标准吗?

阅读全文 »