As the recored by Linode, the site server was first lauched on Apr 1, 2014. It was running Ubuntu 12.04. Later I setup wordpress and moved my blog here from blogspot on Aug 16, 2024. Spurious Wakeups was my first post. Now, the server is running Ubuntu 24.04, and use catch box theme with css customization:
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@media screen and (min-width: 1024px) {
div#page.site {
width:1400px;
}
div#primary {
width:1040px;
}
aside#secondary {
width:280px;
}
.entry-content p {
margin-bottom:10px;
}
}
Just updated all plugins and found 2 problems.
First, Fail2ban is not working anymore, due to the switch from iptables to nftables in Ubuntu 21.10. So it has broken for about 2 years, since my last upgrade to Ubuntu 22.04. Found the issue by running fail2ban-client -d. Simply revert the change in config sudo vi /etc/fail2ban/jail.d/defaults-debian.conf.
1
2
3
4
5
6
[DEFAULT]
#banaction = nftables
#banaction_allports = nftables[type=allports]
banaction=iptables-multiport
banaction_allports=iptables-allports
backend=systemd
Second, Akismet is reporting 500 errors. Details are found in logs: .../plugins/akismet/.htaccess: Require not allowed here. This is sloved by adding config to apache server to allow AuthConfig, in both ssl and non-ssl config files.
From Tencent, based on RocksDB as persistent storage. Binlog to support resuming transport when running replication.
2. Kvrocks
Apache project, poor document. Have seen no advantage over Tendis so far. Also based on RocksDB.
3. KeyDB
Redis fork, multi-threading adopted.
4. Codis
A Redis proxy, clients are not required to know the cluster protocol.
5. redis-cluster-proxy
A Redis proxy, clients are not required to know the cluster protocol.
6. RedisShake
Redis data synchronization(Cross DC). Launch multiple process if sync source is a cluster setup. Used for one-shot full sync scenario, not recommanded for long-time incremental sync.
– C: libevent seems to give best performance, but also low level.
– C++: drogon has websocket support, but no sse. async.
– C++: poco is sync.
– C++: workflow is low level, hard to use. wfrest has convenient apis, sse support in trunk.
– C++: boost/beast has poor performance, and cannot utilize multi-core cpu.
– C++: oatpp is async, but complex framework.
– Better use high level languages like Java or Go if running a web application.
Read documents of Apache shardingsphere several years ago, and used to think it is the best database sharding library in client side. After trying to use it in a real-world application, problems reveal. First, the ecosystem has grown so large. Even a demo spring boot application can reference lots of dependencies. Second, when loading large data set from multiple shards, multi-threading is not used. I still have to manually implement it myself to improve load time.
Actually, what I need is the ability for selecting a database shard implicitly. When I write select t_user from..., it is rewritten to select t_user[0-7] from.... Here’s some alternative options I found:
v2ray unblocks github access from mainland China. Install v2ray clients and set IE proxy _only_ on Windows, bootstrap.bat & vcpkg.exe picks it automatically.
Export vcpkg-2022.08.15 directory as ${VCPKG_ROOT}.
3. Install drogon framework for demo
The drogon framework is a high performance application framework, including client & server supports. vcpkg builds static(*.a) library by default, use x64-linux-dynamic for dynamic(*.so) library. The repo version requires g++-8 to build, install from CentOS SCL:
It sticks to drogon 1.8.0 and openssl 1.1.1n. ${VCPKG_ROOT} now required to be a git repository. In your project directory, install specific versions of libraries by running:
The only difference is the existence of vcpkg.json file, when using versioning.
7. Binary caching
If you change the root path of vcpkg, better clean up the cache, or build may fail. It’s $HOME/.cache/vcpkg/archives under Linux, and %LOCALAPPDATA%\vcpkg\archives under Windows.