作者归档:贺 利华

关于贺 利华

正在学习编程,享受编程 热爱文学,闲来读读《读库》 有思想,没理想 正在学会专注

Unity3D游戏AppStore审核因为ASIdentifierManager被拒的解决办法

上周末我们的游戏『铁血战神』提交AppStore审核已经快一周了还木有结果,很是着急啊。周六上午终于有消息了,只可惜不是什么好消息,我们被拒了,被拒绝的原因很简单:

“You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier.”

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support.

Please check your code – including any third-party libraries – to remove any instances of:

class: ASIdentifierManager

selector: advertisingIdentifier

framework: AdSupport.framework

就是我们的游戏中没有任何广告,同时我们也不帮其他的应用做推广,那么好吧,苹果认为我们不应该使用这个专门为广告而设定的接口(真是尼玛没有道理可以讲啊,据说是为了打击积分墙等类似的推广手段,防止刷榜等等)。

那么好吧,先把我们自己使用到ASIdentifierManager处的代码全部干掉,那么这样是不是就可以重新打包然后再提交呢?

貌似不是滴,咱们还是遍历查找一下整个工程的代码吧,看看还有没有别的地方调用到了这个类的某些方法,最终你会发现,Unity3D编译出来的iOS工程中的部分iOS代码使也用到了这个接口,这部分代码在编译出来的工程下,Classes/Unity/DeviceSettings.mm文件中。

不得不说Unity3D的实现还是比较好的,最起码没有包含AdSupport.framework,没有直接引用头文件,也没有直接调用ASIdentifierManager这个类的advertisingIdentifier方法,而是通过动态的查找这个类库同时动态的找到方法再调用,不过貌似这样也木有办法绕过苹果的审核哦。最终还是会现形的,那么最终如何解决呢?

Unity3D的官方论坛上已经有了Unity3D的开发人员给出的Quick Fix了,大家自行前往查看即可,传送门在这里.

大体的思路还是将使用到的代码都删掉,不过为了避免以后每次重新编译Unity3D项目到Xcode工程时,都得手动修改一次,Unity3D的官方人员也提到最好还是一次性搞定Unity3D使用到的模板文件,这个文件就在/Applications/Unity/Unity.app/Contents/PlaybackEngines/iPhonePlayer/iPhone-Trampoline/Classes/下,找到DeviceSettings.mm文件,按照那个Unity3D官方的Quick Fix来修改,以后每次编译出来的新工程中这个文件就不需要再次手动修改了。

修改完了之后,重新打包测试提交,顺利通过审核,感谢所有TV啊。

要开始想些事情了

很多的时候,我们总以为还可以继续天真下去,可是现实会无情而直接地告诉你这不是你想要就能要,尼玛天真就留在那些可以天真的岁月吧。

是时候开始想些事情了,生活不会因为你天真而变得美好。

谈谈理想吧

离开校园快5年了,记得还在学校的时候,我们不时地会畅想一下未来,虽未必在谈理想,起码也算是年少时美好的憧憬吧。

曾经跟宿舍好友们,坐在学校旁边小吃街的小餐馆里头,喝着冰啤酒,吃着长沙火辣的家常菜,不少个夜晚,跟不同面孔的同学,纷纷表达过自己对未来的各种憧憬,也有对未来未知的一些恐慌。

如今,回头看看,还是蛮有意思的。曾经讨厌写程序的GM在毕业之后加入南方测绘公司某旗下子公司,在两年之内成为了研发部门的中坚力量,每日与代码厮磨。我们最可爱的班长–猪头,在成功完成了保送的硕士研究生学业之后,如愿以偿地回到了福建厦门,虽然离他回到老家罗源还有一点距离,但是也算是圆满了。我们的亢芬同学,更是在一年之内终于成功嫁给了一个好老公,成为了光荣的军属。赵姐和赵胖的爱情结晶更是健健康康地来到我们身边,虎头虎脑的甚是可爱。偶像思麦如愿以偿地成为了自己一心想成为的游戏开发者,不知到偶像现在是否依然热爱和享受着制作游戏的那份快感。老比终于打破了这四年来我们一直的疑惑,选择了离开GameLoft前往深圳再次创业去也。刘琪最终没能持续做游戏,与我在喜讯相伴两年之余后,离开加入了Tencent大家庭,工作之余从未放弃为我国GIS行业的互联网化做着实际的工作和思想上的探索。而我,依然还在喜讯这个集体中,辛苦并坚持着。

