分类: code

macOS 作为服务器

因为业务需要,我司有若干台服务器 Mac 作为服务器。下面总结一下注意事项,作为记录。 取消系统休眠曾经在这个问题上困扰很长时间。在升级了 macOS High Sierra 之后,发现之前能够正常运行的程序出现问题。 具体表现是: ssh 登出之后不久,线上就开始报警 登陆进去查看 log,发现程序又是正常的 socket 连接提示传输错误 程序并没有 exit 一开始怀疑是后台程序的权限问

Spring Cloud 配置中心

闲话配置老司机都喜欢在程序设计中尽可能的把各种参数做成可配置的,等到产品需求发生改动的时候,优雅的修改一行配置,重新加载一次配置,就满足了需求。 配置(Configuration)是不修改代码的情况下,对程序的运行调整的能力。 简单来讲,配置可以分成两类: 系统配置:包括线程池大小、数据库连接等,变化频率较低 业务配置:功能开关,功能参数等,变化较为频繁 程序的配置一般而言,分为几个环境:

小工具-sips-图片批量转大小

家有设计师我家夫人是一位设计师,平时少不了将一张大图导出成多种规格的小图的脏活累活。 看了她导了好几次,实在不能忍。得发挥程序员的能动性,做个小工具。 调研imagemagick 是一个很好的工具,支持多个平台,功能丰富强大。考虑了一下,如果这个小工具还需要用户安装依赖的话,显然提高了使用门槛。 设计师们大多在 MacOS 下工作,最好是运用这个平台下现成的工具包。搜索了一下,发现今天的主角:si

SDK 开发最佳实践之一:为你的 SDK 增加 No-Op 版本

笔者在开发和维护 Bugtags SDK 的一年多时间里面,趟过了不少坑,走了不少弯路,也积累了不少经验。这个 SDK 开发最佳实践系列,就是分享经验教训,帮助读者打造一款跟 Bugtags 这样快速成长的 SDK。 SDK 的使用场景站在用户的角度来看,引入一个 SDK 可能会带来几方面的问题: 包增大 可能不稳定 安全性问题 对于一些 SDK,产品形态是允许在测试阶段开启,上线移除的,

Google Play 改变关于 location.gps feature 的设定

上个阶段忙一些个人事务,更新的少了。这段时间会集中发一些个人学习心得。 收到邮件21号收到一封 Google Play 发来的邮件,告知如下信息: 12345Hello Google Play Developer,We're writing to let you know that the apps listed at the end of this email may be af

Android Gradle 构建系统·初探

8月7号,应北京 GDG 邀请,我做了一个题为《Android Gradle 构建系统·初探》的分享。 主要内容是构建系统背景知识,源码库,代码亮点,写插件。 很明显这是一个很大的话题,有超过 2.5GB 的核心代码和超过50个子项目。 第一步,我进行了宏观的介绍。下一步,我会继续深入子项目,尝试发现更多有意思的点。 对这个话题感兴趣的,请加入技术交流 qq 群:583688711。 Slides

Hexo 与 Nginx 实现沉浸式多语言博客

沉浸式多语言博客假期的时候,打算改造下现有的博客系统。目标之一是实现多语言(主要是中英)切换,要求:沉浸式阅读。 查找了一下,Hexo 有如下几种工具与国际化有关: Hexo 官方的国际化机制 Hexo 官方推荐的插件:hexo-generator-i18n 非官方推荐的插件:hexo-multilingual 逐一尝试官方国际化机制:failed更多是在解决模板翻译问题 hexo-gener

NDK SO 库开发与使用中的 ABI 构架选择

Bugtags V1.2.7 引入了 NDK SO 库,在集成的时候,遇到不同的 SO 库打包到 APK 时,安装在某些机器上,出现 java.lang.UnsatisfiedLinkError 加载失败。 为此,深究了一下原理,和给出了解决方案。 原理Android 系统本质是一个经过改造的 Linux 系统。最早,Android 系统只支持 ARMv5 的 CPU 构架,随着 Android

Android Gradle 技巧之二: 最爱命令行

如果你习惯了命令行,你会爱上它的,因为它简单、直接,深入。 命令行很多做 Android 开发不久的同学,习惯于使用图形界面,对命令行操作很陌生甚至恐惧。遇到 AS 运行错误,束手无策。 AS 为了确保易用性,也在 UI 界面上屏蔽了很多命令行运行的细节,导致很多人觉得 AS 难用。 这种情况,我在解决用户集成使用 Bugtags SDK 的问题的时候,经常能遇到。其实 GUI 界面的操作,绝大部

