I kown this song  

2012-03-08 17:09

 

万语千言不及歌词映入眼帘的瞬间!


jruby安装配置及使用  

2011-12-26 17:19

         Ruby是现在编程界讨论得正热火朝天的一种语言。这种语言功能强大而且易于使用;同时Ruby还紧密绑定到例如Ruby on Rails等web应用程序开发框架中。另一方面,在过去的十年间,Java正迅速成长为业界领先的面向对象的软件开发语言并且运行于诸多平台之上。而JRuby则是一个100%的Ruby编程语言的纯Java实现。本文是JRuby的一个入门篇;同时,还会向你展示它是如何结合Java语言的优势,从而提供给Java开发者一个快速而强有力的创建应用程序的可选方案的。

         本篇主要介绍jruby的安装及使用

1.jruby的安装:

wget http://jruby.org.s3.amazonaws.com/downloads/1.6.5/jruby-bin-1.6.5.tar.gz   
tar zxvf jrbuy-bin-1.6.5.tar.gz

配置好环境变量:
JRUBY_HOME=~/jruby-1.6.5/
export PATH=$JRUBY_HOME/bin:$PATH

jruby -v

看到输出版本信息,证明安装成功。

 2.jdk的安装

wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz

tar zxvf jdk-7u2-linux-i586.tar.gz
配置环境变量:
JAVA_HOME=~/jdk/
export PATH=$JRUBY_HOME/bin:$PATH

java -version

看到java 版本信息,证明jdk安装成功

3.jruby的使用,基本跟ruby一样,使用的时候加 jruby -S ,比如, jruby -S gem install rails -v 2.3.11 jruby -S rake db:migrate

4.warbler的使用,warbler是一个gem,可以把rails的项目打包成.war文件,可以放到tomcat下运行。用法: warble war, 也可以自己配置web.xml 内容, warble config, 在生成的config/warble.rb 中进行配置。

 

  


让远程服务器后台运行  

2011-10-21 12:00

用ssh在远程服务器上做操作, 有的时候一个任务需要很长时间才能完成,比如下载东西,安装之类的。如果临时有事,想关掉电脑就会杀死所做的操作,想让远程服务器自己在后台运行程序。幸好,找到了nohup。

 用法很简单, nohup command &

 这样服务器就会在后台执行command, 我就可以关机走人了


beyond 1991 生命接触演唱会  

2011-09-03 13:54

 

生命不息,beyond不止!

 


使用geo_ip获得当前访问用户所在的城市  

2011-08-14 23:06

   今天做东西有个需求,需要显示当前访问用户所在的城市。考虑到要用ip跟城市的对应,找了很多资料,发现有个gem很好地址在 https://github.com/jeroenj/geo_ip

   使用之前需要在http://ipinfodb.com/ 注册一个用户,激活时可以获得自己的key。需要用自己的key来访问该网站的接口。

   示例:

def self.get_city_by_ip(ip)
    GeoIp.api_key = 'your key'
    ip_info = GeoIp.geolocation(ip)
    ip_info[:city] == "-" ? "beijing" : ip_info[:city].downcase
end

链接到锚点之前的平滑移动  

2011-08-12 10:04

今天要做一个链接到锚点的平滑移动,发现了一个代码很好 简洁明了。

 

jQuery("html,body").animate({scrollTop: jQuery("#page_comment").offset().top}, 1000);

ubuntu下用ntlmaps做命令行代理  

2011-08-02 13:00

    新公司整体网络给做了个ISA防火墙,上外网必须得用代理。代理在浏览器上很容易实现,但是当想用命令行终端安装东西的时候就麻烦了,总是无法连接。放狗搜之,发现一个叫ntlmap的东西可以解决问题。下载了0.9.9版本,然后编辑下配置文件。

 

PARENT_PROXY:代理IP
PARENT_PROXY_PORT:代理端口
NT_DOMAIN:域
USER:用户名
PASSWORD:密码

   这几个设置好,就ok了。然后执行 main.py ,会默认启动5865端口。在ubuntu中打开网络代理,手动设置,127.0.0.1:5865.就可以在命令行装东西了!


ubuntu修改默认启动系统  

