飞蚊话 发布的文章

视频点此

不管是Windows还是Linux,又或者是macOS,都存在一个字符操作界面——终端,其中有很多直接输入便可使用的命令。那么这些命令都存在哪里了,又为什么可以直接调用呢?

这得益于一个所有操作系统都通用的一个概念:环境变量。终端下可以直接使用的命令都是由名为PATH的环境变量明确的。这个环境变量存储了很多路径信息,只要一个命令的可执行文件被放在了这些路径中,那么在终端中便可以直接通过输入这个可执行文件的文件名来实现直接使用,而无需通过输入绝对路径来调用。

如何知道哪些目录可以实现这一点呢?只需要查看PATH这个变量的值即可。

在Linux中,有很多方法可以实现查看环境变量信息。这里首先推荐一个比较好用的命令export。终端中直接输入即可查看当前用户下所有已经定义了的环境变量;使用export 变量名可以进行单独查看;使用export 变量名="变量值"则可以直接定义一个环境变量的内容。

对于PATH变量,一般来说会包括下面几个路径

  • /usr/bin
  • /usr/local/bin
  • /bin
  • /usr/games #这个是在使用Debian时候发现的。没想到竟然把游戏的可执行文件单独拿出来了…

那有没有办法自定义这个路径呢?

就像前面说的,直接定义即可。比如

export PATH=自定义的路径:$PATH 

这就是自定义PATH环境变量的基本写法。其中:

  • 使用冒号区分不同的路径
  • 路径写入的顺序区分了优先级。越靠前越优先检索使用
  • 一定在最前面或者最后面写上$PATH以保证原本的PATH信息不会被覆盖掉

自定义PATH是比较有用的。比如经常使用单独下载的程序,那么可以定义一个专门存放这些应用的路径,将其添加到PATH中。这样在终端下便可以直接输入程序启动命令来使用,而无需先进入到对应路径再执行,或者想方设法的将程序安装进系统了。而对于Windows,自定义路径可能不太常用,但如果有兴趣,你可以查一查安装python2.7的教程

视频点此

可以说unity桌面是我正经使用Linux后最早接触的桌面环境,也可以算是我最习惯使用的桌面环境之一。而关注unity或者ubuntu的朋友可能知道,ubuntu从18.04开始,其默认的桌面环境切换回了gnome。但在2020年出现了由一个印度小兄弟领导发布的ubuntu unity,旨在提供回原生的unity桌面体验。所以在我发现这个发行版之后,我便在unity的吸引下重新装回了放弃多年的ubuntu。但最终,我还是把ubuntu给换掉了,今天就来简单聊聊其中的原因。

一、优势

无论如何,ubuntu可能也是用户数量相当高的一个发行版,因此很多网上Debian系发行版的教程、可以搜索到的疑难解答实际上都是参照乌班图的软件仓库进行编写的,这样一来在日常使用过程中就可以有相当方便、快捷的网络支持体验。同样的,由于使用人数众多,如果一个软件想兼容Linux,那么一般来说最先得到官方适配的基本就是ubuntu无疑了。

此外,ubuntu背后有公司存在,且基于Debian衍生,所以在寿命、稳定性方面可以信任。除了LTS版本提供更长时间的支持之外,还可以加入ubuntu pro计划以获得更长的维护支持。且如果个人使用的话,这个还是免费的。

更多优势我就不说了,老生常谈。最主要的是我为什么最终换掉了它。

二、劣势

原因只有一个:snap。
Snap是ubuntu自己推出的一种软件包形式,且已经融合在ubuntu中。随着snap的逐渐完善,Ubuntu也在逐步降低对deb软件包的支持力度。而官方更是给出了将在23.10版本中加入snap商城,可能后续加入的应用程序会优先提供snap形式,再适时加入到apt仓库之中。
Snap的优势算是比较明显的,简单来讲就是类macOS组织形式,应用之间相互隔离,依赖版本冲突可以得到很好的解决。
但一个比较致命的问题:snap的服务器在国内没有镜像站点。
是的,即使不使用Linux的朋友都可以猜到个大概了:虽然可以建立连接,但速度太慢了。更不用说时不常的还需要检查并更新snap应用。这很难让人很难坚持下去。

此外,由于snap在程序启动时候相当于建立了一个虚拟的系统环境,这使得程序的启动速度相对传统的方式会减慢不少——当然,可能是因为我的Linux分区还是使用机械硬盘的缘故,如今固态硬盘这个影响可能已经不明显了。

