Alex Lin's Notes

Strategy, Execution, Communication.

Reveal是分析、调试iOS应用UI的利器。

Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。

阅读全文 »

直播开发流程:
数据采集→ 数据编码 → 数据传输(流媒体服务器) → 解码数据 → 播放显示
本文主要介绍如何搭建RTMP直播服务器以及测试流媒体服务器是否搭建成功。

阅读全文 »

面向过程和面向对象

  1. 面向过程是祈使句,面向对象是主谓(宾)结构。

  2. 面向过程注重数据的存储和操作,面向对象注重用程序模拟生活逻辑。

  3. 面向过程数据和操作数据的过程是分离的,没有逻辑上的必然联系;面向对象中数据和操作数据的方法是逻辑上的整体,称之为对象。

面向对象的基本概念

  • 对象:现实世界中的对象是我们认识世界的基本单元,世界就是由这些基本单元组成的。一切皆为对象;每个对象都是独一无二的;对象都有属性和行为;对象都属于某个类。

  • 类:类是对一组具有共同属性和行为的对象的抽象,它是对象的蓝图和模板。

  • 消息:对象与对象之间存在着一定的联系,这种联系通过消息的传递来实现。程序中的一切操作都通过向对象发送消息来实现,对象接收到消息后,调用有关对象的行为来完成相应的操作。

面向对象的3个基本要素

封装

封装是把一个事物包装起来,使外界不了解它的内部的具体情况。在面向对象的程序设计中,封装就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控制的接口,内部大部分的实现细节对外隐蔽,达到对数据访问权的合理控制。封装使程序中个部分之间的相互联系达到最小,提高了程序的安全性,简化了程序代码的编写工作。

继承

继承是从已有的类创建新类的过程,提供继承信息的称为父类,得到继承信息的称为子类,子类和父类之间是IS-A关系,继承使得类与类之间形成一个层次结构。

多态

多态是不同结构的对象可以以各自不同的方式响应同一个消息,或者说同一个消息可以根据发送消息的对象的不同而采用多种不同的操作行为,这是面向对象最精髓的部分。

阅读全文 »

提交应用之前的检查列表

为了帮助你的应用能够尽可能顺利的过审,请查看下面列出来的可能降低审核速度或者被拒绝的常见失误。本清单无法代替审核条款,但你需要确保你已经达到了清单的要求作为良好的开始。

确保你已经:

阅读全文 »

转码技术

URL转码(百分号转码)

URL:只有字母和数字[0-9a-zA-Z]、一些特殊符号$-_.+!*'(),[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。

URL 编码实现

1
2
3
4
// 废弃接口
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
// iOS 7 之后
- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters

URL 解码实现

1
2
3
4
// 废弃接口
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
// iOS 7 之后
@property(readonly, copy) NSString *stringByRemovingPercentEncoding

参考链接

阅读全文 »

安装Node.js

1
2
3
4
5
6
7
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_6.x | bash -
apt-get install -y nodejs

BasS (后端即服务)

平台 作用 链接
LeanCloud 存储、消息推送、用户分析、扩展模块 https://leancloud.cn/
Bmob 云数据库、文件服务、消息推送、短信验证码 http://www.bmob.cn/
七牛 云存储 http://www.qiniu.com/
环信 即时通讯 http://www.easemob.com/
融云 即时通讯 http://www.rongcloud.cn/
CloudKit iCloud 的 SDK,使用 CloudKit 让开发者的 iOS 应用和 OS X 应用共享数据 https://developer.apple.com/icloud/index.html
友盟 为中国移动开发者提供免费的统计分析服务及开发者工具 http://www.umeng.com
极光推送 专注推送的 BasS 服务提供商 https://www.jpush.cn
Flurry Yahoo的App分析统计工具集 https://developer.yahoo.com
Google Analytics Google的移动分析统计 http://www.google.com/intl/zh-CN_ALL/analytics/index.html
MTA 腾讯云统计 http://mta.qq.com
App Annie 数据统计分析 https://www.appannie.com/cn/
阅读全文 »

