其徐如林


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

3-30-日子

发表于 2020-03-30 | 分类于 日子

今天做了啥

做了饭
打了娃
倒了垃圾
拿了米
唯独没做事。

你怎么度过这个假期,你就怎么过这一生。

收获

看了水哥——王昱珩的节目。初看不是地球人,细看应该还是同类。
极强的观察能力需要的是高度的专注,这种慢、这种细真是可怕。这也是我欠缺的能力,几乎不能高度专注,没有深度工作、思考的能力。
所以,慢点,再慢点,观察每一个细节,搞清楚每一个细节。这是唯一的出路。

tiger & cat

孩子的教育真是失败呢,我该怎么办。

rails-everyday-dock-rails

发表于 2020-03-28

title: rails-everyday-dock+rails
date: 2020-03-28 07:07:34
tags: rails
category: rails-everyday


Docker + Rails + Puma + Nginx + Postgres

项目目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
   -app_name 
-app
-db
-config
-database.yml
...
-docker
-app
-DockerFile
-web
-DockerFile
-nginx.conf
-docker-compose.yml
```

### Dockerize 你的Rails程序

Dockfile

``` yml
FROM ruby:2.3.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
# Set an environment variable where the Rails app is installed to inside of Docker image
ENV RAILS_ROOT /var/www/app_name
RUN mkdir -p $RAILS_ROOT
# Set working directory
WORKDIR $RAILS_ROOT
# Setting env up
ENV RAILS_ENV='production'
ENV RACK_ENV='production'
# Adding gems
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install --jobs 20 --retry 5 --without development test
# Adding project files
COPY . .
RUN bundle exec rake assets:precompile
EXPOSE 3000
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]

Proxy your web requests

读书-非暴力沟通

发表于 2020-02-29 | 分类于 读书

《非暴力沟通》讲什么

要说出自己的观察,加上自己的感受,沟通自己的需求,并且请求对方行动

例子:

1.儿子,我看见你光着脚在地上跑。现在已经是冬天了,地板上非常冷。(客观观察)

2.我感到非常着急,非常心疼,还有一点害怕。(我的感受)

3.我很重视你的健康,想要能保证你的健康,避开生病之苦。(我的需要)

4.请你把袜子、鞋子穿上,,再去玩好吗?(明确的请求)

你能够从对方的表达中,听到对方背后的需求,才能真正地非暴力沟通。

还是忍不住生气怎么办:

遇到以上情况,请默念:我”之所以愤怒,是因为“我”还有未被满足的需要!

不必讨论如何忍耐。因为忍不住要发怒,只是我们现在的行事的习惯。

重要的是,请在事后抓住它,正视它。

要拿出勇气,探索愤怒背后到底有什么“未被满足的需要”。

正视这种需要,才是根本之道。

『内观』

  • 找到发怒的真正需求,反省是否合理,是否有价值。

0228-日子

发表于 2020-02-28 | 分类于 日子
  • 不要在网上争论,没有任何意义,不要试图去改变别人的观念,没有那个必要,只有坏处,没有任何好处。切记。比如中医之争、朋友圈里的各种垃圾文章。

    “不带评论的观察是人类智力的最高形式” ——克里希那穆提

  • 学会并改进和儿子、老婆的沟通方式,看看《非暴力沟通》。内观、正念、倾听、沟通。

  • 减少看八卦、资讯的时间。了解各种资讯没什么卵用,除了带来虚假的渊博感,其实本质上还是狗屁不懂,经不起问,一问底裤就露出来。资讯就和嗑瓜子似的,短时快感。是浪费时间,逃避现实的一种方式。难的、有意思的东西都需要深度学习。切记。

0227-学习如何学习

发表于 2020-02-27 | 分类于 日子

每天要写点东西,否则这日子过得像狗屎。

如何提高学习的效率

在知道之前使用它

先用,建立感性认识,用 2/8 法则,20%的事件了解 80%的内容,剩下的难的 20%慢慢了解。

看视频,写每一行代码,在编写过程中观看,每一步都能运行起来。
10 分钟的视频往往需要一个小时。(原来大家都这样啊,我还以为只有我自己这么笨)
开始学习前,远离书和文档
遇到不懂的地方,记下来,写篇 blog。
发现你未掌握的知识。

解决难题

找到所有能解决,或者让你理解这个难题的资料。(库布里克学习法)
回退,学习基础资料,然后再学习。

使用学到的技术,做个东西

不用掌握所有知识后再动手
找到兴趣点,然后写一个小项目

三个步骤会互相融合,并不是线性发生的。

每日反省

  1. 减少电子产品的使用,晚上看书。《代码大全》买了 10 来年了都没看完。shit。
  2. 少吵架,吵架没有赢家。
  3. 早睡早起。
  4. 陪儿子才是正事。

railscast-study-2

