bookmark_border遗落的南境2,3:《当权者》,《接纳》

在我忘掉之前记一下(剧透):

整个三部曲,情节只有一个:怪异的X区域扩张。第一部《湮灭》从12期勘探队的生物学家视角探索了X区域;第二部《当权者》从新来的主管的视角探索;第三部《接纳》则分别从前局长(pre-Annihilation)、灯塔管理员索尔(pre-Annihilation)、主管、生物学家副本幽灵鸟的视角,从不同的时期来讲更多的关于X区域的故事。当中插有一段生物学家在X区域的笔记。《接纳》中,我们从各个角度来看了X区域,知道了多一点它的属性,但是仍然没有完全解释它。

三本读下来,最喜欢第一本。我好像不止一次喜欢不完整的故事:我最喜欢的科幻小说Rite of Passage,最初读到的是不完整的版本,已经是非常喜欢;另外一本没有解开未知之谜的小说是Rendezvous with Rama。如今的科幻小说和电影非常多,架空设定,或者是真的科幻设定,早就看得不稀奇了。反而我看到这种设定不完整的会觉得喜欢。How you get there is worthier than the destination. 阅读这件事本身是沉浸其中的一段旅途。像《魔戒》这样的作品,我也是从对霍比特人的生活的描述开始才能进入的。如果过程中一直能被吸引,最后还能得到一个神奇的世界,肯定是很rewarding。然而就算没有神奇的大世界,享受过程也是很美好的。特别是,科幻这种类型,就是要打破已知,open our mind to the unknown。

That said,《遗落的南境》三部曲的路程,我并不是都很享受。生物学家no nonsense,不轻信,从小是有点孤僻的孩子,来X区域还想要查自己在上一期勘探后回来变了个人的丈夫。再加上是第一本书,所以读起来挺有兴趣(而且很多地方很惊悚,后两本书好像不那么恐怖了)。第二本书加入了主管这个角色,穿插他的过去,失败的密探工作,外公和妈妈的阴影,艺术家爸爸等等。我对主管这个角色完全没有亲近感,对他没兴趣,跟着他一路走来感觉很累。第二本书还穿插了南境局的其他人。我们看到第一本书里的心理学家其实是局长。新来的主管查看她的笔记、办公室的细节等等。副局长格蕾丝对新主管很排斥,后来我们知道这背后有总部的斗争因素。还有有点不正常的科学家维特比,第三本书里我们看到他其实也去过X区域。第二本书里很多摸不着头脑也没太大兴趣的地方,第三本书都有交待。第三本书里我有点喜欢索尔和局长线。我喜欢这两个角色的关系。然而这点喜欢,也被“为什么不好好研究一下到底发生了什么”给冲淡了一些。索尔讨厌科学降神会的苏珊和亨利,但是在他面对过未知之后,为什么不多盘问一下他们呢?局长担任局长期间,和总部(第一期勘探队唯一幸存者)洛瑞之间有矛盾,但是难道他们不是有共同目标也就是想要搞清楚X区域吗?我很喜欢这个系列里“过去与我们同在”的感觉。但是人物之前的超级不合作我真心看不懂。第一部里,生物学家也是不合作类型,但是她好歹还是把求生放在第一位,读起来感觉合理一些。

另:因为最近我自己写了一个小fic,所以对写故事有点想法。这个想法就是,我还是喜欢以描写细节展开别的东西(情节、议论等等)。你要写的东西在脑子里,该有的细节一定要适时跳出来。

另另:Annihilation将被Alex Garland改编和导演成电影。我很难想象这样不完整的故事被拍成电影。我感觉三部拍一个电影可能性比较大。如果是三本书一部电影的话,我感觉Oscar Isaac大概演(我不太喜欢的)主管。我很喜欢的Jennifer Jason Leigh将演心理学家/局长。目前电影已经进入编辑阶段。但是cast只公布了JJL和Natalie Portman会演生物学家。如果只拍第一本小说的话,那Oscar Isaac大概演生物学家的丈夫(戏份很少而且是个假人啊,感觉不会有什么好看的)。

bookmark_border搬旧文:Rite of Passage

发现自己博客上没有贴。把发在豆瓣上的评论贴过来。(竟然已经是十年前读的这本书了。。06年在科幻世界上读的,08年终于读了完整版。)

我很喜欢这本书。这个故事从一个很少见的角度触动了我。

Rite of Passage的故事从12岁的Mia身边具体的小事说起,说到小小的她的烦恼和快乐,说到她对未来和未知的恐惧。故事的设定是地球消亡之后的人类,部分在它星球上殖民,部分生活在飞船上。飞船人很有理由认为自己比星球人高明:他们保存了地球文明,他们还懂得技术、科学和数学,但是他们的星球人同胞却因为忙于生计已经退化得很蛮荒了。地球的毁灭主要原因是自由生育造成人口过度膨胀,而飞船的空间更加狭小,飞船的政策是严格控制生育,控制着他们的三万人人口不增加。而每个满14周岁的孩子,都会被投放到一个蛮荒的星球上,要靠自己的能力生存一个月,如果能回来,他们就是飞船上的成年公民了,这,也就是非常戏剧化的“成年仪式”。我们的主人公Mia对殖民星球怀着很深的偏见和恐惧。其实她对任何陌生事物都很恐惧,她害怕搬家,害怕离开父亲。于是故事首先围绕着搬家的Mia展开,她渐渐学会摆脱对他人的反感,学会不过于依赖自己已有的资源。

