Zhihao's Studio.

Zhihao's Studio.

每天进步一点点

在中国远程为美企工作一年杂记(下)
High-level overview下图是我们应用从整体上的一个架构图,基本上概括了各个模块之间的关系。 下面简要说一下各个模块,不涉及过多技术细节。 音视频直播音视频直播这块,选用了Janus,这是WebRTC的流媒体服务器,是由meetecho公司开发&开源的,本身也处于变化之中,也有一些bug。为了解决这些bug,公司甚至聘请了meetecho公司的员工作为顾问来进行个性化定制,开发定制化的plugin插件,以及解决一些疑难杂症。 Janus本身的步骤比较固定,但步骤挺多的(参考下图),大概有十几步,涉及的概念比较多,观众侧和主持人侧步骤也有差异,这篇展开技术的细节了。最...
在中国远程为美企工作一年杂记(中)
工作内容上篇博客提到了我工作的内容,这篇会比较详细的写一下工作内容以及我在这一年多工作过程中的感悟。 面试团队中,有人来有人走,所以我们也经常面试候选人。起初,我问的问题是比较具体和细节的,说实话,很多是我从Google里搜到的一些面试题,这种一般是有确定性答案的问题。有些人回答的并不好,但是他却是perfect match,有些人回答的很好,甚至一字不漏,但他并不是一个很合适的人。 参加了几场面试过后,我发现两位tech lead喜欢问的是比较开放性的问题,更倾向于规范和实际场景。比如,其中一个人经常问的问题是,「如果现在的代码库里,有一个1000行以上的dart文件,里面穿插着很多U...
在中国远程为美企工作一年杂记(上)
背景由于新冠疫情,很多公司让员工work from home,尤其是在疫情失控的国家,不少公司开始在github上招remote开发者作为contractor(公司无需为contractor缴纳医疗保险和其他杂费,是控制成本的一种好方法)。 我幸运的得到了一份为美国某纳斯达克上市公司企业远程工作的机会,自从去年4月初为美国远程工作已经快一年了,想写一篇总结(流水账)纪念一下这宝贵的一年时光。 正文工作内容工作内容是用Flutter从0到1来编写一个类似抖音直播带货的App,这个应用已经有了Web版,公司想要开发一个手机版的类似应用。为了跟Web一致,遇到了很多问题,主要是由于浏览器和手机...
视频实时直播应用中视频流填充与道具摆放方式组合优缺点总结
前言在做视频直播应用过程中,就视频流尺寸和道具的放置方式,在观众侧进行不同的抉择,会有优点和缺点,本文是开发过程中进行权衡的一个总结。 直播流尺寸(Stream Size)由于主持人侧的视频流尺寸跟观众侧的手机屏幕分辨率和长宽比不可避免会有一定的差异,在观众侧,有两种方式来展示实时视频流,类似于CSS中的BoxFit值: Cover : 裁切视频流,以达到覆盖整个屏幕的目的,但边缘视频内容在观众侧可能丢失。 Contain : 视频流不裁切,内容完整可见,但上下或左右会有黑边。 道具的放置方式(Interactions)道具是直播过程中的另一个重头戏,可以增加主持人和观众之间的互动。...
helium-ol-map的设计取舍、权衡、实现、踩坑与npm发布
前言经历了上次被百度地图封号、封IP甚至改变离线地图下载规则后,我们开始反思,是不是项目绑百度地图太紧了,如果后面需要将应用场景变到其他城市但百度离线地图不可用了,应该怎么办的问题。 为了摆脱百度地图的枷锁,我们不得不站在更高角度上考虑问题,考虑后续如何将系统做得更通用。将之前的博文中介绍的系统实现技术方案(BMap+MapV)拓展到支持更多主流地图引擎(高德地图、腾讯地图、谷歌地图等)。 经调研,我们最终选定了大名鼎鼎的OpenLayer作为管理图层和绘制地图上层样式的Web GIS引擎。主要是考虑到两点。 在地图数据源方面,它支持各种类型的瓦片地图,既支持在线的,也支持离线的(这对...
百度离线地图之死
【6月6日更新】原来的策略对中国电信手机卡依然有效!!联通和移动均已失效,买张电信卡流量套餐吧。 前言首先得承认有点标题党,但是还是不得不向大家宣布一个坏消息,百度离线地图的获取规则变了。可以说一定程度上宣布了自己抓取百度离线地图这条路行不通了。 之前接到了百度的电话,我们10M/s的下载速度(大约每秒下1000多张图片)抓取地图的爬虫严重影响了他们的服务质量,让我们停止抓取。 当晚,他们就改变了地图加载规则。以下是我们猜测的新规则。 猜测基于一些实验,我们猜测: 百度地图应该改了底图加载的规则,通过地图拖拽事件,回调了某个callback function,创建了session。每一...
基于百度离线地图时空可视分析系统的实现与性能优化
前言近期实现了一个时空可视分析系统的前端部分,帮助警方看到特定地区(主要为昆明)、特定时间段【时】、特定分局、派出所、街道【空】的各种类型警情统计;并提供对未来一段时间的警情预测,对警情高发区域进行重点部署和管控。整体界面如下图所示。 界面截图(概念图) 实现这个系统和优化性能的过程中有了一些感悟和心得,在这篇博客中进行记录。 百度地图和百度离线地图其实在2015年飞利浦实习时开发一款iOS跑步软件过程中有用过百度地图进行跑步路径绘制,但在web开发过程中还是第一次遇到GIS开发相关的任务,好在团队中有一个会写代码的宠物店老板,有丰富的离线地图开发经验,指导我完成了这次的开发任务。...
《重学前端》学习笔记
前言工作一年多,做了不少数据可视化相关的工作,也用过React、Vue、Angular之类的框架,所以也算是半个前端工程师吧。一次偶然的机会,在极客时间看到了winter老师的课程《重学前端》,就预购进行了学习,本文可看做是该课程的一个学习笔记,希望能帮自己形成一定的知识体系,沉淀沉淀。 01 明确前端学习路线与方法作者给出了两个学习前端的建议。第一个方法是:建立知识架构,在这个架构上不断进行优化。他认为架构可以理解为只是的目录或索引,能帮助我们将零散的知识组织起来,帮助我们发现知识上的盲区。 知识架构有好坏,比如说到js,可能会想到一些词:类型转换、this、闭包、作用域链、原型链等等...
《Swift必备Tips》读书笔记
写在前面本文是对喵神编写的《Swift必备Tips(第四版)》的读书笔记,内容是我不太熟悉或觉得有用的Swift使用技巧,需要注意的是tips按照我的理解进行了一些合并和拆分。 不断更新中~ 将protocol的方法声明为mutatingmutating关键字是用来在方法中修改struct或enum变量的,若不声明会报错。 多元组Tuple一个js中也有类似功能的东西,不适用额外空间完成交换的方式也和js中类似。123func swapMe2<T>( a: inout T, b: inout T) { (a,b) = (b,a)} @autoclos...
仿微信朋友圈/抖音个人主页的设计与实现
背景因业务发展需要,在新版本的Match问答中,我们决定加入更多的社交元素,方便大家互相勾搭和交流,更多地展现自己的学习日常和个性,在原有版本的基础上计入了动态和个人主页两个模块,其中个人主页又分为第一人称视图和第三人称视图。本文是我在春节假期期间实现这两个模块的一点小心得。 期间参考了大量开源项目的已有代码,进行了借鉴和向Swift 4.2的改写,在此表示感谢,开源项目不完整列表见文末附录。 用户自己的个人主页视图布局个人主页视图借鉴了最右这款非常受欢迎的应用,只不过上方的布局稍有不同。其实不止是最右,抖音、微博、知乎等App都有着非常类似的个人主页。 Match与最右的个人主页对...
Zhihao Zhang
Happy Hacking
本站总访问量