ThreeTen Extra 时间日期处理利器

  最近一些需求有对多个时间区间进行判断,例如交集之类的,而2个时间区间可以多达13种情况,实现起来特别容易绕晕,正好找到这样一个工具类可以满足需求,只需要一个方法便可计算出结果,很方便。ThreeTen 的设计里面 Instant 表示时间点,Interval 表示时间段,使用Interval即可对区间进行判断。

  例如:判断是否有交集(Overlaps)

Instant startA = Instant.parse("2018-08-01T00:00:00Z");
Instant stopA = Instant.parse("2018-08-10T00:00:00Z");
Instant startB = Instant.parse("2018-07-30T00:00:00Z");
Instant stopB = Instant.parse("2018-08-02T00:00:00Z");

Interval areaA = Interval.of(startA, stopA);
Interval areaB = Interval.of(startB, stopB);
boolean flag1 = areaA.overlaps(areaB);

  同样的,还有是否邻接、包含、相等、之前,之后等等。当然,除了Interval,还有别的类可以用,非常强大。官方文档也非常详细。

  官网链接:https://www.threeten.org/threeten-extra/index.html

  Maven

<dependency>
    <groupId>org.threeten</groupId>
    <artifactId>threeten-extra</artifactId>
    <version>1.4</version>
</dependency>

新玩具:探险家 Columbus V-990 MarkII

  之前的 Holux M-241 Plus 出了点小状况,使用量过大后读取非常缓慢,甚至无法读出,只好做退货处理,不清楚是不是个例,且不兼容 MacOS 也是诸多的不便。

  正好当时有个备选方案就是探险家系列,当时没有第一考虑主要是因为所搜到的资料都是很多年以前的,以为其停产或者是不再升级了。尤其是一段蓝牙导航的演示还停留在 iOS 6 越狱的界面,实在是寒颤。后来在其官网发现还出了新品 Columbus V-1000 手表式记录仪,其 Columbus V-990 和 V-900 也都升级到最新的 MTK3339 芯片,于是果断下手。

  先是买了Columbus V-1000,主要看中有块 LED 小屏幕,能及时知道工作状态,microUSB 连接口也比 miniUSB 方便不少。但随后发现内置的 300mA 电池实在不耐用,官方宣称 16 小时,实际上 7 小时就只剩一格电了,在一次徒步中只好插着充电宝走,实在是尴尬。而且由于内置模式比较多,操作上也比较复杂,计算日出日落居然还会卡顿,只好作罢,和客服沟通推荐后换了 V-990。

  Columbus V-990 和之前用过的 Holux M-1000 很类似,开机后就自动记录的,无需多余设置,状态灯一目了然,通过microSD 卡支持高达 5000w 点的记录,可以说非常强悍了。内置 1000mA 电池,能连续记录 36+ 小时(还没有实测),但应该偏差不大。更有意思的是 V-990 的USB口仅是充电功能,读取轨迹都是通过 SD 卡来交换,基本上很好的避免了因PC系统更新换代,而没有驱动和App支持。而对应的轨迹管理软件《时光相册 Pro》也是基于 RouteConverter 这款开源的轨迹转换工具二次开发,采用Java编写,支持全平台使用。

  实测中发现 V-990 的普通数据模式可以用 RouteConverter 读取,而专家数据模式只能用《时光相册 Pro》读取。如果需要配置机器的数据模式和超速报警等功能需要用老版本的《时光相册》,这里需要使用JDK 1.7或以下版本,而 Pro 版要求JDK 1.8以上,早已脱节。但基本上也用不着老版本了,默认的配置也已经够用,默认普通数据模式,关闭超速报警等。

  这里不得不提一下接收机的USB的连接模式,像 Columbus V-1000 的设计是必须要通过 USB 连接线来导出轨迹,这要求连接PC之前接收机不能处于轨迹记录中,否者极容易出现数据错误。而 V-990 只需要记住关机拔卡就行,和使用手机习惯一致,不容易出错。

  参考地址:
