<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>adolsai's echo</title><link>https://adolsai.com/</link><description>Recent content on adolsai's echo</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 28 Oct 2022 22:28:40 +0800</lastBuildDate><atom:link href="https://adolsai.com/index.xml" rel="self" type="application/rss+xml"/><item><title>OCLint自定义规则</title><link>https://adolsai.com/archives/oclint-custom-rules.html</link><pubDate>Fri, 02 Apr 2021 17:02:06 +0800</pubDate><guid>https://adolsai.com/archives/oclint-custom-rules.html</guid><description>&lt;h2 id="oclint"&gt;OCLint&lt;/h2&gt;&#10;&lt;p&gt;Clang本身自带AST树遍历，可以实现静态代码检查。&lt;/p&gt;&#10;&lt;p&gt;OCLint是基于Clang tool 的静态代码分析工具，换句话说相当于做了一层针对Objective-C的封装。它的核心能力是对 Clang AST 进行分析，最后输出违反规则的代码信息，并且导出指定格式的报告。&lt;/p&gt;</description></item><item><title>Clang AST</title><link>https://adolsai.com/archives/clang-ast.html</link><pubDate>Fri, 02 Apr 2021 16:50:22 +0800</pubDate><guid>https://adolsai.com/archives/clang-ast.html</guid><description>&lt;h2 id="llvm编译器架构"&gt;LLVM编译器架构&lt;/h2&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2021/04/1729549626.webp" alt="llvm.png" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h4 id="frontend-前端"&gt;Frontend: 前端&lt;/h4&gt;&#10;&lt;p&gt;词法分析、语法分析、语义分析、生成中间代码&lt;/p&gt;&#10;&lt;h4 id="optimizer-优化器"&gt;Optimizer: 优化器&lt;/h4&gt;&#10;&lt;p&gt;中间代码优化&lt;/p&gt;&#10;&lt;h4 id="backend-后端"&gt;Backend: 后端&lt;/h4&gt;&#10;&lt;p&gt;生成机器码&lt;/p&gt;</description></item><item><title>Timer动画使用缓动函数</title><link>https://adolsai.com/archives/easings-timing-function.html</link><pubDate>Mon, 01 Jun 2020 15:12:00 +0800</pubDate><guid>https://adolsai.com/archives/easings-timing-function.html</guid><description>&lt;p&gt;&lt;strong&gt;缓动函数&lt;/strong&gt; 通过时间的变化控制参数值变化的速率。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;现实生活中，物体并不是突然启动或者停止，当然也不可能一直保持匀速移动。就像我们打开抽屉的过程那样，刚开始拉的那一下动作很快，但是当抽屉被拉出来之后我们会不自觉的放慢动作。掉落在地板上的东西，一开始下降的速度很快，后来就会在地板上来回反弹直到停止。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;系统自带的缓冲函数如下:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kCAMediaTimingFunctionLinear&#10;&#10;kCAMediaTimingFunctionEaseIn&#10;&#10;kCAMediaTimingFunctionEaseOut&#10;&#10;kCAMediaTimingFunctionEaseInEaseOut&#10;&#10;kCAMediaTimingFunctionDefault&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用&lt;code&gt;CAMediaTimingFunctionName&lt;/code&gt;中如下方法可以取出贝塞尔曲线控制点:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;- (void)getControlPointAtIndex:(size_t)idx values:(float[_Nonnull 2])ptr; &#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;直接绘制出来是这样的曲线:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2020/06/1179825508.webp" alt="default-timing-function" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;当然系统也提供自定义控制点方法:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;/* Creates a timing function modelled on a cubic Bezier curve. The end&#10; * points of the curve are at (0,0) and (1,1), the two points &amp;#39;c1&amp;#39; and&#10; * &amp;#39;c2&amp;#39; defined by the class instance are the control points. Thus the&#10; * points defining the Bezier curve are: &amp;#39;[(0,0), c1, c2, (1,1)]&amp;#39; */&#10;&#10;+ (instancetype)functionWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y;&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Python版本的desede/CBC/PKCS5Padding加密</title><link>https://adolsai.com/archives/python-desede-cbc-PKCS5Padding.html</link><pubDate>Sun, 26 Apr 2020 10:27:00 +0800</pubDate><guid>https://adolsai.com/archives/python-desede-cbc-PKCS5Padding.html</guid><description>&lt;h2 id="环境--依赖"&gt;环境 &amp;amp;&amp;amp; 依赖&lt;/h2&gt;&#10;&lt;p&gt;Python版本是3.7.7&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;python3 --version&#10;Python 3.7.7&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;因为要使用&lt;code&gt;pycryptodome&lt;/code&gt;,需要先卸载&lt;code&gt;pycrypto&lt;/code&gt;,&lt;code&gt;pydes&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;pip3 uninstall pycrypto&#10;&#10;pip3 uninstall pydes&#10;&#10;pip3 install pycryptodome&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>iOS SDK 开发整理</title><link>https://adolsai.com/archives/iOS-dynamic-and-static-framework.html</link><pubDate>Fri, 17 May 2019 17:29:00 +0800</pubDate><guid>https://adolsai.com/archives/iOS-dynamic-and-static-framework.html</guid><description>&lt;h2 id="ios-sdk基础"&gt;iOS SDK基础&lt;/h2&gt;&#10;&lt;h3 id="what"&gt;What?&lt;/h3&gt;&#10;&lt;p&gt;SDK 开发就是写一堆代码，然后将这些代码打包成一个二进制文件，配合头文件和资源文件，给到别人直接使用。&lt;/p&gt;&#10;&lt;h3 id="why"&gt;Why?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;对外输出 SDK&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如OCR技术、面部识别、声纹识别等功能含有大量专利、商业机密代码，需要打包、混淆后才能提供给外部集成。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;内部组件化&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;依赖管理、加速编译。&lt;/p&gt;</description></item><item><title>Cocoapods 私有化踩坑</title><link>https://adolsai.com/archives/cocoapods-private-error-list.html</link><pubDate>Wed, 15 May 2019 18:04:00 +0800</pubDate><guid>https://adolsai.com/archives/cocoapods-private-error-list.html</guid><description>&lt;p&gt;整理完记录下来。&lt;/p&gt;&#10;&lt;h2 id="各种文件路径错误"&gt;各种文件路径错误&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;- ERROR | [iOS] file patterns: The `vendored_libraries` pattern did not match any file.&#10;&#10;- ERROR | [iOS] file patterns: The `vendored_frameworks` pattern did not match any file.&#10;&#10;- ERROR | [iOS] file patterns: The `resources` pattern did not match any file.&#10;&#10;...&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>一个录音波浪动画</title><link>https://adolsai.com/archives/wave-animation-ios.html</link><pubDate>Mon, 25 Mar 2019 22:08:00 +0800</pubDate><guid>https://adolsai.com/archives/wave-animation-ios.html</guid><description>&lt;h3 id="根据音量大小变化效果"&gt;根据音量大小变化效果:&lt;/h3&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2019/03/666.gif" alt="99" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="实现"&gt;实现&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;使用三角函数计算每一个点(x, y)位置;&lt;/li&gt;&#10;&lt;li&gt;使用UIBezierPath连接这些点;&lt;/li&gt;&#10;&lt;li&gt;把path赋值给CAShapeLayer;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>Solr7</title><link>https://adolsai.com/archives/solr.html</link><pubDate>Sat, 09 Mar 2019 14:49:00 +0800</pubDate><guid>https://adolsai.com/archives/solr.html</guid><description>&lt;h2 id="友好的教程在这里"&gt;友好的教程在这里:&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://www.cnblogs.com/yanfeiLiu/p/9267540.html"&gt;solr学习篇（一） solr7.4 安装配置篇&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.cnblogs.com/yanfeiLiu/p/9268557.html"&gt;solr学习篇（二） solr 分词器篇&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.cnblogs.com/yanfeiLiu/p/9272644.html"&gt;solr学习篇（三） solr7.4 连接MySQL数据库&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.cnblogs.com/yanfeiLiu/p/9283744.html"&gt;solr学习篇（四） java使用solr简单查询（初识solrj）&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>来张渐变色的圆角图吧</title><link>https://adolsai.com/archives/uiimage-gradient-color.html</link><pubDate>Sat, 09 Mar 2019 14:23:08 +0800</pubDate><guid>https://adolsai.com/archives/uiimage-gradient-color.html</guid><description>&lt;h3 id="可以控制垂直或者水平方向渐变-其实给角度也可以-先放着吧"&gt;可以控制垂直或者水平方向渐变, 其实给角度也可以, 先放着吧.&lt;/h3&gt;&#10;&lt;p&gt;UIImage+LinearGradientColor.h&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors size:(CGSize)size;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors size:(CGSize)size vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size vertical:(BOOL)vertical;&#10;+ (UIImage *)as_imageWithLinearGradientColors:(NSArray *)colors postions:(NSArray *)positions size:(CGSize)size vertical:(BOOL)vertical cornerRadius:(CGFloat)cornerRadius borderColor:(UIColor *)borderColor borderWidth:(CGFloat)borderWidth corners:(UIRectCorner)corners;&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>TRON iOS Objective-C address generate</title><link>https://adolsai.com/archives/TRON-iOS-Objective-C-address-generate.html</link><pubDate>Wed, 26 Dec 2018 14:55:00 +0800</pubDate><guid>https://adolsai.com/archives/TRON-iOS-Objective-C-address-generate.html</guid><description>&lt;p&gt;Related Document: &lt;a href="https://github.com/tronprotocol/Documentation/blob/master/TRX_CN/Tron-overview.md"&gt;TRON公链概览&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;引用文件来源于这里: &lt;a href="https://github.com/MountainJ/PocketEOS-IOS"&gt;PocketEOS-IOS&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="secrect-key-generation"&gt;Secrect Key Generation:&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;#import &amp;lt;Security/Security.h&amp;gt;&#10;#import &amp;#34;NSObject+Extension.h&amp;#34;&#10;#import &amp;#34;sha3.h&amp;#34;&#10;&#10;#include &amp;#34;libbase58.h&amp;#34;&#10;#include &amp;#34;sha2.h&amp;#34;&#10;#include &amp;#34;uECC.h&amp;#34;&#10;&#10;...&#10;&#10;int length = 32;&#10;uint8_t randomBytes[length];&#10;int randomResult = SecRandomCopyBytes(kSecRandomDefault, length, randomBytes);&#10;if(randomResult == 0) {&#10; NSMutableString *randomSecrect =&#10; [[NSMutableString alloc] initWithCapacity:length * 2];&#10; &#10; for(NSInteger index = 0; index &amp;lt; length; index++){&#10; [randomSecrect appendFormat:@&amp;#34;%02x&amp;#34;, randomBytes[index]];&#10; }&#10; &#10;}&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>单页面请求多接口的处理逻辑</title><link>https://adolsai.com/archives/one-page-multi-api-request.html</link><pubDate>Wed, 07 Mar 2018 11:10:00 +0800</pubDate><guid>https://adolsai.com/archives/one-page-multi-api-request.html</guid><description>&lt;p&gt;说明:&lt;/p&gt;&#10;&lt;p&gt;随着公司发展, APP端页面越来越多, 页面元素信息和交互逻辑越来越丰富, 免不了有时一个复杂的页面需要请求多个接口. 我们来简单总结一下以往的处理方式.&lt;/p&gt;</description></item><item><title>反手就是一张带圆角的纯色图片</title><link>https://adolsai.com/archives/uiimage-purecolorimage.html</link><pubDate>Tue, 06 Mar 2018 11:31:00 +0800</pubDate><guid>https://adolsai.com/archives/uiimage-purecolorimage.html</guid><description>&lt;p&gt;经常用到纯色的背景图, 形状简单但是大小不一.&#10;每次都找UI小姐姐切图太麻烦了(孤注生...), 要不咱们自己画一套?&#10;于是...&lt;/p&gt;&#10;&lt;h2 id="说明"&gt;说明&lt;/h2&gt;&#10;&lt;p&gt;使用&lt;code&gt;UIGraphics&lt;/code&gt;方法直接画出来, 附带简单的圆角处理.&lt;/p&gt;</description></item><item><title>吐槽下iOS8[一] notification, scrollview.delegate</title><link>https://adolsai.com/archives/ios-8-notificationcenter-scrollviewdelegate.html</link><pubDate>Tue, 06 Mar 2018 11:21:00 +0800</pubDate><guid>https://adolsai.com/archives/ios-8-notificationcenter-scrollviewdelegate.html</guid><description>&lt;h2 id="notificationcenter"&gt;NotificationCenter&lt;/h2&gt;&#10;&lt;p&gt;从&lt;code&gt;iOS 9&lt;/code&gt;开始, 使用&lt;code&gt;NotificationCenter&lt;/code&gt;添加Observer之后, 不在需要自行调用&lt;code&gt;removeObserver:&lt;/code&gt;方法:&lt;/p&gt;</description></item><item><title>虚线边框的UIButton</title><link>https://adolsai.com/archives/dot-border-uibutton.html</link><pubDate>Tue, 06 Mar 2018 10:59:56 +0800</pubDate><guid>https://adolsai.com/archives/dot-border-uibutton.html</guid><description>&lt;h2 id="简单说明"&gt;简单说明&lt;/h2&gt;&#10;&lt;p&gt;使用&lt;code&gt;CAShapeLayer&lt;/code&gt;创建虚线, 在&lt;code&gt;layoutSubviews&lt;/code&gt;时调整其&lt;code&gt;frame&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>图片文字居中上下排列的UIButton</title><link>https://adolsai.com/archives/center_uibutton.html</link><pubDate>Tue, 06 Mar 2018 10:30:00 +0800</pubDate><guid>https://adolsai.com/archives/center_uibutton.html</guid><description>&lt;h2 id="简单思路"&gt;简单思路:&lt;/h2&gt;&#10;&lt;p&gt;在&lt;code&gt;layoutSubviews:&lt;/code&gt;的时候获取当button的frame, 然后通过直接设置&lt;code&gt;imageView&lt;/code&gt;和&lt;code&gt;titleLabel&lt;/code&gt;的&lt;code&gt;frame&lt;/code&gt;来实现.&lt;/p&gt;</description></item><item><title>GB18030(兼容GB2312)编码验证与校正</title><link>https://adolsai.com/archives/fix-GB18030-GB2312-encode-error.html</link><pubDate>Sun, 13 Mar 2016 23:21:00 +0800</pubDate><guid>https://adolsai.com/archives/fix-GB18030-GB2312-encode-error.html</guid><description>&lt;p&gt;之前写 APP 抓 &lt;code&gt;GB2312&lt;/code&gt; 编码的HTML时候， 发现 HTML 文件里面混了一些非 &lt;code&gt;GB18030&lt;/code&gt;(包含&lt;code&gt;GB2312&lt;/code&gt;字符集) 字符集的字符。&lt;/p&gt;&#10;&lt;p&gt;以下代码出错：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;//self.gb18030Encoding = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);&#10;&#10;//原页面采用 GB2312 编码&#10;NSString *result = [[NSString alloc] initWithData:data encoding:self.gb18030Encoding];&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Unicode UTF-16 UTF-8 GB2312 GBK GB18030 ASCII Latin-1</title><link>https://adolsai.com/archives/UTF16-UTF8-GB2312-GBK-GB18030-Unicode-ASCII-Latin1.html</link><pubDate>Fri, 11 Mar 2016 17:27:00 +0800</pubDate><guid>https://adolsai.com/archives/UTF16-UTF8-GB2312-GBK-GB18030-Unicode-ASCII-Latin1.html</guid><description>&lt;p&gt;整理一下这些概念。&lt;/p&gt;&#10;&lt;h4&gt;计算机内只能保存101010等二进制数据，那么页面上显示的字符是如何显示出来的呢？&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h4&gt;&#10;&lt;p&gt;一：字符集（Charset）&lt;br /&gt;&#10;charset = char + set，char 是字符，set是集合，charset就是字符的集合。&lt;br /&gt;&#10;字符集就是是这个编码方式涵盖了哪些字符，每个字符都有一个数字序号。&lt;/p&gt;&#10;&lt;p&gt;二：编码方式（Encoding）&lt;br /&gt;&#10;编码方式就是一个字符要怎样编码成二进制字节序，或者反过来怎么解析。&lt;br /&gt;&#10;也即给你一个数字序号，要编码成几个字节，字节顺序如何，或者其他特殊规则。&lt;/p&gt;&#10;&lt;p&gt;三：字形字体（Font）&lt;br /&gt;&#10;根据数字序号调用字体存储的字形，就可以在页面上显示出来了。&lt;br /&gt;&#10;所以一个字符要显示出来，要显示成什么样子要看字体文件。&lt;/p&gt;</description></item><item><title>Xcode note</title><link>https://adolsai.com/archives/Xcode-note.html</link><pubDate>Wed, 02 Dec 2015 17:22:00 +0800</pubDate><guid>https://adolsai.com/archives/Xcode-note.html</guid><description>&lt;h2 id="插件"&gt;插件&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h2&gt;&#10;&lt;h3 id="xcode颜色显示插件colorsense"&gt;XCode颜色显示插件ColorSense&lt;/h3&gt;&#10;&lt;p&gt;代码里的那些冷冰冰的颜色数值，到底时什么颜色？如果你经常遇到这个问题，每每不得不运行下模拟器去看看，那么这个插件绝对不容错过。更彪悍的是你甚至可以点击显示的颜色面板，直接通过系统的ColorPicker来自动生成对应颜色代码，再也不用做各种颜色代码转换了！&lt;/p&gt;</description></item><item><title>View Controller Programming Guide for iOS</title><link>https://adolsai.com/archives/View-Controller-Programming-Guide-for-iOS-1.html</link><pubDate>Fri, 16 Oct 2015 18:04:00 +0800</pubDate><guid>https://adolsai.com/archives/View-Controller-Programming-Guide-for-iOS-1.html</guid><description>&lt;h1 id="overview"&gt;Overview&lt;/h1&gt;&#10;&lt;h2 id="the-role-of-view-controllers"&gt;The Role of View Controllers&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;UIViewController&lt;/code&gt;包含了用来管理view、event、transitioning的所有方法和属性。只需要直接集成该class或者其subclass就可以使用。&lt;/p&gt;&#10;&lt;p&gt;两类viewcontroller：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;content view controllers 包含具体内容（包括各种控件）。&lt;/li&gt;&#10;&lt;li&gt;container view controllers 包含其他viewcontroller。&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Bundle Programming Guide</title><link>https://adolsai.com/archives/Bundle-Programming-Guide.html</link><pubDate>Mon, 21 Sep 2015 17:35:00 +0800</pubDate><guid>https://adolsai.com/archives/Bundle-Programming-Guide.html</guid><description>&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;&#10;&lt;p&gt;Bundle是OS X和iOS中用来结构性封装代码和相关数据文件的技术。&lt;/p&gt;&#10;&lt;p&gt;在Xcode中新建project的时候会自动帮你创建好相应的项目结构:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://adolsai.com/uploads/2015/09/619775116.webp" alt="bundle-sample1" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;</description></item><item><title>Resource Programming Guide</title><link>https://adolsai.com/archives/Resource-Programming-Guide.html</link><pubDate>Wed, 16 Sep 2015 21:50:00 +0800</pubDate><guid>https://adolsai.com/archives/Resource-Programming-Guide.html</guid><description>&lt;h1 id="about-resource"&gt;About Resource&lt;/h1&gt;&#10;&lt;p&gt;OS X和iOS直接支持的类型：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Nib 存放用户界面对象&lt;/li&gt;&#10;&lt;li&gt;Strings 语言本地化文档&lt;/li&gt;&#10;&lt;li&gt;Image, Sound, Movies 预渲染文件&lt;/li&gt;&#10;&lt;li&gt;Property List 一般数据文件格式&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Using Regular Expression</title><link>https://adolsai.com/archives/using-regular-expression.html</link><pubDate>Thu, 27 Aug 2015 09:52:00 +0800</pubDate><guid>https://adolsai.com/archives/using-regular-expression.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;很好的入门教程:&lt;a href="http://www.jb51.net/tools/zhengze.html"&gt;《正则表达式30分钟入门教程》 by deerchao&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;维基百科：&lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;http://en.wikipedia.org/wiki/Regular_expression&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;正则表达式在线测试：&lt;a href="http://tool.chinaz.com/regex/"&gt;http://tool.chinaz.com/regex/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>File System Programming Guide(iOS)</title><link>https://adolsai.com/archives/File-System-Programming-Guide.html</link><pubDate>Thu, 27 Aug 2015 09:44:00 +0800</pubDate><guid>https://adolsai.com/archives/File-System-Programming-Guide.html</guid><description>&lt;h2 id="about"&gt;About&lt;/h2&gt;&#10;&lt;p&gt;sandbox机制让文件系统使用起来稍微有点不同，特别是访问别的app内容的时候需要取得对应的权限。同时sandbox机制基本明确了文件的存储位置。&lt;/p&gt;&#10;&lt;p&gt;该手册涉及内容：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;sandbox文件系统规范&lt;/li&gt;&#10;&lt;li&gt;多线程/进程文件读写（&lt;code&gt;NSFileCoordinator&lt;/code&gt;、&lt;code&gt;NSFilePresenter&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;文件类型及对应的读写方式&lt;/li&gt;&#10;&lt;li&gt;使用高级文件系统API&lt;/li&gt;&#10;&lt;li&gt;通用文件管理界面（如&lt;code&gt;Open and Save panel&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;异步读写文件&lt;/li&gt;&#10;&lt;li&gt;模仿&lt;strong&gt;Finder&lt;/strong&gt;操作文件&lt;/li&gt;&#10;&lt;li&gt;优化文件相关操作&lt;/li&gt;&#10;&lt;li&gt;关于&lt;code&gt;File Mapping&lt;/code&gt;和&lt;code&gt;Directory Localized Name&lt;/code&gt;（OS X）在《&lt;em&gt;File System Advanced Programming Topics&lt;/em&gt;》&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>[转]iOS开发中那些高效常用的宏</title><link>https://adolsai.com/archives/MacroDefinition.html</link><pubDate>Wed, 26 Aug 2015 16:16:00 +0800</pubDate><guid>https://adolsai.com/archives/MacroDefinition.html</guid><description>&lt;p&gt;iOS开发过程中使用一些常用的宏可以提高开发效率，提高代码的重用性；将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便。&lt;/p&gt;</description></item><item><title>[转]iOS 的多线程同步</title><link>https://adolsai.com/archives/133.html</link><pubDate>Mon, 17 Aug 2015 12:10:00 +0800</pubDate><guid>https://adolsai.com/archives/133.html</guid><description>&lt;p&gt;转载：&lt;a href="http://blog.zorro.im/posts/iOS-muti-threading-synchronization.html"&gt;iOS 的多线程同步 by zqqf16&lt;/a&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;我的上一家公司有个引以为豪的技术：多核无锁，不仅避免了各种由锁带来的问题，还极大的提高了性能，所以产品性能能够在业界数一数二。 在这样的氛围影响下，我在开发的时候也很少用锁，能不用就不用。 后来去面试 iOS 开发的时候，面试官总是喜欢问有关于锁的问题，最近趁有时间就整理了一下，算是补充一下技能树吧。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Threading Programming Guide 4 Synchronization</title><link>https://adolsai.com/archives/Threading-Programming-Guide-4-Synchronization.html</link><pubDate>Thu, 13 Aug 2015 17:17:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-4-Synchronization.html</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;部分内容来源于：&lt;a href="http://blog.zorro.im/posts/iOS-muti-threading-synchronization.html"&gt;ios多线程同步&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="synchronization-tools"&gt;Synchronization Tools&lt;/h2&gt;&#10;&lt;h3 id="atomic-operations"&gt;Atomic Operations&lt;/h3&gt;&#10;&lt;p&gt;在多进程（线程）访问资源时，能够确保所有其他的进程（线程）都不在同一时间内访问相同的资源。原子操作（atomic operation）是不需要synchronized。所谓原子操作是指不会被线程调度机制打断的操作；这种操作一旦开始，就一直运行到结束，中间不会有任何 context switch （切换到另一个线程）。通常所说的原子操作包括对非long和double型的primitive进行赋值，以及返回这两者之外的primitive。&lt;/p&gt;&#10;&lt;p&gt;需要硬件实现，但是维基说可以用其他锁机制软件实现。&lt;/p&gt;</description></item><item><title>Transitioning to ARC Release Notes</title><link>https://adolsai.com/archives/Transitioning-to-ARC-Release-Notes.html</link><pubDate>Wed, 12 Aug 2015 21:40:00 +0800</pubDate><guid>https://adolsai.com/archives/Transitioning-to-ARC-Release-Notes.html</guid><description>&lt;p&gt;ARC (Automatic Reference Counting)是llvm compiler的特性之一，提供了objective-c对象的自动内存管理功能。它自动在适当的地方插入&lt;code&gt;retian&lt;/code&gt;、&lt;code&gt;release&lt;/code&gt;、&lt;code&gt;autorelease&lt;/code&gt;方法，配合autoreleasepool使用。启用了ARC之后，将不再能手动使用&lt;code&gt;retian&lt;/code&gt;、&lt;code&gt;release&lt;/code&gt;、&lt;code&gt;autorelease&lt;/code&gt;方法了。&lt;/p&gt;</description></item><item><title>Threading Programming Guide 3 Run Loops</title><link>https://adolsai.com/archives/Threading-Programming-Guide-3-Run-Loops.html</link><pubDate>Sat, 08 Aug 2015 17:42:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-3-Run-Loops.html</guid><description>&lt;p&gt;iOS线程编程手册-3-Run Loops&lt;/p&gt;&#10;&lt;p&gt;Run Loop是和线程关系密切的基础架构，它配合线程实现可循环事件处理机制。Run Loop的设计目的是让线程由事件驱动而运行，没有接收到事件就休眠。&lt;/p&gt;&#10;&lt;p&gt;只有主线程才是自带Run Loop光环的，设置主线程的Run Loop是应用程序启动的一部分。其他你自己创建的线程都需要自己写代码来实现Run Loop。Cocoa和Core Foundation都提供了run loop object让你可以方便的创建和管理run loop。&lt;/p&gt;</description></item><item><title>Threading Programming Guide 2 Thread Management</title><link>https://adolsai.com/archives/Threading-Programming-Guide-2-Thread-Management.html</link><pubDate>Fri, 07 Aug 2015 13:03:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-2-Thread-Management.html</guid><description>&lt;p&gt;iOS线程编程手册-2-线程管理&lt;/p&gt;&#10;&lt;p&gt;每一个进程（应用程序）都是由一个或者多个线程组成，每一个都有自己的执行路径（path of execution）。每一个应用程序的启动都是从主线程开始，然后再创建和启动其他线程。&lt;/p&gt;&#10;&lt;p&gt;当一个进程成功地创建/启动了更加多的线程，这些线程们在同一个进程里面独立的运行。他们有自己的execution stack并且由kernel指定计划在runtime中启动运行。一个线程可以和其他线程通信、可以实施I/O操作和其他任何你想干的事情。又因为他们是在同一个进程里面运行的，所以他们和主线程共享虚拟内存（virtual memory space）和访问权限。&lt;/p&gt;</description></item><item><title>Concurrency Programming Guide 5 Dispatch Sources</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-5-Dispatch-Sources.html</link><pubDate>Thu, 06 Aug 2015 10:58:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-5-Dispatch-Sources.html</guid><description/></item><item><title>Threading Programming Guide 1 About Threaded Programming</title><link>https://adolsai.com/archives/Threading-Programming-Guide-1-About-Threaded-Programming.html</link><pubDate>Wed, 05 Aug 2015 16:00:00 +0800</pubDate><guid>https://adolsai.com/archives/Threading-Programming-Guide-1-About-Threaded-Programming.html</guid><description>&lt;p&gt;iOS线程编程手册-1-关于线程编程&lt;/p&gt;&#10;&lt;p&gt;虽然有GCD和NSOperation可以高效地实现多线程，但是你也可以使用OS X和iOS提供的底层的线程API。&lt;/p&gt;&#10;&lt;h4 id="文档结构"&gt;文档结构&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;About Threaded Programming&lt;/strong&gt; 介绍线程的概念和在app中的作用&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread Management&lt;/strong&gt; 介绍&lt;strong&gt;OS X&lt;/strong&gt;中的线程技术和使用方法&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Run Loops&lt;/strong&gt; 介绍如何使用响应事件的Run Loop&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Synchronization&lt;/strong&gt; 线程同步和操作方式&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Thread Safety Summary&lt;/strong&gt; 线程安全相关&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Advanced Memory Management Programming Guide</title><link>https://adolsai.com/archives/Advanced-Memory-Management-Programming-Guide.html</link><pubDate>Mon, 03 Aug 2015 16:18:00 +0800</pubDate><guid>https://adolsai.com/archives/Advanced-Memory-Management-Programming-Guide.html</guid><description>&lt;h2 id="关于ios内存管理"&gt;关于iOS内存管理&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;该文章包含了一些ARC出现之前的内存管理方法，看完之后去看 《 &lt;em&gt;Transitioning to ARC Release Notes&lt;/em&gt; 》可以更加完整地把知识结合起来。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;内存管理可以理解为把内存这种有限的资源分配给一个application里面所有代码和数据的动作。&lt;/p&gt;&#10;&lt;p&gt;使用Objective-C的时候，内存管理实际上就是对app内使用的Object的关系的管理。因为iOS的内存管理是基于&lt;em&gt;reference counting&lt;/em&gt;的。&lt;/p&gt;&#10;&lt;p&gt;目标是app占用的内存中不包含任何不需要的object。&lt;/p&gt;</description></item><item><title>Concurrency Programming Guide 4 Dispatch Queues</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</link><pubDate>Fri, 31 Jul 2015 00:39:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</guid><description>&lt;h1 id="dispatch-queues"&gt;Dispatch Queues&lt;/h1&gt;&#10;&lt;h2 id="type-of-dispatch-queues"&gt;type of Dispatch Queues&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;类型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;描述&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;限制&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Serial&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;private dispatch queue&lt;/em&gt;，串行执行queue上的每一个task。 每一个task都在独立的线程里运行，由dispatch queue统一管理。经常用来控制对特定资源的访问（如临界资源）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;木有限制，你可以创建任意多个的serial dispatch queue，他们之间是并行的。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Concurrent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;global diapatch queue&lt;/em&gt;，并行执行queue里面的每一个task。每一个task都在独立的线程里运行，由dispatch queue统一管理。并行的数量是动态地，由system当前的资源状态决定。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;concurrent dispatch queue有四个，由系统提供，根据优先级别区分为default、low、high、background。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Main dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;这个diapatch queue在main thread里串行执行task。所以这个queue是关联main thread的run loop的，用来执行dispatch source相关的任务。因为该queue在main thread执行task，所以常用作各任务的同步点&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全局唯一的特殊serial dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item><item><title>Concurrency Programming Guide 3 Operation Queues</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-3-Operation-Queues.html</link><pubDate>Tue, 28 Jul 2015 19:55:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-3-Operation-Queues.html</guid><description>&lt;h1 id="operation-queues"&gt;Operation Queues&lt;/h1&gt;&#10;&lt;h2 id="与gcd对比"&gt;与&lt;strong&gt;GCD&lt;/strong&gt;对比&lt;/h2&gt;&#10;&lt;ol start="0"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;稍微慢一点点，因为是&lt;strong&gt;NSOperation&lt;/strong&gt;和&lt;strong&gt;NSOperationQueue&lt;/strong&gt;基于&lt;strong&gt;GCD&lt;/strong&gt;的(在Mac OS X v10.6 &amp;amp; iOS 4之后&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;);&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Operation Queue可以实现operation的dependency功能，使之在制定的operation完成之后再运行。而且指定线程可以在不同的operation queue里跑;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以重用、取消、暂停operation;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以使用&lt;strong&gt;KVO&lt;/strong&gt;，方便监控operation的运行状态;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Operation既可以直接调用&lt;code&gt;start&lt;/code&gt;方法独立运行也可以add到operation queue里面跑;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以使用&lt;code&gt;setCompletionBlock:&lt;/code&gt;设置一个operation执行完之后的动作;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以定义operation优先级别&lt;code&gt;setQueuePriority:&lt;/code&gt;;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>Concurrency Programming Guide 2 Concurrency and Application Design</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-2-Concurrency-and-Application-Design.html</link><pubDate>Tue, 28 Jul 2015 18:02:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-2-Concurrency-and-Application-Design.html</guid><description>&lt;h1 id="concurrency-and-application-design"&gt;Concurrency and Application Design&lt;/h1&gt;&#10;&lt;p&gt;关于iOS多线程先看这个：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="http://geeklu.com/2012/02/thread/"&gt;Mac&amp;amp;iOS之多线程&lt;/a&gt;&#10;###一.线程概述&lt;/p&gt;&#10;&lt;p&gt;有些程序是一条直线，起点到终点；有些程序是一个圆，不断循环，直到将它切断。直线的如简单的Hello World，运行打印完,它的生命周期便结束了，像昙花一现那样；圆如操作系统，一直运行直到你关机。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Concurrency Programming Guide 1 Glossary</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-1-Glossary.html</link><pubDate>Tue, 28 Jul 2015 14:05:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-1-Glossary.html</guid><description>&lt;h1 id="术语表"&gt;术语表&lt;/h1&gt;&#10;&lt;h4 id="application"&gt;application&lt;/h4&gt;&#10;&lt;p&gt;我们常说的APP，包含用户互交界面的应用程序&lt;/p&gt;&#10;&lt;h4 id="asynchronous-design-approach"&gt;asynchronous design approach&lt;/h4&gt;&#10;&lt;p&gt;异步设计方法&lt;/p&gt;&#10;&lt;p&gt;asynchonous是指让代码跑在别的线程上，而不是发起的线程上。使用多核处理器资源来提高程序的运行效率。&lt;/p&gt;&#10;&lt;h4 id="block-object"&gt;block object&lt;/h4&gt;&#10;&lt;p&gt;一种C结构体，包含了代码和相关数据。使用block可以很方便的把一段包含数据的代码交给其他线程执行。关于block的具体介绍见 &lt;em&gt;Block Programing Guide&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Markdown help</title><link>https://adolsai.com/archives/Markdown-help.html</link><pubDate>Sat, 25 Jul 2015 00:08:28 +0800</pubDate><guid>https://adolsai.com/archives/Markdown-help.html</guid><description>&lt;p&gt;外面可以看看&lt;/p&gt;&#10;&lt;h1 id="mou"&gt;Mou&lt;/h1&gt;&#10;&lt;p&gt;&lt;img src="http://25.io/mou/Mou_128.png" alt="Mou icon" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Mou&lt;/strong&gt;, the missing Markdown editor for &lt;em&gt;web developers&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Key Value Coding and Key Value Observing</title><link>https://adolsai.com/archives/Key-Value-Coding-and-Key-Value-Observing.html</link><pubDate>Thu, 23 Jul 2015 15:26:00 +0800</pubDate><guid>https://adolsai.com/archives/Key-Value-Coding-and-Key-Value-Observing.html</guid><description>&lt;h1 id="key-value-coding"&gt;Key Value Coding&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h1&gt;&#10;&lt;h2 id="简介"&gt;简介&lt;/h2&gt;&#10;&lt;p&gt;**KVC(Key-value coding)**是一套利用字符串标识符间接访问对象属性和关系的机制,由&lt;a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueCoding_Protocol/index.html"&gt;&lt;code&gt;NSKeyValueCoding informal protocal&lt;/code&gt;&lt;/a&gt;定义。&lt;/p&gt;</description></item><item><title>Some Dev Tools for OS X</title><link>https://adolsai.com/archives/Some-Dev-Tools-for-OS-X.html</link><pubDate>Fri, 03 Jul 2015 17:09:00 +0800</pubDate><guid>https://adolsai.com/archives/Some-Dev-Tools-for-OS-X.html</guid><description>&lt;h2&gt;Chrome插件gliffy&lt;/h2&gt;&lt;p&gt;用来绘制流程图UML图&lt;/p&gt;</description></item><item><title>About Objective-C runtime</title><link>https://adolsai.com/archives/About-Objective-C-runtime.html</link><pubDate>Fri, 03 Jul 2015 15:41:00 +0800</pubDate><guid>https://adolsai.com/archives/About-Objective-C-runtime.html</guid><description>&lt;h2 id="legacy-and-modern-versions"&gt;Legacy and Modern Versions&lt;/h2&gt;&#10;&lt;p&gt;最大区别是“non-fragile”&lt;/p&gt;&#10;&lt;p&gt;Legacy Version下修改了一个类中的实例变量，其子类需要重新编译&lt;/p&gt;</description></item><item><title>Date and Time Programming Guide 2</title><link>https://adolsai.com/archives/Date-and-Time-Programming-Guide-2.html</link><pubDate>Tue, 16 Jun 2015 14:01:00 +0800</pubDate><guid>https://adolsai.com/archives/Date-and-Time-Programming-Guide-2.html</guid><description>&lt;p&gt;&lt;embed id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd" type="application/thunder_download_plugin" height="0" width="0"/&gt;坑着先&lt;/p&gt;</description></item><item><title>Date and Time Programming Guide 1</title><link>https://adolsai.com/archives/Data-and-Time-Programming-Guide-1.html</link><pubDate>Sat, 13 Jun 2015 01:00:00 +0800</pubDate><guid>https://adolsai.com/archives/Data-and-Time-Programming-Guide-1.html</guid><description>&lt;h2&gt;Dates&lt;br/&gt;&lt;/h2&gt;&lt;h3&gt;Creating Time Objects&lt;br/&gt;&lt;/h3&gt;</description></item><item><title>Binary Data Programming Guide</title><link>https://adolsai.com/archives/Binary-Data-Programming-Guide.html</link><pubDate>Fri, 12 Jun 2015 16:38:00 +0800</pubDate><guid>https://adolsai.com/archives/Binary-Data-Programming-Guide.html</guid><description>&lt;h2&gt;Contents&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Data Objects //数据封装类&lt;/p&gt;&lt;p&gt;Working With Binary Data //创建和使用样例&lt;/p&gt;&lt;p&gt;Working With Mutable Binary Data //修改NSMutableData&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>String Programming Guide 3 (完)</title><link>https://adolsai.com/archives/String-Programming-Guide-3.html</link><pubDate>Thu, 11 Jun 2015 14:32:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-3.html</guid><description>&lt;h2&gt;Character Sets&lt;br/&gt;&lt;/h2&gt;&lt;p&gt;NSCharacterSet, NSMutableCharacterSet&lt;/p&gt;&lt;h3&gt;Character Set Basics&lt;/h3&gt;&lt;p&gt;NSString 和 NSScanner 都有通过 NSCharacterSet 来实现其查找排序等功能&lt;br/&gt;&lt;/p&gt;</description></item><item><title>String Programming Guide 2</title><link>https://adolsai.com/archives/String-Programming-Guide-2.html</link><pubDate>Wed, 10 Jun 2015 10:41:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-2.html</guid><description>&lt;h2&gt;String Format Specifiers&lt;/h2&gt;&lt;h3&gt;Format Specifiers&lt;br/&gt;&lt;/h3&gt;&lt;p&gt;IEEE printf specification:&lt;br/&gt;&lt;/p&gt;</description></item><item><title>String Programming Guide 1</title><link>https://adolsai.com/archives/String-Programming-Guide-1.html</link><pubDate>Mon, 08 Jun 2015 21:57:00 +0800</pubDate><guid>https://adolsai.com/archives/String-Programming-Guide-1.html</guid><description>&lt;p&gt;&amp;nbsp;NSString 和 NSMutableString 的基本用法和一些注意事项.&lt;/p&gt;&lt;p&gt;官方原文链接:&lt;a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/introStrings.html#//apple_ref/doc/uid/10000035i"&gt;String Programming Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Number and Value Programming Topics</title><link>https://adolsai.com/archives/Number-and-Value-Programming-Topics.html</link><pubDate>Mon, 01 Jun 2015 18:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Number-and-Value-Programming-Topics.html</guid><description>&lt;p&gt;这是一个关于C基本数值类型的封装类 NSValue及亲儿子NSNumber, NSDecimalNumber, 和隔壁NSnull的故事&lt;/p&gt;&lt;p&gt;官方原文链接:&lt;a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/NumbersandValues/NumbersandValues.html#//apple_ref/doc/uid/10000038i"&gt;Number and Value Programming Topics&lt;/a&gt;&lt;/p&gt;</description></item><item><title>iOS Data management - Data Management Starting Point</title><link>https://adolsai.com/archives/iOS-Data-management---Data-Management-Starting-Point.html</link><pubDate>Mon, 01 Jun 2015 17:32:00 +0800</pubDate><guid>https://adolsai.com/archives/iOS-Data-management---Data-Management-Starting-Point.html</guid><description>&lt;p&gt;&lt;a href="https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html#//apple_ref/doc/uid/TP40007299" _src="https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html#//apple_ref/doc/uid/TP40007299"&gt;https://developer.apple.com/library/ios/referencelibrary/GettingStarted/GS_DataManagement_iPhone/index.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;这是iOS Developer Library里面关于数据管理的入门文档.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;内容划分如下:&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;Contents:&lt;/span&gt;&lt;/p&gt;&lt;ul class="ul1 list-paddingleft-2"&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Get Up and Running&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Become Proficient&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Provide Application-Level Preferences&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;span class="s1"&gt;Access Contact Information&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description></item><item><title>Objective-C Learning Notes - apple UI Sample Code</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---apple-ui-sample-code.html</link><pubDate>Fri, 20 Feb 2015 23:44:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---apple-ui-sample-code.html</guid><description>&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html" _src="https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html"&gt;https://developer.apple.com/library/ios/samplecode/UICatalog/Introduction/Intro.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIPageControl</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIPageControl.html</link><pubDate>Fri, 20 Feb 2015 20:19:40 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIPageControl.html</guid><description>&lt;p&gt;&#10; UIPageControl&lt;br/&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 翻页控件&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; UIPageControl 控件在 iOS 应用程序中出现的比较频繁,尤其在和 UIScrollView 配合来显示大量数据.&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 创建:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;UIPageControl *myPageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0.0,400.0, 320.0, 0.0)];&lt;/pre&gt;&#10;&lt;p&gt;&#10; 设置属性:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;myPageControl.numberOfPage = 5; //页面数目&#10;myPageControl.currentPage = 3; //当前页数,第四页&#10;myPageControl.hidesForSinglePage = YES; //隐藏指示器&#10;myPageControl.defersCurrentPageDisplay = YES;&#10;[myPageControl updateCurrentPageDisplay];&lt;/pre&gt;</description></item><item><title>Objective-C语法快速参考</title><link>https://adolsai.com/archives/77.html</link><pubDate>Fri, 20 Feb 2015 01:14:00 +0800</pubDate><guid>https://adolsai.com/archives/77.html</guid><description>&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; min-height: 13px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="letter-spacing: 0px;"&gt;大部分有一点其他平台开发基础的初学者看到XCode，第一感想是磨拳擦掌，看到Interface Builder之后，第一感想是跃跃欲试，而看到Objective-C的语法，第一感想就变成就望而却步了。好吧，我是在说我自己。&lt;/span&gt;&lt;/p&gt;&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; min-height: 13px; background-color: rgb(255, 255, 255);"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="font-size: 12px; color: rgb(53, 56, 61); white-space: normal; margin-top: 0px; margin-bottom: 0px; font-family: &amp;#39;Lucida Grande&amp;#39;; background-color: rgb(255, 255, 255);"&gt;&lt;span style="letter-spacing: 0px;"&gt;如果你和我一样，对苹果相关的开发：Mac OS X或是iPhone有兴趣，但是第一时间看到Objective-C就会头疼并伴有发烧症状的话，疗效比较好的快速治疗方法是阅读本文。大概花二十分钟左右，而且绝不无聊的时间，你就会对Objective-C有那么一点点了解，至少读读例子不会那么头疼了。&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Base Note1</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---Base-Note1.html</link><pubDate>Fri, 20 Feb 2015 00:54:04 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---Base-Note1.html</guid><description>&lt;p&gt;来源:&lt;a href="http://www.cocoachina.com/bbs/read.php?tid-167908.html" _src="http://www.cocoachina.com/bbs/read.php?tid-167908.html"&gt;http://www.cocoachina.com/bbs/read.php?tid-167908.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIScrollView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIScrollView.html</link><pubDate>Fri, 20 Feb 2015 00:47:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIScrollView.html</guid><description>&lt;p&gt;&#10; 原文 shit 一样的翻译:&#10;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10; &lt;p&gt;&#10; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在滚动过程中,其实是在修改远点的坐标. 当手指触摸后, UIScrollView 会使用一个计时器暂时拦截触摸事件. 假如在计时器到点后没有发生手指移动事件, 那么 UIScrollView 发送tracking events 到被单击的 subview. 假如在计时器到点之前发生了移动事件,那么 UIScrollView 取消 tracking 自己发生移动.&#10; &lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&#10; 初始化:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;UIScrollView *sv = [[UIScrollView alloc]initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,400.0)];&lt;/pre&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView4(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView4.html</link><pubDate>Thu, 19 Feb 2015 21:11:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView4.html</guid><description>&lt;p class="p1"&gt;在 iOS 应用中,当使用 UIWebView 控件在屏幕中显示指定的网页后,我们可以通过触摸的方式浏览指定的网页.&lt;/p&gt;&lt;p class="p1"&gt;在具体实现时,是通过 webView:shouldStartLoadWithRequest:navigationType 方法来实现的.&lt;/p&gt;&lt;p class="p1"&gt;其中 NavigationType 包括如下所示的可选参数值:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeLinkClick //链接被触摸时请求这个链接&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeFormSubmitted //form 被提交时请求这个 form 的内容&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeBackForward //当通过 goBack 或者 goForward进行页面转移时移动目标 URL&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTypeReload //当页面重新导入时导入这个 URL&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="p1"&gt;UIWebViewNavigationTyoeOrther //使用 loadRequest 方法读取内容&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView3</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView3.html</link><pubDate>Thu, 19 Feb 2015 19:52:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView3.html</guid><description>&lt;p&gt;&#10; 加载 html 代码:&#10;&lt;/p&gt;&#10;&lt;p&gt;&#10; 通过使用 UIWebView 的 loadHTMLString:baseURL 方法加载显示如下 HTML 代码:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;[手机号码]&amp;lt;/b&amp;gt;&amp;quot;&#10; &amp;quot;000-00000-0000&amp;lt;hr/&amp;gt;&amp;quot;&#10; &amp;quot;&amp;lt;b&amp;gt;[主页]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;&#10; &amp;quot;http://www.baidu.com/&amp;quot;;&lt;/pre&gt;&#10;&lt;p class="p1"&gt;&#10; &lt;span class="s1"&gt;&lt;/span&gt;&lt;br/&gt;&#10;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView2.html</link><pubDate>Thu, 19 Feb 2015 01:00:28 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView2.html</guid><description>&lt;p dir="ltr"&gt;&#10; 使用 UIWebView 加载/显示 PDF Word JPEG 文件&#10;&lt;/p&gt;&#10;&lt;p dir="ltr"&gt;&#10; 关键代码:&#10;&lt;/p&gt;&#10;&lt;p dir="ltr"&gt;&#10; PDF:&#10;&lt;/p&gt;&#10;&lt;pre class="brush:cpp;toolbar:false"&gt;NSString *path = [[NSBundle mainBundle] pathForResource: @&amp;quot;fileName&amp;quot; ofType: @&amp;quot;pdf&amp;quot;];&#10;NSData *data = [NSData dataWithContentOfFile: path];&#10;[myWebView loadData: data MIMEType: @&amp;quot;application/pdf&amp;quot; textEncodingName:nil baseURL: nil];&lt;/pre&gt;&#10;&lt;p dir="ltr"&gt;&#10; &lt;br/&gt;&#10;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIWebView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView.html</link><pubDate>Wed, 18 Feb 2015 23:16:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UIWebView.html</guid><description>&lt;p&gt;在 iOS 应用中, Web 视图(UIWebView)是没有边框的 safari 窗口,可以将其加入应用程序并以编程方式进行控制. 通过使用这个类可以显示 HTML, 加载网页及支持缩放.&lt;/p&gt;&lt;p&gt;UIWebView 还可以用于显示如下文件:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;HTML, 图像和 CSS&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Word 文档(.doc/.docx)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Excel 电子表格(.xls/.xlsx)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Keynote 演示文稿(.key.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Numbers 电子表格(.numbers.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pages 文档(.pages.zip)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PDF文档(.pdf)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PowerPoint 演示文档(.ppt/pptx)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description></item><item><title>Objective-C Learning Notes - UISegmentControl 2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl-2.html</link><pubDate>Mon, 16 Feb 2015 00:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl-2.html</guid><description>&lt;p&gt;选中时修改 segment 图片:&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISegmentControl</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl.html</link><pubDate>Fri, 13 Feb 2015 23:48:55 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---UISegmentControl.html</guid><description>&lt;p&gt;按钮栏&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可以结合使用索引和实例方法 titleForSegmentAtIndex 来获取每个分段的标题.要获取分段控件中当前选定的标题,可以使用以下代码段:&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[mySegment titleForSegmentAtIndex:mySegment.selectSegmentIndex];&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;动态实现:&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;@interface&amp;nbsp;ViewController&amp;nbsp;:&amp;nbsp;UIViewController&#10;@property&amp;nbsp;(strong,nonatomic)UISegmentedControl&amp;nbsp;*mySegmentControl;&#10;@end&lt;/pre&gt;&lt;p class="p4"&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Second practice using UISlider and UISwitch</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes---Second-practice-using-UISlider-and-UISwitch.html</link><pubDate>Thu, 12 Feb 2015 22:09:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes---Second-practice-using-UISlider-and-UISwitch.html</guid><description>&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;@interface&amp;nbsp;ViewController&amp;nbsp;:&amp;nbsp;UIViewController&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UILabel&amp;nbsp;*sliderLabel;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISlider&amp;nbsp;*mySlider;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISwitch&amp;nbsp;*leftSlider;&#10;@property&amp;nbsp;(weak,&amp;nbsp;nonatomic)&amp;nbsp;IBOutlet&amp;nbsp;UISwitch&amp;nbsp;*rightSlider;&#10;-&amp;nbsp;(IBAction)sliderChanged:(id)sender;&#10;-&amp;nbsp;(IBAction)switchChanged:(id)sender;&#10;@end&lt;/pre&gt;&lt;p class="p4"&gt;&lt;span class="s2"&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISwitch2</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch2.html</link><pubDate>Wed, 11 Feb 2015 22:12:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch2.html</guid><description>&lt;p&gt;终于有一个正常一点的样例程序了,什么鬼排版啊!!!&lt;/p&gt;&lt;p&gt;简单演示 UISwitch 的常用属性, isOn...&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISwitch (Rewrite)(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch.html</link><pubDate>Wed, 11 Feb 2015 22:03:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISwitch.html</guid><description>&lt;p&gt;重写 UISwitch 类以添加修改其文本信息的方法:&lt;/p&gt;&lt;p class="p1"&gt;好讨厌一本书里面的样例程序各个编写习惯都不一样....&lt;/p&gt;&lt;pre class="brush:cpp;toolbar:false"&gt;//&amp;nbsp;&amp;nbsp;UISwitchCustom.h&#10;#import&amp;nbsp;&amp;lt;UIKit/UIKit.h&amp;gt;&#10;/**&#10;&amp;nbsp;添加一个名为&amp;nbsp;extended&amp;nbsp;的&amp;nbsp;category,&amp;nbsp;声明一下&amp;nbsp;UISwitch&amp;nbsp;的&amp;nbsp;setAlertnateColors&amp;nbsp;消息,否则在使用的时候会出现找不到该消息的警告.其实&amp;nbsp;setAlertnateColors&amp;nbsp;已经在&amp;nbsp;UISwitch&amp;nbsp;中实现,只是没u&amp;nbsp;头文件中公开而已,所以在此做一个声明...&#10;&amp;nbsp;当调用setAlertnateColors:YES&amp;nbsp;时,UISwitch&amp;nbsp;的状态为&amp;quot;on&amp;quot;时显示为橙色.&#10;&amp;nbsp;**/&#10;@interface&amp;nbsp;UISwitch&amp;nbsp;(extended)&#10;-&amp;nbsp;(void)&amp;nbsp;setAlertnateColors:(BOOL)boolean;&#10;@end&#10;//自定义&amp;nbsp;slider&amp;nbsp;类,方便存储数据而已(好像&amp;nbsp;wwwww&#10;@interface&amp;nbsp;_UISwitchSlider&amp;nbsp;:&amp;nbsp;UISlider&#10;@end&#10;//自定义&amp;nbsp;UISwitch&amp;nbsp;类并拓展可以修改按钮上面的文字方法&#10;@interface&amp;nbsp;UISwitchCustom&amp;nbsp;:&amp;nbsp;UISwitch&#10;//设置左边的文字&#10;-&amp;nbsp;(void)&amp;nbsp;setLeftLabelText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;//设置右边的文字&#10;-&amp;nbsp;(void)&amp;nbsp;setRightLabelText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;//一个方便创建&amp;nbsp;Label&amp;nbsp;的方法而已,其实它不应该出现在这里的吧...&#10;-&amp;nbsp;(UILabel&amp;nbsp;*)createLabelWithText:(NSString&amp;nbsp;*)labelText&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font:(UIFont&amp;nbsp;*)labelFont&#10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:(UIColor&amp;nbsp;*)labelColor;&#10;@end&lt;/pre&gt;</description></item><item><title>Objective-C Learning Notes - UIImage(坑)</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImage.html</link><pubDate>Wed, 11 Feb 2015 20:34:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImage.html</guid><description>&lt;p&gt;使用 UIImage 显示图片:(通过 UIImage 的方法 drawAtPoint 或者drawInRect)&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIImageView</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImageView.html</link><pubDate>Tue, 10 Feb 2015 22:48:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIImageView.html</guid><description>&lt;p&gt;UIImageView&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;创建方法&lt;/strong&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView1 = [[UIImageView alloc] init];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView4 = [[UIImageView alloc] initWithImage:(UIImage *) highlightedImage:(UIImage *)];&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImageView *imageView5 = [[UIImageView alloc] initWithCoder:(NSCoder *)];&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIStepper</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIStepper.html</link><pubDate>Tue, 10 Feb 2015 21:45:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIStepper.html</guid><description>&lt;p&gt;Base Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;value;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;minimumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;maximumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;stepValue;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Other Control Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;continuous;//是否持续触发 UIControlEventValueChanged 事件&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;autorepeat;//按住的时候是否持续触发,默认是 YES&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;wraps;//是否在 min 和 max 之间循环,默认 NO&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UISlider</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UISlider.html</link><pubDate>Mon, 09 Feb 2015 22:28:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UISlider.html</guid><description>&lt;p&gt;base attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;minimumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;maximumValue;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIImage.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;</description></item><item><title>Objective-C Learning Notes - First practice using UITextField and UITextView and UIButton</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-First-practice.html</link><pubDate>Mon, 09 Feb 2015 19:36:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-First-practice.html</guid><description>&lt;p&gt;联合使用文本框,文本视图和按钮创建个简单的故事生成器(伪:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;让用户通过3个文本框(UITextField)输入一个名词(地点),一个动词和一个数字.用户还可以输入或修改一个模板,该模板包含将生成的故事概要.由于模板可能多行,因此将使用一个文本视图(UITextView)来显示这些信息.当用户按下按钮(UIButton)时将触发一个操作,该操作将生成故事并将其输入到另一个文本视图中.&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UIButton</title><link>https://adolsai.com/archives/Objective-C-Learning-Notes-UIButton.html</link><pubDate>Thu, 05 Feb 2015 00:57:00 +0800</pubDate><guid>https://adolsai.com/archives/Objective-C-Learning-Notes-UIButton.html</guid><description>&lt;p&gt;UIButton&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Base Attributes:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;UIButtonType:&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeCustom&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeRoundedRect&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeDetailDisclosure&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeInfoLight&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeInfoDark&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UIButtonTypeContactAdd&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UILabel</title><link>https://adolsai.com/archives/object-c-learning-notes-uilabel-and-uibutton.html</link><pubDate>Tue, 03 Feb 2015 21:29:00 +0800</pubDate><guid>https://adolsai.com/archives/object-c-learning-notes-uilabel-and-uibutton.html</guid><description>&lt;p&gt;UILabel&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Base Attributes：&lt;br/&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;font&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;size&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;backgroundColor &amp;amp; align&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentLeft&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentCenter&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextAlignmentRight&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;textColor&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;adjustsFontSizeToFitWidth&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - UITextField and UITextView</title><link>https://adolsai.com/archives/object-c-learning-notes-uitextfiled-and-uitextview.html</link><pubDate>Mon, 02 Feb 2015 22:32:00 +0800</pubDate><guid>https://adolsai.com/archives/object-c-learning-notes-uitextfiled-and-uitextview.html</guid><description>&lt;p&gt;UITextField Attribute that often used:&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;borderStyle;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;background;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;backgroundColor;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;clearButtonMode;&lt;/p&gt;&lt;/li&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: square;"&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeAlways;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeNever;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFieldViewModeWhileEditing;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UITextFiledViewModeUnlessEditing;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Objective-C Learning Notes - Cocoa Touch framework 1 list</title><link>https://adolsai.com/archives/56.html</link><pubDate>Wed, 14 Jan 2015 21:54:00 +0800</pubDate><guid>https://adolsai.com/archives/56.html</guid><description>&lt;p&gt;从今天开始好好复习整理一下学过的东西。&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;h3&gt;&lt;strong&gt;From:&amp;nbsp;&lt;a href="https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898"&gt;iOS Technology Overview&lt;/a&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;/blockquote&gt;&lt;h3&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;容许我盗个图：&lt;/p&gt;&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;&lt;img loading="lazy" decoding="async" src="https://adolsai.com/uploads/2015/07/03/1435893078217797.webp" title="1435893078217797.png" alt="SystemLayers_2x.png"/&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;framework used in Cocoa Touch&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Music &amp;amp; Movie:&lt;br/&gt;&lt;/p&gt;&lt;ul class=" list-paddingleft-2" style="list-style-type: disc;"&gt;&lt;li&gt;&lt;p&gt;Core Audio&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Open Al&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Media Library&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;AV Foundation&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>冒个泡</title><link>https://adolsai.com/archives/55.html</link><pubDate>Thu, 16 Oct 2014 22:45:47 +0800</pubDate><guid>https://adolsai.com/archives/55.html</guid><description>&lt;p&gt;我居然回来了23333333333&lt;/p&gt;</description></item><item><title>centos ntpdate</title><link>https://adolsai.com/archives/54.html</link><pubDate>Thu, 01 May 2014 10:51:00 +0800</pubDate><guid>https://adolsai.com/archives/54.html</guid><description>&lt;p&gt;在使用CentOS系统的时候，我们可能会遇到时间不准的问题，那我们如何解决这个我问题呢，下面就来教大家一个CentOS系统时间同步的方法，希望大家可以解决自己所存在的疑问。&lt;/p&gt;</description></item><item><title>easy way to save web's pv data</title><link>https://adolsai.com/archives/53.html</link><pubDate>Wed, 30 Apr 2014 19:57:00 +0800</pubDate><guid>https://adolsai.com/archives/53.html</guid><description>&lt;p&gt;目标：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;不访问数据库&lt;/li&gt;&#10;&lt;li&gt;使用xml文件保存近一周的统计数据&lt;/li&gt;&#10;&lt;li&gt;从apache的access_log文件中取数据&lt;/li&gt;&#10;&lt;li&gt;crontab运行，每日定时更新前一天的统计信息&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>enable apache's rewrite function on debian</title><link>https://adolsai.com/archives/47.html</link><pubDate>Wed, 02 Apr 2014 16:39:12 +0800</pubDate><guid>https://adolsai.com/archives/47.html</guid><description>&lt;p&gt;sudo a2enmod rewrite&lt;/p&gt;&#10;&lt;p&gt;指令后，即启用了 Mod_rewrite 模块。&lt;/p&gt;&#10;&lt;p&gt;另外，也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Apache RewriteRule</title><link>https://adolsai.com/archives/46.html</link><pubDate>Tue, 01 Apr 2014 20:41:00 +0800</pubDate><guid>https://adolsai.com/archives/46.html</guid><description>&lt;p&gt;&lt;strong&gt;Apache中 RewriteRule 规则参数介绍&lt;/strong&gt;&lt;br&gt;&#10;摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。这里着重介绍 RewriteRule 规则以及参数说明。&#10;Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试，比如服务器变量、环境变量、HTTP头、时间标记，甚至各种格式的用于匹配URL组成部分的查找数据库。&lt;/p&gt;</description></item><item><title>CodeIgniter code completion in Zend Studio</title><link>https://adolsai.com/archives/45.html</link><pubDate>Mon, 31 Mar 2014 21:09:00 +0800</pubDate><guid>https://adolsai.com/archives/45.html</guid><description>&lt;p&gt;如何在Zend Studio中添加CodeIgniter框架的代码提示功能呢？&lt;/p&gt;&#10;&lt;p&gt;把以下代码分别增加到CI_Controller和CI_Model的类声明中，也就是注释里面：&lt;/p&gt;&#10;&lt;p&gt;在CI_Controller和CI_Model的类定义前追加如下代码。&#10;既能够进行代码提示，也能够在自定义Model中访问$this-&amp;gt;db了。&lt;/p&gt;</description></item><item><title>javascript learning notes——function</title><link>https://adolsai.com/archives/43.html</link><pubDate>Wed, 12 Mar 2014 00:13:00 +0800</pubDate><guid>https://adolsai.com/archives/43.html</guid><description>&lt;p&gt;&lt;strong&gt;函数&lt;/strong&gt;：一次定义，多次执行。js的函数调用还有一个特性，每次调用都会拥有另一个值——本次调用的this值（上下文/context）。函数可以作为对象的一个属性，称为对象的方法。当通过对象调用函数时，该对象就是此次调用的上下文。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;//在定义的时候递归&#10;var f = function fact(x) {if (x&amp;lt;=1) return 1; else return x*fact(x-1);};&#10;//作为参数传递&#10;data.sort(function(a,b){return a-b;});&#10;//定义后立即使用&#10;var tensquared = (function(x){return x*x}(10));&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>difference between snapdragon 800 and 801</title><link>https://adolsai.com/archives/42.html</link><pubDate>Tue, 11 Mar 2014 21:17:00 +0800</pubDate><guid>https://adolsai.com/archives/42.html</guid><description>&lt;p&gt;高通6个葫芦娃-_,-&lt;/p&gt;&#10;&lt;p&gt;A couple of weeks ago at MWC, Qualcomm announced its Snapdragon 801 which was positioned as a speed bump for the next wave of flagship smartphones. Qualcomm touted a 2.5GHz CPU frequency (up from 2.3GHz with Snapdragon 800), as well as increased GPU, ISP and memory interface speeds. Samsung announced immediate support for the new Snapdragon 801 with the Galaxy S 5, as did Sony with the Xperia Z2. Unfortunately this is where confusion set in. The Galaxy S 5 was advertised as a Snapdragon 801 with a 2.5GHz CPU clock, while the Xperia Z2 claimed the same Snapdragon 801 branding but with a 2.3GHz CPU clock - the same frequency as a Snapdragon 800. If it's not CPU frequency that separates a Snapdragon 800 from an 801, what does? The answer, as it turns out, is a little more complex. The table below should help explain it all:&lt;/p&gt;</description></item><item><title>set debian default editor</title><link>https://adolsai.com/archives/39.html</link><pubDate>Mon, 10 Mar 2014 16:25:00 +0800</pubDate><guid>https://adolsai.com/archives/39.html</guid><description>&lt;p&gt;debian终端下默认编辑器为nano，比如crontab -e就会打开nano，这个编辑器用起来很不习惯，想修改为vim,当然,你的debian系统必须先安装vim.如果已经安装vim,请输入如下命令:&#10;输入命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;update-alternatives --config editor&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>rsync install &amp;amp; configuration</title><link>https://adolsai.com/archives/38.html</link><pubDate>Mon, 10 Mar 2014 16:23:00 +0800</pubDate><guid>https://adolsai.com/archives/38.html</guid><description>&lt;p&gt;配置rsync 同步数据 rpm包安装rsync及配置&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;[root@Hammer home]# rpm -qa |grep rsync #检查系统是否安装了rsync软件包&#10;rsync-2.6.8-3.1&#10;[root@Hammer CentOS]# rpm -ivh rsync-2.6.8-3.1.i386.rpm # 如果没有安装则手动安装&#10;&#10;[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync &#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>javascript learning notes——array</title><link>https://adolsai.com/archives/37.html</link><pubDate>Sat, 08 Mar 2014 15:24:00 +0800</pubDate><guid>https://adolsai.com/archives/37.html</guid><description>&lt;p&gt;把数组的笔记写完先&#10;数组继承自Array.prototype中的属性，定义了一套丰富的数组操作函数，对于类数组对象同样有效。&#10;数组是javascript对象的特殊形式，用数字引索来访问数组元素要比访问常规的对象属性快很多。&#10;javascript数组的引索是从零开始的32位数值。对于稠密数组，length即是数组包含的元素个数。对于稀疏数值，length比所有元素的引索都要大。&lt;/p&gt;</description></item><item><title>javascript learning notes——object</title><link>https://adolsai.com/archives/36.html</link><pubDate>Fri, 07 Mar 2014 23:41:00 +0800</pubDate><guid>https://adolsai.com/archives/36.html</guid><description>&lt;p&gt;《javascript权威指南》这本书有点太专业了，今天只是看了对象和数组。&#10;对象：不知道是我之前看的书太少还是js的对象实在很特别。我感觉js里面的对象和其他语言里面的用法差了很远。&#10;除了字符串、数字、true、false、null和undefined之外，js中的值都是对象&#10;对象是可变的，是通过引用来操作对象的，对象的属性可以变动，甚至还有属性的特性(writable\enumerable\configurable)&#10;对象都拥有的三个相关的对象属性(protoype\class\extensible flag)&#10;三类对象(native obj\host obj\user-defined obj)，两类属性(own property\inherited property)&lt;/p&gt;</description></item><item><title>Authenticating with OAuth</title><link>https://adolsai.com/archives/34.html</link><pubDate>Wed, 05 Mar 2014 19:58:00 +0800</pubDate><guid>https://adolsai.com/archives/34.html</guid><description>&lt;p&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-21"&gt;http://tools.ietf.org/html/draft-ietf-oauth-v2-21&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3&gt;在认证和授权的过程中涉及的三方包括:&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;服务提供方&lt;/strong&gt;，用户使用服务提供方来存储受保护的资源，如照片，视频，联系人列表。&#10;&lt;strong&gt;用户&lt;/strong&gt; ，存放在服务提供方的受保护的资源的拥有者。&#10;&lt;strong&gt;客户端&lt;/strong&gt; ，要访问服务提供方资源的第三方应用。在认证过程之前，客户端要向服务提供者申请客户端标识。&lt;/p&gt;</description></item><item><title>GB11643-1999 &amp;amp; ISO 7064 verify function</title><link>https://adolsai.com/archives/31.html</link><pubDate>Sat, 01 Mar 2014 11:10:00 +0800</pubDate><guid>https://adolsai.com/archives/31.html</guid><description>&lt;p&gt;&lt;a href="http://blog.csdn.net/nsq122/article/details/6699002"&gt;http://blog.csdn.net/nsq122/article/details/6699002&lt;/a&gt;&#10;身份证校验位的计算/ISO 7064:1983.MOD 11-2 算法&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;&amp;lt;?&#10;function iso7064($vString)&#10;{&#10;// ISO 7064:1983.MOD 11-2&#10;// by goseaside@sina.com&#10;$wi = array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);&#10;$hash_map = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');&#10;$i_size = strlen($vString);&#10;$bModify = '?' == substr($vString, -1);&#10;$i_size1 = $bModify ? $i_size : $i_size + 1;&#10;for ($i = 1; $i &amp;lt;= $i_size; $i++) { &#10;$i1 = $vString[$i - 1] * 1;&#10;$w1 = $wi[($i_size1 - $i) % 10];&#10;$sigma += ($i1 * $w1) % 11; &#10;}&#10;if($bModify) return str_replace('?', $hash_map[($sigma % 11)], $vString);&#10;else return $hash_map[($sigma % 11)];&#10;}&#10;/*&#10;// Demo&#10;// $s 为某个 17 位身份证号码，不包含校验位&#10;echo iso7064($s); // 获得校验位的值&#10;echo iso7064(&amp;quot;$s?&amp;quot;); // 包含校验位的结果&#10;*/&#10;?&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>vmware virtualization system install [2] vsphere</title><link>https://adolsai.com/archives/30.html</link><pubDate>Sat, 01 Mar 2014 09:03:00 +0800</pubDate><guid>https://adolsai.com/archives/30.html</guid><description>&lt;p&gt;安装vsphere后，打开&lt;/p&gt;</description></item><item><title>vmware virtualization system install [1] exsi install</title><link>https://adolsai.com/archives/16.html</link><pubDate>Fri, 28 Feb 2014 18:37:00 +0800</pubDate><guid>https://adolsai.com/archives/16.html</guid><description>&lt;p&gt;&lt;strong&gt;机器配置&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;CPU：英特尔赛扬至尊处理器G1610&#10;主板：华擎 h61m-vs4&#10;内存：2G+4G&#10;硬盘：日立120G（2.5寸）、希捷160G（有坏道）、intel ssd 330 40G、8G tf卡+usb读卡器（exsi 安装盘）&#10;网卡：BCM5721(主板自带的8106E不能被exsi识别，只能另外买一个了。不过RTL81**的千兆集成网卡可以上exsi5.5，度娘有详情。&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>typecho change siteUrl</title><link>https://adolsai.com/archives/15.html</link><pubDate>Thu, 27 Feb 2014 11:06:00 +0800</pubDate><guid>https://adolsai.com/archives/15.html</guid><description>&lt;p&gt;1、现在域名供应商修改域名指向&lt;/p&gt;&#10;&lt;p&gt;2、然后修改本地typecho数据库&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;mysql -u*name* -p*password* typecho&#10;&#10;mysql&amp;gt; show tables;&#10;+-----------------------+&#10;| Tables_in_typecho |&#10;+-----------------------+&#10;| typecho_comments |&#10;| typecho_contents |&#10;| typecho_fields |&#10;| typecho_metas |&#10;| typecho_options |&#10;| typecho_relationships |&#10;| typecho_users |&#10;+-----------------------+&#10;7 rows in set (0.00 sec)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>namespace</title><link>https://adolsai.com/archives/13.html</link><pubDate>Wed, 26 Feb 2014 22:42:00 +0800</pubDate><guid>https://adolsai.com/archives/13.html</guid><description>&lt;p&gt;sb的我居然一直都没有用过这个东西...&lt;/p&gt;&#10;&lt;p&gt;度娘&#10;命名空间是用来组织和重用代码的编译单元。如同名字一样的意思，NameSpace（名字空间），之所以出来这样一个东西，是因为人类可用的单词数太少，并且不同的人写的程序不可能所有的变量都没有重名现象，对于库来说，这个问题尤其严重，如果两个人写的库文件中出现同名的变量或函数(不可避免)，使用起来就有问题了，为了解决这个问题，引入了名字空间这个概念，通过使用 namespace xxx；你所使用的库函数或变量就是在该名字空间中定义的，这样一来就不会引起不必要的冲突了。&lt;/p&gt;</description></item><item><title>endif,endwhile,endfor,endforeach and endswitch</title><link>https://adolsai.com/archives/12.html</link><pubDate>Wed, 26 Feb 2014 22:25:00 +0800</pubDate><guid>https://adolsai.com/archives/12.html</guid><description>&lt;p&gt;&lt;a href="http://www.cnblogs.com/janoyu/archive/2010/05/04/sourcejoy_com_php_other_syntax.html"&gt;http://www.cnblogs.com/janoyu/archive/2010/05/04/sourcejoy_com_php_other_syntax.html&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法，比如：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;&amp;lt;?php if(empty($GET_['a'])): ?&amp;gt;&#10;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;空的&amp;lt;/font&amp;gt;&#10;&amp;lt;?php endif; ?&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;对于相当一部分PHP爱好者来说根本没见过啊，这些是什么东西呢？难道是那些博客的开发者自己搞的仿PHP的模板语言？&#10;非也，其实这些都是PHP的语法，只不过不常用而已，这些都是PHP流程控制的替代语法。&#10;这里就就给大家详细说一下PHP流程控制的替代语法。什么是替代语法？&#10;简单的说就是一些语法的另类写法。&lt;/p&gt;</description></item><item><title>dnsmasq bind dns</title><link>https://adolsai.com/archives/11.html</link><pubDate>Wed, 26 Feb 2014 17:59:00 +0800</pubDate><guid>https://adolsai.com/archives/11.html</guid><description>&lt;p&gt;&lt;strong&gt;DNSmasq&lt;/strong&gt;&#10;DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具，适用于小型网络，它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名，这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合，并且允许DHCP分配的地址能在DNS中正常解析，而这些DHCP分配的地址和相关命令可以配置到每台主机中，也可以配置到一台核心设备中（比如路由器），DNSmasq支持静态和动态两种DHCP配置方式。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;我这里主要是为了修改host表&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;dnsmasq有dns功能这个早在第一次使用的时候就知道，一直没有去研究，这次需要用了，所以简单研究了一下，修改两个参数即可了：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;resolv-file=/etc/dnsmasq.resolv.conf&#10;addn-hosts=/etc/dnsmasq.hosts&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>connect mysql from outside server</title><link>https://adolsai.com/archives/10.html</link><pubDate>Wed, 26 Feb 2014 17:53:00 +0800</pubDate><guid>https://adolsai.com/archives/10.html</guid><description>&lt;p&gt;先增加用户：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grant all privileges on *.* to dev@&amp;quot;%&amp;quot; identified by 'dev' with grant option;&#10;grant all privileges on *.* to dev@&amp;quot;localhost&amp;quot; identitied by 'dev' with grant option;&#10;flush privileges&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;修改绑定本机：&lt;/p&gt;</description></item><item><title>getExcelTime function</title><link>https://adolsai.com/archives/9.html</link><pubDate>Wed, 26 Feb 2014 17:33:00 +0800</pubDate><guid>https://adolsai.com/archives/9.html</guid><description>&lt;p&gt;//转换excel的时间格式 get excel time&#10;function excelTime($date, $time = false) {&lt;br&gt;&#10;if(function_exists('GregorianToJD')){&lt;br&gt;&#10;if (is_numeric( $date )) {&lt;br&gt;&#10;$jd = GregorianToJD( 1, 1, 1970 );&lt;br&gt;&#10;$gregorian = JDToGregorian( $jd + intval ( $date ) - 25569 );&lt;br&gt;&#10;$date = explode( '/', $gregorian );&lt;br&gt;&#10;$date_str = str_pad( $date [2], 4, '0', STR_PAD_LEFT )&lt;br&gt;&#10;.&amp;quot;-&amp;quot;. str_pad( $date [0], 2, '0', STR_PAD_LEFT )&lt;br&gt;&#10;.&amp;quot;-&amp;quot;. str_pad( $date [1], 2, '0', STR_PAD_LEFT )&lt;br&gt;&#10;. ($time ? &amp;quot; 00:00:00&amp;quot; : '');&lt;br&gt;&#10;return $date_str;&lt;br&gt;&#10;}&lt;br&gt;&#10;}else{&lt;br&gt;&#10;$date=$date&amp;gt;25568?$date+1:25569;&lt;br&gt;&#10;/&lt;em&gt;There was a bug if Converting date before 1-1-1970 (tstamp 0)&lt;/em&gt;/&lt;br&gt;&#10;$ofs=(70 * 365 + 17+2) * 86400;&lt;br&gt;&#10;$date = date(&amp;quot;Y-m-d&amp;quot;,($date * 86400) - $ofs).($time ? &amp;quot; 00:00:00&amp;quot; : '');&lt;br&gt;&#10;}&lt;br&gt;&#10;return $date;&lt;br&gt;&#10;}&lt;/p&gt;</description></item><item><title>js debug function</title><link>https://adolsai.com/archives/8.html</link><pubDate>Wed, 26 Feb 2014 17:30:00 +0800</pubDate><guid>https://adolsai.com/archives/8.html</guid><description>&lt;pre&gt;&lt;code&gt;//在document中的一个指定的区域输出调试信息&#10;//如果document不存在这样的一个区域，则创建一个&#10;function debug(msg){&#10; //通过查看HTML元素id属性来查找文档的调试部分&#10; var log = document.getElementById("debuglog");&#10;&#10; if (!log){&#10; log = document.createElement("div");&#10; log.id = "debuglog";&#10; log.innerHTML = "&amp;lt;h1&amp;gt;Debug Log&amp;lt;/h1&amp;gt;";&#10; document.body.appendChild(log);&#10; }&#10; //将消息包装在&amp;lt;pre&amp;gt;中，并添加到log中&#10; var pre = document.createElement("pre");&#10; var text = document.createTextNode(msg);&#10; pre.appendChild(text);&#10; log.appendChild(pre);&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>vps host test</title><link>https://adolsai.com/archives/6.html</link><pubDate>Tue, 25 Feb 2014 23:02:00 +0800</pubDate><guid>https://adolsai.com/archives/6.html</guid><description>&lt;p&gt;一、磁盘连续写入测试（268MB）(&lt;a href="http://32mb.cn/archives/3.html"&gt;http://32mb.cn/archives/3.html&lt;/a&gt;)&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;dd if=/dev/zero of=32mbcn bs=64k count=4k oflag=dsync&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;二、磁盘连续读取测试（268MB）&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;dd if=32mbcn of=/dev/zero bs=64k count=4k iflag=direct&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;以上测试为通过DD命令先写入一个268MB的文件，再通过DD命令读取。分配单元大小（簇）：4K。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>centos software installation</title><link>https://adolsai.com/archives/5.html</link><pubDate>Tue, 25 Feb 2014 18:01:00 +0800</pubDate><guid>https://adolsai.com/archives/5.html</guid><description>&lt;p&gt;&lt;strong&gt;gcc compiler&lt;/strong&gt; (&lt;a href="http://www.oschina.net/code/snippet_54100_10351"&gt;http://www.oschina.net/code/snippet_54100_10351&lt;/a&gt;)&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;yum -y install gcc&#10;yum -y install gcc-c++ &#10;yum install make&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;-- 或者&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;yum groupinstall &amp;quot;Development Tools&amp;quot;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;-- 或者&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;yum install gcc gcc-c++ kernel-devel&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>a new vps for dev</title><link>https://adolsai.com/archives/4.html</link><pubDate>Tue, 25 Feb 2014 17:40:00 +0800</pubDate><guid>https://adolsai.com/archives/4.html</guid><description>&lt;p&gt;[root@localhost typecho]# dd if=/dev/zero of=32mbcn bs=64k count=4k oflag=dsync&#10;4096+0 records in&#10;4096+0 records out&#10;268435456 bytes (268 MB) copied, 20.0425 s, 13.4 MB/s&#10;[root@localhost typecho]# dd if=32mbcn of=/dev/zero bs=64k count=4k iflag=direct&#10;4096+0 records in&#10;4096+0 records out&#10;268435456 bytes (268 MB) copied, 2.13719 s, 126 MB/s&lt;/p&gt;</description></item><item><title>关于</title><link>https://adolsai.com/about.html</link><pubDate>Tue, 25 Feb 2014 16:31:00 +0800</pubDate><guid>https://adolsai.com/about.html</guid><description>&lt;p&gt;Hello World!&#10;&lt;br/&gt;&lt;br/&gt;&#10;当前运行环境：aliyun ECS 乞丐版@2M带宽&#10;&lt;br/&gt;&#10;&lt;/p&gt;</description></item></channel></rss>