查看详情

2020

2020 年的文字相对少了,很明显的感觉是,2020 过得特别快。 年底发现特别火的一个知乎话题 《都说十年巨变,你觉得 2020 年与 2010 年变化最大的是什么?》 。到 0 字头的年份,不由得便把这个话题延升到 10 年。 不变 自己习惯文字记忆,从10年高中毕业一直写到了今天,我深刻记得自己提笔的第一篇日志,是对《火影忍者》的内容分析,10年一月份是自来也独挑晓的时候,自己组织高中班的童鞋写了这篇[《感动火影的十大人物》](https://www.jackpu.com/e6849fe58aa8e781abe5bdb1e58d81e5a4a7e4babae789a9/)。不记得谁写的谁,自来也的评语: 自来也:坚毅是你的忍道,勤奋是你的外表。你用执着的人生注就伟大的传奇。风雨卷过苍茫大地,你的心从不动摇。笔直向前,决不违背誓言才是你应作出的正确选择。 看着似乎中二的文字,坚毅,很少出现自己写的文字里了,或者是换了种表达方法。 自己的音乐库依旧收藏着那首 《Best Friend - Zard》, 听着音乐,脑海里便能闪现1 0 年那个毕业的暑假, 详情 »

查看详情

Android WebView onPageFinished 对于 Document 意味着什么?

这是因为之前遇到一个线上问题引起的,这篇文章阅读的对象也比较适合 Android 和前端阅读。 我们说下 标题的 Document 对象,这个对 Android 开发者而言有些陌生,可以详见 MDN 里面的解释,简单的说就是它可以去代表我们要加载的这个网页对象。里面包含一些基本的信息和所谓生命周期。 Android WebView 提供了基于 WebViewClient 的页面周期的监听方法,常见的有: onPageStarted 当页面开始请求 onPageFinished 页面完成加载 onReceivedError 当加载出现错误的时候 更多方法可以详见 https://developer.android.com/reference/android/webkit/WebViewClient 在 JS 中,我们监听页面加载有两种常见的方法,一种是监听 window.onload 另外一个是 document 里的 readychange 来实现的。 其中 window.onload 定义是当页面完全加载时候触发,包括页面的上包含的图片和样式资源,脚本资源。 而 详情 »

查看详情

十二月

不知不觉,已是12月份的末尾。 感觉最为神奇的一年,终于要过去了。 过了11月,早早天气便开始冻了起来。最近周末值班渐多,回家的时间点便也晚了起来。周末冒着寒风,外出和之前的同事打球,虽然不久便热身开了。但是第二天全身那种酸痛算是记忆犹新,如同重了七伤拳般。似乎入秋后,就没怎么接触篮球,不像夏天那般,每隔一段日子便能约上几个朋友, 在三元桥附近的天台上的球场,感受酷暑30度的炙烤。 今年文字写的比往年少了,书也看的少,除了工作内容比以前多了一些,不过沉淀的内容也少了很多,总感觉这一年,过得特别快,明明外出的时间很少,也没有外出旅游过什么的, 就是觉得时间都不知道去哪了? 十一月意外美股行情起来了,买了两三年,似乎这种大牛市,好多人都赚钱了,还好情怀买的 PIN 还是回报到了 Tesla3 。可惜香港今年内地进去办卡比较难,就还是暂时留着,毕竟车牌什么的还得等些时日。听闻最快明年三月日本会放行,本来计划今年去签个多次的,希望明年三月可以和小萨去次东京,去抖音打开圣地拜拜。 受疫情影响,除了怀旧打卡星爷的大话西游,然后都没咋去电影院看过,普遍今年电影质量,很多电影都推倒2021年了,前些天看到了额 Disney 的开发计划,发现短剧集真的超级多,很多都有经典的 IP 支持。感觉未来两三年, 详情 »

查看详情

立秋

今日立秋,落雨的日子,比往常多了。 微博 对于立秋,是在2010年高中毕业注册微博时候,阿联发的一条特别打趣的内容: 今日立秋,记得多吃肉 自己是高中毕业的时候自己注册了微博,那个时候姚晨特别火,第一个推荐的就是他,也关注了易建联,那个时候博主这些微博都还是关乎自己多点。 前些天,微博被封,后来发短信,解禁无效, 还以为是 Bug 。在找回无果之后,心里还是会有些失落。一算,也是十年多的文字积累。才开始玩微博的时候,发的比较频繁,简单的文字是对生活点滴记录,也有文艺犯病的时候发的各种点评。大一下开始认认真真学习,便也学会了微博打卡,以资鼓励。随着时间流逝,也渐渐少了对于自己生活周遭的描述,多了几丝娱乐圈的八卦。转发逐渐少了,评论互动便也少了。 记得年前问过那些不经常发微博或者社交信息的人,一般会怎样看这些事情。最后也没能收到特别满意的答案。大概个性和成长是两件并不矛盾的事情,所以找回真的算是很幸运的事情。 看了下七年前的文字: 这两年一直觉得自己是个幸运儿,理想主义者。虽然自己没有找到捷径,但还是多少没有走弯路。无论是偶然的兴趣,还是几宿的文档整理,麻烦虽多,但还是坚持下来了 希望幸运常伴。 近况 其实每次立秋还是希望总结这半年自己所思所行。 最近三年对容错这个词汇是真的很重视。说到初级一点,是语言上对于异常边界的很好防御, 详情 »

查看详情

八月天

2020 详情 »

查看详情

基于 Android EXOPlayer 创建视频播放器

谷歌在开放 Android 套件的时候也非常方便的把自家的 Youtube 播放相关的前端开源总结了出来,也就是我们经常提到的 ExoPlayer 。这里也顺道说下其他端,如果你是 Web 端,你可以使用 谷歌家的 shaka-player , 如果你是 iOS 的话,你可以使用 AVPlayer 。他们都提供从基础 UI 空间到自适应分辨率的支持。当然你也可以选择其他框架。 创建一个简单的 MP4 播放器 首先我们引入依赖 implementation 'com.google.android.exoplayer:exoplayer:2.11.7' 这里我是直接用的最新的版本 2.11.7 接下来我们需要做一些初始化的工作 val player = SimpleExoPlayer.Builder(context!!).build() exoplayer_view.player = player val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory( 详情 »

查看详情

如何实现 Bilibili 视频播放Chrome 媒体控制效果

Chrome 最新的版本更新了媒体控制菜单的按钮 UI,也就是每次我们的网页产生声音或者视频时候,菜单栏头像附近,方便我们在多个 Tab 进行控制时候加的,方便我们操作这些网页 Tab 下面的音视频。 尤其最新的样式实现非常酷炫,加入对封面的支持,这样整体效果看着非常棒。 很早之前我们写过一篇关于 使用 mediaSession 实现媒体播放的通知栏控制 这里介绍了我们如何在网页播放音频的时候锁屏控件如何显示当前播放音乐的封面和简介,或者控制上一曲下去。 同意视频播放现在也可以,你只需要监听 MediaSession 的相关事件然后设置 mediaSession MetaData 的信息就好。 设置封面标题 if ('mediaSession' in navigator) { var data = mediaList[index] navigator.mediaSession.metadata = new MediaMetadata({ title: data.title, artist: data.director, artwork: [ { src: data.cover, sizes: '192x192' } ] }); } 进行播放控制 // $video has 详情 »

查看详情

IFrame 等开放服务存在的法律风险警示

目前很多视频服务商比如 Bilibili, 优酷, 腾讯等都支持基于 iFrame,将自己上传的视频或者别的作者的视频, 内嵌到自己的网站,从而提升内容或者宣传的质量。记得很早的时候火影忍者中文网就是嵌入的优酷的视频。 IFrame 不仅降低了接入成本,也降低了接入门槛,稍微懂点相关的知识就可以投放到自己的网站。但是这里实际上会存在一种安全警示。 我们知道腾讯视频除了(B站)是有前贴广告的,这么做是为了增加金主爸爸的品牌广告的曝光量。而基于 IFrame 的形式,很容易被一些广告主当做免费的视频托管平台,把自己的一些教程或者宣传该网站金主爸爸广告的视频嵌入到比较吸睛的内容上(赌博,色情等)。 不妨看下下面这张截图: 是不是很多人经常不慎点进去,为了方便大家使用,网站主可能会投一些教程视频,方便大家学习如何充值以及如何参与等。然而这里面的风险点,便是这样的网站对前贴曝光的品牌比如一些金主爸爸的(保洁,苹果,华为等),实际上是品牌影响的,就像很多人一看这个视频,会觉得是这些品牌在该网站的投放,从而进一步对该网站产生信任或者对该广告品牌产生质疑。 又或者在某些色情网站上,色情网站流量较大经常会嵌入一些游戏的广告链接导流,比如经常看到渣渣辉或者山鸡的传奇游戏广告,这些网站为了宣传游戏的吸引力会投入一些视频做宣传。因此这些色情网站也会嵌入到当前网站中。 然而风险点同样在于前贴广告的曝光,会非常影响这些广告主品牌效应,你想想你在浏览 xxx 网站,刚好你是某品牌的员工,看到自家的广告在这样的网站上播放,可能内心一种无奈在心头,又或者更多问号在头上? 所以我们在做任何开放服务尤其基于 iFrame 做好对 详情 »

查看详情

七月天

傍晚渐渐吹起了热风,我知道暑假来了。 暑假的日子 最近迷雾剧场,《隐秘的角落》不断刷着信息流。当然自己也不忘记追剧。排除里面神秘的案情和一些小细节。自己印象最深的便是开篇,朱朝阳知道妈妈又要去值班的时候,飞奔出去寻找小伙伴的时刻。自己依稀记得,暑假天,会和小伙伴冒着35度的烈日去爬山,然后去学游泳,或者沿着河边抓鱼,一行三人,回来的时候再一起吃起冰糕。爬山的时候便也希望能偶遇电视剧中神秘的山洞,又或者遇到神秘奇珍异兽什么的。可是最后似乎也神秘都没有。日子渐久远,似乎这三人小伙伴,也很久没相遇了,暑假天的日子,还是让人欢喜不少。 业余的开发 最近一直在做之前完全没涉猎的 Android 。想起上一次开发完整手写 Java 代码的时候还是14年 黑客马拉松的比赛。确实真的是变成了 面向 stackoverflow , 大概整体感受对于界面这种重构还是觉得 Web 前端还是挺优势的,效率和设计都挺好的,iOS 无论是 swift 还是 Android xml 写着还是挺别扭的。所以还是长期看好 flutter 或者 react native 这种设计模式。不过话说回来,就是整体 kotlin 详情 »

查看详情

Android 自定义滚动条

做前端肯定离不开设计师要求自定义滚动条内容,相对于 iOS / Web ,Android 相对比较容易控制,我们可以非常方便的改变 View 或者 WebView 的样式。Android 提供了两个 xml 属性 android:scrollbarThumbVertical android:scrollbarTrackVertical 他们分别表示我们需要改变滚动条的拖拽部分和底部轨道的样式。 如下图 比较常规的设计,我们实现一个带圆角的矩形,我们在 drawable 目录下新建两个文件 custom_scrollbar_thumbnail.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > 详情 »