毛毛的梦 - 记录 https://www.maodream.com/tag/%E8%AE%B0%E5%BD%95/ 上海之行2025·第 5 天 https://www.maodream.com/archives/279/ 2025-05-05T12:50:00+08:00 {alert type="info"}English version available. Shanghai Trip 2025 - Day 5- Mars Inside{/alert}  该走了😭。我早上八点起床,开始前往上海浦东国际机场。  城市还在慢慢苏醒,我收拾好行李离开酒店。街道比平时安静,这五天以来第一次开始下雨——仿佛上海自己也知道,是时候说再见了。我打车去最近的地铁站。车在雨中缓缓前行,给了我最后一次好好看看上海街景的机会。  车上,我不断回放这次旅行的点点滴滴——高达立像、骑行、静安、没看到的海,还有我们一起的欢笑。虽然只有不到四天,感觉却像是经历了一切。  机场里一切都极快——值机、安检、登机口。我的飞机延误了半小时,也许它在告诉我让我慢慢来?所以我没有在候机厅匆忙地赶路,而是慢慢走,享受最后的时刻。  我们来上海的时候坐的是上海航空的飞机,现在离开时,我飞机正右侧上恰好有一架上海航空的飞机。这个巧合几乎让我想哭。感觉像是圆满的句号,我难以相信这几天这么快就过去了。  飞机起飞了,上海的景色在我眼中渐渐变小,消失在云层之下。我心中涌起一阵感慨,城市璀璨的天际线消失了,但它依然鲜明地留在我的心里。  离开上海后,我们三个人都有些“戒断反应”的感觉。这次上海之行给我们留下了深刻永恒的印象,希望还能再有下一次。  期待再见,上海🥲。 上海之行2025·第 4 天 https://www.maodream.com/archives/278/ 2025-05-04T23:16:00+08:00 {alert type="info"}English version available. Shanghai Trip 2025 - Day 4 - Mars Inside{/alert}  上海的第四天。我们谁也不愿面对,这是我们在这座城市最后一天的欢乐时光。  中午左右,我们开始讨论去哪儿玩。聚乙烯提议去长江边上的一个海滩看看,长江是中国最长的两条河流之一。他想去看看江水流入大海的地方。但Eric不太感兴趣——他觉得上海的长江没那么壮观,而且那里离我们酒店太远了。最后,聚乙烯就自己从他姐姐家出发去了。  天气晴,聚乙烯拍了几张海景照发给我们。我一直很喜欢大海,特别是在阳光明媚的日子,水面波光粼粼——阳光映照在波浪起伏的水面上,像鱼鳞一样闪闪发光。  作为一个内陆城市的人,我很少有机会看到大海。那样的景象对我来说像是梦境。说实话,有点后悔没和他一起去。  下午晚些时候,Eric和我决定去 Apple 静安——亚洲第一、全球第二大的 Apple Store。  Apple 静安 就在上海静安寺旁边,这是一座静安区的传统寺庙。传统与现代科技的结合,感觉相当神奇。    随后我们去了蓝蛙,一家西餐厅,吃了这次上海最贵的一顿饭。我点了汉堡和意大利面!(意大利面好吃爱吃喵😋)     顺带一提,杯里是水,我们都是好孩子😉。  晚饭后,我们又开始骑车,漫无目的地穿行在老上海。上海几乎每条路上都有专门的自行车道,专为自行车和电动车设计,让人在骑行无忧无虑。在我的城市里根本就看不到这样的车道。  聚乙烯的航班是明天早上7点,这意味着他需要凌晨4点起床。所以他在晚上10点左右早早回去了。Eric和我在地铁站和他道了别。内心涌起一阵不舍,因为这意味着我下一次和聚乙烯相见就不再是上海了。明天是我们上海的最后一天……我中午的飞机,连再看一眼这座城市的时间都没有。有点伤感😭。 上海之行2025·第 3 天 https://www.maodream.com/archives/277/ 2025-05-03T23:58:00+08:00 {alert type="info"}English version available. Shanghai Trip 2025 - Day 3 - Mars Inside{/alert}  经过第二天激烈的骑行,我们都睡得像死猪一样😂。5月3日早上,Eric和我醒得很晚。与此同时,聚乙烯的父亲和姐姐带他去逛街了,虽然他并不是很感兴趣。  下午,Eric和我出门去和聚乙烯会合。我们决定在静安大悦城见面。Eric和我骑共享单车过去。在商场旁边一个天桥附近的斑马线等绿灯时,我突然听到有人在大喊,喊的是...我的电话号码?啊??  然后我才反应过来——是聚乙烯!我们彼此电话号码记得特别牢,常常用号码互称代替名字。我忍不住笑出声,一边喊回他的号码,Eric则一脸困惑,不知道这个突然喊数字的人是谁。聚乙烯还趁机偷偷在天桥上拍了我一张照片,没经过我同意😡  过马路后,Eric和我走上天桥,看到聚乙烯也刚租了一辆共享单车,那就轮到我报复他了😋!  我们碰面后,进了商场找地方吃点东西。里面居然有一群coser,不知道是不是因为附近有漫展。我还和几个coser集了邮。逛了一会儿,我们最终选了一家韩国烤肉店吃饭。这家店开业才几个月,感觉店里设施都很新,烤肉也非常好吃。吃完晚饭已经超过晚上10点了,我们开始骑车回酒店,这次聚乙烯也跟着我们来我们这里做客。回到酒店后,我们三个人拿着个音响放声歌唱😂结束了这一天 :) 上海之行2025·第 2 天 https://www.maodream.com/archives/276/ 2025-05-02T23:43:00+08:00 {alert type="info"}English version available. Shanghai Trip 2025 - Day 2 - Mars Inside{/alert}  今天是和聚乙烯、Eric在上海的第二天,也是我们出门的第一天。中午左右,Eric和我坐出租车去聚乙烯姐姐家,他就住在那里。终于,我们三个人在上海聚到一起了!  见面后,我们乘地铁去看上海的高达立像,它在上海金桥 LaLaport 商场的旁边。聚乙烯和自由高达拍了张照。然后我们进入了商场,里面还有更多的立像,强袭自由高达的背面已经吸引了我们的目光,而它的正面看起来还更帅!  商场里还有一个高达主题店,有许多高达模型。晚饭后,我们前往浦东新区——上海的中央商务区,也是中国最富裕的区域。我们想体验一下“城市丛林”,于是租了共享单车,开始了长达10公里,持续一个多小时的骑行。      到达浦东后,我们迎来了陆家嘴最具标志性的三座大楼。  从左到右依次是:金茂大厦(421米),上海环球金融中心(492米),上海中心大厦(632米)。  渣打银行!我最喜欢的银行之一!随后我们参观了上海国际金融中心商场(IFC),这是中国最繁忙的商业区之一。Apple 浦东店位于商场外的广场。它的地上部分是一座令人惊叹的圆柱形建筑,全由巨大的玻璃面板组成。可惜入口临时关闭,我们只能从另一边进入。参观完苹果店后,聚乙烯先离开了,去找他的家人吃饭。Eric和我离开陆家嘴去吃东西,然后又回来了。我们还帮一对来自牙买加的情侣找了家中餐馆,bro 还挺好心((当时差不多晚上8点,游客变得非常非常多。因为道路太堵,我们没办法穿过黄浦江再次和聚乙烯汇合,只能有些失望地回到酒店。晚些时候,聚乙烯给我们发来了外滩和黄浦江的照片。外滩以许多欧式建筑闻名——更准确地说,是欧洲新古典主义风格。其中一个例子就是浦发银行大楼。回到酒店后,Eric打开抖音,看到了令人震惊的人山人海的外滩的景象!说实话,我们没去是件好事 🤓 上海之行2025·第 1 天 https://www.maodream.com/archives/275/ 2025-05-01T20:38:00+08:00 {alert type="info"}English version available. Shanghai Trip 2025 - Day 1 - Mars Inside{/alert}  国际劳动节! 期待已久的假期终于来了。在假期开始之前,我其实还想着就在家里待着,写写代码,或者玩玩我的世界。  大约在假期前两周, 聚乙烯 (昵称) 告诉我他要去上海看他姐姐。听到这个消息时,我有点难过。如果他去上海,我们假期大概就很难一起玩了。  我考虑过去陪他,但去年夏天我已经和Eric一起去过上海了(见 上海之行航拍照片 - 毛毛的梦)。这么快又去同一个地方,感觉不是个好主意。  起初我想着还是呆在家里。但上海给我留下了太多美好回忆,最后我还是决定跟他一起去!!  我们在四月的最后一天放学回家后,一起玩了我的世界,打了末影龙。然后在五月一日,我们和一些老同学聚会,一起吃了饭,玩得很开心。  聚乙烯和我初中是同学。我们一起度过了人生中最难忘、最感动、最珍贵的三年。   晚饭后,我和聚乙烯踏上了去上海的旅程。  在飞机上发生了一件有趣的事。过完安检,走到登机口,我已经累坏了。上了飞机后,我特别特别渴。众所周知,飞机上不能带液体,我没带水,就向空姐要。她给了我一杯,但不够喝,于是我又要了一杯。第二杯还是不够,我又要了第三杯。最后,我一共喝了五杯水,有一次手里还拿着三杯。空姐给我第三杯时,旁边的乘客都笑了。   我们晚上10:40抵达上海浦东国际机场,我刚好写完这篇文章。  严格来说,这算是我们在上海的第一天,虽然因为到的太晚,今天只会在上海呆一个小时。明天我们计划去看高达雕像。之后可能会在市区多逛逛。  这是我第一次和这么珍贵的同学一起旅行——希望以后还能有更多这样的旅行。😭 上海之行航拍照片 https://www.maodream.com/archives/197/ 2024-09-15T18:01:00+08:00 前言 2024年,中考完后的那个暑假,我和朋友Eric Eric的主页 来到了中国的国际化大都市——上海,在这里度过了五天时间。上海这座魔幻的城市给我们留下了许多深刻的印象,在这一次旅途中,我们也在浦东新区拍下了许多好看的照片。{dotted startColor="#ff6c6c" endColor="#1989fa"/} 写了一个能让各位知道我睡没睡着的网页 https://www.maodream.com/archives/192/ 2024-07-02T20:11:00+08:00 {alert type="warning"}这个项目已过时船新升级!全方位视奸,包括但不限于我在听的歌、家中灯的开关和电脑运行的程序,甚至还能直接和我互动!!详见: 全方位视奸·睡似了吗? 重生版 网址: maao.cc/project-sleepy {/alert}前言  因为中考完后的假期太闲,我又算是个比较爱睡觉(小睡)的人,所以基本上每天都处在睡着->醒来->睡着->醒来的循环中。朋友们喜欢留言找我,但一两条通知没法吵醒我,直接打电话又有些唐突。于是我决定写一个网页,来让访问网页的各位看到我是活着的还是似着的(){dotted startColor="#ff6c6c" endColor="#1989fa"/}  首先实现思路就是后端给两个接口。一个切换状态(switch)接口,当带 status=1 参数请求时,将状态更改为醒着(awake);当带 status=0 参数请求时,将状态更改为梦中(sleeping)。对于切换状态接口,任何操作都必须带上正确的 secret 密钥参数,否则直接返回 Invalid secret.。第二个接口是查询状态(query)接口,无需任何参数,请求接口后直接返回当前状态。前端请求查询状态(query)接口后,即可显示当前状态。更改状态使用快捷指令发送get请求。{dotted startColor="#ff6c6c" endColor="#1989fa"/}  最终成功实现了想要的效果: https://maao.cc/sleepy/{bilibili bvid="BV1fE421A7PE" page=""/} 大陆用户使用国际版支付宝 https://www.maodream.com/archives/163/ 2024-04-30T00:40:00+08:00 前言  事情的起因是一天闲着没事,偶然刷到了一则帖子,才得知原来大陆用户是可以申请开通支付宝国际版的。  支付宝国际版相比标准版界面更加简洁、直观、高端大气上档次,很适合只用几个常用的功能,又不喜欢花里胡哨的用户。{dotted startColor="#ff6c6c" endColor="#1989fa"/}  首先进入支付宝客服中心,接入人工客服,然后直接和对方说出要求(想切换到支付宝国际版),对方会转接给「相应工作人员」处理。  转接后再次描述自己的需求,会用对一些功能有影响为理由最后挽留一下。这时候表达自己能接受,他们就会直接提交申请。 (有人说自己尝试,对面本来不同意,说了句求求你之类的话就同意了。这可能因人而异,只要非常坚定要切换就行)   我是工作日中午提交的申请,三个小时左右就通过了,效率还算快。  根据收到的短信的指引切换至国际版后,就能拥有一个简洁的支付宝了。还可以切换支付宝语言为英语,体验更纯正的「国际版」。{dotted startColor="#ff6c6c" endColor="#1989fa"/}  切换到国际版后,有了新的绑定银行卡界面,支持 Visa / Mastercard / Diners Club / Discover / JCB / 银联  但是似乎因为实名认证的方式,切换到国际版支付宝似乎并没有对绑定国际银行卡有加成,还是没法绑定超过两张国际银行卡,会提示所谓的环境不安全。 给常联系页面加了个英文 https://www.maodream.com/archives/129/ 2024-01-13T23:53:00+08:00   因为自己有时候可能会和一些外国友人交流,所以挺早之前就想给自己的常联系页面加一个英语,但是一直没去行动。我认识一个来自埃及的朋友,之前经常和他一起打游戏啥的,但是三个多月前,他突然就没任何动静了。我问了很久,他也没回复。终于半个月前(这半个月没怎么上线),他回复了我:  这次经历教会了我们,好朋友之间还是要留下足够多的联系方式。刚好最近不是很忙,就抽出时间给我的联系页加了一个英文的选项:( https://maao.cc/global )  我选择是将中文和英文分成两个单独的子目录,访问网站首页时,自动检测用户的语言,跳转到对应的语言目录。实现起来非常简单,只需要15行代码(不完全遵守规范的话,还可以更少):<!DOCTYPE html> <html> <head> <title>maao.cc</title> <script> var userLang = navigator.language || navigator.userLanguage; if (userLang === 'zh-CN') { window.location.href = '/cn'; } else { window.location.href = '/global'; } </script> </head> </html>  这样,访问首页就会自动判断,将用户引导至合适的语言。当用户的语言是 zh-CN (简体中文)时,就自动跳转到https://maao.cc/cn 是其他语言时,就跳转到https://maao.cc/global  当然,如果识别出错或者只是想看看另一种语言的页面的话,我也做了一个区域选择器(Region Selector 有点模仿任天堂官网那意思): https://maao.cc/regionselector 因为一般来说大部分简体中文访问者不会打开这个页面,所以在这里我是把英文放在第一个。  同时,我也将常联系站(maao.cc)的境外流量接入了上一篇文章提到的Amazon CloudFront(详见 本站的境外网络访问优化记录 - 毛毛的梦 ),现在全球连接速度都嘎嘎快 本站的境外网络访问优化记录 https://www.maodream.com/archives/104/ 2023-12-16T21:39:00+08:00   毛毛的梦是我的一个个人博客网站,由于我是中国人,网站主要访客在中国大陆,所以网站服务器也自然是在国内。同时为了提升国内各地区访问者的体验,我使用了阿里云的DCDN全站加速服务,通过分布在各地的缓存服务器来加快连接速度,减轻源服务器压力,同时还能在一定程度上避免网络攻击。经过优化后,大陆地区的访问速度确实快多了,但是由于阿里云全站加速服务是按流量收费的,而境外的流量费和大陆的不一致,境外要比大陆贵得多(如图)  一般来说境外的攻击比国内要更多,再加上成本原因,最终还是选择只加速大陆地区。设置只加速大陆地区后,境外访问者将会被解析到位于上海的服务器,并且算作国内流量。这样的好处是能大大降低成本,但同时坏处也显而易见,境外地区的访问者就不会有非常优秀的体验。   虽然我网站的境外访客不算多,但是也并不是完全没有。为了照顾到他们的体验,我还是决定使用境外CDN服务。但阿里云的肯定不行,主要原因还是攻击多并且流量费太贵。不过好在我的域名使用阿里云的DNS云解析服务,可以通过简单的配置来实现让不同地区的访问者被解析到不同的服务器。这意味着我可以让国内的访问者使用阿里云的全站加速服务,而让境外的访问者被引导至另一个服务商。  接下来就是寻找一个合适的境外CDN服务提供商。我首先想到的是Akamai,作为全球最大、历史最久的的分布式计算平台之一,Akamai有着非常不错的口碑,并且一直为IBM、Adobe等大公司提供稳定的服务。然而经过我的一些了解,Akamai主要方向似乎是帮助团队和公司,对个人开发者并不是非常友好。  我又去找了亚马逊AWS(Amazon Web Services),亚马逊有CDN业务,他们叫做Amazon CloudFront。Amazon CloudFront有永久免费套餐,每月有1TB的免费出站流量,这对于我这样一个小站来说是完完全全足够了的。  我先注册了AWS账号,选择Amazon CloudFront免费套餐,AWS要求我提供银行卡信息来绑定自动扣款。我刚好有一张中信银行的Visa白金借记卡(持卡人是我本人,因为是借记卡,所以未成年人也可以办),但是激活的时候,柜台的工作人员和我说因为国家反诈要求,这种新办的外币卡需要等待一段时间才能完全可用。我之前也尝试过绑定Paypal和Apple Pay,但是都失败了,说明在解锁之前确实不行。不过我还是抱着试一试的心态,填入了我的银行卡信息:  到了下一步,似乎是通过验证了?接下来要求我验证我的手机号:  验证通过后,到了选择支持计划的页面,我可以选择支付一笔费用升级到更高级的支持计划,会有专业人员来帮助我解决我的问题。但是对于我这种个人开发者,还是选择自食其力:  点击完成注册后,提示我成功激活了我的AWS账户:  看来这张还没有解锁的卡也能通过验证(我还尝试过使用这张卡开通Cloudflare for Saas,也成功了)  进入Amazon CloudFront控制台,点击“创建 CloudFront 分配”  先将我的DIgicert SSL安全证书导入到美国东部(弗吉尼亚北部)区域(us-east-1)  创建完CloudFront分配后,我得到了CNAME解析域名。接下来登录到阿里云云解析DNS配置页面,点击添加记录,主机记录填写www,解析请求来源选择境外(即向除中国内地以外的其他国家和地区,返回设置的记录值),记录值填入刚得到的分配域名:  稍等片刻,使用工具检测解析,确认解析设置生效:  接下来,请求我「身在境外的朋友」帮忙打开我的网站,看看是否有效:  提示网站使用了不受支持的协议,看来是某个地方配置有问题。我搜索了一下,发现似乎并没有人和我遇到同样的错误。于是我便开始了漫长的摸索...  后来我通过搜索,找到了亚马逊云服务官方在知乎发布的一篇文章:《 技术干货 | 手把手教你排查 Amazon CloudFront 常见配置问题 》,在这篇文章里,提到了一个问题:“中国区 CloudFront 直接访问CloudFront 生成的 url,返回 403”,在这里给出的原因是:“中国区访问 CF 分发的时候,只能用客户自己的已经备过案的域名访问,不可以用 http://xxx.cloudfront.cn 的域名访问”:  这段话看得我云里雾里,我百思不得其解,经过了一段时间的“头脑风暴”后,我得出了这样一个结论:上文提到的CloudFront分配给我的域名“d342janx8v6j2q.cloudfront.net”,是相当于分配给我的一个子域名... 我作为国际AWS用户,可以使用这个域名来建立网站,并让访客用这个域名来访问我的网站。我注意到,点击分配域名旁的复制按钮,复制下来的是“https://d342janx8v6j2q.cloudfront.net”,而不是“d342janx8v6j2q.cloudfront.net”:  如果这个域名只是用于CNAME解析,那么不应该将https前缀也复制进来。并且,直接访问“https://d342janx8v6j2q.cloudfront.net”,能显示出403页面。这说明这个“分配域名”不止是用于CNAME解析。于是我尝试知乎原文的解决方法,将www.maodream.com添加进“备用域名”:  应用更改后,果然能连接上了:  于是我将AWS控制台切换到了英文,发现“分配域名”的原文是“Distribution domain name”:  这里的“Distribution”翻译到中文确实是“分配”,但是Distribution是CloudFront里的一个概念,有点像是“实例”,如果直接翻译成分配,很容易让人理解成是分配的域名。看来AWS的翻译质量还是不咋地,索性直接留在英文界面。  虽然现在网站是能连接上了,但并没有显示出正常的网页,而是得到了一个来自CloudFront的403错误,大意是CloudFront的边缘服务器无法连接到源站。这就麻烦了,因为可能引起这种问题的原因有很多。我搜索了一下,似乎还是没有人遇到同样的问题,看来又得自己慢慢摸索了...  我尝试多刷新几次,然后去查看源服务器上的网站日志,发现根本没有新记录。这说明CloudFront的服务器与我的服务器根本就没有建立连接,于是去看源站配置。源站域名这个地方,因为不能填IP地址,我就填的www.maodream.com(我以为是回源host)。但是我又突然想起来,它不能填IP地址,但是可以填CNAME解析的域名啊。  于是我把绑定我源服务器IP的域名填了进去,保存。等一段时间生效后,再次打开网站,居然就稀里糊涂地成功了:  后来我才意识到,这里不是回源host,填写的是源站信息,而不是源站域名(当时中文界面,这里叫做“源域”,解释是“选择 AWS 源,或者输入源的域名。”,看来这翻译质量是真不咋地)。而且,我的www.maodream.com这个域名在海外是解析到CloudFront的,相当于CloudFront自己把自己当源服务器访问,那肯定是有问题的。  现在,本站境外加速服务就由Amazon CloudFront提供,成功实现了国内和境外“一片绿”的美好景象:  境外区域也得到加速后,来自全球的访问者就都能得到一个好的访问体验了。那这次境外网络访问优化就算圆满成功了!!