青山七惠 – 命运的长线

最近的确是看青山七惠的书比较多。这本《命运的长线》是她想转型的第一部长篇作品。全文有些晦涩,我做不到像女主那样一而再再而三的抛下身边的人去寻找那个童年的分身,这也许就是小说和生活的区别吧。一些摘录记录与此。

在这种路途上,不管是认识的人,还是不认识的人,最好是和某个人在一起。因为独自一人面对移动的风景,是一件令人颇为伤感的事情。不过,寂寞这家伙一向是这样不期而至,往往会发突然发觉只有自己一个人。

人与人的邂逅真是不可思议啊。往往会由于非常偶然的机遇与人相识或错过,并且会由于那一瞬间偶然而改变一个人漫长的一生。

迄今为止、无论怎样的孤独我都自己一个人忍受过来了。而且我赢了。但是我永远也赢不了你的爸爸。我希望你慎重地选择你今后的人生。

我走在一条不知是往上去,还是往下去的平坦而单调的小路上……有时我觉得永远抵达不了下一个山顶,有时又觉得根本不想走到下一个山顶。无论前方出现多么美的景色,无论耸立着怎样壮丽的楼阁,我已经没有了以往那样在短暂的安宁之后,去忍受那无尽的等待带给我的巨大失望的心力了。我所期盼的只有一个,那就是脚下的路走到了尽头,再也没有路可以走呢。

青山七惠 – 我的男友

时隔几年后又恢复了在飞机上看书的习惯。过去的几个月里不停往返于太平洋两岸,尽管每一次的心绪都不同,但慢慢又回到了在万尺高空才有的一种平静。周围没有认识的人,而大家的缘分也就仅限于这十几小时的飞行。

青山七惠的书我似乎都买齐了。搬家之后翻出好多本至少买了3年以上又从未打开的书。决定在看完这些书之前不再买新书,把书籍总数控制在一个书架可以装下的范围。

读这本书的时候有很多瞬间会把自己带入主人公的角色,除了没有主人公矫健的身材和出众的外貌外,那种对人提不起戒心和容易付出情感单纯地想为对方做些什么的缺点一应俱全。甚至连那种不停地奔波又不知道自己下一站的终点在哪里都是一模一样。

以下是一些书中内容的摘录

我觉得,我应该有另一种人生。可这另一个我,也会想:我还有另一个人生吧…

所有的一切都是重复。一旦被谁挽救,从那一瞬间就必然寻求下一只挽救的手。咒语循环往复。这样一来,只要还活着,最终必得寻找制止这种反复的决定性的人吧。手上的药不会一直对自己有用,就只能寻找那只施予药的手吧。

此刻,漫长的时间跟几千个夜晚的无数祈求一起,再一次在点点身上掠过。想奉献缺无法奉献的柔情,失去目的地,未启封就丢弃的柔情,再次聚拢到她手上。

每个人的喜好,都不是自己能够选择的,最终是小时候一起长大的人、家、附近环境无形中决定的。这就是说,成长于什么人中间、什么地方,决定了那个人之后的人生选择,无论个人怎么觅得对象建立新家庭,被人家植入了喜好的那个人,最终还将建立起同样的家庭。就说我自己,终于脱离那个家的圈子,跟丈夫一起独立成家了,但实际上也不是过着自己选择的生活,而是宿于我身体之中的那些人选择的生活。

刷新Mellanox ConnectX-3 40G网卡固件

最近为了升级机房服务器 买了一块Mellanox MCX354A-QCBT ConnectX-3网卡。默认的固件是InfiniBand的,所以在把它当成40G QSFP网卡用之前需要把它刷成同系列FCBT版本的固件。

  1. nVidia官网下载固件工具 mst https://network.nvidia.com/products/adapter-software/firmware-tools/
  2. 同样是官网下载固件 https://network.nvidia.com/support/firmware/connectx3ib/ 这里我选的是 MCX354A-FCBT的固件。注意这里的PSID 是 MT_1090120019 后面还会用到这串字符

安装固件下载工具后首先确定卡的device id,可以用 ls pci 也可以用 mst status

# mst status
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module is not loaded

PCI Devices:
------------

03:00.0

这里 03:00.0 就是device id

接下来先备份卡上的旧配置和固件以防万一

flint -d 03:00.0 query full > flint_query.txt
flint -d 03:00.0 hw query > flint_hwinfo.txt
flint -d 03:00.0 ri orig_firmware.mlx
flint -d 03:00.0 dc orig_firmware.ini
flint -d 03:00.0 rrom orig_rom.mlx
mlxburn -d 03:00.0 -vpd > orig_vpd.txt

备份过后可以刷新新卡的固件

$flint -d 03:00.0 -i fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin -allow_psid_change burn

注意这里我们要改变卡的PSID (即我们把一块QCBT的卡刷成FCBT)程序会问你 You are about to replace current PSID on flash - "MT_1090120018" with a different PSID - "MT_1090110019". 这里的 MT_1090120019 就是前面我们下载固件时候同样的PSID

刷卡的过程很快。刷完后记得还要把卡的link改成Ethernet

mlxconfig -d 03:00.0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2

这里 2 就是指Ethernet, 1是InfiniBand。改完后可以用 mlxconfig -d 03:00.0 query 查看新的状态

# mlxconfig -d 03:00.0 query

Device #1:
----------

Device type:    ConnectX3
Device:         03:00.0

Configurations:                                      Next Boot
         SRIOV_EN                                    False(0)
         NUM_OF_VFS                                  8
         LINK_TYPE_P1                                ETH(2)
         LINK_TYPE_P2                                ETH(2)
         LOG_BAR_SIZE                                3
         BOOT_PKEY_P1                                0
         BOOT_PKEY_P2                                0
         BOOT_OPTION_ROM_EN_P1                       True(1)
         BOOT_VLAN_EN_P1                             False(0)
         BOOT_RETRY_CNT_P1                           0
         LEGACY_BOOT_PROTOCOL_P1                     PXE(1)
         BOOT_VLAN_P1                                1
         BOOT_OPTION_ROM_EN_P2                       True(1)
         BOOT_VLAN_EN_P2                             False(0)
         BOOT_RETRY_CNT_P2                           0
         LEGACY_BOOT_PROTOCOL_P2                     PXE(1)
         BOOT_VLAN_P2                                1
         IP_VER_P1                                   IPv4(0)
         IP_VER_P2                                   IPv4(0)
         CQ_TIMESTAMP                                True(1)

重启机器后 ip link 就能看到新的2个ethernet端口。同时 mst status -v 也可以告诉你新卡的端口

# mst status -v
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module is not loaded
PCI devices:
------------
DEVICE_TYPE             MST      PCI       RDMA            NET                       NUMA
ConnectX3(rev:1)        NA       03:00.0   mlx4_0          net-enp3s0d1,net-enp3s0   0

到这里整个刷卡过程就顺利完成了

Aruba Mobility Conductor 配置

删除所有旧配置

 # write erase

先配置远端的MCR 再配置本地local controller。在远端MCR的Configuration – Controllers – Add Mac based PSK 加入本地local controller的Mac地址(设备标签上有)并配置IPSec Key

本地local controller同样删除旧配置。第一次启动选择

Switch Role=md
Conduct Switch Type=MCR
Conductor switch Authentication method (PSKwithIP|PSKwithMAC) = PSKwithMac
Enter Conductor switch MAC address: # 这里是远程mcr上的mgmt口Mac地址,可以通过show switchinfo查看

重启后应该可以在远端mcr上运行 show switches 看到本地local controller。之后配置无线网络需要注意的地方有

Configuration – System – Profiles

  • Wireless LAN – 802.11k – default – Advertise 802.11k Capability
  • Wireless LAN – 802.11r – default – Advertise 802.11r Capability
  • RF Management – 2.4 GHz radio – default – Advanced – Advertise 802.11d and 802.11h Capabilities
  • RF Management – 5 GHz radio – default – Advanced – Advertise 802.11d and 802.11h Capabilities

2022年的新马泰 之三

新加坡吃喝一番后就准备登机去吉隆坡。入境程序MySejahtera的坑上一篇已经提过了,另一个坑就是廉航Scoot。这是我第一次搭乘这家廉航去马来西亚。总而言之一句话,命只有一条,下次还是避免坐这家航司。

