关于作者

用户名:youwater
笔名:youwater
地区: 福建-厦门
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



GNU/Linux

代码开发

Web设计

访问统计:
文章个数:11
评论个数:5
留言条数:2




Powered by BlogDriver 2.1

活在GNU/Linux的日子

 

阿水,一名GNU/Linux的拥护者,有5年的Linux使用经验。《活在GNU/Linux的日子》是我自2004.12.12开通第一个Blog起,对自己GNU/Linux的生活日记。欢迎大家观看指正。

文章

转移
我已将我的Blog转到了http://GNULife.CN,这里不再更新,欢迎大家访问我的新Blog站点。

- 作者: youwater 2005年07月19日, 星期二 16:15  回复(0) |  引用(0) 加入博采

SVN+Apache域用户认证配置方法

一、            引起

作为一个团队开发,公司长期以来的实践证明,手工操作版本管理是非常不明智的,一来浪费人力,二来效率低下,三来容易犯错。那么版本管理用什么工具好呢?

在开源世界中,CVSConcurrent Versions System)一直都是版本控制的首选。但是现在用户有了另一个选择,就是Subversion(SVN)SVN是下一代版本控制系统,能替代 CVS,项目主页是http://subversion.tigris.org 
   SVN是一个自由、开放源码、跨平台的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。 
    它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能 够顺利迁移到SVN上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记 等。。。

SVN有两种运行方式,一种是基于Apache Http Server,另外一种是SVN Standalone Server。一般推荐使用基于Apache Http ServerSVN,这样做几个好处:

A.能使用WebDAV协议。

B.能使用浏览器作为客户端工具浏览源码仓库。

C.可以很容易的支持 到SSPIWindows域认证)和LDAP,这些都是Apache本身就支持的。

D.能得到比较完善的Apache安全认证系统,比如 SSL加密连接。

考虑到公司同事基本上一直都是在Windows下过日子,所以考虑在Windows平台下搭建SVN,并且使用Windows域用户认证的方式管理SVN的权限配置,使用浏览器和TortioseSVN作为SVN的客户端,以进一步降低使用、管理门槛。

二、            配置流程

a)        安装配置域控制器

我用的是Windows2003企业版,配置域控制器比较简单,就不多说了。

b)        安装Apache

http://httpd.apache.com/下载最新版的Apache For Windows,我使用的版本是apache_2.0.52-win32-x86-no_ssl.exe,安装时选择以Windows服务方式运行。注意如果IIS已在运行,需要先关闭,或者更换端口。安装完成后用浏览器打开http://127.0.0.1看是否能看到Apache的测试页。

c)        安装SubVersion

http://subversion.tigris.org/下载最新版的SVN,我使用的版本是svn-1.1.4-setup.exe,安装程序会提示将自动修改Apache的配置文件,不要相信它,安装程序自动修改的并不完整,接下来一定要按下面的步骤重新检查配置。

d)        配置域用户认证

                         i.              检查<Apache Install Root>\modules下是不是已经有了mod_dav_svn.somod_authz_svn.solibdb42.dll三个文件,如果没有表示SVN没有安装正常,需要重新安装

                       ii.              打开<Apache Install Root>\conf\httpd.conf文件

                      iii.              httpd.conf中找到这三行:
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
把它们前面的注释号#删除

                     iv.              http://tortoisesvn.tigris.org/mod_auth_sspi.zip下载最新版的SSPI模块,我使用的版本是mod_auth_sspi/1.0.1,解开压缩包后把其中的mod_auth_sspi.so文件放到<Apache Install Root>\modules目录下

                       v.              httpd.conf中找到行“LoadModule auth_module modules/mod_auth.so”,在其前一行加入“LoadModule sspi_auth_module modules/mod_auth_sspi.so

                     vi.              现在我们假定要在c:\svn目录中存放各种SVN文件库,分别为repos1repos2…

                    vii.              httpd.conf文件的末尾加上
