0. 安装Xcode和早期开发环境配置
0.1安装Xcode
0.2设定SSH,Apache
SSH和Apache都可以从苹果系统的系统环境设置里面的共享来选择开启SSH服务器和Apache服务器,并可以从那个页面的链接来进行确认,很方便.
1.Ruby和Rails的安装
Ruby和Rails有很多种的安装方式,如果在家自己捣鼓着玩的话个人推荐用rvm来安装,因为在rvm下可以很方便的管理ruby和rails的各种不同的包括不兼容的版本.
1.1 RVM的安装
RVM的安装比较简单,但要首先选择单用户(当前用户)还是多用户(root)的安装.选择当前用户的话可以安装到$HOME下面,主要是你个人利用,系统操作风险比较小.多用户(root)的话会安装到/usr/local/rvm下面,系统的所有用户都可以利用,当然sudo权限下会有些风险.更多信息请参照rvm安装主页(https://rvm.beginrescueend.com/rvm/install/).
个人选择单用户下的稳定版的安装,命令如下.
user$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
rvm命令添加到path里面
user$ echo ‘[[ -s "$HOME/.rvm/scripts/rvm" ]] && . “$HOME/.rvm/scripts/rvm” # Load RVM function’ >> ~/.bash_profile
读取.bash_profile
$ source .bash_profile
安装完毕后的确认
user$ rvm -v
rvm 1.10.0 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]
1.2Ruby的安装
确认可以安装的版本
user$ rvm list known
安装所需要的版本
user$ rvm install ruby-1.9.3
选择安装版本为默认ruby版本
user$ rvm use 1.9.3 –default
确认
user$ruby -v
1.3Rails的安装
rvm下面不同的Rials版本是通过Gemset来管理的,所以安装之前需要建立所需要的gemset,或者不选择而安装到默认的gemset(global)里面.
user$ rvm gemset create rails3.1.0
<查看安装好的Gemsets
user$rvm gemset list
选择此次新安装的Gemset
user$ rvm gemset use rails3.1.0
查看安装好的Gemsets
user$rvm gemset list
gemsets for ruby-1.9.3-p0 (found in /Users/princy/.rvm/gems/ruby-1.9.3-p0)
global
=>; rails3.1.0
安装Rails
user$ gem install rails3
确认版本
user$ rails -v
建立一个Rails项目
user$ rails new depot
user$cd depot
user$rails server
然后可以通过下面的链接来确认程序的启动 (http://0.0.0.0:3000)
2.SVN的利用和配置
苹果系统已经安装好了SVN服务器了,所以可以很方便的利用svnadmin来建立repository.
user$ svnadmin create /Users/user/Sites/svnrepos
确认建立好的svnrepos
http://127.0.0.1/~user/svnrepos/
在svnrepos下面建立新的放前面建立好的rails项目的目录
/Users/user/Sites/svnrepos/rortest/trunk
将前面建好的目录导入到svn里面
user$ svn import -m “New ror import” depot http://127.0.0.1/~user/svnrepos/rortest/trunk
3.用Capistrano来自动release刚才的Rails系统
3.0 Capistrano安装
设定好的gemset下面安装Capistrano
user$gem install capistrano
查看安装的版本
user$ cap –version
Capistrano v2.9.0
3.1 Capistrano的Release系统的设定和配置
建立放置Release系统的文件夹
/Users/user/Source/Ruby/Rails/captest
进入上述目录后导入Capistrano的需要文件
user$capify .
根据提示会发现该目录下面建立了以下文件
Capfile config/deploy.rb
配置自动release的deploy.rb文件
#RVM设置所需内容
$:.unshift(File.expand_path(‘./lib’, ENV['rvm_path']))
require “rvm/capistrano”
#rvm_ruby_string是现在的gemset的名字
set :rvm_ruby_string, ’1.9.3-p0@rails3.1.0′#防止跳出image,css文件夹找不到错误
set :normalize_asset_timestamps, false#Release的名字和位置
set :application, “depot”
set :deploy_to, “/Users/user/Source/Ruby/Rails/captest/#{application}”#设置SVN的内容
set :repository, “http://127.0.0.1/~user/repos/rortest/trunk”
set :use_sudo, false#提示SSH用户和密码
set :user do Capistrano::CLI.ui.ask(‘SSH User:’)end
set :password do Capistrano::CLI.password_prompt(‘SSH Password’)end#设定程序源码为SVN
set :scm, :subversionrole :web, “127.0.0.1″ # Your HTTP server, Apache/etc
role :app, “127.0.0.1″ # This may be the same as your `Web` server
role :db, “127.0.0.1″, :primary => true
#role :db, “your slave db-server here”# if you’re still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts# If you are using Passenger mod_rails uncomment this:
# namespace :deploy do
# task :start do ; end
# task :stop do ; end
# task :restart, :roles => :app, :except => { :no_release => true } do
# run “#{try_sudo} touch #{File.join(current_path,’tmp’,'restart.txt’)}”
# end
# end
第一次运行Capistrano时候的初始配置(建立Release用各种的文件夹)
user$cap deploy:setup
执行Capistrano命令(Checkout SVN内容,建立本次程序版本的文件夹,Bundle install,链接本次releases到current)
user$cap deploy
向Rails系统里面导入需要的数据
user$cap deploy:migrate
3.2 测试
去刚才的Capistrano目录下面的current文件夹里面启动Rails系统
user$rails s
重新Release一次系统
user$cap deploy
去Capistrano目录下确认Current已经连到了最新额SVN版本里面了
单纯的字符串连接速度比较
String testString = new String();
for (int i = 0; i < 100000; i++) {
testString += “test”;
}
StringBuffer testStringBuffer = new StringBuffer();
for (int i = 0; i < 100000; i++) {
testStringBuffer.append(“test”);
}
testStringBuffer.toString();
StringBuilder testStringBuilder = new StringBuilder();
for (int i = 0; i < 100000; i++) {
testStringBuilder.append(“test”);
}
testStringBuilder.toString();
结论: String>StringBuffer>StringBuilder. 其中String甩开StringBuffer和StringBuilder好几条街
原因: String每次链接的时候需要重新分配新空间,连接字符串,然后指向新链接的字符串.而StringBuffer和StringBuilder不需要重新实例化字符串,只需要在后面追加就可以了.如此以来,String连接时候步骤增加不少,并且内存占用会更大一些.
其余补充:
1. 为了获得更好的性能,在构造 StirngBuffer 或 StirngBuilder 时应尽可能指定它的容量。当然,如果你操作的字符串长度不超过 16 个字符就不用了。
2. 相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。而在现实的模块化编程中,负责某一模块的程序员不一定能清晰地判断该模块是否会放入多线程的环境中运行,因此:除非你能确定你的系统的瓶颈是在 StringBuffer 上,并且确定你的模块不会运行在多线程模式下,否则还是用StringBuffer 吧 J
3. 用好现有的类比引入新的类更重要。很多程序员在使用 StringBuffer 时是不指定其容量的(至少我见到的情况是这样),如果这样的习惯带入 StringBuilder 的使用中,你将只能获得 10 %左右的性能提升(不要忘了,你可要冒多线程的风险噢);但如果你使用指定容量的 StringBuffer ,你将马上获得 45% 左右的性能提升,甚至比不使用指定容量的StirngBuilder 都快 30% 左右。
About Solr
Home page
Solr books
To be continued …
Find all you want?
Some other useful knowledges:
Hadoop:
Two Core Components:
Feature:
TO Not NoSQL
Hadoop users
Other words
EcoSystem of Hadoop

Useful links:
http://hadoop.apache.org/common/
http://www.cloudera.com/
http://www.slideshare.net/cloudera/tokyo-nosqlslidesonly
http://www.slideshare.net/xefyr/introduction-to-hadoop-hbase-and-nosql
http://www.slideshare.net/adorepump/hbase-nosql
1 在ubuntu11.04下安装tomcat 6
sudo apt-get install tomcat6 tomcat6-admin tomcat6-common tomcat6-user tomcat6-docs tomcat6-examples
sudo apt-get install libmysql-java
2.下载apache-solr-1.4.1.zip并解压
cd ~/
wget -c http://ftp.riken.jp/net/apache//lucene/solr/1.4.1/apache-solr-1.4.1.zip
unzip apache-solr-1.4.1.zip
sudo cp ~/apache-solr-1.4.1/dist/apache-solr-1.4.1.war /var/lib/tomcat6/webapps/solr.war
sudo cp -R ~/apache-solr-1.4.1/example/solr/ /var/lib/tomcat6/solr/
3. 在tomcat6里面设置solr环境
sudo vim /etc/tomcat6/Catalina/localhost/solr.xml
加入如下内容
<Context docBase=”/var/lib/tomcat6/webapps/solr.war” debug=”0″ privileged=”true” allowLinking=”true” crossContext=”true”> <Environment name=”solr/home” type=”java.lang.String” value=”/var/lib/tomcat6/solr” override=”true” /> </Context>
4. 设置solrconfig.xml环境,并建立data文件夹
mkdir /var/lib/tomcat6/solr/data
设置tomcat6访问data的权限
chown -R tomcat6:tomcat6 /var/lib/tomcat6/solr/data/
通过solr/conf/solrconfig.xml来设置data路径
<– Used to specify an alternate directory to hold all index data other than the default ./data under the Solr home. If replication is in use, this should match the replication configuration. –>
/var/lib/tomcat6/solr/data
5. 重启tomcat后进入solr
sudo service tomcat6 restart
http://localhost:8080/solr/admin
Done