跳到主要内容

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

· 阅读需 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 分钟

我把书的原稿开源放到GeiHub上之后,给它做了个页面方便阅读。做好的网页是一个单页面应用,也就是说书里的所有内容都是放在同一个页面上:https://lv.qizhen.xyz/。别看每个章节都会在地址栏上显示不同的URL,比如“https://lv.qizhen.xyz/#docs/structure_condition”,其实#号后面的都只是同一页面不同的参数而已。浏览器只能展示 HTML 格式的内容,但GitHub的网站上并没有存HTML格式的文档,所有文档使用Markdown(*.md)格式保存的。GitHub的网站也不会把MD格式文件动态渲染成HTML格式再传给读者的浏览器,网站发给浏览器的还是 MD 格式的数据,是浏览器端运行了一段JavaScript程序,才把 MD 格式的数据渲染成了HTML。

GitHub的服务器应该是不支持后台渲染的,做成前台渲染的单页面应用,用户体验会好一些:换页反应比较快,还可以随时改变背景配色等。但是这种做法对搜索引擎非常不友好。

搜索引擎在检索网站时,一是它不会尝试不同的参数,也就是说它只检索 https://lv.qizhen.xyz/ 这一个首页面;二是搜索引擎的爬虫也不会运行JavaScript,所以即便是首页的内容,它也看不到。总之搜索引擎根本看不到这本书的任何内容,也就别想搜索到它了。

我还不知道这个问题怎么解决,不过GitHub上搭建博客还有很多其它方法,有一些是产生静态HTML的,应该没有这个问题。等有时间再试试其它的那些工具吧。

GitHub自带的搜索也几乎没法搜索中文书,它是按词搜索的。它定义的“词“就是两个空格或者符号之间的字符串,这对于代码或者英文文档都非常合适。但是中文的词和词之间是没有空格的,GitHub对于中文只能整句匹配,只有文章里恰好有跟搜索内容一模一样的句子时才会被找到。

查看或添加留言

最近使用国内网站的麻烦

· 阅读需 6 分钟

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

我前一阵子买了个域名 https://www.qizhen.xyz/ 。为啥是xyz后缀呢,因为便宜,穷人也想有个独立域名,就不能要求太高了。再后来把自己家里电脑做成了服务器,但是如果要让别人看到我家里的服务器就需要一个内网穿透软件了。这个当然首选用国内软件,否则墙内可能还是看不到。我试了一下“花生壳”等几个用户量比较大的软件。软件做的都还不错,要手机认证,这还好,我还有亲戚在国内,虽然麻烦但还是认证通过了。但接下来就无解了,首先是客户端不允许国外IP;再有使用的域名必须是工信部注册的。我还真试了一下通过腾讯云的服务办理工信部注册,但是这个实名认证就严格多了,需要我打开一个微信应用,实时视频,然后发现我的IP在国外,直接就认证失败。

好吧,这些还难不住软件工程师,我还可以自己搭一个FRP服务来实现内网穿透。在腾讯云上买了了一个最便宜的服务器,服务器在国内。然后呢,发现我连不上那个服务器。开始以为我配置有问题,后来才发现,这之间有墙。那台与服务器的IP和我上网的IP之间根本ping不通。我原以为墙只会阻挡一些特定网站的,没想到,国内的运营商可能是为了避免麻烦,大概是一封就封一大段IP的。其它运营商的云服务器不知道会不会好一点。我使用腾讯云是因为可以用微信登陆,即便我的微信账号是美国的。这让我方便了不少。

后来,只好有买了腾讯云在美国的服务器,这个服务器的IP还可以被国内外用户都访问到,算是勉强解决了问题吧。

以上都是政策引起的麻烦,但如果产品做的还行,总还可以找到方法来用。但是产品也做的垃圾,那就彻底没法用了。新浪的产品就是这样。前些天看到一条新闻说近年新浪微博收入大涨,我有点吃惊,心想:现在还有人用微博吗?新浪曾是我每天都登陆的网站,获取新闻的最主要来源,它的博客,微博也都风靡一时,可惜后来越做越差,我的熟人们大多都逐步离开新浪平台了。我曾经试图使用过一阵子新浪博客,但是它的产品体检极差,最主要的一点:经常是我写了一大片技术文章之后,告诉里面有敏感词,不能发。也不说哪些是敏感词,弄的我完全不知道该怎么改。于是就果断告别新浪,使用Workpress做了博客平台。当然也是有代价的,就是国内用户没法访问了。当时幸好没留在新浪博客,因为现在这个产品已经完全不让我用了。登陆它需要手机验证,但是不论我使用国内的还是国外的手机,它都会显示验证出错。可能因为我的IP地址还在国外吧。虽然我本人无法使用了,但是我惊奇的发现,居然有个机器人正在使用的微博账号自动关注别人和发帖。平均每小时就可以关注一个莫名其妙的账号,然后再转发一些内容。我赶紧再去看看以前好友的微博,也都是很久不登陆得了。果然也有一些账号是被机器人接管了,在不知疲倦的转发微博。我现在算是理解新浪微博的活跃度是哪来的了,没想到新浪堕落成这样了。

