Acrylic DNS Proxy, 一款用于Windows的本地DNS服务器

Acrylic DNS Proxy, 其官网为 https://mayakron.altervista.org/support/acrylic/Home.htm ,是适用于 Windows 的本地 DNS 代理服务器,它通过缓存来自 DNS 服务器的响应来提高计算机的性能,并可通过自定义 HOSTS 文件抵御不需要的广告,该文件经过优化,可处理数十万个域名,并支持通配符和正则表达式。支持 UDP,TCP,SOCKS5,DOH (DNS-over-HTTPS) 等多种DNS协议。

安装使用

推荐下载便捷版(Portable for Windows),解压缩到合适的目录里(比如 D:\\tools\AcrylicDNSProxy-Portable ),运行其中AcrylicUI.exe,在主窗口菜单 - Actions 里面有安装服务、运行停止服务等操作,安装后即可在Windows的服务管理中管理,设置成自动或手动。

安装目录里还有如下两个文件:主配置文件(AcrylicConfiguration.ini),HOSTS文件(AcrylicHosts.txt),可按需要做相应编辑。也可以通过 主窗口菜单 - File 做编辑,不过使用您习惯的编辑器会更顺手。

主配置文件(AcrylicConfiguration.ini)

该文件是 int 格式,看起来很长,但多半都是配置参数的说明,非常详细,推荐通读一遍。下面是可能有必要修改的几处。

主服务器地址

PrimaryServerAddress=8.8.8.8
PrimaryServerPort=53
PrimaryServerProtocol=UDP
PrimaryServerDoHProtocolPath=
PrimaryServerDoHProtocolHost=

主服务器地址,或者说上级DNS服务器地址。严格来说我们在本地运行的只是一个代理,它要从真正的DNS服务器请求解析、然后缓存起来。默认配置里使用的是 Google的公共DNS、走UDP协议;在75行起还有几套别的服务,注释起来的。

160行起,还有很多套备选DNS服务器(Secondary, Tertiary, Quaternary, Quinary, Senary, Septenary, Octonary, Nonary, Denary),没错,这一堆单词就是第二第十,除了第二套 Secondary 之外,都是空配置。

这些上级服务器,我们可以使用运营商通过DHCP下发的DNS服务,默认都是走UDP 53端口。鉴于DNS协议太古老了,而且容易被劫持或干扰,像Android,Windows 11, Firefox、Chrome 浏览器等新设备都开始支持走SSL/TSL的新协议,如DoH,出于安全起见,我们可以使用后面建议改成本地

公共dns服务器,可以参考 https://dns.icoa.cn/ 找合适的服务器,(只看DoH服务 https://dns.icoa.cn/dot-doh/

本地服务的监听地址与端口

LocalIPv4BindingAddress=0.0.0.0
LocalIPv4BindingPort=53
LocalIPv6BindingAddress=0:0:0:0:0:0:0:0
LocalIPv6BindingPort=53

本地监听地址,默认监听所有IP地址的53端口,这里应该没有DoH等的支持,毕竟Acrylic只是服务于本地网络的代理,这属于对可信区域内部的加速。

不过,即使这里监听了0.0.0.0,事实上它仍然接受 127.0.0.1 上的请求。

提供服务的本地IP范围

Acrylic默认只接受 127.0.0.1 上的请求,要允许其他机器的的请求,就要通过 [AllowedAddressesSection] 指定,比如

[AllowedAddressesSection]
IP1=192.168.1.*

或者干脆 IP1=*

解析命中日志 Hit Log

如果有需要,可以启用,记录下由Acrylic承载的解析日志

HitLogFileName=HitLog.%DATE%.txt

直接写到安装目录下,或者操作系统的临时目录中, 548行有示例。

另外还有个Debug日志, AcrylicDebug.txt ,要在主窗口 - 菜单 - Action - Active Acrylic Debug Log 开启/关闭(Deacive...)

配置HOSTS文件

Acryilc 本身还有一套Hosts文件 AcrylicHosts.txt,支持正则表达式,可以屏蔽掉一些不受欢迎的域名 。不过,一般情况,使用Adblock之类的浏览器扩展更实用。

简单评论一下

主观的评价一下,结合使用经验。

安装使用Acrylic是因为:本地网络环境屏蔽了对外的53端口,只能使用默认的DNS服务,所以考虑通过 DoH服务绕开这个限制。结果是,网络环境还有进一步的屏蔽,一些受限网站的tcp连接会直接被阻断掉,于是,拿到了有效的解析仍然是没用的(没错,就像十几年前的gxx升级,让HOSTS修改大法失效)。

走SSL/TLS协议的DNS请求,确实可以防止DNS污染、投毒;然而,这方面的受益其实也非常之小了。当前HTTPS已经广泛应用,污染投毒已经基本没了市场;而且一般来说,电信运营商下发的DNS一般情况下还算是可靠的,可以基本信任。

不过,Hit Log 还是有意义的,记录了一下本机对哪些域名发起了请求,有点参考意义。

