7 months ago

引用自:Dipti Virani的博客文章:How To Download Wistia Video Without The Embed Code,感谢博主的无私分享!

全栈营里除了有丰富的教材之外,还会有每周xdite、助教的直播教学视频,一直以来都想将这些视频保留在本地,方便自己在离线的情况下复习一些可能在当时直播没能关注到的细节知识点。最近终于找到了一个解决方案,现在就来分享给大家。

一、 需要的工具:


二、 初次尝试:


我们全栈营的所有直播课程视频是挂靠在 Wistia 这个视频主机服务商提供的。看了看 收费价钱 ,确实挺烧钱的。

尝试通过 Chrome插件 来抓取视频网址,但失败了。。。 (只能下载缓冲到的视频部分。)

三、 完整流程:


1.查看网页源代码

2.搜索关键词"async",找到 视频代码 :cinw9k9m2g

3.在浏览器地址栏输入:

https://fast.wistia.net/embed/iframe/cinw9k9m2g

4.打开网页 http://www.clipconverter.cc/

5.复制 第3步 中获取的视频地址 https://fast.wistia.net/embed/iframe/cinw9k9m2g ,再粘贴回来

 
9 months ago

如果说两次魔改大赛的经历让我知道自己的水平处在哪里,欠缺的地方有哪些的话,那这为期一个月的精进学习算是为自己未来的编程学习之路设下几块指路牌,让自己明确后面需要刻意练习的路径,剩下的就是将注意力放在那里,耐心等待奇点到来。

回顾:

先来回顾一下这一个月都练习了什么?

  • 第一周任务:Job Listing,手打一遍、提取一遍
  • 第二周任务:JDStore,手打一遍、提取一遍
  • 第三、四周任务:Rails百宝箱+基础练习簿+WebAPI+Ajax+MySQL+Rails自动化测试
第一周任务复盘:

现在回想起来第一周的任务还是最简单的,大部分同学也都能按时完成指定任务,而自己在第一周的精进学习中也是收获比较多的。每天除了手敲代码以外,还会在笔记本上手抄实作步骤。这样做的好处是能够利用纸笔一边写一边理思路,其实从某种程度上来说,写代码其实就是在打字写作,而在写作前我们需要有思路作为指引,我想编程也是一样,写代码之前整理清思路能够有助于后期少犯错误,避免浪费太多时间debug。

这一周的重点在于理清实作一个项目的整体思路,把思路理清楚其中的代码再去刻意练习总是能够熟练掌握的。所以,我在这周花了大量精力在记忆理解步骤上。

第二周任务复盘:

从第二周的任务开始,就陆续出现同学缺席、没能按时完成指定任务的情况。我想这也是可以理解的,大部分同学都是繁忙的上班族,白天在工作中耗费了大量精力,晚上匆匆吃好晚饭,再打开电脑开始精进学习真的不是一件轻松的事情。而第二周的任务量又是较上周翻倍的,一周的时间想要完成一遍手打、一遍提取练习的难度还挺大的。

第二周我还是按照第一周的方式进行,但进展一般的时候就觉得有些吃力,特别是购物车部分,提取难度仍然很大,短短一周的时间很难做好提取练习。后面紧赶慢赶匆忙完成任务,提取的质量也不是很理想,但在这周还是有点收获的。由于被选为小组长,在收取查看同学进度的时候发现大家对于Github“小绿点”还不是很重视!所以,自己复盘Nic老师直播视频和一些资料,写了一篇 关于培养“小绿点” 的教程,也在Meetup的时候分享给小伙伴,也得到了大家的重视。厚着脸皮贴一张自己小绿点的情况吧:

第三、四周任务复盘:

最后两周的任务难度更高、量更大,虽然在公布任务的时候提醒过同学要安排好自己的进度,但最后只有很少的几位同学能够按时完成指定任务。我自己的感觉也不是很好,由于难度较大,例如《编程基础练习簿》基本没法自己独立完成,绝大多数内容都是抄其他同学的代码,自己完全没法理解,也对于如何实现没有头绪。后面关于Ruby的内容还是要自己看书、实作练习来巩固这方面知识。

最后两周的收获其实并不是很大,心理上的焦虑情绪又浮现出来。在Meetup上也有提到这方面的问题,同学给出了非常中肯的建议:

很多学习不是直线式进步的,而是阶梯式进步的。 也就是说,你每上一个新台阶,就会感觉特别难,一个台阶需要一段时间才能跨越。

要锻炼自己敏锐地发现自己的进步所在的能力。
可以去看自己最早写的ORID,你会发现原来自己有了这么大的进步。

问题解决前总是觉得很难,自己很笨;但解决后就感觉很简单,感觉自己是神。

确实,如果我们回去看看自己开始写的ORID会觉得现在自己很牛逼啊!从当初看到报错红画面不知如何是好的纯小白成长为能够借助Google找到bug解决方法,能够耐心阅读英文解决回答的新手。就像同学说的:“要锻炼自己敏锐地发现自己的进步所在的能力。”培养这种能力就能让自己在学习遇到困难时,及时调整步伐而不是停滞不前甚至选择逃避!

总结

在精进的这一个月时间里,让自己的生活更加充实,编程已经逐渐纳入到自己的日常生活之中,甚至已经有了一种依赖心理,如果哪天发现没有敲代码会觉得这一天不够完美,哪怕自己Github上今天只推一个commit有了很浅的“小绿点”也会让自己心里舒服一些。xdite老师通过三个月的时间给了我们几块木板,然后把我们推向大海,后面的路还是要靠我们自己去探索。不过好在精进学习的这个月隐约出现了几块指路牌,为下一步去哪指明了方向。

 
9 months ago

两周的精进学习让自己“龟速”的进度瞬间加上了“火箭”,翱空飞翔一圈落地后才知当初失去错过了多少。虽然两次大赛都有参与,但自己的水平几斤几两只有自己最清楚。当得知要创建“精进群”计划时,第一时间填写表单提交等候通知。很幸运被选中能够进入“精进群”,也很珍惜这样一个机会,所以从一开始就打算认认真真“大战一番”!

这两周来最大的收获是?

  1. 编程最重要的是理清思路 第一周的任务是招聘网站,在第一遍跟着教材手打练习时,虽然没遇到过太大的bug卡住,但对于每一步需要做什么、怎么做还是模糊不清。所以,自己在开始第二遍提取练习前,停下来每一章节手抄实作流程,将每一小节的目的和实作步骤思路理清楚写在纸上。做了几章内容发现这样的抄写并不是无用功,反而会帮助理解教材内容。每天在群里发自己的进度和手抄笔记还获得了助教老师的点赞,心里也是挺开心的。反复进行这样的提取练习已经成了一种习惯,而且在提取的过程中脑海里不知不觉的就形成了对实作功能的一些记忆,这部分记忆是之前从未有的。

我认为:编程最重要的是理清楚实作一个功能需要做哪些小动作,而其中的代码部分是可以通过反复练习最终掌握的。

  1. 拆分提取能够记得更深 除了上面提到的整理思路之外,我还体悟到一个也同样重要的“练习奥义”————拆分提取。在练习 招聘网站 的时候,我采用这样的方式进行拆分:穿衣服(6-0)、管理员部分(6-1 ~ 6-4)、管理员部分(6-1 ~ 6-4)、应征者部分(11-1 ~ 11-2)、完善功能部分(8-2 、12-2)。每天提取练习的时候分小节进行,熟练的部分少练几次,不熟练的部分反复多练。

这样分的好处我认为是可以清晰地把比较大的项目拆解成小的任务,对于新手掌握实作流程有一定的帮助;另外用这样的方式进行练习也能减轻做“提取练习”的压力,可以每次计划完成一个部分反复练熟再进行后一个部分,不至于每次想着要完成整个项目而造成较大的心理压力。


这两周来犯过最多的错误是?

  1. 拼错字、符号导致bug
    这应该算是导致bug的高频错误,但这也是练习时最麻烦最耗时的地方。原因在于有时候会不知道是哪一步出现拼错,找起来也比较费劲。所以,我会在每次commit前,在本地跑一遍刚才做的功能,如果有报错就及时修正,不然很容易陷入一个大坑——到处找bug不知到底在哪一步出现问题,这是很耽误时间和白白消耗注意力的事情,一定要防止这种事情发生。

  2. 分块提取,数据库报错
    这种情况的错误是不可避免的,由于我习惯进行分小节提取练习,一旦这一小节中有关于数据库的部分(rails g migration/model...)再重做的时候一定会出现这种问题。
    而我的解决方法是 “Rake三兄弟”(rake db:drop db:create db:migrate)每次练完删除分支再新建分支后,第一件做的事情就是跑一遍“Rake三兄弟”。但这种方式只适用于现阶段练手项目,如果后面正式入职开始真实项目开发千万不能用这种方式,会挂的!!!切记!!!

