云南之旅的支出总体分析也做完了,接下来聊一下本次的支出。
支出明细参考 Airtable
总支出
本次旅行 6 月 17 号开始,6 月 25 日结束,共计 9 天。总支出 15309 元 ,日均开支 1701 元,日人均开支 850 元。
支出结构
对所有的支出条目进行梳理后,我发现不出意外的,在支出最大头的是出行相关。
而在出行相关中,成本最高的是机票,其次是一嗨租车。一嗨租车因为实际上是我租了多天,所以单日成本可控。
除了行之外,成本比较低的是住,可以看到,我在住上面花费了非常少的成本,主要的原因还是因为我去的时候云南还是属于淡季,所以整体的开销还好。
在游玩和景点方面,整体花费的不算特别多,成本大头的是伴手礼和旅拍的照片,其他的景点其实就还好。再加上我们俩基本上也没怎么去特别贵的景点,也就开销一般啦~
吃的方面,这次来云南吃了不少当地的美食,所以开支比较大,符合预期(当然,比重还是有点收到惊吓),但总体还在可接受范围内。
总结
旅游真的烧钱。。。不过穷家富路,出门了就别太在乎钱,不然还不如不出门。下次还去!
不过下次我可能会优化一下我的一些选择,比如租车可能会选择携程租电车 + 保险,来节约一些交通的开支。
由于 Gitbook 长期不维护,为了保障整个架构持续可用,所以导致我不得不从 Gitbook 迁移到 mdbook。
在使用 mdbook 的时候,有个问题是,我的不少电子书域名都是备案过后的,mdbook 又不像 gitbook 支持可以在目录里跳转外链,因此我需要自己实现给 mdbook 添加一个外链。
实现思路
由于没办法直接通过在 Markdown 当中实现跳转外链,那么一个比较简单粗暴的方法就是直接在模板当中添加,刚好 mdbook 在文档中有说明具体的操作方法 。
你只需要在 mdbook 的根目录中创建一个 theme
文件夹,并生成一个 index.hbs
文件,用于渲染页面。
接下来,你只需要在适当的位置添加上你需要的代码即可(下方的 toc 后面的 有序列表便是我手动添加的)
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
{{#toc}}{{/toc}}
<ol class="chapter">
<li class="chapter-item expanded "><a href="https://beian.miit.gov.cn/" target="_blank">这里是你的备案号</a></li>
</ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
参考文档
https://github.com/rust-lang/mdBook/issues/1354
我去淄博其实是两个月之前了,由于拖延症,一直没写,于是我想,如果我再不写,可能我再也不会写了吧。OK,那就开始动手写吧!
缘由
我去淄博是在 5 月初,彼时我刚提车,于是便决定开车从天津前往淄博,一方面是练练车,另一方面刚好最近淄博火热,也去看看令人好奇的淄博烧烤。
人文景点
八大局
淄博作为一个以烧烤、烟火气火起来的城市,既然来,自然重点是看大家的生活,所以,到淄博的第一站,自然是少不了到八大局溜达溜达
不过,当我去的时候,八大局已经在网络上火了很久,所以现场的人非常多。八大局也逐渐有了网红街的感觉了,比如紫米饼,已经被叫”网红紫米饼“了。
考虑到排队正版的紫米饼时间太长,讨厌排队的我最终选择了一家非正版的紫米饼,试了试,味道还行。可能正版会更好吃,但排队实在太讨厌了…
齐盛湖公园
从八大局出来,我们便开车去酒店休息,到了晚上,来到了淄博张店区的齐盛湖公园,据说这里有一个「海岱楼书店」,是曾经的最美书店,于是也跑来打卡,看看这个最美书店。
从外景来看,楼宇与湖光一起,远处还有山光,雀实不错。
走到近处,颜值也还算是能打
进入到里面后,内里的设计不像外部那么的古朴,反倒是还挺现代化的。但这个设计,挺讨喜的。
作为一个最美书店,还是值得打卡的。
自然景观
潭溪山
由于安排了比较长的时间来淄博玩,所以我们除了逛一逛人文景观,还去了淄博的潭溪山景区,看看淄博的自然风光。
潭溪山的风光整体来说,还不错,与云南、西藏没办法比,但依然算得上清秀。
潭溪山的话,我自己最喜欢的应该是这个透明栈道了。作为一个有恐高症的人,走这个透明栈道属实是胆战心惊,但,还是要走!
旅行建议
淄博市是一个纵向偏长,横向较窄的城市布局,而我们在抖音上看到的八大局、烧烤一般都是在中间的张店区,而如果你只玩了张店区,你就错过了淄博的更多内容,淄博的临淄区、周村区、淄川区、博山区也有各自的特色和风格,如果你来了,我建议你除了在张店玩一玩,还要留有更多时间去看看更多不一样的淄博。
淄博市行政区划图
店铺推荐
在淄博的时候,我们吃了不少的烧烤,我最推荐的是淄川区的程大牛肉 ,这家店是牛肉烧烤专卖店。
一句话来描述的话,在我看来,程大牛肉是在用潮汕牛肉的思想做烧烤,这家和别家不一样,他是按部位卖牛肉烧烤的!你可以吃不同位置的牛肉做成的牛肉串!
推荐去试试看!不过,需要注意的是,他们家是预约制度的,所以你最好提前打电话联系一下,预约一个位置,以确保自己有位置。
总结
这次第一次来,我们只是简单玩了玩,对于淄博有一个更不一样的认识,而更加细致的内容,依然需要进一步的来淄博看看,体验一下淄博更细节的内涵,还要再去的!
批量创建、批量更新、批量删除
批量获取说完了,接下来我们来聊聊批量更新,实际上批量更新、批量创建虽然有场景,但也不多,在这种场景下,我们已经很难像批量获取那样,在原有资源上进行操作,而是需要借助批量资源来实现批量操作。
以用户资源(User)为例,当我们需要对其进行批量创建、删除、更新时,我们需要创建一个批量资源 BulkUser,并通过对 BulkUser 操作,来创建用户。Bulk User 本质上是将请求的多个资源转换为了异步的任务,在发起后,开发者可以在任务结果中查询具体的值来使用。
如何理解异步的任务? 这里异步的任务更多是一种设计表现,并不强制要求一定异步。异步的表现设计和相关的接口实现,是为了给后续留出纵向扩展的空间。既 无论是否行为是否真实异步,都需要在返回结果中返回任务 ID & 任务状态,以便于开发者自行实现异步处理的逻辑。
{
"code":0,
"data":{
"job":{ "id":"123", "status":"ok" },
"results":[
{
...
}
]
}
}
批量创建
批量创建用户的操作和创建单个用户的操作是比较接近的,主要差异点在于 Path 上有区别,且传递参数时,会传递多个资源的属性。
批量创建用户
# request
POST /bulk_users/
{
"users":[
{
// user1
...
},
{
// user2
...
}
]
}
# response
HTTP/1.1 200 OK
{
"code":0,
"data":[
{
// user1
...
},
{
// user2
...
}
]
}
批量更新用户
批量更新时,你已经知道了你需要更新的资源的 ID,因此,可以这样设计的你的接口:
#request
PUT /bulk_users?id[]=1&id[]=2
{
"gender":"other"
}
# response
HTTP/1.1 204 No Content
{
"code":0,
"data":[
{
// id=1
...
},
{
// id=2
...
}
]
}
批量删除
有了上面的几个例子,批量删除就比较好定义了。就像这样:
#request
DELETE /bulk_users?id[]=1&id[]=2
# response
HTTP/1.1 200 OK
{
"code":0,
"data":[
{
// id=1
"status":"deleted"
},
{
// id=2
"status":"deleted"
}
]
}
总结
批量操作在获取场景,可以考虑通过 List + Filter 的方式,或搜索的方式来实现一套更加标准的搜索接口,而规避提供定制化的自定义接口。从规范的视角,两者都是符合规范的,也可以都对用户提供,并不互斥。而对于没办法复用的创建、更新、删除,则可以考虑使用创建异步任务的方式,来实现批量操作,给开发者一个明确的异步预期,让开发者可以自行查询业务的实现方式。
云南之旅玩的非常的尽兴,6.17 ~ 6.25 ,全程共计 9 天,玩了昆明、大理、丽江、泸沽湖四个不同的地方,几乎每个地方待了 2 天左右,还是有非常多值得去和值得纪念的东西。不过,由于实在太多了,所以只能用流水账的方式来记录。在流水帐当中,着重说一些大面上的事情,而具体每个地方的更加详细的描述,则通过单独为每一个地方写一篇文章来说。
不过,为了方便你了解我的行程(抄作业 ),我在 Google Map 上准备了一份地图,方便你了解我去过的地方。如果你感兴趣的话,可以点击这个链接 ,看到我去的每一个地方,以及相应的评价。
行程总览(Overview)
日期 地点 描述 6.17 天津,昆明,遵义 天津飞昆明,遵义茅台机场中转; 落地后入住酒店,在昆明逛了南强街和南屏步行街 6.18 昆明,大理 早上去滇池,下午从昆明站出发前往大理,到大理后取车前往酒店入住后去大理古城. 6.19 大理 环洱海,期间去了喜洲古镇、大理圣托里尼 6.20 大理,丽江 逛崇圣寺三塔、坐感统索道上苍山,晚上还车并从大理坐车前往丽江,晚上住在丽江古城附近。 6.21 丽江 逛丽江古城、拍照、吃纳西族黑山羊火锅。 6.22 丽江,泸沽湖 吃过桥米线,从丽江出发去泸沽湖,晚上吃摩梭族烤鱼。 6.23 泸沽湖,大理 环泸沽湖,吃摩梭族烤鸡,下午开车回大理,并在大理古城拍照 6.24 大理,昆明 早上在大理吃过早餐,就开车出发去昆明,下午入住斗南花市旁的全季酒店,晚上逛斗南花市。 6.25 昆明 上午逛云南省博物馆,下午在翠湖公园溜达后,前往昆明长水国际机场。
9 天旅途的 Overview
感受
1. 云南的气候宜人
云南的气候是这次我体会最为深刻的。我在云南旅行的时候,恰逢天津正是高温的时刻,相比之下,云南的最高温不过 30 度简直是太过凉爽。
不过,虽然最高温不过 30 度,但在中午时刻,依然是比较热的,只是没有像北方是“烤”的感觉。而云南的湿度也不高,也不会有广东的“蒸”的感觉。
从气候上来讲,我觉得云南是比海南广东(太蒸),华北平原(太烤)要更好的。太宜居了。
旅行期间天津的天气, 来源 2345
旅行期间昆明的天气,来源 2345
不过,美中不足的是云南的紫外线强度也是太强了。云南 9 天,基本上每天都会喷安耐晒,整个旅程下来,我的小臂/脸上还是黑了一个色号。再去云南,我觉得我可能会直接选择穿防晒衣,物理防晒,最为靠谱。
2. 云南的风景美如画
云南的风光对我来说,可以比肩 19 年在西藏出差时的西藏风景。
蓝天、白云、青草地,还有洱海、泸沽湖这样的水,非常的舒服了。下面贴几张图,让大家感受一下(以下照片均出自原相机,无滤镜,但拍摄设备有 iPhone 13 和 Pixel 6):
从昆明机场到塘子巷时地铁上拍的天和飞机
昆明机场廊桥上拍的天空和机场
滇池风景
滇池水上风景
洱海边拍的苍山
洱海边
泸沽湖夜景(晚上八点左右)
泸沽湖草海
泸沽湖俯瞰
泸沽湖里格半岛
如此美景,我最大的感受就是,悔不该当初,我就应该带上相机来的! 这次出行为了方便,我只带了拍立得和手机,所以拍不出我所看到的美景,再来我要带上我的6400、广角镜、长焦镜,把这些美景都拍下来!
3. 云南的美食很特别
这次去云南,赶上雨季推迟,所以没能吃当地的野生菌(我很想试试见手青,据说是云南的顶尖美味)。但也还是吃到了一些好吃的/ 特别的。
比如:在喜洲古镇吃到了炸蝎子🦂。
比如,云南的粑粑,感觉就是各种不同的馅饼。
也吃到了云南必吃的鲜花饼,现烤的是真的太好吃了。
傣族风情手抓饭也少不了
总结
云南这次的旅行给我的感受还是很深刻的,先简单总结三点。更细节的,后面一篇篇来。
可以肯定的是,云南,我还会再去的。