前晚在整理 0xFFFF 的帖子的时候,意外地发现这一篇文:

Web 在继续离我们远去 - 知乎

这篇文其中提到了 internet 和 Web 的概念,引用如下:

中文世界一直混淆互联网(internet)和万维网(web)。人们念兹在兹的「互联网开放精神」,实乃万维网的开放精神。万维网的开放主要就体现在一点:任何万维网上的文章之间都可以通过网址随意互相链接。如果我想在文章里介绍 UbuWeb 这个网站,我就可以直接在 UbuWeb 这六个字母上添加它的网址 ubu.com。妳或许觉得这是废话,但在微信公众号的文章里妳做不到;妳只能添加微信生态圈内的链接,比如这个:https://weixin.qq.com/cgi-bin/readtemplate?t=weixin_external_links_content_management_specification(即上述《规范》的链接)

这时候我突然反应过来,我过去其实一直没有区分清楚这里的概念的差别,World Wide Web,简称 WWW,中文“万维网”,又叫 Web,而不是 internet 这个只有物理意义的一层。加之如今移动互联网发达,许多接触网络的新人,对于网络的了解可能仅限于微信、QQ 和各种各样的 APP,已不知道 WWW 为何物。所以,我也尝试通过一些简单的语言,理一理其中涉及的概念。

阅读全文 »

宿舍有个树莓派常年开着吃灰,装了 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去操作包含文件内容的字节数组,这也让浏览器端实现文件哈希提供了可能。当然,实际上也是可以实现的,这里分为两个部分来介绍这个过程。

阅读全文 »