huntman's Blog

For Freedom

ORID20170429

| Comments

Objective

把7-9章实作了一遍,用时大概一个半小时多,以下是一些错误的记录:

在运用partial时有个地方没注意就出错了:

再仔细一看果然跟教材不一样,循环语句是变了,而不是放到partial里!


开始从第7到第9的大实作

1.实作加入退出讨论版时controller下忘了放redirect_to...,其实按一个按钮浏览器还是有跳转的!

然后按钮的动作中link_to也少了method: :post,叫人家怎么跳?因为join和quit是陌生的,所以要有method啊!

2.posts/edit.html.erb遗忘率很高,这几天要多练习

3.partial用在循环上忘了=> "group_item",

Reflective

今天一天的情绪还算比较正常,下午受一些干扰心思有点不集中,所以练习量还是不够。高峰时段主要是上午,低谷主要是下午心思不定。另外,晚上十点多写完信后已经比较困了,上床却没有好好准备休息,而是想一些事情,最后到一点多才睡着,实属不该。有些事情是重要没错,但床就是睡觉的地方,而不是想东西的地方,所以还是要养成上床不想事的习惯,从而保证自己第二天能够早起 !

Interpretive

要想个办法让自己专注一点 ! 或许早起真的是个好选择,利用四点多那段没人干扰的时间,好好练习一下。

Decisional

今天过得还算充实,就是下午开始有点分神去想别的重要的事,也没办法,尽量平衡好。明天开始要注意调整好作息习惯,时不时动用元认知能力进行调整。

ORID20170428

| Comments

Objective

主要完成了第7第8章以及额外作业的练习,思路较之前又清晰了一点。

Reflective

今天的情绪调整得很好,彻底告别了上周的不规律作息和沮丧情绪。高峰是下午起床好,大脑状态和自己的专注程度都要比早上和晚上好;低点主要是早上刚起来懵懵的,听全栈营的直播语速都有点跟不上,后面吃完早饭写完日计划后好很多。

Interpretive

今天最大的感悟就是一定要把目标大化小,小化细,这样自己才能克服畏难情绪,积极地去完成!

学到的新东西是simple form的用法,语句虽然不理解,也不熟悉,但总是要一个过程的。现在慢慢越能接受自己刚开始记新东西时的笨拙了,李姓程序员在「人人都能用英语」一百天之际发的鸡血文”用“的秘密对我在这方面的认知提升很大! 今后练习时遇到情绪上的困扰后务必拿出来看一看!

Decisional

一天下来没有虚度,虽然偶尔也会受前几天一些挫折的影响,但总体来说还是积极工作的。所以,没事不要放弃自己。明天要同样给自己做好心理建设,然后一往无前地拱下去 !

ORID20170418强记还是有用的,人的长期记忆是无限的,连续复习就不会忘!!!

| Comments

Objective

今天主要对101七八两章(群成员、后台)进行背记,勉强能全部自己写出来。最容易出错的是_navbar里的index,路径还是不熟。观察到edit_group_post_path(group.post, group)以及destroy的路径是第6章在群组内发表文章时建立的路径,翻回去第6章看这个是nested route,不过看到new时后面还加了个(@group),不知是什么情况?

然后在controller中create也有增加一行@post.group = @group一行,应该是把@group的参数赋予@post.group,可后者又是什么意思呢?

  • routes确实有很多规则,像7-5member解说关于为什么是单数就作了说明,它产生的规则是join_group_path(@group),这里又有个问题,如何看后面要不要加(@group)?跟前面的new一样,不管,先背起来再说!!!

综上目前还是先不要纠结语法,先把全盘背起来再说!!!

ps.我发现遗忘率挺高的,第6章很多都忘了,之前除了paginate外都没刻意去背记,也难怪忘得快……现在的情况是前面几章要赶紧练习,不然忘光了