在准备“生存考验”的过程中,Mia身边发生了很多事。我们看到Mia的出发点经常是很偏颇,但是她具有天生的好强精神和自然的同情心,这使她一步一步走向了她自认为正确的方向,而这些方向,经常和她自己原先的相反。

而 “生存考验”期间,一切都和她在飞船上的非常不一样。我们仍然是从Mia的角度看到那些事情的,但是我们能看到,其中很多是超过一个十四岁孩子的理解范围的。Mia还是依赖她的好强精神,度过了可能是飞船史上最残酷的生存考验。这时候,她原本狭隘的小小心灵,终于能包容星球人了。她逐渐一步一步地筑立了自己的思想,自己的世界观。她的心灵一步一步地扩大,一步一步地宽容,但是她一直是一个敏感得有点尖刻的人。最后她不得不开始反对她作为飞船委员会主席的父亲的政治主张。对于这样一个人物的这样一段心路,我真是感到深深的共鸣啊!

这本书的语气非常平实,但很吸引人。整个叙事和讨论的部分穿插非常自然。读来有一种想一直不断地、永远地读下去的感觉,一方面非常想读下面的情节,一方面又非常不希望它结束。

我第一次读这个故事是在2006年的科幻世界译文版上。后来看到很多人评论说这篇小说故事很不完整。(比如开头说了“我现在的丈夫”后面没有明确提到就是Jimmy Dentremont。)我当时天真地以为这样的不完整就是作者的选择,我很满足这个故事被截掉的版本。后来,我在网上看了英文的评论,发现的确提到了我看的版本上完全没有的情节……最后我还是决定买了一本原版来看。

看了完整版之后,我不得不惊呼——虽然情节上,载于科幻世界的版本只剪掉了20%(被剪后看起来还是很连贯),但是由于最关键的最后一部分被剪,整个思想就剪去了70%。整个故事是这样一个特征:越往后面,随着第一人称Mia思想的开阔和成熟,故事的思想和视野也就更broad。看完后最让我惦记的,也是最后一部分尾声。

在作者Alexei Panshin的网站上,他发表了他写这部小说的前后。他年轻时是Robert A. Heinlein的粉丝,他曾经给Heinlein有过一些书信来往。直到有一天他照常第一时间冲去读了海因莱因的某部新作(的广告貌似),他开始怀疑起来。他怀疑的问题是:爱国的热情是否能成为对他国使用那个核武器的正当理由。他把这个问题写信去问海因莱因,这回,海因莱因的夫人代为回信,说大牛在写新书没时间和你通信。Panshin的这种对海因莱因的极度崇拜到不得不反对的态度,和 Mia对飞船的对星球政策的转变是很相似的(而最后的这个转变,才是书中最重要的,从某种意义上来说,前面对小问题的转变都是为此做铺垫的啊!这就是为何我认为原著的思想被削减了70%的原因)。Pashin的这种不断检查既有原则的态度,实在是太深得我心了。

我看到有评论说,该书的政治观过于简单。目前我觉得,有了那些转变,它一点也不简单。多少人抱着固有思想永远不会想到去怀疑它们。这本书获得1968年星云奖的时候,作者 Alexei Panshin只有28岁,我觉得这还是个年轻的年龄,因此我不知过个几十年我再来看,会不会也觉得小说中的观点过于简单。我不知道我以后会怎样改变,但是我知道我会一直改变。

—-

下面是之前发在Goodreads上的评论

I read Alexei Panshin’s Rite of Passage again. For some reason, this story is very close to my heart. It’s a story of a young girl, Mia, living in a floating spaceship, facing the Trial of her society. This Trial is the mark of adulthood in their community of thirty thousand, their ‘Rite of Passage’.

The story began with Mia’s little joys and frustrations. And behind that, she had her fears and prejudices. I always love ‘coming of age’ stories. Usually I just enjoy reading about the growing potential of a young man. But as the story goes on, Rite of Passage becomes much broader than an ordinary coming of age story. I mean broader in the intellectual sense rather than things like epic action with is usually expected of sci-fi stories.

Mia’s growth is a course of continuing discarding her own previous convictions and embracing new. At first She had plenty of reasons to dispise other kids. She gradually came to having peace with this sort of unpleasantness. Likewise, she and other Ship people had plenty of reasons to dispise Planet people. But obviously people as a group comes to a change much slower than an individual does. As an individual, Mia came to her own conclusion of how to deal with planet people. I read with enormous joy about how she became more and more open-minded. All that was required is that she had a vigorous spirit and was naturally compassionate.

I have to say that this change of previous beliefs and gradually opening up the mind is the center of growing up, at least that’s how I have felt. I can’t think of any other fiction that deals with this theme so well. Appearing in sci-fi form gives the story a sense of neutrality, not siding up with anything now in this world. That’s one of the advantages sci-fi as a form can provide, which writers should utilize more.

I even love one of the minor implications of the story. It is implied that living self-content like those in the Ship do, without feeling attatched to their primitive Planet people, the society seems to be going nowhere. Creative activities such as writing a novel, or creating art ceases to happen.

The author Alexei Panshin has put his ‘making of’ this novel on his website Abyss of Wonder. It largely concerns with how he was fancinated by sci-fi because of Robert Heinlein’s early work. And later Panshin had serious problems with them. Panshin says in ‘Robert Heinlein and Rite of Passagethat as a child he read Heinlein and was led to the question, ‘can it be that the present human culture is still in its adolescence phase? do the grown-ups still need to grow up?’. Later he found the answer to those questions is yes as he encountered the problems with Heinlein’s work.

