你有没有后悔过没有抓住人生中的某一刻?你最想修改人生中的哪一刻?
有些时候我们会为生活中已经发生的某些事情感到后悔,后悔到甚至想坐哆啦A梦的时光机回去修改或者重塑。
其实人生每一个时刻的感受都是独一无二的,那些独一无二的它、它们终于构成了我、我们的人生,缺少任意一个,人生的版图都不会完整。纵然不会无怨无悔,至少不负此生。
参加完魔改大赛,这就是我最深刻的感受。
一个留级生的自白与救赎
我是第一期学员,第一期的作业进度始终停留在JobListing第一周。
此时再回去想想6个月前的自己,已经很有些印象模糊了。那时的自己,大概是面目可憎的吧.....
- 第一次救赎行为始于3月18号参加meetup,获得了鸡血满满和重新开始的勇气…
- 自3月20重新开始,至6月11,共计84天,投入在全栈营纯时间总长为195小时,约为每天2.3小时…
- rails101完成练习4次
- joblisting完成练习3次
- 参加了招聘网站大赛
- JDStore完成练习1次
- 参加了购物网站大赛
- 学习并实践了16格笔记读书法
- 学习了markdown排版logdown
魔改大赛心历路程
Joblisting
Joblisting魔改大赛其实很早就完成了可以上线的版本,大概在开赛后2天内。因为不确定,因为不够自信,始终把它压在自己的mac里面,没有参赛...
五一假期间,觉得自己不能够再像第一期那样了,至少证明自己参加过全栈营。
在这种情况下,当然要分析战略,最终决定主要靠主题取胜的方式,再加入一些易做的、教材外的功能。
仔细思考了网站的功能模式和技术结构,明确这是一个提供交流、交互性质的平台网站,它与交易有关,但是没有涉及到交易最核心阶段:物品和货币的交换、结算。
最终确定网站主题是”寻医问药“,患者发布病情信息,医护人员应征,提供一些医疗建议。
最终在5月4号进行了首次发布;5月5号修改了登录界面和footer置地问题;5月7号结束前,又迭代更新了一版,添加了搜索功能。
JDStore
有了Joblisting的大赛经历,在JDStroe时,毫不犹豫的下定决心要参赛。
参赛第一步,当然是要找个队友,在5月13号线下meetup上,顺利的找到队友杜子龙,并一起商量网站的主题、文案、风格、分工等事项。。。
一切仿佛都那么顺利,5月22号开赛,我们就上传了初始版本...
5月25号,进行一次线下meetup,随后,就更新了一个版本,修改了网站的部分bug
事情当然没有那么顺利,5月26号开始,小孩生病住院,自此,我自己就很难抽出整块的时间投入在大赛上面了,队友也因为有自己的事情,没有时间进行版本的迭代...
6月2号开始,事情处理的差不多后,我们又开始了版本的迭代...
4号,8号,10号,11号,共计又发布了4个版本
虽然,我们最后的作品没有达到Tower上预计的成果,但是,我觉得,已经没有遗憾了
终于,我完成了自我救赎.....
魔改大赛技术篇
PS:这里所谓的技术,并不是指编程技术,更偏重于参赛技术。
关于项目管理
谈到项目管理,可能更多的是一种选择技术或者艺术.
参赛时,选择什么主题;选择自己的目标;赛程进入紧张时期,选择什么功能进行开发取舍.....
当我在进行Joblisting大赛时,离比赛截止时间已经不多了,当时甚至还需要兼顾到购物网站的学习。
在这3~4天时间里,面对其他同学缤纷灿烂的作品,如何保持一颗冷静的心,克服焦虑感呢?我的答案是选择合适的功能,合适功能的具体标准是什么?
1.工作量不是太大,参考信息足够多,可以避免做不出来的挫折感
2.在购物网站上也可以使用到的功能,这样极大的降低自己的焦虑感,不会觉得会影响到购物网站的学习进度。
候选名单上的内容如下,序号表明了优先级:
1. 小功能:navbar搜索功能
2. 问题修复:footer固定问题
3. 问题修复:用户登录、注册失败后,不能进入弹窗模式
4. 大功能:客服功能
5. 大功能:首页轮播功能
最终,我选择了前3项进行了改版。
在JDStore最后一周的时间内,也遇到类似的情况。这时,我们优先选择美化部分界面,提高作品视觉效果;
在比赛截止前2天,我们遇到heroku上部分页面显示异常的问题,花了半天时间解bug无果后,我们果断选择版本回溯,放弃了功能迭代....
完整和稳定的作品才能更称得上是一个产品
关于提取练习
JDStore大赛,最终自己还是上线了两篇自认为不错的教程,而且也帮助自己得到了一些VIP票:
在这里,我想说的是,对教材进行足够多的提取练习,会自然而然的形成肌肉记忆和思维节点,来迁移到新的功能上。
举例来说,如果认真练习过Rails101 5次以上的话,应该可以很快联想起来商品收藏功能的做法,非常相似于”用户“与“群组”的关系。
对比如下:
- 有许多不同的User,也有许多不同的Group
- User可以选择加入任一个或者几个Group
- Group也可以包含不同的User
VS
- 有许多不同的User,也有许多不同的Product
- User可以选择收藏任一个或者几个Product
- Product也可以被不同的User收藏
所以,我们完全可以参考 [Rails101 教程7.1~7.5](https://fullstack.xinshengdaxue.com/posts/80) 来实现收藏商品的后台功能,再加上 “按钮的美化” 和“收藏icon” ,就是一个完整的收藏功能了。
另外,参考 [Rails101 教程8](https://fullstack.xinshengdaxue.com/posts/86) 来查看我收藏过的商品
JDStore魔改-对Rails101进行迁移,实现product收藏功能-20170604
JDStore魔改-product搜索功能汇总-20170603
关于组队开发
我和我的队友,我负责后台,他负责前端美化。
最终成果是,1 + 1 > 2
他只需要持续的关注并练习CSS和js,需要后台的地方,留个路径#即可。
我则关注后台功能开发,针对每个功能的MVC去各个击破
当然,良好协作的前提是熟练并规范的使用Github协作:
git push 更新本地版本 -> git checkout -b 开分支,进行开发 -> 提交pull request -> merge 版本 -> 进行测试 -> 推送到heroku,再进行测试
这样的话,即使遇到重大的bug,至少能保证自己回溯到最新的一个稳定版本。
魔改大赛之后续
大赛虽已完,但是学习全栈之路尚未成功,同学还需努力。
JDStore的练习还未熟练,需要再做提取练习...
新上线的课程,也值得我们继续研习...
极速读书会,也有时间进行实践了...
不管最终做不做全栈工程师,我们都需要明确目标,不忘初心,继续前进...
就像Xdite说的那样,舒适区的概念是不存在的,要不断的找到自己的兴奋点。
最后,一句话进行总结:
后悔药的正确使用方式并不是无条件的自我原谅,而是有措施和改善的自我救赎。
实现思路:参考Rails101教程
如果认真练习过Rails101 5次以上的话,应该可以很快联想起来商品收藏功能的做法,非常相似于”用户“与“群组”的关系。
对比如下:
- 有许多不同的User,也有许多不同的Group
- User可以选择加入任一个或者几个Group
- Group也可以包含不同的User
VS
- 有许多不同的User,也有许多不同的Product
- User可以选择收藏任一个或者几个Product
- Product也可以被不同的User收藏
所以,我们完全可以参考 Rails101 教程7.1~7.5 来实现收藏商品的后台功能,再加上 “按钮的美化” 和“收藏icon” ,就是一个完整的收藏功能了。
另外,参考 Rails101 教程8 来查看我收藏过的商品
收藏功能具体实做步骤
Step 1: 建立 ProductRelationship
新建一个model,记录哪个User收藏了哪个Product。
rails g model favorite group_id:integer user_id:integer
执行 rake db:migrate
Step 2: 建立 Product与User之间的收藏关系
.. 略
+ has_many :favorites
+ has_many :favorited_products, :through => :favorites, :source => :product
.. 略
然后修改 app/models/favorite.rb,加入这两行
class Favorite < ApplicationRecord
+ belongs_to :user
+ belongs_to :product
end
这样当捞 user.favorited_products 时,就会捞出“收藏的商品”。
修改 app/models/product.rb,加入这两行
.. 略
+ has_many :favorites
+ has_many :favorited_users, :through => :favorites, :source => :user
.. 略
Step 3: 在 user model 内实作判断式“是否收藏”
.. 略
+ def is_like?(product)
+ favorited_products.include?(product)
+ end
.. 略
Step 4: 在 products/show.html.erb 内加入”是否收藏“状态
<span>
<% if current_user && current_user.is_like?(@product) %>
<label class="label label-success"> 收藏商品 </label>
<% else %>
<label class="label label-success"> 未收藏商品 </label>
<% end %>
</span>
Step 5: 在 user model 内实作”收藏商品“及“取消收藏商品”
.. 略
def like!(product)
favorited_products << product
end
def unlike!(product)
favorited_products.delete(product)
end
.. 略
Step 6: 实际操作”收藏商品“及“取消收藏商品”
.. 略
def like
@product = Product.find(params[:id])
if !current_user.is_like?(@product)
current_user.like!(@product)
flash[:notice] = "收藏商品成功!"
else
flash[:warning] = "你已经收藏过本商品了!"
end
redirect_to product_path(@product)
end
def unlike
@product = Product.find(params[:id])
if current_user.is_like?(@product)
current_user.unlike!(@product)
flash[:notice] = "取消收藏商品!"
else
flash[:warning] = "你没有收藏过商品,如何取消 XD!"
end
redirect_to product_path(@product)
end
.. 略
”收藏商品“及“取消收藏商品”必须要是登入状态下才行。加入下面一行
before_action :authenticate_user! , only: [:like, :unlike]
.. 略
Step 7: 修改routes
.. 略
resources :products do
member do
post :add_to_cart
+ post :like
+ post :unlike
end
resources :posts
end
.. 略
Step 8: 修改”收藏商品“及“取消收藏商品”按钮
<span>
<% if current_user && current_user.is_like?(@product) %>
- <label class="label label-success"> 收藏商品 </label>
+ <%= link_to("取消收藏 ☆ ", unlike_product_path(@product), method: :post, class: "btn btn-default" ) %>
<% else %>
- <label class="label label-success"> 未收藏商品 </label>
+ <%= link_to("收藏商品 ❤ ", like_product_path(@product), method: :post, class: "btn btn-default" ) %>
<% end %>
</span>
下拉菜单,看到我收藏过的商品
Step 1: 产生 account 的 namespace 下的 favorites_controller
执行
rails g controller account/favorites
Step 2. 修改 routing
修改 config/routes.rb 加入:
.. 略
namespace :account do
resources :orders
+ resources :favorites
end
.. 略
Step 3. 修改下拉菜单,增加选项
修改 app/views/common/_navbar.html.erb 加入:
.. 略
<ul class="dropdown-menu">
<li> <%= link_to("My orders", account_orders_path ) %></li>
+ <li> <%= link_to("我的收藏", account_favorites_path) %></li>
.. 略
</ul>
.. 略
为了美化效果,加入收藏icon,可以将上述代码修改为
<li>
- <%= link_to("我的收藏", account_favorites_path) %>
+ <%= link_to account_favorites_path do %> 我的收藏 <i class= "fa fa-heart fa-md"></i>
+ <% end %>
</li>
Step 4.建立 account/favorites_controller.rb 下的 index action
class Account::FavoritesController < ApplicationController
before_action :authenticate_user!
def index
@products = current_user.favorited_products
end
end
Step 5. 新增 “收藏商品一览页面”
touch app/views/account/favorites/index.html.erb
可以直接使用app/views/products/index.html.erb页面
<div class="row">
<% @products.each do |product| %>
<div class="col-xs-6 col-md-3">
<%= link_to product_path(product) do %>
<% if product.image.present? %>
<%= image_tag(product.image.thumb.url, class: "thumbnail") %>
<% else %>
<%= image_tag("http://placehold.it/200x200&text=No Pic", class: "thumbnail") %>
<% end %>
<% end %>
<%= product.title %> ¥ <%= product.price %>
</div>
<% end %>
</div>
也可以使用app/views/admin/products/index.html.erb页面
<div class="row">
<div class="col-md-10">
<h2>我收藏的商品</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th width="220">Product Pic</th>
<th>Name</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<% @products.each do |product| %>
<tr>
<td> <%= product.id %> </td>
<td> <%= link_to product_path(product) do %>
<% if product.image.present? %>
<%= image_tag(product.image.thumb.url, class: "thumbnail") %>
<% else %>
<%= image_tag("http://placehold.it/200x200&text=No Pic", class: "thumbnail") %>
<% end %>
<% end %>
</td>
<td> <%= product.title %> </td>
<td> <%= product.price %> </td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
至此,收藏功能已经完成。
文末,分享一点小技巧。
在实做收藏功能时,首先,我确认参考Rails01的思路是对的,但是在具体实做过程中,要按照教程进行实际操作,同时需要考虑到model、method名称的改变,一不小心,很容易出错。如何解决呢? 我用纸笔直接画出来。
1.按原教程在纸上用蓝色笔写出 User 、Group 、及相关的method。
2.每实做一步,在蓝色字体旁边,标注实做的 medle及method名称。
3.这样,就很容易按步骤进行,而不会遗漏或者弄错名称。
当然,如果你对教程中的内容和前后步骤已经相当熟悉了,自然不需要这种土办法了。
你好,如果觉得这篇文章对你有帮助,我最近在参加一个编程比赛,JD-Store 魔改大赛,喜欢的话还麻烦你投下宝贵的一票,谢谢。
搜索功能,目前主要有两种方式:
方案1:navbar实现搜索功能
Step1.安装gem
在Gemfile中加入如下gem:
gem ‘ransack’
gem ‘will_paginate’
gem 'will_paginate-bootstrap'
gem ‘seo_helper’
备注:
gem 'will_paginate-bootstrap'用来美化分页效果的。
gem ‘seo_helper’用于高亮显示搜索结果
执行:bundle install
执行完毕后,重新开启rails server。
Step2.在_navbar.html.erb中的某个位置添加代码如下代码:
<div class="nav navbar-nav navbar-left">
<%= form_tag "#" , :method => :get do %>
<div class="input-group" id="search-id" >
<input type="text" class="form-control" name="q" value="<%= params[:q] %>" placeholder="寻找宝贝">
<div class="input-group-btn">
<button class="btn btn-default" type="submit">
<i class="glyphicon glyphicon-search"></i>
</button>
</div>
</div>
<% end %>
</div>
备注:CSS格式可以自己调节。
Step3.在products_controller.rb中添加相关功能方法
略...
before_action :validate_search_key, only: [:search]
略...
def search
if @query_string.present?
search_result = Product.ransack(@search_criteria).result(:distinct => true)
@products = search_result.paginate(:page => params[:page], :per_page => 5 )
end
end
protected
def validate_search_key
@query_string = params[:q].gsub(/\\|\'|\/|\?/, "") if params[:q].present?
@search_criteria = search_criteria(@query_string)
end
def search_criteria(query_string)
{ title_or_description_cont: query_string }
end
备注:title_or_description_cont,表示搜索内容限于product的title和description,也可以加入product的其他栏位。
Step4.修改routing,加入search
resources :products do
+ collection do
+ get :search
+ end
end
执行:rake routes
Step5: 新建搜索结果显示页面
touch app/views/products/search.html.erb
<div class="product-box">
<div class="container">
<!--=== 搜索结果,没有符合条件的数据 ===-->
<% if @query_string.blank? %>
<h2 class="search-info-title">搜索信息不能为空,请输入关键字搜索</h2>
<% elsif @products.blank?%>
<br>
<h2 class="search-info-title">亲,没有搜索到商品哦,要不换个关键词试试?</h2>
<% else %>
<!--=== 搜索结果,有符合条件的数据 ===-->
<!--=== 搜索內容 ===-->
<div class='row'>
<% @products.each do |product| %>
<div class='col-xs-12 col-sm-4 col-md-3 product-content'>
<%= link_to product_path(product) do %>
<!-- 商品圖片 -->
<% if product.image.present? %>
<!-- 顯示圖片 -->
<%= image_tag(product.image.thumb.url, class: "thumbnail img-responsive") %>
<% else %>
<%= image_tag("http://placehold.it/400x400&text=No Pic", class: "thumbnail") %>
<% end %>
<% end %>
<div class="product-info">
<p><%= link_to(render_highlight_content(product,@query_string), product_path(product)) %></p>
<p>$ <%= product.price %></p>
</div>
</div>
<% end %>
</div>
<div class="page-box">
<%= will_paginate @products, renderer: BootstrapPagination::Rails, :previous_label => t('previous-label'), :next_label => t('next-label') %>
</div>
<% end %>
</div>
</div>
备注:里面的search-info-title等css要自己去定义。
Step 6: 修改Step2 中 navbar内容,添加search路径
- <%= form_tag "#" , :method => :get do %>
+ <%= form_tag search_products_path , :method => :get do %>
Step 7: 实现搜索highlight功能
在 app/helpers/products_helper.rb里添加如下代码
def render_highlight_content(product,query_string)
excerpt_cont = excerpt(product.title, query_string, radius: 500)
highlight(excerpt_cont, query_string)
end
接着把 app/views/products/search.html.erb中的如下代码做修改:
- <%= link_to(product.title, product_path(product)) %>
+ <%= link_to(render_highlight_content(product,@query_string), product_path(product)) %>
方案2:Products#index 或 Product#show 页面内实现搜索
Step1.安装gem
在Gemfile中加入如下gem:
gem ‘ransack’
gem ‘will_paginate’
gem 'will_paginate-bootstrap'
gem ‘seo_helper’
备注:
gem 'will_paginate-bootstrap'用来美化分页效果的。
gem ‘seo_helper’用于高亮显示搜索结果
执行:bundle install
执行完毕后,重新开启rails server。
Step2.修改 views/products/index.html.erb,在适当的位置,加入如下代码
略
<%= render :partial => "products/search_bar" %>
略
备注:此行代码也可加入到views/products/show.html.erb,根据自己的需求。
Step3. 新建一个search_bar
touch app/views/products/_search_bar.html.erb
,加入如下代码
<div class="row">
<div class="col-sm-9 col-lg-8 col-lg-offset-2">
<%= form_tag "#" , :method => :get do %>
<div class="input-group">
<input type="text" class="form-control" name="q" value="<%= params[:q] %>" placeholder="寻找宝贝...">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
<% end %>
</div>
</div>
Step4. 在products_controller.rb中添加相关功能方法
略...
before_action :validate_search_key, only: [:search]
略...
def search
if @query_string.present?
search_result = Product.ransack(@search_criteria).result(:distinct => true)
@products = search_result.paginate(:page => params[:page], :per_page => 5 )
end
end
protected
def validate_search_key
@query_string = params[:q].gsub(/\\|\'|\/|\?/, "") if params[:q].present?
@search_criteria = search_criteria(@query_string)
end
def search_criteria(query_string)
{ title_or_description_cont: query_string }
end
备注:title_or_description_cont,表示搜索内容限于product的title和description,也可以加入product的其他栏位。
Step5.修改routing,加入search
resources :products do
+ collection do
+ get :search
+ end
end
执行:rake routes
Step6: 新建搜索结果显示页面
touch app/views/products/search.html.erb
<div class="product-box">
<div class="container">
<!--=== 搜索结果,没有符合条件的数据 ===-->
<% if @query_string.blank? %>
<h2 class="search-info-title">搜索信息不能为空,请输入关键字搜索</h2>
<% elsif @products.blank?%>
<br>
<h2 class="search-info-title">亲,没有搜索到商品哦,要不换个关键词试试?</h2>
<% else %>
<!--=== 搜索结果,有符合条件的数据 ===-->
<!--=== 搜索內容 ===-->
<div class='row'>
<% @products.each do |product| %>
<div class='col-xs-12 col-sm-4 col-md-3 product-content'>
<%= link_to product_path(product) do %>
<!-- 商品圖片 -->
<% if product.image.present? %>
<!-- 顯示圖片 -->
<%= image_tag(product.image.thumb.url, class: "thumbnail img-responsive") %>
<% else %>
<%= image_tag("http://placehold.it/400x400&text=No Pic", class: "thumbnail") %>
<% end %>
<% end %>
<div class="product-info">
<p><%= link_to(render_highlight_content(product,@query_string), product_path(product)) %></p>
<p>$ <%= product.price %></p>
</div>
</div>
<% end %>
</div>
<div class="page-box">
<%= will_paginate @products, renderer: BootstrapPagination::Rails, :previous_label => t('previous-label'), :next_label => t('next-label') %>
</div>
<% end %>
</div>
</div>
备注:里面的search-info-title等css要自己去定义。
Step 7: 修改Step3 中的代码,添加search路径
- <%= form_tag "#" , :method => :get do %>
+ <%= form_tag search_products_path , :method => :get do %>
Step 8: 实现搜索highlight功能
在 app/helpers/products_helper.rb里添加如下代码
def render_highlight_content(product,query_string)
excerpt_cont = excerpt(product.title, query_string, radius: 500)
highlight(excerpt_cont, query_string)
end
接着把 app/views/products/search.html.erb中的如下代码做修改:
- <%= link_to(product.title, product_path(product)) %>
+ <%= link_to(render_highlight_content(product,@query_string), product_path(product)) %>
你好,如果觉得这篇文章对你有帮助,我最近在参加一个编程比赛,JD-Store 魔改大赛,喜欢的话还麻烦你投下宝贵的一票,谢谢。
参考:
http://linzhewei-blog.logdown.com/posts/796801
https://forum.qzy.camp/t/navbar/486
今天是儿童节,首先祝我的木木节日快乐,身体健康,尽快恢复健康,回到活蹦乱跳的状态。
Objective 关于今天的课程, 你记得什么? 完成了什么?
1. github上合并了版本,完成了七牛云的相关章节操作
2. 整理了目前的状态:全栈营的学习,PME的工作,近期的账单记录
Reflective 你要如何形容今天的情绪; 今天的高峰是什么? 今天的低点是什么?
1. 感觉的到木木的健康恢复,比较高兴。
2. 认识到自己的一些问题,需要记录、分析、思考和解决,不要再做行动上的矮子了。
Interpretive 我们今天学到了什么? 今天一个重要的领悟是什么?
1. 脑袋比较浆糊,回忆不起来了。
解决问题方法论: 意识到有问题->认识问题->分析问题->解决问题的方法->解决问题的过程:挣扎、反思->解决了问题->形成肌肉记忆->总结,归档
Decisional 我们会如何用一句话形容今天的工作; 有哪些工作需要明天继续努力?
JDstore需要更新一个版本了。
BUG 1. String can't be coerced into Fixnum
<% @product_lists.each do |product_list| %>
<tr>
<td>
<%= product_list.product_name %>
</td>
<td>
<%= product_list.product_price %>
</td>
<td>
<%= product_list.quantity %>
</td>
<td>
<%= product_list.quantity * product_list.product_price %>
</td>
</tr>
<% end %>
问题定位
- 将
<%= product_list.quantity * product_list.product_price %>
注释掉之后,错误不在出现。因此定位于 Model :product_list - 经过反复查看,发现 product_list中product_price定义为string属性,应该是integer属性。
解决方案:修改db文件,再做rake三兄弟。
BUG 2.
问题定位:each未定义,可能是index文件写的有问题,不应该是each本身的问题。
BUG 3.
地址错误,少写了一个s,应该是admin/orders
BUG 4
问题查找和定位:发现点击“申请取消订单”按钮前和后,浏览器order一个是id,一个是随机数,可能会和token有关。
Objective
关于今天的课程, 你记得什么? 完成了什么?
- JDStore 完成ch8、ch9、ch10、ch11 --约6小时
Reflective
你要如何形容今天的情绪; 今天的高峰是什么? 今天的低点是什么?
happy,尤其所有的bug都解决了。
Interpretive
我们今天学到了什么? 今天一个重要的领悟是什么?
- 状态机 gem ‘aasm’ 及相关的操作
Decisional
我们会如何用一句话形容今天的工作; 有哪些工作需要明天继续努力?
- JDstore的复盘
5-8 本章学习以及复盘指南
,作业完成 - 对魔改大赛需要做的内容进行梳理,上tower进行管理
- 视频回放学习
- CSS实验
- 本周周记+5.19报错记录
Objective
- 完成魔改大赛的心得
- markdown相关学习
- 直播回放:0511-JD Stroe 魔改大赛的准备
- 拆解你的目标
- 拆解目标,将最终目标A拆成立体的目标B
- 找到路径和节奏:如何从A(最终目标)到B(明确的分解目标)
- 一个人没办法做完所有的事,所以,你需要学会协作
- 主题
- 如何挑选主题?
- 实力中等,做【主题商店】
- 很有实力,做【服务贩售下单】
- 如何挑选主题?
- 架构
- 如何不掉坑?(功能)
- 先写UserStory,手写
- 人物不能超过2个(Admin + User)
- 先排Must Have / Should Have
- Must Have + Should Have 不能超过十个
- 如何不掉坑?(画面)
- 先用【手稿】打画面
- 主线不能超过10张画面
- (登入/登出/静态页面/主要购买流程/个人账户设定/个人订单)
- 实做
- 主程:决定主题,安排事务
- 副程:辅助解决细项修饰
- 后端/前端。或 开发/美术
- 如何不掉坑?(功能)
- 找队友
- 同城,属性互补
- 上线时间,协作时间
- 协作
- 重视自己的承诺
- 只鼓励,帮助对方做得更好(不管对方是否是猪队友)
- 不给对方制造麻烦(写code加注释,CSS命名清晰)
- Tower / Pull Request
- 如何拉票?
- 20名VIP(可以获奖)
- 写教程,MeetUp帮助别人
- 帮忙别组写功能
- 如何增加票数?
- 迭代功能
- 迭代画面,避免审美疲劳
- 去留言鼓励别人
- 产生社交
总结:
- 拆切你的目标
- 找到步骤与节奏
- 找到问题与解法
- 不停的迭代
QA:现阶段如何提升自己的前端能力?:抄抄抄+改改改
你后悔没有抓住人生中的哪一刻?你最想修改人生中的哪一刻?
有些时候我们会为生活中已经发生的某些事情感到后悔,后悔到甚至想坐哆啦A梦的时光机回去修改或者重塑。
其实人生每一个时刻的感受都是独一无二的,那些独一无二的它、它们终于构成了我、我们的人生,缺少任意一个,人生的版图都不会完整。纵然不会无怨无悔,至少不负此生。
参加完魔改大赛,这就是我最深刻的感受。
一个留级生的自我救赎
我是第一期学员,第一期的作业进度始终停留在JobListing第一周。
此时想想2~3个月前的自己,已经很有些印象模糊了。那时的自己,肯定是面目可憎的,原因大家都懂的。哦漏~
- 第一次救赎行为始于3月18号参加meetup,获得了鸡血满满和重新开始的勇气…
- 自3月20重新开始,至5月11,共计53天,投入在全栈营纯时间总长为117小时,约为每天2.2小时…
- rails101完成练习4次
- joblisting完成练习3次
魔改大赛心历路程
魔改大赛其实很早就完成了可以上线的版本,大概在4月24左右吧。因为不确定,因为不够自信,始终把它压在自己的mac里面,不见天日。
五一假期间,觉得自己不能够再像第一期那样了,至少证明自己参加过全栈营。于是在这种情况下,仔细思考并确定当前情况下的最合适的方式:主题取胜。终于在5月4号进行了首次发布。
魔改大赛技术篇
PS:这里所谓的技术,并不是指编程技术,更偏重于选择技术。
主题取胜
关于主题,我还是深入思考过的。招聘网站的功能和技术结构,决定了这是一个提供交流、交互性质的平台网站,它与交易有关,但是没有涉及到交易最核心阶段:物品和货币的交换、结算。
对网站进行流程抽象归纳:首先,得有需求存在(职位需求)- 这些需求被公布(发布职位需求)- 有人响应(应聘)。交互的过程就发生在我们要做的平台上。
最开始的想法是做儿童绘本相关的,也就是一个类似豆瓣的读书评论。后来觉得缺少了应征的环节,所以绘本的主题还是打算留在购物网站实现。
最终确定在医疗行业,提供一个医护和患者交流的平台:患者发布病症描述,医护人员应征。
OK,就是它了。
项目管理
作品的最终上线时间是5月4号,这个时候,离结束时间已经不多了,甚至还需要兼顾到购物网站的学习。那就是说,最多我也只能更新迭代2~3个小功能了。此时优秀参赛作品已经很多了,很多功能值得去Command+c,移植到自己的作品上(什么意思?我想大家都懂的XDD)。
在这3~4天时间里,面对其他同学缤纷灿烂的作品,如何保持一颗冷静的心,克服焦虑感呢?我的答案是选择合适的功能,合适功能的具体标准是什么?
1.工作量不是太大,参考信息足够多,可以避免做不出来的挫折感
2.在购物网站上也可以使用到的功能,这样极大的降低自己的焦虑感,不会觉得会影响到购物网站的学习进度。
候选名单上的内容如下,序号表明了优先级:
1. 小功能:navbar搜索功能
2. 问题修复:footer固定问题
3. 问题修复:用户登录、注册失败后,不能进入弹窗模式
4. 大功能:客服功能
5.大功能:首页轮播功能
最终,我选择了前3项进行了改版。
最后,一句话总结:
后悔药的正确使用方式并不是无条件的自我原谅,而是有措施和改善的自我救赎。
Objective
关于今天的课程, 你记得什么? 完成了什么?
- 招聘网站:修改弹窗错误问题。参考https://forum.qzy.camp/t/topic/1346 —1’57“
- Rails学习:—1’16“
- 吉米王的blog学习:simple_form;
- bootstrap学习,无效果
3.PME工作 :—0’28“ 确认电子锁立项事宜。
Reflective
你要如何形容今天的情绪; 今天的高峰是什么? 今天的低点是什么?
- 充实
Interpretive
我们今天学到了什么? 今天一个重要的领悟是什么?
- 直播回放:
Decisional
我们会如何用一句话形容今天的工作; 有哪些工作需要明天继续努力?
- job-listing还需要继续做练习并提取练习。
- 购物网站-需要再练习一次。 3.job-listing弹窗问题,也许可以参考如下解决。 https://github.com/dchen71/dchen71.github.io/blob/master/_posts/2015-11-14-devise-bootstrap-modal.md
Objective
关于今天的课程, 你记得什么? 完成了什么?
- JdStore:完成5-3到5-7的内容 —4’18“
- 更新了JdStore主题:参考吉米王的blog:http://xbearx1987-blog.logdown.com/posts/1735049-website-wellhttps://bootsnipp.com/。在网站直接下载
Reflective
你要如何形容今天的情绪; 今天的高峰是什么? 今天的低点是什么?
- 平缓
Interpretive
我们今天学到了什么? 今天一个重要的领悟是什么?
- 几次报错都自己解决了,没有求助。特别是“rake db:migrate报错”+“rails console返回值错误”
Decisional
我们会如何用一句话形容今天的工作; 有哪些工作需要明天继续努力?
- JdStroe的,5-4,还是不太清楚,“实现原理”或者说“哪个输入参数,经过什么操作,导致了哪个输出参数”
- 队友没有找到,决定到四海群去找下。