初心易得,始終難守
C'est la vie.© 2002 - 2026
  • 我是誰-Who Am I
  • 我在哪-Where Am I
  • 我是什麼-What Am I
  • 年鑑-YearBook
    • 二零零六年终总结
    • 一吻定情—二零零八年年终总结
    • 突如其来的明天—二零零九年年终总结
    • 人生大起大落得太快——二零一零年年终总结
    • 贰零①①年年终总结-女朋友已经成家了
    • 贰零壹贰年年终总结-奔波的肿瘤
    • 贰零壹叁年年终总结
    • 雪字怎么写-贰零壹肆年年终总结
    • 每个不曾表白的今天,都是对青春的亏欠-贰零壹伍年年终总结
    • 按部就班的IT 人生-貳零貳肆年年終總結
  • 連結
RSS
4 月 19 日, 2025 年

斷斷續續看完了《生死場》

Ken 随笔 0 Comments

我想蕭紅的獨特應該是在於,他沒有那麼左。

花了大概20天的時間,斷斷續續看完了《生死場》,因為語言帶有那個年代的特徵,台灣的版本不像中國的版本竄改了許多當時的語言,使得我讀起來頗費一些心思去想到底是什麼意思,還有一些口語又沒那麼口語化,使得我揣測東北人講那句話的口氣,但就還好,因為罵人的言語也不過那麼幾句。

魯迅作序並不是什麼好事,畢竟他弟弟在文學方面的成就比他高得多,充其量算是個現在的公知,就像很多人說的,還好他死在了舊社會。

《生死場》中對於底層民眾的描繪有獨特的地方,因為有一些場景竟然是我想像不到的,例如月英的綠色牙齒,其他的描繪,或多或少算是見過一些。我並不認為最後幾個章節對於滿洲國的描繪是他人生中的體驗,因為看起來沒有深度,更像是為了迎合當時的抗日潮流而寫就的一些文字,我並不是說日軍沒有作惡,而是那些道聽途說的作惡多端和前面對於生死的描繪,比起來顯得事不關己。

而其中關於地主階級對農民殘酷壓榨的描繪,更顯得突兀,如果基於小說本身的衝突效果,當然沒問題,但這和《呼蘭河傳》中關於地主爺爺對待租戶的的描繪完全兩極,而《呼蘭河傳》是他在人生歲月的最後完成,我當然願意相信後面的作品更接近他短暫人生中的真實。

比起來陸老師強力推薦的《邊城》聽起來更像靡靡之音啊……

4 月 17 日, 2025 年

將WordPress 的Redis plugin 配置為使用AWS ElastiCache redis cluster

Ken Tech 0 Comments

這個plugin 已經存在很多年,一直以來我都使用single node 的方式,因為wordpress 的cache data 從mysql 取一遍沒有太大的難度,但是對於高負載的網站來說,這總是不合理的。

而single node 有他壞掉後就要從database reload data 的問題,雖然眾多的雲端服務商提供了failover 的機制來避免node 壞掉不可用的問題,但難免會有某些網站需要大量的寫入,比如wordpress.com這樣的。

這個plugin 應該很早就支持cluster 的方式了,只不過我從來沒注意過,而他的github 又語焉不詳,我想他可能是想要賣他的pro 版本。

嘗試了一下,有一點需要注意的地方:

single node 方式支持tls,但cluster mode 不支持tls,所以elasticache serverless 不行,因為serverless 的tls 無法關閉,只能是self design cluster mode enabled。

我認為作者在這個地方隱晦的表明了這一點,雖然他沒有直接講出來。

用如下的方式配置wp-config.php 即可。

/**wp redis object cache*/
define('WP_REDIS_CLIENT','pecl');
define('WP_REDIS_CLUSTER', [ 'tcp://valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379',] );

那麼php session 呢?

修改php.ini 原來的配置,如下兩處,

;session.save_handler = redis
session.save_handler = rediscluster

;session.save_path = "tcp://valkey.0001.apne1.cache.amazonaws.com"
session.save_path = "seed[]=valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379"

一個有用的測試session 的script

<?php
//simple counter to test sessions. should increment on each page reload.
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;

$_SESSION['count'] = ++$count;

再看看ElastiCache 裡面有了沒,雖然不應該用keys command ……

valkey-cluster.clustercfg.apn3.cache.amazonaws.com:6379> keys *PHP*
1) "PHPREDIS_CLUSTER_SESSION:d9uv2emobrcmpc7g5fk7bduqgq"
2) "PHPREDIS_CLUSTER_SESSION:d30c1t3kln5df0uij8f7gqibnt"
3) "PHPREDIS_CLUSTER_SESSION:bh5buktvsumi1k6j7hcpjcil6c"
4) "PHPREDIS_CLUSTER_SESSION:3s6jagi622rt0nqdof9i1otd09"
5) "PHPREDIS_CLUSTER_SESSION:fq6tnls1dcfv0bspljq9j2k5i4"
6) "PHPREDIS_CLUSTER_SESSION:1p1ajkvr641cp99edm9cm74o6s"

2025-08-22 update

糾正我的錯誤,這個plugin 是支持ElastiCache serverless 的,wp-config.php 中可以按照如下配置:

/**wp redis object cache*/
define('WP_REDIS_CLIENT', 'pecl');
define('WP_REDIS_HOST', 'valkey.serverless.apn3.cache.amazonaws.com');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_SCHEME', 'tls');
define('WP_REDIS_DATABASE', 0);

2025-11-16 update

我不是很確定可以使用ElastiCache serverless 是因為我的配置下他還沒有進行scaling,只有一個master 和一個slave,效果等同於主從複製模式,如果存在多個shards,是否還可用,能否正常跳轉?

valkey-serverless:6379> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:2
cluster_size:1
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
total_cluster_links_buffer_limit_exceeded:0

okay,我創建了一個多分片的集群,實驗證明,這個plugin 看起來無法處理MOVED,之所以可暫時使用ElastiCache serverless 是因為他只有一個shard:

wp redis status
RedisException: MOVED 12096 valkey-cluster.cache.amazonaws.com:6379 in /home/www/bbken.org/wp-content/object-cache.php:1934
Stack trace:
#0 /home/www/bbken.org/wp-content/object-cache.php(1934): Redis->get()
#1 /home/www/bbken.org/wp-content/object-cache.php(193): WP_Object_Cache->get()
#2 /home/www/bbken.org/wp-includes/functions.php(1779): wp_cache_get()
#3 /home/www/bbken.org/wp-includes/load.php(939): is_blog_installed()
#4 /home/www/bbken.org/wp-settings.php(176): wp_not_installed()
#5 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1374): require('...')
#6 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1293): WP_CLI\Runner->load_wordpress()
#7 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(28): WP_CLI\Runner->start()
#8 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/bootstrap.php(84): WP_CLI\Bootstrap\LaunchRunner->process()
#9 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/wp-cli.php(35): WP_CLI\bootstrap()
#10 phar:///usr/local/bin/wp/php/boot-phar.php(20): include('...')
#11 /usr/local/bin/wp(4): include('...')
#12 {main}
Error: Error establishing a Redis connection. To disable Redis, delete the `object-cache.php` file in the `/wp-content/` directory.

2025-11-17 update

但是經過AI 對於source code 的分析,以及我的反覆測試,如下的配置實際測試可以使用:

/**wp redis object cache*/
define('WP_REDIS_CLIENT', 'phpredis');
define('WP_REDIS_CLUSTER', [
    'tls://clustercfg.valkey-cluster.cache.amazonaws.com:6379',
]);
define('WP_REDIS_SSL_CONTEXT', [
    'verify_peer' => false,
]);

從CloudWatch 的指標看起來,三個節點中都有讀寫keys,沒有問題,完美。

4 月 10 日, 2025 年

日漸破敗的鄉下故居

Ken 随笔 0 Comments

一年後的又回鄉一個星期,洗手池的下水管路排水管壞了,廚房的排風扇壞了一些,像要散架的樣子,地板有幾塊鬆動,浴室門口的開關面板按鈕壞了幾顆,搖搖晃晃的還搭在上面,掉了一顆,我把它撿起來又扣回去,花壇裡面的植物可能還沒到夏天,看起來並不茂盛,也沒有要瘋狂生長的樣子。

露台遮雨棚外沿排水槽的鐵皮被雨水侵蝕到破了洞,一下雨就瀝瀝拉拉,雨大的時候,形成一股很大的水流,滴到地上往回濺到快要到門口。

把媽咪做的酵素又倒了不少,扔了大概五六瓶,幺姥說她要,但是她又不來拿走,反而是各種雜物越堆越多。

今年的清明依舊是下雨的,不過比起來是小得多,山上的小路都沒有濕,每年清明去買花,都會有人說啊在下雨,我心想哪一年清明不下雨,年年清明都在下雨。

父母的墳頭略顯單調,因為尚未立碑,於是在網上買了一些小花的種子,撒在上面,不知道明年會不會看見有花長出來,花錢買他家田地做墳的那個叔叔,似乎也沒有認真整理這些立在他們家田頭的墳地,堆了一些植物的竿子在墳前,明年清明我應該帶上打火機去把這些燒掉,還應該買一個金紙桶。

