月度归档: 2016 年 12 月

  • 在Travis中集成libGDX项目

    之前Github放了一个例子,版本很老,是0.9.8的,后面1.x时代有一天突发奇想又去升级了一下,升级到了1.5.6。

    今天突然有人又问到这个了,就顺手升级到1.9.5。测试了一下桌面环境是工作的,不过android环境不太想测试了,就寻思着集成一下Travis来测试一下,因为项目本身没有单元测试,所以测试的要求也不高,一是能编译通过,生成apk包,二是能够apk能够安装。

    Travis是自带了android支持的,不过还是beta版,说实话beta版果然坑多。

    首先来个简单的.travis.yml 文件

    language: android
    
    android:
      components:
        - build-tools-23.0.1
        - android-24

    然后报错说找不到android-24。马上检查了一下本地的android sdk,有这个版本号。

    然后网上找了一下方案,原来默认最高支持就到23,要支持高版本需要这样

    language: android
    
    android:
      components:
        - tools
        - tools
        - build-tools-23.0.1
        - android-24

    这个的tools必须重复两遍,一次拉取最新的xml,一次才是真正的安装。

    这样之后可以生成apk了,再来试试安装apk吧。

    思路很简单:创建一个模拟器,然后启动,最后安装即可。Travis自带了一个命令android-wait-for-emulator 来等待模拟器启动。

    在components里面声明– sys-img-armeabi-v7a-android-24 然后添加

    after_script:
        - 
  • 全站开启https

    申请了一个StartSSL的证书把全站https开启了,刚刚弄好,突然看到一条新闻说StartSSL证书有问题,一些基金会要移除它的根证书。

    只有赶紧换一套证书,看了一下let’s encrypt比较简单,马上本地安装let’s encrypt客户端,十秒获得全套证书,当然还有续期的问题,不过这个可以后面处理。

    具体的配置直接使用Mozilla SSL Configuration Generator生成一个,然后ssllabs的分析器测试一下。

    ssl

     …

  • HashiCorp Vault简介

    HashiCorp Vault简介

    HashiCorp Vault是一个私密信息管理工具。

    我其实很反感那种中英文交杂的文章,但是很多时候很难找到合适的中文词语。这里特别说明一下,Vault的英文定位是A tool for managing secrets,本文用私密信息指secrets。…

  • Spring Boot配置文件乱码的问题

    Spring Boot配置文件乱码的问题

    Spring Boot对于配置文件的支持非常完善,在配置文件中的内容可以很方便的在程序中应用。在配置文件中可能会出现中文的情况,而这个也是一个可能出现乱码的地方。

    首先Spring Boot支持两大类配置文件,一类是java properties文件,即application.properties文件;一类是yaml文件,即application.yml文件。

    这两种配置文件分别使用PropertiesPropertySourceLoader 和YamlPropertySourceLoader加载。这两种加载器对于编码的处理是不同的。

    PropertiesPropertySourceLoader 会首先检查配置文件后缀,如果是xml文件,那么是可以支持UTF-8的,但是如果是非xml文件,那么它调用的实际上是java的Properties类的load方法,而这个方法默认配置文件的编码是ISO 8859-1的。参考下面的Java API文档:

    The load(Reader) / store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream) / store(OutputStream,

  • Severless简介和服务提供商对比

    Severless简介和服务提供商对比

    什么是Serverless

    Serverless最初是用于描述依赖第三方服务实现对逻辑和状态进行管理的应用。典型的包括“厚客户端”(例如单页Web应用、移动应用),他们一般都使用基于云端的数据库(例如Parse、Firebase),认证服务(Auth0、AWS congnito)等。这类服务以前被称为”(Mobile) backend as a Service ”,又称BASS。

    Serverless也可以指这样的应用,一部分服务逻辑由应用实现,但是跟传统架构不同在于,他们运行于无状态的容器中,可以由事件触发,短暂的,完全被第三方管理。这种思路是’Functions as a Service/FaaS’,AWS Lambda是目前唯一大规模商用的Serverless提供商。

    Serverless不是什么

    Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。

    Serverless不代表某个具体技术,虽然有框架或者工具名字叫Serverless;Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。

    Serverless中的服务或功能代表的只是微功能或微服务,Serverless是思维方式的转变,从过去构建一个框架运行在一台服务器上,对多个事件进行响应变为构建或使用一个微服务或微功能来响应一个事件。Serverless并不任何语言绑定,虽然不同厂商对于语言的支持各有不同,但是也有一些基于Docker的Serverless平台,原理上是跨语言的,比如IBM openwhisk和UCloud UGC。

    Serverless服务提供商

    很明显,Serverless是厂商绑定的,因为并没有公认的标准,所以不同厂商提供的服务各有不同。这里是简单整理的一个表格,仅供参考。

    不过不得不说虽然有不同的提供商,但是真的能够进入实际使用的恐怕只有AWS Lambda一家。

    serverless-funciton-providers

  • Apache Spark

    Apache Spark

    spark-logo-trademark

    Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。

    Spark推出时的一个特点是快,对比的对象自然是Hadoop。

    Hadoop这项大数据处理技术大概已有十年历史,而且被看做是首选的大数据集合处理的解决方案。MapReduce是一路计算的优秀解决方案,不过对于需要多路计算和算法的用例来说,并非十分高效。数据处理流程中的每一步都需要一个Map阶段和一个Reduce阶段,而且如果要利用这一解决方案,需要将所有用例都转换成MapReduce模式。

    而Spark则允许程序开发者使用有向无环图开发复杂的多步数据管道。而且还支持跨有向无环图的内存数据共享,以便不同的作业可以共同处理同一个数据。

    Spark的目的并不是代替Hadoop,相反Spark是可以运行于Hadoop之上的,包括了使用Hadoop文件系统,Yarn调度器等等。

    Spark之上还有四个模块,分别对应了SQL,Streaming,ML还有Graph。spark-stack

    Spark近期的发力方向主要在于Machine Learning的Pipeline模式之上。

    这种设计理念将机器学习统一抽象为由DataFrame,Transformer,Estimator和Parameter组成的Pipeline,并提供了大量可以重用的组件。ml-pipeline

    Spark提供了多种语言的API,你可以使用Scala,Java,Python或者R来开发你自己的应用。…