VPS上搭建CVS服务器方法

19 11 月, 2013

有了自建的Xen VPS并成功通过Dropbox自动备份后,对于程序员来说更关心的是代码版本管理。之前也用Dropbox打包后备份,但这个方法无法回滚。

网上找到CVS Server在CentOS 6的部署办法,这里把脚本总结一下:

[bash]
#!/bin/bash
#
#没有安装cvs server时先安装一下
yum -y install cvs
#
#新建cvs组和cvsroot用户
groupadd cvs
useradd -g cvs cvsroot
#
#设置cvsroot用户的密码并改cvsroot目录的权限
passwd cvsroot
chmod 775 /home/cvsroot
#
#生成cvspserver配置文件,目录指向/home/cvsroot,用pserver方式访问
cat >/etc/xinetd.d/cvspserver<<EOF
# default: off
# description: The CVS service can record the history of your source \
#              files. CVS stores all the versions of a file in a single \
#              file in a clever way that only stores the differences \
#              between versions.
service cvspserver
{
disable                 = no
port                    = 2401
socket_type             = stream
protocol                = tcp
wait                    = no
user                    = root
passenv                 = PATH
server                  = /usr/bin/cvs
env                     = HOME=/home/cvsroot
server_args             = -f –allow-root=/home/cvsroot pserver
}
EOF
#
#使用cvsroot用户执行cvs的初始化,会在/home/cvsroot下生成CVSROOT目录
runuser -l cvsroot -c “cvs -d /home/cvsroot init”
#
#启动服务
/etc/rc.d/init.d/xinetd restart
#
#防火墙要开通TCP2401端口
iptables -A INPUT -p tcp –dport 2401 -j ACCEPT
service iptables save
service iptables restart
#
#下面的脚本要切换到cvsroot用户来执行
#如果su切换因需要密码而失败,需要手切换到并逐一执行
su cvsroot
cd ~/CVSROOT
touch passwd writers readers
chmod 770 passwd writers readers
#
#往后都是注释脚本,根据需要执行
#这是添加新用户脚本,使用perl代替Apache的htpasswd命令来生成密码,因这我的空间是LNMP
#add users, password do not support ‘@’ character
#echo -e “newuser:`perl -le ‘print crypt(“newpassword”,”salt”)’`:cvsroot” >> passwd
#
#add read-write users
#echo newuser >> writers
#
#add readonly users
#echo newuser >> readers
#
#下面的脚本是客户端的一些主要用法,可以用“cvs –help login”等来看命令格式
#login command
#cvs -d :pserver:newuser@host:/home/cvsroot login
#
#logout command
#cvs -d :pserver:newuser@host:/home/cvsroot logout
#
#checkout|update command
#cvs -d :pserver:newuser@host:/home/cvsroot checkout|update Test
[/bash]

转:英文地址写法

19 11 月, 2013

英文地址一般的写法与我们描述的相反,由小写到大;其次要注意标点符号和英文字母的大小写。格式如下:

(1)*** 室 / 房 :RM.*** ; (2) *** 村(乡): *** Village ; (3)*** 号: No. *** ; (4)***号宿舍: *** Dormitory ; (5)***楼 / 层 : *** /F ; (6) ***住宅区 / 小区 : *** Residential Quater ; (7)甲 / 乙 / 丙 / 丁 : A / B / C / D ; (8) ***巷 / 弄 : *** Lane ; (9)***单元 : Unit *** ; (10) ***号楼 / 幢 : *** Buld ; (11)***公司 : *** Com. / *** Crop ;(12) ***厂 : *** Factory ; (13)***酒楼/酒店 :** Hotel ; (14) ***路 : *** Road ; (15)***花园 : *** Garden ; (16) ***街 : *** Street ; (17)***县 : *** County ; (18) ***镇 : *** Town ; (19)***市 : *** / *** City ; (20) ***区 : *** District ; (21)*** 信箱 : Mailbox *** ; (22) ***省 : *** Prov. ; (23)中国:P. R. China.