乘著這中間的間隙,把《呼蘭河傳》重新看了一遍,應該把陸老師強力推薦的《邊城》看完才對,看了這麼久,還只看到剛開始擺渡。

葳君推薦了《白夜行》給我,說是裡面有看到我的影子,等我看完再說罷。

高鐵的前面坐了一個漂亮妹紙,睡著睡著毛衣袖子掉了下來掃地板,我給她甩了上去,她睡著睡著又掉了下來掃地板,我又給她甩了上去,當他第三次掉下來的時候,我想,罷了,大概這件毛衣注定是要掃地板的吧,雖然這是一件淘寶要價1500人民幣的毛衣。

她要是不漂亮,我是肯定不會去撿起來甩上去的。

小又說重慶的天氣算是最好的時候,前幾天太冷,再過兩天就太熱,她的伴侶一如既往的為著眾人的開心而逗樂,貓兄和豪哥看起來很好,亦或是不明不白更為快樂。一起吃了一餐更像是廣東海鮮火鍋的東西,我也說不出來更像什麼,花膠雞椰子雞這種東西應該是廣東菜。

從鄉下帶了一大包瓜子,在Hotel 的時候一邊看書一邊嗑了一些,於是帶上飛機,快要落地的時候,空姐廣播說,請勿攜帶任何食物入境,如有攜帶請交給他們處理。

我心想,你們是不是想吃我的瓜子。

但終於我還是沒有把瓜子帶回台北,因為落地的時候我上網搜索了一下,瓜子屬於種子類,不能帶,只好把他塞進了座椅前面的置物籃,走到檢查點的時候我就後悔了,應該帶下來問問。

杰妹在全球各地跑馬拉松,發來照片,然後問我,Guess where I am,我心想,哎,你是不是攀岩摔太多把腦子摔傻了?

4 月 9 日, 2025 年

Security group 的conntrack 問題

Ken Tech 0 Comments

在AWS 上創建的EC2 有一個奇怪的問題,似乎是由於Security group 的conntrack 造成的,即使修改為允許所有UDP 流量也不行。

當self-hosted ipsec-vpn 和地端連結建立後,此時從地端無法ping 通雲端,也無法開始傳輸,但tunnel 已經建立,看狀態都是正常,

當從雲端的EC2 對地端發送一個ping 包之後,流量才開始傳輸,也就是說,首發流量必須由EC2 發起。

問題是否真的由security group 引起我沒有確認,因為我沒有什麼頭緒,但首發流量由EC2發起就能解決,看起來就是security group 的問題。解決這個問題倒是簡單,ping 一下。

在VPC 內使用VPN 服務建立的ipsec tunnel 則沒有這個問題,當然,由於那是managed service,我們不能明確AWS 到底在裡面搞了什麼,說不定他也是在底層的EC2 上ping 了一下。

所以問了AI,寫個定時ping 的script

sudo vi /usr/local/bin/multi-ping.sh

#!/bin/bash

# List of hosts to ping
HOSTS=(
    "10.1.1.2"
    "10.1.2.2"
    "10.1.3.3"
)

# Ping interval in seconds
INTERVAL=60

while true; do
    for host in "${HOSTS[@]}"; do
        timestamp=$(date '+%Y-%m-%d %H:%M:%S')
        ping -c 1 $host | while read pong; do
            echo "[$timestamp] $host - $pong" >> /tmp/multi-ping.log
        done
    done
    sleep $INTERVAL
done

然後創建一個service

sudo vi /etc/systemd/system/multi-ping.service

[Unit]
Description=Multiple Host Ping Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/multi-ping.sh
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

啟動他

sudo systemctl daemon-reload
sudo systemctl enable multi-ping
sudo systemctl start multi-ping

看一下log

[2025-04-03 00:44:25] 10.1.1.2 - 64 bytes from 10.1.1.2: icmp_seq=1 ttl=63 time=48.9 ms
[2025-04-03 00:44:25] 10.1.1.2 - 
[2025-04-03 00:44:25] 10.1.1.2 - --- 10.1.1.2 ping statistics ---
[2025-04-03 00:44:25] 10.1.1.2 - 1 packets transmitted, 1 received, 0% packet loss, time 0ms
[2025-04-03 00:44:25] 10.1.1.2 - rtt min/avg/max/mdev = 48.931/48.931/48.931/0.000 ms
[2025-04-03 00:44:25] 10.1.3.3 - PING 10.1.3.3 (10.1.3.3) 56(84) bytes of data.
[2025-04-03 00:44:25] 10.1.3.3 - 64 bytes from 10.1.3.3: icmp_seq=1 ttl=63 time=301 ms
[2025-04-03 00:44:25] 10.1.3.3 - 
[2025-04-03 00:44:25] 10.1.3.3 - --- 10.1.3.3 ping statistics ---
[2025-04-03 00:44:25] 10.1.3.3 - 1 packets transmitted, 1 received, 0% packet loss, time 0ms
[2025-04-03 00:44:25] 10.1.3.3 - rtt min/avg/max/mdev = 301.351/301.351/301.351/0.000 ms
3 月 27 日, 2025 年