<Location /svn>
    DAV svn
    SVNParentPath c:/svn
    AuthzSVNAccessFile c:/svn/accessfilesspi
    Require valid-user
    AuthType SSPI
    AuthName "Subversion
文件库"
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain owl-2003.owl.local
    SSPIOfferBasic On
</Location>

1.        其中“<Location /svn>”表示通过Apache Web Server根目录下的svn子目录可以访问“SVNParentPath c:/svn”中定义的目录下的SVN文件库的内容;

2.        AuthzSVNAccessFile c:/svn/accessfilesspi”表示c:/svn/accessfilesspi文件中定义了域用户与文件库资源权限控制的详细信息

3.        SSPIDomain owl-2003.owl.local”表示在我的机器上域控制器名称为:owl-2003.owl.local

                  viii.              AuthzSVNAccessFile定义的权限控制文件举例
#
用户分组,以逗号分隔;用户名区分大小写;域用户用全称,即DOMAIN\UserName
[groups]
admins = OWL\Administrator
developers = OWL\water
docs = OWL\youwater

#
管理员组拥有所有权限
[/]
@admins = rw

#
开发人员可以完全控制源程序
[/myrepos]
@developers = rw

#
文档人员可以完全控制文档
[/docs]
@docs = rw

                     ix.              保存httpd.conf,并重启Apache,随便用一个浏览器打开http://127.0.0.1/svn/docs测试一下吧。注意用户名输入是大小写敏感的,域用户需要输入全称。

e)        安装TortioseSVN

http://tortoisesvn.tigris.org/下载最新的TortioseSVN和中文包,我用的版本是TortoiseSVN-1.1.5-UNICODE_svn-1.1.4.exe
LanguagePack_1.1.5_zh_CN.exe
TortioseSVNWindows资源管理器集成在一起,重启系统后就可以使用了,首先打开资源管理器,在随意位置点击右键,选择TortioseSVN=>Setting,把语言改为简体中文,确定后生效。

三、        附件

四、            还有什么问题吗?这仔细参看这些资源:

a)        Apache管理手册

b)        Subversion用户手册

c)        TortioseSVN用户手册

d)        有什么问题也可以联系本文作者共同学习(游水,youwater(at)gmail.com

- 作者: youwater 2005年05月10日, 星期二 09:45  回复(1) |  引用(0) 加入博采

写了个自己实用的小程序IPIt
      最近在外出差,使用笔记本电脑,经常需要在客户单位局域网和因特网之间切换。以前有类似的情况都是用一张网卡绑定多个IP设置来解决问题,后来发现这样网 络访问时需要查找多个网络,速度明显变慢。用Google找了个联网科技开发的"笔记本网络IP切换器7.0",感觉操作上很不方便,于是自己写了个小程序IPIt来完成这个功能:
我写的IPIt 笔记本网络IP切换器7.0

大家看着方面就试用一下吧。是用VB.NET+WMI+Sqlite开发的,安装前需要.NET FrameWork 1.1环境。

- 作者: youwater 2005年04月3日, 星期日 20:03  回复(0) |  引用(0) 加入博采

我为什么要用Linux

算起来,我从开始学习使用Linux到现在也有5年多的时间了。今天一个朋友到我这Blog看了一下,问我:"这Linux不怎么样嘛?"。我突然呆住了,Linux不怎么样?我为什么要学Linux?为什么要用Linux?慢慢地,我开始清理我的思路。


1、  Linux有什么好?我用WindowsMac OS/X不就很好?

a)         Linux的可用性,丰富的软件包,Windows下软件所拥有的功能在Linux下一样可以完成;

b)        Linux的易用性,有着跟Windows几近一致的操作界面、操作方法;

c)        Linux的可定制性,整个操作系统完全模块化设计,用户可以根据自己的功能需求,自由搭建操作系统,也可以根据最终用户的实际使用习惯,搭配成与Windows一样的操作环境;