但建立虚拟的程序环境意味着一个问题:系统所有的配置应该都可以映射过去,这样才能保证使用的过程中不会出现什么奇异的问题。但目前的snap分明没能完全顾全这一点。比如我的chrome下载文件默认的保存位置是一个轻易找不到的路径,我当时为了这个路径研究了半天文件夹之间的映射关系。如果是一个没有发现相关规律的用户使用的话,那对snap版本的chrome可能只有一个评价:这个chrome下载会把文件下丢。
另一个比较影响使用的情况:输入法。在我使用的这段时间中有两种经典情况:输入法候选列表不展示、根本无法唤醒中文输入法。这个不多解释,想想就能知道对于中文用户来说,这种程序在使用的时候会有多麻烦。

可能会有朋友说ubuntu还有其他的一些问题,比如版本号更新经常性的更坏掉、经常性的报告系统错误弹窗之类的。但这些是ubuntu在使用snap格式软件包之前就存在的一些问题。既然选择了ubuntu那么说明这些经典问题已经考虑过了,相较于unity,还是unity更香一些。但真的使用起来,发现snap异味完全覆盖过了unity的清新。

当然,snap这些问题可能也是因为unity没有完全适配好,官方版本不会出现。诚然,可能官方对snap的支持会更全面一些,但国内镜像站点不存在就是不存在,而且官方使用gnome桌面,我能有什么特殊的理由一定要选择ubuntu呢?

这纯粹是一篇日常的记录,顺便可以防止自己忘记,当一个备份

在电子信息方面,我自己经常会莫名其妙的解决一些困扰很长时间的奇怪问题——在按照网络上面提供的方法尝试后依然没有任何作用的时候。从以前使用老电脑时候的硬件故障,到后来刚开始接触Linux出现的一些字体之类的配置问题……这种经历怎么形容呢,就是不知道从哪里获得的启发,突然灵光乍现,觉得可能这么搞就可以解决,然后也确实就解决了。不知道看这篇文章的各位有没有过这种类似的经历。

而就在刚刚,同样的灵光乍现,让我解决了我公司系统在我的windows11上面功能不完整的问题。

之前

大多数公司内部的系统什么样子应该有目共睹。一句话形容就是:能用就行。所以我公司合同系统在2010年上线后就几乎没有任何的重构,以至于它只能在IE内核上工作,甚至连新版本IE都不太好正常使用。

更不要说完全停用IE的windows11了。

所以一直以来我都是使用双内核的浏览器进行合同系统的操作,这样至少我可以正常打开合同系统,并且可以使用大多数合同系统的功能。但这其中,上传文件正常使用的前提是需要调整一下Internet设置。这部分其实已经轻车熟路了。

  • Internet选项-安全标签,所有级别的安全等级均拉到最低
  • Internet级别选择自定义,脚本之前的所有禁用项全部启用
  • 确定

但合同定稿按钮,自从使用windows11以来无论如何都没办法使用,所以一直也是借用同事的电脑来完成定稿工作。

曾经有看过F12里边的报错,说是loadXML方法不可用。在网上查也查不到什么有用的办法。全都是说换到IE使用之类的……

我要是能用,还用得着费这劲?而且我已经用IE模式运行了,但该不行还是不行。

今天

但今天又想起来这个事情的时候,突然灵光乍现:我在家用windows7的虚拟机时候,IE进入合同系统的功能就是完整的,那我是不是可以在公司这个双内核浏览器里边把IE版本往前调呢?

  • 进入这个浏览器的设置-高级设置-内核切换设置
  • 找到列表里边的合同系统的地址,右侧直接指定成IE8

再打开合同系统,解决了。

就…很惊喜,但又很平淡。

惊喜的是困扰了得一年多的问题一下子就解决了;
平淡的是……解决方法就是这样,就没了……

视频点此

一说到Linux,就一定会想到终端——无论把它看作优势还是劣势。那么这个终端相对于另外两大操作系统,有没有什么特别之处呢?

说到Linux终端的用处可以说很多,比如安装软件、更新系统、调整配置之类的。但一定程度上,另外两个操作系统的终端程序也可以拥有类似的功能。所以我一直认为Linux终端的优势在于可以快速查看程序出错的原因,这在另外两大操作系统中是比较难做到的。举一个Gnome设置崩溃的例子来看。

表现

点击gnome设置,图形界面会呈现程序启动的相关动画,但并不能展示出设置的窗口。这可以说是非常典型的启动即崩溃问题。通常在macOS和Windows中,对于这种点击后有运行迹象,但就是没有窗口的程序我们可能完全不清楚发生了什么。而对于Linux,我们可以通过终端来运行,快速查看程序到底发生了什么事。

查看原因

直接打开终端,启动gnome设置命令gnome-control-center——当然,如何找到这种启动命令可能也是一个小知识点,以后有机会的话会简单介绍一下。

此时,终端执行的优势就出来了,直接给出了错误信息:(gnome-control-center:15840): GLib-GIO-ERROR **: 13:41:26.403: Settings schema 'org.gnome.shell.app-switcher' is not installed

