-
February 2012 M T W T F S S « Dec 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 -
Recent Posts
Recent Comments
- 爱国者 on 如何编写maven plugin(三) 测试
- www.chaojishop.com on sbt 0.7
- Sparkle on sbt 0.7
- arbow on sbt 0.7
- 学习hg(Mercurial)版本控制—转自liluo.org | 碎星 on 我与Mercurial
Tags
Archives
- December 2011
- August 2011
- May 2011
- November 2010
- February 2010
- May 2009
- February 2009
- January 2009
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- July 2007
- June 2007
- March 2007
- February 2007
- January 2007
- December 2006
- May 2006
- April 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
- September 2005
- July 2005
- June 2005
- April 2005
- March 2005
- February 2005
- January 2005
- December 2004
- November 2004
- September 2004
- August 2004
- July 2004
Microblogs
- 如果只是用git的功能的话,一个中心库仅仅是一个公共位置而已,要管理也不难。当然github上有其他相关功能,issue、wiki等。不过我觉得github的优势还是开放,可以方便大家互相fork,私有库用处并没那么大。许式伟 : 给创业者们的建议:把代码放到 Github 上去,别自己搭建服务器来管。我用了 Github 大半年了,感觉很爽。现在我们在 Github 上每月支付 50 美金。2月7日 14:03 来自 新浪微博
- //@老赵: 神一般的逻辑啊!!!//@方舟子:我要是能证明我的书和论文是我写的,韩寒是不是就承认他的作品是别人写的?//@太蔟: 呃,这得从初中数学讲起⋯⋯//@hezter: 方舟子求之不得向国人展示才学,谁出这么馊的点子[哈哈] //@madmadmadmad:方舟子不是教过你了吗?凤凰网新闻 : #专访韩寒#【韩寒:请方舟子证明他的书和论文是自己写的】韩寒:我真的很无奈,我只是想请教方舟子先生,我作为文字写作者我已经拿出这么多的证据,请方舟子来教我,或者请方舟子先生来证明一下他怎么证明他那些书和论文是自己写的,他如何证明?http://t.cn/zOPldAc2月2日 14:36 来自 新浪微博
- 我了个去,新浪微博手机客户端偷偷给我关注了上百个账号,大量是10条微博上万粉丝的账号
- 给明年依然年轻的我们:欲望、外界、标签、天才、时间、人生目标、现实、后悔、和经历 http://t.co/mhbZgRCu
- @arbow 平时都是手机用,新年回家用笔记本上网,哗啦钱全烧了,还好卡里面不是放着几百元
- 联通太过分了,流量王10元500M,超过之后,100M就烧了我100元
- 这是无限数论的问题,实际上用类似的手法可以证明1=2 //@刘鑫-MarchLiu://@天佑道场: 在分析学理论中,π可以严格定义为满足sin(x)=0的最小正实数X. 2009年,超级计算机计算圆周率到小数点后29000个小数位,2010年8月,小数点后5万亿小数位,2011年10月19日,小数点后10万亿位.难道计算结果小数点后10万亿位中国铁路拆委会 : 课本欺骗了我们多少年? 圆周率真的等于3.14吗? 我们的教科书真实率低于5%,连数学也不例外。1月30日 19:20 来自 新浪微博
- 顶,新浪搞什么东西,经常自动关注一些垃圾广告账号,刚刚刷新还给我自动转发了一条广告1月30日 18:57 来自 新浪微博
- //@小海宇:最有效的中药瘦身产品,强效顽固型左旋肉碱减肥药胶囊正品左旋肉减产后健康减淝瘦身产品 http://t.cn/z0sPiDB 小海宇 : 最有效的中药瘦身产品,强效顽固型左旋肉碱减肥药胶囊正品左旋肉减产后健康减淝瘦身产品 http://t.cn/z0sPiDB1月30日 18:50 来自 新浪微博
- 我在这里 http://t.co/7QPTMkhW
- 如果只是用git的功能的话,一个中心库仅仅是一个公共位置而已,要管理也不难。当然github上有其他相关功能,issue、wiki等。不过我觉得github的优势还是开放,可以方便大家互相fork,私有库用处并没那么大。
Author Archives: Sparkle
我为什么放弃使用cacti
本来想趁着把cacti从我的生产服务器中移除之前,把我之前的安装配置写成一篇文章,结果发现我已经无法理解cacti是怎么配置的,这也是我放弃使用它的其中一个原因。 在这里,我先说说cacti和mrtg、rrdtool之间的关系,或许还有一些朋友不是很了解。mrtg和rrdtool都是Tobi Oetiker的作品,rrdtool是一个循环式数据库工具,它只负责存储数据,而mrtg是一个采集和画图工具。经常我们能看到cacti和mrtg的对比,那是因为他们两者的功能是一致的,都是采集画图,其实cacti也是是用rrdtool来存储数据,甚至更多其他的网管软件,都是使用rrdtool来存储,我只想说,rrdtool是一个神物。绝大部分人都认为cacti比mrtg好,的确,mrtg比较久远了,功能也比较欠缺,cacti通过php和mysql的辅助提供更多的功能,也提供更直观的界面 但是,cacti太复杂了。需要php(还好),需要mysql(我真的没有的话怎的),还有那个烂鬼snmp协议(当然,mrtg也是通过snmp采集协议的)。我真的不明白,snmp是一个怎样的简单网络管理协议,我觉得一点也不简单,也不直观。或许可能是因为我没有受过正统的网管培训的缘故?说实在话,我真的不知道当初我是怎么把linux下面的snmpd的配置调出来的,基本上完全不明白每一个参数是什么意思,参数又是怎么跟网络流量,硬盘空间挂上关系。当然,如果你的对象是一些cisco设备就不一样,一般情况下他们都是预配置好暴露什么数据。但是如果你的设备是一台linux服务器,那使用snmp协议就变得很麻烦。 我需要一种agent模式的网管软件,而不是一个什么简单通用的网络协议,agent跟它的采集器之间跑什么协议我不关心,当然如果可以简单地做二次开发就更好了。其实,在linux下使用snmp来采集数据,某种程度都可以说是一种agent模式,因为我需要在linux机器上安装snmpd这个agent,只是这个agent很难配置。反正我都要在linux上面安装软件的,何不选择一个很直观的agent模式的软件呢,而且是可以直接调用shell之类的实现监控script的功能,说实在话,怎么通过snmpd然后调用script或许我需要的数据,我真的不知道。 于是,我选择了nagios,很简单明了的使用方法,和plugins编写方法,我甚至还用ruby写了一个script来监视某个进程是否还在运行的plugin。可惜nagios并不支持数据采集,它仅仅是一个监控,监视某些状态值是否正确,而没有把数据值的历史记录下来,nagios并不使用rrdtool。其实,nagios并不是跟cacti/mrtg等同的工具,我还需要一个采集画图的工具。再搜索nagios资料的时候,我发现twitter也是是用nagios的,另外他们还是用了munin。munin正是我也需要的东西,agent模式,不需要mysql,方便的插件编写。我只花了半天时间就把它使用起来了,迟点还打算写一些munin的插件。 我是没有打算把cacti的安装配置使用写下来了,迟点我把nagios和munin的一些心得写下来吧。
并发相关
http://www.javaeye.com/post/498557 copy on write array list ConcurrentHashMap ReentrantLock ReentrantReadWriteLock CAS 我都有在用,JDK内置 一直都想写一些关于它们的文章,不过始终太松散,而且我是知道原理然后直接用API而已 我随便说一些 楼主的copy on write模式是可取的,JDK很早就引入copy on write array list来处理Listener部分,在写入非常非常少的情况下,copy on write其实是很好的。至于楼主的实现好不好就不知道了 ConcurrentHashMap用了多个锁来处理,里面有一个一个的bucket来隔离锁,默认就是16个bucket&锁。但是它也有缺点,就是不能保证数据绝对准确,例如他的size就是不准确的。但是它肯定是线程安全的 ReentrantLock是可以代替synchronized的东西,除了写起来比synchronized难稍稍。默认是non-fair模式,比synchronized快很多,如果改成fair就会下降到跟synchronized差不多 ReadWriteLock很简单,read不互斥,write互斥 CAS就是AtomicInteger之类的了,使用了CPU的交换指令,理论上比锁快,但是在高并发的环境一样会下降 你们还是看一下JDK源代码和JavaDoc好过了,你们的讨论本来就有答案的
Posted in Uncategorized
1 Comment
Mercurial续
上次谈到一些Mercurial的事情,后来因为忙别的事情没有继续写下去。中途跟cyfdecyf通过几次email讨论Mercurial。总体来说,我对Mercurial和分布式版本管理的理解还是比较松散的,比较难形成文章,但还是很希望把我所知道的写出来。 我对分布式版本管理的理解很简单。首先这里假设你有一般版本管理软件的概念(CVS或者SVN)。假设你在家里装了一个SVN服务器,你在家里编写的代码都提交上去。在公司也装了一个SVN,你在公司编写的代码也都提交上去。这里就有两个完全独立的SVN服务器了。分布式版本管理,就是这两个SVN服务器之间可以互相提交,其操作就像你提交上其中一台SVN那样,SVN之间互相提交就会将多个changeset同时提交。而且这两个SVN服务器没有主次之分,这样处理是很容易混乱的,实际上,我们会架设另一个SVN服务器,作为两个SVN的父,两个SVN向父提交changeset。这个行为仅仅是方便我们管理的一个比较好的参考做法,并没有强制。另外,当然SVN服务器是不支持互相提交的,于是我们需要一个分布式版本管理软件。 个人觉得,一台SVN就好像一台MySQL,我们只有一个数据库。而分布式版本管理就好像Master-Master MySQL集群。有经验的朋友就会知道,在集群中使用自增字段是不可取的,就像SVN的changeset id是自增的不能适应分布一样。做MySQL集群很经常会用UUID作为主键,分布式版本管理也使用了类似的机制来保证多个库之间的changeset有唯一的ID不会冲突。这个已经是比较细节的处理问题。这里暂时不打算细节研究具体的机制或者使用方法,先有一个大概的概念,看软件的refrence很快会上手的。 再待续 预告: 权限问题 Mercurial目前的情况 远程模式 在Dreamhost上使用Mercurial Mercurial基本使用
在Linux命令行下发送带附件的邮件
购买的虚拟主机没有备份服务(另外收费),但是很好地有SSH权限和Cron权限,于是写了一个简单的shell脚本备份打包mysql的数据,然后email到我的邮箱。但是Linux的mail命令并不能发送附件,于是自己写了一个小程序来发送附件。由于我比较熟悉Ruby,于是就用Ruby来实现,当然你也可以用Python或者Perl来实现 to_mail = ARGV[0] backup_name = ARGV[1] backup_attach = ARGV[2] require ‘net/smtp’ require ‘rubygems’ require ‘mailfactory’ mail = MailFactory.new mail.to = to_mail mail.from = "[email protected]" mail.subject = "#{backup_name} backup" mail.text = "no content" mail.attach backup_attach Net::SMTP.start("localhost") do … Continue reading
Posted in Linux
5 Comments
在Dreamhost上安装Trac(2)
前文说明了如何在Dreamhost安装Trac。安装完了怎么开始使用呢 因为Dreamhost是一个虚拟主机,因此我们不能使用tracd来启动,我们对外的唯一途径就是80端口的web server,也就是apache。而且我们不能自行安装apache的mod,于是也不能使用mod_python或者mod_wsgi的模式,也就是说只能用cgi或者fastcgi的模式,而本文只介绍fastcgi的做法 首先假设我们的站点的目录是~/mysite,而trac的目录在~/mytrac,而且我们已经初始化了一份trac 这里我把站点的目录和trac的目录分开,这样方便管理,而且站点其实需要很少文件的。我们只需要一个index.fcgi和一个.htaccess 这里是index.fcgi的内容 #!/bin/bash export TRAC_ENV="${HOME}/mytrac" export LD_LIBRARY_PATH=${HOME}/python/lib:${LD_LIBRARY_PATH} export LD_RUN_PATH=${HOME}/python/lib:${LD_RUN_PATH} export PATH=${HOME}/python/bin:$PATH exec ${HOME}/python/bin/python ${HOME}/python/share/trac/cgi-bin/trac.fcgi 由于我们的python是安装在用户目录的,因此需要更多的预设环境变量 其实你也可以直接copy trac.fcgi过来在头部加上配置,但是我更喜欢自己些一个文件然后exec默认的fcgi文件 而且我exec的时候,可以直接指定使用的python的路径,而在trac.fcgi头部标注路径的做法似乎不太生效 接下来就是.htaccess文件 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.fcgi/$1 [L] RewriteRule ^$ … Continue reading
在Dreamhost上安装Trac
在公司使用了一段时间的Trac,觉得很不错,于是想在Dreamhost上安装一个Trac,方便记录自己的一些想法,也可以用作跟朋友一起做一些小项目。本文就是介绍如何在Dreamhost上安装Trac Dreamhost的wiki里面也有提及如何安装Trac,但是相应的版本比较旧了,而且感觉也不是很完整,在参考wiki来安装的时候也碰到不少问题。最后还是决定安装目前最新版的Trac 0.11。之前介绍的在公司安装的是0.10,一来在windows下0.10一来的包都有二进制版本,二来那个时候0.11还没有很成熟。现在Trac官方网站已经把0.11的安装说明作为默认的了,看来0.11很快就要发布了。另外也因为在linux下安装本身就没有现成的二进制包,而0.11依赖的包更少,更容易安装。 Dreamhost上的python版本是2.3.5,另外因为没有办法使用根用户,所以索性在自己的用户底下安装最新的python2.5.1,更加容易处理。 从python网站下载Python-2.5.1.tgz,然后参看Dreamhost的wiki安装 cd mkdir python tar -zxvf Python-2.5.1.tgz cd Python-2.5.1 ./configure –prefix ~/python/ –enable-shared make make install install -c -m 644 ./libpython2.5.a ~/python/lib/ install -c -m 755 ./libpython2.5.so ~/python/lib/ install -c -m 755 ./libpython2.5.so.1.0 ~/python/lib/ 我把它安装在我的用户目录的python/下,有几个lib在用户模式下安装并不会copy到正确的位置,因此需要自己处理一下 然后就可以通过 … Continue reading
令你的Mac Term更好用
一直都认为Mac的Term很难用,包括内置的,还有很多人推荐的iTerm 我一直都在用iTerm,但是有很多问题,显示不了中文,输入不了中文,在VI或者一些软件下面不能用方向键(甚至我ssh到一台linux主机都不能用) 在windows平台的时候,使用putty或者securecrt等term软件,都有一大堆设置可以使用.而iTerm不停出新版本,也不见有多少个设置.就算用Linux,也没有那么多问题.还真的有狠心把MacBook装成Linux算了的想法 网上没有任何这方面的资料,还到一些blog里面留言询问别人的心得,也没有结果 研究了很久,终于知道怎么处理了 首先是方向键问题,我突然想想有可能emacs的键位可以使用,结果真的可以.^N ^P ^B ^F分别代表上下左右,这样用了一段时间 后来突然想起我在securecrt在设置把TERM改成Linux,改不会是有影响 于是在~/.profile加入 export TERM=linux 果然,方向键都有效了,整个操作变得跟Linux一样.原来securecrt的设置只是主动传给shell,而并不是它自己的设置.而且ssh到linux主机也正常了.后来研究发现,TERM会跟随ssh传递到远端shell,当然你可以自己再修改一次. 然后就是中文问题了,经过研究发现,我的Linux系统里面有一个文件/etc/inputrc 里面有一些关于meta的设置,而MacOS下面并没有这个文件 于是我在~/.inputrc加入一样的meta设置
给《程序员》写的MINA文章已经出刊了
第一次给杂志写文章,没什么经验,行文一般般,呵呵。不过也是能顺利出刊。 对文章有任何意见和建议,或者讨论MINA,可以在这里留言 迟点我再写一些MINA的心得
Posted in Uncategorized
5 Comments
在CentOS4上安装JMagick
用Java做网站经常要处理用户上传的图片,例如生成缩略图等等。虽然Java可以使用Java2D进行一些图片操作,但是功能和效率实在太差了。目前比较好的是用JMagick来进行图像处理,不过JMagick是通过JNI调用ImageMagick的,对平台有一定依赖。本篇文章就是在CentOS4上安装JMagick。 版本问题 CentOS4内置的软件版本一直都比较低,ImageMagick就只有6.0.7。另外JMagick也很久没有更新了,最新版是6.2.6-0,对应使用ImageMagick 6.2.6。而ImageMagick官方网站上只有6.3.8。情况有点混乱,最后决定使用最新版的ImageMagick和最新版的JMagick,似乎工作正常。 从ImageMagick官方ftp上下载最新版的ImageMagick和JMagick(是的,这里也有下载),分别解开。进入ImageMagick目录,运行 ./configure –prefix=/usr/local/ImageMagick make make install 因为我不想跟系统的ImageMagick相冲,于是安装到独立的目录里面了 然后进入JMagick的目录,运行 ./configure –prefix=/usr/local/jmagick \ –with-magick-home=/usr/local/ImageMagick \ –with-java-home=/opt/jdk make all make install 因为我的jdk是自己安装的,所以直接指定了。如果你遇到找不到java的错误,检查一下你是否配置了JAVA_HOME环境变量等,实在不行,就加上这个 export PATH=/opt/jdk/bin:$PATH 如果提示找不到ImageMagick相关资源,就加上这个 export PATH=/usr/local/ImageMagick/bin:$PATH export LD_LIBRARY_PATH=/usr/local/ImageMagick/lib 安装成功之后,就是在tomcat里面使用的问题了,我不习惯在整个系统里面增加环境变量的做法,一般来说,我会在具体的引用启动脚本里面加上环境变量的配置 打开tomcat/bin/catalina.sh,在顶部加入 LD_LIBRARY_PATH=/usr/local/ImageMagick/lib CATALINA_OPTS=”-Djava.library.path=/usr/local/jmagick/lib” 测试成功
Posted in 互联网
Leave a comment
SSH over proxy
一直都是用SecureCRT连接ssh服务器 由于我们的网络环境比较特殊,服务器在电信,但是我们办公的出口是网通 于是我用了一个在双通机房的sock服务器来proxy SecureCRT很简单就可以设置使用代理了 今天在研究rsync,打算over ssh来使用 用cygwin装了rsync和openssh 但是直接用ssh连接实在太慢了 研究了半天,终于搞定ssh的proxy配置 从这里得知,通过在~/.ssh/config加入ProxyCommand来实现 但是我试过几个版本的netcat,都没有-X -x的参数 而connect-proxy根本不知道在哪里能找到 有一个朋友说可以用Corkscrew,但是它只支持http proxy 还有一个connect.c,不过网站挂了 最后终于被我找到这个,似乎就是connect.c的新网站,使用方法都一模一样 Features of connect.c are: * Supports SOCKS (version 4/4a/5) and https CONNECT method. * Supports NO-AUTH and USERPASS authentication of SOCKS * Partially … Continue reading