- 浏览: 139063 次
- 性别:
- 来自: 北京
最新评论
-
wudixiaotie:
white_crucifix 写道吓死宝宝了,以为有erlan ...
erlang hibernate -
white_crucifix:
吓死宝宝了,以为有erlang版的hibernate框架
erlang hibernate -
zzjmates:
...
rails缓存清空 -
wudixiaotie:
没用过rubymine
rails调试 -
string2020:
和工具(rubymine)提供的调试方式比,那个好
rails调试
文章列表
ruby得到的接口返回的是GB2312怎么转码
- 博客分类:
- ruby
查找IP对应的地址:
上面让去http://int.dpool.sina.com.cn/iplookup/iplookup.php这个网站查,
open("http://int.dpool.sina.com.cn/iplookup/iplookup.php?&ip=#{last_sign_in_ip}")
查到的结果是乱码:
1\t-1\t-1\t��\271����\253\t\271���\t\t\t\t
我是linux一看就知道是傻逼GB2312转马的问题,本地字符集默认转移成UTF8了,怎样转过来呢。
外面套个Nokogiri就好。 ...
ruby深入研究11
- 博客分类:
- ruby深入研究
class_eval() 和 instance_eval() 的差别理解:
MyClass.class_eval() 里面的代码是运行在MyClass的类定义作用域中,MyClass#instance_eval() 里面的代码是运行在MyClass类的实例方法所在的作用域中,所以
class AAA
end
AAA.instance_eval do
def aaa
puts 'aaaa'
end
end
AAA.send :define_method, :aaa do
puts 'new aaa' ...
ruby深入研究10
- 博客分类:
- ruby深入研究
what's different between MyClass.instance_eval() and MyClass.define_method()
class AAA
end
AAA.instance_eval do
def aaa
puts 'aaaa'
end
end
AAA.send :define_method, :aaa do
puts 'new aaa'
end
AAA.aaa # => aaa
a = AAA.new
a.aaa # => new aaa
MyClass.instan ...
ruby 深入研究9
- 博客分类:
- ruby深入研究
环绕别名
class XXX
def my_method
puts "this is original_method"
end
alias_method :original_my_method, :my_method
def my_method
puts "rewrite original_method"
end
end
x = XXX.new
x.my_method #=》 rewrite original_method
x.origianl_my_method #=》 thi ...
lambda其实我的理解就是方法的对象,里面return是从lambda定义中返回。其实就是把方法当成一个对象传来传去,到需要的地方去执行。不过lambda和方法有个重大区别,lambda是闭包,方法不是。方法不会带着上下文作用域到处走。
Proc更像是块。return是从定义proc的作用域返回。
class AAA
def my_method
puts "this is my method"
end
end
a = AAA.new
m = a.method :my_method
m.call #=》 this is my ...
m = Proc.new { puts "fuck" }
m1 = proc { puts "fuck1" }
def my_method
yield
end
def my_method1(obj)
obj.call
end
my_method(&m) #=> fuck
my_method(&m1) #=> fuck1
my_method1(m) #=> fuck
my_method1(m1) #=>fuck1
&m #=> syntax e ...
instance_eval()方法的实际其实就一句话:不改变当前上下文的前提下,改变当前self。
class AAA
def initialize
@v = 1
end
end
a = AAA.new
x = 3
puts self
a.instance_eval do
puts self
@v += x
puts @v
end
如上述代码所示,x的作用域应该是main内,结果在a内也能访问。这应该算是扁平作用域的一种高级用法。。
class AAA
@v = 2
def initialize
@v ...
block的环境理解:
def my_method
x = "aaa"
yield("lala")
end
x = "ooo"
my_method {|y| "#{x}, #{y} fdg" }
上面的代码得到的结果是 ooo,lala fdg
原因是运行block时候是带着当前环境的上下文的,也就是说当前环境的临时变量,类变量,全局变量,常量,都是跟着block走的,而调用block的地方的环境上下文是对block来说不可见的,也就是说只有定义block的时候的上下文对block来说 ...
怎么绕过private方法的限制,直接调用private方法。
class AAA
private
def private_method
puts 'this is private method'
end
end
三种方式
1.用send
a = AAA.new
a.send(:private_method)
2.用重写方式
class XXX < AAA
def private_method
super
end
end
x = XXX.new
x.private_method
3.instance_eval()方 ...
方法是存储在当前self的类中,Ruby中没有实例方法和类方法之分,只有方法。
类也是Class的一个对象。所以实例方法是存储在所属的类中,类方法是存储在Class的类中,那么对象的单间方法呢,是存储在当前对象的元类中。
include实际是在当前类之上建立一个父类,父类方法就是模块的方法。如果在include一个模块,这个模块建立的父类在原来模块之下。
original_module
||
V
new_module
||
V
my_class
Ruby深入研究笔记1
- 博客分类:
- ruby深入研究
module是可以定义private方法的
module MTest
def aaa
puts "aaa"
private_method
end
private
def private_method
puts "this is private_method"
end
end
class CC
include MTest
end
c = CC.new
c.aaa
原因我估计是Kernel中定义了private的方法。
HTTP协议安全验证浅谈
- 博客分类:
- HTTP
HTTP协议是不安全的,如果没有SSL做底层支持,用HTTP Basic Authentication很容易让攻击者监听并获取到用户名和密码的信息。有人说用Base64做encode,这是没用的,攻击者获取到用户名密码后用Base64来decode一下就好了,那么为什么大多 ...
前提jdk1.7和tomcat7
直接解压缩solr4.8.1至目录/usr/local/,重命名为solr;然后复制solr/dist/solr-4.8.1.war到tomcat6/webapps中;然后修改tomcat6/conf/server.xml
<Host name="localhost" appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true">
如图将weba ...
Rack app的定义方式是:
require ‘rack’
class MyServer
def call(env)
[200, {}, ['hello world']]
end
end
Rack::Handler::WEBrick.run MyServer.new, Port: 2000
要给app加一些中间件,就需要这么写:
app = MyServer.new
app = Rack::Lint.new(app)
app = Rack::ShowStatus.new(app)
app = Rack::ShowExceptions.new( ...