普通视图

发现新文章,点击刷新页面。
昨天以前zguishen's blog

Ubuntu 滚动更新碰到问题记录

作者 zguishen
2024年5月21日 00:00

很久没更新Ubuntu系统,更新出了点问题记录一下。

之前禁止了内核更新,最近想更新一下,unhold 了内核版本,重新 apt update 并且 upgrade 更新了下,结果在neofetch看到 OS 信息居然变成了 TONGWANDOU?这才想起之前为了安装国内的一些软件添加的一个源:铜豌豆,结果更新的时候这源不知道加了什么料把系统更新覆盖了,连 grub 都改了...

因为这源的软件也用不上了,然后我就把这个源移除掉重新更新,好了一更新这个铜豌豆干掉了,但是连系统信息也干掉了,lsb_release -a看到 Ubuntu 直接退成了 Debian,原因是/usr/lib/os-release被删,用 zsh 的时候都提示grep: /etc/os-release: No such file or directory is printed

1
2
$ ls -l /etc/os-release
lrwxrwxrwx 1 root root 21 Aug 2 2023 /etc/os-release -> ../usr/lib/os-release

看下/etc/os-release其实是外链到/usr/lib/os-release,所以在/usr/lib/os-release补上系统信息就行了。

vi /usr/lib/os-release编辑文件并输入

1
2
3
4
5
6
7
8
9
10
11
12
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

保存再执行lsb_release -a就能看到正确的Ubuntu信息了。

1
2
3
4
5
6
$ lsb_release -a             
LSB Version:core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID:Ubuntu
Description:Ubuntu 22.04.4 LTS
Release:22.04
Codename:jammy

以后一些奇怪的三方源还是别乱用。

Redis 消息队列在 SpringBoot 中的使用

作者 zguishen
2024年4月27日 00:00

Redis 除了做数据缓存,做 NoSQL 数据库,也可以当做轻量级消息队列使用,并且提供了基于 List 实现的、基于 Pub/Sub 机制的订阅/发布模式、基于 sorted set 的实现和基于 Stream 类型的实现几种实现方式。其中 List 实现的分非阻塞和阻塞方式,Stream 则是 Redis 5 加入的消息队列。

之前代码已经写过了,只是工程整合搞得比较复杂,所以这里算是写份注释文档。

关联代码地址lin/lin-redis at master · zgshen/lin

使用 List 类型实现

List 就是列表数据结构,用来做消息队列这是最简单直观的了,也是典型的点对点消息模型,先看下 Redis 列表提供的操作命令。

push 压入:

  • LPUSH key value1 [value2 ...] 将一个或多个值插入到列表头部
  • RPUSH key value1 [value2 ...] 将一个或多个值插入到列表尾部

pop 弹出:

  • LPOP key 移除并获取列表的第一个元素
  • RPOP key 移除并获取列表的最后一个元素

阻塞弹出;:

  • BLPOP key1 [key2 ...] timeout 移除并获取列表的第一个元素,若列表为空则阻塞等待
  • BRPOP key1 [key2 ...] timeout 移除并获取列表的最后一个元素,若列表为空则阻塞等待

压入和弹出前面的 L 和 R 表示从队列左端和右端压入和弹出,阻塞弹出的 B 代表就是 blocking 的意思。

使用队列一般遵循先进先出,所以要么左近右出,要么右近左出,框架提供的 RedisTemplate 封装了 Redis 的操作命令,push 和 pop 直接调用就行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Autowired
private RedisTemplate redisTemplate;

//左进
public Long push(String... params) {
Long aLong = redisTemplate.opsForList().leftPushAll(LIST_PUSH_POP_MSG, params);
return aLong;
}

//右出,轮询检测
public String pop() {
String str = redisTemplate.opsForList().rightPop(LIST_PUSH_POP_MSG).toString();
return str;
}

再看下堵塞弹出的异步操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void blockingConsume() {
List<Object> obj = redisTemplate.executePipelined(new RedisCallback<Object>() {
// @Nullable
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
//队列没有元素会阻塞操作,直到队列获取新的元素或超时
//return connection.bRPop(PUB_SUB_TIME_OUT, LIST_PUSH_POP_MSG.getBytes());
return connection.bLPop(PUB_SUB_TIME_OUT, LIST_PUSH_POP_MSG.getBytes());
}
}, new StringRedisSerializer());
for (Object str : obj) {
log.info("blockingConsume : {}", str);
}
}

此外 Redis 还有两个命令 RPOPLPUSH、BRPOPLPUSH(阻塞)可以从一队列获取队列并且写入另一个队列,可以用于简单保证消息可靠性,业务成功处理后再移除另一队列的消息,如果业务处理失败又可以从另一队列恢复。

1
2
3
4
5
6
7
8
9
10
11
12
13
public String rightPopLeftPush() {
String str;
try {
str = redisTemplate.opsForList().rightPopAndLeftPush(LIST_PUSH_POP_MSG, LIST_PUSH_POP_BACKUP_MSG).toString();
// 其他业务,处理失败了还能在 LIST_PUSH_POP_BACKUP_MSG 队列找到备份
} catch (Exception e) {
log.error("业务异常:{}", e.getMessage());
throw new RuntimeException(e);
}
// 先进先出业务完毕出栈,让异常的消息留在队列里
redisTemplate.opsForList().leftPop(LIST_PUSH_POP_BACKUP_MSG);
return str;
}

使用 Sorted Set 实现

Sorted Set 是有序集合,元素唯一不可重复,元素按照 score 值升序排列,支持范围操作,所以适合做简单的延迟消息队列。

添加元素:

  • ZADD key score member [score member ...] 向有序集合中加入一个或多个成员,或更新已存在成员的分数

获取元素:

  • ZRANGE key start stop [WITHSCORES] 按位置范围遍历集合,可附加分数
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT...] 按分数范围遍历集合

以下是简单的生产和消费程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* @param businessId 业务 id(如订单 id 等)
* @param expiredTime 延时时间,单位秒
*/
public void produce(String businessId, long expiredTime) {
redisTemplate.opsForZSet().add(MsgConstant.SORTED_SET_MSG, businessId, System.currentTimeMillis() + expiredTime * 1000);
}

/**
* 简单的消费程序
* 死循环,仅做测试
*/
public void consume() {
while (true) {
//(K key, double min, double max, long offset, long count)
//键,要取区间score最小值,要取区间score最大值,偏移(从哪个位置开始),数量
Set<String> set = redisTemplate.opsForZSet().rangeByScore(MsgConstant.SORTED_SET_MSG, 0, System.currentTimeMillis(), 0, 1);
if (set == null || set.isEmpty()) continue;
log.info(set.toString());
String next = set.iterator().next();
Long remove = redisTemplate.opsForZSet().remove(MsgConstant.SORTED_SET_MSG, next);
if (remove > 0) log.info("{} remove success.", next);
}
}