吉隆坡机场在IATA的代号是KUL,在本地一般会写成KLIA和KLIA2,其实就是一个Terminal 1一个是Terminal 2。这个KLIA2 是亚航Air Asia运营的,其中只有少量航班是Scoot酷航执飞。少到什么程度呢?就是机场里没有Scoot的Kiosk,在这个登机要检查疫苗证的年代就只能大排长龙去柜台checkin换登机牌了。

KLIA2作为廉航的航站楼自然从抵达就透露出一股廉价气质。机场大厅有空调,洗手间就靠一个大风扇降温。也不要指望有什么商店可以逛或者吃饭了。一旦过了出境检查基本上就只有一些廉价纪念品巧克力糖果柜台了。在出境前还有一家叻沙面店可以一吃。并且机场的安检水平让我脑子里只能飘过安拉胡阿克巴几个字。

从KLIA2到市区可以搭乘KL Express 也就是机场快线。但是,这个价格其实并不厚道。机场快线到市区终点站KL Sentral是55RM (令吉,下文同)一个人,Grab打车算上过路费一辆车也就75RM(其中车费65,过路费10)所以但凡有两个人的话肯定是打车划算。机场和KL Sentra有卖一种包含2天无限次地铁外加机场快线的乘车卡,单程机场快线是110RM,往返150RM。这个其实也不划算因为Grab打车实在太便宜了。

说到Grab打车,吉隆坡是我遇到的第一个必须支付方式选Cash才能打到车的东南亚国家。一旦选择了信用卡支付就会出现周围无车可用的窘境。反复A/B测试确认这一点后接下来的几天都是用的现金支付。Grab好处在于叫车的时候已经给了一个最终价格,哪怕中间遇到交通状况堵车也不会涨价。大多数情况下单程就8RM,极少数跑得远的才出现12RM。鉴于现在的美金汇率和7月份亚洲的炎热天气,实在是找不到不打车的理由。

吉隆坡吃了几家网上评价不错的馆子。其中Fish Market Restaurant是最贵的,这家我认为最值得的还是白灼虾,点了500克差不多是70RM。辣椒蟹有点贵并且口味上和新加坡的不一样,吃口更偏甜一点。我认为这家就盯着白灼虾点就行了。这家的消费水平肯定是远超当地平均饭局的(还是比美国便宜)

China Town的葡萄牙烤鱼 Portuguese Grill Fish 的鱼量并不是很大,虽然价格也不贵。属于尝鲜还可以(毕竟这鱼种在美国没见过)但是味道并没有特别突出。

蒥香海鲜饭店的菜很便宜,菜单直接写在墙上。不知道这个南乳佩佩猪会不会给小朋友带来心理阴影。虾酱炸鸡翅味道不错,铁板鱿鱼虾样子看起来乱糟糟但是味道挺好

铁板鱿鱼虾 样子挫但是味道挺好的

在Pudu附近的等记鱼头米粉 Little Eat Shop 是一个意外的亮点。本来并不在安排的吃单上,在看了一个马来本地华人的网页后决定去试一试,没想到意外地好吃。鱼汤底里加入了老姜和花雕酒 非常鲜美而且不腻。这家店周二至周六7am-2pm营业。鱼头米汤粉仅限周二,周五,周六。地址是 238, Jalan Beruang, Pudu, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur, Malaysia.

我吃过的最好吃的鱼汤米粉 没有之一

这次运气比较不好的地方在于附近的王美记 Restoran Wong Mei Kee 临时关门了,据说那家的脆皮烧肉很不错 需要开门就霸门的水平。

最后一天临走前去了ICC Pudu 这个大型室内food court。注意这边的商店大多数6am就开门然后下午1pm左右关门。要吃得趁早上来。这里列举几家吃过的觉得不错的摊位

G-20 档位的姜酒米。有点类似于之前的鱼汤米粉,不同之处在于加了大量的姜,煎鸡蛋和鲜虾。黄酒的味道会更重一些,头几口可能觉得口味太重,很快就适应了。感觉如果有点鼻塞感冒的话吃上一碗肯定能治好

