20170223学习纪录

##Objective ###关于今天的课程,你记得什么? 1、程序环境有两种,一种是develop环境,指我们本地开发,另一种是product环境,指上传到服务器上,比如heroku; 2、在uploader中,本地调试显示图片用,file,云图片用fog; 3、七牛云和阿里云都是国内的云; 4、template是计算机领域的模板的意思; 5、gitmerge的原理可能是,把相应时间纪录的变动信息合并到程序里面; 6、在cart_item里面设置,product_id和user_id而不在product设置的意义在于一个product可以放在多个item里,而不是一个product对应多个item; 7、sqtile3和pg分别是developer和production用的数据库gem; 8、后面的学习进度会开始放缓; 9、编程使用的英语就两百个单词而已; 10、gem是套件管理系统; 11、助教的工作有时间可以试着申请下; 12、学习不用急; 13、recaptcha验证功能; 14、linodo可以通过阿里云买; 15、rails cust这个网站gem网站; 16、RubyFlow:Rails的社群; 17、Go Rails这个网站; ###完成了什么? 1、看了YY老师的直播; 2、完成了template的讨论和基本的view、model及controller; ##Reflective ###你要如何形容今天的情绪? 今晚进入了长时间的心流,不知不觉一晚上就没了。 ###今天的高峰是什么? 参照教材迅速完成了template的编写; ###今天的低点是什么? 学习到太晚了,没有时间继续完成五张图片的上传这个设置; ##Interpretive ###我们今天学到了什么? 1、要多到国外的rails社群去学习; 2、要注意不同环境的配置问题; 3、后面的学习速度会放缓,当时自己要加紧安排; 4、在注意力充分使用后,根本不会出现想学这个想学那个都没时间的情况,因为你连思考这个问题的时间都没有; 5、项目合作的时候一定要考虑项目进度分配问题,这样能提高总体的时间利用率,而不至于一个人等另一个人; ###今天一个重要的领悟是什么? ####学习方法 要多泡在相关社群里面学习; ####编程知识 根据环境使用不同的gem; ##Decisional ###我们会如何用一句话形容今天的工作? 还有一周一点的时间,开始真正的攻坚了。 ###有哪些工作需要明天继续努力? 完成上传五张图片的功能及七牛云的设置;

February 24, 2017 · 1 min

2017年第07周总结

1.“本周学到的最棒概念/工具” 本周学到的最棒的工具是model/controller/views的三维空间模型,这是我在学习过程中尝试去理解关系想象出来的模型,通过使用它感觉一下子明白了,出发,显示,调用这些东西,有时间我还会尝试用它去理解restful。 2.“本周遇到最大的坑” 本周遇到的最大的坑是每给自己创造良好的学习环境,放假在家,受到各种干扰,现在后面才意识到自己应该主动点去咖啡厅之类的地方的,而不是被动的在家里忍受注意力的缺失。

February 23, 2017 · 1 min

20170222学习纪录

##Objective ###关于今天的课程,你记得什么? 1、安全是编程过程中涉及到敏感信息是第一个要考虑的因素; 2、本地的图片无法大量上传到heroku,也就是heroku只提供了程序架构和代码上传服务,没有提供图片上传及邮件发送等服务; 3、不同的服务有不同的提供商,编程界天生就是一个相互协作的业界,你用别人的服务就需要付钱,你为别人提供服务就能收钱; 4、database.yml这个文件是不上传的,在gitignore里面需要设置不追踪它,我们平时的私密信息就放在这里面; 5、教材提供的database.yml.example其实一个可以上传的事例,我们下载以后cp出对应的文件就可以继续使用数据库,通过这样的方式及保护了隐秘信息又保证了程序可以继续运行; 6、电脑版微信可以语音; 7、azs 3很容易丢失自己的私密信息,一定要谨慎! 8、不要将自己的私密信息方法carrierwavr.rb里; 9、Figaro这个工具,密码用它管理 10、ENV环境变数; 10、Github提供了非常便捷和合作可能,具体合作的步骤如下: - step 0 :找到队友、确定谁做主程,主程复制merge pull request; - step 1 :添加队友,主程在项目的repo里的setting>collaborators>根据队友的githubid查找队友,并按add collaborators发出邀请; - step 2 :队友会在自己注册的github邮箱里收到邀请消息,点解view invitation后,可通过Accept invitation接受邀请成为队友,之后就可以在自己的github页面看到以主程名开头的repo; - step 3 :主程先git checkout master切换到master分支,后把最新的分支merge到master上,例如:git merge story5,之后git push origin master,到服务器; - step 4 :队友第一次下载项目是由git clone repo地址,之后bundle install,以及rake db:migrate,以后有新的分支都事先切换到master分支,然后git pull origin master,之后生成新的分支进行修改功能。如果列表的栏位发生了变化,则需要调用rake db三兄弟类; - step 5 :新建分支进行新的功能编写,使用命令 git checkout -b name-function(姓名-功能); - step 6 :完成功能并确认无误后,将最新的分支推上repo,git add . git commit -m “功能描述” git push origin name-function; - step 7 :打开项目repo,选中自己刚刚上传的分支,通过compare & pull request,确认base:master,compare:name-function后,添加描述(可不添加),点击create pull request(副程千万不能点击merge pull request); - step 8 :若无冲突提示,则主程可在repo点击 Pull merge页标,点击merge pull request,之后Confirm merge就可以了,若有提示则可在本地修改无误后重新上传分支,也可通过Resolve conflict修复; - step 9 :修复时会有««« »»»>master ========三行代码,处理完所有分之后可点击make as resolved。所有完成后会显示Resolved all conflict并点击commit changes,这时和step 8 一样; ...

February 23, 2017 · 1 min

20170220学习纪录

##Objective ###关于今天的课程,你记得什么? 1、case with语句用于多分支比较理想; 2、admin里面的controller对应于具备valited的对象才能用,因而避免了其它非admin用户执行操作; 3、组队学习非常重要,能锻炼人的写作能力; 4、一定要去参加商店大赛,这个将来讲作为求职经历来讲; 5、ruby中国是中国ruby届的平台,上面有对应的ruby求职信息; 6、后期课程讲会分化出两个大方向,一个是面向准备创业的同学,一个是提供给准备进阶更高级的程序员; 7、后期会提供简历编写指南; 8、在北京的meetup上xdite老师回答了一些就业的问题,费贲将相关三篇的meetup总结发到了共享群上; 9、Mailer其实和controller有些类似,可以理解是变异了的controller; 10、mailer的启动方式是通过controller,而后再调用相应的页面,使用的语句是OrderMailer.xxxxx()·deliver!; 11、OrderMailer是生成时的命名,不一定要是order也可以是其它的对象; 12、ruyb china是一个交流和求职的好网站; 13、Orid一定要按时写,一定要按时交; ###完成了什么? 1、按照老师的教程,重做了一边第三周作业; 2、挺了Xdite老师的第一次复盘直播; ##Reflective ###你要如何形容今天的情绪? 看了老师的直播,感触自己在组队这件事情上有思想落后了,羞愧之下和感到了广州的Meetup群里面看看还有没有落单的队友,然后进行了组队,要提高干劲才行! ###今天的高峰是什么? 找到了队友!!! ###今天的低点是什么? 没有按计划完成作业任务; ##Interpretive ###我们今天学到了什么? 1、组队是一种非常有效的学习方式,这是以前的我所不能理解的,一定要积极组队; 2、有时间的话要多去ruby各大门户网站逛逛; 3、基础知识、项目、合作经验、技术博客这是招聘的硬基础; 4、具体组队的时候发现了很多没想过的问题,这正是需要组队的意义; ###今天一个重要的领悟是什么? ####学习方法 组队不单是学习到好方式,也是现代协作社会要求的硬技能; ####编程知识 case with这个分支功能; ##Decisional ###我们会如何用一句话形容今天的工作? 学习进度有点慢,但是终于完成了组队工作; ###有哪些工作需要明天继续努力? 学会如何通过GitHub合作;

February 23, 2017 · 1 min

人在选择价值体系时的自由意志