Android Gradle 技巧之一: Build Variant 相关

Build Variantandroid gradle 插件,允许对最终的包以多个维度进行组合。 1BuildVariant = ProductFlavor x BuildType 两个维度最常见的就是这样: 1234567891011121314151617productFlavors { pro { } fre { }&

拥抱 Android Studio 之五:Gradle 插件开发

官方文档给出了比较详细的实现步骤,本文的脉络会跟官方文档差不了太多,额外增补实际例子和一些实践经验。文中的代码已经托管到了 github 项目中。 需求默认的 Android 打包插件会把 apk 命名成 module-productFlavor-buildType.apk,例如 app-official-debug.apk,并且会把包文件发布到固定的位置: module/build/output

如何更好的提出技术问题

下面咱们就来聊聊技术人的素养:如何更好的提出技术问题。笔者从事 Bugtags.com 开发运营以来,除了开发任务以外,最重要的工作就是在 qq 群里面回答用户的问题。 这半年来,少说也接待了上千个用户了。笔者发现,有相当一部分的用户,提问方式和技巧都有问题,这样导致了我们额外的客服量,也使得自己的问题得不到及时满意的回答。 下面咱们就来聊聊技术人的素养:如何更好的提出技术问题。 直接了当有的用

拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

使用、创造和分享笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题。结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因。 有人戏称,『写 Java,首先要学会选包』,在这里不好评论对错。不过这句话里面,至少包含两层意思:首先 Java 有大量的现成的依赖包,不必要自己造轮子;其次,Java 的包存放较为集中,集成方式也方便。 笔者从事 Android

拥抱 Android Studio 之三:溯源,Groovy 与 Gradle 基础

关于学习方式续回忆起大学那个白衣飘飘的年代,开始金工实习却发现基础学的不牢靠,越来越胆小,越来越糊涂。所幸得到一位高年级学姐指导,赶紧找当时的书或者笔记,快速把基础知识温习一遍,再结合实践中思考,终于豁然开朗。 相信看过前一篇 《Android Studio 与 Gradle 深入》的同学,有一部分就会遇到我初识 Gradle 时的困惑:代码我也依稀看得懂,但就是不知道还能这样写,为什么这样写。

拥抱 Android Studio 之二:Android Studio 与 Gradle 深入

关于学习方式曾经跟朋友讨论过我们所接受过的大学工科教育,都是一上来先学基础理论,最后再来一个金工实习。一开始不知道为什么而学,学不进去,荒废了基础,等到金工实习的时候,又发现基础不牢,后悔不已。考虑到传统教育方式的不足之处,笔者在组织本系列文章的时候是先讲入门实例,进而学习 Gradle 和 Groovy 基础原理,最后学习进阶实例。 上篇文章介绍了从 ADT 迁移到 Android Studio

拥抱 Android Studio 之一:从 ADT 到 Android Studio

拥抱变化,拥抱新事物多年前央视有一套电视系列片:大国崛起,主要讲述那些曾经在站在世界舞台中央的国家的兴衰历程。纵观历史,正是创新使得一个国家得以崛起。 Android 开发因为涉及到代码编辑、UI 布局、打包等工序,最好使用一款 IDE。Google 最早提供了基于 Eclipse 的 ADT 作为开发工具,后于2013年 Google I/O 大会发布基于 IntelliJ IDEA 开发 An

在 OSX 上安装使用 Supervisor

OSX 作为 ServerOSX 大部分情况都是用作个人电脑,少数情况下需要将其作为服务器使用。Bugtags 就有一些服务跑在 OSX 系统上。 遇到的一个问题:keep process alive! 背景OSX 作为 ServerOSX 大部分情况都是用作个人电脑,少数情况下需要将其作为服务器使用。Bugtags 就有一些服务跑在 OSX 系统上。 Supervisor 管理后台进程系统服务

Android 者开发如何选择测试机列表

更新2016-04-15:重新修改了数据 更新2016-01-06:近日有较多用户反映在 OPPO 的 ColorOS ROM 上出现了较多的崩溃。同时我查阅了友盟的数据,OPPO 是的市场占有率仅次于 VIVO 的第五大手机品牌,不可小视。于是增补了一部性价比较高的 A51 作为测试机。选取测试机,市场占有率排名也很重要。 更新2015-11-29:华为畅玩 4c 的确是64 bit 的 cp