「极简汇率」美且好用的汇率换算

「极简汇率」是我司的一个得意之作,这得佩服我家 CEO 的独特眼界,开创了汇率工具在旅游分类先河,致使后来在汇率排行榜比较高的汇率工具,无一例外都选择了旅游这个分类。

一款真正意义上的旅游汇率 App

这款产品的初衷是想解决旅游中大家对于自己花费度的把握,防止出现被坑的现象,基于此我们开始了研发这款 App,而且我们将极简汇率放在 AppStore 的旅游分类下。其实一开始我觉得不可以放在旅游分类下,不应该是在理财工具分类么?CEO 坚持要放在旅游的分类下,因为我们是为旅行者解决问题的,事实证明此选择是正确的。的确,在境外游中,我们难免会有买买买,吃吃吃的野心,但是又怕自己被坑或开销过大,那怎么办?只能查汇率来辅助自己抉择,完成自己吃货、购物的欲望。

[iOS]那些年,遇到的坑

我做 iOS App 开发有几年了(全栈是我本体),从看别人代码到使用别人代码,再到自己写代码,码农的气息从未减少。之前看过一篇文章,说的是程序员不配叫工程师,因为这样破坏了工程的一个悠久的历史传统——为公众利益而设计和建造的基础设施,看来我还是老老实实做回码农吧。

性能问题

  • 获取是否允许系统定位

    估计很多小伙伴们一开始都不怎么在意是否需要加变量来存这个 BOOL 值,直接使用以下这种方式进行判断:

    1
    2
    3
    4
    // objc
    if([CLLocationManager locationServicesEnabled]&&[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied){
    // code here
    }

    这样简单快捷,不用额外增加变量,在一次开销的情况下,这样做是没啥大问题,但在多次使用的情况下,这就会带来性能上问题,因为其读取速度有些慢,在多次操作下就会变得异常的慢。所以有多次开销的情况,建议使用变量来存储该值,再使用其变量去操作,避免不必要的系统开销。

    1
    BOOL isLocationOn = [CLLocationManager locationServicesEnabled]&&[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied;

【翻译】RequireJS 的基本原理

本文翻译来源:http://www.telerik.com/blogs/requirejs-fundamentals
此翻译如有冒犯之处,请联系我 zshaojia@gmail.com 进行删除,且本文不会用于商业用途。

如果你是一个 JavaScript 开发者,也许会见过各种各样的有关于 JavaScript 的模块。模块化开发是JavaScript的一个很热门的话题,而且会成为潮流。事实上,如何解决这个问题对于你的代码编写是最基本的。

为什么使用模块

JavaScript 是一个很缺乏模块化开发的脚本语言

哇!那这意味着什么?为啥缺乏模块化开发?

如果你第一时间想到这,很好你站在一个很好的队伍。Derick Bailey 对于模块化这个概念作了如下诠释:

模块化就是将一组有关联性的东西封装或打包起来,它里面包含了对象、方法、变量,或者其它任何东西。创建模块封装展示它统一的管理方式,我们可以将一些小功能打包起来,以方便放在其它大的模块里使用。

根据这个想法:在 .NETJava,你可以使用类 (classes) 创建一个项目,之后你得到一个编译好的模块,这个模块包含你已声明类。现在你需要在其它项目使用这个模块,那它非常容易地使用,只需将它关联或引入项目里即可。这就是模块封装的概念,但模块在JavaScript 世界里是完全缺失的。

引起这个问题,大致有一下两点:

  1. JavaScript 一直没有创建模块的语法
  2. JavaScript 没有一个语法让你加载一个已定义的模块,你不得不浪费时间去管理那些乏味的 script 标签名和全局依赖引用

Xcode 7 UI Testing 的抢先骗

本文翻译来源于:http://www.mokacoding.com/blog/xcode-7-ui-testing/ ,如有不妥之处请联系我进行删除,承诺本文不会用于商业用途。

注:以下代码都是基于 Xcode 7 Beta 1 和 Swift 2.0。我尽可能使用最新版本来实践,如果我有遗漏的地方,请在底部留言。

WWDC 2015 或许没给我们带来太大的惊喜,但它还是给我们带来一些非常棒的消息。我在另外篇文章 2015 iOS 的测试前景 中写道:

尽管 iOS、OS X 的单元测试在过去两年中变得越来越好,但其它可验收性的测试(UI 测试)却没有得到什么改善。

好了,可验收性测试(UI 测试)这种不利的情况在 Xcode 7 上得到很好的改善,而且变得更好。

Xcode Beta 7 增加了 “UI Testing Bundle”,通过它我们就可以写和运行可验收性(UI 测试)的测试了。

需要注意的是曾经风靡一时的 UIAutomation 已经被苹果官方移除,尽管它依然存活在 Instruments 里,但我们不在需要用到它了,我们将使用新的 API 写 UI 测试。

这些新的 API 对 Swift 和 XCTest 插件的支持非常友好,我们只需要一个简单的快捷键 ⌘U 即可运行已写好的 UI 测试。

新的测试跟我们以前写的原理差不多,例如我们使用 KIFCalabashAppium 等等写的一样,它能像人为一样操作 app,这得益于 iOS Accessibility 的交互协议,这些在 iOS 9 上都得到很大的提升。