github黑话

TL;DR: Too Long; Don’t Read. PR 内容太多,没办法看 PR:Pull Request. 拉取请求,给其他项目提交代码 PTAL:Please take a look. 请看一看 LGTM: Looks Good To Me. 代码已经过 review,可以合并 SGTM: Sounds Good To Me. 和上面那句意思差不多,也是已经通过了 review 的意思 WIP: Work In Progress. 告诉项目维护者这个功能还未完成,方便维护者前 review 已提交的代码 PTAL: Please Take A Look. 提示项目 Owner/contributor review TBR: To Be Reviewed. 提示维护者进行 review TBD: To Be Done (or Defined/Discussed/Decided/Determined). 根据语境不同意义有所区别,但一般都是还没搞定的意思 IMO: In My Opinion 在我看来、依我看、依我所见 IMHO: In My Humble Opinion IMO 谦虚的说法 LGT1: Looks Good To 1....

August 21, 2023 · 1 min · 李昌

manjaro配置fcitx5输入法

1. 安装 yay -S fcitx5 fcitx5-rime fcitx5-input-support fcitx5-chinese-addons fcitx5-qt fcitx5-gtk fcitx5-configtool rime-double-pinyin rime-double-pinyin 是双拼输入法,我使用小鹤双拼。 开机自启: cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/ 配置 fcitx5的配置目录在:mkdir ~/.local/share/fcitx5/rime/ 在这个目录下创建default.custom.yaml: patch: schema_list: - schema: double_pinyin_flypy 使用小鹤双拼输入方案。 若想对某个输入方案进行自定义,例如小鹤双拼,其原配置文件为:~/.local/share/fcitx5/rime/double_pinyin_flypy.schema.yaml.则需要在~/.local/share/fcitx5/rime/下创建double_pinyin_flypy.custom.yaml,然后在其中进行自定义。 例如: # encoding: utf-8 patch: "switches/@0/reset": 1 switches: - name: ascii_mode reset: 1 states: [ 中文, 西文 ] # 默认英语 - name: full_shape reset: 0 # 默认半角 states: [ 半角, 全角 ] - name: zh_simp # 注意這裏(※1) reset: 1 # 默认简体 states: [ 漢字, 汉字 ] switches/@next: name: emoji_suggestion reset: 1 # 默认开启emoji states: [ "🈚︎", "🈶" ] 'engine/filters/@before 0': simplifier@emoji_suggestion emoji_suggestion: opencc_config: emoji....

August 21, 2023 · 1 min · 李昌

nc-任意的TCP/UDP连接和监听

在进行一些网络测试时,可能会需要一些网络监听,这时如果再手动写一个网络程序,未免有些麻烦,此时可以使用nc命令直接创建tcp连接或监听某端口。 It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scanning, and deal with both IPv4 and IPv6. 使用case 快速创建client/server对 nc -l 1234 nc 127.0.0.1 1234 任何在client端的输出都将在server端显示 端口扫描 nc -zv 127.0.0.1 8885-8889 其他例子 nc -p 31337 -w 5 abc.com 42 nc -u abc.com 53 nc -s 10.1.2.3 abc.com 42 nc -lU /var/tmp/dsocket

August 21, 2023 · 1 min · 李昌

vxlan

