everyday_github's People
everyday_github's Issues
0228日志
今天我真的好无聊,荒废了好多东西,但是也还是配置了一些电脑的东西,等下还要敲一下代码,现在就是大致回顾一下今日干的活,发现我思维的习惯是跳跃的,然后一直就会跟着自己跳跃的思维走,不管时间,有时候真的,自己有点迷恋使用工具,这种感觉还是不太行,所以以后,要经常想着时间成本。
最好要精于计算,算着自己的时间过日子,不然真的会很浪费,自己学会省钱,还不如学会省时间,把时间用在该用的地方
- 换了一张壁纸,写了个sh换壁纸的程序
- 写了一个v2ray的节点订阅程序
- 把电脑的新标签换成了infinity
- 尝试zsh这个shell
- 了解shell和终端的区别,原来shell就是就是面向内核的,终端负责输入输出
Rime输入法配置
快速获取Mardown格式的网址链接
mardown的网址链接格式是New Issue · iAoe444/EveryDay_GitHub,平时要拼接这个好麻烦,我用的firefox没有chrome的插件copytab
,所以自己动手丰衣足食,不多说,直接贴代码,使用tampermonkey这个神器就可以了
// ==UserScript==
// @name 复制markdown格式链接
// @namespace http://iaoe.xyz/
// @version 0.1
// @description 使用ctrl+shift+m键来复制
// @author iAoe
// @match http*://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var title = document.title;
var url = location.href; // 获取文档标题和链接
document.onkeydown = function(e) { //监听按键按下
var keyCode = e.keyCode || e.which || e.charCode;
var shiftKey = e.shiftKey ;
var ctrlKey = e.ctrlKey ;
var content = "["+title+"]"+"("+url+")";
if(ctrlKey && shiftKey && keyCode == 77) {
const input = document.createElement('input');
document.body.appendChild(input);
input.setAttribute('value', content);
input.setSelectionRange(0, 9999);
input.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
console.log('复制成功, 内容:'+content);
}else{
console.log('该浏览器不支持此功能');
}
document.body.removeChild(input);
e.preventDefault();
return false;
}
}
})();
使用说明
按住ctrl+shift+m就可以完成复制
代码解剖
- 复制到剪贴板
网上看到一些方法,发现不能适配所有的浏览器,于是使用了以下巧妙的方法:
document.body.appendChild(input);
input.setAttribute('value', content);
input.setSelectionRange(0, 9999);
input.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
console.log('复制成功, 内容:'+content);
}else{
console.log('该浏览器不支持此功能');
}
document.body.removeChild(input);
首先使用到了document.execCommand()
,这个方法的定义如下
which allows one to run commands to manipulate the contents of the editable region.
就是用来控制可编辑区域的内容,所以使用了一个巧妙的方法,创建一个输入框,给输入框放置内容,聚焦到输入框,执行复制命令,删除输入框
- 监听按键
监听按键是对document的onekeydown方法的重写
document.onkeydown = function(e) {
var keyCode = e.keyCode || e.which || e.charCode; //对浏览器做了兼容,从而获取keycode
var altKey = e.altKey ; //e.altKey和e.shiftKey|ctrlKey|metaKey是功能键,如果这些键按下了,就变成了key
if(ctrlKey && shiftKey && keyCode == 77) {
alert("复制成功")
e.preventDefault(); //阻止默认的按键组合效果
return false; //阻止默认的按键组合效果,适配ie
}
}
关于keycode的查询,可以看这篇文章js键盘监听事件_weixin_43608538的博客-CSDN博客,这里的keycode和xmodmap的不一样
REST架构学习
i3wm 触摸板配置
Linux修改键位
安装xrog
pacman -S xrog
这个工具可以改很多硬件方面的东西,这里我们使用xmodmap
来改键位
生成键位表
xmodmap -pke > ~/.xmodmap
键位查看器
xev
这个是键位查看器,可以看到的是,你按下键盘,就可以看到对应哪颗键的信息
KeyPress event, serial 34, synthetic NO, window 0x2c00001,
root 0x6ab, subw 0x0, time 2256878, (370,668), root:(1017,725),
state 0x40, keycode 24 (keysym 0x71, q), same_screen YES,
XLookupString gives 1 bytes: (71) "q"
XmbLookupString gives 1 bytes: (71) "q"
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x2c00001,
root 0x6ab, subw 0x0, time 2257044, (370,668), root:(1017,725),
state 0x40, keycode 24 (keysym 0x71, q), same_screen YES,
XLookupString gives 1 bytes: (71) "q"
XFilterEvent returns: False
像是在这里,按下的是q键,keycode是24,可以在之前的.xmodmap文件里面找到
修改键位表
比如说,我们要修改里面的caps键和esc键,只需要将keycode9和keycode66的内容换一下就行
生效键位表
这里我们需要做的是输入一下命令
xmodmap .xmodmap
这样就生效了
开机不自动生效
之前发现一个问题,就是开机不会自启动,i3wm使用xmodmap命令启动没用,后来查了一下资料,其实这个是这样根本没用,需要使用.xinitrc这个文件,将.xmodmap放在用户根目录就行了
https://www.kutu66.com//ubuntu/article_157124
mysql
查看建表语句
show create table <table_name> \G;
修改字段
alter table <table_name> modify column <>
Manjaro安装配置
更换软件源
- 查看现有软件源
sudo pacman-mirrors -i -c China -m rank
这里可以看到有几个软件源可以选,一般是下面三个
0.479 China : https://mirrors.tuna.tsinghua.edu.cn/manjaro/
0.301 China : https://mirrors.sjtug.sjtu.edu.cn/manjaro/
0.301 China : https://mirrors.ustc.edu.cn/manjaro/
- 修改/etc/pacman.conf,在后追加一下文本
[archlinuxcn]
SigLevel = Never
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
3 . 更改为**镜像源
sudo pacman-mirrors -c China
4.安装archlinuxcn-keyring
sudo pacman -Syy
sudo pacman -S archlinuxcn-keyring
sudo pacman -Syyu
修改主目录下的中文目录改为英文
- 将现有的中文文件夹重命名为英文文件夹(如,桌面改为Desktop)
mv 桌面 Desktop
mv 下载 Download
..........
- 编辑
~/.config/user-dirs.dirs
文件,安装对应的将中文替换为刚才重命名后的文件夹,注销,重新登录
sudo的vim和用户下的vim不同
原因是sudo的环境变量和root的,vim的配置是在当前用户下的,所以可以这样:摘抄自Sudo (简体中文) - ArchWiki
当前用户的环境变量不会应用到sudo启动的程序,除非使用-E选项:
$ sudo -E pacman -Syu
如果经常需要这样做,可以在~/.bashrc(或其他shell配置文件)中加入命令别名:
alias sudo="sudo -E"
在/etc/sudoers中添加以下内容作用相同:
Defaults !env_reset
可以把需要传递环境变量的命令设置到env_keep:
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
swap分区的配置
关于swap分区要分多少可以看这个Linux SWAP交换分区应该设置多大?_运维_天行健-CSDN博客
-
使用
Gparted
来划分一个空白的分区 -
使用分区工具
fdisk /dev/sda
创建分区,然后将分区类型换为swap
- 挂载分区
sudo mkswap /dev/sda6
sudo swapon /dev/sda6
Manjaro 终端或图形化系统工具
-
设置蓝牙的工具
-
图形化—
blueman
-
终端—
bluetoothctl
-
-
设置wifi的工具
- 图形化 —
nm-connection-editor
- 图形化 —
-
设置亮度的工具
- 终端—
xbacklight
- 终端—
-
设置音量的工具
- 终端—
alsamixer
- 终端—
-
查看系统资源
- 终端—
htop
- 终端—
vim配置
让vim拥有自动切换输入法的能力
我用的是fcitx+manjaro+vim,用这个脚本可以简单的在退出插入模式的时候切换输入法,放在,vimrc就行,需要注意的是,需要在输入法里面多配一个英语输入法的方案
function! Fcitx2en()
let l:a = system("fcitx-remote -o")
endfunction
set timeoutlen=150
autocmd InsertLeave * call Fcitx2en()
Vertx学习相关
Vert.x相关
基础
从Core看起,中间比较重要的EventBus
,Future
,Verticle
看不惯的文档的可以看视频
深入浅出Vert.x 第一季 vertx快速入门【高性能下一代异步、非阻塞、响应式JavaWeb框架、天生支持分布式微服务的技术、同Akka、Actix】_哔哩哔哩_bilibili
接着可以看下Service Proxy
Service Proxies | Eclipse Vert.x
上手
vert-x3/vertx-examples: Vert.x examples
Vert.x Blueprint Tutorials | Blog | Eclipse Vert.x
进阶
如何使用vertx-codegen工作 – Okou的个人Blog
Vert.x 技术内幕 | 解道 Vert.x 线程模型 | 「浮生若梦」 - sczyh30's blog
白木城全栈 - 知乎https://zhuanlan.zhihu.com/p/38865727)
Vert.x 技术内幕 | 异步 RPC 实现原理 | 「浮生若梦」 - sczyh30's blog
项目
Vert.x - 超赞合集 awesome list chinese
whitewoodcity/social-vertex: An open-source social networking server
目前发现的问题
Mysql数据库存取emoji表情的问题
KK
什么叫无状态协议,什么叫有状态协议
// 无状态协议
public String noStateProtocol(String userName){
return String.format("%s 登陆成功", userName);
}
// 有状态协议:协议本身会帮你记录一些状态,比如用户状态
List<String> userList = new ArrayList<>();
public String haveStateProtocol(String userName){
if(userList.contains(userName)){
return String.format("%s 登陆过了", userName);
} else{
userList.add(userName);
return String.format("%s 登陆成功", userName);
}
}
Manjaro使用问题
双系统时间不同步
在装双系统之后,windows的时间和linux的时间都会不同步,具体时间就相差了8小时,这个小毛病的修改方式如下,参考链接
硬件时钟和系统时钟。
-
硬件时钟(即实时时钟 RTC 或 CMOS 时钟)
仅能保存:年、月、日、时、分、秒这些时间数值,无法保存时间标准(UTC 或 localtime)和是否使用夏令时调节 -
系统时钟(即软件时间)
与硬件时间分别维护,保存了:时间、时区和夏令时设置。Linux 内核保存为自 UTC 时间 1970 年1月1日经过的秒数。初始系统时钟是从硬件时间计算得来,计算时会考虑/etc/adjtime的设置。系统启动之后,系统时钟与硬件时钟独立运行,Linux 通过时钟中断计数维护系统时钟
localtime和UTC
localtime指的是本地时间,UTC指的是与时区无关的全球时间标准。
windows默认使用的是localtime,而linux使用的是UTC,当登录了linux后,软件时间一样,硬件时间就是现在的时间减掉8小时,而windows登录后,就把这个时间当作是本地时间,所以才出现这种偏差
怎么修复
第一种方法:linux输入以下命令,使用localtime
timedatectl set-local-rtc true
第二种方法:windows使用UTC
使用 regedit,新建如下 DWORD 值,并将其值设为十六进制的 1。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
也可以用管理员权限启动命令行来完成:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
如果以上操作不起作用,并且你使用的是 Windows 64位系统,将 DWORD 修改为 QWORD。
Manjaro如何控制蓝牙文档
除了图形化界面外,还可以使用命令行来进行控制,需要安装两个包,第一个是bluez还有一个是bluez-utils,接着就可以使用以下命令来进行控制了
bluetoothctrl
Manjaro如何控制触摸板文档
电源管理
动态代理
解决终端卡住的问题
解决方案
卡死是因为LIUNX安全设置问题,在一段时间内没有使用数据的情况下会自动断开,解决方法就是让本地或者服务器隔一段时间发送一个请求给对方即可
- 编辑配置配置文件
/etc/ssh/ssh_config
,添加如下参数
ServerAliveInterval 50 #每隔50秒就向服务器发送一个请求
ServerAliveCountMax 3 #允许超时的次数,一般都会响应
- 修改完之后重启一下ssh服务
sudo /etc/init.d/ssh restart
参考链接
ssr科学上网
把这个库clone下来shadowsocksr/shadowsocks at manyuser · ssrarchive/shadowsocksr之后使用里面的local.py加载配置文件
cd shadowsocksr/
./shadowsocks/local.py -c ~/.config/shadowsocks/config.json
学习AIR720UG模块
Windows命令
系统变量
- 查看系统变量
echo %GOPATH%
- 设置系统变量
set GOPATH="D:\Go\"
Windows如何改键?
脚本
# https://zhuanlan.zhihu.com/p/29581818
import sys
import os
save_format = "bat" #这个值可以修改,有两个选项(bat和reg),可选择生成bat批处理文件或者reg注册表脚本文件,功能一样
class CountError(Exception): #文本文件格式错误异常
pass
class FileFormatError(Exception): #save_format值异常
pass
if save_format not in ["bat","reg"]:
raise FileFormatError("The variable 'save_format'`s value must be 'bat' or 'reg'.")
if __name__ == "__main__":
if not os.path.isdir("layout_"+save_format):
os.mkdir("layout_"+save_format)
if len(sys.argv) == 1:
if save_format == "bat":
with open("layout_bat/recover.bat",'w') as f:
f.write('@echo off\nreg delete "hklm\\system\\currentcontrolset\\control\\keyboard layout" /v "ScanCode Map" /f\necho "键位已恢复,重启系统后生效"\npause')
input("恢复文件recover.bat已生成至layout_bat文件夹下,以管理员身份右键执行该文件后重启系统生效。\n按回车键退出程序...")
else:
with open("layout_reg/recover.reg",'w') as f:
f.write('Windows Registry Editor Version 5.00\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout]\n"ScanCode Map"=hex:00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00')
input("恢复文件recover.reg已生成至layout_reg文件夹下,双击执行该文件后重启系统生效。\n按回车键退出程序...")
elif len(sys.argv) == 2:
scan_code_dict = {
"00 00":"None",
"01 00":"Esc", #即Esc键的扫描码是"0001"
"02 00":"1",
"03 00":"2",
"04 00":"3",
"05 00":"4",
"06 00":"5",
"07 00":"6",
"08 00":"7",
"09 00":"8",
"0a 00":"9",
"0b 00":"0",
"0c 00":"-",
"0d 00":"=",
"0e 00":"Backspace",
"0f 00":"Tab",
"10 00":"Q",
"11 00":"W",
"12 00":"E",
"13 00":"R",
"14 00":"T",
"15 00":"Y",
"16 00":"U",
"17 00":"I",
"18 00":"O",
"19 00":"P",
"1a 00":"[",
"1b 00":"]",
"1c 00":"Enter",
"1d 00":"Left Ctrl",
"1e 00":"A",
"1f 00":"S",
"20 00":"D",
"21 00":"F",
"22 00":"G",
"23 00":"H",
"24 00":"J",
"25 00":"K",
"26 00":"L",
"27 00":"Semicolon", #由评论区指出,键盘上的“;”应该用其他值代替,否则会与配置文本文件中的“;”混淆
"28 00":"'",
"29 00":"`",
"2a 00":"Left Shift",
"2b 00":"\\",
"2c 00":"Z",
"2d 00":"X",
"2e 00":"C",
"2f 00":"V",
"30 00":"B",
"31 00":"N",
"32 00":"M",
"33 00":",",
"34 00":".",
"35 00":"/",
"36 00":"Right Shift",
"37 00":"n*",
"38 00":"Left Alt",
"39 00":"Space",
"3a 00":"Caps Lock",
"3b 00":"F1",
"3c 00":"F2",
"3d 00":"F3",
"3e 00":"F4",
"3f 00":"F5",
"40 00":"F6",
"41 00":"F7",
"42 00":"F8",
"43 00":"F9",
"44 00":"F10",
"45 00":"Num Lock",
"46 00":"Scroll Lock",
"47 00":"n7",
"48 00":"n8",
"49 00":"n9",
"4a 00":"n-",
"4b 00":"n4",
"4c 00":"n5",
"4d 00":"n6",
"4e 00":"n+",
"4f 00":"n1",
"50 00":"n2",
"51 00":"n3",
"52 00":"n0",
"53 00":"n.",
"57 00":"F11",
"58 00":"F12",
"1c e0":"nEnter",
"1d e0":"Right Ctrl",
"37 e0":"PrtSc",
"38 e0":"Right Alt",
"47 e0":"Home",
"48 e0":"Up",
"49 e0":"Page Up",
"4b e0":"Left",
"4d e0":"Right",
"4f e0":"End",
"50 e0":"Down",
"51 e0":"Page Down",
"52 e0":"Insert",
"53 e0":"Delete",
"5b e0":"Left Windows",
"5c e0":"Right Windows",
}
fun_key_dict = dict((m.upper(),n) for n,m in scan_code_dict.items()) #键值互换,键值全大写
content = '00 00 00 00 00 00 00 00'
#用于暂时保存映射前后的键位,判断这次键位修改是否有风险
before_map_set = set()
after_map_set = set()
with open(sys.argv[1]) as f:
p = f.read().strip().split(';')
p.remove('')
content += ' {:0>2x} 00 00 00'.format(len(p)+1)
try:
for i in p:
if len(i.strip().split(':')) == 2:
before_map_set.add(i.split(':')[0].strip().upper())
after_map_set.add(i.split(':')[1].strip().upper())
content += ' '+fun_key_dict[i.split(':')[1].strip().upper()]+' '+fun_key_dict[i.split(':')[0].strip().upper()]
else:
raise CountError
content += ' 00 00 00 00'
except KeyError:
print("文件中键名称有误")
except CountError:
print("文件中未按格式书写")
else:
if before_map_set != after_map_set:
run = input("此次键位替换存在风险,{}键功能将在键盘上无对应按键,是否继续?(输入y继续,否则退出程序)".format(str(before_map_set-after_map_set)[1:-1]))
if run != 'y':
sys.exit()
if save_format == "bat":
with open("layout_bat/"+'.'.join(sys.argv[1].split('\\')[-1].split('.')[:-1])+'.bat','w') as g:
g.write('@echo off\nreg add "hklm\\system\\currentcontrolset\\control\\keyboard layout" /v "ScanCode Map" /t REG_BINARY /d "{}" /f\necho "键位已完成修改,重启系统后生效"\npause'.format(''.join(content.split())))
input("...\n{}文件已生成至layout_bat目录下,右键以管理员身份执行该文件后重启系统生效。\n按回车键退出程序...".format('.'.join(sys.argv[1].split('\\')[-1].split('.')[:-1])+'.'+save_format))
else:
with open("layout_reg/"+'.'.join(sys.argv[1].split('\\')[-1].split('.')[:-1])+'.reg','w') as g:
g.write('Windows Registry Editor Version 5.00\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout]\n"ScanCode Map"=hex:{}'.format(','.join(content.split())))
input("...\n{}文件已生成至layout_reg目录下,双击执行该文件后重启系统生效。\n按回车键退出程序...".format('.'.join(sys.argv[1].split('\\')[-1].split('.')[:-1])+'.'+save_format))
else:
input("传入参数错误,按回车键退出程序...")
TTL不能并联
Redis会丢数据吗?
DNS的配置
选择DNS
发现在家里这几天网络已有问题,具体表现是之前可以访问的现在访问不了,所以上路由器填了下广东电信的dns202.96.128.86
,这个填了之后确实之前的网络好了
但是之后发现还是有网站上不了,查了一下是广东电信的dns很垃圾
那好,万能的8.8.8.8
和114.114.114.114
可以吧,再不成可以选择阿里的dns,223.5.5.5
,还是不行,发现这些dns都被运营商劫持了,晕@@
最后选择了腾讯的dns,119.29.29.29
,备用的是这个1.1.1.1
,下面是看到的原文—来自v2ex@vefawn1
#谷歌(被运营商劫持)
dns=8.8.8.8
#阿里(被运营商劫持)
dns=223.5.5.5
#运营商自带的都有劫持现象
无劫持的 DNS
#香港
dns=210.0.255.250
#openDNS
dns=208.67.222.222
#cf
dns=1.1.1.1
#腾讯
dns=119.29.29.29
#百度
dns=180.76.76.76
#114 (不建议使用)
dns=114.114.114.114
移动宽带用 1.1.1.1 是可以的,延迟小。不过 cf 的 DNS 对于国内 CDN 并不友好,经常把国内网站解析到香港(或国外) IP 里,比如说淘宝、v2ex。相比之下 opendns 对 CDN 就友好很多。这两 DNS 延迟一般都在 10-20ms 之间。
Linux命令
返回上一次访问的目录
cd -
软链接
ln -s /mnt/x/Document/ Document
[AceEditor] 一个新的html的代码editor
WSL2 问题
WSL2设置公网/局网访问
netsh interface portproxy add v4tov4 listenport=port connectaddress=127.0.0.1 listenaddress=* protocol=tcp
port填写端口号,例如
netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 listenaddress=* protocol=tcp
i3wm配置
设置容器边框颜色 4.20
加入以下配置文件
# class border backgr. text indicator child_border
client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #333333 #222222 #888888 #292d2e #222222
client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.