Read the rest of this entry »

渐渐的右上角上的两小伙长大了

29 10 月, 2013

转眼间儿子和他的堂哥都在上大班了,刚给儿子起了个英文名叫“Skye”,天空的意思,因为他的名字里有个“天”字。

长大的孩子比较难以驾驭了。

为了锻炼他的自控力,他妈妈给他报了钢琴班,每天晚上都要陪他去琴房练琴,苦了他也累了大人,晚上做梦在背琴谱。识谱能力较差,都不知道还该不该让他坚持了,由他选吧。

后来给他报跆拳道,跟小区的小伙伴一起去,可积极了,晚上做梦都在练踢腿,算是给他强身健体吧,往后还打算带他去跑步。

他现在的特征是玩得很High,学得不啥的,一坐到钢琴旁边就老弄肚子不舒服,下了钢琴就像脱缰野马,做事拖拉。。。

折腾,继续折腾

15 10 月, 2013

最早被墙的域名是lordong.net,后来是lordong.pw,最后发现lordong.pw指向的IP也被墙了,好在买的Virpus XEN VPN提供两个IP,还有一个暂时还活着,都不知道是哪根神经触动了贵党的G点,空间有效期还剩半年,就拿来当翻墙用吧。

前阵子发现Virpus的洛杉矶机房又有XEN 512M的主机卖了,双IP半年付是3.6刀/月,考虑到在兲朝你随时都可能触到贵党的G点,那么买空间就不能按年买,贵党“打一枪换一炮”的理论还是值得学习的。

买好空间,把网站迁移过去,反正域名已经被墙了,再买还是会被墙,索性就回到起点用起lordong.net域名吧,不过改用https来访问了,正在申请StartSSL的免费证书。

我打算持有lordong.net域名到天亮的时候,其它临时域名就用过一年就甩了吧。

给XP安装Nexus 7的驱动

10 10 月, 2013

拿到Nexus 7二代,接上Windows XP系统,不认,从华硕和谷歌官网下最新驱动,发现压缩包大小一样,随便挑一个解压,更新驱动,还是不认。

N7接到Windows 7上直接认出来,还ROOT成功了。

今天在Google上搜索“nexus 7 xp 驱动”关键字,总算找到解决办法,驱动安装成功。

步骤:
1. 下载安装Windows Media Player 11,中英文版无所谓。
2. 接上N7,提示安装N7驱动,找到之前N7驱动的解压位置,安装Android驱动成功。
3. 进入设备管理器,双击打开N7的Android设备项,进入详情可以看到USB\VID_XXXX&PID_XXXX&MI_00字样,抄下两处XXXX的内容。
4. 打开c:\windows\inf\wpdmtp.inf文件,在[Generic.NTx86]和[Generic.NTamd64]各加一行:
%GenericMTP.DeviceDesc%=MTP, USB\VID_XXXX&PID_XXXX&MI_00
两处XXXX分别替换成上一步抄到的内容(我的N7显示MI_01,但我设成MI_00也通过),保存。
5. 重连N7,提示安装MTP驱动,找到之前N7驱动的解压位置,安装MTP驱动成功。
6. N7上进入系统,XP上将显示Nexus 7移动盘。

疑似本博的IP也被墙了

23 9 月, 2013

C:\>tracert lordong.pw

Tracing route to lordong.pw [198.167.136.171]
over a maximum of 30 hops:

  1     2 ms     2 ms     2 ms  192.168.6.16
  2    <1 ms    <1 ms    <1 ms  192.168.3.1
  3    <1 ms    <1 ms    <1 ms  220.248.*.*
  4     5 ms     2 ms     2 ms  112.64.252.73
  5     2 ms     3 ms     3 ms  139.226.193.25
  6    30 ms    31 ms    31 ms  219.158.97.121
  7    33 ms    35 ms    35 ms  219.158.101.34
  8     *        *        *     Request timed out.

