流水账〔卌四〕

开场白

还是先说前一篇遗留问题。

关于「字体」,还有俩「大手企业」出品没提到。一个是苹果的「旧金山」(San Francisco),其中蕴涵的充沛的政治和意识形态内容略过,可以免费使用(开放)但不开源。还有一个是Intel的「Clear Sans」,也是「自由使用」但没提开源,不过提供了SVG格式,其中纯文本轮廓数据俱全,当作「公开源代码」(但不意味着可以修改并再发布)理解可也。

而「SVG Font」目前只有苹果机上的「Safari」浏览器支持,IE/Edge不考虑实现,Chrome已经删除了相关功能,而FireFox更是专心搞「WOFF/WOFF2」。所以,Intel提供的「Clear Sans」字体包括了「EOT/TTF/WOFF/SVG」四种格式,覆盖了当代主流通用和专用的环境。当然,仍然是只包括西洋字母数字并且只有无衬线体。

从这个角度看,SVG以及其它XML相关技术,作为纯文本格式是「天然公开源代码」的,而是否「开放」还得看具体协议。想必没人认为一向以封闭生态著称的苹果居然拥护「开源运动」吧?这就足够回应一批有明显赞助商背景的活跃色目帐号「分不清开源和开放性」之类胡说八道胡搅蛮缠了。挪用一批同样有明显赞助商背景的活跃色目讼棍的措辞就是「咬文嚼字你还未够班呀」。

关于「离线应用」,只能说覆盖了大部分不需要与本地环境交互的场景,但还是有些场景覆盖不到。即便是对于主观唯心主义者贝叶斯革命战士从自己独立的人格和意志出发用自己的脑壳思考为了解决自己面临的问题和实现自己的需求,也会遇到。可以用我昨天上午的经历解释。

在本地备份的这些文章,文件名当中都是有编号和序号的,之前在《三自贴图运动》开头部分已经给出过在VS Code当中以GIT管理工作目录的截图。但是呢,侧边栏宽度有限,若是文件名太长,可能后面的字符就看不见。

之前转换为Markdown格式的时候,对于「《范版数学恶补记》流水账〔卌四〕」这种类型,本地目录放在「000 作品相关」下面,文件名则是「000-044_……(卌四).md」这种,看不到最后的编号。若要缩短,除了只剩下「流水帐」仨字之外,开头的「000」前缀显得多余,应该一并去掉。但是呢,同时还在以这个序号管理插图。如「000-044-000_题图.png」之类。因此还需要修改图片文件名,并修改正文当中的引用链接。

这些都好办,即便是当前尽量不安装不必要的软件并且还「极力避免具体编程」的场合,也可以通过「dir /b > list.txt」方式先生成文件名列表,再于文本编辑器内部使用正则表达式「查找替换」,于是生成「ren 000-044-000_题图.png 044-000_题图.png」这类命令。文本文件「list.txt」改名「list.cmd」批处理,执行之后就搞定了。

不过,在「求全责备」的指导原则下,开始修改《范版西幻设定集》相关文件的时候,就有麻烦了。因为「作品相关」的文件并不整齐,最初是两篇《缘起》,最后是一篇《了却一桩心事》,中间才是六十五篇《注释》。这就是说,注释的文章「编号」和文件「序号」并不对应,目前是「编号=序号-2」的状态。而使用正则表达式进行文本替换的时候,又不能做算术运算,毕竟不是脚本,这就麻烦了。

虽然说「极力避免具体编程」,但是必要的时候还得写。这时候,就面临之前若干年已经司空见惯的问题:言行举止吃喝拉撒睡都有微言大义,都蕴涵着充沛的政治和意识形态内容,都体现了政治和意识形态斗争新动向。你自己不承认没用,新时代中国特色社会主义大好形势下,繁荣的中文互联网上,有得是活跃色目帐号在蒙古主子指使下替你承认。

先解决问题吧,写什么呢?对于「文件重命名」这种工作,应该是「操作系统调用」范畴吧。所以,老迈年高的我率先回忆起当年不入流码农时期针对同样问题曾经使用过的解决方案。大约在2001年,刚上班不久,就碰上类似情况。那时候「临时抱佛脚」买了一本书,《Windows脚本编程核心技术精解》,厚达757页,20014月北京第一版第一次印刷,原书名«Windows Scripting Secrets»,2000年原版。当时感想,真是「新」书吖,太应景了。

