# 2021-03 日常记录

2021-03-12 周五

# Git Cant push or pull encountered end of file

在云服务器上,突然无法拉取 github 仓库上的代码。报错 fatal: unable to access xxx Encountered end of file

执行 GIT_CURL_VERBOSE=1 git push

GIT_CURL_VERBOSE=1 git push

发现根本连不上 github 了,应该是上次把与服务器的 dns 改成默认值导致的。

linux 修改方式


2021-03-16 周二

# CommonJS 和 ES Module 的区别

CommonJS 和 ES Module 都是解决下列问题的:

  • 解决变量污染问题,每个文件都是独立的作用域,所以不存在变量污染
  • 解决代码维护问题,一个文件里代码非常清晰
  • 解决文件依赖问题,一个文件里可以清楚的看到依赖了那些其它文件

区别在于:

  • CommonJS:

    • CommonJS 可以动态加载语句,代码发生在运行时
    • CommonJS 混合导出,可以导出单个值,也可以导出引用对象,导出引用对象时之前的导出将被覆盖了
    • CommonJS 导出值是拷贝,可以修改导出的值,在代码出错时,不好排查,可能引起变量污染
  • ES Module:

    • ES Module 是静态的,不可以动态加载语句,只能声明在该文件的最顶部,代码发生在编译时
    • ES Module 混合导出,单个导出,默认导出,完全互不影响
    • ES Module 导出是引用值之前都存在映射关系,并且值都是可读的,不能修改

2021-03-17 周三

# fatal: unable to access xx: TCP connection reset by peer

云服务器上,又无法拉取 github 仓库上的代码了。报错 fatal: unable to access 'https://github.com/xxx/': TCP connection reset by peer

# 说法一:有代理

env | grep -i proxy 查看代理,如果有,使用命令移除 unset https_proxy

git config --global http.proxy 查看代理,如果有,使用命令移除 git config --global --unset http.proxy

# 说法二:把 URL 模式从 HTTPS 改为 SSH (可行)

  • 1.github 先配置 SSH Key

    • 设置 git 的 user name 和 email
    • 生成 SSH Key,有的话执行 cat id_rsa.pub 来拷贝
    • github UserSetting 里面添加 SSH Key
    1. 修改仓库 URL Changing a remote's URL (opens new window)
git remote -v
#> origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
#> origin  git@github.com:USERNAME/REPOSITORY.git (push)
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
# Verify new remote URL
$ git remote -v
#> origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
#> origin  git@github.com:USERNAME/REPOSITORY.git (push)
1
2
3
4
5
6
7
8

2021-03-19

# 为什么0.1+0.2不等于0.3

JavaScript 使用 Number 类型表示数字(整数和浮点数),遵循 IEEE 754 (opens new window) 标准,通过64位来表示一个数字。

数字在内存中的表示方式

数字在内存中的表示方式

图片文字说明

第0位:符号位,0表示正数,1表示负数(s) 第1位到第11位:储存指数部分(e) 第12位到第63位:储存小数部分,即有效数字(f),52位

运算的时候,先转二进制,然后对阶运算。由于位数的限制,可能会存在精度损失,所以会得出不等于。 精度损失可能出现在进制转化和对阶运算过程中。

参考 (opens new window)


2021-03-22 周一

# mac 上 Chrome 非 https 无法打开摄像头

地址栏输入 chrome://flags/,搜索 unsafely。选择 enabled ,并输入要授信的域名/ip。

chrome 设置


2021-03-24 周三

# koa 报错 413 Payload Too Large 请求体过大

koa 项目里面使用了 koa-bodyparser 接受数据,默认对请求体的大小限制了:

  • formLimit: 表格限制默认 56kb
  • jsonLimit:json传输默认限制 1M
  • textLimit:文本传输默认限制 1M

增加参数:

const Koa = require('koa')
const bodyParser = require('koa-bodyparser')
const app = new Koa()

app.use(bodyParser({
  'formLimit':'2mb',
  'jsonLimit':'2mb',
  'textLimit':'2mb',
}))
1
2
3
4
5
6
7
8
9

2021/3/25 周四

# linux 查看 nginx 安装目录

在启动了 nginx 的情况下 ps aux|grep nginx nginx 运行情况

# Apache 代理转发到 https

需要配置

SSLProxyEngine on
ProxyPass /api https://exapmle.com/api
ProxyPassReverse /api https://exapmle.com/api
1
2
3

2021/3/26 周五

# iframe 操作父页面报错

报错 Uncaught DOMException: Blocked a frame with origin "https://xx.com" from accessing a cross-origin frame.

  • 方案一: 修改调用的方式,使用 postMessage (opens new window)

  • 方案二: Response Headers 设置 x-frame-options: SAMEORIGIN 不是这个问题,与这个设置无关

  • 方案三: 设置 document.domain = 'expamle.com',把两个站设置成一样的

上次更新: 7/2/2021, 11:08:11 AM