姜酒米

G-29 档位的黄酒煎鸡包(此处无图)这个铺位也卖流沙包,可以和煎鸡包混着和买。一盒4个6 RM

档位忘记了的瓦堡咖啡 喝起来的感觉和越南咖啡很接近,偏甜,很香。这块牌子也是亮点

瓦煲咖啡

档位不明的特色潮州蒸大板 (是的,我没打错字,是板)是河粉加了鲜虾番茄,口感有点酸辣(但是不重)非常鲜美爽口

特色潮州蒸大板

一个人的胃口终究是有限的,网上其他人推荐的炸糕,咖喱云吞面就实在吃不下了。

最后需要吐槽下Scoot这个廉航(已经加入黑名单)一个小时不到飞机硬生生在线修飞机延误了两个小时。从登机完成开始修,一开始还没修好。广播让大家不要慌,表示已经从其他航站楼调了配件过来继续修一定能修好的。这时候我已经开始研究如果修不好了如何转乘地面交通回到SIN以赶上后续的飞机。最后两个小时才把飞机修好,直接导致我错过了Changi机场所有的正经饭点(10点基本上吃饭的地方都关了,只有24小时辣鸡快餐)

这个锈蚀斑驳的机翼就是我坐在座位上百无聊赖的时候透过舷窗拍的。这还是一架787,从上市时间来看能锈成这样得有多疏于保养。虽然这点锈迹不影响飞行,但是看得见的地方都这样马虎,你敢相信看不见的地方他们会做得更好?

Scoot一生黑,这机翼锈蚀成这样

2022年的新马泰 之二

一方面是为了今年的保级任务,另一方面也是为了尽快在7月底之前用掉UA的升舱点(没想到后来UA非常厚道地给延期到了明年1月)订了去SIN的机票,又因为考虑到新加坡的食宿价格略贵(尤其是这个夏天)中间去了吉隆坡“避难”了几天。

航线还是经典的SFO-NRT-SIN 因为日本疫情管制继续无法入境日本,成田机场的餐馆和商店关了一大半。机场卖写真集的书店和京辰寿司店都关门了,最后只能在ANA lounge吃个免费拉面和咖喱饭。

SIN入境需要提前填写SG Arrival Card (替代了传统的纸质入境卡)可以在网页或者MyICA Mobile这个iOS/Android App上填写。手机软件的好处就是可以保存个profile方便下次再填写的时候少输入一些个人信息。这个系统一次性允许添加3段trip,但这个功能毫无用处 因为只能选择入境前3天的时间。正常人谁会在3天里反复入境(后来还真的差点发生了,下文再叙)填写SG Arrival Card后会收到移民局ICA发来的确认信,登机前值机柜台会要求看一下这个确认信。入境的时候并不要求出示,入境也不再有入境章。在这本护照第一次入境时会被要求录入指纹和照片。在此之后可以使用自动门来自助出入境新加坡。(仅限发达国家护照,猪肝红需要有5年多次往返签证才能用自动门)这个自助出入境的设备反应速度有点慢,每次扫描护照后要有一个明显的查询等待时间,之后拍照人脸识别的过程也有明显的迟滞。和Global Entry比起来差距不止五倍。

马来西亚方面入境有点坑,按照移民局的guideline需要在MySejahtera这个手机App上填写一大堆的信息包括上传疫苗证明。但是在实际操作中不管是值机还是入境都没有任何人过问这东西。我不认为政府的系统先进到直接按照护照号自动绑定,唯一的解释应该就是这系统已经不强制了。另外马来西亚有没有对猪肝红恢复落地签还有争议,建议猪肝红持有者不要挑战还是提前办好签证。

另外一个插曲就是成田飞新加坡的航班上感觉加拿大和美国护照持有者占了一大半,数量上远超新加坡护照。(登机前排队挨个检查护照和疫苗证明大家都把护照拿在手里,通过封面颜色上很容易判断)

在新加坡的几天里总算吃到了2017年就列入吃单的永成餐室和天天海南鸡饭。两家都只收现金(和本地扫码支付,游客没法用)永成附近有一家医院有提供ATM机,但是那台机器强制收取6%的汇率转换费比较坑。建议提前换好足够现金。