曾经很多次跟同学聊天,有大学的同学,也有高中的同学,甚至老家的发小,都曾经问过我类似的问题,你们怎么这么辛苦?都这么些年了,你图什么,得到了什么?

首先,我在喜讯这几年确实很辛苦,工作时长平均每周70个小时以上,这没有什么值得炫耀的,说句难听的话,这说起来都是泪啊。
其次,我在喜讯这几年,目前得到了所有我应该得到的,公司给予我的跟我为公司做的,我认为是对等的,甚至公司给予我的多于我目前所创造的,未来会更加平衡一些。
最后,我图什么,其实我也不是特别清楚自己图的是什么,只是这一路走来,自然而然就成了现在的状态。

回到标题,谈谈理想。

在我们曾经年轻的日子里(貌似我现在也还没老哦),我们都曾美好地憧憬过未来,寄予美妙的幻想。我也曾多次问过自己,我的理想是什么?回过头看自己这26年里,自己一直想做的事情,貌似除了写作还真没有什么其他的想法。

在自己还是个小孩子的时候,就曾经梦想自己有一天能著书立作给别人看,除了这个一直保存在内心的小愿望,还有就是有一颗较为强烈的成为有钱人的原始欲望的心。也许是因为从小,家中家境一直不算好,在老家父母二人就是普通的农民,只是父亲自己年轻时候比较愿意学,也确实学过几年木工,所以父亲在老家还算是有一技之长的木匠,家中有我和弟弟两个孩子,父母辛苦大半辈子还算顺利地让我俩都大学毕业了。但是家境并没有因为我和弟弟二人的毕业加入工作之后顿时好转起来,只是已经不再像之前那么捉襟见肘了。正是出于对现实生活很多不确定因素的恐慌,以及多年来看着父母因为物质条件从未能真正地享受属于他们自己的生活,即便如今,二老在家依然劳作,说是趁着自己还能干得动,需要给我们攒点钱,能给我们减轻一点负担算一点。当我每次听到父母这番话时,作为长子长孙的我,我只有一个想法,我要让这个家庭不再那么穷。穷是一个很搞笑的字,看起来就像一个人在天底下,很用力的干活。穷人的姿态也许就是这般吧,我的爷辈,父辈,包括我自己,也许都会一直在天底下以这种姿态长时间地存在着。

不过,我跟我父亲一样,我们相信只要自己努力付出,总会有所回报,我的父母通过自己勤劳的双手,将我跟我弟弟送入大学,而且从未让我和我弟弟在生活上感觉到非常的困窘,他们真的很了不起。我想我起码应该在我父母给我创造的基础上,延续我父母的成就吧,也就是确保我能给我的后辈一个更好些的基础。多么原始和简单的欲望,纯粹就是出于本能的欲望。但是,不可否认的是这个欲望支撑了我很久,直到现在这个依然是我愿意付出我所有努力来达成的首要目的。

作为小学生的我,初中生的我,高中生的我,大学生的我,从未想过自己将来会成为科学家,警察,军人等等,唯独曾经梦想过的就是成为一个可以写作给很多人看的人。如今作为一个程序员的我,过得也非常开心。我有一个非常理解我的女友,有一个非常支持我的家庭,有一份我觉得满意的工作,有一群我觉得可以托付的同伴,真的很难得。

理想很多的时候感觉像是奢侈品,可望而不可及。跟身边很多的人都聊过类似的问题,大部分人的第一反应是“哪儿来的理想啊?”,大家普遍都会谈到很多现实的问题,然后最终得出一个结论就是自己即便是有理想,那都是空想。其实从侧面来看,其实每个人都是有理想的,只是大家通常认为因为现实的各种压力,我们已经没有机会实现自己的理想了。当然我也不能免俗,我也经常这么认为,认为自己不可能实现理想,甚至都认为自己根本就没有理想。只是在随着社会大流,一步一步地走到今天,成为一个社会最基层的建设者,默默地在自己的岗位上发光发亮,兴许会被人发现,当做一颗璀璨明星,兴许就如此慢慢黯淡下来。

