bjmayor 发布于 2021-08-29

go defer陷阱

[TOC]

golang defer陷阱

测验

下面程序的输出是什么?

package main



//!+f
func main() {
	println(f1())
	println(f2())
	println(f3())

}

func f1() (r int) {
	defer func() {
		r++
	}()
	return 0
}

func f2() (r int) {
	t := 5
	defer func() {
		t = t + 5
	}()
	return t
}

func f3() (r int) {
	defer func(r int) {
		r = r + 5
	}(r)
	return 1
}

答案

如果你的结果是

1
5
1

恭喜你,答对了。这篇文章您不必看了。

如果答错了。请继续阅读

阅读全文 »

bjmayor 发布于 2021-08-29

一起来说 Vim 语

一起来说 Vim 语

[TOC]

作为一款古老而具有持久生命力的编辑器,Vim 自有它的强大之处。很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令。如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣。其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作。只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了。

我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。

阅读全文 »

bjmayor 发布于 2021-08-28

nginx常用配置

[TOC]

nginx 常用配置 nginx -V 查看编译参数。 参考很都博客,还有《极客时间》上的《Nginx核心知识150讲》。

Baisc Auth

语法: auth_basic string | off;
默认值: auth_basic off;
配置段: http, server, location, limit_except

默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。

语法: auth_basic_user_file file;
默认值: —
配置段: http, server, location, limit_except

用户密码文件,文件内容类似如下:

ttlsauser1:password1
ttlsauser2:password2:comment

配置示例:

http {
	...
	location / {
		auth_basic "basic";
		auth_basic_user_file conf/htpasswd;
	}
}

密码生成

  • openssl openssl passwd -crypt 原始密码
  • htpasswd 需要安装yum -y install httpd-tools

阅读全文 »

bjmayor 发布于 2021-08-28

ssh使用介绍

[TOC]

ssh 是用的非常频繁的工具。这里总结下我常用的。

ssh 基本使用

用户名密码连接

ssh work@192.168.11.1

默认端口22, 可以通过 -p参数指定

密钥登录

ssh -i 密钥文件 work@192.168.11.1

aws的服务器都是这种方式登录。

免密登录

在A服务器ssh免密码登录B服务器。

  1. 在A服务器上生成密钥和公钥

    ssh-keygen
  2. 同步公钥到B服务器

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@serverA # 直接手动复制A服务器的~/.ssh/id_rsa.pub 到 B服务器的~/.ssh/authorized_keys 也是可以的。

阅读全文 »

bjmayor 发布于 2021-08-28

百度小程序开发中需要注意的事项

[TOC]

百度小程序开发中需要注意的事项

开发时打开校验域名

这个坑了我几个小时,还是在发布版本上对话框弹出报错信息才找到原因。

就是我开发时关闭了校验域名,开发环境和体验版都测试没问题,一上线就空白页。平时打印错误又是用的console.log, 根本找不到原因。没办法,把报错提示改成swan.showToast才发现问题。

图片验证码需要配置downloadFile的合法域名

一直没有配置,以为配置了request的合法域名就够了,和上面的问题类似,也是开发版和体验版没问题,一上线就出错。

直接使用<image>不能实现验证码功能,因为他不会带上cookie。

解决办法是

  1. 找个cookie包,会解析request请求,把cookie保存到本地,并在下次请求时带上cookie的库。百度即可,有蛮多。
  2. 图片验证码使用canvas画,大概流程是:
    1. downloadFile 下载。
    2. saveFile保存临时文件
    3. canvas把临时文件绘制出来,删除临时文件。

阅读全文 »