工作五年来第一次休了探亲假,加上春节还有节前休的年假,赋闲了一个月,仿佛这个假期结束自己又要去上学似的。工作后一度受困于自己的狭隘,觉得退休前不会再有这样的假期了,即便这明明是自己一直所拥有的权利。表面上可能是舍不得绩效,也可能是听不得议论,还可能是放不下工作,但细想还是因为无知,无知有时挺可悲的。 在和平年代,大部分时候无知是幸运的。不用担心人工智能发展是否会造成低价值劳动淘汰、不用担心货币放水是否会造成明年经济萧条、不用担心大陆板块运动是否会造成周边地震带活跃,更不用提大过滤器这类宇宙假说了。工作生活之余,打打机、喝喝茶、追追剧,借由已出现的没出现的各种消耗时间的利器,人生很快就过去了,即便天塌下来砸到的也都是别人,自己的世界比碳十二还稳定,和自己观念相左的全都是不正常的。信什么不重要,信很重要,自信尤其最重要。 安慰剂作用的前提是患者不知道那是安慰剂,但很多时候,即便戳穿了安慰剂的本质,有些患者不仅继续服用甚至疗效不减,这是个有趣的“信”的现象。得补充一下,只有与现代科学不冲突的安慰剂才可能有这样的效果,乔布斯就是信过头去见他的神了,他究竟是否求得解脱了呢?这真的很难说。所以,请谨慎服用。 安慰剂的心理基础是“自证预言”。今天来点,明天饭多吃了两口是它起了作用,上楼气少喘了两口是它起了作用,世界比昨天光明、宇宙比昨天和平也是它起了作用,尽管可能是菜少了所以多来了两口饭,也可能是上楼的时候步子迈小了所以少喘了两口气,更有可能宇宙一直和平今年恰好是太阳黑子活跃年而上一个耀斑的辐射今天刚好抵达。但这些都不重要,安慰剂就是牛逼,这些最差也是它引发的蝴蝶效应。一切支撑我观念的统统拿来、一切不合我观念的统统走开。通例孤例从来不缺,缺的只是安慰剂这类药。 如此灵药也不是人人都能享用的,那些性格里带有怀疑精神的倒霉蛋就没这个福分。别说安慰剂了,他们连自我都怀疑。倒霉蛋大体分为两种,先天的和后天的。他们的生存状况大体上差不多,真要细比后天的要惨些,是倒霉蛋中的倒霉蛋。比起一开始就不吃无效药的那些,他们乐乐呵呵的从众吃了大量安慰剂,产生了各种幻觉,萌生了各种希望,不断调整配方和计量,直到后来产生了怀疑火苗。有人遮蔽了火苗、有人烧掉了些观念、有人烧掉了知识体系、有人烧掉了价值体系。 古今中外的大哲,无一例外都是在不断怀疑中或建立或重建自己的价值体系,加上对世界的理解、对人的定义,最终构成了独有的哲学体系,或自立门户、或再开分支。就像每一位大哲都怀疑了先人一样,他们也成了被怀疑的先人。带点怀疑的精神,探寻每棵体系大树的深处,在根的地方是叫第一假设的东西。面对着这个最值得怀疑的东西,不免心生疑惑,难道这帮倒霉蛋在怀疑完自己和先人后,又抛弃了怀疑精神,造出了新的安慰剂抚慰自己,整嗨别人? 在其背后不论是感悟了天道的、还是面见了其神的,统统都不是纯粹的倒霉蛋。这也很好理解,一切怀疑的尽头必然面对的是无尽的虚无。内心不够强大的总要找些外在的力量,最终自嗨嗨人,这就是宗教性的根源。那纯粹的内心强大的倒霉蛋一般怎么干呢?他们会为自己的虚无赋予意义,形成各种的主义。维基百科解释“主义”一词如下,代表理念或有完整体系的思想和信念,也可视为实现不同目标的不同方法。既然是方法,就不是真理。感性的体悟也好,理性的选择也罢。本质上都应是个人选择,即便你体悟出了东西还面临着选择是否相信,选择相信则是前者,选择不相信则是后者。区别只是前者选择给自己喂安慰剂,后者选择直面冰冷的现实。 卢梭写到:“人生而自由却又无所不在枷锁之中。”在很长的一段时间里一直不明白这里的自由究竟是什么?是自由去死的权利吗?可有的神经病和犯人连自杀的权利的没有啊。现在看来,它可能指的是人在选择价值体系时的自由意志。任何选择都是有代价的,机会成本外要死不少脑细胞。而那些把自己交给命运而不做选择的大多数,其实也算一种选择。一种非常幸运的选择,首先赶上了个好时代,其次少了一个终极大问题,最后获得了不少的安慰剂福利,而这些正是倒霉蛋们无福受用的。

