• 摘:(Fireshort即偶的观点,Rainking是linuxer杂志编辑的观点)

    Fireshort:

    《Struts,一个开源的MVC实现》是一篇好文章,然而,却是too old了,记忆中很久很久以前已经看过了,一google,发现是ibm dw上文章:
    http://www-128.ibm.com/developerworks/cn/java/j-struts/
    时间是2001 年 2 月 23 日!
    作为一本Linux方面的杂志,用了差不多10页来说一个Java框架,感觉像是充字数的,而且
    时效性太差。这一点从文章中struts的版本也很容易看出,明显还是struts1的,编辑都没有搞Java开发的?如果是这样,我可以代为审核,确保Java方面的文章不至于太out。不过还是建议不要大篇幅的出现只谈Java的文章。

     Rainking:

    据我所知,目前绝大多数公司在开发java程序的时候选择的jdk版本是1.4.2,很多目前还未发售的游戏(地狱之门等等)是用MFC开发的.

    out?过时?个人的态度而已.

    去年暑假候捷给我们上课的时候,用的是win98+word97.out?过时?

    超多的经典教材,多到我都懒得一个个报名字,都是上个世纪的产物,难道都out?过时?too old?

    ok,不想再讨论时限的问题,大家都明白我的意思.

    至于为何花10页的篇幅写struts,是因为1 它是开源的 2 无数读者想看开发的,技术的文章 抛砖引玉 看看读者态度而已

    Linuxer要扩展文章的类型了,以linux为主打,开源的文章也可以上,就这样

    Fireshort:

    “目前绝大多数公司在开发java程序的时候选择的jdk版本是1.4.2”这个倒是我孤陋寡闻了。
    经典的教材跟一个开发的框架没有可比性。有一句话说,总有一些东西值得我们的后代去记取,然而,却绝对不是上面这篇介绍struts1的文章。对于 Java Web开发的初学者,我宁愿他先学会基本的Servlet+Jsp,然后投入学习更好的web框架,而不是学习deprecated的struts1。后 发者要发挥后发者的优势,不要浪费时间照着别人的错误再错一次,吸取教训就可以了。

     

  • 2007年01月17日

    CVS服务器设置指南

    Tag:Linux CVS

    第二次配置CVS服务器体会:
        1、要用清醒的头脑做事情,不然很容易犯低级错误。
        2、Linux可能比Window更像woman:出错了,你不知道哪里错,我也不会告诉你。

    首先确保系统安装有cvs:
    [root@mail xinetd.d]# rpm -qa|grep cvs
    cvs-1.11.1p1-3
    如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包。

    一 创建CVS属主用户(用于管理CVS,做CVS操作):
     useradd -d  /deke/cvscore/ cvs
     chmod 771 /deke/cvscore/
    二、建立CVS仓库(初始化cvs)
    # su cvs
    $ cvs -d  /deke/cvscore/  init
    $exit
    #
    三、启动cvs服务器
      在Linux上CVS服务可以通过inetd、xinetd或tcpwrapper等来启动,其中inetd由于安全理由在许多场合已经被xinetd所取代了。这里我们使用xinetd来启动CVS服务。
    在/etc/xinetd.d/目录下创建文件cvs,内容如下:
    # default: on
    # description: The cvs server sessions;
    service cvspserver
    {
            socket_type = stream
            wait = no
            user = root
            server = /usr/bin/cvs
            server_args = -f --allow-root= /deke/cvscore/ pserver
            log_on_failure += USERID
    }
     注:
      1)pserver表示是口令认证的访问方式,这是最常用的方式,其他还有gserver,kserver,ext,如果想要更高的安全性可以使用ssh来加密口令和数据流,不过这里为了用户使用的方便,仍然选的是pserver
      2)--allow-root是指定Repository的目录,可以建立多个Repository
            3)请注意每行等号左右都有一个空格,否则无法启动服务。

    修改该文件权限:
    # chmod 644 cvs
    然后重新启动xinetd:
    # /etc/rc.d/init.d/xinetd restart
    然后察看cvs服务器是否已经运行:
    [root@mail xinetd.d]# netstat -lnp|grep 2401
    tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
    则说明cvs服务器已经运行。

    四、创建用来访问cvs的用户
    前面创建的cvs用户是cvs仓库管理用户,而为了让用户访问则还需要一个访问用户:
    # useradd cvspub
    # usermod -G cvs cvspub
    这里添加了一个用户cvspub,并且将该用户添加到cvs组中。

    五、管理cvs服务器
    CVS默认使用系统用户登录,为了系统安全性的考虑也可以使用独立的用户管理。CVS用户名和密码保存在CVSROOT目录下的passwd文件中,格式为:
    用户名:密码:系统用户
    也就是说,它把CVS用户映射到系统用户,这样我们就可以通过系统用户的权限设置来分配给用户不同的权限,而不需要让用户知道系统用户名和密码。

    注意:CVS用户不能跟系统用户重名,否则会提示没有权限之类错误。

    passwd文件默认并不存在,我们必须自己创建。文件中的密码字段使用MD5加密,不幸的是CVS没有提供添加用户名的命令,所以我们借用Apache的命令来完成这项工作:

    #htpasswd passwd username

    这个命令为username指定密码,并保存在passwd中,文件不存在时会自动创建。htpasswd命令不是为CVS而设,因此总有一些遗憾,它不能自动添加映射到的用户名,不过没关系,我们设置好密码后,自己把这部分加上。我的做法是映射到cvspub用户,如果需要映射其他的用户,请注意给相应的目录设置好权限,否则CVS用户可能无法访问源代码仓库。
    要彻底防止使用系统帐号登陆,可以编辑CVSROOT目录下的config文件,把

    代码:
    #SystemAuth=no

    这一行前面的#去掉,CVS就不会验证系统用户了,否则当用户名不在passwd文件中时,CVS会进行系统用户的验证。

    此外还必须配置读写权限,使用CVSROOT目录下的readers和writers文件进行这个工作。这2个文件默认也是没有的,没关系,自己创建就可以了。readers文件记录拥有只读权限的用户名,每行一个用户;writers文件记录拥有读写权限的用户名,也是每行一个用户。注意, readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。

    readers、writers有没有效果?

    六、源代码仓库的备份和移动
    基本上,CVS的源代码仓库没有什么特别之处,完全可以用文件备份的方式进行备份。需要注意的只是,应该确认备份的过程中没有用户提交修改,具体的做法可以是停止CVS服务器或者使用锁等等。恢复时只需要把这些文件按原来的目录结构存放好,因为CVS的每一个模块都是单独的一个目录,与其他模块和目录没有任何瓜葛,相当方便。甚至只需要在仓库中删除一个目录或者文件,便可以删除该模块的一些内容,不过并不建议这么做,使用CVS的删除功能将会有一个历史记录,而对仓库的直接删除不留任何痕迹,这对项目管理是不利的。移动仓库与备份相似,只需要把该模块的目录移动到新的路径,便可以使用了。
    如果不幸在备份之后有过一些修改并且执行了提交,当服务器出现问题需要恢复源代码仓库时,开发者提交新的修改就会出现版本不一致的错误。此时只需要把CVS相关的目录和文件删除,即可把新的修改提交。