技术长文汇总

魔改大赛这样开始比较快
Github仓库备份
用Devise+Omniauth实现第三方登录
商品分类之无限极分类
实现Product【一种规格一个价格】

ORID - 2017.6.21

Objective (客观描述事实)

在群里发布了课程计时器的项目,收到很多赞

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 非常兴奋
  • 今天的高峰是什么?
    • 发布项目的那一刻,激动惨了
  • 今天的低点是什么?
    • 没有
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • SQlite与pg的查找顺序是相反的,以后不能寄期望于查出来就是你想要的顺序了
    • 部署是一个大学问
  • 今天的一个重要的领悟是什么?
    • 为了获得别人的赞赏的动力,虽然不是高阶学习通道,但目前也算是一个不错的路子,要铭记自己的初衷,并找到深层次的内在动机
Decision (决定下一步的行动)
  • 开始练习课程
  • 写一点项目中用到的技术文章
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.18/6.19

Objective (客观描述事实)

全栈营计时器的大部分功能已经实现
看了线上面试

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 非常兴奋
  • 今天的高峰是什么?
    • 实现图表的那一刻,爽翻了
  • 今天的低点是什么?
    • 没有
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • rails的世界比我想象中的大多了
    • 测试后发现自己如果想要稳稳的面试,还需要准备准备
  • 今天的一个重要的领悟是什么?
    • 项目驱动的学习方式真的动力很大
    • 希望受到人夸奖的动力真的很大
    • 预期有很多人回来用你的产品的动力真的很大
Decision (决定下一步的行动)
  • 其他小伙伴的完成情况可以实时显示在实时框中
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.17

Objective (客观描述事实)

基本已经可以使用了,除了很丑以外
帮雄健找到一个解bug的思路

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 非常兴奋
  • 今天的高峰是什么?
    • 当作出排行榜的那一刻,我激动坏了
  • 今天的低点是什么?
    • 没有
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • 在controller里定一个方法,然后在相应位置定义一个同名的.html.erb的html文件,并设置post,就可以新开一个访问网址了,比如我的ranking页面
  • 今天的一个重要的领悟是什么?
Decision (决定下一步的行动)
  • 可以绘制图,可以看排行榜
  • 看面试直播
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.15/6.16

Objective (客观描述事实)

计时器已经可以

  • 自己创建模版
  • 显示总成绩,每次的成绩
  • 对每一步进行计时
  • 查看每个case下每次的数据列表
Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 从郁闷逐渐走向光明
  • 今天的高峰是什么?
    • 成功通过自己设计的model来达到了想要的效果
  • 今天的低点是什么?
    • 没有
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • 许多migration的小技巧,array的小技巧
    • 绘制图形有可直接使用的js库
  • 今天的一个重要的领悟是什么?
Decision (决定下一步的行动)
  • 可以绘制图,可以看排行榜
  • 看面试直播
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.14

Objective (客观描述事实)

对数据库进行多次重新设计,并实现新的case#index内容

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 相当郁闷
  • 今天的高峰是什么?
    • 通过在用文字来一条逻辑一条逻辑的进行描述,项目才有了一点起色
  • 今天的低点是什么?
    • 迟迟想不到好的数据库设计思路
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • 给Model的属性加别名
      • has_many :templates, foreign_key: "task_templates_group_id", class_name: "TaskTemplate" 如果model里有a_model_id这样的栏位,而且,model里还写了has_many或belongs_to这样的关系,那么创建的时候,就一定要有这个参数,否则创建失败
      • belongs_to :group, class_name: "TaskTemplateGroup", foreign_key: "task_template_id" 注意这个foreign_key还是指的自己
  • 今天的一个重要的领悟是什么?
    • 从董明娟那里学到的,一定要注意自己时间的质量
Decision (决定下一步的行动)
  • 实现计时器的数据库设计
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.13

Objective (客观描述事实)

