头脑风暴

今天在写 js,准确说,是 jsx,不过写着写着并不特别在状态,关掉 Atom 里面全部的 tab 之后,空空地对着这个编辑器发呆,思维跳跃,顺手下班回家,想到了下面好多事情。

从我第一行 javascript 到现在,大大话话有八年了,当年的那个 javascript 的作品叫“广州日报下载助手”,它的后缀名不是 js, 而是 jse,相信很多人都不知道有这样一个后缀名吧。我的高中同学想必应该还有印象,当年高二的时候,我就是用这个,每天早上把广州日报的 PDF 下载下载,然好拼成一个大的 pdf 给大家课间看的,不过大家貌似看得比较多的不是新闻版,而是体育……之所以是 jse,因为 js 默认被网页编辑器占领了,其实 Windows 的可执行文件还是蛮多的,例如 vbs, vbe, js, jse, pif, com, exe。 vbs, vbe,这我还有一个更多人知道的东西,叫“PPT 转图片”,vbe 后缀的一个东东,还有另外一个自己做着玩的,叫“VBSctipt 进程管理”。

看着这几个修改时间都在 2007、2008 年的东西,试了一下,发现这么多年,大微软的兼容性还是可以让他们在 Windows 10 上面跑起来!简单说一下他们的工作原理吧:“广州日报下载助手”是根据当前日期,通过 XMLHTTP 枚举广州日报 PDF 的下载地址,再通过 ADO.Stream 保存下载的字节流;“PPT 转图片”是用 FSO 枚举一个目录下面的所有 ppt 文件,调用 Office DOM 将 ppt 另存为图片的小工具,当年我们各种彩屏 MP3/4 很流行的,而高中课堂又开始信息化,大家都用我这个东西将 ppt 导入到自己的设备上看;“VBSctipt 进程管理”调用了 WMI 的 API 拿到当前进程列表,然后做了用 WMI, taskkill, NTSD 结束进程的功能,出发点很简单,当年的病毒,见到任务管理器启动了必须干掉,而当年那个任务管理器也不现实执行文件的命令行和路径的,我做这个,就是为了修电脑的时候方便。

好了,扯皮这么多,其实它们都不是我今天特别想说的,特别想说的,只是,他们一个共同特征是,他们都是脚本,都用 IE 做界面。

之所以这么说,因为 Atom 这个编辑器,也是这么做出来的,它的界面,本质上就是个浏览器,不同的是,它用的是 webkit 不是 IE ,它的引擎是 V8,不是 Windows Script。准确地说,它背后的项目叫 Electron ,用项目的话说,就是“Build cross platform desktop apps with web technologies”。幽幽地感慨,IE 这种做法我当年是迫于无奈,我不会 VB,更加不会 MFC,所以不知道在那个杂志上面看到一段用 IE 控件的东西,然好用刚刚学会的一点 table 布局的东西撸了个界面,做了几个小工具。

继续感慨的是关于微软,多年以前的已经有的一种技术,却多年以后被另外一个平台实现,并真在用到了好多产品上。你可能会问用到了哪些?微软自家的 VS Code,最近很火的生产力工具 Slack,等等,都是这个 Electron  的衍生产品。八年前,绝对是一个 IE 一家独大的时代,不过微软从来没想过进一步增强 IE 的功能,无论从践行 W3C 规范到性能提升都很少变化。直到 Chrome 横空出世,版本号向火箭一样刷起,整个 web 世界在最近三四年发生了翻天覆地的变化, Electron  项目更加是让 Web Application 有用新姿势抢占 Desktop Application 的姿势。是啊,用了 Atom、 VS Code,我也在问我自己,Notepad++ 除了体积小,好像就真的没什么优势了。

其实,换个角度说吧,当年的 IE,的确没什么动力去提升性能,它已经是最快最好的了;当年用 Mac, Linux 的人加起来也不够 1%,也没必要跨平台。不过今天,这世界真的变了,不仅仅是有更快的浏览器,更快的脚本引擎,也不仅仅是有更多的操作系统平台可以给人们选择,就连 PC 整个市场也渐渐腾出很大一块给 Mobile。微软也发布了新的浏览器 Edge,性能真的很不错,不过让我有点小失望的是,当时有一场内部宣讲说,其实它并没考虑过让低版本的 Windows 使用,也(暂时)没考虑过登陆别的平台。

你要说微软好吧,它自己自成一个很成熟生态系统,它做很 stable 的工作,多年以前的一个脚本你也可以今天继续跑起来,没多大的问题;可是现在别的生态系统也在崛起,它将自己生态系统的东西移植到别的生态系统的有些动作又真的不够直接干脆(只是说有些啦,其实最近几年算是越来越开放了)。我对微软的感觉也真的很复杂的,毕业后作为一个应届生进入微软,我很不喜欢 Windows 的终端,甚至调个窗口大小都不支持,各种自动化工具远远不如 *uinx;可是 C#, .NET 的各种好又的确很讨好我。其实这么说吧,从移动互联网起步到现在的看,我的结论就是,微软没能成功地讨好开发者,开发者也就不能帮微软讨好用户,于是……

Electron  这个项目是前几天我就已经看到,并翻了下游好几个有意思的产品了,可是一直很忙,没空思考太多。其实想到此节还是心里一惊的,忙得我都无暇想一想一些值得思考的东西了,人不会思考跟咸鱼又有什么区别呢。

好了,扯蛋到这。如果你有兴趣,这是当年的脚本,年轻时候写的,好像也没找回缩进号的有注释的了,也不一定可以完全没问题跑起来。