工具篇:第六篇 在Arch Linux上安装配置zsh
所谓工欲善其事必先利其器。配置一个好用的shell工具是非常有必要的。
前言
一般的Linux操作系统使用的默认终端工具都是bash。而Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。
从 macOS Catalina 版开始,其默认shell从bash改为zsh。
这里我用的ArchLinux来配置一下zsh,其他的Linux系统也是类似的方法,大同小异。
一下配置方案来源于:配置一个简洁高效的 Zsh
安装
下载和安装zsh、 zsh主题 、 zsh插件
1234sudo pacman -S zshsudo pacman -S zsh-autosuggestionssudo pacman -S zsh-syntax-highlightingsudo pacman -S zsh-theme-powerlevel10k
一共4个,分别是:
1.zsh本体
2.自动提示插件,自动提示需要的命令
3.代码高亮插件,使各个命令清晰明了
4.一个好看的主题
更换 ...
web与服务端:第三篇 gunicorn的功能及使用方法
为了处理多并发请求,我们设计了CGI通讯的方式,使用多进程来处理请求,但是CGI的实现也分成了很多种。所以为了统一接口规范,Python定义了WSGI协议之后,出现了很多基于这个协议的应用,常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。
Gunicorn 简介
Gunicorn使用pre-fork worker模型,简单来说就是为了提高CGI的响应速度,先从master进程中预先fork出一些进程,这样当请求到来的时候就可以快速响应。
当然了,Gunicorn是WSGI的实现,但同时也自带web server,能直接对外提供web服务。包括大部分的web app框架比如Flask和Django也都带有web server。不过,在真正的生产环境的部署中,它们还是各司其职,Flask/Django只用于写app、Gunicorn只用于运行和管理Python web app,而在它们前面有专门的web server,比如Nginx。
安装Gunicorn
1pip install gunicorn
启动 G ...
ADOBE:第一篇 AE彩色字母走线动画设计
很久没有做过动效了,主要是又费时间又费精力,而且比较懒,所以做的比较粗糙,第一次写AE教程,尽量写的详细一点。如果有漏了的欢迎补充。
先来看一下今天我们要实现的效果。
准备工作
软件
所需要的软件如下:
Adobe Photoshop 2022
Adobe After Effects 2022
需要用到的字体是:
Gilbert
需要用到的AE插件是:
Motion2
下载链接
百度网盘链接:https://pan.baidu.com/s/1mw8B-VWedbKSZzMlduSZmQ?pwd=miai
提取码:miai
注意事项
PS和AE建议安装在默认路径下面。
下载好字体之后,双击打开就可以安装了。
Motion2的安装阅读目录下的txt文档即可。
使用快捷键要切换到英文模式。
PS部分制作
新建一个文件夹,用来存放工程文件。
新建工程文件
首先打开PS,然后新建一个文档【Ctrl N】,然后参数如下所示:
然后将文档保存到刚刚创建的工程文件夹里面。
创建文本图层
使用横排文本工具【T】,也可以在左侧工具栏可以找到。
输入想要制作的字母,我这里写的是GFL,可以随意写 ...
web与服务端:第二篇 原始的单进程CGI服务器通讯方式
书接上回,我们知道服务器与客户端之间可以通过建立tcp连接,使用套接字进行通信。这个时候假如说我们有非常多的客户端需要访问服务器,服务器就需要不断的开启进程哪怕我们的内存处理机制再优秀,也无法处理数量如此庞大的客户端群体。这个时候,人们就想出来很多方案,假如我们只是请求一个静态的页面,就像这个博客一样,只要看上面的内容,就可以搭建一个分发网络,专门传送静态文件,静态页面,发送完成后立即释放客户端,这样可以有效的减轻服务器的压力,而且经过专门的存储优化,可以使得速度和连接数量大大提升。但是我们还是需要开启应用程序来处理那些必须与服务器交互的web请求,比如数据库服务器等等。这些web应用程序与客户端的通信,他们所依赖的协议就叫做cgi协议。
前言
所谓cgi协议(common gateway interface)-通用网关接口,我们很难见名思意,啥网关,啥接口?啊?所以我们先不管这些。
简单来说,就是客户端与服务器的web应用程序之间动态请求需要遵从的一种通信协议。通过cgi协议,再结合web应用程序就可以处理用户请求啦。
为啥要这么做?
在上一章节,我们知道,搭建一个简单的socke ...
web开发:第一篇 一个简单的socket套接字通讯
最近看了很多服务器与客户端通讯的程序以及架构,这里简单的总结一下。(资料大多来源于网上)
写在前面
现在假设一个非常非常简单的场景,我们有两个设备或者是程序之间需要通信。
如果这两个设备靠的很近,或者说在同一个区域内,那么我们可以使用信号线将他们相连接,并且通过高低电平或者是差分信号进行传输二进制数据。并且拟定一个简单的通信协议就可以进行通信了,例如这个文章里面写的。简单的通信协议
但是如果他们相隔较远,那么我们就可以依靠网络来进行通信,因为世界是由网络所连接在一起的,只要在任何有网络的地方都可以实现设备之间的通信。我们的网络是基于TCP/IP协议族设计的通讯协议,这里简单的抄一张网上的图来回顾一下TCP/IP协议族的通讯流程。
不同于OSI模型,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中。
每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。
但是,直接进行TCP/UDP通信的话,这些操作还是太复杂了,我们需要一个更加抽象的方式,来提供简单易用的接口来供应用层使用。从而使得在网络上的两个设备的进程之间相当于可以直接进行通信,我们把这种封装加做套接 ...
工具篇:第五篇 通过X11(X window system) 图形用户界面系统,将远程计算机的图形应用程序显示在本地
在上一篇中我们最后有提到如何将服务器上的UI图片显示在本地,这一期来补上这个坑。
前言
熟悉Windows和macOS的同学在第一次使用X的时候可能会感到惊讶,因为这与传统的显示方式有所不同。普通人可能会直观的认为操作系统就应该是用户界面+软件内核的形式,但是也诧异Linux可以在不依赖图形界面的情况下工作,同时也可以加载不同的图形界面。熟悉linux的同学可能也对命令行习以为常了,但是并不知道这个图形界面是如何实现的以及为什么要这样设计。
client-server模型
X采用client-server模型,这些模型与我们常见的client-server模型有所不同,常见的client-server结构中,称提供服务的一方为server,即服务器端(如HTTP服务,FTP服务 等),使用服务的称为client,即客户端。但在X中,client是执行程序的一方,在上面执行各种X程序,而server则是负责显示client运行程序的窗口的一方。
X windows,笼统的称为X,是一种位图显示的视窗系统,是建立图形用户界面的标准工具包和协议。X 是协议,不是具体的应用程序。X 为GUI环 ...
嵌入式 第一篇 一个简单的基础通信协议的设计与实现
不同设备之间的通信,都需要设计自己的通信协议。为了保证设备与设备之间的数据的稳定传输,通信协议的设计需要考虑很多的问题。当然应对不同的应用场景,可以有针对性的设计不同的通信协议。
一种常见的通信协议格式
这是一种我们比较常见的通信协议格式
帧头部
地址位
功能位
帧序号
数据长度
数据内容
校验位
帧尾
1/2字节
1字节
1字节
1字节
1字节
n字节
1字节
1/2字节
而为了应对不同的情况,可以依照情况做删改,例如减少帧头和帧尾,减少帧序号等等。
而本篇实现的通信协议如下,这里将几个部分都做了,实际中可能并不需要这么冗余的帧,可以按需求适当删改:
|地址位|功能位|帧序号|数据长度|数据内容|校验位|
|----|----|----|----|----|----|----|
|1字节|1字节|1字节|1字节|n字节|1字节|
本篇例程使用的开发板是STM32F103VET6,应用工具是MDK-ARM v5.33,STM32CubeMX V6.1.1
注:STM32CubeMX需要安装JAVA环境(JRE)。
搭建串口收发环境
参考:https://blog.c ...
工具篇:第四篇 使用xmake编译stm32项目
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
前言
依我这几天学习cmake和xmake来说,xmake的构建项目的能力非常强大,并且速度也非常快,语法也是非常现代化。
同时,它也是一个自满足的构建系统,拥有强大的包管理系统,快速的构建引擎。
而且xmake的开发者活跃度较高,经常在线。
所以我决定用它来构建一个由cubeMX生成的stm32的项目。
安装xmake
项目地址:https://github.com/xmake-io/xmake/releases
windows
点击链接下载xmake的安装包,包名一般是xmake-[version].[win32|win64].exe,或者下载xmake-[version].[win32|win64].zip的包,解压后添加该路径到环境变量中。
或者可以使用winget install xmake安装。
linux
我这里的 ...
工具篇:第三篇 秘密工具
经常需要访问Github以及Google学术等网站,但是由于某些原因,国内访问较慢,所以整理一下穿墙的工具。当然,最可靠的还是自己搭建境外服务器配合V2Ray来穿墙。
穿墙服务提供商
用过很多个穿墙服务提供商,只留下了这几个,随时更新。
Bywave
好处是有一个按量付费套餐,对于我这种用流量不大的用户来说,非常的合适。而且足够的稳定,快速。
邀请链接:https://byw.tv/aff.php?aff=9360https://byw.tv/aff
SockBoom
SockBoom的优势在于非常的便宜,虽然稳定性不如上面那个,但是8块钱一个月还要啥自行车。
邀请链接:https://sockboom.site/auth/register?affid=36661
辣条
这个特便宜,只要2元/10G/月,对于使用量不大,只是访问一下谷歌学术的话,可以考虑一下这个。
邀请链接:https://latiao.club/#/register?code=XCycAA4c
穿墙工具
V2Ray
V2Ray 是一个网络转发程序,支持 TCP、mKCP、WebSocket 这3种底层传输协议,支持 ...
工具篇:第二篇 FRP(fast reverse proxy)内网穿透,服务端搭建与客户端配置方法
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 frp ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
简单来说:简洁好用,配置方便,只要有一台公网服务器就可以使你的电脑实现内网穿透,将特定的端口映射到公网上去。
测试设备
下面是我的环境:
服务器 ubuntu 20.04 LTS x86_64
本地PC windows 11 22000 ...