The problems Panshin met was that though the West has plenty of reasons to dispise and feel threatened by the Communists, do they have the right o distroy them by atomic bombs? It’s very like Ship and Planet relationship in Rite of Passage. And in RoP, Panshin made his points more eloquently than I can put here in a review.

Maturity consists of the ability to sort out portions of truth from accepted lies and self-deceptions that you are grown up with. If you never made the effort, whatever you are, you are not mature.

bookmark_border写了一篇文

一天早上躺在床上读了跟的几个博客的”Trials of the Darksaber”的评论。看了那一集之后所有人都爱上了Sabine。我一直希望Rebels的作者能把Ezra的成长写得更丰满一些。然后,各种思绪集中到一起,起床后写下了这个fiction。算是我的第一篇文。

虽然我有过好几个觉得写成fan fiction会很好的点子,但是我的写故事编故事的能力实在太弱。这一篇能写成,我想是因为1)不需要编故事,只是那一集的延伸;2)一直沉浸在星战世界里,有很多细节能在我需要的时候冒出来。

重看的时候发现,他们其实是在外面camp了好几天。所以我的“Ezra回基地放东西”那点plot也站不住脚。不过不管啦(转眼改成那天他们决定回基地)。

下面是文的连接——老少咸宜,和canon无冲突。暴露一下AO3账号。

Ezra’s Revelations (1384 words) by MaraSue
Chapters: 1/1
Fandom: Star Wars: Rebels
Rating: General Audiences
Warnings: No Archive Warnings Apply
Relationships: Ezra Bridger & Sabine Wren
Characters: Ezra Bridger, Sabine Wren, Kanan Jarrus, Fenn Rau
Additional Tags: Post “Trials of the Darksaber”, Canon Compliant
Summary:

Sabine was not the only one who learned a lot from “Trials of the Darksaber”.

bookmark_border意识流工作感想

一直在想要把工作的感想给整理一下。看到这篇文章里写的效率低的开发团队的几个特点/分类,我们公司的膝盖已经戳烂了。(看到“保姆式开发”几乎从不说脏话的我嘴里迸出了卧槽二字。)

工作感想还没整理。现在意识流一篇帮助自己整理。。。

我并不是很想做开发。在逻辑思维方面我比较迟钝。做开发的话我的优点是愿意尝试和不assuming(简直paranoid)。只要有文档和尝试的环境,搞各种script我是没有问题的。我另外的长处是对BI数据库比较有经验。我对Application比较没经验。我们公司的BI产品,还有一部分是application的成分(客户使用界面),想想我在现在公司的5年,最大的收获大概是瞥见一眼application开发,我们公司的开发水准很烂,但看到开头提的那篇文章之后我想我也是得到了一些关于烂的思考。

我喜欢捣鼓script,我更喜欢借用我会技术又会沟通的能力,做一些桥梁工作。工作这么多年来,我见过的人里面,除了极少数人,沟通和技术结合没有我比我强的。当然比我会说话的人多了去了,然而我认为实质的沟通的基础是你要懂你沟通的东西。我也和销售打过交道,有的销售是非常有魅力的人,然而他只负责散发魅力,说实质的东西的时候必须站在他的角度才能沟通。懂数据,懂技术的人,能像我一样沟通的人很少。That said,我加入现在公司的初衷是做这样的桥梁。我加入的是operation部门。我们的operation部门不仅给产品上线、monitor它们的运作,还要保证数据的质量并处理各种客户的咨询。由于我擅长看数据和写脚本,我加入不久就写了一系列脚本帮助monitor我们当时几百个instance(如今已经超过一千个了)。这里对我的技术是有提高的,在之前我只写过ETL的SQL和简单的shell script,连个DB store procedure都没见过。但这家公司的ETL是基于SQL Server的DB SP的,我一边理解产品,一边写出了那些脚本。开发中有些愿意讨论问题的,我也有时候找他们请教。Operation部门工作了两年,我意识到我们产品的问题这么多,其实需要的是开发质量提高。中国办公室的开发老大愿意让我去开发部门继续做更深的技术支持,我就答应了。因为在operation做得再好,也是我已经做了两年的事情了,做得好不再值得骄傲。当时在我看来开发部门有很多事情我可以帮助做好的。比如,开发部门的沟通太烂;大部分开发查数据的技能比我差;大部分开发互相之间都在鸡同鸭讲更不要说和别的部门讲了;大部分开发都不知道operation是怎么deploy和monitor我们的产品的,也不知道客户一般都喜欢干什么。

到了开发部门,我的第一件事是理解release流程。我很惊讶地发现,给定一个特定的时间,在产品环境的某个版本发现了问题,给开发开CR去修复的时候,修复哪些版本这个问题是没有定论的。每一次开CR都需要问release manager,而得到的答复也没有确定的准则。在开头引用的那篇文章里,对此有精确的描述:

配置管理上的问题。对于源代码的配置管理,其实并不是一件简单的事情。配置管理和软件和团队的组构的结构非常有关系。我看到过两种非常没有效率的配置管理,一种是以开项目分支的方式来做项目,同时开很多分支,分支开的时间还很长,导致merge回主干要花大量的时间去解决各种冲突,另一种是N多的团队都在一个代码库中做修改,导致出现很多复杂的问题,比如某团队的改动出现了一个bug,要么所有的团队的功能都得等这个bug被修复才能被发布,要么就是把所有的改动回滚到上一个版本,包括其它团队开发的功能。很明显,软件模块的结构,软件的架构,以及团队的组织形式都会严重影响开发效率。

我们的情况是上面说的很多module在一个库,一个bug会导致所有的无法上线。我们情况的区别是,我们的产品环境压根从来没有回滚上一个版本的功能。很长一段时间我不理解release management对QA提供ETA的要求。ETA方便给客户期待,然而我找QA问ETA的时候经常得到的答复是这样的:如果开发下周二之前把修改提交,那么我们的ETA就是周五。然后周五的ETA就被宣布了。根本不给“开发如果没有来得及修改提交”或者“提交后又测出bug”留余地。

当年我们还有一个非常低级的问题:我们的产品有一个版本号,在部署的server上,代码存在这个版本号为名字的路径下。后来bug越来越多我们变成两周更新一次release,但是版本号不变,这就造成如果不具体看代码你无法知道你面前的版本X是不是最新的版本X。对于DEV和QA来说,只要改好了代码,测试通过,他们就任务完成了——我们deliver了一个修改好的版本X。当时出了一系列问题都是宣布release了但实际上并没有更新到deploy server上。因为DEV和运维之间当时几乎一直在鸡同鸭讲。后来终于认识到需要更新到server上之后,还有很多问题。有些bug需要更新代码后重新deploy,有些bug只要更新代码就好,还有些bug重新deploy后还需要跑一些一次性的脚本。谁来跑脚本这件事一直没定下来。理论上让开发去产品环境deploy是很糟的。但OPS的技术能力有限,让他们跑命令行也经常很危险。还有的时候跑了一次性脚本之后代码没更新,下一次deploy问题又回来了。作为战斗在第一线处理产品问题的我,这样的事情见得太多了,我经常跟老板反应,但是总是‘解决问题更重要’,解决了以后大家就舒一口气又去忙各自的了。

那篇文章里的“保姆式”开发和我们的现状最像。

所谓“保姆式”软件开发就是——我只管吃饭,不管做菜洗碗,就像——衣来伸手,饭来张口的“小皇帝”一样,身边有一堆太监或宫女,不然生活不能自理。这种情况经常见于开发和测试,开发和运维间的关系。很多公司,测试和运维都成了开发的保姆。

我就能看到,很多开发快速写完代码后基本上都不怎么测试就交给QA去测试了,QA一测,我草,各种问题,而只会做黑盒的QA并不能马上就能确定是代码的问题还是环境的问题,所以还要花大量时间排除不是环境问题,才给开发报BUG。很多问题,可能只需要做个Code Review,做个单测就可以发现了,硬要交给QA。运维也是一样的,开发出来的软件根本就没有考虑什么运维的东西,因为有运维人员,所以我才不考虑呢。

我们公司的产品deploy一个的代价非常大,有几百个参数,好多机器需要权限。deploy过程中如果遇到错,需要各种技术能力来分析解决:DB的,java的等等。所以我经常看见开发问QA要环境进行开发。产品环境经常遇到的问题是,你改了一个代码解决了你的问题,但是这个代码在deploy别的类型的instance之后会有问题。当年我做开发的时候非常paranoid(当然因为我技术基础差),我一定要把我想到的所有情况都跑一遍才放心。我们的开发经常会说:“这个改好了让QA去跑一下吧。”,或者在你问他“XXX在YYY的情况会不会有问题”的时候经常得到的答复是,让QA去试试吧。

文章中说的watchdog式开发,我们也是很多。

什么是WatchDog?就是说——为了解决某个系统的问题,我要用一个新的系统去看着它

  • 我的系统架构太复杂,出了问题不好查找。咋办?那就搞个专门的特殊的监控系统吧……
  • 我的系统配置太复杂,容易配错了。咋办?那就加一个配置校验系统吧……
  • 我的系统配置和真实的情况有时候可能会不一性。咋办?那就加一个巡检系统吧……
  • 我的系统测试环境和线上环境有时候会搞混了。咋办?那就为线上环境加一个权限控制系统吧……
  • 我的系统有单点,那就加个负载均衡器吧,负载均衡器的单点呢?那就再加个等价路由器吧……

因为我们的系统很难从整体来把握。整个公司大概只有三个开发能从架构角度了解全局。而其中最重要的一个人,是个asshole。整个公司的人,素质好一些的都在尽力和他合作,素质差一些的整天在骂他。所有人都对他多多少少有点无奈。我曾经被他说哭过好几次。其中有时候的确是我的理解有误,如果我被直接告知我哪里错了,一般我会看我的错误并且觉得很羞愧。但是这个人指出错误的时候从来不说清楚,而且带着很挑衅的不客气语气,说着读不通的英语(印度人的英语其实是很好的,但是他一直散发着一种“我不care发表清楚的沟通”的气场)。

所以呢,开头说了,我来公司的第一件事就是写了个monitor系统,也算是watchdog的一部分,不过这是在产品之外的。我觉得很多真的产品开发,也是对他的整体设计不得要领无法写出integrate到整个产品的好东西,而是尽力保护自己开发的部分,即使冗余也不敢信赖已有的东西。我曾经听一个已经离职的开发经理说过,那个架构师的代码,即使他们看到有可以优化的地方,他们一般也不敢提建议。

虽然我并不下决心想做开发,但是看看coolshell博客,简直觉得振奋。也许我对技术的热情也是有点“希望保持业余兴趣”那样。按照引用的这篇文章,我并不是个合格的开发。我会的技术太少。专攻技术的问题在我们公司的开发中也很突出,甚至明明都是ETL的东西,A开发的东西B就觉得自己没必要去了解。更不要说大部分BI开发不懂java的部分,而绝大部分java开发的SQL水平在我看来简直小儿科。在这个工作中,我也试练了我的学习能力。写SP对我很容易(来自SQL和shell背景);查询MDX对我来说有点难:我按照MSDN上的教程自建了一个cube(当时我要就建cube的权限问题问了一个当时我们的cube专家,他都并不知道根本逻辑,只是建议我都用admin账号)、读了MDX Solutions的前几章;另外学会的是powershell。Powershell我不能完全说学会了,没有官方教程和完整的说明书(MSDN的结构太恶心了,PS的manual是和.NET的混合的),我看了powershell.net上的一个非官方教程,对变量、control flow、function、object等等理解了。但是后来看代码的时候还是看到了我本来不知道的东西。微软的环境很封闭,文档很难懂,依赖微软产品的我们公司应该也是直接间接受了影响。不过PS似乎代表了微软的进步(终于有比较成熟的script语言了)。最近又写了一点点python的脚本。

我愿意学习,也希望在厉害的开发环境工作。然而我更大的能力是沟通和英语水平。我这个没有计算机知识基础的人进入这个行业有一定的巧合,也一部分是因为这个行业发展快,还需要人手。看看我能找到什么机会吧。

bookmark_border这两天工作上发生了一件事,让我很难平静

这两天工作上发生了一件事,让我很难平静。

过年前最后一天(我买了五点半的电影票打算早走的,我知道过年前是最后能刷R1的时候)。下午三点的时候发现来了一个High priority的ticket,是一个中国cube的ETL挂在cube process上了,是比较基本的问题。我就先开了profiler看process的错误。很快发现是process measure group P的时候报了个numeric overflow bigint的错。然后我就想办法在那个partition找哪个数据的值超长了。看了一下P的view的定义,只看到一个column是bigint,再仔细一看这个column的定义,我记起来别的cube的这个column曾经也出过一样的错。这个column的设计本来就有点奇怪,把store_key, item_key和一个measure X的值concat起来(当中有2个0间隔)再转bigint。按照我们系统目前的store_key, item_key的位数来看,measure X只要超过两位数就会overflow。然而当时PM说,这个measure只能是0到5六个值。估计是开发看了这个需求,也没想过可能需要处理超长的效果。(去年11月的时候我第一次遇到这个问题时,我的第一反应是把这个问题给DEV,因为这样危险的设计在我看来很可怕。在和QA确认的时候才得知还有限制0到5这回事。)

当时我急着赶电影,我就回复了一下:“这和ticket XXX是一样的问题。X数据只能是0到5。可是现在我们有42002这么大的数据。请检查一下是不是又重复load了文件。我已经关闭了这个silo的ETL。”这一句重复的文件的猜测,是因为去年我检查这个问题的时候,时间比较充裕,就顺便检查了一下数据源的历史记录,发现了重复的文件。实际上,这一次不一定是同样的原因造成数据过大。然而我想,是个operation(他们天天看数据,天天set up文件load)都会明白,接下来就该是他们去修复数据了。

春节值班的时候,我特意留意了一下这个ticket,我惊讶地发现他们没有更新。我猜是因为没人看见我说我关了ETL,所以它没有继续报错,所以没人注意到这件事。于是我把ETL又开了。(我们的产品环境就是这么混乱。)

隔了几天我又值班,发现operation看到了这个ticket,然而第一个回复是(一个脑子比较僵硬的中国男operation):“我没有看到有重复文件,所以根XXX应该不是一样的问题,请再看看为什么cube process挂。”在我之前值班的开发同学M回复说:“为了跑过去,我已经从DB里删了数据,并且把删的数据存在了table_name_bak里。”这里的table_name是我们基本的measure group A。接下来,是operation老大吩咐美国的operation把坏的数据用正确的方法unload掉。

年后上班这个ticket仍没有解决,并且变成了urgent回到我头上,而问题还是原来那一个。不过加上了最近有过attribute变动,变成如果要process,是把所有partition都要process才能过去。这个cube属于之前中国特殊数据load,为了缩短上线时间,他们把这个retailer的数据全都做了redundant load,实际客户看到的数据只有我们load的数据的十分之一都不到,所以full process很慢。负责monitor新数据load的operation女生不知道这些,因为是周一ETL总体很忙,她无法在数据源unload数据。于是她一个劲催我也删一下数据嘛。

我的各种本能都告诉我不该在产品环境删数据。以前我的经理是BI开发的经理,如果他在我会跟他聊几句,肯定会避免发生接下来的事情。现在我的经理是APP开发经理,他的BI经验其实不多,我就没想跟他聊(实际上他虽然看所有的urgent ticket,但也并没有明白我实际上后来犯了个错)。

事实就是,我知道这是numeric overflow;我知道>5的数据都不对(进了cube也会因为dimension没有而不显示),虽然如果是8这样的值还不会造成overflow报错;operation一直在跟我强调过年值班的开发M同学删了数据后面就process进去了。“你看他那时回复的呀!”我有一种如果我不删数据,我就没有M同学有能力的压力。(实际上,M也是有技术但没有产品sense的人,在BI的方面,经验也是比我差一截。然而他是开发我是产品技术支持,而且他是男生,男生的无知自信对技术和产品sense差一些的人来说,就等于强大,不幸的是我们公司都是这样的人。)我还有一半的思绪在想如果要对这么大的表删数据,性能会不会很可怕。

结果我就按照M说的,把measure group A的不合法数据删了。

接下来是7小时的full process。

昨天早上上班的时候,我看到晚上的process挂了。我幡然醒悟:造成overflow的数据是measure group P的。P是从A算出来的。等于我删数据并没有帮助数据process成功,反而耽误了一天的时间。

我把这一点告诉了operation的女生,她还疑问:为什么M删了以后就process成功了呢?要么是M其实删了P的数据。如果要删P数据,鉴于它的计算逻辑非常复杂,如果暴力删数据会造成什么情况我说不清。我当时是觉得M一定是删了P的数据,因为他对P的逻辑肯定没有我熟悉,所以因为无知无畏而删是有可能的。后来仔细看超级长的ticket,我才发现更合理的解释是美国的opertaion当时unload掉了错误的数据(P会在ETL中重新计算一遍),只不过新的错误数据又来了。请operation按照正常的手法unload数据才是正确的做法,是我一开始的建议,但是在催促和担心自己看起来没有男开发一样的本事,再加上没有人来管我,我做了一个错误的操作。

现在,在我的坚持下,operation终于退回去修了数据,现在cube process终于跑过去了。

这个错误并没有引起任何关注。这件事的后果只是,本来delay了7天的数据多delay了一天。我的经理没发现我做错了,operation还没有来责怪我,我估计也不会。因为在我们其他的产品支持工程师里,比我这个错厉害很多的错多了去了。我一直在配合大家工作的同时,默默尽力坚持我的标准。这个错已经不是第一个让我觉得“啊,我现在怎么标准降低这么多啊?”的事件了。

一方面没受到指责,也更说明管理的混乱。另一方面,我自己也很难原谅自己犯了一个可以避免的错误。我从一开始对问题的鉴别,和对解决问题的建议都是正确的。我们公司的管理太fucked up才造成我从这么正确的起点开始都能走到错误的操作。

bookmark_borderMay the Force of Others Be with You

之前就觉得,Rebellion时期是星战最容易被人喜欢的时期。也不知是不是真的因为大家更喜欢正传,R1和Rebels的作者进入这个时期,都发挥得超级好。

选择说这个时期的故事,显然目的之一是因为喜欢正传而想讲更多它的故事。所以某种意义上来看,简直可以说是为了致敬而致敬。然而电影的主线剧情却非常能站住脚,也许是这个时期的故事比较容易写。就像我在Rebels S1,2那篇日志里说的一样,只需要假设帝国非常强大,主角只管勇敢反抗就好了。我很喜欢Rebels动画片,然而它的20分钟一集的限制,导致他们无法把事情讲复杂。比如他们要去infiltrate一座帝国监狱,他们就能悄悄进到门口,灭了几个白兵,就进去了(然后发现inquisitor在里面。。。)而2个多小时的电影可以讲复杂得多的故事。首先,他们要听说有个帝国飞行员叛变了;第二步,他们要先去Wobani把Jyn救出来,一起去找Saw;第三步,要逃出Jedha,继续去Eadu找Galen;未能说服反抗联盟去Scarif偷死星plan,小队决定自己去打。最后一战也有很清晰的策略:要引开暴风兵;要告诉在近轨作战的义军援军攻打shield;为了传这条消息,Bodhi和地面队员们冒着枪林弹雨打开了通信;而太空站里,也是采用了不寻常的策略:一艘小船撞向引擎被灭的歼星舰(真实展现了hammerhead这个名字的作用),导致两艘歼星舰撞击坠向shield generator。。。这一切逻辑都很清晰。仔细想套路也没有出星战的“打shield generator、打droid controller、打main reactor”三大目标,然而剧情却很坚实。

整个主线故事引人入胜。主角crew里几个人,个个性格不同,各自有各自的可爱之处。这和Rebels一样,也能让人想到Firefly。(特别是,还有Alan Tudyk这个联系。I’m a leaf on the wind.)两个小时多的电影,我们认识了这些人:rebel veteran Cassian,出场手刃一个线人就是告诉你,这部电影不是童话般的星战,而是另一种风格,我们都在脑中脑补的残酷战争环境的星战;Jyn,虽然以罪犯身份出场,不愿意合作,但某种意义上来说比Cassian要更innocent和勇敢;Bodhi,叛变的帝国飞行员,典型的看似软弱,实际上只是他们的决心更坚定所以需要更多思考的那种人;Chirrut,疯僧类型的武士,对原力信仰坚定;和他相反的Baze,显然就和他一对了。最出彩的是K2,即使换了没有表情的机器人脸,Alan Tudyk的幽默感还是能散发出来,或者说,Alan的dry humor和sarcasm太适合这个角色了。我们看着这些个性不同的人,有摩擦有火花。看着他们以自己的方式,为了各自不同的目标进入这个故事,加入战斗。看着他们的冒险和牺牲。在感情被煽到不行的时候——