黑胡椒蟹 两只起售 胃口小的建议呼朋唤友一起来

天天海南鸡饭在Maxwell food center 这地方靠近China Town,可以吃完在附近顺便再吃个田鸡粥。

吃完后还有余力于是走到China Town后门的长城砂煲田鸡粥又来了一份田鸡。

吃完田鸡粥出门又在转角发现了“了凡油鸡饭”,就是那家被亚洲米其林褒奖的油鸡饭(在曼谷Terminal 21里也有分店)但实在无力继续吃了

酒足饭饱之际也就差不多要登机去吉隆坡了

2022年的新马泰 之一

疫情在家待了2年多没有坐飞机,一度发展到在家播放ANA登机音乐 Another Sky 和United的 Rhapsody in Blue 来平衡情绪。随着今年夏天各国逐渐放松入境管制,一年一度的1K保级任务又重新提上了日程。随着UA的定级标准从PQM改成PQP 难度也上升了不少。当年那种PVG-BOS 4个往返即可1K的日子再也不复返了。现在比较经济的做法只有从北美绕着飞去亚洲Hub往返,最好还得找PE的仓位。于是就有了这个90年代出国旅游大热目的地“新马泰”的安排。

首先是5月飞的泰国,还是BKK机场。飞机降落入境就感觉到了萧条。本来是人挤人的落地签证处门可罗雀。主要原因是主力落地签游客来源中国大陆的防疫管制导致大陆人无法方便出游,而欧美游客又不需要签证于是这个落地签窗口就根本没人排队。这段线路是用了AA里程兑换的Japan Airline头等舱。这次JAL的头等缩水很严重,餐食水平下降连带着服务也下降了(酒杯的酒每次都要提醒了才会给续杯)因为有头等的登机牌所以落地后直接走了priority lane来快速入境。现在商务头等已经不发快速入境卡了,靠登机牌可以走priority lane。

泰国的入境政策在5月还需要提前填写Thai Pass并且等一两天审核后给发个二维码的确认信。这个确认信在登机和入境的时候都有人检查,疫苗记录在填Thai Pass的时候需要上传。对于完全接种(两针pfizer)人士不需要隔离(5月之前第一晚需要在隔离酒店等待PCR测试结果确认negative前不能出去)

抵达BKK入境然后照常grab打车去酒店,一切安顿好后已经是半夜了。出门想去找点吃的结果无功而返。曼谷市的Covid政策规定酒吧11点关门,饭店2am关门。路边的移动摊贩也早就收摊了,于是第一晚就在饥饿中度过。

在曼谷的几天因为还是照常上班,所以上午除了吃个早饭外基本就是补觉休息。5月的曼谷还需要在室外也长期佩戴口罩。这个季节的亚洲这样做还是非常闷热,路上行人大多遵守规定,只有欧美游客不以为然。几天的时间里给人的感觉就是一片萧条,路上的人少了,商店里的购物客少了,就连四面佛那个路口都冷清了起来。这次完全没有参观任何的景点,只是照常吃了固定项目 辣椒腔骨和猪手饭。腔骨那个火车市场还搬了个地方。

新地址在 Jodd Fairs
+66 92 713 5599
https://maps.app.goo.gl/LuSwMcj3DJEVeuG1A

这次吸取教训没有要最大份的

猪手饭换了新的桥洞下的餐厅

回美国的时候因为当时美国入境还需要当天或-1 天的Antigen测试报告 于是在机场门口找了个相对便宜的测试点,报价550泰铢 (同样内容在市中心是2000泰铢)测试点门口写着up to 1小时出结果着实把我吓了一跳,还好最后差不多10分钟就给了盖章的纸质证明。上面还带一个QR code 扫描后是链接到医院的一个网页 证明这个姓名+护照的人的确得到了一个阴性结果。

2天快闪巴西圣保罗 – 第二天

第二天首先去的是本地的大市场,葡语 Mercadão Municipal de São Paulo 可以理解为一个自带大食代Food Court的大型农贸市场。作为一个农牧业大国,市场里的瓜果蔬菜和生鲜肉类看上去很不错