Surface Pro 使用笔记

这里使用的是一台二手机器,型号是 surface pro 7+ ,最低配置。

其实本来是想买台6,重点关注京东二手的一个卖家(他们有公开的验机报告,至少看起来很有诚意),主要是在等,等一台屏幕无任何缺陷的机器,16G内存256G硬盘,或者低配也行,不够时再魔改。但突然看到上线了一台7+,品相良好,带原装键盘,内存8G,128G硬盘,因为可换硬盘的,考虑于是果然剁手了。因为考虑到魔改费用也不便宜,作为便携设备一般不会同时跑多个大程序。

定位

surface pro是笔记本电脑,surface pro是笔记本电脑,surface pro是笔记本电脑。如果说与普通笔记本电脑有什么区别的话,那就是更便携,还带了触屏,仅此而已。也就是说,它不是iPad这种移动设备,不要怀抱想当然的不切合实际的幻想。

重装系统

经验是,跟普通电脑重装系统没有区别。本身带Windows 10/11 家庭版授权,新装完系统即可自动激活。如果装了专业版、企业版,则要额外授权。

原装键盘很重要,如果使用蓝牙键盘,安装过程大概很难进行得下去。USB键盘或许也可以,没试过。

误区1)网上有些文章说的一定要使用surface恢复映像才行,这个应该是使用的原始硬盘的恢复分区,这类似于一键ghost,适合没经验的新手。既然都选择重装系统了,那就彻底一点,并且毁掉恢复分区(如果有的话),还能多释放些硬盘空间。

换硬盘

这很简单,有对应型号的螺丝刀,拧螺丝即可。

因为手上没有2230硬盘盒,所以用移动硬盘中转一下,先使用diskgen把系统迁移到移动硬盘上,然后拆换硬盘上,再从移动硬盘上迁移系统到新硬盘上。这个过程多亏了type-C的转接线,可以同时插移动硬盘与PE启动盘(微PE工具箱)。如果PE系统能识别新插入移动硬盘的话,应该热插拔也行。

如果更换硬盘后设备无法开机,只需插上电源再按开机键即可。

软件

Windows 10/11,虽然11问题很多,但11对触屏操作的支持比10更好一些。

Windows 11操作系统本身对触屏的支持还算是基本能用,但各种软件就多半严重拖后腿了,比如,Edge浏览器, 好像就不能实现复制粘贴(Firefox则可以,菜单-编辑-复制/粘贴)。

业余电台操作证书考试题库(v20211022)A类题目重点标注及记忆

这只算是个总结。

题库里的题目是纯文本格式,非常规整,每条题干、选项 都是一行,所以刷题时在[P]一行里做标记,两个感叹号,然后写批注。然后把有标记的题目过滤出来,方便重点复习。使用 bash 命令过滤:

# 提取带 !! 的行,这货在bash里有特殊意义,所以比较奇特,要用正则,以避免出现 !!

$ iconv -f gbk -t utf-8 A类题库\(v20211022\).txt | grep -a --no-group-separator -B 7 -P "\!\!" > A_marked.txt

# 如果只要题干与正确选项(即不要选项BCD),则
$ iconv -f gbk -t utf-8 A类题库\(v20211022\).txt | grep -a --no-group-separator -B 7 -P "\!\!" |grep -v "\[[BCD]\]" > A_marked.txt

有标记的题目附后,包含了一些助记的奇技淫巧,有需要者可以做参考。

继续阅读

SDR相关的知识设备及一些频率频段

SDR 设备,软件等

暂留空。TinySA, NanoVNA

SDR 瀑布图的识别 https://www.sigidwiki.com/wiki/Signal_Identification_Guide   其中的   https://www.sigidwiki.com/wiki/Database

关于天线

参考 https://sdrotg.com/guide/antenna.html#%E7%8E%AF%E5%BD%A2%E5%A4%A9%E7%BA%BF

最好的可能是ARRL的《天线手册》一书 https://book.douban.com/subject/3987978/

天线仿真软件   EZNEC https://www.eznec.com/

一些可以参考使用的频率

广播电视频率

维基百科词条: 中华人民共和国电视频道频率划分列表、中国数字地面电视
各地市数字地面波频率: http://dtmb.saoing.com/  (该网站上还有中国地区上空广播电视卫星的相关参数)

铁路频段 450---500M 比如 457,700

电台频率范围:150.000MHz至151.800MHz、162.600MHz至163.500MHz、450MHz至470MHz
机车频率:150.700MHz、151.000MHz、151.500MHz、151.700MHz、457.700MHz、457.825MHz、457.900MHz、458.000MHz
地面频率1:162.650MHz、162.850MHz、163.050MHz、163.250MHz、467.650MHz、467.775MHz、467.875MHz、467.950MHz
地面频率2:162.750MHz、162.950MHz、163.150MHz、163.350MHz、467.700MHz、467.825MHz、467.925MHz、468.000MHz
地面频率3:162.800MHz、163.100MHz、163.300MHz、163.500MHz、467.750MHz、467.875MHz、467.975MHz、468.050MHz

