mysql,Linux,HighPerformance,ruby on Rails

2011年3月21日星期一

快速构建GIT仓库方法

老手请直接过滤,谢谢

Create remote repository:

ssh mpapis@niczsoft.com -C "git init --bare repos/library3.git"

Create local repository:

git init
git add .
git commit -m "initial commit"

Tell local repository to synchronize with remote repository:

git remote add origin mpapis@niczsoft.com:repos/library3.git
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git push

参考这个:

http://niczsoft.com/2011/03/fastest-way-to-get-git-server-v2/


--
Deshi Xiao
Twitter: xds2000
E-mail: xiaods(AT)gmail.com

2011年2月28日星期一

能让我把git库同步到svn的步骤,内幕版

把git同步到svn的想法有好久了,就是没成功。那叫一个不爽。

今天从GL挖来惊喜:

步骤:

1. cd  $git-workdir
$git-workdir就是你本地的git目录,注意branch要在master,我只同步到trunck.说白了只同步,不使用SVN

2.git svn init --username=$username https://remote-testbed.googlecode.com/svn/trunk/$git-workdir

3.git svn fetch
 r11 = 37275f86ebaa13616554dc5ddbeb1112d6e897f3 (git-svn)
我这里还出worning,没办法等。。。。

4.git branch svn/master master

5.在当前目录跑这个叫本就可以。
 #!/bin/sh

HEAD
="$(git symbolic-ref HEAD)" || exit 1

die()
{
        echo
"git-svn-update: $*"
       
exit 1
}

git svn fetch
|| die "failed to fetch SVN changes"
git branch
-f svn/tmp master || die "failed to update/create temporary working branch"
git rebase
--onto git-svn svn/master svn/tmp || die "failed to rebase on top of git svn branch"
git svn dcommit
|| die "failed to update SVN repository"
git branch
-f svn/master master
git checkout
"${HEAD#refs/heads/}"
git branch
-D svn/tmp
6.done.


--
Deshi Xiao
Twitter: xds2000
E-mail: xiaods(AT)gmail.com

2010年12月24日星期五

authlogic with rails3,遇到问题,找到方法,解决之路

authlogic是认证gem,是当前最普遍使用的一款工具包,对rails3集成还不是很完美。(特对rails3.0.3+ruby1.9.2p0)
这里特意把相关的参考资料索引在这里,方便你来使用:

http://asciicasts.com/episodes/160-authlogic
这里思路和代码都比较完整。

https://github.com/binarylogic/authlogic
authlogic的codebase

http://www.dixis.com/?p=352
这个提到了使用rails3_generators

http://techoctave.com/c7/posts/37-authlogic-and-rails-3-0-solution
这个提到了问题的根源和解决方法

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

2010年12月5日星期日

Git使用过程中遇到的问题及解决方法

1、在github上fork过的项目创建branch
参考[1]

2、使用less看的log不是彩色的,使用less -R log/development.log就可以。
参考[2]

[1] http://www.zorched.net/2008/04/14/start-a-new-branch-on-your-remote-git-repository/
[2] http://www.sanityinc.com/articles/view-rails-logs-with-less
--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年11月21日星期日

rails3 Nested Forms blah blah

Rails3 UJS and nested form, I have searched more sample like,eg: this.
I found all reference's source is Ryan Bates nested form exmaple,based in github. but in rails3,i came crome this view [1]. it's all sucks.
the cause reason is the hidden temple default value is false.when sumit action,the hidden values will not discard,and continue update this params.
i see the log,i think maybe some validation is wrong. oh,i found the original accepts_nested_attributes_for is
reject_if => lamda {|a| a.values.all?(&:blank?)}
this is blocker question.
i change the evalution assert to :
reject_if => proc {|a| a[:name].blank? }
attention,the:name is task's attribute name.
this is indicate original code is not working on rails3.
this is all.done.for your convinent test,i have attached my sample deme.have a try.

1.see attached project-nestform.png
2.nestform4rails3.zip

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

2010年10月18日星期一

SSH With PublicKey issue:SSH Error: Permission denied (publickey,gssapi-with-mic) resolve way.

今天给一个服务器加public key认证。出错:
Permission denied (publickey,gssapi-with-mic)
sshd_config配置是以前的备份,不会有错,就是过不去。网上一大堆出招的,但均无效果。
回到问题报错提示,这个应该是权限,但哪里呢?
最后还是这里给了提示
make sure that the *right* permissions are set up

