安装HighSierra版本黑苹果

很尴尬,前几天给黑苹果收到了推送,升级Mojave,黑色主题漂亮得很,然后就升了,谁知道就系统就挂掉了,无奈重装系统索性直接装了Mojave,更尴尬的是装好之后,发现Mojave根本就没有gtx750的显卡驱动,貌似是苹果不支持这个显卡架构了,然后就更无奈的装回了HighSierra,在不换A卡的情况下,这应该是最后一个版本的N卡黑苹果了。
记录一下吧,以后也能过来烧个香。

WGS84、GCJ02、BD09地图坐标系间的坐标转换及坐标距离计算

在开发中用到定位和地图功能的都会知道位置信息会有多个坐标系来表示,而不同地图厂商使用的坐标系也可能是不一样的,web、Android以及iOS可能使用了不同厂家的地图,这就出现了在不同坐标系间转换坐标的需求。
然而一些地图SDK给出的地图坐标转换接口的实现是在服务器进行的,那么这些接口的调用不但会发起网络请求而效率上也会非常的慢,无论是对于客户端离线操作还是在自己的服务后台批量转换坐标数据,都需要本地实现坐标转换的算法来满足快速运算的需求。

坐标系 解释 使用地图
WGS84 地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系 GPS/谷歌地图卫星
GCJ02 火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。并要求在中国使用的地图产品使用的都必须是加密后的坐标,而这套WGS84加密后的坐标就是gcj02。 腾讯(搜搜)地图,阿里云地图,高德地图,谷歌国内地图
BD09 百度坐标系,百度在GCJ02的基础上进行了二次加密,官方解释是为了进一步保护用户隐私 百度地图
小众坐标系 类似于百度地图,在GCJ02基础上使用自己的加密算法进行二次加密的坐标系 搜狗地图、图吧地图 等

使用来自Facebook的调试神器Stetho对Android应用程序进行调试

UI、网络交互以及本地数据存储在当前的手机应用程序开发中已经是不可缺少的三个元素了,然而如何在开发过程中快速调试这三个元素则成为提高开发效率的必然途径。 在不是用任何辅助工具的情况下,我们罗列一下这三个元素的的普通调试方式:
UI:若是静态的UI我们只需在在AS中实时预览即可,而如果是动态UI,比如代码生成或者根据用户操作实时生成这些情况,我们则不能比较直观的查看到UI的层次结构。
网络交互:若是简单的监听返回数据,我们或许可以通过Log打印出来,简单的GET请求也可以在浏览器上输入URL进行测试,但是遇见参数复杂或者数量庞大的网络请求的情况下,上述两种方式都不能优雅的解决我们的问题。
本地数据:Android的本地数据包括数据库和SharedPreference(SP),查看数据库数据无非两种方式,一种是使用Android平台的查看工具进行查看,第二种这是把sql文件拷贝到电脑上使用工具进行查看,而数据库数据变更后我们则需要再次拷贝一份。而SP的数据除了查看对应的xml文件,则只能通过写一份工具代码来遍历查看了。

如果你的开发效率卡在上面这些瓶颈上,那么Stetho则是解决这个问题的“银弹”。

使用Chocolatey包管理器一键搭建windows开发环境

最近腾讯开放内测的微信小程序火了,而官方支持IDE只有windows版和Mac版的,稍微研究了一下这个IDE发现是node-webkit开发的,理论上应该是跨平台的,但不知为何这个IDE并没有支持Linux环境。喜欢折腾的我当然是要尝试一下的,奈何是使用Ubuntu作为主力开发环境,所以只能重做一个windows系统了。
话说回来,重装系统之后最大的问题就是开发环境需要配置,比如JDK、各种IDE、python、nodejs、tomcat、mysql、以及各种小工具等等,而把一个新系统配置到能正常进行开发工作基本上要耗费半天时间,时间就是生命,怎能这样无情的浪费。
Chocolatey是一个类似于linux中apt-get和yum这样的工具,通过他可以自动获取到需要软件的下载地址以及安装脚本已完成自动安装,而本篇则记录如何使用Chocolatey来通过脚本文件实现一键搭建开发环境,就像这样:

initWineEnv.bat

Linux开发环境中使用shell/python脚本快速自动打包并查看apk文件

最近工作中突然遇到一个很烦人的问题, 事情的起因是这样的. 我参与开发/维护着大概5个项目, 负责服务端后台的同事经常在自己的本地电脑启着本地服务测试一些东西, 而他们的本地局域网IP是经常变动的, 那么问题来了, 只要他们的IP地址变动了就会过来找我针对某个局域网IP地址为某个项目打个包, 烦不胜烦. 甚至有些情况下需要两项目同时开发, AndroidStudio需要连着开好几个, 但是电脑受不了啊, 而且AndroidStudio有一个非常不友好的地方: 如果开启多个AndroidStudio工程, 只要某一个窗口卡了, 那么其余的工程界面也全都是无响应状态的. 当这两个问题重叠到一起的时候, 好了, 可用把鼠标和键盘放一边慢慢等着打包吧, 完了才能继续快乐的编程. 这简直不能忍.
今天针对这个问题, 记录一种解决方法, 实现在不打开AndroidStudio的情况下自动打包, 指定version/ip地址等, 并在打包完成后显示签名信息以及apk详细信息且打开apk所在文件夹.

python buildapk.py -i 192.168.x.x -v 1.2.3

RxJava常用操作符分类总汇

上文提到ReactiveX在多种语言和平台上都存在着自己的实现,同时也都实现了一套操作符,在这些语言平台中有一些操作符的实现是重叠的,也有一些只存在于特定的平台实现中。每种实现都会根据当前平台的命名规范给这些操作符定义相似的命名。
本文收集了Java平台Rx的一些常用操作符,并对这些操作符进行分类并简单注释这些操作符的含义和用法。

,