from https://blog.csdn.net/qq_41206234/article/details/102417395

铁路对讲机频率表

以前列车无线通信频率按地域划分为使用150M频段(京广线以西),或使用450M频段(京广线以东),由于150M段干扰逐渐增加,而且电气化铁路中450M频段使用性能好于150M段,铁道部无委确定列车无线调度通信统一采用450M频段。
结合列车无线调度系统的通信方式,铁道部无委选定采用以下四组频率:

组别f1(MHz) f2(MHz) f3(MHz) f4(Mhz)
I   467.450 467.500 467.550 457.550
II  467.500 467.550 467.600 457.550
III 467.650 467.700 467.750 457.700
IV  467.775 467.825 467.875 457.825

以上四组频率在某一调度区段内只使用其中的一组,具体使用方式为:
全双工通信:上行频率为f4,下行频率为f1,f2,f3,动态切换。
半双工通信:上行频率为f4,下行频率为f1,f2,f3。
单工通信:上下行频率均为f4。

from  http://www.bfdx.com/?mod=news&id=384

机场航空频率

上海虹桥机场(ZSSS)

上海近进区调1 A 120.3M B 120.8M
上海近进区调2 A 119.75M B 120.8M
上海近进区调3 A 121.3M B 119.2M C 119.75M D 120.8M
上海近进区调4 A 123.7M B 119.2M
行情通播 132.25M
放行频率 121.75M
地面频率 A 121.6M B 118.1M
塔台频率 A 118.1M B 124.3M

上海浦东机场(ZSPD)

上海近进区调1 A 120.3M B 120.8M
上海近进区调2 A 119.75M B 120.8M
上海近进区调3 A 121.3M B 119.2M C 119.75M D 120.8M
上海近进区调4 A 123.7M B 119.2M
行情通播 127.85M
放行频率 A 121.95M B 121.7M
地面(东)频率 A 121.8M B 121.7M
地面(西)频率 A 121.65M B 121.7M
塔台(东)频率)A 118.4M B 124.35M
塔台(西)频率)A 118.8M B 124.35M

北京首都机场(ZABB)

近进频率【区域1】A 119.6M B 125.05M
近进频率【区域2】A 126.1M B 129.0M
近进频率【区域3】A 120.6M B 125.05M
近进频率【区域4】A 119.7M B 129.0M
近进频率【区域5】A 127.75M B 126.5M
近进频率【区域6】 A 121.1M B 126.5M
行情通播127.6M
离场频率 A 121.6M B 121.9M
地面频率【东】121.7M
地面频率【西】121.9M
塔台频率【东】A 118.5M B 118.3M
塔台频率【西】A 124.3M B 118.3M

杭州萧山机场(ZSHC)

近进频率【区域2】A 126.05M B 119.15M
近进频率【区域1】A 125.55M B 119.15M
行情通播127.25M
地面频率 121.75M
塔台频率A 118.3M B 130.0M

河南新郑机场(ZHCC)

行情通播128.45M
地面频率 121.75M
塔台频率 A 130.0M B 118.3M

深圳宝安机场(ZGSZ)

珠海近进 A 120.35M B 124.25M
行情通播 127.45M
CLD FREQ1 127.95M
地面频率 A 121.65M B 121.875M
塔台频率 A 118.45M B 118.05M

福州长乐机场(ZSFZ)

福州近进 A 119.45M B 133.05M
行情通播 126.4M
地面频率 121.9M
塔台频率 A 118.45M B 124.35M

南京禄口机场(ZSNJ)

南京近进 A 119.25M B 120.35M
行情通播 126.25M
地面频率 121.7M
塔台频率A 118.85M B 118.15M

广州新白云机场(ZGGG)

广州区调 A 120.4M B 126.35M C 119.6M C 119.7M
行情通播 128.6M
CLD 121.95M
地面频率A 121.75M B 121.85M C 121.6M
塔台频率A 118.1M B 118.8M C 124.3M

澳门国际机场(VMMC)

ONG KONG RDR A 126.3M B 119.1M
行情通播126.4M
地面频率 A 121.725M B 121.975M
塔台频率 A 118.0M

香港新机场(VHHH)

APP A 119.1M B 119.35M C 133.7M
行情通播128.2M
区域控制 120.6M
CLNC 放行频率 A 129.9M B 124.65M
离场频率A 123.8M B 124.05M
地面频率 A 122.55M B 121.6M
精确近进 A 133.7M
塔台频率 A 118.4M B 118.2M C 118.7M

from https://www.vachiko.com/archives/aero_radio_frequency.html

对讲机的频率范围:

在日常对讲机的使用中,根据中国无线电管理委员会规定,对讲机频率一般做如下划分:

专业对讲机:V段136-174MHZ;U段400-470MHZ;
武警公安用:350-390MHZ;
海岸用:220MHZ;
交通信号灯监控、防空警报器:223.025-235Mhz
业余用:433MHZ;
集群用:800MHZ;
手机:900MHZ/180MHZ;
民用:409-410MHZ