使用 Pub/Sub 订阅发布模式

发布者把消息发到某个频道,订阅改频道的所有消费者都会收到消息,即消息多播,并且订阅支持模糊匹配频道。这种方式就是常规的消费者-消费者模型,不过与典型的 MQ 还是有区别,Pub/Sub 订阅发布更像是个广播,不能并发消费,不支持持久化,也没有 ACK 确认。

发布命令:

  • PUBLISH channel message : 将消息 message 发布到指定的频道 channel

订阅命令:

  • SUBSCRIBE channel [channel ...] : 订阅一个或多个频道
  • PSUBSCRIBE pattern [pattern ...] : 订阅一个或多个模式,用于模糊匹配频道

Spring 工程的配置类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter adapter, MessageListenerAdapter adapter1) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//主题的监听,adapter 和 adapter1 对应下面两个 bean 实例,有多少
container.addMessageListener(adapter, new PatternTopic(PUB_SUB_MSG));//普通的订阅者
container.addMessageListener(adapter1, new PatternTopic(PUB_SUB_MSG_FUZZY));//模糊匹配的订阅者
return container;
}

/**
* 多个订阅
* @param message
* @return
*/
@Bean
public MessageListenerAdapter adapter(MessageSubscribe message){
// MessageSubscribe 的 onMessage 监听获取订阅数据
return new MessageListenerAdapter(message, "onMessage");
}

@Bean
public MessageListenerAdapter adapter1(MessageSubscribe1 message){
// MessageSubscribe1 的 onMessage
return new MessageListenerAdapter(message, "onMessage");
}

订阅者类:

1
2
3
4
5
6
7
8
9
10
@Slf4j
@Component
public class MessageSubscribe implements MessageListener {

@Override
public void onMessage(Message message, byte[] bytes) {
log.info("sub, topic name: {}, message: {}", new String(bytes), new String(message.getBody()));
}

}

发布者类:

1
2
3
4
5
6
7
8
9
10
11
@Service
public class MessagePublish {

@Autowired
StringRedisTemplate redisTemplate;

public void publish(String channel, String msg) {
redisTemplate.convertAndSend(channel, msg);
}

}

使用 Stream

Redis 5.0 新增了 Stream 的数据结构,与 Pub/Sub 订阅发布模式相比,Redis Stream 提供了消息的持久化和主备复制功能。

添加消息:

1
XADD key ID field value [field value ...] 

其中ID,消息id,可使用 * 表示由 redis 生成,可以自定义,但是要自己保证递增性

读取消息:

1
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]

milliseconds 设置堵塞秒数,没设置就是非阻塞模式。

创建消费者组:

1
XGROUP [CREATE key groupname id-or-$] [SETID key groupname id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]

key 队列名,不存在就创建;groupname 组名;$ 表示从尾部开始消费,只接受新消息,当前 Stream 消息会全部忽略。

1
2
3
4
5
# 从头开始消费
XGROUP CREATE mystream consumer-group-name 0-0

# 从尾部开始消费
XGROUP CREATE mystream consumer-group-name $

读取消费者组中的消息:

1
XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]

group 消费组名;consumer 消费者名;count 读取数量;milliseconds 阻塞毫秒数;key 队列名;ID 消息 ID。

例子:

1
XREADGROUP GROUP consumer-group-name consumer-name COUNT 1 STREAMS mystream >

看下在 Spring Boot 中的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* 启动初始化配置,注册 listener
*/
@Slf4j
@Component
public class RedisStreamRunner implements ApplicationRunner, DisposableBean {

private StreamMessageListenerContainer<String, MapRecord<String, String, String>> container;
private final ThreadPoolTaskExecutor executor;
private final RedisConnectionFactory redisConnectionFactory;
private final StringRedisTemplate stringRedisTemplate;

public RedisStreamRunner(ThreadPoolTaskExecutor executor, RedisConnectionFactory redisConnectionFactory, StringRedisTemplate stringRedisTemplate) {
this.executor = executor;
this.redisConnectionFactory = redisConnectionFactory;
this.stringRedisTemplate = stringRedisTemplate;
}

@Override
public void run(ApplicationArguments args) throws Exception {
StreamMessageListenerContainer.StreamMessageListenerContainerOptions<String, MapRecord<String, String, String>> options =
StreamMessageListenerContainer.StreamMessageListenerContainerOptions.builder()
.batchSize(10)// 一次性最多拉取多少条消息
.executor(executor)// 执行消息轮询的执行器
.pollTimeout(Duration.ZERO)// 超时时间,设置为0,表示不超时(超时后会抛出异常)
.build();

StreamMessageListenerContainer<String, MapRecord<String, String, String>> container =
StreamMessageListenerContainer.create(redisConnectionFactory, options);

initStreamAndGroup(stringRedisTemplate.opsForStream(), STREAM_KEY, STREAM_GROUP);
// receive 方法内部 autoAcknowledge 为 false,需要手动 ack 的
container.receive(Consumer.from(STREAM_GROUP, STREAM_CONSUMER), //消费组和消费者,这里只演示一个消费者
StreamOffset.create(STREAM_KEY, ReadOffset.lastConsumed()),//读取 id 大于消费者组最后消费的所有新到达元素
new TestStreamListener(stringRedisTemplate));//消费消息,业务处理

this.container = container;
this.container.start();
}

/**
* 消费组,不存在则创建
*/
private void initStreamAndGroup(StreamOperations<String, ?, ?> ops, String streamKey, String group) {
String status = "OK";
try {
StreamInfo.XInfoGroups groups = ops.groups(streamKey);
if (groups.stream().noneMatch(xInfoGroup -> group.equals(xInfoGroup.groupName()))) {
status = ops.createGroup(streamKey, group);
}
} catch (Exception exception) {
RecordId initialRecord = ops.add(ObjectRecord.create(streamKey, "Initial Record"));
Assert.notNull(initialRecord, "Cannot initialize stream with key '" + streamKey + "'");
status = ops.createGroup(streamKey, ReadOffset.from(initialRecord), group);
} finally {
Assert.isTrue("OK".equals(status), "Cannot create group with name '" + group + "'");
}
}

@Override
public void destroy() {
this.container.stop();
}

}

TestStreamListener 处理消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Slf4j
public class TestStreamListener implements StreamListener<String, MapRecord<String, String, String>> {

StringRedisTemplate redisTemplate;

public TestStreamListener(StringRedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}

@Override
public void onMessage(MapRecord<String, String, String> message) {

log.info("MessageId: " + message.getId());
log.info("Stream: " + message.getStream());
log.info("Body: " + message.getValue());
//记得手动确认
redisTemplate.opsForStream().acknowledge(STREAM_GROUP, message);
}
}

生产者:

1
2
3
4
5
6
7
8
9
10
11
12
@Service
public class TestStreamProducer {

@Autowired
StringRedisTemplate redisTemplate;

//发送流信息
public void add(String streamKey, String msg) {
redisTemplate.opsForStream().add(Record.of(msg).withStreamKey(streamKey));
}

}

参考

广深城中村生活指南

作者 zguishen
2024年3月27日 00:00

维基百科解释,城中村是指留存在城市区域内的传统乡村,是中国大陆地区城市化进程中出现的一种特有的现象。一般网络上提到最多的城中村是在广州和深圳的城中村,尤其是广州,一直都被吐槽城市面貌不像一线的城市,一边是珠江新城CBD,一边又是石牌村和员村,对比强烈。

自从毕业之后一直以来都是住在城中村,最近想搬家了,虽然关于城中村的研究报道已经有很多了,不过我还是想写一写我对城中村的印象和在村里的生活状况,以及一些租房情况。

位置

城中村房子建得非常密集,除了一些街边楼,大多数房子都得走小巷子,俗称握手楼,楼距非常小,所以低楼层的光照非常差,有些地方如果不是在大中午,基本上就是暗无天日。所以选择房子的时候就尽量不要选太深入小巷子,并且尽量不要低楼层,小巷子低楼层基本上就是又脏又阴暗,特别是回南天或者下雨的时候更是恶心,楼房居民上上下下,低层楼道非常脏,全是泥水。尤其注意房子有没有发霉,发霉的房子住了会生病的!宁愿多爬几层楼都不要选低层,如果怕高层晒到太阳夏天太热有空调解决,反正南方夏天这温度在哪都得开空调,但是光线不好的房子住久了人真的会抑郁的。

此外,临街的房子虽然出入方便,光线好,但是会很吵,城中村人口密集,大街两边楼下基本全是商铺,人流巨多,再加上广东有宵夜习惯,有些肠粉店甚至是24小时供应的,可能会被吵到晚上睡不着觉,早上也别想睡懒觉,此外也要注意餐饮的油烟,特别是楼下是烧烤那还是别租了。

总结就是不要太临街,尽量选高层光照条件较好的。

最后要考虑的就是离上班距离远不远,交通是否方便,附近是否有公交地铁,周边商超是否多,吃的在广州倒是没啥好担心,村里最不缺的就是吃的,24小时都有得吃。

房东

租房首选本地房东直租,事比较少,也不会过二房东多收费。在广州这边可以直接去线下找,一般小区门口或者是城中村都有告示牌贴满各种租房广告,村口也会有很多房东挂着牌子等着租户来看房。辨别是不是本地房东有一些方法,比如本地房东联系方式名字很喜欢写X生、X姐,或者学几句粤语跟房东沟通,就算不说粤语广谱口音也挺好认的,上了年纪的房东口音更明显,当然最直接的方式是看房本,不过看个房还没必要这样。

水电和管理费

城中村的水电价格一般都是水每吨5元,电每度1.5元。之前广州深圳市政府都出了规定水电燃气乱加价将被罚,然而根本没什么卵用,看看房东们是玩的:

各位住户您好,贯彻执行供电标准,规范辖区群体综合用电,自7月1日起,结合实际收费管理进行调整!
1:基础电价由原来1.5元/度降为0.67元/度,水费由原来的5元/吨降为2.93/吨。
2、享受居民水电价后,相对于收取(电损,公摊照明,电力设施维护,2次加压和维护损耗等费用)等硬件基础服务费0.83元/度,2.07元/吨。

正所谓上有上策,下有对策,改交的钱一分都不会少。除了水电之外,一般还要交管理费卫生费等等,还有门禁现在基本都是居委统一登记发放,每月还得给门禁充钱...

所以有时候每月你算下来的话要交的钱也不少的,特别是窝在家比较久用电比较多的租户,花多点钱去小区合租住反而更划算,小区民用水电用个爽,而且环境可好太多了。村里更适合早出晚归的打工人,只当做一个洗澡睡觉的地方,或者是喜欢独居的人。

网络

广深城中村很多地方的网络都是被垄断的,连官方运营商都没辙的,比如你装电信网打1000官方会直接告诉你装不了,或者是装了之后被人剪了,你是一点办法都没有,简直就是无法无天。有些房东会和本地的网络承包商勾结,让你只能用又贵又慢的宽带

电器

配套电器要看齐不齐全,空调、冰箱和热水器是必须的,空调要看是几级能耗,能耗高的夏天电费吓人,有些黑心房东会故意装高能耗空调让你多用电赚差价,城中村除非公寓电价全收是1.5元每度,实际房东叫电费没这么贵所以能收差价。

水压

然后要看屋子里的水压是否正常,特别是住高层要开下水龙头看看水压,水压低的话洗个澡都不舒坦,洗衣机洗衣服甚至超时了水还没放够...我现在住的这房子就是这样,后来房东总算加了加压器水压才正常了。

朝向

再者是注意布局朝向。城中村很多房子其实是违建的,所以房子隔出来会有些奇形怪状的房间,强迫症住起来可能很别扭。房间朝向的话尽量不要墙的一面被下午太阳直射,不然的话夏天晚上回家你会收获一间蒸笼和一面铁板烧铁板。当然,我上面也说了,反正夏天都要开空调,阳光更重要,优先要有阳光再考虑这个问题。

维修

一般情况下租房由房东提供的电器坏了都可以找房东维修,但是这个还有要问清楚,可能有的房东会让你自己出钱,当然是自己买的电器就是自己维修了。

其实修换水龙头换灯,修一些电器都挺简单的,拼多多买工具,网络上找下教程就可以自己动手了,现在人工越来越贵了,请下师傅50块100块就没了。

出租屋的用电安全跟常识一样没太多说的,只有热水器这东西要多注意,城中村的热水器几乎都是用电热水器,所以洗澡的时候请务必先关闭电源早洗澡,看过新闻应该知道有人因为漏电洗澡的时候触电而亡。

安全