这本书里面用「VBScript」举例,现在这批信息技术领域与时俱进的童年才俊估计都听说过没见过。而在那时候,微软还兲命昭昭,IE6还一统江湖,于是这微软专利且专用的「VB」及其衍生产品大行于世。以前提到过在某在线应用中由于功能原因为了限制用户在IE环境下运行,除了检测用户浏览器环境之外,还特意用VBScript而不是JScript写网页的客户端脚本,以图双保险。

虽然细节忘了很多,但是勉强可以写出来。不过有个问题无法简单解决,VBScript的「格式化数字」功能太弱,不能实现「前导零」的输出。也就是说,对于碰上「65」的场合要写成「067」这种编号,无法在VBScript当中简单实现,或者说需要自己手写一段较长代码。仔细衡量费效比,发现不划算,这种「笨」办法,既不能解决问题,也不能提供通用解决方案,还不能使得自己能力发生增长。

然后,第一反应是换「JScript」(注意不是JavaScript™),与此同时「思路广欢乐多」的想起刚才「list.cmd」里面那一堆命令列表的方式,又想起可以在最近工作所习惯的「网页」当中写脚本输出到页面再复制粘贴到文本文件再改名执行,这也能解决问题的「方案」。再然后,就想到了「浏览器离线应用」并不能覆盖这次我所面临的问题的所属领域,这种本地处理的场景还是需要正面迎战的,躲得过初一躲不过十五。

于是,先用更笨的方法解决眼下问题再说,启动「Microsoft™ Excel」用单元格公式而不是脚本生成命令行列表,保存,执行。好,搞定,没有后顾之忧了。接下来就需要寻找全局至少是局部最优解了,不能满足于头疼医头脚疼医脚,要把「形而下者谓之器」的具体伎俩上升到「形而上者谓之道」的层次上。

这时候就需要继续「回忆」了。之前也说过了,截止到2010年夏至凡是PC上能跑起来的技术都接触过,尽量简单体验一把,至少当个「名词党」以便在必要时可以立刻「临时抱佛脚」「病急乱投医」而不是连「佛」「医」在哪里都不知道只能急得如同无头苍蝇般团团乱转。微软也知道自家「批处理」功能太弱,才推出了「Windows Script Host」,同样由于功能仍然不够强大,又继续推出了「PowerShell」,那是在2006年。

2009Win7发布之后,PowerShell应景推出了「2.0」版。就是前一阵重装系统的新机,通过自动更新,安装微软推送的所有内容,目前环境下仍然是「PowerShell 2.0」。这时候就应该「刨根问底」:在这科技昌明民智大开的当代,「前沿进展」到底已经砥砺奋进到哪里了呢?

上网乱搜弥补代沟,知道了,「光盘哥」鲍尔默当政时期的「传统版」到「PowerShell 5.1」,而天竺掌门登基称「核心」之后「与时俱进版」则是依赖那「.Net Core」于是同样跨平台且开源的「PowerShell Core 6.0」。接下来就是下载、安装,并按照提示追加了一堆系统需求的前置组件。

这就算「可行性分析」结束了,今后碰到类似问题都可以直接自力更生艰苦奋斗自己动手丰衣足食,不用再「临时抱佛脚」「病急乱投医」了也。曾经的「VBScript」伎俩或许肯定「过时」了,「不中用」了,但是「C#」伎俩还有用,还可以在macOS/Linux上继续使用,无论面临的问题是「开发」还是「管理」。

忽然想起了似乎买过相关书籍,在亚马逊查找订单,果然2011526日买的,四本:

这些参考书的类型和本世纪初那本《Windows脚本编程核心技术精解》类似,可以提供「与时俱进新经验」。

而我买这几本并不是因为当时「新工作」用得着。当时的想法很简单,既然说过了「电子生涯已经结束」,肯定要言必信行必果硁硁然。不过这PowerShell是在2010夏至之前开始关注的,之前一直追踪业界动态,应该有始有终。再新的技术就不管了,按照「晚绑定懒求值」原则等用得着的时候再说。

因为从那时起我的精力重点已经转向政治和意识形态了也,一直持续到现在。所以买书那时候对待「新工作」的心态,类似被反动教会绝罚的斯宾诺莎在隐居中为了谋生而磨镜片一样,有关「荷兰」「斯宾诺莎」相关内容已经在《〈设定集〉注释》当中解释过了。

