默认分类 manjaro 滚动升级20.0.3后 electron-ssr 无法启动 # 问题描述 今天,我随手滚动升级了一下我的 manjaro,也就是从 20.0.2 升级到了 20.0.3,结果我的 electron-ssr 就无法启动了,运行程序后,它的启动框一闪而过,一如从未来过。 于是,我用命令行运行了下它,结果他打印了如下错误: ``` electron4: error while loading shared libraries: libre2.so.7: cannot open shared object file: No such file or directory ``` 于是我就开始查了,查了一圈,并没有完全一样的错误场景,提出的修复方案感觉与我的问题也不搭嘎。经过了十分钟的挣扎后,我开始了自我救赎之路。 首先,根据报错信息,搜索系统中是否存在 libre.so 之类的文件,为了避免漏查,名字不输全,采用模糊搜索。 ```bash [dogify@dogify-pc ~]$ sudo find / -name libre2* /usr/lib/libre2.so /usr/lib/libre2.so.8.0.0 /usr/lib/libre2.so.8 find: ‘/run/user/1000/doc’: 权限不够 find: ‘/run/user/1000/gvfs’: 权限不够 ``` 根据搜索结果可知,系统中并不存在 `libre2.so.7` 的文件,但存在 `libre2.so`,`libre2.so.8.0.0` 和 `libre2.so.8`。 猜测是因为系统升级时,把这个依赖库给同步升级了,而 electron4 依赖的版本号是7。而运行时找不到版本号为 7 的运行库,导致报错。 ## 解决方案一: 1. 找到 electron-ssr 的执行文件 ``` [dogify@dogify-pc ~]$ whereis electron-ssr electron-ssr: /usr/bin/electron-ssr /usr/share/electron-ssr ``` 1. 查看其使用的 electron 版本 ``` [dogify@dogify-pc ~]$ cat /usr/bin/electron-ssr #!/bin/bash exec electron4 /usr/share/electron-ssr/app.asar "$@" ``` 1. 将 `electron4` 改为 `electron6` 保存(因为我本地没有 5 的环境,所以就提到6) 1. 保存修改,再次运行,软件正常启动。 ## 解决方案二(未验证): 从网上下载 libre2.so.7 文件。 因为 linux 桌面版本太多,我找了一圈也没有找到为 manjaro 编译的 libre2.so.7 文件,且出于系统库统一版本的角度,我最终放弃了此方法。 ## 后续 在经过方案一的操作后,我的软件启动了,也可以正常的执行代理。但在我需要修改订阅地址时,我发现软件打开是白屏的,无法进行任何操作。 猜测大概是因为 electron-ssr 是基于electron4开发的,相对于现在,版本过于老旧,导致兼容性问题。解决办法估计要去获取其源码,做针对兼容性修改,重新编译发布。但是这超出了我的知识范围,且现阶段无此精力。最后我选择转战了 shadowscoks-qt5。 ## 后续的后续 经过我的查找,我发现了新的支持ssr订阅的linux客户端 -[qv2ray](https://github.com/Qv2ray/Qv2ray "qv2ray")。 v2ray 是一个协议簇,包含了之前很多的协议,比如ss、ssr等。 该软件同时支持 macos、linux和windows,经过简单的适用,完美符合我的需求。安装过程参考其文档介绍,在此记录下,你可以查看以下我的安装流程,也可以查看 [文档](https://qv2ray.net/ "文档")。 manjaro 可以直接通过包管理工具安装,还需要安装其依赖的v2ray-core。其他 linux 发行版可以使用其提供的 AppImage封装包。 安装完成后,还需要下载配套的ssr插件,使软件支持ssr功能。请根据系统版本下载对应的插件文件,linux和macos下载so文件,windows下载dll文件,置于软件的plugins目录下。插件目录可以通过点击软件页面上的插件-打开本地插件目录按钮打开。  插件拷贝进插件目录后,重启软件,正常情况下你会看到如上图提示的插件已加载页面。 然后添加订阅信息,点击分组,打开以下页面。  1. 随便填个分组名 1. 选择订阅设置标签页,勾选此分组是一个订阅 1. 填写你的订阅地址,点击下方的更新订阅 1. 更新完成后就获得了所有节点 1. 关闭对话框,开始使用 正常配置的情况下,你可以在软件主页面左侧看到订阅的分组,双击该分组可以看到所有的订阅节点,右键节点可以连接此节点。  阅读全文 2020-07-18 dogify 4 条评论 7246 次浏览
默认分类 Kong install by Docker 中文翻译 [查看原文](https://docs.konghq.com/install/docker/?_ga=2.210969298.678130112.1575253233-797880523.1575253233 "查看原文") 关于如何在 Docker 中使用 Kong 的细节讨论可以在存有 [Kong](https://hub.docker.com/_/kong/ "Kong") 镜像的 DockerHub 页面上找到。我们也有一个 [Docker Compose 模板](https://github.com/Kong/docker-kong/tree/master/compose "Docker"),内置了群组和可扩展性。 # 带数据库模式 以下是一个简单例子,展示了如何将一个 kong 容器连接至 Cassandra 或 PostgreSQL。 1. 创建 docker 网络 你需要手动创建一个网络,用于容器之间互相发现和沟通。在本例中,kong-net是网络的名称,你可以随便改个名字。 ```shell $ docker network create kong-net ``` 2. 运行数据库 期望使用 Cassandra 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 9042:9042 \ cassandra:3 ``` 期望使用 PostgreSQL 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e POSTGRES_USER=kong \ -e POSTGRES_DB=kong \ postgres:9.6 ``` 3. 准备数据库 用一个临时 Kong 容器运行迁移。 ```shell $ docker run --rm \ --network=kong-net \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=kong-database \ -e KONG_CASSANDRA_CONTACT_POINTS=kong-database \ kong:latest kong migrations bootstrap ``` 在上例中,Cassandra 和 PostgreSQL 均已完成配置,不过,你需要用 Cassandra 或 PostgreSQL 更新 `KONG_DATABASE` 环境变量。 对于版本低于 0.15 的注意点:版本号低于 0.15 的 kong (最高 0.14),用 `up` 子命令替换 `bootstrap`。另外,版本号低于 0.15 的 kong 禁止同时运行迁移。同一时间,只能有一个 kong 节点在运行迁移。这个限制对 kong 0.15,1.0 或更高版本不存在。 4. 启动 kong 准备好数据库和运行迁移后,启动一个连接至数据库容器的 kong 容器,就像前文的临时迁移容器一样。 ```shell $ docker run -d --name kong \ --network=kong-net \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=kong-database \ -e KONG_CASSANDRA_CONTACT_POINTS=kong-database \ -e KONG_PROXY_ACCESS_LOG=/dev/stdout \ -e KONG_ADMIN_ACCESS_LOG=/dev/stdout \ -e KONG_PROXY_ERROR_LOG=/dev/stderr \ -e KONG_ADMIN_ERROR_LOG=/dev/stderr \ -e KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong kong 正在运行: ```shell $ curl -i http://localhost:8001/ ``` 通过 [5 分钟快速入门](https://docs.konghq.com/1.4.x/getting-started/quickstart/ "5") 快速学习如何使用 kong。 # 无数据库模式 以 [无数据库模式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/ "无数据库模式") 启动 kong 的步骤: 1. 创建 docker 网络 这与 Pg/Cassandra 教程中的一样。我们使用了相同的网络名 `kong-net`,你也可以改名成你想要的名字。 ```shell $ docker network create kong-net ``` 以无数据库模式运行 kong 并不强制要求此步骤,不过,万一以后你想添加一些其它玩意(例如由 Redis Cluster 驱动的限速插件)时是个不错的伏笔。 2. 创建一个 docker 磁盘 (volume) 本文中,一个 docker 磁盘就是实体主机中的一个目录,它被映射至容器内的一个目录。磁盘有一个名字,本里中,我们将其命名为 `kong-vol`。 ```shell docker volume create kong-vol ``` 现在,你可以检查这个磁盘了: ```shell $ docker volume inspect kong-vol ``` 结果类似这个: ```json [ { "CreatedAt": "2019-05-28T12:40:09Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/kong-vol/_data", "Name": "kong-vol", "Options": {}, "Scope": "local" } ] ``` 注意条目 `MountPoint`,下一步我们会用到这个路径。 3. 准备好你的配置文件 相关语法和属性在 [声明式配置格式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/#the-declarative-configuration-format "声明式配置格式") 中介绍。 在其中添加所有需要的条目(Services 服务,Route 路由,Plugins 插件,Consumers 消费者,等等)。 本教程中,我们假定你将其命名为 `kong.yml`。 文件保存在上一部步提到的 `MountPoint` 路径下。在本例中,存储路径为 `/var/lib/docker/volumes/kong-vol/_data/kong.yml`。 4. 以无数据库模式启动 kong 虽然可以通过 `KONG_DATABASE=off` 以无数据库模式启动 kong,但更常用的方式是通过 `KONG_DECLARATIVE_CONFIG` 变量将声明式配置文件作为参数传递。为此,我们要让此文件在容器中可见。我们通过 `-v` 实现操作,它将 `kong-vol` 映射至容器内的 `/usr/local/kong/declarative` 目录。 ```shell $ docker run -d --name kong \ --network=kong-net \ -v "kong-vol:/usr/local/kong/declarative" \ -e "KONG_DATABASE=off" \ -e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong Kong 应该已经运行起来,包含了 kong.yml 中添加的条目。 ```shell $ curl -i http://localhost:8001/ ``` 例如,获取服务列表: ```shell $ curl -i http://localhost:8001/services ``` 阅读全文 2020-03-17 dogify 0 条评论 3595 次浏览
默认分类 开发人员究竟应该使用什么系统 这是一片杂谈,纯属于扯淡类型的,看个乐就行。 说实话,程序员总会有点 geek 精神,受这种精神的影响,在搬砖日常中,我总是想把系统换成 Linux。平常总是看到文章说 Linux 咋牛逼,咋自由,开发时怎么爽,加上身边有个做 android framework 的同事一直吹,终于在某天,我给我的笔记本装了个 Deepin,与原来的 Win 10 组成了双系统(Win10 有很多东西,不能直接抛弃,怂)。 装完系统了,那就开机体验,结果刚开机,进去就卡在了 logo,动弹不得。网络上查了一下,发现是因为我的笔记本是 Intel 集显 + Nvida 独显双显卡的模式,而独显这种东西,主要的应用场景就是玩游戏,而在 linux 系统,一般都是用来开发,集显就够用了,所以 N 卡驱动在 linux 系统上的兼容性就很差。因为需求少,就没人去优化驱动,所以一直就是这个状态。最后是修改 grub 引导改为用集显进入系统,进入系统后,再由 N 卡驱动托管。同样是因为用的人少的原因,显卡驱动在独显和集显的切换上很差,丝毫没有 windows 上无缝切换的体感。这种切换的体验,不同的发行版的体验也不同。 解决了显卡问题,进入系统,那就开始开发吧,打开了终端,体验了下原生的 shell,的确是比 windows 的 cmd 或 powershell 爽。虽然 windows 也有但其它问题也来了。因为是做安卓开发,那对应的开发环境要装起来啊,Android Studio 要装吧,JDK要装吧,Windows 上软件的安装基本就是下一步,没啥难点。但是 Linux 的软件安装就比较狠了,简单点的从系统的软件库装,这个软件库类似 windos 的应用市场,但是安装软件的方式一般是命令行,现在也开始提供图形界面了。 装好了 AS 和 JDK,然后连上设备,结果电脑上识别不到,搜了下,还要自己手动装驱动才能识别,完全没有 windows 上傻瓜式的体验。折腾来折腾去,最后终于弄完了,也能开发了,但是很多常用的软件都很难折腾。不过经过查询,也都是有替代。 整体折腾完后的感受就是没有在 windows 上那种开箱即用的舒适,大多数常用软件在 linux 上的体验不如 windows,但是,原生的 linux 环境和终端在某些开发时非常的爽,最爽的就是 docker了。 总结,喜欢折腾的人可以换 linux。有钱的可以换 MAC,省事就 windows。 阅读全文 2020-03-17 dogify 0 条评论 3597 次浏览
默认分类 安卓应用查询硬盘可用空间与df查询不一致的研究结果 ## 现象描述 基于安卓平台的机顶盒,在搭载一块大小为2.8T的硬盘时,df命令查看可用空间为164G,但采用安卓API查看可用空间仅为24G。 ## 测试步骤 1.写一个测试程序,不断地向硬盘里写入东西,检测安卓应用读到的24G可用空间是否真实可靠。 2.在测试程序读到可用空间为10M时,再尝试写入一个100M的文件,安卓抛出写入异常。此时,df命令查看的可用空间为140G,而测试程序读到的可用空间为0。在测试程序读到的可用空间为0时,仅允许创建一个空文件,不允许写入内容。 3.以上测试步骤在FAT32和NTFS格式上的硬盘上未发现问题。 ## 测试结论 查阅资料发现ext2、ext3、ext4格式的硬盘存在一个root用户保留区域,用于root用户维护系统或者记录系统关键日志的时候使用,大小默认为硬盘总大小的5%。而安卓软件查询可用空间调用函数是返回普通用户的可用空间,这就导致了软件查询可用空间与df结果不符的问题。 由于安卓软件的权限最高只能拉到SYSTEM,所以无法访问root保留空间。 ## 解决办法 利用命令减少root保留区间,参考命令在最后。利用这个命令,将root保留区块减为0,测试软件读到的可用空间与df所查询到的一致。 综上,这个问题解决。 ``` 之前的保留区有 732463 块 lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count" Reserved block count: 732463 已用空间+可用空间 和 总空间 相比,还少了近3个G lily@LLY:~$ df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda7 57677500 47662588 7085060 88% /home 调整: lily@LLY:~$ sudo tune2fs -r 25600 /dev/sda7 tune2fs 1.41.9 (22-Aug-2009) Setting reserved blocks count to 25600 再来看看空间,哈哈 lily@LLY:~$ df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda7 57677500 47662584 9912516 83% /home 确认调整成功 lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count" Reserved block count: 25600 ``` ## 参考链接 减少root保留区块命令参考链接:http://luy.li/2010/01/08/reserved_block/ 阅读全文 2020-03-17 dogify 0 条评论 2649 次浏览