February 22, 2017 · 1 min

20170219学习纪录

Objective 关于今天的课程,你记得什么? 1、model里面的event和一般方法一样可以调用,而且调用时在时间后增加!不影响使用; 2、路径的调用在任何一个views里面都可以,知识要弄清楚自己所使用的路径,还有需要传递的参数; 3、rake routes里面的:id是说要传递参数,但是并没有指明具体需要传递那个参数; 完成了什么? 独立完成了第三周的作业任务 Reflective 你要如何形容今天的情绪? 今天情绪平稳,虽然练习断断续续,但是能自己把作业给解出来,而且过程思路清晰,很高兴自己开始能融会贯通了。 今天的高峰是什么? 独立解作业的时候思路非常清晰,并没有之前的那种绞尽脑汁的感觉。 今天的低点是什么? 练习量还是太低了。 Interpretive 我们今天学到了什么? 1、通过看广州伙伴们的meetup分享学习了几个实用的快捷键和atom功能; 2、routes是动作的启动方式; 3、gem和packge的很好的工具,有时间的时候可以去多探索探索; 4、学到好的工具一定要第一时间拿起来用,要成为一个“工具癖”; 5、做网页的时候要用运算想象力,想象自己要实现的功能具体操作的时候是怎么样的; 今天一个重要的领悟是什么? ####学习方法 要学着自己写教材,教就是最好的学,而写教材是教当中的第一步,也是和写作相结合在一起的一步,可以理清自己的做事步骤和套路 ####编程知识 理解了routes的本质,想实现动作或者打开网页的时候,就是通过routes来定义这个过程的触发链路的。 Decisional 我们会如何用一句话形容今天的工作? 感觉自己的思路清晰了非常多。 有哪些工作需要明天继续努力? 完成购物网站的学习;

February 20, 2017 · 1 min

20170217学习纪录

Objective 关于今天的课程,你记得什么? 1、新建的mailer这个新对象; 2、GEM letter_open; 3、GEM aasm; 4、状态机这个概念,本质上只是一个存储状态的列及相应的转换触发命令; 5、deliver!是打开新页面的命令; 6、event为事件的定义; 完成了什么? 完成了购物网站的课程学习; Reflective 你要如何形容今天的情绪? 在家里还是干扰太大,学习始终无法进入状态,还好还有几天就不在家了; 今天的高峰是什么? 状态机这一块很好的理解了; 今天的低点是什么? 学习状态屡屡被老姐打断; Interpretive 我们今天学到了什么? 1、站内信; 2、状态机; 3、event的设定 今天一个重要的领悟是什么? ####学习方法 学习环境真的很重要; ####编程知识 状态机这个机制是非常重要的一个工具 Decisional 我们会如何用一句话形容今天的工作? 哎,效率低下。 有哪些工作需要明天继续努力? 休息一下。

February 19, 2017 · 1 min

20170216学习纪录

Objective 关于今天的课程,你记得什么? 1、session和cookie的工作机制; 2、query的工作原理; 3、form_tag的实用意义; 4、params这个传递的参数的意义,以及获得的几种方法; 5、routes的规则; 6、rakoe routes生成的列表的三行分别代表了方法地址,url,对应的controller; 7、routes里面有和没有s的区别,没有则少了index; 8、ruby的parse这个转换代码的方法; 9、params也可以用来传数组; 10、ruby的.split这个分割方法; 11、传递参数时可以加入筛选条件,比如(“total > ?”, params[:total]); 12、传递参数名称只在传递时使用,所以可以自己灵活设定; 13、_url和_path的意义是一样的; 14、hash复制的另一个方法 :XXX => 值; 15、在routes甚至方法时比较灵活,比如:get “/foobar” => “welcome#index” 可以加上:as => ‘zoo’ ,也可以写成“/foobar/:a/:b/:c"; 16、params的来源可以,controller,views,地址后,表单里,理由里; 17、通过admin:: 可以把controller拆分成两部分; 完成了什么? 听了ihower老师的直播 Reflective 你要如何形容今天的情绪? 昨天记得东西太多,今天大脑有点厌学了,因为晚上要听直播,所以没有安排太多任务,晚上听了ihower老师的直播,明白了很多以前不明白的东西,感觉基本打通了现阶段的一些内容,特别是将sesiion和cookie时,把一个困扰心中多年的概念给弄明白了。 今天的高峰是什么? ihower老师直播的内容很好的理解吸收了; 今天的低点是什么? 昨天强记的内容太多了,大脑今天有点厌学; Interpretive 我们今天学到了什么? 1、routes的使用方法; 2、params的传递方式,及利用原理; 3、rake routes里面的元素使用方法; 4、query的方法; 5、session和cookie的原理; 今天一个重要的领悟是什么? ####学习方法 缺乏学习动力的时候,一定要找一个学习的内在驱动力,它有两种,理性的和感性的。理性的是意义,感性的是能调动你奋斗平博一直的东西,老罗的历史演讲就是这个感性的内在驱动力。 ####编程知识 query真是牛逼得不得了的一个工具,打通了数据显示的关卡,下一步就是进一步掌握params的传递方法; Decisional 我们会如何用一句话形容今天的工作? 低谷期中寻求突破,学习进度似有小成; 有哪些工作需要明天继续努力? 完成购物完整的学习;

February 17, 2017 · 1 min

20170215学习纪录

Objective 关于今天的课程,你记得什么? 1、豆知识,指的是零散的知识; 2、GitHub提供了Project的管理工具; 3、建立Github的Project的基本套路是:用户故事、功能实现、界面美化、已完成项目; 4、有@符号的变量可以用来传送,没有@符号的变量只能在当前本地使用比如当前的controller; 5、在ror中,实际上有三种语言存在,ruby语言、rails语言、html语言; 6、!在变量前表示否定,!=表示不等于,!放在后面表示会改变自身,所以自己定义的函数若会改变自身值则需在名称后面加上!; 7、Ruby内XXX?在名称后面表示会返回boolean值,就是true和false的意思; 8、find函数执行不下去会卡住显示“couldn’t find order wiht ‘id’ = 1”,find_by则会返回nil; 9、find_by的用法是find_by_xxx_and_yyy_and_zzz….; 10、但是为了维护是排错方便一般不操过两个; 11、.find_by等价于.where().first; 12、如果没有first查找不到的话会返回【】; 13、ruby方法.blank?能将"",[],flase三种情况转化成统一的flase方便逻辑的执行,与避免一些坑; 14、alias为同名函数,用来为命令制定其他名称用,程序员在工作室为方便自己使用通常会为一些命令设定自己的alias方便自己使用; 15、在command line里面输入alias可以查看同名命令的情况; 16、command + 回车可以不改变当前光标后内容而新建行; 17、有的命令在ruby和rails中都有,比如create; 18、有的命令只在rails里有,比如build; 19、link_to表示生成一个通向某对象的链接,需要参数()是要告诉程序这次回圈要制定到那个具体的对象; 20、self这个在Model里面的对象; 21、台湾的物件和我们的对象是一个东西,都是object的译名; 22、build的进阶用法,create:@order = current_user.orders.build,替代@order = Order.new @order.user = current_user; 23、find的进阶用法,show: @order = current_user.orders.find(params[:id]) 替代 @order = Order.find(params[:id}) if @order.user != current_user redirect_to root_path end; 24、上述的原方法其实已经获得了order,之后再进行权限验证,第二种方法就避免了获得order,而是相当于先进行了验证; 25、在设计购物车时,应该使用find_by而不是find,因为会卡住; 26、command + R 是清屏快捷键; 27、在rails内,!号放在后面会返回ActiveRecord::RecordInvalid; 28、AR内XXXX!表示执行method有可能rails error,比如,.save不成功会直接刷新页面,.save!则会提供错误信息; 29、上述方法在debug时好用,但是生产中不要使用,避免别人发现系统的漏洞,而且会出现505报错; 30、对象多,以及他们之间的关系没有建立好也是可能保存不成功的; 31、学习了二十五种语言的牛人和学程序的不知是一样的,都是语言,一个对人,一个对机器; 32、a.创造环境,用身体记忆 -> 跟着rails 101练习; 33、b.跟读 -> 练习多遍; 34、c.开口说 -> 用起来,jobliting,JD-stroe; 35、d.别被文字绑架 -> 不要拘泥于程序语言的细节; 36、学有余力可以学习rails 盖(gai第四声); 37、目前课程只用到CRUD比较麻烦部分就是VIEWS部分需要用到CSS/HTML。所以不要纠结语法到底怎样用,实在不会没关系; 38、session不会很正常; 39、<%= %> <% %>里面的是ruby语法吗? 40、model下的是rails语法? 41、views是html? 42、还是是上述的成分混合? 43、ActiveRecord就是rails用的库; ...

