命令提示符的格式

Tue 09 May 2017 by Little Captain

相关环境变量

有两个环境变量来控制命令提示符的格式

  • PS1 : 控制默认命令提示符的格式
  • PS2 : 控制后续命令提示符的格式
echo $PS1
echo $PS2

bash shell 提示符字符

配置

# 这个配置只会在当前会话有效
PS1="[\t][\u]\$"
read more

nullable&nonnull

Mon 08 May 2017 by Little Captain

直面问题

Swift 中有 optional 和 non-optional. 在 Objective-C 中没有这一概念. 那么在 Swift 和 Objective-C 混合编程的时候, 编译器会统一使用 non-optional 处理, 这样处理往往并不是我们想要的结果.

苹果的解决方案

引入三对关键字

  • __nullable 和 __nonnull
  • _Nonnull 和 _Nullable
  • nonnull 和 nullable
  • nonnull: 对象不应该为空
  • nullable: 对象可以是 NULL 或 nil
  • 三种写法本质上都是互通的,只是放的位置不同

使用总结

  • nonnull 和 nullable: 属性、方法返回值、方法参数
  • _Nonnull 和 _Nullable: C 函数的参数 …
read more

发布框架到 CocoaPods 上

Mon 08 May 2017 by Little Captain

CocoaPods如何管理框架

框架的发布与安装

发布流程

1. 注册

pod trunk register email地址 yourname

执行上面的命令后, 你将收到一封邮件, 必须验证才能进行后续操作

2. 查询用户信息

pod trunk me

这条命令将输出你的个人相关信息

- Name:     XXX
  - Email:    littlecaptain@foxmail.com
  - Since:    January 26th, 22:49
  - Pods:
    - LCDemo
    - LCCategories
    - LCRuntimeTool
    - JFVideoPlayView
    - LCNetworking
  - Sessions:
    - January 26th, 22:49 -      June 17th, 06:08. IP: 119.129 …
read more

git 基本操作

Mon 08 May 2017 by Little Captain

常用单命令操作

  • git init: 初始化本地仓库
  • git status: 查看文件状态
  • git add .: 添加文件到暂缓区
  • git commit -m "注释": 从暂缓区提交文件到本地代码仓库
  • git tag -a '标签' -m "注释": 打标签

  • git tag: 查看标签

  • git tag -d '标签名称': 删除标签
  • git remote add origin 远程仓库地址: 给本地仓库添加远程仓库关联地址
  • git push origin master: 上传本地代码到远程仓库
  • git push --tags: 上传标签到远程仓库
  • git push origin :标签: 从远程仓库删除标签 …
read more

PHP 开发 App 接口

Mon 08 May 2017 by Little Captain

App接口简介

App接口介绍

  • App(通信)接口定义
  • 接口地址: url
  • 接口文件: 服务器php文件(处理一些业务逻辑)
  • 接口数据: 服务器返回的json、xml

App如何进行通信

通信格式区别(json、xml对比)

  • 可读性方面: xml有更清晰的结构
  • 生成数据方面: json更简单易用
  • 传输速度方面: json更节省流量

App接口做的哪些事儿

  • 获取数据: 从数据库中或缓存中获取数据, 然后通过接口数据返回给客户端
  • 提交数据: 通过接口提交数据给服务器, 然后服务器入库处理, 或其他处理

封装通信接口方法

JSON方式封装接口数据方法

  • PHP生成JSON数据: json_encode(只接受 uft-8 编码)
  • 通信数据标准格式的必要字段
    • code: 状态码
    • message: 提示信息(数据返回成功、 邮箱格式不正确等等)
    • data: 具体数据

XML方式封装接口数据方法

  • PHP生成XML数据
    • 方式1 …
read more

网络模型

Sun 07 May 2017 by Little Captain

OSI七层模型

1. 应用层

  • 数据单位: APDU
  • 作用: 针对用户(应用程序)

2. 表示层

  • 数据单位: PPDU
  • 作用: 数据的编码、加密和解压缩等

3. 会话层

  • 数据单位: SPDU
  • 作用: 确定数据是否向下传递

4. 传输层

  • 数据单位: TPDU
  • 作用: 确定数据是否可靠; 确定网络端口是否可靠; 查错、校验; 流量控制等等

