qiaoyu's Blog

20170909_ORID railsbridge25 看解答知道自己在干什么

1.得到空专案

cd ~

cd 的意思是切换目录(Change Directory)
在终端机打这些字 ( Mac 或 Linux )
cd ~ 切换(当前位置)到home目录

mkdir railsbridge

这会新增一个资料夹,让我们把专案放在里面。

cd railsbridge
ls
rm -rf suggestotron

如果列出了旧的 suggestotron 应用程式,你可以删掉它们来避免干扰:

rails new suggestotron

rails new 会用你给的名字来建立新的 Rails 专案
这次我们建一个新的专案叫 suggestotron 。

cd suggestotron

cd 指的是切换目录 (change directory)。
cd suggestotron 切换到 suggestotron 做为成当前资料夹。

ls

ls 指的是列出东西 (list stuff)。
它会把目前资料夹的内容列出来给你看。

atom .

运行 Atom 编辑器
你会发现 rails new 开了一大堆资料夹和档案。今天我们要看的是这些:
(档案/资料夹 :用途 )
app/: 包含你应用程式的 controllers、models、views。你要改的东西大多是这些。
config/: 设定应用程式的执行阶段规则、路由设定(routes)、资料库等等。
db/:显示你目前资料库的 schema(结构定义),以及资料库的 migrations。
public/:这是唯一一个资料夹会是放什么就出现什么的。如果你把档案放里面,server 会直接回传,不会经过 Rails 的处理。
app/assets/:你会要把图片、JavaScript、stylesheets (CSS) 还有其他静态档案放在里面。现代的 Rails 应用程式使用一种叫做 Assets Pipeline 的东西,把在这资料夹里面的所有 JavaScript 和 CSS 档合并成一个档案来加速。
rails new 还建立了其他很多东西。大概可以写一本书来讲,所以我们现在先无视它们。

2.把专案加进 Git Repo

pwd

用pwd确认你在suggestotron目录里。

git init

跑完之后它看起来没有做什么事,然而事实上 git init 已经把 repository(repo)初始化到一个叫做 .git 的资料夹。 你可以打 ls -a(列出所有档案)来看到它。

ls -a
git status

git status 会告诉你 git 所见所有改过、新增、删掉的东西。
第一次跑这个指令的时候,会看到很多东西。
第二次跑这个指令的时候,你不会看到很多东西。

git add .

git add . 告诉 git 你想要把目前资料夹(即 .)还有它底下的所有东西加进 repo。

git commit -m "Added all the things"

git commit 告诉 git 真的要执行你叫它做的事。
分成 add 和 commit 两个步骤的好处是,如此你就可以把多个修改合并在一起。
-m "Added all the things 这个捷径让你可以直接写下 commit message。

git remote add origin git@github.com:qiaoyu1111/railsbridge_21.git
git push -u origin master

3.把程式在本机启动

按下 Command+T 新开一个terminal窗口
cd railsbridge
cd suggestotron
rails server
打开http://localhost:3000

然后你就会看到的程式跑起来了!

随时按下 Ctrl+C 就可以把 server 关掉

4.建立 Migration

rails generate scaffold topic title:string description:text

generate scaffold 告诉 Rails 去建立一堆档案让 topics 可以动。
topic 是告诉 rails 新的 Model 的名字是什么。
title:string 是说 topics 有标题(title),它是一个字串(String)。
description:text 是说 topics 有正文内容(description),它是一段文字(Text)。(“字串”跟“文字”的差别?基本上“文字”是用来储存可能会很长的字串。)

rake db:migrate

告诉 Rails 更新资料库来建立一个用来储存新的 Model 的表格(Table)。

5.CRUD 和 Scaffolding

测试已经实现的这四个操作(CRUD)

按一下 New Topic
填写表单,然后按一下 Create Topic
你应该会看到一个网页,里面显示你新建立的 topic,并且说你已经成功建立你的 topic 了:
按一下 back
你应该会再看到 topics 列表,这次还有你刚刚新增的 topic:
试试看 show、edit、destroy 连结看看会发生什么事。
贺!你已经建立了一个基本的资料库网站了!

C - 建立(Create)新资料并存进资料库。
R - 读取(Read)或显示资料库里的资料。
U - 更新(Update)既有的资料。
D - 删除(Destroy)资料。

6.设定首页

root "topics#index"

现在结构已经打好了,来把流程变顺畅吧。
但如果 http://localhost:3000 就可以直接跑到 topics 列表的话,会比较方便。
所以在这一步我们会实现它,并从中学习 Rails 路由(routes)的基本。

回到http://localhost:3000

7.上传至heroku