现实诚然如此,在成长的路上,我们看到了很多风景,总是梦想有一天自己也能如此享受此般美好,殊不知时间的美好就只有那么多,人人都想拥有,谈何容易。所以我们说要奋斗,只有奋斗才能改变自己的命运,才能让自己站到人生的塔尖,看到更多更美的风景。于是,就有了很多个奋斗之后享受成功喜悦的梦。我自己也有过这样的梦,很直接很直接的梦,梦想有一天自己所在的创业公司能上市,自己作为初创团队的一员,在公司上市之际直接晋升到塔尖。WTF,多美美妙的一刻啊,此时站在塔尖望着下面还在为我此时享受的这一刻奋斗的人们,多么的惬意啊。

成功变成了我们的梦,我们的理想呢?我想即便到了那一时刻,其实离我儿时唯一的理想还是很远,我完成了自己的一个期望也完成了一个作为家族长子所背负的期望。也许那个时候我也会很快乐,可是谁知道呢。

在喜讯创业已经3年有余了,成功的影子慢慢显现,但是能否最终成真没有人能说得清。只有靠自己的努力,靠一众兄弟姐妹们的努力,兴许可以成功。喜讯的成功是不是我的理想?我想在目前的阶段里,这肯定算是我的一个很重要的目标,但是远谈不上理想。创业成功对于有些人来说是理想,对于我而言是手段,这是我摆脱经济困境的唯一手段,我为此会付出所有我能付出的东西。获得成功能让自己获得经济自由,是否我就会开始寻找儿时的理想呢?其实我也不知道,儿时的理想如果真的有如此强烈的话,也许我现在已经开始朝着这个方向前进了,可是我没有。

所以有的时候我就在想,其实理想可能真的跟初恋很像。很刻骨铭心,但未必会是最终的相守,她永远会占据你内心的某个角落,偶尔还会跳出来给你带来一阵阵的瘙痒,让你阵阵地感怀。时间一过,所有一切如常。

也许我真的没有什么理想,有的还就是短时间之内的各种目标,结婚,生子,赚钱,养家,等等。坚持自己有一个理想,无非是想偶尔能让自己显得不是那么的俗不可耐,给自己脆弱而又自负的内心些许救赎性的安慰。告诉自己,这些丑陋的社会现实,这些完全不能理解我的人们,他们不知道我内心想要的是什么,我做不好这个事情其实是因为我的理想根本就不是做这个事情,我要做的是更美好更高尚的事情。多美好的理由啊,还是允许像我这般渺小的人类拥有如此可笑的理由吧。

放下那个远大而崇高的理想吧,回到地球上来,为现在能努力做到的事情多尽一份心,多出一点力,踏实走每一步路,也许哪天真的会跟那个理想再次重逢,就跟结婚多年以后与初恋重逢那种释然的感觉,两者相视而会心一笑。

来喜讯三年了

刚刚来喜讯的时候,老大跟我聊得很多,差不多每周都会有一次独立的对话,会聊的事情会比较宽泛,包括如何做产品,技术人员如何成长,跟设计人员如何配合,如何跟家人相处,如何做好一个朋友等等。其中经常出现的一个话题是关于个人职业规划与成长的,有一句话是这样的“三年一个坎,五年一个坎,十年一个坎”。大体的意思就是,当我们开始进入职业岗位上,三年时间会是一个阶段,五年又是一个阶段,十年呢又是另一个阶段。

我来喜讯已经三年了,再此之前我在超图待了一年的时间,也就是说我的三年这个坎是在喜讯度过的,如今已经是在喜讯的第四个年头了。

==== 时隔一周继续开始写 ====

在喜讯待的这三年里头,学到了很多的东西,技术上的大部分都是靠自己一点点摸索尝试,也有很多是跟同事们一起讨论争执中明白的,关于产品和项目的,大部分都是老大手把手教的,慢慢地开始需要承担一些项目管理和产品设计上的工作。

在这三年里头,做了几个项目,黄金矿工喜讯特别版,喜讯天天,画说,MARK,铁血战神。带了3位小兄弟,但是目前3位小兄弟均已离开了。目前项目中程序有4个客户端程序,1个服务端程序,客户端程序这边由我来推动,整个项目包括美术组与程序组这边的协调,策划和运营与程序这边的沟通,我也多少有些参与。

