分类: 分享

  • 【视频】从浏览器渲染机制理解 Web 性能

    【视频】从浏览器渲染机制理解 Web 性能

    群里有同学问:

    如何优化网页性能?比如做了个网页,觉得打开速度比较慢,该怎么优化?

    这是个好问题,也是个很难回答的问题,因为涉及到的内容很多,一句两句说不清楚。所以我特地做了这个视频,详细讲解浏览器渲染的每一步,有哪些影响因素,以及我们可以针对性采取什么样的优化策略。

    开始觉得可能要做 10+p 幻灯片,讲个 10+ 分钟;结果幻灯片做了 29p,讲了 40+ 分钟。自荐给大家,希望大家认真观看,能够在日后面对网页初始加载优化时,能够游刃有余。

    从中我们也可以找到那道经典面试题:“当我们输入 URL,然后按下回车之后,都会发生什么”的答案。可谓一举两得。

    视频用到的 slidev 放在这里:

    当然,时间有限,能力有限,这个视频只关注 web 前端及部分 web 全栈的内容,以及我们力有所及能够优化的部分,可能有些内容没有覆盖到。所以,如果你有疑问、或者觉得有问题,请留言。我很乐意跟大家讨论这些问题,也很希望能给视频打补丁。

    如果你觉得我做得不错,也请给我一键三连,转发给更多需要的人。提前感谢支持。

  • 【视频】Vue3 开发扫雷游戏 Workshop 视频录像

    【视频】Vue3 开发扫雷游戏 Workshop 视频录像

    经过连续几周的奋斗,终于把这套教程做完了,共四期,从入门开始,直到在本地搭建开发环境,并使用 pinia 记录游戏成绩。所有视频都在 B 站,欢迎各位读者观看,敬请三连。

    第一期:启动项目,基础知识

    1. Vue 组件开发游乐场,免环境学开发的神器
    2. 什么是 MVVM 框架
    3. Vue3 基础
    4. 使用 display:grid 画地图
    5. 生成地雷
    6. 生成游戏地图

    第二期:组件式开发

    1. 父子组件间传递数据的方式
    2. defineEmitsdefinePropsdefineExpose 的使用
    3. 使用变量切换状态
    4. 递归变更节点状态(最后拼错了导致翻车

    第三期:游戏逻辑 => 数理逻辑

    1. 添加胜利效果
    2. 添加难度选择

    第四期:本地开发 Vite,状态管理 Pinia

    1. 总结,梳理回顾代码
    2. 修改布雷时机,让游戏更好玩
    3. 将项目迁移到本地,使用 Vite 搭建开发环境
    4. 使用 pinia 存储记录

    参考代码

    扫雷相关代码在这个仓库:meathill/minesweeper: yet another minesweeper game (github.com),欢迎学习,有任何问题均欢迎提问。目前我也时不时更新一下。

    想试玩的话这里有 DEMO


    写在第一期之后

    周日,Workshop 如期开始。有 5、6 位同学到场,出勤率 50%,还不错。

    这次 Workshop 我选择用浏览器 SFC Playground 的形式,减少环境部署的需求,希望大家集中精神在其它技术内容上。

    Vue3 开发扫雷游戏比想象中复杂,一节课讲不完,这节课的知识点有:

    1. Vue 组件开发游乐场,免环境学开发的神器
    2. 什么是 MVVM 框架
    3. Vue3 基础
    4. 使用 display:grid 画地图
    5. 生成地雷
    6. 生成游戏地图

    没有到现场的同学可以看录像,敬请一键三连:

    (视频挪到上面了)

    因为我上午清理 Sentry 的时候不小心断网,把服务器搞挂了,所以提前下播加班维护服务器,所以时间比预期要少,只有 1.5 小时。但是我觉得强度还是太大了,对我对同学来说都是。下次理想时间是讲 1 小时,分析和作业 半小时;课间休息 10 分钟。

    不出意外的话,本周日下午 3 点继续,欢迎听过的没听过的同学一起来参加。没来过的同学可以加我微信:wakabanga。

    布置一个作业:我计算每个砖块四周有几个炸弹的算法,可以优化。提出你的优化点并实现它,发给我,我就送你一本技术类书籍。大家都来试试吧。

  • 免费线上讲习班:使用 vue3 开发扫雷游戏

    免费线上讲习班:使用 vue3 开发扫雷游戏

    【2022-09-03 更新】把游戏先做出来了,以后可以扫自己的雷了:meathill/minesweeper: yet another minesweeper game (github.com)

    不过也发现,一次 workshop 肯定讲不完,考虑到现场的情况、各位同学的状态,估计初版开发要两次课。于是我干脆把后面的 Workshop 也规划出来了。


    好了伤疤忘了痛,我又想搞 Workshop 了。这次想做一次 Vue3 相关的,考虑了一下,觉得扫雷游戏比较合适:

    1. 界面简单,操作简单
    2. 覆盖全面,布局、JS、交互都有需求
    3. 不需要前后端数据交互,控制学习范围和难度
    4. 本身有一定可玩性

    可以学到的知识技能

    1. Vue3 开发应用
    2. Vue3 组件式开发
    3. CSS 高级用法
      1. CSS 布局
      2. CSS grid
      3. CSS 变量
    4. vite 脚手架

    难度

    • 中低难度
    • 逻辑较简单
    • 纯前端,无后端,无数据交互
    • 不需要开发环境,在浏览器里完成编码

    预备知识

    • HTML、CSS、JS 的基本语法
    • Vue 的基本用法

    开始时间

    (暂定)2022-09-18(周日)下午 3~5点

    报名方式

    微信直接找我口头报名即可。未加我微信的同学,请扫码

    参与方式

    我会把所有报名的同学拉到一个群里。workshop 开始时,我会创建一个腾讯会议,然后把会议链接发到群里,大家通过链接进入参加。

    事先准备

    Workshop 强调参与,不建议大家只是看,所以最好提前做一些准备:

    1. 一台支持浏览器的设备,最好是电脑
      • 可以的话,最好多准备一台设备,可以边看边敲
    2. 现代化浏览器,推荐 Edge
    3. 提前打开 sfc.vuejs.org
    4. 自行熟悉扫雷游戏
    5. 最好实现了解网页开发,HTML+CSS+JS

    欢迎报名。达到两位或两位以上同学报名,就按时开始。已达到启动标准,我开始准备了。

    我会同步开启直播,有兴趣但无法参加 workshop 的同学可以到我的直播间观看:https://live.bilibili.com/5126601


    什么是 Workshop(讲习班)

    Workshop,中文叫讲习班,工作坊。大概方式是:

    1. 由讲师讲解一些技术知识点
    2. 其他参与者针对讲过的技术知识点做现场演练
    3. 讲师及时答疑、讲解
    4. 考虑到时间因素,一般针对一些小专题,非系统性的培训

    与直播不同,直播是讲师一个人说+做,workshop 则强调给大家一个现场练习与答疑的机会。

  • 免费线上讲习班:使用 node.js 开发命令行工具

    免费线上讲习班:使用 node.js 开发命令行工具

    拜金山办公所赐,近期找工作找得颇有些烦躁。前几天跟老婆回了趟重庆,吃吃喝喝按按摩,很开心,感觉放松了不少。回来的路上,我想这就算提前过年了吧,接下来要多做点事情,正职未卜,先折腾副业吧。

    于是我想先搞一场面向初级开发者的线上讲习班(workshop),讲授如何使用 node.js 开发并发布一个 npm 包。

    什么是 workshop

    workshop,中文叫讲习班,工作坊。大概方式是:

    1. 由讲师讲解一些技术知识点
    2. 其他参与者针对讲过的技术知识点做现场演练
    3. 讲师及时答疑、讲解
    4. 考虑到时间因素,一般针对一些小专题,非系统性的培训

    与直播不同,直播是讲师一个人说+做,workshop 则强调给大家一个现场练习与答疑的机会。

    可能的收获

    这次我想做一个使用 node.js 开发 rar 解压工具的 workshop,大家可以学到:

    • 安装 node.js
    • 创建 node.js 项目
    • 使用 JavaScript 开发命令行工具
    • 使用现成的 npm 包
    • 在 node.js 中使用 ESM
    • 将自己的包发布到 npm

    学会上面几点,大家就可以使用 npm 上浩如烟海的开源仓库,封装成自己的工具。一方面可以加强自己的工作效率,另一方面也可以早日参与开源项目的建设。从各个方面来讲都是很大的提升。

    开始时间

    2022年1月29日,下午3点至5点。

    参与方式

    参加的同学,请添加我的微信,或在微信群和 QQ 群报名,我会把你们拉到 workshop 群。开始时我会启动腾讯会议,并发链接到群里。

    请大家提前准备电脑和腾讯会议。最好测试好麦克风,以便提问。


    这是我新年的新尝试,如果出现各种问题,还请大家见谅。

    欢迎报名。即使只有一位同学上线,我也会准时开始,讲解全部。

    我会同步开启直播,有兴趣但无法参加 workshop 的同学可以到我的直播间观看:https://live.bilibili.com/5126601

    如果效果尚可的话,我尽量搞成周期性;如果疫情没问题,再想办法搞线下。

    (更多…)
  • 蝉联思否 Top Writer

    蝉联思否 Top Writer

    去年挺忙,OpenResty Showman 上线开催,虽然还有很多问题,但我想最后再努努力,看看有没有转机;加上其它一些事情,比如做直播、剪视频,其实知乎和思否都没有太坚持。断断续续、写写停停,没想到还能以最后一名之姿忝列思否 2021 Top Writer 问答组队末。

    感谢思否认可,2022 年我一定继续努力,不仅继续贡献问答,也多写文章,多发视频,争取年底声望突破 25000(现在 14064)。

    T恤和猫摆件均已收到,现在在老家,回去补拍照片。

    写本文时,回看去年初获思否 Top Writer 时的激情,也不禁有些唏嘘。2021 年对我来说,颇有些失意。其中有我自己的问题,也有外界的因素,希望 2022 年这些问题不再困扰我,主业副业均能成长。也希望大家多多支持我,评论转发点赞,三连更欢迎。感谢感谢。

    (更多…)
  • 应用(直播)创意:弹幕收集器(BB酱)

    应用(直播)创意:弹幕收集器(BB酱)

    BB酱 v0.1

    2021-03-27 更新

    经过近两周的开发,我已经用上了 BB酱 v0.1。目前支持以下功能:

    • 支持读取并上传弹幕
    • 按用户名搜索、筛选
    • 取特定时间段弹幕进行抽奖

    2021-08-29 想起来就更新一次

    • 支持修改用户信息
    • 支持用户修改自己的密码
    • (正在开发)插件里登录

    在 B 站直播了一段时间,发现 B 站没有弹幕记录——其实斗鱼也没有。这里面的产品逻辑应该是:弹幕比评论更短、更情绪化、与视频内容关系更紧密,量也太大,独立的弹幕存在价值稀薄,单独做一个列表的性价比很低。

    不过我觉得,对于主播来说,弹幕还是有一些价值的,尤其是我这种没什么人看的小主播,很多时候翻翻弹幕能找回很多继续播的动力。

    所以我想做一个浏览器扩展,自动收集直播里的弹幕,然后保存起来。这样需要的时候我就能回看,或者搜索,野炊就经常用这个功能跟弹幕互怼。

    另外,B 站的直播互动功能不强,连基础的弹幕投票和弹幕抽奖都不支持,也可以利用这个插件实现。

    这个想法吸引我的还有几个点,我觉得很适合用来做直播:

    1. 足够简单,一次直播半个小时就能完成基本功能
    2. 涉及到的技术点也不少,比如 Chrome extension API、Vue 项目搭建、Mutation Observer、Serverless 等,展开讲能讲不少,不展开直接口播介绍一下也可以
    3. 做出来之后可以给其他主播用
  • 喜获思否 Top Writer

    喜获思否 Top Writer

    (其实年前就发给我了,现在才想起来拍照发……)

    2020年,书没有写完,视频也没录完,不过花了很多时间在思否上答题。基本上从年初坚持到年尾,每天至少回答一个问题,能够占据着年度排行榜的一个位置。国庆后工作压力增大,没能坚持住,慢慢掉出排行榜。

    幸运的是最终得到思否的认可,获评问答版 2020 Top Writer。感谢思否赋予我这项荣誉,也感谢思否赠送卫衣一件。

    (去年坚持锻炼还是有效果的,开始我还担心 3XL 的卫衣会穿不上,没想到还挺合身。)

    不过今年可能很难再接再厉了,答题很消耗能量,不是不会答,主要是没有好问题。更有不少鸡贼提问者,先提出问题,等待别人回答,自己验证通过,然后自己答一遍,再把自己选择为最佳答案,骗取声望。

    今年打算多输出主观、成体系的内容,播客、视频、项目、书。短期计划先做直播,争取能收获一些稳定的观众群体,把小课堂群扩一扩,这样将来做什么都方便。跟同学们讨论了一下,从斗鱼迁到 了 B 站。作严肃内容的话,B 站的确比斗鱼更合适,对小主播也更友好。

    总之吧,今年我厂有希望宏图大展,希望我自己也能在内容领域取得一些新的进展。

  • GitChat 的问题

    GitChat 的问题

    目前来看,GitChat(gitbook.cn,简称 GC) 已经黄了。网站还在,但是已经基本没人运营。我认识的主创人员也都走了,所以把之前想吐没吐的槽吐一下吧。

    0. 起高楼

    我跟 GC 结缘较早。基本上,刚好在我投身知识付费领域的时候,GitChat 创办,然后我就加入做了一场:《第一场 GitChat 总结》。

    坦率地说,当时我对 GitChat 的印象不错,主要有三个原因:

    1. 采用众筹模式,创作者在开始创作之前就已经对用户需求、用户反馈有一些准备,分享更加有的放矢。尤其对于我这种选题偏门的人来说,很有参考价值。
    2. 文字内容有利于检索。相对于其它网站的视频课程,文字内容可以被更多人找到(如果网站主允许的话,GC 实际上不允许,搜索只能搜到简介)。
    3. 每场 Chat 的最后一个环节,GC 会把订阅者和作者拉到一个群里进行交流。我非常喜欢这个环节,可以交流很多内容,还能获得一个关系群。(可惜的是,交流完之后他们就会把群解散。)

    我觉得,GC 很好地填补了技术分享领域的一块空白:中篇收费文章,一次性说清楚一件事,不贪多:

    1. 比短文(例如我的博客)更系统、更完整、更有参考价值。很多时候你很难靠一篇博客完成一项任务,需要多看多试;而长文可以。拿来当参考书很好用。
    2. 比书本更聚焦,阅读压力更小,可以利用碎片时间,稳定的学会一项技能、了解一个知识点。
    3. 文字内容方便检索,可以覆盖更多人群,利用搜索引擎流量。

    主创人员很有想法,很熟悉行业,也很有执行力。GC 产品有不少值得称道的创新点,假以时日,凭借合适的市场补位,应该可以有所成就。

    1. 宴宾客

    接下来我在 GitChat 上创建了多次 Chat,还不断记录下一些 Chat idea,从我的博客可以看到:https://blog.meathill.com/?s=gitchat

    GC 也不断拓展运营方向。首先增设专栏,即加长版 Chat,长度最长可以接近书本。接下来引入年卡,首充打折,¥512/年,可以看所有 Chat(能看多少专栏我不太记得了)。对了,还有严选,即品质比较好的文章,可以有区别于普通文章的标记,相当于平台为作品背书,可以卖得更好。

    专栏的竞品不少,掘金也在做,而且投入的资源更多;传统图书虽然不挣钱,但是品级高,所以大家也都愿意做。年卡价格其实不贵,Chat 定价多半在 10~20之间,512 相当于能看 50 篇高质量的长文,即使暂时用不上,也可以先加到已购里,等需要的时候在看。

    后来,GC 出了一篇爆款,好像叫《Java 200 道面试题全解析》,卖出了 1w+。我感觉,很多变形操作就是从这篇爆款面世后出现的……

    2. 楼塌了

    在爆款之前,GC 存在的最大问题就是内容稂莠不齐。跟其它平台比起来,GC 是行业新人,缺少积累,所以作者门槛设得比较低。有些作者甚至对自己写的内容都搞不清楚;有些作者文笔很差,前言不搭后语;有些作者会在用户群里发盗版资源,拉人头报名自己的 Chat……

    GC 团队似乎没有什么特别好的办法,只好推出“严选”标签,帮好文章背书。但是 GC 是专业平台,编辑本身对技术不是很在行,所以严选标签的选择也一言难尽……

    这个问题随着爆款出现变得更加严重。爆款有成瘾性,不仅对作者,对平台更是如此。从《200+ Java 面试题》之后,普通作者的生存环境更加严酷。一方面,混杂其中的低端垃圾文拉低了整个平台的质量,付费阅读很少,大部分都是年卡会员打卡,分成很少。另一方面,平台不断把有限的资源投入到推广爆款文章和“看起来像”爆款文章的文章里面,一时间,“面试题”与“面试技巧”齐飞,“进大厂”共“快拿 offer”一色。普通作者(就是我)的文章更难出头,甚至连想加“严选”都要跟编辑反复沟通。

    而普通作者的微信群沟通更是直接被取消了。

    于是,我的创作欲望越来越低;别的作者也是如此,微信群也越来越沉寂。终于有一天,有个作者问:“GitChat 是不是黄了?”没人回答,可能真的是黄了吧。

    3. 总结

    在我看来,GitChat 初期的产品定位有独到之处,产品形态也做得不错。但是运营时遇到两个问题:

    1. 作者能力良莠不齐,作品质量参差不齐。为了降低读者购买的决策成本,加设年卡;结果又降低了作者的收益,进而降低了创作热情。
    2. (可能)由于资金压力和流量成本,片面追求爆款。导致平台上一时间充斥着各种无营养的面试文,损害了真正知识获取者的体验。

    当然,吐槽容易,解决问题很难。即使假设大家都现金购买,我一篇文章也不过几百块,完全覆盖不了我写文章的成本。所以,搭建一个作者愿意写,读者愿意花钱看的中篇平台,还有编辑负责内容审核和读者群搭建,这个商业模式是否真的成立,我也说不准。

    不过,我真的希望有个这样的长文平台,希望将来会有。

  • 思否创始人的 Python 课

    我跟思否的关系一直不错,所以理所当然要帮他们宣传一下,顺便水一篇博客。

    一般来说,我很少转发别人的课,毕竟我自己的课都不想占用太多公共资源。不过这次是 Joyqi 老道士下山,非常少见,相信课程质量会很有保证,建议不要错过。这里帮他们扩散一下,微信扫描/识别下面图片的链接即可。

    训练营形式,面向初学者,非常值得。