在家办公开发环境的反思
鼓捣过Kubernetes,在公司做开发时使用Docker,外接硬盘,通过软链接的方式把程序文件、数据库映射到Docker里,在家里配置同样的Docker容器,这样硬盘直接插在家里电脑上就能用了,一直以来也没觉得有什么不对。
这次郑州疫情,被封在家里,暴露了一些问题:
Home of Little Jelly
鼓捣过Kubernetes,在公司做开发时使用Docker,外接硬盘,通过软链接的方式把程序文件、数据库映射到Docker里,在家里配置同样的Docker容器,这样硬盘直接插在家里电脑上就能用了,一直以来也没觉得有什么不对。
这次郑州疫情,被封在家里,暴露了一些问题:
目的:通过brew安装并配置nginx+php+mysql环境,并能正常运行一个ThinkPHP5项目。
环境:macOS Catalina 10.15.7,已安装brew。
OpenCV没有截取屏幕的功能,而PyAutoGui有,它俩结合起来,OpenCV就可以使用PyAutoGui的截图了。
具体Python实现如下:
最近一个ThinkPHP5做的项目硬盘满了,就给上传目录做了个软链接,即把`/public/uploads`使用`ln -s`命令指向了别的硬盘的目录`/data/uploads`,结果文件都上传失败,报500错误:
偶然发现VMware居然提供的有REST API可以与虚拟机交互,这样一来我们就通过编程实现虚拟机的自动化管理了。
VMware版本:VMware Fusion Pro 12.0.0
REST API需要先启动REST服务才可以与之交互。
步骤如下:
在Linux Crontab下运行PyAutoGUI跑不起来,查看日志发现是因为报错 `KeyError: ‘DISPLAY’`,也就是找不到显示设备。
用户正常登录了桌面,也没有锁定屏幕,PyAutoGui还是没有找到显示设备,
其实在使用Crontab时,会遇到很多正常操作时不会遇到的问题,比如PHP/Python脚本不能常驻运行,`gsettings`命令执行无效等,包括PyAutoGui不能正常运行,这是因为Crontab是一个受限的环境,需要额外给它传递环境变量才可以。
在Ubuntu下你可能会有这么个需求,定时更换壁纸,或者定时设置系统代理,首先想到的应该是通过Crontab定时任务去执行`gsettings`命令,这样可以做到更换壁纸或设置系统代理。
脚本写好了,手动测试下没有问题,设置好Crontab让它定时执行,到了设置的时间点,定时任务也执行了,也没报错,但就是没有生效。
问题出在哪呢?
前面我们讲了通过Python自动化修改Windows的系统代理,那么在Linux下是不是也可以呢?
在Linux下我们通过Shell/终端就可以实现自动化修改了。
分两种应用场景,一种是在终端中使用的代理,一种是系统级别的代理。
在上一篇中我们讲到使用Squid和Stunnel创建代理服务,其中配置的Squid是需要认证的,也就是需要提供用户名密码才可以访问代理服务。
在一些对安全性要求不高的场景下,可能不需要这种认证,直接访问就好了。
怎么实现呢?
我们知道在Windows系统下,在设置里可以配置网络代理,那可不可以通过程序自动化修改呢?
答案是可以!Python语言就可以!
Python是通过`winreg`标准库修改注册表达到修改Windows系统代理的目的。
直接上代码: