- 浏览: 44249 次
- 性别:
- 来自: 深圳
最新评论
-
sevk:
#让ruby1.8兼容1.9的写法
if RUBY_ ...
升级到Ruby 1.9 笔记二 -
lmxbitihero:
最大亮点当然是性能提高了好几倍。
升级到Ruby 1.9 笔记一 -
skyblue1984:
好像变复杂了.......
升级到Ruby 1.9 笔记二 -
doabit:
想升1.9,只是RAILS在1.9下有编码问题,,又跑回1.8 ...
升级到Ruby 1.9 笔记一 -
gfdice:
性能是最大亮点。反而这个unicode,我还是习惯程序员自己去 ...
升级到Ruby 1.9 笔记一
文章列表
可以捕捉所有未知异常和生成包含程序名的Core dump 文件。
/*
* DebugUtility.h
*
* Created on: Jun 4, 2014
* Author: root
*
* Use following two ways to help debugging application when application is crashed:
*
* 1 Turn on core dump and generate core dump file by forking child process and rename the ...
Ruby 1.9 String类删除了each 方法,取而代之each_line或者lines方法。
如果希望能够保留each方法,可以执行以下代码:
if RUBY_VERSION.match('1.9')
class String
alias each each_line
end
end
Ruby 1.9 测试:
# irb
irb(main):001:0> "%d" % nil
TypeError: can't convert nil into Integer
from (irb):1:in `%'
from (irb):1
from /bin/irb:12:in `<main>'
Ruby 1.8 不会抛出异常,默认会转换成0:
irb
irb(main):001:0> "%d" % nil
=> "0"
+ Ruby 1.9 用新的单元测试框架MiniTest替换了1.8版本中的Test::Unit测试框架,同Test::Unit相比,MiniTest保留了其核心框架,但删除了一些附加的功能,比如Testcase Runner, 图形界面。为了和Test::Unit兼容,MiniTest还提供了一个适配层来将原有Test::Unit的接口影射到新的框架,这样原有1.8的测试用例能够不需要修改就能够直接运行。
但我在升级的时候还是遇到了问题。下面是测试代码,保存为文件test.rb:
require 'test/unit'
class Test_Main < Test::Unit ...
Ruby 1.8 的字符串只支持ASCII码,在Ruby 1.9 增加了编码(Encoding)属性,能够支持Unicode. 新的功能有利于Ruby更好的支持国际化,但因为字符串对象被使用的太广泛,新的接口导致很多现有代码的修改。
+ 在Ruby1.8, string[index]会返回index所在位置的ACSII整数值:
irb(main):001:0> "123"[0]
=> 49
在Ruby1.9,string[index]会返回index所在位置的字符串:
irb(main):001:0> "123"[0]
=&g ...
正在将现有的系统从Ruby 1.8升级到最新版本的Ruby1.9,把我在升级过程中遇到的问题记录下来供大家参考。
+ 在Ruby 1.9中不能再使用下面的if格式:
if Boolean-expression :
必须要使用:
if Boolean-expression [then]
我写了一个Regular Expression来找出代码中所有有问题的行:
^\s*if\s+*+\s+:\s*$
+ 同样在Ruby 1.9中不能再使用下面的case格式:
case
when condition [ , condition ] .. :
bod ...
在CentOS操作系统中如果从源代码编译并安装Ruby1.9并且安装在/usr/bin/ruby或者/bin/ruby,在过了一段时间之后Ruby会突然不可用并打印下面的错误信息:
ruby: [BUG] iseq_compile_each: unknown node: NODE_METHOD
这个问题是由于prelink修改了ruby程序导致不能正确载入共享库程序。
关于具体prelink的功能参看以下链接:
http://www.eefocus.com/article/09-04/71629s.html
解决方法:
1 在prelink配置文件/etc/prelink.conf ...
使用Ipod Touch的地图软件能够直接定位,但Ipod Touch没有GPS的芯片,它是怎么知道你的位置呢?原来是Skyhook Wireless公司提供的技术,这个公司收集所有无线网络基站的MAC地址和它们的位置,并保存到一个大的数据库,现在这个数据库中已经有超过一亿条信息,下面这个链接可以看到他们现在提供的覆盖范围:
http://www.skyhookwireless.com/howitworks/coverage.php
中国覆盖的范围还很有限,我可以看到广州市中心已经覆盖到了。
当你需要定位的时候,直接将你无线基站的MAC地址通过互联网发给它然后他们就直接查找数据库并返回你所 ...
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果想彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。 下面是基本的步骤:
1 使用mysqldump命令将InnoDB数据库导出
2 停止MySQL
3 删除所有InnoDB数据库文件和日志
4 启动MySQL并自动重建InnoDB数据库文件和日志文件
5 导入前面备份的数据库文件
有一点要注意,你配置了MySQL数据库复制,当你导入数据库备份文件的时候,所有的Query都可能会被写入Binlog,可以执行SET SQL_L ...
如果你执行SHOW INDEX FROM TABLE_NAME察看所引信息,中间会有一列Cardinality,MySQL在解析多重Join的时候会根据Cardinality的信息决定选择什么路径来执行Join,这种算法的前提条件是索引数据时很平均分配的,但如果索引中的数据非常不均衡,会导致MySQL做出错误的选择。 下面是一个完整的例子:
首先创建三个测试表:
CREATE TABLE customer (
-- Unique ID
customer_id integer NOT NULL,
CONSTRAINT PK_customer PRIMARY KEY(customer_ ...
mod_fcgid配置ProcessLifeTime 能够限制每个fcgi prcoess的寿命,比如配置:
ProcessLifeTime 600
则fcgi process应当在十分钟后被终止,但这个配置还受DefaultMinClassProcessCount
的影响,如果DefaultMinClassProcessCount 是3而且fcgi process的数量少于或等于3,则fcgi prcoess永远不会被终止。
所以如果想强制让所有fcgi process 自动重启,必须把DefaultMinClassProcessCount
设为0
链接地址:
http://blog.csdn.net/knowhow/MyArticles.aspx
能够找到Oracle 9i & 10g编程艺术-深入数据库体系结构完整中文版。
最近需要升级MySQL从5.0到5.1,因为Debian对于MySQL5.0和5.1有不同的包,升级会导致所有已经安装并依赖MySQL5.0的包被删除。
直接修改dpkg的信息文件/var/lib/dpkg/status能够直接删除这个依赖关系,这样即使升级MySQL也不会导致现有的包被删除。
今天用sed工具实现将文件中所有不包含特定字符串的行删除,发现要用正则表达式来匹配不等于某个字符串需要一点小的技巧。
例如要匹配不包含test字符串,首先想到:
[^t][^e][^s][^t]
但问题是这样会将包含tast或者tesa也删除。
最终的解决方案:
([^t].*|t[^e].*|te[^s]|tes[^t])
如果有更长的字符串,以此类推。
完整的sed命令:
sed -r 's/(^.*[^t].*$|^.*t[^e].*$|^.*te[^s].*$|^.*tes[^t].*$)//g' ./file > /tmp/file && mv / ...
Swap memory是操作系统在物理内存不够的时候使用磁盘保存一部分虚拟内存空间,具体哪部分内存被交换到磁盘对于应用程序来说是完全不知道的,所以一旦MySQL所使用的内存空间被交换到磁盘,会严重影响MySQL的性能.
在GNU/Linux操作系统,你可以通过vmstat察看是否有Swap Memory 在被使用.
如果发现操作系统已经开始使用Swap Memory,建议以下两种方法来解决:
1 Linux操作系统可以通过配置文件/proc/sys/vm/swappiness来调节操作系统使用Swap Memory的程度,在这个文件中保存的是一个数字,默认60, 值越小则操作系统会尽可能不 ...