commit 47d9fb42d439387d1cff6615af88da13b0147e49 Author: Dreagonmon <531486058@qq.com> Date: Sun Nov 26 21:39:47 2023 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7585238 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +book diff --git a/README.md b/README.md new file mode 100644 index 0000000..53de598 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# 测井解释软件 使用文档 + +使用mdbook生成html文档 + +* `mdbook build` 生成文档 +* `mdbook serve` 提供网站服务并监听更改以更新(开发用) diff --git a/book.toml b/book.toml new file mode 100644 index 0000000..6c6e969 --- /dev/null +++ b/book.toml @@ -0,0 +1,6 @@ +[book] +authors = ["Dreagonmon"] +language = "zh" +multilingual = false +src = "src" +title = "测井解释软件 使用文档" diff --git a/rsyncd/rsyncd.bat b/rsyncd/rsyncd.bat new file mode 100644 index 0000000..634bd37 --- /dev/null +++ b/rsyncd/rsyncd.bat @@ -0,0 +1 @@ +C:\D\msys64\msys2_shell.cmd -here -msys -c "rsync --daemon --config=rsyncd.conf --no-detach" diff --git a/rsyncd/rsyncd.conf b/rsyncd/rsyncd.conf new file mode 100644 index 0000000..51ad9c8 --- /dev/null +++ b/rsyncd/rsyncd.conf @@ -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服务的ip,ip端或者单独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/ diff --git a/rsyncd/rsyncd.secrets b/rsyncd/rsyncd.secrets new file mode 100644 index 0000000..644c510 --- /dev/null +++ b/rsyncd/rsyncd.secrets @@ -0,0 +1 @@ +dreagonmon:123456 \ No newline at end of file diff --git a/src/SUMMARY.md b/src/SUMMARY.md new file mode 100644 index 0000000..f0adf2e --- /dev/null +++ b/src/SUMMARY.md @@ -0,0 +1,8 @@ +# Summary + +- [简介](./chapter_home.md) +- [预处理](./chapter_preprocess.md) +- [其它工具](./chapter_utils.md) +- [附录](./appendix/index.md) + * [正则表达式](./appendix/regexp.md) + * [重命名规则](./appendix/rename_pattern.md) diff --git a/src/appendix/index.md b/src/appendix/index.md new file mode 100644 index 0000000..e69de29 diff --git a/src/appendix/regexp.md b/src/appendix/regexp.md new file mode 100644 index 0000000..21ca1a1 --- /dev/null +++ b/src/appendix/regexp.md @@ -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开头的字符串。 + +## 字符转义 + +如果你想查找元字符本身的话,比如你查找`.`,或者`*`,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。 + +这时你就得使用`\`(反斜杠,在回车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?)`。 diff --git a/src/appendix/rename_pattern.md b/src/appendix/rename_pattern.md new file mode 100644 index 0000000..75362a2 --- /dev/null +++ b/src/appendix/rename_pattern.md @@ -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 | diff --git a/src/chapter_home.md b/src/chapter_home.md new file mode 100644 index 0000000..b6d4af6 --- /dev/null +++ b/src/chapter_home.md @@ -0,0 +1 @@ +# 简介 diff --git a/src/chapter_preprocess.md b/src/chapter_preprocess.md new file mode 100644 index 0000000..5bacd3f --- /dev/null +++ b/src/chapter_preprocess.md @@ -0,0 +1,46 @@ +# 预处理 + +## 选择工作井次 + +本软件的大部分功能都是在同一个井次下完成的,在其它所有操作之前需要选择井次。 + +## 重命名导入曲线 + +从同一口井下的其它井次导入曲线。 + +操作步骤如下: + +* 使用ciflog的数据转换功能,将wis数据导入一口井下 +* 打开`重命名导入曲线`功能,选择全部曲线 +* 选择合适的重命名模板,点击`加载` +* 点击`预览`查看重命名的结果 +* 点击`导入`将曲线导入工作井次当中,如果工作井次中有相同名称的曲线则会被覆盖 + +曲线匹配规则使用[**正则表达式**](./appendix/regexp.md)。 + +曲线重命名规则配合曲线匹配规则里面的捕获组使用,基于[**自定义的语法**](./appendix/rename_pattern.md)。 + +## 曲线映射 + +设置计算所需数据所对应的曲线。 + +## 异常数据处理 + +对曲线里的异常数据进行替换。 + +* 选择需要处理异常数据的曲线 +* 选择并输入数据异常的条件 +* 选择并输入异常数据的替换方法 +* 点击`应用`对选择的曲线进行处理,处理后的数据会覆盖原曲线 + +## 数据转换 + +对曲线数据进行简单的计算。 + +* 选择需要处理异常数据的曲线 +* 输入数据计算的公式 +* 点击`应用`对选择的曲线进行处理,处理后的数据会覆盖原曲线 + +## 管柱结构 + +创建管柱结构表,使用ciflog自己的表格编辑器完成管柱结构的编辑 diff --git a/src/chapter_utils.md b/src/chapter_utils.md new file mode 100644 index 0000000..b2c1c1d --- /dev/null +++ b/src/chapter_utils.md @@ -0,0 +1,7 @@ +# 其它工具 + +## 曲线选择工具 + +即选择曲线对话框。 + +曲线匹配规则使用[**正则表达式**](./appendix/regexp.md)。 diff --git a/src/images/rename_pattern_rule.jpg b/src/images/rename_pattern_rule.jpg new file mode 100644 index 0000000..1dca90d Binary files /dev/null and b/src/images/rename_pattern_rule.jpg differ diff --git a/upload_doc.sh b/upload_doc.sh new file mode 100755 index 0000000..6752216 --- /dev/null +++ b/upload_doc.sh @@ -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/