基本概念 VXLAN(Virtual Extensible LAN, 虚拟局域网扩展)是一种网络虚拟化技术,它试图改善大云计算部署相关的可扩展性问题。它采用类似 VLAN 的封装技术来封装基于 MAC 含括第4层的 UDP 数据包的 OSI 第2层 以太网帧,使用 4789 作为默认分配的 IANA 目的地 UDP 端口号。 VTEP是参与VXLAN网络中的主机、虚拟交换机或物理交换机设备,用于在VXLAN隧道和基础网络之间进行数据包的封装和解封装。 具体而言,VTEP设备负责将本地主机或虚拟机的数据包封装为VXLAN数据包,以便在底层IP网络中进行传输。它添加了VXLAN头部,其中包括VXLAN标识符(VNI)和源/目的VTEP IP地址。VTEP还负责在接收到VXLAN数据包时解封装数据包,并将其传递给目标主机或虚拟机。 VTEP (VXLAN Tunnel End Point(虚拟隧道端点)):vxlan 网络的边缘设备,用来进行 vxlan 报文的处理(封包和解包)。vtep 可以是网络设备(比如交换机),也可以是一台机器(比如虚拟化集群中的宿主机) VNI(VXLAN Network Identifier):VNI 是每个 vxlan 的标识,是个 24 位整数,一共有 2^24 = 16,777,216(一千多万),一般每个 VNI 对应一个租户,也就是说使用 vxlan 搭建的公有云可以理论上可以支撑千万级别的租户 在VXLAN(Virtual Extensible LAN)中,VNI(VXLAN Network Identifier)用于标识不同的虚拟网络。 VNI是一个32位的标识符,它在VXLAN隧道中的头部中承载,以便在底层IP网络中传递。VNI允许不同的虚拟网络共享同样的物理网络基础设施,每个虚拟网络都可以具有不同的VNI 具体而言,VNI的作用如下: 虚拟网络隔离:VNI用于将不同的虚拟网络隔离开来。当VXLAN网络中的主机或虚拟机发送数据包时,VNI用于将数据包与特定的虚拟网络关联起来。这样,VXLAN网络可以在相同的物理基础设施上同时支持多个虚拟网络,而不会相互干扰。 数据包识别:当接收到VXLAN数据包时,目的VTEP(VXLAN Tunnel Endpoint)设备会根据VNI解析数据包,并根据VNI将数据包交付到正确的虚拟网络。VNI充当了在底层IP网络上传递数据包,并识别数据包的虚拟网络归属的关键标识符。 FDB(Forwarding Database) 二层网桥的FDB表项格式可表达为: <MAC> <VLAN> <DEV PORT> VXLAN设备的表项与之类似,可以表达为: <MAC> <VNI> <REMOTE IP> VXLAN设备根据MAC地址来查找相应的VTEP IP地址,继而将二层数据帧封装发送至相应VTEP。 可以使用如下命令查看fdb表项:...

August 21, 2023 · 2 min · 李昌

在manjaro台式机上使用罗技蓝牙鼠标

