Fedora31 的几个变化

1. 默认启用 Cgroups V2

nozuonodie, 升级到 Fedora 31 后, CgroupsV2 已经默认开启,理由是原来不是默认开启没人用,现在让 Fedora 用户先当当小白鼠,
于是 Docker 就倒下了。http://t.cn/Ai1sI5LH grub2 配置文件 /etc/default/grub, 内核参数添加 systemd.unified_cgroup_hierarchy=0
可以重新开启 CgroupsV1 ​​​​

2. 默认的 Python 为 Python3

https://fedoraproject.org/wiki/Changes/Python_means_Python3

唉,不得不说 Fedora 这次有点太激进了, 搞得我编译 chromium 又出问题了。 要换回去有个歪招

ln -s /usr/bin/python2 /usr/local/bin/python

Linux 下使用百度网盘

百度网盘在国内很大概率是绕不过去,稍大点文件都喜欢用百度网盘给下载地址。可是百度网盘下载
是限速的,而且对 Linux 用户非常不友好,我的 Fedora 装上 rpm 包也用不了,直接崩溃,所以得想点其他办法。

1. 官方安装包 (不一定都能使用)

官方提供了 deb 和 rpm 格式安装包

http://issuecdn.baidupcs.com/issue/netdisk/LinuxGuanjia/3.0.1/baidunetdisk_linux_3.0.1.2.rpm
http://issuecdn.baidupcs.com/issue/netdisk/LinuxGuanjia/3.0.1/baidunetdisk_linux_3.0.1.2.deb

但是在 Fedora 安装后,会报错误。

2. BaiduPCS-Go (百度网盘客户端 - Go语言编写)

https://github.com/iikira/BaiduPCS-Go

2.1 登录

./BaiduPCS-Go login -bduss=xxxxx

2.2 设置并发

1
> config set -max_parallel=50

2.3 下载

1
> download xxxxx

3. 使用浏览器插件

https://github.com/acgotaku/BaiduExporter.git

可以直接使用作者提供的打包好的插件, 直接安装即可。

https://github.com/acgotaku/BaiduExporter/blob/master/BaiduExporter.crx

这个插件将使用 aria2c 下载,使用得先准备一个可以使用的aria2c
要让 aria2c 更好用一些,可以修改一下配置,配置文件可以参考

https://raw.githubusercontent.com/acgotaku/BaiduExporter/master/aria2c/aria2.conf

010editor 保持试用

软件介绍

010Editor是一款快速且强大的十六进制编辑器。用来编辑二进制文件。有一个友好易于使用的界面,无限次的
undo和redo操作。另外还可以打印十六进制的字节或者以书签的方式标出某些重要的字节。
支持二进制模板(binary template)系统。

保持试用

国外软件很多时候相当厚道了,试用基本是全功能,轻微延时和不能自动更新二进制模板,就日常使用来说基本
是完全够用了。

关键文件为 ~/.config/SweetScape/010 Editor.ini,无法使用的时侯可以把这个文件清空,将恢复30天试用状态,
或者简单粗暴的将文件设置为只读。

1
chmod 444 "010 Editor.ini"

用IDA逆向的时侯没有发现这个文件比较奇怪。这个文件是 是使用strace命令发现的,strace命令支持 -e 的过
滤参数将有效减少输出,一般来说看strace日志文件可以从最后往前看。

1
strace -e trace=file ./010editor

从代码上看有使用网络验证需要在hosts文件中屏敝两个网站, 可以减少一些不必要的麻烦。

1
2
127.0.0.1 www.sweetscape.com
127.0.0.1 www.010editor.com

我现在已经是注册用户了,在很长的一段时间内,这方法是管用的,做个备忘。

scz 补充:

之前github上的那个开源keygen还能用,或者就用

1
2
user    user
pass 3470D4AC7CEFACD9297A

只是hosts更改可能不够,windows上用wf.msc阻止010 Editor联网,Linux好像没有简单办法阻止特定进程联网,
只能变相利用uid、gid达成目的。

How to block internet access to certain programs on Linux
https://serverfault.com/questions/550276/how-to-block-internet-access-to-certain-programs-on-linux

https://unix.stackexchange.com/questions/104830/block-specific-application-with-iptables

GNU Global 的使用

☆ 1. GNU Global 简介

GNU Global 是一种源代码标记系统,可以帮助程序员在代码库中快速定位函数、变量、宏定义等。GNU Global 可以生成索引文件,用于快速跳转到定义、引用、函数调用等地方,从而提高代码阅读和编辑的效率。