村里人员混杂,居民素质嗯,刚毕业的大学生倒是没啥问题,只是各种社会人就难说了,当然现在社会还是比以前安全得多了,一半情况下是没啥问题,偶尔会看到警察处理一些事情。要说比较烦的问题,噪音是一个,握手楼不隔音,有人在吵架家庭纠纷之类真的吵,甚至晚上男女的声音都能听到...

还有一个比较难评的问题是站街女,真的不少,反正我见过不少,这个问题我不知道怎么说,毕竟我也没试过哈哈,我碰到都是默默赶紧走开,只能说大家还是洁身自好吧。一般有站街的地方都是比较深入的小巷子,临街太过光明正大不容易看到。

结尾

城中村是很多打工人到城里打工的第一站,给低收入群体提供了一个庇护之所,让你能在城里快速站稳脚跟,当工作稳定下来工资上涨之后很多人就开始搬家离开,然后新来的外来打工人不断来补充这个市场。

每当我做BRT经过黄村、车陂、棠东、棠下、上社和石牌村,沿中轴线走到东西塔下看广州塔的时候,才感受到城市的反差如此巨大,就像现在中国社会的割裂程度之大,有人出生就在罗马,有人背井离乡漂泊打工,人与人差距越大,也就越难以互相理解。

随手写的,头晕晕的写得有点乱,等后面有空再修改一下。

你想活出怎样的人生 君たちはどう生きるか

作者 zguishen
2024年4月11日 00:00

《你想活出怎样的人生》片名英译 The Boy and the Heron,男孩与苍鹭。电影故事挺简单清晰的,但是片中很多隐喻大概得看几遍才看明白,这第一遍看完最深的印象居然是多邻国的多儿(片中有很多绿色鹦鹉,太像多儿了)。

这应该是宫崎骏最后的作品的,这部片看起来更像是宫崎骏在讲自己的故事,片中可以看到他以往的很多作品的影子,比如说跟《千与千寻》很像的神隐世界的海、汤屋、哇啦哇啦和纸人,《幽灵公主》的树精灵,《红猪》的亭子等等,同时明显感觉到宫崎骏想把很多题材一并讲完,有很多话想说,但是一部影片就这么长很难顾全。

故事背景时间在二战,战时民生凋敝物资紧缺,百姓流离失所,主角(真人)母亲死于空袭火灾,父亲是军工工厂老板,战争使得生意更好了,父亲再婚老婆是小姨子...

接下来是讲家庭,主角和继母关系并不怎么好,继母还是妈妈的妹妹。主角在学校打架被欺负为了不去学校故意砸伤自己的头在家养伤,在家看到母亲的遗物,一本书《你想活出怎样的人生》,对应片名。

然后就是进入高塔探索,神隐世界的实物有太多的隐喻说实话看不明白,比如说苍鹭、哇啦哇啦、鹈鹕、鹦鹉、消失在塔中的舅公、儿童时期的母亲等等。其中被困的鹈鹕吃不到鱼只能吃哇啦哇啦,而哇啦哇啦又是将要投胎的人的灵魂,洗手间旁将死的鹈鹕解释是没办法为了活下去才吃哇啦哇啦,这里是在影射日本战时的困境?或者是民众被拖入战火的困状,食物匮乏到以至于吃人(哇啦哇啦),与电影开头的人民生活镜头呼应?火美用烟火驱赶鹈鹕代表日本被轰炸;再者鹦鹉也是类似,鹦鹉甚至组建了国家,还有个很疯狂的大王。祖父用白色石头搭建稳定的积木才稳定神隐世界这是象征世界的稳定如同积木一般摇摇欲坠?疯狂的鹦鹉大王一到把积木劈掉导致神隐世界的崩溃,这里是在象征疯狂的军国主义?

我更偏向这是一场梦作为解释,通过与逝去的亲人的沟通化解矛盾,认识现实世界,让主角有勇气回到满目疮痍的现实。

综合看下来,这是宫崎骏一部回顾之作、总结之作。

每次写影评都乱糟糟的,特别这种意识流的不多看一两遍很多细节没法看到,有时闲累了干脆看别人的解析去了。

春城昆明

作者 zguishen
2024年3月12日 00:00

滇池海鸥

在广东湿冷的天气里实在受不了,看了全国的天气预报,只有西南和海南还是好天气,所以我决定到昆明走一走。

其实一开始是非常想去泰国走一走的,因为从来还没有出过国,事实上去昆明也是自己第一次一个人出省回广州也是第一次做飞机。虽然泰国免签了,但是出国还是相对比较麻烦而且不告诉家里感觉非常不好,所以还是决定去昆明,毕竟在国内就没什么顾虑了。

Day 1

一到昆明最大的感触就是,生活节奏是慢悠悠的,司机是会让行人的,电动车的出行体验能这么好(如何你来过电鸡之城广州对比就嫩感受到了)。

因为是临时决定要来的,机票看起来很贵,所以是做的高铁晚上到昆明,晚上先到昆明老街逛逛,就是全国大同小异的商业街,这边普遍关门都会早一点,啥都吃不上,没得选只好随便吃了螺蛳粉。以前是觉得又辣又臭不吃螺蛳粉,实际吃起来还行啦,辣点也不怕,好像只要离开广东吃辣都不会长痘了,上次在贵州也是吃了一堆辣一点事都没有,水土气候影响真神奇...

Day 2

第二天早上到翠湖,好像在昆明只要是个公园只要有水的地方都有海鸥,翠湖这里还有松鼠,真的可爱。

翠湖/松鼠

翠湖附近也是各种学校和历史建筑的聚集地,云南陆军讲武堂、云南大学、云南师范大学和西南联大博物馆等都在这里。中午在云南大学吃的饭,非常实惠,有一碗切片的咸猪肉,下面是青瓜,很好吃。

云南大学食堂午餐

吃完饭逛了下云南师范大学,然后下午西山风景区,又是爬山哈哈,下次出门不想爬山了。不过西山上风景还是不错的,能俯看到昆明市区和滇池,

俯瞰滇池

做巴士和电瓶车到西山风景区,然后爬山到龙门石窟,因为在山上拍湖边公路,等车辆经过等了好久一直没车,结果下山过了5点错过做滇池索道到海埂大坝了,这景区运营下班真早,我5点多到滇池索道的时候卖票窗口早关了,景区服务员在疯狂干饭,真的,疯狂扒拉😂。

龙门石窟

晚上去吃了过桥米线,过桥米线可以不辣的,感觉云南很多食物都可以是不辣的,这对吃不了辣的人群真是太友好了。

过桥米线

Day 3

第三天早上到云南省博物馆,云南省博的外观设计跟广东省博差不多,都是方方正正那种,展馆有三楼,按时间线从生命起源讲到云南现代,就...非常直接,此外在一楼还有个香格里拉主题展馆。展品算不上丰富但是看起来还是比广东省博强些。

下午本来想去捞鱼河湿地公园的,但是比较远感觉实在是累,所以去了海埂大坝,沿着滇池岸边从海埂大坝骑共享电动车到海洪湿地公园,不过这边就没法看到好看的日落的...

海洪湿地公园

晚上去吃了菌子火锅,小红书推荐的,感觉踩雷了,菌子想和鸡肉都不够新鲜,一个人一百来块不便宜了啊,到目前为止还没有吃过比家里这边潮汕牛肉火锅更好吃的火锅。

菌子火锅

Day 4

第四天早上到篆新农贸市场,买了草莓和蓝莓,听说这市场挺坑外地人的,但是还是买了,就算被坑了还是比广州便宜的。草莓带回广州样子就没法看了不新鲜了,保存运输真是麻烦,怪不得这么贵。蓝莓就好多了基本没问题,放冰箱这几天天天吃很好吃,强烈推荐回家的时候买蓝莓,真的太划算了,草莓就在当地吃完吧别带回家了。

下午到长水机场坐飞机回广州,这是这辈子第一次坐飞机,虽然老家就在机场附近,在广州去白云机场也没多远,但是真没坐过。其实过年我完全可以做飞机回家的,只是觉得不够远没必要,去省外其他地方也去得少,碰到要到省外出差就跟领导拒绝了哈哈,没想到这么多年一直没机会做次飞机。这次做飞机还专门做靠窗位置,可惜到广州下雨了,不管是广州塔还是大蟑螂啥都看不到。

End

昆明被称为春城,一年之中大部分时候天气都非常好,只是天气干燥得厉害,太阳晒得厉害,滇池的风也大得厉害,如果来旅行的话口罩防晒霜保湿都需要。

昆明节奏比较慢,司机居然是会让人的,非机动车道很宽,共享电动车骑行体验非常棒,走在在人行道上也不用担心被电鸡创。

再见昆明,等下次来云南再到大理转转,到时候也许不怕冷了再到香格里拉看雪山。

麓湖公园

作者 zguishen
2023年8月26日 00:00

麓湖其实去过几次了,之前去的时候还不知道旁边有个鸿鹄楼可以爬山去看看,上面还可以拍一下市区的天际线。刚好前几天鼓捣用上了 Cloudflare R2 存储,可以随便放图片了,不用每次推到 Github 仓库里,发一下麓湖公园的一些照片。

公园有很多落羽杉,元旦左右去拍黄色树林比较好看。

麓湖

麓湖旁边的聚芳园,里面有个鸿鹄山。

鸿鹄山牌坊

鸿鹄楼在山上。

鸿鹄楼

爬山十分钟到达山上,拍天际线。

天际线

在傍晚时分来可以拍日落。

日落

Attack on Titan | 進撃の巨人

作者 zguishen
2023年11月5日 00:00

忘记是什么时候开始追《进击的巨人》动画的了,只记得当时是看《钢之炼金术师》时,经常看到有人将这两部作品相提并论,当然经常是评论区吵得不可开交啦。开始看进巨的时候以为又是一部热血王道番剧,不过当动画剧情的发展和看了部分漫画版后也知道作者的立意不是如此单纯。

《进击的巨人》2009漫画开始连载,2013年动画开播,2023年结束,出场人物众多,角色形象鲜明。比如主角团三人组主角艾伦、军师阿尔敏和类似保镖角色的三笠;调查兵团团长埃尔文、一米六的兵长利威尔;九大巨人每个都有不同的特点。十年的跨度很大,很多情节现在我也都记不清了,不过动画贡献的许多梗却一直为人们熟知,有初见巨人的“那一天,人类回想起了被它们所支配的恐惧...”,有战斗时的“塔塔开”和“献出心脏”,还有漫画结局艾伦的“那种事情不要啊”。

剧情的走向就是认识世界的过程。一开始讲述的是人类因为巨人被束缚在围城之中,壁外调查是为了挣脱束缚,追寻自由。当墙内人们突破封锁来到海边的时候,知道海的对岸还有另外的世界,这时候才知道这是国家间的战争。再随后在与马莱国的对抗中逐渐知道巨人的真相,这时候主角的追求也更加深入,想要结束两千多年艾尔迪亚和其他种族的战争。

漫画的结局被很多人诟病,虽然是架空世界的题材,但是也有一些现实社会的映射,有些人会认为是给日本军国主义的洗白,可能在作者的生活中还是很难避免日本社会的影响,但是动画版的结局看完之后还是更像 war never changes 的模板,当在末世的废土中少年和他的小狗走进始祖树中,会不会又是一个文明的轮回呢?

谏山创立了很大的意,但却给了一个现实的结局,不够爽,不够圆满。而且也有一些很难自圆其说的情节,比如说把始祖尤弥尔的动机解释为扭曲的爱情,然后就是没有交代怪诞虫是什么东西,只能理解为一个设定。

在我看来,进巨的核心有三点,一是反战,二是有人类就有纷争,三是不放弃对自由和平的追求。动画十年跨度太大了,很多剧情我都记不太清了,这篇短评写得挺混乱的。

FAR:Lone Sails

作者 zguishen
2023年10月23日 00:00

I remember a different world. I am not alone.

最近在小黑盒看到这个打折的小游戏,这几年越来越喜欢玩这类小游戏,流程较短,制作精良,而且经常有让人眼前一亮的作品出现。另一个原因是3A大作实在是玩不动了,虽然说不是没时间没精力去玩,但是没有那种持续性地、几十个小时沉浸在一个游戏的耐心,没有继续玩下去的渴望,现在有人称这种现象为“电子阳痿”(当然也很多表现,这里说的只是一种)。

FAR: Lone Sails 以末日世界为背景,主角小红人独自穿越干涸的海洋,在途中获得一辆车,一路上找油桶给车加油,给车加上风帆、换轮子、加进气口,装备灭火器和修理工具。

跋山涉水,行驶在在漫天星辰的夜空下,在雷雨冰雹中,在银装的雪地中,这是一场孤独的旅行,一路上没碰到其他同类,有点《少女的终末旅行》中两位少女漫无目的地持续着旅行。

一路中会碰到各种建筑遗迹,最好玩的是还能进入一架类似星球大战中的全地形装甲步行机(AT-AT WALKER)的大型机器。

碰上了火山爆发,拼命加速逃跑...

可惜车子还是受损了,动力系统被毁,只能靠风力继续前进。

在终点将剩下的燃料点燃一摊篝火,结束这段旅程。

火炉山

作者 zguishen
2023年7月13日 00:00

上周四(7月3日)到火炉山去转了一圈,下午35℃的天气,居然还有不少像我一样的傻瓜去爬山的。其实当时是想去华快观光点拍一个广州三件套,需要在天气好空气质量好的时候才拍得清晰一些,本来以为当天能见度已经很不错了,不过当爬到山上远看还是有些雾霾。

华快-72mm

华快-裁剪

澳门

作者 zguishen
2023年4月28日 00:00

大三巴

前段时间因为身份证快过期了,要拍照拿回执随便把护照和港澳通行证回执一起做了,顺手把护照和港澳通行证都一起办了。既然拿了护照和通行证,就在小红书查了下几个旅行地方,才发现广州去澳门其实很快,来次澳门一日游居然这么方便!

珠三角的短途客运非常发达,一张往返广州和澳门的大巴车票只要¥49,早上出发约两个小时就到珠海拱北口岸了。出入境都各自需要填一次健康信息,带上通行证就可以进入澳门了。入境前或者进去之后可以换些葡币,如果需要做公交或者其他消费的话,不过大多数情况下都可以用支付宝微信付钱。做公交最好就换点钱,用人民币投币会亏些汇率,白嫖发财车就不用花钱了,不过发财车只往返各酒店和口岸。

第一次去没怎么做准备,主要在半岛乱逛,然后坐发财车到威尼斯人转一下就回家了。

路线:拱北口岸 - 十六浦酒店 - 议事亭前地 - 玫瑰圣母堂 - 大三巴牌坊 - 大炮台 - 澳门博物馆 - 东望洋灯塔 - 渔人码头 - 威尼斯人 - 关闸(拱北)

在澳门交通可以白嫖发财车,吃饭也可以到各大赌场酒店里白嫖,注册赌场会员就会送饭送奶茶啥的,如果只是想填饱肚子就行可以去白嫖,想吃美食还是花钱吧,旅行还是花钱舒服点好。

说到澳门最大的特色那当然是赌场了,我跟着大爷大妈一起进赌场结果被拦下查年龄了,进赌场需要21岁,估计是背个书包太像学生了。威尼斯人里面真的够豪华的,赌的人也够多了,你去赌场免费做的发财车,在赌场里免费的奶茶,其实是这些赌...狗都替你买单了😹。

澳门最著名的景点就数大三巴了,最高建筑新葡京大厦,其他大大小小的景点也非常多。澳门博物馆里面没什么东西,毕竟只是个小地方,历史能讲的东西也少。

打算下次去澳门再去氹仔那边逛逛,不过出境后再次入境需要相隔两个月才能再次入境。

阳了

作者 zguishen
2022年12月29日 00:00

作为一个宅男,本身就很少出门,即使出门也是规规矩矩戴好口罩,但是还是感染 COVID-19 病毒了,最大的原因也许是拿快递或点外卖接触但又没有消毒,所以感染了。不过以这个病毒的传播能力来看,基本上是很难防得住了,感染难以避免。

  • 1217:下午开始高烧,体温升得很快,身体痛,特别是腰痛。吃泰诺然后睡了几个小时感觉好多了。
  • 1217:今天再吃一片泰诺已经不会烧了,但是喉咙开始痛了。
  • 1219:第三天。凌晨两点醒了,喉咙痛得要死,四点又醒了一次,六点再醒一次,真是折磨。现在是肋骨痛喉咙痛怕冷。
  • 1220:第四天,继续受折磨,喉咙吞刀子。
  • 1221:第五天,症状减轻很多了。

......

  • 1229:鼻塞,喉咙还是一直有点不舒服,偶尔咳嗽,看来是一时半会没法完全好的。

整个过程下来我只吃了两片泰诺(对乙酰氨基酚缓释片),然后就是每天两片维生素,其他药都没吃。初期高烧浑身痛很难受,说只是小号感冒纯骗人,比感冒难受多了,而且持续时间长,直到今天(19日)依然在咳嗽,精神状态也不好,人容易累。

《Stray》

作者 zguishen
2022年7月20日 00:00

stray截图

现在很多人独自在大城市打工,住出租屋,合租还好,一个人住的都很孤独,喜欢猫猫养猫猫的人越来越多。

今年错过了Steam夏促,没买游戏,就预购了一个猫猫游戏《Stray》

游戏卖得很好,游戏评价也是好评如潮,只要你给我猫猫,我就给你好评。谁不喜欢猫猫呢。

因生病将人类意识上传网络的B12

不过游戏真的很一般,流程短,我6个多小时通关,还碰到卡流程的恶性bug。游戏内容缝合元素很多:

  • 生化(也有点像怪奇物语中的颠倒世界)的恶心变异病毒和大眼睛很哈人;
  • 尼尔的原始聚落;
  • 赛博朋克城市;
  • 99围城像辐射避难所。

除去猫猫元素,这游戏我大概只能给个及格分数,猫猫加分太多了。不过,能搞出猫猫这种创新元素,给他好评是他应得的,其他游戏厂商怎么就没想到呢,以后有同类型题材的游戏,大家可能就不会这么宽容了。

现在大家都喜欢猫猫狗子,还有各种布偶玩具也有点这种感觉在里面,不会养猫狗的可以买个fufu或者买只宜家鲨鲨陪你写代码。

赛博朋克风格城市

2023-07-26 修改

火炉山——华快观光点

作者 zguishen
2023年7月13日 00:00

上周四(7月3日)到火炉山去转了一圈,下午35℃的天气,居然还有不少像我一样的傻瓜去爬山的。其实当时是想去华快观光点拍一个广州三件套,需要在天气好空气质量好的时候才拍得清晰一些,本来以为当天能见度已经很不错了,不过当爬到山上远看还是有些雾霾。

LX10最长只有72mm,真拍不了风光,想换长焦相机了。

华快-72mm

华快-裁剪

铃芽之旅 すずめの戸締まり

作者 zguishen
2023年7月3日 00:00

我想要活下去,想听见你的声音。

新海诚电影风格一直以来都是以精美的制作画面和青春男女的 相遇相知 相爱或相忘的故事吸引人的,从十几年前的《秒速五厘米》《言叶之庭》到近些年《你的名字。》《天气之子》,不仅能看到制作水平的进步,剧本的风格转变。尤其以《你的名字。》的成功,让新海诚这块招牌打得愈加响亮。不过,这次的《铃芽之旅》打破了人们以往对新海诚电影的固有印象,电影要表达的有更多的东西,但是也有很多批评,我个人总体来说《铃芽之旅》相比较《你的名字。》的表现差。

