<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[breeze的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rainbowFactory</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rainbowFactory]]></copyright><item><title><![CDATA[SVN版本控制学习]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/80520556</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/80520556</guid><author>rainbowFactory</author><pubDate>Thu, 31 May 2018 10:38:48 +0800</pubDate><description><![CDATA[版本控制

让版本库中的任意一个文件恢复到任意一个历史版本

追溯任意代码文件的任意一行在什么时间被什么人修改过

常用版本控制




  特性
  CVS
  SVN
  GIT



  并发修改
  1
  1
  1


  并发提交（0：每个文件都有记录版本号 1：批量文件版本号）
  0
  1
  1


  历史轨迹（0：不支持更名 1：支持更名）
  0
  1
  1


 ...]]></description><category></category></item><item><title><![CDATA[iOS客户端React-Native增量更新实践]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/79262279</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/79262279</guid><author>rainbowFactory</author><pubDate>Mon, 05 Feb 2018 21:33:10 +0800</pubDate><description><![CDATA[市场上现存方案：微软的 CodePush 以及React-Native中文网的Pushy，大家可根据公司实际情况酌情选择。 
处于安全性的考虑，公司禁止向第三方平台上传源码相关文件，所以要自己动手实现。

增量更新主要实现流程 
1.使用react-native bundle 命令打包，压缩打包文件 
2.使用bsdiff生成新旧RN版本压缩文件的差异化文件patchFile 
3.客户端旧RN版]]></description><category></category></item><item><title><![CDATA[UIWebView拦截资源请求]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/79194839</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/79194839</guid><author>rainbowFactory</author><pubDate>Mon, 29 Jan 2018 15:16:00 +0800</pubDate><description><![CDATA[项目中web页埋点以加载资源文件的形式发起请求，当客户端拦截到该请求时，要求放弃发送该请求，改为客户端统计此次埋点事件。

NSURLProtocol可以拦截监听每一个URL Loading System中发出request请求，记住是URL Loading System中那些类发出的请求，如果不是这些类发出的请求，NSURLProtocol就没办法拦截和监听了。]]></description><category></category></item><item><title><![CDATA[iOS 实现react-native预加载，优化第一次加载白屏问题]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/79192237</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/79192237</guid><author>rainbowFactory</author><pubDate>Mon, 29 Jan 2018 10:26:08 +0800</pubDate><description><![CDATA[项目中存在多个react-native页面入口，每个入口使用以下方法初始化：



- (instancetype)initWithBundleURL:(NSURL *)bundleURL
                       moduleName:(NSString *)moduleName
                initialProperties:(NSDictionary]]></description><category></category></item><item><title><![CDATA[URL编码解码]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/79102895</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/79102895</guid><author>rainbowFactory</author><pubDate>Fri, 19 Jan 2018 09:29:22 +0800</pubDate><description><![CDATA[URL中有中文的时候，很容易注意到编码解码。而在URL中含有特殊字符时，编码解码通常容易被忽略。

在开发中使用^符号分割字符串，URL编码后^符号变成%5E，导致处理的业务逻辑异常。

1.URL编码

ios中http请求遇到汉字的时候，需要转化成UTF-8，用到的方法是：

NSString * encodingString = [urlString stringByAddingPercen]]></description><category></category></item><item><title><![CDATA[React Native 布局总结]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/79056982</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/79056982</guid><author>rainbowFactory</author><pubDate>Sun, 14 Jan 2018 15:44:07 +0800</pubDate><description><![CDATA[Flex Direction 
在组件的style中指定flexDirection可以决定布局的主轴。子元素是应该沿着主轴的排列方向，默认值是竖直轴(column)方向。 
flexDirection enum(‘row’, ‘column’,’row-reverse’,’column-reverse’)
row: 从左向右依次排列
row-reverse: 从右向左依次排列
column(defa]]></description><category></category></item><item><title><![CDATA[使用react-native bundle制作离线包]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78990919</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78990919</guid><author>rainbowFactory</author><pubDate>Sat, 06 Jan 2018 19:09:48 +0800</pubDate><description><![CDATA[公司项目以离线包的方式使用react-native开发。 
相关命令：



react-native bundle --entry-file index.ios.js --bundle-output ./ios/main.jsbundle --platform ios

相关参数可以使用如下命令查询：



react-native bundle -help

也可以将命令添加到package.]]></description><category></category></item><item><title><![CDATA[Python爬虫抓取最新段子发送到指定邮箱]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78802360</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78802360</guid><author>rainbowFactory</author><pubDate>Thu, 14 Dec 2017 14:35:38 +0800</pubDate><description><![CDATA[#!usr/bin/env python3
#-*- coding:utf-8 -*-'爬取糗事百科文字版段子，发送到指定邮箱'import requests, refrom email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils impor]]></description><category></category></item><item><title><![CDATA[Instrument使用总结]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78750749</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78750749</guid><author>rainbowFactory</author><pubDate>Mon, 11 Dec 2017 11:13:26 +0800</pubDate><description><![CDATA[Instruments简介 
Instruments是一个强大而灵活的性能分析和测试工具，它是Xcode工具集的一部分。 它旨在帮助您分析OS X和iOS应用程序，进程和设备，以更好地理解和优化其行为和性能。 将Instruments从应用程序开发流程开始纳入您的工作流程，可以帮助您在开发周期的早期发现问题，从而为您节省时间。 
有效的使用Instruments，你可以：
检查一个或多个应用程序或进]]></description><category></category></item><item><title><![CDATA[ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78654954</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78654954</guid><author>rainbowFactory</author><pubDate>Tue, 28 Nov 2017 14:40:47 +0800</pubDate><description><![CDATA[使用MySQL mysql-5.7.20-macos10.12-x86_64.dmg版本配置默认编码全部改为UTF-8，执行以下命令报错： 
 $ mysql -u root -p 
 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 
 
 MySQL第一次安装的密码会系统通知:]]></description><category></category></item><item><title><![CDATA[-bash: pip: command not found]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78603316</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78603316</guid><author>rainbowFactory</author><pubDate>Wed, 22 Nov 2017 14:25:54 +0800</pubDate><description><![CDATA[在安装requests模块时报错，之前Pillow就安装成功了$ pip install requests
-bash: pip: command not found查找pip路径：$ find / -name pip
~/Library/Caches/pip
$ cd ~/Library/Caches/pip
$ pip install requests]]></description><category></category></item><item><title><![CDATA[iPhoneX无导航栏页面适配]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78517354</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78517354</guid><author>rainbowFactory</author><pubDate>Mon, 13 Nov 2017 09:56:46 +0800</pubDate><description><![CDATA[原全屏适配在iPhoneX会由于安全区域的变化导致显示不全。 
解决方案如下： 
在self.view上添加一个view，剩下的视图基于该view布局，view的约束随self.view.safeAreaInsets的改变需要重置：- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after l]]></description><category></category></item><item><title><![CDATA[iOS11 使用UIKeyboardFrameBeginUserInfoKey部分场景获取键盘高度为零]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78131991</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78131991</guid><author>rainbowFactory</author><pubDate>Fri, 29 Sep 2017 11:10:25 +0800</pubDate><description><![CDATA[业务场景中需要在键盘弹起后重新布局，在review代码时发现收到UIKeyboardDidShowNotification通知时是用如下方式获取键盘frame： 
  
 CGRect keyboardFrameBeginRect = [[[notification userInfo] valueForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]]]></description><category></category></item><item><title><![CDATA[iOS11 自定义UIBarButtonItem显示异常解决方案]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78053641</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78053641</guid><author>rainbowFactory</author><pubDate>Thu, 21 Sep 2017 16:26:01 +0800</pubDate><description><![CDATA[iOS11之前：    self.leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.leftButton addTarget:self action:@selector(leftDrawerButtonPress:) forControlEvents:UIControlEventTouchUpInside];]]></description><category></category></item><item><title><![CDATA[使用React Navigation Demo执行出错：./index.ios.js:Unexpected token]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/78021902</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/78021902</guid><author>rainbowFactory</author><pubDate>Mon, 18 Sep 2017 17:51:24 +0800</pubDate><description><![CDATA[项目部分需求开始尝试使用react-native，然后就开始在React Native 中文网上学习基础知识。 
在使用React Navigation的Demo时模拟器一直出现姨妈红什么的最烦了~ 
 
在使用WebStorm时发现有报错： 
 
要是能像Xcode一样详细就好了~在ES6标准中export default命令其实只是输出一个叫做default的变量，Demo中default后面又]]></description><category></category></item><item><title><![CDATA[使用GitHub+hexo打造属于你自己的专属博客]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/77916802</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/77916802</guid><author>rainbowFactory</author><pubDate>Sat, 09 Sep 2017 17:59:58 +0800</pubDate><description><![CDATA[项目部分需求开始尝试使用react-native，然后就开始在React Native 中文网上学习基础知识。 
在使用React Navigation的Demo时模拟器一直出现姨妈红什么的最烦了~ 
 


在使用WebStorm时发现有报错： 
 
要是能像Xcode一样详细就好了~

在ES6标准中export default命令其实只是输出一个叫做default的变量，Demo中defau]]></description><category></category></item><item><title><![CDATA[iOS部分页面横竖屏解决方案]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/73899036</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/73899036</guid><author>rainbowFactory</author><pubDate>Thu, 29 Jun 2017 14:33:37 +0800</pubDate><description><![CDATA[系统支持横屏顺序
默认读取plist里面设置的方向（优先级最高）等同于Xcode Geneal设置里面勾选
application window设置的级别次之
然后是UINavigationcontroller/UITabbarController
级别最低的是viewcontroller
(注意Xcode Geneal设置里面没有勾选的方向viewcontroller强制旋转到该方向会]]></description><category></category></item><item><title><![CDATA[iOS crash报告符号化，.ips文件分析]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/73332735</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/73332735</guid><author>rainbowFactory</author><pubDate>Fri, 16 Jun 2017 16:07:51 +0800</pubDate><description><![CDATA[项目中一部分测试是外包的，测试人员发现了一个偶现的bug，并把.ips文件提供给我们。
下面开始解析crash文件
1.在桌面新建一个文件夹，名字叫crash
2.将.ips文件更名为.crash文件并放到crash文件夹中
3.前往文件夹路径  /应用程序/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versio]]></description><category></category></item><item><title><![CDATA[iOS使用UIImagePickerController在相册中选择破损图crash]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/73332146</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/73332146</guid><author>rainbowFactory</author><pubDate>Fri, 16 Jun 2017 15:41:33 +0800</pubDate><description><![CDATA[复现crash场景选取破损图点击选取按钮crash，控制台输出：
*** setObjectForKey: object cannot be nil (key: croppedImage)
代理方法：


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIIma]]></description><category></category></item><item><title><![CDATA[iOS8.0+ NSMutableAttributedString在末尾换行处插入图片不显示]]></title><link>https://blog.youkuaiyun.com/rainbowFactory/article/details/73105707</link><guid>https://blog.youkuaiyun.com/rainbowFactory/article/details/73105707</guid><author>rainbowFactory</author><pubDate>Mon, 12 Jun 2017 14:29:34 +0800</pubDate><description><![CDATA[解决方案：



    NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString
alloc] 
init];

    NSMutableAttributedString *atr = [[NSMutableAttributedString
alloc]
initWith]]></description><category></category></item></channel></rss>