想到对项目计时的痛点,并马上拉上我的搭档,早上就开始,从user story开始,做一个全栈营项目练习计时器的项目

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 非常激动,也非常郁闷
  • 今天的高峰是什么?
    • 两人决议在几天内,马上写一个项目
  • 今天的低点是什么?
    • 发现,很简单的功能实现起来却异常的复杂
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • jquery的时间显示+倒计时=正计时
  • 今天的一个重要的领悟是什么?
    • 数据库设计真的很重要,也很难。
Decision (决定下一步的行动)
  • 实现计时器的数据库设计
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

ORID - 2017.6.12

Objective (客观描述事实)

写完了JDStore大赛复盘
JDStore参赛手册写了一半

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 非常爽
  • 今天的高峰是什么?
    • 与董明娟线上交流的时候,发现了思维录像机这歌超好的比喻。
  • 今天的低点是什么?
    • 没有
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • 最小粒度及时复盘:以功能/知识块/bug为单位,及时进行复盘(两步走:思维流水账 + 总结套路)
    • 思维录像机:思维流水账就好比思维录像机录制下来的视频素材,今后不论你是要总结套路,还是要查证思路,还是寻找网站,都可以回到这里寻找素材,也就是说,你这次的视频素材,会陪伴你很久,直到相关的套路已经完全站在你身上,你才不再需要它
  • 今天的一个重要的领悟是什么?
    • 把技术文章写完后,找一个人(比如董明娟)然后口述给她看,在对方的提问中,会有惊喜,且思路会逐渐清晰。
Decision (决定下一步的行动)
  • 写JDStore参赛手册
  • 练习一遍JDStore?
  • 由meetup一次解bug,来谈谈params(放在这怕忘了)

JDStore【美哲宝】大赛复盘

① 最小粒度复盘

在全栈营的两个月时间
我对复盘的理解产生了多次变化
曾经的我,除非以前公司强行要求交年终总结才会进行复盘,但往往就是随便写写。
开始看xdite的facebook以后,发现每个月,每个星期,都需要复盘,不管是写文章还是开直播
进入全栈营以后,被要求每天写ORID,开始虽然一直在写,但并没有领悟到其中的真意
而在JDStore大赛最后一个星期的时候,我因为项目需求钻研的内容比较多,且同时在看三个方向的内容,导致浏览器开的页面内容太多,电脑太卡,一天晚上,我突然想到,我一定要把今天琢磨的内容记录下来,这样明天早上起来,不会一打开电脑就又是如此多的网页。于是,把浏览器一个标签一个标签的关掉,每关一个记录到笔记本中相应的地方,就是这么一个举动,让我突然找到了突破点,我一下子我脑中对一天内所做的事情变的非常明了,而且也同时总结出了已实现功能的套路。一下子发现自己找到了一把金钥匙

这把金钥匙就是:ORID的核心不是O,R,I,D,ORID的核心是复盘
Xdite老师只是用ORID这种形式逼我们进行复盘,让我们自己去发现复盘的魔力。
而我这最后一个星期的发现就是:复盘的单位根本不应该是一天
而是你花几小时完成某个功能,马上对针对该功能的开发做一次复盘
而是你花几小时钻研完某个细分领域的内容,马上进行复盘,并总结出套路
而是你花几个小时改完某个bug,及时进行复盘,记录debug流程。
目的只有一个:你再下次做同样事情的时候,不需要重新钻研一遍,只需顺着复盘后的套路走就好了

还不是很明白,再给大家描述一个场景:
晚上睡前或早上醒来,写ORID的时候,完全不知道这一天自己做了什么?或顶多记得自己最近完成的一件事。

而当你以自己学习的内容或完成的功能为单位,来及时进行复盘,一天下来你能很明确的知道自己做了什么,而且非常详细,这才是真正重要的东西。
再说一遍:

ORID的重点不在O,R,I,D,而在小颗粒及时复盘
再说一遍:
小颗粒 + 及时 + 复盘 = 魔改大赛金钥匙