2011-07-08 11:31

        我的电脑是安装的双系统,ubuntu和windows。安装ubuntu的时候 grub会默认选择ubuntu启动,这一点俺媳妇十分非常强烈反感。因为,这样她每次开机的时候必须盯着屏幕,一个不小心就进了ubuntu。所以强烈命令我抓紧改成默认进入windows系统。

        好吧,命令下来了,得执行啊。ubuntu中真正控制控制启动菜单的是:/boot/grub/grub.cfg,所以直接的办法就是修改这个文件,但是这样做不好。如果下次不知道啥时候敲了下或者升级之类的情况调用了 update-grub ,会重新生成该文件,会覆盖改动的部分。所以,我选择另一种办法。在/etc/grub.d/目录下有好几个文件,每一个文件都是一个启动菜单。他们的命名很有意思,都是以数字开始。数字越小,启动菜单排名越靠前

hupengxing@hupengxing-netbook:/etc/grub.d$ ll
总用量 72
drwxr-xr-x   2 root root  4096 2011-07-08 11:07 ./
drwxr-xr-x 174 root root 12288 2011-07-08 11:10 ../
-rwxr-xr-x   1 root root  6698 2011-06-01 21:06 00_header*
-rwxr-xr-x   1 root root  5522 2011-04-17 21:07 05_debian_theme*
-rwxr-xr-x   1 root root  7119 2011-03-26 13:06 30_os-prober*
-rwxr-xr-x   1 root root  7041 2011-06-01 21:06 10_linux*
-rwxr-xr-x   1 root root  5982 2011-06-01 21:06 20_linux_xen*
-rwxr-xr-x   1 root root  1588 2010-09-25 01:14 20_memtest86+*
-rwxr-xr-x   1 root root   214 2010-10-06 20:23 40_custom*
-rwxr-xr-x   1 root root    95 2010-10-06 20:23 41_custom*
-rw-r--r--   1 root root   483 2010-10-06 20:23 README

       其中30_os-prober就是对应的windows系统,只要把文件名的30改成6-9之间的数字就ok了。把30_os-prober,改成06_os-prober,然后 sudo update-grub 就ok了。

重启测试,大功告成!


ruby线程域变量  

2011-06-29 17:04

    转自:http://developer.51cto.com/art/200912/169352.htm 

  我们知道,在Ruby中存在一些内置变量,这些变量实现的功能不尽相同。下面就让我们一起来看看有关Ruby线程局部域的一些介绍。

 

   Ruby线程局部域变量之$!

最近发生的异常的信息.由raise设定.

  1. def exception   
  2. begin   
  3. raise "exception test."   
  4. ensure   
  5. puts $!   
  6. end   
  7. end   
  8. exception  

 

结果:

 


  1. 		simple.rb:58:in `exception': 
    exception test. (RuntimeError)   
  2. from simple.rb:64   
  3. exception test. # $!中的值  

 

 

Ruby线程局部域变量之$@

以数组形式保存着发生异常时的back trace信息. 数组元素是字符串,它显示了方法调用的位置,其形式为  "filename:line"或 "filename:line:in `methodname'" 。在向$@赋值时,$!不能为nil。 


  1. 		def exception   
  2. begin   
  3. raise "exception test."   
  4. ensure   
  5. puts $@   
  6. puts "$@ size is:#{$@.size}"   
  7. end   
  8. end   
  9. exception  

 

结果:


  1. 		simple.rb:58:in `exception': 
    exception test. (RuntimeError)   
  2. from simple.rb:65   
  3. simple.rb:58:in `exception' #$@中的值, 是一个数组,第一个元素是错误发生的行数, 第二个是异常的内容。下面打印了数组的长度   
  4. simple.rb:65   
  5. $@ size:2   

ruby 语言的特点  

2011-06-29 16:58

        转自:http://developer.51cto.com/art/200912/169327.htm

   通过对Ruby的深入了解,我们可以知道,它是一种完全面向对象的解释性语言。其优秀的特点吸引了许多编程人员的目光。下面就让我们一起来看看Ruby特点的一些介绍。

 

     Ruby特点1、逗号“,”、 分号“;”之后要留空格。 “,”、 “;”向前紧跟,紧跟处不留空格。

赋值操作符、比较操作符、算术操作符、逻辑操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”等二元操作符的前后应当加空格。一元操作符如“!”、“~”等之后不加空格。象“[]”、“.”、“::”这类操作符前后不加空格。

Ruby特点2、Ruby 中只有重写,没用重载

Ruby特点3、Java 和 C++ 是静态语言,程序代码运行中不可以再改变类的属性、方法,为了更好地表现面向对象的多态特征,所以用覆写和重载来加强程序的灵活性。

程序运行的时候,动态地选择要使用的方法, 完成后期绑定。而 Ruby 是动态语言,可以随时改变类的属性、方法,所以覆写和重载的重要性就降低了。仔细体会一下,一者是增大可选择性,一者是随时修改。

