Ruby 语言 思想驱动生活

Ruby,Rails,编程是一种乐趣。

涨声一片

  昨天早上新闻说4/1号开始很多吃的要涨价了,果然中午出去到一个经常去的中华料理吃饭,到了那里发现竟然中午定食也涨了50块钱。原来800,涨了6.25%。原因之一是小麦涨价。我说原来百元店的小麦1kg,最近没有了,只有700g的小麦了。原来是涨价了。
  去网上查了下,发现牛奶也涨了,为1978年以来首次涨价,日本物价还真是稳定。而且,5月后小麦制品,方便面,面包等还可能再涨价。肯德基的商品也都涨了20左右,为92年4月以来首次。纸,电,gas,还都在或者已经涨了,貌似什么都在涨,当然,还有自己的年龄。涨吧,反正我只吃中国产的食品,穿中国产的衣服,都不贵。
  至于涨的原因,大概有3点:
  1.世界各地减产(自然或者认为原因)
  2.发展中国家需求增大
  3.生物燃料的需求
  尤其是第3点,据说墨西哥人很恨美国人,因为他们把玉米都拿去生产原料了。
据说汽油要降价了,可惜我不烧汽油。

LuRuJu 将jude的模型当成Rails的model类使用

LuRuJu是Lube between Ruby and JUDE的缩写,它的目的就是无缝链接ror程序和jude的模型
特点包括:
1.配置简单,只需要把jude文件放到RAILS_ROOT/app/model下即可。Jude模型会作为mvc的m来被使用。目前实现了类之间的1对1,1对n关联。也支持类之间的继承关系。
2.不需要再维护migrate文件,只需运行
lor:db:create就可以了。表的定义使用jude文件中的定义。
3.可以往model里追加Ruby代码来扩种业务逻辑等
4.和config.cache_classes联动,不需要重启rails就可以修改jude文件并使之有效。
5.即可以用jruby,也可以用cruby
这个软件的作者是野村周平,文档 多是日文,不过看代码应该能看的差不多。
主页是 http://luruju.com/

南沙坡 黄埔庄

6年没去过了,现在应该变样了吧。路的名字和店的名字都忘了,现在只记得位置和方向而已。
南沙坡位于交大东边,交大家属院南边,黄埔庄离西安理工大学不远,就在它的马路对过。除了南沙坡,还有北沙坡,黄埔庄等。这些地方都可以号称城中村,里面破乱程度可见一斑。黄埔庄这3个字就庄字有把握,其它不记得了。隐隐记得可能从交大过来进庄的地方有个柱子,写的可能是皇帝的皇。离兴庆公园那么近,有个皇字不算什么了。可能黄埔这两个字比如容易输入吧,导致网上的名字都成了黄埔庄了。在庄门口北边高台上,也就是交大电脑城对面有一个眼镜店,上学时在那里花130多配的眼镜,虽然踢球撞坏过几次,不过到现在还在用着。
南沙坡里很多筒子楼,都是出租给大学生的。我也曾经在一个4层楼的楼顶小屋住过1个月,不是第4层,是楼顶,能上去,房东又盖了个小房子。每天大早上有人去晒衣服,足够把我吵醒。在太阳的照射下,到处都能隐隐闻到尿的味道。也难怪,公共厕所要走3分钟左右,在一个稍有人气的卖随身听的店的旁边。半夜里经常被哗哗的撒尿声惊醒,不知道男的女的。
这些地方吃的都很便宜,有一次跟同学吃麻辣烫,锅底免费,酒水自带,荤素2毛,一共吃了7块钱,现在想想,简直是神仙过的日子一样。理工大南面进了路口是九龙,挺有名了,在同学中。各种聚会等都是来这里的。菜很好吃,毕竟上大学之前我属于几乎没有去饭店吃过的人。九龙对面是贾六灌汤包,久闻其名,未尝其味,有点遗憾。不过是有一定原因的,就是不远处有一个3块钱1笼的灌汤包我觉得是我这么多年来吃的最好吃的包子了。可惜在毕业之前就被拆了。如果能找到当时的师傅,我一定会为他投资开个店。这个店的原来位置在交大商场南面一点,路东。
其它的,比如牛肉面,凉皮,包子,肉夹馍,羊肉泡馍,盖浇饭,以及其它各种各样的面也都是好吃不贵,数不胜数。说了半天,还是想去再去一次而已。

用Ruby抓取网页通过ActiveRecord存到数据库