GNU global 具有以下优势:

  1. 多语言支持:在默认情况 GNU Global 支持 C, C++, Yacc, Java, PHP4 和 assembly 语言,在安装拓展的情况下可以支持 50多种语言。
  2. 完整性:GNU global 可以标记更多符号的位置,如定义、引用、结构体、类,宏定义等。
  3. 高效性:GNU global 生成高效的 tag 数据库,节省了磁盘空间,使得查询速度更快,同时也支持增量更新索引文件,这意味着当源代码发生变化时,只需要重新生成变更的部分,而不需要重新生成整个索引文件。
  4. 可集成:可以在 Emacs, Vi /vim, Less viewer, Bash shell, 浏览器环境下正常使用
  5. 持续更新: https://www.gnu.org/software/global/whatsnew.html

更多信息请参考: https://www.gnu.org/software/global/globaldoc_toc.html 1.3 Features

☆ 2. GNU Global 的安装

下载地址: https://ftp.gnu.org/pub/gnu/global/global-6.6.9.tar.gz

https://www.gnu.org/software/global/download.html 中说明了源码编译方法:

1
2
3
% sh reconf.sh 
% ./configure
% make

Fedora/Debian 等系统可以使用仓库直接安装,下面以 Fedora Linux 为例

1
sudo dnf install global-ctags global cscope

如果不安装 global-ctags 在 Fedora 下可能会报 Cannot enable custom plug-in parser for GNU GLOBAL 的错误。

gtags-cscope 由 global 安装包提供不用另外安装了。

1
2
3
4
5
6
7
8
9
10
11
sudo dnf whatprovides gtags-cscope

global-6.6.5-7.fc37.x86_64 : Source code tag system
仓库 :@System
匹配来源:
文件名 :/usr/bin/gtags-cscope

global-6.6.5-7.fc37.x86_64 : Source code tag system
仓库 :fedora
匹配来源:
文件名 :/usr/bin/gtags-cscope

macOS 下可以使用 brew 安装 global,执行 brew install global 即可。
参见 https://www.gnu.org/software/global/download.html

如果需要gtags支持 C/C++/Java 之外的语言,需要安装 pygments

1
pip3 install pygments

☆ 3. GNU global 和 cscope, vim 集成

vim 的 cscope 支持可能需要重新编译 vim,可以通过下面的命令查询。

1
2
vim --version | grep cscope
+cscope +localmap +ruby/dyn +wildignore

GNU global 提供了两个 vim 插件用于和 vim 结合,分别为 gtags.vim 和 gtags-cscope.vim,可以直接拷贝到 vim 的插件目录使用。

1
2
cp /usr/local/share/gtags/gtags.vim $HOME/.vim/plugin
cp /usr/local/share/gtags/gtags-cscope.vim $HOME/.vim/plugin

如果是系统仓库安装路径可能有变化,Fedora 上的 gtags.vim 路径为 /usr/share/gtags/gtags.vim

gtags-cscope.vim 定义了一组快捷键和以前的 cscope_maps.vim 一致

1
2
3
4
5
6
7
8
:nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
:nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
:nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
:nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
:nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
:nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
:nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
:nmap <C-\>a :cs find a <C-R>=expand("<cword>")<CR><CR>

gtags-cscope.vim 的使用注释里有详细的说明:

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
" Usage
" -----
" First of all, you must execute gtags(1) at the root of source directory
" to make tag files. Assuming that your source directory is '/var/src',
" it is neccessary to execute the following commands.
"
" [Load vim]
" $ cd /var/src
" $ gtags
" $ vim
" [Load gtags-cscope]
" :GtagsCscope <ENTER> (in vim command line)
"
" Basic command
" -------------
" Then you can use cs commands except for the 'd'(2) command.
" Profitable commands are assigned to keys like follows:
"
" explanation command
" ----------------------------------------------------------
" Find symbol :cs find 0 or s
" Find definition :cs find 1 or g
" Find functions called by this function (not implemented)
" Find reference :cs find 3 or c
" Find text string :cs find 4 or t
" Find egrep pattern :cs find 6 or e
" Find path :cs find 7 or f
" Find include file :cs find 8 or i
" Find assignments :cs find 9 or a
"
" You can move tag list using:
" Go to the next tag :tn
" Go to the previous tag :tp
" Pop tag stack :pop

除了不能使用 :cs find d 命令,可以使用其他所有的命令,gtags-cscope.vim 使用快捷键替代了输入命令,常用的快捷键的含义如下:

1
2
3
4
5
<C-\>g - 查看光标下符号的定义
<C-\>s - 查看光标下符号
<C-\>c - 查看光标下符号的引用
<C-\>f - 查找光标下的文件
<C-\>i - 查找哪些文件 include 了本文件

<C-\>g 是同时按下 Ctrl 和 \ ,接着再按 g , 其他的同理。

在 .vimrc 中添加下面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if has("cscope")
" To use the default key/mouse mapping:
let GtagsCscope_Auto_Map = 1

" To deterring interruption:
let GtagsCscope_Keep_Alive = 1

set cscopetag
set csprg=/usr/bin/gtags-cscope
set csto=1
set nocsverb

" Set enviroment values
let $GTAGSLABEL='native-pygments'
let $GTAGSCONF='/etc/gtags.conf'

endif

☆ 4. GUN global 的使用方法

切换到源码目录,执行下面的命令将生成 Global 所需要的索引文件。

1
2
find . -type f -name "*.h" -o -name "*.hpp" -o -name "*.hh" -o -name "*.hxx" -o -name "*.c" -o -name "*.cc" -o -name "*.cpp" -o -name "*.cxx" > gtags.files
gtags -f gtags.files

上面的命令执行完毕后,会生成 GPATH、GRTAGS、GTAGS 几个索引文件。

在 vim 中执行 :GtagsCscope <ENTER> 即可加载索引文件,最后就是使用快捷键愉快地浏览源码文件了。

参考链接

fedora 上安装 fcitx5 rime

现在 fcitx 已经升级到了 fcitx5, 本来用着 fcitx4 挺好,也没有想着升级,在折腾 fcitx.vim 的时候发现 fcitx 居然升级了,
使得我的 vim 插件无法正常工作了,一顿折腾,本来以为很简单没想到进了个大坑 。
主要是不愿意放弃我的一万多行的 rime 用户词库,多年的积累了,不过 Linux 用户不就是老折腾吗, 唉。

fcitx5-rime 的默认的配置目录已经变为 ~/.local/share/fcitx5/rime, fcitx4 默认的配置目录是 ~/.config/fcitx/rime

安装 fcitx5 和 fcitx5 rime

1
2
sudo dnf install -y fcitx5 fcitx5-autostart fcitx5-chinese-addons fcitx5-configtool fcitx5-gtk fcitx5-qt
sudo dnf install -y fcitx5-rime

Fedora dnf 已经默认有 fcitx5-rime 的安装包了,不用自己重新编译了,非常不错。 fcitx5-chinese-addons
为 fcitx5 自己默认带的中文输入法,这些和 rime 没有什么关系,网络上有人说, fcitx 的中文输入较以前有较大改进。
fcitx5-autostart 用于自启动。后面发现系统自带的启动环境变量好像设置的有问题,不安装其实也没有什么问题,
自己手动执行 fcitx5 -d 即可。

设置正确的环境变量

修改 ~/.xprofile~/.zshrc/etc/profile 等文件

1
2
3
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS="@im=fcitx5"

编译 fcitx5-qt5

为了使我们自己编译的 vnote 可以正常使用 fcitx5, 需要编译 fcitx5-qt,新版的代码需要安装依赖 qt5-qtbase-private-devel 要不会出现 Parse error at “IID” 的错误。

sudo dnf install qt5-qtbase-private-devel.x86_64

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
git clone git@github.com:fcitx/fcitx5-qt.git

cat << EOF > build_linux.sh
QTDIR="/home/henices/Qt5.12.9/5.12.9/gcc_64/"
PATH="$QTDIR/bin:$PATH"
LDFLAGS=-L$QTDIR/lib
CPPFLAGS=-I$QTDIR/include

rm -rf build
mkdir -p build
cd build
cmake ..
make -j8
EOF

bash build_linux.sh

编译完成后将生成的 so 文件 copy 到 qt 的插件目录:

1
2
cd build
cp ./qt5/platforminputcontext/libfcitx5platforminputcontextplugin.so /home/henices/Qt5.12.9/5.12.9/gcc_64/plugins/platforminputcontexts/

配置中文环境

1
2
3
4
sudo vim /etc/locale.conf

export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

安装 rime 词库

rime 现在已经使用 plum 管理词库,如果需要安装双拼输入法的,可以执行下面的命令:

1
2
curl -fsSL https://git.io/rime-install | bash
rime_frontend=fcitx5-rime bash rime-install double_pinyin

rime 为了保证输入速度,词库很小,为了能够自动显示更多的词组,就需要使用拓展词库。