目前碰到了最大的问题就是我还没有学会如何在项目管理和程序开发中找到一个平衡点,在自己不愿意放弃程序开发的前提下,自己总会陷入到技术问题的解决和执行中,时常会忽略了项目中各种节点的确认和资源的协调,项目成员会出现工作量不平衡,经常出现大家在等某个资源而没有事情做,某些人又积压着过多的工作。

做个记录吧!

如何学习编程语言

标题比较大,我自己能写的东西比较少,毕竟自己从学习编程到现在总共也就6~7年的时间,写代码的时间也就4年时间,谈不上有什么非常好的经验,不过这些年来也有一些想法和感触,自己记录一下。

大学期间,学校安排的计算机相关课程中有《计算机基础》《C编程语言》《C++编程语言》《数据结构与算法》《数据库原理与技术》《空间数据库》以及一些计算机编程周边的课程,例如《复变函数》《数值分析》《空间分析》《运筹学》等等。回过头来看看,这些所有课程我的考试成绩貌似都不错,但实际上神马都木有深入学习过,只是为了应付考试,尼玛杯具啊。

在某一次《数据结构与算法》的课上,我们可爱又严厉的王盼成老师(昵称盼盼)在课间跟我们闲聊,语重心长地跟我们讲“做地信的最好能会写程序,这样未来空间会更大一些”,我当时也不知道哪根筋搭错了,然后在下面搭了一句“老师,每个人有每个人的活法,也不是所有人都希望自己成为一个程序猿”,老师听到我说完这句话之后回了一句“我相信每个人有每个人的死法”。在老师说完这句话之后,几秒中之内整个教室都安静了一会儿,然后又该开始上课了,之后的整堂课我都在想这个事情。然后我就开始学习编程了,之前我们学过的《C编程语言》和《C++编程语言》我已经完全交回给老师了,而宿舍中其他的同学在C/C++方面已经有了一些成绩了,出于当时的虚荣也罢不服输也好,我选择了跟宿舍其他同学不同的一条路来学习编程。

我开始学习Java编程语言,没有同学和老师可以请教,但是我有整个图书馆和网络做老师。从那个时候开始,每天都泡在图书馆的阅览室中读各种Java相关的编程书籍,读得很粗糙,但是确实读了不少,每天回到宿舍就开始看一些视频,上JavaEye(先已更名位ITEye)去看各种博客和帖子。那时候看得多,写得少,记得当时毕业找工作的简历上,我写的编程经验中有一句话是“有丰富的Demo经验”。在那个阶段,我接触了Java编程的各个方面,但是每个方面接触得都比较浅显,刚刚踏入编程世界的我,觉得Java编程语言中有太多太多的精彩了。这个阶段,应该算作我开始在编程上入门了。

加入超图之后,一直在做JNI相关的事情,这应该是Java编程世界中的一个非常冷门的方向,当时只有某些做中间件封装的企业会使用该技术来重用之前已有的C/C++类库。我在超图待了一年的时间,写了一些JNI的代码,看了很多JNI封装C/C++ SDK的代码,对JNI也有了一个更全面的认识,但是对于Java编程语言本身并没有更深入的理解。

加入喜讯之后,开始做Android方面的开发,这在当时可真是个热门的方向,在移动互联网被鼓吹到风口浪尖时,Android程序猿也算是非常抢手的资源啊。Android的开发跟普通的J2SE开发没有任何不同的地方,在对Android Framework有了一个完整的认知之后,所有的代码无非也就是逻辑和UI的实现,客户端程序大抵如此。但是在喜讯我已经不再只是一个纯粹写程序实现的了,我需要自己来设计整个程序的结构,如何保证程序能快速响应未来的设计和需求变得更为重要。在喜讯天天、画说和MARK这三个项目中,我开始尝试着做不同的设计尝试,并且尝试着形成自己的编码风格,并在团队内推广。

