fir.im way to explore https:https://cdn.v2ex.com/navatar/afda/3322/822_normal.png?m=1496727907 https:https://cdn.v2ex.com/navatar/afda/3322/822_large.png?m=1496727907 2017-05-11T09:02:13Z Copyright © 2010-2018, V2EX fir.im 持续集成技术实践 tag:www.v2ex.com,2017-05-11:/t/360677 2017-05-11T09:05:13Z 2017-05-11T09:02:13Z Imshaha member/Imshaha 互联网时代,人人都在追求产品的快速响应、快速迭代和快速验证。不论是创业团队还是大中型企业,都在探索属于自己的敏捷开发、持续交付之道。
fir.im 团队也在全面实施敏捷,并推出新持续集成服务 — flow.ci ,以帮助企业将开发测试流程自动化,更快速地交付产品。

4 月 15 日,fir.im CTO 郭扬在“光环国际·2017 敏捷春季峰会”带来了《敏捷工程实践的基石——持续集成》的技术实践,从敏捷方法论的角度分享了持续集成流程的质量实践与 fir.im 团队的 CI 技术实践。演讲实录整理如下,希望能带给你一些思考。

fir.im

郭扬,fir.im CTO,曾就职于奔驰戴姆勒创新实验室,Thoughtworks,索尼移动通信,网易等公司,担任 DevLead,负责组建技术团队,管理项目进度与项目风险,软件及 DevOps 的架构设计、高并发条件下的性能调优、敏捷教练等工作。

###持续集成做什么 持续集成的概念出现在 2001 年,它其实是一个 XP 极限编程的工程实践。那么持续的是什么,集成是什么呢,非常简单就是“一直不停地集成代码”。

持续集成是把代码频繁的合并到主干,通过自动构建的方式验证软件的质量,让团队快速的响应质量,快速的修复问题,快速的给客户解决问题,快速地交付更好的软件质量。

###我们为什么要做持续集成

开发人员对下面的软件开发场景很熟悉,比如:

持续集成是如何缓解这个问题,Martin Fowler 大师曾经说过:

“ Continuous Integration doesn ’ t get rid of bugs, but it does make them dramatically easier to find and remove.” — Martin Fowler

如上面所说,持续集成不能消除 bug ,但能更容易地发现 bug,更快速地修复,提升产品质量。那么,持续集成能给我们带来哪些价值?

fir.im

从这张图上可以看到,持续集成形成一个完美的闭环。通过持续的集成进行不断地检查、调整,同时,项目的透明性也得到了最大的体现。

###fir.im 如何进行持续集成实践 这是一个常见的持续集成流水线:

fir.im

在日常的开发过程中,程序员在本地提交代码,持续集成流水线要求先做一次本地集成,在本地进行验证后提交到源代码管理仓库中,之后源代码工具会发出 webhook 触发到持续集成系统中。当构建 /测试完成后,会及时通过钉钉或邮件通知团队(测试 /研发 /boss/产品经理)集成状态,产品经理或项目经理收到通知后会在测试环境做验收测试,这是一个比较完美的反馈环。

假如测试通过验收完毕后,持续集成系统会自动触发部署到类生产环节或测试环境,或由专人手动部署到生产环境。

为什么要做本地集成

首先,代码在远程进行管理,每个人都会提交代码,远程的代码仓库会产生变化,所以在本地集成的时候要求进行代码合并,以免出现分支冲突和代码冲突。其次,不要依赖于持续集成系统给你结果,可能需要 30 分钟的时间,不要让开发人员等待,一定要先做本地集成。

如何做版本提交

再说一个提交的问题,我们尽量保证每一次提交都是一个完整的提交,也就是原子提交。

当代码变动你想创建提交时,这个提交应该尽可能的小量,并且包含一个不可分割的特性( feature )、修复( fix )或优化( improved )。

拿每个产品开发都会遇到的 login 功能开发举例,当填完的用户名和密码传到数据库,做完验证后给用户返回一个结果。那什么是一个原子提交?比如,提交验证一个用户名,这是一个完整的 feature ;验证密码是否符合格式( 6 位 /8 位),这也是一个完整的 feature ;当我验证完用户名和密码后再传到数据库之后,查询正确与否,这也是一个完整的 feature ;保证每次提交是一个完整的 feature 或修复了一个 bug,不要代码写成半截。

持续集成系统

这里讲的是狭义的持续集成系统,通常的 CI 系统收到提交之后会触发构建,构建会有信息返回比如 commit id、commit 信息、代码变更等,收到代码提交后会触发自动构建,接着安装依赖进行编译,并触发质量保证流程,也就是说自动化测试集。

fir.im

自动化测试集包括代码静态检查-单元测试-集成测试-验收测试-性能测试,也会有压力测试、回归测试、monkey test 等等一系列的测试。

fir.im

接下来,我们具体讲一下 fir.im 团队如何进行持续集成实践的。

fir.im 的敏捷环境

fir.im 是一个内测分发平台,我们也做了一个持续集成 CI 产品-flow.ci。先来看一下我们正在使用的敏捷环境: fir.im

说一下 Git 分支管理

我们在应用 3 个分支 —— master / develop / feature 分支,对 feature 命名会有一些要求,持续集成系统一定会反馈到 trello 的 kanban 里,所以对于 feature 分支我们也有这样的命名 feature/fci-{card number} 以方便区分。

fir.im

多分支如何做频繁地持续集成?

master 分支,即线上分支。线上通常会有一些 hotfix, 任何产品都不可能避免线上的 bug ,这些 bug 需要在 master 分支进行修复,修复完成后持续集成系统会告知已上线,收到团队反馈,这些代码会要求更新在 develop 分支上,之后所有团队也会收到相关通知,那么 feature 分支会有变化吗?答案是肯定的,因为频繁的集成可以防止代码偏离。这就是我们多分支构建的策略。 fir.im 还有一个策略——不同的分支不同的构建,持续集成系统跑完整个流程会很长,所以在 feature 分支频繁度会比在本地构建要高一些,但是也没有那么高。为了保证持续集成系统能快速地收到反馈,需要在 feature 分支上做一些定制的 workflow ,所以我们做了代码静态分析和单元测试。

当 feature 分支的 card 做完之后( scrum 中 done 的含义是指测试验收完毕),集成到 develop 分支,develop 分支会自动部署到测试环境,会跑一个整个自动化测试集,为什么是这样的构建策略呢?

我们会做代码 review,当 feature 分支提 pr 到 develop 分支上,这样 develop 分支的构建条件是:当收到 pr 之后,开始跑持续集成。假如部署完成整个测试跑过了产品经理验收之后,没毛病了,终于可以发布了到 master 分支。

整个团队的构建频率可以看下这张图: fir.im 本地集成的频率非常高,远程构建对应的是 feature 分支,会相对低一下。QA 环境对应的是 develop 分支的构建粒度。这样的构建每天都会产生,所以做完之后不要积压,一定要保持上线节奏。 fir.im kanban + scrum 结合的方式构成我们每日构建,这是一个整体的构建策略和上线频率。

fir.im 的持续集成系统演变过程

罗马不是一天建成的,持续集成不是一开始就是完美的,每个开发者心中都有一个比较理想的自动化工作流——持续部署,大概会经历这几个演变阶段:

fir.im

这是我们在用的自动化测试集,下面分别说下静态检查分析、单元测试、验收测试、性能测试的具体用途。

Step 1. 静态代码分析

每个公司都会有自己的代码规范,代码静态分析工具能够保证代码质量,现成的工具有 java 的 FindBugs,ruby 的 rubocop 等。利用代码检查工具可以帮助团队发现可重构的地方,输出产出 – HTML 报告,也会发现潜在 bug ;有的代码检查工具还会检查出一些安全漏洞。

这三点是代码静态分析最重要的作用。这里也分享一个 GitHub 地址,列出一些主流语言的代码分析工具,可以参考一下。

Step 2. “单元测试”

这里的 “单元测试”也加上了集成测试,毕竟创业公司要求资源最大化。程序员一定要写单元测试,要克服开发的惯性思维,不要甩锅。下面有一些注意的点和大家分享:

Step 3. 验收测试

验收测试是端对端的测试,从收到用户名密码到返回结果,是不是我们所期望的一个值,这是验收 Acceptance Test,其实是验收了整个功能。代码静态检查和单元测试,保证了我们如何怎么去写代码,验收测试保证了写正确代码,符合开发需求。

flow.ci 做验收测试比较多,用的是比较流行的框架 Cucumber + Selenium WebDriver,目前支持 3 种数据库,5 种 git 仓库,7 种 开发语言跑在 docker 容器云上,支持 iOS 构建跑在 mac 机器上,要保证这些排列组合正常运行,这是 flow.ci 做验收测试最核心的价值。 fir.im 其实,持续集成是一个工作流,当 push 代码的时候才会 run 起来,但是 flow.ci 本身系统也有外部依赖的特殊性,会依赖一些第三方的 sevice (比如 GitHub/GitLab 等),验收测试应该一直保持不断地运行,也可以叫持续测试吧。因为我们永远不能保证第三方的 api 会不会改变:)

Step 4. 性能测试

我们的性能测试做的比较简单,主要测试 api.因为 fir.im 做 app 的内测分发,我们需要性能测试保证 app 上传下载的正常稳定。性能测试是单用户的,压力测试是多用户的,这是两者之间的区别。

性能测试会有一些不确定性,有很多系统会产生缓存。flow.ci 的性能测试跑在 docker 上,是一个干净独立的环境,需要让系统预热运行一下。Locust/JMeter/LoadRunner 是目前比较流行的性能测试工具。 flow.ci 目前用的是 locust,可以参考一下。

持续集成的可视化、数据分析

我们认为一个好的持续集成系统也要做到项目进度的透明化,最传统的方式是发送相关的邮件,但实质上有几个人去看呢?为此我们采购了一个大的屏幕来解决这个问题,用来时刻提醒团队的某个构建结果。当然也可以用闪烁灯或音频的方式。

fir.im

说到数据统计分析,整个 ci 流程跑下来产生的很多数据也非常有挖掘的价值。比如,对于代码静态分析有多少 Offence、Risk、Bug,对于单元测试有失败率、测试覆盖率;对于验收测试或性能测试有多少的失败率,这些数据都有可能成为衡量一个程序员的标准。

fir.im

结语

CI 就像盖楼房的脚手架一样,没有脚手架就没办法盖出一个足够高的楼,没有 CI 就无法交付质量足够好的软件!

欢迎分享你的观点。

]]> 给自己一个提升的机会 | 送 2017 @ Swift 大会门票 tag:www.v2ex.com,2017-04-14:/t/354789 2017-04-14T02:56:57Z 2017-04-18T13:18:02Z Imshaha member/Imshaha 如果你是一个 iOSer ,肯定不想错过 2017 年真正的技术大会,比如 2017 @Swift 开发者大会.

fir.im

这次大会邀请了各种重量级国外嘉宾,包括国外的 RayWenderlich 的 CTO Sam , RxSwift 的作者 Krunoslav ,来自 Uber 和前 Facebook 的一线开发者,国内的滴滴、美团点评、腾讯等优秀的 iOS 技术大牛,阵容无比强大。早鸟票即将结束,直接报名请直达2017 @Swift 大会

送票福利

flow.ci 作为合作伙伴之一,有 3 张价值 ¥ 749 的门票,关注并转发这条微博抽 1 张免费赠送。

剩下的 2 张靠实力不靠运气,我们想征集 「使用 flow.ci 进行 iOS 持续集成」的实践教程flow.ci 已支持 Objective-C & Swift ),分享你的使用经验和感受。

除了门票外,我们还准备了 flow.ci 代金券、人气鼠标垫与复古木质飞机,怎么个送法呢?请看:

一、最佳实践教程: 2017 @Swift 大会门票+ 价值 ¥ 200 flow.ci 代金券

这是一场由@SwiftGG 翻译组 主办的属于开发者的真正技术大会(你明白的,真正的技术大会),速速报名请戳☞☞这里

(PS:大会地点在深圳。如果坐标没在深圳,路费需要自理:D)

二、优秀实践教程:复古木质飞机 /鼠标垫 + 价值 ¥ 200 flow.ci 代金券

喜欢我们周边的朋友们,机会来啦 :D

fir.im

参与规则:

请把你的实践教程的链接放在评论区,或者在微博分享你的文章@风起云飞 flowci,还可以直接投稿 dm@fir.im.

活动时间:

微博转发抽奖: 2017.04.17

最佳实践征集: 2017.04.12 - 2017.04.24

]]>
CI Weekly #16 | 从另一个角度看开发效率: flow.ci 数据统计功能上线 tag:www.v2ex.com,2017-03-30:/t/351472 2017-03-30T06:40:34Z 2017-03-30T06:37:34Z Imshaha member/Imshaha 很开心的告诉大家,flow.ci 数据统计功能已正式上线。

进入 flow.ci 控制台,点击「数据分析」按钮,你可以按照时间日期筛选, flow.ci 将多维度地展示「组织与项目」的构建数据指标与模型,包括构建成功率、构建次数、构建时长等,更方便地了解团队项目的构建状态。

coding flow.ci 展示的不只是优雅可观、一目了然的数据分析图,更重要的是帮助构建者提升开发效率,交付更多的价值。

说了这么多,也不能错过上周一些「功能优化」,比如:

详情见 flow_ci changelog. 如果你在使用过程中遇到问题,可以通过「在线消息」或去 flow.ci 社区 反馈给我们 :)

这期 CI Weekly 收录了关于微服务、 Docker 、持续部署、持续集成的最佳实践、工程师文化相关的技术分享,希望对你有用~

Docker 在沪江落地的实践

容器化技术在过去的几年甚至到现在都是一个十分红火的技术,每一个对技术有些追求的公司对容器或多或少都有些蠢蠢欲动与研究。这篇文章记录了 Docker 是如何在沪江落地的。( via :dockerone.io-DarkForces )

个推持续集成最佳实践

借助于 Git 、 Docker 、 Jenkins 以及 Nexus 等工具,个推搭建了自己的持续集成环境,并一步一步的摸索出了自己的最佳实践,这篇文章分享了是如何利用持续集成技术提高团队生产力。 (via: 个推 Getui) ​​​​

聊一聊基于 Docker 的持续构建实现

看看网易蜂巢是如何基于 Docker 实现持续构建。( via:网易蜂巢

从零搭建持续交付系统

如何根据不同的业务场景与交付方式,选择适合的持续交付方案。( via :阿里云-莫言)

[译] 软件开发人员应该知道的关于持续集成的一些事情

本篇文章帮助你更快地了解持续集成相关的概念和工具等。( via : 可译网)

持续部署 Microservices 的实践和准则

持续部署( Continuous Deployment )是 Microservices 场景下一个重要的技术实践。本文将介绍持续部署 Microservices 的实践和准则。( via : 思特沃克)

重新理解微服务

本文基于作者在大型互联网系统的服务化实践和思考,和大家一起探讨微服务架构。本文主要内容包括:传统 SOA 架构、新型 SOA 架构、服务设计方式、深入微服务、微服务体系、微服务系统架构。( via : 聊聊架构-王庆友)

深入浅出 Git

这篇文章解释了 Git 是如何工作的,文中的 git 模型可以让你更好的理解 Git 做了什么,正在做什么以及将要做什么。( via : [coding 用户翻译])


以上是 CI Weekly #16 的所有技术分享, 如有问题,请联系我们~

Happy building!

flow.ci

CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog 、微信公众号、官方微博知乎专栏简书,欢迎关注或投稿:)

]]>
全新的 flow.ci Dashboard 上线 tag:www.v2ex.com,2017-03-22:/t/349489 2017-03-22T08:14:42Z 2017-03-24T07:47:37Z Imshaha member/Imshaha 全新的 flow.ci Dashboard 页面上线了,更快捷地创建项目,构建列表页面新增分支, Pull Request 界面;侧边栏新增构建任务监控和项目监控,整个 Dashboard 界面焕然一新,一起来看看新版的变化吧~

更简单快捷地创建项目

新版的创建项目默认选择最近使用的代码仓库和组织,创建项目的流程从上一版的「选择项目-选择代码仓库-选择组织-选择项目」的 4 个步骤简化成「选择代码仓库-选择组织」两步,同时左边显示个人账号和组织,右边显示已经授权的项目,也更加清晰方便。

flow.ci

全新的构建列表页面

创建项目后开始进行构建,整个构建列表页面进行了重构,分别列出了**“全部构建”“分支”“ PullRequest ”**三个页面,以供构建者参考。首先,在全部构建里可以筛选分支,选择你想要关注的分支。

整个构建页面以“构建任务”为核心,当构建任务完成时,能一目了然地看到构建 id 和分支名称,构建状态(失败/成功/已停止)、相关的构建发起者和构建日志,同时也可以在列表任务右侧看到构建时间、构建时长、组织名称。这里值得一提的是,我们新添加了构建项目的仓库链接,这样很容易能看到上次提交的代码和这次更新的代码的对比,方便定位构建失败的代码。

flow.ci

还有一个微小的细节,点击“只查看我的提交”的按钮,你可以更专注于自己的构建任务。

增加新的分支

进入分支页面,分为关注分支和活跃分支,可预览和汇总每个分支最近 5 次构建结果。

关注分支中默认关注 master 分支;活跃分支默认了展示最近构建次数较多的分支,可选择标记置顶相对重要的分支。

更受关注的 Pull Request

我们发现开发者在构建过程中会比较关注 Pull Request 的构建结果,单独列出来会更方便查看。在每条 Pull Request 构建结果的右侧,也添加了构建项目的仓库链接,与 Pull Request 构建的分支一一对应定位,方便查看代码构建的改动。

flow.ci

更轻易地监控构建结果

细心的人肯定发现了右上角新增加的监控图标,点开会呈现跨项目的构建任务和最近 20 次的构建;项目监控可查看组织下各个项目的构建状态,同时展现最近一次的项目构建状态和结果,点击可直接跳转到具体的 job 日志页面。


这是新版的 Dashboard 页面的改版,希望你会喜欢,在使用过程中有任何反馈通过网站[在线消息]或者来flow.ci 社区找到我们。

Enjoy :)

]]>
几分钟看完 flow.ci 全部功能 tag:www.v2ex.com,2017-02-24:/t/342834 2017-02-24T02:20:39Z 2017-02-24T02:17:39Z Imshaha member/Imshaha 从 0 到 1 ,从邀请式内测到收费上线,flow.ci 经历了十个多月的沉淀与打磨。这期间, flow.ci 工程师们奋力赶工,进行了一系列的大功能更新, Bug 修复,功能优化。

这篇文章记录了 flow.ci 内测期间的大功能更新和相关的实践教程,以及在可预见的未来 flow.ci 将迭代的新功能。

正式内测

4 月初,flow.ci Beta 上线,正式进入开发者的视野。 Beta 版的 flow.ci 支持国外最主流的代码仓库构建,也有基础的插件和 trigger ,支持主流的开发语言创建自动化工作流,同时提供了每种开发语言相关的基础实践教程。我们的初衷在于, flow.ci 能将工程师们从眼前重复繁琐的事情中解放出来。

coding

使用文档上线

flow.ci 的官方文档 同时支持中文、英文两个版本。顺便说一句,官方文档也是用 flow.ci 做的持续部署与自动更新,相关教程见这里

更适应国内开发者习惯 - 代码仓库支持 Coding

经过对国内开发者的代码仓库使用习惯调研,flow.ci 迅速支持了 Coding 的代码仓库。除了现有的代码源( GitHub/GitLab/Bitbucket ),在创建项目时可以选择 Coding 进行持续集成了 :)

coding

代码质量检测插件上线

更好的代码质量检测,帮助我们检查代码中的错误,减少 codereview 花费的时间,增强代码的可维护性。

基于这个原则,我们上线了几款代码质量检测插件,涵盖每一种开发语言主流的代码质量检查的插件。添加插件方式也非常方便,搜索相关关键词,点击"添加"就会加入现有的工作流中。

支持 iOS 项目的持续集成

应大多数 iOS 开发者的需求,flow.ci 开始支持 iOS 项目的持续集成。看下这篇 iOS 快速入门帮助快速编译、测试、打包上传至 fir.im ,一气呵成:)

也可以参考一下内测用户@阿米 amoy 分享的 flow.ci iOS 构建经验>>flow.ci 初体验! 记一次暖心的 iOS 持续集成

flow.ci 公测

注册取消邀请码限制,用户可直接注册使用 flow.ci。我们尝试着让 flow.ci 面向更多的开发者,接受更多的声音。

支持 .yml 配置文件

除了页面配置工作流,flow.ci 目前已经支持更 Geek 的方式——.yml 配置文件设置工作流,详细的使用方法可参考文档:YML 配置文件。选择你喜欢的方式,开心就好:)

以上是目前为止 flow.ci 从内测到收费上线的重大功能更新,未来的 flow.ci 会是什么样子呢?我们规划了下面重大功能上线,看看有没有你期待的功能。

更灵活的自定义 docker 镜像

如果你不满足于 flow.ci 官方 docker 镜像,那到时候一定要试试自定义 docker 镜像!你可以在自定义 docker 镜像中安装任何运行时需要的组件、依赖包等等,更加灵活便捷。

支持插件自定义,开放插件市场

很多开发者们喜欢使用自定义插件脚本,未来 flow.ci 会统一插件的脚本标准,开发者可以将自己的插件开源提交到 flow.ci 插件市场,避免开发者们重复造轮子。

构建状态的监控功能

持续集成的原则之一就是每个人都可以了解当前项目的构建状态。flow.ci 将从「项目」和「时间」两个维度监控项目的构建状态,方便跟踪到相关负责人员项目构建失败的问题。

项目构建的数据分析展示

关于项目构建的数据分析,可以根据「时间」筛选,查看项目的构建成功率、构建次数、构建时长等数据指标,更方便地了解和分析团队项目的构建状态。

支持持续部署

相比持续集成,持续部署的工作流程更受关注。使用 flow.ci 将测试完毕的代码自动部署到诸如 AWS ,阿里云, IBM Bluemix (插件形式)等各种云平台或自己的服务器上,从 build - test - deploy 整个工作流自动化完成,相信很多人都会期待吧:)

支持产物存储

未来 flow.ci 会将构建过程产生的日志、构建结果的安装包等相关的产物保存下来,做到产物可追溯可查找,代码和产物一一对应。

Long-Run

测试时一定要保证环境是干净 /新鲜的,才能保证每次测试的结果是一样的。 Long-Run 是在构建完成后 flow.ci 为可部署的版本提供可持续运行的测试环境,这样项目与项目之间,不同的代码版本之间互相隔离,互不影响。

上面的 7 大新功能将在未来 3 个月内上线,如果你也有其他需求,请来flow.ci 社区告知我们:)

未来可期,希望 flow.ci 带给你们更多惊喜!

]]>
fir.im Weekly - 可能是 2017 最好的 Swift 学习资源 tag:www.v2ex.com,2017-02-13:/t/340167 2017-02-13T08:23:35Z 2017-02-13T21:05:31Z Imshaha member/Imshaha 春节假期刚结束,一大批新鲜干货就来了。@故胤道长 分享了一份开源 Swift30 Projects ,内含 30 个小 App ,更新至 Swift 3.0 ,目前更迭的这个版本更注重代码规范和架构设计,且每个项目注明了教程链接。正如作者所说, by the developer and for the developer ,方便每一个 swifter 学习。

fir.im

本期 fir.im 整理了其他一些新鲜的 iOS / Android 开发技术分享、技术直播活动,希望对你有帮助。

『 iOS 开发分享』

今日头条 iOS 客户端启动速度优化

应用启动时间,直接影响用户对一款应用的判断和使用体验。复杂度高的业务模块和诸多的第三方插件也会拖慢 app 的启动时间。针对这个问题,今日头条技术博客写了这篇文章,讲述了如何优化今日头条 iOS 客户端启动速度,感兴趣的可以看看。

Baymax :网易 iOS App 运行时 Crash 自动防护实践

来自@移动开发前线的分享。

"Baymax 项目是为了减少开发人员在开发中一些不规范的代码编写造成的内存泄露,界面卡顿,耗电等问题而来的一个监控系统。现在 Baymax 迎来了它新的功能: APP 运行时 Crash 自动防护功能,本文将详细剖析这个功能的实现。 全文阅读,点击这里

