VPS搭建ROR环境
root@vps:~# apt-get install build-essential
root@vps:~# apt-get install git-core mercurial subversion
root@vps:~# vim /etc/mysql/my.cnf
default-character-set=utf8
root@vps:/usr/local/src# apt-get install wget curl
root@vps:~# cd /usr/local/src/
root@vps:/usr/local/src# wget http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise_1.8.7-2011.03_amd64_ubuntu10.04.deb
更新地址:
http://www.rubyenterpriseedition.com/download.html
root@vps:/usr/local/src# dpkg -i ruby-enterprise_1.8.7-2011.03_amd64_ubuntu10.04.deb
root@vps:~# apt-get install php5-cli php5-cgi
libmysqld-dev
libmysql-ruby
libmysqlclient-dev php5-mysql
root@vps:/usr/local/src# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz
root@vps:/usr/local/src# tar zxvf pcre-8.10.tar.gz
root@vps:/usr/local/src# wget http://nginx.org/download/nginx-0.8.54.tar.gz
root@vps:/usr/local/src# tar zxvf nginx-0.8.54.tar.gz
root@vps:/usr/local/src/nginx-0.8.54# apt-get install libcurl4-openssl-dev
root@vps:/usr/local/src/nginx-0.8.54# ./configure –sbin-path=/usr/local/sbin –with-http_ssl_module –with-http_stub_status_module –with-http_gzip_static_module –with-pcre=/usr/local/src/pcre-8.10 –add-module=/usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/nginx/
root@vps:/usr/local/src/nginx-0.8.54# make
root@vps:/usr/local/src/nginx-0.8.54# make install
root@vps:/usr/local/src/nginx-0.8.54# service apache2 stop
root@vps:/usr/local/src/nginx-0.8.54# nginx
root@vps:/usr/local/src/nginx-0.8.54# vim /usr/local/nginx/conf/nginx.conf
http {
…
#——————–passenger————————————
passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.2;
passenger_ruby /usr/local/bin/ruby;
#—————————————————————–
…}
root@vps:/usr/local/src/nginx-0.8.54# mkdir /usr/local/nginx/conf/vhosts
root@vps:/usr/local/src/nginx-0.8.54# vim /usr/local/nginx/conf/nginx.conf
http {
…
include /usr/local/nginx/conf/vhosts/*;
}
root@vps:/usr/local/src/nginx-0.8.54# vim /usr/local/nginx/conf/vhosts/rails_test
server {
listen 3000;
server_name 100.110.110.110;
root /var/www/test/railsdemo/public/;
passenger_enabled on;
rails_env development;
}
root@vps:~# nginx -s reload
原文地址:
个性化你的Firefox浏览器
配置篇:
在浏览器中输入about:config把browser.ctrlTab.preview设为true就能启用分页预览。长按ctrl+tab会跳出标签缩略图(短按会直接切换到最近浏览的tab),切换中在某个缩略图上按w键或鼠标中键能关闭其对应的标签页。
ps:ctrl+shit+tab能调出所有窗口的缩略图(cool)。
about:config里把browser.allTabs.previews设为true,点击标签栏最右边“列出所有标签页”按钮也会显示标签缩略图。
插件篇:
- Firebug 开发人员必装,用来编辑,调试和监测的CSS,HTML和JavaScript… 官方网址:
- YSlow 开发人员必装,YSlow的分析网页,并建议如何改善其业绩的基础上对高性能网页规则。 YSlow的是一个Firefox插件与Firebug的网页开发工具集成。
YSlow的成绩网页基于三个预定义的规则集或用户定义的规则集之一。它为提高网页的效能的建议,总结有关网页页面的组件,显示统计,并提供性能分析工具,包括Smush.it™和JSLint。官方网址:
http://developer.yahoo.com/yslow/
- JSView 很方便的用来查看网页上包含的css,js文件。下载地址:
https://addons.mozilla.org/zh-CN/firefox/addon/jsview/ ,官方网址:
- ColorZilla 前端人员必装,先进的鼠标点选器,颜色选择器,页面缩放和其他有意思的东西。
http://www.colorzilla.com/firefox/
- Tab Scope 通过弹出框预览和导航标签内容,风格类似于Windows7中任务栏中的效果,官方网址:
http://www.xuldev.org/tabscope/
- Source Viewer Tab 在新的标签页中显示网页源代码,官方网址:
http://piro.sakura.ne.jp/xul/_viewsourceintab.html.en
7.1. Pearl Crescent Page Saver 保存网页为图片,有免费的Basic版及收费的Pro版,官方网址:
http://pearlcrescent.com/products/pagesaver/
7.2. Pixlr Grabber 可以选取区域 官方网址:
7.3. Capture and Annotate 可做标注 官方网址:
- AutoProxy 撞墙已成往事!下载地址:
https://addons.mozilla.org/zh-CN/firefox/addon/autoproxy/ 官方网址:
- Delicious Bookmarks 是
Delicious官方Firefox插件,世界领先的社交书签服务(原del.icio.us)。它集成了Firefox的书签和标签,并保持同步,方便,方便访问。下载地址:
https://addons.mozilla.org/zh-CN/firefox/addon/delicious-bookmarks/ 官方地址:
-
Google Toolbar for Firefox 集成了几乎所有的产品的搜索及快速入口。
-
Chromifox Companion 主题插件,将你的Firefox浏览器改装成为简洁的Chrome外观。
-
Domain Details 显示服务器类型、报头、IP 地址、位置国旗、和链接到Whois记录,下载地址:
https://addons.mozilla.org/zh-CN/firefox/addon/domain-details/ 官方地址:
- Web Developer 集成了各种web开发工具,下载地址:
https://addons.mozilla.org/zh-CN/firefox/addon/web-developer/ 官方网址:
http://chrispederick.com/work/web-developer/
- DownThemAll 批量下载工具,它具有先进的加速器,增长速度高达400%,它可以让你暂停和随时恢复下载,以及最后但并非最不重要的,它完全进入你喜欢的浏览器集成的!官方网址:
- MeasureIt 网页尺子,任何网页上画一条尺来检查的宽度,高度,以像素为单位或页面元素的对齐方式。下载地址:
http://www.kevinfreitas.net/extensions/measureit/ 官方网址:
- TabCloud 支持 Chrome/Firefox,可以同步多台电脑的标签页。TabCloud 可以解决多台电脑多组标签页不同步的问题。安装扩展后,首先需要登陆 Google 账户。如上图,点击 TabCloud 图标后,会出现当前标签组保存项以及之前保存的标签组。点击 Click to Name 可以修改标签组名称,之后点击保存按钮即可。之后在安装 TabCloud 并登陆同一账户的电脑上就可以看到这组标签页了。下载地址:
https://addons.mozilla.org/en-US/firefox/addon/268255/ 主页:
http://chrometabcloud.appspot.com/
- Page Speed 对网页的性能进行评估,以及获取有关如何改善网页性能的建议
http://code.google.com/intl/zh-CN/speed/page-speed/download.html
抢座反思(转载)
去年在大连待了4个月,参加一个叫“
中国加速”的孵化器的
项目,我们的项目叫“抢座网”,虽然是从8月开始全职投入,但加上前面几个月的兼职,算起来也有一年了,中国加速的目标是帮助抢座找到投资,虽然这不是我
们的目标,但不管哪一个目标,对于我来说,都是失败了。而且失败的很没有新意,基本上你从任何一本创业书籍或者文章中都可以读到这些道理,只是我又以自己
的亲身实践验证了什么叫“知易行难“。1. 做了太多的功能,但是每个功能都没做好,虽然看了
Getting Real讲宁可做半个产品(half product),也不要做半成品(halfass product), 我们还是没有避免做出了一个半成品。
-
花了太多的时间和精力在毫不相干的事情上,我们几乎有一个月的时间在做和抢座毫不相干的事情
-
在产品上花心思太少,对用户缺少爱,我一直有个错误的认识,既然我们的产品是免费的,用户就应该对产品的瑕疵和Bug有所包容
一直没有找到一个准确的产品定位,当然这个在初期不可避免,需要不断的尝试新方向,但是我们走了太多的冤枉路,绕了一圈,最后又回到原点,就像《只有偏执
狂才能生存》里面讲的,我们就像是迷失在沙漠里,没有一个坚定的方向,也缺少一个领路人,最终过多的犹豫和折返消耗了时间,也消耗了士气。
-
缺少一个从全局考虑的人,一直在被用户牵着鼻子走,总是觉的用户不愿意掏钱是因为缺少功能
-
因为抢座的模式涉及到票款收入,所以在初期高度依赖线下的销售,但是我们在这块基本没有作为。
当然还有其它原因,实际上很难找到失败的全部原因,我只能说,我们是因为犯了这些错误才失败,但即使避免了这些错误,也并不能保证成功,就像
《Getting
Real》里面讲的,失败不是成功之母,你从失败中只能学到不应该做什么,却永远学不到应该做什么,要想成功,只能从成功中去学习,所以这篇贴的意义仅在
于我个人的反思和总结。原文地址:
解决ssh使用一段时间断开的问题(转载)
(
ssh连接到远程服务器,会在一段时间后自动断开,可以通过调整远程服务器ssh服务的参数解决。以下这个
方法通过客户端解决。
首先找到所在用户的.ssh目录,如root用户该目录在:
/root/.ssh/
在该目录创建config文件
vi /root/.ssh/config
加入下面一句:
ServerAliveInterval 60
保存退出,重新开启root用户的shell,则再ssh远程服务器的时候,
不会因为长时间操作断开。应该是加入这句之后,ssh客户端会每隔一
段时间自动与ssh服务器通信一次,所以长时间操作不会断开。
渲染视图
一般情况下当我们访问http://localhost:3000/demo/index时,会执行demo控制器下的index动作,而后渲染
app/views/demo/index.rhtml视图模板,将数据填充进去,并取回结果,通常是一个HTML文件,返回给WEB服务器,最后返回给
客户端浏览器。当demo控制器内没有index动作时,Rails仍然会假设你有一个名叫”index”的空动作,只是负责渲染index.rhtml视图模板。每个控制器的方法都隐含了一个 render命令,而render同时又是一个真实存在的方法,如:
def index
render :template => “demo/index”
end指定渲染:
如果一个控制器的动作不想渲染其默认的模板,那么我们可以调用render方法以指定渲染其他任何一个模板,整个系统中的任何一个视图模板都可以被渲染。 渲染其他动作的模板:
比如,当用户提交了不能通过验证的数据,我们需要用户对数据作进一步修改。一般采用的方式是把用户提交的数据回显到表单中,给出错误消息提示,以便于用户修正数据、再次提交。
渲染其他动作的视图模板的原因是由于显示表单的动作和处理表单的动作往往不是同一个动作。所以处理表单信息的动作需要以某种方式再次显示原来表单的那个视图模板。如:
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def new
@article = Article.new
end
def create
@article = Article.new(params[:article])
if @article.save
redirect_to articles_path
else
render :new
end
end
end 渲染一个完全不同的模板: 可以通过 :template或者 :file 参数在一个动作中渲染任意指定的模板文件。
:template 参数指定一个模板根目录的相对路径,默认是 app/views (可以修改)
如:render :template => “abuse/report”
app/views/abuse/report.rhtml :file 参数接收一个文件的绝对路径。
如:render :file => “/railsapps/myweb/app/views/templates/common.rhtml” 渲染局部模板: 渲染视图可以渲染局部模板(通常简称为“局部渲染”),使用局部模板可以将你的模板分割成小文件,更加清晰,局部模板也可以被复用。 在控制器中渲染局部模板一般被AJAX调用控制器中的动作的请求,并更新页面上指定的一个区域,另外还可以在视图层中嵌入局部模板如:
render :partial => “location” 局部模板的命名规则必须在最前面加上一个下划线,并将其保存在一个视图模板文件夹内,在引用的时候不需要下划线。 渲染内联模板代码:(不建议使用) 有时候你需要把一段非常小的视图代码发给浏览器(主要用户AJAX视图辅助该当)
render :inline => “<%= auto_complate_result(@headings, ‘‘name’’) %>” Rails处理内联视图代码的方式和处理视图模板完全一致。 渲染其他数据类型: 1. :text 有时候动作只需要给浏览器返回一段简单的文本,可以使用
render :text => “Submission accepted”
直接渲染、返回一段文本。 2. :json JSON是专门提供给JavaScript使用的轻量级数据结构,通常是将AJAX请求的响应值通过这种模式返回。
render :json => @record.to_json 3. :xml
render :xml => @record.to_xml 什么都不渲染: 很少的情况下动作不想渲染任何东西(为了避免在Safari出现BUG,不渲染任何东西意味着发送一个空字符串给浏览器)
render :nothing => true, :status => 401 #未授权的渲染的属性: 在使用render方法时,它可以接受一些额外的属性 1. :content_type
在WEB上的东西都属于MIME规定的类型,如果HTML内容的类型为text/html。在Rails中可以发送其它类型的内容,但Rails并不验证你实际发送的内容是否是你用 :content_type 指定的类型,所以需要我们自己保证一致性。 2. :layout
默认情况下,Rails会自动选择其需要渲染的布局模板返回给浏览器。使用 :layout 可以指定是否需要布局模板以及使用哪个布局模板。 3. :status
HTTP协议中宣言很多种状态码以用来标识返回给客户端的内容状态,Rails在大多数情况下都可以按照自己的状态选择合适的状态码,如200OK代表一次请求处理成功。
IE PNG FIX
大家都知道在IE6及以下版本对png图片支持不是很好,透明的部分会显示为灰色,目前解决这一BUG的方法有多种,一种是使用
http://jquery.andreaseberhard.de/pngFix/的方法,一种是使用
http://www.twinhelix.com/css/iepngfix/的方法。从在项目中使用的经验来看,更偏向于使用第二种方法(
http://www.twinhelix.com/css/iepngfix/),这种方案更稳定,效果很好,使用简单,支持png背景。使用方法如下三步即可:一.
先下载
iepngfix.zip文件包,将blank.gif、iepngfix.htc、iepngfix_tilebg.js三个文件放入相应目录
blank.gif 为透明的1×1大小的gif图片
iepngfix.htc 需要在CSS代码中调用二.
在你的CSS代码中需要对png兼容处加上{behavior:url(“/javascripts/iepngfix.htc”)}
如:
你需要修改iepngfix.htc文件中
var thisFolder = document.URL.replace(/(\|\/)[^\\/]*$/, ‘/’);
IEPNGFix.blankImg = thisFolder + ‘‘blank.gif’’;
保证blank.gif的文件位置正确。三.
最后在页面中引入
JS文件,以支持png背景。——– 到此完成!——–为了获得更好的效果,我们可以这样做:
[if lte IE 6]>
<![endif]
需要对png图片兼容的代码处加上class: pngfix即可,这样一来减少了对不同元素的处理,维护一个样式即可,同时也避免了对其它浏览器的影响。
不过我在项目中的处理是通过后台程序判断访问的浏览器类型及版本,只将这两行代码输出给IE6
JavaScript 数组去重
function unique(array){
array.sort();
for ( var i = 1; i if ( array[i] === array[i-1] ) {
array.splice(i–, 1);
}
}
return array;
}
cycle轮转方法
ruby+gem常用命令
ruby -v #查看ruby 版本ruby -e ‘‘require”watir”; puts Watir::IE::VERSION’‘ #查看watir版本
gem -v #gem版本
gem update #更新所有包
gem update –system #更新RubyGems软件
gem install rake #安装rake,从本地或远程服务器
gem install rake –remote #安装rake,从远程服务器
gem install watir -v(或者–version) 1.6.2#指定安装版本的
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n ‘‘[0-9]’’ –local #查找本地含有数字的包
gem search log –both #从本地和远程服务器上查找含有log字符串的包
gem search log –remoter #只从远程服务器上查找含有log字符串的包
gem search -r log #只从远程服务器上查找含有log字符串的包
gem help #提醒式的帮助
gem help install #列出install命令 帮助
gem help examples #列出gem命令使用一些例子
gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #清除所有包旧版本,保留最新版本
gem contents rake #显示rake包中所包含的文件
gem dependency rails -v 0.10.1 #列出与rails相互依赖的包
gem environment #查看gem的环境
nginx -h
nginx version: nginx/0.8.54
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
重启: nginx -s reload