“我们从小就听长辈们说起过懒汉,仿佛懒惰很不体面。实际上,没有我们的这些懒汉,恐怕就没有社会的进步;没有我们的这些懒汉,勤劳的人面对的恐怕只会是单调乏味的劳作。” 这里引入小学课本学过的文章《懒惰的智慧》中的一句话,深以为这句话就是对我们程序员群体的真实写照,促进社会进步说的有点夸张,但是提高生产效率还是不在话下的,这也是我本次纪录的一点儿动力。

好好的开发 iOS,为什么要玩玩 macOS 呢?自我揣测每一位 iOSer 的内心中都有一个开发 macOS 的冲动,毕竟工具(mac + Xcode)和基础技术(Objective-C, Swift)都是现成的,iOS 开发的应用需要上架才能使用,而 mac App 甚至都可以省略上架这一步,在朋友间传播起来也方便得多。

闲话少说,今天谈谈最近一次开发的 macOS App 开发者之刃 App Store开发者之刃 首页App Store 页介绍

功能包括:

  • 色盘(存储配色方案)
  • 图标生成器(生成 iOS/macOS/Android 多尺寸图标文件)
  • 图像压缩(基于 TinyPng
  • json 转模型(json 字符串转成 swift 模型对象)
  • 开源库集(github 开源库分类整理)等功能
  • 支持开机自启动、全局快捷键、自动检查更新等。

1. 从技术的角度谈谈做了什么

1.1 开发了一款 macOS App

主要采用 Swift4.2 编写“开发者之刃”,相比于 OC,Swift 的优势想必用过的朋友们都知道。

“开发者之刃”的技术点大概如下:

对于没有开发mac 经验的同学,推荐剑指人心的 《macOS 应用开发基础教程》,入门是完完全全没有问题的。“开发者之刃”里面用到的技术基本上都能在这本书中找到,而且从完全没有 mac App 开发经验到上架一个完整的 App,本人是照着书中内容一步步走下来的,这里也一并感谢下作者。

1.2 顺手撸了个服务端

采用 Python 的 Flask 库搭建的服务端,操作简单,功能全面。IDE 用的是 PyCharm

这里为什么要用“顺手”二字呢?实实在在是没有服务端的开发经验,在网易云课堂上看了一个教程,操起键盘就是干。中间遇到问题就 Google 一下,不能解决的就直接绕过去了,所以到最后功能既不完善,也不系统,但也勉强够用。毕竟精力有限,以完善功能为主,系统性的学习还任重而道远。

服务端的技术点大概如下:

  • pip: 包管理工具
  • http 请求、web 页面:Flask 很容易实现
  • Vue: 渐进式 JavaScript 框架,快速构建 web 页面

半吊子都算不上的服务端开发,这里就不班门弄斧了,基本功能大概如上所诉。照着网易云上的视频 Python Flask系列(1)——基础 学习的 Flask 基础,感觉讲的挺好,浅显易懂,写个简简单单的页面是完全足够了。

1.3 切了几张图

图可以切,审美就不不必较真了。

技术呢也没有用到什么技术(主要是我都不知道有啥技术,完全两眼一抹黑),这里就简单介绍下用的工具吧。

  • Sketch:轻量易用的矢量设计工具。易用易用,谁用谁知道。
  • iconfont:矢量图标管理、交流平台。免费图标多种多样,可下载源文件,也可指定颜色、大小下载。
  • tinypng: 智能有损压缩图片。“开发者之刃”中的图片压缩功能核心就是用的它的服务,压缩率高,压缩后的图像几乎肉眼看不到失真。

2. 谈谈为什么要做这个 App

前面提到了,每个 iOSer 的内心中都有一颗开发 mac App 的心,其实说白了,每一个程序员的内心中都有尝试新事物的冲动。

确确实实解决开发中的一些痛点。服务端甩给客户端一大串 json,我们每次构建对象时烦不胜烦,机械重复的代码只是在浪费我们有限的生命与激情,所以有了《json 转模型》的想法。设计给的色值一天三变,背景色、基础字体颜色不统一,被他们一句“这个颜色就是之前用的”弄得痛不欲生,自己设计个玩意后,色值转身就忘,所以有了《色盘》的想法。github 看到优秀的仓库也不太想 star,实在是 star 的数量过多,想用的时候像是大海捞针,所以有了《开源库集》的想法。自己写个 App,要被切各个尺寸的图弄疯,切完还得一张张拖到 Assets 中合适的坑中,总之开发中总会遇到一些重复的工作,大概是可以通过代码处理的吧。

学习真的会使人快乐。当刚开始接触一个新的技术时,汲取知识的快感是强烈的,不论是纯粹的学习还是单纯想炫技,能学到东西总归是一个非常好的结果。当然要深挖技术时的确会有痛苦,痛并快乐着吧。

3. 作一个简单的总结

技术:

  • mac App 开发:Swift + Xcode
  • web 开发:Python + PyCharm
  • 切图:iconfont + Sketch

资源: