跳到主要内容

重新制作了书籍网页

· 阅读需 3 分钟

最近学习了 React,并借助 Docusaurus 重新制作了书籍网页:https://lv.qizhen.xyz/

实际上,Docusaurus 已经帮我做了绝大部分工作,React 技能几乎没派上用场,毕竟书籍的格式还是比较简单固定的,不需要非常炫酷的界面。

之前我使用 Docsify 制作网页,对其简洁的界面和实用的功能一直很满意。然而,Docsify 的最大问题在于它采用客户端渲染,导致搜索引擎无法有效爬取页面内容。在墙外,Google 几乎垄断了搜索市场,但它对客户端渲染页面的支持并不理想。国内的搜索市场竞争虽然激烈,但各大引擎在这方面表现得比 Google 更差。因此,为了提高网页的可见性和 SEO 效果,我决定寻找更适合服务端渲染的工具,最终选择了 Docusaurus。

Docusaurus 确实比 Docsify 更复杂,入门门槛也稍高。Docsify 专注于文档页面,而 Docusaurus 除了文档,还支持个人主页和博客等多种内容形式。因此,Docusaurus 的配置和插件系统更为复杂,但灵活性也更高。Docusaurus 支持服务端渲染,生成静态 HTML 页面,这使得 Google 可以顺利爬取我的网页内容。尽管国内搜索引擎目前依然无效,但问题可能出在我的域名未通过工信部认证,而非 Docusaurus 本身的限制。与 Docsify 的“所见即所得”不同,Docusaurus 需要经过 build 步骤才能生成最终页面,这对初学者来说可能有些不习惯。此外,作为较新的工具,Docusaurus 的中文资料相对较少,但社区活跃,更新速度快。

尽管学习曲线略陡,但 Docusaurus 的整体体验非常令人满意。特别是在 SEO、功能扩展和界面设计上,Docusaurus 显示出强大的潜力和灵活性。

查看或添加留言

制作电子书网站的一点想法

· 阅读需 6 分钟

初次尝试搭建电子书网站时,由于缺乏经验,许多技术问题都是在实践中逐步暴露的。先大致总结一下。

最开始弄的时候,没有借助任何工具,直接就开始搭网页了。当然底层的库用的还是别人写好的,比如最主要的部分,把Markdown格式文档(MD)转换成HTML格式用的是marked.js。上层的代码也并非完全从头开始写, 我也参考了别人的代码。不用工具,自己写的最大好处是让我学习了很多以前不会的技能。以前是没做过网站前端开发的,Javascript也没用过。现在能做个简单网页了。

但是学习过后,发现如果把网页功能完善起来,全自己开发太费时间了。而且继续花时间对我学习的帮助也没有之前那么大了。于是我还是用了工具把网页从新做了一边。最著名的工具大概是 gitbook-cli,一个GitBook发布的旧版本的开源工具。这个工具是在线下把Markdown格式文档转换成HTML格式文档的。更新一个页面的流程大约是这样:找到需要更新的MD文档,修改保存,运行gitbook-cli,生成HTML文档,把生成的HTML文档上传至GitHub。步骤有点繁琐,不是我想要的。而且gitbook-cli有四五年没更新了吧,直接下载后不做点配置都根本运行不起来了。所以放弃了。

后来是用的Docsify重新生成了网站。Docsify还是很简单易用的,不过bug也是很多。有一些bug我直接在本地修改了,但有一些是我没法改的,比如最简单的,它对于HTML tag中图片的路径解析跟别人都不一样,比如:<img src="images/image192.png">。它用绝对路径来解析,而其它MD转换工具全部用的相对路径。这个问题我估计Docsify自己也没法改了。不过我现在还有临时解决办法,先将就着用一段时间吧。Docsify生成的网站最大的问题还是没办法被搜索引擎检索,当然也可以说这是搜索引擎不够强大,但是我也没法改变搜索引擎,只能再改进自己的网页了。