电影的最后简直是切入了EP4。我们看到了OT里没看到过的Darth Vader毫不费力全灭一堆义军士兵,我们看到了Tantive IV熟悉的白色走廊,我们看到了白色袍子的那个人,而她竟然转过身来了……这里可能是有点太fan service了,然而世界上的movie goer应该大部分都对EP4很熟悉。Rogue One的主线里人物全部牺牲,换来的是EP4 A New Hope。看完Rogue One已经一个星期了,然而一想到牺牲和希望这种组合,还是能引起我全情投入,热泪盈眶。

整个星战系列,我的最爱一直是EP4。我没想到我还可以更爱EP4。然而Rogue One却做到了给EP4加深层次和背景……

和这个主线相比,所有的reference都只是bonus。我觉得Rogue One应该是非星战粉很容易进入的一道门。它用一个节奏张弛有度、情节条理清晰的故事,强烈地传输了星战的那种理想主义和英雄主义精神,那种纯粹和投入。

当然在新电影里看见我们熟悉的东西是一种特别激动的体验。由于目前我在看Rebels动画片,所以对Rebels的reference特别在意。我一刷的时候有几个地方看到太激动以至于都一段时间没看清/听清电影在说什么。一个地方是Jyn第一次被带到Yavin IV的时候,谈话最后,Bail Organa从阴影里走出来。另一个地方是主角们第二次回到Yavin IV,开完大会之后广播里在喊General Syndulla。后来看到有人说,镜头第三次回到Yavin IV,通讯员冲出来找Mon Mothma的时候,可以看见Chopper。每一场空战我都在满屏幕搜寻Ghost的踪迹。这个时候我们的Ghost crew在哪里呢?

可能是3D很难看清背景里的东西的关系,我看了几遍都没看清Chopper。下面是官网上给出的图

rogueone-chopper

细节彩蛋的作用应该是这样的:一眼认出会很开心;如果本来不了解,但因为主线而喜欢电影然后多了解电影和相关的,越了解多越惊叹各种联系。我对一切snob深恶痛绝,对彩蛋snob也很敏感。Rogue One的彩蛋给我们带来很多惊喜,但是它更大的优点是它是一个好看和令人感动的故事。世界上有很多人并没有那么into星战,如果星战出了一部好电影如Rogue One,我更希望本来不感冒的人也能来分享同样的心情,而不是在他们面前得意我知道多少他们不知道的东西。

给R1挑刺:

Prologue里Saw刚来救Jyn,进入正片第一个镜头是Jyn在帝国监狱里。直到后来Jyn在Yavin IV回答Cassian问话的时候我们才确定她没有在帝国监狱长大。

来到Eadu要保持低空飞行,U Wing撞击了石头之后,在驾驶座后方指挥的Bodhi向后倒了,按照惯性他应该向前倒的,但那样的话就不好看了。(这个goof是我向IMDb提交的第一个内容。看看会不会通过吧:)

在Mustafar,Vader的头盔脖子处特别显眼,好像和以前见过的不一样。

为什么Cassian没有在义军联盟会议上?他毕竟是负责这个情报项目的主管啊。

Prologue里,我们先看到妈妈带着Jyn来到山后,地上都是黑色的土。然后我们看到Jyn埋伏在草丛里,目睹了妈妈被杀。可以理解为Lyra回到家门口那边的时候,小Jyn偷偷跟过来了。然而如果Jyn当时在那么近的地方的话,death trooper没搜到她感觉很不可信。

Bodhi被触手怪折磨之后,飞行员护目镜还是好好地戴在头上。[更新:Ultimate Visual Guide里说这个眼镜是修理飞船的时候用的。]

开头Cassian和线人会面,提到叛逃帝国的飞行员和他的消息的情报的时候,线人说话声音太大了啊。(Cassian干掉他的又一理由。)

去Eadu的路上,Jyn说了Galen埋下的死星弱点,Cassian说他不能冒险把这个消息传输给Alliance,因为他们已经在帝国地盘深处。可是Cassian刚刚和Yavin IV通话过。可以理解为之前的通话措辞含蓄所以可以不用顾虑;也可以理解为他们就在这么点时间差的时候移动到了无法和Yavin IV通话的地方。但是总觉得刚通话过立刻又说通话很冒险,太突兀了。

在Eadu,Galen他们开大会,非要在大雨中开,还要在可以被狙击手打到的地方开,真是太不要命了。U-Wing降落的地方,离开会的平台还很远,但是Jyn和Cassian都很快爬到了那边,不愧是爬梯高手,这项技能后来也很有用。而Chirrut和Baze,他们停靠的位置,一开始感觉挺远的。然而后面有Baze击倒开门走向平台的一大队白兵的镜头,Baze的武器应该不是远程狙击武器,所以他也爬到了附近?这场战斗的布局感觉有点交代不清或者太巧合了。

Rebels紧接着R1的一集Ghosts of Geonosis里,Saw出场了。这时他还没有R1里伤得那么惨。而这时已经距离R1挺近了(官网说2年),所以Jyn应该已经和Saw分离了。所以严格来说Jyn在R1里在Jedha见到Saw的时候,应该比较惊讶他变成这个样子了才对。

除了Mustafar,每个星球都有文字标识地名。感觉字体可以更加星战一点。。。(他们不是有那种类似Aurebesh的英文字体吗?)

女性角色有点少。也许是为了贴合EP4。如果是的话,我感觉没必要。

下面是一些不是挑刺的想法:

在看TCW里Onderon那几集的时候,我是被煽到了的。虽然当时对Saw这个角色没有什么感觉。R1里看到Saw准备赴死的时候,脑中忽然响起了”For Onderon!”,把自己煽了一回。TCW [截图1] [截图2]。

Mon Mothma一开始对Jyn说,要找你爸爸,然后return him to the Senate for testimony。顿时就在想Senate后来解散了。。。

在Scarif,Jyn穿了类似于TIE飞行员的服装,背上有两把剑一样的东西。可惜没看到这东西怎么用的,感觉会很酷炫。[更新:刷2D的时候看清楚了这个制服是交通指挥员的。背上两根东西是发光指挥用的。。。]

在一个podcast里听到的:Jyn的妈妈Lyra的腰带下有一块红色的布,而Chirrut的服装也有腰带一下有红色的布。会不会和信仰绝地有关。[更新:Ultimate Visual Guide里说了是有关系的。]

K2太Alan Tudyk了。好多好多台词,说得跟Wash太像了。比如“I can blend in, I’m an imperial droid, this is an imperial occupied city.”这句和“I can be tough, I’m a semi-muscular man”语气真的一模一样。

另外,好多预告片的场景都没有出现在电影里。。。

Tarkin和年轻的Leia——星战一直在提高电影制作技术的标准。而我们,是在Carrie Fisher去世后看到年轻的公主意外出场,看见希望的同时,又意外惆怅。

bookmark_borderRogue One 一刷第一印象

short answer: 太好看了

Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.
Save the Rebellion. Save the Hope.

GENERAL SYNDULLA!!!!!!!! This is either Hera or Cham. I bet it’s Hera. Because the Ghost is there as well!

这个电影让我吃饱了ref的糖,但是丝毫不腻。

K-2SO is the best droid ever.

Krennic如果是被Vader掐死的就更好了。被死星炸死也太惨了。

不要有男女主角最后一起炸死,而是都在拯救微小的希望的路上一个一个倒下了,那样更壮烈。

时间紧凑的情况下,交待了那么多个主要人物,感觉还行。Jyn的转变略略略略小突兀。Saw的极端也没交待得特别有深度。Cassian一上来就果断执行了一个动作,好像要提醒我们这是一部比较成人化的星战哦,但后来有点故意给人感觉是要和对Galen的任务做对比。Baze和Chirrut则只是被Cassian描述了一下是temple guard(不是那个temple guard)的背景。

What did it feel like to be on Alderaan?

bookmark_border写在看 Rogue One 之前

虽然我还没看Rogue One,但这篇可能还是含有剧透。所以先放个警戒线。

I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!! I REBEL!!

是的,我应该是已经被剧透了。第一次被透是豆瓣上新增的一个关注者。我去ta的页面上看是否值得回关的时候,看见了ta的 R1 短评剧透。(我迅速移开目光。)

第二次被剧透是格瓦拉APP。买完电影票之后,APP上显示了一些影院信息。在我最不提防的时候看见了这个:

r1spoiler

保持三周不被剧透,对于一个在社交网络上内容基本都是星战的人来说,看来是不可能的。被透了以后我明白了所谓的 R1 剧透,是有一个实实在在的、非常传统意义的剧透。而我之前,都在担心细微的剧透,因为即使是那些,我也希望能从电影里看出来,而不是事先知道。

我想知道 Rogue One 里会不会有 Rebels 的 reference。某一款预告片中我们已经看见了一艘船起码是型号和 Ghost 一样。如果到时候可以确认是 Ghost,甚至确认 Ghost crew 幸存到了 EP4 前夜;

我想知道 Rogue One 如何 tie-in 到 OT,让我们在大荧幕上看一眼 Alderaan,或者看一眼帝国时代的 Coruscant。也许我们还可以看到皇帝解散议会;

看到一个上映前演员的采访,其中一个问题是 Rogue One 里有没有公主,回答是 this is getting dangerous。这个回答可以有各种可能性。但是公主,是义军的希望;

Catalyst 里说死星是在 Geonosis 的 obit 上造的。Rebels S2 里提到一句 Geonosis 的虫子都死了。而 Rebels S3 接下来两集的标题是 Ghosts of Geonosis。一切都指向 Rebels S3 接下来会有 Rogue One 内容(而不用担心 R1 剧透);

也许 Galen Erso 这个角色能解释为什么 EP4 里死星有弱点;

漫长的等待就要结束啦!!

另外,今天忽然发现好几年前买的 iPad 被我命名为了 R1,还拼错了。。。

apple_device

bookmark_borderargparse

读完Python官方教程modules一章之后,我以为我可以开始写script了。然而我不知道怎么给script传参数。同事写的例子里面,是拿了一个config module把参数从另一个文件里读出来。可是我想何必呢,处理命令行参数的技能总是要的,我很惊讶基本教程里没有。搜索了一下才知道,argparse是后来进入canon的module。

argparse的官方教程的时候我很糊涂。介绍了positional argment之后介绍了optional argument,然后就没了。难道positional argument对应的不是named argument吗?我搜了一会儿才发现,官方虽然把optional argument都当作named argument来操作,甚至可以加一个required=true的限制,但是在打印帮助的时候required=true的参数还是打印在了optional argument里

我们到底有没有理解错Python设计者的原意啊。。。(大概不是为在命令行调用设计的,我经验太少不知道script语言除了命令行调用还可以怎么用。Python号称可以和别的程序语言结合用很灵活的。