半天入门了下 kotlin

最近好多人都在用 kotlin 了,我真实接触并且使用 kotlin 的时候是 2019 年。那个时候也依葫芦画瓢写了一篇《lateinit 和 by lazy 》的文章

但是,当时写代码还是停留在 if-else、 for 循环等等,跟 java 代码没什么区别,所以并没有深入的理解。

FFmpeg 简易播放器

1.FFmpeg 和 SDL 下载

可以直接去官网下载源码自己编译或者下载已经编译好的版本

比如我直接用

brew install ffmpeg –with-sdl2

之后 /usr/local/Cellar 下就会有 ffmpeg 和 sdl2 了

2.开发环境

这里使用的是 MacOS + CLion

随便新建一个空工程就好,写好 CMakeLists 就好

Android 焦点

最近在做 Android TV,和手机 APP 不同的是,TV 大都需要依赖遥控器来改变焦点而不是 Touch 事件(除非你的屏幕可以触控~~)

Leanback

当时做 TV 项目搜到的资料都是它,但是没几个人细讲,我也不打算细讲···
因为这个库需要你自己去源码编译,有很多东西写死了,或者不是 public 的,而且不一定符合你们设计的审美~~
我们最后就是用源码编译搞的,只用了一个 VerticalGridView, 还改了一些东西。

SingleTask 血案

最近还是在做小包的需求(什么是小包···就是功能和体积的阉割版),测试提了个 bug,说主站的 APP,打开详情页,回到后台,再重新打开 APP,会回到详情页。而小包回到了首页。

RxJava doOnNext 歪打正着

来到了快手,代码是真滴乱。RxJava 到处甩,然后又炫技式的使用,冗余各种复杂逻辑,且有些地方使用并不规范,只不过没有出问题。配合自制 MVPs 架构,又秀了一波依赖注入,全是注解,导致我刚看代码时,完全凌乱了,重点是没有任何文档,对新人极不友好,且我认为,代码不应该这样写。

Promise

如今写了很多门语言之后越来越有感触,事件驱动的设计离不开各种异步调用。比如 Android 中主线程如今已经不允许发送网络请求等等,这时候都需要一些异步回调。而在前端也是如此,但是前端8成以上的工程师能做的原理性的东西很少。
首先 JsCore 改不了吧?水平有限!其次,CSS 的解析改不了吧?写各种 loader,各种插件已经很牛逼了,我感觉那些 webpack 相关的东西,至今我也不是很懂,只是会用。所以大部分人都关注在业务开发上。
而客户端的工程师还有很多其他的事情研究,比如热更新啊、性能优化啊等等。
我觉得没有好坏之分,但是前端在代码架构上或者一些设计上我觉得更优秀,客户端相比很落后。比如双向绑定,redux 等思想。再比如这个 promise,虽然客户端也有可以处理这种事情的东西,比如 RxJava、RxAndroid 等等,但是感觉没这么直接,RxJava 也要不停 subscribeOn、observeOn 等等,或者你说你写个 compose,但是还是那样,不直观不直接。

再来看看 WMS

这几天想重新研究研究一些 Android Framework 相关的东西,看到了 WindowManagerService(WMS),产生了一些疑问。

getSystemService(“window”)获取的是什么

很多人说是,WMS 的代理对象,可是目前我看的 android-28 的源码,发现并不是这样。

HTTP CORS

CORS

跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS