小米路由器刷 Breed 和 Padavan 固件
本文主要记录一下小米路由器 3G 刷 breed 和 padavan 的过程。
- Breed 是嵌入式设备的引导和恢复环境的简称。
- Padavan 是由俄罗斯人基于华硕源码开发的针对 mtk 芯片的固件。
我将整个过程分为分为 5 个步骤,更新 ROM、开启 SSH、备份路由器、刷 breed、刷 padavan。
今天在使用 ALTER SYSTEM
来修改 PostgreSQL 参数时遇到无法启动数据库的问题。如下所示:
1 | postgres=# ALTER SYSTEM SET shared_preload_libraries TO 'pg_buffercache,passwordcheck'; |
你是否也遇到了这样的问题呢?其实这都是由于我们先入为主的思想导致的,ALTER SYSTEM
支持以逗号分割的列表,而这类参数的修改不需要使用引号。因此,正确的使用方式如下:
1 | ALTER SYSTEM SET shared_preload_libraries TO pg_buffercache, passwordcheck; |
我们都知道 PostgreSQL 针对每个数据库集群实例,都会有一个唯一的标识符 - system identifier。那么这个标识符是如何生成的呢?本文将对其进行简要的分析。
我们经常需要在 psql 中修改查询语句,例如,我们编辑了几行查询语句,然后需要修改之前的内容,我之前额做法就是 Ctrl-C 然后在重新输入。其实,我们可以不必这么复杂。我们可以使用 \e
命令来编辑查询缓冲区。如下所示:
1 | postgres=# SELECT * FROM |
此时,我们发现 pg_calss
拼写错了,那么我们可以通过 \e
对其进行修改。如下所示:
1 | postgres-# WHERE relname = 'pg_class' |
\e
命令将会创建一个临时文件,然后我们便可以通过编辑文件的方式对其进行修改了,当保存之后,psql 将会把文件内容存放到查询缓冲区中。
\e [ filename ] [ line_number ]
命令还可以接文件和行号,文件指定了我们想要编辑的文件,行号则表明文件打开时光标所处的位置。注意,如果仅跟一个数字,该命令将其视为行号,例如 \e 3
表示编辑查询缓冲区,并将光标移动到第三行。
作为一个刚入门的 Go 小白来说,下载第三方包就成为了第一道坎 :( 。本文简要介绍一下如何下载 Go 软件包,尤其是 Google 系列的包。
最近,在公司采用 Seafile 搭建了一个文件服务器,并结合 OnlyOffice 实现在线预览功能。本文简要记录一下这个过程中所遇到的问题。
我们知道在 Oracle 数据库中,大对象有三种类型,分别是 CLOB,BLOB 和 BFILE。在 Oracle 数据库中大对象最大存储根据配置可以达到 8TB 到 128TB。然而在 PostgreSQL 数据库中并没有提供这三种数据类型。因此在进行迁移的时候,我们需要做类型的映射。在参考文献 [2] 中提到可以将 CLOB 和 BLOB 分别映射到 text 和 bytea 数据类型上。此外,PostgreSQL 的插件 pg_largeobject 也提供了一种大对象的支持。本文简要介绍这两种大对象的使用。
我有一台旧笔记本装有 Ubuntu 18.04 系统,希望把它当作一个服务器,这时我就需要在盖住笔记本时系统不休眠。
Ubuntu 系统中提供了 Login Manager 来管理这些行为,它的配置文件为 /etc/systemd/logind.conf。通过man logind.conf
我们可以看到其详细说明。
其中有一项 HandleLidSwitch
,它控制了笔记本盖住的行为,默认情况下是 suspend
,我们可以将其修改为 ignore
即可以实现我们的目的。例如,我们修改 /etc/system/logind.conf 文件中的
1 | #HandleLidSwitch=suspend |
行修改为
1 | HandleLidSwitch=ignore |
然后重启 systemd-logind 服务即可。
1 | $ sudo service systemd-logind restart |
当我们使用这种方式合住机盖时,WIFI 连接有时可能不是很稳定,这是因为 WIFI 默认启用了省点模式,可以通过下面的方式关闭 WIFI 的省点模式:
1 | $ sed -i 's/wifi.powersave = 3/wifi.powersave = 2/' /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf |
本质上就是将 /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
中的 wifi.powersave
由 3
修改为 2
。
NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0)
: use the default valueNM_SETTING_WIRELESS_POWERSAVE_IGNORE (1)
: don’t touch existing settingNM_SETTING_WIRELESS_POWERSAVE_DISABLE (2)
: disable powersaveNM_SETTING_WIRELESS_POWERSAVE_ENABLE (3)
: enable powersave当 SSH 连接到主机时,如果出现 WIFI 连接无法外网时,可以使用 nmcli
命令来连接网络。首先,使用下面的命令查看 WIFI 信息:
1 | $ nmcli d wifi |
接着使用 nmcli d wifi connect ChinaNet-abPe password your-password
来连接 WIFI 网络。
[1] https://gist.github.com/jcberthon/ea8cfe278998968ba7c5a95344bc8b55
PostgreSQL 的 HASH 索引在 9.6 和 10 版本中有所不同,主要的区别在于 HASH 索引在 9.6 及其之前的版本中不会记录在 WAL 日志中,然而在 10 及其之后的版本这个已经被修复了。
例如,下面是在 PostgreSQL 9.6.17 中创建 HASH 索引。
1 | postgres=# CREATE INDEX id_hash_index ON hash_table USING hash(id); |
从警告中可以看到,PostgreSQL 已经给出了明确提示。然而在 PostgreSQL 12.2 中,创建 HASH 索引则没有上述提示:
1 | postgres=# create index idx_hash_id on hash_table using hash(id); |