SCRUM学习

角色

  • 产品负责人:产品负责人是管理产品待办列表的唯一责任人,也是产品最终的责任人。(稍后我们在介绍计划会议时,解释什么是产品待办列表。)简单来说,最终如果产品没做好,应该扣产品负责人的工资。

  • 开发团队:开发团队是负责将每轮 Scrum 迭代中计划的功能(可能是产品稿 + 美术稿的形式),交付成可发布的产品的各种专业人员。这里的各种专业人员包括:服务器端开发、Javascript 前端开发、客户端开发、测试人员等。开发团队是真正在玩这个 Scrum 游戏的人,其他人(例如产品负责人都只是部分参与)。

  • Scrum Master:Scrum Master 类似于杀人游戏中的法官,即游戏组织者。Scrum Master 并不是团队的领导,他仅仅是做一些组织工作,而对于一个 “自组织” 的团队来说,其实真正需要组织的事情也不太多,所以他常常由开发团队中的某一个人兼任。

阅读更多

IOS代码整理

删除svn记录

一、在linux下

1
find . -type d -name ".svn"|xargs rm -rf

1
find . -type d -iname ".svn" -exec rm -rf {} /;

二、在windows下用以下法子:

1、在项目平级的目录,执行dos命令:

1
xcopy project_dir project_dir_1 /s /i

2、或者在项目根目录执行以下dos命令

1
for /r . %%a in (.) do @if exist "%%a/.svn" rd /s /q "%%a/.svn"

检测是否含IDFA

1、打开终端cd到要检查的文件的根目录。

2、执行下列语句:
grep -r advertisingIdentifier .(别少了最后那个点号)。

阅读更多

mac抓包

在Mac中抓包,今天有用到,笔记做一下。

  1. 下载charles安装
    charles-proxy-3.9.3-applejava
  2. 下载回来的是试用版。那我们还是替换下文件。按照教程
    Contents->Resources->Java 替换charles.jar
    charles.jar
  3. 电脑和手机连接同一个局域网。修改手机http代理 手动
    服务器:mac的ip地址
    端口:8888
  4. 手机打开软件,Mac中Charles确认。抓包开始

#HTTPS抓包

  1. 用Safari打开,下载证书charles-proxy-ssl-proxying-certificate.crt,全部同意,安装。
  2. Charles配置
    1、 在Charles的工具栏上点击Proxy按钮,选择Proxy Settings…
    切换到SSL选项卡,选中Enable SSL Proxying,
    2、点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port填443
  3. 开始抓包

#抓包结束
关闭手机http代理,不然电脑关闭charles后无网络访问。

参考资料

阅读更多

RealTimeBlur解析

解析源码地址:https://github.com/xhzengAIB/RealTimeBlur

#主要核心功能

  1. 增加一个UIView
  2. 使用动画修改透明度

代码:alpha = 0.1;是关键

1
2
3
[[UIView alloc] initWithFrame:self.view.bounds];  
alpha = 0.1;
[self.view addSubview
1
2
3
4
5
[UIView animateWithDuration:3 delay:0 	options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.alpha = 1;
} completion:^(BOOL finished) {
view.alpha = 1;
}];

#分析代码

  1. XHRealTimeBlur做了所有该做的事情。
  2. XHGradientView提供了一种蒙版的样式
  3. UIView (XHRealTimeBlur)用关联的方式,在UIView中加了方式和属性,使之使用方便。
  4. objc_getAssociatedObject 关联了属性,关联的主要点在这里

阅读更多

IOS手势

ios手势参数

1
2
3
4
5
6
7
8
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGestureRecognizer:)];
[self addGestureRecognizer:tapGestureRecognizer];

- (void)handleTapGestureRecognizer:(UITapGestureRecognizer *)tapGestureRecognizer {
[self hiddenAnimationCompletion:^(BOOL finished) {

}];
}
  1. initWithTarget:self 后面方法(handleTapGestureRecognizer)所属的对象
  2. [self addGestureRecognizer:tapGestureRecognizer];把手势关联到哪个对象上面,目前是self,也可以是self.view.

阅读更多

限迁标准

汽车限迁标准

阅读更多

2015小结

为什么一个懒鬼会写这些,
因为快过年了,
因为要总结下,怕以后忘记
因为博客很久没有维护了
因为今天刚好有点时间
因为我觉得文字还是要写写的
因为好像写了会提高自己
最后因为学习下语法呗

迷茫

年初的时候,在想着今年到底有没有什么进步,自己有没有提升。我自认为是有提升了,但是自己又没有什么评判的标准。不知道到底到了什么水平,不管是技术还是做人。自认为这辈子技术上达到传说中大神的机会已经很渺茫了。因为我处的环境就不是一个以实现最新的技术或者创新一个技术为目的的,所以唯有改变自己的目标,做一个实用行的技术员吧。

阅读更多

sdk录制屏幕视频

利用Android sdk录制屏幕视屏,做demo效果图

阅读更多

加密app

使用指定的app需要输入密码,正取才能使用

阅读更多

launchMode

standard

实例: 每次都会new实例
效果: 从新跑完activity的所有生命周期,所有视觉效果上会有一闪的效果,画面重绘了
task: 还是在原来的栈中,不断在栈顶加入实例,不管是否存在

singleTop

实例: 如果当前实例在栈的顶端就不会new实例,否者都会new实例
效果: 如果在栈顶,画面不会有任何的变化,如果不是在栈顶,画面重绘,有activity替换的画面
task: 还是在原来的栈中,如果在栈顶,栈不变,否者把新实例加入栈顶

singleTask

实例: 如果当前实例在栈的顶端就不会new实例,否者都会new实例
效果: 如果在栈顶,画面不会有任何的变化(不会进入任何生命周期),
如果不是在栈顶 栈中存在,画面重绘,有activity替换的画面(不进oncreate 依次进入onNewIntent——>onResume)
task: 还是在原来的栈中,移除在他之上的实例,使他暴露在栈顶。

singleInstance

实例: 只有一个实例,有就不会new 没有就new, 一个栈只有一个实例
效果: 因为这里是要替换栈的,不是替换栈中实例,
所以,画面重绘,有activity替换的画面(不进oncreate 依次进入onNewIntent——>onResume)
task: 新实例就新栈

阅读更多