Rails宝典之第三十七式: simple search form
看一个简单的search表单 <!-- projects/index.rhtml --> <% form_tag projects_path, :method => 'get' do %> <p> <% text_field_tag :search, parmas[:search] %> <% submit_tag "Searc ...
Rails宝典之第三十六计: Subversion on Rails
作者教我们怎样将Rails项目导入到Subversion mkdir svn_setup cd svn_setup/ rails blab cd blab mv config/database.yml config/databse_example.yml rm -r log/* rm -r tmp/* 我们不想将log、tmp目录里的文件都提交到svn,因为这些目录里的文件不是源代码 cd ...
Rails宝典之第三十五式: 自定义REST动作
REST将我们的controller限制到7个actions(index/show/new/create/edit/update/desctroy) 这次我们就来看看怎样添加自定义的actions class TasksController < ApplicationController def idnex... def show... def new... def create... de ...
Rails宝典之第三十四式: Named Routes
这次的视频讲述的是命名路由,有点火星了: # routes.rb map.resources :projects map.task_archive 'tasks/:year/:month', :controller => 'tasks', :action => 'archive' map.home '', :controller => 'projects', :action =& ...
Rails宝典之第三十三式: make a plugin
续上式。 我们可以将Task类里的due_at_string这个虚拟属性的生成做成一个plugin: ruby script/generate plugin stringify_time 这将在vendor/plugins目录生成如下文件: vendor plugins stringify_time ---init.rb ---install.rb lib ----stringify_tim ...
Rails宝典之第三十二式: text_field time
一般编辑时间时我们使用datetime_select: <%= f.datetime_select :due_at %> 如果我们希望用text_field来编辑时间,可以这样做: <% f.text_field :due_at_string %> 修改Task类: class Task < ActiveRecord::Base def due_at_stri ...
Rails宝典之第三十一式: format time
我们经常要用到时间的格式化,我们可以使用ri来看看reference doc. ri Time.strftime 结果显示如下: ------------------------------------------------------- Time#strftime time.strftime( string ) => string -------------------------- ...
Rails宝典之第三十式: pretty title
这次来看看怎样为每个页面创建良好的title 为了让每个页面显示不同的title,我们需要在global layout -- application中留出位置: <html> <head> <title>Shoppery - <%= yield(:title) || "The Place to Buy Stuff" %>< ...
Rails宝典之第二十九式: group_by
这次来看active_support/core_ext/enumerable.rb里的group_by: # latest_transcripts.group_by(&:day).each do |day, transcripts| # p "#{day} -> #{transcripts.map(&:class) * ', '}" # end # &qu ...
Rails宝典之第二十八式: in_groups_of
这次讲的是active_support/core_ext/array/grouping.rb里的in_groups_of方法 # %w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g} # ["1", "2", "3"] # ["4", "5", "6&qu ...
Rails宝典之第二十七式: CSS(Cross Site Scripting)
这次你将看到escape用户输入的任何HTML是多么重要 假设博客上有一个comment表单,我们输入如下内容: Testing <script>alert('test')</script> 提交我们的comment,如果浏览器弹出alert框,说明该博客没有对用户输入的comment进行escape Hacker可以利用这个弱点来做CSS攻击: Got your ...
Rails宝典之第二十六式: 防止Hacker入侵
假设我们的users表如下: create_table "users", :force => true do |t| t.column "name", :string t.column "admin", :boolean, :default => false, :null => false end 看看我们都创建用户的 ...
Rails宝典之第二十五式: Sql injection
Sql injection是老问题,对如下查询: def index @tasks = Task.find(:all, :conditions => "name LIKE '%#{params[:query]}%'") end 当用户输入的query条件加上单引号时很容易通过sql injection来攻击我们的Rails程序 而我们使用如下查询方式就可以避免sql注入 ...
Rails宝典之第二十四式: Stack Trace
这次讲的是一个textmate plugin textmate_footnotes,用来当Rails程序页面出错时可以点击Stack Trace链接去到 Rails程序源码甚至Rails源码中。 No use for no Mac guys. -_-!
Rails宝典之第二十三式: counter cache
请看Rails里的Magic Column Names 这次就是讲用_count字段来缓存has_many的计数 看Project和Task的例子: <h1>Projects</h1> <table> <% for project in @projects %> <tr> <td><%= link_to projec ...
Rails宝典之第二十二式: eager loading
看这个页面代码: <% for task in @tasks %> <%= link_to task.name, task_path(task) %> in <%= task.project.name %> <% end %> 上面的代码对每个task对象,取得project的name属性并显示,看看log: Project Lood (0.00 ...
Rails宝典之第二十一式: 超级简单的认证
续上一节。 我们知道Acts as Authenticated、restful_authentication等许多插件,我们这里为了开发方便也可以简单实现admin?方法: def admin? @current_user.name == "admin" end # or def admin? session[:password] == "foobar" ...
Rails宝典之第二十式: 限制访问
续上一节。 我们在页面中加上如下代码来限制public访问: <!-- episodes/index.rhtml --> <% if admin? %> <%= link_to 'New Episode', new_episode_path %> <% end %> 显然,只有admin才能新建Episode 我们来实现admin?方法 adm ...
正则表达式学习
正则表达式是个好东西,就是有些复杂.在验证输入,字符串查找,处理上确实很方便. 30分钟教程http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm D可使用的表达式:http://www.digitalmars.com/ctg/regular.html 常用的元字符 . 匹配除换行符以外的任意字符 \w 匹配字 ...
正则表达式入门
元字符: /b 代表着单词的开头或结尾,也就是单词的分界处.如果要精确地查找hi这个单词的话,我们应该使用/bhi/b. .是另一个元字符,匹配除了换行符以外的任意字符,*同样是元字符,它指定*前边的内容可以重复任意次以使整个表达式得到匹配。 .*连在一起就意味着任意数量的不包含换行的字符。 /d是一个新的元字符,匹配任意的数字,0/d/d-/d/d/d/d/d/d/d/d也就是中国的电话号码.为 ...
经典正则表达式(希望给自己和大家带来便利,方便查找)
经典正则表达式(希望给自己和大家带来便利,方便查找) 摘要:收集一些常用的正则表达式。 引自:http://blog.holybbs.com/article.asp?id=284 另外一篇参考文档(介绍的很系统,推荐阅读):http://oo8h.51.net/docs/regular_expression.htm 正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往 ...
常用的正则表达式
/^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一个连字符以及一个5位数字组成。 /<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一个 HTML 标记。 ...
[正则表达式]-----贪婪模式与非贪婪模式
js 代码 /** ** author: site120 ** function : get script part from html document **/ var loadJs = function(str , delayTime) { var delayTime = delayTime || 100; var regExp_scriptTag = ne ...
[正则表达式]-----正向预搜索与反向预搜索
xml 代码 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping- ...
JS正则表达式详解[收藏]
JS的正则表达式 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 function isRegisterUserName(s) { var pa ...
正则表达式
在看书时整理的笔记。希望大家补充,成为一个好关于正则表达式的帖子 正则表达式是类型Regexp的对象。它们可以用显式的构造函数建立或者直接用 /pattern/ 和 %r/pattern/这种格式的字符常量构造。之后可以用通过使用 Regexp#match(aString) 或者用匹配操作符 =~(确定匹配)和 !~(否定匹配)与字符串进行比较。 $&接受模式匹配成功的那部分字符。 $`( ...
站在巨人肩上的思考[连载] (8)
5.2 数组 5.2.2 字符串文字量 类似”this is a string.”这样一个字符串文字量,它是一个常量。正如代码中一个显式的数字0xff08一样,其值不可以被更改。如想修改,可以通过复制给一个变量来实现: int a = 0xff08; a = 0xff18; 对于字符串文字量则有一点要注意: char* cp = “this is a st ...
站在巨人肩上的思考[连载] (7)
4.8 枚举 枚举是表示具有共同属性的整型常量集合的用户自定义类型。这其中包含这些含义: 1. 枚举的取值只能是整数,正负皆可; 2. 枚举的取值是常量,枚举初始化后,这些值不能被改变; 3. 枚举也是一种用户自定义类型,用户定义好枚举后,可以自定义该枚举类型自身的操作,如“++”,“<<”等; 枚举类型的取值隐含着这样的“潜规则”: l 如果枚举中所有枚举值均非负,那么该枚举表示 ...
错误处理(Error-Handling):为何、何时、如何
错误处理(Error-Handling):为何、何时、如何 By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) TopLanguage(http://groups.google.com/group/pongba) 引言 错误处理(Error-Handling)这个重要议题从1997年(也许更早)到2004年左右一直是一个被广泛争论的话题,曾在新 ...
spcached : memcached 的多线程实现
实现 spcached 的目的:不是与 memcached 进行竞争,只是为了测试。 最初想到要实现 spcached 的时候,是因为想对 spserver 这个框架做一个压力测试。当时想用作个简单的 http 服务器,然后用 apache 的 ab 工具进行测试。后来觉得如果做测试,最好能有一个对比,因此就想起了 memcached 来。并且刚好 memcached 和 spserver 都是基 ...