漂亮的 iOS 日历组件— JTAppleCalendar

@开源小组分享了一款漂亮的 iOS 日历组件—— **JTAppleCalendar**,非常漂亮。

fir.im

『 android 开发分享』

支付宝 Android 版使用的开源组件

简书作者didikee 整理了支付宝 Android 客户端使用的开源组件,给需要的同学做一些参考。文章传送门

Android 应用瘦身,从 18MB 到 12.5MB

如果最近你在烦恼 Android 应用瘦身的问题,也许@D_clock 爱吃葱花的这篇文章可以做来参考。传送门

Android 运行时权限管理最佳实践

@攻城狮严振杰分享了关于 Android 运行时权限管理你需要知道的一切,包括开源管理库AndPermission等,文章传送门.

『其他』

有赞的微信小程序组件库( ZanUI-WeApp )开源

ZanUI-WeApp 是有赞移动 Web UI 规范 ZanUI 的小程序现实版本,结合了微信的视觉规范,为用户提供更加统一的使用感知。

fir.im

Dark Side of iOS

喵神@onevcat大大 在下周一准备开直播分享一些关于 Dark Side of iOS - Jailbreaking Dev 101 ,直播地址在这里,快去涨涨姿势。

蚂蚁出品数据可视化产品- AndV

@Barret 李靖在微博上分享了蚂蚁开源的 AntDAndV 。 AndV 目前可免费使用,尚未正式开源,适合用来做数据洞察的呈现与分析。


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
CI Weekly #13 | 用更 Geek 的方式配置你的 CI 工作流 tag:www.v2ex.com,2017-02-09:/t/339310 2017-02-09T07:24:47Z 2017-02-09T07:21:47Z Imshaha member/Imshaha flow.ci 的重大更新来了——支持通过 .yml 文件配置工作流(测试阶段),具体的使用方法可参考文档;同时 flow.ci 也开放了社区>> club.flow.ci,使用的任何问题和反馈可以在这里讨论:)

在此,奉上新一期的 CI Weekly ,包含艺龙团队 /Blue Green 的持续部署、 DevOps 交付、 DevOps tools ,自动化测试方面的一些技术分享,希望对你有用~

『持续部署 /交付 /DevOps 』

艺龙部署体系的演进

