This commit is contained in:
Dreagonmon 2023-11-26 21:39:47 +08:00
commit 47d9fb42d4
15 changed files with 289 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
book

6
README.md Normal file
View File

@ -0,0 +1,6 @@
# 测井解释软件 使用文档
使用mdbook生成html文档
* `mdbook build` 生成文档
* `mdbook serve` 提供网站服务并监听更改以更新(开发用)

6
book.toml Normal file
View File

@ -0,0 +1,6 @@
[book]
authors = ["Dreagonmon"]
language = "zh"
multilingual = false
src = "src"
title = "测井解释软件 使用文档"

1
rsyncd/rsyncd.bat Normal file
View File

@ -0,0 +1 @@
C:\D\msys64\msys2_shell.cmd -here -msys -c "rsync --daemon --config=rsyncd.conf --no-detach"

61
rsyncd/rsyncd.conf Normal file
View File

@ -0,0 +1,61 @@
######################################################################################################
# ******进程相关全局配置******
######################################################################################################
# = 后面的值可根据自己的实际情况更改
# pid file 守护进程pid文件
# port 守护进程监听端口可更改由xinetd允许rsyncd时忽略此参数
# address 守护进程监听ip由xinetd允许rsyncd时忽略此参数
pid file = ./rsyncd.pid
lock file = ./rsyncd.lock
port = 8023
address = 192.168.56.101
#rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置,
#uid = root
#gid = root
#允许 chroot提升安全性客户端连接模块首先chroot到模块path参数指定的目录下
#chroot为yes时必须使用root权限且不能备份path路径外的链接文件
use chroot = no
#只读
read only = no
#只写
write only = no
#允许访问rsyncd服务的ipip端或者单独ip之间使用空格隔开
hosts allow = 192.168.56.101/255.255.255.0 127.0.0.1/255.255.255.0
#不允许访问rsyncd服务的ip*是全部(不涵盖在hosts allow中声明的ip注意和hosts allow的先后顺序)
hosts deny = *
#客户端最大连接数
max connections = 5
#欢迎文件路径,可选的
#motd file = /etc/rsyncd/rsyncd.motd
#日志相关
# log file 指定rsync发送消息日志文件而不是发送给syslog如果不填这个参数默认发送给syslog
# transfer logging 是否记录传输文件日志
# log format 日志文件格式格式参数请google
# syslog facility rsync发送消息给syslog时的消息级别
# timeout连接超时时间
log file = ./rsyncd.log
transfer logging = no
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
#模块验证密码文件 可放在全局配置里
strict modes = no
secrets file=./rsyncd.secrets
######################################################################################################
# ******模块配置(多个)******
######################################################################################################
#模块 模块名称必须使用[]环绕比如要访问data1,则地址应该是data1user@192.168.1.2::data1
[wincode]
#模块根目录,必须指定
path=./
#是否允许列出模块里的内容
list=yes
#忽略错误
#ignore errors
#模块验证用户名称,可使用空格或者逗号隔开多个用户名
auth users = dreagonmon
#注释
#comment = some description about this moudle
#排除目录,多个之间使用空格隔开
#exclude = test1/ test2/

1
rsyncd/rsyncd.secrets Normal file
View File

@ -0,0 +1 @@
dreagonmon:123456

8
src/SUMMARY.md Normal file
View File

@ -0,0 +1,8 @@
# Summary
- [简介](./chapter_home.md)
- [预处理](./chapter_preprocess.md)
- [其它工具](./chapter_utils.md)
- [附录](./appendix/index.md)
* [正则表达式](./appendix/regexp.md)
* [重命名规则](./appendix/rename_pattern.md)

0
src/appendix/index.md Normal file
View File

114
src/appendix/regexp.md Normal file
View File

