2017/08/24lesson

Aug 24, 2017

2017/08/07

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vim .gitignore

*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
DS_Store

#CocoaPods
Pods
Podfile.lock
build*
pics*
a.diff

这时还没生效,要么全部quit掉,要么clean cache:

1
2
3
4
5
改动过.gitignore文件之后,在repo的根目录下运行:
git rm -r --cached .
git add .
之后可以进行提交:
git commit -m "fixed untracked files"w

最近在学习openGL ES

发现这没有速成方法,遂接下来要每天都抄写熟悉,熟练。这,是一门必修课,肯定会有大用处的。
另附学习的metaball学习,还没学成,继续。
罗列好的学习网址:

小的app 的生存之道就只有做好,然后苹果推荐。不然没有推广,再好都没用。是金子总会发光,可会发光的金子,时间一长,人就变了胃口喜欢钞票了。IT,时时刻刻要变化。说这些就是要推荐,那随随便便就可以苹果推荐了??想多了,我查看了推过苹果推荐的,要么是公司花人力物力累积,要么是大牛写写出来绚丽。所以好的东西,需要的沉淀是必然的。没有花心思,只是小东西,苹果商店不缺,只有好的拼一把,才能出众!!!
openGL ES 这是非学不可。只要在我要用的领域学够!!!

使用宏忽略警告 http://blog.csdn.net/majiakun1/article/details/46424925

1.使用函数指针方式

1
2
3
4
SEL selector = NSSelectorFromString(@"someMethod");
IMP imp = [_controller methodForSelector:selector];
void (*func)(id, SEL) = (void *)imp;
func(_controller, selector);

当有额外参数时,如

1
2
3
4
SEL selector = NSSelectorFromString(@"processRegion:ofView:");
IMP imp = [_controller methodForSelector:selector];
CGRect (*func)(id, SEL, CGRect, UIView *) = (void *)imp;
CGRect result = func(_controller, selector, someRect, someView);

2.使用宏忽略警告

1
2
3
4
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[someController performSelector: NSSelectorFromString(@"someMethod")]
#pragma clang diagnostic pop

通过使用#pragma clang diagnostic push/pop,你可以告诉Clang编译器仅仅为某一特定部分的代码来忽视特定警告。
如果需要忽视的警告有多处,可以定义一个宏

1
2
3
4
5
6
7
#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
Stuff; \
_Pragma("clang diagnostic pop") \
} while (0)

在产生警告也就是performSelector的地方用使用该宏,如

1
2
3
SuppressPerformSelectorLeakWarning(
[_target performSelector:_action withObject:self]
);

如果需要performSelector返回值的话,

1
2
3
4
id result;
SuppressPerformSelectorLeakWarning(
result = [_target performSelector:_action withObject:self]
);

iOS时区

ADT = "America/Halifax";
AKDT = "America/Juneau";
AKST = "America/Juneau";
ART = "America/Argentina/Buenos_Aires";
AST = "America/Halifax";
BDT = "Asia/Dhaka";
BRST = "America/Sao_Paulo";
BRT = "America/Sao_Paulo";
BST = "Europe/London";
CAT = "Africa/Harare";
CDT = "America/Chicago";
CEST = "Europe/Paris";
CET = "Europe/Paris";
CLST = "America/Santiago";
CLT = "America/Santiago";
COT = "America/Bogota";
CST = "America/Chicago";
EAT = "Africa/Addis_Ababa";
EDT = "America/New_York";
EEST = "Europe/Istanbul";
EET = "Europe/Istanbul";
EST = "America/New_York";
GMT = GMT;
GST = "Asia/Dubai";
HKT = "Asia/Hong_Kong";
HST = "Pacific/Honolulu";
ICT = "Asia/Bangkok";
IRST = "Asia/Tehran";
IST = "Asia/Calcutta";
JST = "Asia/Tokyo";
KST = "Asia/Seoul";
MDT = "America/Denver";
MSD = "Europe/Moscow";
MSK = "Europe/Moscow";
MST = "America/Denver";
NZDT = "Pacific/Auckland";
NZST = "Pacific/Auckland";
PDT = "America/Los_Angeles";
PET = "America/Lima";
PHT = "Asia/Manila";
PKT = "Asia/Karachi";
PST = "America/Los_Angeles";
SGT = "Asia/Singapore";
UTC = UTC;
WAT = "Africa/Lagos";
WEST = "Europe/Lisbon";
WET = "Europe/Lisbon";
WIT = "Asia/Jakarta";