电影四月份上映的时候就去影院看了,一开始先入为主,以为是新海诚传统的电影风格,又一个男女爱情故事,可是越往后面看越觉得感情线好像不是那么重要。

故事开始是女主铃芽无意中拔出要石,引发灾厄,要石变成白猫(大臣),诅咒草太肉体消失附身在三腿小座椅上。随后草太为了抓住大臣变回人形,一路跟随大臣的逃跑路线开启了一边抓猫一边关闭沿途被打开的后门的旅程。总体看下来这部电影既像爱情片又像公路片,也可以是纪念地震的。事实上,我认为纪念地震才是电影的主题,这就导致我在影院看的时候觉得观感很差,各条主题线混杂在一起,但是新海诚明显没处理好。而且电影里细节很多但又不明显,需要对日本的地震史(东日本大震灾)有了解一些,白猫黑猫又代表什么,动机是什么,只看一遍很难理解,现在电影在流媒体上线了重新看了一遍,才看到了更多的细节。

首先说感情线,很多人都觉得男女主的情感发展很奇怪。电影开头铃芽觉得见过草太这里呼应了结尾在长世小铃芽遇见了男女主,后续草太变成椅子就奇怪起来了,从一只椅子去了解一个人太抽象了,而且一路上两人在做的都是关门师的任务,更像干活的同事。

不过对铃芽人物的刻画就好多了,叛逆、活泼又勇敢的女高中生。不过也许有的人更喜欢神明化身的猫,大臣的形象真的讨喜。铃芽把要石拔出来,大臣作为要石镇压灾厄的使命也完成了,并且使命转移到了关门师草太身上。大臣喜欢铃芽,而铃芽因为自己错误拔出要石而导致草太要作为要石牺牲,决心要救草太,这样就形成影片的故事冲突点。最终大臣被铃芽感动愿意重新化为要石镇压灾厄,也许是明白铃芽并不是真正意义上的喜欢自己,也许是明白身为神明的职责,这种二选一的剧情,看得还是让人难受的。

说回我认为的真正主题,影片的立意为了纪念地震,众所周知,日本是一个地震灾害多发的国家,自古以来饱受地震的影响。人们时时祈求神明的保佑,影片中提到“思念的重量,能够镇压住这片土地,有些地方已经被人们遗忘了,促使后门被打开。”神明人们的信仰而存在,当被人遗忘了就没法镇压土地,所以要思而复思,时刻感谢日不见之神的恩赐。同时,也要求人们要勇敢面对灾难,永远不放弃对生的渴望。铃芽最后把凳子给小时候的自己作为与过去告别,放下过去的伤痛,回到生活中,去体验爱情(与草太),珍惜活着的亲人朋友(姑姑岩户环),互相帮助有需要的人们(民宿店的千果,酒馆的老板瑠美)。

随手的写的感想,看起来很乱,思路也是乱的,网络上已经有很多人写了很多思路清晰的影评,比如可以看看这两篇影评:

澳门一日行

作者 zguishen
2023年4月28日 00:00

前段时间因为身份证快过期了,要拍照拿回执随便把护照和港澳通行证回执一起做了,顺手把护照和港澳通行证都一起办了。既然拿了护照和通行证,就在小红书查了下几个旅行地方,才发现广州去澳门其实很快,来次澳门一日游居然这么方便!

珠三角的短途客运非常发达,一张往返广州和澳门的大巴车票只要¥49,早上出发约两个小时就到珠海拱北口岸了。出入境都各自需要填一次健康信息,带上通行证就可以进入澳门了。入境前或者进去之后可以换些葡币,如果需要做公交或者其他消费的话,不过大多数情况下都可以用支付宝微信付钱。做公交最好就换点钱,用人民币投币会亏些汇率,白嫖发财车就不用花钱了,不过发财车只往返各酒店和口岸。

第一次去没怎么做准备,主要在半岛乱逛,然后坐发财车到威尼斯人转一下就回家了。

路线:拱北口岸 - 十六浦酒店 - 议事亭前地 - 玫瑰圣母堂 - 大三巴牌坊 - 大炮台 - 澳门博物馆 - 东望洋灯塔 - 渔人码头 - 威尼斯人 - 关闸(拱北)

在澳门交通可以白嫖发财车,吃饭也可以到各大赌场酒店里白嫖,注册赌场会员就会送饭送奶茶啥的,如果只是想填饱肚子就行可以去白嫖,想吃美食还是花钱吧,旅行还是花钱舒服点好。

说到澳门最大的特色那当然是赌场了,我跟着大爷大妈一起进赌场结果被拦下查年龄了,进赌场需要21岁,估计是背个书包太像学生了。威尼斯人里面真的够豪华的,赌的人也够多了,你去赌场免费做的发财车,在赌场里免费的奶茶,其实是这些赌...狗都替你买单了😹。

澳门最著名的景点就数大三巴了,最高建筑新葡京大厦,其他大大小小的景点也非常多。澳门博物馆里面没什么东西,毕竟只是个小地方,历史能讲的东西也少。

打算下次去澳门再去氹仔那边逛逛,不过出境后再次入境需要相隔两个月才能再次入境。

小米R3G 解锁 SSH 和刷 Padavan 及启用 Clash

作者 zguishen
2023年6月6日 00:00

之前用的路由器性能太差了,带宽也太小了,连开个串流都费劲,所以想买个新的。现在的千兆 WiFi6 路由器也都普及了,只是我是一个人住房间小实在用不上那么好的路由器,所以在多多花50几块钱淘了个小米R3G,配置双千兆 + 128M闪存 + 256M内存 + USB3.0,刷机也比较简单,也能用上科学上网插件,足够用了。

要用到的资源的地址:

刷开发版固件

解锁 SSH 需要先刷开发版固件,先到小米路由器官网 - 下载 - ROM,找到对应的开发版固件下载下来(miwifi_r3g_firmware_12f97_2.25.124.bin)。

然后按照以下步骤刷入开发版固件:

  • 开发版ROM 包复制到 FAT 或 FAT32 格式U盘的根目录,并重命名为 miwifi.bin ,同时确保该目录下不存在其它“.bin”文件,若存在会导致刷机失败;
  • 断开小米路由器的电源,将U盘插入路由器USB接口;
  • 按住 reset 键,接通电源,等待指示灯变为黄色闪烁状态后松开 reset 键(大概十来秒),路由器开始刷机;
  • 完成后系统会自动重启。路由器指示灯变蓝刷机完成;如果出现异常、失败、U盘无法读取的状况,会进入红灯状态,建议重试或更换U盘再试。