那么对症下药,补充这个模式就可以了。

但很不幸,这玩意儿貌似没有一个软件包或任何可以搜索到的来源包含这个玩意儿……此时终端的另一个有共识性的优势就体现出来了:直接修改配置。

gnome家族的软件多数都是用gsettings来调整配置的,图形化的软件可以参考dconf。

此时在终端中运行gsettings list-keys org.gnome.ControlCenter,可以看到其拥有的设置项,其中的last-panel,可能是记录了退出设置程序时打开的界面。联想到前一次正常打开时,是点击了多任务标签后直接崩溃的,因此推测由于last-panel记录了最后点击的标签页,再次打开设置时由于直接根据记录定位到了多任务,所以会再次漰溃进而无法启动。

为了验证,获取last-panel的值gsettings get org.gnome.ControlCenter last-panel
看到值为multitasking,确认了上述推测。因此将这个值复位应该即可解决:gsettings reset org.gnome.ControlCenter last-panel

再次打开设置,成功启动。

3.0版本上线!大改版,简约同时更实用!建议一定更新!


我一直很喜欢一种网页风格:没有排版,也没有华丽的装饰,各种文字信息以较高密度呈现在观看者眼前的风格。后来我逐渐意识到,这种风格十分偏向于千禧年前后,匠人手制网页的模样。

在我把Typecho更新之后,曾经的主题便不兼容了。也是在这时候,我发现Typecho自己的主题挺有我说的那种味道的,于是打算直接用默认主题就得了。但渐渐的,我发现默认主题还是多多少少有些缺失的,比如首页直接把文章全文按顺序排列,浏览文章十分不便。所以,我最终决定把官方这个主题打磨一下,让它成为我心目中最理想的,最千禧年风格主题。现在,它来了。

Übermorgen/Typecho Millennium Style主题


一、特性及优势

基于官方主题,原汁原味的简约,完全区分文章与独立页面这两个Typecho的文章形式。在此基础上有着更多优势:

  1. 紧凑的自适应布局,高信息密度、清晰的观感
  2. 亮暗模式,轻点按钮即可实现
  3. 可选置顶文章,公开事项不必担心被新发表内容淹没了
  4. 可选在首页展开最新发布的文章,主次区分更明显。若开启,首页即是文章页
  5. 可选展示指定分类下的最近发布文章列表,条理更清晰,博客主题更凸显
  6. 可选展示随机文章,引流更全面
  7. 可选展示联系方式,全面宣传不再困难
  8. 所有可以看到的图形元素均已font-awesome字符化,包括搜索栏右边的放大镜按钮,加载快人一步
  9. 搜索、归档、分类文章界面半隐效果,增加点击概率
  10. 分类、标签同级展示,另请参阅更直接
  11. 自动划分章节导航,长文定位更方便
  12. 图片点击放大,展示更多细节
  13. 可选友链区域,邻居联系更紧密
  14. 可选自定义页脚,灵活定义页面功能
  15. 文章编辑页可输入原文链接,同公众号“阅读原文”效果

二、安装、设置

2.1版本后,插件TePostViews作为主题推荐插件会在后台弹窗提示。推荐安装激活以获得更完全的体验。

直接前往gitee下载最新发行版,解压到你的Typecho文件夹/usr/theme/中将文件夹重命名为Millennium-style,然后在Typecho后台启用即可。

每次推出新版本时,typecho后台—控制台—外观—设置外观会弹出提示。此时再次前往前面的网页下载最近发行版,解压覆盖即可。

当前,如果你熟悉git操作的话,也可以直接克隆这个工程的master分支。这样每次发出新版本的时候,只需同步一次即可。

现在,可以切换到主题的设置界面进行自定义了。下面详细介绍每一个设置项。

1、首页展示最新文章

若开启,则首页会全文显示最新发布的文章。

2、最近回复

若开启,则侧栏会展示网站内除文章作者外的最近回复内容。

3、分类列表

若开启,则侧栏会展示网站的分类结构。

4、文章归档

若开启,则页脚会展示文章归档板块。

5、随机文章

若开启,则侧栏会展示随机文章板块。

这五个选项对应的效果如图所示。

在选项下面,是一系列自定义功能,相关说明如下。

6、置顶文章

在这里输入文章的cid使其在首页置顶显示,留空则不启用。多篇置顶可以连续输入,通过英文逗号分隔。置顶的文章可以在首页显示标题及一部分文章内容。

获取cid默认情况下是简单的,只需查看文章链接中的数字即可。

如果你有自定义文章slug的习惯,那么也许需要到Typecho控制台-管理-文章下,找到对应的文章后,查看编辑文章的链接,其最后会有?cid=字段,等号后面的数字便是文章的cid了。

使用效果如下图。

注意:推荐输入不超过3篇置顶文章,以获得最佳展示效果。

