文档工具

笔记

此工具可以帮助记录信息:
- 笔记是html格式的信息片段:
       - 可以用六种模式编辑笔记。
       - 可对笔记设置标签。
       - 可对笔记设置风格。
- 笔记本是一组笔记和笔记本。
       -  笔记本名不应包含字符串“ > ”(“>”前后是空格)。
       -  笔记本被组构为一棵树,即多个笔记本可以是其它笔记本的孩子。

查看PDF

此工具帮助查看PDF:
  - 每页被显示为一张图像。
  - 页面包含的文字可以被提取出来。
    若PDF文件只包含图像,则无法提取出文字。
  - 页面可以被转换为Html。
    若PDF文件只包含图像,则html也只包含图像。
  - 利用被转换的图像,可以做文字识别(OCR)

注意,有两类PDF文件:
  - “可编辑的PDF”,由图像和文字构成,这些元素可以被修改和提取。
  - “扫描的PDF”,由图像构成,只能修改和提取图像。
图像中的文字不能被修改和提取,但是可以由OCR技术识别出来。

编辑Markdown

此工具用于编辑Markdown文件(MD):
-  打开文件时将自动判断字符集和换行符。
-  若加载的内容不正确,使用“文件-格式”、改变字符集并点击按钮“确定”。
-  相应的html被转换(只读)。
-  当页数大于1时,过滤字串或定位行/对象之前应保存修改的内容。

编辑网页

编辑网页:
       -  六种格式:“网页”、“网页代码”、“树形”、“富文本”、“Markdown”、“文本”。
       -  每个格式都可以单独修改网页。
       -  点击按钮“同步”(F10),把当前格式中的修改应用到其它格式。
       -  保存网页时,取用当前格式下的内容,并自动同步到其它格式。
       -  选项:在切换格式时自动同步。
       -  在“弹出”菜单中选择要显示的格式和内容。

注意:
       -  对于“网页”格式,可选网页是否“可编辑”。
       -  同步内容时,每种格式都有可能丢失一些其它格式的特定内容。
          尤其是“文本”格式,会丢失绝大多数网页格式。

网页截图

对于网页截图:
  - 根据网速设置延迟的值。有的网页是懒渲染的,即内容在滚屏时才加载。
  - 检查窗口尺寸和字体尺寸是否适合。越大的窗口和字体意味着越好的截图。
  - 最好关闭网页的弹窗,否则弹窗将被重复截取。

编辑JSON

此工具:
  - 基于JACKSON解析和处理JSON数据。
  - 加载JSON所有数据,因此不适用于处理数据量很大的JSON文件。
  - 用户可以用两种模式编辑JSON:
          - “树形”。可以添加、修改、和删除Json结点。
          - “文本”。可以用字符串来修改和解析Json数据。
  - 当前页签下的编辑模式为“当前编辑模式”。
  - 以下按钮对当前编辑模式生效:
       -  点击按钮“同步”(F10),把当前编辑模式中的修改应用到其它模式。
       -  点击按钮“保存”(CTRL+S或ALT+S),把当前编辑模式的修改保存下来,并将修改自动同步到其它模式。
       -  点击按钮“菜单”(F6)或右键点击编辑区域,以弹出右键菜单。

JSON的构成:
  - 字符串:双引号围起来的任意unicode字符集
  - 常数:true/false/null
  - 名:字符串
  - 值:数字/字符串/常数/对象/数组
  - 属性:
                名:值
  - 对象:
                { 属性1, 属性2, ... }
  - 数组:
                [ 值1, 值2, ... ]

编辑XML

此工具帮助编辑XML:
  - 基于JDK的DOM模型来解析和处理XML数据。
  - 加载XML所有数据,因此不适用于处理数据量很大的XML文件。
  - 用户可以用两种模式编辑XML:
          - “树形”。可以添加、修改、和删除XML结点。
          - “XML”。可以用文本来修改和解析XML数据。
  - 当前页签下的编辑模式为“当前编辑模式”。
  - 以下按钮对当前编辑模式生效:
       -  点击按钮“同步”(F10),把当前编辑模式中的修改应用到其它模式。
       -  点击按钮“保存”(CTRL+S或ALT+S),把当前编辑模式的修改保存下来,并将修改自动同步到其它模式。
       -  点击按钮“菜单”(F6)或右键点击编辑区域,以弹出右键菜单。

编辑文本

此工具用于编辑文本文件:
-  打开文件时将自动判断字符集和换行符。
-  若加载的内容不正确,使用“文件-格式”、改变字符集并点击按钮“确定”。
-  文本按当前字符集被编码显示在右面板中。(只读)
-  当页数大于1时,过滤字串或定位行/对象之前应保存修改的内容。
-  每个换行符计为一个字符。 

字符集

当检测到文件中包含BOM,则文件字符集是明确的

BOM

BOM(Byte Order Marks) 是文件头的2或3个字节,用于UTF-16或UTF-32。
一些Windows程序会在UTF-8文件头也写上BOM,其可能导致在别的平台读写错误。

查找/替换 - 文本

关于查找/替换:
-  “查找下一个”/“查找前一个”/“替换”都是从当前光标开始。
- “计数”/“全部替换”是针对整个文档,从第一个字符开始。
- 查找字串和替换字串都可以是多行。
- 每个换行符算作一个字符。

由于算法的限制,对于多页文档查找规则表达式时,假设:
匹配的字符串的最大长度小于当前JVM可用内存的1/16。

查找/替换 - 字节

关于查找/替换:
-  “查找下一个”/“查找前一个”/“替换”都是从当前光标开始。
- “计数”/“全部替换”是针对整个文档,从第一个字符开始。
- 查找字串和替换字串应当是十六进制格式,如页面。
  即每个字节表达为3个字符:2个大写字母/数字加上1个空格。

由于算法的限制,对于多页文档查找规则表达式时,假设:
匹配的字符串的最大长度小于当前JVM可用内存的1/16。

过滤行