解锁SSH

小米路由器官网 - 开放 - 开启 SSH 工具,下载解锁 SSH 工具包,记下 root 密码。这里需要绑定小米账号才能下载,PC 浏览器下载无反应的话用手机去下载。

确保工具包文件名为 miwifi_ssh.bin,操作过程同刷开发版,确保U盘只有 miwifi_ssh.bin 文件,断电插入U盘,按 reset 通电黄灯闪烁松开等待解锁完成。

解锁完成就能进入路由器内部系统了,由于固件比较老,如果碰到错误 Unable to negotiate with 192.168.31.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,如果指定 diffie-hellman-group1-sha1 还有错误 Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss,SSH登录指定下加密算法登录:

1
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss root@192.168.31.1

刷入Breed

https://breed.hackpascal.net/ 下载对应版本固件(breed-mt7621-xiaomi-r3g.bin),上传到路由器:

1
scp -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss ~/Download/breed-mt7621-xiaomi-r3g.bin root@192.168.31.1:/tmp

执行命令:

1
mtd -r write /tmp/breed-mt7621-xiaomi-r3g.bin Bootloader

成功后自动重启。

https://opt.cn2qq.com/padavan/ 搜索MI-R3G下载对应固件。

随后将路由器断电,按住小米路由器reset键不放,上电等待小米指示灯开始闪烁,再松开 reset 键,即进入 breed 控制台模式。网线连接访问 http://192.168.1.1 即可打开breed控制台。

刷入Padavan

在breed控制台直接上传 Padavan 固件就行了,刷入成功后访问路由器后台http://192.168.123.1,默认密码是 admin/admin。

高级设置-外部网络(WAN)设置宽带上网。

高级设置-系统管理-服务,启用SSH服务。

扩展功能-搭建 Web环境设置 clash,如果用上 Vision 和 Reality 协议需要选择 meta 内核,然后有订阅的填上订阅地址,自己写配置文件的,点击“点击按钮显示主配置文件”的选项,把自己配置粘贴进去,点击应用本页面配置等待启动。

等待启动成功点击 Web 管理界面就能看到面板了。

Ubuntu 切换集显及碰到的小坑

作者 zguishen
2023年4月14日 00:00

T460p 用到现在已经不太行了,任务繁重些就发热严重,想着把独显禁用减少点功耗发热。

打开 NVIDIA X Server Setting,如果没有的话就安装一下:

1
sudo apt-fast install nvidia-settings nvidia-prime -y

在 PRIME Profiles 选项可以切换性能模式和按需使用模式,单独使用 intel 集显选项是灰色的,可以使用命令开启,执行后重启电脑。

1
2
3
4
5
6
# intel 集显
sudo prime-select intel
# 性能模式,nvidia 独显
#sudo prime-select nvidia
# 按需切换
#sudo prime-select on-demand

重启后就能在 Setting - About 里面看到显卡只有集显了,原先是有独显和集显。

Ubuntu 22.04 的默认显示服务器用的 Wayland,禁用独显后可能会导致输入法启动不起来(中文输入法是用的搜狗),手动执行 fcitx 看到和 Wayland 相关的错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# nathan @ gs-ubuntu in ~ [17:55:57] 
$ fcitx
(INFO-21681 addon.c:151) Load Addon Config File:fcitx-kimpanel-ui.conf
...

(ERROR-21681 ime.c:432) fcitx-keyboard-tr-otk already exists
(ERROR-21681 ime.c:432) fcitx-keyboard-us already exists
auth ok
(ERROR-21681 xim.c:239) Start XIM error. Another XIM daemon named ibus is running?
(ERROR-21681 instance.c:443) Exiting.
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
start
sgim_gd_cell.bin copy fail
No such file or directory: No such file or directory

我也没有深入去看具体什么原因,既然跟 Wayland 有关,那就换成 Xrog 试试,logout 后 login 的界面选择 xrog 登录,输入法恢复正常。

广州的公园

作者 zguishen
2022年12月31日 00:00

说起广州的旅游资源,大多人都不以为然,觉得广州没啥好玩的,更多的是讨论来广州吃什么东西。其实除了一些知名的旅游景点之外,广州有很多公园,也是平常出去活动活动的好去处,适合常住在广州偶尔周末或放假去转转,不过作为旅行路线的就不推荐了。

广州有条徒步路线——广州云道,从中山纪念堂到白云山山脚,连接了很多个公园。

广州云道

这一片地区刚好分布了许多公园,甚至可以把流花湖公园一起连接起来,徒步的时候走个够。

广州公园

不过我自己去过的公园也不算多,以后有时间再去其他公园转转。下面写一些去过的公园的印象。

天河公园

天河公园是去过最多次的公园了,以前在信息港上班的时候就经常午饭过去逛逛。而且我住在附近,夏天有时回去跑步。

天河公园

流花湖公园

流花湖在越秀公园西南方向,里面有个流花东苑艺博物馆,展出的东西全是各种各样的石头,挺好玩的;还有个法兰克福玫瑰园,当时冬天去的不是时候,春夏应该比较好看;另外还有一座白宫风格的酒楼,不过不开放好像也没维护的,看起来比较破败了。

白宫

公园里有很多猫。

流花湖公园的猫咪

越秀公园

越秀公园很大,里面的景点也很多,比如中山纪念堂、五羊雕像、镇海楼(广州博物馆)。

中山纪念堂其实没什么好看的,门票还要10元,里面就是个剧院而已。

中山纪念堂

熟悉的五羊雕像。

中山纪念堂

镇海楼也要10元门票,上次去没进去。

岳麓公园

岳麓公园冬天去拍松林挺好的,可惜我拍了好多都不好看......

岳麓公园

云台花园

门票10元,园中又遍植中外四季名贵花卉。花园旁边还有个白云山索道,可以直接上白云山,上山单程票25元。

云台花园

疫情封控中的生活

作者 zguishen
2022年11月12日 00:00

疫情三年经历的第一次“临时管控”,该来的还是轮到了。

11月8日中午出去丢垃圾才知道牌坊被封住了。

特色水马

当天下雨还要做核酸检测,之后每天都要做,今天还用无人机喊人下楼做核酸检测,属实难绷......

雨中排队

看到淡出社会视野多年的所谓供销社,封控中外卖和买菜依然能够送到网格物资保障点自己去拿的。

物资保障点

更新:11月16日解封。

❌
❌