Docsify和我最开始写的网页原理完全相同,都是在客户端做渲染,服务器并没有给客户端发送任何HTML格式内容,而现在的搜索引擎只认HTML,它们是不会运行渲染程序的。所以也就没法抓到任何内容。要想被搜索引擎认识,还是得有HTML文件才行。有些网站是可以帮我们做这件事的,比如GitBook。我在GitBook上也生成了一份电子书,https://labview.qizhen.xyz/ 。在GitBook上做电子书网页,基本没有任何可以配置的东西,所有的网页都长一个模样。这也不是设么大问题,但它无法提供留言功能,还是非常不爽的,我就喜欢看留言。GitBook收费版可能有留言功能,不过穷人并没有尝试付费版。

穷人也不是完全没办法,我们开可以利用GitHub Actions这个免费功能来实现HTML文档的自动生成和部署。GitHub Pages默认就集成了一个Action流程,它可以在每次用户更新 MD 文件之后就调用Jekyll这个工具,为更新的MD文档生成HTML文档在部署到服务器上。只不过GitHub Pages默认的工具对生成的网站有一定格式限制,比较适合做博客,不适合发布书籍。其实可以不用它默认的工具,而是利用GitHub Actions调用一个更适合电子书的转换工具,在MD文件更新后做自动转换和部署。近期我还不会尝试这件事,因为React这个东西我才学了一半,业余时间就那么一点,先抓紧时间学完React再去建新网页。至于转换工具,我会去使用 Docusaurus,因为它使用React写的,正好让我学完了可以实践一下。

查看或添加留言

放在GitHub上的书还没法被检索

· 阅读需 3 分钟

我把书的原稿开源后放到了 GitHub 上,并制作了一个页面方便阅读。制作的网页是一个单页面应用,也就是说书中的所有内容都在同一个页面中:https://lv.qizhen.xyz/。别看每个章节的地址栏都会显示不同的 URL,比如:https://lv.qizhen.xyz/#docs/structure_condition,实际上 # 号后面的部分只是同一页面的不同参数而已。

浏览器展示的内容是 HTML 格式,但 GitHub 的网站并没有存储 HTML 格式的文档。所有文档都以 Markdown(.md)格式保存。GitHub 的网站不会动态地将 Markdown 格式的文件渲染为 HTML 再传给读者的浏览器,而是直接发送 Markdown 数据。最终由浏览器端运行的一段 JavaScript 程序将 Markdown 数据渲染成 HTML。

GitHub 的服务器似乎不支持后台渲染。做成前台渲染的单页面应用对用户体验会更友好,比如页面切换速度较快,还可以动态改变背景配色等。但这种做法对搜索引擎并不友好。

搜索引擎在检索网站时存在两大问题:

  1. 它不会尝试访问 URL 中的不同参数,也就是说只会检索 https://lv.qizhen.xyz/ 这个主页;
  2. 搜索引擎的爬虫不会运行 JavaScript,因此即便是主页的内容,它也无法看到。

总之,搜索引擎无法读取书中的任何内容,这也就意味着用户不可能通过搜索引擎找到它。

目前我还没有解决这个问题的方案。不过,在 GitHub 上搭建博客有很多其他方法,有些工具可以生成静态 HTML 页面,这种方式应该不会有类似的问题。等有时间再尝试其他工具吧。

此外,GitHub 自带的搜索功能对于中文书籍几乎没有用。它按“词”进行搜索,但 GitHub 定义的“词”是两个空格或符号之间的字符串。对于代码或英文文档来说,这种方式非常适合。然而,由于中文词语之间没有空格,GitHub 搜索中文时只能整句匹配。只有当文章中的某句内容与搜索内容完全一致时,搜索结果才会显示出来。

查看或添加留言

最近使用国内网站的麻烦

· 阅读需 6 分钟

都是实名认证弄出来的麻烦,看这趋势,以后国内外的网络世界恐怕要彻底分离了。

前一阵子,我买了一个域名 https://www.qizhen.xyz/ 。为什么选择 .xyz 后缀呢?因为便宜!穷人也想要个独立域名,所以只能降低要求。随后,我把家里的电脑配置成了一台服务器。要让别人能访问我的服务器,需要使用内网穿透软件。考虑到墙内的限制,首选当然是国内的软件。我试用了“花生壳”等几款较为知名的软件,功能做得不错。不过,这些软件需要手机认证,这还算好,我请国内的亲戚帮忙认证,虽然麻烦,但总算通过了。

