git push

git 支持的协议挺丰富的…这里只记下https还有ssh
http/https都是要验证身份的,需要输入用户名以及密码
这就告诉了git服务器,提交者是谁

这两种协议,都依赖http服务器配置,比如nginx
client_max_body_size 如果大于这个参数的值,就会有413错误
push就相当于post
而ssh就简单了,随便push,多大都接受

ssh 可以直接push 然后输入ssh链接中用户的密码
但是,git服务器不知道提交者是谁…所以即使提交成功了,相关的hooks也没有执行,在网页里就看不到提交
如果添加了ssh key
提交时,git服务器知道这次提交和谁的账户中的key相关联,就知道是谁提交了,hooks也就执行了,也就能看到更新了

git服务器 ssh协议

搭建的gogs 还有gitea, 新建的仓库都会有下面这个
git remote add origin [email protected]:sleepm/sample.git
但是push的时候又会有以报错
fatal: ‘sleepm/sample.git’ does not appear to be a git repository
fatal: Could not read from remote repository.
意思大概是请求的路径并不是一个代码仓库
好好想一想,冒号后面的是路径,因为用的root用户,所以,绝对路径是
/root/sleepm/sample
但git服务器配置的repository路径却是另外一个,比如
[repository]
ROOT = /root/gitea-repository/
仓库都在那个目录里….
所以,下面这样写就可以正常的push了
git remote add origin [email protected]:gitea-repositories/sleepm/sample.git

如果不想加那么长,可以在配置里把路径改成/root,然后重启gitea
再把原来的仓库移动到root下面,就好了

缺点就是….root下面会有很多目录,用户越多,目录越多…
挖个坑,git服务器的git协议
https://github.com/git/git/blob/master/Documentation/git-daemon.txt

javascript array的map forEach every filter reduce

map

var a = [1,3,6,4,5];
var new_array = a.map(function(value, index, array){
    console.log(value, index, array);
    return value;
})

跑一遍就知道了,上手敲,不要复制粘贴
map接收一个函数,然后新数组的每个元素是这个函数的返回值
这个函数接收三个参数,第一个是当前元素,第二个是当前元素的索引,第三个是当前数组;
这样子,看着好像没有实际用到的,举个例子

var links = [];
$('ul').map(function(value){
    links.push($(value).find('a').href);
})
console.log(links.join("\n"));

在某个资源站,下载电视剧,一个一个复制是不是很烦呐,将上面的代码改一改,控制台里走一走,链接全部出来了,就问你爽不爽😁

forEach
forEach的第一个参数也是个函数,也接收三个参数,这个参数和map一样,不过,它没有返回值,所以也就没有新数组产生
上面找资源链接的代码也可以用forEach去写,因为我们的目的是一致的,
都遍历数组,然后找到链接后加入数组,最后显示所有链接
第二个是可选参数,用作this, 在第一个函数里面可以用this,影响外部的对象,在某些时候还是很有用的,比如
不用再 var that = this;
然后在闭包里面用that了😂….

every
这个方法和上一个一样,参数列表一样,传的函数的参数也一样
不过,返回值是布尔,检验每个元素是否通过了传入的函数的测试,因为遍历了数组,所以我们还是可以用它整理资源😁

filter
这个方法也和上一个一样,检验每个元素,不过不同的是,通过测试的元素,会组成一个新的数组,返回值就是这个数组

reduce
这货也接收一个函数作为参数,官方举的例子很直接,就是从左到右应用那个函数,最后返回函数累计计算的结果
咱们能不能用它来处理电视剧资源链接呢😂,答案是可以的

$('ul').reduce(function(link, value, index, array){
    return link + "\n" + $(value).find('a').href;
})

嗯,如果 $(‘ul’)没有reduce方法,可以.toArray(),再调用reduce
发现了没,这个函数接收四个参数,第一个很特殊,它就是上次调用这个函数的返回值,
reduceRight 和上面那个哥们一样的,不过处理的顺序相反
//课外知识点 递归 迭代

循环数组的方法还有几个,sort,some,find,findIndex…待续