https://dashboard.heroku.com/apps
删除一个heroku项目( http://blog.qinfeng.io/posts/1200806-heroku-to-delete-a-project )
heroku create railsbridge21
迁移sqlite3,剪贴到 gem 'byebug', platform: :mri 下面

group :production do
  gem 'pg'
end

bundle install
git add Gemfile
git add Gemfile.lock
git commit -m "move sqlite3 to dev group & add pg to production group"
git push heroku master
heroku run rake db:migrate
heroku open

8.对 Topic 投票

rails generate model vote topic_id:integer

建立投票的 model
Suggestotron 里面的每一个 topic 都可以投票。为了计算票数,我们要有投票记录。来加个 table 吧。

rake db:migrate

9.告诉 Rails,topic 和投票记录之间有明确的关系

资料库里面有了关联号码,接下来我们要来告诉 Rails,topic 和投票记录之间有明确的关系。

has_many :votes, dependent: :destroy
belongs_to :topic
rails c
Topic.count

检查总共有多少 topics:

my_topic = Topic.first

把第一篇 topic 存入变数
my_topic 可以是任何的变数名称,不过现在我们一律用 my_topic。

my_topic.update_attributes(title: 'Edited in the console')

把那个 topic 的 title 改成别的:

my_topic.votes.create

新增一笔投票记录给那个 topic:

my_topic.votes.count

检查 topic 总共有多少笔投票:

my_topic.votes.first.destroy

删除一笔那个 topic 的投票记录:

exit

退出console。

10.加一个按钮,让大家可以按下去就投票加分

def upvote
  @topic = Topic.find(params[:id])
  @topic.votes.create
  redirect_to(topics_path)
end

@topic = Topic.find(params[:id])
从资料库里面用 id 找到 topic 然后存进 @topic 变数里面。

@topic.votes.create
给目前这篇 topic 新增一笔投票记录,然后存进资料库里面。

redirect_to(topics_path)
跟浏览器说要回到 topics_path(topics 的列表)。

resources :topics do
   member do
     post 'upvote'
   end
 end

rake routes

<td><%= pluralize(topic.votes.count, "vote") %></td>
<td><%= button_to '+1', upvote_topic_path(topic), method: :post %></td>

pluralize(topic.votes.count, "vote")
会输出票数,并且根据(英文的)单复数在后面加上 'vote' 或 'votes' 单字。

button_to '+1'
加一个 HTML 的按钮(button),里面有字 '+1'。

upvote_topic_path(topic)
产生我们要呼叫的 action 的对应 URL。以此例而言,我们要对目前的 topic 投票加分。它会回传/topics/42/upvote(如 topic.id 是 42)

method: :post
确保我们使用了 CRUD 里面的 create 操作,而非 read。

到 http://localhost:3000/topics然后随便玩玩看
(Deploying)

11.新增后能够回到 topics 列表

把topic_controller的create和update修改成:
format.html { redirect_to topics_path, notice: 'Topic was successfully created.' }
[http://localhost:3000/topics](http://localhost:3000/topics)

12.把 Topic 标题变成可以点选的超连结及调整专案

修改
<td><%= link_to topic.title, topic %></td>
<td><%= link_to 'Delete', topic, method: :delete, data: { confirm: 'Are you sure?' } %></td>
拿掉
<td><%= topic.description %></td>
<th>Description</th>
<td><%= link_to 'Show', topic %></td>
<td><%= link_to 'Edit', edit_topic_path(topic) %></td>

教小白

解释一下这一块在干吗:从slack里翻看第二课railsbridge的历史记录,看看小白们都遇到了什么样的问题,自己尝试解题,看看助教们如何解题的。
其实是在做「提取练习」,最有效的方式——————教。(只不过现在没有现成的小白给我练手,我就找“历史小白”拉!!!)



这个同学在做 步骤五时遇到上面的报错:

奇怪的是,只是新建一个rails的项目,为什么会不成功呢!
看报错的提示,是


大意是说gem没有安装好,要跑一下绿色提示的内容。

今日对自己的逼迫

所有事情都是难的,我要想办法克服它。

【今日对自己的逼迫】在书店坐到快要睡着了,可是,我知道这也只是大脑矫情的一种方式,昨天睡的很充足,所以继续练习下去没有关系。不过此时大脑会出现很多“我不喜欢编程,我学不会,我好难受,我不行了”等等一系列负面想法,只是缓兵之计,目的就是不想练习。此时的应对措施是:元认知开始关注这些念头,知道他们的存在,不做评判,不褒不贬,它的存在就是存在,看到它们,就继续向前去,不做任何反应,轻轻地把意识拉到练习开始的那个小任务上,最好用手写,降慢大脑的速度。等自己进入头两个任务后,这股困意也就会渐渐消失,时间感也会消失,完全专注在“使用右脑全局感知模式”来做练习。
把《进入精进群一个月总结》写完后,有种被掏空的感觉,下午喝了好多水。身体体温上升不太好受啊。

【逛江滩的交谈】阿哲的闫同学,给他的启示:【你创业,脑子里要有这个概念,做事是分阶段的,这个阶段,那个阶段】。【你现在啊,现在我这里做,之后不做旅游行业也没有关系,先把自己的精神状态恢复,同时想想做什么,想到任何事情都可以,直接去做!哪怕亏欠,先做个三年。】

不及时做「情绪提取」是对自己的折磨,不把「情绪提取」放在训练计划列表里,也是对自己的折磨。现在是次日11:11分,有点恍惚。如果在当时就记录,哪怕只写「我注意到什么」也是可以依靠情绪感知来发掘很多东西的(要区分哪些是自己的幻觉,哪些是真实的感受)。

我晚上听memorise的冥想内容,忽然意识到,自己在遇到一个场景时,脑海里会开始脑补各种画面,和《海》《湖》《电影院》这些练习很像(有个温柔的声音把自己带入这些场景里,做一些事情),为什么在那些练习中我可以从容的只是看着它们,只是觉知;而自己实际的幻觉却成为了我做决策的依据呢!!!GOD!!!可以举的案例是教师节的问候,当时脑袋里立刻有不情愿的脑补,但是我知道自己并不想这样,用元认知顿悟到「原来我一直把幻觉当作真实」,之所以那些幻觉会如此的真实,恐怕是在过往的相似事件里,自己使用了「幻觉决策」并养成习惯(做事的方法),那么真正的幻觉也变成了真正的现实,实现了一次完美的「自证预言」,可怕!

今日的ORID

o
「情景式的坐享」就是「自主幻想」的一种,可以观察觉知享受体验,但如果自己当真并以此决策,就是一则「完美的自证预言」的悬案。
注意到这点之后,我就告诉自己“眼神里要充满善意”,那些人都帮助过我,感谢她们是一件很美好的事情。
我就在微信上对老师们表达了祝福,结果很棒,不是自己当初幻想中的那样尴尬😅。
r
我为什么会做这样的行动?
注意到「心里的不情愿其实只是幻觉,而不要把它作为决策依据」这件事后,我本可以不去理会这个幻觉,也可以不去做祝福的事情,但是我选择(此时做了独立选择)去祝福老师,因为我很喜欢她们,他们在某些方面确实对我帮助很大,是我的贵人呢!!
我想要善待身边的每个人,想要变得更厉害些,去帮助那些我能帮助的人,也许自己也能成为「贵人」吧。不过「真正帮助到别人」真的是一件非常「大块人心」的事情,体验过就知道,会上瘾的。
我终于在独立思考上又向前进了一步。
i
我犯了什么错误?
当然是要扛下过去的自己由于「以幻觉作为决策依据」的决策而犯下的错误。虽然不是「独立思考」的结果,但是就是自己做的选择,只能自己扛啊!
d
可以怎么修改?
当下的自己恐怕是「过去自证预言」的结果,简直苦笑不得。而要摆脱这样的窘境,让自己能够更偏向「独立思考」做决策,首先就要【慢】:遇到事情的反应要慢一拍,不是一触即发,想到什么说什么;意识到自己的「想法是什么」之后,观察自己之前是不是都是这样想这样做,最终得到的结果又是不是自己真的想要的;抛开「幻想的自证预言」,好好想想自己究竟想要怎么做(不会很悬,自己真的知道,只要你面对的那个问题是个封闭式的问题)。
那么,如果你和我对话时发觉我慢一拍,请等等我,我的「独立思考系统」运作中!哈哈。

今日的难点

在恐惧、纠结、紧张等负面情绪存在时,也会有非常多的「幻觉」浮现,而且此时的自己会很容易就跟着幻觉走,因为心里很焦急,很容易「马上行动」,但是这是很危险的:只是为了抚平心里的不舒服,而开始有所行动,并不是真的在解决问题,那么问题会一直在那;依据麻烦守恒定律,你之后会遇到之前积攒下来的麻烦。

解法是:开一个弹框。
当自己陷入负面情绪、过分积极、纠结焦虑状态时,弹出窗口「当前是冥想练习时刻,请不发评论的觉察脑海里的各种念头,承认他们,接受他们,然后,离开他们」。
平复了自己的情绪之后,在去做真正的独立思考,去做决策。

Comments

comments powered by Disqus