0. 软硬环境 系统:manjaro(内核6.1.44) 鼠标:mx anywhere 2s 无蓝牙 1. 通过优联连接鼠标与主机 这里需要下载solaar包来进行连接。 yay -S solaar Solaar 是许多罗技键盘、鼠标和触控板的 Linux 管理器,可无线连接到 USB Unifying、Bolt、Lightspeed 或 Nano 接收器; 通过 USB 线直接连接; 或通过蓝牙连接。 Solar 不能与其他公司的外围设备配合使用。 安装完成之后,打开solaar,将有如下ui界面出现,按步骤连接鼠标即可。 2. 设置鼠标按键 我的鼠标mx anywhere 2s上有一些按键,如果只用solaar连接到电脑,这些按键可能并不能发挥它的作用,因此我们需要将这些按键和快捷键进行绑定。 这里使用logiops 安装: yay -S logiops 配置: sudo vim /etc/logid.cfg 在logid.cfg中添加如下内容: devices: ({ name: "Wireless Mobile Mouse MX Anywhere 2"; // A lower threshold number makes the wheel switch to free-spin mode // quicker when scrolling fast....

August 21, 2023 · 2 min · 李昌

常用工具集合

1. draw.io 在线画图工具 https://app.diagrams.net/ 2. sql to Gorm SQL语句转化为go结构体 https://sql2gorm.mccode.info/ 3. 一些编程字体 https://www.nerdfonts.com/font-downloads 4. 团队协作工具 https://www.devbefore.com/product 5. markdown 写作工具(开源免费) https://marktext.app/ 6. z 目录快速跳转 (强烈推荐) https://github.com/rupa/z (安装)https://yangchnet.github.io/Dessert/posts/tool/z/ 7. nvm npm多版本管理 (强烈推荐) https://github.com/nvm-sh/nvm 8. lazydocker 容器查看工具 https://github.com/jesseduffield/lazydocker 9. dive 镜像查看工具 https://github.com/wagoodman/dive 10. corc 文件转发工具(任意主机) (强烈推荐) https://github.com/schollz/croc 11. asciinema 终端会话记录工具 https://github.com/asciinema/asciinema 12. tree 目录树工具 sudo apt-get install tree 13. Dev hints 技术速查表 https://devhints.io/ 15. utools 快捷启动工具 (强烈推荐) https://u.tools/ 16. 语雀 文档写作工具(团队/个人) https://www.yuque.com/ 17. fehelper 一些小工具的集合(浏览器插件)(强烈推荐) https://www....

August 21, 2023 · 1 min · 李昌

恋爱理论

三分理论 - 第一阶段 接受你的存在 0-1分 - 第二阶段 习惯你的存在 1-2分 - 第三阶段 依赖你的存在 2-3分 0.7以上就可以表白,2分以上可结婚 三草理论 兔子不吃窝边草 好马不吃回头草 天涯何处无芳草 来自攀科同志~ 锚点与斗争理论(WIP) 马克思说:人是所有社会关系的总和。而如果用一张图来描述社会关系的话,对于不同的社会关系,点与点之间的权重(边的粗细)是不同的,更大的权重可以形象的理解为:更为亲密的关系(更粗的线)。人与社会(组织)中所有其他人的关系,共同组成了人对这个组织(社会)的归属感。而其中最亲密的关系,可以称为人在这个组织的锚点,在恋爱中,恋爱的对象就是这个锚点。 在恋爱中,两个人有矛盾是正常的,而矛盾终究要通过斗争的形式,最终以某一方的妥协结束。斗争的过程,是一个求同存异的过程,没有斗争,靠冷战、非暴力不合作等形式得来的妥协,是不彻底的。就好比中国与印度的民族独立过程,中国以武装斗争进行抗争,印度以“非暴力不合作”、绝食等形式抗争,最终得来的妥协,一个是从上到下,彻彻底底的,一个是表面功夫,绣花枕头。

August 21, 2023 · 1 min · 李昌

除蟑螂小妙招

跟藏狐🦊学的一招。 原料:土豆2枚、硼酸、白糖 步骤: 两个土豆蒸熟碾成泥 土豆泥加两勺硼酸,两勺糖,搅拌均匀 捏成团子,放在蟑螂出没的地方 一周后,蟑螂不见了。。

March 29, 2023 · 1 min · 李昌

负载均衡

1. 负载均衡的作用 负载均衡(Load Balance LB),是通过单一的入口,使用某些算法,对用户流量进行分发,使用户请求合理的分配到多个服务器节点中的一种技术。 现代应用通常需要同时对大量用户提供服务,此时单台机器已经难以承担这些需求,因此需要使用多个节点同时为用户提供服务,但显然不能让用户记住多个域名甚至IP。LB位于用户与服务器集群之间,充当不可见的协调者,确保均等使用所有资源服务器。 2. DNS负载均衡 基于DNS的负载均衡比较简单,其原理是为一个域名配置多个A记录,这样当对域名进行请求时,就可以通过返回不同的域名进行流量的分配。 一种最常见的 DNS 负载平衡技术是循环 DNS。即在请求到来时,IP地址以循环方式轮换返回,请请求分散到关联的服务器上。 当然,也可以采用其他负载均衡策略,例如根据IP地址的地域等分配较劲的服务器。 3. 四层LB与七层LB 从形式上来说LB都可以分为两种:四层负载均衡和七层负载均衡。其中四层负载均衡的优势是性能高,七层负载均衡的优势是功能强。这里的四层、七层指的是OSI网络分层标准中的第四层传输层和第七层应用层。 3.1 四层LB 这里存在一个误解: **四层负载均衡并不是只工作在第四层传输层,事实上它们主要工作在二层(数据链路层)和三层(网络层)上。**根据OSI模型,当数据包到达第四层,其实已经到达了目标主机上,所以此时显然不存在什么流量转发了。四层负载均衡的真正含义是:这些工作模式的共同特点是都维持着同一个TCP连接。 数据链路层LB 数据链路层数据帧中包括有目的MAC地址和源MAC地址,数据链路层负载均衡所做的工作,是修改请求的数据帧中的 MAC 目标地址,让用户原本是发送给负载均衡器的请求的数据帧,被二层交换机根据新的 MAC 目标地址,转发到服务器集群中,对应的服务器的网卡上,这样真实服务器就获得了一个原本目标并不是发送给它的数据帧。 数据链路层的负载均衡只对目标MAC地址进行了修改,不涉及其他层次,因此对于更上层的网络层来说,数据是无变化的,这样网络层才能正常工作。 这是因为第三层的数据包,也就是 IP 数据包中,包含了源(客户端)和目标(均衡器)的 IP 地址,只有真实服务器保证自己的 IP 地址与数据包中的目标 IP 地址一致,这个数据包才能被正确处理。 所以,我们在使用这种负载均衡模式的时候,需要把真实物理服务器集群所有机器的虚拟 IP 地址(Virtual IP Address,VIP),配置成跟负载均衡器的虚拟 IP 一样,这样经均衡器转发后的数据包,就能在真实服务器中顺利地使用。 另外,也正是因为实际处理请求的真实物理服务器 IP 和数据请求中的目的 IP 是一致的,所以响应结果就不再需要通过负载均衡服务器进行地址交换,我们可以把响应结果的数据包直接从真实服务器返回给用户的客户端,避免负载均衡器网卡带宽成为瓶颈,所以数据链路层的负载均衡效率是相当高的。 这种传输方式被称为三角传输,返回的流量不经过LB,避免负载均衡器网卡带宽成为瓶颈,效率较高. 数据链路层的劣势也很明显,因为其需要通过修改MAC地址的方式进行工作,因此真实目标服务器必须和LB服务器在同一子网下。 网络层LB 与数据链路层类似的,网络层是通过修改三层数据包的目标IP地址进行工作: 其修改方式主要有两种: 第一种是保持原来的数据包不变,新创建一个数据包,把原来数据包的 Headers 和 Payload 整体作为另一个新的数据包的 Payload,在这个新数据包的 Headers 中,写入真实服务器的 IP 作为目标地址,然后把它发送出去。 这种方式需要在接收时重新进行拆包,取出原来要发送的数据包,这样,IP数据包的源IP和目的IP无变化,真实服务器仍然可以直接将数据发送给客户端,不需要经过LB,也即仍具有三角传输的特性。 这种方式被称为IP隧道,因为其工作在网络层,可以跨VLAN进行传输,但要求目标服务器支持IP隧道协议。 第二种方式直接把数据包 Headers 中的目标地址改掉,修改后原本由用户发给均衡器的数据包,也会被三层交换机转发送到真实服务器的网卡上,而且因为没有经过 IP 隧道的额外包装,也就无需再拆包了。 但这样的话,真实服务器在将数据返回给客户端时,就会使用自己的IP作为源IP,客户端一看:“我想要的是A服务器响应,你给我来了个B服务器响应,滚犊子”,不能正常处理这个应答,因此必须让响应返回LB再发给客户端。...

March 24, 2023 · 1 min · 李昌

Install Docker on Arch

官方给出的教程是使用docker desktop, 但内存占用太大。 1. 安装docker二进制文件 从这里下载平台对应的二进制文件:https://download.docker.com/linux/static/stable/ 然后解压安装: $ tar xzvf /path/to/<FILE>.tar.gz $ sudo cp docker/* /usr/bin/ 这时可以手动执行sudo dockerd &以启动守护进程,但我们不这样做 配置守护进程 从https://github.com/moby/moby/tree/master/contrib/init/systemd拷贝docker.service, docker.socket两个文件到/etc/systemd/system/docker.service, /etc/systemd/system/docker.socket 然后运行: $ sudo systemctl daemon-reload # 重新加载配置 $ sudo systemctl start docker #启动dockerd $ sudo systemctl enable docker # 设置开机启动 其实也可以直接yay -S docker :-) docker-compose $ yay -S docker-compose References https://docs.docker.com/desktop/install/archlinux/ https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux https://docs.docker.com/config/daemon/systemd/ https://wiki.archlinux.org/title/docker https://wiki.archlinux.org/title/Systemd#Drop-in_files

February 21, 2023 · 1 min · 李昌