备忘录

凡心所向,素履以往,生如逆旅,一苇以航。

互联网的终点是美团。

忆往昔

先辈诚不欺我,经历了互联网的野蛮生长,“降本增笑”后,像我这样的初级程序员走到了互联网红利的终点。
混迹互联网的时候,总是能听到一句流传甚广的话“互联网的终点是美团。”
“初闻不知句中意,再闻已是句中人”,情真意切,认识 IC 卡很早,但“深入交往”是在送外卖的时候。
世界是善良的,但总有“恶意”充斥于某些角落,小区、楼宇的门禁总是影响“追风少年”的脚步,阻碍“发家致富”的道路。
有人的地方就有江湖,不经意间总会在某些“禁地”发现一些熟悉的身影,不同的是,他们骑着车风驰电掣,我走着路满头大汗,在“圈子”里混熟后终于知道了其中的奥秘,他们掌握着通往“财富”的钥匙IC 卡
或是曾经租住在某个小区,或是路边 10 元解君愁,他们手上有大量的方便之门,效率提高的同时,财富也水涨船高,他们有着统一的称呼“大神”。
经过长时间的推杯换盏、抽烟、喝酒、烫头后,终于我也可以“横行”于各个“禁地”,效率大幅提升,财富“水涨船高”的同时不禁感叹“科技改变世界(我的世界)”。
作为曾经的“互联网人”,总不能知其然不知其所以然,遂在闲暇之余总会翻看一些相关书籍和视频,增长见识的同时开阔一下视野,但才疏学浅,终不得入其门。

起因

迫于生活的压力,回到了这个 N 线的小县城,“嘿,老板你也在这”(王宝强)。
万事轮回,兜兜转转,现在依然没能逃过美团的“制裁”,你说巧不巧吧。
某天下班回家,发现小区的门打不开了,只能“尾随”其他人进入小区,奇怪的是单元门却能刷开,到家翻看了缴费凭证后发现是物业费到期了。
尘封已久的兴趣又被勾了起来,在学习网站上学了一些皮毛之后就开始了尝试


未完待续。。。
发现图片全挂了,搜了一下是微博防盗链,修复先


汇总 Sublime Text 手动注册激活的方法,方法来源于互联网;


2022.07.12

最新的 4126 更新版本中(是的,你没看错,从 4126 更新到 4126)此前的方法已失效!


阅读全文 »

仅以此文记录自己对 Object.defineProperty()方法的理解,源起题目监听 data 变化的核心 API 是什么?

听君一席话

首先是方法的描述:

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象

通俗易懂,来自MDN

阅读全文 »

对 MVVM 的理解

官方示意图

MVVM

  1. MVVM 由 Model、View、ViewModel 三部分组成;
  2. Model 表示数据层,数据和业务都在 Model 中定义和处理;
  3. View 表示视图层,负责数据的展示;
  4. 而 ViewModel 则是一个同步 Model 和 View 的对象,使用 new Vue 创建的实例就是 ViewModel;
  5. ViewModel 通过监听 Model 中的数据变化来控制 View 的更新,同时将 View 中由用户交互产生的数据变化同步给 Model,这个过程是由 ViewModel 连接起来的;
  6. MVVM 实现了 Model 和 View 的自动同步;

Vue 的优点

  1. 轻量化与可扩展性,核心功能就是视图与数据的双向绑定,其他强大的功能由插件扩展;
  2. 双向数据绑定,操作数据即可更新视图,视图交互也会改变数据;
  3. 组件化,单文件组件的可读性高,低耦合强关联,提高代码复用性;
  4. 虚拟 DOM,原生的 DOM 操作每次都会触发重新渲染,非常耗费性能,而且用户体验也不好,而 Vue 通过异步将多次 DOM 操作引起的渲染合并为一次,并且计算出最小变化 ,降低了 DOM 操作的成本,提升了用户体验;
阅读全文 »

最近,老将 MacBook Pro 2015 升级了 10.15.7,发现无法读取外置 NTFS 格式的硬盘,经过一番折腾后“暂时算是”解决了问题;

事由

由于 RMBP2015 老了,决定在 Catalina 养老,但例行的安全更新还是要有的,呐,就是它:

安全更新

这次例行更新后好久没有使用外置磁盘,今天使用的时候发现外置磁盘没有在访达中显示,然后打开磁盘工具查看,倒是显示了,但无法挂载:

无法挂载

阅读全文 »

DOM

DOM 操作的常用 API

  1. getElementById:根据 ID 获取元素;
  2. getElementsByClassName:根据 className 获取元素集合;
  3. getElementsByTagName:根据标签名获取元素集合;
  4. querySelector:根据 CSS 选择器获取匹配的第一个元素;
  5. querySelectorAll:根据 CSS 选择器获取匹配的所有元素;
  6. createElement:根据标签名创建元素;
  7. appendChild:添加、移动元素;
  8. removeChild:移除元素;

attr 和 prototype 的区别

  1. prototype 修改的是对象属性,不会体现在 HTML 结构中;
  2. attribute 修改的是 HTML 属性,会改变 HTML 结构;
  3. 两者都有可能引起 DOM 的重新渲染;
  4. 尽可能的使用 prototype;
阅读全文 »

异步

JS 是单线程语言,同一时间只能做一件事儿,并且 JS 执行和 DOM 渲染共用一个线程;

JS 异步采用单线程非阻塞式方法实现,基于 event loop 机制;

异步和同步的区别

  1. 异步不会阻塞代码的执行,想象一下 console;

    异步

  2. 同步会阻塞代码的执行,想象一下 alert;

    同步

前端使用异步的场景

  1. 网络请求,如加载图片;
  2. 定时任务,如 setTimeout;
阅读全文 »

this 的不同应用场景

什么是 this

this 是执行上下文的一个属性,执行上下文是函数在被调用时创建的活动记录,包含函数调用的位置(调用栈)、调用方式、传入参数等信息,而 this 就是其中的一个属性,在函数执行时会使用,所以 this 的取值(指向)是在函数执行时确定的;

严格的说,调用栈包含调用位置,调用栈也可以称作调用链,是指为了到达当前执行位置所经过(调用)的所有函数,而调用位置只是当前执行函数的前一个调用;

阅读全文 »

JavaScript 基于原型继承,class 实际上是函数,是一种语法糖;

隐式原型和显式原型

.__proto__是隐式原型;
.prototype是显式原型;

每个实例都有隐式原型;
每个 class 都有显式原型;
每个实例的.__proto__都指向 class 的.prototype
实例会先在自身的属性和方法上寻找,如果找不到则自动顺着.__proto__链查找;

阅读全文 »