February 16, 2017 · 1 min

20170214学习纪录

Objective 关于今天的课程,你记得什么? 1、permit一个model时,它对应的对象也会获得相应的权限吗?(指教材中的product_list); 2、token这个保护数据隐私的方法; 3、在controller里面定义调用一个网页前的数据钥匙,以后在所有需要调用这个网页前都需要使用这个钥匙; 4、find一般使用的是:id来查找数据,find_by则灵活得多; 5、@product_lists.each和order.product_lists在使用上还是有所不同; 6、安装了awesome_rails_console这个GEM; 7、在meetup伙伴的督促下安装了google环聊及skype,这两个远程写作神器; 8、class=“col-md-12"这个bootstrap类基本是满屏的意思; 9、views页面里基本是以"row"定义一个大块,然后在接着col-md-12内容块,在具体内容; 10、li class=“divider"是列表的分割线; 11、生成product_list的controller后,在文件里显示的是ProductListController,下横杠去掉了,而且首字母大写,下横杠的意义还需要学习一下; 12、SecureRandom.uuid这个ruby随机生成字符串的方法; 完成了什么? 1、完成了购物网站第三部分订单实作的练习; Reflective 你要如何形容今天的情绪? 今天学习比较顺利,多次进入了心流状态,再次对学习上瘾了,保持这个学习的初速度真的很重要,成就感满满的,再一次对自己充满了信心。 今天的高峰是什么? 自己能根据教材的步骤大致判断出来下面要如何做,及怎么做; 今天的低点是什么? 在查看所有订单时显示相关的物品清单这个功能没能实现; Interpretive 我们今天学到了什么? 1、领悟了model、controller、views的三层空间模型,用来理解数据流动及关系及动作触发; 2、学习上瘾的核心在于保持一定的“过关”速度,还有适当的难度; 3、学习到什么可用的新东西要做的第一件事情就是去用,像今天安装的awesome_rails_console花了半天的时间去找来安装,要是YY老师第一次上课分享的时候就安装了能避免很多麻烦; 4、抖腿有利于写ORID。。。。。。; 5、CURD没事要多默写,不但是记住它,对于理解其他东西也重要,最好每天写一遍; 6、查bug的一个方法是将过程中的量的数值通过<%= %>显示在网页里; 7、rails g model可以在后面跟着参数直接生成数据项和类型,也可以在后面的migration文件里生成; 8、打开网页显示内部链接出错是因为网页在生成的过程中会进行ruby计算把相关变量编程确定地链接放在网页里,而不是用的时候再计算,所以即便说一个因错误无法生成的链接你还没有点,但其实在生成网页的时候这个问题已经发生了,所以无法继续生成网页; 今天一个重要的领悟是什么? ####学习方法 在周日的线上meetup分享后,跳出了沉迷于坑里的毛病,一段时间不能解出就找方法看后面教材找求。所以之后的今天再一次找到了上瘾的感觉,心流再次源源不断。总结就是,学习的本质目的是最短时间拼上最多的图,独立解出是牢固,但是也要考虑时间成本和情绪成本,所以在短时间获得大量拼图再上orid来巩固和独立解决牢固记忆之间要设定一个平衡点,我现在设置的就是20~30分钟,不能忘了学习的优先目的是拼出大图,而后再粘好它,而不是反过来。然后,进入心流表示状态好,所以在这种情况下就不用采用劳逸结合的学习方式,因为那会打断心流。两种方式视状态而定,没状态的时候小步快跑,有状态的时候直接飞,具体情况可以根据是否能进入心流来调整,另外,貌似古典音乐更容易帮我进入心流,而the piano guys只能调动我的情绪而不能让我专注做事。 ####编程知识 三层架构空间模型,用来理解程序非常好用 Decisional 我们会如何用一句话形容今天的工作? 不沉迷与坑里后,又找回了获得上瘾及进入心流的方法,高效学习; 有哪些工作需要明天继续努力? 1、完成第二周的学习内容及复盘; 2、争取完成第四部分的学习;

February 15, 2017 · 1 min