使用Active Record

###ActiveRecord 作为rails中的ORM(object relation-db mapping)框架,ActiveRecord在初次出现之时带给了人们以无限的惊喜和热情,也使得很多不堪忍受其他语言中粗糙的ORM框架的开发者转而投入rials的怀抱。而有很多的其他语言也在不断尝试模仿ActiveRecord,比如著名的php框架codeigniter。 在rails的后期版本中,ActiveRecord可以作为一个独立的库来在rails之外使用,这对使用ruby进行其他数据库应用开发的用户来说非常方便。 ####在新的项目中使用ActiveRecord 如果在一个全新的rails应用程序中使用ActiveRecord,那么关于数据库方面的一切都可以托管给它,开发者在初期可能连一行代码都不需要编写就可以让程序“像模像样”的运行起来。 ####在已有的数据库上使用ActiveRecord 现实世界中,最可能遇到的问题是数据库已经存在了(毕竟,对于关系型数据库而言,修改schema的影响太大)。这时候,我们仍然可以使用ActiveRecord来方便的访问数据库,得到ruby对象,而跳过冗长且容易出错的数据库访问层。 ###一个例子 ####数据库结构 数据库中有一个访客表(visitor): +-----------------------+--------------+-----+ | Field | Type | Key | +-----------------------+--------------+-----+ | visitor_uid | varchar(32) | PRI | | visitor_login_id | varchar(128) | MUL | | visitor_password | varchar(32) | | | visitor_name | varchar(100) | | | created_timestamp | timestamp | | | password_expiration | timestamp | | | last_used_timestamp | timestamp | MUL | | visitor_alias | varchar(128) | MUL | | visitor_password_hash | binary(64) | | +-----------------------+--------------+-----+ 有一个访客浏览过的分组表(list_group):...

May 18, 2013 2 min

CSS中的Before和After伪元素

使用CSS的before和after伪元素实现三角箭头

May 16, 2013 1 min

JavaScript核心概念及实践 - 勘误表

###《JavaScript核心概念及实践》勘误表 JavaScript核心概念及实践一书已经于2013年5月出版,由于时间原因以及作者的疏于检查,导致书中出现了一些错别字词等错误,现在将错误及更正列于此页,作者为对读者朋友带来的不便表示深深的歉意。 第一章第12页 “则向控制台打印:goodbay” 应为 “则向控制台打印:goodbye” 第二章第19页 “var y = x + “2”;// => 32” 注释中的数字32应为字符串类型 “var y = x + “2”;// => “32”” 第三章第36页 “对函数customize(options)的调用 constomize” 应为 “customize”。 同一页,3.4小节 “反回给前端的仍然是 JSON 对象” 应为 “返回给前端的仍然是 JSON 对象” 这里有一个非常仔细,质量很高的勘误表,由网友 @RednaxelaFX 整理。 这个页面将维持更新,如果有新的错误被发现,我会第一时间更新书籍的电子版本,并在此页面上更新。

May 16, 2013 1 min

Ruby中的Proc

##block in ruby block在ruby中,相当于JavaScript中的匿名函数,可以用来实现诸如高阶函数等。高阶函数最好用的一个特点就是它很好的将“动作”(action)本身抽象成了一个对象来传递。 block本身不是对象,但是可以被转换成Proc类的实例,然后以一种特别的方式执行。 > proc = lambda {puts "hello, world"} => #<Proc:0x007ff11284d068@(irb):8 (lambda)> 或者 > proc = lambda do > puts "hello, world" > end 从irb打印的信息可以看出,<Proc:0x007ff11284d068@(irb):8 (lambda)>是一个Proc类的实例用lambda生成的block对象,看起来像一个ruby中定义的函数/方法一样,但是执行的时候需要特别的调用方式: > proc.call hello, world => nil 如果需要参数,可以这样指定: > proc = lambda {|a, b| a + b} => #<Proc:0x007ff114843d40@(irb):14 (lambda)> > proc.call(1,2) => 3 > proc.call("hello, ","world") => "hello, world" ##proc自身 ruby中大名鼎鼎的rack应用程序,本质上就只是负责调用一个block来获得结果: rack_proc = lambda {|env| [200, {}, ["<h1>Hello, world</h1>"]]} rack_proc.call({}) 也可以使用proc来创建一个Proc:...

May 12, 2013 1 min

重阳宫奇遇记

###重阳宫简介 重阳宫为道教三大祖庭之一,位于陕西户县祖庵镇,是全真祖师王重阳修道之地。重阳宫本由王重阳的弟子(全真七子,详见《射雕英雄传》)修建,始于金代,名为“灵虚观”,元初改名“重阳宫”。后山碑林存有众多用以记录全真教祖师及全真七子生平事迹的石碑,如《全真教祖碑》,《重阳祖师仙迹碑》,也有全真教其他掌教如孙德彧等的撰文碑。除了金元的碑以外,宫中还有明清时代的刻字,如《重阳子王真人全真教祖碑》碑阴的“天下祖庭”四字,为明朝正统二年所刻。 历史上由于年久失修,众多石碑层长散弃于露天,六、七十年代之后重修重阳宫,这些石碑被存入展厅,展厅有题名“重阳圣地”,其中大约有三十多通巨型金元石碑。 ###甘河镇遇仙 四月末的长安,已经很热。由于我去的这天是周末,而且是给五一调休的周末,因此宫中游人很少。除了我之外还有几个附近学校的学生,虽然殿外天气非常好,水绿山青,鸟语花香,但是在殿内,古朴的石碑传出的若隐若无的古老的气息,众多的由赑屃驮着的近一丈的大石碑使得展厅的气氛稍显压抑,所以很快整个展厅就剩下我一个人了。 虽然殿外阳光明媚,但是触摸着这些实实在在的文物,让人彷佛有些穿越千年,回到宋末元初的感觉,这种感觉让人有种莫名的阴森。而碑文中不时闪现的诸如王重阳,丘处机,尹志平等人的名字更是和金庸笔下的众多人物相交错,穿越的感觉愈发强烈。 我信步走到一通石碑前,顺口默诵,看着王重阳在甘河镇遇仙一段,还在心中暗笑其故意装神弄鬼,但是当我转身到碑阴面,读到“天之道,损有余而补不足,是故虚胜实,不足胜有余”之时,不由得心头大震,接着向下看到“心死则神活,阳盛而阴消”之时,更是惊骇莫名。这通碑上分明记着宋末元初的武学秘籍《九阴真经》(详见《射雕英雄传》)。 我正待取出纸笔将这些内容抄录,忽觉殿内似乎多出一人来,我心头一震,以我的功力,竟然有人走到我身周三丈之内而不自知。我转过头去,只见一个道士站在重阳祖师画像碑旁,呆呆的出神。只听那老道口中喃喃有声:此碑为四绝碑之首,无梦令碑有不及也。 我连忙走上前去,问道:“上仙,这厢有礼,刚才听到上仙谈及四绝碑,敢问何为四绝碑?”,道士略微沉吟,说道:“所谓四绝,乃重阳祖师画像碑,祖师亲笔《无梦令》碑,以及赵孟頫大小照碑,是也”。说罢,袖手而去,我略一迟疑,道士已仙踪不见。 我又走回遇仙碑后,将《九阴真经》默默铭记,出殿时已经是一个时辰之后了,刚到殿门口,忽见之前遇见的那位道士正在门口徘徊,似乎在找什么东西。我恭敬的询问,道士一脸疑惑,操着一口地道的关中腔说道:“我的手机咋莫见啦?我记得我拿出来了么,可放到办公室里了?”

April 28, 2013 1 min