怎么说呢,因为现在用Windows所以才寻找其上的解决方案,若是手头只有苹果机,那早就开始用各种「Unix Shell」了,包括但不限于知乎首页今日头条位置醒目应景轮番推荐的bashzshfish什么的「谁是最好的Shell」之类真理标准大讨论。

好了,回归政治和意识形态斗争的「本职工作」,既然「老大哥在盯着你」,那么肯定有充沛的活跃色目帐号还是循环播放之前那一堆固定模板的措辞。看见了就迎头痛击,我就是「因地制宜」才伟大光荣正确。它们不考虑具体情况也要自带干粮连滚带爬投靠谁家卖命,这种站队表态才是膝盖生根头顶绿得发黑贱到骨子里去了。

言归正传

前面都是开场白,那么最后也必须回到「数学」相关主题了。

在最早几篇流水帐中已经提到了「开源至少是免费替代品」相关话题,这里稍微展开。

本篇当中涉及的「Microsoft™ Excel」仅用来以最笨的方式解决并非其设计目的所针对的问题。各种「电子表格软件」所处理的情况大同小异,只有功能之间的差异,「Microsoft™ Excel」之所以最强大,除了内置功能之外,还包括了允许用户「扩展」,其中最流行的手段就是以「VBA」写的各种「宏」。

那么立刻又要「思路广欢乐多」,最起码也要简单类比。既然市面上ECMAScriptVBScript更流行,也已经逼迫微软放弃封闭生态向主流靠拢紧密团结在以W3C为核心的互联网标准周围,那么针对绑定「VBA」所以功能充沛的这批软件,开源阵营一边有没有利用主流的ECMAScript以实现跟随策略企图「弯道超车」的计划呢?

当然有,虽然维基百科上面介绍「LibreOffice」时候只提到了Python之类疑似兲命昭昭的脚本语言,但是在LibreOffice自己的网站当中,可是明确提到了可以使用「JavaScript™」哟:Scripting LibreOffice

Scripting LibreOffice

LibreOffice internally supports the following scripting languages:

也就是说,对于各种机构和个人来说,如果只想简单移植既存赛博朋克资产中的Excel内容,可以用「LibreOffice Basic」;如果移植互联网相关领域积累的模块,可以用ECMAScript;其它以此类推。

这和「数学」有什么关系呢?最起码在「捅妓」相关科目上,不见得只能用「Microsoft™ Excel」刷题做作业了吧?

之前买过一大堆讲解各种Excel相关伎俩的书籍,都可以于形势所迫之下「晚绑定懒求值」的照葫芦画瓢的挪用到「LibreOffice Calc」之上,挪用不了就自己改造。所以,如果今后恶补过程中继续发表「三自运动」相关随笔,可能会涉及这方面内容。

后记

关于「Basic」多说几句,这是微软的「龙兴之地」,但并不是说被微软「垄断」从而导致其它「有自知之明」的企业「没有觊觎之心」。与时俱进的信息技术精英童年才俊可能不知道,当年有「Borland Turbo Basic」企图染指禁脔,而微软针锋相对推出「Microsoft Pascal」,结果微软在两个战场上都落下风,最终谈判结果是「Borland不碰Basic,微软不碰Pascal」。

再往后的事情都知道了,微软武德充沛,盘外招层出不穷。比如Borland就是,先中了缓兵之计丢掉Basic市场,而Pascal老本行又被微软挖走开国元勋主心骨,所积累经验回避教训都用于设计.Net反攻倒算,最终下场凄惨。

用知乎活跃用户的话讲,当年硅谷一票公司都被微软干死了,失业者回到学校教书,三天两头喷(该知乎活跃用户的主子)微软,导致美帝灯塔国高等院校培养的西洋特色资本主义接班人,居然不识大体不顾大局不懂政治不讲规矩不守纪律,竟敢没有四个意识不肯深刻认识到「普天之下莫非王土率土之滨莫非王臣」的道理,导致「朕即国家我就是大局你们要顾全大局」的政治理论和「作者最大剧本钦定导演叫人三更死谁敢留人到五更」的文艺理论迄今为止仍然没有成为普世价值。


2018.7.15, Solis