Ruby特点4、如果一个变量,只能被某个实例对象使用,这样的变量称之为实例变量;如果一个变量,能被某个类的所有实例对象共享,这样的变量称之为类变量。

Ruby特点5、常量可以定义在类和模块中,不能定义在方法中。如果在外部访问类或模块中的常量,要使用域作用符:: 。

Ruby特点6、全局变量用$ 开头。实例变量,变量名用@ 开头;类变量,变量名用@@ 开头。

Ruby特点7、在Ruby里,可以给具体的实例对象添加实例方法,这个方法只属于这个实例对象,我们把这样的方法称之为单例方法。

Ruby特点8、【访问控制】在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象的方法。控制了对方法的访问,也就控制了对对象属性的访问。

Ruby特点9、C++ 支持多重继承,多重继承有时会导致继承关系的混乱,Java只提供了单继承,通过接口可以得到多重继承的优点,又没有多重继承的缺点。Ruby 也是单继承,不是通过接口,而是通过Mix-in 模块,来实现多重继承的优点。模块的第三个作用:实现了类似多重继承的功能。

Ruby特点10、总结一下:

require,load用于包含文件;include,extend则用于包含模块。

require加载文件一次,load加载文件多次。

require加载文件时可以不加后缀名,load加载文件时必须加后缀名。

require一般情况下用于加载库文件,而load用于加载配置文件。利用load 多次加载文件的特性,可以用来实现程序的无缝升级和系统的热部署。程序功能改变了,你只需要重新load 一次,其它代码与它再次交互的时候,这个程序实际上已经不是原来的程序了。

Ruby特点11 、Ruby的数组大小是动态的,你能够随时增加、删除数组元素。print arr.join(", "),"\n" 意思是:将数组arr转换成字符串输出,用", "隔开每个元素,并且换行。

Ruby特点12、匹配一个正则表达式,用“=~” ,不能用“==”。 “=~”用来比较是否符合一个正则表达式,返回模式在字符串中被匹配到的位置,否则返回nil。不匹配一个正则表达式,用“!~” ,不能用“!=”。 “!~”用来断言不符合一个正则表达式,返回 true,flase。


ruby全局域变量  

2011-06-29 16:46

 

引自:http://developer.51cto.com/art/200912/169358.htm

对于一个程序员来说,越简便、越灵活的语言,越是他们需要的。Ruby语言就是这样一种。我们在这里为大家介绍的Ruby全局域变量是整个应用中都可以访问的,而且是同一个变量的引用。是全局作用域的。

 

Ruby全局域变量之$\

输出记录分隔符。print会在最后输出该字符串。 
默认值为nil,此时不会输出任何字符。


  1. 		irb(main):082:0> print "abc"   
  2. abc=> nil   
  3. irb(main):083:0> $\="@"   
  4. => "@"   
  5. irb(main):084:0> print "abc"   
  6. abc@=> nil 

Ruby全局域变量之$,

默认的切分字符。若Array#join中省略了参数时或在print的各个参数间将会输出它。  默认值为 nil ,等同于空字符串。 


  1. 		irb(main):087:0> ["a","b","c"].join   
  2. => "abc"   
  3. irb(main):088:0> $,=","  #修改切分字符为","   
  4. => ","   
  5. irb(main):089:0> ["a","b","c"] .join #输出结果改变   
  6. => "a,b,c"   
  7. irb(main):090:0> 

Ruby全局域变量之$;

当String#split中省略参数时的切分字符。默认值为nil,此时将进行特殊的分割。


  1. 		irb(main):090:0> $;   
  2. => nil   
  3. irb(main):091:0> "abc".split  #默认的切分字符情况下,把整个字符当成一个元素   
  4. => ["abc"]   
  5. irb(main):092:0> $;="b"   
  6. => "b"   
  7. irb(main):093:0> "abc".split  #以"b"为切分字符情况下,把整个字符当成两个元素   
  8. => ["a", "c"] 

Ruby全局域变量之$*

传递给Ruby脚本的参数.内部常数ARGV的别名

Ruby全局域变量之$$

当前运行中的Ruby进程的pid。 


  1. 		irb(main):094:0> $$   
  2. => 5167 

Ruby全局域变量之$:

$LOAD_PATH  包含一个数组,其内容是load或require加载文件时用的搜索目录列表. 


  1. 		irb(main):095:0> $:   
  2. => ["/usr/local/lib/site_ruby/1.8",  "/usr/local/lib/site_ruby/1.8/i486-linux",  "/usr/local/lib/site_ruby/1.8/i386-linux",  "/usr/local/lib/site_ruby", "/usr/lib/ruby /vendor_ruby/1.8", "/usr/lib/ruby/vendor_ ruby/1.8/i486-linux", "/usr/lib/ruby/vendor_ ruby", "/usr/lib/ruby/1.8", "/usr/lib/ruby/ 1.8/i486-linux", "/usr/lib/ruby/1.8/i386- linux", "."]   

scrollTop在各个浏览器的实现方式  

2011-06-28 15:01

    前段时间做了个 top 按钮,功能就是back to top。当滚轴向下滚动一段时间的时候会自动显示出来。判断scrollTop的js代码如下:

  

if(document.body.scrollTop > 1500 && $(window).width() > 1000 {
   $("#backTop").css('display', 'block');
} else {
   $("#backTop").css('display', 'none');
	}

    这些在chrome下表现良好,但是到了firefox下就不行了,document.body.scrollTop 始终为零。查看资料得知新的DOCTYPE下IE和FireFox可以用document.documentElement.scrollTop获取滚轴距离顶部的长度,所以有人说获取长度的代码可以这么改

  

$(window).scroll( function() {
	if(get_scrollTop() > 1500 && $(window).width() > 1000 ) {
		$("#backTop").css('display', 'block');
	} else {
		$("#backTop").css('display', 'none');
	}
});
var get_scrollTop = function(){
	return document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop; 
	}

  至于为什么相同的问题在chrome下好用在其他浏览器上不行,现在还仍在探索。


梦中的额吉  

2011-06-26 18:29

    最近工作生活比较烦躁,刚才偶然看的内蒙小伙乌达木参加《中华达人秀》的一段视频,感慨不已。一个父母已经去世的小孩唱出的歌声那么有感情,那么有力量,那么有穿透性,可以直接触碰到人内心深处。让我自从西单女孩的《天使的翅膀》之后,又一次因为一首歌深深的触动。希望乌达木的明天越来越好!

 

  《梦中的额吉》

作词:胡日德乐队 作曲:胡日德乐队    
编曲:胡日德乐队 演唱:胡日德乐队 

歌 词: 
      梦中的额吉
      用圣洁的花露当茶让您先享
      在您的眼中我找到了安祥的眼神
      您的儿子从梦中惊醒 快来吧额吉
      您的儿子从梦中惊醒 快来吧额吉
      乘着梦中的银鸟我飞翔在天边
      梦见您带来了瑞兆的幸福
      您的儿子这就来 等着吧额吉
      您的儿子这就来 等着吧额吉

 


aptana 在ubuntu11.04下显示菜单栏  

2011-06-15 11:12

  aptana是一个IDE,跟rails很好的融合在一起,但是之前的版本由于没有源码跟踪和代码整齐的功能(代码整齐时好时不好)一直没有用。最近3.0.2的版本这两个功能比较稳定,决定转向aptana。不过在ubuntu11.04下全局菜单把aptana的菜单栏干掉了,不能很好的操作。Google大婶果然厉害,马上就发现有人给了解决办法。

  在Apatana目录下新建一个 aptana.sh(名字自取)文件,输入以下内容。

#!/bin/bash
env UBUNTU_MENUPROXY= /home/hupengxing/Aptana/AptanaStudio3

然后 chmod 777 aptana.sh

env UBUNTU_MENUPROXY 这句的意思是不用系统托管,用自己的菜单。


用html5+css3实现圆角  

2011-06-07 16:21

  之前做圆角的边框很麻烦,得做成图片的样子,然后用好几个css拼接。现在有了html5和css3就很简单了。

我将我的博客的内容部分的样式稍微了改了一下,变动了下背景颜色,修改成圆角边框。感觉比以前好看一些。

 

圆角样式:

/*
	-webkit-border-radius支持chrom和safari浏览器
	-moz-border-radius支持火狐浏览器
	border-radius支持chrom和opear
	 */
	 /* 支chrom和safari浏览器持 */
	-webkit-border-bottom-left-radius: 20px;
	-webkit-border-top-right-radius: 20px;
	 /* 支火狐浏览器持 */
	-moz-border-radius-bottomleft: 20px;
	-moz-border-radius-topright: 20px;
	 /* 最后只剩下opera */
	border-radius: 0px 20px;

将后台用rails_admin重建  

2011-06-02 13:45

  今天用rails_admin把后台重建了一遍。之前的后台是我自己写的,没什么样式,看起来杂乱无章。验证也只是用了最基本的authenticate_or_request_with_http_basic。用了rails_admin,之后界面清爽了,权限验证也加上了,用起来更方便了。记录下过程。

 

1.在Gemfile里增加

gem devise
gem rails_admin, :git => 'git://github.com/sferik/rails_admin.git

 

2.执行bundle update

 

3.运行 rake rails_admin:install,安装rails_admin

 

4.运行 rake db:migrate 跑新的迁移文件,有两个表生成,一个是users,一个是histroies。如果已经存在users表,又不想对已有的表进行干扰可以在第3步安装的时候加参数。具体见:https://github.com/sferik/rails_admin.

 

5.rails s 这时候可以访问,http://localhost:3000/admin可以新建一个用户,然后登录。可以看到rails_admin的主页面,里面默认把所有的model都给列了出来。可以对其增删改查。

 

6.自定义自己需要的东西。如果自己感觉rails_admin默认的东西不好,想要变动,可以自己写配置文件。在config/initializers/ 下新建名为rails_admin.rb的文件,在里面配置。比如:

RailsAdmin.config do |config|
           config.model Blog do
            edit do 
              field :title, :string
              field :category_id, :belongs_to_association
              field :content, :text do
                ckeditor true
              end
              field :tags, :string
              field :seo_desc, :text
             end
          end
          config.included_models = [Blog, Category, Comment, User, Book] 
       end

 

7.rails_admin支持使用cancan做权限控制。具体见:https://github.com/sferik/rails_admin/wiki/CanCan.另外也可以用自己带的简单验证:

RailsAdmin.authorize_with do 
          redirect_to root_path unless warden.user.admin? 
        end

 

8.rails_admin是基于devise的,因此可以在config/initializers/devise.rb文件中配置常用的参数。如cookie的过期时间,remember_me时间等。

 

9.rails_admin后台用ckeditor不知道怎么用code功能了,研究中

 

ps:将rails升级到3.0.7,will_paginate换成了kaminari,转换的过程很自然。无需过多赘述。


ruby中的 % 方法  

2011-05-30 16:54

   今天写代码需要将(1..9)输出成 01,02,03 ,没有想到好办法。长明说有个 % 方法可以实现。试之,果然!

 

irb(main):002:0> "%02d" % 1
=> "01"

 查了下ruby的文档,发现%是个多用处的方法,    在number类型的数中可以用来求余数,在string中规范显示数字。其实这一作用还是借鉴了c的printf,看源码可以看到,其实就是Kernel::String的sprintf 方法,可以显示多种类型的数字,比如二进制,16进制,小数,整数,等。


rake(0.9.0) bug  

2011-05-27 17:07

  昨天升级gem,把rake升级到了0.9.0。不曾想出现bug,运行任何rake命令报错

undefined method `task' for #<Hupengxing::Application:0xa5d29b0>

  放狗搜之,发现是bug,需要自己在项目的RakeFile.rb 加一段代码。

 

module ::XX
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

 

加上就好了。


ubuntu下thundbird mail notify的bug  

2011-05-26 13:47

  今天发现thundbird的mail notify 老是弹出 Unable to find specified executable 错误,很是烦人。google之

  发现是thundbird的add on 的bug,具体见https://bugs.launchpad.net/ubuntu/+source/thunderbird/+bug/750556。 需要安装一个 libnotify-bin

 

 

sudo apt-get install libnotify-bin

问题解决!


哥哥要是来看我  

2011-05-23 14:00

  哈哈,果然河蟹了!

-------------------------------------------------------

  围脖上看到的,不知道哪位群众在长沙民歌《妹妹要是来看我》的基础上改编的。内容狠前卫,曲风很时尚。坐等河蟹。

 

《哥哥若是来看我》

作曲:不详

填词:不详(但肯定不是东东枪)

演唱:不详(但肯定不是红料)

录音:不详(但肯定不是东东枪与陆小疯)

哥哥若是来看我

不要从那小路来

小路上的坎坷多

我怕伤了哥哥的脚

 

哥哥若是来看我

不要坐那飞机来

飞机上的空姐多

我怕哥哥跟别人过

 

哥哥若是来看我

不要从那海上来

大海上的风浪多

可能还有核辐射

 

哥哥若是来看我

千万不要上微博

微博上的骚货多

胡逼乱搞瞎他妈说

 

哥哥若是来看我

不要看那新闻联播

新闻里边天天说

全国人民都快乐

但是好像没有你和我

 

哥哥若是来看我

你就从那梦里来

梦里只有你和我

 

想干什么干什么

梦里只有你和我

想干什么干什么