d)        Linux的开放性,在一些特定的环境里,开放性带来了系统极大的可伸缩性,给一些大型软件系统的整合带来便利,也有利于一些错误的排除;

e)         Linux的安全性,一般用户在Linux下是很难碰到病毒的。近年来非常多的实际证明,当同时影响WindowsLinux的漏洞或病毒出现的时候,Linux解决问题的速度总是比Windows要快;

f)         Linux对旧硬件的友好适应性,现在是2004年末了,给你一台586的电脑你能做什么?如果装上个Linux,它可以变成一个功能强大,效率极高的Internet上网共享服务器;

g)        Linux是免费的,对于家庭用户来说,盗版是家长便饭了,可能全世界都是这样。但是对于企业用户来说呢?你有勇气随便盗版吗?微软公司随时可以联合公安部门把你给查了,到了这个时候一些小公司估计就只能关门了,对于一些大中型企业也是得不偿失;

h)        使用Linux的最终成本比Windows低得多,研究显示安装使用Linux成本依低于Windows

i)          Linux是有趣的,对于个人用户来说,使用电脑无非就是上上网、看看影片、偶尔写几个文档、打打游戏,这些应用对Linux来说都已经做得很好。除了这些,Linux还可以给你带来更多学习的乐趣、个性化系统的乐趣。

2、  我现在用Linux做什么?

a)         上网,网页浏览就用FireFox,功能相当棒,现在工作在Windows下时我也是用FireFox。网络沟通就用Gaim+OpenqXchat,感觉还是挺方便的

b)        看电影听歌,我用MplayerRealPlayerXmms

c)        写文档,我还不会用Tex,我用的是OpenOffice的变种:共创Office2005,这是我用过的感觉跟WindowsMs Office兼容最好的Office系统

d)        还有就是搭建起Lampb/s系统,我用gvimapachemysqlphp

e)         有时还用python写点小程序

3、  我为什么要用Linux

a)         兴趣,觉得Linux给了我在Windows下没有的自由度,感觉很好玩。Windows的操作与管理我自认已经比较精通,感觉Windows的可控制点太少,处处受到限制,有时遇上个Bug一点招都没有。Linux给我了最大的自由控制,我只会觉得自己能力的不足,而不会感觉说Linux是不可控的。

b)        为学Linux而用Linux,估计这也是很多同好者不得不承认的事实。

c)        Linux的前途很有信心,希望自己以后能为自由软件工作。

d)        我是搞erp的,我想Linux有了上面说到的种种优点,如果我帮用户搭建起一套基于Linuxerp解决方案,我相信迟早会有市场的。

- 作者: youwater 2004年12月30日, 星期四 18:10  回复(0) |  引用(0) 加入博采

.NET程序编译时的版本号自动更改
    因为公司项目的需要,写了一个VS.NET的宏,实现在编译程序时,自动修改版本号为当前时间,格式为:yyyy.MM.dd.HHmm 。

  1. 本文的根据这个原始实例修改而来
  2. 打开VS.NET->工具->宏->新建宏项目,命名为AutoBuildVersion
  3. 把Model1.vb重命名为AutoBuildVersion.vb
  4. 打 开EnvironmentEvents.vb,增加一个事件处理

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As _
EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
AutoBuildVersion()
End
Sub

    4.打开AutoBuildVersion.vb,增加两个处理过程,代码如下:
Imports EnvDTE
Imports System.Diagnostics

Public Module AutoVersion

'得到项目所在目录
Function GetProjectDir(ByVal FullName)

