史上最著名的10个思想实验

10.电车难题(The Trolley Problem)
“电车难题”是伦理学领域最为知名的思想实验之一,其内容大致是:一个疯子把五个无辜的人绑在电车轨道上。一辆失控的电车朝他们驶来,并且片刻后就要碾压
到他们。幸运的是,你可以拉一个拉杆,让电车开到另一条轨道上。但是还有一个问题,那个疯子在那另一条轨道上也绑了一个人。考虑以上状况,你应该拉拉杆
吗?
解读:
电车难题最早是由哲学家Philippa
Foot提出的,用来批判伦理哲学中的主要理论,特别是功利主义。功利主义提出的观点是,大部分道德决策都是根据“为最多的人提供最大的利益”的原则做出
的。从一个功利主义者的观点来看,明显的选择应该是拉拉杆,拯救五个人只杀死一个人。但是功利主义的批判者认为,一旦拉了拉杆,你就成为一个不道德行为的
同谋——你要为另一条轨道上单独的一个人的死负部分责任。然而,其他人认为,你身处这种状况下就要求你要有所作为,你的不作为将会是同等的不道德。总之,
不存在完全的道德行为,这就是重点所在。许多哲学家都用电车难题作为例子来表示现实生活中的状况经常强迫一个人违背他自己的道德准则,并且还存在着没有完
全道德做法的情况。
9.空地上的奶牛(The Cow in the field)
认知论领域的一个最重要的思想实验就是“空地上的奶牛”。它描述的是,一个农民担心自己的获奖的奶牛走丢了。这时送奶工到了农场,他告诉农民不要担心,因
为他看到那头奶牛在附件的一块空地上。虽然农民很相信送奶工,但他还是亲自看了看,他看到了熟悉的黑白相间的形状并感到很满意。过了一会,送奶工到那块空
地上再次确认。那头奶牛确实在那,但它躲在树林里,而且空地上还有一大张黑白相间的纸缠在树上,很明显,农民把这张纸错当成自己的奶牛了。问题是出现了,
虽然奶牛一直都在空地上,但农民说自己知道奶牛在空地上时是否正确?
解读:
空地上的奶牛最初是被 Edmund Gettier用来批判主流上作为知识的定义的JTB(justified true
belief)理论,即当人们相信一件事时,它就成为了知识;这件事在事实上是真的,并且人们有可以验证的理由相信它。在这个实验中,农民相信奶牛在空地
上,且被送奶工的证词和他自己对于空地上的黑白相间物的观察所证实。而且经过送奶工后来的证实,这件事也是真实的。尽管如此,农民并没有真正的知道奶牛在
那儿,因为他认为奶牛在那儿的推导是建立在错误的前提上的。Gettier利用这个实验和其他一些例子,解释了将知识定义为JTB的理论需要修正。
8.定时炸弹(The Ticking Time Bomb)
如果你关注近几年的政治时事,或者看过动作电影,那么你对于“定时炸弹”思想实验肯定很熟悉。它要求你想象一个炸弹或其他大规模杀伤性武器藏在你的城市中,并且爆炸的倒计时马上就到零了。在羁押中有一个知情者,他知道炸弹的埋藏点。你是否会使用酷刑来获取情报?
解读:4 J1 j;
y6 e/ D+ {

与电车难题类似,定时炸弹情景也是强迫一个人从两个不道德行径中选择的伦理问题。它一般被用作对那些说在任何情况下都不能使用酷刑的反驳。它也被用作在极
端形势下法律——就像美国的严禁虐囚的法律——可以被放在第二位的例子。归功于像《24小时》的电视节目和各种政治辩论,定时炸弹情景已成为最常引用的思
想实验之一。今年早些时候,一份英国报纸提出了更为极端的看法。这份报纸提议说,如果那个恐怖分子对酷刑毫无反应,那么当局者是否愿意拷打他的妻子儿女来
获取情报。!
 s* g; N5 I$ R

7.爱因斯坦的光线(Einstein’s Light Beam)
爱因斯坦著名的狭义相对论是受启于他16岁做的思想实验。在他的自传中,爱因斯坦回忆道他当时幻想在宇宙中追寻一道光线。他推理说,如果他能够以光速在光
线旁边运动,那么他应该能够看到光线成为“在空间上不断振荡但停滞不前的电磁场”。对于爱因斯坦,这个思想实验证明了对于这个虚拟的观察者,所有的物理定
律应该和一个相对于地球静止的观察者观察到的一样。
解读:
事实上,没人确切知道这意味着什么。科学家一直都在争论一个如此简单的思想实验是如此帮助爱因斯坦完成到狭义相对论这如此巨大的飞跃的。在当时,这个实验中的想法与现在已被抛弃的“以太”理论相违背。但他经过了好多年才证明了自己是正确的。
6.特修斯之船(The Ship of Theseus)
最为古老的思想实验之一。最早出自普鲁塔克的记载。它描述的是一艘可以在海上航行几百年的船,归功于不间断的维修和替换部件。只要一块木板腐烂了,它就会
被替换掉,以此类推,直到所有的功能部件都不是最开始的那些了。问题是,最终产生的这艘船是否还是原来的那艘特修斯之船,还是一艘完全不同的船?如果不是
原来的船,那么在什么时候它不再是原来的船了?哲学家Thomas
Hobbes后来对此进来了延伸,如果用特修斯之船上取下来的老部件来重新建造一艘新的船,那么两艘船中哪艘才是真正的特修斯之船?
解读:( a: h8
w% X2 n7 {+ e

对于哲学家,特修斯之船被用来研究身份的本质。特别是讨论一个物体是否仅仅等于其组成部件之和。一个更现代的例子就是一个不断发展的乐队,直到某一阶段乐
队成员中没有任何一个原始成员。这个问题可以应用于各个领域。对于企业,在不断并购和更换东家后仍然保持原来的名字。对于人体,人体不间断的进行着新陈代
谢和自我修复。这个实验的核心思想在于强迫人们去反思身份仅仅局限在实际物体和现象中这一常识。
5.伽利略的重力实验(Galileo’s Gravity Experiment)
为了反驳亚里士多德的自由落体速度取决于物体的质量的理论,伽利略构造了一个简单的思想实验。根据亚里士多德的说法,如果一个轻的物体和一个重的物体绑在
一起然后从塔上丢下来,那么重的物体下落的速度快,两个物体之间的绳子会被拉直。这时轻的物体对重物会产生一个阻力,使得下落速度变慢。但是,从另一方面
来看,两个物体绑在一起以后的质量应该比任意一个单独的物体都大,那么整个系统下落的速度应该最快。这个矛盾证明了亚里士多德的理论是错误的。
解读:
这个思想实验帮助证明了一个很重要的理论:无论物体的质量,不考虑阻力的情况下,所有物体自由落体的速率都是一样的。
4.猴子和打字机(Monkeys and Typewriters)
另一个在流行文化中占了很大分量的思想实验是“无限猴子定理”,也叫做“猴子和打字机”实验。定理的内容是,如果无数多的猴子在无数多的打字机上随机打
字,并持续无限久的时间,那么在某个时候,它们必然会打出莎士比亚的全部著作。猴子和打字机的设想在20世纪初被法国数学家Emile
Borel推广,但其基本思想(无数多的人员和无数多的时间能产生任何/所有东西)可以追溯至亚里士多德。
解读:
简单来说,“猴子和打字机”定理是用来描述无限的本质的最好方法之一。人的大脑很难想象无限的空间和无限的时间,无限猴子定理可以帮助理解这些概念可以达
到的宽度。猴子能碰巧写出《哈姆雷特》这看上去似乎是违反直觉,但实际上在数学上是可以证明的。这个定理本身在现实生活中是不可能重现的,但这并没有阻止
某些人的尝试:2003年,一家英国动物园的科学家们“试验”了无限猴子定理,他们把一台电脑和一个键盘放进灵长类园区。可惜的是,猴子们并没有打出什么
十四行诗。根据研究者,它们只打出了5页几乎完全是字母“s”的纸。
3.中文房间(The Chinese Room)
“中文房间”最早由美国哲学家John
Searle于20世纪80年代初提出。这个实验要求你想象一位只说英语的人身处一个房间之中,这间房间除了门上有一个小窗口以外,全部都是封闭的。他随
身带着一本写有中文翻译程序的书。房间里还有足够的稿纸、铅笔和橱柜。写着中文的纸片通过小窗口被送入房间中。根据Searle的理论,房间中的人可以使
用他的书来翻译这些文字并用中文回复。虽然他完全不会中文,Searle认为通过这个过程,房间里的人可以让任何房间外的人以为他会说流利的中文。
解读:
Searle
创造了“中文房间”思想实验来反驳电脑和其他人工智能能够真正思考的观点。房间里的人不会说中文;他不能够用中文思考。但因为他拥有某些特定的工具,他甚
至可以让以中文为母语的人以为他能流利的说中文。根据Searle,电脑就是这样工作的。它们无法真正的理解接收到的信息,但它们可以运行一个程序,处理
信息,然后给出一个智能的印象。
2.薛定锷的猫(Schrodinger’s Cat)
薛定锷的猫最早由物理学家薛定锷提出,是量子力学领域中的一个悖论。其内容是:一只猫、一些放射性元素和一瓶毒气一起被封闭在一个盒子里一个小时。在一个
小时内,放射性元素衰变的几率为50%。如果衰变,那么一个连接在盖革计数器上的锤子就会被触发,并打碎瓶子,释放毒气,杀死猫。因为这件事会否发生的概
率相等,薛定锷认为在盒子被打开前,盒子中的猫被认为是既死又活的。
解读:
简而言之,这个实验的核心思想是因为事件发生时不存在观察者,盒子里的猫同时存在在其所有可能的状态中(既死又活)。薛定锷最早提出这个实验是在回复一篇
讨论量子态叠加的文章时。薛定锷的猫同时也说明了量子力学的理论是多么令人无法理解。这个思想实验因其复杂性而臭名昭著,同时也启发了各种各样的解释。其
中最奇异的就属 “多重世界”假说,这个假说表示有一只死猫和一只活猫,两只猫存在在不同的宇宙之中,并且永远不会有交集。
1.缸中的大脑(Brain in a Vat)
没有比所谓的“缸中的大脑”假说更有影响力的思想实验了。这个思想实验涵盖了从认知学到哲学到流行文化等各个领域。这个实验的内容是:想象有一个疯狂科学
家把你的大脑从你的体内取出,放在某种生命维持液体中。大脑上插着电极,电极连到一台能产生图像和感官信号的电脑上。因为你获取的所有关于这个世界的信息
都是通过你的大脑来处理的,这台电脑就有能力模拟你的日常体验。如果这确实可能的话,你要如何来证明你周围的世界是真实的,而不是由一台电脑产生的某种模
拟环境?
解读:
如果你觉得这听起来很像《黑客帝国》,那么你说对了。这部电影以及其他一些科幻作品,都是在这个思想实验的影响下创作出来的。这个实验的核心思想是让人们
质疑自身经历的本质,并思考作为一个人的真正意义是什么。这个实验的最初原型可以一直追溯至笛卡尔。在他的《Meditations on
the First
Philosophy》一书中,笛卡尔提出了能否证明他所有的感官体验都是他自己的,而不是由某个“邪恶的魔鬼”产生的这样的疑问。笛卡尔用他的经典名言
“我思故我在”来回答这个问题。不幸的是,“缸中的大脑”实验更为复杂,因为连接着电极的大脑仍然可以思考。这个实验被广泛的讨论着,有许多对于此实验前
提的反驳,但仍没有人能有力的回应其核心问题:你究竟如何才能知道什么是真实? (来源

回顾Facebook历次改版:均遭用户反对

Facebook今晚将召开f8开发者大会

导语:Facebook今天将召开f8开发者大会,预计将对网站进行大规模改版,并增添多项新功能。美国IT网站PCWorld今天撰文,回顾了Facebook历次的改版过程,每次都会遭到用户反对。

以下为文章概要:

Facebook用户历来反对改版,最新的News Feed改版同样引发了用户的不满。新版News
Feed将会按照算法给一些状态更新赋予更高的权重,而不是单纯按照时间顺序排列。

事实上,遭遇用户反对完全在意料之中,倘若没有反对反倒会令人意外。在Facebook的发展历程中,曾经多次因为改版引发用户不满,这一次只是其中之一。以下则是Facebook历次改版引发的用户不满:

2006年9月:Facebook推出News
Feed,可以按照时间顺序展示好友最近的活动。“状态更新”当时尚未大行其道,因此该信息流中展示的消息都来自用户的个人资料页面。

反对者组织了“停用Facebook一天”的活动,借此表达对隐私被侵犯的不满。而当Facebook允许用户在News
Feed中隐藏自己活动后,他们则宣称“任务完成”。但这项功能现在似乎已经不存在了。

2008年9月:Facebook面向用户推出了新版页面,用多个独立且可以定制的标签对网站分区。用户认为这一设计“非常非常丑”,并且组织了数万用户抗议。最终,标签被转移到Facebook的侧边栏,但这一理念至今依然存在。

2009年3月:Facebook再次进行大规模改版,这一次主要围绕状态更新展开,目的是更好地与Twitter竞争。信息可以实现实时更新,并且在屏幕右侧突出显示(这与Facebook最新的改版恰好相反)。

这一次改版引发了用户空前的抗议,共有170万用户要求Facebook放弃本次改版。为了安抚用户,Facebook进行了一些小规模的调整,但仍然坚持使用新的设计,至少暂时如此。

2009年10月:Facebook再次对主页改版,推出了一种算法,以便对状态更新进行排序,而不仅仅是按照时间排序。同年早些时候移除的一些内容又被恢复,包括好友申请是否被接受以及关系现状。换句话说,Facebook对2009年3月的用户抗议做出了让步。

但用户仍然不满,共有超过100万Facebook用户要求其恢复原先的版面。部分用户甚至要求Facebook将News
Feed更新重新按照时间顺序排列。

2010年11月:Facebook悄然缩小了News
Feed更新的字号,用户在Twitter上抱怨这一行为,而Facebook同样在Twitter上回应。

2010年12月:Facebook对资料页面进行改版,最主要的是将用户信息浓缩成一份摘要,并展示在页面顶端。文字上方还附带一张用户图片。Facebook官方博客的评论几乎都是负面的。

2011年6月:Facebook针对部分用户测试了一项名为“Happening
Now”的功能,在屏幕右侧展示了一个独立的信息流。很多参与测试的用户都很讨厌这项功能,其中部分用户甚至组建了一个名为“Facebook
Happening Now仇恨者”的小组。

Happening Now功能最终演变成了News Ticker,并于本周面向所有用户推出。(鼎宏)

Ubuntu, Ruby, RVM, Rails, and You

http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/
http://www.iloopai.com/blogs/11
http://ivanbernat.com/guides/install-rails-3-with-sqlite3-mysql-ubuntu-10/

25 Dec 2010

This beginner’s guide will set up with Ruby 1.9.2, RVM
and Rails 3.0.7 and is specifically written for a
development environment on Ubuntu 10.10, but will probably
work on many other operating systems, including older versions of
Ubuntu and Debian. YMMV.

If you’re looking for a way to set this up on a
production server then I would recommend the use of the railsready script
which installs all the necessary packages for Ruby 1.9.2p136 and
then that version of Ruby itself, Bundler and Rails. Then it leaves
it up to you to install Apache or nginx to get your application
online.

If you’re not using Ubuntu then try
Wayne E. Seguin’s rails_bootstrap_script
which probably gets a
version of Rails working for you, albeit with 1.8.7 rather than
1.9.2.

Under no circumstance should you install Ruby, Rubygems or any
Ruby-related packages from apt-get. This system is out-dated and
leads to major headaches. Avoid it for Ruby-related packages. We do
Ruby, we know what’s best. Trust us.

Still not convinced? Read this.

This guide will go through installing the RVM (Ruby Version Manager),
then a version of Ruby (1.9.2), then Rails and finally Bundler.

By the end of this guide, you will have these things installed
and have some very, very easy ways to manage gem dependencies for
your different applications / libraries, as well as having multiple
Ruby versions installed and usable all at once.

We assume you have sudo access to your machine, and
that you have an understanding of the basic concepts of Ruby, such
as “What is Rubygems?” and more importantly “How do I turn this
computer-thing on?”. This knowledge can be garnered by reading the
first chapter of any Ruby
book
.

Housekeeping

First of all, we’re going to run sudo apt-get
update
so that we have the latest sources on our box so that
we don’t run into any package-related issues, such as not being
able to install some packages.

Next, we’re going to install Git
(a version control system)
and curl which are both
required to install and use RVM, and build-essential
which is required to compile Ruby versions, amongst other
compilable things. To install these three packages we use this
command:

sudo apt-get install build-essential git-core curl

RVM

RVM is a Ruby Version
Manager
created by Wayne E. Seguin and is extremely helpful for
installing and managing many different versions of Ruby all at
once. Sometimes you could be working on a project that requires an
older (1.8.7) version of Ruby but also need a new version (1.9.2)
for one of your newer projects. This is a problem that RVM solves
beautifully.

Another situation could be that you want to have different sets
of gems on the same version of Ruby but don’t want to have to do
deal with Gem Conflict Hell. RVM has gemsets for
this. This is a feature you wouldn’t have if you used the
packaged Ruby
.

We’re going to use it to install only one version of Ruby, but
we can consult the
documentation
if we want to install a different version of
Ruby.

With git-core and curl installed we’ll
be able to install RVM with this command:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

The beautiful part of this is that it installs Ruby to our home
directory, providing a sandboxed environment just for us.

Once that’s done, we’re going to need to add a line to
~/.bashrc file (the file responsible for setting up
our bash session) which will load RVM:

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc 

Then we’ll need to reload the ~/.bashrc file which
we can do with this small command:

. ~/.bashrc

The next command we run will tell us what other packages we need
to install for Ruby to work:

rvm notes
...
# For Ruby (MRI & ree)  you should install the following OS dependencies:
ruby: aptitude install build-essential bison openssl libreadline6 libreadline6-dev
curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0
libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf

A couple of these packages we’ve already installed, such as
git-core and curl. They won’t be
re-installed again.

These packages will lessen the pain when we’re working with
Ruby. For example, the libssl-dev package will make
OpenSSL support in Ruby work, libsqlite3-0 and
libsqlite3-dev are required for the
sqlite3-ruby gem and the libxml2-dev and
libxslt-dev packages are required for the
nokogiri gem. Let’s install all these packages now
using this command:

sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g
zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf

This command *must* be written on a single line, otherwise
some of the packages will not install.

Now our Ruby lives will be as painless as possible.

Ruby

With RVM and these packages we can install Ruby 1.9.2:

rvm install 1.9.2

This command will take a couple of minutes, so grab your
$DRINKOFCHOICE and go outside or something. Once it’s done, we’ll
have Ruby 1.9.2 installed. To begin using it we can use this lovely
command:

rvm use 1.9.2

Are we using 1.9.2? You betcha:

ruby -v
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]

Or, even better, would be to make this the default for
our user! Oooh, yes!

rvm --default use 1.9.2

Now whenever we open a new bash session for this user we’ll have
Ruby available for us to use! Yay!

Rails

Now that RVM and a version of Ruby is installed, we can install
Rails. Because RVM is installed to our home directory, we don’t
need to use that nasty sudo to install things; we’ve
got write-access! To install the Rails gem we’ll run this
command:

gem install rails

This will install the rails gem and the other 22
gems that it and its dependencies depend on, including Bundler.

MySQL

If you’re planning on using the mysql2 gem for your
application then you’ll want to install the
libmysqlclient16-dev package before you do that.
Without it, you’ll get an error when the gem tries to compile its
native extensions:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

/home/ryan/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

PostgreSQL

Similar to the mysql2 gem’s error above, you’ll
also get an error with the pg gem if you don’t have
the libpq-dev package installed you’ll get this
error:

    Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

/home/ryan/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb
checking for pg_config... no
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Fin.

And that’s it! Now you’ve got a Ruby environment you can use to
write your (first?) Rails application in with such minimal effort.
A good read after this would be the official guides for Ruby on
Rails
. Or perhaps the documentation on the RVM site which goes into using
things such as gemsets and the
exceptionally helpful per-project
.rvmrc file
. A quick way to generate an .rvmrc
file is to run a command like this inside the project

rvm use 1.9.2@rails3 --rvmrc

RVM is such a powerful tool and comes in handy for day-to-day
Ruby development. Use it, and not the packages from apt to live a
life of development luxury.

Credits

Thanks to krainboltgreene for
pointing out that the guide needed to install the packages
specified by rvm notes. He’s got a similar write up here for Ubuntu
10.04
. Some of the instructions in this guide were “inspired”
by that post.

1、先安装gcc,mysql和一些库

sudo apt-get update
sudo apt-get upgrade
sudo dpkg-reconfigure tzdata
date

sudo apt-get install gcc
sudo apt-get install build-essential
sudo apt-get install git-core
sudo apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libreadline5-dev

sudo apt-get install mysql-server mysql-client
 

2、编译ruby1.9.2 :

先下载源代码:http://www.ruby-lang.org/en/downloads/

tar vfxz ruby-1.9.2-p180.tar.gz  
cd ruby-1.9.2-p180
sudo ./configure --prefix=/usr/local/ruby-1.9.2

sudo make
sudo make install  

#添加路径
sudo gedit /etc/profile
#加入如下内容并且保存,注销就可以了
if [ -d "/usr/local/ruby-1.9.2/bin" ] ; then  
    export PATH=/usr/local/ruby-1.9.2/bin:$PATH
fi 

#查看安装到ruby版本
#sudo用到环境变量没搞清楚...加个-i就行了
sudo -i ruby -v

#安装rails,这儿也用-i
sudo -i gem install rails -y

设置MQSQL的UTF-8编码方式:

$sudo gedit /etc/mysql/my.cnf  #编辑添加如下内容
[mysql]
default-character-set = utf8 
[mysqld]
default-character-set = utf8 
init_connect = 'SET NAMES utf8' 

[client]
default-character-set = utf8

sudo /etc/init.d/mysql restart  #运行
sudo netstat -tap | grep mysql  #检查

#检查MYSQL查看编码,用MYSQL命令: 
show variables like'character%';  
#或者:mysql -u root -p
Enter password: ******
> \s # 查看是否配置成功
Client characterset:    utf8
Server characterset:    utf8
>quit

#Install nginx+passenger

sudo -i gem install passenger
sudo -i passenger-install-nginx-module

用rails new 新建 app

rails new blog -d mysql

现在3.0.7版本的mysql2不能用最新版,需要添加个限制

cd blog
gedit Gemfile

把gem ‘mysql2’改成: gem ‘mysql2′,'<0.3’
然后运行:bundle,如果提示下面到错误就是少了些运行库了:Could not create Makefile due to
some reason, probably lack of necessary libraries and/or
headers.
安装库:

sudo apt-get install libmysql-ruby libmysqlclient-dev 

在运行bundle就能正确安装mysql2了
执行:rake db:create还是出错…这个是rake
0.9版本到问题,这个有人给出了方法:打开刚才新建的app根目录下的Rake文件,在里面添加:

#注意把Blog改成你自己到模块名
module ::Blog
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end
#这个是原来rake文件到最后一行,不是添加的,注意这个“Blog”就是你的模块名字
Blog::Application.load_tasks

第二种方法就是卸载0.9版本的rake了:

sudo -i gem uninstall rake -v 0.9
sudo -i gem uninstall rake -v 0.8.7
sudo -i gem install rake -v 0.8.7
 

我的系统里有rake 0.9和rake 0.8.7,把rake
0.9卸载了就找不到rake也许要加个链接到ruby/bin目录,我偷懒直接把2个都卸掉然后再安装0.8.7

这个就是安装mysql2过程中出现的问题:http://blog.csdn.net/linhx/archive/2011/03/29/6286899.aspx

配置ngnix:/opt/nginx/conf/nginx.conf

server {
        listen       80;
        server_name  localhost;
        root /home/xxx/rails_app/blog/public;  #xxx这个就是你刚才新建的app的public目录到完整路径
        passenger_enabled on;  
        rails_env development;     #设置为开发环境,默认是生产环境
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #location / {
        #    root   /home/leslin123/rorails/helloMySQL/public;
        #    index  index.html index.htm;
        #} 

配置Nginx为启动项:

sudo apt-get install curl#在终端里输入curl,如果提示未安装就用这个命令安装,如果已经存在就跳过
curl -L http://bit.ly/nginx-ubuntu-init-file > nginx
sudo mv nginx /etc/init.d/
sudo chmod +x /etc/init.d/nginx 
sudo /usr/sbin/update-rc.d -f nginx defaults
sudo /etc/init.d/nginx start 

在浏览器里输入:127.0.0.1,看到Welcome to nginx!就是安装成功了,如果已经设置了rails
app的目录应该是rails程序到欢迎界面了
每次修改了nginx配置后需要重启生效:

sudo /etc/init.d/nginx restart 

注:如果提示:Access denied for user ‘root’@’localhost’ (using
password: NO)重启下nginx试试

用到的链接:rvm安装方式,只采用了前面:http://www.yangzhiping.com/tech/ubuntu-ree-nginx-passenger-rails3.blog.html

编译ruby1.9.2以及配置:
http://hi.baidu.com/rikioy/blog/item/57fdfe38b87ce3ccd462256a.html

解决mysql2版本不相容的问题:http://stackoverflow.com/questions/5840742/version-
of-mysql2-0-3-2-doesnt-ship-with-the-activerecord-adapter-bundled-anym

执行rake出错解决方法:http://stackoverflow.com/questions/5287121/undefined-method-task-using-rake-0-9-0-beta-4

安装mysql2不成功:http://blog.csdn.net/linhx/archive/2011/03/29/6286899.aspx

activescaffold+rails2.3.4+本地化 记录

这两天把原有一个项目从rails 2.2.2升级到了rails
2.3.4,在activescaffold插件上耗费了许多时间,但总算都解决了。
1.升级activescaffold
  首先要说明的是AS的官网很是诡异。里面的文档几乎不更新,反而github
wiki上才是最新的。所以大家不要找错地方了。
   按照文档,升级AS到2.3版本需要以下两步:
   1). ruby script/plugin install
git://github.com/activescaffold/active_scaffold.git
   2). ruby script/plugin
install git://github.com/ewildgoose/render_component.git -r
rails-2.3

  但是注意:
第二步安装的render_component插件在rails 2.3.4上并不能使用。启动时会出现
无效的方法”set_session_options”的错误
。我最后是在github上找了另一个render_component插件才好的。在这里浪费了我至少2个小时。

   2). ruby script/plugin install
git://github.com/weplay/render_component.git

2.中文化

 
原来我使用的是localization插件。并在Object类中加入了as_()方法来实现中文化。可是此插件在rails
2.3.4中也会报错。于是我就直接采用rails自带的I18n国际化方法。当然还是需要加入as_()方法.代码如下

 

Ruby代码  收藏代码记录” />
  1. class Object  
  2.   def as_(string, *args)  
  3.     if string  
  4.       I18n.t(string,*args)  
  5.       if (r =~ /^translation missing/)  
  6.         return string  
  7.       end  
  8.       return  
  9.     else  
  10.       return string  
  11.     end  
  12.   rescue  
  13.     return string  
  14.   end  
  15. end  

 

   附上翻译文件:

 

http://www.iteye.com/topic/484236

我要翻译Paul Graham了(zz)

http://www.ruanyifeng.com/blog/2009/12/i_will_translate_paul_graham.html

作者: 阮一峰

日期: 2009年12月28日

这些天,我总有点魂不守舍。

典型表现就是,非常烦躁和空虚。宁愿坐在电脑前,一遍又一遍扫雷,也不想干正经事,网志也不知道写些什么。不过有一件事,我想最好还是现在说一下,不要留到明年再宣布。

话说今年8月份,我翻译完More Joel on
Software
,已经精疲力竭,对这种通过长时间击键,将英语改写为汉语的廉价体力+脑力劳动深恶痛绝,再也不想干了。

交稿的时候,出版社编辑问我,还想不想翻译其他书。我说,不想了,除非你们有Paul
Graham
的书。此人的上一本书是五年前出版的,我觉得不太可能再引进了。

我要翻译Paul <wbr>Graham了(zz)Graham了(zz)” TITLE=”我要翻译Paul Graham了(zz)” />

但是,几星期前,图灵公司的傅志红编辑写信告诉我,他们买下了Paul Graham的文集Hackers and Painters的简体中文版权,询问我有无翻译意向。

我要翻译Paul <wbr>Graham了(zz)Graham了(zz)” TITLE=”我要翻译Paul Graham了(zz)” />

我一秒钟也没有停顿,立刻一口答应。我还能有什么其他回答呢?我是他的粉丝,翻译Hackers and
Painters
是我一直以来的心愿。

我要翻译Paul <wbr>Graham了(zz)Graham了(zz)” TITLE=”我要翻译Paul Graham了(zz)” />

下面,我就告诉你,我为什么那么想翻译Paul Graham。

他1964年出生于英国,在康奈尔大学读完本科,然后在哈佛大学获得计算机科学博士学位。1995年,他创办了Viaweb,帮助个人用户在网上开店,这是世界上第一个互联网应用程序。1998年夏天,Yahoo!公司收购了Viaweb,收购价约为5000万美元。

此后,他架起了个人网站paulgraham.com,在上面撰写了许许多多关于软件和创业的文章,以深刻的见解和清晰的表达而著称,迅速引起了轰动。2005年,他身体力行,创建了风险投资公司Y
Combinator
,将自己的理论转化为实践,目前已经资助了80多家创业公司。现在,他是公认的互联网创业权威。

我要翻译Paul <wbr>Graham了(zz)Graham了(zz)” TITLE=”我要翻译Paul Graham了(zz)” />

但是,在我眼里,除了程序员和创业导师,他更像一个思想家。网络技术将如何影响这个世界的未来,没有人说得比他更深刻。说实话,我在网上看了这么多人的文章,在思想方面,他的文章对我影响最大。这也是我热爱他的原因。

让我来随便摘录几段他的话,大家看看,说得多精彩。

* 最纯粹、最抽象的设计难题之一,就是设计桥梁。你面对的问题,基本上就是如何使用最少的材料,跨越给定的距离。(Five
Questions about Language Design)

* 软件最大的好处,就是让一切变得简单。但是,做到这一点的方法,是正确设置缺省值,而不是限制用户的选择。(The Other
Road Ahead)

* 如果你只知道设计软件,而不知道如何部署它,那么你不能创业。(The Other Road Ahead)

*
在任何一段历史中,人们都会把某些荒谬的东西当作正确,并且深信不疑,以至于一旦你出言质疑,就有被排挤或者被暴力伤害的危险。我们自己的这个时代,要是不同以往,当然令人欢欣鼓舞。但是就我所知,它并没有任何不同。(Taste
for Makers)

* 根据经验法则,一个国家的名字前形容词越多,它的统治者就越腐败。”某某社会主义人民民主共和国”(Socialist
People’s Democratic Republic of X),可能是地球上你最不想生活的地方。(A Plan for
Spam)

* 看上去,这是一个残酷的世界,也是一个乏味的世界,我不太肯定哪一个更糟一些。(Why Nerds are
Unpopular)

*
当你踩水的时候,你把水踩下去,你的身体就会被托起来。同样的,在任何等级制社会中,那些地位得不到公认的人,就会通过虐待他们眼中的下等人,来突显自己
的身份。我读到过这方面的文章,讲述为什么美国的底层白人是对待黑人最残酷的群体。(Why Nerds are
Unpopular)

*
许许多多不创造任何财富的人—-比如本科生,记者和政治家—-一听到最富有的5%人口,占有全社会一半以上的财富,往往会认定这是不公平的。一个
有经验的程序员,很可能也持有同样看法。因为最顶尖的5%程序员,写出了全世界99%的优秀软件。(How to Make
Wealth)

*
我偶尔会读到一些文章,讲述如何管理程序员。说实话,其实只要两篇文章就够了。一篇是如果你本人就是程序员,应该如何去管理其他程序员;另一篇则是你本人不是程序员的情况。后一篇文章也许可以浓缩为两个字:放弃。(Great
Hackers)

*
不管什么时候,黑客真正想工作的地方,只有10到20个。如果你的公司不是其中之一,你所能得到的一流技术高手,不是数量多少的问题,而是一个也不会有。(Great
Hackers)

* 竞争者不过就是对着你的下巴打一拳,而投资者则是一把抓住你的下身。(How to Fund a Startup)

* 对于做产品的公司,等你需要咨询公司帮你出主意的时候,就是你开始走向灭亡的时候。(How to Fund a
Startup)

*
对于那些他们真正关心业绩的企业,欧洲人实际上能够容忍解雇工人。但是不幸的是,目前他们唯一真正关心的企业只有一家,叫做”社会”。(Why
Startups Condense in America)

*
我实际上很担心自己变得”流行”,那样的话,我就会小心翼翼,不再像以前那样敢于说蠢话。这种事情发生在许多人身上,我真的想避免它。(A
comment in Lemonodor)

他的更多思想,请看我以前翻译的《未来的互联网创业》(),《为什么在经济危机中创业》《学历证书的终结》

我要翻译Paul <wbr>Graham了(zz)Graham了(zz)” TITLE=”我要翻译Paul Graham了(zz)” />

如果一切顺利的话,Hackers and Painters的中译本《黑客和画家—-Paul
Graham文集》将在明年下半年问世。

对于我来说,翻译完这本书以后,在翻译方面,就再没有什么心愿了。乔伊斯的《都柏林人》、《一个青年艺术家的肖像》和塞林格的《九故事》、《木匠们,把房梁抬高些》都有很完美的中译本,不需要我来译,而卡尔维诺的小说集我倒是想译,但是我不懂意大利文,估计出版社也不会来找我。