mysql,Linux,HighPerformance,ruby on Rails

2009年12月30日星期三

最适合rails部署的Linux Distro

此话题源自rubyonrails-talk maillist,有人提到开发rails应用,遇到这个问题,用什么最好呢?
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查询

在调试时log还是比较重要,一般之前都习惯使用tail -f
这回看一文章使用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

1.连mysql遇到Mysql::Error: query: not connected: CREATE TABLE `schema_migrations` (`version`
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
















参考:http://devpoga.wordpress.com/2008/02/05/vim-rails/

最后发现国人制作的vimmate,更加方便,快速部署.

2009年12月15日星期二

Mysql配置中的几个参考,阅读笔记

Fixing Poor MySQL Default Configuration Values
原文地址: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入门时几点窍门,绝对的集百家之长

  1. 在踏入rails学习第一步时,总会想当然,想找最好的入门手册。但在哪里呢?有没有标准啊。心中没底啊。还好,在rails世界里,确实存在这样的东西,在这里:http://guides.rubyonrails.org/
  2. 想找最好的代码作参考,好对照着写出最牛的代码,哪里有呢?还真有:www.github.com
  3. ruby要不要学好,说真的,一门语言有好的地方也有坏的地方,所以你不必完全掌握所有的技巧,把需要掌握的掌握即可。
  4. HTML/Javascript/CSS可能是web开发中最能玩出花的地方,好好用心学吧。作好程序员,不是会写几行code就成。
  5. Linux是入门环境中最理想的,别总靠着windows,到了生产环境,谁给你花钱买正版的?想想吧。
  6. 书哪里有啊。买?不买看ebook?其实最重要的你需要熟练掌握英文,好好把英文搞好是你撬开新知识之窗的把手!
  7. 社区?还不多,所以本地有的话就参考,没有的话,就上网上社区吧,去一个地方就可以了。www.chinaonrails.com,不过已经成了bd7lx的专用留言板了,呵呵,:-)
Over,有需要请留言补充

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2009年12月2日星期三

在has_many多对多关系中,如何count记录集?

这是在rails maillist看到的问题,当时确实没有想到办法,后经查,找到一个参考链接,看了后,感觉日后可以用上,记录下来:
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