艺龙团队将容器技术与当前公司内部已有的自动化运维体系相结合,来实现一套艺龙的容器云平台,看看他们的经验。( via : dockone.io

Blue Green Deployment

@湾区日报 BayArea 在微博上分享了关于 Blue Green 的持续部署:

“部署新版本的 web app 的时候,让旧版与新版的代码同时跑,只需将 load balancer 从旧版代码切换到指向新版代码。如果新代码有问题,可以瞬间 rollback ”。( via :@湾区日报 BayArea

flow.ci

打造 DevOps 持续交付高速公路

"如何基于云服务打造一条 DevOps 持续交付高速公路,打通从代码到服务的通道,让我们的交付过程快速顺畅,通过实现快速可靠的部署 和发布,提升研发、运维各环节的效率和整体的交付效率和质量。"作者分享了自己的经验,感兴趣的来看看。( via : FIT2CLOUD 公众号-刘涛)

35+ Tools Every DevOps Expert Must Know

这是一份包括 DevOps 必须了解的一个 List ,包括了 Learn coding 、 Source control 、 Continuous integration and deployment 、 Development platforms 相关的工具等等。 ( via :devops.com

『 自动化测试 』

微信 webview 的自动化技术

作者在这篇文章中解释了微信 webview 自动化和性能分析方法, 此方法用于 android 平台, 感兴趣的可以参考下。( via: Testerhome seveniruby

基于模型的自动化测试工具—— GraphWalker

“ GraphWalker 就是一个基于测试模型的用例生成工具。它主要应用于 FSM, EFSM 模型。可以用来它可以直接读取 FSM, EFSM 图形模型、 json 模型、生成测试用例。”( via : 腾讯移动品质 TMQ

flow.ci

『 其他 』

<<高效 MacBook 工作环境配置>> 2017 更新版

本文记录 MacBook 工作环境配置过程,供新入手或觉得 MacBook 比较难用的同学参考。( via : 高效程序员公众号)

程序员如何克服焦虑

在高压环境下,每个人或多或少都会有一点焦虑症。这篇文章也许能帮你解除一些困惑。( via : 午夜咖啡公众号)


以上是 CI Weekly #13 的所有技术分享, 如有问题,请联系我们~

Happy building!

flow.ci

CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog 、微信公众号、官方微博知乎专栏简书,欢迎关注或投稿:)

]]>
fir.im Weekly - 2016 移动开发技术大回顾 tag:www.v2ex.com,2017-01-16:/t/334981 2017-01-16T11:04:34Z 2017-01-16T11:01:34Z Imshaha member/Imshaha 2016 年是移动技术发展迅速的一年,认认真真回顾这一年必不可少。@移动开发前线 的 这篇 2016 移动开发技术巡礼 ,精心盘点了 2016 年 移动开发技术大事件,分为 iOS/Android 平台篇、 iOS/Android 开发技术篇、跨平台技术篇( React Native 、 Weex 、微信小程序)、热门行业技术篇(直播、 VR/AR )等等,值得阅读。另外,@开发者头条也发布了十大 iOS 开发者必读好文十大 Java / Android 开发者必读好文,感兴趣的去看看。

同时, 2017 年伊始不少好的项目已经开源或者准备开源,本期 fir.im 整理了部分开源项目和一些 最新的 iOS / Android 开发技术分享,希望对你有用。

『 开源项目 』

VirtualAPK: 滴滴 Android 插件化的实践之路

继上周 滴滴开源 iOS 动态化方案 DynamicCocoa后,@任玉刚 Coder又在微博上分享:“经过半年的开发、填坑、验证,滴滴出行自主研发的插件化框架终于稳定了下来”,这是一款比较完善的插件化框架: VirtualAPK 。 VirtualAPK 开源后,其他 App 能够无缝集成,无需考虑细节实现和兼容性问题即可轻松拥有热更新能力,值得期待。详情见:VirtualAPK: 滴滴 Android 插件化的实践之路

微信移动端 IM 网络层跨平台组件库 Mars 开源

Mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件。目前已接入微信 Android 、 iOS 、 Mac 、 Windows 、 WP 等客户端。 Github 地址: Tencent/**mars**,也可以参考下即时通讯(IM)技术开发发布的这篇文章

fir.im

OCS ——史上最疯狂的 iOS 动态化方案

关于 iOS 动态化方案,很多人了解过WaxPatchJSPatch还有最近的滴滴的 DynamicCocoa ,而 OCS 是 腾讯 Bugly 的 iOS 动态化方案——OCS,被用于 iOS APP 安装包减包、功能插件化、 HotPatch 等方方面面动态化需求。点击这里,了解更多。

来自微信团队的 6 个开源项目

除了上面推荐的 Mars ,到目前为止腾讯微信团队发起的开源项目已经有 6 个,并且这其中大部分都是在 2016 年开源的,领域涉及移动、数据库、基础类库、框架。感兴趣的可以看看这里

『 iOS / Android 开发分享 』

iOS 进阶之页面性能优化

“过早的优化是万恶之源”,@hi_xgb 的这篇文章分享了 iOS 系统中性能调优的一些理论知识,后面还介绍了 Instruments 中 Core Animation 的一些性能检测指标用法,来这里看看。

fir.im

iOS 编程中 throttle 那些事

@愚公编程 MrPeak 的这篇文章 聊了聊和 throttle 相关的一些技术场景。

XMPPFramework 开发

CoderDong 的这一系列文章记录了自己 从零开始 做最详细的即时通讯功能,还在不断更新,希望对你有用。 XMPPFramework 系列开发文章传送门

Android 开发 VR 实战系列

如何在 Android 中去开发 VR 功能的 APP 呢?来看看@亮之于东的这系列分享。

[ Android 开发 VR 实战] 一.给用户呈现一个 360°全景图片

[ Android 开发 VR 实战] 二.播放 360°全景视频

[ Android 开发 VR 实战] 三.开发一个寻宝类 VR 游戏 TreasureHunt

Android 系统源代码情景分析

这本书从 Linux 内核层、 HAL 层、运行时库层到应用程序框架层,系统地分析了 Android 系统的源代码,来跟着@罗升阳一起重新学习 Android 系统>>传送门

iina - 开源 Mac 视频播放器

@开源小组分享了一个超棒的开源 Mac 视频播放器!好看,实用,功能完整。 Github 地址: lhc70000/iina


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - iOS / Android 动态化更新方案盘点 tag:www.v2ex.com,2017-01-05:/t/332466 2017-01-05T09:19:03Z 2017-01-05T09:16:03Z Imshaha member/Imshaha 动态化更新是 App 开发必然面对的问题。在 iOS 环境下, Apple 开发者们像是“ 带着手铐脚镣跳舞” ,相比之下 Android 开发者会轻松一点,有很多相关的开源框架帮助 App 进行热修复、热更新。

本期 fir.im Weekly 整理了滴滴打车团队动态化方案、 JSpatch 的作者 iOS 动态化分享,以及 QQ 空间、微信、微信读书、美团点评技术团队的 Android 热修复热更新方案,还有一些其他的技术分享。

DynamicCocoa :滴滴 iOS 动态化方案的诞生与起航

我就叫 Sunny 怎么了在微博上公布了滴滴 iOS 动态化方案 DynamicCocoa,保持 iOS 原生技术栈让已有的 OC 代码动态化运行。微信文章传送门:DynamicCocoa :滴滴 iOS 动态化方案的诞生与起航,同时,滴滴客户端 App 架构团队考虑于 2017 年初开源。

相比跨端方案,也带来了一个新思路: iOS 和 Android 都保留 native 开发模式,用各自的方式将 native 代码直接动态化,保持各平台的差异性。

fir.im

iOS 动态化的故事

JSpatch 的作者 @bang 聊了聊关于做了 iOS 动态化的故事,感兴趣的点击这里看看。想要更多的了解 JSpatch 的特性,可以看看 iOS 动态更新方案对比:JSPatch vs React Native

安卓 App 热补丁动态修复技术介绍

以补丁的方式动态修复紧急 Bug ,不再需要重新发布 App ,不再需要用户重新下载,覆盖安装?来看看 QQ 空间团队关于安卓 App 热补丁动态修复的方案

微信 Android 热补丁实践演进之路

微信的动态化方案是基于 dexDiff 和 dexPatch ,这篇文章帮助大家不仅能够全面的了解各项热补丁技术的优缺点,弄清楚在什么场景下使用哪个热补丁技术。目前,微信热补丁框架也已开源——Tinker,关于微信 Tinker 的一切都在这里,也可以了解下@流川枫与苍井空-_- 的这篇 Android 热补丁之 Tinker 原理解析

Android 热更新方案 Robust

@美团点评技术团队在了解 Instant Run 原理之后,实现了一个兼容性更强的热更新方案,是更加产品化的 hotpatch 框架-- Robust, 详情见这里

fir.im

Android Patch 方案与持续交付

WeRead 团队基于已经出现的框架没有更合适的轮子,就自己造了一个 patch 方案,以加速 bug 处理和版本持续交付。文章传送门

Android 热修复实践应用— AndFix

@_HanWen这篇文章记录使用阿里巴巴开源热修复框架——AndFix的整个实践过程,值得看看。

『 其他』

写给 iOS 开发者看的 HTTPS 指南

很多 iOS 开发者都不明白 HTTPS 、 TLS 、证书到底是怎么回事,甚至有些同学还有不少误解。吕文翰_JohnLui这篇文章着重以大部分 iOS 开发者能理解的方式介绍 APP 启用 HTTPS 支持的过程中跟 APP 相关的部分。

2016 年 iOS 技术圈回顾

来自@愚公编程 MrPeak分享。

Peak 君 盘点了 2016 年 iOS 技术圈发生的一些大大小小的事,值得品味。感兴趣地来这里看看。


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - 让 iOS 应用更加安全 tag:www.v2ex.com,2016-11-30:/t/324289 2016-11-30T03:10:29Z 2016-11-30T03:07:29Z Imshaha member/Imshaha 攻易防难,关于 iOS 应用安全看起来有些神秘。iOS Security , 源于吴发伟_则平博客翻译的关于 iOS 安全的一系列文章,现在站点已经系统收集了大量关于 iOS 逆向、安全、反编译、静动态分析的文章。感兴趣的同学可以去看看

同时,也推荐阅读沙梓社和吴航的《 IOS 应用逆向工程》,这本书以工具+代码的形式全面系统地展开知识点,有相关问题可以在iosre 论坛讨论。

除此之外,本期 fir.im Weekly 也收集了最近的 iOS/Android 相关的工具、源码分享和技术文章~

『 iOS / Android 开发分享 』

Apple 官方出品 - iOS 版本 API change 对比

@CodingTogether分享了 Apple 官方出品的各个 iOS 版本 API change 对比,界面很友好:链接

BeeHive - iOS App 模块化编程的框架实现方案开源

来自@lp_马建成微博分享。

BeeHive 是用于 iOS 的 App 模块化编程的框架实现方案,吸收了 Spring 框架 Service 的理念来实现模块间的 API 耦合。 GitHub 地址:**BeeHive**。

fir.im

iOS 持续集成系列

@PPPan分享了 iOS 持续集成的经验,目前已经完成了前 2 篇,感兴趣的可以关注下。顺便说一下,也可以来试试 flow.ci 的 iOS 持续集成

iOS 持续集成 - 开篇

iOS 持续集成 - 自动化 Code Review

APP 缓存数据线程安全问题探讨

“一般一个 iOS APP 做的事就是:请求数据->保存数据->展示数据,一般用 Sqlite 作为持久存储层,保存从网络拉取的数据,下次读取可以直接从 Sqlite DB 读取。”这其中也会有一些问题,看看@bang的这篇文章对于 APP 缓存数据线程安全问题的一些分析,看看会不会找到合适的方案,文章链接

重写 Instagram Feed 的经验之谈

@RealmChina在微博上分享:

“在 Instagram 团队重写他们全新的 iOS Feed 的过程中,他们积累了大量的经验,遇到的坑无疑已经超出了他们的预料,比如说集合视图、差异化 (Diffing) 以及冗长代码所带来的危险之处。”

文章传送门

50 个 Android Studio 秘诀、技巧和资源

来自@移动开发前线的微信分享。

这篇文章罗列出 Android Studio 有用的提示、技巧、快捷方式和参考资源,帮助你提高整体效率和操作性能。

中文翻译:链接;

英文原文:链接

系统剖析 Android 中的内存泄漏

作为 Android 开发人员,或多或少都听说过内存泄漏。 Android 中的内存泄漏又是什么样子,@技术小黑屋写的这篇文章一些简单的总结。

全文浏览,请点击这里

APK 瘦身记,如何实现高达 53%的压缩效果

APK 越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越低,对于研发来说,也是一种挑战。看看@阿里聚安全解决方案

全文阅读,点击这里

模仿饿了么加载效果

简书作者_deadline写了一个模仿饿了么加载效果(五八同城, UC 也都有这个效果)的动画, Github 地址:BounceLoadingView.

『 其他』

北京 GDG Devfest 2016 干货资料

@廖祜秋 liaohuqiu_秋百万在微博上分享了北京 GDG Devfest 2016 干货资料>> devfest2016.

腾讯一年感受

Hunt Zhan写了一篇关于在腾讯工作一年的感受,想了解腾讯风格的同学可以来看看,文章链接


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
今年感恩节, fir.im 在寻找这些人 tag:www.v2ex.com,2016-11-24:/t/322918 2016-11-24T04:16:55Z 2016-11-24T04:58:39Z Imshaha member/Imshaha 去年 11 月, fir.im 网站加了一个小小的「打赏」按钮,当时很多用户来打赏,我们无以为报。

今年感恩节,我们在寻找当时的这些用户,不管当时打赏了多少钱,我们都送上 fir.im ¥ 2000 / 100000 次 的最大 Package !

最后,再次感谢新老朋友的支持,冬天快乐[心] :)

fir.im ]]>
fir.im Weekly - 暖心的 iOS 持续集成,你值得拥有 tag:www.v2ex.com,2016-11-21:/t/322128 2016-11-21T08:51:49Z 2016-11-21T08:48:49Z Imshaha member/Imshaha 一则利好消息,flow.ci 已支持 iOS 项目持续集成,想试试的伙伴去 Gitter 群 申请内测。首批尝鲜用户@阿米 amoy 已经用 flow.ci 实现了基本的 iOS 持续集成,并详细记录整个 Build, Test, Deploy 的过程,详情见:

flow.ci 初体验!记一次暖心的 iOS 持续集成

除此外,再来看下最近的 iOS/Android 相关的工具、源码分享和技术文章~

『 iOS / Android 开发分享 』

Dash iOS 版本开源

Dash 是一个免费且开源的 API 文档浏览器,能让你的 iPad 和 iPhone 在脱机的情况下即时访问超过 150 个 API 文档集, Dash 也是一个成功的独立 App 。 GitHub 地址:Dash-iOS.

iOS 预加载 Web 页面方案

来自@戴铭**的分享。 iOS 可以预加载多个网址,然后在离线状态去显示那几个网址,看是否完全缓存。可以先下载 Demo 看看效果, Github 地址:STMURLCache.

Swift3.0 语法速查手册 

@Dariel 在杭州整理分享了Swift3.0 语法速查手册 ,希望可以给在学和在用 swift 的童鞋做一个参考。 GitHub 地址:**darielchen.github.io**。

基于 clang 插件的一种 iOS 包大小瘦身方案

来自@移动开发前线的分享。

iOS 包瘦身,对于一般团队来说并不是优化的首要目标,但是对于一些安装包已经超限的团队来说非常关键。微信和阿里移动安全都分享过相关的内容,后者采用的是去除无用代码的思路,这篇文章将这个思路发挥到了极致。

BGAQRCode-Android - 生成、扫描、识别二维码

@bingoogolapple在微博上分享了自己写的一个轮子—— BGAQRCode-Android ,生成二维码、 ZXing 扫描二维码、 ZXing 识别图库中的二维码图片、可以控制闪光灯,方便夜间使用、可定制,应该能解决市面上常见的二维码功能需求。 Github 地址:**BGAQRCode-Android**.

Android 微信支付爬坑

做支付模块,最常用的是微信支付和支付宝支付,目前二者的官方文档都很简陋。 CSDN 作者ywl5320 记录自己做 Android 微信支付爬坑过程,详情请点击这里

Gradle 配置最佳实践

来自@天之界线 2010的分享。

"随着 android 的发展,新技术和新概念层出不穷。不同的测试环境、不同的分发渠道、不同的依赖方式,再加上各大厂家“优秀”的插件化方案,这些给我们的开发工作带来了新的需求。我希望可以通过 gradle 这个令人又爱又恨的东西来解决这些问题。"

全文阅读,点击这里

Android 中事件传递分析

@希望你的青春不变分享了一篇偏底层的 Android 键盘事件分发机制的文章,链接在这里

『 其他』

远程工作的八个感受

很多人都在向往远程开发的工作,那么中间的酸甜苦辣可能并不知道。im61 分享了从最初 iOS 远程开发进化到做出自己产品 Treation的 CEO ,一年半的时间都在践行远程工作。来看下他的远程工作的八个感受

Git from the inside out

@an00na在微博上说到:

“我读过最好的 Git 教程,不是 How 而是 Why 。我之前读过几百页的书都没搞明白,读完这个整个数据图谱清晰极了。"感兴趣点击这里


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - TouchBar 从入门到开发 tag:www.v2ex.com,2016-11-15:/t/320731 2016-11-15T10:27:15Z 2016-11-15T12:13:52Z Imshaha member/Imshaha 自从 Macbook Pro 发布重大更新, TouchBar 一直是开发者的重点关注对象。除了NSTouchBar 官方文档,速度快者如 @毫无存在感的 Cee,分享了一篇 NSTouchBar 的入门开发指南,对于没有接触过 macOS App 开发的同学也可以轻松上手。

@江南的悲伤 在上篇的基础上研究了 Multi-Touch Bar 的 UI 机制和各种新控件的特性,写了一篇进阶版Multi-Touch Bar UI 开发入门指南,希望对你有用。

如果你对 Touch Bar 开发无感,本期 fir.im  Weekly 准备了其他的技术干货,慢慢“享用”。

『 iOS 开发 』

ENJOY 工程 Swift 3 适配

@webfrogs分享了 ENJOY 工程适配 Swift3 的相关经验,点击这里阅读。

React Native 开源项目-高仿「 ONE·一个」

清_Sky分享了 @lipeiwei-szu开发的纯高仿「 ONE·一个」,兼容 Android 、 iOS 双平台,开源地址: ReactNativeOne.

iOS 堆栈符号解析最佳实践

来自 QQ 空间终端开发团队 的分享。

在 iOS 开发中,解决 crash 问题是比较常见的工作。其中能够解析出符号当然是定位问题的开始。实际工作中,也有看到很多人其实会卡在解析符号。本文介绍了如何解析 iOS 的 crash 堆栈,有需求的同学来这里看看。

2016 年末闲谈 iOS 开发的未来

面对暗流涌动似乎在走下行的移动开发市场,众多 iOS 开发者也在开始思考眼下的未来和前景。如果你也有些思考,来看看@没故事的卓同学这篇文章

『 Android 开发分享 』

Glow Android 优化实践

iam_wingjay 分享了 Glow Android 在网络层、内存优化和依赖注入方面的一些实践,感兴趣的请点击这里.

最直观的 Android 源码资源

这里更新了很多关于 Android 源码的资源,传送门.

Android 内存优化第三弹

欲善其事, 先利其器。 anly-jun写了三篇关于 Android 内存分析工具的分享,链接见下:

GC 那些事儿

Android 内存管理

Android 内存优化第三弹

BluetoothHelper - 连接智能硬件的安卓蓝牙操作库

@dev_voyager 写了个安卓蓝牙操作库,把蓝牙请求封装像 Http 一样,几行代码就能与物联网智能硬件设备交互。 Github 地址 : BluetoothHelper.

TransitionHelper - 对 Activity 转场动画的实现封装

@Mr_immortalZ 在微博上分享,由于业务需求(主要是为了兼容 android5.0 以下),需要对一个 Activity 转场动画进行实现和封装, Github 开源地址:TransitionHelper.


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
不可错过的「持续集成」进阶指南 tag:www.v2ex.com,2016-11-09:/t/319245 2016-11-09T06:03:15Z 2016-11-18T06:11:16Z Imshaha member/Imshaha 随着软件部署的越来越成熟,敏捷、 DevOps 、 CI/CD 、 Docker 等词语慢慢出现在工程师的视野中。对于持续集成,业界也没有一个通用的模式,每个团队可能习惯的方式和关注点都不一样。持续集成最关键的在于「持续」与「自动化」,这篇文章根据这两个关键点,将 CI 系统分为四个进阶过程,来看看你们的团队处在哪个阶段。

第一进阶 — 代码级别的集成,这是最初的持续集成

在最初的持续集成过程中,不依赖独立的持续集成工具,一般语言的 build 工具基本内置,比如 java 的 maven/gradle/ant/ivy , c/c++ 的 make /premake ,同时也会加入代码风格检查,静态代码分析,单元测试调用,测试覆盖率检查等增强功能。接下来的交付准备环境、运行测试、备份旧版本、新版本打标签以及反馈机制等其他重复的事情全由手工完成 ,会花费很多时间。

第二进阶 — 集成 Workflow ,基本实现了真正的持续集成

单一的编译-构建工具逐渐地不能满足产品快速交付的需求。

整个开发流程的重心从「代码级别的集成」转移到了更自动化地编译更完美的测试验证,致力于在最短的时间内发现问题,缩短开发周期,提高软件质量。比较常见的一个场景,某个团队先进行代码 Build ,触发单元测试、集成测试,打包测试完毕后再自动部署到测试环境,循环往复,形成「编译-构建-测试-集成-部署到测试环境」的 Workflow.

flow.ci 是融入了 workflow 机制的持续集成( CI )服务,也可以理解为自动化流程平台,除了集成代码、编译、测试之外,还可以集成常用的工具、灵活自定义流程,帮助你们塑造一个更优秀智能的持续集成系统。

flow.ci

第三进阶 — 持续交付与部署,相对成熟的持续集成系统

在上个进阶中,产品是自动部署在测试环境,手动部署在生产环境。之所以这样选择,是因为产品在从需求到部署的过程中,会经历若干种不同的环境,例如 QA 环境、各种自动化测试运行环境、生产环境等。这些环境的搭建、配置、管理,在不同环境中的具体部署是比较复杂的。经常会遇到这么一种场景:明明在测试环境已经部署成功,但线上环境又出现部署故障。这种情况很可能是生产环境和测试环境的异构造成的。

这时候需要改进你的 CI 系统,建立标准化的环境部署顺序,在 Workflow 中增加部署预生产环境并进行灰度集成测试的流程,做好线上环境部署后的回归测试。到这里,已经真正做到了持续交付。

持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。而“持续部署”,即自动部署到生产环境中而无需手工干预:得到一个版本后,自动部署该版本到生产环境中。实践证明,相对独立快速地部署新功能是一个核心竞争力,可以减轻大规模功能变更的风险。

flow.ci

持续部署,是相对成熟的持续集成系统。

“开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。”

第四进阶 — 并行多 workflow 集成以及个性化集成,基于 Docker 的持续集成

随着项目和团队规模增长,模块之间依赖关系变得复杂,如何确保代码质量的同时,保证代码构建的一致性和稳定性,成为一大挑战。 Docker 可以方便地以“容器化”的方式部署,它就像集装箱一样,打包了所有依赖,在其他服务器上部署很容易,不至于换服务器后发现各种配置文件散落一地,这样就解决了编译时依赖和运行时依赖的问题。

还有一个问题,开发的分支越来越多,每个活跃分支都进行环境部署和集成测试,对持续集成环境的维护成本也就越高。 Docker 的快速启动和镜像仓库是天生为 CI/CD 设计的,以前启动一个虚拟机需要几分钟,而启动 Docker 只需要几秒钟,让并行的持续集成才能成为可能。

目前,比较常见的基于 Docker 进行持续集成的流程如下:

PS :目前 flow.ci 尚未支持 Docker. 下图以 Jenkins 作为 CI/CD 的测试运行引擎,在整个持续集成系统中使用 Docker 的流程图。

flow.ci

最后,开发团队面对越来越复杂的环境,需要结合团队的实际情况,定制出适合的方案,不断优化整个自动化开发工作流,从而打造出一套更适合的持续集成系统。


[参考]

谈谈持续集成,持续交付,持续部署之间的区别

持续集成系统的演进之路

]]>
fir.im Weekly - 关于 Log Guru 开源、Xcode 探索和 Android7.0 适配 tag:www.v2ex.com,2016-10-28:/t/316127 2016-10-28T03:03:24Z 2016-10-28T03:00:24Z Imshaha member/Imshaha 本期 fir.im Weekly 整理了最近的一些技术分享,包括关于 Log Guru 开源、 Xcode 探索、 Android7.0 适配等等 iOS/Android 相关的工具、源码分享和技术文章,希望对你有用。

Log Guru 正式开源

Log Guru ,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取。 Github 地址:FIRHQ/LogGuru,针对 iOS10 的系统问题,新增了「暂停 - 继续」的功能,具体详情请看这里

[通过 Xcodeproj 深入探究 Xcode 工程文件]( http://www.tomorjm.com/2016/10/05/通过 Xcodeproj 深入探究 Xcode 工程文件%20 一 /)

你是否好奇 Cocoapods 是如何修改掉 Xcode 工程的结构?你也是否曾被 Xcode 工程的配置文件里面杂乱的内容搞得摸不清头脑?下面通过@TomorJM的这一系列文章,来帮你解除困惑。

[通过 Xcodeproj 深入探究 Xcode 工程文件 一]( http://www.tomorjm.com/2016/10/05/通过 Xcodeproj 深入探究 Xcode 工程文件%20 一 /)

[通过 Xcodeproj 深入探究 Xcode 工程文件 二]( http://www.tomorjm.com/2016/10/06/通过 Xcodeproj 深入探究 Xcode 工程文件%20 二 /)

Android7.0 适配心得

Android7.0 发布已经有一个多月了, Android7.0 在给用户带来一些新的特性的同时,也给开发者带来了新的挑战,CrazyCodeBoy 分享了 自己的 Android7.0 适配心得,希望你的应用能顺利跑在 Android7.0 上。感兴趣的请点击这里

黑科技:把第三方 iOS 应用转成动态库

来自于杨君的小黑屋博客分享。

本文介绍了一个工具,能够把第三方 iOS 应用转成动态库,并加载到自己的 App 中,文章最后会以支付宝为例,展示如何调用其中的 C 函数和 OC 方法。文章链接;工具开源地址:https://github.com/tobefuturer/app2dylib.

另外一篇安全大作>> iOS 符号表恢复&逆向支付宝.

Retriver - 获取 app 的 URL Scheme

app 的 URL Scheme 是什么? @StackOverflowError 写了个 app 来解决这个问题>> **retriver**,可以在非越狱设备上面获取所有 app 的 Plist 文件,可以查看、复制、以及分享出去。点击 CFBundleURLTypes 可以查看 URL Schemes 。本项目全部使用私有 API ,需要编译安装到手机上。

拆轮子 - 唯美细腻的夕阳海浪动画

@Mr_immortalZ分享了一个唯美细腻的夕阳海浪动画,感觉原代码实现的效果太美了,相关实现过程在这里

AutoInstaller - 应用自动静默更新安装库.

@dev_voyager分享了一个应用自动更新库,能够后台自动下载,然后以 ROOT 或辅助功能模拟点击形式自动安装应用。 Github 链接:AutoInstaller.

『 技术教程文章分享 』

深入了解 Messenger 的实现细节

D_clock 爱吃葱花写了一篇关于解读 Messenger 的文章,可能需要提前了解下 Android 的进程间通讯方式。

文章传送门

iOS 预审总被拒?腾讯教你提升 iOS 审核通过率

经常被苹果的各种理由拒之门外,让开发者苦不堪言。本文介绍了腾讯预审团队一系列的预审策略和方法,让大家了解腾讯是怎样保障提审通过率的。详情请点击这里

5 年 iOS 经验做的基础工程经验

简书作者Thebloodelves 分享了自己 5 年的 iOS 经验,包括一些常用的第三方、分类、工具、网络封装和本地缓存等,给你一些参考。链接在这里

GitHub & Bitbucket & GitLab & Coding 的对比分析

目前基于 Git 做版本控制的代码托管平台有很多种,比较流行的服务有 Github 、 Bitbucket 、 GitLab 、 Coding ,他们各自有什么特点,个人使用者和开发团队又该如何选择?来看看 @风起云飞 flowci这篇文章

iDev 全平台开发者大会, iOS 开发者不要错过

从 Swift 到 函数式编程,从动态化到 hybrid ,从实际开发到测试管理,再到 WatchOS 、 OS X 内核的探索。 @DevLink 举办的 iDev 全平台开发者大会可谓大神云集、干货满满,热爱 iOS 的开发者一定不要错过。想买票的同学,点击 这里 可享受 fir.im 专属的额外 8 折优惠:)


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im.

欢迎分享更多的内容。

fir.im

]]>
fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因 tag:www.v2ex.com,2016-10-25:/t/315242 2016-10-25T02:52:09Z 2016-10-25T02:49:09Z Imshaha member/Imshaha 很开心的宣布 Log Guru 正式开源!

Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取, Github 地址:**FIRHQ/LogGuru**.

Log Guru 使用方法

当有测试者反馈应用装不上的时候,将其测试设备连接到 Mac 电脑上,即可通过 Log Guru 查看常见的错误日志,快速定位 iOS 应用无法安装的原因。

使用方法只需要几步:

第一步,点击下载 Log Guru

第二步,解压打开 Log Guru ;

第三步,将不能安装应用的设备用数据线连接到电脑上;

第四步,查看不能安装的原因,如下图:  ( 查看常见的错误日志 )

重要提醒:目前 Log Guru 只支持 Mac 10.9 以上版本。

Log Guru 的新功能

由于 iOS 10 的系统问题,获取错误日志时会有很多系统日志覆盖有效信息。为了更方便地定位到错误日志,现在可以使用 Log Guru 的「暂停-继续」的功能。

另外,未来的新功能需要大家一起来创造,让 Log Guru 更好用。

That's it, :)

最后,有需求的开发者们可以直接提 PR 和 Issue. 感谢长久以来支持 fir.im 的用户和开发者们,顺便奉上其他的 fir.im 开源项目,欢迎 Star & Fork :

]]>
fir.im Weekly - 关于 iOS10 适配、开发、推送的一切 tag:www.v2ex.com,2016-09-26:/t/308987 2016-09-26T03:20:04Z 2016-09-26T04:17:04Z Imshaha member/Imshaha “小程序”来了,微信变成名副其实的 Web OS ,新一轮的 Web App 与 Native App 争论四起。程序员对新技术永远保持灵敏的嗅觉和旺盛的好奇心,@李锦发整理了微信小程序资源汇总,涵括微信 Web 开发者工具, WeApp 教程,站点收集和代码实例,持续更新, GitHub 地址:awesome-wechat-weapp .

除了“小程序”的大热点之外,本期 fir.im Weekly 重点整理了关于 iOS10 适配、开发、推送的相关知识点和 Android 相关的技术干货,分享给有需求的同学。

『 iOS10 相关 』

适配 iOS10 以及 Xcode8

简书作者徐不同总结了 iOS10 的适配以及 Xcode8 使用上的一些注意点,详情见这里

兼容 iOS 10 资料整理笔记

@判若两人丶 整理了兼容 iOS 10 资料与笔记,点击这里阅读。

iOS 10 适配知识点总结

@爱芸初见总结了一些 iOS10 适配的一些知识点,包括证书、隐私数据访问、系统版本判断、 UIColor ,字体、 UICollectionViewCell 的优化等问题,文章传送门

打造一个更流畅的 iOS App (上)

“为什么要打造流畅的 App 体验? 流畅的体验意味着优秀的用户体验,技术的本质是为人类服务,脱离了为人类服务,再高超的技术,算法,工程都不具备价值。

@周楷雯 Kevin打造一个更流畅的 iOS App (上) 如是说。这是一篇高质量的经验文章分享,期待下篇出炉。

fir.im

Swift 3.0 版官方文档中文版

@SwiftGG 翻译组在微博上分享:

“官方文档《 The Swift Programming Language 》 中文版更新!已经同步到 Swift 3.0 ,在线阅读:O网页链接。”

iOS Crash 收集框架

开发 iOS 应用,解决 Crash 问题始终是一个难题。Martin_Joy__ 分享了自己的实现一个 iOS Crash 收集框架的过程,感兴趣的去这里看看。

玩转 iOS 开发:集成 WeChat SDK

@背着吉他去流浪_的集成支付 SDK 系列包括微信支付、支付宝银联、 Apple Pay ,主流的支付已经全部到位,来这里看看.

Android 热更新方案 Robust

来自于@美团点评技术团队分享。

“从去年开始, Android 平台出现了一些优秀的热更新方案,主要可以分为两类:一类是基于 multidex 的热更新框架,包括 Nuwa 、 Tinker 等;另一类就是 native hook 方案,如阿里开源的 Andfix 和 Dexposed 。”

文章传送门

fir.im

『 Android 相关』

App 瘦身最佳实践

@天之界线 2010分享了自己关于 app 的瘦身实用性的技巧,值得一看! GitHub 地址: **Android-Best-Practices**;文章链接

Android App 的设计架构: MVC,MVP,MVVM 与架构经验谈

来自周鸿博 的分享。

“ 和 MVC 框架模式一样, Model 模型处理数据代码不变在 Android 的 App 开发中,很多人经常会头疼于 App 的架构如何设计。本文就来带你分析一下这几个架构的特性,优缺点,以及 App 架构设计中应该注意的问题。”

全文浏览,点击这里.

GitHub 2016 章鱼猫观察报告

在这个报告中,分别对开源和社区做了一些有趣的统计,@Linux 中国 将其中一些有趣的数据和趋势撷取出来分享>>网页链接 。完整的报告请移步这里


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im ,

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - 从零开始,搭建理想的直播平台 tag:www.v2ex.com,2016-09-19:/t/307255 2016-09-19T06:50:58Z 2016-09-19T06:47:58Z Imshaha member/Imshaha 2016 年苹果发布会如期而至,新一代的 iPhone 7 , Apple Watch 同时亮相,可惜大家期待的 MacBookPro 、 AR 、 VR 产品并未出现。不论大家对新产品是“买买买”还是“黑黑黑”,苹果是否保有创新活力,每个人心里都有自己的答案。

本期 fir.im Weekly 推荐下@袁峥 Seemygo 的这一系列文章,教你如何快速的开发一个完整的 iOS 直播 app的实践系列,还有 @陈利人如何搭建一个属于自己的直播平台,其中解释了直播平台后面的技术和实现原理,分享给有需求的同学。

除此之外,还有一些微博热转 Github 项目、 iOS/Android 开发实践等技术分享~

打造心目中理想的自动化测试框架( AppiumBooster )

DebugTalk 分享。

"AppiumBooster 基于 Appium 实现,更简单和易于使用;测试人员不用接触任何代码,就可以直接采用简洁优雅的方式来编写和维护自动化测试用例。"

对于 自动化测试用例有疑惑的,请点击这里看看作者的解决方案。

CI Weekly #1 |带你了解 CI/CD 、 DevOps 、自动化测试

CI Weekly 围绕『 软件工程效率提升』 进行技术内容分享,收录了关于 iOS/Android 的自动化测试,持续集成、部署等技术干货,感兴趣的可以关注订阅。传送门.

Android-Dev-Favorites

@Android 开发日常分享了一份 Android 开发者的收藏夹含有: Android Wear, kotlin, Rx 相关, 动态部署, 官方文档, 工具, 性能优化, 架构设计等等, 值得收藏! GitHub 地址: Android-Dev-Favorites

Android Debug Bridge 用法大全

Android Debug Bridge,它是 Android 开发 /测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 @卢_俊 分享了一个 ADB 教程——**awesome-adb**,内容很多,值得收藏。

FantasySlide - Android 侧边栏切换

@曹冬平_分享了一个 DrawerLayout 的扩展,具有帅气的动画与创新的交互。一次手势完成滑出侧边栏与选择菜单。已开源在 Github 地址:**FantasySlide**.

Android Hotfix 新方案—— Amigo 源码解读

来自 Android 攻城狮@jack_1900的分享。

"现在 hotfix 框架有很多,原理大同小异,基本上是基于qq 空间这篇文章 或者微信的方案。可惜的是微信的 Tinker 以及 QZone 都没有将其具体实现开源出来,只是在文章中分析了现有各个 hotfix 框架的优缺点以及他们的实现方案。 Amigo 原理与 Tinker 基本相同,但是在 Tinker 的基础上,进一步实现了 so 文件、资源文件、 Activity 、 BroadcastReceiver 的修复"

全文浏览,点击这里.

iOS App 组件化开发实践

来自于移动开发前线微信分享。

“这篇文章是作者在一个中小型团队里进行了 iOS App 组件化实践后的总结,回顾了组件化过程中遇到的问题和应对方法,以及如何与持续集成结合。”

文章传送门

基于 Swift3 与 DiapatchSource 实现的 Timer

@方秋枋在微博上分享: “基于 Swift3 与 DiapatchSource 实现的 Timer 。优雅简洁地解决了 NSTimer 引用循环, Runloop 依赖,子线程切换,不支持闭包以及不能动态调整时间间隔的问题。”项目地址:**zen**

fir.im

一年一度 iOS 10 Day by Day

@SwiftLanguage分享,@戴仓薯 同学倾力翻译。

iOS 10 Day by Day 是一套介绍开发者需要了解的 iOS 10 新功能和新 API 的系列文章。往年的系列非常受欢迎,我们希望今年也能同样帮你,来了解 iOS 10 SDK 和开发者工具新功能的内幕。

中文版:iOS 10 day by day 目录

原文链接:iOS 10 Day by Day :: Index

程序员追着砍系列之华丽 App UI 动效

@优秀网页设计 分享了一些华丽的 App 动效界面,来自蒙特利尔的大神 Aurélien Salomon 久违回归所制作。果断要献上膝盖啊,也被称为程序员追着砍系列。一起欣赏下>>链接


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im ,

欢迎分享更多的内容。

fir.im

]]>
CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试 tag:www.v2ex.com,2016-09-14:/t/306142 2016-09-14T03:18:53Z 2016-09-14T03:15:53Z Imshaha member/Imshaha

原文首次发布与 flow.ci Blog >> 链接,转载请联系:)

准备了很久, CI Weekly 第一期终于来了。

CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外关于持续集成、持续交付,持续部署、自动化测试、 devops 、敏捷开发等实践教程、资源与工具,以及一些工程师文化相关的程序员 Tips 。

同时, CI Weekly 会坚持每周发布一期精选文章,每一期的文章尽量围绕 CI 相关的 topic 展开,在 flow.ci 微信公众号、官方微博知乎专栏简书等同步更新,欢迎关注或投稿:)

第一期篇幅有点长,内容丰富,请准备好开启新的技术旅途~

『 持续集成相关实践教程 』

使用 GitLab 来实现 IOS 项目的持续集成 CI

这篇文章讲述了持续集成和交付 /部署( CI/CD )方面的一些基础知识,集合 APP 开发中遇到的一些问题,优化产品打包、测试过程。( via : 简书 cjzhao

Jenkins+GitHub+Xcode+fir 搭了一个持续集成环境

使用 Jenkins+GitHub+Xcode+fir 搭建持续集成环境,过程记录很详细。( via :简书 宣 X_x

Android CI with docker

*develop -> commit -> build -> test -> (deploy) -> repeat 重复整个开发周期,直到交付成功。( via: Medium@Malinskiy

使用 Jenkins 搭建 iOS/Android 持续集成打包平台

"为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等人员)通过手机扫描二维码后就能直接安装测试包。”基本上这个流程所有开发 APP 的团队都可能会用到。( via :DebugTalk

蚂蚁金服 AQC 持续集成平台漫谈

蚂蚁金服的 AQC 持续集成平台,拥有全站级的持续集成能力。感兴趣的来看看( via :51Testing 软件测试网

谈谈持续集成,持续交付,持续部署之间的区别

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?( via : @风起云飞 flowci

『 自动化测试 』

11 Development Tools That Help with Testing Mobile Apps

这篇文章采访了五个应用程序测试和 QA 专家,到底什么的移动开发工具是必不可少的流程。最终给出了 11 个关于移动应用测试的开发工具。( via : Medium@Proto.io

用 Python 开发自动化测试脚本

这是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。( via :Mikko_q

前端自动化测试探索

本文试图探讨前端自动化测试领域的工具和实践。( via :FEX 百度 Web 前端研发部

『 DevOps 』

高效 DevOps 的 10 项实践

高效的 DevOps 实践可以实现高效协作,平滑运营,更整洁的代码等.( via :无敌北瓜

The 15-point DevOps Check List

15 个 DevOps list 让你更全面地 DevOps,读完受益匪浅。( via : Twitter@eon01

『 代码质量&工程师文化 』

Moving Fast With High Code Quality

看 Quora 的代码文化。( via : Quora 工程师NIKHIL GARG

The Most Important Startup ’ s Hardest Worker Isn ’ t a Person

Github 开发、开源的聊天机器人—— Hubot ,用来做运维自动化(比如部署代码、重启机器),也许 它才是创业公司里最刻苦的员工。( via : Twitter@eon01

Git 工作流指南

关于 Git 工作流主题,也许这是目前最全面最深入的 Git 工作流说明,希望这篇文章能让你在工作中灵活有效地使用 Git 。( via : @oldratlee )


以上是 CI Weekly #1 的所有技术分享, 如有问题,请联系我们~

Happy building!

flow.ci

]]>
fir.im Weekly - 做一款 App 需要考虑什么 tag:www.v2ex.com,2016-09-09:/t/305133 2016-09-09T09:33:02Z 2016-09-09T10:30:02Z Imshaha member/Imshaha 开发 App 是一个痛并快乐的旅程。工具越来越多,成本也越来越低,那么在开发之前需要考虑些什么?limboy 总结了一些经验和反思——做一个 App 前需要考虑的几件事,参考一下为你的 App 多留点心。

除此之外,本周 fir.im Weekly 收集了微博热转 Github 项目、 iOS/Android 开发实践等技术分享~

iOS 符号表恢复&逆向支付宝

来自于杨君的小黑屋博客分享。

“符号表历来是逆向工程中的“必争之地”,而 iOS 应用在上线前都会裁去符号表,以避免被逆向分析。本文会介绍一个自己写的工具,用于恢复 iOS 应用的符号表。”

全文阅读,点击这里

iOS-Echarts 支持链式编程

@叫什么都不如叫 Pluto-Y在微博上分享:

“ iOS-Echarts 终于发布了新版本了,支持了链式编程。对于那些需要特别奇怪的图表,或者详细配置每一个细节的小伙伴,这里提供了一个替代方案。”项目地址:**iOS-Echarts**

细数 iOS 上的那些安全防护

@阿里移动安全分享的这篇文章从三个方面:代码签名、沙盒机制和利用缓解对 iOS 的系统安全机制做了一个总结,并在结尾展示了最新版 iOS9.3.4 上安装 cydia 的 DEMO 。 文章传送门

百里挑一: 21 个优质 Swift 开源 App

感谢没故事的卓同学的翻译。

"Mybridge AI 根据代码质量和 start 排名从 900 多个开源项目中选出 21 个开源项目",值得学习!

中文版:百里挑一: 21 个优质 Swift 开源 App

原文链接:21 Amazing Open Source iOS Apps Written in Swift

BluetoothKit - iOS 蓝牙工具封装库

@开源小组分享的一款 iOS 蓝牙工具封装库——**BluetoothKit**,让你更容易地操作蓝牙。

微信 Tinker 关于 Android 热修复直播分享

来自 腾讯 DEV CLUB 微信直播群,整理发布于diycode

这是微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录,感兴趣来这里看看。

StyleImageView - Android 滤镜库

程大治 DEV写了一个 Android 滤镜库,可操作 ImageView/View Background/Drawable/Bitmap ,支持动画(差值器监听器套餐可选),可导出 Bitmap 。项目地址:**StyleImageView**.

知乎和简书的夜间模式实现套路

@D_clock 爱吃葱花通过逆向分析得到简书和知乎夜间模式实现套路,汇总成文。点击这里查看。

Get Started with Clean Swift

@请叫我汪二在微博上推荐的网站 - CleanSwift,有几篇文章写得不错。


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im ,

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - 可能是 iOS 审核最全面的解决方案 tag:www.v2ex.com,2016-09-05:/t/303974 2016-09-05T03:24:20Z 2016-09-05T03:21:20Z Imshaha member/Imshaha ipv6 被拒绝,后台定位被拒绝……让很多国内 iOS 开发者心力交瘁。这是一份关于 iOS 审核的终极免费方案,作者iOSWang对最近 iOS 审核被拒问题给出了比较全面的方案: Solve-App-Store-Review-Problem

本周 fir.im Weekly 收集了微博热转的优秀的 Github 项目、 iOS/Android 开发工具等术分享:)

基于 fir.im 实现的 Android 版 TestFlight

@ryanho_o在微博上分享了基于 fir.im 服务实现的 Android 版 TestFlight ,采用 Google todo-mvp 基础架构,使用 RxJava 、 Retrofit 2 等技术,还有亲手设计的 Sketch 原型~ !Github 地址:**fir.flight**

Auto Layout 设计美学

UI 可以说是 iOS 开发中不可避免的一个重要环节。在这篇文章里@请叫我汪二和大家分享如何使用 IB+Auto Layout 开发页面的 :《 Auto Layout 设计美学》 

fir.im

Swift 实践初探

@李富强 Jason业余时间写了两三周的 Swift ,写的一篇详细的总结。详情见Swift 实践初探。还有,他们的团队正在招人。

微信读书排版引擎自动化测试方案

来自@bang的分享。

本文介绍了为解决测试的难题,如何逐步将人工测试步骤自动化,最终构建了一套微信读书排版引擎自动化测试流程,以确保微信读书排版引擎的质量。文章传送门

fir.im

怎样在 iOS 设备上播放动态图片

@蚊子咬的包为什么那么圆在微博上分享:

“经过半年的实践和优化,新版的 iOS gif&apng 显示库 AImage ,同时还写了文章"怎样在 iOS 设备上播放动态图片,解释了 AImage 的原理”

文章地址:链接

项目地址:**AImage**

Freeline - Android 平台上的秒级编译方案

Freeline 是蚂蚁聚宝团队在 Android 平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似 Facebook 的开源工具 buck 的多工程多任务并发思想, 并对代码及资源编译流程做了深入的性能优化。

Github 地址:**freeline**

详细的技术细节:链接

Android App 优化之性能分析工具

简书作者anly_jun总结了一篇个人比较惯用的 App 性能测试和分析工具,详细分析点击这里阅读。

fir.im

GRADLE 构建最佳实践

用 GRADLE 构建安卓项目已是大势所趋,具体实战中姿势啥的很重要,结合具体应用场景,@figofuture的这篇最佳实践给你最佳的体验。文章传送门

手摸手教你写 Slack 的 Loading 动画

@神来一巴掌的手摸手系列第二篇之 Slack Loading 动画,项目地址:**SlackLoadingView**;文章地址:链接

移动 APP 服务端开发你需要了解什么

“按照应用类划分,在服务端开发的接入层,最常见的有两种,一种是 Web 项目开发,一种面向 APP 客户端的 API 开发,当然还有一些比如消息队列的接入封装、后台 Job 等等。” 关于移动 APP 服务端开发的一些 Tips ,来看看wangyan9110这篇文章


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im ,

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - 如何用 iPad 创造技术生产力 tag:www.v2ex.com,2016-08-26:/t/301895 2016-08-26T03:53:44Z 2016-08-26T03:50:44Z Imshaha member/Imshaha 传播学大师麦克卢汉有一个著名理论——「 媒介即讯息,媒介是人的延伸」,在当代,表现更为明显的是「工具即为人的延伸」,工具使人自由。那么,我们究竟需要什么样的工具释放技术生产力?本期 fir.im Weekly 分享下@赵赛坡 的 iPad 生产力指南,精选了 iPad 上大量优秀的生产力应用, 11000 字, 50 多张插图(动态图),全部在 iPad mini 4 上完成,涉及到六大工作流、 40 多款应用的使用教程。十分强大,推荐阅读。

还有一些优秀的 Github 项目、 iOS/Android 开发工具、持续集成实践等技术分享 :)

『 iOS , Android 开发工具&源码分享』

iOS 实现基于 DLNA 的本机图片,视频投屏

@艾力亚尔整理了关于 iOS 使用 DLNA 投本地图片视频的实现思路和方法。 可结合之前的基于 DLNA 实现 iOS , Android 投屏系列文章来了解 DLNA 投屏协议。详情见链接

客户端动态化系列之—— URLRoute

在有限的开发资源下,如何最大程度化地做到端测动态化的方案?来看看@kuailejim的整个思路,文章传送门

为 UIAutomation 添加自动化测试标签的探索

@杨萧玉 HIT在微博上分享了 iOS 自动化测试生成标签方案的文章,并更新了方案和代码。文章地址在这里

Google TensorFlow 深度学习笔记系列

@梦里风林在微博上分享:

“ Google TensorFlow 深度学习笔记系列完结撒花,包括学习深度学习的理念和 TensorFlow 的使用经验。”

文章地址:链接

项目地址:**GDLnotes**

Andriod-collect-blogs

这是一个关于 Android blog 的库,作者ZQiang94记录了自己遇到的比较有价值的 Android 相关的 blog 。项目地址:**Andriod-collect-blogs**

从无到有打造一个炫酷的进度条效果

Dribbble的启发,简书作者zhangke3016做了一个酷炫的进度条的设计和实现,在进度的文字内容、颜色以及切换的图片等都可以自由设置。项目地址:**SpecialProgressBar**

我们为什么要尝试前后端分离

关于前后端分离,来看看@Mr 劳卜这篇经验文就足够了。

『持续集成实践』

使用 flow.ci 实现 Android 自动化测试与持续集成

这篇文章通过启动在 flow.ci 中的 Android 模拟器插件,将 connectedCheck 命令添加到构建插件的默认脚本中,以此来实现 Android 应用自动化测试与持续集成。文章传送门 .

手把手教你利用 Jenkins 持续集成 iOS 项目

感谢halfrost 的投稿。

这篇文章里,不仅有持续集成的概念和价值讲解,也有使用 Jenkins 进行 iOS 项目持续集成的详细步骤,值得一看。

『程序员 Tips 』

Git 工作流指南

关于 Git 工作流主题,网上体系的中文资料不多,主要是零散的操作说明,希望这篇文章能让你更深入理解并在工作中灵活有效地使用起来。 Github 地址:链接

感谢@oldratlee 的翻译。

我眼中软件工程里的常识

作者右领军大都督结合自己的痛苦经历来谈谈关于软件工程尝试的故事,来这里看看。


这期的 fir.im Weekly 就到这里,投稿请联系 dm[at]fir.im ,

欢迎分享更多的内容。

fir.im

]]>
fir.im Weekly - 嘘,关于科学上网! tag:www.v2ex.com,2016-08-17:/t/299855 2016-08-17T04:18:54Z 2016-09-11T22:37:13Z Imshaha member/Imshaha 上 Github 交友刷 StackOverflow 解惑,科学上网是攻城狮必备技能,加快打怪练级速度。关于科学上网,@左耳朵耗子 在微博上分享了一篇文档,轻一点教你建一个 VPN 服务器,重一点到教你在路由器上科学上网,教程在这里

除此之外,本期 fir.im Weekly 推荐了很多优秀的 Github 项目、 iOS/Android 开发工具及技术分享,一起来看看。

『 iOS , Android 开发工具&源码分享』

活久见的重构 - iOS 10 UserNotifications 框架解析

@onevcat出品的新文章,本文回顾了 iOS 通知的历史,然后通过一些例子来展示 iOS 10 SDK 中相应的使用方式,来说明新 SDK 中通知可以做的事情以及它们的使用方式。

全文浏览,点击这里

UpdateDemo - fir.im 的 android app 自动更新库

HugeTerry_晓特在微博上分享了一个 Android 库,用来做 fir.im 应用新版本检测,依赖库后几行代码就可以实现对 app 的更新,方便快捷。项目地址:**UpdateDemo**.

Android 端外推送到底有多烦?

网上已经有很多关于 Android 推送的讨论,但很少有站在 App 开发者(特别是开发 App 的创业团队)的角度来进行介绍的文章。张铁蕾 的这篇文章站在一个 App 开发团队的角度,讨论关于这方面的问题。

小红书 Android 客户端演进之路

码农明明桑为了纪念小红书 Android 版上线 2 周年,总结了小红书 Android 客户端演进之路,回顾两年来踩过的坑。感兴趣的同学,来这里看看。

手把手教你给一个 iOS app 配置多个环境变量

来自 halfrost 的分享。

“相信现在大多公司都至少有 2-3 个 app 环境了,比如 Test 环境, UAT(User Acceptance Test)用户验收测试环境, Release 环境等等。如果利用 Jenkins 来打包,我需要给 app 来配置多个环境变量,之后 Jenkins 分别在不同环境下自动集成即可。”

文章传送门

AutoInstaller - 应用自动静默更新安装库

@dev_voyager做的一个 Andriod 应用自动更新库,能够后台自动下载,然后以 ROOT 或辅助功能模拟点击形式自动安装应用。 Github 链接:**AutoInstaller**.

Top 100 Best Blogs for iOS Developers

来看看老外都看哪些 iOS 技术博客,大概有 100 个英文博客站点,建议收藏之。地址点我

FlyRefresh - 让人眼前一亮的下拉刷新

来自 @程序员的那点事 的分享。 “第一眼看到这个设计就觉得眼前一亮,在 Dribble 上获得了 1.7k 多的 like ,微博上也有大量转发。可见确实一个很成功的设计。我准备在 Android 上来实现它。”作者写下了 flyrefresh 整个的设计思路,文章传送门。项目地址: FlyRefresh.

一步一步教你写 BT 种子嗅探器--原理篇

BT 种子嗅探器也称为 BT 种子爬虫,简书作者 shiyanhui 的这一系列文章教你写 BT 种子嗅探器,介绍其原理和具体实现方式。对爬虫感兴趣的不要错过,链接在此

『持续集成实践』

flow.ci 让 Hexo 持续部署

这是一篇关于 使用 flow.ci 让 Hexo 持续部署的文章。作者 @小小小杜 写了自己使用 flow.ci 进行持续部署的教程与感受。感兴趣的点击这里

iOS 持续集成--Travis CI + Fir.im 自动编译发布

Ivan 在这篇文章里,详细说明在 Travis CI 的基础上,通过 fir-cli 的发布命令,完成了 iOS 的持续集成+自动部署,文章传送门


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - Mobile developer 利器分享 tag:www.v2ex.com,2016-08-10:/t/298309 2016-08-10T02:19:06Z 2016-08-16T09:11:30Z Imshaha member/Imshaha 工欲善其事,必先利其器。本期 fir.im Weekly 推荐了很多优秀的 Github 项目、 iOS/Android 开发工具利器,比如墨__守独立开发的 macOS App —— Repo , 帮助 Mobile developer 快速查找第三方库,浏览各种最新最热门的 UI 控件,支持 Markdown 直接解析 README ,以及快速管理 GitHub 的 Star 目录。实用又不失酷炫,下载地址在这里.

其他技术分享,请继续阅读:)

『 iOS , Android 开发工具&源码分享』

swiftmodules - 搜索到你想要的 Swift 扩展包

swiftmodules ,可快速搜索到你想要的 Swift 扩展包。检索速度很快, Swifter 来试试,链接

高仿 bilibili 项目

Michael 鹏丶在工作之余开启了高仿 bilibili 项目之路,目前完成了如下功能:启动页的业务逻辑,带有阻力效果的轮播图,直播、推荐、番剧界面的搭建,基于 ijkplayer 的视频播放器(普通视频、直播视频)等等,项目地址:**Bilibili_Wuxianda**.

Android 开发人员不得不收集的代码

作者收集了很多 Android 开发人员常用的代码片段,包含了对设备信息、网络信息、界面 UI 等常用基本操作,大大提高了开发效率。项目地址:**AndroidUtilCode**.

Android Activity 生命周期是如何实现的

_qisen在这篇文章里,详细说明 Activity 生命周期的实现原理, onCreate 、 onResume 、 onPause 等主要生命周期回调是如何实现的, ActivityManangerService 在里面扮演的角色。 文章传送门

从零到一发布 Android 开源库

作者@程大治 DEVFlipboard 实习期间写的一个轮播工具,已开源。国内有关发布开源库的文章与教程很少见,来看看,项目地址:DecentBanner

Weex & ReactNative & JSPatch

折腾范儿_味精 的一篇关于 Weex & ReactNative & JSPatch 热更新库的对比与分析,很赞。 感兴趣的同学,来这里看看。

Web 应用开发架构的演变

从桌面应用到 web 应用,从 J2EE 到 Rails ,从 web 到 native app ,从 native app 到 hyprid app ,来看看 Web 应用开发架构的演变

『持续集成相关』

谈谈持续集成,持续交付,持续部署之间的区别

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?风起云飞 flowci 这篇文章也许会帮助你解开疑惑。

『程序员 Tips 』

程序员的工具箱

工欲善其事,必先利其器。本书将介绍笔者在十多年编程生涯中积累和沉淀下来的最称手的工具软件的安装和使用方法。在线阅读地址:https://j-f-liu.gitbooks.io/toolbox/content/

国内知名技术博客总结

大概有六个公司和其他公司的一些技术博客的总结,需要的可以收藏一下。文章传送门


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 你与优秀源码之间只差一个 Star tag:www.v2ex.com,2016-08-04:/t/297055 2016-08-04T03:57:21Z 2016-08-04T03:54:21Z Imshaha member/Imshaha 说起开源社区, Github 是一种不可缺少的存在。作为全球最大的同性交友网站,上面有太多优秀的开源代码库和编程大神,让无数开发者心生向往。那么如何正确的使用 Github ,也许是编程学习之必要。来看下@googdev 的 关于如何选择开源项目如何正确使用开源项目如何发现优秀的开源项目,同时作者还出了几篇从 0 开始学习 GitHub的系列文章,对于迫切需要成长的开发者会有所帮助。

本期fir.im Weekly 收集了不少好的 Github 优秀源码, iOS/Android 开发工具与文章分享,持续集成相关实践和程序员 Tips ,诸位慢慢「享用」~

『 iOS , Android 开发工具&源码分享』

深入解读 iOS 开源项目源码

来自@iOS 开发精选微博分享;

作者对一些优秀的 iOS 开源项目源码进行分析解读,并将其整理成文后分享到了 GitHub 上,以帮助开发者们能更好的理解优秀开源项目的底层代码实现原理, GitHub 地址:iOS-Source-Code-Analyze

Android Sdk 源码解析

@AndroidCJJ 在微博上分享: “**AndroidSdkSourceAnalysis**是一群爱分享的 GitHub 小伙伴花了好长时间写的关于 android sdk 源码解析文章,旨在帮助 Android 开发者更好的学习。”如果你也感兴趣,可以加入他们的组织。

ISFIRVersionCheck - 应用新版本检测 iOS 库

基于 fir 对比 build 版本号自动检测新版本信息,有新版本弹 Alert 前往更新。 Github 地址:isaced/ISFIRVersionCheck

关于 App 重构的几个方面

如何重构 App 代码?简书作者anly_jun 谈了谈自己的理解,文章传送门,其中也说到了 Uber 的技术主管关于架构重构的 12 条规则, 共勉之~

flow.ci

Android 存储系统之架构篇

这是gityuan博客的第 100 篇,上一篇文章从源码角度介绍相关模块的创建与启动过程,这篇主要从全局角度把握和剖析 Android 的存储系统,文中有很多流程图帮助理解。链接如下:

Android 存储系统之源码篇

Android 存储系统之架构篇

用 MVP+Rxjava+Retrofit 构建项目

这是一个用 MVP+Rxjava+Retrofit 构建的项目,是关于微信头条的分享。源码已分享至 Github ,地址点这里

如何入门服务器端 Swift 开发

@RealmChina分享道:

“ Swift 已演变成了一门开源、跨平台的编程语言,有许多团队正在竞相使 Swift 语言能用于 Web 开发。其中最主要的框架分别是: Perfect 、 Vapor 以及 Kitura 。接下来我们将会聊一聊这些框架的优缺点,并且介绍如何入门服务器端 Swift 开发。”

文章传送门

『持续集成实践』

浅谈 GRAB 的持续集成和持续部署

作者zhchang在 gopher china 2016 大会上面做了个关于 GRAB 的持续集成和持续部署(CI/CD)的分享,感兴趣点击这里

基于 flow.ci 实现 PHP 项目自动化持续集成

这是一个关于如何实现 PHP 项目自动化持续集成的快速指导。无论你是否使用过持续集成,或在苦心寻找一款合适的持续集成工具,可能这篇文章对你有帮助。

『程序员 Tips 』

IT 职业技能图谱(完整版)

@StuQ 官博 发布了最全 IT 职业技能图谱,包括 iOS ,运维,前端,大数据,云计算,测试,安全,微服务,嵌入式开发等等,后续技能图谱内容将会持续更新,在 Github 上有 20 多个开源版本,点击这里查看。 PS :StuQ 的技术图谱没有 Android ,简书作者anly_jun于是自己做了一张 Android App 开发技术图谱,点这里看看。

flow.ci

什么是真正的程序员

作者仿照《小王子》中的情节,通过小 printf 遇见的不同类型的程序员,最后悟出什么才是真正的程序员!文章略长,但是耐心读完,你肯定会受益良多!

中文版:链接,翻译来自博客园:削微寒

英文原文:链接.


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
机器 · 人 | 可重复的事情,让机器去做 tag:www.v2ex.com,2016-07-26:/t/294970 2016-07-26T03:08:03Z 2016-07-26T03:05:03Z Imshaha member/Imshaha

本文来自于 青云 QingCloud 对 fir.im CEO 王猛 的采访。 7 月 28 日,王猛将在 QingCloud Insight 2016 大会聊聊 「 机器 • 人 」。

“帮助企业开发者用尽量少的时间,做更高质量的应用”

fir.im 从 2014 年开始使用青云提供的云服务至今,团队成立两年多,为半数以上 App Store 中国区 Top 200 应用提供极速测试发布、崩溃分析服务。

这本来是创始人王猛利用业余时间为方便自己开发的工具, 2014 年 4 月正式在氪空间成立公司将工具开放给所有企业使用,为开发者将原来测试发版的过程简化到只有两步,节省了大量的时间和冗余的沟通,让开发者更专注在应用开发。正如他们所说“帮助企业开发者用尽量少的时间,做更高质量的应用。”

两年后, fir.im 团队再次发布了新产品-流程自动化平台 flow.ci 的邀请内测,短短几个月的时间吸引了 3000 人申请内测,其中包括日本软银、美国雅虎的工程师。

我们近日对王猛进行了访谈,一起聊了聊技术创业那些事儿,聊了聊自动化和他们的新产品。

“我是一个工具控,我一直认为,可重复的事情就让机器来做。”

QingCloud :简单介绍一下你自己。

王猛 :我是 fir.im 的创始人王猛,最早是做设计的,曾经做过 LV 全球官网的设计和开发。

2008 年开始做 iOS 开发,做了好几年独立开发者,也是在做 iOS 开发者期间,我意识到了 iOS 内测发版和 UDID 获取的痛点,虽然后来国外也有 TestFlight 这样的工具,但是我觉得还是不够好用,于是自己做了一个 fir.im.

我是一个工具控,能用工具解决问题的,我一定会选择或者自己开发各种工具。

我一直觉得,可重复的事情,就让机器来做,这也是我理解的自动化。

新产品 flow.ci 是很久以来我一直想做的事情, fir.im , BugHD 只是这个理念的起点, flow.ci 是全方位的流程自动化平台,不论是工程师还是非工程师人群,只要有可流程化的重复繁琐的事情,都可以用 flow.ci 完成整个过程的自动化。

QingCloud :作为工程师,创业这两年你觉得最大的感触是什么?

王猛:最大的感触是工程师思维和商业思维之间的衔接和平衡还是挺难把握的。工程师做事情还是很靠谱的,用工具解决问题的能力很强,一聊起产品和技术就两眼放光,一头扎进去不眠不休乐此不疲。但是被问起如何赚钱,如何定价,如何从工程师转变成公司最大的销售这些问题,要转变过来还是有难度的,我还在学习中。毕竟公司存在就需要对股东负责。

接下来 fir.im , BugHD 可能也会有一些商业化的动作,目前小范围的尝试效果还不错。新产品 flow.ci 在公测期间会免费,公测结束会收费。

总之,一个产品做出来,在运营和商业化过程中,会有许多意想不到的问题出现,这些问题很多是超出工程师思维的,甚至商业思维,除了积极应对之外,创业者也要具备快速调整状态的能力。

QingCloud :关于新产品 flow.ci, 能介绍一下吗?

王猛:前面有提到 flow.ci 主要做流程的自动化,特别是开发测试的流程自动化,企业工程师可以只需要写代码,将其他重复繁琐的工作比如服务器的部署搭建、测试、部署上线等交给 flow.ci 自动完成。

这样做的好处有以下几个:

高效省时; 降低人为错误风险; 及时获悉执行结果,尽早发现问题。

另外, flow.ci 最大的特色 workflow 机制可以:

实时查看进度; 提供针对不同语言和环境的 workflow 模版; 基于模版灵活定制自己的 workflow 。

并且,让流程自动化运行起来,只需要 8 步, 1-3 分钟的时间。用户体验一直是我们的强项,我们在 flow.ci 的设计上也花了不少心血,希望让大家很快上手,用起来爽。

“工程师是互联网时代的主要生产者,做的事情,就是帮其他人自动化。”

QingCloud :怎么看待自动化未来在企业中的应用?

王猛: 自动化将大量地减少不只是企业、还有个人的重复繁琐工作量,并且更好地进行过程管理。我认为自动化是企业智能化运营、个人智能生活时代的第一步。

今年 Facebook 和 Google 的开发者大会都把 Bot 作为一个很重要的议题, Bot 、 Robot 、 Droid 、 Android ,这些名词越来越多的进入我们的视线,在生产生活的各个领域,让事情变得更自动化。

前段时间忽然一个俄罗斯程序员火了,因为他写了一堆脚本(自动化处理代码)可以自动给老婆发短信加班、自动煮咖啡、自动请假等等好多有意思的功能,我们可以想象这个程序员懒到连给哄老婆开心都要用机器去做的场景。

懒惰,是人类进步的动力。因为懒,人类发明了各种工具帮自己做事情,到了现在的阶段,这些工具都是 Bot 。

flow.ci 也是 Bot ,每个 workflow 就像一个虚拟机器人,帮助自动执行代码质量检测、自动化测试、跨部门消息提醒等任务,根据代码与测试结果发送预警、快速定位潜在项目风险等,清晰的流程进度图可帮助项目成员实时了解项目进度、流程步骤中涉及的各个系统根据不同的情景自动调度连接等。

工程师是互联网时代的主要生产者,做的事情,就是帮其他人自动化。但是工程师自身的工作却没有被很好的自动化,除了写代码,每天有非常多的时间被淹没在重复性的劳动上。所以我们希望, flow.ci 能先让工程师的工作先自动化起来,再渗透到运营等其他人群。

我们内部除了开发测试流程通过 flow.ci 自动运行之外,运营也开始了自动化的尝试,已经有一个运营 Workflow 跑在 flow.ci 上面,我们每周的 fir.im weekly 可以自动生成文章,自动发到微博、微信、博客、第三方社区。

未来,会有更多的 Bot 介入我们的工作和生活,让企业构建更高效的人机组织,已经能依稀看到人机协作的智能时代的样子。

“越像机器的人,越会被机器取代。”

因为时间和篇幅所限,关于机器和人,关于未来企业更具象的样子,不能一一细述。 7 月 28 日,王猛将在 QingCloud Insight 大会上详细分享他对未来“机器和人”的解读,欢迎感兴趣的朋友来现场共同探讨,大会报名点击这里

]]>
fir.im Weekly - 揭秘直播移动 APP 技术实现 tag:www.v2ex.com,2016-07-20:/t/293640 2016-07-20T02:16:56Z 2016-07-23T05:55:54Z Imshaha member/Imshaha 2016 年直播似乎无处不在,作为一个开发者也许需要补充下关于直播技术点。本期 fir.im Weekly 整理了一些开发者对于直播实践项目中的技术经验与直播技术架构分析等内容,还有一些关于 iOS 、 Android 等相关开发干货。

一起来看看~

『直播技术干货分享』

如何做一款仿映客的直播 App

简书作者JIAAIR从技术实现层面、直播优化层面、流媒体传输等方面分析了当下的直播技术,同时分享了如何搭建一个类似映客的直播项目的技术经验。 感兴趣的话,点击这里

移动直播技术秒开优化经验(含 PPT )

来自高可用架构的公众号分享;

现今移动直播技术上的挑战要远远难于传统设备或电脑直播,其完整的处理环节包括但不限于:音视频采集、美颜 /滤镜 /特效处理、编码、封包、推流、转码、分发、解码 /渲染 /播放等。本次分享将为大家揭开移动直播核心技术的神秘面纱。

文章传送门

HTML 5 视频直播一站式扫盲

来自腾讯 bugly 公众号分享。 这篇文章介绍了 HTML 5 视频直播中的基本流程和主要的技术点,包括但不限于前端技术。 文章传送门

七牛直播云技术详解

视频直播对技术架构背后有更高的追求,现在的很多云厂商都提供 SDK 。七牛布道师何李石的这篇分享对七牛直播云直播云 API 、推流端 SDK 和播放端 SDK 等三大模块的详细解读。 文章传送门

Facebook 如何做在线直播的

@湾区日报 BayArea的阅后简评:

“ 150 个工程师在做 Facebook Live 。视频直播的访问量大起大落,涨得快降得也快。 Caching + load balancing 。性能测试,能承受 10 倍的 production 访问量。”

中文翻译:链接

英文原文阅读,点击这里

iOS 视频直播初窥:高仿<喵播 APP>

@Monkey_ALin总结了自己对于当下直播现状的认识,分享了高仿高仿<喵播 APP>的项目技术实现,非常详细。详细文章,点击这里

Android 音视频点 /直播模块开发

如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,看完@yang_yabin这篇文章 也许你会豁然开朗。

iOS 中集成 ijkplayer 视频直播框架

ijkplayer 是一款做视频直播的框架, 基于 ffmpeg, 支持 Android 和 iOS,简书作者 jianshu_wl的这篇文章讲述了如何在 iOS 中如何集成 ijkplayer 。

Github 地址:ijkplayer

文章传送门

『其他技术分享』

一个 Swift 开源应用 Celluloid

方秋枋 在微博上分享: “上架并开源应用 Celluloid 。或许是 iOS 上最充分运用和支持 Photo Extension 特性的应用。 Pure Swift 编写,支持 iPhone & iPad 全系列设备。”

App Store 地址:链接;

Github 地址:Celluloid

Android 实战之你应该使用哪个网络库?

优秀的 HTTP 的协议库,可以很方便的帮助开发者构建应用, Android 的开发者在选择一个合适的 HTTP 库时需要考虑很多,@王下邀月熊 的翻译的这篇文章尽可能地涵盖这些要点。

中文翻译版:链接 英文原文:链接

拆轮子系列 :拆 Retrofit/OkHttp

@Piasy 在微博分享到: “继 Retrofit 之后,这次把 OkHttp 也拆开好好看了看 ,紧接着还打算把 Okio 也拆开看看,到时再分享”.

拆轮子系列:拆 OkHttp

拆轮子系列:拆 Retrofit

《大话移动 App 测试 2.0 》序开放试读

@Monkey 陳曄曄的第一本著作“大话移动 APP 测试”之后,匠心之作——大话移动 App 测试 2.0 预购首发,本书介绍移动 APP 测试领域的最新趋势与前沿技术,尤其在专项测试、 UI 自动化、 Appium 等方面,开放试读地址点这里,相信会有所收获。

QingCloud Insight 2016

QingCloud Insight 2016 以『科技,洞见未来』为主题,@青云 QingCloud 携 50 位行业大咖将为大家带来云计算领域最有营养的干货,来这里看看有没有你想要的料。


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 如何写出零 bug 的代码 tag:www.v2ex.com,2016-07-15:/t/292647 2016-07-15T02:43:20Z 2016-07-15T02:40:20Z Imshaha member/Imshaha 神兽护体,代码无 bug 。经常看到代码注释的各种形状,这是一种程序员情怀。那么,如何能写出零 Bug 的代码呢,来看看@码农翻身 的这篇手册——零 Bug 的代码是怎么炼成的

写零 Bug 一定少不了代码审查,推荐下 mindwind 的随笔思考Code Review 程序员的寄望与哀伤,是否也说出了你的心声。除此之外,@叶孤城___ 和其他几个伙伴做了Code Review的高效专业代码审核服务。

再来看下本期 fir.im Weekly 的其他干货内容。

『 iOS , Android , 前端开发干货分享』

iOS 10 Music 架构解析

@糖炒小虾_txx 在公众号上分享道:

“作为一个 iOS / Android 双料开发者,我非常喜欢围观 Android 系统自带的 app 源码,毕竟那是 Google 的工程师认为的最佳实践。而这次我们也能近距离的围观一下 iOS 内置的书写方式,于是这里我们选择了 Music.app 来做小白鼠。 ”

文章传送门.

JieCaoVideoPlayer ——  Android 播放器 SDK

@卢_俊分享了一款 Android 播放器 SDK , JieCaoVideoPlayer ,真正实现 Android 的全屏功能。 Github 地址:**JieCaoVideoPl ayer**.

Xcode 下编译时间分析工具

来自与@开源小组分享;

Build Time Analyzer for Xcode , Github 地址:**BuildTimeAnalyzer-for-Xcode**.

linkedin/swift-style-guide

@NSPredicate 在微博分享到;

“ LinkedIn App 用 Swift 重写, 他们最近公布了 Swift 编写规范 ”, Github 地址:linkedin/swift-style-guide.

MagicaSakura - Android 多主题框架

来自 xyczero ’ s Blog 分享。

"如何不重启 APP 切换多主题? 如何只写一份 drawable 或 layout 就可以自动适配各种多主题? 如何兼容低版本的 Android 系统? 如何减少开发人员的学习成本,能够快速适应多主题框架? 开源多主题框架 MagicaSakura 都可以帮你做到。

全文浏览,点击这里.

那些值得你试试的 Android 竞品分析工具

@D_clock 爱吃葱花整理了一些自己在开发过程中经常会用到的竞品分析工具,以了解竞品相应的一些技术信息,例如:代码质量、某种业务的实现方式、用了什么第三方库等,达到学习的目的。感兴趣点击这里.

Android 可定制特效的点赞

@言尤未语心已止连夜写了一个 Android 可定制特效的点赞,源码放在 Github 上:ShineButton

开源 App 虚拟引擎: VirtualApp

VirtualApp 帮助你创建一个虚拟空间,可以安装并运行里面的 apk 。@HiLody 将其开源, Github 地址:asLody/VirtualApp

Web App 防坑指南

@风化的影的这篇文章围绕着 Web 的特性,探讨 Web App 与 Native App 的不同,帮助读者在项目中尽早地识别出可能出现问题的场景。文章传送门.


『 持续集成与自动化实践』

## flow.ci+Github+Slack 一步步搭建 Python 自动化持续集成 “理想的程序员必须懒惰,永远追随自动化法则。 Automating shapes smarter future.”

@风起云飞 flowci 分享的这篇关于 flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成,详细教程点击这里.

译文:我的自动化之旅

"不要使用手工流程(Don't Use Manual Procedures)",来看看作者关于项目自动化的故事。

原文:Automation for the People

译文:我的自动化之旅


『 程序员 Tips 』

2016 年兴起的 52 个科技项目

来自干货集中营 @代码家分享,详情见 Github 地址:52-technologies-in-2016.

在 Mac 平台配置你的开发环境

@icepy总结了一些关于 配置 Mac 开发环境的经验,点击这里浏览。


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 聊聊让人向往的远程开发工作 tag:www.v2ex.com,2016-07-06:/t/290701 2016-07-06T10:28:40Z 2016-07-06T12:39:26Z Imshaha member/Imshaha 6 月 30 日,苹果开发者后台贴出一封关于广电总局的醒目通知,申报一个游戏 APP 上架 AppStore ,你需要文网文+ICP 证+软著+版号,审批难度将越来越大,不禁让人感慨中国独立开发者的成长 “ 道阻且长 ”,更多可了解相关知乎问题.

谈及独立开发者,除了生存问题引人关注外,他们可能多数是优秀的远程开发先行者。如果你也向往一份 Remote 开发工作,推荐一早一晚 远程开发社区和 @greatghoul 整理的 Github 远程工作资料库 remote-working .

除此之外,本期 fir.im Weekly 推荐 teahour.fm最新一期节目,邀请了 Ashchan 聊了远程工作的方方面面,包括如何从头开始,如何接项目,如何找客户等如果要做远程工作必须要面对的问题等等~

再来看下其他干货内容 ~

『 iOS , Android , 前端开发干货分享』

iOS 进阶指南试读之 UI 篇

@叶孤城___ 大神分享;

“ UI 是一个 iOS 开发工程师的基本功。 UI 本质上就是你调用苹果提供给你的 API 来完成设计师的设计。所以,想提升 UI 的功力也很简单,没事就看看 UIKit 里的各个类的头文件。如果能做到烂熟于胸,相信会有很大的提升。”文章传送门.

25 位国内外优秀的 Swift 开发者推荐

@SwiftLanguage 有心整理了二十五位优秀的 Swift 开发者个人资料页,分享在 Github 上。除此外,推荐下他整理的开发者、项目、最佳实践,资料很多很强大。

Elevate - JSON 解析框架库

Elevate , Nike 公司出品的简单、可靠、可组合的 JSON 解析框架库,用 Swift 写的。 Github 地址:Nike-Inc/Elevate.

Scoops - Android 多主题切换库

来自与@开源小组分享;

“超赞! Android 多主题切换库,做的相当精致 ”, Github 地址: Scoops.

Activity / Fragment 的完整 Lifecycle

@廖祜秋 liaohuqiu_秋百万在微博上分享道:

@oasisfeng 冯老师告诫我们要熟记这个图: 《 Activity / Fragment 的完整 Lifecycle 》,『史上最全』,『史上最牛』,『史上最详细』…… ”

简直典型的从入门到放弃啊,围观 Github 地址:android-lifecycle.

可能是讲解 Android 事件分发最好的文章

这篇文章阐明了 Android 具体的事件分发机制的设计意图,让人既知其然,又知其所以然,也许能解决心中部分疑问。感谢简书作者milter翻译,造福广大 Android 开发者。

英文原文: 链接;

中文翻译版 : 链接.

前端 TOP 100

这个网页汇集了前端 TOP 100 - 包含热门和趋势两种排序,数据来自 Github 和 Awesomes-cn 每天更新。挺不错的, 很实用, 值得收藏。


『 持续集成与自动化测试实践』

使用 Jenkins 搭建 iOS/Android 持续集成打包平台

来自 DebugTalk博客分享; "为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等人员)通过手机扫描二维码后就能直接安装测试包。”

基本上这个流程所有开发 APP 的团队都可能会用到,来看看的这篇文章,让你真正零基础上手,到手即飞、开箱即用。

iOS UI 自动化测试

Android 平台上的自动化工具和实践比较多,由于 iOS 系统的封闭性,很多 iOS 平台的测试人员还处于纯手工测试模式,自动化程度和 Android 平台无法相论。

关于 iOS UI 自动化测试,来看下 TMQ 的这篇文章

3 分钟轻松搭建 Ruby 项目自动化持续集成

“除了写代码,一切皆可自动化。 Automating shapes smarter future.”。

@风起云飞 flowci 这是一篇关于 Ruby 项目持续集成的快速指导教程,教大家如何使用 flow.ci 在 3 分钟内简单快速完成持续集成搭建,详细教程点击这里.


『 程序员 Tips 』

WWDC 信仰之旅

@Nero5023写了一篇关于参加 WWDC 的见闻、感受,来这里看看。

产品设计美学的跨界书单

@周楷雯 Kevin的这个分享以三本书作为载体,谈了很多关于产品设计美学的跨界感悟,渗透很多自己的哲思,文章图文很赞,排版优美,值得推荐。传送门


这期的 fir.im Weekly 就到这里, 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 2016 年 Android 最佳实践列表 tag:www.v2ex.com,2016-06-28:/t/288791 2016-06-28T03:22:47Z 2016-06-28T03:19:47Z Imshaha member/Imshaha 2016 年已经过去一半,你在年初制定的成长计划都实现了吗?

学海无涯,技术成长不是一簇而就的事情。本期 fir.im Weekly 推荐 王下邀月熊_Chevalier我的编程之路——知识管理与知识体系,适合所有的开发者阅读。

还有作者的关于 2016 里一些 Android 最佳实践列表—— Opinionated,其中集成 Medium 上关于最佳实践的 Checklist ,并加入了一些个人看法,包涵 Language 、 UI 、 Network 、 Storage 、 DataBase 、 SysProc 、 TestRelease 等方面,希望对你有用。

再来看下其他干货内容 ~

『 iOS , Android , 前端开发干货分享』

如何构建 Android MVVM 应用程序

@Kelin-Hong 的这篇文章将讲述如何通过 Data Binding 构建 MVVM 应用框架。并告诉我们什么是 MVVM ,如何一步一步来设计整个应用程序框架。

文章传送门;源码地址.

iOS 现有项目集成 React Native

iOS 现有项目集成 React Native 有 2 种方法:

作者huxiaoqiao 通过五步将原有项目成功集成 React Native ,详情见[这里]( https://github.com/huxiaoqiao/React-Native-Study/blob/master/Blog/iOS%E7%8E%B0%E6%9C%89%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90React%20Native.md?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io#通过 cocoapods 集成 react-native)。

检查 iOS App 是否支持 IPv6-only Network

从 2016 年 6 月 1 号开始,苹果强制要求上架 AppStore 的应用支持 IPv6-only network 。 @_openThread的这篇文章分为两部分:通过代码检查是否兼容 IPv6-only 网络,以及如何搭建 IPv6-only 网络的测试环境,旨在帮助快速检查 app 是否支持 IPv6-only Network 。

文章传送门.

多个 fir 账户上传 app 的最佳姿势

@Robin 灬桑 在微博上分享道:

“因为个人有多个 fir 账户,来回切换上传太烦,没事就写了个 mac 端的上传 app ,暂时只有上传和切换用户,后面慢慢加功能吧 ”

分享给有同样需求的同学, Github 地址>>Fir-macOS.

一个很棒的 Android APP 框架

来自与xuyushi Blog分享;

“最近在 github 上看到一个 android 的框架,结合了 Rxjava + retrofit + dagger2 + mvp ,结合了当下比较流行的框架,并且项目层次非常清晰,易于扩展和维护”。文章地址.

WeFlow :腾讯出品的跨平台的前端开发工作流工具

WeFlow 是微信团队出品的基于 tmt-workflow 前端工作流的开发工具。 目前已支持了:微信游戏、微信广告等项目的 第三方合作团队 的前端构建工作,如果你更习惯命令行 操作,可以直接使用 WeFlow 的核心:基于 Gulp 开发的 tmt-workflow :)

官网:https://weflow.io/

Github 地址: https://github.com/weixin/WeFlow


『 持续集成与自动化测试实践』

DevOps 的最佳实践与 Docker 的运维挑战

"国内各种规模的企业系统都在尝试在他们的开发运维环境中使用 DevOps ,如何做才能一步步实现 DevOps 与最佳实践案例, Docker 作为实现 DevOps 的一个重要技术手段,又给运维带来了什么样的挑战?”

如果你对相关技术感兴趣,可以来看看云络科技架构师王寒的这篇文章.

8 步搭建 Node.js + MongoDB 项目的自动化持续集成

“任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式”。

@风起云飞 flowci 通过创建一个 Node.js + MongoDB 项目,来教大家如何使用 flow.ci 8 步完成自动化持续集成的搭建。 详细教程点击这里.


『 程序员 Tips&技术活动 』

买苹果设备需要注意哪些坑

看一名标准的果粉,结合实际使用体验,来告诉大家如何正确地选购苹果设备。最近要换设备的同学,来这里看看魅族开发团队的分享.

WWDC2016 中文资料 /视频 /Demo

swift 小学生 对 wwdc2016 进行了特别整理了下,地址:链接,包含视频原地址,中文资料, demo 等。

TesterHome 第二届移动互联网测试大会

@TesterHome是国内一流的测试技术交流社区,这次大会涵盖各个层面的实用技术和大厂经验分享,购票链接


这期的 fir.im Weekly 欢迎大家分享更多的内容。

fir.im

]]>
今 夏 至 ,宜 观 影 tag:www.v2ex.com,2016-06-21:/t/287371 2016-06-21T11:03:26Z 2016-06-21T13:35:56Z Imshaha member/Imshaha 匆匆盛夏已至,当层出不穷的 Bug 和粘稠的汗水一样难以摆脱。 也许你需要做的就是 Relax 、Relax 、and Relax …

除了看球、喝酒、打游戏,你还可以去电影院陪 TA 看场电影。这次,fir.im 联合 聚合数据,为疲惫的你准备了一份夏日的清凉礼物 —— 双人电影票 。

如何拿到电影票

如果你在用 fir-cli ,注册成为 聚合数据 的新用户,即可参与本次活动。提交资料通过审核后,将获得 2 张电影票,一共抽 50 人左右。每周五出抽奖结果。

我们的审核标准

  1. 使用 fir.im-cli 上传, 编译 iOS/Android 应用; 了解 fir-cli
  2. 成为 聚合数据 的新注册用户;注册传送门

填写资料

点击这里,填写你的姓名、电话、 fir.im 注册邮箱、聚合数据注册邮箱。 核实后我们会将通过邮件通知中奖者。

活动时间

6 月 21 日 - 6 月 30 日

如何兑换电影票

]]>
fir.im Weekly - 从 iOS 10 SDK 新特性说起 tag:www.v2ex.com,2016-06-21:/t/287223 2016-06-21T02:16:15Z 2016-06-21T03:58:01Z Imshaha member/Imshaha 从 iOS 7 翻天覆地的全新设计, iOS 8 中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入, iOS 9 的分屏多任务特性,今年的 WWDC iOS 10 SDK 又有哪些新的特性呢?

来看看喵神 @onevcat 的这篇关于 开发者所需要知道的 iOS 10 SDK 新特性,也许你会有所收获。后续喵神会补充关于 WDDC session 的学习笔记,多多留意他的博客

我们还找到了其他关于 WWDC 的干货,比如 百度技术团队的WWDC 2016 观影指南,整理了 WWDC 值得看的 Session ;还有@唐巧_boy 大神的 WWDC 2016 随想,对于开发者,值得一看。

再来看下本期 fir.im 的其他内容 ~

『 iOS , Android 开发干货分享』

Objective-C 消息发送与转发机制原理

作者@杨萧玉 HIT在这篇文章中讲述了开发者在消息发送和转发流程中的原理。看这篇文章前,也许你应该对 Objective-C Runtime 已经有一定的了解,关于 Class 的结构, selector 、 IMP 、元类等概念将不再赘述。

全文浏览,点击这里

JakeLin/IBAnimatable

来自@林永坚 Jake 的分享。

“ 进过多天的奋战,我们发布 IBAnimatable 2.3 了,第一个支持在 Interface Builder 上配置换场动画和手势的库,这次增加了 52 个换场动画,详细的文档请看 链接 ”

iOS 独立开发记录 - Azure Yu

作者游薪渝在开发一款个人 APP 得出来的真知:

“前期思考要全面,设计要具体,在具体实现过程中,需要兵来将挡,水来土掩”,并给出了详细记录了从想法、设计、开发到最终发布的过程,中间穿插开发中具体思路和资源列表。详细的实践经验请点击这里

二次开发的消息 UI 库

@little12s分享了新轮子NoChat,用的 Swift 2.2 简单仿写了流行的消息应用 Telegram, WeChat, Slack 。

Android N Developer Preview 汉化文档

来自与@Google 开发者微博分享;

“ Android N 预览版官网几乎所有文档都已汉化,包括行为变更、后台优化、语言和区域设置、 API 概览、别再给自己找理由了 ,快快学起来。”地址,点击这里

那些酷炫的 RecyclerView 开源库整理

@Anthony最近在研究 RecyclerView ,整理了一些开源项目放到 github 项目 Learning-RecyclerView 上,内涵 26 个 RecyclerView 开源库,有需要的同学可以看看。

Android 内存泄漏解决方案(OOM)

“ Android 系统为每个应用分配的内存是有限的,内存泄漏会使我们的应用内存随着时间不断的增加,造成应用 OOM(Out Of Memory)错误,导致应用崩溃.” 如何解决内存泄漏? 看看这篇文章.


『 持续集成与自动化测试实践』

浅谈代码覆盖率

"我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。”如果你也有此类疑问,来看看有赞技术团队博客的这篇文章

从自动化测试到持续部署,你需要了解这些

“在互联网的产品开发时代,产品迭代越来越频繁,“从功能开发完成直到成功部署”这一阶段被称为软件开发“最后一公里”。很多开发团队也越来越认识到,自动化测试和持续部署可帮助开发团队提高迭代效率和质量。” 文章传送门.


『 程序员 Tips 』

一款产品的从 0 到 1 之旅

“从 0 到 1 打造一款产品是一种什么样的体验?”

@improve365介绍下自己如何打造交易日记这款 App 的过程。且整款 iOS APP 的全部工作都是作者一个人完成的。 同样,感兴趣全栈开发的同学,可以来这里看看。

从 0 开始学习 GitHub 系列之「 Git 进阶」

来自@googdev 分享。

"关于 Git 相信大家看了之前一系列的文章已经初步会使用了, 但是关于 Git 还有很多知识与技巧是你不知道的,今天就来给大家介绍下一些 Git 进阶的知识。" 文章传送门.


这期的 fir.im Weekly 欢迎大家分享更多的内容。

fir.im

]]>
从自动化测试到持续部署,你需要了解这些 tag:www.v2ex.com,2016-06-14:/t/285555 2016-06-14T02:41:24Z 2016-06-14T12:51:07Z Imshaha member/Imshaha 在互联网的产品开发时代,产品迭代越来越频繁,“从功能开发完成直到成功部署”这一阶段被称为软件开发“最后一公里”。很多开发团队也越来越认识到,自动化测试和持续部署可帮助开发团队提高迭代效率和质量。

那么,如何更好地解决“最后一公里”这一问题呢?

一切从自动化测试开始,让自动化测试贯穿在整个项目开发-集成-部署-交付的-开发流程中。

如果你的团队还没有开始自动化测试,推荐从经典的测试金字塔开始。

自动化测试

在这个分层自动化测试金字塔中, Unit 代表单元测试, Service 代表服务集成测试, UI 代表页面级的功能测试。不同的产品层次都需要自动化测试,投入的精力和工作量会有所不同。下面我们仔细看下每个层次的测试:

1.1 Unit 单元测试

“凡是不能量化的工作都是不可考量的”

目前很多公司已经意识到了单元测试的重要性,但国内坚持写单元测试的团队并不多,其中一个难点在于没有考量,没有很好地执行单元测试覆盖率检测。

想想,如果没有单元测试覆盖率检测,单纯的只写单元测试,时间长了也许开发人员会产生惰性,比如:今天任务太紧了,就不写单元测试了,以后再补,反正写不写也没有人知道。引入单元测试覆盖率检测之后,开发人员会更主动地写单元测试,就算补写单元测试也更有成就感。单元测试覆盖率检测有现成的第三方工具,比如 code climate 、 Coveralls 等等,针对不同的语言也有还有一些定制化的检测工具, 比如前端常用的 Eslint , Python 常用的 PEP8 等等。整个项目的单元测试覆盖情况百分比,看上去一目了然。

相比其他层级的测试,单元测试发现并解决问题付出的成本相对来说最低,而投入产出比最高。单元测试的责任主体一般来说是开发人员,写单元测试也是开发人员对自己的代码进行检查的过程。

1.2 Service 集成测试

“多数应用和产品都需要与外部资源交互,有时候多数 Bug 并不来源于程序本身,而是由从外部输入的数据所引起的。”

这时候,就更需要集成测试。

集成测试是在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。这个集成测试阶段主要解决的是检查各个软件组成单元代码是否符合开发规范、接口是否存在问题、整体功能有无错误、界面是否符合设计规范、性能是否满足用户需求等等。

集成测试与单元测试最大的区别在于,它需要尽可能地测试整个功能及相关环境。如果不经过单元测试,那么集成测试的效果将会受到很大影响,大幅增加单元代码纠错的代价。

这一层的被测对象是抽离了展现层的代码(前端以及部分后端展现层逻辑),主要是由测试人员进行,是测试人员大展身手的地方。

1.3 UI 系统测试

“一份永远都运行成功的自动化测试用例是没有价值的。一切都在变化中。”

在做好上面两层的测试覆盖之后,最顶端的是 UI 层的自动化测试。目前, UI 层的自动化覆盖正在逐渐转变为页面展示逻辑及界面前端与服务展现层交互的集成验证。 UI 层自动化做的方式很多,根据不同的系统,不同的架构可能会用到不同的框架或者工具,比较主流的有 QTP , Robot Framework 、 watir 、 selenium 等。

怎么选择合适的工具?每个测试工具都有它的优缺点,每个被测试的项目也有自己本身的特点。比如,项目是用什么语言编写的, C, C++, Java, PHP , Python or C#? 项目是什么类型, Desktop , Web or Mobile Application? 很难说一种工具就可以搞定所有或者大部分的项目,也很难说一个项目就能单纯的靠一种工具来搞定。

UI 层是直接面向用户的,需要测试人员放入更多的时间和精力。如今的互联网公司大多需求变化大而快,迭代频繁,所以很多团队做 UI 自动化测试投入较大精力,却迟迟见不到效果,自动化测试人员每天奔命于维护脚本,追赶进度。有 2 点 UI 层自动化覆盖的原则非常有必要提下:

综上所述,分层自动化测试侧重不同,效果不尽然完美的,而最快速高效发现 bug 的方法是将自动化测试包含到构建过程中。谨慎周全的自动化测试可以进一步保证持续部署的稳定与安全,提高持续部署的成功率。

持续部署

对于持续部署,@湾区日报 这样评论:

一个团队工程技术水平高低,直接反映在部署代码上。我碰到其他公司的人,都喜欢问你们怎么部署代码的,非常大开眼界。你很难相信,很多(有一定规模的)公司仍然是人肉 SSH 到十几、二十台机器上 git pull 、手动重启服务器,部署一次代码几个小时 -- 这么原始,活该加班:)

持续部署( continuous deployment )是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。

2.1 持续部署的步骤

“持续部署”的痛苦源于部署时的各方面,比如需要部署到哪些环境,测试环境?灰度发布?正式环境?还有其依赖包的版本,环境配置管理等等,都需要考虑在其中。对于一个标准的部署——安装软件包并启动环境,可能的步骤将会是:

2.2 CI 工具的选择与使用

imothy 写过一篇文章介绍了 IMVU 是如何进行持续部署。 IMVU 的做法是,在持续集成构建过程中进行大量的、覆盖范围广的、非常可靠的自动化测试,保证在 10 分钟内跑完整个测试套件。所有测试通过后,部署便开始了。

在这个过程中,持续集成工具的选择和系统的搭建显得尤为重要。面对众多的 CI 工具,我们将其分为 Hosted CI 和 Self Hosted CI :

我们对比一下这两种 CI 服务:

我们做了一款 Hosted CI 产品—— flow.ci ,它是融入了 workflow 机制的持续集成( CI )服务,也可以理解为自动化流程平台,除了集成代码、编译、测试之外,还可以集成常用的工具、灵活自定义流程。 1 分钟即可完成开发测试环境搭建,开启第一个 Build 。

flow.ci 更侧重于工作流的设置,默认的工作流可以自动编译测试代码,进行单元测试覆盖率,代码质量检测等工具以插件的形式进行集成;并加入了 Webhook 功能。从自动化测试到持续部署,一切简单灵活。

2.3 让持续部署成功的要点

一个持续集成 & 持续部署的自动化系统并不是那么简单的事,如果不选用其他 CI 服务,其开发工作量和一个标准的大型互联网业务系统没什么两样。如果没有持续部署的经验,要想成功地进行持续部署要注意这些:

2.4 持续部署习惯的养成

持续部署真正困难的不是技术的实现,也不是工具的选择和使用,最难的是培养团队持续部署的习惯以及工程文化。可以参考下Instagram 的持续部署工程文化

总结

不论是自动化测试,还是持续部署,都只是一种实现手段;他们真正存在的价值在于提高代码质量和提高产品的持续交付能力。关于如何进行更好地进行自动化测试和持续部署,可以多参考下其他公司的持续部署实践案例与经验。

如果你有更加深刻的见解,欢迎留言交流!

[参考链接]

]]>
fir.im Weekly - 给 Mac 应用开发者的教程 tag:www.v2ex.com,2016-06-08:/t/284313 2016-06-08T02:32:15Z 2016-06-08T02:34:36Z Imshaha member/Imshaha

写作是一件苦差事。无论写代码,还是写文章。

关于 Mac 应用开发,国内很少有完整的书籍或教程。最近@剑指人心写的 《 Mac 应用开发基础教程》终于!完!稿!了!

这本书中对 Mac 平台中应用开发的 AppKit 系统控件做了详细介绍与示例说明,也包涵常用的公用组件,系统框架,生产力工具,经典的开源项目以及实践经验等。如果对 Mac App 开发感兴趣,去这里看看这本书。

除此之外,本期 fir.im Weekly ,一如往常精选了一些实用的技术分享~

『 iOS , Android 开发分享』

iOS debug 速查表

iOS 逆向过程中命令太多完全记不住,@everettjf 整理了这个速查表,分享给大家。 copy and paste 就可以愉快的学习其他 app 的实现。

iOS 启动连续闪退保护方案

来自微信读书团队博客分享。

"iOS App 有时可能遇到启动必 crash 的绝境:每次打开 App 都闪退,无法正常使用 App 。为了尝试解决这个问题,微信读书开发了 iOS 连续闪退保护工具:GYBootingProtection,检测连续闪退,在连续闪退出现时,尝试自修复 App."

这篇文章探讨了连续闪退问题的产生原因、检测、修复机制,以及如何在你的项目中引入、测试和使用GYBootingProtection

Squall.no - 转换 AE 动画到 ​​ iOS 代码并预览

@KITTEN-YANG在微博分享:

“ Squall:Convert AE animations to iOS code and preview them instantly! 动画这件事,以后可能和 iOS 开发者没什么关系了。”

从 ReactiveCocoa 中能学到什么?不用此库也能学以致用

@戴铭大神 在这篇文章中图文并茂地讲解,如何将 ReactiveCocoa 库的思想编程思想融入项目中,理解起来似乎有点难度。

文章传送门.

Radial Chart Image Generator

@DeveloperLx 在微博上分享了一个生成环状渐变图片的好工具,链接在此.

知道 Android 中 Gradle 的这些技巧,提升编译构建速度

“使用 Gradle 构建项目,多渠道打包更加方便,依赖类库统一管理,基于 Groovy 的 DSL 语言简洁方便。这些好处省了不少事,但是唯一的问题就是编译构建运行的时候特别慢。”

@安卓同学整理了几个 Gradle 技巧,让 Android Gradle 运行编译更加快速。文章传送门.

英语流利说 Android 架构演进

来自Jacks Blog分享。

“随着业务层的复杂度不断增加,英语 流利说 Android 的代码架构经历了一场华丽的蜕变,本文详细讲解了英语流利说 Android 端如何从一个中小型项目架构转为中大型项目架构的过程。”

全文浏览,点击这里.

当数学遇上动画

@五道口宅男潇涧新的三篇文章《当数学遇上动画:讲述 ValueAnimator 、 TypeEvaluator 和 TimeInterpolator 之间的恩恩怨怨》新鲜出炉,看完了本节之后会更加清楚如何借助 TypeEvaluator 和 TimeInterpolator 实现动画,链接

Android 开发书籍推荐:从入门到精通系列

来自@D_clock 爱吃葱花和伙伴做了一个《 Android 开发书籍推荐:从入门到精通系列》的书籍系列,整理收集开发大牛的学习经验,帮助 Android 新手少走弯路,更快速成长。


『 持续集成实践 』

iOS 持续集成从入门到放弃(1)

@Onetaway分享了持续集成打包经验,主要利用 fastlane 实现自动化打包,可以去这里看看。

初创公司应该如何做好持续集成和部署

来自 linux-geek 的经验分享。 “最近一段时间一直在梳理项目开发流程以及自动化测试和部署规范,作为一个总结和大家分享,希望有所帮助。”

文章传送门


『 程序员相关 』

如何大幅度提高 Mac 开发效率

关于 Mac 工作效率的文章一直层出不穷,然而并非所有内容都适合程序员,比如某些 Unix 命令,其实使用频率非常低。bestswifter和大家分享一些能够切实提高开发效率的小技巧。

感兴趣的点击这里,或者去优酷 看视频。

外包通缉令

@代码家 & 干货集中营推出的程序员项目外包平台 —— 外包通缉令 ,不定期推送靠谱短平快外包信息,后续会正式上线。让有时间有精力的开发者赚点儿零花钱,也是一件极好的事情。


这期的 fir.im Weekly 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 如何打造真正的工程师文化 tag:www.v2ex.com,2016-06-01:/t/282663 2016-06-01T02:15:39Z 2016-06-01T05:43:12Z Imshaha member/Imshaha 好的工程师,无法忍受低效且无趣的工作。优秀的技术团队应该自上而下的地推进技术平台化建设、 DevOps 、自动化构建、测试和部署流程,积极采用合适的第三方工具或创造工具,进行周期性的前沿技术分享等等。

先来看看国内外公司关于工程师文化的分享~

What makes a good engineering culture?

建立一个良好的工程文化无疑是一个大量的工作,但由此产生的工作环境是值得的。

edmondlau@Twitter的这篇文章讲了如何打造一个有工程师氛围的团队,需要知道的 10 件事情。英文原文:链接;中文翻译:链接.(PS :中文翻译来自微信公众号*@董老师在硅谷*)

前豆瓣首席架构师:如何保持团队的技术氛围?

“在技术团队建立起技术导向的价值观、良好的工程师文化,才能保持一个技术团队的创新与活力。” 洪强宁(前豆瓣首席架构师)的这篇文章,从技术导向、分享精神、鼓励创新、工具文化等方面进行了分享。文章传送门

什么是好的工程师文化?欢迎分享你的想法到微博 @风起云飞 firim 或者 dm[at]fir.im. 再来看看本期 fir.im Weekly 的技术干货分享~

『 iOS , Android 开发干货分享』

从 0 到 1 搭建移动 App 功能自动化测试实践

@debugtalk 基于当前项目的开发模式,对整个 M 项目实现持续集成自动化测试的架构流程进行了规划,包括自动化测试平台、测试管理平台、打包平台、服务端自动化测试、持续集成流程打通等等。

《从 0 到 1 搭建移动 App 功能自动化测试平台》,是对整个实践过程的一个记录,目前正在持续更新中,可关注作者的博客——DebugTalk.

猿题库从 Objective-C 到 Swift 的迁移

@晨钰 Lancy是猿题库 iOS 客户端的负责人,他主导了猿题库 iOS 客户端从 Objective-C 到 Swift 的迁移工作。同时他在实践 Swift 的过程中,总结了不少心得,来看看这篇采访

你需要知道的 Android 拍照适配方案

@D_clock 爱吃葱花分享了在 Android 相机开发方面的一些个人适配经验,未必很全,但也是不错的实践总结,值得一看。

全文浏览,点击这里.

Depth-LIB-Android 开源

@优雅的程序员 D分享了一个有趣的 switch ,效果非常酷炫。 Github 地址: https://github.com/danielzeller/Depth-LIB-Android-

一只快速生成代码的 Xcode 插件 — FastStub

@愚公编程 MrPeak 借鉴 Android Studio ,做了一个类似自动生成代码的 Xcode 插件,和大家分享。文章链接;项目地址>>music4kid/FastStub-Xcode

Facebook 开发者写的 ReactNative 教程

来自@hi 大头鬼 hi 微博分享:

“ Facebook 开发者写的 ReactNative 教程O网页链接 ,详细介绍了 f8 的 app 是如何使用 RN 开发的,非常值得参考,@廖祜秋 liaohuqiu_秋百万 已经翻译了中文版网页链接 ,执行力太高了”

Realm 1.0.0 版本发布

@RealmChina在微博上说到:

“ Realm 1.0.0 版本发布 链接 , 2014 年 7 月我们发布了 Realm —— 首个为移动端定制的数据库。今天,在 13949 次代码提交、 6148 个问题关闭之后,我们骄傲地宣布 Realm 1.0 版本发布。感谢广大 iOS 和 Andorid 开发社区对 Realm 的帮助!”

与此同时,中文文档也一并更新:

Realm Java 链接

Realm Objective-C 链接

Realm Swift 链接

iOS 应用支持 IPV6 ,就那点事儿

来自简书作者philon 的分享。

“自从 5 月初 Apple 明文规定所有开发者在 6 月 1 号以后提交新版本需要支持 IPV6-Only 的网络,大家便开始热火朝天的研究如何支持 IPV6 ,以及应用中哪些模块目前不支持 IPV6 。”

这篇文章帮你揭开 IPV6 的神秘面纱,推荐 iOS 开发者参考下。

Artsy 的测试之旅

来自RealmChina 的分享。

“ Artsy 拥有 4 个 iOS 应用,它们都已经全部开源,并且都采用了不同的方法来进行了测试。不同的测试技术在各种的情况下的优劣各有不同。 Ash Furrow 讨论了 Artsy iOS 团队做出这种决策背后的动机,谈论了他们所遇见到的问题,以及他们是如何克服这些困难的。”感兴趣的来这里看看。

『 程序员成长 Tips 』

看程序员是如何把自动化做到极致的

作为一名程序员或技术人,你们有木有写过让工作 /生活得更轻松的算法 /程序呢。编程自动化又会给生活带来哪些便利呢?下面是程序员们在 Quora 上的分享,@伯乐在线翻译组挑选摘编一些精彩内容,感兴趣点击这里,想要这些脚本的童鞋,直接到 Github 下载

全栈增长工程师实战

继《全栈增长工程指南》之后,@Phodal老师的又一大作,详细介绍了如何去开发一个响应式的 Web 应用、如何开发相应的 API 以及移动应用,以及如何开发单页面应用。还有编写测试、持续集成等等内容,点击这里阅读。


最后,fir.im 团队做了一款全新的持续集成产品——flow.ci , 除了集成代码、编译、测试之外,还可以集成常用的工具、灵活自定义流程,感兴趣的可以 加入内测 尝鲜。

附 1 :内测详情:flow.ci Beta 上线,将开发工作流自动化

附 2 :flow.ci 快速预览

这期的 fir.im Weekly 就是这些,欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 从零开始创建 Android 新项目 tag:www.v2ex.com,2016-05-24:/t/280963 2016-05-24T09:31:45Z 2016-05-24T11:00:05Z Imshaha member/Imshaha 今年的 Google I/O 大会上,人工智能和虚拟现实的产品发布让我们对未来多了几分惊喜。对于开发者部分, Google 发布了 Android N 系统,感受最深的是全新的 Android StudioFirebase,赋予开发者更大的发挥空间。

再来看看本期 fir.im Weekly ,一如往常精选了一些实用的技术干货分享~

『 iOS , Android 开发干货分享』

干货搜索器 Gank Alfred Workflow

@五道口宅男潇涧自制的干货搜索器 Gank Alfred Workflow ,更好地搜索你想要的干货!远离百度就靠它!项目地址:网页链接.

从零开始的 Android 新项目

试想一下,如果没有历史负担,没有 KPI 压力,去新搭建一个项目,你会怎么设计和实现呢?

作者宅一番 markzhai在 Blog 里更新的一系列文章,不是教你怎么从 0 开始学 Android ,从 0 开始怎么建一个项目,而是定位于零负担的情况下,在 2016 年怎么去创建一个好的 Android 项目,其中一部分技术并不太适合刚入门的初学者。目前更新至 5 篇,推荐 Android 开发者参考下。

从零开始的 Android 新项目 1 - 架构搭建篇

从零开始的 Android 新项目 2 - Gradle 篇

从零开始的 Android 新项目 3 - MVPVM in Action, 谁告诉你 MVP 和 MVVM 是互斥的

从零开始的 Android 新项目 4 - Dagger2 篇

从零开始的 Android 新项目 5 - Repository 层(上) Retrofit 、 Repository 组装

从零开始的 Android 新项目 6 - Repository 层(下) Realm 、缓存、异常处理

Android Studio 翻译小插件

@达达达达 sky在微博上分享到:

“写了一个 Android Studio 翻译小插件。选中单词 command + I 即可翻译。妈妈再也不用担心我看源码遇到不会的单词了” , Github 地址在此.

小历 iOS & Mac 应用核心部分开源

小历是一个简洁的农历 app ,目前支持 iOS & OS X 两端, iOS 端多次被 App Store 官方推荐。 @StackOverflowError 现在开源小历 iOS & Mac 应用的日历核心部分, Github 地址: https://github.com/cyanzhong/LunarCore

Yelp 的缩包技巧:从 40M 降到 20M

@YelpEngineering分享了在缩包方面的经验,用 WebP 代替 png 可以大幅的减少 apk 的大小。全文浏览,点击这里.

LLSwitch — 带动画效果的 Switch 开关

@磊_dan分享了一个有趣的 switch ,主要利用 Core Animation 实现,非常有意思。喜欢的朋友欢迎 star ,地址: https://github.com/lilei644/LLSwitch

《 Quartz2D 编程指南》

@小非 86花了一个月的时间编写了《 Quartz2D 编程指南》,包含概览、图形上下文、路径、颜色与颜色空间、变换、图案、阴影、渐变、透明层 、数据管理、位图与图像遮罩、 CoreGraphics 绘制 Layer ,内容丰富庞大。

Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间

Quartz2D 编程指南(二)变换、图案、阴影

Quartz2D 编程指南(三)渐变、透明层 、数据管理

Quartz2D 编程指南(四)位图与图像遮罩、 CoreGraphics 绘制 Layer

JSPatch Playground

@bang周末时间搞了个 JSPatch Playground ,可以快速看到 JSPatch 代码执行效果, APP 在模拟器运行后,每次修改脚本保存模拟器都会自动刷新,无需重启模拟器,即时看到效果。链接在此.

新浪微博 iOS 客户端架构与优化之路

来自 @移动开发前线 的分享。

这应该是新浪微博第一次对外进行客户端的相关分享,让我们来看看微博 iOS 的架构、性能优化、组件化、热修复等等都是怎么做的。 文章传送门.


『 持续集成实践 』

Android 持续集成技术实践

在进行 Android App 持续集成性能测试的时候,需要自动化实现 UI 层面的一些操作。这篇文章将从测试的角度出发,介绍 Android UI 实现自动化测试的基本方法,并着重讲解通过 Python 操作 Android UI 的一般性流程。后续,作者还会单独写一篇文章关于 UI 操作在 Android App 持续集成性能测试中的应用。感兴趣的来这里看看。

Why Continuous Deployment Just Keeps On Giving

来自 Intercom 的经验分享。 这篇文章介绍他们如何做 continuous deployment ,一天部署将近 100 次代码,部署一次耗时不到 10 分钟。

文章传送门


『 其他 』

成都 T 技术沙龙—— Swift 和函数式编程

@EclipsePrayer在微博上说: “ T 技术沙龙来成都啦!这次的主题是 Swift 和函数式编程,我们邀请到了 ThoughtWorks 的高级咨询师傅若愚、方志刚和 Camera360 的架构师高山。沙龙名额有限,想参加的同学快来报名吧:网页链接

2016 安卓上 15 款最佳黑客工具 App

FreeBuf 黑客与极客 微博分享。 Android 智能手机可以运行渗透测试和安全测试,下面分享的 15 个 Android 的黑客工具和应用程序 App ,可以帮助了解 Android 智能手机的真正实力,你也可以挖掘到黑客的世界。

感兴趣的点击这里.


这期的 fir.im Weekly 欢迎大家分享更多的内容。

fir.im

]]>
fir.im Weekly - 这是一份强大的 SwiftGuide tag:www.v2ex.com,2016-05-18:/t/279599 2016-05-18T09:22:06Z 2016-05-18T13:15:52Z Imshaha member/Imshaha 最近, Apple 10 亿美元融资滴滴!库克大叔对中国 iOS 开发者表达了高度认可,同时也传出 iOS 10 将内置滴滴 App 的消息。想像下,某个加班的深夜飙完代码,最性感的事情莫过于:「 Siri ,帮我叫车回家」…

本期 fir.im Weekly 精选了一些实用的 iOS , Android 开发干货分享,关于持续集成的实践,以及一篇黑客成长的文章和活动推荐。

『 iOS , Android 开发干货分享』

Swift 开发者、项目、最佳实践库

来自 @SwiftLanguage 的分享。

开源项目ipader/SwiftGuide 帮助开发者快速了解 Swift 阵营优秀开发者、开源项目、最佳实践等,低门槛、高效率地选择合适开源项目。 iOS & Android 开发者都可以关注下,内容同步更新至 《 Swift 开源项目精选》

移动端数据库新王者: realm

realm是一个跨平台移动数据库引擎,支持 iOS 、 OS X ( Objective ‑ C 和 Swift )以及 Android 。

@没故事的卓同学 对 realm 进行了详细的介绍和对比,文中还有几篇关于「数据引擎」理解和「数据库迁移」的实践文章,值得阅读。传送门.

JSPatch 平台 支持 fir.im 帐号登录

很多开发者对 JSPatch 有所了解,最近 fir.im 联合 JSPatch 平台做了深度接口合作,使用 fir.im 账号授权即可登录 JSPatch 平台,希望对 APP 开发者提供更多的服务。

JSPatch 是 一个 App 动态更新服务平台,也是一个开源项目(Github 链接),只需要在项目里引入极小的引擎文件,就可以使用 Javascript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法。

PortKit : iOS 6 / iOS 7 and its Android UI 组件对应一览表

感谢@优雅的程序员 D 微博分享。

“ iOS 6 / iOS 7 and its Android UI 组件对应一览表,这样你就能轻松的移植你的 iOSApp 到 Android App ” ,链接在此.

@iOS 程序犭袁转发评论到:"要是能有一些开源项目的对应就更好了。"

微信读书 iOS 性能优化总结

来自 @bang 的分享。

微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来。最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对性的性能问题优化。本文将从发现问题、解决问题和预防问题三个方面进行总结。”

全文阅读,点击这里.

手把手教你反编译别人的 app

关于手机操作系统没有绝对的安全可言,当然 iOS 系统会比其他操作系统而言相对安全。 @kuailejim这篇文章 以实际例子出发,告诉大家如何去反编译一个 app ,并且从某个角度来说, iOS 没有传说中的“安全”。

UXKit , iOS 开发者的福音

@糖炒小虾_txx 把 UXKit 做成了 Pod , iOS 开发者可以感受一下,通过 Pod 安装,完全不需要看文档写 OS X 的酸爽感。 Github 链接;详细的文章介绍传送门

最全面的 AndroidStudio 配置指南总结

猴子搬来的救兵 WooYun 总结了对 AndroidStudio 的配置心得,非常详尽,甚至包括 护眼模式 的配置方法。 全文浏览,点击这里.

Advanced RxJava

如果你做过 Android (和 Java )的开发,很有可能已经听说过 RxJava 了。RxJava 是由 Netflix 开发的响应式扩展(Reactive Extensions)的 Java 实现。

@Piasy把 RxJava 的系列博客——Advanced RxJava翻译成中文,详情见下面的链接。

中文翻译:链接

英文原文:Operator concurrency primitives: serialized access (part 1)


『 持续集成实践 』

The Netflix Tech Blog: How We Build Code at Netflix

Netflix 技术团队的这篇文章描述了如何从源代码到提供超过 75 万部电影和电视节目,整个过程中使用的部署工具和服务。其余部分探讨在每个阶段所使用的工具和流程,以及为什么要采取这种方式。来这里看看。

StackOverflow : How We Do Deployment - 2016 Edition

Nick_Craver @Twitter是 Stack Overflow 的开发人员。他的这篇文章分享了 2016 年 StackOverflow 整个持续部署的全部过程,非常详细庞大的分享,感兴趣持续部署的开发者不要错过。文章传送门


『 开发者活动推荐 & 程序员成长 Tips 』

第二届中国移动互联网测试大会

@TesterHome 社区主办的第二届中国移动互联网测试大会, 7 月 16 日在北京举办。大会涉及移动端的自动化、持续集成、性能、安全等一系列测试领域,以及最热最新的测试技术分享。目前在售票阶段,测试 er 们不要错过。具体详情见链接.

如何成为黑客

感谢@zer4tul的翻译分享。

你心中的极客 /黑客是什么样子,"极客""技术专才"?"向往自由""开源""社区"?这些也许都不能完整地解释黑客。强烈推荐下zer4tul@Twitter翻译 的这篇文章,同时也可以来参与 Diy Code 社区 的讨论。


最后, fir.im 正在寻找 2 名 Ruby 工程师 和 运维开发工程师 ,一起来和我们打磨新产品。具体介绍见这里.

这期的 fir.im Weekly 欢迎大家分享更多的内容。

fir.im

]]>
fir.im weekly - 「持续集成」实践教程合集 tag:www.v2ex.com,2016-05-10:/t/277693 2016-05-10T09:56:38Z 2016-05-10T11:10:10Z Imshaha member/Imshaha 我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS , Android , PHP , NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成系统的经验,供大家集中研究,参考借鉴。

先来看看国内外一些公司的实践经验:

Continuous Deployment at Instagram

Instagram 的开发团队每天保持着 30 - 50 次后端代码部署,几乎全程无人参与,完全自动化。这听起来很疯狂,但一切确实在这样运转。来这里看看 Instagram 的工程师 Twitter@mgorven 如何进行持续集成与持续部署。

Etsy ’ s Journey to Continuous Integration for Mobile Apps

Etsy的工程师 Nassim Kammah 在 2014 欧洲 Velocity 大会上分享了 Etsy 实现 iOS 应用持续集成的经验。

中文翻译版:Etsy 如何实现移动应用的持续集成

英文原文:Etsy ’ s Journey to Continuous Integration for Mobile Apps

豆瓣移动 App 持续集成和测试实践

来自豆瓣测试工程师杨蓉的分享。

主要介绍了豆瓣移动 App 持续集成和测试相关实践,用工具化+自动化+社会化测试来解决遇到的问题,将打包发布环节自动化。分享内容见这里

沪江无线持续集成的解决方案

沪江无线有多款无线应用,面临很多质量问题,比如线上奔溃率高,开发提测质量差,测试回归耗费时间长等问题。为此,沪江网测试团队搭建了一套持续集成的质量保障体系。

主要通过 Jenkins 新建一个 job 去拉取 Gitlab 中的源代码进行编译打包,然后启动 apk 扫描、自动化和专项测试,最后呈现测试结果。详细见链接:传送门.


『 iOS 持续集成实践 』

Jenkins+GitHub+Xcode+fir 搭了一个持续集成环境

@宣 X_x用 Jenkins + GitHub + Xcode + fir 搭了一个持续集成环境,并慷慨分享了整个过程,非常详细。

文章传送门

iOS 搭建 CI 持续集成环境

@大慈大悲大熊猫写的这篇文章总结了自己在 iOS 下的自动化打包,搭建可持续集成环境的实践过程,选择方案是 Jenkins+ Gitlab/Github+Xcode+Fir 。

全文浏览,点击这里.

iOS 项目的持续集成与管理

Matt Oakes@Medium这篇文章Jenkins 基础配置、单元测试、 Pull Request 测试、代码覆盖率、静态分析等等角度记录持续集成的搭建过程,最后通过fastlane进行自动部署,将整个 app store 的提交过程完全自动化。

原文链接 : Continuous Integration & Deployment for iOS Projects

原文作者 : Matt Oakes

译文出自 : 开发技术前线 www.devtf.cn

译者 : Sam Lau


『 Android 持续集成实践 』

基于 Travis CI 搭建 Android 持续集成以及自动打包发布流程

感谢@Allo的分享。

基于 Travis CI + fir.im CLI 搭建 Android 自动打包发布工作流,是非常棒的持续集成实践示范! Android 开发者想实现自动化发布,简化工作流程,可以来看看这篇文章.

Jenkin + Git + Gradle 为 Android 项目搭建 CI 环境

简书作者cyning 在这篇实践文章中说道: "上家公司用着很前卫的技术: Android Studio 、 Gradle 、 Git 、 Material 等,也搭建了一个 Jenkins 的 CI 环境,每次只需要提交代码, CI 会从 GitLab 上拉最新的代码,自动打包,同时推到我们内部的下载 /发布页面上。而我们内部的员工在下载页面上下载最新的安转文件,用起来很爽啊。"详细过程可以看这里

使用 DaoCloud 与 FIR.im 为 CodingAndroid 项目开启持续集成的尝试

@痕迹 BLANK 把持续集成环境搭建在 DaoCloud 上,通过几步就可以实现 CodingAndroid 项目自动提交,自动编译发布测试包到 fir.im.这是一套很新鲜的玩法,感兴趣地可以尝试一下,文章地址☞http://www.jianshu.com/p/a6ebb0e0c5ae .

基于 Travis CI 搭建 Android 持续集成以及自动打包发布流程

简书作者Archmage 分享了自己使用 Travic CI + Github + firCLI 搭建持续集成的经验: “ Tag 提交后, Travis CI 会自动编译代码,生成 apk 文件,并发到 Github 和相应地其他渠道,分发完成后,会邮件通知参与测试的人员。如此一来,作为码农,只要安心 Coding 和打 Tag 就好了,轻松愉快啊。”

全部流程一气呵成,值得借鉴。 文章传送门.


『 NodeJS 、 PHP 持续集成实践 』

Jenkins + Github + Node.js 实现持续集成 - 魅族科技开发团队

魅族科技开发团队工程师@吴彦欣分享到:

“由于最近团队代码库从 coding 迁移到 github ,在 CI 工具的选型上尝试了 travis-cicircle-ci, 最后决定用 Jenkins 自己搭建 CI 服务器。”

全文浏览,点击这里.

PHP 开源项目使用 Travis CI 进行持续集成

@Allo写道: “目前使用最广泛的免费 CI 工具当数Travis CI,以我的项目 EvaThumber 为例,介绍一下如何在PHP 开源项目中配合 Travis CI 进行持续集成

作为世界上最好的语言 PHP ,如何与 Travis CI 进行持续集成:D

在已有项目上构建持续集成平台

简书作者慕斯成总结了几个开源持续集成工具构建持续集成的经验,分为java 篇ios 篇android 篇,适合项目中涉及 ios 、 android 、 java 三种环境,来这里学习一下。


这期的 fir.im Weekly 持续集成实践分享就到这里。如果你也有一些关于持续集成的经验和看法,欢迎投稿给 dm[at]fir.im, 投稿有机会获得 fir.im 的限量鼠标垫和复古木质小飞机:)

fir.im

]]>
fir.im Weekly - Stanford 的 Swift 课程来了 tag:www.v2ex.com,2016-04-28:/t/275029 2016-04-28T03:36:21Z 2016-04-28T03:33:21Z Imshaha member/Imshaha 上周提过, Swift 的 Github 主页上已经有了 >>「 Port to Android 」,这周重点推荐一下 Stanford 的 Swift 课程。

Developing iOS 9 Apps with Swift

开发者@林泰前 在微博上说到:

“这大概是全球最佳的免费 iOS 教学的大学课程,教导用 Swift 编写 iOS 9 软件。”

不光是 iOS 开发者,想学 Swift 的 Android 开发者也可以看看这个课程。

除了重点推荐的这个课程外,本期 fir.im Weekly 还收录了 iOS , Android 架构、热门源码等内容,文末有最近大家都期待的 WWDC 的简明参会攻略以及一篇有趣的程序员自我定位的文章。具体如下:

读 Swift 源码,理解 Monad

这是@唐巧_boy大神在上海 SwiftCon China 大会分享的 Keynote ,将近 100 页的讲稿,只为让你更加容易理解 Monad 。下载链接: http://pan.baidu.com/s/1c0rcYy ;另外关于 Monad ,这里还有一些文字资料: http://t.cn/Rq4fwJk http://t.cn/Rqp3GiW http://t.cn/RL5pYwM

awesome-ios 资源列表

awesome-ios 就是 @唐尤华 发起维护的 iOS 资源列表,内容包括:框架、组件、测试、 Apple Store 、 SDK 、 XCode 、网站、书籍等。 Swift 语言写成的项目会被标记为 ★ , AppleWatch 的项目则会被标记为 ▲。

正确认识 APNs

“ APNs 协议在近两年的 WWDC 上改过两次, 15 年 12 月 17 日更是推出了革命性的新特性。但在国内传播的博客、面试题里关于 APNs 的答案全都是旧的、错的。”

大神@iOS 程序犭袁 为什么得出这样的结论,详情点击这里

显示或隐藏 UITableView 的多个 section

@杜维欣_分享了如何显示或隐藏 UITableView 的多个 section , GitHub 地址>>>AdoHideTableSection

用 Swift 实现的菜单下拉框

下方动图中的这个效果想必大家在大多数的 APP 中都会见到,@小码哥教育介绍了一个用 Swift 实现的优雅菜单下拉框——BTNavigationDropdownMenu,一起来看看具体的实现和封装的思想吧。

关于 Android 进程保活,你所需要知道的一切

关于 Android 平台的进程保活这一块,想必是所有 Android 开发者瞩目的内容之一。@D_clock 爱吃葱花 最近分享了关于 Android 进程保活的奇技淫巧。详情也可以看这篇长文.

Android 架构合集

@CameloeAnthony分享到: “这份合集是从各大平台上参考的 android 架构文章,数据主要参考自 InfoQ ,包含 Android 官方架构、国内各大平台架构、 MVVM & MVP & MVC 、 Clean Architecture 、 Flux 等等, Github 地址在这里

Android 流式布局 - android-flowlayout

@少年你死了 实现了一个 Android 流式布局,支持多种布局优化, 包括压缩和对齐。希望对有需要的同学能有些帮助。详情文章在这里:链接; GitHub 地址在这里:链接.

Android LoadingDrawable

dinus_developer在微博中分享:

“轻量级,高效性,复用性强。以半夜四点的夜晚为伴,推出 LoadingDrawable 系列的 Circle 系列",Github 地址在这里

初次参加 WWDC 大会的简明攻略

WWDC 16 的门票抽选开始了,旧金山时间 4 月 22 日抽检结果就会出来。喵神@onevcat这篇文章 分享了自己参加 WWDC 的一些经验,希望对你的 WWDC 之途有所帮助。

MShare 第一期技术分享会 —— iOS 专场干货

MShare 第一期技术分享会结束了, iOS 专场的 Keynote 和代码都已放到 Github: 链接,录屏视屏将会在 26 日上午放出。 MShare 会定期组织 iOS 、 Android 的技术分享活动,了解最新活动请关注微博 @孟祥月_iOS

I ’ m a boring programmer (and proud of it)

作为程序员,图书管理员、科学家、艺术家、木匠,这几种身份你更喜欢哪一个? 来看看Twitter@dankim在 Medium 上的热文,也许你会有点感触。文章传送门.


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
fir.im Weekly - 如何打造 Github 「爆款」开源项目 tag:www.v2ex.com,2016-04-21:/t/273336 2016-04-21T04:03:42Z 2016-04-21T04:00:42Z Imshaha member/Imshaha 最近 Android 转用 Swift 的传闻甚嚣尘上, Swift 的 Github 主页上已经有了一次 merge>>「 Port to Android 」,让我们对 Swift 的想象又多了一些空间。

本期 fir.im Weekly 一如往期精选了一些实用的 iOS , Swift , Android 的开发工具和源码分享,欢迎订阅!

个人品牌:如何在 Github 打造你的爆款开源项目

@Siva 海浪高 分享在gaohailang.

当我们在 Github 上抛出自己的开源项目,都希望 Repo 开源项目的开发者点赞或者加星,作者分析了自己在 Github 上最多 Star 的 5 个项目,总结出 6 个 「推广步骤」 :

英文作者>>@Richard Kim@medium

英文原文>>How To Get Hundreds of Stars on Your Github Project

轻量而强大的 Swift 颜色处理库

@Boyce_Chang整理了开源的轻量而强大的颜色处理库,纯 Swift 版。 支持从图片拾取一套主题色,类似 AppleMusic ;支持图片黑白化、对颜色的加深和变浅、生成渐变颜色等。地址>>https://github.com/boycechang/BCColor

iOS 高效添加圆角效果实战讲解

@bestswifter 比较详细的总结了 iOS 圆角效果以及如何高效实现的经验。文章传送门

滴滴出行 iOS 客户端架构演进之路

@移动开发前线 微信分享。

这篇文章是滴滴首次向外分享它的客户端架构,包括它是如何演变的,如何应对数据传输和展示挑战,以及组件化、热修复等等,全文阅读,点击这里

React Native 最佳学习项目

来自 @Android 笔记分享。

Facebook 开源了 F8 App 全套代码,包括 Android , iOS 和 Server 端,其中涉及 React Native, Redux, Relay, GraphQL 等技术,更感人的是配套了教程讲解整个 APP (包括前后端) 是怎么做出来。项目地址这里:网页链接;教程在这里:网页链接

iOS UIView Animation & CALayer Animation

@CrespoXiao 在微博上分享了@Resory学习 iOS 动画技巧的知识和示例的文章,感兴趣点击这里

TKDotSegment - 带有圆点动画的 segment

“ TKDotSegment 是一个带有圆点动画的 segment, 之前有写过这个效果但是没有封装, 今天刚好顺手封装一下.两 百多行代码, 初学者可以拿来当封装控件的参考.可以自定义圆点数量,颜色,和形状.'

作者@TBXark,Github 源码地址: https://github.com/TBXark/TKDotSegment .

Android 官方 MVP 架构示例项目解析

@移动开发前线 微信分享。

App 架构在 Android 开发者中一直是讨论比较多的一个话题,目前讨论较多的有 MVP 、 MVVM 、 Clean 这三种。开发者可以自由选择, google 在官方示例中给出了一系列不同架构的 app 实现,项目命名为:Android 架构蓝图。详情也可以看这篇文章.

RxJava 常见的使用场景总结

来自 THEONE10211024 的专栏 的分享:

“收集了 RxJava 常见的使用场景,例子简洁、经典、易懂...samples 中的例子我已经在我的博客里介绍了,想进一步了解的同学可以看这里.”

Idea / Android Studio 开源插件

@drakeet造了一个好轮子:

“ Idea / Android Studio 插件程序,可自动将乱序的布局文件进行重新属性排序并格式化,比如 style 和 android:id 必须排在前面,紧接着 layout 、 padding ,而值设定如 text 只能排在最后 ... Retrofit your Android layout XML files. 有同样强迫症和代码洁癖的可以看看这里。”

HorJKeyboardPanelSwitch

@GitHubDaily 在微博分享:“ JKeyboardPanelSwitch 一套 Android 键盘面板冲突, 布局闪动的处理方案, GitHub 地址:网页链接"

Div.io - 高级前端资源汇集

亲吻艺术 分享于稀土掘金

Div.io 上有很多前端爱好者收集整理的开源库和工具,前端 er 可以关注下。


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
fir.im Weekly - 论个人技术影响力是如何炼成的 tag:www.v2ex.com,2016-04-13:/t/270645 2016-04-13T02:34:50Z 2016-04-13T08:26:01Z Imshaha member/Imshaha 每个圈子都有一群能力强且懂得经营自己的人,技术圈也是如此。本期 fir.im Weekly 一如往期精选了一些实用的 iOS , Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和活动分享~

GitHub 中国区 Top 100 大神解密

根据 Github 公开 API 抓取地址显示 China 的用户,并依据粉丝关注排名以及属性分析,@优雅的程序员 D 罗列出『 github 中国区粉丝前 100 排名』,同时分析了他们在知乎和微博的活跃度,并对前 20 名进行了“深度挖掘”,详情见这里,看大 V 们的影响力是如何炼成。

PS :仁者见仁,智者见智。也有人建议按项目 star ,贡献度和代码质量等综合排名比较好。借用@justjavac的话来说“能进入榜单的大概有 3 种,要么技强,要么会经营,要么不仅技术能力强而且会经营",顺便附上 Github-Ranking 官方排名

面向协议的 MVVM 架构介绍

@NatashaTheRobot@Twitter 通过 在 do{iOS} 2015 上对 MVVM 进行了详细的介绍,整理了学习和使用面向协议编程的过程经验,教你使用 Swift 2.0 的特性来创建漂亮、稳定的代码。文章传送门

iOS 微信安装包瘦身

来自  WeMobileDev (微信移动客户端开发团队) 公众号分享。

“苹果规定今年 6 月提交给 Appstore 的应用必须支持 64 位, 32 位和 64 位两个架构的存在使得可执行文件增加了一倍多。安装包大小优化迫在眉睫。 Appstore 安装包是由资源和可执行文件两部分组成,安装包瘦身也是从这两部分进行。”

全文阅读去,请点击这里.

iOS 开发之最新最全的持续集成解决方案

简书作者千客写了一篇关于 iOS 持续集成的文章,利用 Jenkins(1.640) + Xcode(7.2) + Git + Fir 的持续集成解决方案,后续作者可能还会继续更新其他的解决方案。

将 iOS 的 Cocoa Touch 移植到 Android

iOS 程序一行代码不用改,却能运行在 Android 上?用 MacBook 接上一台 Android 平板和一台 iPad ,然后在 Xcode 按一个按钮,你的 Android 平板和 iPad 会同时打开一个相同的 App !MOsky 泽 在SegmentFault分享了 iOS 的 Cocoa Touch 移植到了 Android 的项目经验,点击这里查看。

Swift_100days 第二轮更新

@杜维欣_分享。

作者参照 [ 100 Days of Swift ] 100 Days of Swift - samvlu.com进行了第二轮 Swift 学习更新,代码地址:Nododo/Swift_100days.

React Native 的 iOS 图表库

@前端小工分享于稀土掘金

这个库提供了条形图,折线图,散点图,组合,饼图等 IOS-图表库组件, Github 地址>>https://github.com/Jpadilla1/react-native-ios-charts .

Airbnb 安卓客户端是如何使用 RxJava 的

RealmChina分享。

@felipecsl ( Airbnb 客户端的开发工程师),在这篇文章里讨论了 在 Airbnb 的客户端里,我们是如何采纳这些范式和技术,包括动力,实现的困难,和这一路走来的经验教训。感兴趣点击这里.

Retrofit 分析-漂亮的解耦套路

@stay4it在这篇文章中说道: “看过 Retrofit 源码之后,是因为它集诸优点于一身,并且超级解耦。你能预见的特殊需求,都能非常容易的扩展”,详情见这篇 Retrofit 分析

AndroidStudyDemo 你值得拥有

AndroidStudyDemo ,汇集了简书作者diygreen 学习 Android 的过程中所做的 Demo 项目(合集),旨在整理开发 Android 过程中所学、所获、所感,详情请看这里

Horizon - 一款可将 Android 音频可视化的库

@GitHubDaily 在微博分享:“ Horizon Yalantis 出品的一款可将 Android 音频可视化的库, 项目介绍地址:网页链接 GitHub 地址:网页链接 ”。

搜索动画设计图的整理与实现

@Android_CJJ收集了搜索动画的设计图,顺便做了下实现。 Github 地址>>https://github.com/android-cjj/JJSearchViewAnim .

16 年程序员最需要看的 9 本小书

@Siva 海浪高 分享于稀土掘金.

"这篇文章罗列的这些书籍封面其实是各种典型的反模式,不过它们真的是非常常见以至于大家都习以为常了."比如 Stack Overflow 上复制粘贴编程,简历驱动式开发,临时代码权威指南等等>>>链接.

MShare 线下沙龙第一期: iOS 专场

MShare 是由一批来自百度、微博、阿里等一线互联网公司的程序员们成立的公益性组织,不定期分享与移动技术相关的干货,包含 iOS 、 Android 、 H5 、设计相关的技术实践,第一期 iOS 专场将于 4 月 23 日开启,有兴趣的伙伴可以联系@孟祥月_iOS 同学。


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
fir.im Weekly - 如何做一个出色的程序员 tag:www.v2ex.com,2016-04-07:/t/269168 2016-04-07T02:44:18Z 2016-04-07T02:41:18Z Imshaha member/Imshaha 做一个出色的程序员,困难而高尚。本期 fir.im Weekly 精选了一些实用的 iOS , Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和有意思有质量的线下活动~

How to be a Programmer

@梦里风林 翻译了最近 github 上一个很火的工程>>>关于如何做好一个程序员,里面包含了很多技术方面的入门,进阶、高阶的分享,原地址在这里.

JSPatch 开源经验分享

@移动开发前线 微信分享。

@bang,开源项目 JSPatch 作者 。JSPatch 是 iOS App 动态更新库,引入后即可以用 JS 调用和替换原生任意方法,普遍用于动态下发脚本实时修复线上 Bug ,目前微信微博百度地图美团等 1200 个以上 App 已接入使用,从 SDK 1.2 版本开始支持脚本的灰度与条件下发。作者在此分享了开源经验,点击这里阅读。

程序员大解放音乐节

谁说程序员就该百无聊赖的编码?谁说程序员天生自带撩 bug ?对他们而言, 只有代码&音乐才是最好的解药!@野狗实时后端云 与你相约 4 月 8 日晚, 751D·Park79 罐,和痛仰 /黑豹 /GALA/理想后花园 /黑薄荷 /脑浊等乐队一起 high 翻全场! 抢票地址>>https://hacker.wilddog.com/

如何使用 Instruments 诊断 App ( Swift 版):起步

@iOS 程序犭袁在微博中说道: “ Instruments 又帮我修了个 bug ,再安利下 。《 Instruments Tutorial with Swift: Getting Started 》的作者很有心地给出了一个卡顿(主线程阻塞)的 Demo ,还教了下如何用 Instruments 检测并修复,业界良心!”

英文原版:链接

中文版:链接

UITableView 的完美平滑滚动

@iOS 大全分享。

作者阐述自己所了解的优化常识,用 UITableViews 让应用更快更流畅。这是一份不错的总结,值得一看。文章传送门.

本文由 伯乐在线 - BEAST 丨 Q 翻译;

英文出处:Alexander Orlov

ZYThumbnailTableView

@SwiftLanguage 微博分享。

“可展开型预览 TableView ,开放接口,完全自由定制。 By @潜艇_刘智艺 Zzz ”. Github 源码已抛出>>https://github.com/liuzhiyi1992/ZYThumbnailTableView

Android Log 最佳实践

@天之界线 2010 在这篇文章里一步一步实现较为实用的 Log ,文章最后还介绍了 IDEA 的超强 debug 技巧,感兴趣点击这里.

Android 速构 adapter 神器

@Usherbaby推荐了一套自己开发的列表速构 adapter 类库,全面支持 GridView ,ListView, RecyclerView 和 ExpandableListView 。 文章传送门.

Android 开源项目 - Trainer

@河南三儿 0分享了自己第一个开源项目>>>**Trainer**, Design by @MartinRGB ,很棒的效果,如果再加上具体的使用步骤也许会更好。

我的 Android 开发实战经验总结

@D_clock 爱吃葱花 把做 Android 开发以来的一些经验做了汇总,写了一篇总结,详情请看这里

SwitchButton 新增标签特性

来自@kyleduo的作品。

#SwitchButton# 目前更新了 1.4.0 版本,新增标签特性,支持在 SwitchButton 上显示开 /关的自定义标签。非常优秀的开源项目, Github 源码地址 ☞ https://github.com/kyleduo/SwitchButton

首届 Swift 开发者大会干货视频

@Swift 开发者大会 在微博分享:“首届 Swift 大会视频来了!!制作视频和字幕用了好长时间,大家久等了!八个演讲视频:链接;所有嘉宾 keynote 下载:链接.”

T 技术沙龙,做点不一样的事

T 社区@梁杰_numbbbbb和几位 iOS 大牛创办的高质量技术分享社区,每个月都会举办线下沙龙。第一期北京是起点,预计年内扩展到北京、上海、深圳、杭州四个城市。每个城市由专门的团队负责,每个城市每个月都会举办线下沙龙。感兴趣的话可以 申请加入 <t>.


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
fir.im 新版本更换了 icon,发现 icon 不能更新 tag:www.v2ex.com,2016-03-31:/t/267748 2016-03-31T15:17:34Z 2016-04-04T21:48:26Z vus520 member/vus520 也没有重新上传 icon 的地方

]]>
fir.im Weekly - 人人都需要的 IT 技能图谱 tag:www.v2ex.com,2016-03-23:/t/265701 2016-03-23T03:57:12Z 2016-03-23T07:38:01Z Imshaha member/Imshaha AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考《失控》 中说道的 “机器正在生物化,而生物正在工程化 ”。作为人类,在未来能否保全最后的智力骄傲成为一个疑问。而当下,正确敏捷地掌握生产力工具、拓展知识资源库,提高技能图谱,也许人人之必需。

闲话少说,本期 fir.im Weekly 精选了一些热转资源,希望对你有用。

StuQ 技能图谱

StuQ 技能图谱是由 @StuQ 官博发起的一个开源项目,志在汇集整理 IT 职业必备技术技能(云计算,大数据,运维,安全,开发语言, iOS ,移动测试,智能硬件等),帮助技术人梳理知识框架结构,并尝试提供学习路径和精华资源,方便技术人学习成长。 Github 地址: https://github.com/TeamStuQ/skill-map ,还在持续更新,也许你需要一份。

iOS 应用架构谈 组件化方案

@反革命攻城狮 CasaTaloyum分享。

“当我们讨论客户端应用架构的时候,我们在讨论什么?”作者这一列文章,简洁明了,案例代码与实际解说并行。感兴趣的同学不要错过-->>#iOS 应用架构谈系列#

iOS 应用架构谈 开篇

iOS 应用架构谈 view 层的组织和调用方案

iOS 应用架构谈 网络层设计方案

iOS 应用架构谈 本地持久化方案及动态部署

iOS 应用架构谈 组件化方案

优化一个 Swift 语言 Github API 第三方 SDK

[优化一个 Swift 语言 Github API 第三方 SDK ](@吕文翰_JohnLui ),是 www.reviewcode.cn 关于 Swift codereview 第一篇精彩案例,来自@吕文翰_JohnLui

CodeReview,一个专业的代码审查交流分享平台,是由@叶孤城___和其他 几位大神一起做的开发者服务。在这里,你可以提交自己的代码给大神审核,提高自己的代码质量。

不要写死!天猫 App 的动态化配置中心实践

@移动开发前线微信分享。

“不要写死,一个永恒的话题。动态化,也是一个涵盖了界面,功能,数据,配置诸多方面的一个宽泛话题。”作者@gaosboy这篇文章和大家,聊了下手机天猫在配置动态化上的心路历程。

文章传送门.

iOS 冰与火之歌番外篇 - App Hook 答疑以及 iOS 9 砸壳

@蒸米 spark上次讲解了在非越狱的 iOS 上进行 App Hook,利用这个技术,你可以在非越狱的 iOS 系统上实现各种 hook 功能( e.g., 微信自动抢红包,自动聊天机器人,游戏外挂等)。许多人问技术细节,所以又写了这篇,大家去这里内学习~

iOS 视图控制器转场详解

@唐巧_boy推荐了 @seedante 的文章。

“屏幕左边缘右滑返回, TabBar 滑动切换,你是否喜欢并十分依赖这两个操作,甚至觉得 App 不支持这类操作的话简直反人类?这两个操作在大屏时代极大提升了操作效率,其背后的技术便是今天的主题:视图控制器转换(View Controller Transition)。” 具体分析请点击这里

文章传送门 作者:seedante,神秘人士,他的 GitHub

EZAudio - iOS/OSX 上的音频可视化框架

@GitHubDaily分享的一个可视化音频框架, GitHub 地址:https://github.com/syedhali/EZAudio .

RxJava 与 Retrofit 结合的最佳实践

@代码家 推荐tough1985http://gank.io/ 的文章。

如果你对 RxJava 不熟悉请先看给 Android 开发者的 RxJava 详解这篇文章;如果你对 Retrofit 不熟悉就先看Retrofit 官网。作者tough1985是从下面几个角度去思考 RxJava 与 Retrofit 结合的:

全文浏览,点击这里.

大型项目 Gradle 的常用库和版本管理

随着 Android 开发的成熟, 模块越来越多, 引入库也随之增加, 需要统一管理这些库和版本号. @SpikeKing根据自己的开发经验, 写了一篇文章介绍使用 Gradle 参数配置实现库的规范管理,详情点击这里

30 条 Android 开发建议

@iam_wingjay@稀土圈 掘金分享。文章从实践角度,结合最新的 android 开发技术,罗列并分析了若干条非常有用的开发建议,无论菜鸟或大神都值得一读,懂得借鉴他人经验的开发者才能少走很多坑。感兴趣点击这里.

从零开始的 Android 新项目

@翟一帆 markzhai分享。

分别写了关于 Android 新项目架构搭建和 Gradle 实践,非常实用。文章链接如下:

从零开始的 Android 新项目 1 - 架构搭建篇

从零开始的 Android 新项目 2 - Gradle 篇

快速实现 Android 毛玻璃虚化效果

“恰到好处的虚化效果能很好的改善用户体验,而且也能让你的 app 显得更加优雅。”@iam_wingjay第一次对 Android 虚化效果进行了性能分析。文章传送门.

BottomBar - 实现底部导航的自定义控件

@泡在网上编代码 分享了一个用来实现底部导航的自定义控件。非常赏心悦目,已抛出 Github 源码☞https://github.com/roughike/BottomBar .


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
BugHD for Javascript 上线,轻松收集前端 Error tag:www.v2ex.com,2016-03-17:/t/264108 2016-03-17T02:18:21Z 2016-03-17T06:43:53Z Imshaha member/Imshaha 从收集 APP 崩溃信息到全面收集网站出现的 Error ,现在的 BugHD 变得更加强大。目前,BugHD JS Error 收集功能 已正式上线,前端 er 们不用再面对一堆 Bug 无处下手。

下面,我们一起来看下有可能带给你的「惊喜」~

一、实时收集网站的 JS 错误

首先,先添加项目至 BugHD ,然后添加 JS 代码,即可全面实时掌控用户使用网站时发生的错误信息。详情见相关的 Javascript 配置文档.

二、灵活自定义地收集设备错误信息

BugHD 除了标准化的信息收集,同样支持灵活的自定义信息。

三、直观地展现错误数据分析

BugHD 从时间设备分布两个维度,更加直观的展示错误的分布情况。

例如,根据过去两周每天的错误发生次数,我们可以判断错误发生的变化趋势;

针对错误的浏览器 & 操作系统的分布状况,我们对不同浏览器 & 操作系统进行适配;

四、详尽的错误列表分析

在错误列表页展示每次出错的详细信息,通过筛选对比,可分析不同的因素对错误产生的影响。

五、丰富的 WebHook 集成消息通知

支持多种第三方工具和自定义 WebHook ,将错误收集集成到你的工作流中,高效快速地定位错误信息。

最后,欢迎大家奔走相告,给予我们真实有力的反馈:)


以上为近日的更新日志,和以前一样,要表扬或者吐槽,随时联系我们 :)

fir.im

]]>
fir.im Weekly - 不能错过的 GitHub Top 100 开源库 tag:www.v2ex.com,2016-03-15:/t/263695 2016-03-15T09:22:25Z 2016-03-15T09:38:00Z Imshaha member/Imshaha 好的工具&资源,会带来更多的灵感。本期 fir.im Weekly 精选了一些实用的 iOS , Android 的使用工具和源码分享,还有前端、 UI 方面的干货。一起来看下:)

Swift 开源项目精选

@SwiftLanguage分享。

“基于《 Swift 语言指南》开源项目收录,做了一个甄别、筛选,并辅以一句话介绍。来源 GitHub : ” Github 的 Swift 库已尽收眼底,简洁明了,还在不断更新中正在学习 Swift 的同学不要错过-->>Swift 开源项目精选.

xcbuild - Facebook 出品的开源 App 构建工具

xcbuild 是 Facebook 出品的开源 App 构建工具,能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 。 Github 地址--> https://github.com/facebook/xcbuild .

Swift 烧脑体操

@唐巧_boy 出了一系列的 [ Swift 烧脑体操] 的文章,文如题目,涨姿势必备,文章列表如下:

Swift 烧脑体操(一) - Optional 的嵌套

Swift 烧脑体操(二) - 函数的参数

Swift 烧脑体操(三) - 高阶函数

Swift 烧脑体操(四) - map 和 flatMap

GitHub Top 100 的 Android & iOS 开源库

作者@G 军仔整理了一份旨在帮助 Android 初学者快速入门以及找到适合自己学习的资料, GitHub 地址:Android_Data ,@李锦发 之前也整理了 iOS 版, GitHub 地址:trip-to-iOS.

Injection for Xcode :成吨的提高开发效率

@没故事的卓同学强烈推荐一个 Xcode 高端必备插件:Injection Plugin for Xcode.不用重新启动应用就可以让修改的代码生效。更多好玩的功能,点击这里

盘点分析 Android N 的新特性

Android N 预览版来啦!支持 Java8 了,支持多窗口了,支持更多新特性了! @代码家连夜写了一篇从开发者角度解析 Andorid N 的文章,感兴趣点击这里.

Android 界面性能调优手册

界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。@Vince 蔡培培 整理了自己的经验和分享,详情请点击这里

Android APK 终极瘦身 21 招

@移动开发前线分享。

作者@冯建 V前不久写过一篇《 APK 瘦身实践》,在公司的要求下,将 6.5M 的 Apk 硬生生的减到不到 4M (已开启 minifyEnabled 等常规压缩手段),后面他根据反馈又整理出这篇 Apk 瘦身指南,对 Android 开发者更具指导意义。

文章传送门.

ZFPlayer 视频播放器 源码

@任子丰写的视频播放器—— ZFPlayer ,基于 AVPlayer ,支持横屏、竖屏(全屏播放还可锁定屏幕方向),上下滑动调节音量、屏幕亮度,左右滑动调节播放进度等等, ZFPlayer 荣登当日 github 排行榜。 Github 地址: https://github.com/renzifeng/ZFPlayer

WaveLoadingView - 圆形波浪进度指示器类

开发者@潜艇_刘智艺 Zzz 将 WaveLoadingView 圆形波浪进度指示器开源在 Github 上,配置参数丰富点击这里查看。

JSPatch - APP 动态更新服务平台

@bang 分享的 JSPatch 平台,现在开放注册。可以实时修复 iOS App 线上 bug ,一键让你的 APP 拥有动态运营能力。地址见: http://jspatch.com/ .

BugHD for Javascript - 轻松收集前端 Error

从收集 APP 崩溃信息到全面收集网站出现的 Error , BugHD 变得更加强大。前端 er 们不用再面对 一堆 Bug 愁容满面,可以来这里看看。

Admire.so - 一个设计资源导航网站

Admire.so 钦慕网,是一个设计资源导航网站,还有一些前端 er 会用到的资源。每天会添加一个新的链接,为你的创意、你的设计多一些灵感。


这期的 fir.im Weekly 就到这里,欢迎大家分享更多的资源。

fir.im

]]>
fir.im Weekly - 如何愉悦地进行持续集成 tag:www.v2ex.com,2016-03-09:/t/262116 2016-03-09T02:43:52Z 2016-03-09T04:51:37Z Imshaha member/Imshaha 持续集成是一项“一次配置长期受益”的投入,让开发、测试、生产环境的统一变得更加自动高效。

本期 fir.im Weekly 收录了关于 Android 、 iOS 持续集成的最新实践分享,也有一些开发工具、源码和 UI 动画的分享。

iOS 搭建 CI 持续集成环境

@大慈大悲大熊猫  写的这篇文章总结了自己在 iOS 下的自动化打包,搭建可持续集成环境的实践过程,选择方案是 Jenkins+ Gitlab/Github+Xcode+Fir 。文章传送门.

对比学习下, @宣 X_x的这篇文章,用 Jenkins+GitHub+fir-cli 搭建持续集成环境,看看哪个更适用于你。

使用 DaoCloud 与 FIR.im 为 CodingAndroid 项目开启持续集成的尝试

@痕迹 BLANK  把持续集成环境搭建在 DaoCloud 上,通过几步就可以实现 CodingAndroid 项目自动提交,自动编译发布测试包到 fir.im 上。这是一套很新鲜的玩法,感兴趣地可以尝试一下,文章地址☞http://www.jianshu.com/p/a6ebb0e0c5ae .

icon-font-for-multiple-platforms

@廖祜秋 liaohuqiu_秋百万分享。

“开源一个项目。我们经常会在项目中使用 Icon Font ,比如 Font Awesome 。最近做一个项目,你可以自己在 Sketch 中画图标,生成字体文件,然后在 Web , Android , iOS 等各个平台中使用。项目配有简单明了的各个平台下的例子。” Github 地址点击这里

MVVM with ReactiveCocoa

@雷纯锋 2011写了一篇新文章《 MVVM with ReactiveCocoa 》,先从理论出发介绍了 MVC 到 MVVM 的演进过程;然后介绍了 RAC 在 MVVM 中的两个使用场景;最后从实践的角度,介绍了一个使用 MVVM 和 RAC 开发的开源项目 MVVMReactiveCocoa 。 Github 已抛出源码,地址见这里

Swift 服务端编程: Perfect 项目上手指南

@移动开发前线分享。

“ Swift 让 iOS 开发者有了制霸全栈的希望,连 IBM 都出了一个 Swift 的 Web 服务端程序 Kitura ,不过要数他们的鼻祖,还得算 Perfect 项目,它甚至在 Swift 开源之前就发布了。就让本文的作者来带你看看 Swift 在服务端是如何运行的。”

文章传送门.

用 Swift 搭建数据驱动型 iOS App 架构

@愚公编程 MrPeak写了一篇用 Swift 搭建数据驱动型 iOS App 架构的文章,有完整的 Demo 代码,地址见这里.

Cocoapods 的系列教程

@叫什么都不如叫 Pluto-Y整理了一些关于 Cocoapods 的系列教程,详情链接如下:

Cocoapods 系列教程(一)——入门

Cocoapods 系列教程(二)——开源主义接班人

Cocoapods 系列教程(三)——私有库管理和模块化管理

React-native-gitfeed ,实用简洁的 github 客户端

@Sayalittlesomething在微博上分享
“ react-native-gitfeed 开源了。请允许我自信(不要脸)的说,可能是目前最实用简洁的 github 客户端了。” Github 地址: https://github.com/xiekw2010/react-native-gitfeed ; iOS 版: http://t.cn/RbFQP4r ; android 版:http://t.cn/RGOEwRx

令人惊讶的图片加载库系列: Glide

@void_ouwenjie@稀土掘金分享了傅圆的博客的文章;

“ Glide ,就像 Picasso ,可以从多个源去加载和显示图片,同时也兼顾缓存和在做图片处理的时候维持一个低内存消耗。它已经在 Google 官方 APP (如 Google 2015 开发者大会的应用程序)中使用了,就和 Picasso 一样受欢迎。在这个系列中,我们要探讨 Glide 和 Picasso 的不同和优势。"

文章地址:Glide - 开始!

译者注原文: Glide — Getting Started

开源的 Material Design 豆瓣客户端

汤奇 V微博分享了开源的 Material Design 豆瓣客户端, Github 地址: https://github.com/DreaminginCodeZH/Douya .

更优雅的 Android 发布自动版本号方案

来自@Android 笔记的分享。

“如果您的项目是用 Git 管理的,并且恰巧又是使用 Gradle 编译(应该绝大部分都是这样的了吧?),本文试图找到一种更加优雅的自动版本管理方法。”

点击这里,浏览全文。

用 Swift 仿写微信客户端—— TSWeChat

@来海龙 用 Swift 仿写了一下微信客户端,完成度还不够高,后续会慢慢添加,有兴趣的可以看下, Github 地址: http://t.cn/RGYg9CO

RecyclerViewWithHeaderNewPractice

@drakeet在微博上分享了实现新的动画:

“ GitHub 开源了一种新的 Header View + RecyclerView 实现方式,使用 CoordinatorLayout 把 header 抽离出 RecyclerView ,并做到上下滑联动,这样 Java 层代码就能简单和简洁很多,更便于刷新和响应,也不用写多 item view type 逻辑。” Github 源码已抛出,地址见这里.


以上是本期fir.im Weekly ,如有好的资源,欢迎分享给我们。

fir.im

]]>
fir.im Weekly - 一切从知识重构开始 tag:www.v2ex.com,2016-02-29:/t/259963 2016-02-29T10:06:32Z 2016-02-29T10:48:14Z Imshaha member/Imshaha 一年之计在于春,大自然开始了新元素的重构。你的知识库是否也该重构更新呢?

本期 fir.im Weekly 包含最新的 Android 、 iOS 开发工具、源码和好玩的 UI 动画分享,希望对你有用。

Swift 性能探索和优化分析

@onevcat 在这篇文章分析了使用 Swift 进行 iOS/OS X 开发时性能上的考量和做法,也结合自己这一年多来使用 Swift 进行开发的经验,给出了相对应的解决方案。

正在学习 Swift 的开发 er ,来这里看看.

iOS 知识体系重构

代码需要重构,自己的知识体系也需要重构!@O_oYangsc 年后第一次知识重构,更新了关于 iOS 方面的文章,《 iOS 网络七层模型&&网络数据包》 《 iOS 的 TCP/IP 协议族剖析&&Socket 》 《 iOS Reactive Cocoa 的常见用法》 《 iOS 函数式编程 && 响应式编程概念》 《 iOS Block 原理和内存中位置》 《 iOS 内存分配与分区》 等等,全部见简书#深入浅出系列#链接

话谈 iOS 目录结构的划分

《话谈 iOS 目录结构的划分》,是 www.reviewcode.cn 最新一期(第九期的) codereview 精彩案例,来自@lzwjava 。

CodeReview,一个专业的代码审查交流分享平台,是由@叶孤城___和其他 5 个大神一起做的开发者服务。在这里,你可以提交自己的代码给大神审核,提高自己的代码质量。

MLeaksFinder :精准 iOS 内存泄露检测工具

来自@bang的团队分享。

“ MLeaksFinder 是一款 精准 iOS 内存泄露检测工具,能够自动地检测 UIViewController 和 UIView 相关的对象,以后会索覆盖更广的情况,提供更全面的检测,包括网络层,数据存储层等等。详情见这里.”

Swifton - Swift on Rails 

@图拉鼎 分享了 Swift on Rails 的 Web 框架—— Swifton ,配图很有亮点。 Github 地址: https://github.com/necolt/Swifton
.

宝库 iOS 开发笔试题

@标哥 Jacky整理了各种各样五花八门的 iOS 面试题,详见链接,顺便说下标哥的技术博客里也有更干货的东西,比如即时通讯常用第三方库这篇。

携程 Android 动态加载解决方案—— DynamicAPK

@移动开发前线分享。

“携程无线基础团队介绍它们已经开源的 Android 动态加载解决方案 DynamicAPK ,分享了介绍 Android 平台插件式开发和动态加载技术的原理和实现细节,移步 GitHub 开源项目DynamicAPK。”

5 个顶级 Android 开源库

@稀土圈翻译完成,各位安卓同学可以来看看这五个开源库:Retrofit、 DBFlowGlideButterknifeDagger 2,文章传送门.

原文链接 : Top 5 Android libraries every Android developer should know about - v. 2015

原文作者 : Infinum

译文出自 : 掘金翻译计划

译者 : Kassadin
校对者: xiuweikang lihb

RecyclerView 技术栈

“随着 2014 年 Google IO 的召开,Android L Preview版随之发布,带来了两个全新的 View 控件:RecyclerViewCardView。这篇文章将重点介绍RecyclerView和如何使用,它有许多内部类和接口。”

链家网的一次技术分享,Rx 小鄧子并整理了 Demo + Article + PPT ,点击这里浏览。

Github 地址: https://github.com/SmartDengg/RecyclerViewingg

简书文章链接:http://www.jianshu.com/p/16712681731e

Image Cropping Layout

@小小芝士蛋糕分享了自己第一个开源项目,写开源项目是磨练代码质量的最快途径。 Github 源码地址: https://github.com/yulu/crop-image-layout

PeekAndPop —— 模仿 iOS 中 3D Touch 效果的库

@泡在网上编代码 分享了一个安卓动画—— PeekAndPop , 模仿 iOS 中 3D Touch 效果的库,因为安卓本身不支持 3D Touch ,所以事件的触发是用长按点击来替代。 Github 源码已抛出: https://github.com/shalskar/PeekAndPop

创建安卓 app 的 30 个经验教训

@JtdBlog微博分享的 [创建安卓 app 的 30 个经验教训] ,看看是否对你有所启示。

英文原文:Building Android Apps  —  30 things that experience made me learn the hard way

酷炫的 LoadingView

@Yellow5A5在微博上说道:
“和同学完成了这个酷炫的 LoadingView ,灵感来自于 Android M 的开机动画,代码开源地址: https://github.com/TomWithJerry/CoolAndroidAnim.


以上是本期fir.im Weekly ,如有好的资源,欢迎分享给我们。

fir.im

]]>
fir.im Weekly - 2016 开年技术干货大合集 tag:www.v2ex.com,2016-02-22:/t/258176 2016-02-22T03:41:07Z 2016-02-22T05:36:04Z Imshaha member/Imshaha 开年上班,北上广的技术 er 陆续重返“人间”。看到别人已返工写代码,竟然有种慌慌的感觉(ง •̀_•́)ง

勤奋好学如你,fir.im weekly 送上最新一波技术分享供你 “品味”……

给 iOS 开发者的 Sketch 入门教程

来自@CocoaChina的翻译整理。

Sketch 是一个让程序汪能快速上手的工具。在本教程中,你可以学到: 

教程传送门.

原文:Sketch Tutorial for iOS Developers

iOS 开发证书"此证书的签发者无效"解决方法

@Danny_吕昌辉在这篇文章说到:
“过完年,发现苹果的系统安全证书过期导致很多用户的开发证书用不了。苹果给出了新的安全证书供用户下载,查证后提供了自己的解决办法。有同类问题的人,来这里看看.

硅谷面试 iOS 的知识点整理

@故胤道长整理了自己在硅谷面试 iOS 的知识点,以 Objective-C 为主,希望对你有所帮助。 PDF 下载地址: http://vdisk.weibo.com/s/asyjNWPGshkfQ

自学 iOS - 30 天 30 个 Swift 项目

@Allen 朝辉记录了自己从 2016 年 1 月 5 日到 2 月 5 日的 Swift 自学笔记,搜刮了 Youtube Appcoda HackwithSwift DevelopersAcademy iOSCreator GrokSwift 等等几乎所有的 Swift 教程。有 GIF ,有源码,适合 Swift 初学者。

文章地址见 这里

Github 地址: http://t.cn/RbuV8oh .

iOS 推送之本地推送&远程推送

@iOS 大全推荐的@陈思 Siming 的文章,此文除了讲解远程推送相关的基本知识外,涉及一些推送相关的奇淫技巧,同时也推出了姊妹篇: iOS 推送之本地推送( iOS Notification Of Local Notification ),详见链接。

iOS 推送之本地推送( iOS Notification Of Local Notification )

iOS 推送之远程推送( iOS Notification Of Remote Notification )

Swimat —— 一键格式化 swift 代码

@王哲夫分享。

Swimat ,是一款 Xcode 插件,帮你一键格式化 swift 代码。 Github 地址点这里.

Android 逆向分析之 APK 的打包与安装

@宅一帆 markzhai 同学分享了关于 Android 逆向分析—— APK 的打包与安装经验。

“一个 android 工程是怎么变成 apk 的, apk 是怎么跑到设备上,而最后又是如何安装的呢?作为一个有好奇心的工程师,肯定要对这些过程有了解,这次就来介绍一下整个过程背后发生了什么 ”

全文浏览,点击这里.

史上最详细的 Android StudioTips

@googdev推荐,@写代码的猴子翻译分享的 Android Studio 小技巧合集,分为 AS 技巧合集「常用技巧篇」http://t.cn/RGi4B2L, AS 技巧合集「编码技巧篇」http://t.cn/RGi4B2y AS 技巧合集「调试技巧篇」http://t.cn/RGi4B2x

翻译文章: Android Studio 小技巧合集

原文链接: Android Studio Tips by Philippe Breault

原文作者 : Philippe Breault

Android App 沉浸式状态栏解决方案

@写代码的猴子出品。

“伴随着 Android 5.0 发布的 Material Design ,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material design 设计原则,不再是以前拿着 iOS 设计稿,做着 Android 开发。本文就其中的沉浸式状态栏这一特性,描述其兼容到 4.4 的实现,以及一些使用中的小细节。”

文章传送门.

Android 上的屏幕录像如何做成 GIF

@廖祜秋 liaohuqiu_秋百万 分享了 Android 上的屏幕录像如何做成 GIF 的使用工具,各位安卓同学可以来这里看看,同时@Tomcat 的猫也推荐了一款 Mac 端神器——gifgrabber,可以试试。

私人珍藏的 Chrome 插件,吐血推荐

@googdev原创分享,教你如何用正确的姿势使用 Chrome ,装逼利器, GitHub 三件套,其中也有一些提升 Android 开发效率必备的工具,地址-->>点我


以上是本期 fir.im weekly ,祝大家开工大吉。

fir.im

]]>
Fir.im 挂了 tag:www.v2ex.com,2016-02-08:/t/255808 2016-02-08T02:50:38Z 2017-01-26T11:34:30Z TangMonk member/TangMonk

春节期间打算用 fir 来推广。。没想到挂了

@Imshaha

]]>
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86