但接下来的问题就更麻烦了:一是客户端不允许国外 IP 登录;二是使用的域名必须是工信部注册的。我尝试通过腾讯云办理工信部备案,结果发现实名认证更加严格。不仅需要打开微信小程序进行实时视频认证,还会检测我的 IP 地址。因为我的 IP 位于国外,认证直接失败了。

好吧,这难不倒软件工程师。我转而尝试自己搭建 FRP 服务实现内网穿透。在腾讯云上购买了一台国内最便宜的服务器。但接着发现一个新问题:根本无法连上服务器!起初我以为是配置出错,后来才意识到是墙的原因 - 服务器 IP 和我的 IP 之间根本无法互通。原本以为墙只是阻挡特定网站,没想到国内运营商可能为了省事,干脆直接封禁了一整段 IP 地址。或许换其他云服务商会好些,但我选择腾讯云是因为它支持微信登录,即便我的微信是美国账号,这确实方便了不少。无奈之下,我只能改用腾讯云在美国的服务器。这台服务器的 IP 地址能被国内外用户访问,问题总算勉强解决了。

政策带来的限制虽麻烦,但产品如果足够好,总能找到替代方案。然而,如果产品质量也很差,那就真的无路可走了。新浪的产品就是这样。前些天看到一则新闻,说近几年新浪微博的收入大幅增长。我不禁感到惊讶:还有人用微博吗?

曾几何时,新浪是我每天必登录的网站,也是获取新闻的重要来源。新浪的博客、微博都曾风靡一时。然而,随着产品质量不断下降,身边的朋友也逐渐远离这个平台。我自己曾尝试过使用新浪博客,但它的用户体验极差,尤其是敏感词问题。经常是我费尽心力写了一篇技术文章,发布时却被提示“包含敏感词,无法发布”。然而,系统根本不告诉你哪些是敏感词,导致完全无从修改。

后来,我果断放弃了新浪,改用 WordPress 作为博客平台。虽然国内读者都无法访问了,但至少我还发的出文章。现在看来,幸好当初没坚持使用新浪博客,因为,再后来我甚至完全无法登陆新浪了。登录新浪博客时需要手机验证,但无论是国内手机号还是国外手机号,我都无法通过验证。大概还是因为我的 IP 地址位于国外吧。

虽然我无法登陆新浪微博,但却意外发现我的微博账号似乎被一个机器人接管了!它正在自动关注其他账号并转发内容,大约每小时关注一个陌生账号,并不断转发一些毫无意义的内容。我查看了一下以前几个好友的微博账号,发现他们大多已经很久未登录,有几个也被类似的机器人控制着,重复着自动关注和转发的任务。

现在,我总算明白了新浪微博的“活跃用户”数据是从哪里来的。令人唏嘘,曾经的新浪居然堕落到如此地步。

查看或添加留言

终于把所有章节都放好了

· 阅读需 4 分钟

https://lv.qizhen.xyz/

花了好几天时间,其中一天我甚至请了假专门来整理。虽然目前仍然存在一些排版上的问题,但这些只能慢慢修改完善了。

Markdown 格式在某些功能上还是有局限性的,尤其是处理表格时。最大的问题是它不支持无表头的表格。将 Word 文档转换为 Markdown 格式时,大部分表格不得不直接使用 HTML 标签。这虽然在显示上没有问题,但编辑起来却相当麻烦——满眼都是标签,想要找到需要的内容变得异常困难。

在这里要特别感谢 lhb5883 网友,他最初建议我使用 GitHub 搭建博客。这才让我发现,原来 GitHub 既没有被墙(希望我不是乌鸦嘴),也确实是最适合托管开源项目的平台。唯一让我担心的是,LabVIEW 用户中可能有很多人不熟悉 GitHub 的使用方法。

这堵“墙”给我造成了许多麻烦,更糟的是,它似乎还在变得越来越高。有些人可能认为这堵墙只是为了圈住里面的人,但实际上它是双向的。我在国外访问国内网站也越来越困难了。例如,我已经完全无法使用新浪博客了。最开始还能浏览页面但无法查看评论,后来甚至连正文加载都不正常了。而现在,登录还必须每次通过国内手机接收验证码。