通过ip138.com查到219.158.* IP是北京联通的,再试了电信ADSL也打不开,由此怀疑本博的IP也在域名被墙半个月后沦陷,贵裆G点真TMD多呀。。

不管它了,老子该写博的还是继续写,这博文里大多是自己技术上的积累,本来希望可以给他人在处理问题上带来些经验呢,结果贵裆这么一来反而让知识流离于墙外。

C#使用Attribute时的多语言化

23 9 月, 2013

通常在C#中我们用PropertyGrid来实验属性页功能,然后定义一个类,把对象实例传给PropertyGrid的SelectedObject属性。

然后在属性类中定义各个属性之前我们加各个Attribute调用来实现属性页上内容,如下代码:
[DisplayNameAttribute(“XXX Name”)]
[DescriptionAttribute(“XXX Description”)]
[CategoryAttribute(“YYY”)]
public string Name { get {…} set{…} }

现在需要实现多语言化,但在Attribute后的括号里不能使用Resources.XXX之类的内容来实现,因为那里需要常量。

解决办法是派生这些Attribute类,重载一些函数实现:

1. DisplayNameAttribute类我们重载public virtual string DisplayName { get; }属性

2. DescriptionAttribute类我们重载public virtual string Description { get; }属性

3. CategoryAttribute类我们重载protected virtual string GetLocalizedString(string value);方法

Read the rest of this entry »

Ngnix使用alias实现子目录配置

18 9 月, 2013

我以前在Ngnix上分别把/home/www和/home/ssl目录给分配http和https子域名,只需要在Nginx配置里不同的server下指定不同的域名对应不同的root即可。

然后我用ln -s把这两个目录链到Dropbox的同步目录下,配置crontab -e让Dropbox每天同步两次整个网站的内容到服务器,参见:利用Dropbox备份/恢复个人VPS

最近遇到的问题是有时需要传比较大的文件到服务器上让别人下载,默认情况下这些大文件也会被Dropbox同步到服务器,自已本地的Dropbox目录也会同步这些内容下来,可能本地还有多台电脑多个备份,这样的结果是浪费空间和同步时间。

通过搜索找到了一些解决思路,比如从这里知道alias可以跳出root的限制,然后我把原来下载目录/home/www/down下的所有内容移到/home/down目录下,Nginx配置里加下面几行,这样再下载时就跳出root从lias指定的目录下载,Dropbox也不会再同步这些大文件了:
location /down/ {
alias /home/down/;
}

目前还碰到的另一个问题时,如果在/home/down/下放图片或php文件,通过下载域名访问这些图片或php会说文件找不到,如果放html文件则没有问题。

推荐一个开源的PHProxy

18 9 月, 2013

PHProxy是一个网页代理的PHP源码,下载源码直接放到自有的PHP空间上即可通过浏览器使用。通过它可以实现在自己的PHP空间访问受限的目标网站,再把内存传回本地的浏览器上显示,它会把所有的链接全部替换成你部署PHProxy目录的链接,通过q变量传递该链接被加密后生成的参数,所以不会被GFW发现是访问导常网站而重置。

但还有个问题是网站内容没办法避开GFW的监测,虽然GFW不常这么做,因为此法会大大加重GFW的处理量,一般只会对特定的域名或IP做内容监测。以防万一,在部署PHProxy的地方推荐用SSL,可申请StartSSL免费一年的SSL证书。另外就是在域名根目录放一个文件名是robots.txt的文本文件,内容写下面两行,告诉正规的搜索引擎别搜索这个站点:
User-agent: *
Disallow: /

当然还有不正规的搜索引擎不遵守这个国际规范,尤其是某些国家,所以部署了PHProxy站点就不要公开使用了,私用或在可靠的熟人朋友之间使用即可。

这个PHProxy不支持视频,用来看看页面、图片就好了,想用视频就用goagent吧。

Read the rest of this entry »

看图说话:天与地

12 9 月, 2013

天与地

转自:http://bit.ly/1asQPzI