<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jaccty的博客]]></title><description><![CDATA[ 不经一番寒彻骨，那得梅花扑鼻香]]></description><link>https://blog.youkuaiyun.com/jaccty</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jaccty]]></copyright><item><title><![CDATA[用xcode往码云上传项目]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/78665252</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/78665252</guid><author>jaccty</author><pubDate>Wed, 29 Nov 2017 14:46:56 +0800</pubDate><description><![CDATA[1、首先在码云创建账号,并且创建项目




2、创建成功以后,在点击克隆/复制按钮,复制下载链接




3、在终端中,cd到桌面,执行命令git clone ~~~
git clone 后面跟的是你刚刚复制的链接




4、命令行执行完毕之后,会在桌面下载下我们刚在码云创建的项目,打开文件夹,会有以下如图




5、然后将我们项目里的文件拖进来,一定要注意,这里我们拖进来的是项目里的文件而]]></description><category></category></item><item><title><![CDATA[整理1]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/78404225</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/78404225</guid><author>jaccty</author><pubDate>Tue, 31 Oct 2017 15:45:04 +0800</pubDate><description><![CDATA[1 @property



@property 是 readwrite，assign，atomic


在使用 @property 时， 编译器默认会进行自动 synthesize，生成 getter 和 setter，同时把 ivar 和属性绑定起来


使用 @dynamic，显式表示不希望编译器生成 getter 和 setter


protocol 中定义的属]]></description><category></category></item><item><title><![CDATA[ios——备忘__attribute__总结（一）]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/78085812</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/78085812</guid><author>jaccty</author><pubDate>Mon, 25 Sep 2017 15:36:40 +0800</pubDate><description><![CDATA[1、__attribute__一般用来设置函数属性、变量属性、类型属性等
格式：__attribute__(xxx)    xxx:即参数
官方例子：NSLog
#define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A)))
format属性可以给被声明的函数加上类似printf或者scanf的特征，它]]></description><category></category></item><item><title><![CDATA[python——深刻理解Python中的元类(metaclass)]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/77369495</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/77369495</guid><author>jaccty</author><pubDate>Fri, 18 Aug 2017 14:36:04 +0800</pubDate><description><![CDATA[英文出处：stackoverflow。
元类上篇文章已经提到了，但相信很多人对于元类的理解都不够深入，本人也一样，在Stack
 Overflow查找资料以便帮助理解。




类也是对象

在理解元类之前，你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk，这显得有些奇特。在大多数编程语言中，类就是一组用来描述如何生成一个对象的代码段。在Python]]></description><category></category></item><item><title><![CDATA[python——type()、metaclass元类和精简ORM框架]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/77368120</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/77368120</guid><author>jaccty</author><pubDate>Fri, 18 Aug 2017 12:28:48 +0800</pubDate><description><![CDATA[1、type（）函数
#type()函数既可以返回一个对象的类型，又可以创建出新的类型，
# 比如，我们可以通过type()函数创建出Hello类，而无需通过class Hello(object)...的定义：

def fn(self,name='world'):  #先定义函数
    print('Hello, %s.'%name)
#开始用type()
hello = type('Hel]]></description><category></category></item><item><title><![CDATA[Python——作用域]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/77163840</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/77163840</guid><author>jaccty</author><pubDate>Mon, 14 Aug 2017 17:03:50 +0800</pubDate><description><![CDATA[作用域

在一个模块中，我们可能会定义很多函数和变量，但有的函数和变量我们希望给别人使用，有的函数和变量我们希望仅仅在模块内部使用。在Python中，是通过_前缀来实现的。

正常的函数和变量名是公开的（public），可以被直接引用，比如：abc，x123，PI等；

类似__xxx__这样的变量是特殊变量，可以被直接引用，但是有特殊用途，比如上面的__author__，__name]]></description><category></category></item><item><title><![CDATA[python——一步一步教你认识Python闭包]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/77101142</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/77101142</guid><author>jaccty</author><pubDate>Fri, 11 Aug 2017 17:23:14 +0800</pubDate><description><![CDATA[什么是闭包？闭包有什么用？为什么要用闭包？今天我们就带着这3个问题来一步一步认识闭包。闭包和函数紧密联系在一起，介绍闭包前有必要先介绍一些背景知识，诸如嵌套函数、变量的作用域等概念

作用域

作用域是程序运行时变量可被访问的范围，定义在函数内的变量是局部变量，局部变量的作用范围只能是函数内部范围内，它不能在函数外引用。

def foo():
    num = 10 # 局部变量
]]></description><category></category></item><item><title><![CDATA[Python——列表生成式备忘]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76693614</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76693614</guid><author>jaccty</author><pubDate>Fri, 04 Aug 2017 20:18:53 +0800</pubDate><description><![CDATA[l = ['Hello', 'World', 18, 'Apple', None]
L = [x.lower() for x in l if isinstance(x,str)]#数字和none会不见，不是最好方法
#下面的方法可以保留
L = [x.lower() if isinstance(x, str) else x for x in l]#最好的方法，保留数字和none
if __name]]></description><category></category></item><item><title><![CDATA[Python——Python文件中常见的if __name__ == '__main__': 的解析]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76690535</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76690535</guid><author>jaccty</author><pubDate>Fri, 04 Aug 2017 17:21:00 +0800</pubDate><description><![CDATA[当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__',那么这个语句到底是做什么用的呢？在解释之前，首先要声明的是，不管你是多么小白，你一定要知道的是：


1.python文件的后缀为.py；

2..py文件既可以用来直接执行，就像一个小程序一样，也可以用来作为模块被导入；

3.在python中导入模块一般使用的是import。
]]></description><category></category></item><item><title><![CDATA[Python——切片备忘]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76675400</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76675400</guid><author>jaccty</author><pubDate>Fri, 04 Aug 2017 12:12:02 +0800</pubDate><description><![CDATA[切片（Slice）操作符
在很多编程语言中，针对字符串提供了很多各种截取函数（例如，substring），其实目的就是对字符串切片。Python没有针对字符串的截取函数，只需要切片一个操作就可以完成，非常简单。


作用 取一个 list 或 tuple 或字符串的部分元素格式 [开始索引:结束索引:间隔及方向] 关于默认值，不要纠结了，只要省略了，我们就认为按指定方向取尽，如果开始索引，]]></description><category></category></item><item><title><![CDATA[Python——常见错误备忘]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76623863</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76623863</guid><author>jaccty</author><pubDate>Thu, 03 Aug 2017 15:33:49 +0800</pubDate><description><![CDATA[Python脚本运行出现语法错误：IndentationError: unindent does not match any outer
 indentation level



运行环境是win10 x64 sublime text3，谷歌翻译是缩进问题。

具体来说是由于有的地方使用了4个空格，有的地方使用了tab键。

代码区直接全选就会看到有的地方是四个点有个地方是一个]]></description><category></category></item><item><title><![CDATA[php——水印]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76407388</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76407388</guid><author>jaccty</author><pubDate>Sun, 30 Jul 2017 21:11:06 +0800</pubDate><description><![CDATA[很多开发语言都会实现水印功能，之前我用OC和swift都实现过，最近学下php，顺便练下手，记录下以便查阅。
<?php 
//水印

function water($source,$water = '1_jaccty.png',$position = 0,$alpha = 100,$type = "jpeg",$path = 'waterTest',$isRandName = true){
 ]]></description><category></category></item><item><title><![CDATA[php——记中文验证码]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/76339773</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/76339773</guid><author>jaccty</author><pubDate>Sat, 29 Jul 2017 17:14:00 +0800</pubDate><description><![CDATA[现在市场上大部分不再使用简单的数字字母验证码，转而使用的是中文验证码或者滑块验证码，本文主要是对中文验证码的记录，方便以后查阅。
<?php 
verify_chinese();
function verify_chinese($width=120,$height=40,$num=4,$type=2){
  $image = imagecreatetruecolor($width,$height]]></description><category></category></item><item><title><![CDATA[3.28——对3.9苹果热更事件的跟进（JPatch）]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/68060112</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/68060112</guid><author>jaccty</author><pubDate>Wed, 29 Mar 2017 10:06:18 +0800</pubDate><description><![CDATA[3.28今天JPatch的bang发布了1.7版本的说明，3点改进，其中的一条是禁止Sdk接入，这条很要命，这样我的Sdk更新看来得另辟蹊径了，不过，猜想通过类名混淆能躲过苹果代码扫描，个人的Sdk应该还是可以使用JPatch的，（这应该也是bang在文中强调不要混淆类名的原因吧，不过这也得试一下才知道，说不准哦）可以进入这里下载1.7版的]]></description><category></category></item><item><title><![CDATA[备忘——定时器]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/65444562</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/65444562</guid><author>jaccty</author><pubDate>Thu, 23 Mar 2017 15:46:17 +0800</pubDate><description><![CDATA[//关闭定时器
    fileprivate func invalidateTimer(){
        guard timer != nil else {
            return
        }
        timer.invalidate()
        timer = nil
    }
    //开启定时器
    fileprivate func set]]></description><category></category></item><item><title><![CDATA[记3.9——Apple禁止热更新而受影响的第三方SDK]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/61197858</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/61197858</guid><author>jaccty</author><pubDate>Fri, 10 Mar 2017 15:47:13 +0800</pubDate><description><![CDATA[好久没有写点东西，就在昨天，苹果爸爸又搞事了，热更新界顿时风声鹤唳，jpatch群的老大bang也跟着发了公告，但是今天陆续听说苹果大部分接入
 JSPatch 的 APP 发送了警告，跟着JSPatch
 平台关于苹果警告的解决方案出来了，不过能不能过审还两说，下面举下可能接入JSPatch的第三方库，至于接不接这些库，就看个人意愿喽，不过神仙打架，殃及池鱼，我们小码农就当吃瓜群众好了。
]]></description><category></category></item><item><title><![CDATA[IOS--备忘   常用的宏]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/52484837</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/52484837</guid><author>jaccty</author><pubDate>Fri, 09 Sep 2016 18:10:15 +0800</pubDate><description><![CDATA[IOS开发中常用的宏，做下记录，备忘下。
1、设置view的圆角边框
#define LRViewBorderRadius(View, Radius, Width, Color)\
[View.layer setCornerRadius:(Radius)];\
[View.layer setMasksToBounds:YES];\
[View.layer setBorderWidth:(Wid]]></description><category></category></item><item><title><![CDATA[IOS安全-- 字符串加密那点小事]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/52471196</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/52471196</guid><author>jaccty</author><pubDate>Thu, 08 Sep 2016 15:40:40 +0800</pubDate><description><![CDATA[一个IOS的ipa包被反编译后，其中已初始化的字符串都是完整可见的。 针对于iOS的Mach-O二进制通常可获得以下几种字符串信息：

1、资源文件名  2、可见的函数符号名  3、SQL语句  4、对称加密算法的key。尤其是4，很多app会用对称加密算法，但是客户端保存私钥却是不安全的！对于攻击者来说，如果能从反编译出来的二进制中获取到私钥，却是一件幸福的事！因为你的加密基本瓦解，而且攻击]]></description><category></category></item><item><title><![CDATA[IOS--备忘，获取外网IP]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/52468818</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/52468818</guid><author>jaccty</author><pubDate>Thu, 08 Sep 2016 10:51:26 +0800</pubDate><description><![CDATA[对于数据收集，外网IP是必须获取到的，看了很多资料，有些已过期，有些只能获取移动网络的IP，对于WiFi的就只能获取到局域网的IP，但是，这些都不是我想要的呀。终于，找到了可用的URL地址，就是利用搜狐的网址来弄的，代码如下：
//获得外网IP
- (NSString *)ip{
    return [self deviceWANIPAdress][@"cip"];
}

-(NSDictio]]></description><category></category></item><item><title><![CDATA[iOS --iap内购的那些小事]]></title><link>https://blog.youkuaiyun.com/jaccty/article/details/52411639</link><guid>https://blog.youkuaiyun.com/jaccty/article/details/52411639</guid><author>jaccty</author><pubDate>Fri, 02 Sep 2016 10:51:53 +0800</pubDate><description><![CDATA[最近，游戏SDK要集成iap内购，那好吧，功能实现了。没想到研发接入测试的时候反馈，苹果iap内购弹窗太慢，用户可以多次点击不同的选项。。。哎，也是，苹果服务器在美国呢，从调起支付到弹出支付界面要3秒左右，用户以为没反应，多点几次也是有的嘛（虽然不会重复支付，但是体验不好啊，对于我来说绝对不能忍）。那么怎么办呢？加遮盖？肯定是第一个想法，但是我不想这么做（就是这么任性！）好了，方法就是忽略点击事件]]></description><category></category></item></channel></rss>