工具类

提取assets.car中的图片

ThemeEngine:Mac下的Assets.car文件查看工具,能够将图片导入到PhotoShop中进行编辑,提供了导出图片的功能。ThemeEngine拥有命令行版和图形界面版。使用私有APICoreUI开发。 下载地址:https://github.com/alexzielenski/ThemeEngine

cartool:Mac下的命令行小工具,能够将Assets.car文件解包到指定文件夹。目标文件夹需要事先创建好。该工具使用私有API中的CoreUI进行开发。 下载地址:https://github.com/steventroughtonsmith/cartool

1
./cartool Assets.car outputDir

acextract:Mac下的命令行工具,Swift版。 下载地址:https://github.com/bartoszj/acextract

[iPhone 6 屏幕揭秘](iPhone 6屏幕揭秘.pdf)

iOS 通过获取iTunes上的APP信息,判断是否提醒升级APP

1
POST https://itunes.apple.com/CN/lookup?id=978591579

使用POST方法,id 是iTunes connect里APP信息的Apple ID:为APP自动生成的id

Charles 请求 HTTPS 出现 “You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu”

首先确认是否安装了 Charles 的证书,该证书在菜单 Help -> SSL Proxying 下,需要同时安装在 Mac 和 模拟器或者设备上,具体使用方法参见子菜单。其次因为 10.3 以上系统需要你在“证书信任设置”中信任 Charles 的证书。在设备上点击设置 -> 通用 -> 关于本机 -> 证书信任设置 -> 选择 Charles 的证书打开。

通过 Apple Configurator 下载 ipa 包

  1. 安装Apple Configurator
  2. 打开Apple Configurator,连接 iOS 设备
  3. 点击导航栏的添加按钮选择 Apps,然后点选你需要的app,点击添加后,将会开始下载。
  4. 下载完成后,先别点击任何选项!打开Finder,然后进入这个路径 ~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps/ 就可以看到你刚下载的 ipa 包。这个是临时文件,你关闭 Apple Configurator 或者点选后会自动消失的。
阅读全文 »

只显示子目录、不显示文件,可以使用下面的命令。

1
2
3
4
5
6
7
8
9
10
11
# 只显示常规目录
$ ls -d */
$ ls -F | grep /
$ ls -l | grep ^d
$ tree -dL 1

# 只显示隐藏目录
$ ls -d .*/

# 隐藏目录和非隐藏目录都显示
$ find -maxdepth 1 -type d

来自runyf

Git常用命令速查表

来自Coding

清除DNS缓存命令

1
2
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

批量重命名文件

以下命令将文件名中包含~iphone的文字替换为空字符

1
for i in `ls`; do mv -f $i `echo $i | sed 's/~iphone//g'`; done

Git 删除 一个 submodule

  1. 删除 .gitmodules 文件中关联内容;
  2. 执行 git add .gitmodules
  3. 删除 .git/config 文件中关联内容;
  4. 执行 git rm --cached path_to_submodule(不包含尾部斜线)
  5. 执行 rm -rf .git/modules/path_to_submodule
  6. 提交 git commit -m "Removed submodule <name>"
  7. 删除子模块文件 rm -rf path_to_submodule

Changing remote repository for a git submodule

You should just be able to edit the .gitmodules file to update the URL and then run git submodule sync to reflect that change to the superproject and your working copy.

1
2
3
4
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Development
git submodule sync
git submodule update --init --recursive --remote

参考链接:http://stackoverflow.com/questions/913701/changing-remote-repository-for-a-git-submodule

显示磁盘使用空间

1
du -sh *

程序员要提高自己的编程能力,有两个捷径:一、多写代码不断做个人项目;二、多看多学习别人的代码,看代码要比写代码难很多倍。

阅读全文 »
0%