Dim proj_path
proj_path = Split(StrReverse(FullName), "\", -1, 1)
Dim count
count = UBound(proj_path)
Dim full_path
full_path = ""

Dim i
For i = 1 To count
full_path = full_path & "\" & proj_path(i)
Next

GetProjectDir = StrReverse(full_path)

End Function

' This event will be triggered after every build of a project
' You can modify the code below to only update projects that are active
' It currently will scan all projects in the solution for AssemblyInfo.vb files
' to update.
Sub AutoBuildVersion()
'Comment the follow 3 lines, if you want the build number to increment even if the build fails
If DTE.Solution.SolutionBuild.LastBuildInfo() <> 0 Then
Exit Sub
End If

' Change this, if you would only like to modify the AssemblyInfo file in active project files
' For Each proj As Project In DTE.ActiveSolutionProjects
For Each proj As Project In DTE.Solution.Projects
Dim full_path
full_path = GetProjectDir(proj.FullName)
' Attempt to open the AssemblyInfo.vb file
full_path = full_path & "AssemblyInfo.vb"

Try
DTE.ItemOperations.OpenFile(full_path).Activate()
Dim activeDoc As Document = DTE.ActiveDocument
Dim objSelection As TextSelection
objSelection = DTE.ActiveDocument.Selection
Dim objStartPosition As Integer

' Get the text between AssemblyVersion(" and ")
objSelection.FindText("AssemblyVersion(""")
objStartPosition = objSelection.BottomPoint.DisplayColumn
Dim objEndPosition As Integer
objSelection.FindText(""")")
objEndPosition = objSelection.AnchorPoint.DisplayColumn

' Get back to after the AssemblyVersion" part
objSelection.StartOfLine()
objSelection.FindText("AssemblyVersion(""")
objSelection.Collapse()
objSelection.MoveToDisplayColumn(0, objEndPosition, True)

objSelection.Text = Now.ToString("yyyy.MM.dd.HHmm")

activeDoc.Close(vsSaveChanges.vsSaveChangesYes)
Catch

End Try
Next
End Sub

End Module

    5.保存项目,并关闭,以后所有项目在编译之前,AssemblyInfo.vb中的版本号都会被自动更新为当前时间。

- 作者: youwater 2004年12月17日, 星期五 13:47  回复(0) |  引用(0) 加入博采

关于程序测试
    近期对一个问题感触比较深,就是一些程序员总是容易犯一些比较"低级"的错误,而这些错误本应在提交给测试员之前被消灭。是不是有什么自动测试工具可以帮助程序员自动找出这些错误,以提高测试的效率及进一步提高代码质量?
    由此引发了关于测试手段的思考......


- 作者: youwater 2004年12月15日, 星期三 17:28  回复(0) |  引用(0) 加入博采

我的Debian系统安装过程
  1. 安装前的准备
  2. 基本系统的安装
  3. Gnome安装
  4. 其他软件包的安装
  5. 中文环境配置
  6. Java环境配置
  7. Apache配置
  8. Samba配置
  9. 其他

即将推出...

- 作者: youwater 2004年12月13日, 星期一 21:34  回复(0) |  引用(0) 加入博采

我的桌面系统拷屏
我 的桌面系统拷屏,Debian unstable,GDM,Gnome,Firefox,Gaim+Openq,Mplayer,Samba,共 创Office。

GDM
局域网浏览
FireFox浏览效果 Openq_Mplayer
Edit_XLS Edit_PPT

- 作者: youwater 2004年12月13日, 星期一 21:29  回复(0) |  引用(0) 加入博采

我现在用的Linux配置
我现在用的Linux配置,包括硬件环境,软件平台,常用的软件包等。

  • 硬件配置:
    • 主板芯片:Intel 845GL,集成显卡、声卡
    • LCD:1024x768@60Hz
    • 网卡:Broadcom 440
    • 移动硬盘:钮曼usb2.0
  • 发行版:Debian,unstable版本,内核v2.6.8,所有硬件自动识
  • Locale设置:zh_CN.gb2312
  • 中文字体:simsun.ttf
  • 桌面系统:Gnome v2.8
  • 多系统引导管理器:Grub v0.95
  • GUI引导管理器:gdm v2.6
  • Office套件:共创Office v2005,实现与MS Office的界面、操作、文档的全面兼容
  • 图形工具
    • dia,类似Visio的软件,带有大量图库
    • gThumb,类似AcdSee的图像浏览器
    • gimp,类似Photoshop的图像编辑器
    • freemind,基于xml的思维图记录软件,最新的Visio2003专业版开始有一样的功能,java程序
  • Web浏览器:Firefox v1.0.5,轻巧、完美的Web浏览器,支持插件扩展、主题更换。
  • 邮件客户端:Thunderbird v0.9
  • 下载工具
    • wget,传统的文本下载工具,支持断点续传
    • Download Manager,wget的gtk前端
    • Azureus,java程序,基于Elipse平台开发
    • aMule,Linux下的电骡,p2p好工具
    • gftp,ftp客户端
  • 聊天工具
    • Gaim+Openq
    • Xchat
  • 多媒体播放器
    • XMMS
    • Rhythmbox
    • RealPlayer
    • Mplayer
  • 字典工具:Stardict v2.4
  • 软件包管理工具
    • apt系列文本工具
    • synaptic v0.56
  • 游戏
    • Xmame+Kof97
    • SuperTux

- 作者: youwater 2004年12月12日, 星期日 21:31  回复(0) |  引用(0) 加入博采

常见的Linux发行版
我了解的几个发行版,还有我的一些使用体会。

  1. Debian:传说中最纯的GNU/Linux系统。我自今年初使用以来,再也不想去用别的发行版。因为它有几大特点:
    1. 安装简单,虽说它的安装程序一直还是基于文本界面的(为了兼容其他CPU平台),但操作上确实已经非常简单,而且可以让你非常自由地控制安装的每一个环节。还支持完整光盘安装、小光盘安装、网络安装等多种安装方式。
    2. 软件包管理功能强大、操作简单,自动解决软件包依赖关系。apt系列管理工具和图形化的synaptic管理工具,喜欢用哪个就用哪个。
    3. 软件包丰富,几乎在自由软件领域的所有软件都有.deb的格式,还有很多其他非GPL的软件也非常容易在Debian上安装使用。
  2. Slackware:另一个最古老的Linux发行版,仍旧吸引了广大用户。与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则,就是说没有任何配置系统的图形界面工具。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。
  3. Redhat(Fedora Core):最流行的Linux发行版之一,也是挣钱最多的Linux服务商之一(听说IBM、HP挣得比Redhat还要多得多)。其创建的rpm (Redhat Package Manager)软件包格式也是现在最流行的软件包格式之一。Redhat 9.0以后,把桌面版的开发工作转给了开源社区,以后的版本叫Fedora Core,从1.0版本开始,现在3.0版本刚推出不久。Redhat 5.1是我接触的第一个Linux版本,是随《Linux实用大全》这本书配送,据说这个版本也是国内刚开始在业内流行Linux时使用最广泛的版本。想 到自己现在Linux的水平,汗!我用的Linux发行版中用得最多的就是Redhat,但到了9.0以后就没再用过了。
  4. Novell(SuSE): 一直以来听说SuSE是最华丽的Linux系统,而且自带的配置、升级软件包操作方便。今年初试用了一小段时间,感觉还不错。但最终我还是转向了 Debian。呵呵。2004.02.04 Novell完成对SuSE的收购,2004.10.10 Novell在SuSE的基础上推出Novell Linux Desktop 9。
  5. Mandrake:以Redhat为基础,拥有比Redhat更华丽的界面,也是我前两年最喜欢用的发行版之一。
  6. Ubuntulinux:基于Debian,完整的Linux桌面系统,感觉基于Debian的发行版都是聪明的发行版,站在Debian的肩膀上想不成功都难。由于在国内还没有它的镜像站点,曾经想试试它的魅力,下载速度太速,想到以后更新麻烦,只好作罢。
  7. TurboLinux
  8. LFS
  9. Gentoo
  10. ArchLinux
  11. 蓝点Linux
  12. XtermLinux
  13. 红旗Linux
  14. Hiweed
  15. 华镭Linux
未完待续...

- 作者: youwater 2004年12月12日, 星期日 21:22  回复(2) |  引用(0) 加入博采