Live Note

Remain optimistic

~运算符

位运算符是三步处理的过程:

  1. 把运算数转换成 32 位数字
  2. 把二进制数转换成它的二进制反码
  3. 把二进制数转换成浮点数
1
2
3
var iNum1 = 25 //25 等于 00000000000000000000000000011001
var iNum2 = ~iNum1 //转换为 11111111111111111111111111100110
alert(iNum2) //输出 "-26"

~~技巧

这是刷题时看见别人的代码里使用的东西,通常用来代替 Math.trunc()的方法。

1
2
3
4
5
6
//单个 ~
console.log(~1337) // -1338
//数字输入
console.log(~~47.11) //47
console.log(~~1.9999) //1
console.log(~~3) //3

当原始输入不确定时,~~可以将任何非数字类型转换成 0:

1
2
3
4
5
6
7
8
console.log(~~[]) //0
console.log(~~NaN) //0
console.log(~~null) //0

// | 0 也是相同的效果
console.log([] | 0) //0
console.log(NaN | 0) //0
console.log(null | 0) //0
Read more »

什么是微前端

微前端架构具备以下几个核心价值

  • 技术栈无关:主框架不限制接入应用的技术栈,子应用具备完全自主权
  • 独立开发、独立部署:子应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新
  • 独立运行时:每个子应用之间状态隔离,运行时状态不共享

现有解决方案

  • 路由分发(nginx)
  • npm 子包:基座负责打包构建发布,打包时集成;
  • iframe:应用之间完全独立;需要基座提供通信方案;
  • 通用中心路由基座式:完全独立;需要基座提供通信方案;使用 DOM 实现;(阿里乾坤)
  • 特定中心路由基座式:相同技术栈;复用基座公共基建内容;(美团广告业务)
Read more »

防抖

浏览器中有的事件触发非常频繁,如果在事件触发的时候就调用,这时就会不断地产生新的调用,导致变‘卡’。
防抖就是在某段时间间隔内,不调用函数,直到一段时间后不在再新的事件触发,再调用函数;或者是先调用函数,在一段时间间隔内继续触发不再重复调用函数。

Read more »

日航哲学 – 成功方程式

人生 · 工作的结果 = 思维方式 _ 努力 _ 能力

作为人,何谓正确

领导人率先垂范,以身作则。

阿米巴系统

京瓷的经营理念: 在追求全体员工物质和精神两方面幸福的同时,为人类社会的进步发展做出贡献。

阿米巴经营是通过一个个小集体的独立核算来实现全员参与经营、凝聚全体员工力量和智慧的经营管理系统。

但是在 乌合之众 中说到,群体聚集在一起的智商,只会降低。所以是否可以利用群体的力量,独立的领导人(智慧&方向),达到目的。

阿米巴经营的目的

  1. 确立与市场挂钩的分部门核算制度
  2. 培养具有经营意识的人才
  3. 实现全员参与的经营

创业初期部门结构

创业初期部门结构

核心技术在研发

传统公司经营模式

传统公司经营模式

如果市场价格波动,销售的售价必然下降。此时,如果减少销量,会增加库存。增加销量,成本增高,总利润下降。

此时拆分成阿米巴之后,生产和销售之间必然会产生分歧。此时直接损害生产部的利益,所以传统经营模式在阿米巴经营中并不适用。

细分阿米巴的三个条件

  1. 能够独立核算的单位
  2. 独立完成某个业务的单位
  3. 划分组织必须有利于实现公司的方针和目标

ES6 中,为了保持兼容性,var 和 function 声明的全局变量依旧是顶层对象的属性

1
2
3
4
var a = 1 //如果在 Node 的 REPL 环境,可以写成 global.a 或者 this.a
window.a //1
let b = 1
window.b //undefined

global 对象

  • 在浏览器对象中,顶层对象是 window,但 Node 和 Web Worker 没有 window。
  • 在浏览器和 Web Worker 中,self 也指向顶层对象,但 Node 没有 self。
  • 在 Node 中,顶层对象是 global,但其他环境都不支持。

以下为两种勉强可以取到顶层对象的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//方法一
typeof window !== "undefined"
? window
: typeof process === "object" &&
typeof require === "function" &&
typeof global === "object"
? global
: this
//方法二
var getGlobal = function () {
if (typeof self !== "undefined") {
return self
}
if (typeof window !== "undefined") {
return window
}
if (typeof global !== "undefined") {
return global
}
throw new Error("unalbe to locate global object")
}