[译]软件开发人员的常青技能

最近在 Github 看到这一篇将程序员一直需要使用的非技术核心能力进行了总结,深受里面内容的启发,语言、框架都是会过时的,但有些技能无论是什么语言或者框架都是通用的,如果要在这个行业持续深根,那么这些非技术能力是必备的且实用的。本文在原文上进行翻译,并对文中提到部分专业术语进行了解释,以及对指向外部链接的文档内容作了一些简单的概述,希望能帮助到查看此文档的人。

阅读全文

UTF-8字符编码相关

最近在 Windows 上开发一些逻辑的时候遇到一些关于中文的坑,中文路径会乱码,是由于 Window 系统默认的编码格式是 GBK,而传入的参数编码格式是 UTF-8,导致整个程序出错。后续使用了``MultiByteToWideCharWideCharToMultiByte` 方法对编码进行一次改变,从而避免了这个问题的产生。但不了解相关原因,经过一番学习,对相关的概念进行一些简单的总结,并对一些 api 的实现源码进行分析。

阅读全文

实现一个自定义 FFmpeg Filter

此前在做 ffmpeg+某个第三库作为 filter 的集成,第三库是做AE特效相关的,与 ffmpeg 结合能让视频渲染效果大大提升。整体流程将第三方库作为 ffmpeg 的一个filter 形式进行结合,其中就涉及到 ffmpeg 的 filter 开发,本文即 对ffmpeg 的滤镜开发流程作一个总结。本文以实现一个视频垂直翻转的 filter 为例,ffmpeg 源码基于FFmpeg6.1

阅读全文

RecyclerView自定义LayoutManager从0到1实践

此前大部分涉及到 RecyclerView 页面的 LayoutManager基本上用系统提供的 LinearLayoutManager 、GridLayoutManager 就能解决,但在一些特殊场景上还是需要我们自定义 LayoutManager。之前基本上没有自己写过,在网上看各种源码各种文章,刚开始花了好多时间去理解整体流程,因为它们都给我一种非常非常复杂的感觉,包括相关的博客文章也是。经过一段时间摸索,也慢慢能理解为什么要那么复杂了,这的确不是特别容易入门。所以对整体的流程进行了一个拆解,尽量原子化一点,对自己学习的一个总结,也希望能帮助到一部分人能对 LayoutManager 入门。

阅读全文

Android 基于 J2V8 运行 JavasScript 实践

V8 引擎是由 Google 开源的 JavaScript 引擎,Chrome 就是基于 V8 开发,V8 是跨平台的,J2V8 基于 V8 进行开发,使得 js 代码能够在 Android 平台上脱离 WebView 运行。目前,也有很多关于 Android J2V8 的文章,不过讲解不是特别细(可能也是我太菜了,看完了之后,依然遇到很多问题),自己在调研的过程中遇到很多坑,所以这里记录一下,本文主要记录整个 J2V8 框架的使用方法,以及一些坑。

阅读全文