离开海外部,稍微总结一下

twitter 分享,是不跳转
instagram 只能分享图片
twitter 在创建完app key、secret 时需要在permission 里面再设置一项:获得access 能力。同时update。
外国在UI上注重的比国内要强很多。外国在矩阵、重度OpenGL 比国内要强很多。

Reveal_iFile_路径

http://www.cnblogs.com/blfbuaa/p/7248252.html
这时候,我们在Mac浏览器里打开192.168..**,就能够查看iPhone上的文件系统。并上传文件到iPhone了。

打开Mac上的Reveal。并选择”Help”-“Show Reveal Library in Finder”。这时候有2个文件:Reveal.framework和libReveal.dylib。

将Reveal.framework压缩(不能上传文件夹)并上传到iPhone的”/System/Library/Frameworks/”文件夹中,然后解压缩;

在iFile里打开”应用程序”文件夹(iFile的内置书签),找到你想查看的APP文件夹里的info.plist文件。查找这个APP的Bundle ID,如果为com.example.domain。

在Mac上创建libReveal.plist,编辑内容为:
“`
{
Filter={
Bundles = “com.example.domain”;
}
}
上传libReveal.plist到”/Library/MobileSubstrate/DynamicLibraries”,也就是和libReveal.dylib在一起。

最后一步。重新启动iPhone。然后打开想要查看的APP。Mac上的Reveal就有反应啦!

记一次GPUImage 在export movie 内存暴涨,崩溃问题

原因是在GPUImage 加了UIElementFilter 现实纹理,其在update中需要update 操作。机型是iOS 9 以上,只要视频大于2分钟,就一定出现崩溃现象。原因为,uielement 在update 内部操作中没有进行及时内存释放。此时操作,是将@autoreleasepool { [x update]; }包裹即可解决。

记一次比较闹心的事

之前从海外组回归到原本团队,海外组探求之后,没能做到利益,没办法,其实海外领队和其中内部全部开发:两个开发-.-都知道。这其实是一个没有绝对胜仗可打的局。前面没有路走,只有试试、只有闯闯,成功就成功,失败领队都没有怨言,壮士扼腕,是我觉得的扼腕。
回来之后我完成原本project内部的业务部分。正如当时进来时,大师和我们说的,这里面基本都是业务,全是业务。
是的,基本都是业务,按照其中条条框框,按部就班,规规矩矩。
重回到之前状态,还是没找到感觉,但一回来就给我weex 和内部代码之间的交互。那好,我搞搞,建了个类写一写,写到一半,他们又说继承他们的。好好好,继承你们的,想着他们还可能用得上这个,没去掉,至少之后可以继续扩展下去,就留着那个类,这个留着后话。
继承他人的类,那个类不小啊,,700多行,然后其有一些view 是weex 交流。weex 的html是军哥那边搞的,他都没做好,我要和他一起搞。继承的类,想着尽量不动那些代码,就用for 循环 把其上的view 全部删了。那个页面真不要啊,和他们讨论,他们说要是有要添加的,那不就一块没啦。。听到这里我蛋疼的一比。这是weex 页面,客户端要改也是在我新添加的层上加啊。我仅仅是使用你的功能而已,整个view 都应该给你扔了了,全部在我新写的功能页面上才对。虽然我知道,这种删除做法是绝对的错误,但是,他适用在这。
接下来是一个打log 的问题上。这个project 能使用的log 有:CCLog、DLog、FSLog、等等等,NSLog 我也不清楚他们有否在Release 上去掉相应的定义,所以尽量不敢用NSLog。那就想着用我以前用的CCLog吧。然而问题又来了,不要打CCLog 啊(我当时还不知道有DLog这玩意),难道用console window,用断点。我曹,我都骂出来。我现在用的黑苹果,不知为何其在大型项目会这么卡,编译也比较慢。先讲断点,我用的iPhone 6s,project如果不在断点页面运行,那么肯定断点几乎就不相应的;在相应断点页面却也不一定出来,出来也卡的半死。再讲我未断点和断点切换都能卡,我要特么不打log,是别想开发了。而且这种业务型的,不看内里数据,是无法继续的了,这又是一个蛋疼。
再说一个我的缺点吧,这是我的不对地方:
我不爱写注释。我不写注释,前提是东西简单、业务单项、方法名已经取好了。还有就是我从海外部转回来,作为我安分守己的性格,尽量都是做到不动其他代码,于是出现了我新建一个和之前类名很类似的类,却没有把他删除。我有错这个,但却不能错在我。我回来的时候,什么都没有知会,没有权利,只有义务。说我好歹是中级开发者,代码却没有好好维护,写不好代码,这我就更不同意了,我就一码农,开开心心生活的码农,,,开开心心多好,哈哈哈
接下来还是一个蛋疼的地方,注释掉的东西,我有时会留在那里。一个类东西不多,注释掉的有些用处,或者不太占位置,我就不会太在意那些。
于是在这次也特别说我的这点,这点我认了。之后勤快些吧,尽量谢谢注释吧,毕竟确实是我不对;如果有需要删除、测试代码等对源码可能造成影响的,我都要注意了;毕竟这也是个人修养,对我有好处,让我升级为好好码农也是不错的。。。
继承他人,有我不需要实现的功能,甚至替换他人代码层面,看到那些就蛋疼了。
最最最后说一个。我特么一过来就丢给我一个UI、丢一个wiki、我都还是不知道里面什么鬼,要问个人要转好几个弯,来来回回,晕头转向,过去了,大师态度我自己知道,说的很迷糊那种,问回来了还是迷迷糊糊。然而项目已经把时间差不多给你定好了。
你说蛋疼不。发版的时间就这么几天,那边都还没做好,下一个要做的功能又来了。
这次说我,我觉得很小题大作,我觉得无所谓,我会吸取教训,“小心、小心再小心”而已。我只是那只跳起来的鸡,刚好从海外组过来,是该杀杀锐气的。也为他人警示,警示也是有好处的警示,我认了。
规范也没说,那就个人尽量做好即可。我那一两个空文件,project 就卡的半死啦??
那么多的重复库,重复定义,奇奇怪怪的内容、图片,就把我说一通??
这个我嘴里服,心里也不服。说我不把项目当自己的搞,毛蛋!我要是不当回事,我代码就能写成以完成任务为主了。
再说之前那个类,那个类是我特么要写着留下来升华的,不用我早删了好伐,虽然不见得目前这个功能还没好,我可能会后面补上,但这个本来我就是要自己写,被你们决定要换思路的好伐,忘记是正常的,我现在还不知道这个weex内部怎么沟通的,脑子还是一团浆糊咧,哪可能记得那个啊。不要说你们写demo的时候第一次写把每个api 铭记,能记住的往后站,大部分都记不住好伐。我特么不标榜自己是多高尚的人,多聪明的人,我特么就是个努力的人,仅仅努力而已,我也不想我能写出多么超级超级好的代码,中国人是需要生活的,不是码神。
OK,说了那么多,是该说重点了。
这么多年来,我一直说着,学完这一个,是会上升自己空间了,学完这一个,我又更强大了,基本在这个层面的人都是比较好的,普遍普通类别之上的了。但是还是不够。我来当前公司,其实就是奔着学习而来。其实已经大差不差。比如一些思维开拓,一些产品思维、一些业务逻辑,一些控制管理,把控等,在新的知识储备方面也更加的好了,也更多的接触到底层,能做更好的了。
其实好的东西不是说拼命往上赶,拼命往上堆叠,就能好的。
好的东西,都是要有好的技术,好的底层。正如我之前思考的,很多的好的,能令人轰动的都是别人能学其表,难成其里的,好在了内在,真正的技术。其实现在我所做的,不过就是真的业务员,能研究的机会都不多,再难一点的东西都是局限于业务、功能块内,不能超脱,比如我们的技术领导“大师”,都把东西做到一半了,其他只不过是堆叠。
我自己私下,需要有两个地方开花。第一是面向工资编程的实现,没有金钱入手,什么都是没用的。
第二是将我这三十岁之前最后一个,最难的的东西学好:opengl。
以前确实都不是我该学习该物的时候,但,现在已经可以。以前的知识储备完全不能理解其中变化,现在已经能够得着了,也就是时候了。
是时候了。
想想兰姐2年5多部电影。我更努力学习难道不应该乎?