卖水果的小贩会热情地给你水果试吃。市场一楼基本都是水果和生鲜,偶尔有一些手工艺品。二楼就是大食代广场。从上往下看一楼的格局和中国的农贸市场并无两样。

即使是巴西大食代肯定也要吃肉,下面一大盆肉加上两瓶啤酒的价格是$192 巴西里拉,看过第一天游记可能还记得,我们第一顿饭一个人就要这个价。当然坐在Food Court里吃肯定和有统一着装的饭店不一样。

这份肉的分量非常到位,也没有出现肉下面铺满萝卜丝把食物垫高显得分量多的伎俩。两个成年人勉强吃完后表示已经没有能力再弄点烤串。此处应有肉的特写。

又一顿酒足饭饱之际开始了新一轮的散步消食。闲逛了下圣保罗的商场,总体上非生活必须品的物价并不便宜。商家愿意收美金现钞,就是汇率惨淡了点。在街头和商场里都发现了一些类似于豹子变形体的雕像,不知道有什么寓意。(第二张感觉像占满了花生碎应该挺好吃的)

超市和街头便利店看起来和中国大街小巷上的并无不同。但是仔细一看他们都有个共同点,就是有足球卖。随到随买随踢。

很快就到了第二天夜晚的飞机时间,临行之前肯定又是一顿巴西烤肉。这次找的自助烤肉店价格正在搞活动,价格对折后只要 $74 巴西里拉一个人,也就是 USD $13。

圣保罗总计逗留两个白天,吃了4顿巴西烤肉。飞行时间远大于在巴西境内的时间。考虑到他们给了我5年多次往返签证,应该在将来的某一天还会回去继续吃肉。

2天快闪巴西圣保罗 – 第一天

这是一篇拖了有半年多的游记,如果不是Covid19把人困在家里的话更不知道什么时候能够完成。一切都源于去年搜到的一张从温哥华出发去圣保罗的机票,大概就500加币的样子。考虑到从来没去过南美洲外加一圈mileage run下来里程不少就愉快订票。

订票后因为航空公司行程变化前后改动了几次。最终飞行路线是YVR-ORD-GRU 比原先的 YVR-DEN-IAD-GRU 少了一跳。当然我还要自己解决SFO-YVR这一段,就直接买了一个便宜单程接上。事后回程的SFO-YVR还被意外改成了SFO-LAX-YVR替我补上了后一次航班缺失的一段。

因为UA国际航线从加拿大出发比从美国出发便宜的缘故经常在YVR机场转机。这次找到了一家早餐店不错。名字叫“天津味 牛羊肉粉面” 英文名“O’Tray Noodle” 坐标在Aberdeen Plaza隔壁一幢看起来不怎么样的建筑。从机场有轻轨可以坐到Aberdeen Plaza步行几分钟就到。煎饼果子经天津的朋友远程图片鉴定表示质量不错。

抵达圣保罗机场已经是第二天清晨,机场入境排队感觉亚洲面孔寥寥无几。入境检察官问的都是常规问题。入境章上的停留日期是手写的90天。入境管对我飞24小时就为了待一个晚上就走有点将信将疑。这个跨越了半个地球的中国护照持有人究竟想来做什么?答案当然是烤肉

机场入境后第一感觉就是热,10月下旬还是南半球的夏天。抵达酒店checkin后第一件事就是找烤肉吃。手机上找了附近评价最高的自助烤肉店,过程就和平时常见的巴西烤肉一样。桌上有块牌子红或绿,绿色代表你还能吃,会有服务生不断带着新出炉的烤肉到你面前切给你。等到实在吃不下了就把牌子翻红就不来问你。烤肉店还有一个巨大的沙拉吧,里面居然还有不少三文鱼寿司。因为实在太饿了所以这顿饭并没有图。最后两个人的自助餐还带两瓶啤酒差不多$190 巴西里拉一个人,折合USD $35。和之后吃过的几家烤肉店比起来这家还算是档次高的,从服务生统一的着装和价格上可以看得出。

