- 博客(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
803
原创 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
1147
转载 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
498
转载 rails session cookie
Published on 2014-02-09为了理解session,我想像了一个场景:老年痴呆患者是没有记忆力的,我告诉他我的名字,并热情的和他打招呼。可第二次会话时,他早已忘记我的名字。HTTP 协议也是如此,没有状态的,多个请求之间毫无关联。Session的用途session 是一串 Hash,保存在浏览器的Cookie文件中。把 user id 放到 ses
2016-08-11 17:39:46
572
转载 我对 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
1303
转载 Ruby 迭代器
这周的一个业务场景:订单支付钱,需要检查用户订单中的商品状态。若包含下架商品,该订单不可被支付。除了 Each,我对 Ruby 的其他迭代器一概不知。一开始真不知道怎么写这段代码,难道判断所有的商品,将一堆 true 、false 塞到一个数组中,最后合并判断?# 这样写太丑了,简直有辱 Ruby 的名号。a = trueproducts.each do |product|
2016-08-11 17:30:40
448
转载 不要过分暴露变量
相信有不少人也和我一样,这样写 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
660
转载 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
1000
转载 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
524
转载 理解记忆:删除远程分支
删除远程分支,这是一个很简单的命令,我却经常记不住。为什么用 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
330
转载 总结 Web 应用中常用的各种 Cache
总结web应用中常用的各种cachecache是提高应用性能重要的一个环节,写篇文章总结一下用过的各种对于动态内容的cache。文章以Nginx,Rails,Mysql,Redis作为例子,换成其他web服务器,语言,数据库,缓存服务都是类似的。以下是3层的示意图,方便后续引用: +-------+1 | Nginx | +-+-+-+-+ | | | +---------------+ | +-
2016-08-11 14:54:55
1004
转载 Web 缓存及在 Rails 中的使用
最近给博客添加了缓存,感觉速度提升了不少,在这段时间里,看了一些关于缓存及 Rails 中使用缓存的资料,把自己学到的一些姿势总结一下。HTTP 缓存又可以称为客户端缓存。当用户第一次访问某个页面时,服务端按正常方式渲染页面,并在 Response Header 中添加 ETag 或 Last-Modified 或两者,当用户再次访问那个页面时,Request Header 中
2016-08-11 10:40:37
420
转载 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
437
转载 对象缓存和n+1问题分析
我们常见的OLTP类型的web应用,性能瓶颈往往是数据库查询,因为应用服务器层面可以水平扩展,但是数据库是单点的,很难水平扩展,当数据库服务器发生磁盘IO,往往无法有效提高性能,因此如何有效降低数据库查询频率,减轻数据库磁盘IO压力,是web应用性能问题的根源。对象缓存是所有缓存技术当中适用场景最广泛的,任何OLTP应用,即使实时性要求很高,你也可以使用对象缓存,而且好的ORM实现,对象缓
2016-08-10 14:10:00
1282
转载 基于资源的HTTP Cache的实现介绍
我们都知道浏览器会缓存访问过网站的网页,浏览器通过URL地址访问一个网页,显示网页内容的同时会在电脑上面缓存网页内容。如果网页没有更新的话,浏览器再次访问这个URL地址的时候,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。什么是HTTP Cache 对于浏览器的这种网页缓存机制大家已经耳熟能详了,举个例子来说,JavaEye的新闻订阅地址:
2016-08-10 13:54:15
949
转载 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
815
转载 Devise 加上 simple_captcha2做验证码验证
现在网络上各种扫描器和网络爬虫越来越泛滥,如何让你的网站变得更强壮,以抵御这些不速之客呢?验证码作为一个简单而又有效的解决方案,很好的将机器人和人类区分开来。呃~~, 当然,未来可能就不一定了。目前主流的验证码形式有这么几种:问答题照片验证码图片验证码第一种比较简单直接,它主要的问题是需要存储大量的数据,理论上题库越大越难以破解。这里有一个实现: humanizer
2016-08-09 20:37:07
1600
转载 ruby代码检查器rubocop
什么是RuboCopRubocop 是基于 ruby-style-guide / Ruby 风格指导 实现的一个静态代码分析工具。使用rubocop有助于个人/团队写出风格统一的代码如何安装$ gem install rubocop或使用bundle安装gem 'rubocop', require: false如何使用$
2016-08-09 18:33:34
2121
转载 如何在rails中自动隐藏flash message消息
很简单,在assets/javascript加入以下 coffee script 代码$ -> flashCallback = -> $(".alert").fadeOut() $(".alert").bind 'click', (ev) => $(".alert").fadeOut() setTimeout flas
2016-08-09 18:25:13
407
转载 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
3896
转载 完美解决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
2869
转载 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
487
转载 多级module避免使用双冒号
在多层模块中定义类或者模块一般有两种做法:1234567module A module B class C ... end endend和12345module A::B class C ... endend
2016-08-09 17:17:09
590
转载 自定义ruby异常时需要注意的一个问题
有时我们会有这样的场景,对于依次调用的函数 A 、B、 C,存在这样的职责:123A [处理指定异常类] -----> B[转换异常类] -----> C[抛出原始异常]有人会写出这样的代码:12345678910111213141
2016-08-09 17:14:41
889
原创 git grep 命令搜索关键词
git grep -n order ./app/models在项目app/models文件下搜索order关键词 -n是标明行数
2016-08-09 16:21:41
6270
转载 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
957
转载 资源加锁
在 Rails 当中,经常需要将某些任务作为定时任务执行,而对于系统的定时任务而言,到点就启动一个进程来处理,相互之间是独立的,这就有可能导致某一些进程同时操作某个资源,有可能导致发生出现竟态,而导致一些问题。通常的一个思路是通过一些外部的标志来达到加锁的作用,比如说文件。来看一段代码:lock do # handle the limited resourceend
2016-08-06 17:05:22
440
转载 不要在 Rake 中直接 Return
病灶假设你有一个 Rake Task,需要记录一些用户信息,并且为了防止重复记录,你加了一段保护代码:Task :record_information do return if already_check? record_informationend看上去挺不错,但是一运行。Booom!!! 报错了 LocalJumpError: unexpected re
2016-08-06 17:00:36
319
转载 jquery自动补全
最近一段时间在忙着找工作,很久没有更新了,之前做了一个自动补全的功能,花费了我很多时间,因为涉及到很多前端开发相关的知识,包括DOM, js, coffeescript, jquery等等,现在打算详细的描述一下了。很多网站都有用户名或者输入内容自动补全的功能,我实现的是比较简单的一种,即评论区用户名自动补全,在 @ 其他评论人的时候,文本框会自动筛选出所有评论着的名字。很显然,该功能主要依靠
2016-08-06 12:15:49
994
转载 ActiveRecord中实现软删除
软删除即不真正删除数据库中的数据,数据是可以恢复的,只是对用户来讲是不可见的。软删除在实际应用中很广泛,除了一般的论坛应用,在微博和微信之类的应用中也随处可见。为什么要有软删除而不是直接删除呢?个人认为主要有两个方面的原因:一是数据本身就是有价值或有潜在价值的东西,二是和数据本身关联的其他数据有很多,比如文章的评论,如果直接删除了文章,那么评论也会随之被删除,某些用户可能并不希望这样。因此,软删除
2016-08-06 11:57:07
2191
转载 helper_method方法
什么是 helper_method? 如果将方法设置为 helper_method,那就意味着该方法既可以在 controller 中使用,也可以在 view 中使用,这样会 大大提高编码效率,减少视图层的重复代码,使代码更加清晰。class ApplicationController ActionController::Base ... helper_method :a
2016-08-03 15:05:08
1459
原创 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
1076
转载 link_to指向路由路径拼接详解
除了使用路由帮助方法之外,Rails 还能从参数数组中创建路径和 URL。例如,假设有如下路由:resources:magazinesdo resources:adsend使用 magazine_ad_path 时,可以不传入数字 ID,传入 Magazine 和 Ad 实例即可:
2016-08-02 16:01:27
2773
原创 Params详解(二)
1.正常命名为嵌套hashinputid="person_name"name="person[name]"type="text"value="Henry"/>得到的params为:{'person' => {'name' => 'Henry'}}2.[]代表数组input
2016-08-02 15:01:34
7646
原创 FileReader上传文件即使显示(但不负责持久化, 只是内存中的回显处理)
FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL。Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件。使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料;而缺点便是,网页的大小可能会变大。它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用。您的图像文件不
2016-08-02 10:14:20
1196
转载 HTML5的FileReader用法
要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的URL返回到前端,前端通过这个URL来显示图片。而HTML5的FileReader接口支持本地预览,FileReader接口主要是将文件读入内存,并提供相应的方法,来读取文件中的数据,当然就能显示本地图片不需上传了。目前高级浏览器实现了FileReader接口,所以像IE6这些老东西直接滚粗
2016-08-01 21:00:52
3294
原创 fileupload做ajax异步上传文件详解
fileupload是一个jquery下的ajax文件上传插件 下载下来的包东西很多,很多也是没必要的,这里只谈谈最小级别的应用 首先,依赖js: 复制代码缺一不可(如果已经引入jquery-ui包则jquery.ui.wiget.js不需要再次引入) 大部分资料其实官网上都能找到,说点官网没有的或者说的不够清楚的 附
2016-08-01 19:52:56
1124
转载 jquery插件FileUpload实现异步上传文件
jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。jQuery File Upload有多个文件选择,拖放上传控件拖放支持,进度条,验证和预览图像,音频和视频 。支持跨域,分块和可恢复的文件上传和客户端图像大小调整。适用于任何服务器端平台(PHP, Pyt
2016-08-01 17:59:27
3059
转载 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
528
转载 健壮参数
加入健壮参数功能后,Action Controller 的参数禁止在 Avtive Model 中批量赋值,除非参数在白名单中。也就是说,你要明确选择那些属性可以批量更新,避免意外把不该暴露的属性暴露了。而且,还可以标记哪些参数是必须传入的,如果没有收到,会交由 raise/rescue 处理,返回“400 Bad Request”。class
2016-07-28 16:54:08
863
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人