给apt添加代理

有些软件的源,在当前所在的网络,直连的话速度可能很慢很慢,但是代理去连的话很快,那我们就需要加上它了
因为由此配置命令行全局代理不工作,就搜了下apt的配置,发现果然有,在这里记录下

sudo vim /etc/apt/apt.conf
Acquire::http::Proxy "http://127.0.0.1:1080";

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…待续

wake on lan 远程唤醒

有这么种数据包叫魔法数据包。
这个魔法数据包中包含:有线网卡的MAC地址,SecureOn密码。
计算机关机之后,网卡还会有轻微电流继续工作。
接收到这个包的网卡会检查这个包里的内容,如果MAC地址与自己的一致,就唤醒计算机。
这个需要bios里启用wake on lan,不过没见到过。。。可能是旧版本的bios有这个设置。。也没见到过网卡不支持的情况。。在设备管理器找到网卡,属性里可以找到wake on lan
如果要发送魔法数据包,你需要一些软件去帮助你实现。维基百科下面列出来一些。
https://zh.wikipedia.org/wiki/WOL
需要指定目标ip,如果内网唤醒,那就有点没折腾的意思了。。内网也是可以的,如其名就是为内网准备的。。
不过公网也是可以的,如果目标主机在内网中,需要在路由器中设置虚拟服务器,端口设置为7或9,ip为内网ip,这样发送到路由器的魔法数据包就会转发给目标主机。
获取公网ip,可以使用动态dns服务,只要路由器登录了动态dns,那么ip就填写动态dns给的域名就行。
我参照下面这个脚本写了个页面。。https://osteam.win/wol.php?ip=1.1.1.1&mac=11:11:11:11:11:11
https://github.com/PHPGangsta/WakeOnLAN
不过,还是不要把ip和mac随便透漏给别人,万一有人闲的唤醒你电脑,多不好?