Update: EnvSafe.Expression 4.1.8

For .NET 4.0 , available on Nuget.

EnvSafe.Expression 是一款字符串表达式解析计算库,可以在正确配置后按括号优先级进行顺序执行。例如给定字符串 1+x*3-(9-4),并且为符号(Symbol)+、-、*做出合适的算符(Operator)关联,则解析该表达式会得到一个执行序列(Procedure),包含4个计算步(Steps):

  1.   9 – 4 => a
  2.  x * 3 => b
  3.  1 + b => c
  4.  c – a => d

其中 x 是变量,可以在每次调用执行序列计算前指定。

在循环中使用执行序列时,要比单次解析计算速度快,其本质是委托调用。

本次更新为执行序列增加了一个预简化方法(Presimplify),该方法迭代遍历计算步,预先计算不含变量的步骤,并将结果赋值到其它计算步的变量表中。这样,对于不含变量的计算步较多时,循环计算会有很大的性能提升。

对于上例,简化过程计算出9-4=5,简化后的计算步如下:

  1.  x * 3 => a
  2.  1 + a => b
  3.  b - 5 => c

Intro: Heroius.XUI (未完成)

简介

Heroius.XUI 用于根据架构定义生成xml文件。程序启动自动加载预定义的架构,并根据架构生成界面。初始化完成后,用户可在界面编辑,将配置保存成xml文件。也可加载现有xml文件(须符合架构定义)到界面编辑。
可从以下网盘地址获取XUI的1.0.0.0版本
链接:http://pan.baidu.com/s/1c2epVFE 密码:z555

注意本程序的架构不使用xsd,而是重新定义了用xml描述的结构,该结构在 关于架构的编制 一节说明。

图片所示为程序界面

关于架构的编制

程序采用元xml定义目标xml的架构。该架构的定义远没有xsd复杂,因其仅定义元素(Element)、特性(Attribute)和
值(InnerValue)。
没有采用xsd的原因,是自定义元xml更容易解读,规则更少,且(暂时)不用考虑可变的元素。当然这为程序带来了局限性,比如XUI无法用于编辑自身使用的元xml。
下面介绍元xml结构,您可下载程序后与其自带的comm.xml文件对照了解。

元xml的根节点是Schema元素,它的属性用于描述与架构本身相关的信息,参见下表。

特性(Attributes) 说明
Title 用作XUI的窗体标题
Comment 在生成目标xml时,加入指定的注释文本,可选,默认为XUI的声明和版本号
Extension 指定保存或加载目标xml文件时,自定义的文件后缀名,可选,缺省为xml
File 指定保存或加载目标xml文件时,对文件的描述,可选,缺省同Extension
Online 给出XUI帮助菜单中当前架构的在线文档地址,可选

在元xml中,ElementDef元素用来定义在目标xml中的元素格式,其子节点要求如下表:

特性(Attributes)
Name 元素名,在目标xml文件中作为元素的标签名
Type 元素类型,枚举Self,Value,Container,Collection中的一个,用来决定该元素的子元素组成
Description 元素描述,仅用于XUI界面的友好文本,可选,缺省值取Name的值
子元素(Sub Elements)
Attributes 可选,列举目标元素的特性定义
Content 根据Element的Type特性为Self时,此子元素不应出现,其它情况作为目标子元素的父元素,起到容器作用

其中Element的Attributes子元素包含多个add子元素,每个Attributes.add子元素要求如下:

特性(Attributes)
Name 特性名,在目标xml文件中作为特性的键
Description 特性描述,仅用于XUI界面的友好文本,可选,缺省值取Name的值
子元素(Sub Elements)
ValueDef 可选,用于对特性的值进行定义,缺省下采用默认的值定义

安卓手机屏幕失灵后通讯录导出

手机进水后触摸屏失灵,但其它实体按键(电源和音量)可用,其它功能一概正常。

  1. 关机后,按住 电源 和 音量上 至震动,松开电源,保持按住音量上,进入recovery模式。
  2. 在recovery模式下,通过菜单选项进行手机备份,此过程可能需要几十分钟,备份好的文件位于手机存储的 clockworkmod/backup 以时间命名的文件夹内。
  3. 在recovery模式下,通过菜单挂载选项中启用usb连接,将手机通过usb连接到电脑,此时电脑应识别手机,并可查看其中文件。
  4. 拷贝备份文件中的 data 部分,包括data.ext4.tar (data.ext4.tar.a/b),到电脑,此后可移除手机。
  5. 在电脑的文件位置打开命令行,使用指令将多个tar文件合并: type data.ext4.tar.a data.ext4.tar.b >> data.ext4.tar,生成合并后的可解压文件。
  6. 将压缩文件解压,在其中找到 data/com.android.providers.contacts/databases 目录,其中 contact2.db 文件即为保存有联系人信息的sqlite数据文件。此后原始压缩文件可丢弃。
  7. 使用sqlite工具,如 DB Browser for Sqlite 打开数据文件,浏览观察其中raw_contact和data表。
  8. 构建sql语句 select raw_contact_id,data1,data2,data3,data4 from data进行查询,复制查询结果到 excel 文档。此后数据库文件可丢弃。
  9. 编辑整理 excel 文件,导出为csv格式。
  10. 使用 CSV to vCard 工具,将csv导出为vcf文件,注意选择utf-8编码。
  11. 使用可进行编码转换的文本编辑器(如 Notepad++ )将导出的vcf文件“转为UTF-8无BOM编码格式”,保存。
  12. 将vcf文件传至新手机,用自带联系人工具打开,即可完成导入。