from  https://gxt.hunan.gov.cn/gxt/wxd_ycl/hyzx_ycl/kpyd_ycl/201607/t20160711_8127965.html

公安用对讲机频率范围从350~390MHz,
其中 350MHz~370MHz 主要用于公安系统使用。这一段频率行内称为 350MHz 低端。
370MHz~390MHz为其它部门使用,这一段频率行内称为 350MHz 高端。这一类对讲机统称为 350MHz 警用对机。

https://zhidao.baidu.com/question/602095573.html

公众无线电对讲机的频段

中国开放的频道数是20个,频率范围 409.7500~409.9875MHz ,间隔125KHz;
美国则是14个频点,分462MHz和467MHz两组,每组7个频点;
台湾地区也为14个频率点,在446.00625MHz~446.09375MHz ;
泰国开放频点达到80个,从245.000MHz~245.7375MHz ;
日本、韩国采用美国规定。

中国公众对讲机频道
409.7500; 409.7625; 409.7750; 409.7875; 409.8000; 409.8125; 409.8250; 409.8375; 409.8500; 409.8625; 
409.8750; 409.8875; 409.9000; 409.9125; 409.9250; 409.9375; 409.9500; 409.9625; 409.9750; 409.9875
from http://www.bfdx.com/?mod=news&id=1783

美国公众对讲机标准频点(频率:MHz) 
信道 1-7 频率 462.5625 462.5875 462.6125 462.6375 462.6625 462.6875 462.7125 
信道8-14 频率 467.5625 467.5875 467.6125 467.6375 467.6625 467.6875 467.7125

欧洲公众对讲机标准频点(频率:MHz) 
信道 1-8 频率446.00625 446.01875 446.03125 446.04375 446.05625 446.06875 446.08125 446.09375

台湾公众对讲机标准频点(MHz) 
信道 1-7 频率467.5125 467.5250 467.5375 467.5500 467.5625 467.5750 467.5875 
信道8-14 频率467.6000 467.6125 467.6250 467.6375 467.6500 467.6625 467.6750

from  http://xindianju.wxshidai.com/index/detail?id=44775

卫星频率

145.800~146.000MHz  法定A类操作证书可操作

XW-2(CAS-3)系列卫星(希望二号系列卫星);LilacSat-2(CAS-3H)卫星,即紫丁香2号卫星;CAS-4系列卫星 等多个,相关资料参看 https://www.srrc.org.cn/article24583.aspx

微功率短距离无线电发射设备使用的频率

《微功率(短距离)无线电设备的技术要求》(信部无〔2005〕423号)

短波通信实际使用的频率划分