如今开始做游戏,主要是在Unity3D环境下完成,Unity3D下几乎所有的逻辑和功能代码都是通过C#来完成(当然你也可以通过JavaScript和Boo来实现),在学习C#上障碍相对较小,毕竟大部分的工作并不是跟语言的细节纠结而是完成具体的逻辑和功能,天下万般程序逻辑皆相通,所以也还算较为顺利的开始了Unity3D游戏开发。术业有专攻,每个人擅长的模块都不太一样,在游戏项目中,我主要负责的是网络通信模块,包括HTTP通信和TCP通信模块代码的实现。非常感谢已经有众多程序猿在这些方向上作出了很多的努力并且将其劳动成果分享出来。在这些可爱的人无私分享的前提下,我们可以减少很多的代码工作量,只需要阅读这些优美的代码,理解他们思考和实现的逻辑,在此基础上加入自己的思考,融合自己的逻辑实现即可完成我们需要的功能模块。

从自己开始真正地学习编程到现在,应该有五年有余,在这段时间中我不能说自己编程能力提高得有多么的快多么的高,我只能说通过自己偶尔的横向和纵向跟他人做一个简单的对比,发现自己的不足和找到自己的优势,整体来讲,我肯定不算低效和低能的程序猿,起码能算是一个合格的程序猿,那么我是如何学习的呢?

阅读,在刚刚开始接触编程的时候,阅读了大量的书籍,关于Java编程语言的,关于Java社区流行的各种框架的书籍,网络上很多程序猿们分享的博客文章和编程教程。初期大量的阅读,让我的视野在很早就打开了,不会只局限于某个细小的方向,并且通篇完整地阅读过一本关于Java编程语言的书籍对于我的影响非常大,我当时读的是《Thinking in Java》,通过这本书接触Java也算是一种幸运。通过阅读《Thinking in Java》,我了解了Java语言基础的使用方法,养成了还算不错的编码风格,同时接触到了Java API设计的原则和方法,明白了面向对象编程的概念。之后继续阅读了很多Java社区流行框架的书籍,例如Struts, Spring, Hibernate, Lucene, Tomcat, Heritrix 等等,虽然我对这些我曾经都尝试过编写不少的Demo的框架如今了解很少,也无法使用他们来完成我想做的事情。但是这些阅读让我见识到了编程的美好,让我看到了世界上众多优秀的程序猿他们是如何通过自己的努力改变了众多程序猿的工作方式。与其说我在学习这些框架,不如说我在认识这些框架在Java社区中的生存方式,正是因为这种开放的社区驱动让我对Java编程热情猛增,直至最后毕业选择了做一个程序猿而不是在我上大学之前就一直向往的管理培训生。

社区,阅读Java编程相关的书籍,总会不经意的发现Java社区中众多开源的框架和这些开源框架的开发者都在网络上积极地做一些事情,出于简单的崇拜也好,和更深层次地学习也罢。在学习Java语言前期,我开始尝试泡在各种不同的Java社区中,虽然很多时候我完全不懂别人在聊什么在讨论什么,但是看到别人在讨论某些问题,能让我先有一个认知,然后做很多的扩展阅读,然后时间长了就会发现自己的认识逐渐在提高,慢慢地能看懂别人讨论的问题了,然后偶尔还能发个言,帮助甚大,提升明显。Java社区中,我在JavaEye(现已更名为ITEye),在这个社区回过帖,潜过水,开过博客,写过文章,发过简历。还因为在JavaEye发布简历,途牛网的陈福炜给过我一个电话面试的机会,但是被我很傻逼的给浪费和错过了。社区能让你了解到很多方向的东西,能看到其他的人在关注什么在做什么,以及很多事情别人已有的解决方案,还能认识很多可爱的人。

搜索引擎,程序猿可以不会写Hello World,但是一定要能熟练使用Google,熟练使用Google并不难,但是也不是很简单。简单的输入一段自己的需求文字,奢求Google给你找到一个满意的答案,这个可能性比较小。Good Question 才能有 Good Answer。学会抽象出来自己碰到的问题和需求的关键字,尽量去除修饰词语,然后交给Google就好了,通常Google都能找到你想要的答案。很多时候我们搜索的问题在中文世界中是没有相关内容的,这个时候你就要能将你自己的问题和需求翻译成英文,然后再交给Google了,然后自己通过阅读英文内容来找到答案了,程序猿英文是一定要好的,不论你写什么程序,否则都是扯淡。

