专利发表教程

专利的基本概念

专利三性:新颖性、创造性和实用性

新颖性:

  • 该发明不属于现有技术
  • 没有任何单位或者个人就同样的发明或者实用新型在申请日以前向专利局提出过申请,并记载在申请日以后(含申请日)公布的专利申请文件或公告的专利文件中
  • 全世界范围内

创造性:

  • 与申请日以前在国内外为公众所知的技术相比,该发明具有突出实质性特点和显著的进步

实用性:

  • 该发明能够制造或者使用,并且能够产生积极效果

专利的种类:发明专利、实用新型专利、外观设计专利

  1. 发明专利
  • 定义:指对产品、方法或者其改进所提出的新的技术方案
  • 发明专利分为:产品发明、方法发明
  • 特点:
    • 发明是一项新的技术方案。利用自然规律解决生产、科研、试验中各种问题的技术解决方案,一般有若干技术特征组成。

    • 按照性质划分,发明权利要求有两种基本类型,分为产品权利要求和方法权利要求

      • 产品权利要求包括人类技术生产的物品(产品、设备)
      • 方法权利要求包括时间过程要素的活动,又可以分成方法和用途两种类型。专利法保护的发明也可以是对现有产品或方法的改进
  1. 实用新型专利
  • 定义:对产品的形状、构造或者其结合所提出的适于实用的新的技术方案
  • 实用新型与发明的不同之处在于:
    • 实用新型限于具有一定形状的产品,不能是一种方法,也不能是没有固定形状的产品
    • 对实用新型的创造性要求相比发明较低
  • 产品的形状:指产品所具有的、可以从外部观察到确定的空间形状。例如:对凸轮形状、刀具形状作出的改进,对型材的断面形状的改进
  • 产品的构造:产品的各个组成部分的安排、组织和相互关系。产品的构造可以是机械构造,也可以是线路构造
  1. 外观设计专利
  • 外观设计:
    • 对产品的形状、图案或者其结合以及色彩与形状、图案的结合所作出的富有美感并适于工业应用的新设计
    • 指产品外观的设计方案。与发明或实用新型完全不同,即外观设计不是技术方案。
  • 外观设计专利符合要求
    1. 形状、图案或者其结合以及色彩与形状、图案的结合的设计
    2. 必须是对产品的外观所作的设计
    3. 必须富有美感
    4. 必须是适用于工业上的应用

网站

国家知识产权局

中国专利公布公告

发明专利审批流程

发明专利:受理、初审、公布、实审以及授权五个阶段

实用新型、外观设计专利:受理、初审和授权三个阶段

一般耗时2年,初审1年,实质审查1年

发明专利申请文件

文件

包括5部分:

  1. 请求书:一份表格,用以确定发明和实用新型的名称,发明人姓名等事项
  2. 说明书:对专利做出详细的说明。包括:
    1. 技术领域
    2. 背景技术
    3. 发明内容
    4. 附图说明
    5. 具体实施方式
  3. 说明书附图:通过附图,帮助理解说明书所陈述的内容
  4. 权利要求书:要求专利保护的范围,是申请文件的核心内容
  5. 摘要:技术要点的说明

文件下载

文件100001、100002、100003、100004、110101

网站

请求书

按表格填写基本说明

说明书

  • 技术领域

    • 指发明或实用新型直接所属或直接应用的技术领域
    • 高度概括的介绍发明的应用领域。50-80字。
      • 例1:本发明属于基因功能与应用领域,具体涉及A基因作为药物靶标在筛选治疗B疾病中的应用,以及A抑制剂在制备治疗B疾病的药物中应用。
      • 例2:本发明属于基因工程领域,具体地说,涉及一种XXXXX的基因工程方法。
      • 例3:本发明属于XXXXX的功能与应用领域,具体涉及XXXX代谢中产物A作为XXXXX 的应用。
  • 背景技术

    • 类似论文中的introduction、 基金申请中的研究意义部分
    • 三段式:层层递进的关系,1000-1200字
      • 第一段:临床问题,400字。临床问题意义重大。比如:疾病的严重性,人群数量的严重性。 例如:膀胱癌流行病学数据。
      • 第二段:疾病细分,400字。临床问题的背后因素,某一关键因素。某一疾病下往往会细分。 例如:膀胱癌淋巴转移概述,诊断治疗手段。
      • 第三段:靶分子,400字。专利申请的靶分子。 例如:靶分子的研究背景。
  • 发明内容

    • 包括解决的技术问题、技术方案及有益效果

    例子:

    ​ 为解决上诉现有技术的缺陷和不足,本发明的目的是提供靶分子A作为XXX的应用,可为领域 1,领域2提供XXXX。

    ​ 为实现上述目的,本发明采用的技术方案为:

    ​ 本发明以XXXX(细胞或者动物)为实验对象,通过建立XXXX模型,结果表明XXXX(简述具体 的实验过程和结果)。300字。

    ​ 针对靶分子的上述功能,提供靶分予作为XXXX用于领域1的应用。

    ​ 针对靶分子的上述功能,本发明提供靶分子作为XXXX用于领域2的应用。

    ​ 一种具有XXXX功能的药物,包含靶分子的抑制剂。

    ​ 本发明相对于现有技术具有如下的有优点及效果:

    1. 本发明发现靶分子的新功能,及靶分子具有XXXX的作用
    2. 发明提出靶分于在XXXX中的作用,在制备用于XXXX等方面应用。
  • 附图说明

    • 对附图的详细说明
    • 写作方式可以参考论文的写作
    • 只写文字,没有图
      • 图1是XXXX结果图。A为……;B为……
      • 图2是XXXX结果图。A为……;B为……
      • 图3是XXXX结果图。A为……;B为……
  • 具体实施方式

    • 具体实施方式,详细写出发明如何能够实现,或者实现方式。1000字以上。类似论文中的实验方法和结果部分。

    • 以下实施例用于说明本发明,但不用来限制本发明的范围。

      如果是细胞,说明细胞培养的条件。

      如果是动物,说明动物来源,饲养环境。

      如果是试剂,说明试剂的购买来源。

    • 实施例1动物模型的建立。

      具体实验方法详述(因为在专利中没有文献引用,所以具体方法要写详细)。

    • 实施例2小鼠各项指标的测定。

      具体实验方法详述。另起一段简述实验结果。

    • 实施例3主要实验方法说明。

      具体实验方法详述。另起一段简述实验结果。

    • 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

  • 题目

    • 错误:XXX蛋白及其抑制剂在XXX疾病中的应用
    • 改为:XXX蛋白及其抑制剂在制备治疗XXX疾病的药物中的应用

说明书附图

  • 附图,专利中用到的图并标注它们。这里只有图,不需要附注
  • 可以提升作图taste的三门课程
    • 40周中的套路课,对所讲的文献中作图有详细的讲解。
    • 单元课中GraphPad Prim
    • 大师兄带你修炼科研绘图独家秘籍:有针对科研作图的介绍,软件Photoshop 和 Illustrator

权利要求书

  • 权利要求书,专利要保护的范围。300字左右。

一种A基因在XXXX疾病中的功能,其特征在于体现在A具有XXXX的功能。
权利要求1所述功能的应用,其特征在于A在XXXX方面应用。
权利要求2所述功能的应用,其特征在于A在XXXX方面应用。