短波通信实际使用的频率范围:1.6 MHz~30 MHz
1600 kHz~1800kHz: 主要是些灯塔和导航信号,用来给鱼船和海上油井勘探的定位信号。
1800 kHz~2000kHz: 160米的业余无线电波段,在秋冬季节的夜晚有最好的接收效果。
2000 kHz~2300kHz: 此波段用于海事通信,其中2182保留为紧急救难频率。
2300 kHz~2498kHz: 120米的广播波段。
2498 kHz~2850kHz: 此波段有很多海事电台。
2850 kHz~3150kHz: 主要是航空电台使用。
3150 kHz~3200kHz: 分配给固定台。
3200 kHz~3400kHz: 90米的广播波段,主要是一些热带地区的电台使用。
3400 kHz~3500kHz: 用于航空通信。
3500 kHz~4000kHz: 80米的业余无线电波段。
4000 kHz~4063kHz: 固定电台波段。
4063 kHz~4438kHz: 用于海事通信。
4438 kHz~4650kHz: 用于固定台和移动台的通信。
4750 kHz~4995kHz: 60米的广播波段,主要由热带地区的一些电台使用。最好的接收时间是秋冬季节的傍晚和夜晚。
4995 kHz~5005kHz: 有国际性的标准时间频率发播台。可在5000 kHz听到。
5005 kHz~5450kHz: 此频段非常混乱,低端有些广播电台,还有固定台和移动台。
5450 kHz~5730kHz: 航空波段。
5730 kHz~5950kHz: 此波段被某些固定台占用,这里也可以找到几个广播电台。
5950 kHz~6200kHz: 49米的广播波段。
6200 kHz~6525kHz: 非常拥挤的海事通信波段。
6525 kHz~6765kHz: 航空通信波段。
6765 kHz~70001kHz: 由固定台使用。
7000 kHz~7300kHz: 全世界的业余无线电波段,偶尔有些广播也会在这里出现。
7300 kHz~8195kHz: 主要由固定台使用,也有些广播电台在这里播音。
8195 kHz~8815kHz: 海事通信频段。
8815 kHz~9040kHz: 航空通信波段,还可以听到一些航空气象预报电台。
9040 kHz~9500kHz: 固定电台使用,也有些国际广播电台的信号。
9500 kHz~9900kHz: 31米的国际广播波段。
9900 kHz~9995kHz: 有些国际广播电台和固定台使用。
9995 kHz~10005kHz: 标准时间标准频率发播台。可在10000 kHz听到。
10005 kHz~10100kHz: 用于航空通信。
10100 kHz~10150kHz: 30米的业余无线电波段。
10150 kHz~11175kHz: 固定台使用这个频段。
11175 kHz~11400kHz: 用于航空通信。
11400 kHz~11650kHz: 主要是固定电台使用,但是也有些国际广播电台的信号。
11650 kHz~11975kHz: 25米的国际广播波段,整天可以听到有电台播音。
11975 kHz~12330kHz: 主要是由一些固定电台使用,但是也有些国际广播电台的信号。
12330 kHz~13200kHz: 繁忙的海事通信波段。
13200 kHz~13360kHz: 航空通信波段。
13360 kHz~13600kHz: 主要是由一些固定电台使用。
13600 kHz~13800kHz: 22米的国际广播波段。
13800 kHz~14000kHz: 由固定台使用。
14000 kHz~14350kHz: 20米的业余无线电波段。
14350 kHz~14490kHz: 主要是由一些固定电台使用。
14990 kHz~15010kHz: 标准时间标准频率发播台。可在15000 kHz听到。
15010 kHz~15100kHz: 用于航空通信,也可以找到一些国际广播电台。
15100 kHz~15600kHz: 19米的国际广播波段,整天可以听到有电台播音。
15600 kHz~16460kHz: 主要是由固定电台使用。
16460 kHz~17360kHz: 由海事电台和固定电台共享。
17360 kHz~17550kHz: 由航空电台和固定电台共享。
17550 kHz~17900kHz: 16米的国际广播波段,最佳的接收时间是在白天。
17900 kHz~18030kHz: 用于航空通信。
18030 kHz~18068kHz: 主要是由固定电台使用。
18068 kHz~18168kHz: 17米的业余无线电波段。
18168 kHz~19990kHz: 用于固定电台,也可以找到一些海事电台。
19990 kHz~20010kHz: 标准时间标准频率发播台,可在20000kHz听到,接收的最佳时间在白天。
20010 kHz~21000kHz: 主要用于固定台,也有些航空电台。
21000 kHz~21450kHz: 15米的业余无线电波段。
21450 kHz~21850kHz: 13米的国际广播波段,最佳的接收时间是在白天。
21850 kHz~22000kHz: 由航空电台和固定电台共享。
22000 kHz~22855kHz: 主要是由一些海事电台使用。
22855 kHz~23200kHz: 主要是由一些固定电台使用。
23200 kHz~23350kHz: 由航空台使用。
23350 kHz~24890kHz: 主要是由一些固定电台使用。
24890 kHz~24990kHz: 15米的业余无线电波段。
24990 kHz~25010kHz: 用于标准时间标准频率发播台,目前还没有电台在这个频段上操作。
25010 kHz~25550kHz: 用于固定、移动、海事电台。
25550 kHz~25670kHz: 此频段保留给天文广播,目前还没有电台。
25670 kHz~26100kHz: 13米的国际广播波段。
26100 kHz~28000kHz: 用于固定、移动、海事电台。
28000 kHz~29700kHz: 10米的业余无线电波段。
29700 kHz~30000kHz: 固定和移动台使用此波段。

from  http://www.bfdx.com/?mod=news&id=1761

微功率短距离无线电发射设备使用的频率

 

[收集板] 二手 surface pro 各型号配置价格对照

二手 surface pro 各型号配置价格,只是方便参考对照,信息来自于 https://item.jd.com/10071978238961.html   其他家的大概也差不多,2024/03/06  . 结论是 18款Pro6 i5/8G-256G 综合看性价比较高,也不算太过时。


型号  价格  配置

21款Pro8 i7/32G-1T【多任务快处理】
21款Pro8 i7/16G-1T【大内存运行快】
21款Pro8 i7/16G-512G【设计剪辑】
21款Pro8 i7/16G-256G【带键盘】
21款Pro8 i5/16G-512G【带键盘】
21款Pro8 i5/16G-256G【带键盘】
21款Pro8 i5/8G-512G【带键盘】
21款Pro8 i5/8G-256G【带键盘】
21款Pro8 i5/8G-128G【带键盘】

19款Pro7 i7/16G-1TB【带键盘】
19款Pro7 i7/16G-512G【带键盘】
19款Pro7 i7/16G-256G【带键盘】     3999         i7-1065G7
19款Pro7 i5/8G-256G【带键盘】      2949         i5-1035G4     cpu-8,268 (1.1 GHZ-3.7 GHZ)
19款Pro7 i5/8G-128G【带键盘】
19款Pro7 i3/4G-128G【带键盘】      2199         i3-1005G1     cpu-5,195 (1.2 GHZ-3.4 GHZ)

