v2panda's blog
subtitle
2019-04-14T09:19:45.212Z
http://v2panda.com/
熊猫
pdxuzhen@gmail.com
Hexo
寻求改变习惯的方法 - 读《习惯的力量》
http://v2panda.com/2019/01/31/power-of-habit/
2019-01-31T14:50:19.000Z
2019-04-14T09:19:45.212Z
<p><img src="http://cdn.v2pd.com/xiguandeliliang.png" alt="s29451621"></p>
<p>习惯不可以被消除,但可以被替代,找到你的惯常行为并改变它。</p>
学会有目的的投入 - 读《刻意练习》
http://v2panda.com/2018/10/20/deliberate-practice/
2018-10-20T05:01:57.000Z
2019-04-14T09:19:41.036Z
<p><img src="http://cdn.v2pd.com/keyilianxi.png" alt=""></p>
<p>杰出不是一种天赋,而是一种技巧;这种技巧,你和我都可以掌握。</p>
App 常用签名设计
http://v2panda.com/2017/03/26/app-signature/
2017-03-26T08:29:22.000Z
2018-11-18T05:58:22.071Z
<h3 id="前言">前言</h3><p>一般来说,客户端 App 与服务器端是通过接口进行交互,来互相传递数据的,而为了保证数据的安全性,一般都会专门设计一个签名规则。</p>
更换网络调试工具 - Vlutr
http://v2panda.com/2016/12/25/vlutr/
2016-12-25T07:10:51.000Z
2018-11-18T05:49:55.207Z
<h1 id="前言">前言</h1><p>一年多前部署在 DigitalOcean 的<a href="http://v2panda.com/2015/11/25/network-debugging-tools/">梯子</a>越来越不稳定了,速度也越来越慢,让人难以忍受,所以决定换一个,迁移到 Vlutr 上来。本文作为记录,也供想搭小梯子的朋友们参考。</p>
<p>PS:有想使用 Vlutr 的朋友可以通过我的<a href="http://www.vultr.com/?ref=7115351-3B">邀请链接</a>注册,可以得到额外的20$。</p>
自实现 KVO
http://v2panda.com/2016/11/29/custom-kvo/
2016-11-29T13:49:12.000Z
2018-11-18T05:52:40.681Z
<h3 id="基本概念">基本概念</h3><p>KVO (Key-Value Observing) 是Cocoa提供的一种基于KVC的机制,允许一个对象去监听另一个对象的某个属性,当该属性改变时系统会去通知监听的对象。</p>
基于 MVC 的项目重构
http://v2panda.com/2016/10/31/mvc-reconsitution/
2016-10-31T14:43:00.000Z
2018-11-18T05:53:35.901Z
<h3 id="前言">前言</h3><p>最近公司的项目要更新所有界面的 UI 风格,趁此机会正好把项目重构一遍,本文主要记录重构时的一些选择和解决的问题。</p>
AFNetworking 源码阅读笔记(三)
http://v2panda.com/2016/09/30/afnetworking-3/
2016-09-30T11:52:43.000Z
2018-11-18T05:51:42.368Z
<p><img src="http://cdn.v2pd.com/afnetworking-logo.png" alt="AFNetworking"><br><a href="https://github.com/AFNetworking/AFNetworking/">AFNetworking</a> 是 Objective-C 中用于网络请求的第三方框架,我们一般使用它来封装网络请求,这篇文章记录了阅读 AFNetworking(Version 3.1.0) 源码的笔记,简单的研究了它的实现细节。</p>
AFNetworking 源码阅读笔记(二)
http://v2panda.com/2016/09/29/afnetworking-2/
2016-09-29T13:30:02.000Z
2018-11-18T05:51:27.058Z
<p><img src="http://cdn.v2pd.com/afnetworking-logo.png" alt="AFNetworking"><br><a href="https://github.com/AFNetworking/AFNetworking/">AFNetworking</a> 是 Objective-C 中用于网络请求的第三方框架,我们一般使用它来封装网络请求,这篇文章记录了阅读 AFNetworking(Version 3.1.0) 源码的笔记,简单的研究了它的实现细节。</p>
AFNetworking 源码阅读笔记(一)
http://v2panda.com/2016/09/26/afnetworking-1/
2016-09-26T12:45:41.000Z
2018-11-18T05:50:37.604Z
<p><img src="http://cdn.v2pd.com/afnetworking-logo.png" alt="AFNetworking"><br><a href="https://github.com/AFNetworking/AFNetworking/">AFNetworking</a> 是 Objective-C 中用于网络请求的第三方框架,我们一般使用它来封装网络请求,这篇文章记录了阅读 AFNetworking(Version 3.1.0) 源码的笔记,简单的研究了它的实现细节。</p>
SimpleWeather 2.0 - 基于React Native的重构
http://v2panda.com/2016/08/22/simpleweather/
2016-08-22T12:37:57.000Z
2018-11-18T05:55:18.969Z
<p>SimpleWeather 一个简单的天气应用。</p>
<p>地址:<a href="https://github.com/v2panda/SimpleWeather">https://github.com/v2panda/SimpleWeather</a></p>
<p>SimpleWeather 是我写的第一个 App,算是学 iOS 开发的第一次实践,但现在看看以前的代码,各种问题、漏洞百出,无法忍受。于是决定重构出2.0版本,这次采用 React Native 开发,算是整个重构了一遍。</p>
【译】Xcode Search the Hidden Gems
http://v2panda.com/2016/08/15/xcodesearch/
2016-08-15T12:44:08.000Z
2018-11-18T05:58:14.742Z
<p><img src="http://cdn.v2pd.com/xcodesearch_0.png" alt=""></p>
<p>作为软件开发人员,我们常常会花大量时间去阅读代码。 <a href="https://twitter.com/unclebobmartin">Robert C. Martin</a> 在他的<a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882">Clean Code</a>中说道:</p>
<blockquote>
<p>Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code.</p>
</blockquote>
<p>然而直接阅读整个代码库是不实际的,当你加入一个新项目,浏览一些开源库或着为一个大型代码库提交代码。搜索就会成为一个非常有用的工具,在这里我们将去深入了解隐藏在 Xcode 的导航器里的搜索。</p>
iOS单元测试
http://v2panda.com/2016/07/31/unit-tests/
2016-07-31T03:22:13.000Z
2018-11-18T05:57:41.842Z
<h3 id="前言">前言</h3><p>不写单元测试的程序员是不合格的,为了让自己成为一名合格的程序员,学习如何写单元测试是很有必要的,这里以Xcode集成的测试框架<a href="https://developer.apple.com/reference/xctest">XCTest</a>为例。本文首先会介绍XCTest单元测试的基础用法,然后结合具体的实例分析,最后动手写一个单元测试。</p>
SDWebImage源码阅读笔记
http://v2panda.com/2016/06/30/SDWebImage-notes/
2016-06-30T01:51:07.000Z
2018-11-18T05:54:09.411Z
<h3 id="前言">前言</h3><p><a href="https://github.com/rs/SDWebImage">SDWebImage</a>是一个图片加载库,目前在Github上已有将近14k的star了,这篇文章记录了阅读SDWebImage源码的笔记(Version 3.8),简单的研究了它的实现细节。</p>
<h3 id="流程">流程</h3><p>SDWebImage加载图片的大致流程,以UIImageView+WebCache为例。</p>
<p>1.调用基础入口方法<br><code>sd_setImageWithURL:</code>,<code>sd_setImageWithURL:placeholderImage:</code>,<code>sd_setImageWithURL:placeholderImage:options:</code>等等</p>
<p>2.进入<code>sd_setImageWithURL:placeholderImage:options:progress:completed:</code></p>
<p>3.进入<code>downloadImageWithURL:options:progress:completed:</code></p>
<p>4.调用SDWebImageDownloader下载图片<code>downloadImageWithURL:options:progress:completed:</code></p>
<p>5.调用<code>addProgressCallback:completedBlock:forURL:createCallback:</code></p>
<p>6.初始化SDWebImageDownloaderOperation<br><code>initWithRequest:inSession:options:progress:completed:cancelled:</code></p>
<p>7.缓存图片调用<code>storeImage:recalculateFromImage:imageData:forKey:toDisk:</code></p>
<p>以上方法是调用链上的主要方法,将在下文逐一解释。</p>
SimpleNote 2.0 - 用心记录文字
http://v2panda.com/2016/05/28/simplenote/
2016-05-28T10:30:57.000Z
2018-11-18T05:54:19.229Z
<p>SimpleNote是一个记录你自己的笔记应用,温暖、简约,用心记录文字,感受书写的本质。</p>
<p>地址:<a href="https://github.com/v2panda/SimpleNote">https://github.com/v2panda/SimpleNote</a></p>
<p>SimpleNote是大四实习时写的一个App,但现在看看以前的代码,各种问题、漏洞百出,无法忍受。就决定重构出2.0版本,于是在业余时间里断断续续做这个App,算是重构了一遍吧,这次也放弃写UI的方式,使用StoryBoard+xib的方式布局。</p>
APP砸壳
http://v2panda.com/2016/04/24/app-reverse/
2016-04-24T06:06:55.000Z
2018-11-18T05:52:03.186Z
<h3 id="工具">工具</h3><ul>
<li><a href="http://stevenygard.com/projects/*class-dump*/">class-dump</a></li>
<li><a href="https://github.com/stefanesser/dumpdecrypted">dumpdecrypted</a></li>
<li>一部越狱手机</li>
<li>OpenSSH(Cydia)</li>
<li>Cycript(Cydia)</li>
<li>adv-cmds(Cydia)</li>
</ul>
基于JSPatch的在线更新
http://v2panda.com/2016/03/29/hotfix-jspatch/
2016-03-29T12:21:33.000Z
2018-11-18T05:52:58.561Z
<h3 id="前言">前言</h3><p>限于AppStore的审核机制,苹果应用审核通常需要一段时间。这对某些应用开发迭代比较快的公司来说,往往上一版本还在AppStore审核,新一版本已经开发完毕了,相对于Android的当天发布来说,已经算是不能再慢了。要是正好遇上线上有bug,那么又得重新回到AppStore提交-审核-发布的流程中去,但若是十分紧要的bug,不修复会影响应用的正常使用,那么再走这个流程就显得非常慢了。以前面对这种问题往往是走加急审核,但加急审核也会有3天时间,那能不能不发布版本在线上修复bug呢?答案是有的,这里选择的方案是JSPatch。</p>
iOS搭建CI持续集成环境
http://v2panda.com/2016/02/29/buildci/
2016-02-29T15:49:05.000Z
2018-11-18T05:52:23.056Z
<h3 id="前言_Continuous_integration">前言 Continuous integration</h3><p>CI 是敏捷开发的必备,简单说就是有这样一套工具,使得开发人员做好开发和单元测试再 push 代码后就不用管了,这套工具能自动地 check 代码的变化,自动 build, 自动做集成测试和场景测试等,自动部署到生产环境。</p>
<p>本文为iOS下的自动化打包,搭建可持续集成环境,省去给测试安装新版本的时间,提高工作效率。这里选择的方案是Jenkins+ Gitlab/Github+Xcode+Fir。</p>
PDPullToRefresh
http://v2panda.com/2016/01/17/PDPullToRefresh/
2016-01-17T09:03:45.000Z
2018-11-18T05:53:58.020Z
<p>周末仿写了半糖的下拉刷新,学了两句法语</p>
<ul>
<li>C’est La Vie </li>
<li>La Vie est belle</li>
</ul>
<p>C’est La Vie 通常是用在较为消极的事情发生时,用于自我安慰或自我解嘲,鼓励自己或他人即使遇到了再大的难处,也要坦然笑对生活。鸡汤一下,开始正文。</p>
<p><img src="http://cdn.v2pd.com/2015-cheers.jpg" alt=""></p>
2015 - 开端
http://v2panda.com/2015/12/26/2015-summary/
2015-12-26T07:25:29.000Z
2018-11-18T05:54:38.114Z
<p>这一年毕业了,告别了可能是人生最自由的时光。这一年工作了,由学生成为了职业工作者。现在是26号,离本命年就剩几天了,有些忐忑,有些感悟,有些吐槽,在这里记录一下我的2015。意识流——想到哪里——说到哪里。</p>
如何仿写一个App
http://v2panda.com/2015/12/06/how-to-imitation-app/
2015-12-06T12:47:37.000Z
2018-11-18T05:56:43.329Z
<h1 id="前言">前言</h1><p>最近看到一篇文章<a href="http://www.infoq.com/cn/news/2015/11/ibireme-interview?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage">专访YYKit作者郭曜源:开源大牛是怎样炼成的</a>,其中 <a href="http://weibo.com/239801242">ibireme</a>提到了他的学习方法,一个就是大量地阅读优秀项目的源代码,另一个就是自己动手实践来尝试。这非常值得学习,对我来说,沉下心来好好写代码才是提高姿势水平的上策,Talk is cheap, Show me the code!<br>这篇blog主要记录仿写一个App的准备工作,这里以美团为例。</p>