Docker

nextcloud经由nginx_proxy时max_size的问题

在我自己搭建的nextcloud中,我碰到了过大的文件无法上传的问题,我的nextcloud是搭建在nginx_proxy后方的,因为无法上传的文件大小大约为2m,和nginx的default client_max_body_size很相似,所以我非常有理由怀疑,是因为nginx的这个参数影响了上传 因为我太懒了,一直没去研究,最近在群里一问,张师傅直接给出了解决方案 在nginx_proxy中把vhost引出来,然后在对应域名的vhost中加入这个参数,并加入自己的配置,虽然这样有耦合了,不过至少解决问题了 在nginx_proxy添加对应的env配置项之前,也只能这样了 以下是配置详情 nginx_proxy docker-compose.yml version: '3' services:

Game

joystick for pmgo

宝可梦Lets Go要发售了,发售前不如来玩玩pmgo 不过pmgo毕竟在大陆锁区,那我们如何在大陆玩到pmgo呢? 首先要解决网络问题,pmgo必须使用vpn,并且必须是pmgo发售地区的vpn才可以,所以搭个梯子是必不可少的 怎么搭梯子就不讨论了 搭好梯子后,可以登录pmgo了,却发现登录进来周围一个Pokemon都没有,因为pmgo锁区,大陆是不会刷出Pokemon的 所以我们还需要针对定位进行欺骗 安卓新版本系统中封堵了不少以前能用的虚拟定位的方法,经过网上各种查阅,总结出一个能在2018年11约使用的摇杆虚拟定位方法,搭配Pokemon简直不能更完美了 当前使用设备系统环境如下: 手机:小米4 联通3G版 系统:LineageOS 14.1 (20181107) 安卓版本:7.1.2

Ubuntu

解决因字体问题导致xfce4-panel崩溃的问题