18款Pro6 i7/16G-1TB【带键盘】
18款Pro6 i7/16G-512G【带键盘】     3299         i7-8650U      cpu-6,424 (1.9 GHZ-4.2 GHZ)
18款Pro6 i7/8G-256G【带键盘】      2799
18款Pro6 i5/8G-256G【带键盘】      2099         ##
18款Pro6 i5/8G-128G【带键盘】      1899         i5-8250U      cpu-5,931 (1.6 GHZ-3.4 GHZ)


17款Pro5 i7/16G-1TB【带键盘】
17款Pro5 i7/16G-512G【带键盘】     2899         i7-7560U       cpu-3,798 (2.4 GHZ-3.8 GHZ)
17款Pro5 i7/8G-256G【带键盘】
17款Pro5 i5/8G-256G【带键盘】
17款Pro5 i5/8G-128G【带键盘】      1599         i5-7300U       cpu-3,773 (2.6 GHZ-3.5 GHZ)
17款Pro5 i5/4G-128G【带键盘】
17款Pro5 M3/4G-128G【带键盘】

16款Pro4 i7/16G-512G【带键盘】
16款Pro4 i7/16G-512G【LG屏】
16款Pro4 i7/16G-256G【带键盘】   2199
16款Pro4 i7/16G-256G【LG屏】     2349  
16款Pro4 i7/8G-256G 【带键盘】
16款Pro4 i7/8-256【LG屏】带键盘  
16款Pro4 i5/8G-256G【带键盘】    
16款Pro4 i5/8-256【LG屏】带键盘  
16款Pro4 i5/4G-128G【带键盘】    
16款Pro4 i5/4-128【LG屏】带键盘  

15款Pro3 i7/8G-512G【带键盘】    
15款Pro3 i7/8G-256G【带键盘】
15款Pro3 i5/8G-256G【带键盘】
15款Pro3 i5/4G-128G【带键盘】

LibreOffice 是编辑PDF的好工具,包括删除水印

LibreOffice - Draw 可以编辑PDF文件,只是只能手工一页一页的删除,或者圈选多个删除,而不能像word等工具可以按格式一次性选择多个,这确实不太方便,不过起码可以用。要注意的一个坑是,似乎不太稳定,经常死掉,所以一直要及时保存,频繁的保存!

或者按理说通过脚本也可以,只是要找找相关文档才行。

另外发现LibreOffice的官网好像通过GFW认证了(2024/02/05),难道就因为Libre而犯了某个自信的团伙的忌讳吗?

Rocky Linux/Centos的跨大版本直接yum/dnf更新

理论上redhat系列较新的版本都可以这样更新,使用旧版本yum的发行版大概也可以。下面以 rocky linux 8.x 直接更新成rocky linux 9.x 示例

1. 先安装上基础包(release,repos,gpg-key)其包文件名,可以到该目录下查看,因为这几个包名里的版本号会随时更新。

dnf install https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-release-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-repos-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-9.2-1.6.el9.noarch.rpm

2.执行更新

dnf --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

如果期间有报 GPG 错误,可以在本行命令中加上 --nogpgcheck 参数,不检查 gpg

3. 重建rpm数据库

rpm --rebuilddb

4. 重启 reboot

参考  https://www.starwindsoftware.com/blog/upgrade-from-rocky-linux-8-x-to-rocky-linux-9-0

可能存在的问题

a. 如果yum报如下的警告消息

 Problem 1: conflicting requests
- nothing provides module(platform:el8) needed by module mysql:8.0:8080020230517025647:fd72936b.x86_64
Problem 2: conflicting requests
- nothing provides module(platform:el8) needed by module perl:5.26:8050020211109115414:b4937e53.x86_64
...
 Problem 6: conflicting requests
- nothing provides module(platform:el8) needed by module python36:3.6:8080020230329212447:683b2e54.x86_64
Problem 7: conflicting requests
- nothing provides module(platform:el8) needed by module python38:3.8:8080020230625053205:0d9ba776.x86_64
Problem 8: conflicting requests
- nothing provides module(platform:el8) needed by module python39:3.9:8080020230703194939:aed85c85.x86_64

应该是以前设置过一些 yum module,这些module在新版本里已经无效,也就是在 /etc/dnf/modules.d/ 下有相关模块的配置文件,删掉对应的文件就是了,再运行 yum check 时就没了。或者 运行 module reset mysql 等相应的模块也可。

Windows下次启动时删除文件的原理及应用

Windows 下删除文件、尤其卸载程序时,有时会提示“下次启动时删除”,这是Windows底层提供的一个功能,具体来说是,把要删除的文件路径写到注册表里一个特定位置,下次Windows启动时,会自动检测这个位置里写的文件路径,删除它们。

这个位置在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

下的 PendingFileRenameOperations ,是一个长文本数据,如果已经写入了待删除文件列表,大致如下

\??\C:\Users\feng\AppData\Local\Temp\Au_.exe

\??\C:\Users\feng\AppData\Local\Temp\~nsuA.tmp\Un_A.exe

\??\C:\Users\feng\AppData\Local\Temp\~nsuA.tmp

