标签: google

  • 好吧,Google 暂时不打算强推 Chrome Extension MV3 规范

    好吧,Google 暂时不打算强推 Chrome Extension MV3 规范

    前几天朋友提醒,Google 没有强推 Chrome Extension MV3。如果我没记错的话,按照原本的计划,今年 1 月 1 日起,Chrome Web Store 就要下架所有 MV2 扩展,只允许企业内部进行组织部署;7 月 1 日后就连用户本地也不允许安装和运行 MV2 扩展了。所有扩展必须升级到 MV3。

    不过看 Manifest V2 support timeline 的最新内容,这些安排都延期和搁置了,至少到 2024 年 1 月之前,大家还能放心继续使用 MV2。至于之后能不能用,还在考虑之中。

    我找到了官方的延迟通知,在这里:暂停清单 V2 逐步淘汰更改 (google.com)。按照官方的说法,除了一些开发负担,还有很多之前没想到的问题,比如缺少 DOM,导致很多合理的功能在 MV3 完全无法实现。这点我之前的 Chrome Extension Manifest V3 升级笔记 一文也提到过。

    朋友推测,这里的原因在于:

    1. 做浏览器扩展并不赚钱
    2. 所以很多浏览器扩展的开发者现在都没有继续维护和开发了
    3. Google 要求大家必须升级,大家说:不让用不用,鬼理你
    4. 然后这些扩展的用户,尤其是很多工具类产品,甚至包括 Cyrpess、OpenResty Showman 等测试工具都依赖 MV2 扩展,就会迁移到其它支持 MV2 的浏览器,比如 Edge、Firefox

    相对来说,Google 推 GA4 就很硬气,猜测是因为 GA 没有什么特别大的竞争对手,从速度、效果、Adsense 等方面来看,GA 有巨大优势。而且升级 GA 很容易,换个 JS,改下初始化就行了。

    升级 MV3 很困难,各种不兼容的 API 变化,大量程序几乎要完全重写。而且,看过 Chrome Extension Manifest V3 升级笔记 的同学应该还记得,Google 最开始推 MV3 的时候,API 和文档烂的一塌糊涂,简直不能用。

    Chrome Web Store 团队会进一步聆听社区,讨论升级方案,并且在 2023 年 3 月拿出新方案(他们没有放弃!),所以大家也不要掉以轻心。

    总之,我的建议是:

    1. 如果大家现在要做扩展,建议还是做 MV3 版本
    2. 如果大家现在的工作依赖 MV2,可以继续放心大胆用
    3. 保持对 MV2/MV3 升级计划的关注

    如果你有把浏览器扩展从 MV2 升级 MV3 的问题、经验,欢迎跟我讨论分享。

  • 喜获 Code for Better _ Hackathon 二等奖,简单复盘

    喜获 Code for Better _ Hackathon 二等奖,简单复盘

    2022 年 9 月 16 日,以 CODE FOR BETTER_ 为主题,以 2022 Google 开发者大会为契机举办的 Hackathon 大赛进行了线上颁奖仪式。多支优秀参赛队伍在赛程中展示了出色的开发能力,为心中所期待的美好生活,挑战开发潜能,探索代码塑造美好生活的多重可能,并最终获得一、二、三等奖及优秀奖,为本期 Hackathon 大赛画上圆满句号。

    ……

    roudan.io 团队的“姆伊用药助手”基于 Web 、ChromeOS 技术,通过 PWA (Progressive Web Application) 带来能够有效预防疾病、增强治疗效果的解决方案。

    代码构建美好生活:聚焦 Code For Better _ Hackathon 大赛的精彩与感动

    0. 创意来源

    时间倒退到一年前。我在张大妈上申请到一款智能药盒,试用之后,感觉并不满意:它只能提醒我几点几分吃药;但是很多药,尤其是糖尿病相关药物,并不是按时吃就可以的,必须根据吃饭的时间来调整。如果我吃饭时间不固定,那这款药盒的价值就会大打折扣。

    我也顺便试了试其它的 App,发现各家的想法都差不多,关注点主要在社交和家庭成员关怀上,而不是准确科学用药。毕竟前者有更大概率可以带来收入。

    于是我就想自己做一个产品,满足根据吃饭的时间来定时提醒的需求。我跟几位产品经理朋友聊过这个想法,可惜这几位朋友和那些做用药助手的产品经理一样,本身没有慢性病,没有这方面的需求,对慢性病药物也不是很了解,所以对我的想法一笑置之。

    1. 参加 Hackathon

    我与思否有一些渊源,日常活跃在 segmentfault.com,偶然看到 Hackathon 的招募信息。我一下就被这次 hackathon 吸引了:

    1. 线下活动,即日起到参赛日都可以写代码,对于我这种中年慢性病患者来说很友好;
    2. 使用 Google 技术,沾边就可以,对于我这种 Web 开发者来说,等于没限制;
    3. 主题是 Code for Better _,很明显,_ 的意思是大家自己来填,正好可以做前文的用药助手,非常切题。

    于是我立刻就报名了。十分坦率地说,我对获奖完全不抱任何期待,只想借助这个机会,把想象里的产品做出来。我也询问了之前的产品经理朋友,他们对 hackathon 兴趣寥寥,于是只能自组一队。

    我的参赛作品就是:姆伊用药助手。

    2. 技术选型

    首先,毫无疑问,这个产品要能运行在移动平台上。

    接下来,最重要的选择点是:推送和提醒。我国的移动环境比较难搞:Android 手机品牌太多,并没有统一的推送接口;苹果倒是有,但是市占率太有限;因为超级应用微信的存在,微信小程序和公众号的到达率比较理想,但是实际运营都需要公司实体,作为 hackathon 作品太重。

    想来想去,我打算试试 PWA。我的考虑是:

    1. 浏览器大部分基于 chromium 内核二次开发,PWA 可以近似认为全普及
    2. PWA 基于 service worker,保活能力应该强于普通应用
    3. PWA 一贯是 Google 主推的技术,符合参赛题目

    于是,我准备基于 PWA notification API 实现功能。

    3. 开发

    开发的过程就比较平淡。前面说了,我其实没打算得奖,目标就两个:

    1. 做出自己想要的产品
    2. 体验 PWA Notification API

    于是我选择 Vite + Vue3 + TailwindCSS 作为前端框架,利用晚上下班后的时间,开直播写了大概 4、5 个小时,就初步完成了计划的功能。代码在这个仓库:meathill/muidicine: 姆伊用药助手 (github.com),大家有兴趣可以看下。

    比较遗憾,因为时间关系,还没找到合适的 Service worker 计时方法,就该提交作品了。所以提醒功能没有能达到预期目标。

    4. 小插曲

    我没拉到队友,姆伊用药助手的产品规划也比较克制,所以我没打算再找帮手。不过我也挺想趁这个机会社交一把,于是,当我在群里看到有人想做浏览器扩展,就马上报名了。

    那个主创的想法跟我另一个创意:共享首页 有些相像,于是我很想也掺一脚——当然,是在开发完姆伊用药助手之后。可惜的是,这个团队的开发进展很慢。他们犯了 hackathon 草台班子的大忌:目标定得太高,边界画的太远,需求远超一般业余时间能覆盖。于是商量好做啥之后,大家就各自上班搬砖,一直到最后都只有 PPT。

    5. 得奖

    我要再次强调,我没想到能得奖。得知入围决赛之后,我按部就班地准备 PPT、完成路演,接着便把这件事放在一边,继续干活搬砖。接着得到通知,入围获奖名单,我很开心,可也没抱什么幻想,觉得了不起就是个优秀奖,便按照要求写了获奖感言,继续边搬砖边等待颁奖。

    现在想想有点后悔,应该抓紧时间把上面说的 service worker 计时方案搞定,说不定还能赶上一波宣传。

    颁奖那天,我半开玩笑给姆伊许愿,说得奖了就给它吃牛排。本以为会是空头支票,没想到出乎意料,喜获二等奖。那自然不能食言,姆伊得到一大块牛排。

    姆伊喜获牛排一块

    得奖感言见:2022 Code for Better _ Hackthon 获奖感言

    6. 总结

    这应该是我参加的第三次 hackathon,终于不再陪跑,喜获大奖。但是我并不觉得掌握到取胜密码,下次参加可能还是无功而返。话说回来,我觉得我心态调整挺好的,本来也不图得奖,关键在于做了自己想做的东西、实践了平时没用到的技术,给自己的将来探索了更多可能性。

    考虑到获奖感言里已经充分感谢过主办方和协办方,我这里就简单再感谢下 Google 和思否两家良心企业,为广大开发者举办这样好的 hackathon,希望将来越来越好。

    我将来会继续参加类似的活动,希望能把自己的想法逐个付诸实施,创造的乐趣真的很棒。下一站:TiDB Hackathon 2022

  • 2022 Code for Better _ Hackthon 获奖感言

    2022 Code for Better _ Hackthon 获奖感言

    奖项揭晓,没想到我竟然拿了二等奖。其实我是瞄准安慰奖去的,得知入围获奖名单就很开心了。写这段感言的时候,我以为自己是“优秀奖”,没想到竟然高攀二等奖,真是既惊又喜呀。

    看来我真的好好把这款产品做好了,做成一个真正意义上的 side project。


    简单介绍获奖作品,可从使用的技术、作品意义/价值等

    参加本次 Hackathon 的意义和获奖感言

    大家好,我是参赛团队 roudan.io 的代表翟路佳。其实我们团队有两个人,但我那位设计师朋友觉得工作量太少,就没有报名,于是今天大家就只看得到我了。

    我是一名全栈偏前端开发者,目前就职于 code.fun。我喜欢编程,希望把编程当作终身职业。我 2006 年毕业,从页面仔开始入行,如今已经工作 16 年了,作为一名中年开发者,我仍然能感受到编程的乐趣,也很享受学习各种新知识、尝试各种新技术的过程,只不过享受过恣意妄为的青春岁月之后,我不得不付出中年罹患各种慢性病的代价。

    感谢现代医学昌明,大部分慢性病都只影响生活质量,不太致命。在长时间学习与慢性病共存之后,我发现,吃药这件事,比我之前以为的复杂;而如果能好好吃药,就能提高药效,用更低的剂量换来更好的效果。

    同时,作为一名程序员,我也很喜欢尝试新设备与新应用,比如各种智能药盒和用药助手 App。但我也遗憾地发现,这些产品的产品经理自己可能不太吃药,他们设计的产品只能帮忙患者记着用药,但并不能让患者科学用药。

    于是我就想做这样一个应用或者产品,能帮患者科学用药,改进健康情况。所以,我看到这期 hackthon 的主题:Code for Better Life/Health 之后,觉得天助我也,时不我待,于是早早就报名参赛。我的作品是姆伊用药助手,希望它能像我家的狗狗一样忠诚的陪伴在用户身边。

    作为 web 全栈开发者,我首选基于浏览器的各种技术。Google 一直是浏览器技术的重要推动者,我们常用的 Chrome 基本代表着 web 技术的先进方向;PWA 则将 Web 应用的体验门槛拉低到绝大部分用户都能享受的地步。选择浏览器+PWA 开发,既能覆盖足够多的用户、又能提供很高的开发效率、以及广阔的发展空间,于是我就选择了这套技术方案。

    当然,仅在 hackthon 的规定时间内,我无力把产品做得足够强大可靠有效,所以目前只实现了一款糖尿病药物的添加。实话实说我没想到能获奖,感谢评委老师们的错爱,给了我更强的动力去完善这款产品。作为这款产品的目标用户,我希望能够把这款产品继续开发下去,支持更多的药物类型,支持更多的用药方式提醒。我还想趁机学习一下 TersorFlow 深度学习技术,让 AI 能够助力这款产品,帮助更多的慢性病患者科学用药,减轻病痛。

    思否一直是 hackthon 的泰山,Google 则是技术型公司的北斗,感谢两家公司给我们开发者带来这样的机会,让我们一起为更好的未来编码。希望明年还能有机会参加这样的 hackthon,预祝我们大家明天都会更好。


    我们本次参赛作品是姆伊用药助手,我们希望这款应用能帮助慢性病患者科学服药,提高药效、减轻病情、改善生活质量。它的灵感来源于我们自己的日常难题,很多类似的产品缺少对用药方式的关注,于是我们希望动手改进。

    这次比赛的主题让我们非常激动,感觉机不可失时不我待。通过此次比赛我们终于把想法变成现实,其中借助谷歌浏览器开发技术,我们得以快速实现产品原型;假借现代化浏览器和 PWA,我们让这款产品有机会惠及更多用户。目前梦想才刚刚开始,我们希望将来产品能帮到更多慢性病患者。

  • Google新产品风格滚动条的实现方法

    Google全线产品改版后,褒贬不一。不过它们滚动条看起来很漂亮,简单好看,有点Ubuntu的感觉。

    不过实现起来并不复杂,研究之后,发现是这样定义CSS的:

    ::-webkit-scrollbar{
      width:6px;
    }
    ::-webkit-scrollbar-track-piece{
      background:none;
    }
    ::-webkit-scrollbar-thumb {
      background:#DCD9DE;
      border-radius:6px;
    }
    ::-webkit-scrollbar-thumb:hover {
      background:#EAE6EA;
    }

    当然,看到”-webkit“,自然只有webkit内核的浏览器比如Chrome才生效(我没有测试Safari)。具体支持哪些样式暂时还不确定,Google搜索“-webkit-scrollbar”竟然没有结果。已知background、border这些都没问题,:hover这样的伪类也支持,margin、padding似乎没有作用。以后再慢慢研究吧。