小结

两周的精进学习,让原本平静、慵懒的学习进度冲刺了一段,限时任务逼迫自己每天都要练习练习再练习,每周都能有点收获并分享给大家(第一周:招聘网站实作流程复盘、第二周:让Github展示你的勤奋努力),看着自己Github上小绿点每天都有增长,心里也是挺开心的。后面需要学习精进的部分还有许多,好在自己已经有了一套学习提取的方法,即使以后脱离教材应该问题也不会太大。

总之,精进学习带给我最大的感触就是已经把编程纳入到生活的一部分,如果有一天不去敲代码身体会产生不适应的“不良症状”,也许这就是xdite老师一直在说的“上瘾”吧!

 
9 months ago

这一篇是我通过这几周来精进学习开发的一点点小技巧。开发高手们可以略去,仅适合刚接触编程不久的新手开发小白们,欢迎给予意见也乐意接受拍砖。

这是截止到今天上午(7.15 9:00AM),自己Github上 contributions count 的情况记录。

如果你还不知道在哪里能够找到这块“宝地”,那你先出去面壁十分钟再往下看吧!

如果进去之后你还没找到的话。。。。。。拖出去斩!了!吧!

如果你也想让自己的Github每天都能有努力练习过的痕迹,跟着下面的步骤养成好习惯你一定会爱上敲代码的!

一、懂得 Github count contribution 的规则

其实,在 Github 官网已经给出了这些规则的 详细说明 ,哪些动作会 count ,哪些动作不会被 count 。

如果你是英文苦手也不用紧张,这里有两个方法可以帮助你解忧:

  • 如果你使用 Chrome 浏览器 ,它自带的 网页翻译 功能足够帮你解决理解问题
  • 已经有好心的国内程序员朋友有翻译版本,原文链接:点这里

二、 对于新手开发者,我们只需要记住这一条

对于我们新手小白开发者来说,最重要需要记得的就是:

多切 分支 、多做 commit -> 切回 master 分支 、 merge 做好的分支 -> push master 分支

整个流程需要使用的命令行:
git add .
git commit -m "功能描述"            # commit 做好的功能 #

git push origin 刚做好的分支名称      # 推送 做好的分支 #

git checkout master                # 切回 master 分支 #

git merge 刚做好的分支名称            # merge (合并)刚做好的分支 #

git push origin master             # 推送 已经合并分支的 master #

三、 多加练习,养成习惯

对于新手小白开发者来说,大量的练习是必须要做的“基本功”。而积累一些有助于开发成长的小技巧,不仅能够帮助我们养成一些开发好习惯,还会在一定程度上激励自己,看着Github上的小绿点每天都有被记录,也在向外界宣告自己的勤奋与努力。一举两得的事情,不是吗?


小结:

这样一个开发小技巧可能对于高手程序员朋友来说不足挂齿;但对于新手小白开发者来说,得知并掌握一个再小的开发技巧都能让他们兴奋好久,正是这样一个又一个的“小刺激”帮助他们逐步跨出“小白阶段”,勇敢探索新的领域。新手犹如一张白纸,掌握一些优秀的技巧并培养成习惯会有事半功倍的作用。

 
10 months ago

本周算是学习全栈营最为认真的一段时间,加入精进C群也是出于要认真学好全栈的目的而来的。第一周的作业就是复习招聘网站进行提取练习,这篇就来总结下本周的学习复盘。

拆解任务

编程对我来说真的算是门槛很高的一项技能,虽然自己在之前也有通过各种渠道学习过编程,但最终的成果每次都是放弃。拿到一个项目第一步要做的一定不是设计网站架构,更不能直接开始敲代码。

首先要将这个项目进行合理拆解,拆解成足够小,这样有助于后期进行项目管理。

招聘网站:这样一个项目如何进行拆解呢?

我是这样进行拆分的,整个项目分为四大部分:

  • 穿衣服(6-0)
  • 管理员部分(6-1 ~ 6-4)
  • 应征者部分(11-1 ~ 11-2)
  • 完善功能部分(8-2 、12-2)

