about

I’m glad you found me. My name is xing zhou and I am a developer

blog

Linux crontab 命令格式与详细例子

       上次我们分享了如何通过 whenever 创建 rails 的定时任务,这次我们一起来详细看一下 linux crontab 的命令格式。基本格式 :*  *  *  *  *  command(分 时 日 月 周 命令)      第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令crontab文件的一些例子:30 21...

定时任务whenever

今天给大家分享一个 gem: whenever,whenever 让开发者简便的创建、部署定时任务。安装:$ gem install whenever
 或者在 Gemfile 里添加gem 'whenever', :require => false
 然后在项目中执行:wheneverize .
 就在 config 目录下生成一个 schedule.rb 文件。whenever 有三种任务类型:command、runner 和 rake...

ruby执行系统命令

       众所周知 ruby 是一门脚本语言,我们可以用它很方便的写一些系统脚本,比如最近网上沸沸扬扬的黑客曝光好莱坞明星图片(你懂的),在别人还在各种求种子的时候,我们可以写了一个抓取脚本先分析出图片的地址然后全部 wget 下来,今天给大家分享如何在 ruby 脚本中执行系统命令。1. 最简单常用的,使用 ` 符号, ` 符号就一般在键盘的左上角 ESC 键的下方,把需要执行的命令放在 ` 中间即可,`把字符串当做外部程序命令来运行,并以字符串形式返回命令的输出...

ruby的Timeout

       在现实工作中,我们经常会遇到一些问题,比如说发送一个 http 请求半天得不到响应,或者抓取一个页面迟迟得不到结果,程序可能会因为这种“超时”情况一直卡住,ruby 提供了一个 Timeout 模块,可以很好的帮我们处理这种问题。要使用 Timeout 模块,我们需要手动 require进来,然后可以直接使用 timeout 方法,请看下面的例子:#!/usr/bin/ruby
 require 'timeout'
 
 begin...

耗时统计——benchmark

       在做一些功能时,我们经常要考虑到性能,其中一个非常重要的指标就是耗时,页面刷新半天打不开,或者执行一段代码用了很长时间,但是不确定卡在了那里,之前我会自作聪明,在 console 里这样做:def a
 start_time = Time.now
 # 执行那段代码
 puts Time.now - start_time
 end
        嗯,自以为好像很牛X的样子,但是实际上却是:弱爆了!因为 ...

to_param修改show页面URL

       一般来说,show路由生成的 url 都是 /XX/:id 类型,但是这种 URL 看起来很不“见名知意”,以 ID 作为标识符也会让用户迷惑,大家看一下我的博客文章的 show 页面 url,已经改成了 blogs/url_name,这是怎么做到的呢?要达到这种需求可以有多种方法,这里只介绍一种最简便的:to_paramRails 的 Action Pack 针对对象使用 to_param 来构造页面 URL,我们看这个方法默认会返回什么irb(main...

详解ruby中的异常处理

       ruby 有一套完整的异常处理机制,使用关键词 begin、rescue、ensure、raise,再配合 retry、else等,即可实现你想达到的一切目标,而且十分简单,现在我们就来看一下如何使用他们。begin:我们把可能产生异常的代码放到 BEGIN 块中rescue:捕获 BEGIN 中执行的代码可能抛出的异常,默认参数为 StandardError。ensure:无论是否捕获到异常,ENSURE 块里的代码都会被执行raise:抛出一个指定的异...

乐观锁

       在更新数据库记录的时候,“锁”有时特别重要,当两个人同时更新一条记录的时候,后一个人的更新会把前一个人的更新覆盖掉,而后一个人却对此毫不知情。假设 people 表里有这样一条记录:(name:星哥, sex: male, position: developer),两个人都点击了“编辑”按钮进入了编辑界面,第一个人把这条记录的 name 字段改成了“星弟”,并点击了提交,此时这条记录是:(name:星弟, sex: male, position: deve...

eager_load详解

       前面我们学习了解决 1+N 问题的三种方法,includes、preload、eager_load,本次分享我们来详细的学习者三种方法的机制,这里面会涉及一些数据库知识,通过本次分享,我相信大家会学到很多之前不熟悉的知识。我们的示例都是围绕着这两个 model 展开的:class User < ActiveRecord::Base
 has_many :addresses
 end
 
 class Address...

1 + N 查询

    上次分享了 rails 中的基本查询,这次我们来看一个在 rails 中非常常见的问题:1+N 查询,什么是1+N查询,我们来看这样一个例子:# app/model/boy.rb
 class Boy < ActiveRecord::Base
 attr_accessible :age, :height, :hobby, :name, :weight
 has_one :address
 end
 
...

contact

want to talk something or join Thoughtworks, send email to Edward_mjz@hotmail.com