摘要

  • 摘要,对整个发明做系统描述,介绍发明的特点和创新点。300字。
  • 格式:
    • 第1句:总述靶分子的应用,以及所属的研究领域。
    • 第2句:总述实验方法和实验结果。
    • 第3句:总述靶分子的机制水平上功能。
    • 第4句:总结靶分子在疾病中的功能。
    • 第5句:靶分子的应用。
  • 例子1:
    • 第1句:本发明公开一种靶分子在XXXX疾病中的功能和应用,属于基因的功能与应用领域。
    • 第2句:本发明以XXXX小鼠为实验对象,通过建立XXXX疾病模型,结果表明与XXXX小鼠对比,靶 分子敲除或者过表达小鼠XXXX疾病变严重,XXXX指标增加显著。
    • 第3句:这些结果表明,靶分子有XXXX的能力,有XXXX的能力 (分子机制上讲)。
    • 第4句:从而发现靶分子在XXXX疾病中的功能,主要体现在其具有能够显著改善XXXX疾病的作用。
    • 第5句:针对靶分子的上述功能,可用于靶分子在制备治疗XXXX疾病的药物。
  • 例子2:
    • 第1句:本发明公开靶分子作为XXXX的应用,属于代谢分子的功能与应用领域。
    • 第2句:本发明中XXXX检测研究表明靶分子有XXXX的能力,在细胞或者动物水平上以XXXX为实验模型,研究靶分子的XXXX的作用。
    • 第3句:结果表明靶分子可以有效的增强XXXX,具有保护XXXX的功能。
    • 第4句:因此,靶分子具有XXXX的能力。
    • 第5句:针对靶分子的上述功能,靶分子可用于在XXXX的应用。

l

QNAP安装Entware

入坑qnap(威联通),在ssh到NAS后,发现没有常用的zsh、git、sudo,这可让用惯了centos,debian系统的老高情何以堪。

一番查阅后,老高发现原来QNAP所使用的系统QTS可以使用Entware,也就是opkg最为包管理系统,这不就简单了,老高以前在OpenWrt上用的就是这个玩意儿!

本篇内容可以让你学会如何在QNAP上安装Entware-ng,以及zsh,git,sudo还有ohmyzsh等常用工具,并且保证他们不会被系统还原!

安装

想要在你的QNAP上安装Entware,可以访问Qnapclub Store - Entware-ng,找到对应的架构的下载地址。

比如老高的机器是TS-551,和TS-453Bmini一样是x86_64,所以下载TS-NASX86_64版本,对应下载链接为https://www.qnapclub.eu/en/qpkg/model/download/11369/Entware-ng_0.97.qpkg

最后我们ssh到NAS中,执行下面的命令:

1
2
3
4
5
6
7
cd /tmp
# 下载
wget https://www.qnapclub.eu/en/qpkg/model/download/11369/Entware-ng_0.97.qpkg
# 执行安装
sh Entware-ng_0.97.qpkg
# 最后删除安装包
rm Entware-ng_0.97.qpkg

这样就完成了安装过程。

使用

以安装 zsh + oh-my-zsh 为例

1
2
3
4
5
6
7
8
9
# 首先更新opkg
opkg update
# 安装zsh
opkg install zsh
# 安装git
opkg install git-http

# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

到这里我们就完成了一半了!为什么是一半呢?因为每次重启时,文件系统就会被还原,所以我们需要在系统加载的时候HACK一下,通过观察挂载的规则,老高发现/etc/init.d/Entware.sh这个脚本可以为我所用,所以后面我们就改一下这个脚本!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
l /etc/init.d/Entware.sh
/etc/init.d/Entware.sh -> /share/CACHEDEV1_DATA/.qpkg/Entware/Entware.sh


# 首先,我们需要把oh-my-zsh的配置放在硬盘中,否则重启就会被删除
# 这里假设硬盘路径为/share/CACHEDEV1_DATA/
mkdir -p /share/CACHEDEV1_DATA/.zsh
cd ~
mv .zsh_history .zshrc .oh-my-zsh /share/CACHEDEV1_DATA/.zsh

## 最重要的一步!
vi /share/CACHEDEV1_DATA/.qpkg/Entware/Entware.sh

## 找到start位置,在创建link的时候加入以下代码

/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.zshrc /root/.zshrc
/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.oh-my-zsh /root/.oh-my-zsh
/bin/ln -sf /share/CACHEDEV1_DATA/.zsh/.zsh_history /root/.zsh_history

hack启动脚本

l

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
for line in `cat apple.txt`
# 将 cat apple.txt的输出作为字符串,for逐个读取赋值line变量
#``为反引号
#也可以使用取值符号$(cat apple.txt)替代`cat apple.txt`
do
mkdir $line
#取line值,执行新建文件夹命令
done

l

编号 类型 备注
01 无人机
02 博客
03 office
04 git
05 docker
06 java
07 macos
08 nas
09 shell
10 sql
11 ubuntu
12 正则
13 算法
14 终端
15 设计模式
16 整理
17 博客配置
18 photoshop
19 口才
l

文档整理总结

工作中之后我参考了公司的文件管理方法,再借鉴了图书馆管理图书的方法,创建了一套自己的方法,非常简单但行之有效,我已经稳定使用了5年,再也不为文件混乱而焦虑了。

我的方法如下:

一、文件/文件夹前面加数字前缀实现排序。

毕业后我进入的第一家500强外企,我发现他们的公共盘上的文件夹前面都有一个数字前缀,如

  • 01_HR
  • 02_admin
  • 03_Fin
  • 04_Engg
  • 05_Sales

开始觉得多此一举,后来才发现真是绝绝子啊,

第一、有了这个前缀,文件夹就不再是按首字母顺序排了,而是你的编号来排,这样就可以人为固定文件夹的顺序,比如HR虽然首字母比Engg要低,但前面加上01 就可以让自己排在第一了,这样方便管理,也不会因为插入新的文件夹而打乱顺序了。每个部门只要记住自己部门文件夹所在位置,每次进去时就不用找半天了。

第二、这个前缀长度是固定的,所有的文件夹视觉上非常整齐而统一,不因为因为文件夹名字长短不一而产生混乱感。

于是我也应用在自己的文件管理上,所有文件夹都进行编号,经常使用的文件夹编号排在前面,不经常使用的排在最后面,再也不会被首字母打乱了。

img

这样是不是整齐很多了?

我没有采用下划线的方法隔开前缀,因为在中文输入法状态下输入下划线不方便,所以我用了空格隔开,大家也可以按照自己的偏好用小数点、连字符、字母作为分隔符。

二、文件加时间后缀。

我以前没这个习惯,不同版本的文件重新改个备注名就完事,但版本一多,时间一久,就分不清谁是谁了。

后来我发现公司的windchill系统上下载的文件,都会自动加一个时间后缀(上传的时间),如:

  • project_checklist_20220523

这样的好处是下载下来永远不会乱,系统会自动按照时间顺序排列,而你也知道这个文件是什么时候创建的,方便识别和追溯。

后来我在自己创建文件时,也加上时间后缀,发给别人修改后传回来,我又会加上最新的时间后缀,这样永远知道哪个版本是最新的,这是个很好的习惯,大家一定要保持。

发给客户的文件如果都加上一个时间后缀,会显得专业很多。

三、不要嵌套太多子文件夹,两层最好,最多三层。

大家想象一下,在图书馆里找书是不是很方便,不需要翻箱倒柜?图书馆的图书分类虽然也很详尽,比如有5个大类,22个小类,小类下面还有分类,但所有图书都是展示在书架上的,而不会在大书架里嵌套小书架,你要找什么图书一眼扫过去就能找到,就算是冷门的图书你也有机会看到,不会忘记它的存在。图书和书架所在的区域固定好了是不会乱跑的,上一次放在哪里,你下一次又回到熟悉的地方去找就能很快找到。