吃饱后自然要外出闲逛消食。鉴于之前在网上的阅读结果对圣保罗街头本地治安并没有太多信心,把钱包和iPhone护照都锁在酒店保险箱后就带着一张信用卡, 一张20美金现钞和一部Android手机出门。第一个目的地是圣保罗大教堂。Uber在圣保罗本地能正常用,而且车辆也不算少。

圣保罗大教堂本身相比在北美可以看到的各种教堂并没有给我留下特别深刻的印象。倒是教堂门前广场上形形色色的小生意人和随处可见的流浪汉让人叹为观止。旧金山人对于满街的流浪汉也已经习以为常,但这个密度和闲散人员的数量还是让人不由自主的捂紧钱包提高警惕。但从另一方面来说,没有警力或城管驱赶也说明了社会的和谐,流浪汉本身并不可耻,但为了国家/城市形象非要做出掩耳盗铃驱赶就没有必要了。

除了流浪汉外,广场上各种卖大力丸的生意人也不少。这位看了半天感觉应该是卖某种壮阳药物之类的。

广场上还发现了很多人围着看一个木板钉起来的大箱子。研究了一圈后发现是Netflix在播放电视Trailer。别看箱体巨大实际屏幕也就比手机屏幕大不了多少。

高架桥下的空间被建成一个个小型足球场,一群小孩在里面踢球。相比中国的高架桥下基本都是自行车停车场或是堆放杂物。中国的家长也未必会愿意让小孩在汽车尾气的环绕中踢球吧。没有足够的设施让大多数人能够参与又如何提高竞技水平呢?

Traefik v2 下设置反向代理及https redirect

为了解决docker前端的反向代理,在尝试了传统的haproxy后打算试一试新产品。Traefik的吸引力在于

  • v1和v2版本的配置语法不一样,阅读文档需注意
  • 配置可以通过启动参数或配置文件传入,但前者并没有完全实现后者的功能
  • 文档过于简陋
  • 可以自行更新 Let’s encrypt证书,避免3个月手工操作(即使用acme.sh 还是需要配置cron job)
  • 自动发现同一个docker instance上的服务并通过label来定义route/service
  • 多种多样的middleware 可以简单实现ratelimit或者replace path

缺点在于

下面是一个简单例子。docker-compose.yml 中有2个container,其中trafik找到了nginx的服务并且自动issue/renew了证书。

nginx:
    command: nginx -c /etc/netbox-nginx/nginx.conf
    image: nginx:1.17-alpine
    depends_on:
    - netbox
      #ports:
    expose:
      - 8080
    volumes:
    - netbox-static-files:/opt/netbox/netbox/static:ro
    - netbox-nginx-config:/etc/netbox-nginx/:ro
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.netbox_http.rule=Host(`netbox.fastobject.net`)"
      - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
      - "traefik.http.middlewares.https-redirect.redirectscheme.permanent=true"
      - "traefik.http.routers.netbox_http.middlewares=https-redirect"
      - "traefik.http.routers.netbox_https.rule=Host(`netbox.fastobject.net`)"
      - "traefik.http.routers.netbox_https.tls=true"
      - "traefik.http.routers.netbox_https.tls.certresolver=le"
      - "traefik.http.services.netbox-service.loadbalancer.server.port=8080"
  traefik:
    image: traefik:v2.1
    container_name: "traefik"
    command:
      --log.level=INFO
      --providers.docker=true
      --providers.docker.exposedbydefault=false
      --entryPoints.web.address=:80
      --entryPoints.websecure.address=:443
      --certificatesResolvers.le.acme.email=henryxxxxx@gmail.com
      --certificatesResolvers.le.acme.storage=acme.json
      --certificatesResolvers.le.acme.httpChallenge.entryPoint=web
    ports:
      - 443:443
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

这里还实现了http 80 -> http 443 的自动302跳转。这个配置通过middleware实现,坑点在于需要配置2个route,分别针对http和https,否则跳转是404 not found。另一个容易被忽略的地方是需要被反向代理的container使用expose而不是ports来暴露端口。expose只会把端口暴露给其他container 而ports会把这个端口绑定在host上。在这个例子里只需要把端口expose给trafik即可。