目前,国内用户量较大的网站几乎都要求手机注册和验证。这意味着,我无法再正常使用大多数常用网站。如果只是注册时需要手机号,我还能请国内的亲戚帮忙,但有些网站每次登录都要手机验证,这就彻底把国外用户挡在门外了。

这次把书开源的过程中,我学到了一些网页构建的知识。在此之前,我几乎没有任何网页开发经验。不过,对于是否将博客也迁移到 GitHub,我仍有些犹豫。原因是旧博客的内容非常多,包括大量的图片、链接以及留言等,这些迁移起来的工作量可能远远超过一本书。我还需要进一步研究是否有更高效的迁移方案,争取找到更简单的做法。

查看或添加留言

《我和LabVIEW》书籍开源啦!

· 阅读需 3 分钟

感谢许多读者多年来对《我和LabVIEW》这本书的支持和喜爱。随着时间的推移,我觉得出版社应该不会再对这本书进行改版或印刷了。于是,我联系了北航出版社,咨询他们是否同意将书的原稿开源,以便让更多人从中受益。非常感谢北航出版社胡主任的大力支持和肯定答复!

为了让更多技术爱好者能够方便地学习和参考,我在 GitHub 上创建了一个项目,将原稿及相关的示例代码都上传到其中。需要说明的是,我并没有这本书的最终电子版,目前开源的原稿内容与发行版基本一致,主要区别在于少了一些精美的排版,可能还保留了一些未修改的错别字。

为便于大家阅读、检索和讨论,我将原始 Word 文档格式转换成了 Markdown 格式,并上传到了 GitHub。这样不仅更加轻量化,也便于在现代技术社区中共享和改进。

接下来,我会逐步把这个博客上所有关于 LabVIEW 的文章也都搬到书籍专用的网站上去。任何关于 LabVIEW 的问题都可以去新的网站进行讨论。希望这个开源版本能继续帮助到对 LabVIEW 感兴趣的朋友,也欢迎大家提出改进意见或参与讨论。再次感谢大家对这本书的支持与喜爱!

查看或添加留言

耳石症

· 阅读需 8 分钟

耳石症的医学名称是:良性阵发性位置性眩晕(Benign Paroxysmal Positional Vertigo,简称 BPPV),是一种因身体位置变化而引发的眩晕症状。过去一年,我经历了好几次耳石症发作,其中第一次的情景让我记忆犹新。

那是去年感恩节假期的第一天。公司老板难得“大发慈悲”,放了整整一周假。当时我满心欢喜地计划如何好好享受假期,却万万没想到,这个假期最终变成了我的“养病周”。

假期第一天早上,我因为兴奋,猛地从躺着的状态坐了起来。就在这一瞬间,我感觉脑袋里“嗡”了一下。起初我以为是早上血糖低了,便立刻又躺回了床上。虽然躺了一会后觉得好些了,但这突然的动作或许已埋下了发作的隐患。年纪渐长,类似的剧烈动作确实需要多加注意。

接下来的几个小时里一切似乎恢复正常。中午,我开车外出取东西时,开始感到有些不对劲 - 脑袋有点晕,但与发烧或头痛引起的那种晕眩完全不同。尽管如此,症状尚未严重到影响我的日常活动。我回家后对老婆说自己有点头晕,打算躺下休息。没想到这一躺不要紧,一翻身,突然感觉整个世界都在旋转,就像是被丢进了滚筒洗衣机一样。

老婆急忙上网查找相关信息,最终得出可能是耳石症的结论。后来,医生确诊的确如此。

耳石症的发生与内耳平衡器官的结构有关。我们的内耳中有一些负责感知位置和维持平衡的器官,包括椭圆囊、球囊和三个半规管。椭圆囊和球囊中附着着许多微小的碳酸钙晶体,被称为“耳石”。这些耳石本应固定在特定的位置,帮助感知身体的运动和位置变化。然而,在某些情况下(例如剧烈头部运动或碰撞),耳石可能从球囊中脱落,进入半规管。脱落的耳石在半规管中移动时,会干扰半规管的正常功能,向大脑发送错误的位置信号。大脑被这些信号误导,就会感到强烈的眩晕。