最近经常要用vnc来远程我的ubuntu server,但是上面的xfce4桌面环境自从装了chromium之后就没有panel了,看日志,报错如下: xfce4-panel: ../../../../src/cairo-scaled-font.c:459: _cairo_scaled_glyph_page_destroy: Assertion `!scaled_font->cache_frozen' failed. 可以看出,是字体导致的问题,尝试在xfce4的设置中换了系统的默认设置后,重启vnc,panel终于出来了。 具体设置位置: 右键桌面->Applications->Settings-&

Code

grpc连接池

从我开始使用grpc到现在,也有不短的一段时间了,然而我还是没有把grpc的基本用法摸透。最近刚好又在看grpc,就来对grpc的连接做个研究 google官方提供的例子中,只有最普通的使用方式:创建连接,访问远程方法,销毁连接 然而在实际项目中,绝不可能如此简单,往往涉及到高并发、高频调用等问题,所以我们就需要考虑到连接性能的问题。 在访问数据库时我们也会碰到类似的瓶颈,在访问量大时,一个连接根本无法满足使用需求,而每次建立新连接的话,很快服务器的可用连接数就会消耗殆尽,所以我们使用连接池来解决这个问题。 这次,我们也要在grpc中尝试使用连接池,来帮助高频客户端提高连接性能。 首先,我们来对不同的连接方法能体现出的性能做个测试,测试使用官方的helloworld例子,改成多次调用。 为了测试,我们在以下方面做了改动: 服务端在响应前sleep 1s 客户端通过多种方式重复访问服务端(

NintendoSwitch

解决switch无法联机的问题

最近买了switch,但是switch一直无法联机 经过查询,很多帖子都指向一个问题:NET Type 先来科普一下NET Type(我自己理解的也不深,不一定完全准确) 说到NET Type,就要先来说一下NET(网络地址转换)技术 我们都知道,ipv4资源是几十年前就开始使用的东西了,当时也没有考虑到未来会有如此多的网络设备,ipv4资源有限,根本无法满足所有网络设备每台都配备一个网络地址的能力,于是NET技术应运而生。NET技术是让一台设备A介入英特网,然后设备B、C、D通过介入这台设备A来接入因特网,设备B、C、D不直接接入英特网,而靠设备A来转发网络请求,这样就能多台设备共用一个ipv4地址上网了(只有设备A有英特网上的ipv4地址,也叫公网地址) 而国内由于进入互联网时代进入的晚,

Mac

在macOS high Sierra上安装Office2016的注意事项

新装了系统之后,用之前skys给我分享的Office2016安装包(md5:da19a8d901b369b3dd9fa01bf901f02a)装好后发现无法自动更新,Outlook提示无法在high Sierra上运行 此镜像是一个较旧版本的Office2016批量授权免激活镜像,内含的Office2016为15.13.3版# 已知无法正常运行的功能有: Microsoft AutoUpdate(MAU);影响:Office无法升级 Outlook因版本过旧无法启动 解决办法: 手动下载新版MAU安装后即可自动升级,升级到15.35之后功能就正常了 地址:Microsoft AutoUpdate ISSUE: 因MAU只检测启动过的Office程序的更新,所以Outlook无法通过MAU升级 解决Outlook无法使用的方法: 手动下载新版Outlook单独安装后即可 地址:Office2016 Update

UbuntuServer

在kvm上安装FreeNas

KVM是Linux下的非常方便好用、可以使用终端控制的虚拟机平台,在Linux下可以发挥非常不错的效能。我最近又在纠结nas,想要一个方便好用的nas,但是nas系统基本都是以操作系统的方式提供的,而我又没钱买那么多机器,所以虚拟机是一个不错的解决方案。 前置步骤: 安装kvm虚拟机平台 下载FreeNas镜像 首先进入kvm host的终端,使用以下命令来创建一台kvm虚拟机 virt-install --name freenas --memory 4096 --vcpus sockets=1,cores=2,threads=2 --disk device=cdrom,path=/kvm/iso/FreeNAS-11.

Mac

在Mac下管理KVM虚拟机

kvm虚拟机的管理客户端virt-manager只提供了linux端,这就给我这个用mac的人带来了困扰。不过既然是linux平台下的软件,那就一定有跨平台解决方案。 一开始我选择的方案是vnc到kvm host,然后在kvm host安装virt-manager,然后来管理。然而管理虽然是可以管理了,但是我发现它却无法远程操作,在远程操作虚拟机时所有键盘操作都无法正确的被转发。 上网爬了下解决方案,意外发现原来kvm的虚拟机是可以直接通过vnc协议连接的,那事情就简单了,我们进入kvm虚拟机的配置,添加一个Graphics设备,Type我们选VNC Server,Address选All Interfaces(其实就是监听0.0.0.0),可以指定一个Ports,最好指定密码(在我这不指定密码无法连接),然后就用VNC Client连接即可。 需要管理虚拟机硬件的时候,就用vnc连接到kvm host然后在用virt-manager就可以,

Code

chrome network调试中排除特定项

在chrome中有个非常好用的开发者调试工具,我们经常用其来调试网页。最近我在分析微信网页版协议时遇到一个问题:在调试工具network中,很多我们不关心的请求也都会显示出来,而官方提供的几个过滤器又不足以满足我们的需求,这时我们就可以使用Regex自定义过滤了。 在调试微信网页版时,我想要把与api无关的请求都过滤掉,为了精确排除特定请求,我使用正则来进行排除。要排除的请求包括图片、js、css请求,剩下的基本就是api了。为了达到这一目的,需要的正则如下: ^(?!.*\.js)(?!.*\.jpg)(?!.*\.png)(?!.*\.gif)(?!.*\.css) 将这段代码填入Filter中,并勾选Regex后,我们就可以发现含有js、jpg、png、gif、css的请求都被排除了。我们可以根据需要,添加更多的排除项。 注:在新版chrome中,

Ionic

ionic下载缓慢解决方法(顺带说说electron)

最近帮妹子搭建ionic环境,过程中需要下载不少东西,下载时因为GFW的关系,速度特别慢,经过查询,发现可以通过一下方式解决 注:本问方法适用于Unix环境,Windows环境不保证适用 解决nvm下载速度慢的问题 nvm下载时可以通过设置环境变量NVMNODEJSORGMIRROR来解决,将一下代码写入.zshrc或.bashrc中,可以将nvm下载node的源设置为淘宝源 export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/dist 解决npm下载缓慢 在npm中下载时,因为用的时国外源,所以下载速度很慢,而国内淘宝镜像了一套完整的npm源,所以将npm的源设置为淘宝源可以获得较好的下载速度。 将npm的源设置为淘宝,有两个方法:

Docker

让docker中的时区与主机保持一致

我们每次默认创建的docker,时区都会与主机不同,因为linux使用/etc/timezone与/etc/localtime来记录时区,而docker拥有单独的一整套系统套件,所以时区也是单独的。为了让docker与host的时区同步,我们只需将这两个文件映射进docker即可。 docker-compose写法: volumes: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro 经过使用,我发现上门的方法还有很大局限性: 要求docker host必须为linux系统,并且正确的设置了时区 如果docker镜像为像alpine这类轻量镜像,没有预装tzdata包,则无效

IOS

在IOS中将已下架的app从旧设备迁移到新设备中

iPhone十周年产品iPhoneX已经发布了,下个月就发售了,下个月就要买新iPhone了,突然发现我的小火箭怎么办,在国区中,小火箭已经被下架了,我买了新手机,岂不是没有小火箭用了? 为了解决小火箭的难题,我上网搜索了不少办法,最终总结出2个办法。 方法1 方法一是简单的方法,只需要用电脑端的iTunes备份旧设备,然后恢复到新设备上即可。这样新设备会自动恢复旧设备中的App及文件。但是如果用此方式,已经下架的app虽然也能安装,但是版本与旧设备中安装的版本相同,不会更新。 方法2 此方法比较复杂,而且仅适用于软件仅在国区下架。要下载其他区可用的app,只需将iTunes的国家设置为其他国家地区即可。推荐将国家地区设置为加拿大,因为加拿大不需要付款信息。然后更换好国家地区后,切记使用电脑版iTunes在iTunes app store中将该软件下载下来,这样电脑端就存有该app的ipa安装包了,这样以后随时可以将这款软件安装到别的你的设备中,

Golang

Golang http包req.Body只能读取一次的解决办法

今天参加实验楼的golang比赛,碰到个大坑,比赛要求把http请求的body取出后计算md5然后放入请求头中,然后我用一下代码读取body后,body就无法被再次读取了!无法,被,再次,读取!有毒! body, err := ioutil.ReadAll(req.Body) 经过20分钟调试,发现应该用如下方式来获取body,才不会导致body被抹掉: br, err := req.GetBody() if err == nil { body, err := ioutil.ReadAll(br) } 事实上,从golang1.

Ubuntu

Ubuntu17下使用Wine安装QQ

Ubuntu开发虽好用,但是常用软件的匮乏,成为Ubuntu普及的最大软肋 我们国内几乎人人都有的QQ、微信就是重中之重。 微信暂无解决只法,还好QQ可以使用wine QQ获得比较完整的体验 首先,我们使用apt安装wine与winetricks sudo apt install wine winetricks wine是一款可以在ubuntu下通过模拟windows系统api,来达到原生执行exe的软件,但其对于一些大型软件,提供的dll存在版本错误、缺失的问题,常常为了安装一个软件需要折腾很久。而winetricks就是为解决这个问题而诞生的软件,它将大量常用软件的安装脚本集合起来,你需要安装某个软件时只需要用winetricks,它就会帮你配置好你的wine环境。 首先我们先初始化一个wine环境 WINEARCH=win32 wine wineboot 然后在终端敲入winecfg,将windows版本设置为windows7 然后我们开始安装qq的依赖包(

UbuntuServer

在装有gtx系列显卡的主机安装ubuntuServer版后无法启动的解决方法

经过对开机日志的研究,可以断定是nouveau驱动导致开机失败,但是在recovery模式下能正常启动,那么我们只需要在recovery模式下禁用nouveau驱动,并安装nvidia的闭源驱动即可。 首先新建/etc/modprobe.d/blacklist-nouveau.conf文件并填入以下内容: blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off 然后运行命令update-initramfs -u来刷新启动脚本 接下来,在nvidia下载好官方驱动后安装,装好后重启即可解决

Golang

Golang使用http包的Client访问https报x509.SystemRootsError错误

前两天在写的一个api在服务器上跑着,使用http包访问https时报x509.SystemRootsError而无法拿到回包,但是同样的代码在本地却运行正常,纠结好久后终于找到错误原因:由于服务器使用瘦环境,所以没有安装https根证书服务,导致golang无法验证https服务器的身份。 解决这个办法的方法有2个,一个是在服务器中安装https根证书服务(推荐),另一个是关闭golang http包的https安全验证 方法一很简单,一般curl包就包含了根证书,所以直接安装curl即可(ubuntu下通过测试,apline可能不行) 方法二则无需改动服务器环境,但可能面临安全问题。做法是通过传config构建一个自定义的http Client,方法如下: package main import ( "fmt" "net/http"