./ruby-enterprise-X.X.X/installer -c --enable-shared
mysql,Linux,HighPerformance,ruby on Rails
2009年12月30日星期三
最适合rails部署的Linux Distro
CentOS, Debian 5, Fedora (10 to 12), Gentoo, Red Hat EL 5, and Ubuntu (8 and 9) ?
回话中有人提到,最好的方式是先择你最熟悉及常用的版本,这样一是心里有底,二是可以更
快速部署。人其实是开发及维护中最大的变数,所以如果能让"人"更舒服的管理,当然系统也
会更健壮的运营。
Linux最重要的是kernal,所以对于我们来说,关注kernal版本比版本更为重要。
以我在国内使用的系统经验来看,
Red Hat EL 4或5使用比较广泛。也是大家最最常用的版本,CentOS也是开源的Red Hat系列版本
所以现在因为Red Hat不提供企业版的非注册用户升级服务,所以大家首选CentOS作为可选择的版本。
CentOS中的升级管理工具是Yum(Yellow Dog Updater Modified),是一个在Fedora中的字符前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
Fedora就不用说了,用的升级包管理工具也是Yum.
因为名字不一样,很多人都认为RedHat EL或者是CentOS是企业版的套件,肯定比fedora强!强在哪里呢?不清楚?肯定是一个系统参数的优化?不见得吧,这需要依据你的配置后的环境。
这里的回答即简单又实在:基本一样的。但是fedora软件都太新了,不稳定。可以使用centos,那个是和redhat 一样的。摘录于这里
Ubuntu的区别在哪里呢?我想还是升级包管理工具,因为源自Debian,所以使用APT((高级软件包工具,Advanced Package Tool)来管理,不了解是吧,看这里的HowTo
所以说到这里,你肯定会说那不如使用Debian吧。也可以的。国外使用Debian很流行的。
Gentoo,Linux发烧友的玩具。在本地编译可定制。gentoo的包管理工具称为portage,说细看这里介绍。
最后,我认为拿个顺手的就一直用着吧。我原来前几年都使用RedHat EL,现在想着就用Ubuntu系列的,个人喜好,仅供参考。
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年12月29日星期二
Rails Tips-rails log查询
这回看一文章使用less -R,直接可以在控制台里查询,使用?和/进行后向查询和前向查询,这样想定位字符就可以定位。之前在同事的blog中看过,一般没有感觉。
这回自个试用后,很是懊悔,怎么不去使用呢.
less -R让log以颜色命令行方式显示。
按下Shift-f模拟tail -f模式
按下Shift-g
/+想查询的字符,定位光标前向字符
?+想查询的字符, 定位光标后向字符
功能就这么多,已经满足需求。
以上叙述基于macos平台及Linux平台,学习及使用rails,建议尽快进入Linux平台。如果实在有困难,请到chinaunx.net去泡坛几天。
Over
--
tommy xiao
E-mail: xiaods(AT)gmail.com
Windows下使用rails遇到的问题收集-episode#1
varchar(255) NOT NULL) ENGINE=InnoDB
原因是ruby gem中 Mysql Client Library(libmySQL.dll)高版本不支持.下载一个放到\bin\下就直接能用.地址: http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll .
2.window下最好的rails editor是什么,是VIM.
Vim configuration需要配,有详细说明是最理想的,这里
rails.vim的常用指令:
:Rails {目录}
在指定的目录建立一个新的Rails应用程式。如 :Rails d:\depot
:Rake {指令}
直接呼叫Rake进行指定的动作。如 :Rake db:migrate
:Rgen {指令}
呼叫script/generate。如 :Rgen controller admin
:Rserver
呼叫script/server。
:Rproject
在画面的左端以树状结构显示Rails程式目录
:Rpreview {名称}
打开浏览器检视指定的位址。例如输入:Rpreview store 就会打开http://127.0.0.0:3000/store/
:Redit {名称}
直接打开指定的档名。 (注:有些档案不能用这种方式开启。)
:Rcontroller {名称}
:Rmodel {名称}
:Rview {名称}
:Rlayout {名称}
打开指定的controller / model / view / layout
接下来有几个指令一定要特别提出来讲。这是rails.vim最强大的部份:
1. gf
gf这个指令根据游标所在的位置不同会有不同的效果,直接看例子(*代表游标的位置)
游标的位置 打开的档案
Pos*t.find(:first) app/models/post.rb
has_many :c*omments app/models/comment.rb
:bl*og app/controllers/blog_controller.rb" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">link_to “Home”, :controller => :bl*og app/controllers/blog_controller.rb
'sh*ared/sidebar' app/views/shared/_sidebar.rhtml" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">= render :partial => 'sh*ared/sidebar' app/views/shared/_sidebar.rhtml
%= stylesheet_link_tag :scaf*fold public/stylesheets/scaffold.css
甚至,假设我们有个admin_controller 中有一段程式码:
def s*ay
…
end
输入gf就会马上切换到say对应的view (app/views/admin/say.rhtml)
2. :R跟:A
这两个指令也是在不同的档案间切换用的,运作方式如下:
目前的档案 输入:A会切换到 输入:R会切换到
model 对应的unit test 对应的migration
controller (in method) 对应的functional test 对应的template (view)
template (view) 对应的helper 对应的controller中method的位置
migration 前一版的migration 下一版的next migration
最后发现国人制作的vimmate,更加方便,快速部署.
2009年12月15日星期二
Mysql配置中的几个参考,阅读笔记
原文地址:http://jeremy.zawodny.com/blog/archives/011421.html
笔者在配置mysql中积累了一些参数设置经验,分享:
1. max_connect_errors: 最大链接错误数,最少设置一下,配置一个大点的:max_connect_errors=1844674407370954751,注意这个值是64位机器的,详细的还是要看Mysql手册,
2.connect_timeout: 和上面的参数还有关系,默认是5秒,但在互联网的高负载的环境中,还是需要配置的长点,20?需要自个根据情况调优一下.你可能会问怎么调.这里有一个关键问题就是你有没有图形化的监控呢?如果没有的话,可能调起来就不那么顺手了...点到为止.
3.skip-name-resolve: 默认Mysql走DNS解析你的帐号中的域名,还是走IP中.笔者推荐
skip-name-resolve
加到/etc/my.cnf
.好像国内很多用户都会这么做了.好事.4.slave_net_timeout: 主从的参数,默认为1小时,注意一下,笔记建议配置到30秒,哪里出了问题,可以快速反应是吧.
Over.感谢作者,所有心得为原作者所有,我仅是翻译及记录一下.
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年12月9日星期三
rails入门时几点窍门,绝对的集百家之长
- 在踏入rails学习第一步时,总会想当然,想找最好的入门手册。但在哪里呢?有没有标准啊。心中没底啊。还好,在rails世界里,确实存在这样的东西,在这里:http://guides.rubyonrails.org/
- 想找最好的代码作参考,好对照着写出最牛的代码,哪里有呢?还真有:www.github.com。
- ruby要不要学好,说真的,一门语言有好的地方也有坏的地方,所以你不必完全掌握所有的技巧,把需要掌握的掌握即可。
- HTML/Javascript/CSS可能是web开发中最能玩出花的地方,好好用心学吧。作好程序员,不是会写几行code就成。
- Linux是入门环境中最理想的,别总靠着windows,到了生产环境,谁给你花钱买正版的?想想吧。
- 书哪里有啊。买?不买看ebook?其实最重要的你需要熟练掌握英文,好好把英文搞好是你撬开新知识之窗的把手!
- 社区?还不多,所以本地有的话就参考,没有的话,就上网上社区吧,去一个地方就可以了。www.chinaonrails.com,不过已经成了bd7lx的专用留言板了,呵呵,:-)
2009年12月2日星期三
在has_many多对多关系中,如何count记录集?
class User
has_many :messages do
def by_type(type, options={})
conditions = [ 'type = ?', type ]
if options[:count_only]
count(:conditions => conditions)
else
find(:all, :conditions => conditions)
end
end
end
end
refs:
http://refactormycode.com/codes/209-rails-has_many-count
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年11月28日星期六
attention! Ruby Core Bug #405 can be resolved. get your way.
Today i encouner this error:
ssl.rb:31: [BUG] Bus Error
this is annoying thing. i have try install any version ruby.but no avail.
let me think.this is macos special bug.no ruby anything.
so latest way, you can use port install any thing. this way can resolve this bug.
sudo port -v selfupdate
sudo port install ruby
sudo port install rb-rubygems
sudo gem update --system
..
go along with this way.when finished install,this rails is come back.wow!
ref:
http://redmine.ruby-lang.org/issues/show/405
http://www.jotlab.com/2009/11/08/installing-ruby-on-rails-mysql-imagemagick-nginx-passenger-with-macports/
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年11月19日星期四
ruby编译中的二三事--你不了解的部分
如果你像我一样,对编译ruby经历过的话,肯定会遇到一些挫折,但通过google又能找到一些通用的tutorial,这些tutorial中总会给你一条"万能的指令"如:
./configure --enable-shared --enable-pthread CFLAGS=-D_XOPEN_SOURCE=1但你理解这后面的flag的意思吗?我相信不一定有人能理解,我记下来,总让有心人能有所收获.
RubyCocoa compatibility and --enable-shared
In order to use RubyCocoa, the Ruby interpreter must be compiled with --enable-shared. By default, Ruby Enterprise Edition's interpreter is not compiled with --enable-shared. You can compile the Ruby Enterprise Edition interpreter with this flag by passing -c --enable-shared to its installer, like this:
Please note that enabling --enable-shared will make the Ruby interpreter about 20% slower. It is for this reason that we don't recommend enabling --enable-shared on server environments, although it's fine for desktop environments.
Tcl/Tk compatibility and --enable-pthread
In order to use Tcl/Tk with threading support, the Ruby interpreter must be compiled with --enable-pthread. By default, Ruby Enterprise Edition's interpreter is not compiled with --enable-pthread. You can compile the Ruby Enterprise Edition interpreter with this flag by passing -c --enable-pthread to its installer, like this:
./ruby-enterprise-X.X.X/installer -c --enable-pthread
Please note that enabling --enable-pthread will make the Ruby interpreter about 50% slower. It is for this reason that we don't recommend enabling --enable-shared on server environments, although it's fine for desktop environments.
-D_XOPEN_SOURCE=1
这个最难理解,其实它是Clib库的一个宏,说白了就是为了支持更多的函数配置的开关
Glibc 所实现全部或部分规范下的功能有:
1.ISO C: C语言国际标准.
2.POSIX: 操作系统的 ISO/IEC 9945 (aka IEEE 1003) 标准.
3.Berkeley Unix: BSD 和 SunOS.
4.SVID: V 系统接口描述.
5.XPG: The X/Open Portability Guide.
为了实现扩展函数,可以设置D_XOPEN_SOURCE
Macro: _XOPEN_SOURCE
If you define this macro, functionality described in the X/Open Portability Guide is included. This is a superset of the POSIX.1 and POSIX.2 functionality and in fact _POSIX_SOURCE and _POSIX_C_SOURCE are automatically defined.
As the unification of all Unices, functionality only available in BSD and SVID is also included.
If the macro _XOPEN_SOURCE_EXTENDED is also defined, even more functionality is available. The exa functions will make all functions available which are necessary for the X/Open Unix brand.
That's all!
参考:
http://www.rubyenterpriseedition.com/documentation.html#_how_ree_installs_itself_into_the_system
http://hivelogic.com/articles/ruby-rails-leopard
2009年11月16日星期一
javascript语言精粹--笔记1
2009年11月14日星期六
BeijingonRails,我们社区还很小,但我们很真诚!
2009年11月13日星期五
parse querystring use oneline.ruby tips
parse a HTTP query string in the shortest possible way.
q = "query1=apa&query2=apa2"
Hash[q.split("&").collect{|a| a.split("=")}.flatten]
=> {"query1"=>"apa", "query2"=>"apa2"}
Hash[*q.split(/=|&/)]
reference url:
http://refactormycode.com/codes/1058-parse-a-querystring
2009年11月11日星期三
在搞清楚&block的用法时看到的bechmack方法
以后在测试性能时可能会用到.记在此.
Benchmark.bmbm(10) do |rpt|
rpt.report("foo") do
n.times {foo('Sidu', 'Ponnappa'){|name| "Hello #{name}"}}
end
rpt.report("bar") do
n.times {bar('Sidu', 'Ponnappa'){|name| "Hello #{name}"}}
end
rpt.report("ooga") do
n.times {
the_block = lambda {|name| "Hello #{name}"}
ooga('Sidu', 'Ponnappa', the_block)
}
end
end
显示结果:Starting benchmark
Rehearsal ---------------------------------------------
foo 0.781000 0.000000 0.781000 ( 0.782000)
bar 1.406000 0.000000 1.406000 ( 1.406000)
ooga 1.438000 0.016000 1.454000 ( 1.453000)
------------------------------------ total: 3.641000sec
user system total real
foo 0.782000 0.000000 0.782000 ( 0.781000)
bar 1.375000 0.015000 1.390000 ( 1.406000)
ooga 1.453000 0.032000 1.485000 ( 1.485000)
2009年11月3日星期二
accepts_nested_attributes_for引起的实践
<% end %>
这里的是:product,但我实际中,这样是跑不了的.需要指定action.<% form_for :user, :url => {:action => 'create'} do |f| %>另外,还需要注意里面的变化: <% f.fields_for :contact_attributes do |c| %>
<%= c.label :phone,'电话' %>
<%= c.text_field :phone %>
<% end -%>
注意需要加上_attributes
参考demo:http://www.box.net/shared/vm76if7zdd
另外,增加这点tips
从Doctor Nic那里扒来的To find, clone, and fork any rubygem that is hosted on github:
$ sudo gem install drnic-github
$ gh clone --search rails
$ gh fork
To personalise the gem and share it on gemcutter:
> edit the project.gemspec to have a unique name, e.g. yourname-project
$ gem build project.gemspec
$ sudo gem install gemcutter
$ gem push yourname-project-1.0.0.gem
2009年11月2日星期一
will_paginate的ajax实现
今天静下心来,按will_paginate的wiki中介绍的方法实现出来,打包放在这里,给大家直接参考.
blogspot不能上传附件,所以放在这里:
http://www.box.net/shared/rufuee2ldm
environment:
rails 2.3.4
ruby 1.8
--
tommy xiao
E-mail: xiaods(AT)gmail.com
需要升级rubygems的注意一下这两条指令
sudo gem install rubygems-update
sudo update_rubygems
就这些。当然你的环境需要是*nix环境,win我就不保证了。
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年10月30日星期五
今天发现竟然可以通过邮件来发布blog,这样又可以不翻墙发文了。
yeah!万圣节快乐。
今天找了一个学respec的好例子,直接在github上下载即可练习spec.
http://github.com/ultrasaurus/test-first-teaching/
我是直接clone下来,然后练习的。这主竟然还提供了solution,如果在本地使用呢?需要使用git的命令。
pull,branch啊,熟吗?不熟,这主又提供了一份git参考mv:
http://www.gitcasts.com/posts/railsconf-git-talk
这视频应该是刚刚的,当然要想学好,需要点耐性。最好记下笔记。可没有快进的。
--
tommy xiao
E-mail: xiaods(AT)gmail.com
2009年10月29日星期四
在rails中attr_accessible是Mass Assignment exploit的救星
curl -X PUT可以设置HTTP 命令
curl -d可以POST数据
attr_protected有如鸡肋,在has many下竟然可以级联update其它属性.直接使用attr_accessible就可以指定赋值对象了.
所以在model中要使用attr_accessible,限制更新字段.
2009年10月28日星期三
君子欲行先于言,故迟言而速行也--作有生产力的人
早上翻了翻twitter,看到这篇文章,深受启发,看来要改改自已的毛病了.
Produce before you Consume
文中作者说到,一早起来就应该着手作自已应该作的事情,然后再浏览咨询,这样才能有效的提高生产力.精彩的tips
2009年10月26日星期一
TaobaoTOP调用实战之Json操作总结,ruby
第一步当然想显示taobao的商品分类,就是说需要调用taobao.shopcats.list.get:获取前台展示的店铺类目
我使用json返回结果集,并且想在页面里显示出来,但json在parse之后如何能iterate显示每一条数据呢?
在网上查了查,写出如下测试,成功。
# taobao.shopcats.list.get:获取前台展示的店铺类目
def test_taobao_shopcats_list_get
result = OpenTaobao.get_with(:method => 'taobao.shopcats.list.get') #结果集是json包
shop_cats = result['rsp']['shop_cats']
# puts shop_cats.inspect
shop_cats.each do |cat|
puts cat["parent_cid"]+" "+cat["name"]+" "+cat["is_parent"].to_s+" "+cat["cid"]
end
end
就像Array一样操作数据。真是挺方便。其实因为json是需要与前台互动的,应该是使用javascript来操作json更为理想。当然这里就不表了。以上就是使用ruby操作json数据集。
参考这里:
http://snippets.dzone.com/posts/show/6133
2009年10月22日星期四
学习Behavior Driven Development 的来龙去脉
什么是BDD,有现成的不用介绍.我只说一下为什么要BDD.这起源于我的一个场景下的需求
如果我使用rails,好像只用得着unit test,并没有什么必要需求使用BDD.但最近继续写这个Plugin
http://github.com/xiaods/open-taobao
就是调用open.taobao.com 插件,更方便的调用taobao open api.现在这个插件还只有一个架子,也没有测试,所以我想通过TDD来驱动开发taobao TOP的API,API支付GET/POST,所以使用unit test行不通.所以需要一种更自然的方式来作.哪种呢,经过Digg之后,我认为就是BDD.BDD需要和TDD结合才算完美.其实本质上来说,就是换个方法来TDD,所以本无区分.只需要会用就用.那现在就要问了:如何踏出第一步呢:
* Simple Ruby and RSpec Tutorial – This tutorial will bring you through the basics of the process while developing a simple state machine. It’s a fun tutorial.
* RSpec on Rails – Luke Redpath’s awesome introduction to using RSpec with your Rails application development.
* RSpec Mocks and Models – Peepcode screencast explaining Mocks and Models. You can view a small sample of the screencast, but I suggest forking out the $9. It’s definitely worth it. This especially helped me out as I’ve been writing a Ruby-based library for accessing the FamilySearch Public API.
其中,Simple Ruby and RSpec Tutorial我是亲自看了一遍,讲的非常清楚,基本看完就可以建立基本的概念观.也欢迎有高人与我分享.可以通过Twitter来告诉我.我的帐号是xds2000
参考:
http://jimmyzimmerman.com/blog/2007/11/simple-tutorials-for-learning-bdd-and-rspec.html
github上学来的git merge技巧.
git clone git@github.com:bricoleurs/bricolage.git
cd bricolage
git remote add merger git://github.com/username/bricolage.git
git pull merger master
git push origin master
git remote rm merger
就是这个有用的,不用介绍,你也会merge别人的代码了.呵呵.加油,努力.
参考:
http://wiki.github.com/bricoleurs/bricolage/merging-with-git
一直使用twitter,blog更新就很懒了.
2009年10月21日星期三
看JavaScript: The Good Parts的一些碎念,写下来
另外,其书中建立的基础好像和Jquery一脉相承,有人知道来龙去脉吗?希望有人相告。
2009年10月14日星期三
关于CustomValidates的使用demo,及一个ruby中的The splat operator.
Write Your Own Custom Validations .
书中使用的rails版本已经很老,所以在rails 2.3下使用书中讲的过不了。
参考这里:
http://chrisblunt.com/blog/2009/04/18/rails-writing-dry-custom-validators/
把validates放在config/initializers里,不需要在environment.rb里加require就OK了。
直接按书中写test unit,直接通过。:-)
然后涉及到给class里加mothod的方法,看这里
http://blog.codevader.com/2008/09/27/including-and-extending-modules-in-ruby/
讲了一遍,我看了遍,记了一下。
然后又涉及到一个 *号,splat operator,
看这里
http://theplana.wordpress.com/2007/03/03/ruby-idioms-the-splat-operator/
注意一下comments里的一个例子:
It may also help to note that ’splat’ returns a copy of the instance that it’s used with, whereas not using ’splat’ returns a reference to the instance.
说的就是加*的是返回一个实例的copy,不加*的是返回一个实例的reference,下面代码一目了然。
2009年10月9日星期五
route里的:member和:collection是怎么用的
这里的对话可以直接让我明白,相信你也会明白.
总结下来,想在RESTful的7种action之外再增加其它action,就需要使用:collection,如果想针对单个object作操作,请使用:member.
RubyHunt: What’s the use of the :collection and :member methods within a route? What’s the difference between the two?
melvinram: Collection adds routes to the entire collection
RubyHunt: So the collection is used to add another action inside the controller
melvinram: If you had a resource of Contacts, a collection route you might add would be delete_all_older_than_6_months
melvinram: and the route to get to it would be be /contacts/delete_all_older_than_6_months/
RubyHunt: Which otherwise would be restricted to only 7 actions ?
melvinram: yes
melvinram: A member method applies only to one record. For example, you might add a member method called upgrade_to_vip that would update one record to have a status of VIP or something…
melvinram: And the route would be /contacts/1/upgrade_to_vip
RubyHunt: So the :collection is used to add action inside a RESTful controller and the :member would be used to apply action for individual object.
2009年9月26日星期六
使用autoproxy+GAppProxy暂时实现网页爬墙
autoproxy是firefox的addon,暂时是beta版,可以直接安装。
GAppProxy,使用google appspot作为代理,我使用mac上使用python直接使用,验证可以使用,不然我这里blog就写不成了。呵呵。
目前只能支持http,可以了,GFW的技术重点ipv6的使用。但这种魔高一丈,道高一尺的事情,我觉的讨论下去没有什么意义。重点是能让一部分人使用墙外的讯息就可以。我们可以口口相传嘛。
坚持党的领导,中国人民万岁!
2009年9月23日星期三
rails开发中糊涂测试中的一些细节,记录一下
我读一下,学习一下它的测试.我习惯性先
复制一个git链接,然后git clone ....
然后cd目录后再mate .
这样就可以使用textmate看代码了.
然后打开test下的 test_helper
def t(key, options = {})
result = I18n.t(key.to_s, options)
result.should_not =~ /translation.*missing/
result
end
这里的should_note是什么东东啊.
然后查了一下,原来用了一个模仿respec的testunit库.这个库使用这个语法,一看就明白.BDD风格啊.
然后我就rake db:create,随后script/server
后来我打开feedback_test.rb,
然后Crtl+r,跑起来说我的test db没有创建,我又迷糊了.
原来我需要这样
rake db:create RAILS_ENV='test'
然后我想能不能把rake下的所有命令都打出来,忘了,原来记得的命令啊.最后知道了,
这里rake -T
这样就OK了.
时间长就忘了,有点迷糊,这里赶快想起来
记一下.
2009年9月5日星期六
Ruby on rails的学习过程中,快速搭建开发环境很重要,如果办呢
第一步:下载virtualBox,安装ubuntu
第二步:安装脚本:
http://gist.github.com/raw/180820/2ffa186d4a7a54db43359206f8c2991508892610/rails_install_script_on_ubuntu
原文参考这里:http://ihower.idv.tw/blog/archives/3002
2009年8月28日星期五
textmate遇到目录权限问题,解决方法提供
> "/Library/Application Support/TextMate/Support/lib/tm/process.rb:123:
> warning: Insecure world writable dir /Users in PATH, mode 040777"
>
脑子里无解,只好求助gg,发现textmate组有很多参考,有人给出解决方法:
#chmod og-w 'THE_DIR'
比如我上面提供是/Users出了问题,就直接运行chmod og-w '/Users'.
Done,问题解决,至于为什么会出现问题,没有提示,我也无心去研究,如有人愿意研究并有成果可告知我。谢谢。
2009年8月7日星期五
[Rails] alipay商户支付的接口lib纯净版,share.
是从github上某私人项目集成的activemerchant扩展中发现有alipay,就改过来了。
目标是改成一个lib,直接就在rails中使用。
直接下载吧。
git://github.com/xiaods/alipay-lib.git
2009年7月31日星期五
使用Macbook已经半年了。确实不错
2009年7月25日星期六
acts_as_list使用经验总结
macos 10.5.7
rails 2.3.2
act_as_list是一个排序的module,
*Install the plugin:
ruby script/plugin install git://github.com/rails/acts_as_list.git
网上找了一些blog,但还是没有找到合适的完整的demo可以看。
自个模仿制作了一个。肯定可以作为参考。
http://code.google.com/p/rails-demosite-collection/downloads/list
下载吧。
另外,也附带一个疑问:就是好像在rails 2.3.2里使用has many,belong to 就可以完成这些效果?不确定,继续学习中
2009年6月25日星期四
到底一个CRM需要哪些特性
把Oralce的三个CRM软件功能列出来,对比一下,终于发现一些功能。如果你想作CRM,照这个作下去肯定有商机。
对比表单,点这里
以Oracle的Crm为原型,分析列出crm功能 | Siebel客户关系管理软件 | PeopleSoft Enterprise客户关系管理软件 | Oracle电子商务套件11i.10 CRM | |||
. | 销售 | 客户关系管理分析 | Oracle渠道管理 | ||
. | 市场营销 | 客户关系管理行业解决方案 | Oracle市场营销 | ||
. | 联系中心和服务 | 市场营销解决方案 | Oracle订单管理 | ||
. | 联系中心基础架构 | 合作伙伴关系管理解决方案 | Oracle销售管理 | ||
. | CRM技术 | 销售解决方案 | Oracle服务 | ||
. | 托管型CRM | 服务解决方案 | |||
. | 客户数据集成 | ||||
. | 报价与订单受理 | ||||
. | 自助服务和电子账单管理 | ||||
. | 合作伙伴关系管理 | ||||
. | 商务智能管理软件 | ||||
. | 价格管理 | ||||
. | 社会化CRM | ||||
. | |||||
. | 功能参考: | http://www.oracle.com/webapps/dialogue/dlgpage.jsp?p_ext=Y&p_dlg_id=7733343&src=6820289&Act=24&sckw=APACMK09052060MPP001.GCM.8085.160 |
2009年6月23日星期二
Passenger On Leopard,使用内建的apache2步骤
passenger(mod_rails),想在macos leopard,10.5.7下配置,相信同配置的朋友可以参考一下
第一步:
gem install passenger第二步:
sudo passenger-install-apache2-module
http://www.modrails.org/install.html
在/etc/apache2/other/下创建如下文件passenger.conf
内容如下:
标红的地方需要在/etc/hosts里配置一下
127.0.0.1 dev.local
然后apachectl restart
Done!
ref:
http://railscasts.com/episodes/122-passenger-in-development
2009年6月8日星期一
使用Ruby,学习Ruby,从脚下开始
写这篇文章,我感到很兴奋。因为终于又发现一个新的信息点来享受技术的演化。脚本语言的发展真是日进千里。一直犹豫是否需要脱掉java大衣,No,这是一个痛。现在好了,阵痛后我终于可以换上新的“新衣服”在技术的海洋邀游。
所以我建议你不妨试试Ruby,它华丽的语法决对让你一眼忘不掉。
拿到ruby时,我的需求很简单,就是作一个华丽的Webapp,不要spring,hibernate那些东西,我感觉并不优雅。并且花的精力实在是太多了,我需要休息。所以用最简单的语言来写最简单的东西,应该是最好不过了。
顶你个肺!哈哈
另,由于rails更新太快,很多新手和我一样,读着书看着更新的代码不知道如何迁移,太难了,这是心声。我也很犯愁,这不虚心向别人请教,得一招感觉挺管用,share之:
http://guides.rubyonrails.org/
这里,熟读这里的文档,练习之,因为这里的文档是和下载档一起更新的,也是最stable的,所以新手必从这里练功。
2009年5月10日星期日
写在面试前的思考-你到底需要什么样的人才
下面就是经验总结,
1、学习可以解决一大部分问题,使用笔,google去记录整理经验。再不断的实践。
2、时间要规划好,不要天天去盯着,要有计划,有方法。计划的本意就是把时间留给专注的知识领域。
3、从小学几何我们就知道,知识是从点到线,从线到面,从面到体。所以脑子不好使的话,多作笔记。如何不喜欢笔来记,使用Notebook(AT)google也可以。但习惯了Ctrl+c,v,不动手似乎并不能完成记住完整的细节。所以在没有网络的情况下有可能就又成了瞎子。
4、自信不是天生就有。所以要去锻炼。要主动地的与人相处。
2009年4月19日星期日
Scrubyt抓取非utf-8的代码Sample
如下参考:这里
#!/usr/bin/ruby -Ku
# source must be written in UTF-8
$KCODE = 'u'
require 'rubygems'
require 'iconv'
# Patching Mechanize...
require 'mechanize'
# Perform iconv() before Mechanize parses the page
class IConvParser < WWW::Mechanize::Page
def initialize(uri = nil, response = nil, body = nil, code = nil)
new_body = Iconv.conv("UTF-8//IGNORE", "GB2312//IGNORE", body)
super(uri, response, new_body, code)
end
end
# Set IConvParser as default HTML parser, you don't have to
# run iconv() to each page manually.
class WWW::Mechanize::PluggableParser
def initialize
@parsers = { CONTENT_TYPES[:html] => IConvParser }
@default = File
end
end
# Scrubyt::FetchAction initializes its @@agent as PluggableParser.new
# at class context, so we manually require 'scrubyt'
# AFTER the above patch was installed.
require 'scrubyt'
# Now definition is quite simple
baidu_data = Scrubyt::Extractor.define do
fetch "http://www.baidu.com/"
fill_textfield 'wd',"ruby"
submit
result "Ruby_百度百科"
end
puts baidu_data.to_xml
2009年4月7日星期二
学习新语言的方法总结---ruby版
2009年4月2日星期四
uninstall installed 64 bit MySQL dmg on mac
uninstall installed 64 bit MySQL dmg as follows ( There is no good way to uninstall MySQL from Mac other than below)
* sudo rm /usr/local/mysql
* sudo rm -rf /usr/local/mysql*
* sudo rm -rf /Library/StartupItems/MySQLCOM
* sudo rm -rf /Library/PreferencePanes/My*
* edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
* sudo rm -rf /Library/Receipts/mysql*
* sudo rm -rf /Library/Receipts/MySQL*
ref:
http://akrabat.com/2008/09/11/uninstalling-mysql-on-mac-os-x-leopard/
Ex.\
[
>group = ["blue", "green", "pink"]
>painting = ["paintbrush", "canvas", group]
>group[2] = “purple”
>puts painting
gives us: paintbrush, canvas, blue, green, purple
]
[
>group = ["blue", "green", "pink"]
>painting = ["paintbrush", "canvas", *group]
>group[2] = “purple”
>puts painting
gives us: paintbrush, canvas, blue, green, pink
]