② 思维录像机 (这个比喻很重要)

小颗粒及时复盘(两步走)
  1. 思维流水账
    我遇到了xxxx问题
    我用xxx关键词去google了一下
    打开了xxx网址,阅读到了xxx内容
    发现关键词可能用错了,我又用xxx关键词重新搜索
    得到了3个有用的网址
    打开第一个xxx网址,我学到了xxxx内容
    打开第二个xxx网址,我发现了我要的内容
    我回到项目中做了
    xxxxx(各种操作)
    最终问题解决
    
    在笔记本中像思维录像机一样通过流水账把你的思维过程记录下来 然后这比流水账,好比拍视频的素材一样会,陪伴你很长的时间(目的请看第二步)
  2. 总结套路 从第一步的流水账中取出你想要的素材 编写成一组套路,下次做同样事情的时候,速度翻倍。

③ 分享 = 提取练习 + 意外惊喜

Xdite老师很早就讲过自己无条件分享的很多例子
很强调,你这样无私的分享,表面上看起来很亏,而实际上,帮了别人,更重要的是在帮你自己
比如ihower那么多的技术分析分享,相比无私的帮助大家,很可能是自己学习的需要,需要不断做提取练习。
这也是meetup的魔力所在,分享的同时会得到很多来自于他人的正面能量,反过来会促进你更认真的进行提取练习,这就是一个非常良心的正循环

至于意外惊喜,我就要提一个我自己的例子:
我加入铁血特训营后,文班长要求我们寻找一个帮扶对象,于是在找到@拙之同学后,我并没有多想,只是觉得能帮到一个人也挺不错,帮她找了一个队友,一起线上解决问题三次。
结果在比赛结束还有3天的时候,突然发现,她竟然在帮我拉票…....
萍水相逢的朋友可以这样,我真的是被感动到了。特别特别感动。
现在回想起来,这也算是意外的惊喜吧。

④ JobListng与JDStore的真实意义是:

  • 让你体验真实项目的样子
  • 逼你学会程序员最关键的技能:自行解决问题的能力(Google,Book,Stackoverflow...)
  • 引导你发现分享的重要性(提取练习+意外的幸运)

⑤ 写ORID,写JDStore,写参赛手册的实际意义

告诉你日复盘,月复盘,项目复盘的重要性

⑥ JDStore的结束只是一个开始,是一个你野蛮生长的开始。

  1. 选取合适的导师,放下自尊,无脑跟随
  2. 不问为什么,以完成一个最小化产品为目的来学习
  3. 小颗粒及时复盘 加快下次提取速度
  4. 寻找群体 无私分享 频繁提取练习
  5. 静待惊喜的到来
  6. 野蛮生长:不断以产品为单位进行提取练习,把所有能长在身上的都长在身上,节约工作记忆
  7. 进入下一个领域

ORID - 2017.6.11

Objective (客观描述事实)

去参加JDStore结束之前的最后一次meetup
写了不少复盘反思的内容

Reflective (主观描述感想)
  • 你要如何形容今天的情绪?
    • 一般
  • 今天的高峰是什么?
    • 一起在meetup做分享,解bug
  • 今天的低点是什么?
    • 搭档告诉我票数很紧张,要我再写点东西,但我手上的几篇都是半成品,并不想草率的发出来
Interpretative (分析寻找意义何在)
  • 今天学到了什么?
    • simple_form的input,一些传统的自定义内容都要包在:html => {}中 就像这样
      input_html: { :multiple => true, name: "photos[image][]" }
      
    • 从form回传controller的数据,都是根据一个属性name: "photos[image[[]"类似这样的形式,来确定其在回传的params中的层级分布
  • 今天的一个重要的领悟是什么? 母爱的力量是伟大的
Decision (决定下一步的行动)
  • 写大赛复盘
  • 网上一片技术长文,比如:由meetup一次解bug,来谈谈params