查看或添加留言

终于把所有章节都放好了

· 阅读需 3 分钟

https://lv.qizhen.xyz/

花了好几天时间,有一天我还请了休假专门来弄它。还依然存在的一些排版问题就只能慢慢修改了。

Markdown 格式在某些方面的功能还是不太够,最主要的问题可能是表格,无表头的表格都不支持。Word文档转换到Markdown,大部分的表格都是直接使用了HTML标签。显示到时没有问题,但如果要编辑就困难了,满眼看去,全是标签,都找不到需要的内容。

还要特别感谢 lhb5883 网友,最初建议我在Github上搭建博客。我这才惊喜的发现原来Github没有被墙(但愿我不是乌鸦嘴),而且Github也确实是最适合放置开源项目的网站。唯一担心的是LabVIEW用户可能很多都不熟悉Github。

这堵墙给我造成了很多麻烦,更糟糕的是,它还越来愈高了。墙里的可能以为它只是为了圈住里面的人,但实际上它是双向的。我访问国内网站也是越来越困难了。比如我已经完全无法使用新浪博客了,最开始我还可以浏览页面,但是不能看评论,现在正文也经常加载不了了。而且如果要登陆,还要每次让我用国内的手机收验证码。目前,国内用户量比较大的网站都必须要使用手机注册和验证了,也就意味着大多数的常用网站我都无法使用了。如果只是注册需要手机,必要时我还可以请国内亲戚帮个忙,但有些网站每次登陆都要手机验证,就真是彻底不让国外用户使用了。

这次把书开源的过程中还是学习了一些建网页的知识的,之前基本没有任何编写网页的经验。不过对于把博客迁移到Github上,我还是有些犹豫。主要是之前博客的内容很多,还包含大量的图片,链接,留言等等。这些要迁移起来工作量恐怕比迁移一本书要大得多,不知要花多少时间。所以我还得再研究研究,有没有什么更简单的做法。

查看或添加留言

打算把《我和LabVIEW》这本书的原稿开源了

· 阅读需 2 分钟

我想出版社不会需要再改版或印刷这本书了,于是今天联系了北航出版社,询问他们是否同意我把书的原稿开源出来,这样也许还能帮助更多一些人。北航出版社的胡主任给了我肯定的答复,非常感谢他们的支持!

我会在Github上建一个项目,然后把原稿和相关的示例都放在里面。我也没有这本书最终的电子版,原稿与发行版比,内容是相同的,主要是少了漂亮的排版。

我正在研究如何使用GitHub Page的功能。原稿是Word文档格式,但我想把它转换成Markdown格式再上传GitHub,这样可以方便阅读,检索和讨论。应该用不了多长时间就可以把项目建好。要是将来还有人愿意参与进来,那就好了。

查看或添加留言

耳石症

· 阅读需 7 分钟

耳石症也叫 Benign Paroxysmal Positional Vertigo (BPPV),良性阵发性身体位置变动引起的眩晕症。我过去一年里发作了好几次。

第一次发病的时候我记得非常清楚。那是去年感恩节假期的头一天。那年公司老板突然爱心爆棚,感恩节给大家放了一整星期的假。当时我哪里想到这一星期假正好可以给我养病。我也是有点兴奋了,假期的第一个早上我扑腾一下突然就从躺着的状态坐了起来。然而,一坐起来就觉得脑袋嗡了一下。我想是不是早上血糖低啊,赶紧噗通一声,又躺下了。

突然躺下或者起来任何时候都是大忌,很可能就是这个动作引发了我的耳石症,年纪越大越要注意了。不过我当时躺下后过了一会就觉得不晕了,于是又慢慢起了床。之后也没有觉得有什么不正常的。直到中午开车出去取了点东西,在车上我就开始觉得不对劲了,感觉有点晕,但不是发烧头痛的那种晕。当时晕的不严重,也没有影响我办事。回到家之后我跟老婆说我头晕,得躺一会。不躺还不要紧,等我躺下再一翻身,顿时就觉得天旋地转,就好像自己躺在滚筒洗衣机里。

老婆赶紧帮我上网去查资料,结论是我可能得了耳石症,后来医生也证实了就是这个病。

人的耳朵里有一个用于位置感应和调节平衡的器官,包括球囊、椭圆囊和三个半规管。在球囊、椭圆囊里附着着很多像小石头一样的碳酸钙盐结晶,这就是耳石。耳石本来也是帮助人感觉位置移动的。可是在某些情况下,比如遇到剧烈的碰撞等,耳石会从球囊里掉出来,进入半规管。当石头在半规管移动的时候,半规管会发出强烈的信号(本来半规管的信号是用来表示人体移动的)给大脑。大脑受不了这些错误信号的刺激,就会产生强烈眩晕。