drwx------ 2 virender virender 4096 May 7 04:51 .ssh
-rw------- 1 virender virender 393 May 7 03:41 .ssh/authorized_key

还有不少人遇到我这个问题,但都没人解决.

其实就是.ssh目录权限如果太大,sshd是不让使用公钥认证的。
所以,在你配置完之后,这样处理:
$ chmod go-w ~/
$ chmod 700 ~/.ssh
$ chmod go-rwx ~/.ssh/*
OpenSSH may also refuse to support public key authentication if the file permissions are too open.
OpenSSH在文件权限属性太开放,还是会拒绝支持公钥认证。

Done.


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

2010年10月12日星期二

OpenOffice 3.2.1 On Fedora 13 Installation log

在Fedora 13上,安装OpenOffice 3.2.1总是不顺利,Shit!记录下来

想删除:
rpm -qa | grep ooo > rmlist
rpm -qa | grep openoffice >> rmlist
rpm -e `cat rmlist`

想安装:
dxiao ~/Downloads/src $ tar zxvf OOo_3.2.1_Linux_x86_install-rpm-wJRE_en-US.tar.gz
dxiao ~/Downloads/src $ cd OOO320_m18_native_packed-1_en-US.9502/
dxiao ~/Downloads/src/OOO320_m18_native_packed-1_en-US.9502 $ sudo ./setup
Done!



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

2010年10月9日星期六

遇到的Rails3 动向记录

1.adding "-j" parameter for "rails new" command

这个patch意在把jquery集成,改进集成的复杂度。+1, Rails Core Team还在review中,激烈啊

2.rails3下想使用thin,gem install thin,然后加到Gemfile,使用rails s thin启动。

3.读到Santiago Pastorino的rails学习过程,心得和上一博文中得到的经验一样,从lighthouse入手。当然最重要的还是坚持。

4.Phusion Passenger 3.0.0 RC1发布啦,老用户可以测试一把。

5.学东西例子最重要,把别人的代码拉下来跑一跑,理解起来快多了。当然这种方式适合进阶,新手莫入。Rails 3 example of jQuery UJS



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

2010年10月8日星期五

Rails3 Contribute workaround

1.是要看这个地址:
http://guides.rubyonrails.org/contribute.html
这里详细介绍了review Rails代码需要的过程。

2.订阅maillist: Rails-core,如果你有gmail,可以使用标签+过滤很方便的管理邮件列表。

3.到github.com Fork一个rails工程,然后在本地:
cd rails
bundle install
更新一下本地依赖包。

4.关注Rails-core邮件列表的每一个帖子。把别人的patch下载后在本地测试。把测试结果可以贴到lighthouse,这就是你社区贡献的开始。虽然没大牛写程序那么直接,但等你熟悉代码后也是可以贡献patch的。


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

2010年9月15日星期三

JasperETL遇到org.eclipse.swt.SWTError: XPCOM error -2147467259说明

我下载的JasperETL-All-r35442-V3.2.3,起来后想import demo发现报如下错误:
[xds2000@localhost jasperetl]$ org.eclipse.swt.SWTError: XPCOM error -2147467259
    at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
    at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:285)
    at org.eclipse.swt.browser.Browser.<init>(Browser.java:118)
    at org.talend.repository.ui.actions.importproject.ImportDemoProjectPage.createDescriptionIn(Unknown Source)
    at org.talend.repository.ui.actions.importproject.ImportDemoProjectPage.createControl(Unknown Source)
    at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:170)
    at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:669)
...略

原因大家说的都不清楚。我这里调查了一下,原因是JasperETL使用的Eclipse 是3.4版本的。现在eclipse 3.4 line已经不再维护了,你可想而知多么的烂。
开源软件的烂就是磨练我的意志。。。:-)

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

2010年9月14日星期二

开源就是南泥湾-解决JasperETLv3.2.3不能正常启动问题。

下载JasperETL-All-r35442-V3.2.3安装包。解压到本地。
cd JasperETL-All-r35442-V3.2.3
chown +x JasperETL-linux-gtk-x86
./JasperETL-linux-gtk-x86
抱如下错误:
ERROR: Exception during Initialization
java.lang.NullPointerException
    at org.talend.designer.codegen.config.JetBean.getUri(Unknown Source)
    at org.talend.designer.codegen.config.JetBean.getTemplateFullUri(Unknown Source)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory.initializeEmittersPool(Unknown Source)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory.access$7(Unknown Source)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory$JobRunnable.doRun(Unknown Source)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory$JobRunnable.run(Unknown Source)
log4j:ERROR Plugin: org.talend.libraries not found in TOSAppender.
Exception in thread "Code generation background thread" java.lang.IllegalStateException: Workspace is closed.
    at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:339)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory$JobRunnable.doRun(Unknown Source)
    at org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory$JobRunnable.run(Unknown Source)

问题的关键就是xulrunner版本在捣鬼。先确认eclipse里xulrunner的版本:
在菜单[help]->[about eclipse]
再点击弹出面板中的installation Details按钮,然后显示的eclipse所有插件列表。
找到xulrunner插件为:  XULRunner    1.9.1.2_v201003050540R    org.jboss.tools.xulrunner.feature.feature.group
然后在系统中确认你的nulrunner版本是否和此插件一致。
如果不一致,就会抱错。解决方法是指定xulrunner版本

下载包:
http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/
选择你需要的版本。
如1.9.1runtimes
http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.1.11/runtimes/
解压放在/usr/local/lib/xulrunner
然后在JasperETL启动配置文件:类如JasperETL-linux-gtk-x86.ini加上一行就可以解决你的问题。
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/local/lib/xulrunner/

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

2010年8月11日星期三

读gem sourcecode or doc的工具

阅读别人的代码,估计是最好的学习方式了。但遥想之前,不管是java获得C++,要求阅读者具备的积累都不是"一天"就能搞定的。
Ruby语法简单,有点不优雅,但让我能快速学习上手。
tip:
gem install open_gem

安装此插件后,
gem open rails 就可以读原码。
gem read rails 就可以看文档。

当然操作系统也要提个好的,fedora是我的推荐。


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

2010年8月9日星期一

git pull config question

I think this very useful for git user, just notice this url

Under [branch "master"], try adding:

[branch "master"]
    remote
= origin
    merge
= refs/heads/master

This tells Git 2 things:

  1. When you're on the master branch, the default remote is origin.
  2. When using git pull on the master branch, with no remote and branch specified, use the default remote (origin) and merge in the changes from the master branch.


ref:
http://stackoverflow.com/questions/658885/how-do-you-get-git-to-always-pull-from-a-specific-branch

WEB基本功,HTML优化

今天看了一篇文章,HTML优化,很实用。
http://perfectionkills.com/optimizing-html/
中文版也不缺乏:
http://younglab.blog.51cto.com/416652/294670

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

2010年8月3日星期二

Rails3使用jquery rjs,可能需要注意的地方。mark

这里假设你使用rails3, jquery rails.js

你想实现ajax loading效果,却发现rails的tag里只使用:remote => true
并没有rails2里使用的loading函数。
我看了rails.js,看到

The UJS drivers trigger six events on every AJAX call:

  • ajax:before
  • ajax:loading
  • ajax:success
  • ajax:failure
  • ajax:complete
  • ajax:after
但是怎么使用是个问题。
看了这个ticket,就知道并不是所有人了解:
https://rails.lighthouseapp.com/projects/8994/tickets/4486-new-ujs-helpers-do-not-have-a-way-to-render-a-loading-text-icon
his can easily be accomplished each driver has a custom callback that fires before the request is sent, here is an example using the jQuery driver.
  $('#new_resource').live('ajax:loading', function() {
// code to display loading div
});


refs:
https://rails.lighthouseapp.com/projects/8994/tickets/4486-new-ujs-helpers-do-not-have-a-way-to-render-a-loading-text-icon
http://www.slideshare.net/adamlogic/jquery-and-rails-sitting-in-a-tree
http://code.alexreisner.com/articles/link-to-remote-with-ujs.html

2010年7月24日星期六

Rails3beta4使用Ajax的一些参考

update: prototype更新有点误解,现在已经更正。

Rails3Beta4的Ajax参考文档目前不是很多,因为版本更新很快,参考的内容很多都已经过期.完整可参考的文档少之又少.经过近期项目的经验,我想总结一下:
1, Rails3Beta4已经快接进RC,想使用ajax,直接在link_to,form_tag,form_for加上remote=> true,就能产生ajax request, Controller里加不加respond_to都会去找rjs,或js.erb.两个后缀没有什么差别,关键在于使用js.erb感觉和.html.erb统一了后缀名而以.(今天跑个demo,才知道使用js.rjs就可以调用prototype了,方法可以在ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods里找到。你可以使用railsapi.com生成的文档查看到 )
2.我在使用form_tag里加上select_tag,想使用select_tag的onchange加上submit事件来请求form_tag中的ajax,不能成功.感觉是我的思路的问题,直接使用select_tag没有remote属性,不过直接使用ujs的onchange事件里加上ajax就能控制.通过这样的体会,你会发现使用UJS确实比Rails之前的RJS更简单,更方便,实现的效果和原来的是一样的.一样可以调用contorller里的方法及js.erb.
JQuery的UJS调用参考文档多,所以大家才想办法在Rails里去掉prototype使用jquery.不然如果直接prototype,怎么使用还需要去看prototype,有点让新人不知手措.(教程是没更新的,但查文档是有helper函数,生成项目试用就可以上手。)
总结,Rails3里,ajax的使用更开放,也就是说,其实你在rails3中使用哪个框架都可以,只需要修改一个rails.js就可以了.
参考:

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

2010年7月16日星期五

RVM,标准配置Ruby环境的首选

rvm,快速,高效,简洁,所以你需要的优化,它全部具备。只要你有一台Linux/Mac系统,就可以在5分钟内完成安装(限制仅在你的网速)。
第一步:
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

第二步:
在你的.bash_profile,把这段放在最后一行,保证PATH里有它就可以.贴上后,新开一个terminal,然后source ~/.bash_profile就可以了。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
第三步:
安装你可爱的Ruby环境吧
$ rvm install 1.8.7
可选,第四步:
想使用就这样操作:
 $ rvm 1.8.7

想知道更多,运行这句:

$ rvm list
或者:
$ rvm help


第五步:
想把整个ruby版本作为自己默认的环境,运行这句:
$ rvm 1.8.7 --default

收工。去玩Ruby& rails吧

参考这里:
http://everydayrails.com/2010/06/28/rvm-gemsets-rails3.html
--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年7月11日星期日

ruby1.9.1对String的处理有细微差别,注意

今天在ruby1.9.2-dev环境下起Oria,报了个错:
/Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `+': String can't be coerced into Fixnum (TypeError)
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `block in port'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `each'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `inject'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `port'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:43:in `parse_options'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:49:in `start'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:11:in `go'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:76:in `<top (required)>'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/oria:19:in `load'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/oria:19:in `<main>'

心中奇怪,这昨天才用了一下没这问题啊。找开对应文件定位到:
  def self.port
    @@port ||= "Oria is easily the coolest in-memory, super-simple KVS. Cool people use it.".split("").inject(0) {|total, char| total += (char[0].class == String ? char[0].ord : char[0])}
  end

直接去irb下跑,原来作者是使用charcode加出来的一个端口,但1.9.2修正了1.8.7字符串的显示不一致问题。
原来在1.8.7下,'a'[0]出来的是ascii code,但在1.9.2下'a'[0]还是返回'a',这代码就跑不动了。
ok,了解原因后,改一行就ok了。
@@port ||= "Oria is easily the coolest in-memory, super-simple KVS. Cool people use it.".split("").inject(0) {|total, char|  total += (char[0].class == String ? char[0].ord : char[0])}

兼容1.8.7.


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

mac下删除ports,使用homebrew

homebrew是为rubist准备的安装管理器,所以port删除是当务之急。
search并当了一回小白鼠,成功! http://guide.macports.org/chunked/installing.macports.uninstalling.html
第一步:
% sudo port -f uninstall installed
第二步:
% sudo rm -rf \
/opt/local \
/Applications/DarwinPorts \
/Applications/MacPorts \
/Library/LaunchDaemons/org.macports.* \
/Library/Receipts/DarwinPorts*.pkg \
/Library/Receipts/MacPorts*.pkg \
/Library/StartupItems/DarwinPortsStartup \
/Library/Tcl/darwinports1.0 \
/Library/Tcl/macports1.0 \
~/.macports


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