记最近遇到的坑-WebRTC on Android

最近做了版 OpenGL 相关的大需求, 将一个新鲜出炉的动态贴图SDK合入至我们的产品中。这个 SDK 的原理是先做人脸定位,然后再在对应的位置上通过 OpenGL 绘制图片资源。其所考虑到的特殊情况并不多,所以在合入 SDK 时踩了无数的坑。(毕竟我们产品是合入 SDK 的第一只小白鼠。。吱!) 看似比较常规的需求,但实际上暗藏了很多坑。 虽然 WebRTC 给我们提供了一个还算不错的视频与通信的方案,但还是给我留了个不少来源于 WebRTC 的巨坑。 本文所说的坑,是 WebRTC 对于 OpenGL 中位置(gl_

给杀马特长宽比的旗舰机去除上下黑边

随着 Android 机碎片化越来越严重,带有杀马特一般硬件参数的手机也层出不穷。与以往的16:9长宽比不同,近期发布的几款旗舰机器的长宽比还真的是比较杀马特。 前几天三星S8刚出没多久,Android Developers Blog 很快就出了一篇文章:Update your app to take advantage of the larger aspect ratio on new Android flagship devices 本文主要就是这篇文章的理解性翻译,看官们有空修一波这个 Bug 就好。 两个典型的机子

2016年终打水仗

今年上半年,浑浑噩噩地过完了大学的最后半年:三个月在百度的实习,两个多月的毕业设计准备,半个月的乱玩,一周的普吉岛旅游,只有几天的离别。 时间仿佛如流水,好像在校园刚找到一点节奏,转眼间却已经和朋友们分开。好在,女票还跟我一起在北京工作,网校的几个小伙伴也在北京一起嗨。 下半年,从开发维护DU Cleaner,到独立开发一个创新项目,再到年前跟同事们一起攻坚的新项目。一路上遇到了很多困难挫折,做了不少曾经不太敢想的东西,成就感小爆棚。特别感谢大牛同事们对我的帮助,整个团队的气氛也挺棒,能在里面去做一些比较Geek的项目,也接触了较大用户量的应用开发。(其实还有年会抽奖系统,憋打我,我给你Review代码!) 我的2016年几乎算是交上了一个满意的答卷,一切才刚刚出发。感谢帮助过、push过、为难过、

随手记即将逝去的大学生涯

大学生涯到了尾声,开学大四下。 回头看看,在过去的这三年半里,几经波折,有不少的感悟。所以想写下来与大家一起分享,今后自己来看看也会比较有意思。 主要想写「技术」和「活动」两方面,妹子什么的就藏在心里吧→_→。 技术 从小一直以来我都想今后做一些编程相关的职业。大学之前的经历不再赘述,简而言之就是小学装系统,撸 FrontPage,初中算废了吧,高中撸 NOIp 可惜没保送成,自主招生资格在手上也因为高考差几分废了。 红岩网校工作站 秉着对编程的热爱,我加入了「红岩网校工作站」。(你问我为啥去红岩了?当时校级组织招新,逛了一大圈就只有红岩看着真的是搞技术的地方啊- -。

毕业设计踩坑笔记

转眼间就从稚嫩的大一小鲜肉变成了大四老腊肉...心里还是有颇多感慨的。然而这篇文章并不打算走情感路线,主要是为了记录以及整理我整个毕业设计的过程。既方便后面写毕设论文,也可以和各位一起分享我的蛋疼毕设。 毕设主题 主题就是做一个**「高性能的JSON对象映射库」**。可能看到题目你看不太懂啥意思,但是作为一个iOS开发者,你一定知道最近流行起来的 YYKit 中的 YYModel 吧!没错,我的毕设内容就是分析市面上比较常用的这种库,然后做一个属于自己的库。 (其实当我看到组里其他同学的毕设主题都是做一个XXXApp的时候,我的内心是崩溃的X_X)(逃 前言 由于博主才疏学浅(呸!明明是不好好上课!),所以在做毕设之前寡人也下了决心,通过毕业设计来学习各种欠缺的知识。所以你将会看到我在下面各种摸爬滚打的痕迹。 [Update:我目前撸的Model库放在Github上面,因为还在摸爬滚打,

重邮上网之TP-Link

背景 我校连外网不光要给钱, 还要用电信给的拨号器(Netkeeper)才能拨号, 拨号器内部自己有一套账号密码的加密机制, 路由器直接拨PPPoE就不行。好在我在同学那里找到了一份python写的加密算法,因为有大神通过逆向的方式把这个加密算法撸出来了,向他致敬! 本文主题为教你如何用 TP-Link 在重邮同时连上内外网。 代码操控 TP-Link 拨 PPPoE 之前听说可以用代码操控 TP-Link 拨 PPPoE,百思不得其解。后来才知道,其实就是模拟表单提交管理界面的连接信息。 首先你需要一个 Chrome,F12-Network 抓到拨号时的 Request。我抓到的 URL 如下:

初识Docker

咳...快光棍节了,妹子在外实习啊哭!只能在寝室里面玩 Docker 了。 起因就是陆神发现一个搭好 nginx-rtmp 的 docker(地址在此)。之前一直想做一个校内的直播平台,但因为懒。。。一直没搞,直到遇到这个方便的东西,啊哈,正好没玩过 Docker,就顺便感受一下 Docker 带来的神奇力量吧。 老规矩,同步撸博客,搞一点我就写一点 Getting Started 首先查了下具体什么是 Docker。简而言之,Docker是一个容器,内部有打包好的一些东西。至于有什么性质,请自行查询。

由AFNetworking引出的姿势们

前言 在公司实习了三个月,因为学校这边还有课,于是请假一个月回学校。课余时间太多,不能没有进步,于是就和某基友约定每周写一篇博客。作为一个 iOS 初学者,有不少东西在 ToDo List 中需要学习,正好就可以借这段空闲时间好好补一补,说干就干! 「「首当其冲」」的就是 ToDo List 中的 AFNetworking 了,我在网络和多线程这一块掌握得最差,于是就先从这块开始攻破了。 本文里面虽然有不少东西以前都听说过或者触及过一点,但抱着学习的心态我会扎实地过一遍,如果大神们看着比较简单,烦请绕道。当然,非常感谢各位指出错误之处。 直播 我在写这篇博客的时候希望能够有抱着同样心态的同学们跟我一起学习,

Funny things: 3D Touch

一些废话 首先声明,本文并不会涵盖所有所有关于 3D Touch 的东西,因为我只想介绍我觉得还不错的东西。如果你希望把3D Touch彻彻底底啃一遍,那就好好钻研一下文档,以及各个 Sample 吧~~ 最近入手了一个iPhone 6s Plus,也是我人生中的第一部真正意义上的iPhone。作为一个iOS开发者,手上拿着MX4 Pro用也是经常被实习的同事们嘲讽。现在终于摆脱了卡卡卡的安卓手机辣!写这篇博客的时候心里还在暗喜,然而这不是本文的主题! 其实我是想说,有了新手机,第一个想折腾的就是3D Touch。目前我看到的适配了3D Touch的App(当然,除了苹果自家的)有微信和新浪微博,适配速度那简直叫一个快,

帧动画的图片内存管理小记

背景 最近在做有关帧动画的一个小玩意儿。需求是:一共有几套帧动画,我可以随时在几套帧动画之间进行切换。 Step By Step 在最开始做的时候,我们是把帧动画的每一帧都使用[UIImage imageNamed:@"xxx"]塞进NSArray然后一股脑地丢给了UIImageView的animationImages。 只需要把图片数组传给UIImageView的animationImages,再设置一下animationDuration等等就可以调用starAnimation播放动画了~~ 由于我们的动画有好几套,互相切换后,导致图片占用的内存空间相当之大。一不小心乱搞搞就crash了。后来在同事的提醒下,发现了以下二者的细微差别: + (UIImage *)imageNamed:(NSString *)name + (UIImage *)imageWithContentsOfFile:(NSString *)path 二者虽然都可以获取到图片,

iOS

读书笔记《Effective Objective-C》第5条-枚举

以前从来没有接触过enum,之前一直觉得并没有什么卵用。自从在实习的时候,公司项目中用到不少enum,才去认认真真地看了一下。确实有用,正好这本书上又专门提到了enum。就来聊聊枚举吧。 枚举是用来方便状态的表示 在一个App中,会有很多状态的概念。比如说打电话就有:正在拨号,正在通话,已挂断等等状态。那么这些状态如何表示呢? 有人这么做 #define DIALING 0 #define TALKING 1 #define DROPPED 2 这样做的缺点: 没有对状态进行分类,若要分类可能需要使用注释的形式进行分类。可读性差,相当不美观。 使用enum后: enum

iOS

读书笔记《Effective Objective-C》第2条-@class

第二条 头文件中尽量少引入其他头文件 @class与编译时间 在Human类的头文件中如果有成员变量Hand类,那么这个时候一般的写法: // Human.h #import "Hand.h" @interface Human:NSObject @property (nonatomic, strong) Hand *leftHand; @property (nonatomic, strong) Hand *rightHand; @end 但事实上,这样的做法并不是那么优雅,也不高效。先说更好的方法: // Human.h @class

iOS

读书笔记《Effective Objective-C》第1条-起源

前言 偶然在豆瓣上看到这本书,书评还不错(抛开这翻译不看)。于是就买了这本书,看了下目录觉得挺有价值。所以准备好好地啃一下这本书~ 这本书的内容覆盖了方方面面,每次看完都希望能把上面的东西好好整理一下帮助自己有更深地理解,所以就有了写这个读书笔记的想法。 头一次写读书笔记,我会把我所理解的东西用我自己的语言叙述出来。可能会有一些误解,希望各位能指正。有什么问题请尽情在下面的评论栏留言,共同进步,互相学习!:-) 另外由于这书上的翻译和大多数的翻译有所出入,所以我就不用书上的术语了,看着怪难受。 第1条 了解Objective-C语言的起源 Runtime 与C++等语言不同,Objective-C的许多操作都是在运行时(Runtime)完成的。Objective-C的运行时相关的代码,苹果是开源出来了的,可以在这里下载到 关于对象

iOS

学习iOS开发之我见

距开始学习iOS开发已经过去了4个多月,各种摸爬滚打(校内iOS开发者少得可怜)。在这段时间里,颇有一些学习的心得。最近也有一些学弟学妹在问我如何学习iOS。虽然我自己水平也还是有限,但也想和大家一起分享一下我认为比较好的学习方式与路线。 有什么新的东西,我也会再更新这篇文章。如果大家觉得哪里有不妥之处,欢迎指正。 方式 **多实践,多思考。**如果第一点没做到,后面就不用看了,出门右转。可以尝试着一边学习iOS开发,一边开发着自己的小App。这样你所学会的东西就可以有用武之地咯~ 认认真真仔仔细细耐心阅读官方文档。真的是非常重要。上面有很多高质量的文章。静下心来好好看看这些文档,对技术的提升和英文阅读能力都会有帮助。 例如:Start Developing iOS Apps Today 多关注一些大神的博客(

Markdown

新VPS,新博客~

VPS 以前一直蹭的Ling神的VPS,现在终于决定自己买一个Linode了。价格70RMB/month,还是可以接受的。 博客系统 上一个版本的博客是我自己写的,从前端到后端(PHP的Laravel框架),样式也是自己定的。 但是因为平时事情比较多~就没有太多空余的时间来完善整个系统,发布页做得非常简易(其实我并不敢称之为一个页面→_→),配合着PHP的一个Markdown Parser来做。 每次写文章的流程都很奇怪,Mou上写完了再粘贴到发布页上预览效果,再微调。。这样蛋易碎。 所以换成了开源的博客平台--Ghost 相当不错,看着很舒心。对Markdown的支持以及字体看着都相当舒服。 但也有一些缺点: 这个在线的Markdown编辑器并没有对Tab进行处理,我在上面写代码的话,缩进就只能靠自己狂敲空格了。 语法提示除了那篇Get Started文章以外,几乎没有任何提示。这块其实可以参考一些比较优秀的Markdown在线编辑器,