电脑里的文件可以分门别类,但也不要嵌套太多层子文件夹,很多人由于文件越来越多,分类越来越细致,会嵌套N多层子文件夹,我曾经嵌套就过七层文件夹,找文件时要一层一层进去,非常麻烦,后来我改成了以两层文件夹为主的结构后,效率大大提高。

所有文件夹,甭管它属于哪个大分类,全部都在最外层。

比如,之前我的“学习资料”文件夹里,有下面这么多个子文件,是为了分门别类用的,这样分得太细:

  • Excel学习
  • PPT学习
  • VBA学习
  • 电子书
  • 英语学习
  • 工作相关

每个子文件夹里的又会有自己的子文件夹,如:

学习资料\工作相关\MiniTab教程\MiniTab使用教学\XXXX.PPT

如果要打开这个PPT,要进入四层文件夹才能找到,非常低效

正确的做法是取消这些嵌套文件夹,直接把所有子文件夹放到外面来,然后用数字前缀归类。

例如:

img

前缀的第一个数字是大类,例如:

  • 01前缀表示工作相关的学习
  • 02前缀表示VBA编程学习
  • 03前缀表示英语学习
  • 04前缀表示电子书

也可以按照A、B、C、D字母排,看自己的喜好。

这些编号自己心里清楚就好,下次要添加新的资料,参考和它同属一类的文件夹进行编号即可,它们就可以自动放在一起了。

前缀的第二个的数字来实现大类里的内部排序,如果你想要谁排在前面就修改它的序号即可。

这里会有一个问题,系统默认是folder和folder排列一起,file和文件file排列一起,单个file不会参与folder的排序,这样有单个file时,排序就会混乱,怎么办呢?

这里有一个小技巧,就是给单独的file建立一个folder,里面只装这个file,让它强制参与folder的排序就OK了。

比如上面的04文件夹,如“小米生态链战地笔记”,其实原本是一个pdf文件,我也给它建了一个文件夹,这样就可以整整齐齐排在文件夹序列里了。

通过这种敞开式的方法,所有文件夹都是在最外层,一目了然,位置也是固定的,找起来也非常方便。

后期要维护的话,手动修改前缀就可以调整排序,如果要大规模调整的话可以借助文件批量命名软件(如renmaer)来修改。

但是如果文件越来越多怎么办,这个列表岂不是越来越长? 不用担心,每个大文件夹里只放近期用得着的文件,如果只是收集的资料,暂时不会用到,就要移到“参考资料&素材“或者”存档资料“里去,这部分内容我下面会说。

四、全盘文件大分类

为了避免频繁建立N多新文件夹,我们需要给所有文件夹进行分类,分类的方法有很多,有的人是按照文件类型排序,如视频、音频、图片、电子书、教程,但这样分仍然会很乱,比如你自己手机拍的照片和网上下载的图片,都放在图片文件夹里吗?显然不是,我建议按照用途来分,同一个用途下,不管是什么类型的文件都可以放在一起,这样符合人的直觉。

我的文件只分以下八大类,而且全部都在C盘根目录下:

img

不要担心和C盘的系统文件有干扰,因为有数字编号,这些文件始终是排在最前面的。

为什么在C盘根目录? 因为我电脑不分区,只有一个C盘,大部分公司的电脑也不分区的,都2202年了,电脑就别再分区了吧,现在的windows系统就算是重装文件也不会丢失。

如果还不明白,看看这个问题下所有的回答:

01 工作目录

所有正在处理或者待处理的工作都在这个文件下,包括公司的工作,个人的私活,生活杂事,比如计算房贷,制定个人计划、打官司、帮别人写资料等等等等。

这样的好处是一点去就可以看到所有的待办事项,避免遗忘,可以统一处理,不需要在多个文件夹里反复横跳。

这里面只有一层子文件夹,也用01….02….来给文件夹编号分类,我还会在文件前加上创建时间,这样就很容易知道是哪一天开始处理的,时间久了就有紧迫感。

比如

img

这里的文件迟早会越堆越多,这个列表就会变得很长,越积越多我们心里也会有压力,就会督促我们及时处理,这时候我们要及时把已经处理完的文件移动到 “08 存档资料”里。

记住,始终要把工作目录里的文件夹控制在一定数量,做完的马上移走。

02 学习资料

放一些学习教程,如职场技能学习,英语学习、法律学习等等,同样也只建立一层子文件夹,参考上述第二点。

img

03 参考资料&素材

这里放一些“01 工作目录”文件夹可能需要用到参考资料和素材,这是你从事工作的原材料。比如网上下载的模板、表格、图片、视频、字体,以及一些技术资料、标准规范、法律文件等等。比如设计师和视频创作者一定会下载大量的图片、视频等素材,这些资料就放在这里,而不要放在图片、视频文件夹里。

注意区分参考资料和学习资料的区别,前者是指你不会去专门去学习,只是有需要时可能查阅的资料,后者是你会认认真真学习的资料。

比如汽车行业标准《IATF16949:2016质量管理体系汽车生产件及相关服务件组织应用ISO9001:2015的特别要求》,既可以放在“02 学习资料”里,也可以放在“03 参考资料&素材”里。如果你打算全文好好学习一遍,那就放在“02 学习资料”,而你不打算学习,只是存档下来备查,就放在“03 参考资料&素材”。

04 视频

放一些电影、美剧等影视资料,是用来娱乐的,因为这些文件体积比较大,而且会经常看,所以专门建个文件夹。

这里的视频不包括自己手机拍摄的视频,也不包括学习教程的视频,纯粹只是为了娱乐而看的视频。

自己手机拍的视频要放在“05 相册”里,学习教程的视频放在“02 学习资料”里。

这个文件夹里就不需要按照美剧、电影等类别建立子文件夹了,而是直接把所有剧集放在最外层,方便查找。

05 相册

自己手机拍摄的图片、视频放在这里面,但不包括网上下载的图片,这些图片应该放在“03 参考资料&素材”里。

自己手机拍摄的图片非常多,有几百甚至上千张,要按年和月份建立文件夹。

我现在是按年建立第一层文件夹,如

  • 2019年
  • 2020年
  • 2021年
  • 2022年

然后里面再按拍摄的日期+主题建立子文件,比如

  • 20190518 贵州旅游
  • 20191220 公司年会

而不是散乱地铺开,不然每次打开这个文件夹的速度让你怀疑人生。

我最近考虑把外面的年文件夹取消,减少层级,让里面的子文件夹一目了然。

06 软件工具

这里不是软件的安装目录,而是放一些大型软件的安装包,如office, ProE等等,免得重装时要去下载,以及一些绿色的软件,比如字幕转换助手、Renamer(批量改名工具),everything(迅速查找文件工具),Sketchup(快速建模软件),Minitab(统计软件)等等。

不要放很容易找到的软件,比如微信PC版,QQ,Chrome浏览器等等,需要的时候直接去官网下载最新版即可。

07 个人重要资料

这里放一些身份证复印件、户口本复印件、毕业证复印件、四六级复印件、房产证复印件、银行卡复印件、保险合同、劳动合同(如有电子版)、offer,体检报告、个人简历等等。

这些资料最好集中存放,找的时候方便,也建议在云端保存,随时随地都能找到。

08 存档资料

用于存放暂时不会用到,但以后说不定有用的文件,例如如“01 工作文件”中已经完成的工作,以及“02 学习资料”里已经学习完资料,或者存着备用,暂时不会学习的资料。