1
2
git clone https://github.com/rime-aca/dictionaries.git
cp dictionaries/luna_pinyin.dict/* ~/.local/share/fcitx5/rime/

安装了上面的拓展词库后,输入特殊符号的能力还是比较弱,需要把 symbols.yaml 也给加进来。

https://github.com/rime/rime-prelude 提供了我们所需要的 symbols.yaml 和 default.yaml,
可以使用 東風破 安裝: rime_frontend=fcitx5-rime bash rime-install prelude

由于我们使用的是自然码双拼,需要修改的文件为 double_pinyin.custom.yaml

1
2
3
4
5
patch:
# 載入朙月拼音擴充詞庫
"translator/dictionary": luna_pinyin.extended
"punctuator/import_preset": symbols
"recognizer/patterns/punct": "^/([A-Z|a-z]*|[0-9]|10)$"

设置完成后,要重新启动输入法,比如要输入 ☆ ,输入 /xh 即可

将用户词库导入 rime

rime_dict_manager -i luna_pinyin luna_pinyin.userdb.txt

这一步很关键啊,多年的积累不能浪费了。

配置 fcitx5 皮肤

fcitx5 默认的皮肤不太好看,所以下载更新了皮肤,这款简约风格的皮肤非常符合老夫的胃口。

1
2
git clone https://github.com/thep0y/fcitx5-themes.git
cp spring ~/.local/share/fcitx5/themes -r

修改配置文件 ~/.config/fcitx5/conf/classicui.conf

1
2
3
4
5
6
7
8
9
10
11
# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="Smartisan Compact CNS 13"

# 主题(这里要改成你想要使用的主题名,主题名就在下面)
Theme=spring

另外还有一款 fcitx5 皮肤相对流行:https://github.com/hosxy/Fcitx5-Material-Color

切换皮肤的方法是,点击鼠标右键点击 配置 -> 附加组件 -> 经典用户界面 -> 点击右边图标 -> 选择皮肤

设置 fcitx rime 单行模式

如果要将输入法设置为单行模式,需要修改配置文件 ~/.config/fcitx5/conf/rime.conf

1
PreeditInApplication=True

或者按快捷键 ctrl + alt + p, 这个快捷键可以来回切换很方便,单行还是双行就因人而异了,我个人觉得单行好点。

让 fcitx5 正确显示菜单

要做这个步骤是因为 rime 有 「部署」、「同步」这几个操作按钮,如果不正确配置的话在 fcitx5 上没法正常显示。
fcitx5 在任务上有个托盘图标,点击右键就可以看到这些菜单。

要让 fcitx 正确显示菜单,关键在于让 rime 输入法默认处于激活状态,根据 fcitx5 配置的提示第一个输入法为非激活状态。

  • (1) 将第一个输入法设置为 键盘-英语 (美国),第二个输入法设置为 中州韵
  • (2) 在全局设置中,勾上默认状态为激活,共享输入状态设置为 程序

fcitx.vim

这个章节是写给 linux vim 用户看的,没有此需求的可以直接跳过这段。

vim 确实是程序编辑的利器,但是在用vim 写中文文档的时候,有一个痛点,你在用 fcitx 写中文的时候想保存文档,
vim 必须切换到 normal 模式才能输入保存的命令 :w,进入normal 模式的方法是连续按两下 ESC,好了现在你应该
输入命令了,但是你没法输入你现在还在打中文呢,没有办法你必须先切换到英文输入法,然后才能正确地输入 :w 痛苦啊。

fcitx.vim 就是为解决这个痛点而生的插件,个人觉得这是vim 必装的几个插件之一。fcitx.vim 的github 仓库
地址为:https://github.com/lilydjwg/fcitx.vim

值得一提的是这个仓库有两个分支,fcitx4 分支 和 fcitx5 分支,使用的时候一定要分清楚,这两个分支如果
使用错了,就没法正常使用 fcitx.vim 插件了。fcitx4 和 fcitx5 dbus 对象名字有变化,导致代码通用性不好。
现在默认分支为 fcitx5,如果你使用 fcitx4 可能直接 git clone 下来就会发现插件用不了,我也是因为这个
原因才发现 fcitx 居然更新了。

后记

可能有些人不知道为什么要折腾 rime,rime 的用户词库文件是个宝贝,这个词库是都是你真实的在日常使用中用到的词库,小巧又实用还能到处同步,上传到云后永不丢失,符合自己的数据自己掌握的硬道理。至于国内的那些输入法,我就不加以评价了,在这商业的社会要保持基本的做人底线不易。

参考资料