‘编程开发’ 分类的存档
如果直接使用irb命令,在使用gem的时候会出现NoMethodError: undefined method `gem' for main:Object的错误提示 此时可以使用irb –r rubygems来启动,则可解决 或者还有一种办法,在irb启动手,手动载入rubygems
<%= f.fields_for :attachments do |fields| %> <%= fields.file_field :uploaded_file %><% end %>
我目前维护着一台Sun-Fire-V890跑Sun Java Directory Server,出于对Linux的热爱以及对Sun的不感冒,做个技术测试,尝试下将Sun Java Directory Server迁移至CentOS Directory Server。 首先需要安装的就是CentOS Directory Server,使用yum命令轻松搞定 yum install centos-ds 安装完成之后,执行setup-ds.pl脚本来开始ds配置工作,配置过程按照提示一路下来还是比较简单的: [root@ldap tmp]# setup-ds.pl ==============================================================================This program will set up the CentOS Directory Server. It is recommended that you have "root" privilege to set up the software.Tips for using this program: - Press "Enter" to choose the default and go to [...]
由于Sybase 11.9.2一个文件不能超过2G,如果数据库大小超过2G,就会出错,需要在备份时加入stripe。 dump database test to "/home/sybase/test.bak1" stripe on "/home/sybase/test.bak2" 同理,如果数据库大小超过4G,就需要分成3个备份文件了: dump database test to "/home/sybase/test.bak1" stripe on "/home/sybase/test.bak2" stripe on "/home/sybase/test.bak3" 当然,就算数据库大小不到2G,愿意把他们分成多个文件也是支持的。
首先要说明的是,Sybase 11.9.2并不适合安装在CentOS 5.6这样运行高版本glibc的Linux系统之上,在这样的系统中随时都有可能爆发让你崩溃的“段错误”,它应该运行在使用glibc2.2古老的Linux发行版,RedHat 7.2或许就是一个不错的选择。 安装sybase需要两个rpm包,直接装上就可以。 安装成功之后,首先需要编辑/etc/init.d/sybase文件,在公共部分加入export LD_POINTER_GUARD=0,同时系统会自动生成一个sybase用户,还需要编辑该用户目录下的.profile文件,在合适的位置同样加入export LD_POINTER_GUARD=0。 编辑/etc/hosts文件,在合适位置加入sybase的主机名 在图形环境下用sybase用户登录系统,运行srvbuild,出现图形化安装界面,这部分相对简单,选上数据库服务器和备份服务器之后,其他相关参数按提示填写即可,不过输入框相当没人性,输错不能删除,只能用鼠标选中之后输入覆盖。 这部分流程结束之后,将会启动Sybase和Backup Server,使用isql登录一下,如果成功,则没有什么问题了。
一直很想当然地觉得APC的性能一定比Memcache强,毕竟APC是内部Cache,Memcache是外部Cache。听说Cache数量超过一定阀值的时候,APC的性能不如Memcache,心里自然不信,要自己测试一下才行! 测试很简单,通过PHP读写一定次数的APC与Memcache,并对他们所消耗的系统时间进行对比,由于是同一台机器上同程序的比较,所以消耗的时间只是参考值,曲线应该是类似的。具体过程就不赘述了,重点看结果: 测试数据1:APC不同Cache数量百万请求消耗时间 Cache数量 百万请求消耗时间 10W 4.163 20W 6.504 30W 9.208 40W 11.1 50W 15.328 60W 16.139 70W 19.237 80W 21.22 测试数据2:APC保存不同Cache数量消耗时间 Cache数量 消耗时间 1W 0.035 10W 0.453 20W 1.391 30W 2.9 40W 5 50W 7.7 60W 11.228 70W 15.657 80W 20.218 测试数据3:Memcache不同Cache数量10W请求消耗时间 Cache数量 消耗时间 1W 3.2 2W 3 3W 3.1 4W 3.3 5W 4 [...]
猫言猫语是我个人使用的小型微博,他的地址是:http://www.wuwx.net/status/,StatusNet默认是多用户模式的,需要看我自己发布的消息的话,则需通过:http://www.wuwx.net/status/wuwx这样形式的链接,也就是说需要在站点地址后加上我的用户名才能到我的个人页,一直想找个什么方式可以直接通过访问http://www.wuwx.net/status/就直接是我自己的页面。 刚开始以为要实现这个功能很复杂,看了下代码之后发现在StatusNet中直接有一个配置开关可以直接修改,直接在config.php中加一句话: $config['singleuser']['enabled'] = true; StatusNet是不是非常地好用、方便呢,快一起来搭建吧!
这篇有点像GoogleAdsense的姐妹篇哈,一篇讲的是广告,一篇讲的是统计,方法同样的简单,在config.php中增加如下配置信息,这个code的值用你的跟踪代码的值去替换他: addPlugin('GoogleAnalytics', array( 'code' => 'UA-440814-12')); 然后就可以保存退出,StatusNet会根据你的配置信息,自动在页面需要的位置加上GoogleAnalytics的,等上几个小时,你就可以在你的GoogleAnalytics帐户中看到StatusNet相关统计了!
之前猫言猫语曾写过一篇文章介绍在StatusNet中如何设置Google Adsense,这篇文章是那篇文章的后续,将更详细地介绍如何设置Google Adsense。 在那篇文章中,我们很简单地说在使用插件的时候,设置client参数与rectangle参数就可以了,实际上,在Adsense的插件配置中,更完整的配置参数应该如下,由于我现在不想显示广告了,所以我把这些都注释掉了: addPlugin('Adsense', array( 'client' => 'pub-7713123285728231', //'mediumRectangle' => '3223858592', //'rectangle' => '3223858592', //'leaderboard' => '3223858592', //'wideSkyscraper' => '3223858592',)); 除了rectangle之外,还有另外三个参数,mediumRectangle,rectangle,leaderboard,showWideSkyscraper本身是数组的“key”,而他们的“value”则是广告的slot,除此之外,这几个参数还代表着在不同的位置按照不同的大小来显示广告,例如mediumRectangle是300x250,rectangle是180*150,leaderboard是728*90,而wideSkyscraper则是160*600,具体显示在哪个位置大家实践下,我就不一一列举了。
DreamHost已经支持StatusNet一键安装,按道理对StatusNet支持应该非常好,实际支持的可不太好,在尝试使用twidroid的时候,却发现无法通过验证,又是一顿检查代码,发现是因为PHP_AUTH_USER与PHP_AUTH_PW这两个环境变量没有传递到PHP脚本中导致的。 DreamHost中PHP是使用fcgi方式运行的,很可能是fcgi配置的时候把某些变量给抛弃掉了,我们需要重新给他加回去: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]</IfModule> 这样整个StatusNet重写规则看起来就是: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /status/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?p=$1 [L,QSA]</IfModule> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]</IfModule> <FilesMatch "\.(ini)"> Order allow,deny</FilesMatch> 这个重写规则改天需要仔细想想原理。