包含任一:       a | b | c
包含所有:       a & b & c
不含任一:       !( a | b | c) = !a & !b & !c
不含所有:       !(a & b & c) = !a | !b | !c

查找文本文件中的字串

查找字串可以是多行。
查找字串中的换行符按照当前文件换行符的定义来处理。

由于算法的限制,对于多页文档查找规则表达式时,假设:
匹配的字符串的最大长度小于当前JVM可用内存的1/16。

替换文本文件中的字串

查找字串和替换字串都可以是多行。
查找字串和替换字串中的换行符按照当前文件换行符的定义来处理。

由于算法的限制,对于多页文档查找规则表达式时,假设:
匹配的字符串的最大长度小于当前JVM可用内存的1/16。

转换文本为网页

转换并粘贴系统粘贴板中的文本:
-  将所有"&"换成"&"。
-  将所有"\""换成"""。
-  将所有"<"换成"<"。
-  将所有">"换成">"。
-  将所有"©"换成"©"。
-  将所有"®"换成"®"。
-  将所有"™"换成"™"。
-  将所有空格换成" "。
-  每行末尾添加“
”。

查找文件中的字节

查找字串应当是十六进制格式。
即每个字节表达为3个字符:2个大写字母/数字加上1个空格。

由于算法的限制,对于多页文档查找规则表达式时,假设:
匹配的字符串的最大长度小于当前JVM可用内存的1/16。

MyBox粘贴板中的文本

双击项目或点击按钮“粘贴”以粘贴到目标

若选择了“不重复”:
 - 新进来的文本将被检查是否与已存在的项目相同。
   若已存在,则不添加新项目。已存在的项目更新为新的时间。
 - 所有已存在的项目不会被检查是否有重复。

查看Word文件-网页/文本模式

此工具用以查看Word文件:
-  文件".doc"(Word 97)被转换为html(保留大部分格式)。
-  文件".docx"(Word 2007)被转换为文本(格式丢失).

图像工具

编辑图像

此工具帮助编辑图像。
图像以色彩空间“sRGB”的24位RGB或32位ARGB格式处理,即使它被转变为灰色或者黑白色。
若要转换色彩空间或者压缩图像文件,执行“另存为”(F5 或 CTRL+B 或 ALT+B)。

查看图像时要限制像素,设置“加载宽度”。

编辑SVG(可缩放矢量图形)

此工具帮助编辑SVG(Scalable Vector Graphics ,可缩放矢量图形):
  - 基于Apache Batik来解析和处理SVG数据。
  - 加载SVG所有数据,因此不适用于处理数据量很大的SVG文件。
  - 用户可以用两种模式编辑SVG:
          - “树形”。可以添加、修改、和删除SVG结点。
          - “XML”。可以用文本来修改和解析SVG数据。
  - 当前页签下的编辑模式为“当前编辑模式”。
  - 以下按钮对当前编辑模式生效:
       -  点击按钮“同步”(F10),把当前编辑模式中的修改应用到其它模式。
       -  点击按钮“保存”(CTRL+S或ALT+S),把当前编辑模式的修改保存下来,并将修改自动同步到其它模式。
       -  点击按钮“菜单”(F6)或右键点击编辑区域,以弹出右键菜单。

已知问题:当SVG数据格式错误或包含不合法内容时,可能导致MyBox崩溃。

图像量化

减少图像中颜色数量的技术称为“颜色量化”。
为了不同的目的可以选择不同的算法:
   - 对于多数图像的256色颜色量化,RGB均等量化最快并且足够好。
   - K-Means聚类适用于计算图像中最不同的颜色。
   - 统计量化适用于计算图像中出现最多的颜色。

基本原理:
   - 把颜色空间从RGB(256*256*256)或HSB(360*100*100)映射到指定尺寸的颜色集(目标调色板)。
   - 对于K-Means聚类和统计量化,实际有两次量化。
     颜色以RGB均等量化被预处理为更小的区域,然后计算运行于这个颜色集。

选项:
   - 既然颜色有三个维度,可以平衡通道的权重以得到更好的映射。
   - "抖动处理”可以改善颜色量化后的图像的质量。
   - 目标调色板的取色策略:
         - "中间色”可能调整量化后的图像的质量,但是可能产生原图像没有的新颜色。
         - "首色”只取原图像的原色。

结果的颜色数量可能与预期值不同:
- 当RGB/HSB均等量化构建调色板时,球体的尺寸可能大于目标大小。
- 当源图像包含较少的颜色时,结果的大小可能小于目标大小。

抖动处理

抖动处理是扩散量化误差以避免色带的技术。
在颜色量化(减色)以后,利用它可以改善图像质量。

色彩匹配

如何匹配颜色:
1)“色彩距离”或者“色相距离”表明两个颜色的差别。
   “颜色差别”的定义可以参考"https://en.wikipedia.org/wiki/Color_difference"
2)当颜色距离小于定义的距离值时,意味着两种颜色是“匹配的”。
3)当颜色距离定义为零时,则意味着颜色是精确匹配的。
4)当选择多个颜色来比较图像像素时,它们的关系是“或”,即像素与任意被选色彩匹配成功即为真

预乘透明

一些图像格式如png/tiff用专门的透明通道来保存像素的不透明度,称为“直接透明”。
“预乘透明”指将颜色通道乘以透明值。利用这个技术,没有透明通道的图像格式也可以展示出不透明度。
预乘透明会改变颜色通道的值,在缺失透明值的情况下图像无法被恢复。
所以,若图像不能被修改时不要应用这个技术。

阈值化

目标图像的颜色通道将只包含小值或者大值。
例如,若小值为0且大值为255,当图像处理完毕,像素的红蓝绿值不是0就是255。
因此,处理后的图像只包含以下颜色:
    黑色(red = 0, green = 0, blue = 0)
    白色(red = 255, green = 255, blue = 255)
    红色(red = 255, green = 0, blue = 0)
    绿色(red = 0, green = 255, blue = 0)
    蓝色(red = 0, green = 0, blue = 255)
    黄色(red = 255, green = 255, blue = 0)
    橙色(red = 255, green = 0, blue = 255)
    青色(red = 0, green = 255, blue = 255)

对比度

修改图像的对比度:
- 可针对对象:饱和度、明亮度、灰度。
- 可选以下算法:
       - 直方图均衡化:
             - 统计直方图:横轴为对象的值,纵轴为像素的数量。
             - 按正态分布的规律计算对象的新值。
             - 替换对象的值。
       - 直方图拉伸:
             - 输入参数:像素阈值、像素百分比
             - 统计直方图:横轴为对象的值,纵轴为像素的数量。
             - 计算横轴左右两端需要截断的位置,条件是:
               像素数量(y)小于给定的阈值、或者累计像素数量(area)小于给定百分比。
             - 替换对象的值:
                     - 左端被截断的像素为对象的最小值。
                     - 右端被截断的像素为对象的最大值。
                     - 中间未被截断的像素为按截断位置计算所得的归一化值。
       - 直方图偏移
             - 输入参数:对象值的偏移量,可为正值或负值。
             - 统计直方图:横轴为对象的值,纵轴为像素的数量。
             - 按偏移量计算对象的新值。
             - 替换对象的值。
- 透明像素被跳过:它们既不参与统计、也不被修改。

斜拉

以下映射可以使图像产生倾斜拉伸的效果:
     tx = x + rx * y
     ty = x * ry + y
其中:
     tx: 目标图像的横轴值
     ty: 目标图像的纵轴值
     x: 原图像的横轴值
     y: 原图像的纵轴值
     rx: 横向倾斜比率
     ry: 纵向倾斜比率

注意,以下组合将把图像(二维)映射为一条线(一维),因此非法:
1) rx=1   ry=1 
2) rx=-1   ry=-1

重复/平铺图像

此工具帮助制作背景/纹理图:
- 选择一个图像, 作为重复的单元。
- 选择重复的类型:
       - 按横向个数和纵向个数来重复单元。
       - 按画布的宽高来平铺单元。
- 设置单元的间隔。负值可以产生交错的效果。
- 设置目标图像的边沿。

采样图像

此工具减少图像的像素个数:
  - 移动矩形并调整它的尺寸,以定义需要的区域。
  - 设置宽度缩小比和高度缩小比。

当一个图像文件包含太多像素而被采样加载时,
本工具处理的是文件中的原图像而非加载到内存的图像。

分割图像

此工具将一个图像分割为多个部分。

当一个图像文件包含太多像素而被采样加载时,
本工具处理的是文件中的原图像而非加载到内存的图像。

编辑图像列表

本工具用以编辑图像列表:
- 可以添加:
      - 动态gif文件,每一帧都被加到列表中
      - 多帧tif文件,每一帧都被加到列表中
      - PDF文件,每一页被转换为图像并被加到列表中
      - PPT文件,每一页被转换为图像并被加到列表中
      - 系统粘贴板中的图像
      - 所有支持的图像格式文件      
- 移动图像以设置顺序。
- 设置图像的时长,用于播放列表和保存动态gif文件。
- 播放列表:用CTRL/SHIFT选择一些图像来播放,或不选任何图像以播放整个列表。
- 保存列表:
      - 用CTRL/SHIFT选择一些图像来保存,或不选任何图像以保存整个列表。
      - 将每一项保存为一个支持的图像格式文件。
      - 合并为一个多帧tif文件
      - 合并为一个动态gif文件
      - 合并为一个PDF文件
      - 合并为一个PPT文件

播放图像列表

此工具用于逐帧显示图像:
- 以下类型的文件可以播放:
      - 动态gif文件
      - 多帧tif文件
      - PPT 
      - PDF
- PPT/PDF文件的每页被转换为一帧图像来显示。
- 设置选项:
      - 要显示的帧范围
      - 图像加载的宽度
      - 对PDF图像设置dpi

识别图像中的文字

OCR引擎:
- 对于win,可以选择内置的和安装的tesseract。
- 对于linux和mac,只能使用安装的tesseract。

OCR数据文件目录:
- 可以设为任何可读可写的目录。
- 若已安装tesseract,建议设为它的子目录 "tessdata"。
- MyBox包含以下数据文件,若此目录下没有这些文件,则MyBox将它们把复制到此目录下:
        chi_sim.traineddata                     简体中文
        chi_sim_vert.traineddata             简体中文 - 竖排
        chi_tra.traineddata                      繁体中文
        chi_tra_vert.traineddata              繁体中文 - 竖排
        eng.traineddata                          英语
        equ.traineddata                          数学公式
        osd.traineddata                          朝向和脚本
   若你的账户无法写此目录则复制会失败。
   另外,这些文件只能被tessearact v4.* 或v5.*读取。

注意:当使用内置引擎时,文件/目录名最好是纯英文,以免失败。

所基于的OCR库自身包含若干预处理(如转为黑白)。
有时候使用原图直接识别更好。

提取图像的透明通道

对于每个源文件,将生成两个文件:
  "xxxxx_alpha.png" 只保存着源文件的透明通道,为PNG格式 
  "xxxxx_noAlpha.yyy" 只保存源文件的RGB通道,为所选格式

转换图像为SVG

对于大图像,可能会消耗大量CPU,内存,和时间,并且会生成大文件。

系统粘贴板中的图像

点击“开始”以后,工具将监视系统粘贴板中的图像并保存/显示它们。

系统粘贴板中的图像来自:截屏、或者软件产生(如“CTRL+c”)。

在Windows上,截屏的快捷键:
"PrintScreen"                            全屏截图。
"Alt+PrintScreen"                     对当前活跃窗口截屏。

在Linux上,截屏的快捷键:
"Ctrl+PrintScreen"                            全屏截图。
"Ctrl+Alt+PrintScreen"                     对当前活跃窗口截屏。
"Shift+Ctrl+PrintScreen"                  对选择的区域截屏。

在Mac上,截屏的快捷键:
"Command+Control+Shift+3"                             全屏截图。
"Command+Control+Shift+4"                             对选择的区域截屏。
"Command+Control+Shift+4+Spacebar"            对当前活跃窗口截屏。

管理颜色

此工具用于管理颜色和调色盘:
- 同一颜色在不同调色盘可以有不同的名字和顺序号:
      - 在数据表中可以修改颜色的名字和顺序号。
      - "顺序号"是浮点数,即可以带小数点。
         例如,把颜色的顺序号改为5.5,则它会被插入到顺序号为5和6的颜色之间。
      - 也可以拖放调色盘中的颜色以调整它们的顺序。
      - 点击按钮"整理调色盘中的序号"以把顺序号重写为步长为"1.0f"的值。
- 颜色的定义实际是保存在“所有颜色”列表中:
      - 当删除调色盘或者在调色盘中删除颜色,不会删除颜色本身的定义,它仍然在“所有颜色”中。
      - 在“所有颜色”列表中删除颜色,则会删除颜色的定义,同时在所有调色盘中删除此颜色。
      - 同一颜色不仅可以在不同调色盘中,也可以在同一调色盘中重复出现。
- 从文件导入颜色时:
      - 至少包含列"rgba"或"rgb"。即文件可以只含一列:"rgba"或"rgb"。
      - 文件还可以包含列"name"。

绘制色度图

用户可以输入/粘贴值或者打开文件以载入光谱数据。
用户数据将按以下规则被自动检验、计算、并被显示在表格中:
      - 文件可以包括注释和某种格式。
      - 数据中的以下字符将被忽略和跳过:
               " ,  |  {  }  [  ]  \t '
      - 每个有效数据项应当在同一行中,并在行前部包含以下4个数值:
               波长      X      Y      Z
        (行中其它数据将被忽略,即只有每行前四个数据才被读取)
      - “波长”应是整型,单位是nm。X/Y/Z是刺激值,为Double型。
          一行有效数据的例子:
               435	0.3285	0.01684	1.62296	
      - 数据应当已被适应为标准光源D50。

已被检验的用户数据可以被显示在色度图中,与标准数据做对比。

编辑ICC色彩特性文件

解码/编码的依据:ICC规范v4.3。
只有部分标签被解码和可编辑。
保存时,未解码的标签或不可编辑的标签将保持它们的原始值。

可以设置"每个数据的最大解码项"以避免因加载太多数据而导致低性能。
显示时,超过这个限制的数据项将被截断。

网络工具

下载网页

建议步骤:
1)设置选项。
2)输入或粘贴网址。
3)网址中的一级链接将列出来供你选择下载。
4)选择有用的链接。无意义的链接可能生成无用文件并且干扰最后的目录索引。
5)  若需要目录索引和合成PDF,则应确保文件名可以被正确排序。
     对于被选择的链接:
        -  使用功能“设置子目录名”以使其的子目录名字合理。
        -  使用功能“以链接名/标题/地址为文件名”以使其的文件名有意义。
        -  使用功能“在文件名前添加序号”以使其的文件名能正确排序。
     MyBox可以正确排序形如"xxx9", "xxx36", "xxx157"的文件名。
6)下载选择的链接。监视它们的状态。把失败的链接加回到下载队列中。

要对表行进行排序:
1)点击列头以按此列的升序排序。
2)再次点击列头以按此列的降序排序。
3)第三次点击列头以取消此列的排序。
4)按住SHIFT键并点击更多的列头以按多列排序。

编码/解码URL

此工具帮助将字符串与application/x-www-form-urlencoded MIME之间转换。

在编码时应用以下规则:
    -  "a"到"z"之间的字母、 "A"到 "Z"之间的字母、以及 "0"到 "9"之间的数字保留原样。
    -  特殊字符".", "-", "*", 和 "_"保留原样。
    -  空字符" "转换为加号"+"
    -  其它所有字符被认为是不安全的,首先采用指定的字符集转换为1个或多个字节。
        然后每个字节被表达为形如 "%xy"的3个字符的字符串,其中xy是字节的十六进制两位数字表示。

解码反过来。

批量查询DNS

修改DNS配置的步骤:
-  查询IP和主机之间的映射。
-  编辑系统主机文件。需要管理员权限。
-  刷新DNS缓存:
        - 在windows上,运行命令:
                      ipconfig  /flushdns
        - 在linux上,运行以下命令之一:
                     /etc/init.d/nscd restart 
                     systemctl restart nscd 
        - 在mac上,运行以下命令之一:
                     lookupd -flushcache
                     type dscacheutil -flushcache 
                     sudo killall -HUP mDNSResponder

微博截图

此工具用于截取任意微博账户的图像和内容:
   - 对于此网站,需要初始化Webview。首次运行此工具时,将自动执行此步。
     如果你错过此步或工具无法工作,点击左边的SSL按钮以执行此步。
   - 关于微博账户的地址:
        - 它是微博主页地址中问号“?”之前的字串。
        - 如何得知微博主页地址?
          用浏览器访问某人微博地址,点击页面上的“主页”,然后它的地址将显示在浏览器的地址栏里。
          复制微博地址到这里,删除问号“?”之后的字串以及“?”。
        - 注意:昵称地址不是真的地址。例如,“博物杂志”有昵称地址"https://weibo.com/bowu",
          但是它的真实主页地址是“https://weibo.com/p/1002061195054531”。

数据工具

   - "格式"只用于显示。在编辑输入数值时不会自动应用格式、而是保持原始的输入。
   - "对于非法数值" 只用于显示或者计算。在编辑输入数值时不会自动处理非法值。

管理数据

此工具管理以下对象:        
- 数据文件
      - 当csv/excel/文本数据文件被相应编辑器打开时,增加/修改此文件的记录。
      - 数据保存在数据文件中。
      - 删除数据文件的记录不会导致数据文件本身被删除。
- 数据粘贴板
      - 当数据复制到MyBox粘贴板中时,增加此数据的记录。
      - 数据保存在MyBox内部目录下的文件中。
      - 删除数据粘贴板的记录将会同时删除它的内部文件。
- 矩阵
      - 在矩阵管理器中增删改矩阵。
      - 数据保存在MyBox数据库中。
      - 删除矩阵的记录将会同时删除矩阵包含的数据。
- 数据库表
      - 在数据库表管理器中增删改数据库表。
      - 数据保存在MyBox数据库的表中。
      - 删除数据库表的记录将会同时删除数据库表包含的数据。

数据库表

此工具用以管理和编辑数据库中的数据表:
- 表名和列名应当满足“SQL标识符的限制”。
- 数据库表被创建以后:
      - 不能修改和删除主键的定义。
      - 可以添加和删除列定义,但是不能修改列定义。
- 数据被分页。当页数大于1时,运行一些功能之前必须保存当前页的修改。
- 对于字符串值,可以编辑和保存多行:
      - 若值是单行的(不包含换行符):
             - 点击数据单元时显示单行输入框。
             - 在值中写入"\n" 作为换行符、然后提交修改(回车或点击其它地方)。
      - 若值中包含换行符:
             - 点击数据单元时显示多行输入框。
             - 直接编辑多行文本。
- 数据可以用SQL语句查询。

SQL标识符

SQL标识符的限制:
- 最大长度为128。
- “普通标识符”
      - 指未用双引号包围的标识符:
            - 只能由字母、数字、和下划线(_)构成。
            - 只能由字母开头。
            - 字母和数字可以是Unicode(可以是中文)。
            - 不能是SQL保留字。
       - 当保存在数据库中,它被转换为大写的。
       - 当在SQL语句中引用它时,忽略大小写。
         例如,AbC等同于abc和aBC。
- “定界标识符”
       - 指用双引号包围的标识符。
       - 可以包含任何字符。
       - 当保存在数据库中时,它只取双引号包围的字串。
       - 当在SQL语句中引用它时,必须用双引号包围它,除了以下情形:它只包含大写字母和下划线。
         例如, "AbC"不同于AbC或"ABC",而"ABC"等同于ABC和aBc.

当MyBox创建表名或列名:若名字包含非法字符,则名字用引号包围。

XY图

选择数据以绘制XY图:
- 选择一列为“类别”。
- 选择若干列为“数值”。不同的数值序列显示为不同颜色或者形状。
- 条图:
        - 以条块的高度表示数据的大小。
        - 类别列总是被当作字串处理。
- 线图:
         - 以连接点的线条表示数据的趋势。
         - 类别列可以是数字或字串。
- 气泡图:
         - 以不同半径的多个圆表示数据的大小。
         - “类别”列和“数值”列定义数据的坐标。
         - 选择若干“大小”列,定义数据的大小。
         - 所有列都必须是数字,大小列必须是非负数。
- 散点图:
         - 以符号表示数据的分布。
         - 类别列可以是数字或字串。
- 面积图:
         - 以面积表示数据的大小。
         - 类别列总是被当作字串处理。

饼状图

选择数据以绘制饼图:
- 选择一列为“类别”。
- 选择一列为“数值”。
- 以分割的圆表示数据的比例。
- 数值序列必须都是非负数。

箱线图

箱线图用来展示数据的分布:
- 数据按照列/行/全部来升序排序
- 以下项可以显示出数据的聚集性和离散性:
         最小值          Q0 =  位于数据列的 0%(开头)
         下四分位数   Q1 =  位于数据列的 25%
         中位数          Q2 =  位于数据列的 50%(中部)
         上四分位数   Q3 =  位于数据列的 75%
         最大值          Q4 =  位于数据列的 100%(结尾)
- 以下项可以用于标识数据的异常值:
         下极端异常值线    E1 =  Q1 - 3 * ( Q3 - Q1 )
         下温和异常值线    E2 =  Q1 - 1.5 * ( Q3 - Q1 )
         上温和异常值线    E3 =  Q3 + 1.5 * ( Q3 - Q1 )
         上温和异常值线    E4 =  Q3 + 3 * ( Q3 - Q1 )
- 以下项可以用于离散性的参考:
         均值  = 数据的平均数
- 数值是用所选择的数据计算出来的。

相比较条图

相比较条图用来对比两类数据。以下规则用来计算颜色条:
- 若值等于零,不显示条
- 当按绝对值比较时:
      最大值 = 两个值列的最大绝对值
      百分比 = 值的绝对值 /  最大值
      宽度 = 最大宽度 * 百分比
      颜色 = 若值大于零, 为列的颜色;若值小于零,为列的颜色的反色
- 当按最大最小区间比较时:
      最大值 = 两个值列的最大值
      最小值 = 两个值列的最小值
      百分比 = (值 - 最小值)/ (最大值 - 最小值)
      宽度 = 最大宽度 * 百分比
      条的颜色 = 列的颜色

自比较条图

自比较条图用来对比数据与参考值。以下规则用来计算所选数据值颜色条:
- 若值等于零,不显示条
- 当按绝对值比较时:
      最大值 = 列/行/所有的最大绝对值
      百分比 = 值的绝对值 /  最大值
      宽度 = 最大宽度 * 百分比
      颜色 = 若值大于零, 为列的颜色;若值小于零,为列的颜色的反色
- 当按最大最小值区间比较时:
      最大值 = 列/行/所有的最大值
      最小值 = 列/行/所有的最小值
      百分比 = (值 - 最小值)/ (最大值 - 最小值)
      宽度 = 最大宽度 * 百分比
      条的颜色 = 列的颜色

XYZ图

注意:将生成一个html文件以显示图。
请确认你的系统网页浏览器支持WebGL并且未限制本地JavaScript文件。

设置风格 / 标记异常值

管理数据风格列表:
- 添加/编辑/删除风格。
- 定义条件以约束风格应用于哪些数据单元:
     - 数据行的范围
     - 列名
     - 行过滤
       注意:在添加或删除一些数据行以后,数据的行号可能会改变。
       例如,在第6行之前插入两行,则原来的第12行变成了第14行,而现在的第12行是原来的第10行。
       所以“行号”不是定位特定数据行的正确方式。
       引用特定的行的一个方法是列值构成的表达式。
- 定义风格的值:
     - 设置字体大小、颜色、粗体等。
     - 输入JavaFx CSS格式的更多值。
- 定义风格的标题和序号。
- 选择风格是否标识异常值。
- 所有风格按序号被逐条应用于数据。

简单线性回归

基于Apache Commons Math,此工具帮助生成简单线性回归的数据:
- 选择两列作为自变量和因变量。
- 回归不存储数据,所以在处理很多数据时计算本身没有内存限制。
- 当处理所有页时:
      - 若选择“在图上显示所有值”,则当图中加载很多数据时可能发生内存不够。
      - 否则,图上只显示当前页的数据,同时所有页都参与回归,所以没有内存限制。
- 应用线性模型,对于输入的参数,可以生成预测值。
- 在图上可以显示/隐藏拟合的点和线。

简单线性回归 - 组合

此工具帮助生成简单线性回归的数据:
    - 选择一些列作为自变量的候选。
    - 选择一些列作为因变量的候选。
    - 选择小数位数、alpha、是否包含截距。
    - 点击"确定"按钮后, 工具执行以下操作:
          - 对候选列进行两两组合:一列作为自变量、另一列作为因变量。
          - 计算这些简单线性回归模型。
          - 把模型按判定系数(R-Square)从高到低排序
    - 选择模型,点击"查看"按钮,以进一步查看相应的回归数据、拟合图、和残差图。

多重线性回归

基于Apache Commons Math,此工具帮助生成多重线性回归的数据:
    - 选择一些列作为自变量。所有数据必须是数字。
    - 选择一列为因变量。数据必须是数字。
    - 选择是否包含截距。
    - 点击"确定"按钮后:
            - 工具用Z-Score算法归一化所选数据。
            - 工具用普通最小二乘法(OLS)计算多重线性回归模型。
            - 结果包含:截距、系数、判定系数(R-Square)、调整后的R方。
  - 用户可以输入自变量的值,利用模型预测因变量的值。

多重线性回归 - 组合

此工具帮助生成多重线性回归的数据:
    - 选择一些列作为自变量的候选。
    - 选择一些列作为因变量的候选。
    - 选择是否包含截距。
    - 点击"确定"按钮后, 工具执行以下操作:
          - 对备选列进行组合作为自变量和因变量。
          - 计算这些多重线性回归模型。
          - 把模型按调整后的判定系数从高到低排序
    - 选择模型,点击"查看"按钮,以进一步查看相应的回归数据。

矩阵

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

矩阵相加 = 
        a11+b11   a12+b12
        a21+b21   a21+b21

要求: A和B的行数和列数相同

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

矩阵相减 = 
        a11-b11   a12-b12
        a21-b21   a21-b21

要求: A和B的行数和列数相同

例如:
A =  a11   a12   a13
        a21   a21   a23

B =  b11   b12
        b21   b21
        b31   b31

矩阵相乘 = 
        a11*b11+a12*b21+a13*b31   a11*b12+a12*b22+a13*b32 
        a21*b11+a22*b21+a23*b31   a21*b12+a22*b22+a23*b32 

要求: A的列数与B的行数相同

哈达马积

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

哈达马积 = 
        a11*b11      a12*b12
        a21*b21      a21*b21

要求:A和B的行数和列数相同

克罗内克积

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

克罗内克积 = 
        a11*b11   a11*b12    a12*b11   a12*b12
        a11*b21   a11*b21    a12*b21   a12*b21
        a21*b11   a21*b12    a22*b11   a22*b12
        a21*b21   a21*b21    a22*b21   a22*b21

垂直合并

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

垂直合并 = 
        a11   a12
        a21   a21
        b11   b12
        b21   b21

要求: A和B的列数相同

水平合并

例如:
A =  a11   a12
        a21   a21

B =  b11   b12
        b21   b21

水平合并 = 
        a11   a12    b11   b12
        a21   a21    b21   b21      

要求:A和B的行数相同

JavaScript

此工具帮助管理和运行JavaScript代码:
-  编辑JavaScript代码。
   脚本可以包含WebEngine可以解析的任何合法元素(ECMAScript 6)。
-  运行脚本。
   它的结果显示在右边的面板中。并且它也会影响右边面板中的网页。
-  保存脚本为左边面板中代码树的一个结点。

JShell(Java交互编程工具)

JShell是JDK包含的工具之一:
   - JShell提供交互执行"snippets"的能力,即"读取-执行-输出"循环 (REPL)。 
   - "Snippet"是Java编程语言的单个表达式、语句、或声明的代码:
           - 语句结尾必须有分号,而表达式不需要。
           - 可以定义变量和方法、然后调用它们。  
   - 外部Java类应当可访问:
           - JShell取系统环境中CLASSPATH。  
           - 其它Jar文件或路径可以附加在CLASSPATH后面。  
           - 除了基本类,在调用多数Java类之前需要把它们导入进来。  
   - JShell可以用于科学计算、和调试Java代码。

此工具帮助图形化运行JShell:
   - 输入若干snippet,然后点击 "开始"按钮以执行它们: 
   - Snippets被逐个计算。  
   - Snippets的结果会影响后续的snippets,即如"一个运行环境"。  
   - 所有已执行过的snippets的属性被显示在一张表中。
   - 点击按钮"删除"或"清除"以把一些或全部snippets从当前环境中移除出去。
   - 点击按钮"重置"以清零JShell,环境将变为空白。
   - 按下"CTRL+1"可以弹出代码的完成建议列表。
   - 若已添加了MyBox类路径,则可以引用MyBox的所有方法。

JEXL(Java表达式语言)

JEXL(Java表达式语言)是一个库文件,以变量和脚本来动态生成值:
   - JEXL与Java的语法有所不同,它更像是javascript。 
   - 在运行表达式/脚本之前,其中所有变量应当在JexlContext中有值。 
   - 创建Java类的实例为本地变量以引用它们。当用“new”时注意写全包名。
   - JEXL可用于科学计算和数据处理。

此工具帮助图形化运行JEXL:
   - 输入JEXL表达式或脚本。
     注意:用单引号而不是双引号来围住字符串。
   - 按以下格式输入Java代码,以设置JexlContext:
                jexlContext.set("name", value);
     例如,设置以下语句以在表达式/脚本中使用Math.PI:
                jexlContext.set("Math", Math.class);
   - 输入JEXL脚本的参数(如果有)。以逗号分隔。
   - 点击按钮“开始”以计算表达式/脚本。
   - MyBox在JShell环境下自动执行以下步骤:
             - 把MyBox的库路径加到CLASSPATH。
             - 导入必要的JEXL包。
             - 运行JexlContext代码。
             - 带上参数(如果有)计算表达式/脚本。
   - 若所有变量和参数都有合法的值,则结果显示在右边面板中。

数学函数

此工具帮助管理和计算数学函数:
- 定义函数:
      - 给出函数的名字。
      - 列出函数的变量名,以英文逗号分割。变量名应符合JavaScript要求:
             - 可以包含字母、数字、下划线、和unicode(如中文)
             - 不能以数字开头。
      - 定义函数表达式为一段JavaScript代码:
             - 此脚本可以包含Nashorn可以解析的任何合法元素(ECMAScript 5.1)。
             - 它应当最终是一个数字。
             - 它可以引用给出的变量,但是不要申明它们。
      - 定义函数的定义域为一段JavaScript代码:
             - 空白表示定义域为所有实数。
             - 此脚本可以包含Nashorn可以解析的任何合法元素(ECMAScript 5.1)。
             - 它应当最终是一个布尔值(真或假)。
             - 它可以引用给出的变量,但是不要申明它们。
- 工具计算脚本时,它自动将变量名被映射为变量值,然后开始计算。
- 若定义域脚本不为空,则代入变量值并且检查结果。
   若为真,则继续计算函数表达式的脚本。否则跳过此组变量值。
- 给定范围、间隔、和小数位数,可以生成函数的数据集。
- 对于一元函数,可以显示函数的XY图, 包括散点图和线图。
- 对于二元函数,可以显示函数的XYZ图, 包括三维散点图和曲面图。

地理编码

地理代码应当:
1)从属于一个已存在的地理代码。
2)级别应当低于它的祖先。
3)有中文名或者英文名。

以下方式之一可以确定一个地址:
1)数据标识。这是精确匹配。
2)级别+祖先+中文名或英文名或任一别名。这是精确匹配。
3)级别+中文名或英文名或任一别名。这是模糊匹配,可能有同级重名导致匹配错误的情况。
匹配名字或者别名时,不区分大小写。

新地理代码的"数据标识"由MyBox自动赋值。

地图选项

GCJ-02坐标是经过加密的数据,与真实位置有偏差。
CGCS2000坐标是真实位置,近似于WGS-84(GPS)坐标。

天地图接受CGCS2000坐标,并把它们显示为无偏差的正确位置。
当在天地图上显示其它坐标时,MyBox把它们转换为CGCS2000以显示正确位置。

高德地图接受GCJ-02坐标,并把它们显示为无偏差的正确位置。
当在高德地图上显示其它坐标时,MyBox把它们转换为GCJ-02以显示正确位置。

转换坐标

CGCS2000坐标是真实位置,近似于WGS-84(GPS)坐标。
GCJ-02坐标是经过加密的数据,与真实位置有偏差。
BD-09坐标和MapBar 坐标基于GCJ-02加密,与真实位置有偏差。

媒体工具

播放视频/音频

此媒体播放器基于javafx:
- 支持的容器类型:    
        AIFF, HLS, MP4, MP3, WAV
- 支持的编码类型:
        AAC, MP3, PCM, H.264/AVC, H.265/HEVC
- 支持的协议:
        FILE, HTTP, HTTPS, JAR, HLS

FFmpeg

当你的环境中已安装了FFmpeg此功能才可用。

FFmpeg选项

此功能需要你的环境下已安装FFmpeg。
多数播放器支持:混合器"mp4"、视频解码器 "H.264"、音频解码器 "AAC"。
注意:"CRF"和"编码预调"只对x264, x265和libvpx有效。 

当功能失败时,改变选项再试一试:
- 按照你的硬件情况选择支持的更好的视频解码器和音频解码器:
      - 当有NVIDIA时,选择"h264_nvenc"作为视频编码器,以利用硬件加速。
      - 一般来说,mac的视频编码器是"VideoToolBox"。
- 选择选项以获得适应于你的计算机的设置,考虑以下因素:
      - 编码器应该足够快以保证不掉帧。
      - 消耗有限的系统资源,以留给其它应用足够的CPU和内存。
      - 生成的文件的质量和大小是可忍受的。
- 或许旧版ffmpeg更适合旧计算机。在我的电脑上:
      - 2019年的ffmpeg可以平滑运行,
      - 2023年的ffmpeg不接受"h264_nvenc"的设置,并且总是使系统冻结或死机。

-ss 0:1:30               设置开始时间
-sseof 0:5:00          相对于结尾设置开始时间
-to 0:10:15             设置结束时间
-t  0:0:20                持续时间(秒)
-aq quality             音频质量(与编码器有关)
-ac 2                      设置音频通道: 1是单声道, 2是立体声
-title string            设置标体
-author string        设置作者
-copyright string   设置版权

FFmpeg: 录屏

- 当没有NVIDIA并且CPU不那么强时,
      - 选择"libx264rgb"作为视频编码器,以跳过从RGB到yuv444p的转换。
      - 选择较快的编码预调。
      - 录制之后,利用视频转换工具以编码器“libx264”将生成的RGB视频转换为yuv444p。
- 当检测不到声音输入设备时,检查它是否被禁用了。(Win系统缺省会这样做)

延迟:当点击按钮“开始”时,等待这个时间长度之后才开始录屏。
时长:从开始录屏以后,等待这个时间长度之后结束录屏。
          用户可以点击按钮"结束"以立即停止录屏。

当选择“喵”时,笨笨在录屏开始会喵一声,乖乖在录屏结束时会喵一声。

恒定质量模式因子(CRF)

恒定质量模式因子(CRF)是x264, x265和libvpx编码的缺省质量(码率控制)设置。
较低的值产生更好的质量但是文件较大。零意味着无损和大文件。
较高的值意味着更多的压缩和质量下降。

对于x264,正常值为18到28,缺省值为23。17或18在视觉上近似于无损了。
对于x265,缺省值为28。
对于libvpx,1080p HD视频建议值为31。

X264

"预调"是选项集,为压缩率提供特定编码速度。
较慢的预调提供更好的质量,但是占用更多CPU。
较快的预调意味着更低的质量,占用较少的CPU。

游戏:消消乐

当超过3个相同的棋子连成垂直线或者水平线,则这条线可以被消除。
当一个棋子被消除时,它上部的所有棋子将移下来,顶部位置将用随机棋子填充。
分别点击相邻的两个棋子以试图交换它们的位置。若交换后不能消除任何线,则交换失败。

按钮“帮我”可以为你找到一个有效的交换(如果有)。

游戏:挖雷

目标:打开所有非地雷的格子,一旦打开地雷就失败。
规则:
1)游戏开始时,所有格子都是“未打开”状态。
2)首次点击格子时,开始计时。
3)计数:已打开的格子数 / 非地雷的格子总数
4)左键点击格子,若是格子状态为“已打开”则没有任何影响,否则:
     - 若是地雷,则游戏失败。  
     - 若不是地雷,则改变这个格子状态为“已打开”。
     - 若打开的格子周围有地雷,则在格子里显示周围地雷的个数  
     - 若打开的格子周围没有地雷,则显示为空白,并且自动打开周围的格子;迭代这个过程。
5)右键点击格子,若是格子状态为“已打开”则没有任何影响,否则:
     - 若格子没有标记,则标记它为“地雷”。
     - 若格子标记是“地雷”,则标记它为“可疑”。
     - 若格子标记是“可疑”,则去除标记。
     - 右键点击只起到标记的作用,不会触雷或打开格子。
6)双击格子,则:
     - 若是格子状态为“未打开”,则打开这个格子。
     - 打开其周围所有无标记或标记不为“地雷”的格子。
     - 只有当你确信格子周围的地雷都已被正确标记时再双击格子。
7)当你不幸触雷时:
     - 点击按钮“撤销”,可以假装刚才没有触雷,继续计分计数。
     - 点击按钮“重玩”,可以重新开始刚才那一局,重新计分计数。
     - 点击按钮“新一局”,可以开始不同的一局。
8)点击按钮“帮我”以偷看所有地雷,点击按钮“撤销”以继续玩。

其它

表格

选择一些以处理,或者不选任何以处理表中所有:
-  选择数据行:
      - 按住SHIFT键、并点击数据行,以选择多行的范围。
      - 按住CTRL键、并点击数据行,以一行一行地选择多行。
      - 点击行开头的复选框。
-  编辑数据:
      - 可编辑列的题头文字为蓝色(可编辑的主键仍为红色)。
      - 点击可编辑的单元,则它的输入框会被显示出来。
      - 当可编辑单元失去焦点时,它的值将被检查、非法值将被拒绝。
-  要显示/隐藏列,点击表格头行右边的按钮"+"。
   此操作不影响数据。
-  要调整列的顺序,点击并拖动列头。
   此操作不影响数据。
-  要对表行进行排序:
      - 点击列头以按此列的升序排序。
      - 再次点击列头以按此列的降序排序。
      - 第三次点击列头以取消此列的排序。
      - 按住SHIFT键并点击更多的列头以按多列排序。
   此操作只影响表中当前数据。
-  主键的题头文字为红色。自增主键的题头文字为橙色。

播放

逐帧显示:
- 若选择“延迟”,在当前帧结束后,等待指定的时间, 然后显示下一帧。
- 若选择“间隔”,在当前帧开始后,等待指定的时间, 然后显示下一帧。
- 当帧数超过滚动尺寸时,帧编号会在帧选择器中滚动显示。
- 输入帧编号(无需输入完整的帧标题)以跳到那一帧。

管理语言

此工具用于管理MyBox的定制语言:
-  点击按钮“添加”以创建一个新语言。
-  编辑语言的翻译项:
     - 选择表中的一行。
     - 点击行中的单元:
             - 若项目的英文中包含换行符,则弹出编辑窗口以供输入多行。
             - 若项目的英文是单行,则显示一个文本输入框以供直接编辑。
     - 保持空白以缺省用英语。
     - 右键点击单元以选择“复制英语”或“复制中文”。
-  点击按钮“保存”以保存修改。

MyBox快捷键与图标

界面上的控件,如按钮、复选框、图像,可能有快捷键:
   - 若焦点在“文本输入”控件中,则以下按键作用于此控件:
         Delete/Home/End/PageUp/PageDown/Enter/Ctrl-(c/v/z/y/x)
      否则,快捷键作用于界面。
   - 把鼠标移到控件上方,它的工具提示(如果有)会弹出并显示快捷键。
   - 若焦点不在“文本输入”控件中,组合键的Ctrl/Alt键可省略:
     例如,焦点在图像上时,按"c"以复制,按"2"以设置为面板尺寸。
   - 选项:禁止省略快捷键的Ctrl/Alt。(以免误操作)。
   - 对以下按钮总是禁止省略快捷键的Ctrl/Alt:保存、删除、清除。(以免事故)。
   - 对于mac系统,Ctrl键对应Command键。

子窗口

选择此项以使此面板显示为子窗口。
不选此项以使此面板显示为弹出窗口。
下次显示面板时生效。

子窗口:可以被移动和改变大小。
弹出窗口:在点击对象以外时可以被自动关闭。

清除过期数据

过期数据包括:
      - 无用的临时文件
      - 内部数据引用文件,而文件已不存在,则此内部数据应被删除。
      - 内部数据引用内部文件,而数据已不存在,则此内部文件应被删除。
      - 无用的临时数据库表

在清除过期数据时,不要用MyBox功能读写文件/数据。