发表于 2019-10-25 | 分类于 rails

#08 Layouts and content_for

content_for 用于定制网页特定的内容,

content_for 接受一个名称参数及代码块定义。代码块逻辑生成的内容将会被加载到布局文件中。

content_for 为我们提供在 Action 中定制布局文件定义的能力。诸如为某些指定的 Action 中增加用于显示菜单,滚动条等效果的 CSS 引用等。

1
2
3
4
5
6
7
8
9
10
<!-- projects/index.rhtml -->

<% content_for :head do %> <%= stylesheet_link_tag 'projects' %> <% end %>

<!-- layouts/application.rhtml -->

<head>
<title>Todo List</title>
<%= stylesheet_link_tag 'application' %> <%= yield :head %>
</head>

#10 11 12 Refactoring User Name

重构

把通用的逻辑抽取到一个工具方法中。

页面 view 中重复的逻辑,抽取到了 model 中。

需要重构的页面代码

1
2
3
4
5
6
7
8
9
10
11
<h1>Users</h1>
<ul>
<% for user in @users %>
<li>
<a href="<%= user_path(user) %>">
<%= user.first_name %> <%= "#{user.middle_initial}." unless
user.middle_initial.nil? %> <%= user.last_name %>
</a>
</li>
<% end %>
</ul>

资料页面

1
2
3
4
5
6
7
8
<h1>Profile</h1>
<p>
Name:
<%= @user.first_name %>
<%= "#{@user.middle_initial}." unless @user.middle_initial.nil? %>
<%= @user.last_name %>
</p>
<%= link_to 'Users List', users_path %>

两处代码中出现重复的内容,这时候就需要重构了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

class User < ActiveRecord::Base
def full_name
name = first_name + ' '
name += "#{middle_initial}. " unless middle_initial.nil?
name += last_name
name
end
end

<h1>Users</h1>
<ul>
<% for user in @users %>
<li><%= link_to user.full_name %></li>
<% end %>
</ul>

有标签的都用 link_to.

用测试来保障重构。

ruby 有 ruby 的编程方法,和 c 系语言完全不同,区别的根源就是迭代器的使用。

1
2
3
4
5
6
7
8
9
10

class User < ActiveRecord::Base
def full_name
[first_name, middle_initial_with_full_stop, last_name].compact.join(' ')
end

def middle_initial_with_full_stop
"#{middle_initial}." unless middle_initial.blank?
end
end

railscast 学习

发表于 2019-10-23 | 分类于 rails

#1 Caching with Instance Variables

尽量少用数据库查询,查询出来的东西能复用的要复用。怎么复用?保存在实例变量中。

1
2
3
4
5
class ApplicationController &lt; ActionController::Base
def current_user
@current_user ||= User.find(session[:user_id]) # 这里面的逻辑还是有点绕的
end
end

#2 Dynamic find_by Methods

过时了,现在都直接用 find_by.

#3 Find Through Association

seeds.rb : 可以做些复杂的事情。

1
2
3
happy = Project.create(name: 'Be Happy')
happy.tasks.create(name: 'Buy a puppy', complete: false)
happy.tasks.create(name: 'Dance in the rain', complete: true)

找到第一个 project 中未完成的任务:

1
2
3
4
x = Task.where(project_id: 1).where(complete: false) #方法1

p = Project.find 1
p.tasks.where(complete: false)

#4 Move Find into Model

index action 中,排序查找什么的,不要放在 controller 中了,model 的事情交给 model 做,这样 controller 中如果有多个地方想用这个查询,放在模型中就可以复用这个查询代码了。
注意模型中,是类方法,方法名前面加 self。
新版本中用 scopes 取代了这种方法,代码量小的可以用,更简洁。

#5 scope

scope 将常用的查询条件定义成方法。

1
2
3
4
5
6
7
8
class Post < ActiveRecord::Base
scope :published, -> { where(published: true) }
end

class Post < ActiveRecord::Base
scope :created_before, ->(time) { where("created_at < ?", time) }
end
Post.created_before(Time.zone.now) #需要动态参数时,还是用方法比较合适。

#7 Layouts

动态布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class UsersController

layout :choose_layout

def index
end
def new
end

protected
def choose_layout
if current_user.admin?
“admin”
elseif current_user.user?
“user”
else
“application”
end
end
end

指定布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class UsersController
layout “my_layout”
end

class UsersController
layout nil
end

class UsersController
def index
render :layout => 'my_layout'
end
end

class UsersController
layout “my_layout”, : only => :method_name
layout “my_layout”, :except => [ :my_method1, :my_method2 ]

layout :my_layout, : only => :my_method
end
徐林

徐林

徐林的博客

7 日志
3 分类
5 标签
© 2019 - 2020 徐林
由 Hexo 强力驱动
主题 - NexT.Gemini