更具体的说,这个注册表项是由win32 api 函数 moveFileExW 函数 (winbase.h) 写入的,该函数调用时第三个参数指定了 MOVEFILE_DELAY_UNTIL_REBOOT 标志。https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-movefileexw

这样就会造成一个问题:有时卸载程序后提示某个文件要重启后删除,但又不想重启系统,并且,已经找到相关文件是哪个进程在占用并结束掉了,然后手工删掉了相关文件。

这时,如果还想重新安装该程序,安装向导很可能会提示,需要重启系统才能继续。但又不想重启系统。那么,该怎么办呢?

这时,只要到上述注册表项里,把相关行删掉,再运行安装程序,就可以继续了。其实最好是把所有行里的待删除文件都手工删除掉,再清空该注册表项。

docker 基本使用总结

照总结文档原样发出来,等基本定型后再改格式吧

起步 docker run 
    示例 docker run -i -t ubuntu /bin/bash
    会自动创建一个容器(Run a command in a new container)
命令格式
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数
    -i -t   一般联用,分别为保持 STDIN、分配伪tty,效果为:运行后直接进入交互式环境
    --rm    容器运行结束后自动删除
    --name  指定一个名称,不指定会自动命名;
            多数命令中要指定具体的容器,可用容器ID或名称 (docker ps 输出的 CONTAINER ID, NAMES两栏)


运行容器/运行着的容器
    1. docker run       新建容器并在其中执行命令,有非常非常多参数
    2. docker ps        列出容器,默认列出运行中的;参数: -a 所有(--all); -l 最近运行的一个(--latest)
    3. docker start     运行一个或多个已经存在的容器;默认在后台执行,不附着(可 docker attach 之)
    4. docker attach    附着一个在后台运行的容器;不过不能优雅的断开,而且并不很推荐交互使用
    5. docker logs      查看容器内部的输出,默认所有行,最好用 --tail 指定行数; -t 为每行带时间戳
                        还可 -f 参数类似 tail -f, Ctrl+c 退出;
    6. docker top       查看容器内进程,与 top 类似,只是一刻静态;动态的话 docker stats
    7. docker exec      在运行中的容器中,运行一条命令;参数 -d 为后台模式 daemon;
                        参数 -t -i 交互模式(退出后不会造成容器停止); -u 指定以某用户身份运行

几个运行参数:
    --log-driver=x      启动时(run/start)指定该参数,用于将输出重定向到指定文件x; docker logs 将失效
    --restart=always, --restart=on-failure:5   容器(异常退出时)自动重启(:5次)
    --publish list, -p  如 -p 127.0.0.1:8080:80  宿主机 lo:8080 ~ 容器的 80 端口,ip: 可省略
    --publish-all, -P   暴露所有端口,Publish all exposed ports to random ports

管理容器
    1. docker start/restart/stop   启动/重启/停止
    2. docker rm        删除容器
    3. docker inspect   容器的深入信息(low-level information)
    4. docker create    非常非常多参数,跟 run 类似
    5. docker port      查看端口映射情况
    6. docker cp        在容器与本地环境间复制文件




镜像相关 images