原本以為美國公司不會這麼賤,沒想到

Ken 随笔 0 Comments

Plex 宣佈從4月份開始要漲價,OK,這我還好,因為我從來沒有用到他要收費的功能。

然後他宣佈說以前免費的功能現在要收費了。

WTF?

使用Plex 已經八年,從最早放在Macmini 上的Media server 到現在的esxi vm,除了看電影,聽歌,似乎沒有用到他那些華而不實的收費項目,但是,他現在要對通過internet 的 streaming 收費。

這就很奇葩了,擺明就是要宰你們這群養肥的豬崽嘛。

恰好兩個月前給丈母娘家的AppleTV 開了共享,而且是over the internet ,簡單來講並不是沒有解決方法,如果丈母娘家裡有網路,那麼可以通過防火牆上的vpn 來streaming ,也就沒有internet stream 什麼事,問題是他們家裡沒有固網,要看的時候才會連上手機網路,這就變得複雜了。

所以只好買了Plex pass,lifetime 119.99$。

最近又匆忙看完一本書,《前線島嶼:冷戰下的金門》,以口述歷史的方式呈現,作者是一位加拿大漢學家,這本書主要描述自1949年以來金門島上的變遷,雖然大多數的場景下國民黨軍隊和共產黨軍隊在對岸做的並沒有太多區別,但軍中樂園為軍營之外的民眾特別是婦女所帶來的正面意義是我從未去思考過的問題,又比如兩次砲戰中民眾需要在入夜後使用厚窗簾遮蔽燈光以免對岸的共軍發現燈光而傾注砲火,在如此近的距離,確實也是難以想像的場景。

也許對於西方世界的讀者來說五零年代金門島上發生的一切,諸如沒收門板,要求民眾上繳轉頭,無償進行軍事訓練,看起來充滿軍政府的強權,但對於出生於共產國家的我來說,這一切都沒有那麼陌生,還記得幼年居委會主任多次上門來每家每戶收取5毛錢的軍費,一張小小的薄紙片,上面寫著類似於支援人民子弟兵還是人民解放軍之類,雖沒有軍費之實,但連我在幼年都能理解的程度,相信成年人不會不能理解,當時的5毛錢算不算多,我已經不太記得,應該是不多的吧,要不然媽咪應該會唸很久,然而,那已經是八零年代,就如同我時常和Miley 講的,中國整整落後於台灣甚至於整個世界一個世代。

共軍在金門遭受的挫敗是因為他們以前沒有這樣的作戰經驗,而並不是因為國軍的勇猛,以現有的史料來看,兩邊的軍隊都是烏合之眾,完全取決於指揮官的英明決策,共軍沒有繼續發起奪島無非是因為他們真的打不下來,書中認為是共軍在試探中美共同防禦條約的簽訂是否會真的會實施於金門島,而蔣中正則部署了遠超過金門島防禦所需的軍隊在島上。

至於作者揣測的,毛澤東認為中美共同防禦條約並無包含金門和馬祖,如果奪取兩個島嶼,將徹底造成兩個中國或一中一台的事實。可以理解這種猜測的合理性,但是毛澤東可能也低估了蔣中正反攻大陸的決心,雖然這份決心其實是被蔣中正的自尊或是六十幾萬國軍裹挾的。

地緣政治在金門島表現得淋漓盡致,今日的金門島我還沒去過,但如果是出自於金門人的角度,我想他們應該會持有和台灣人不一樣的看法。

«‹ 4 5 6 7›»

過 客

  1. R2 on 卷進了美商5 月 15 日, 2024 年

    终于回来了,好。

  2. Ken on Mommy最後的樣子11 月 6 日, 2023 年

    也沒有很久吧,最近終於閒下來

  3. R2 on Mommy最後的樣子10 月 26 日, 2023 年

    好久不见

  4. Ken on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    哈哈哈,祝福你,好人一生平安

  5. liu on 天朝Loli控组曲(带歌词,修正版)10 月 12 日, 2023 年

    hello,我在找天朝lolicon组曲时发现了你的博客,感谢你十四年前做出的贡献,祝一切安好

December 2025
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031  
« Nov    

Spam Blocked

101,956 spam blocked by Akismet

↑

© 初心易得,始終難守 2025
Powered by WordPress • Themify WordPress Themes