这样分的好处我认为是可以清晰地把比较大的项目拆解成小的任务,对于新手掌握实作流程有一定的帮助;另外用这样的方式进行练习也能减轻做“提取练习”的压力,可以每次计划完成一个部分反复练熟再进行后一个部分,不至于每次想着要完成整个项目而造成较大的心理压力。


下面将每一部分的实作过程进行复盘,也算作是一次“提取练习”

1.穿衣服

6-0:

  • 安装Bootstrap套件(gem安装、设置navbar/footer/flash)
  • 安装Devise会员系统(gem安装、devise安装配置、dropdown配置、修改navbar中dropdown设置)
  • 安装simple_form好看易用的表格样式(gem安装、simple_form配置)
  • 建立welcome的 model & controller ( rails g 来建立 model 和 controller 、建立view页面、修改controller文件、测试flash)

2.管理员部分

6-1:

  • 建立 job 的model( title:string 和 description:text ) 和 controller
  • 配置 job 的路由(routes)
  • Job CRUD
  • Job View页面(index/new/show/edit/form{共用表单})
  • Job title 不能为空 ; 限制登录操作(:new/:create/:update/:edit/:destroy)

6-2:

  • 建立 admin::jobs 的controller
  • 配置 admin:jobs 的路由(routes){namespace}
  • Admin job CRUD
  • Admin job View页面(index/new/show/edit/adminform{共用表单})
  • navbar+下拉选单按钮AdminPanel、navbar+判断语句限制
  • 新增数据库 is_admin(将 is_admin 加入数据库rails g migration add...
  • 定义 admin?(model/user.rb def admin?)
  • 定义 require_is_admin(application_controller.rb def require_is_admin)
  • 新增 require_is_admin 到 controller(app/controllers/admin/jobs_controller.rb)

6-3:

  • 新增 more_detail_to_job 到数据库(rails g migration add...
  • 在表单中增加栏位 wage_lower_bound、wage_upper_bound、contact_email(_form.html.erb_adminform.html.erb
  • 添加白名单 :wage_lower_bound, :wage_upper_bound, :contact_email(jobs_controller.rbadmin/job_controller.rb
  • 薪资不能为空,薪资下限要大于0(validates... / numericality: { greater_than: 0 })

6-4:

  • 新增 is_hidden_to_job 到数据库(rails g migration add... add_column :jobs, :is_hidden, :boolean, default: true
  • 在表单中增加栏位 is_hidden(_form.html.erb_adminform.html.erb
  • 添加白名单 :is_hidden(jobs_controller.rbadmin/job_controller.rb
  • 隐藏文章首页应该看不到(jobs_controller.rb def index @job = Job.where(:is_hidden => false))
  • 定义 recent scope(models/job.rb scope :recent, -> {order("created_at DESC")})
  • 首页文章应该按照发布时间排序(jobs_controller.rb def index @job = Job.where(:is_hidden => false).recent)
  • 加入“Hidden”&"Public"修改管理员后台样子(jobs_helper.rb def render_job_status(job)/admin/jobs/index.html.erb + <%= render_job_status(job) %>)

3.应征者部分

11-1

  • 修改首页表单加入薪资上限、薪资下限(jobs/index.html.erb
  • 首页加入 排序 下拉选单(jobs/index.html.erb 参照教材手打HTML)
  • 修改 Job controller 实作排序功能(jobs_controller.rb def index @jobs = case[:order] | when 'by_lower_bound' | Job.published.order('wage_lower_bound DESC'))
  • 定义 published scope ('models/job.rb' scope :published, -> {where(is_hidden: false)})

11-2

  • 建立 投递简历 链接(views/jobs/show.html.erb 参照教材手打HTML)
  • 建立 resume model(job_id:integer user_id:integer content:text)
  • 建立 Resume 与 User/Job的关系(models/resume.rb belongs_to :user belongs_to:job / job.rb & user.rb has_many: resumes)
  • 建立 resumes controller,修改resume路由(routes),添加resume的地址(views/jobs/show.html.erb)
  • resume CRUD(new/create)
  • 新建 resume#new View页面
  • content不能为空(validates)
  • 加入简历上传功能(gem 'carriwave')
  • 新增 attachment 栏位到数据库(rails g migration add...
  • 配置 Attachment Uploader(rails g uploader attachment / models/resume.rb mount_uploader :attachment, AttachmentUploader)
  • 在表单中添加 attachment 栏位(resumes/new.html.erb
  • 添加白名单 :attachment('resumes_controller.rb')
  • 屏蔽使用者档案(.gitnore +public/uploads)

4.完善功能部分

8-2

  • 新建 admin.html.erb 页面(views/layouts/admin.html.erb 参照教材手打HTMl)
  • 在 admin controller 添加 layout (admin/jobs_controller.rb + layout "admin")
  • 把 Public & Hidden 换成图标(gem 'font-awesome-rails' / '配置application.scss' / 'job_helper.rb'替换"Pulic"和"Hidden" )
  • “被隐藏的工作”不能被查看到('jobs_controller.rb' def show + if @job.is_hidden)
  • 将 Public 和 Hide 设计成按钮(添加路由{post: publish/hide} / admin/jobs/index.html.erb添加按钮判断语句 / admin/jobs_controller.rb def publish 和 def hide / models/job.rb def publish! 和 def hide!)

12-2

  • 在 admin/jobs 列表加入薪资下限、上限、收到简历数量(admin/jobs/index.html.erb 参照教材手打HTML)
  • 管理员可以看到职缺里有谁投递简历(views/admin/jobs/index.html.erb +<%= link_to(job.resumes.count, ...) %> / 新建 admin::resumes controller / 修改路由(routes) / admin/resumes_controller.rb def index + @resumes = @job.resumes.recent)
  • 设计简历列表(新建resumes/index.html.erb / 新建 resumes/_resume.html.erb 参照教材手打HTML)
 
10 months ago
Ojective

今天进行提取练习第3遍,比自己预想花费的时间要长,而且前两天频繁练习的一些代码还是有搞混的情况,不过总体来说Job-Listing的整体流程算是搞明白了。

默写CRUD一遍,全对!

参照笔记本进行第三遍“提取练习”,记录完成时间,完成后进行比对加深记忆(身心俱疲啊!!!)

Reflective

今天的高峰是:

终于在一天的时间内(下午3点——晚上9点)完成整个一遍的“提取练习”,身心俱疲啊!

今天的低点是:

好多代码出现混淆的情况,还是需要再多练习加强肌肉记忆!

Interpretive

今天上午健身完头晕目眩,应该是这几天饮食不正常导致的,这两天没做菜一直在外面吃,加上健身消耗大,中午回家感觉都快晕倒了,最近要调整饮食开始做饭了!
中午虽然休息了一会,但下午敲代码的时候还是觉得有些疲惫,今晚要早点睡。这也怪不了别人,这都是之前欠下的债,从没做过提取练习,现在这样拼命地加紧练习能不累么!总之,学到掌握了才是最重要的事情,对吧!加油!

Decisional

  1. CRUD每天一默
  2. 明天准备写一篇Job-Listing实作流程,保持热情!
  3. 坚持每天进步一点点,践行“教就是学”
 
10 months ago
Ojective

今天进行 11-1 、11-2 、12-2 的“提取练习”,过程非常酸爽!

参照教材 11-1 、11-2 、12-2 把整个流程记录在笔记本里



参照笔记本进行第一遍“提取练习”,记录完成时间,完成后进行比对加深记忆


默写CRUD一遍,全对!

Reflective

今天的高峰是:

基本理清Job-Listing各功能的实作步骤,完成第二遍提取练习,时间和第一次手打时间差不多,说明提取练习的有效性,与看着解答手打相比,目前的自己已经懂得了一点项目各个功能实作的要点,对于后面更为系统精进学习项目开发有一定的帮助。
连续几天进入“心流”状态,iTune里的专辑一张一张听完,自己还沉浸在敲代码中,感觉真的挺棒的!
Debug新技能get!Google搜索:问题描述 + logdown,能遇到很多解决办法

今天的低点是:

今天的提取质量没有前两天高,可能与环境有关系吧,星巴克太吵感觉有点不适合静下心来学习。

Interpretive

今天感觉到项目管理的重要性了!这次提取练习我是把教材内容分为三个部分进行练习(穿衣服,管理员部分,应征者部分),每天提取一个部分,虽然压力挺大的,但是效果确实非常好!这次提取练习完可以写一篇教材的梳理流程记录,这样在以后做项目的时候可以查阅高手是如何合理安排项目拆分的。

下午在练习时,还进行了一点迁移练习,把Rails101“共用表单”、“创建时间排序代码重构”迁移到Job-Listing的实作流程上,这样的迁移练习也让自己对于这些功能有了更深入的理解。

Decisional

  1. CRUD每天一默
  2. 明天继续提取练习,保持热情!
  3. 坚持每天进步一点点,践行“教就是学”
 
10 months ago
Ojective

今天进行 6-1 ~ 6-4 的“提取练习”,过程非常酸爽!

参照教材 6-1 ~ 6-4 把整个流程记录在笔记本里



参照笔记本进行第一遍“提取练习”,记录完成时间,完成后进行比对加深记忆

默写CRUD一遍,全对!

Reflective

今天的高峰是:

今天下午从1点半开始一直待到5点多,一直在敲代码,非常享受进入“心流”的感觉,心情也大好,突然觉得自己懂得了很多(假象吧。。。)
随着自己多次进行“提取练习”,自己对于Job-Listing如何一点点做出来有了深入的理解

今天的低点是:

部分代码还是不能完全凭记忆写出来经常出错,一出错找bug就要耗费很多时间

Interpretive

今天感觉到项目管理的重要性了!这次提取练习我是把教材内容分为三个部分进行练习(穿衣服,管理员部分,应征者部分),每天提取一个部分,虽然压力挺大的,但是效果确实非常好!这次提取练习完可以写一篇教材的梳理流程记录,这样在以后做项目的时候可以查阅高手是如何合理安排项目拆分的。

下午在练习时,还进行了一点迁移练习,把Rails101“共用表单”、“创建时间排序代码重构”迁移到Job-Listing的实作流程上,这样的迁移练习也让自己对于这些功能有了更深入的理解。

Decisional

  1. CRUD每天一默
  2. 明天继续提取练习,保持热情!
  3. 坚持每天进步一点点,践行“教就是学”
 
10 months ago
Ojective

今天开始真正的“提取练习”,过程算是比较酸爽的,不过成果还是比较显著的!

  1. 参照教材 6-0 穿衣服 把整个流程记录在笔记本里
  2. 参照笔记本进行第一遍“提取练习”,记录完成时间,完成后进行比对加深记忆
  3. 第二遍基本凭记忆进行“提取练习”,速度、出错率都有了提升
  4. 默写CRUD一遍,全对!
  5. 默写 6-0 穿衣服 整个流程,加深记忆
Reflective

今天的高峰是:

“提取练习”虽然开始是比较艰难的,但在做完以后看到有效果还是比较兴奋的!这应该是我第一次真正意义上的“提取练习”,之前根本没有这样做过!

今天的低点是:

以这样的方式进行“提取练习”耗费大量时间,下午从2点左右开始一直做到4点半只能做完 6-0 这一个小节的练习,后面“提取”的难度肯定会比这大得多!担心时间不够,要提升效率和保护注意力!

Interpretive

  • 对于 6-0 穿衣服 整体流程已经做到在心中有数,可以部分脱离教材仅凭记忆做出
Decisional

  1. CRUD每天一默
  2. 明天继续提取练习,保持热情!
  3. 坚持每天进步一点点,践行“教就是学”
 
10 months ago
Ojective

今天完成Job-Listing跟着解答手打第一遍练习

Reflective

今天的高峰是:

下午敲代码时进入“心流”模式,即使周边环境再嘈杂(有戴耳塞听音乐),也能沉浸在编程的世界里,这种感觉太好了!
练习过程中会有出现bug报错,但都能很快地独立解决。
精进C群有同学分享同期 吉翔同学 所做的网站 CaseTimer ,这是一个为全栈营学员设计,记录每次做教材练习所花费时间的一个网站,非常实用!!!

今天的低点是:

对于明天的提取练习有些担忧,感觉会很困难,这都是之前欠下的债,是时候迎难而上还债了!

Interpretive

上午健身完去汉堡王吃了个简单的午餐,因为这样比较快速解决吃饭问题,回家买菜烧饭估计一点半都吃不上饭
大概1点左右开始进行Job-Listing的练习,到下午4点多一直在敲代码,全程没离开桌子

Decisional

  1. CRUD每天一默(今天没默写!!!!)
  2. 明天开始进行提取练习,过程一定很酸爽!
  3. 坚持每天进步一点点,践行“教就是学”