耳石症的特点相对明确,因此与其他眩晕症状区分起来并不困难。根据我的经验和相关资料,耳石症引起的眩晕有以下两个典型特征:

  1. 眩晕由头部的运动触发
    当头部发生某些特定的运动(如抬头、低头或从直立到平躺的姿势变化)时,眩晕可能会突然发作。而在保持一个固定姿势不动时,眩晕通常会缓解。即便头部本身没有主动移动,但如果身体的整体动作带动了头部位置的变化,也可能触发眩晕。比如,我当时在做抬头或从直立到平躺的动作时,会引发明显的不适。这种与运动相关的眩晕特点,与发烧、血流问题或其他疾病引起的头晕有明显区别,后者往往与身体姿势的变化无关。

  2. 伴随明显的眼球运动和视觉异常
    眩晕发作时,如果睁开眼睛,患者可能会看到周围的环境在旋转或晃动。与此同时,眼球会不自觉地快速来回运动(称为眼震)。这是由于耳石症干扰了大脑的平衡感知系统。在正常情况下,动眼反射机制会自动调整眼睛对准目标,即便头部或身体在运动,眼睛的焦点仍然保持稳定,就像相机的防抖功能。然而,耳石症发作时,大脑接收到错误的信号,以为头部在运动,从而触发眼球的快速调整,导致患者感到天旋地转。相比之下,血流受阻或神经压迫引起的眩晕,通常不会出现这种明显的眼球运动。

耳石症虽然被称为“良性”,但发作时的强烈不适感却让人难以忽视。我最严重的一次发作时,感觉天旋地转,甚至恶心呕吐,几乎快要把胃都吐空了。幸运的是,大多数耳石症会随着时间自然缓解,耳石会逐渐回到原来的位置。这也是为什么多数患者可以在一周左右自行恢复。
在治疗上,有几套耳石复位操(如 Epley 手法)可以加速耳石的回归。我第一次发病时尝试了这些复位操,但感觉帮助有限。不过,这并不意味着复位操无效,因为许多患者在医生的指导下确实能通过这些方法快速缓解症状。

虽然耳石症本身对身体没有直接危害,但它可能会引发危险情境,尤其是在需要高度集中注意力的活动中。

我的第二次发作大约发生在第一次发病的半年后,那时我正在开车。突然一阵眩晕袭来,前方的道路仿佛开始旋转起来。我凭着上次的经验,迅速打开双闪警示灯,并将车安全地停靠在路边。由于眩晕严重,我几乎无法分辨方向,只能凭感觉停车。幸运的是,当时所在的路段非常熟悉,路况也相对安全,我在静坐了几十分钟后症状缓解,才缓缓驶回家。

查看或添加留言

在考虑自己建一个博客网站

· 阅读需 2 分钟

Wordpress 免费版的功能好多限制,还会插广告,中国也没法访问。如果在自己的服务器上建一个博客,这些问题就都能解决了。

不过以前没干过。要从头开始研究,不知猴年马月才能真的做好。

我想了下,我理想的博客网站至少应该:

  • 任何人都能访问到。
  • 任何人都可以留言回复,包括匿名的。
  • 没有敏感词限制。

最好还可以:

  • 界面简明干净
  • 使用方便
  • 免费

这些需求好像还真不太容易同时实现啊。

2021-12-01 更新:

前几天在自己家里的电脑上装了一个Wordpress,测试了几天,挺好用的。可是到最后一步,搬家的时候,又犹豫了,不想搬家了。我写博客主要还是为了给自己看,帮助回忆过去,跟日记也差不多。看的人少也不是啥问题。原本是因为我有些技术文章很想跟别人分享的,现在发现GitHub Pages发布电子书非常好用,所以,我打算就不要自己建博客网站了,继续用现在的博客写一些乱七八糟的想法。能做成系列的技术文章则放到GitHub上去跟人分享。

查看或添加留言

很久没写博客了

· 阅读需 4 分钟

最近突然意识到,距离上次更新这里已经过去很久了。虽然我仍然偶尔记录一些生活和想法,但那些文字从未公开。原因有几个:

首先,自从有了孩子,我的闲暇时光几乎都被他填满了。想要静下心来做自己的事情,比如写文章,已经变得十分奢侈。