镜像从仓库下载,本地存储在 /var/lib/docker/ 下,具体目录要要视采用的存储驱动而定。
仓库存在于 Registry 中,默认为 Docker 公司的公共 Registry 服务(即 DockerHub https://hub.docker.com)
线上镜像分公共

镜像相关操作命令
    1. docker images            列出本地镜像
    2. docker rmi               删除镜像
    3. docker search KEYWORD    搜索线上镜像
    4. docker pull IMAGE-NAME[:TAG|@DIGEST]     拉取指定镜像
    5. docker commit CONTAINER  从容器打包构建镜像,事实上是增量式, 并不常用
    6. docker build             构建镜像,要编写文件 Dockerfile, 这是常用的方式
    7. docker history IMAGE     镜像的历史,包含其每一层的构建历史及其 Dockerfile 指令
    8. docker push              推送到


构建镜像:通过 docker commit <不推荐>
    命令 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    方法相当于把容器 CONTAINER 打包成镜像,应该指定 名称:标签 以便后面引用


构建镜像:通过 Dockerfile 步骤及要点
    1. 在一个目录(构建环境, build environment)里,放置 Dockerfile 文件
    2. 命令 docker build [OPTIONS] PATH | URL | -
    3. Dockerfile 文件默认在 PATH/Dockerfile,  也可用 -f 指定文件名, 文件必须在构建环境中
    4. PATH 还可以是一个 git 仓库地址
    5. 最好指定 -t=IMAGE_NAME 为镜像命名,名称中可以为带前缀目录与标签 prefix/websvr:v1 
    6. 如果执行失败,将得一个可以使用的镜像,可调试之(以之创建一个交互式的容器)
    7. 构建环境根目录中支持 .dockerignore
    8. 默认缓存,从开头起未修改的部分,结果将直接复用;可 --no-cache 关闭这一特性

Dockerfile 示例
    ---------------------------
    # sample Dockerfile
    FROM ubuntu:15.04
    MAINTAINER Someone Name "sn@example.com"
    ENV REFERSHED_AT 2014-07-10
    RUN apt-get -qq update
    RUN apt-get install -y nginx
    # RUN apt-get -qq update && apt-get install -y nginx
    # RUN [ "apt-get", " install", "-y", "nginx"]
    EXPOSE 80
    ---------------------------

Dockerfile 格式(上示例说明)
    0. # 开头的注释行(可选)
    1. 第一条指令行必须是 FROM, 指定一个已存在的镜像(称为 基础镜像, base image)
    2. MAINTAINER 声明维护人信息
    3. ENV 设置环境变量,这里的 REFRESHED_AT ,模板最后更新时间,用于刷 apt 缓存; 对 yum 也有效
    4. RUN 指令在 shell 里执行时,默认由 /bin/sh -c 来执行;
    5. 接上,如不希望由 shell 包装(出于避免 shell 字符转义麻烦等考虑),可用 exec 格式写法(数组式)
    6. 每行指令都会创建镜像层,所以可以将多条指令合并在同一行一次性 RUN ,以简化层级
    7. EXPOSE 指令用于向外公开端口; docker 默认不开端口

Dockerfile 指令
    1.  CMD     容器启动时运行的命令,在 docker run 时可以被参数覆盖; 只允许一条/仅最后一条有效
                最好只使用数组式写法,如 CMD ["/bin/bash", "-l"]
    2.  ENTRYPOINT   与 CMD 类似,但不被 docker run 覆盖;二者组合可以实现一些特别功能
    3.  WORKDIR     容器内的工作目录,RUN, ENTRYPOINT, CMD 等的程序在此执行
    4.  ENV     设置环境变量,可一行设置多个;使用时 $ENVNAME 引用类似 BASH 里的
    5.  USER    指定(切换)执行用户,如 USER nginx, 可 user:group 组合,支持 uid,gid
    6.  VOLUME  一个或多个卷,如 VOLUME ["/opt/proj"] 将为基于此镜像的任何容器创建一个挂载点
                启动容器时以 -v 参数设定挂载点: -v /path/to/develop:/opt/proj , 可再加 rw 或 ro
    7.  ADD     将构建目录下的文件复制到镜像中指定位置(文件或目录皆可)如 ADD file.ext /opt/app/
                源文件支持 URL;源文件名如是 gzip, bzip2, xz,将自动解压缩到目标处
    8.  COPY    与 ADD 类似,但并不自动解压缩
    9.  LABEL   为镜像添加(键值对形式的)元数据,如有多个推荐一次性指定; 在 docker inspect 查看
    10. STOPSIGNAL  指定停止容器时发送给容器的系统信号,如果 9, SIGKILL
    11. ARG     定义变量,仅在 docker build 中可用;还可通过 --build-arg 传递给构建运行时
                如,定义了 ARG build 及 ARG app_user=user, 且 docker build --build-arg build=1404 
                则构建时, build 为 1404,, app_user 为默认值 user
    12. ONBUILD 触发器,好像挺复杂的,先忽略


私有 Registry 服务
    Docker 官方提供私服镜像,可容器化运行:
    docker run -d -p 5000:5000 --restart always --name registry registry:2
    使用上,先给本地镜像打 tag ,然后 push 上去
    docker tag my_image localhost:5000/my_image
    docker push localhost:5000/my_image


sed正则的扩展与非扩展区别

sed的正则表达式,有扩展正则与基本正则(或叫非扩展正则)之分,默认非扩展。两者区别主要是对几个特殊字符的定义上:即 问号‘?’,加号 ‘+’, 圆括号‘()’, 花括号‘{}’, 竖线管道符 ‘|

这是个坑,尤其对习惯使用扩展正则语法的用户而言。

我们一般用的是 GNU 的 sed ,以之为例。

具体来说,两者区别是,在基本正则中,上述几个字符本身没有定义特殊功能,与其它普通字符一样,只代表它们字面上的字符。而在扩展正则上,则有相应的定义。

不过,事实上,在基本正则模式下,还是能让这几个字符表示相应的正则符号定义,方法是用反斜线\转义一下。这样就显得有点怪异了,扩展与非扩展功能完全一致,除了这几个字符的转义与否正好相反。猜测,在基本正则里的这个约定是GNU sed干的。其他版本的sed的基本模式下,完全不支持扩展语法。

所以了,最佳的使用习惯是,准确的区分是否用扩展正则的语法,如果用了,那就指定  -E 参数以启用扩展。否则,就完全不要用,尤其最好不要用依赖GNU sed里基本正则定义的怪异的扩展语法。

GNU sed 的手册有如下

In GNU sed, the only difference between basic and extended regular expressions is in the behavior of a few special characters: ‘?’, ‘+’, parentheses, braces (‘{}’), and ‘|’.

With basic (BRE) syntax, these characters do not have special meaning unless prefixed with a backslash (‘\’); While with extended (ERE) syntax it is reversed: these characters are special unless they are prefixed with backslash (‘\’).