nfreeness.logdown.com全栈工程师成长记
nfreeness.logdown.com Profile
nfreeness.logdown.com
Maindomain:logdown.com
Title:全栈工程师成长记
Description:我是 nfreenes ,一名持续践行“创造价值、享受生活”的 80 后 Rails 全栈工程师。这是我的 Rails 成长记录博客,这里记录「错误」,也记录之后的「正确」,当然还有一些个人感悟。
Keywords:nfreeness,rails,ruby...
Discover nfreeness.logdown.com website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site
nfreeness.logdown.com Information
Website / Domain: |
nfreeness.logdown.com |
HomePage size: | 62.039 KB |
Page Load Time: | 0.47523 Seconds |
Website IP Address: |
54.225.181.63 |
Isp Server: |
Amazon Technologies Inc. |
nfreeness.logdown.com Ip Information
Ip Country: |
United States |
City Name: |
Ashburn |
Latitude: |
39.043720245361 |
Longitude: |
-77.487487792969 |
nfreeness.logdown.com Keywords accounting
Keyword |
Count |
nfreeness | 0 |
rails | 4 |
ruby | 1 |
nfreeness.logdown.com Httpheader
Server: Cowboy |
Connection: keep-alive |
Date: Wed, 04 Nov 2020 06:08:31 GMT |
X-Frame-Options: SAMEORIGIN |
X-Xss-Protection: 1; mode=block |
X-Content-Type-Options: nosniff |
Content-Type: text/html; charset=utf-8 |
Content-Length: 64887 |
Etag: W/"0607eb764c68c3858e9e715ec0560bf6" |
Cache-Control: max-age=0, private, must-revalidate |
X-Request-Id: e0ef7211-dba7-410e-86d5-ff51e2425bec |
X-Runtime: 0.259335 |
Via: 1.1 vegur |
nfreeness.logdown.com Meta Info
content="text/html; charset=utf-8" http-equiv="Content-Type"/ |
content="我是 nfreenes ,一名持续践行“创造价值、享受生活”的 80 后 Rails 全栈工程师。这是我的 Rails 成长记录博客,这里记录「错误」,也记录之后的「正确」,当然还有一些个人感悟。" name="description"/ |
content="nfreeness,rails,ruby" name="keywords"/ |
content="全栈工程师成长记" property="og:title"/ |
content="我是 nfreenes ,一名持续践行“创造价值、享受生活”的 80 后 Rails 全栈工程师。这是我的 Rails 成长记录博客,这里记录「错误」,也记录之后的「正确」,当然还有一些个人感悟。" property="og:description"/ |
content="http://nfreeness.logdown.com" property="og:url"/ |
content="https://s3.amazonaws.com/logdown-production/system/blog/17929/og_image/IMG_1667.JPG" property="og:image"/ |
charset="utf-8"/ |
content="nfreeness" name="author"/ |
content="True" name="HandheldFriendly"/ |
content="320" name="MobileOptimized"/ |
content="width=device-width, initial-scale=1" name="viewport"/ |
content="INDEX,FOLLOW" name="robots"/ |
54.225.181.63 Domains
nfreeness.logdown.com Similar Website
Domain |
WebSite Title |
nfreeness.logdown.com | 全栈工程师成长记 |
nfreeness.logdown.com Traffic Sources Chart
nfreeness.logdown.com Alexa Rank History Chart
nfreeness.logdown.com Html To Plain Text
编程重新定义人生 RSS Blog Archives About Me 码字不易 5/26日记 May 26, 2017 Objective 完成: 新功能 UserStory 新功能原型稿 前三季比赛作品内容维护 客服回复 Reflective 情绪:波澜不惊 Interpretive 学到: 日常的运营中,有些问题不需要修改代码来解决,善于利用原有的功能规则,就可以巧妙的实现 框架也许只要一个人构思,但细节需要很多人填充 为自己做的事情赋予意义的深层原因在于,当千百个放弃的理由扑面而来的时候,你知道它们只不过是纸老虎,继而能从容淡定的继续做自己的事 Decisional 形容:断笔好久,又一次体会到码字不易,要重新练起来 努力:导航栏改版,新功能页面初稿铺开,读一本书 我回来了 May 25, 2017 上一次写博客是产品上线那个星期,这之后已经快半年的时间过去。连续20几个星期,全部工作都在围绕着产品的快速迭代进行,一如博客副标题所说的“编程重新定义人生”,过去的160多天着实再次重新定义了我的人生,然而这当中不论是技术的进步还是个人的成长,竟没有些许记录留下,想来着实有些可惜。从今天开始,继续写博客。——2017.05.25 半月记(第十九周&第二十周) December 11, 2016 Objective 完成:产品上线 Reflective 情绪:高亢/紧张/兴奋/开心 低点:时间不够用 Interpretive 学到:有些事,自己没做过,你就根本不懂别人在说什么,那不是别人傻逼,而是自己傻逼。 领悟: 上周实在是忙到连写一两百字的周记都没时间,所以这次把第十九周和第二十周的周记一起来了。 这两个星期的工作都围绕着产品上线展开,除了要完善一些页面细节,更多的精力放在了运营、客服方面。不同于以往做练习项目,这次面对的是真正的商业项目,要为真实用户提供服务,于是又重新理解了一遍 编程只占20% 的含义——一个有价值的产品绝对不只是它背后的代码本身而已,它的价值更多体现在如何帮助人们解决问题/实现自我、推动行业发展与变革、创造社会价值等方面。在这样的前提下,真正重要的是“道”,而代码只是与之相关的“术”。 于是我将做产品这件事 赋予一层又一层的意义 ,然后就开始“全栈”了,也就真的根本停不下来了。又因为思考的颗粒度变细,看到的细节变多,越发觉得有更多事情需要去做,所以即便很多时候“加班”到“天亮说晚安”,却也依然不觉得累。 Decisional 形容:虽美中不足,但值得鼓励。 努力:接下来要补充一些Web设计/用户体验方面的知识。 规划即梳理 第十八周周记 November 27, 2016 继续秉承闲话少说的理念,本周稍微不同于以往的是,因为进入了内测阶段,要把一部分的精力用于修复 Bug 以及思考产品的运营层面。也由于产品即将上线,要做的事情越来越多(体现在 Redmine 上的 Ticket 随之增长),一如笑来老师之前所说,对工作的规划其实就是对工作的梳理。面对长长的 Redmine 清单,要分出轻重缓急就是先规划好指挥官任务(紧急、重要),然后新开 Ticket 时只要判定是否跟指挥官任务直接有关就可以了。嗯,就这样。 少说多做 第十七周周记 November 20, 2016 这周主要的工作集中在做页面的自适应。 总结一:如果一个网站最终还是要做自适应,那么在写一个页面之前,就尽量考虑不同的分辨率之下的页面布局样式,不然后期调整起来会比较麻烦。 总结二:写功能也好,写样式也罢,想要写的越来越快,有什么方法?这几周一直在写页面,有一点感受,借用卖油翁的话就是——“无他,唯手熟尔”。 经历了五个星期,我们的项目终于开始进入内测阶段。今天看到内测成员在跟着课程内容做测试、提供反馈,还很认真的写博客记录心得,对我而言这既是压力也是动力。虽然最近的周记越来越“缩水”,不过我还是闲话少说,先接着干活了。 根本停不下来 第十六周周记 November 13, 2016 周一、完善后台管理页面 周二、写页面 周三、写页面 周四、写页面 周五、写页面 周六、改 layout&写手机版页面 周日、写手机版页面 根本停不下来 这周的关键词依旧是页面,也就是一直在做 Onboarding 的事情。对 Onboarding 来说,持续的重复这件事情不会显得无聊,相反的则是找到了上瘾的感觉,所以根本停不下来,按照以往的经验,写个周记至少要 2-4 个小时,这次就节省一点写周记的时间接着写页面好了。 忘掉你所知道的一切吧 第十五周周记 November 6, 2016 周一、写页面 技巧:修改页面内容显示宽度 在 bootstrap 中,如果想要全屏展示页面内容, 使用 .container-fluid class,居中显示使用 .container class。 通常页面内容宽度在 960px 到 1280px 左右,如果导航栏使用 .container-fluid class ,则在浏览器显示宽度超过页面内容宽度(比如前面说的 1280px) 之后,导航栏的内容会被拉伸到和浏览器窗口同样的宽度,就会变得和页面内容不对齐,因此可以根据页面内容的样式改用 .container 或者重新给导航栏定义一个适合宽度的 class。 说到导航栏,如果给导航栏使用 .navbar-default class,默认的颜色是 #f8f8f8 ,把 #f8f8f8 换成自己想要的颜色值,就可以给导航栏“变脸”了,如果要把它变成透明色,改为 transparent 即可 : .navbar-default { background-color : transparent ; } 又,假设在网页的顶部设置了大面积的背景图,想要让导航栏和这个背景图融为一体,最简单的实现方法是将整个 navbar 的代码都移动(或者通过 renden 的方式)到这个背景图的 div 里即可。 周二、写页面 技巧:消除图片排列间距 症状:水平排列图片的时候,默认会出现一个空白间距,如果不想要这个间距的话,使用图片本身的 margin 是不行的,哪怕负数也不起作用。那该如何去除呢? 解法:假设将这些图片排在一个 div 里,设置一个 class,代码如下: .no-spacing { letter-spacing : -8px ; } 然后在图片的父级 div 使用上面的 .no-spacing class 即可。 效果: 参考及延伸阅读: 如何解决inline-block元素的空白间距 周三、写页面 技巧:将 CarrierWave 上传的图片按比例裁切 CarrierWave 配置文件默认的图片裁切方式是 resize_to_fit ,只需改为 resize_to_fill 即可将图片按照设定的比例裁剪,这样做虽然会导致部分图片内容被裁掉,但是可以保证图片不会变形。 app/uploaders/image_uploader.rb version :thumb do - process :resize_to_fit => [ 200 , 200 ] + process :resize_to_fill => [ 200 , 200 ] end 周四、完善用户资料功能 技巧:套用 layout 针对单个 action: app/controllers/groups_controller.rb def index @groups = Group . all + render layout: "you_layout" end 针对单个 controller: app/controllers/groups_controller.rb class GroupsController < ApplicationController + layout "you_layout" def index @groups = Group . all end 针对一系列的 controller,在父级 controller 使用一次即可: app/controllers/admin_controller.rb class AdminController < ApplicationController + layout "you_layout" 因为子级 controller 会自动继承 class Admin::UsersController < AdminController 。 针对 devise ,则需要修改 config/initializers/devise.rb : config/initializers/devise.rb Devise . setup do | config | 略…… + Rails . application . config . to_prepare do + Devise :: SessionsController . layout "you_layout" + Devise :: RegistrationsController . layout "you_layout" + end end 周五、文案及细节调整 技巧:给不同的用户身份做不同的登录后重定向 之前有说过 如何自定义 devise 的 redirect_to ,现在假设普通用户登录之后给他重定向到用户中心页面,而给管理员重定向到网站后台管理页面,只要在前面的基础上做一小小的判断即可: app/controllers/registrations_controller.rb def after_sign_in_path_for ( _user ) if current_user . is_admin? admin_path #管理员路径 else account_path #用户路径 end end 周六、初学 Sketch 跟着一个 Sketch 教程 实作,通过重复的小套路,只要两个小时就能做出一个和教程一样的营销邮件,实现了 Sketch 从新手到入门的跨越。 掌握了几个基本工具的使用: 矩形(调整背景色、边框、大小) 文本(换字体、大小、颜色) 分组(组合、排序、命名、重复使用) 同时还学会: 画布的建立、大小、背景色调整 参考线的建立、拖动与删除 建立可复用的符号 建立可复用的文本样式 文件的导出 忘掉你所知道的一切吧 “忘掉你所知道的一切吧”——出自 《奇异博士》 电影台词,这句话是莫度男爵对想要学习魔法却又傲慢的主角斯蒂芬医生说的,翻译成 xdite 老师的话就是“ 放下你的无效学习方式 ”,嗯,就是这样。 如何自定义 devise 的 redirect_to (以及遇到的坑) November 3, 2016 方法 用 devise 自带功能修改密码,默认修改密码成功之后会跳转到 root_path ,如果想要实现的是,修改完密码之后跳转到用户中心,比如 user_path 这样的路径。该如何实现呢? devise 官方 wiki 给出了 方法 ,两步搞定: 1.建立 registrations_controller.rb 让它继承 Devise 的方法 app/controllers/registrations_controller.rb class RegistrationsController < Devise :: RegistrationsController protected def after_update_path_for ( resource ) user_path #你的路径 end end 2.修改 routes.rb 定位到新的 controller config/routes.rb devise_for :users , :controllers => { :registrations => :registrations } 扩展 一、注册用户和修改密码使用的是 registrations controller,如果想要在注册用户之后跳转到特定的页面,参考以上步骤,使用下面的 method: app/controllers/registrations_controller.rb def after_sign_up_path_for ( resource ) welcome_path #你的路径 end 二、登录用户使用的是 sessions controller,如果想要在用户登录之后跳转到特定页面,方法跟上面的则不太一样,这里只需要修改 app/controllers/application_controller.rb ,增加以下 method: app/controllers/application_controller.rb def after_sign_in_path_for ( _user ) account_path #你的路径 end 遇到的坑 本来今天在实现这个修改密码的跳转功能是瞬间就可以实现的事情,但问题在于,由于使用了新的 registrations controller ,导致现在新用户无法注册(旧用户可以登录、修改密码)。 排错过程 1.注册的时候填写的用户邮件、用户名、密码全部符合规范,但是提交表单 simple form 会提示出现错误,而且错误框并没有定位在注册页面的任何一个栏位,说明是其它栏位出了问题。 2.小伙伴哲伟用自己的代码修改 registrations controller ,一切正常,可以注册。 3.在自己的功能分支 merge 小伙伴的分支,问题重现。 4.在 develop 分支 merge 小伙伴的分支,没有问题。到此,可以判断问题出现在自己的功能分支。 5.回溯自己的 commit ,发现有在 user model 里面增加了一个 phone column(用户手机号码)的 validate 限制。 6.结论:问题不在 registrations controller 。 7.解法:去除 validate 限制或者给注册页面增加相应的栏位。 8.总结:多遇到坑并尝试去解决总是好的,比如步骤 1 里面 simple form 提示框不在当前页面,这个之前就有遇到过,所以可以以此快速排除是栏位问题。 问题集 October 30, 2016 从7月开始学 rails 到现在陆陆续续遇到了各种各样的 bug 和问题,大部分已经发在博客上,有一些则是根本就没有记录的,还剩下的则是七零八落的丢在电脑里的各个位置,今天整理一下全部丢上来。 simple_form 栏位相关 注册页面提示:No input found for citext 原因:username 栏位的数据类型是 t.citext "username" 解法:为simpleform相关栏位加入 as: :string - < %= f.input :username, required: true, label:false, :placeholder = > "用户名" %> + < %= f.input :username, required: true, label:false, :placeholder = > "用户名" , as: :string %> 加载 layout js \ css 错误提示: Sprockets :: Rails :: Helper :: AssetNotPrecompiled in Welcome #index Showing /app/ views / layouts / welcome . html . erb where line #9 raised: Asset was not declared to be precompiled in production . Add `Rails.application.config.assets.precompile += %w( welcome.css )` to `config/initializers/assets.rb` and restart your server 解法:按照报错提示给 config/initializers/assets.rb 加入相关的 css 和 js 文件名就可以了 pg 数据库相关 问:post 属于某个 group ,要将几个 group 下面的 post 全部导出。 答: SELECT * FROM public.posts WHERE group_id = 5 OR group_id = 6 OR group_id = 7 重命名heroku app heroku apps:rename new-app-name rake 相关 为文件添加 # TODO, # FIXME, # OPTIMIZE 运行 rake notes 就可以查看待办事项 rake notes:custom ANNOTATION=ZOMG rake notes:todo git 相关 查看 git 配置: git config --list 通过编辑器修改配置: atom ~/.gitconfig 查看 git 已经追踪的文件: git ls-files bundle 相关 问题:运行 bundle install 或者 bundle 、 bundle -v 都会提示 undefined method activate_bin_path for Gem:Module (NoMethodError) 然而却可以运行 bundler bundler -v 过程:试着 gem uninstall bundle 然后再 gem install bundle ,会提示安装成功,但症状依旧。 解决:google 到 这个结果 ,按照最后一个答案 For me, (I am working with RVM) it worked just running: gem update --system gem update bundler 运行 gem update --system 就可以解决了,不需要后面一步。 用 navicat 导出 ER 图 google navicat 导出表结构 这个结果 说的是导出SQL文件,不符合预期 google navicat 导出表结构图片 结果不理想 google navicat 结构图片 第一个结果 是《用Navicat制作ER图及与SQL互相转化》,答案在里面: 将现成的数据库转换为ER图 选中已连接的数据库中 数据表——右键,选择“逆向数据库到模型”,即可根据现成的数据库生成ER图模型。 端口占用的解决方法: 终端中输入 sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000 输入本机密码 终端中输入ruby后面的号码,假设是是16705,则: kill -9 16705 rake db 错误的解决办法 运行 rake db:migrate 提示: == 20160928075454 Users : migrating ========================...
nfreeness.logdown.com Whois
"domain_name": [
"LOGDOWN.COM",
"logdown.com"
],
"registrar": "ENOM, INC.",
"whois_server": "WHOIS.ENOM.COM",
"referral_url": null,
"updated_date": "2019-04-13 08:12:03",
"creation_date": "2011-05-12 14:47:31",
"expiration_date": [
"2020-05-12 14:47:31",
"2020-05-12 14:47:00"
],
"name_servers": [
"NS1.DNSIMPLE.COM",
"NS2.DNSIMPLE.COM",
"NS3.DNSIMPLE.COM",
"NS4.DNSIMPLE.COM"
],
"status": [
"ok https://icann.org/epp#ok",
"ok https://www.icann.org/epp#ok"
],
"emails": "ABUSE@ENOM.COM",
"dnssec": "unsigned",
"name": "REDACTED FOR PRIVACY",
"org": "REDACTED FOR PRIVACY",
"address": "REDACTED FOR PRIVACY",
"city": "REDACTED FOR PRIVACY",
"state": "TW",
"zipcode": "REDACTED FOR PRIVACY",
"country": "TW"