@ -0,0 +1,114 @@
# 正则表达式
## 元字符
元字符是正则表达式规定的一个特殊代码,它不代表自己本身的字符,而是具有特殊含义。
几个例子:
- `\ba\w*\b` 匹配以字母a开头的单词——先是某个**单词开始**处(`\b`)然后是字母a,然后是任意数量的**字母或数字**(`\w*`),最后是**单词结束**处(`\b`)。
- `\d+` 匹配1个或更多连续的**数字**。这里的`+`是和`*`类似的元字符,不同的是`*`匹配重复**任意次**(可能是0次),而`+`则匹配重复**1次或更多次**。
- `\b\w{6}\b` 匹配刚好6个字符的**单词**。
常用的元字符如下表所示:
| 字符 | 说明 |
|:----:|:----:|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配文本的开始 |
| $ | 匹配文本的结束 |
## 反义
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。
常用的反义字符如下表所示:
| 字符/语法 | 说明 |
|:----:|:----:|
| \W | 匹配任意不是字母,数字,下划线,汉字的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配任意非数字的字符 |
| \B | 匹配不是单词开头或结束的位置 |
| [\^x] | 匹配除了x以外的任意字符 |
| [\^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
例子:
- `\S+`匹配不包含空白符的字符串。
- `<a[^>]+>`匹配用尖括号括起来的以a开头的字符串。
## 字符转义
如果你想查找元字符本身的话,比如你查找`.`,或者`*`,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。
这时你就得使用`\`(反斜杠在回车Enter键左边或左上)来取消这些字符的特殊意义。因此,你应该使用`\.``\*`。当然,要查找`\`本身,你也得用`\\`
例如: `deerchao\.cn`匹配"deerchao.cn"`C:\\Windows`匹配"C:\Windows"。
## 重复
元字符`^`(和数字6在同一个键位上的符号)和`$`都匹配一个位置,这和`\b`有点类似。`^`匹配你要用来查找的**字符串的开头**`$`匹配**结尾**。这两个代码在验证输入的内容时非常有用比如一个网站如果要求你填写的QQ号必须为5位到12位数字时可以使用: `^\d{5,12}$`
这里的`{5,12}`和前面介绍过的`{2}`是类似的,只不过`{2}`匹配**只能不多不少重复2次**`{5,12}`则是重复的次数**不能少于5次不能多于12次**,否则都不匹配。
因为使用了`^``$`,所以输入的整个字符串都要用来和`\d{5,12}`来匹配,也就是说整个输入必须是**5到12个数字**因此如果输入的QQ号能匹配这个正则表达式的话那就符合要求了。
常用的限定符如下表所示:
| 字符/语法 | 说明 |
|:----:|:----:|
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
## 贪婪与懒惰
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配**尽可能多**的字符。以这个表达式为例:`a.*b`它将会匹配最长的以a开始以b结束的字符串。如果用它来搜索aabab的话它会匹配整个字符串aabab。这被称为**贪婪**匹配。
有时,我们更需要**懒惰**匹配,也就是匹配**尽可能少**的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号`?`。这样.`*?`就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
## 字符类
要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办?
很简单,你只需要在方括号里列出它们就行了,像`[aeiou]`就匹配任何一个英文元音字母,`[.?!]`匹配标点符号(.或?或!)。
我们也可以轻松地指定一个字符**范围**,像`[0-9]`代表的含意与`\d`就是完全一致的:一位数字;同理`[a-z0-9A-Z_]`也完全等同于`\w`(如果只考虑英文的话)。
下面是一个更复杂的表达式:`\(?0\d{2}[) -]?\d{8}`
这个表达式可以匹配几种格式的电话号码,像(010)88886666或022-22334455或02912345678等。我们对它进行一些分析吧首先是一个转义字符`\(`,它能出现0次或1次(`?`),然后是一个0后面跟着2个数字(`\d{2}`),然后是)或-或空格中的一个它出现1次或不出现(`?`)最后是8个数字(`\d{8}`)。
## 分枝条件
不幸的是刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题我们需要用到分枝条件。
正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用`|`把不同的规则分隔开。
下面是几个例子:
- `0\d{2}-\d{8}|0\d{3}-\d{7}`这个表达式能匹配两种以连字号分隔的电话号码一种是三位区号8位本地号(如010-12345678)一种是4位区号7位本地号(0376-2233445)。
- `\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}`这个表达式匹配3位区号的电话号码其中区号可以用小括号括起来也可以不用区号与本地号间可以用连字号或空格间隔也可以没有间隔。你可以试试用分枝条件把这个表达式扩展成也支持4位区号的。
- `\d{5}-\d{4}|\d{5}`这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题**使用分枝条件时,要注意各个条件的顺序**。如果你把它改成`\d{5}|\d{5}-\d{4}`的话那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
## 分组
我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?
你可以用**小括号**来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。
`(\d{1,3}\.){3}\d{1,3}`是一个简单的IP地址匹配表达式。要理解这个表达式请按下列顺序分析它`\d{1,3}`匹配1到3位的数字`(\d{1,3}\.){3}`匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次最后再加上一个一到三位的数字(`\d{1,3}`)。
不幸的是它也将匹配256.300.888.999这种不可能存在的IP地址。如果能使用算术比较的话或许能简单地解决这个问题但是正则表达式中并不提供关于数学的任何功能所以只能使用冗长的分组选择字符类来描述一个正确的IP地址`((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)`

View File

@ -0,0 +1,25 @@
# 重命名规则
## 基本语法
![重命名规则语法](../images/rename_pattern_rule.jpg)
## 示例
假设正则表达式中的捕获组1为apple
(例如,用正则表达式`\b(a\w+)\b`去匹配文本apple,第一个捕获组就是apple)
| 重命名规则 | 结果 |
|:----:|:----:|
| $$ | $ |
| $1 | apple |
| $2 | ⟦空⟧ |
| $1>U | APPLE |
| $1>L | apple |
| $1>F | Apple |
| $1{le>lication} |application |
| $1{A>b} | apple |
| $1>F{A>b} | bpple |
| $1{p>b}{a>p} | pbble |
| $1{a>p}{p>b} | bbble |

1
src/chapter_home.md Normal file
View File

@ -0,0 +1 @@
# 简介

46
src/chapter_preprocess.md Normal file
View File

@ -0,0 +1,46 @@
# 预处理
## 选择工作井次
本软件的大部分功能都是在同一个井次下完成的,在其它所有操作之前需要选择井次。
## 重命名导入曲线
从同一口井下的其它井次导入曲线。
操作步骤如下:
* 使用ciflog的数据转换功能将wis数据导入一口井下
* 打开`重命名导入曲线`功能,选择全部曲线
* 选择合适的重命名模板,点击`加载`
* 点击`预览`查看重命名的结果
* 点击`导入`将曲线导入工作井次当中,如果工作井次中有相同名称的曲线则会被覆盖
曲线匹配规则使用[**正则表达式**](./appendix/regexp.md)。
曲线重命名规则配合曲线匹配规则里面的捕获组使用,基于[**自定义的语法**](./appendix/rename_pattern.md)。
## 曲线映射
设置计算所需数据所对应的曲线。
## 异常数据处理
对曲线里的异常数据进行替换。
* 选择需要处理异常数据的曲线
* 选择并输入数据异常的条件
* 选择并输入异常数据的替换方法
* 点击`应用`对选择的曲线进行处理,处理后的数据会覆盖原曲线
## 数据转换
对曲线数据进行简单的计算。
* 选择需要处理异常数据的曲线
* 输入数据计算的公式
* 点击`应用`对选择的曲线进行处理,处理后的数据会覆盖原曲线
## 管柱结构
创建管柱结构表使用ciflog自己的表格编辑器完成管柱结构的编辑

7
src/chapter_utils.md Normal file
View File

@ -0,0 +1,7 @@
# 其它工具
## 曲线选择工具
即选择曲线对话框。
曲线匹配规则使用[**正则表达式**](./appendix/regexp.md)。

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

12
upload_doc.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
CWD=`dirname $0`
cd "$CWD"
rsync -auzv \
--safe-links \
--delete \
--delete-excluded \
./ \
--port=8023 \
rsync://dreagonmon@192.168.56.101/wincode/logutils-docs/