在这里建以下两个文件夹

  • 01 存档-工作文件
  • 02 存档-学习资料

记得前面要加上“存档“避免和工作目录的文件混淆

但不是什么文件都往里扔,要分情况:

一、如果已经完全失去保存的价值的文件,就断舍离,直接删了,不要有收藏癖,比如一套教程学完,觉得一般般,以后也不会看了,就直接删了。

二、如果稍微还有一点价值的文件,如果工作邮件、报表,怕以后还会需要,就存档。

五、桌面建立“临时”文件夹

很多人习惯把桌面当做临时存放文件的地方,时间久了会让桌面铺满文件,非常乱。

不妨在桌面建立一个”临时“文件夹,把暂时不知道放哪里的文件先放进去,这样可以让桌面保持清爽干净。

比如你在写资料,网上查的资料有些是压缩包或者pdf,必须要下载下来才能看到,你可以先下到“临时”文件夹里,用完即删,就算不删暂时先放着以后有时间再处理,这样就不会把乱七八糟的资料堆满桌面。

l

编号 类型 备注
01 无人机
02 博客
03 office
04 git
05 docker
06 java
07 macos
08 nas
09 shell
10 sql
11 ubuntu
12 正则
13 算法
14 终端
15 设计模式
16 整理
17 博客配置
18 photoshop
l

word技巧

正则替换

  1. 替换汉字之间的空格
1
2
查找:([!^1-^127]) ([!^1-^127])
替换:\1\2
  1. 删除英文字母和非英文字母之间的半角空格
1
2
3
4
5
【查找】:([A-Za-z])(^32@)([!A-Za-z])

【替换】:\1\3

注:使用通配符
  1. 删除非英文字母和英文字母之间的半角空格
1
2
3
4
5
【查找】:([!A-Za-z])(^32@)([A-Za-z])

【替换】:\1\3

注:使用通配符
  1. 删除中文字符(含符号)之间的单个半角空格
1
2
3
4
5
6
7
【查找】:

([一-龥,、。?!…;:——‘’“”……()【】《》·~@#%&—])(^32@)([一-龥,、。?!…;:——‘’“”……()【】《》·~@#%&—])

【替换】:\1\3

注:使用通配符
  1. 删除非数字与数字之间的单个半角空格

    1
    2
    3
    4
    5
    【查找】:([!0-9])(^32@)([0-9])

    【替换】:\1\3

    注:使用通配符
  2. 删除数字与非数字之间的单个半角空格

    1
    2
    3
    【查找】:([0-9])(^32@)([!0-9])

    【替换】:\1\3
  3. 删除多余空白行|段首空格|段尾空格

    1
    2
    3
    4
    5
    1、删除段首空格:^p^p,替换为:^p,全部替换;
    2、删除段首空格:(^13)(^32@),替换为:\1,全部替换;
    3、删除段尾空格:(^32@)(^13),替换为:\2,全部替换;

    注:使用通配符
  4. 匹配中文

  • 方法一

在word中匹配中文可以用[一-龥],其中龥(读yu),要用微软拼音才能输入,用紫光等其它拼音找不到这个字。如果用“颌”匹配不完全的。捕获用英文括号括起来,引用从左到右依次用\1, \2, …… 以此类推

word中排除字符和php不同,而是使用英文感叹号!,例如[!一-龥]匹配所有非中文字符。
word匹配多个字符也和php不同,使用的是@,例如[一-龥]@匹配0个或多个连续中文字符。

  • 方法二

匹配中文字符的正则表达式“[\u4e00-\u9fa5]”与
匹配双字节字符(包括汉字在内) “ [^\x00-\xff]”,该如何在MS Word中(变通)使用?

“实践是检验真理的唯一标准”的这句话呢? 为啥不能动动手呢?!
刚才试了一下,完全可以用,只要稍稍改动一下即可.
[\u4e00-\u9fa5]与[^\x00-\xff] 分别改为 [!\u4e00-\u9fa5]与[!\x00-\xff].

另有说法:用这个就可以了[!^1-^127]

WORD中的字符串限定

“<”表示字符串的开头,“>”表示字符串的结尾,“<祖国>”实际上表示对查找的内容进行严格的限制,或者也可以设置为“<祖国”,但“祖国>”则不允许使用。

通配符


任意单个字符:“?”可以代表任意单个字符,输入几个“?”就代表几个未知字符。如:输入“? 国”就可以找到诸如“中国”、“美国”、“德国”等字符;输入“???国”可以找到“孟加拉国”等字符。

img

任意多个字符: “*”可以代表任意多个字符。如:输入“*国”就可以找到“中国”、“美国”、 “孟加拉国”等字符。

指定字符之一: “[]”框内的字符可以是指定要查找的字符之一,如:输入“[中美]国”就可以找到“中国”、“美国”。 又如:输入“th[iu]g”,就可查找到“thigh”和“thug”。 输入“[学硕博]士”,查找到的将会是学士、士、硕士、博士。

img

指定范围内的任意单个字符: “[x-x]”可以指定某一范围内的任意单个字符,如:输入“[a-c]mend”的话,Word查找工具就可以找到“amend”、“bmend”、“cmend”等字符内容。

排除指定范、排除指定范围内的任意单个字符: “[!x-x]”可以用来排除指定范围内的任意单个字符,如:输入“[!a-c]”的话,word程序就可以找到“good”、“see”、“these”等目标字符,而所有包含字符a、b、c之类的内容都不会在查找结果中出现。

指定前一字符的个数:“{n}”可以用来指定要查找的字符中包含前一字符的个数,如:输入“cho{1} se”就是说包含1个前一字符“o”,可以找到“chose”,输入“cho{2}se”就是说包含2个前一字符“o”,可以找到, “choose”。

指定前一字符、指定前一字符数范围:“{x,x}”可以用指定要查找字符中前一字符数范围,如:输入“cho{1,2}”,则说明包含前一字符“o”数目范围是1-2个,则可以找到“chose”、“choose”。

img

一个以上的前一字符: “@”可以用来指定要查找字符中包含一个以上的前一字符,如:输入“cho@se”,就可以找到, “chose”、“choose”等字符。

指定起始字符串:“<”可以用来指定要查找字符中的起始字符串,如:输入“<ag”,就说明要查找的字符的起始字符为“ag”,可以找到 “ago”、“agree”、“again”等字符。输入“<te”的话,可能查到“ten”、“tea”等。

指定结尾字符串: “>”可以用来指定要查找字符中的结尾字符串,如:输入“er>”,就说明要查找的字符的结尾字符为“er”,可以找到 “ver”、“her”、“lover”等等。输入“en>”, 就说明要查找到以“en”结尾的所有目标对象,可能找到“ten”、“pen”、“men”;输入“up>”,就说明要查找到以“up”结尾的所有目标对象,例如会找到“setup”、“cup”等等。

经典案例

相关的正则表达式

^&:用于替换框,表示引用查找框的全部内容;

^11:手动换行符,等于通配符模式下的^l;

^13:换行符,等于通配符模式下、只能在替换框使用的^p;

^32:半角空格;

^?:任意单字符,等于通配符模式下的?(比较:*表示任意字符);

^#:任意单数字,等于通配符模式下的[0-9];

^$:任意单字母,等于通配符模式下的[a-zA-Z];

^w:换行符以外的所有空白区域;

^c:用于替换框,表示剪贴板上的内容;

[字符1字符2]:字符1或字符2;

[m-n]:序列m-n中的任意1个字符;

[!m-n]:序列m-n之外的任意1个字符;

[!字符1字符2]:字符1字符2之外的任意1个字符;

[^1-^127]:表示任一西文字符;

[!^1-^127]:表示任一中文字符;

{n}:n个前1字符或前1表达式;

{n,}:n个以上前1字符或表达式({1,}等于@,表示1个以上前1字符或表达式);

{n,m}:n到m个前一字符或前一表达式;

\通配符:引用通配符本身;

( ):表达式引导符,用于查找框,是为了在替换框中,用\n的形式来引用;

\n:与( )呼应,在替换框中使用,表示引用查找框中第n个表达式的内容;

<:句首引导符;

>:句尾引导符;

@:表示一个以上字符;

将查找对象设置格式:定位到替换框/设置格式/替换;

运用实例

准备:粘贴网页内容时,最好是选择性粘贴-无格式文本,以清除各种混乱格式。

1.清除空行:不选使用通配符;查找^p^p,替换为^p

2.清除空白区域:不选使用通配符;查找^w,替换为空值

3.删除特定行:使用通配符;查找^13特定内容^13,替换为^p

4.将数字中的句号替换为小数点:查找([0-9]{1,})。([0-9]{1,}),替换为\1.\2([0-9]{1,}表示1位及以上数字,\1和\2引用查找中的第1、2对括号内的表达式)

5.清除多余的换行符:

语法——勾选使用通配符。查找:([..,,、 ])^13@,替换为:\1

说明——[..,,、 ]为非句尾分隔符,\1引用第1对括号内的表达式[..,,、 ]。

6.清除重复内容:

准备——查找^p,全部替换为^p^p;全选文档或Ctrl+Home定位到文首。

语法——勾选使用通配符:

查找:(<[!^13]^13)()\1,替换为:\1\2(其中[!^13]*也可用[!^13]@或 [!^13]{1,} 来代替) ;

或:查找(^13[!^13]@^13){2,},替换为\1;

或:查找(*^13){2,},替换为\1;

7.将不在行首的选项另起一行:

语法——勾选使用通配符。查找:!^13[..、 ];替换为:^p\1.

8.将不在行首的题号另起一行:

语法——勾选使用通配符。查找:!^13[..、 ];替换为:^p\1.

9.将不连续题号重新编号:

在Word中,Ctrl+F9>>输入与代码SEQ A>>选中域>>剪切

>>Ctrl+H>>查找[0-9]@[. 、:.],替换为^c>>F9更新域

word页码

分页符作用:重置开始页码

插入->页码->判断是否链接到上一页

word单页横向

页面开始位置插入2个分页符,再设置该页横向

插入黑色实心方块

  1. 打开需要操作的WORD文档,选中相关小方框,点击插入选项卡的“符号”,并选择“其他符号”。

  1. 在Wingdings2中找到并点击选择全黑的小方块,然后点击插入即可。

  1. 返回主文档,发现WORD中把小空格方框填黑操作完成。

批量修改图片大小

  1. 方法一

打开VBA编辑器(也可直接按【Alt+F11】快捷键),新建模块,然后将下面的代码复制粘贴到窗口中。

1
2
3
4
5
6
7
8
9
10
Sub FormatPics()
Dim Shap As InlineShape
For Each Shap In ActiveDocument.InlineShapes '嵌入式插入的图片
If Shap.Type = wdInlineShapePicture Then
Shap.LockAspectRatio = msoFalse '不锁定纵横比
Shap.Width = CentimetersToPoints(10) '宽20CM
Shap.Height = CentimetersToPoints(7) '高7CM
End If
Next
End Sub

然后保存宏,关闭窗口。再运行宏即可批量调整图片大小。

  1. 方法二

F4(mac版CMD+Y),重复操作,图片数量不多的时候,批量修改

  1. 方法三

doc版本才能用,设置选择“选择多个对象”,并且需要将图片都改成“非嵌入”的图片。(不实用)

批量修改图片居中

1
查找替换窗口,查找框,输入:^g,替换框,格式:段落选择为居中

批量图片后加回车

1
查找替换窗口,查找框,输入:^g,替换框,输入:^&^p

批量图片形状悬浮转嵌入

添加宏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub 形状悬浮转嵌入()
Dim i As Integer
Dim sp As Shape
Dim allConv As Long

allConv = MsgBox("转换所有形状(如文本框、矩形)[是]" & vbCrLf & "仅转换图形[否]" & vbCrLf _
& "退出程序[取消]", vbInformation + vbYesNoCancel + vbDefaultButton2, "被转换类型")

If allConv = vbNo Then
For Each sp In ActiveDocument.Shapes
If sp.Type = msoPicture Then
sp.ConvertToInlineShape
i = i + 1
End If
Next
ElseIf allConv = vbYes Then
For Each sp In ActiveDocument.Shapes
sp.ConvertToInlineShape
i = i + 1
Next
Else
Exit Sub
End If

MsgBox Format(i, "完成,共转换了0个形状")
End Sub

批量改英文数字为times new roman

  1. 选择 编辑→替换 界面。在“查找内容”文本框中输入”[0-9a-zA-Z]”,表示查找所有数字及大小写字母。选择 高级→使用通配符,表示输入的查找内容为通配符,而不是普通文本。
  2. 选中“替换为”文本框。选择 高级→格式→字体→西文字体,修改为 Times New Roman。
l

将Roon引入我的听音系统的一些经验

系统迁移

我对之前的听音系统还是比较满意的,我并不是发烧友,当系统的音质能达到一定程度,剩下的就是音乐欣赏的事情了。
这个系统我用了很多年,也没打算做什么调整。
试用了Roon后,我比较喜欢它的和音乐管理,关联,搜索,流媒体音乐深度集成等特性,就购买了帐号,正式将Roon引入了我的听音系统,并归一化了所有的终端。

我之前听音系统的网络拓扑

我之前的听音系统终端并没有归一,音频的流动主要以DLNA为主,因为解码器的Bridge卡作为Render,内部通过I2S输入解码板,效果非常好,我又不想折腾各种USB,同轴,光纤的连接,线材不菲且完全不在我的知识范围内。

群晖NAS作为Media Server, 解码器,Mac软件,智能音箱作为Render,电脑、手机和Pad的软件作为Browser和Controller

img

引入Roon后听音系统网络拓扑

Roon的帐号挺贵的,加上我对原来的硬件还算满意,所以想最大限度的利用,思想就是用Roon Core管理音乐,同时将Roon的RAAT协议都转为DLNA,复用现有的设备。 电脑、手机、平板的客户端都统一到Roon Remote。

感谢philippe开发的SqueezeBox桥接到Upnp的软件squeeze2upnp,使得我复用原有DLNA系统的想法成为了可能,而且他对待用户的反馈是否友好,耐心解答并能很快做出修改。

img

安装Roon

  1. 在这个网站下载群晖NAS的套件 : https://roononnas.org/de/synology-2/
  2. 在共享文件夹中创建一个名字叫”RoonServer”的共享目录
    强烈建议使用SSD安装Roon,因为Roon服务器的随机访问速度很关键,我的NAS没有SSD安装槽位,只能通过USB 3.0的盒子接入SATA3固态硬盘。
    如果接入外置存储,将外置存储的名字改为RoonServer

img

  1. 选择手动安装套件,安装过程比较长

img

手机,PC, MAC, Pad的客户端可以参考官网安装:
https://roonlabs.com/downloads

以Windows为例,在PC上启动Roon,就回发现群晖NAS的Core,连接就可以使用

img

如何为Roon增加DLNA输出

Roon本身不支持输出,但是支持Squeezebox设备(就是LMS(Logitech Media Server)体系)

下图就是在Roon设置中打开对squeezbox的支持。

img

打开SqueezeBox设置

接下来的思路就是做一个桥,将Roon使用Squeezebox协议输出的音频转成DLNA的协议

使用这个软件实现:Squeeze2upnp,他的目的就是将DLNA设备变成SqueezeBox设备

img

软件github地址:https://github.com/philippe44/LMS-to-uPnP
里面有下载地址和提供支持的论坛地址

安装

安装非常简单,从github网址给出的下载网站下载最新的安装包解压即可。

!!!重要,需要安装1.49.8之后的版本,这之前的版本不支持Huawei Sound,我和作者squeeze2upnp的作者philippe反馈后并提供日志后,他经过修改,新出了版本用于支持Huawei Sound

安装包解压后有一个Bin目录,所有平台的可执行文件都在里面。

1
2
3
4
5
ls ./Bin
cc32160mt.dll libmad-0.dll libopusfile-0.dll pthreadBC2.dll squeeze2upnp-armv5te-static squeeze2upnp-bsd-x64-static squeeze2upnp-ppc-static squeeze2upnp-x86 ssleay32.dll
libeay32.dll libogg-0.dll libsoxr.dll squeeze2upnp-aarch64 squeeze2upnp-armv6hf squeeze2upnp-osx-multi squeeze2upnp-sparc squeeze2upnp-x86-64
libfaad2.dll libogg.dll libvorbis.dll squeeze2upnp-aarch64-static squeeze2upnp-armv6hf-static squeeze2upnp-osx-multi-static squeeze2upnp-sparc-static squeeze2upnp-x86-64-static
libFLAC.dll libopus-0.dll libvorbisfile.dll squeeze2upnp-armv5te squeeze2upnp-bsd-x64 squeeze2upnp-ppc squeeze2upnp-win.exe squeeze2upnp-x86-static

尽管Squeeze2upnp是LMS的一个插件,但是他并不依赖LMS,可以独立运行。解压后在Bin目录下后缀为_static的可执行程序都是独立执行程序

Squeeze2upnp支持Windows, OSX, or Linux x86/64, ARM and OSX

可以从可执行的程序名中看出哪个可执行程序对应什么平台。

例如树莓派,你可以选择 : squeeze2upnp-armv6hf-static
例如群晖X86 NAS, 你可以选择 : squeeze2upnp-x86-64-static

对于Linux,对应你平台的执行文件需要增加可执行属性,例如

1
chomd a+x squeeze2upnp-x86-64-static

以下描述以都以群晖NAS为例,其他的平台将命令中的可执行程序替换为对应平台的执行程序即可。

DLNA设备发现

对于第一次使用,或者希望重新创建一个配置文件,需要执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
./Bin/squeeze2upnp-x86-64-static -i config.xml
[22:18:38.897023] main:1756 Starting squeeze2upnp version: v1.49.6 (Feb 13 2021 @ 14:45:36)
[22:18:38.904985] main:1764

!!!!!!!!!!!!!!!!!! ERROR LOADING CONFIG FILE !!!!!!!!!!!!!!!!!!!!!

[22:18:38.943266] Start:1518 Binding to 192.168.1.100:49152 (http:0)
[22:18:39.363148] AddMRDevice:1405 [0xc41840]: adding renderer (HUAWEI Sound-0286)
[22:18:39.363354] AddMRDevice:1418 [0xc41840]: cannot get mac HUAWEI Sound-0286, creating fake fcceaf23
[22:18:39.371278] MasterHandler:1036 [0xc41840]: subscribe success
[22:18:39.395668] AddMRDevice:1405 [0xc43a58]: adding renderer (LIVINGROOM)
[22:18:39.395813] AddMRDevice:1418 [0xc43a58]: cannot get mac LIVINGROOM, creating fake 13a64ae6
[22:18:39.428824] MasterHandler:1036 [0xc43a58]: subscribe success
[22:19:00.344578] Stop:1540 stopping squeezelite devices ...
[22:19:00.344673] Stop:1544 terminate update thread ...
[22:19:00.344770] Stop:1549 terminate main thread ...
[22:19:00.344824] Stop:1553 stopping UPnP devices ...

等程序执行完,就会生成一个基础配置文件(config.xml,这个名字可以按照你的指定更换),里面包括默认配置和发现的你的局域网的DLNA设备。
注:你的DLNA Render设备需要打开才能被发现并生成配置。

其中…段是针对你所有设备的通用配置

每个发现的设备都有一个…段,你可以在段中设置和common中相同的参数,这个参数会针对这个设备覆盖common参数。

以我的设备为例,生成的设备配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<device>
<udn>uuid:b8aabe2db4df5481eb8b4f4cf3f302eac9a1539192127404166af840a41a0945</udn>
<name>HUAWEI Sound-0286</name>
<friendly_name>HUAWEI Sound-0286</friendly_name>
<mac>bb:bb:23:af:ce:fc</mac>
<enabled>1</enabled>
</device>
<device>
<udn>uuid:9166ce01-e4b5-4d56-8a1a-6a031b3b416b</udn>
<name>LIVINGROOM</name>
<friendly_name>LIVINGROOM</friendly_name>
<mac>bb:bb:e6:4a:a6:13</mac>
<enabled>1</enabled>
</device>

其中LIVINGROOM是我客厅的PS Audio PWD解码器,而HUAWEI Sound-0286则是卧室的Huawei智能音箱

接下来要对config.xml做一些简单的配置修改。例如, 在”common”段设置了设备最大支持48Khz采样率, 但是如果你的设备的最大采样率是192Khz,你可以在”device”段进行覆盖:

1
2
3
4
5
6
7
8
9
10
<common>
...
<sample_rate>48000</sample_rate>
...
</common>
<device>
...
<sample_rate>192000</sample_rate>
...
</device>

尽管根据测试华为智能音箱支持24bit/192Khz,但是华为给出的规格是24bit/96Khz,所以建议还是把Huawei Sound的采样率设置为96Khz

每个被发现的设备的”enable”属性都是1,表示会为这个设备生成一个桥设备,在Roon设置里面的音频设备列表展现, 如果你不想在Roon中使用这个设备,就将enable设置为0.

“device”段里面有一个有个属性是DLNA Render的标识,类似:

1
<mac>bb:bb:e6:4a:a6:13</mac>

这是这个设备的标识,后续发现设备时,设备mac地址和这个段相同,就不会添加新的设备,并使用这个”device”设置的属性进行处理。

!!!!!!最重要的一点: 将roon_mode属性设置为1,否则Roon下可能不工作

1
<roon_mode>1</roon_mode>

!!!!! **另外重要的一点,需要在Huawei Sound的”device”段中增加以下属性,否则会不能播放下一首,或者播放进度条不走

1
<accept_nexturi>1</accept_nexturi>

后续有新设备发现,squeeze2upnp会为新设备增加一个device段到配置文件。如果你不想自动增加新设备(可能会造成问题),可以将”common”段的”enabled”属性设置为0

运行

测试运行:

1
squeeze2upnp-x86-64-static -x config.xml

调试信息会输出在终端

正式运行

1
./Bin/squeeze2upnp-x86-64-static -z -x config.xml

要用-z参数在后台运行,否则即使使用Linux在后台运行,会占用一个CPU核的全部资源

然后需要开机启动就将上诉命令加入到/etc/rc.local 中即可

Roon配置

在Roon的“设置”->”音频”中启用桥设备,并给其命名,例如命名为Huawei Sound

img
打开SqueezeBox设置

对设备进行一些简单配置

img
打开SqueezeBox设置

在右下角的设备选择那里选择需要播放的设备,例如Huawei Sound音箱

img

打开SqueezeBox设置

然后打开设备的DSP选项

img

打开SqueezeBox设置

将Huawei Sound高于96k码率的音乐和DSD音乐进行转换

img

打开SqueezeBox设置

最终效果

这下,就可以在Roon系统中使用Huawei智能音箱了

img

打开SqueezeBox设置

使用docker运行squeeze2upnp

上面的squeeze2upnp安装过程依赖命令行,有点复杂,我简单做了一个docker镜像,在群晖上可以通过docker套件的界面来部署squeeze2upnp

首先需要在群晖上安装官方的docker套件:

img

Docker套件

打开Docker套件界面搜索镜像hjianhao/hjianhao-squeeze2upnp

img

搜索镜像

搜索到镜像后下载,并在映像界面启动容器

img

启动容器

选择高级设置

img

高级设置

在NAS上创建一个保存配置文件(config.xml)的目录,并挂接到容器的/config目录

img挂载配置目录

因为squeezeupnp涉及范围端口的使用,所以使用host网络

img

配置网络

应用后,一路“下一步”即可启动容器。

img

创建容器

第一次容器虽然启动了,但是功能是失效的,从上面的说明可以看到此时还没有配置文件(config.xml), 点击“详情”按钮弹出容器信息窗口,从“日志”标签中可以看到,加载配置文件失败

img

启动失败日志

此时我们进入“终端”标签,执行/squeeze2upnp/find.sh,用于发现DLNA Render设备,并生成配置文件

img

发现设备

执行完成后,使用“Ctrl+D”退出并停止容器运行。此时在你挂载的配置文件目录中就会有”Config.xml”配置文件。

img

配置文件

然后配置按前面对配置文件的描述修改配置文件,再重启容器即可。重启容器前最好将自动重启勾上

img

配置文件

启动成功后,只有一行日志

img

配置文件

通过桥连接解码器

除了上面提到的通过squeeze2upnp转换用DLNA连接解码器外,还有其他的连接解码器的方式:

  1. 也可以通过RAAT接入Roon Ready的解码器(前提是解码器支持Roon Ready)

img

这种方式比较简单,只要你的解码器支持Roon Ready且解码器和Roon core在同一个局域网网段,就可以相互发现,不用配置。因为简单且我的解码器不支持Roon Ready就不在这里赘述了

  1. Roon Core通过USB输出接入解码器,包括直接接入到解码器的USB输入,或者通过解码器界面转换为同轴和光纤输入解码器

img

  1. Roon Core通过RAAT协议接入Roon Bridge,然后Roon Bridge接入解码器,接入方式和上面说的Roon Core类似

img

这里主要介绍第三种,因为Bridge可以:

  1. 让Roon Core和解码器的位置摆放更为灵活,只要Bridge接近解码器即可。
  2. Bridge使用树莓派这种低功耗设备可以比Core更容易避免干扰,同时电源也更好处理。
  3. 多个Bridge可以让Roon接入和控制多个房间的音响设备。

因为我个人的主音响系统以DLNA为主,因为我的解码器出声最好的就是DLNA接入,其他数字接入都稍微差一些。所以树莓派做Bridge一个是做对比测试,另一个方面是作为我一个房间耳放的接入。这样我就可以用Roon控制在我的耳放上播放音乐。

树莓派做Roon Bridge是性价比非常高的Roon Bridge设备,功耗低,价格低,USB输出较好,I2S数字音频卡多,电源好处理。

在树莓派上装Roon Bridge

如果树莓派专用于Roon Bridge,则最好安装volumio,moode,RoPieee这类已经预先集成了Bridge软件的,比较简单。

因为我的树莓派还需要跑其他的软件,所以我是预装了系统再手工安装Roon Bridge。也比较简单

官方有Linux安装指导:https://help.roonlabs.com/portal/en/kb/articles/linux-install

要选对架构,对于树莓派4,如果是32位系统,用armv7hf, 我用的系统是64位的,所以使用armv8,安装只有下面三个指令

1
2
3
$ curl -O http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv8.sh
$ chmod +x roonbridge-installer-linuxarmv8.sh
$ sudo ./roonbridge-installer-linuxarmv8.sh

取消安装在执行脚本加上参数uninstall,如:

1
sudo ./roonbridge-installer-linuxarmv8.sh uninstall

安装完成后会有安装结果提示,看是否安装成功。

重要提示: 安装完成后,可能会出现在Roon的关于里面可以看到桥,但是在音频里面看不到输出设备,应该是树莓派没有启动音频设备,需要修改config.txt文件,将dtparam=audio=on这一行的注释弃掉(删除前面的#号)

除了USB输出外,也可以给树莓派添加I2S音频扩展卡,通过同轴/平衡/光纤输出到解码器。

如果选用的是兼容HiFiBerry系列的显卡,可以参考:
https://www.hifiberry.com/docs/software/configuring-linux-3-18-x/

以我买的带平衡和光纤输出的兼容HiFiBerry Digi+的扩展版为例,修改/boot/config.txt

  1. 注释掉dtparam=audio=on
  2. 添加dtoverlay=hifiberry-dac

重启树莓派即可。然后用aplay指令可以看到I2S声卡

1
2
3
4
5
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HifiBerry Digi HiFi wm8804-spdif-0 [HifiBerry Digi HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

通过VPN实现远程ROON

打通WAN连接服务器

  1. 首先要像运营商(如电信宽带)申请公网IP。
  2. 申请一个免费域名,同时将域名设置动态映射。这个每家域名提供商具体不一样,根据指导去配。
  3. 公网IP一般是动态的,会变化的,使用DDNS来做动态映射,以下以梅林固件的路由器为例:

img

服务器选择不同域名提供商,然后输入用户名等参数

搭建VPN服务器

以威联通QVPN为例

  1. 安装QVPN套件

  2. 启动L2TP/IPSec服务器

    其中10.2.0.0是VPN虚拟机局域网的网段

  3. 在路由器做端口映射,将以下端口流量导向NAS
    UDP:500
    UDP:4500
    UDP:1701

img

端口映射

远程机器连接VPN服务器

a. 用户名和密码是你创建VPN服务器的NAS用户用户名和密码
b. 共享密钥是第2步设置的预共享密钥

  1. 进行连接

img

在Windows上创建VPN连接

连接后会增加一个虚拟网卡

1
2
3
4
5
6
7
PPP 适配器 myhome:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::ecdd:7a2a:228e:9b30%51
IPv4 地址 . . . . . . . . . . . . : 10.2.0.1
子网掩码 . . . . . . . . . . . . : 255.255.255.255
默认网关. . . . . . . . . . . . . : 0.0.0.0

同时你也可以访问NAS所在局域网的地址
例如

1
ping 192.168.1.100

此时你的Windows和NAS已经处在一个虚拟局域网下,启动远程计算机上的Roon就可以连接NAS上跑的Core了。

此时你看到Roon Core的IP地址是刚才建立的VPN的网段(Core机器上也有一个虚拟网卡)

img

同时也可以发现远程Windows机器上连接的音频设备用于播放

img

l

WSL2 中访问宿主机 Windows 的代理

最近疫情期间很多事情都得用代理连到学校内网去做,但是 WSL2 因为是通过虚拟机的方式实现,网络不再像 WSL1 一样与 Windows 共享,变成了一个新的网段,所以想使用宿主机的代理就比较麻烦了。

WSL 中获取宿主机 IP

WSL 每次启动的时候都会有不同的 IP 地址,所以并不能直接用静态的方式来设置代理。WSL2 会把 IP 写在 /etc/resolv.conf 中,因此可以用下面指令获得宿主机 IP 。

1
cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'

WSL2 自己的 IP 可以用下面指令得到。

1
hostname -I | awk '{print $1}'

设置代理

有了宿主机 IP 之后,就可以通过设置环境变量的方式设置代理了。这里端口需要自己填写,而且别忘了代理软件中设置允许来自局域网的连接

1
2
export http_proxy='http://<Windows IP>:<Port>' 
export https_proxy='http://<Windows IP>:<Port>'

这种设置方式每次重启终端都得重新设置一遍,而且 IP 还得自己手打,还是挺麻烦的,这种时候就得靠脚本了!

第 4 行 <PORT> 记得换成自己宿主机代理的端口!!!!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh 
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }') wslip=$(hostname -I | awk '{print $1}')
port=<PORT>

PROXY_HTTP="http://${hostip}:${port}"
set_proxy(){
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTP}"
export HTTPS_proxy="${PROXY_HTTP}"
}

unset_proxy(){
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
}

test_setting(){
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current proxy:" $https_proxy
}

if [ "$1" = "set" ]
then
set_proxy

elif [ "$1" = "unset" ]
then
unset_proxy

elif [ "$1" = "test" ]
then
test_setting
else
echo "Unsupported arguments."
fi

第 4 行 <PORT> 记得换成自己宿主机代理的端口!!!!!!

如果希望 git 也能通过代理,可以分别在 set_proxyunset_proxy 函数中加上如下命令

1
2
3
4
5
6
// 添加代理
git config --global http.proxy "${PROXY_HTTP}"
git config --global https.proxy "${PROXY_HTTP}"
// 移除代理
git config --global --unset http.proxy
git config --global --unset https.proxy

之后运行 . ./proxy.sh set 就可以自动设置代理了。unset 可以取消代理,test 可以查看代理状态,能够用来检查环境变量是否被正确修改。

运行的时候不要忘记之前的 .,或者使用 source ./proxy.sh set,只有这样才能够修改环境变量

直接运行例如 ./proxy.sh set 或者 sh proxy.sh set,这样会是运行在一个子 shell 中,对当前 shell 没有效果

另外可以在 ~/.bashrc 中选择性的加上下面两句话,记得将里面的路径修改成你放这个脚本的路径

1
alias proxy="source /path/to/proxy.sh" . /path/to/proxy.sh set 

第一句话可以为这个脚本设置别名 proxy,这样在任何路径下都可以通过 proxy 命令使用这个脚本了,之后在任何路径下,都可以随时都可以通过输入 proxy unset 来暂时取消代理。

第二句话就是在每次 shell 启动的时候运行该脚本实现自动设置代理,这样以后不用额外操作就默认设置好代理啦~

防火墙设置

如果前面完成后已经可以正常使用了,那么下面就不用管了。如果你代理已经设置正确了,尤其是已经允许来自局域网的访问,但是依旧无法正常访问,代理的软件的确也没收到请求,那么很可能是被 Windows 的防火墙给拦截了。

可以先尝试 ping 宿主机 ip 和 telnet 代理的端口,检查是否连通。如果无法连通,则多半是防火墙的问题。

img

可以尝试在控制面板的防火墙面板左侧“允许应用或功能通过防火墙”,即上述界面中,打上勾允许代理软件通过防火墙。

或者可以尝试在高级设置中,入站规则中新建一个相关规则,如果你不是很了解,可以允许任何程序的任何协议,远程 IP 为 172.16.0.0/12192.168.0.0/16 的入站请求。

l

linux 中为 cp 和 mv 命令添加进度条

GNU cpGNU mv 工具用于复制和移动文件和目录在GNU / Linux的操作系统。这两个应用程序中缺少的一个功能是它们不显示任何进度条。如果你复制一个大文件或目录,你真的不知道复制过程需要多长时间才能完成,或者复制的数据百分比。你不会看到当前正在复制哪个文件,或者已经复制了多少文件。感谢Advanced Copy,一个补丁Gnu Coreutils,我们现在可以在 Linux 中添加进度条cpmv命令,并在复制和/或移动大文件和目录时显示进度条。

Advanced Copy 是GNU cpGNU mv序的 mod 。它添加了一个进度条,并提供有关复制或移动文件和文件夹时发生的情况的一些信息。不仅是进度条,它还显示数据传输速率、估计剩余时间和当前正在复制的文件名。

安装高级复制补丁以在 Linux 中向 cp 和 mv 命令添加进度条

cp 和 mv 命令是GNU coreutils. 所以你需要GNU coreutils这里下载最新的。

1
2
3
4
5
6
7
8
> wget http://ftp.gnu.org/gnu/coreutils/coreutils-9.0.tar.xz
> tar xvJf coreutils-9.0.tar.xz
> cd coreutils-9.0/
> wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.9-9.0.patch
> patch -p1 -i advcpmv-0.9-9.0.patch
> export FORCE_UNSAFE_CONFIGURE=1
> ./configure
> make

现在两个新的补丁的二进制文件即cpmv将在中创建coreutils-9.0/src的文件夹。只需将它们复制到你的 $PATH 中,如下所示:

1
2
$ cp ./src/cp /usr/local/bin/cpg
$ cp ./src/mv /usr/local/bin/mvg

cpgmvg命令有现在进度条的功能。每当你在复制或移动文件和目录时需要进度条时,只需添加-g如下标志:

1
$ cpg -g ../coreutils-9.0.tar.xz ./

或使用--progress-bar标志:

1
$ cpg --progress-bar ../coreutils-9.0.tar.xz ./

示例输出:

1
2
3
4
[root@rumenz.com ~]# cpg -g nifi-1.14.0-bin.tar.gz test/
Copying at 119.3 MiB/s (about 0h 0m 7s remaining)
nifi-1.14.0-bin.tar.gz 959.5 MiB / 1.3 GiB
[============================================> ] 71.0 %

在复制过程结束时,你将看到复制了多少文件、复制文件所用的时间以及每秒的数据传输速率。

1
1 files (  1.3 GiB) copied in 25.5 seconds ( 53.0 MiB/s).

要递归复制目录及其子目录,只需添加-R标志:

1
$ cpg -gR directory1/ directory2/

同样,要使用mv命令移动文件,请运行:

1
$ mvg -g nifi-1.14.0-bin.tar.gz test/

或者,使用--progress-bar标志:

1
$ mvg --progress-bar nifi-1.14.0-bin.tar.gz test/

要使用mv命令移动目录,请使用:

1
$ mvg -g directory1/ directory2/

你还可以创建别名。编辑~/.bashrc文件:

在最后添加以下几行:

1
2
alias cp='/usr/local/bin/cpg -gR'
alias mv='/usr/local/bin/mvg -g'

现在运行以下命令使更改生效:

1
$ source ~/.bashrc

从现在开始,你可以只使用没有(或)标志的cpmv命令。-g --progress-bar请注意,原始程序不会被覆盖。你仍然可以随时通过/usr/bin/cp 或 呼叫他们 /usr/bin/mv

如果你经常复制或移动大量大文件和目录,推荐向cpmv命令添加进度条功能。

l