接下来提取额外作业,要实作edit和delete两个action需要在controller里def edit、update、destroy,但看看上面第6章controller里,后面的@post.group = @group以及`@post.user = current_user到底要不要加呢?他们又是代表什么呢?上次做都已经忘光了,然后就先试了一下,结果试验update和destroy中没添加是没事的!!!!加了也没事!!!还是很简单的!!!

  • 看一下以前rails203时是这样理解的:(现在还没当时理解得深😂)

照此理解的话,那在新建时就已经赋予属性了,所以update已无需断续添加,destroy更是不用!

反正在controller里就直接把=理解为赋予的意思吧,像8-3里这样就很好理解了!

Reflective

状态比较好的时段是下午两点以后,提取练习效率较高,自己也比较有信心,但还是容易停下来试图理解,导致时间不够!!!比较低谷的时段是傍晚被工作上的杂事干扰,六点以后就有点没神了,跑去做一些有的没的事!结果晚上睡不着,起来默写今天看的两章,一直到四点才睡,也没怎么睡好。

Interpretive

理解到的不多,对路径和view里的函式还是一知半解。最大的感悟就是一直做下去吧,总会有拨云见日的一天!

Decisional

白天的学习还算凑活,晚上就有点控制不住自己了,明天要想办法哄自己做做该做的事情~

ORID20170417

| Comments

Objective

今天把101的第七章背了下来

Reflecitve

今天上午很困,加上一些杂事,基本没看。下午才开始练习,状态还算不错,可惜一个半小时后就被工作打断了。傍晚接着练,偶尔碰到一些小bug,看看报错提示很快也就解决了。

Interpretive

今天对如何建立群成员数据表以及判断是否群成员,加入和退出群组的实作方法已经能不看提示写出来了,大概的意思也能明白,对atom里的代码格式有一定的熟悉,大概知道什么情况下要用什么符号。

Decisional

今天的学习开始步入正轨,明天要更上一层楼哦:)

如何让自己成为打字超快的工程师

| Comments

努力成为打字超快的工程师!

转载处(有不少ROR文章):
Adler @ 2015-02-24


每次看到其他工程师能够用超快的速度打字,就非常羡慕。我认为「打字」是一个很基本,却很难练习的技能。儘管在学习程式语言的过程中,已经大量使用英文打字,但若没有刻意练习,似乎就有一道门槛在那边,常常需要低头去看按键,降低效率。尤其最近切换到Vim编辑器,更是高度倚赖键盘而非滑鼠。

一般不看键盘直接打字称为「盲打」(touch typing),对于长期使用电脑的现代人来说好处多多,中文使用者因为长期使用BBS、MSN、Facebook、Line及各种聊天软体的缘故,注音打字速度普遍都有一定水准,但对于英文热键的操作就水准不一了。例如在Word当中要将段落文字加粗,可能连按Ctrl(CMD) + B 都需要低头看键盘才能操作。大部分使用者对于英打的练习却普遍不够(拼音和呒虾米的使用者可能比较没有这个困扰)。

身为一个工程师,英打速度更是不可或缺的一个技能,除了撰写程式码以外,格式的调整也是大量倚赖键盘。啥?你都用滑鼠调整吗?身为一个工程师,大家应该都会慢慢养成手就是放在键盘上的习惯,如果能不用滑鼠,对于工作效率绝对是一个大幅提昇。在一篇Coding Horror上的文章「We Are Typists First, Programmers Second」就说到,开发者对于打字一定要熟悉,那无关乎任何程式语言、程式逻辑,而是一个基本的技能,最重要的是我们在工作时可以减少实作的时间。

在逐渐摸索当中,以下有三个蛮推荐的学习资源:

Typing.com

非常酷的打字教学网站,整个练习过程非常漫长,从最基本的home row到整篇艰难文章的练习,循序渐进。

刚开始可能觉得无聊,但到了某些地方,就会发现自己的弱点。例如我的小拇指非常不灵活,而有些练习就是刻意要用小拇指疯狂在几个按键之间来回,这时候才知道自己在那些地方真的是很冏。

个人最大心得:要有耐心!顺的地方就让他跳过去,错很多的地方一定要反覆按「retake exercise」让自己对那几个单字的拼凑、手指的移动方式更熟悉。而且务必要让手指放在指定的地方,不能左手去按右手负责的按键,也不能让中指去按无名指负责的按键,这才是最值得我们练习、进步的地方。

建议注册,每次练习都先登入,比较知道自己练习进度。

Typing.io

Typing.io是专门设计给程式设计师的打字练习网站,其中有非常多的source code可以练习,有基本的分析工具。如果要有较好的分析和追踪工具,就需要付费。如果已经熟练所有基本的按键配置,建议可以来这边练练招,毕竟程式语言和一般英打有一个很重要的差异:程式语言有超多标点符号和排版,一般打字可以让我们知道哪颗按键在哪裡,但如果要熟悉开发者的工作方式,还是得在程式上多练习。

很酷的是,除了各种程式语言的原始码可以选择之外,还可以自行上传自己的code进行练习。个人认为比较可以改进的地方就是他并没有需要我们用tab和额外的enter键进行排版,可以直接顺打下去,而毕竟那也是程式开发时很需要的一环,如果有的话更可以模拟一般开发的流程。

ShortcutFoo

这个网站纯粹是练习编辑器的热键,听起来好像没什麽,但本人实测以后,发现要快速的执行热键还真的是个问题,儘管脑袋裡想著,却需要花额外一秒去想「这个功能是什麽热键?」噗,听起来好像蛮逊的,假如你跟我一样对于编辑器热键不太熟悉,也可以来这个网站试试。除了最基本的Command Line和Git以外,也包含Vim、Sublime Text、TextMate、XCode等大家常用的编辑器,甚至有Gmail和Chrome Dev Tools的热键练习。如果你有常用的工具,请务必来这裡熟练一下。

打字快速有什麽好处?

Learning Keyboarding上有一篇文章写出了八个盲打的好处,但最重要的两点就是「速度」和「心情」,一来是不用一直看键盘,二来是不会节奏被打乱。

如果你已经对于键盘相当熟悉,也推荐例如Mac的AlfredVinium等系统辅助工具,不需要滑鼠即可操作系统及浏览器。

[其他] 电脑各种符号英文念法

| Comments

& Ampersand (And 符号)

* Asterisk (星号)

@ At sign, at (At 符号,At)

\ Backslash (反斜线)

[ Open bracket (左中括弧)

^ Caret (插入号)

] Close bracket (右中括弧)

( Open parenthesis (左括弧)

) Close parenthesis (右括弧)

: Colon (冒号)

, Comma (逗号)

$ Dollar sign (钱符号)

– Double dash (双破折号)

… Ellipsis (省略符号)

‘ Single quote (单引号)

“ Quote (双引号)

= Equals (等号)

+ Plus, plus sign (加,加号)

! Exclamation point (惊歎号)

 Greater than (大于)

< Less than (小于)

 Pound sign (井字号)

? Question mark (问号)

. Period, dot (句号,点)

; Semicolon (分号)

- Hyphen (连字号)

— Dash (破折号)

_ Underscore (底线)

| Vertical bar (垂直线)

{ Open brace (左大括弧)

} Close brace (右大括弧)

% Percent, percent sign (百分比,百分比符号)

/ Slash (斜线)

// Double slash (双斜线)

~ Tilde (取代符号,毛毛虫)

Bug?@到底是干什么的?@group和group的区别?

| Comments

5-5开头和结尾为什么判断式会不一样?一个要加「@」一个却不用?
index和show的<% if current_user && current_user == ?判断式为什么一个是group.user另一个是@group.user?


不加的话就报错,而且还明确提示Did you mean? @group

推测可能index前面有个method叫做each的Array:<% @groups.each do |group| %>里已经有@group了,所以它下面的都没用@group。观察一下其它地方以及show里同样的其它地方,应该就是这个原因!!!说明group前有无加@意义是不一样的,可能是变量variable,也可能是method


先标记成一个有疑问待解决的bug吧!!

ORID20170409复习帮助文档(完美主义Vs.心流)

| Comments

Objective

今天把初级练习又做了一遍,加分题的排序还是不记得,不过知道在哪里就行了,毕竟用的不多,后面在看MVC的架构时,在教学影片上发现了下面这张图,感觉在浏览器报错的时候很熟悉哈:)

接下来开始看第二课解说,大部分都能理解了:

  • rake db:migrate的作用是使用刚建立的migration档来更改资料库的(db/migrate/201xxxxxxxxxxxxxxxxxxxxxxx_create_topics.rb),据说该档对于合作写程式是非常重要的。还可以执行rake -T来看其它一些rake指令,上面还有简单的说明。
  • app/models/topic.rb这个档里放的是model的程式码,但几乎是空白的,因为对资料的CRUD操作在Rails是内建的。
  • Rails的view只是HTML加上一些用来显示资料库资料的程式
  • index是用来表示一个网站的“预设”页面
  • 原来def的CRUD之类的都叫method,partial一定是底线 _ 开头的
  • 在routes中,root topics#index可以理解为列出Topics Controller中的index action,基本的RESTful图已经记住了,关键是在于运用,嵌套什么的你能不能熟练的写出来?
  • model与model间的关联叫associations,通常成对出现,这里用has_manybelongs_to来关联,dependent: :destory还是不是很理解,表示destroy时其记录会一并删除,而不会将资料留在资料库中
  • format也不太理解,先有个印象吧,指的是当浏览器向server请求HTML格式的时候要做的事(要做的事在 { ... } 里面)

link_to其实照着理解还是比较简单的:http://docs.qzy.camp/docs/3-11-link-to
<td><%= link_to topic.title, topic %></td>
可以看作把topic的标题(title)变成超链接,然后连到的是topics#show的页面,这样就比较好记了

再如<td><%= topic.description %></td>
这一行用了.description来取得topic的内文,然后直接输出

接着是第三课解说

  • 最重要的应该是对Rails运作原理的解说吧,下面这张图堪称经典,没事时试试自己画一下:)

Rails 是这样运作的:(这一段我觉得现在有必要每天看每天提取练习!)

使用者对网站做“请求”,然后网站会先去解析 config/routes.rb
然后发现网址是 http://localhosts:3000/groups,它就会去找 groups controller 下的 index action(为什么是去找 index action),我们在后面的章节会解释。
Controller 你可以想像成“控制台”,Controller 里面去读出 Group.all,意思是捞出“所有的群”,并指定到 @groups,这是一个变数。
@groups 这个变数,是供 app/views/groups/index.html.erb 使用。View 会根据语法画出整张表格。

  • 2-4<%= yield %>解说中说是你程式码输出印出来的地方,比如说当你在app/views/welcome/index.html.erb里面写Hello world,就会显示出来。个人理解application是控制整张页面要显示的东西,上面显示navbar,下面显示footer,中间这个yield就是用来显示其它内容的,比如在index这张页面,application会把index里的html显示在yield的位置,这样做的目的还是为了使网站有统一的风格:

  • 4-2知道了原来是rails的智能黑魔法——表单产生器,可以把一大垞HTML缩成用form_for表示;

group_params是一个过滤器架构,但先不用去理解,只要知道def group_params会限定只有title和description的信息才能填进来

  • 4-5对Delete按钮的解说相当直白,在Rails架构上它就是这样规定的,记住代码就行:method: :delete, data: {confirm :"Are you sure?"}
  • 6-2resources :groups里又有resources :posts是什么意思?解说里就说双层资源的意思,叫跳回去看RESTful解说,但跳回去看也没有双层资源的解释啊,然后它又说先背下来不是罪,好吧!
  • 6-3params[:group_id]也没怎么解释,个人理解应该是为避免与其中的post的id混淆才标明是group的id

Reflective

今天受离职事宜影响情绪有点低落,后面开始沉下心来学习才有所好转。高峰是整个下午,低谷是上午和餐后。这几天也许是因为季节变换的影响,很容易犯困,特别是上午,几乎没什么效率。所以白天更要珍惜时间,千万别用来做琐碎的杂事!!!

Interpretive

今天理解到的在前面的Objective已经详细说过了,这里主要说说今天最重要的领悟(静下心看帮助文档时想到的):学习的时候不要去管时间,把它忘掉就容易忘我地投入到正在做的要事上。如果一直纠结计划不完美、效率不高或时间不充裕的话,最后反而会什么都做不成。

事实上自己之前就常常犯这个毛病,一开始都要纠结半天怎么安排,等定下决心后精力也耗得差不多了,实在是伤不起。今后一定要有意识地去改善这种学习上过于贪心,生怕漏掉什么,生怕浪费时间的不良思维,放弃所谓的安全感,把更多的时间留给最重要的事情上。

另外,之前总觉得ORID没什么好写的,今天把解说再看一遍后却发现有很多东西都可以写。看来自己之前的练习还是太浮于表面,真正能get到的东西不多。今后应该要像今天一样耐心一点,花点时间在理解记忆上面!!!

Decisional

今天的工作较前两几天有所回转,值得肯定。明天要继续把剩下的一点看完,然后再把101提取一遍,接着快速开始joblisting的课程,不能再拖了!


Ps.

在看完第二课和第三课的解说之后,觉得接下来有必要每星期都再复习一次!甚至可以把它们Post到slack中的个人会话中去,然后每次看的时候都可以添加新的评论,久而久之就可以观察自己在理解上的新变化了!!!

利用Slack进行meetup的高效分享

| Comments

Slack其实是一个非常强大的协作工具,不仅可以用来进行线上协作和答疑,还可以用来做分享并留存资料。下面图文描述一下Slack作为分享工具具备哪些优点:

主要好处:
  • 聊天消息支持简单语法,重要信息一目了然,大大降低大家看聊天记录的压力
  • 发文界面与Typora类似,支持md语法,输入所见即所得,方便编辑和察看,是真正的线上笔记
  • 长代码和片段内容也可放到snippet中
  • 右侧群功能区域可以自定义一些重要信息,群组成员也可长期共同完善条目,后加入的同学也能浏览和搜索到以前的聊天纪录、精彩分享

其它好处:

  • slack是团队协作的主流工具,提前充分探索有助于培养协作能力
  • 自定义功能强大,可以通过API扩展许多功能
  • 英文界面更有助于我们把英语用起来
  • ……