Piasy

NEVER STOP

谈谈软件开发管理

——读《卓有成效的管理者》、《人月神话》、《软件随想录》有感 以前我一直觉得自己读书慢,但在 17 年底、18 年初的一个月里,我也读了四本书,其实挺快的。主要还是得肯花时间,以前总想把时间花在写代码、做开源项目上。实践很好,但实践之余看看前人的经验总结,印证、校正自己的实践,也很重要。 看完《卓有成效的管理者》,我开始记录自己的时间用在了哪里,并认真思考「知人善用」;看完《人月神话》,...

我在鼎点这一年

2017 转瞬即逝,去年此刻,我还正手捧《程序员面试金典》,一点一点地安抚焦虑的内心呢,不过感谢上苍,再次给了我好运气,让 2016 顺利收官。 去年总结时,我唯一感到遗憾的,就是下面三点了: 2016 年,锻炼身体有点少,书看得有点少,安卓之外的技术了解得太少,这是最大的不足。 好在今年有了不少改进。 今年踢了不少场球,虽然都是瞎踢,但也算运动不是? 从大年初一凌晨开...

移动客户端跨平台开发方案探索

跨平台开发想必很多朋友都听说过,甚至实践过,这里我就不过多介绍相关的背景了,Java 的 Slogan 完美诠释了这一愿景:Write once, run anywhere! 提到这个话题,大家首先想到的可能是 React Native,不过本文并不是 RN 教程。本文旨在探索我关注到的几种比较靠谱的移动客户端跨平台开发方案,当然 RN 是其中必不可少的一部分。 完美的跨平台开发方案自然...

我需要知道:编译、链接、装载、运行

九月除了看 H.264,还看了一本好书:《程序员的自我修养:链接、装载与库》。对这本书我只想说一句话,相见恨晚。 看完这本书之后,结合本科阶段学习的程序设计(C++)、汇编、编译原理、计算机组成原理、计算机体系结构、操作系统这几门课程,我总算对“我们编写的 C/C++ 代码是怎么一步步在电脑上跑起来的”这个问题有了一个宏观的认识。当然,细节和深入之处想靠这一本书甚至一门课程就完全掌握是不可...

安卓 OpenGL ES 2.0 完全入门(三):2D 纹理的裁剪、翻转、旋转、缩放

我在去年六月份学习了 OpenGL 的一些基本概念,整理了一个 demo 和两篇文章,并在今年六月份复习修正了一番。不久前我进一步向铁蕾兄学习了四种常用 2D 纹理变换的实现思路(以及本文中的其他总结性文字),由于铁蕾兄实在太忙,无暇快速整理成文,因此我就在这里为他代笔了 :) 没有阅读过前两篇、对 OpenGL 基本概念不熟悉的朋友,下面是链接: 安卓 OpenGL ES 2.0...

我需要知道:H.264

我在今年年初离开 YOLO 加入了一家在流媒体领域具有极深积累的小公司,负责视频群聊 SDK 的开发工作,YOLO 是一款直播 APP,我常戏称这是从技术下游(SDK 使用方)跑到了技术上游(SDK 提供方)。不过事情当然不是这么简单,经过长期的思考和探讨,我最终确认:实时多媒体领域,更宽泛一点来讲,实时视觉、感知的展现,在未来极长一段时间内都存在很大的需求,也存在很大的挑战,所以这将是我长...

使用 WebRTC 静态库进行 NDK 开发

前面我们分析 WebRTC P2P 连接过程时,在 C++ 代码的世界里徜徉了那么久,其中有各种各样的功能模块,难道大家看着不心动?反正我是很想把它们剥离出来用的,第一个拿来开刀的当然就是 P2P 模块了。 不过在这之前,我还得好好补补 NDK 开发的相关知识,在这篇文章中,我不会涉及 WebRTC P2P 模块的代码,而是简单用一用它的多线程模块,力图先把路给趟平了。 所谓剥离使用,其...

WebRTC-Android 源码导读(五):P2P 连接过程和 DataChannel 使用

前面四篇里,我们分别分析了 WebRTC Android 的视频采集、视频渲染和视频硬编码,最后把相关代码剥离出来形成了一个独立的模块:VideoCRE,并对其进行了极大地内存抖动优化。从本篇起,我们将迈入新的领域:网络传输。首先我们看看 P2P 连接的建立过程,以及 DataChannel 的使用,最终我们会利用 DataChannel 实现一个 P2P 的文字聊天功能。 前面四篇没看过...

Native 层校验 APP 签名,以及 JNI 异常处理

有时候我们需要在 APP 运行时验证当前 APP 是否被篡改,而 SDK 提供方通常也需要验证 APP 是否被授权,今天我们就来探讨一下如何在 native 层实现这一功能,以及在这个过程中的一些要点和技巧。 认证方案 我们先探讨一下有哪些认证方案。 授权码 最容易想到的方案就是用户名密码认证了,稍加引申,可以想到用 token 进行认证,本质都是一样的,通过授权码进行认证,但这存在...

安卓 NDK 入门指南

本文的前身是一篇笔记,比较零碎,发布出来是为了让后续的文章可以有一个基本的参考,本文会持续更新。 NDK 的高性能最常见的场景:多媒体,游戏。此外,利用 NDK 还能练习 C/C++,一举两得。 基本概念 shared library, .so static library, .a JNI: Java Native Interface Application Bina...