用Ruby抓取网页通过ActiveRecord存到数据库
工作内容:抓取指定网页的规则的连接地址的内容,并取得其网页中指定部分的内容存到数据库。
技术点1:抓取并分析网页
采用hpricot,其主页可见(http://code.whytheluckystiff.net/hpricot/)。Hpricot is a very flexible HTML parser。
doc = Hpricot(open(url))
这个就是去的url的内容,返回一个doc,这个是Element类的实例对象。也可以认为是一个DOM。
可以对这个对象进行查找,修改等操作,具体见hpricot主页的文档。
技术点2:编码转换
网页可能为gbk编码,也可能为gb2312编码。
数据库为mysql,UTF-8编码,以防万一,在建立数据库连接之后,执行下列语句:
ActiveRecord::Base.connection.execute ‘SET NAMES UTF8′
把mysql客户端的编码也设为UTF8,以防出现乱码。
然后用Iconv转换抓取的数据:
ar_object.some_text = Iconv.new(”UTF-8//IGNORE”,”gb2312″).iconv(gb2312_data )
这个就是把gb2312的数据转换为utf-8了。
另外,不知道不进行上面转换,而直接实用gb2312编码的数据,在建立数据库客户端连接之后,执行
ActiveRecord::Base.connection.execute ‘SET NAMES GB2312′
是不是也可以呢,没试过。

上帝保佑

心里有某种欲望的时候,总是想说
其实我不知道耶稣是谁,也没读过圣经什么的。
总之希望,3月是个好季节,很高兴说,再见,3月。
阿门。

RubyKaigi2008要到茨城去

从秋叶原过去单程要1000多块的车费。
贵,没钱!

drupal,很好,很强大

优点:
界面很简单,管理界面几乎都是纯文字,没有图片。
任何东西都能当作主页的menu放进去,比如建立一个page,一个blog,甚至一个论坛主题,都可以放到主页作为一个menu。而且都可以指定一个/aboutus这样的url。
Menu的可定制,包括是否显示和显示位置
用户管理很强,可以自定义role,定义role对各个功能的权限。
功能很强大,支持blog,story,page,poll,forum等,对一个简单的团体来说是够了。
扩展性强,很多module可供选择。
Theme支持。
多语言支持,几乎所有语言都提供了语言包。
UTF8,怎么都不乱码。
缺点:
对多媒体文件支持不太好,不能直接显示或播放。
module太多,挑花了眼。想在内容里直接显示图片,或者媒体播放界面,一搜n多module,不知选哪个好。
Rich编辑器没有,也要module。据说很多人最后都平板编辑了,直接用html。

今天是个值得纪念的日子

1976年1月8日周恩来在北京病逝终年78岁
个人来说,终于买了第一支股票,工商银行。
毫无任何分析,只是想遍地都是工行的门面,想来不错。买的不多,只有100股,都不好意思跟人说了。

终于考完日语了。

考前一个月突然就一点都不想复习了,现在想想太浪费了。
考前最担心的就是考试时候闹钟会不会想,越想越觉得会响。当然不会那么随便响了,把闹钟时间调到6点了。
词汇就不说了,就是去蒙的,好多汉字中日的意思完全不同,好多选项都是模棱两可的。
听力一般,估计能60分以上。
语法没有敬语的题,这个是很让人高兴的事情,不过自认为最有把握的语法还是错了几个。
晚上回去发现网上已经有人放答案了,当然是自己做的,对答案的人很多。
而且图片版的试题已经可以下载了,太佩服中国人了。
跟别人的答案对了下,应该能及格,就是不知道能得多少分。不管怎样,明年接着考,直到考到360以上。

acts_as_taggable

这个世界到处都是tag
而且这个世界上好像有两个acts_as_taggable,一个是dhh的plugin版的,一个是gem版的。
比较了半天,发现还是gem版的比较好(http://rubyforge.org/projects/taggable/)。
具体来说
1.gem对于不同的要tag的对象,可以用TagsTable1s格式的表来存tag和对象的关系,比如photo的tag用photos_tags表。
plugin版的则只用一个表taggings,用taggable_type这个字段来表示tag的对象类型。
2.可以为tag关系增加属性。
plugin版的tag关系表只有3个字段(不包括id),要想给这个tag关系加其它属性则比较困难。
gem则容易多了。
gem的tag和被tag对象之间的连接表除了tagid和被tag对象id,还可以有别的属性。
在给对象加tag的时候,可以顺便更新这些属性:
# We can do some interesting things with it now
  person = Person.new
  person.tag "wine beer alcohol", :attributes => { :created_by_id => 1 }
  Person.find_tagged_with(:any => ‘wine’, :condition => "tags_people.created_by_id = 1 AND tags_people.position = 1")
3.统计功能
tags_count可以统计每个tag被用了多少次
# Gets the top 10 tags for all photos
  Photo.tags_count :limit => 10 # => { ‘beer’ => 68, ‘wine’ => 37, […]

« Previous Entries  Next Entries »

Locations of visitors to this page


Recent Comments