From 54ed4fd19b4fbbabcfe83266e3d9f48d3c872ad4 Mon Sep 17 00:00:00 2001 From: onevcat Date: Thu, 23 Dec 2021 10:49:10 +0900 Subject: [PATCH] Add posts --- _plugins/swift-diff.rb | 15 ++ _posts/2021-12-22-2021-final.md | 166 ++++++++++++++++++ ...{2021-12-7-tca-1.md => 2021-12-9-tca-1.md} | 0 _posts/2022-01-04-tca-3.md | 22 +++ assets/images/2021/final-2021.jpg | 3 + assets/images/2021/tca-check-result.png | 3 + .../2021/tca-environment-test-failure.png | 3 + assets/images/2021/tca-slider-binding.png | 3 + 8 files changed, 215 insertions(+) create mode 100644 _plugins/swift-diff.rb create mode 100644 _posts/2021-12-22-2021-final.md rename _posts/{2021-12-7-tca-1.md => 2021-12-9-tca-1.md} (100%) create mode 100644 _posts/2022-01-04-tca-3.md create mode 100644 assets/images/2021/final-2021.jpg create mode 100644 assets/images/2021/tca-check-result.png create mode 100644 assets/images/2021/tca-environment-test-failure.png create mode 100644 assets/images/2021/tca-slider-binding.png diff --git a/_plugins/swift-diff.rb b/_plugins/swift-diff.rb new file mode 100644 index 00000000..da26505c --- /dev/null +++ b/_plugins/swift-diff.rb @@ -0,0 +1,15 @@ + Jekyll::Hooks.register :site, :pre_render do |site| + require "rouge" + + class SwiftDiff < Rouge::Lexers::Swift + tag 'swift-diff' + prepend :root do + rule(/^\+.*$\n?/, Generic::Inserted) + rule(/^-+.*$\n?/, Generic::Deleted) + rule(/^!.*$\n?/, Generic::Strong) + rule(/^@.*$\n?/, Generic::Subheading) + rule(/^([Ii]ndex|diff).*$\n?/, Generic::Heading) + rule(/^=.*$\n?/, Generic::Heading) + end + end + end \ No newline at end of file diff --git a/_posts/2021-12-22-2021-final.md b/_posts/2021-12-22-2021-final.md new file mode 100644 index 00000000..c7b358d2 --- /dev/null +++ b/_posts/2021-12-22-2021-final.md @@ -0,0 +1,166 @@ +--- +layout: post +title: "2021 年终总结" +date: 2021-12-23 10:30:00.000000000 +09:00 +categories: [一得之愚集] +tags: [年终总结, 照片, 书评, 物览] +--- + + +![](/assets/images/2021/final-2021.jpg) + +早晨拉开窗帘,被挡住的阳光终于像是冲开了壁障一般,肆意铺在桌面上。但是窗外被风吹得摇摇晃晃的树枝,俨然是在诉说着刚刚过去的这个夜晚是何等难熬。对它们,对我们,这个冬天似乎比以往都要寒冷,大家都盼望着春天快点到来。 + +习惯性地打开电脑,习惯性地泡上咖啡,突然想起已经实在是到年底了。[去年的年终总结](https://onevcat.com/2021/01/2020-final/)被我硬生生拖到了今年,而今年我也不想再如故蹉跎。在屋子里久了,脑子显然会不清醒,于是我决定披上外套,出门到院子里,呼吸一点新鲜空气。顺便顶着这冬日的寒风的清醒,来捋一捋今年的思绪。当然,在最后我也会整理一下今年看过的书单、动漫和玩过的游戏,算是历来年终总结的传统节目。 + + + +## 关于生活 + +疫情虽然不像去年那么热了,但也逃不出生活的主旋律之一。 + +金毛大统领曾经曰过“病毒会奇迹般地消失”,他在说这句话的时候,应该没有想到这个预言居然会在地球另一边的一个小岛上实现。前段时间日本疫情[突然好转](https://news.cctv.com/2021/11/04/ARTIcAOgQntPcN5jbnkETIns211104.shtml){:target="_blank"},据说研究团队给出的原因是 nsp14 变异导致病毒自我灭绝。不过我自己左看右看,其实应该也还是疫苗打得够集中,民众戴口罩够自觉,从而瞬间形成的免疫屏障所带来的结果。最近几天的感染数字其实又在抬头,随着疫苗“有效性半年”的大限将至,并且参考接种开始更早的欧洲的情况,我十分看好日本再次回到日增破万的阶段。全世界经过了这么两年的折腾,显然已经疲惫不堪了。现在[回望 2019 年的生活](https://onevcat.com/2019/12/2019-final/){:target="_blank"},就算没有踏遍东亚,至少也算是丰富多彩。 + +从中美贸易战开打,“世界村”就开始坍塌了,加上半路杀出新冠疫情这个程咬金,逆全球化的趋势更是无比明显。对我这种远在他乡的市井小民最深刻的影响,莫过于~~国内买的辣条都寄不过来~~两年半了都回不了一次国。各种变异株“你方唱罢我登场”,但看起来都是在往高传染低致命的方向演变。不过无论是奥密克戎的毒性多么不堪,但肉眼预计这种全球闭锁的情况,至少还要持续很长一段时间。只能说希望一切安好,希望能尽早回国看看。 + +其他方面就乏善可陈了。我似乎回到了以前教室食堂宿舍三点一线的生活中,每天接送小朋友们到保育园,偶尔去超市屯下货,然后就回家宅起来。也许这就叫平平凡凡才是真?我自认是耐得住寂寞的人,但偶尔也会希望路边不远处的野猫能来院子里晒晒太阳,隔壁的邻居能来一起吐槽一下时事。但现代社会就是这样残酷,别说人了,就算是猫,都要忙着去挨家挨户巡查地盘,完全没有意愿停下它那忙碌的脚步,也根本懒得看你一眼。于是,我也只好收起那期盼的眼神,退回到自己温暖的家里,然后用厚厚的茧把自己包裹起来:可能这就是性格使然,大概本性也很难改变了吧。 + +## 关于工作 + +一切顺利。今年虽然负责事情的总量也没变多,但升职加薪似乎倒也没少。相对于实际的代码工作来说,由于团队缺人,今年有更多的机会面试了一些人,于是对日本的 IT 和职场的情况有了更多的理解 (技术是真的弱也更有实感了)。在线面试和传统的 onsite 确实有很大的区别,面对屏幕的时候,由于音像延迟以及摄像头一般只能拍到面部,所以很难察觉到一些细节:我愿意把这些细节叫做面试中空气的变化 (你懂的)。这种细节的缺失,对于双方来说都有一点损失:本来光靠一两次面试,候选者和公司就已经很难完成对彼此全面良好的判断了,online 面试更是雪上加霜。幸好对于程序员来说,更多时候彼此面对的都是代码而非人,所以只要笔试代码干净漂亮,总还是愿意多给一些机会。降低了实际面试的要求和期望,转而增加笔试时候的比重 (或者说选择在笔试关更加严格),大概是最近面试时候的一个重要转变吧。 + +其他工作都有条不紊地进行着,日复一日的版本迭代,在空闲时间找机会重构烂掉的部分,偶尔进行一些技术评估和方向上的把控,保证项目能够长久持续做下去,不拖团队后腿,同时也能让同事们事半功倍,大家开开心心。 + +日本的互联网市场显然不像国内千变万化。国内真是魄力无穷,前脚双减教培大整改,后脚连续约谈各种大厂反垄断,几个大锤下来业界形态就完全改变。我都能够非常明显地感受到,国内正处出一个极端重要的转型期。最近几年的政策方向,肯定会给后续十年甚至二十年的社会结构带来想象不到的影响。类似的事情大概在日本这个一潭死水的地方是很难发生的。对于我这样混日子的底层白领来说,这失去了很多机会;不过另一方面,这种缺乏可能性的安定,也让生活相对平稳,焉知非福吧。 + +## 关于学习 + +每年充电还是要充的。 + +在程序设计方面,今年主要用 Rust 实际写了一点工具类的东西,大概也就两三千行的玩具,来改善开发流程。实际上选择更拿手的语言,比如 Swift,来做这件事情会更好一些,但是既然去年学了些 Rust,那有明显的钉子,自然是用新锤子比较开心。不过就像[这个知乎回答](https://www.zhihu.com/question/385243209/answer/1309383186){:target="_blank"}里说的: + +> 写 Rust 的感觉就像一个炼金术士在一整墙奇形怪状的玻璃仪器前小心翼翼的炼制内存, 又叫 : +> +> - 它现在去哪里了? +> - 装东西的一百种方法 +> - 猜猜它是什么类型? +> - 配平 & 的艺术 +> - std::mem: 置换与交换反应 + +实际使用时大概有一大半的时间都花在了研究 move 和 borrow,配平 `&` 以及 lifetime 上。应该是我很不熟练,所以会有这样的困惑。虽然能直观感受到内存使用上的小心谨慎,但是实际的开发体验确实有些痛苦。除非有对性能和内存安全非常敏感的需求,否则 Rust 的牛刀用来杀鸡,个人感觉是不太合适的。 + +Swift 也提出了关于 ARC 改进和 ownership 的[路线图](https://forums.swift.org/t/a-roadmap-for-improving-swift-performance-predictability-arc-improvements-and-ownership-control/54206){:target="_blank"}。第一感受就是,虽然表面上写的是 Swift,但骨子里真全是 Rust。暂时现在很难对这样的改动发表什么看法,只希望 Swift 团队能在易用性和安全性之间找到平衡吧。 + +今年闲暇时间学的语言是 [Crystal](https://crystal-lang.org){:target="_blank"},这是一门很像 Ruby 的语言,可以认为是为 Ruby 添加了强类型。其实 iOS 社区和 Ruby 有着不少天然连接,所以我对 Crystal 的关注也从很早就开始了。今年这门语言终于来到了 1.0,学起来要少很多坑。如果你有一些 Ruby 经验的话,大概半小时就能上手开始写东西了,非常方便。业界已经有不少为动态类型语言添加静态类型支持的先例了,比如 TypeScript 就取得了巨大成功。Crystal 在语法上向 Ruby 靠拢,添加编译期间的类型支持,大概也是想效仿 TS 对 JS 的成功。虽然“编译”比“转译”要讨人喜欢一些 (我估摸着大家大概都不会太喜欢 Babel 这样的东西),但是 Crystal 最后能不能被业界认可,可能还是取决于有没有像 Rails 那样的[明星框架](https://github.com/isaced/crystal-web-framework-stars){:target="_blank"}出现了。 + +在编程之外,我也开始了一些 Blender 的学习。趁着黑五用优惠价买了 [polygon runway 的视频教程](https://polygonrunway.com),并没有打算回到游戏行业,只是希望能够在需要的时候至少能在自己力所能及的范围内,做一些 logo 或者 3D 视觉渲染图。我自己有十年前的一些 Unity 经验,对于大部分 3D 和图形渲染的概念也都有所了解,所以上手速度还不错。视频教程虽然是全英文,也没有字幕什么的,不过就算当作工作之余转换脑筋,也还是很不错的。 + +## 关于阅读 + +今年人慵懒了,读的书不多,需要反省。技术类的书籍都很无聊,大多都是教程级别的就不写了;科普类的杂志订阅了一些 (牛顿科学世界和国家地理什么的),内容也都零零散散。还是多介绍一些今年看过的人文社科的书吧。 + +### [中国经济 2021:开启复式时代](https://book.douban.com/subject/35253106//) + +这个算是年货,每年都有一本的年度经济预测。其实也不算是预测,因为很多道理都是明摆在台面上的,很多事情也都是阳谋,但是即便如此,时机和趋势的判断还是非常重要。我个人是在年初看的,经过一整年后,在 2021 即将结束的时候,又有机会再翻看一下,会有一些不同的体验。最近的中央经济工作会议也对来年进行了定调,相信关注经济的同学肯定能比我看出更多门道。 + +### [2052:未来四十年的中国与世界](https://book.douban.com/subject/25704047//) + +这本是很早以前的书了,作者曾经参与了上世纪 70 年代的一本非常著名的书籍《增长的极限》的写作和修订。作者团队使用模型仿真的方式,预测未来世界的情况。这些预测并非精准,但五十年前的预测确实为指引社会的发展有着积极的意义。这本书继续预测了未来 40 年的情况:成书是在 2012 年,现在十年过去,我们已经可以来验证部分预测了:书中关于中国的判断,关于新能源的展望,关于碳中和的见解,俨然已经部分成真。可以说虽然世界经历了一些波折,但显然在按照这个预测运行着,这是一本趋势判断的好书。 + +### [隐秘帝国:美国工业经济和企业权力的兴衰](https://book.douban.com/subject/35469478/) + +关于科氏工业的发展历程和这个商业帝国背后的一些隐秘的故事。如果你根本不知道科氏工业,那就对了:低调的掌舵者牢牢把企业控制权掌握在手,并在几个“合适”的时机出手干涉政治和法律,让自己立于不败之地。不管是前期企业杀伐,劳资纠纷还是后面政治游说的手段,都能让人对“资本主义到底是怎么回事儿”有更深的理解。 + +但是说实话似乎有了更深的理解后,也没太大其他作用 XD...见仁见智了。 + +### [文明、现代化、价值投资与中国](https://book.douban.com/subject/34997975//) + +作者李录是芒格的资产管理人。不是很清楚芒格在最近这波阿里的暴跌和中概股风暴里亏了多少。不过如果相信价值投资,或者说想要不那么心惊肉跳地靠投资赚钱的话,这本书还是很值得一看的,毕竟人家是股神弟子是吧。 + +### [我真的坐不住了:骨科医生让你上班更轻松](https://book.douban.com/subject/35197174/) + +年纪渐长和在家办公的双重暴击下,最近腰已经到极限了。虽然买了“钱所能及”的最好的椅子和最好的床,也在实践各种站立办公和保持运动,但是浑身不舒服的情况还是在持续。这本书分成颈腰膝三个部分,对常见的疼法和原因做了解释,并用图示科普了一些对应方法。 + +专业医生的谆谆教诲,不敢不铭刻于心啊。 + +### [伯罗奔尼撒战争史](https://book.douban.com/subject/6794362//) + +在当前的环境下,最近大概经常会听到[修昔底德陷阱](https://zh.wikipedia.org/wiki/修昔底德陷阱)这个词吧。这本书正是修昔底德的毕生巨著 (虽然和红楼梦一样没写完人就没了)。斯巴达和雅典的这场战争波及整个希腊世界,也彻底结束了古典的民主时代,是一系列巨变的开始。 + +实际上读起来可能会比较乏味,但是如果结合 ~~UbiBug~~ Ubisoft 的[希腊旅游模拟器](https://store.steampowered.com/app/812140/Assassins_Creed_Odyssey/?l=schinese),就还挺有意思:可以对照书中的地名和人物,让整本书变得“真实和立体”起来,进而更好地理解和思考历史上这些人物所面临的环境以及他们所作出的决策的原因。 + +### [宋代物价研究](https://book.douban.com/subject/3365365/) + +史料和引用非常翔实,作者花了很多精力分门别类整理和记录了宋代的上到土地房屋,下至禽蛋鼠蛤 ~~(认真的!真的有专门的一节写蛤蛤!)~~ 的各类物价情况。没有什么过多主观评价,但是如果一边阅读一边笔记的话,可以很清晰地看到从北宋到南宋的货币变化情况,并横向地推测出当时的一般民众的生活状态。对比一下今天的物价也会很有意思。 + +当然了,用当代的经济理论和各种货币政策去套物价情况,肯定是不准确的,但是也有一番“开了天眼”去用超越时代的理论解读历史变迁的乐趣。 + +### [地球上最孤单的动物](https://book.douban.com/subject/34897038/) + +和小朋友一起看的插图书,制作精美,手感和书的味道都很赞。许多动物我之前都并不认识,不过同时也有很多像是长颈鹿这样的例子,让人很震惊。像是黑知更鸟和魔鳉之类的故事 (或者说知识) 我是第一次知道。 + +## 关于动漫和游戏 + +### 番組 + +和去年的情况有些类似,作为一个“被迫宅”,今年也追了一些番。不过大部分都没什么新意,纯粹~~打发时间~~休闲放松,每个也都写一句话点评吧。如果有同学有十分推荐的番,也欢迎在评论补充。(排名不分先后,推荐指数仅代表个人意见) + +| 标题 | 短评 | 推荐指数 | +| ------------------------------------------------ | ------------------------------------------------------------ | -------- | +| 急战5秒殊死斗 | 男主分配到的“能使用别人认为你的能力”的能力,本来是很出彩的设定,我抱着去看“人性中尔虞我诈的黑暗面”的期望追的番,结果叙事完全没能发挥出来。差评。 | 1/5 | +| 86-不存在的战区 | 带有一些种族主义的批判和思考。第一季很优秀,对男女主的刻画都很细腻,引人共鸣。但第二季就很一般了。单给第一季分数吧,第二季不太推荐。 | 4/5 | +| Beastars 第二季 | 故事接着第一季,继续讲述狼同学的成长历程。制作和第一季一样精良,不过和大部分第一季优秀的动画一样,后续想要超越前面的都会很困难。 | 3/5 | +| 女朋友and 女朋友 | 如何脚踩三条船的教程,但是不具有任何~~可操作性~~逻辑基础。只能不带脑子看个热闹,然而我看到中间就受不了弃坑了。 | 1/5 | +| 转生成为了只有乙女游戏破灭Flag的邪恶大小姐第二季 | 既然去年已经看了第一季,那今年顺便把第二季也看了算了。总体和第一季差不多,继续种田种到逆后宫开满。不是很有意思。 | 2/5 | +| 剃须。然后捡到女高中生。 | 本来以为是一个比较色气的番,结果反而一本正经地讨论起社会责任来,最后还发波糖...不真实,但不讨厌。 | 3/5 | +| 咒术回战 | 算是今 (去) 年的现象级番了,确实制作精良。少年漫嘛,热血就行了;何况还能看五条老师开挂。 | 5/5 | +| Love Live! Superstar!! | Love Live 系列的新 project,这回人数上终于收敛了一些,所以每个人的故事也能丰富一点。说白了就是去看唐可可的。唔哇..太好听了吧!(既然大家都是去听歌的,剧情的话也就那样了) | 3/5 | +| 约定的梦幻岛 第二季 | 第一季很优秀,那追第二季就是理所当然了。但是抱歉,我到中期实在看不下去了,这季真的崩成一匹野马了。 | 0/5 | +| 我们的重置人生 | 一般都是异世界穿越,但是这个是穿到同世界的大学入学,重新选择一条非社畜的人生。题材很有意思,也对开未来挂“帮助他人”和自我成长、价值实现等做了一些探索,还行。 | 3/5 | +| 圣女魔力无所不能 | 开挂的异世界穿越番。女主穿越回去开逆向后宫的故事,之前已经有“乙女游戏破灭flag”撞档了,所以这次来了个非后宫的纯爱类。嘛,甜度够就行了,我自己一个人的话可能不太会看。 | 3/5 | +| 关于我转生变成史莱姆这档事 第二季 | 萌王虽然小说长年霸榜,但是也顶不住这第二季的超慢节奏啊。其实中第一季最后就已经初见端倪了,但是第二季的表现却更慢。看睡着的时候都有。 | 2/5 | +| 打了300年的史莱姆,不知不觉就练到了满级 | 轻松日常,反正无脑,剧情也没什么不妥的(认真你就输了)。合格的用来减压放松的治愈番。 | 3/5 | +| 无职转生~到了异世界就拿出真本事~ | 传说中的穿越鼻祖,制作精良,名副其实。大概因为经费充足,每集OP都是正片,算是很少见了。人物刻画很细腻,角色有血有肉,世界观也很考究。推荐。 | 4.5/5 | +| Vivy - 萤石眼之歌 | 霸权社制作是真的强。一般来说讲人和 AI 关系的题材一旦铺开了都很难收得住,但是这部居然能在加入了时间悖论的情况下都整个圆得不错。几个小故事都让人很感动,歌也好听,可以说是今年的一个惊喜之作。 | 5/5 | +| 小林家的龙女仆S | 少有的第一季优秀第二季继续优秀的动画,火烧事件后京阿尼的第一部作品,一如既往的精彩。京阿尼并没有倒下! | 4.5/5 | +| 侦探,已经死了 | 故事是好故事,但大家都是冲着白毛侦探老婆来的。前两集把白毛的人设立起来了,但之后就盒饭下线,一直到制作方发现人气不足再搬出来。只能说,讲故事的方式问题很大。不太推荐。 | 2/5 | +| 佐贺偶像是传奇 第二季 | 第二季的开场真是莫名其妙,完全是为了重来而强行卖一波惨。不过整季的剧情也还可圈可点,也把花魁和 0 号的故事进行了补全。反正僵尸都能当偶像了,其他也就不要再追究了对吧,偶像番歌好听就行。 | 3.5/5 | +| 世界顶尖的暗杀者转生为异世界贵族 | 穿越后宫番,没什么营养。不过这种题材就不要带那么多批判眼光了,无脑爽就行了。 | 3/5 | +| 古见同学有交流障碍症 | 我不确定是否真的有“交流障碍症”这么一个病征,但是不喜欢说话,害怕和人交流的情况肯定是存在的。古见同学很幸运,周围有那么多友善的人,但现实中可能就不那么美好了。作为轻松校园喜剧可算优秀,同时多少也能让人有些思考。 | 4/5 | +| 国王排名 | 画风儿童向,内容小黑暗的优秀成长番。铺设悬疑、让人感动的剧情、主角配角各种人物的成长、慢慢展开的多条暗线,以及它们和主线剧情的交织,这些都引起了观众共鸣。虽然还没完结,但从编剧到演出都展现了很高水平的动画。 | 4.5/5 | + +### 游戏 + +去年年底天真地想着买 PS5,于是就早早把 PS4 Pro 拿去二手店卖掉了。哪里想到直到一年后的今天,PS5 都还一机难求。于是干脆彻底躺平放弃,连带着换新的索尼大法电视的计划也无限期推延了。感觉索尼从我这儿少赚了一个亿。 + +所以今年主要的游戏平台就只有 NS 和 PC 了,PS 再见。 + +#### Switch + +| 标题 | 游戏状态 | 短评 | 推荐指数 | +| ------------------------------ | ------------ | ------------------------------------------------------------ | -------- | +| 塞尔达传说 御天之剑 HD | 40小时,通关 | 虽然是冷饭重置版,但是解密部分的设计在今天看来也依然出色。如果没有玩过原版的话,还是非常推荐。 | 4.5/5 | +| 妖怪学园Y ~自由欢乐的学园生活~ | 35小时,通关 | 妖怪 Watch 的衍生游戏,日本小学生里似乎很火。基本玩给小朋友看的,让她们能有一些社交话题。 | 3.5/5 | +| New 宝可梦随乐拍 | 10小时,通关 | 抓拍宝可梦的游戏...比较没意思,但是小朋友们很兴奋,比较适合她们。NS 合家欢机子的定位还是很明确。 | 2/5 | +| 超级马力欧3D世界+狂怒世界 | 10小时,搁置 | 3D 其实没怎么玩,狂怒世界是打通了。如果马力欧奥德赛找月亮还没过瘾的话,可以把狂怒世界看做一个 DLC,还挺有意思的。 | 4/5 | + +#### PC + +| 标题 | 游戏状态 | 短评 | 推荐指数 | +| ----------------- | -------------- | ------------------------------------------------------------ | -------- | +| 极限竞速:地平线4 | 10小时,搁浅 | 车枪球基本都要打到骨折我才会入,不是特别的爱好者,所以也就是玩一会儿。感觉还可以,喜欢赛车游戏的人肯定连5代都玩很久了,我也不班门弄斧了。 | 4/5 | +| 双人成行 | 20小时,继续中 | 在和小朋友一起玩,不愧是年度最佳游戏,完美无瑕,无懈可击。如果你能找到基友女友老婆老妈儿子女儿甚至一条狗陪你玩的话,这肯定是培养感情的最佳选择,绝对不会让你后悔。 | 5/5 | +| 凯娜:精神之桥 | 15小时,继续中 | 一个有点东亚风的冒险解密类,前期节奏有点慢,但是拿到弓以后可以biubiu射,还是很爽快。制作团队和塞尔达有些“渊源”,所以有不少致敬塞尔达的解密,资深粉丝大概会觉得很亲切。 | 4/5 | +| 小白兔电商 | 20小时,通关 | 一个有点特殊的带有很弱的经营性质的 Galgame。紧跟时事,做了很多暗喻和关联,算是一个特点。因为时事性比较强,所以玩起来也会有些感触。今年比较意外和让人惊喜的作品,如果想要玩的话需要趁早,时事性不足的话大概可玩性也会降低。 | 4/5 | +| 展翅翱翔 | 5小时,搁置 | 制作精美的卡牌游戏,牌都是各种鸟类,据说可以帮助玩家认识鸟类特性。初期印象感觉需要计算的不多,作为卡牌的话不是太吸引人,不过插画还是相当精美的。烦躁了打开虐虐电脑,顺便听个鸟叫放松一下。 | 3/5 | +| 仙剑奇侠传7 | 27小时,通关 | 反正就是情怀,还是会买。画面进步很大,但整体的游戏素质让人沮丧。国产 RPG 一向是以剧情取胜,但是堕落到本作,连故事都讲不好,实在难堪。 | 1.5/5 | +| 刺客信条 奥德赛 | 40小时,继续中 | 偶尔心血来潮会想起这个游戏还没打完,每次上去都要重新熟悉键位和操作。不过反正就是希腊旅游模拟器,慢慢玩就行了。游戏是好游戏,但是莫名得让人不想推主线。 | 3.5/5 | +| 破晓传奇 | 25小时,继续中 | JRPG 的王道展开的剧情,属于那种按部就班的作品。没有太多惊喜,但是也没有什么太大缺陷的作品。探讨了一些平等啊解放啊之类的主题,反正主角团队都是一眼假的圣母就对了。 | 3.5/5 | +| 神笔狗良 | 2小时,继续中 | 好吧,正式名称 Chicory:A Colorful Tale。很有趣的涂色解密游戏,刚开始玩,不过看起来很治愈。缺点是暂时没有中文版 (毕竟独立游戏),不过英文也就是初中生水平。如果有 iPad 版会更赞... | 4/5 | + +写完这个,今年后面也就只剩假期了。我们明年再见! + diff --git a/_posts/2021-12-7-tca-1.md b/_posts/2021-12-9-tca-1.md similarity index 100% rename from _posts/2021-12-7-tca-1.md rename to _posts/2021-12-9-tca-1.md diff --git a/_posts/2022-01-04-tca-3.md b/_posts/2022-01-04-tca-3.md new file mode 100644 index 00000000..89c81b0b --- /dev/null +++ b/_posts/2022-01-04-tca-3.md @@ -0,0 +1,22 @@ +--- +layout: post +title: "TCA - SwiftUI 的救星?(三)" +date: 2022-01-04 09:50:00.000000000 +09:00 +categories: [能工巧匠集, SwiftUI] +tags: [swift, 编程语言, swiftui, tca, elm] +typora-root-url: .. +--- + +在[上一篇关于 TCA 的文章](https://onevcat.com/2021/12/tca-2/)中,我们通过看到了绑定的工作方式以及 Environment 在管理依赖和提供易测试性时发挥的作用。在这篇文章中,我们会继续深入,看看 TCA 中的 `Effect` 角色到底是什么,以及如何通过组合的方式来把多个 Feature 组合在一起,形成更加复杂的 UI 结构。 + +> 如果你想要跟做,可以直接使用上一篇文章完成练习后最后的状态,或者从[这里](https://github.com/onevcat/CounterDemo/releases/tag/part-2-finish)获取到起始代码。 + +## Effect + +Elm-like 的状态管理之所以能够保持可测试及可扩展,核心要求是 Reducer 的纯函数特性。Environment 通过提供依赖解决了输入阶段的副作用,比如 reducer 需要获取某个 `Date` 等, +而 Effect 解决的则是输出阶段的副作用:如果在 Reducer 接收到某个行为之后,需要作出非状态变化的反应,比如发送一个网络请求、向硬盘写一些数据、或者甚至是监听某个通知等,都需要通过返回 `Effect` 进行。 + +在 Counter app 当前的实现里,在 `counterReducer` 的所有 case 中,我们返回的都是 `.none` 这个 Effect,也就是说,一个什么都不做的 Effect。 + + +## Composable diff --git a/assets/images/2021/final-2021.jpg b/assets/images/2021/final-2021.jpg new file mode 100644 index 00000000..4db0fd4a --- /dev/null +++ b/assets/images/2021/final-2021.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79d056e4cc073122ea5a2601a64571eb6cd26437ac5eb5b72759fb86da8c5827 +size 283209 diff --git a/assets/images/2021/tca-check-result.png b/assets/images/2021/tca-check-result.png new file mode 100644 index 00000000..44b5a290 --- /dev/null +++ b/assets/images/2021/tca-check-result.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4685b2285f8d033fb0538ce3a5e061ff8abec40d13966fe17f36418b8a1fca +size 11594 diff --git a/assets/images/2021/tca-environment-test-failure.png b/assets/images/2021/tca-environment-test-failure.png new file mode 100644 index 00000000..69ad6a15 --- /dev/null +++ b/assets/images/2021/tca-environment-test-failure.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d458ea8b38bb0a36db6b8e040dcd18a8a2e2585ee302c9adea13301985a79c11 +size 12233 diff --git a/assets/images/2021/tca-slider-binding.png b/assets/images/2021/tca-slider-binding.png new file mode 100644 index 00000000..834f621b --- /dev/null +++ b/assets/images/2021/tca-slider-binding.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f23e19c7098de9fe4871796dae41513cf66d07f18526abadf2d790e660956f7f +size 9102