其次,可写的题材也变少了。关于家庭生活,随着儿子渐渐长大,我需要更加注重保护他的隐私,不适合再写太多。而工作和技术方面,我目前的工作领域相对狭窄,难以吸引更广泛的读者。即使把一些心得写出来,可能关注的人也寥寥无几。

更重要的一点是,博客的读者显著减少了。主观原因在于,我没能持续提供足够有价值的内容。客观上,一方面,博客逐渐被朋友圈等社交平台取代;另一方面,国内外互联网的逐步分隔让我失去了许多原有读者。记得出国前,我曾将博客备份到国内的平台,但现在这些平台大多已无法使用。而由于没有国内手机号,很多国内网站我也无法登录。在国内,像 WordPress 这样的博客平台早已被屏蔽。如今,我甚至不确定自己的文字还能有多少人能够看到。

然而,今天再次登录博客时,意外发现仍有读者在关注我!这种感觉真的让人非常激动,仿佛老朋友依然记挂着我。有读者提到了一些关于 LabVIEW 的问题,但非常抱歉,我已经无法再提供太多帮助了。离开 NI 公司将近十年后,我的工作早已转向其他领域,与测试和自动化控制的联系也越来越少。这些年 LabVIEW 的更新与变化我已无从跟上,许多知识点甚至早已遗忘。我实在不敢再以 LabVIEW 专家的身份自居了。

不过,最近听到一个振奋人心的消息:LabVIEW 推出了免费的社区版!对于像我这样纯粹的爱好者而言,这无疑是一个重拾兴趣的好机会。或许我可以借此重新踏入这个领域,重温当年的热情。希望未来有机会与大家分享新的心得,一起探索 LabVIEW 的更多可能性!

查看或添加留言

我们为什么看不到外星人?

· 阅读需 4 分钟

“外星人都在哪呢?”这是许多人好奇的问题,而最著名的提问者是诺贝尔奖获得者、物理学家恩里科·费米。他提出了一个著名的悖论,即“费米悖论”:如果银河系中智慧生命的存在概率很高,那么为何我们从未发现外星文明的痕迹?

费米通过简单的估算,结合德雷克公式,推测在银河系中可能存在数百万个不亚于人类科技水平的外星文明。他的逻辑是,人类从工业革命到登月,只用了不到两百年时间。如果再给人类几十年,我们有望实现行星际旅行;而到达恒星际旅行的水平,也许需要一千年,甚至以更保守的估计,十万年。那么,在一个已经存在了约百亿年的银河系中,十万年的时间几乎可以忽略不计。如果这些文明中的任何一个比人类早发展十万年,那么他们早该具备探索整个银河系的能力。然而,我们至今没有看到任何迹象。

关于“为什么我们看不到外星人?”的解释有许多,但每一种都让人感到悲观。

一种直观的解释是“稀有地球假说”。该假说认为,生命的诞生需要一系列极为特殊的条件,而这些条件在宇宙中可能非常罕见。如果这一假说成立,那么智慧生命的存在概率极低。换句话说,人类在宇宙中可能是孤独的,有点凄凉。

另一种解释更加令人不安,这就是“大过滤器假说”。它认为虽然外星文明可能存在,但所有文明在达到星际旅行的阶段之前,都会因某种不可逾越的障碍而停滞或灭亡。这一障碍可能是技术发展的内在限制,例如宇宙的物理法则本身不支持星际旅行;也可能是文明发展的社会或生物学限制,例如技术的进步伴随着毁灭性的自我毁灭风险。如果这个假说是正确的,那么人类的未来可能也逃不过这一命运。这意味着我们的科技进步也可能走向一条注定的死胡同。这种前景无疑是令人压抑的。

还有一些更具想象力的假说,例如“外星监控假说”。这一理论认为,人类可能已经被更高级的外星文明监控,甚至我们的存在本身可能是外星人设计的虚拟产物。如果这种理论属实,那么外星文明可能刻意避免让我们发现他们的存在,以维持实验的“纯粹性”或保持对我们的完全控制。如果人类真的只是被操控的棋子,这样的命运似乎也显得无奈且悲哀。

查看或添加留言