还是比较容易区别耳石症和其它眩晕症的。耳石引起的头晕有两个重要特点:

  • 眩晕是由头部的运动造成的,如果持续保持一个位置不动,眩晕就会得到缓解;而做某一个动作的时候,眩晕可能特别明显。即便头部自己没有动,是整个身体运动带动了头部的运动也会引起眩晕。我当时是抬头(也可以是从直立到平躺)这个动作特别的晕。一般发烧等疾病引起的眩晕和动不动关系并不大。
  • 眩晕的时候如果睁开眼,会看到周围的环境在旋转或晃动;这时候眩晕患者的眼球是在快速运动的。这是人的动眼反射机制造成的,正常情况,动眼反射机制会自动调整人眼始终对准一个目标,即便人的身体在运动,脑袋的朝向会变化,但眼镜指向的目标始终不动,就好像是高级相机镜头的防抖功能。但耳石症发作时,人脑袋的位置虽然没变化,但耳朵却一直给大脑发信号,让大脑误以为人脑袋位置变了,于是又自动发信号给眼镜,调整眼球的指向。血流受阻、神经受压迫等造成的眩晕是不会伴有这种眼球运动的。

耳石症本身对身体没有太大的伤害,所以它的正式名中有个“良性”。最多就是比较难受,我眩晕最严重的时候感觉快要把胃都吐出来了。多数的耳石症会慢慢自然恢复,耳石会重新落回到它应该呆的地方去。有几套动作可以引导耳石更快的落回球囊里,不过我感觉对于我的帮助似乎不大,我第一次犯病做了这个回复操,第二次没有做,但两次都是差不多一个星期左右回复了正常。

耳石症是可能会导致其它一些危险的,尤其是现在这样一个快节奏的社会。我第二次耳石症发做的时候,大约是在第一次发病半年后左右,当时也是正在开车。开着开着,突然一阵晕,前面的路就开始旋转起来了。幸好我这次有了经验了,知道犯了什么病,我强行控制住自己把车打开双跳灯然后停在了路边。其实我已经看不清哪是路边了,眼前的东西都在不停的转。好在当时离家比较近,是在一条我非常熟悉的路段上,我凭着感觉也能停的差不多安全。我一直在路边静坐了几十分钟,等眩晕缓解了才慢慢回家。这要是在繁忙的高速上突然犯了病,后果还真难以想象。

查看或添加留言

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

· 阅读需 2 分钟

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

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

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

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

最好还可以:

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

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

2021-12-01 更新:

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

查看或添加留言

很久没写博客了

· 阅读需 4 分钟

今天突然意识到已经很久没有更新过这里的内容了。其实,我也还是偶尔记录自己的想法和生活的,只是这些文字从未公开过。主要有几个原因:

首先,自从有了儿子,原本属于自己的闲暇时光几乎都被他占满了。想要静下心来做些自己的事情,比如写文章,变得越来越难。

其次,能写的题材也减少了。家庭生活方面,随着儿子逐渐长大,也该保护他的隐私了,不能写太多了。而工作、技术方面,自从离开 NI 公司后,我从事的工作项目领域也相对狭窄,尽管有一些心得,但似乎都不是广泛吸引人的话题。就算写出来,可能也不会有太多读者关注。

最关键的一点是,博客的读者减少了。原因有两个:一是我没能提供很多有价值的内容,二是国内外的互联网逐渐分隔,让我失去了很多原本的读者。记得我出国前曾在新浪备份过我的博客,但现在居然无法登录了,因为没有国内的手机号。而其他一些国内网站也因为类似的问题无法访问或者无法发言。在国内则,无法访问 Worldpress (我搭建博客的网站)。我真的不知道自己的文字还能有多少人看到。

然而,今天再次登录博客,发现仍然还有读者在关注我,心里不禁涌上一阵激动!竟然还有人记得我,真是太意外了!有读者提到了一些关于 LabVIEW 的问题,但非常抱歉的是,现如今我已经无法为大家提供帮助了。离开 NI 公司已经快十年,虽然这几年我依然在做程序员,但与测试和自动化控制这一领域的联系已经越来越远。再加上这些年 LabVIEW 的变化也很大,很多知识点早已遗忘。所以,我已经不敢再冒充 LabVIEW 专家了。

不过,最近得知一个好消息:LabVIEW 竟然推出了免费的社区版!这对于我这种纯粹的爱好者来说,无疑是一个重拾兴趣的好机会。或许可以再次在这个领域中玩耍,重温曾经的热情。希望未来有机会与大家重新分享一些心得,或许还能一起探索 LabVIEW 的更多可能性。

查看或添加留言