5. 网络层

  • 数据单位: 报文, 报文中有 IP 地址
  • 作用: 确定IP地址编码

6. 数据链路层

  • 数据单位: 帧, 帧中最重要的数据就是MAC地址
  • 作用: MAC地址编码

7. 物理层

  • 数据单位 …
read more

网络基本概念

Sun 07 May 2017 by Little Captain

物理地址

  • 又名: MAC地址, 网卡硬件地址
  • 作用: 用于局域网内的通信
  • 48位

IP地址

  • IP 协议: Internet Protocol
  • IP 协议版本: IPv4(不定长包头、解析耗时); IPv6(定长包头)
  • 32位: 8位一组共4组(X1.X2.X3.X4, 0.0.0.0->255.255.255.255)
  • 分类
    • 用 IP 的第一位对网络进行分类
    • 每个网段的主机数用子网掩码确定
    • 每个网络的第一个地址代表网络本身
    • 每个网络的最后一个地址代表网络的广播地址(广播地址是专门用于同时向网络中所有工作站进行发送的一个地址)

  • 子网掩码

端口

  • 属于传输层: 在传输层包头中(TCP头, UDP头)
  • 端口号

    • IP全球唯一类似于门牌号: 确定服务器位置 …
read more

iOS 开发中的各种尺寸

Sun 07 May 2017 by Little Captain

iPhone系列屏幕大小

2G, 3G, 3GS 4, 4s 5, 5s 6, 6s 6 Plus 6s Plus
320 x 480 320 x 480 320 x 568 375 x 667 414x736
1x 2x 2x 2x 3x

App Icon

| Device or context | Icon size | | :-: | :-: | :-: | | iPhone 6s Plus, iPhone 6 Plus | 180px by 180px | | iPhone 6s …

read more

搭建 git 服务器

Sun 07 May 2017 by Little Captain

准备篇

服务器

  • 创建git专用账户git
sudo adduser --system --shell /bin/bash --user-group git # CentOS
sudo adduser git ssh
sudo passwd git  
  • 修改git账户的home目录(有需求才改)
# 当然可以直接修改/etc/passwd文件
usermod -d /tmp git
  • 安装相关软件(在任何账户都可)
sudo apt-get update
sudo apt-get install git-core openssh-server openssh-client
sudo apt-get install python-setuptools
  • 进入git账户, 安装gitosis

  • 1.获取

git clone …
read more

分布式 git - 工作流程

Sun 07 May 2017 by Little Captain

集中式工作流

  • 集中式系统中通常使用的是单点协作模型 - 集中式工作流。 一个中心集线器,或者说仓库,可以接受代码,所有人将自己的工作与之同步。 若干个开发者则作为节点 - 也就是中心仓库的消费者 - 并且与其进行同步。

  • 如果两个开发者从中心仓库克隆代码下来,同时作了一些修改,那么只有第一个开发者可以顺利地把数据推送回共享服务器。 第二个开发者在推送修改之前,必须先将第一个人的工作合并进来,这样才不会覆盖第一个人的修改。 这和 Subversion (或任何 CVCS)中的概念一样,而且这个模式也可以很好地运用到 Git 中。

集成管理者工作流

  • 每个开发者拥有自己仓库的写权限和其他所有人仓库的读权限。 这种情形下通常会有个代表“官方”项目的权威的仓库。 要为这个项目做贡献,你需要从该项目克隆出一个自己的公开仓库,然后将自己的修改推送上去。 接着你可以请求官方仓库的维护者拉取更新合并到主项目。 维护者可以将你的仓库作为远程仓库添加进来,在本地测试你的变更,将其合并入他们的分支并推送回官方仓库。 整个流程看起来是这样的:
  • 项目维护者推送到主仓库。
  • 贡献者克隆此仓库,做出修改。
  • 贡献者将数据推送到自己的公开仓库。
  • 贡献者给维护者发送邮件,请求拉取自己的更新。
  • 维护者在自己本地的仓库中,将贡献者的仓库加为远程仓库并合并修改。
  • 维护者将合并后的修改推送到主仓库。

这是 GitHub 和 GitLab …

read more