7、指定分类的最近发布

在这里输入分类的slug,使首页直接展示这些分类下的文章列表,留空则不启用。多个分类可以连续输入,通过英文逗号分割。这些列表将只显示标题而不再显示正文预览。

获取slug也是简单的,直接进入Typecho控制台-管理-分类中查看缩略名一列即可。

使用效果如下图。

注意:推荐输入3的倍数个分类,以获得最佳展示效果。

8、联系我

在这里输入内容以启用“联系我”板块。这里输入的内容结构是所有设置项目中最繁琐的:一行一个社交平台信息,按照社交平台名,链接,图标,用户名的形式输入即可(中间通过英文逗号分隔)。

  • 社交平台名:鼠标放到社交按钮上会浮现出来的名字
  • 链接:如微博、其他平台的主页等,会有对应的超链接地址。有则复制,没有则输#
  • 图标:关联font-awesome。直接输入font-awesome的图标样式即可;若没有则留空(不过font-awesome那么多图标,总会有一个是比较沾边的)
  • 用户名:展示在图标旁的名字。当然也可以使用社交平台的名字而不用用户名

下面举几个例子。

1、微信(有用户名、有图标、无链接

微信,#,fab fa-weixin,stsiao

2、Tg(有用户名、有图标、有链接)

telegram,https://t.me/stsiao,fab fa-telegram,@stsiao

3、灵感创造者(我的另一个站点,无用户名,无图标,有链接)

灵感创造者,https://kanban.bwsl.wang,,灵感创造者

对于站内链接,也可以放在这里。比如增加一个本站RSS订阅按钮:

RSS,/feed,fa fa-rss,RSS

使用效果如下图。

对于手机端,此板块会自动调整至页脚展示。

9、随机文章显示数量

当勾选了随机文章功能,那么可以在这里自定义这个模块显示的文章数量。留空则应用默认值8篇。

10、友链

在此处输入内容以启用“友链”板块。内容结构为一行一个,按照名称,地址格式书写。其中:

  • 中间为英文逗号
  • 逗号前的部分支持HTML语法插入图片等内容
  • 逗号后的地址应以http或https开头

使用效果如下图。

11、自定义页脚

在此处输入内容以启用自定义页脚部分。通过HTML语法书写任何内容。可以是展示在页面最下方的文本,也可以是一段CSS样式表,甚至是一段js代码。

最基本的使用效果如下图。

三、编写文章

1、标题导航

主题拥有标题导航功能。编写文章/独立页面时,只需根据需要设置不同等级的标题样式,发布后即可自动划分文章并在侧栏展示,点击便可跳转至文章对应位置。

注意:此模块仅在电脑端展示

2、阅读原文

类似于微信公众号的阅读原文按钮,在编写文章时,将链接填入编辑页面底部的原文链接处,发布后便会自动在文章底部增加此按钮,点击即可跳转。

注意:此功能仅对文章生效,独立页面填写后不做响应。

那么就说到这儿吧,祝使用愉快。

视频点此

如果你关注过一些国内的for Linux应用的话就会发现,它们之中很多都是通过网页版套壳实现的。对于一些有着非常完善的网页版应用来说,如此方法确实可以在很短时间内打造一款全平台兼容的本地化应用。对于这类操作,Linux下拥有一个小工具来实现——nativefier

这是一个纯粹的终端程序,一行指令即可将一个网页打包成一个全平台兼容的electron套壳应用。可以前往GitHub查看具体内容。这里只介绍基本用法。

一、安装

在很多发行版中都可以直接通过源来安装。对于openSUSE,直接通过opi nativefier即可搜索到对应的OBS源,添加安装即可。

对于源中没有这个软件的,或者Windows、macOS来说,由于此工具由nodejs编辑,直接使用npm install -g nativefier安装即可。

二、基本使用

在安装完成后,便可以直接使用了。

基础命令为:nativefier -n <打包后的应用名称> -p <程序兼容的平台> —-arch <架构> —- weight <窗口宽度> —-height <窗口高度> <网页URL>

如打包微信网页版:nativefier -n WeChat -p Linux ——arch x64 ——width 1024 ——height 768 https://wx.qq.com/

  • 如果想让程序可以后台运行,可以增加参数——tray
  • 如果不想在使用时可以调出chrome的开发者工具,可以增加参数——disable-dev-tools
  • 如果想控制程序在同一时间只能运行一个实例,则增加参数——single-instance

设置好参数后回车,第一次运行会自动获取一个electron的依赖,然后自动开始打包。打包完成的程序会放置在~/<应用名称>-<兼容平台>-<架构>/文件夹下。你可以直接在这个文件夹下执行二进制文件以启动程序,或自己编辑一个desktop文件,将这个打包好的程序“安装”到系统中运行了。