文档,不论我们是学习一门新的编程语言还是尝试使用一个新的框架,官方的文档总是最重要的工具和参考。学习Java的时候就需要熟练掌握如何从JDK Help Documention中找到自己需要的东西,学习Android就应该能从Android Developers官方站点上找到想要的知识点内容。这些文档中,不但明确地告诉我们如何去使用API,更会让我们对整体语言和框架形成一个完整的认知,在后续的学习和编码过程中,我们会形成一个非常好的习惯,碰到不确定的问题直接找官方文档,看个究竟之后就能继续了。另外,熟悉API文档的同时也会让我们对整个API的结构有一个非常全面的认知,并且会形成使用API的习惯,当你需要使用一个之前未曾使用过的方法,我们会习惯性的认为某个类有某个方法,直接一试或者直接一查,往往屡试不爽,这能很大程度上节约时间提高效率。关键是熟练掌握API内容能带来的好处在前期做设计和技术预言的时候将会更加显著,很多时候我们在设计一个新功能,该功能需要某些接口来帮助我们完成一些事情,如果这时我们清楚地知道某些API是可用的,某些API是框架或者语言不提供,需要我们自行实现的,马上能辅助我们作出一个合适的判断,包括我们在做整体系统架构和技术选型时,这些都是非常有帮助的。

开源代码,站在巨人的肩膀上,你能看到更多更美的风景。开源的代码,通常都不会难看,通常都是非常优雅的实现,而且有着某个团队或者某人在持续改进的,阅读这些优雅的代码,能让我们学习别人的编码方式,看看别人的思考角度和实现风格。开源代码已经改变了整个世界,Linux系统和基于Linux的Android系统已经是每时每刻在互联网和移动互联网上扮演着台前幕后的重要角色,我们每天都在用的各种应用和网络服务,几乎都不可能离开开源软件和代码的支持。阅读Java API实现的代码,阅读Android Framework和Android Packages的源码,真的学习到了很多的东西,包括形成良好的编程风格。

关注变化,编程技术每天都在进步,每一年都会有一些新鲜的技术和框架出来,保持对新鲜技术的关注和好奇,尝试着去使用他们,如果能接触到源码那就更好,尝试去阅读和改进。不一定要追随所有新的技术潮流,不是说每个新的技术都需要放到项目中来,也不是每个新的技术或框架都能解决你现有的问题。关注新的技术,其实就是关注它究竟解决了什么问题,这个问题是否就是你目前碰到的,如果是的话,那么就可以很好地解决你的问题。关注新的技术,也是关注它究竟是如何解决了这个问题,和我们自己的解决方法相对比一下,两个解决方法的优势和劣势分别在哪儿,尝试着将别人的优点借鉴一下,将自己的解决方案完善了,如果能将我们自己的优势反馈到社区中帮助到更多的人,显然是一件美妙的事情。

分享,与别人分享你的技术成果,总是能让我们收到更大的收获。开源社区就是分享精神和开放精神的最佳形式,每个人都可以将自己好的东西分享出来,不断地来改进已有的东西,然后每个能接触到的人都可以再从中获取到更好的东西。分享能将个人的能量放大,如果社区或团体足够大,那么分享出来的能量将被放大的倍数也会更大,分享的人收到的反馈也会更大。程序猿都是好面子滴,谁尼玛不希望那个被称为牛人的人是自己呢?尝试着跟身边的人分享自己的技术成果吧,尝试着跟更多的人分享自己的技术成果吧,GitHub无疑是一个非常合适的去处,大胆地分享自己的代码吧,不要怕被人嘲笑,每个人提交的patch都是在给我们自己能力打补丁呢,拥抱那些人吧,那些人在你成为牛人的道路上扮演的可是推进式发动机的角色啊。

关注那些先进的生产力和代表先进生产力的人,例如Markdown代表着文档的先进生产力,使用Git管理代码的人代表了先进生产力,使用终端和脚本代替重复性鼠标操作的人代表了先进生产力,那些通过技术改变人们生活的人,他们代表了先进生产力。尝试着去关注这些事物和这些人,看看他们是如何做到的,他们做到这个程度付出了多少,以及他们是如何努力的。争取哪天我们也成为先进生产力的代表,那样岂非很爽,先进生产力(尼玛高中政治就学到了这个词)永远都不会被淘汰的。