http://cbgps.com/index.htm
http://www.routeconverter.com/home/en

Podam 一个Pojo填充随机值利器

  开发中常常遇到需要Mock数据来测试功能是否完整,手动一个一个填数据有点浪费时间,最近找到这样一个小工具,非常方便的给Pojo类所有字段填上随机值,非常好用,这里推荐下。

官网:https://mtedone.github.io/podam/

使用方法:

1、添加Maven依赖

<dependency>
    <groupId>uk.co.jemos.podam</groupId>
    <artifactId>podam</artifactId>
    <version>7.1.1.RELEASE</version>
</dependency>

2、基础使用

public class Case {
    private Long id;
    private Long applyId;
    private Long billId;
    // get/set ......
}

PodamFactory factory = new PodamFactoryImpl();
Case case = factory.manufacturePojo(Case.class);

  就这样简单的调用,case这个对象的三个字段都是随机值了,基本上满足测试需求,当然Podam远不止这么简单。

新玩具:Holux M-241 Plus

  早在2012年1月份购买了Holux M-1000C这款GPS记录仪,一直使用到去年,终于罢工了,通过USB读取轨迹失败,期间自己修过一次开关,换过一块电池,整体使用还算比较满意。

  由于外出拍照需要记录位置,以及行走轨迹收集。最近就一直在琢磨着换一个,找来找去也还是Holux家的两款比较符合需求,本次选择的是M-241 Plus版,主要看中具备双星接收(GPS+GLONASS),使用外置AA电池,这点很重要。LCD屏幕可以调节参数,不错的外观设计。

  当然缺点也是不少,毕竟一个2017年的产品,还在用MiniUSB接口,又得多备一根线。对我而言影响最大的还是不支持 MacOS ,每次要通过虚拟机/GEN8来导出轨迹。当然要是有手机App控制更好啦。在 Windows 10 和 Windows Server 2016 上需要有管理员权限,以及通过安装目录下的 CP210xVCPInstaller_x86.exe 来安装驱动。

  对于精度和续航时间,相信应该比上一代好一些。但还是佩服这个台湾企业,这么多年一直在更新这个非常小众的产品。

  官网:http://www.holux.com/

HP Gen8 安装 Windows Server 2016

  从朋友那搬来的一个全新Gen8低配版,虽说是三年的东西了,但着跑个开发环境还是绰绰有余。

  添加了一块 120GB 的 HP SSD 放在光驱位。插在第5个SATA接口上,装系统 Windows Server 2016。一个 16GB 的U盘,插在主板内置的USB槽,装 Super Grub2 Disk 2.02s9 用来引导进入 Windows 系统,刻录工具:Rufus

  仅插入 SSD 的情况下,通过 HP iLO4 挂载 Windows ISO 安装好系统,再下载上述工具刻录 Grub 到 U盘,打开 U盘 \boot\grub 目录下新建一个配置文件,我这里叫win2016.cfg,内容如下:

set option_title=$"Windows Server 2016"
 
function run_option {
	echo "Starting..."
	insmod ntfs
	set root=(hd2,1)
	chainloader +1
	boot
}

  使用 Windows ISO 安装的系统会有一个 500M 的 Boot 分区,这里的 (hd2,1) 就是指向这。若不确定可以在 Grub 引导界面,进入 Grub 命令行,输入 ls,cat (hd + tab 来识别。

  在 \boot\grub\sgd 目录下找到 main.cfg,在168行左右的

process_main_option "${sg2d_directory}/sgd/language_select.cfg"

  后面增加一行:

process_enable "${prefix}/win2016.cfg" rootmenu

  并将set timeout的注释打开,以便自动确认。

  剩下就是在四个盘位插入磁盘了,装一些开发环境和 TeamViewer 远程工具,这里我关闭了 Gen8 的 Raid,使用 ACHI 模式安装的。在确定这个方案之前也折腾过装 Ubuntu Server,黑群晖,这个就因人而异了,总之 Gen8 是个非常适合折腾的硬件,CHH 上有很多教程贴。