该系列是用来记录最近学到的琐碎的东西。
1)解决在rails或sinatra中出现的OpenSSL::SSL::SSLError
错误
比如想要调用twitter的api得到auth授权的时候,会出现这个错误
1 OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)
解决方法是,在需要的代码(比如config/initializers/devise.rb
)中加上如下代码
1 2 3 4 5 6 7 8 require 'openssl' module OpenSSL module SSL remove_const :VERIFY_PEER end end OpenSSL::SSL : :VERIFY_PEER = OpenSSL::SSL : :VERIFY_NONE
2)在Firefox下,通过jquery
给textarea
控件赋值不是用.val()
方法,而是用.text()
,不过,得到值的话还是老实的用.val()
。。。
3)在ruby中用<<-'title'
的方式给string变量赋值的时候,该文字会保留包括缩进等格式,因此不需要对这部分代码进行格式化。
4)在Objective-C
中用到反射的话,首先引入头文件objc/runtime.h
后,按照如下代码即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #import <Foundation/Foundation.h> #import <objc/runtime.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString *className=@"Member" ; NSString *methodName=@"setName:" ; id obj=[[NSClassFromString (className) alloc] init]; [obj performSelector: NSSelectorFromString (methodName) withObject:@"Tom and Jerry." ]; NSLog (@"%@" ,[obj name]); unsigned propertyCount; objc_property_t *properties = class_copyPropertyList([obj class ],&propertyCount); for (int i=0 ;i<propertyCount;i++){ objc_property_t prop=properties[i]; NSLog (@"property:%s" ,property_getName(prop)); NSLog (@"property_getAttributes:%s" ,property_getAttributes(prop)); } [pool drain]; return 0 ; }
5)判断当前使用的系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def os host_os = RbConfig::CONFIG ['host_os' ] case host_os when /mswin|msys |mingw|cygwin |bccwin|wince |emc/ :windows when /darwin|mac os/ :macosx when /linux/ :linux when /solaris |bsd/ :unix else raise Error::WebDriverError, "unknown os: #{host_os.inspect} " end end
6)在sinatra项目中使用puma 来当服务器的话,有两个方法
1.在configure
块中写上
1 2 3 configure do set :server , :puma end
2.在config.ru
文件的第一行写上#\ -s puma
PS:这个服务器比自带的还好用啊,而且在windows下也能使用,强烈推荐
7)在ios中,让自己的app调用chrome
而不是safari
来打开网页的做法,请参照Opening links in Chrome for iOS 这篇文档
这次就先写那么多吧,下次再见
:wp