自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 react + redux大体思路(二)

实例在/app/host/components/houses/house_list.js文件中:import React, {Component} from 'react';import {StyleSheet, View, Text, Image, ListView, ScrollView, TouchableWithoutFeedback,TouchableOpacity} fr

2016-08-13 15:22:22 756

原创 react+redux大体思路(一)

思路图基本是components->action->middlewave->server(response)->reducer(重组数据更新components)具体实例:app/host/components/mine/edit_details.js中:import React, {Component} from 'react';import {View, Text,

2016-08-12 16:08:40 1105

转载 Rails Asset Organization

Rails Asset Pipeline 的作用就是把一堆css文件压缩为一个css,把一堆js压缩为一个js,减少访问页面时的 Http 请求。css/js 存放在哪?(乐高配件)在Rails中,样式文件保存在以下两个文件目录:app/assets应用的样式文件,比如文章、用户、评论的css/jslib/assets外源的样式文件,比如videojs,jQ

2016-08-11 17:47:03 460

转载 rails session cookie

Published on 2014-02-09为了理解session,我想像了一个场景:老年痴呆患者是没有记忆力的,我告诉他我的名字,并热情的和他打招呼。可第二次会话时,他早已忘记我的名字。HTTP 协议也是如此,没有状态的,多个请求之间毫无关联。Session的用途session 是一串 Hash,保存在浏览器的Cookie文件中。把 user id 放到 ses

2016-08-11 17:39:46 540

转载 我对 Sidekiq 的理解

Consumer:sidekiq 进程Sidekiq会加载Rails的代码,所以可以使用 Rails app 的各种类、各种方法等等更新Rails代码后,Sidekiq 进程需要重新启动,以便reload代码。Sidekiq 是多线程,默认25个Publisher:RailsSidekiq通过Redis Gem(一个Redis client)和Redis通讯。Rai

2016-08-11 17:33:32 1217

转载 Ruby 迭代器

这周的一个业务场景:订单支付钱,需要检查用户订单中的商品状态。若包含下架商品,该订单不可被支付。除了 Each,我对 Ruby 的其他迭代器一概不知。一开始真不知道怎么写这段代码,难道判断所有的商品,将一堆 true 、false 塞到一个数组中,最后合并判断?# 这样写太丑了,简直有辱 Ruby 的名号。a = trueproducts.each do |product|

2016-08-11 17:30:40 401

转载 不要过分暴露变量

相信有不少人也和我一样,这样写 destroy action.# app/controllers/goods_controller.rbdef destroy @goods = Goods.find(params[:id]) @goods.destroy redirect_to admin_goods_index_urlend这个对象删除后直接调转到新页面了。vi

2016-08-11 17:23:25 626

转载 Float Vs BigDecimal

什么是 Float? 什么是 BigDecimal? 他们的区别是什么?我们先从一段代码说起:1.9.3-p448 :069 > 0.1.class => Float 1.9.3-p448 :069 > 0.2.class => Float 1.9.3-p448 :068 > 0.1 + 0.2 => 0.30000000000000004 计算结果为一个近似值 0

2016-08-11 17:19:32 942

转载 validates_presence_of 不适用于 boolean 字段

Published on 2013-12-04validates_presence_of 广泛的应用于 Rails model 的验证,但它不能应用于 boolean 字段。因为 false 在 validates_presence_of 眼中,是 invalid,无法通过验证!范例定义 confirmed 字段为 boolean,并添加 validates_presence_

2016-08-11 17:17:36 486

转载 理解记忆:删除远程分支

删除远程分支,这是一个很简单的命令,我却经常记不住。为什么用 push,而不是 delete ?git push origin :branch_name聊一聊 push 的标准用法git push origin local_branch_name:remote_branch_namelocal_branch_name:本地分支名字remote_branch_name:远

2016-08-11 17:12:19 294

转载 总结 Web 应用中常用的各种 Cache

总结web应用中常用的各种cachecache是提高应用性能重要的一个环节,写篇文章总结一下用过的各种对于动态内容的cache。文章以Nginx,Rails,Mysql,Redis作为例子,换成其他web服务器,语言,数据库,缓存服务都是类似的。以下是3层的示意图,方便后续引用: +-------+1 | Nginx | +-+-+-+-+ | | | +---------------+ | +-

2016-08-11 14:54:55 948

转载 Web 缓存及在 Rails 中的使用

最近给博客添加了缓存,感觉速度提升了不少,在这段时间里,看了一些关于缓存及 Rails 中使用缓存的资料,把自己学到的一些姿势总结一下。HTTP 缓存又可以称为客户端缓存。当用户第一次访问某个页面时,服务端按正常方式渲染页面,并在 Response Header 中添加 ETag 或 Last-Modified 或两者,当用户再次访问那个页面时,Request Header 中

2016-08-11 10:40:37 362

转载 ruby声明式语法的实现技巧

在ActiveRecord可以用很方便的声明方式来定义model之间的关联关系,例如:class Topic ActiveRecord::Base has_many :posts belongs_to :userendhas_many和belongs_to其实是Topic类的class method,标准写法是:class Topic ActiveRecord::Bas

2016-08-10 14:14:49 406

转载 对象缓存和n+1问题分析

我们常见的OLTP类型的web应用,性能瓶颈往往是数据库查询,因为应用服务器层面可以水平扩展,但是数据库是单点的,很难水平扩展,当数据库服务器发生磁盘IO,往往无法有效提高性能,因此如何有效降低数据库查询频率,减轻数据库磁盘IO压力,是web应用性能问题的根源。对象缓存是所有缓存技术当中适用场景最广泛的,任何OLTP应用,即使实时性要求很高,你也可以使用对象缓存,而且好的ORM实现,对象缓

2016-08-10 14:10:00 1239

转载 基于资源的HTTP Cache的实现介绍

我们都知道浏览器会缓存访问过网站的网页,浏览器通过URL地址访问一个网页,显示网页内容的同时会在电脑上面缓存网页内容。如果网页没有更新的话,浏览器再次访问这个URL地址的时候,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。什么是HTTP Cache 对于浏览器的这种网页缓存机制大家已经耳熟能详了,举个例子来说,JavaEye的新闻订阅地址:

2016-08-10 13:54:15 912

转载 validates不要校验布尔型 presence: true

一个小坑重现有这么一个对象class Article attr_accessible :can_hidden validates :can_hidden, presence: trueend现在我创建一个不能被隐藏的文章: Article.create!(can_hidden: false)Boom!!ActiveRecord::R

2016-08-09 20:41:42 772

转载 Devise 加上 simple_captcha2做验证码验证

现在网络上各种扫描器和网络爬虫越来越泛滥,如何让你的网站变得更强壮,以抵御这些不速之客呢?验证码作为一个简单而又有效的解决方案,很好的将机器人和人类区分开来。呃~~, 当然,未来可能就不一定了。目前主流的验证码形式有这么几种:问答题照片验证码图片验证码第一种比较简单直接,它主要的问题是需要存储大量的数据,理论上题库越大越难以破解。这里有一个实现: humanizer

2016-08-09 20:37:07 1546

转载 ruby代码检查器rubocop

什么是RuboCopRubocop 是基于 ruby-style-guide / Ruby 风格指导 实现的一个静态代码分析工具。使用rubocop有助于个人/团队写出风格统一的代码如何安装$ gem install rubocop或使用bundle安装gem 'rubocop', require: false如何使用$

2016-08-09 18:33:34 2042

转载 如何在rails中自动隐藏flash message消息

很简单,在assets/javascript加入以下 coffee script 代码$ -> flashCallback = -> $(".alert").fadeOut() $(".alert").bind 'click', (ev) => $(".alert").fadeOut() setTimeout flas

2016-08-09 18:25:13 379

转载 rails中获取url信息的一些方法

如本机我测试域名为test.blog.zool.it:3000打开的uri为 /post/Hello-Worldfullurl为 http://test.blog.zool.it:3000/post/Hello-world则rails的路由生成一下几个方法domain(tld_length = 1)取得域名request.domain #=> zo

2016-08-09 18:06:49 3842

转载 完美解决rails中国时区时间设置

解释4个时区设置的不同config.active_record.default_timezoneconfig.time_zoneTime.zoneENV['TZ']分别解释如下:ENV['TZ']这个变量指的是服务器系统变量,ubuntu下可以用cat /etc/timezone来查看当这个值为 Asia/Shanghai时, 显示就是中

2016-08-09 17:33:39 2786

转载 ruby数组填充方法

手册array.fill(obj) → arrayarray.fill(obj, start [, length]) → arrayarray.fill(obj, range ) → arrayarray.fill {|index| block } → arrayarray.fill(start [, length] ) {|index| block } → arrayarray

2016-08-09 17:29:48 442

转载 多级module避免使用双冒号

在多层模块中定义类或者模块一般有两种做法:1234567module A module B class C ... end endend和12345module A::B class C ... endend

2016-08-09 17:17:09 559

转载 自定义ruby异常时需要注意的一个问题

有时我们会有这样的场景,对于依次调用的函数 A 、B、 C,存在这样的职责:123A [处理指定异常类] -----> B[转换异常类] -----> C[抛出原始异常]有人会写出这样的代码:12345678910111213141

2016-08-09 17:14:41 853

原创 git grep 命令搜索关键词

git grep -n order ./app/models在项目app/models文件下搜索order关键词 -n是标明行数

2016-08-09 16:21:41 6160

转载 ActiveRecord 如何高效地获取随机 records

ActiveRecord 并没有直接提供随机获取的接口,有以下几种方法可以实现。初级Model.all.sample(n)返回 Model 的所有 records ,浪费带宽,浪费内存,效率奇差,无节操。进阶ids = Model.pluck(:id).sample(n)Model.where(id: ids)先返回 Model 的所有

2016-08-09 10:26:16 925

转载 资源加锁

在 Rails 当中,经常需要将某些任务作为定时任务执行,而对于系统的定时任务而言,到点就启动一个进程来处理,相互之间是独立的,这就有可能导致某一些进程同时操作某个资源,有可能导致发生出现竟态,而导致一些问题。通常的一个思路是通过一些外部的标志来达到加锁的作用,比如说文件。来看一段代码:lock do # handle the limited resourceend

2016-08-06 17:05:22 401

转载 不要在 Rake 中直接 Return

病灶假设你有一个 Rake Task,需要记录一些用户信息,并且为了防止重复记录,你加了一段保护代码:Task :record_information do return if already_check? record_informationend看上去挺不错,但是一运行。Booom!!! 报错了 LocalJumpError: unexpected re

2016-08-06 17:00:36 284

转载 jquery自动补全

最近一段时间在忙着找工作,很久没有更新了,之前做了一个自动补全的功能,花费了我很多时间,因为涉及到很多前端开发相关的知识,包括DOM, js, coffeescript, jquery等等,现在打算详细的描述一下了。很多网站都有用户名或者输入内容自动补全的功能,我实现的是比较简单的一种,即评论区用户名自动补全,在 @ 其他评论人的时候,文本框会自动筛选出所有评论着的名字。很显然,该功能主要依靠

2016-08-06 12:15:49 940

转载 ActiveRecord中实现软删除

软删除即不真正删除数据库中的数据,数据是可以恢复的,只是对用户来讲是不可见的。软删除在实际应用中很广泛,除了一般的论坛应用,在微博和微信之类的应用中也随处可见。为什么要有软删除而不是直接删除呢?个人认为主要有两个方面的原因:一是数据本身就是有价值或有潜在价值的东西,二是和数据本身关联的其他数据有很多,比如文章的评论,如果直接删除了文章,那么评论也会随之被删除,某些用户可能并不希望这样。因此,软删除

2016-08-06 11:57:07 2138

转载 helper_method方法

什么是 helper_method? 如果将方法设置为 helper_method,那就意味着该方法既可以在 controller 中使用,也可以在 view 中使用,这样会 大大提高编码效率,减少视图层的重复代码,使代码更加清晰。class ApplicationController ActionController::Base ... helper_method :a

2016-08-03 15:05:08 1367

原创 jbuilder的json.partial!方法

目录结构app--v1--orders   --index.json.jbuilder       --show.json.jbuilder                                               --_order.json.jbuilder                             --rooms   --_room.json.jbu

2016-08-02 16:41:05 1041

转载 link_to指向路由路径拼接详解

除了使用路由帮助方法之外,Rails 还能从参数数组中创建路径和 URL。例如,假设有如下路由:resources:magazinesdo  resources:adsend使用 magazine_ad_path 时,可以不传入数字 ID,传入 Magazine 和 Ad 实例即可:

2016-08-02 16:01:27 2660

原创 Params详解(二)

1.正常命名为嵌套hashinputid="person_name"name="person[name]"type="text"value="Henry"/>得到的params为:{'person' => {'name' => 'Henry'}}2.[]代表数组input

2016-08-02 15:01:34 7489

原创 FileReader上传文件即使显示(但不负责持久化, 只是内存中的回显处理)

FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL。Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件。使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料;而缺点便是,网页的大小可能会变大。它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用。您的图像文件不

2016-08-02 10:14:20 1130

转载 HTML5的FileReader用法

要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的URL返回到前端,前端通过这个URL来显示图片。而HTML5的FileReader接口支持本地预览,FileReader接口主要是将文件读入内存,并提供相应的方法,来读取文件中的数据,当然就能显示本地图片不需上传了。目前高级浏览器实现了FileReader接口,所以像IE6这些老东西直接滚粗

2016-08-01 21:00:52 3259

原创 fileupload做ajax异步上传文件详解

fileupload是一个jquery下的ajax文件上传插件 下载下来的包东西很多,很多也是没必要的,这里只谈谈最小级别的应用 首先,依赖js: 复制代码缺一不可(如果已经引入jquery-ui包则jquery.ui.wiget.js不需要再次引入) 大部分资料其实官网上都能找到,说点官网没有的或者说的不够清楚的 附

2016-08-01 19:52:56 1082

转载 jquery插件FileUpload实现异步上传文件

jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。jQuery File Upload有多个文件选择,拖放上传控件拖放支持,进度条,验证和预览图像,音频和视频 。支持跨域,分块和可恢复的文件上传和客户端图像大小调整。适用于任何服务器端平台(PHP, Pyt

2016-08-01 17:59:27 3007

转载 time_ago_in_words()

time_ago_in_words(from_time, include_seconds_or_options = {})Link Like distance_of_time_in_words, but where to_time is fixed to Time.now.time_ago_in_words(3.minutes.from_now) # => 3 mi

2016-07-28 20:21:04 482

转载 健壮参数

加入健壮参数功能后,Action Controller 的参数禁止在 Avtive Model 中批量赋值,除非参数在白名单中。也就是说,你要明确选择那些属性可以批量更新,避免意外把不该暴露的属性暴露了。而且,还可以标记哪些参数是必须传入的,如果没有收到,会交由 raise/rescue 处理,返回“400 Bad Request”。class

2016-07-28 16:54:08 812

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除