<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[马克宅只是个码农]]></title><description><![CDATA[http://zhaiyifan.cn]]></description><link>https://blog.youkuaiyun.com/marktheone</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; marktheone]]></copyright><item><title><![CDATA[PWA 渐进式实践 (3) - 用户体验 & 性能]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/54891494</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/54891494</guid><author>marktheone</author><pubDate>Mon, 06 Feb 2017 12:00:41 +0800</pubDate><description><![CDATA[为了让我们的网站能达到更高的评分（咦，为什么变成刷分了），我们最后需要进行用户体验和性能的优化。]]></description><category></category></item><item><title><![CDATA[PWA 渐进式实践 (2) - Service Worker]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/54891468</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/54891468</guid><author>marktheone</author><pubDate>Mon, 06 Feb 2017 11:58:36 +0800</pubDate><description><![CDATA[通过完善 Service Worker，我们的评分已经嗖嗖嗖上了80，达到了83分。]]></description><category></category></item><item><title><![CDATA[PWA 渐进式实践 (1) - Lighthouse in Action]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/54891463</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/54891463</guid><author>marktheone</author><pubDate>Mon, 06 Feb 2017 11:57:53 +0800</pubDate><description><![CDATA[本篇中我们大致看到了哪些问题导致了我们的 webapp 的 PWA 评分不够高，下一次，我们会开始逐个开刀，解决这些问题。对本话题感兴趣的朋友，也可以使用 Lighthouse 插件，对自家的网站或者其他网站来评评分，看看做得有多好（其实我们的**66分**真的已经挺高了）。]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目11 - 组件化实践（1）]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/54891373</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/54891373</guid><author>marktheone</author><pubDate>Mon, 06 Feb 2017 11:49:23 +0800</pubDate><description><![CDATA[我个人一直是比较反感黑科技的，其中首当其冲的就是 插件化 以及 保活。作为一个开发者，除了研究技术，提高自己以外，是否应该考虑些其他东西呢？尤其是我们这些嵌入式系统（客户端）开发者，在依赖、受哺于系统生态下，是不是应该考虑一下，怎么反哺？怎么去更好地维护这个生态环境，而不是一味破坏、消耗它呢？]]></description><category></category></item><item><title><![CDATA[记一次 Data Binding 在 library module 中遇到的大坑]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/54891360</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/54891360</guid><author>marktheone</author><pubDate>Mon, 06 Feb 2017 11:48:05 +0800</pubDate><description><![CDATA[使用 Data Binding 也有半年多了，从最初的 setVariable，替换 findViewById，到比较高级的双向绑定，自定义 Adapter、Component，查看源码了解编译、运行流程，也算是小有成果，且没有碰到 Data Binding 本身实现上的问题。然而，最近在一次重构组件化（见 MDCC 上冯森林的《回归初心，从容器化到组件化》）的过程中，碰到了一个比较严重的 BUG。]]></description><category></category></item><item><title><![CDATA[React Native 0.31 Bundle 预加载优化]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52275154</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52275154</guid><author>marktheone</author><pubDate>Mon, 22 Aug 2016 11:14:29 +0800</pubDate><description><![CDATA[使用 React Native 开发混合应用的过程中，我们在打完 bundle 进 release 包后，会发现第一次进入页面（React 的 Activity）会有一个短暂的白屏过程（在真机上近 1秒，在模拟器上比较快，在 200毫秒 左右），而且在完全退出后再进入，仍然会有这个白屏。仔细查看加载过程（其实猜猜都能知道）后可以发现，这个过程就是在加载我们的 js bundle，通常即便是一个小的]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目10 - React Native & Redux]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52238413</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52238413</guid><author>marktheone</author><pubDate>Thu, 18 Aug 2016 10:28:20 +0800</pubDate><description><![CDATA[本篇来讲讲 React Native 和 Redux，和其他一上来就啪啪啪丢上来一堆翻译的东西不同，本文会从简单的例子入手，让大家能快速地明白 React Native 是什么，Redux 和常见的 MVC、MVP 等有什么区别，怎么去组织一个 Redux 架构的 React Native 项目。为避免大家还没入门就放弃，下一篇才会从我们项目中的实践出发，讲讲更复杂的应用场景。]]></description><category></category></item><item><title><![CDATA[从什么都不懂开始(四)——Git掌握时空之力]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52062888</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52062888</guid><author>marktheone</author><pubDate>Fri, 29 Jul 2016 11:15:21 +0800</pubDate><description><![CDATA[看到这篇标题是不是有种很叼的感觉！？在Git的工作流程中，不仅能往前走，当然也可以后退。不仅能提交 
文件，当然也能删除或者修改了。而且你想回到哪个提交节点就回到哪个提交节点， 
是不是觉得自己体内的洪荒之力快抑制不住了？别急，容我短话长说，一一道来。在这真正讲这些也需要普及一个概念：工作区和暂存区工作区和暂存区如果有同学对这些概念感觉很懵逼，也没什么关系，不影响你的使用，只要扫一眼接下来的两个标题]]></description><category></category></item><item><title><![CDATA[Data Binding Component详解 - 换肤什么的只是它的一个小应用！]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52047667</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52047667</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 17:30:57 +0800</pubDate><description><![CDATA[上一篇从零开始的Android新项目8 - Data Binding高级篇中，我们提到了使用Component来进行注入，以方便进行测试的功能，有一些朋友说写的不够清楚，还有些疑惑，所以本篇就来详细说说Component。作为例子，我们的实现目标是使用Data Binding Component，让应用全局的TextView的文本都能随时变成test，还能进行全局换肤。]]></description><category></category></item><item><title><![CDATA[从什么都不懂开始(三) 实践带你飞之Branch操作]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52047188</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52047188</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 16:54:55 +0800</pubDate><description><![CDATA[本篇将介绍一下Git中经常需要操作到的东西，以及项目中运用到的场景，会稍微带一点基础知识，笔者觉得阮一峰老师的Git入门讲的非常到位了，我就不班门弄斧了，就讲一下项目中遇到的一些情况。若是Git大牛就可以点击返回或者关闭啦~ 
此文多图预警~用流量的童鞋注意哦。Repository介绍在版本管理中，Repository翻译成中文就是仓库的意思，每个提交到本地，或者push到远程服务器的Project]]></description><category></category></item><item><title><![CDATA[从什么都不懂开始(二)——创建Project提交到Github需要做什么]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52047165</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52047165</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 16:53:23 +0800</pubDate><description><![CDATA[背景接上篇，在理解什么是git后，总需要动手操作一下，还是那句话~针对Git很熟练的大牛们可以点击返回或者关闭啦~在看这篇文章之前你得准备好什么？1、注册好的你Gihub账号 
2、在setting里的SSH里有你电脑的SSHKey了。 
3、准备好你自己需要放在git的文件夹 
如果不会以上1、2两点的同学，请自行Google或者Baidu。将你的Project初始化成GitProject以下将以]]></description><category></category></item><item><title><![CDATA[从什么都不懂开始(一)——什么是Git]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52047155</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52047155</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 16:52:11 +0800</pubDate><description><![CDATA[前言背景用了Git蛮久了，也没有怎么系统地学习过，大部分情况也是比较依赖编译器，所以想从头梳理一下Git基础，就想写一篇从没用过Git的人也能看懂，并能入门，再渐渐成长。 
一些运用git很熟练的大牛们可以点击返回或关闭啦~简介在了解Git之前，你得先了解什么是版本控制系统，如果不知道什么是版本控制系统，你可以先简单的理解成“可以追踪每次文件修改的系统，如果你某次修改出错，想回退，那么可以回退到某次]]></description><category></category></item><item><title><![CDATA[从零创建项目实践]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52047141</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52047141</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 16:51:11 +0800</pubDate><description><![CDATA[背景大帅MarkZhai的从零系列火遍大江南北，奈何大帅最近要做爸爸了，忙得没有时间出demo，文章中一些细节部分没有上代码，一些粉丝肯定看的不知所措，所以做小弟的就替大哥为大家整理了个demo。接下来会结合大帅的理论为大家讲述一下如何实践，在本文的最后会附上Demo地址。关于本实践的说明本实践是为了方便，调用github的api，抓取了我们moduth组的repo热身运动先要补充一点知识的细节才能]]></description><category></category></item><item><title><![CDATA[微信热修复开源库 Tinker imitator 原理篇]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044556</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044556</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 13:06:24 +0800</pubDate><description><![CDATA[参考资料:微信Android热补丁实践演进之路
  简单来说，在编译时通过新旧两个Dex生成差异patch.dex。在运行时，将差异patch.dex重新跟原始安装包的旧Dex还原为新的Dex。这个过程可能比较耗费时间与内存，所以我们是单独放在一个后台进程:patch中。为了补丁包尽量的小，微信自研了DexDiff算法，它深度利用Dex的格式来减少差异的大小。它的粒度是Dex格式的每一项，可以充分利]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目9 - 前端用后台接口设计]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044433</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044433</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:39:36 +0800</pubDate><description><![CDATA[这回来讲讲后台接口的设计。可能有同学会觉得后台的接口和我们大前端开发有什么关系？试想一下，在碰到一些不合理的接口设计的时候，你们开发是否觉得很别扭——需要为了坑爹的接口写很多脏代码引坑？甚至，这么开发出来的页面，体验也会很差？我们不是说硬无理要求后端接口按照前端业务去封装，而是说为了项目更好地发展，为了用户能有更棒的体验，应该有讨论商量的空间。一些差劲的设计，应该被拒绝。本文使用前端来指代 Andr]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目8 - Data Binding高级篇]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044425</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044425</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:37:56 +0800</pubDate><description><![CDATA[承接上篇，本篇继续讲解一些Data Binding更加进阶的内容，包括：列表绑定、自定义属性、双向绑定、表达式链、Lambda表达式、动画、Component注入（测试）等。Demo源码库：DataBindingSample。列表绑定App中经常用到列表展示，Data Binding在列表中一样可以扮演重要的作用，直接绑定数据和事件到每一个列表的item。RecyclerView过去我们往往会使用L]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目7 - Data Binding入门篇]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044420</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044420</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:37:04 +0800</pubDate><description><![CDATA[Data Binding自从去年的Google I/O发布到至今，也有近一年的时间了。这一年来，从Beta到如今比较完善的版本，从Android Studio 1.3到如今2.1.2的支持，可以说Data Binding已经是一个可用度较高，也能带来实际生产力提升的技术了。然而事实上，真正使用到Data Binding的公司、项目仍然是比较少的。可能是出于稳定性考虑，亦或是对Data Binding]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目6 - Repository层(下) Realm、缓存、异常处理]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044418</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044418</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:36:01 +0800</pubDate><description><![CDATA[承接上篇 从零开始的Android新项目5 - Repository层(上) Retrofit、Repository组装，本文继续介绍Realm、缓存，以及统一的异常处理设计。RealmRealm在移动端数据库中也算是比较有名的一款了，以其跨平台和惊人的速度而闻名。啊，对了，还有文档多。这里要黑的就是文档问题，Realm虽然乍一看文档很多，但是老实说，写的挺乱的。不过总体来说，实践和应用中感觉还不错]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目5 - Repository层(上)]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044361</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044361</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:17:07 +0800</pubDate><description><![CDATA[如期而至的Repository篇，内部实现则由Realm、Retrofit，以及内存级LruCache组成。 
Repository，顾名思义，即仓库，向上层屏蔽了数据来源和内部实现细节，不需要了解货物来源，只需要拿走就行了。由于篇幅问题，将分为上下两篇，本篇主要介绍Retrofit的应用和Repository层组装，下篇会讲解本地缓存（包括Realm和内存缓存）以及基于异常的设计。Why Repo]]></description><category></category></item><item><title><![CDATA[从零开始的Android新项目4 - Dagger2篇]]></title><link>https://blog.youkuaiyun.com/marktheone/article/details/52044338</link><guid>https://blog.youkuaiyun.com/marktheone/article/details/52044338</guid><author>marktheone</author><pubDate>Wed, 27 Jul 2016 12:12:49 +0800</pubDate><description><![CDATA[转载请注明出处
Dagger - 匕首，顾名思义，比ButterKnife这把黄油刀锋利得多。Square为什么这么有自信地给它取了这个名字，Google又为什么会拿去做了Dagger2呢（不都有Guice和基于其做的RoboGuice了么）？希望本文能讲清楚为什么要用Dagger2，又如何用好Dagger2。本文会从Dagger2的起源开始，途径其初衷、使用场景、依赖图，最后介绍一下我在项目中的具]]></description><category></category></item></channel></rss>