2004年12月30日

在HPUX下正确使用硬盘的顺序及相应命令如下:

1. 先建物理卷:
# pvcreate -f /dev/rdsk/cCdDtT
这里必须使用硬盘的字符设备文件

2. 再建逻辑卷组:
# mkdir /dev/vg0X X:0~f,逻辑卷组名
# mknod /dev/vg0X/group c 64 0×0X0000
# vgcreate vg0X /dev/dsk/cCdDtT

3. 然后划分逻辑卷:
# lvcreate -L size vg0X size:该逻辑卷大小

4. 在LV上建文件系统:
# newfs -F file_system_type /dev/vg0X/rlvolY
file_system_type:文件系统类型,包括hfs和vxfs,注意此时用该逻辑卷的字符设备文件。

5. 将此文件系统Mount到一个目录下:
# mkdir /directory
# mount /dev/vg0X/lvolY /directory
    到此为止,您已经可以使用这个硬盘了。有时您可能在现有的环境下,需要添加、删除逻辑卷,或者是需要扩大文件系统。我们可以这样做:

6. 添加逻辑卷
1) 添加文件系统卷。例如:在vg01上添加一个200M的文件系统卷,卷名为data,mount到目录/sample 上。
A、创建逻辑卷,在系统提示符下键入命令:
# lvcreate -L 200 -n data /dev/vg01
B、在逻辑卷data上创建文件系统:
# newfs -F hfs /dev/vg01/rdata
注:如果是vxfs文件系统,则用
# newfs -F vxfs /dev/vg01/rdata
C、创建目录/sample,并将逻辑卷data mount 到/sample.
# mkdir sample”
# mount /dev/vg01/data /sample
D、用bdf命令,将会看到/dev/vg01/data mount 到 /sample上。
2) 添加非文件系统卷(raw data volume)。例同上。
A、创建逻辑卷,在系统提示符下键入命令:
# lvcreate -L 200 -n data /dev/vg01
B、创建目录/sample,并将逻辑卷data mount 到/sample.
# mkdir sample
# mount /dev/vg01/data /sample
C、用bdf命令,将会看到/dev/vg01/data mount 到 /sample上。

7. 删除逻辑卷
例如:删除 vg01 中名为 data 的逻辑卷,mount 到/sample。
1) 卸载所要删除的逻辑卷:
A、首先用 umount 命令将逻辑卷 data 从/sample上卸载下来:
# umount /sample
B、若系统提示设备忙,不能卸载;则在根目录系统提示符下,键入以下命令,进入单用户:
# shutdown -y 0
在单用户下,先将所有逻辑卷mount上,键入命令:
# mount -a
用bdf命令看该逻辑卷是否已经mount上,如果mount上,键入以下命令:
# umount /sample
2) 删除逻辑卷 /dev/vg01/data ,用命令:
# lvremove /dev/vg01/data

8. 扩大文件系统
1) 扩大文件系统,首先要找到这个文件系统所对应的逻辑卷,只有首先扩大逻辑卷,给文件系统以扩大的空间,才能扩大文件系统。
2) 为扩大逻辑卷,先进单用户,在根目录系统提示符下,键入命令:
# shutdown -y 0
3) 进入单用户后,先将所有文件系统mount上,键入命令:
# mount -a
4) 用bdf命令看该文件系统是否已经mount上,如果mount上,用命令 #umount文件系统名umount该文件系统。例如,想要扩大”/usr”到500M ,就键入命令:
# umount /usr
5) 用命令:
# lvextend -L 500 /dev/vg00/lvol4
这里,假定 /usr 对应 /dev/vg00/lvol4
6) 用命令:
# extendfs /dev/vg00/lvol4 扩大文件系统。
注:如果是vxfs文件系统,则用
# extendfs -F vxfs /dev/vg00/lvol4
7) 用命令:
# mount /dev/vg00/lvol4 /usr
将文件系统 mount 到 /usr
这样,文件系统”/usr”就被扩大了,
8) 用命令:
# init 3 进入原来多用户运行级。

9. UNIX 的文件系统
    UNIX的文件系统是树状结构,一般指在一个逻辑卷上的文件的集合。从根开始,从表面上看,文件系统好象是一个整体,但实际上,文件系统可以分成不同的部分,单独占据一块逻辑卷,就是一个文件系统。



2004年12月28日

刚看到几篇对印度软件外包评论的,似乎所有人都觉得不怎么样,不应该成为榜样。

其实印度软件应该说还是有自己的特点的,如果说以前是纯编码,像国内一些人说的那样,那现在他们早就跨过了那个阶段,开始从需求,设计等全部都做了。相反,国内一些做软件外包(比如大连很多做日本软件外包业务的)还停留在单纯的coding。印度已经形成完整的软件开发链,再不是中国人眼中的一帮蓝领在美国人带领下看着流程图码英文。人家有了专门的高,中,低层次的开发设计人员,分工明确,形成了很完善的产业链。

反观中国的程序员,每个人都觉得自己很强,很难静下来做技术。每个人都能做点分析,作点设计,做点编码,可是几乎没有人能专门做哪一个做的好。中国缺乏专业的分工,或者就像媒体说的,缺乏蓝领阶层。但是我们所缺乏的蓝领阶层绝对不是什么北大青鸟三个月那种蓝领。更不是什么刚毕业的软件学院本科生生。我们已经有了很多优秀的程序员,但是我们需要他们静下来,少点浮躁,安心的做一名普通的程序员,而不是整天想着做什么项目经理。而前面说的那些,根本连coding都做不好,做蓝领都不合格。而缺少蓝领导致的直接原因,就是缺乏高级管理人才,没人给你管,当然没办法产生自己的高级人才。

中国的程序员被拔的太高了,稍微会点什么语言就以为自己应该是社会精英了。其实中国软件从业人员大多处在一个中低级水平,缺乏高级人才。当然不是说作为个体我们比印度差多少(应该说可能还要好点),但是在印度,和我们差不多的个人,愿意做一名所谓的蓝领工人,而我们不行,所以我们的软件产业始终不能做大。一个公司到上百人已经很了不起了,更别说很大的开发团队。做大型软件更无从谈起。没办法。

当然,这其中待遇,教育,中国人的传统,社会的现状对中国软件业的发展也有很大的影响。而印度软件业的发达,其实并不一定是什么好事。精英经济一向是印度的痼疾。可是做为一个程序员,我们是不是应该单从软件产业上承认我们与印度的差距?是不是该首先从自己身上好好找原因?

2004年12月27日

询:

String str=”abc efg ABC”;

String regEx=”a|f”;   //表示a或f 

Pattern p=Pattern.compile(regEx);

Matcher m=p.matcher(str);

boolean rs=m.find();

如果str中有regEx,那么rs为true,否则为flase。如果想在查找时忽略大小写,则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);

提取:
String regEx=”.+\\\\(.+)$”;

String str=”c:\\dir1\\dir2\\name.txt”;

Pattern p=Pattern.compile(regEx);

Matcher m=p.matcher(str);

boolean rs=m.find();

for(int i=1;i<=m.groupCount();i++){

System.out.println(m.group(i));

}

以上的执行结果为name.txt,提取的字符串储存在m.group(i)中,其中i最大值为m.groupCount();

分割:

String regEx=”::”;

Pattern p=Pattern.compile(regEx);

String[] r=p.split(“xd::abc::cde”);

执行后,r就是{“xd”,”abc”,”cde”},其实分割时还有跟简单的方法:

String str=”xd::abc::cde”;

String[] r=str.split(“::”);

替换(删除):

String regEx=”a+”; //表示一个或多个a

Pattern p=Pattern.compile(regEx);

Matcher m=p.matcher(“aaabbced a ccdeaa”);

String s=m.replaceAll(“A”);

结果为”Abbced A ccdeA”

如果写成空串,既可达到删除的功能,比如:

String s=m.replaceAll(“”);

结果为”bbced  ccde”

附:

\d 等於 [0-9] 数字 
\D 等於 [^0-9] 非数字 
\s 等於 [ \t\n\x0B\f\r] 空白字元 
\S 等於 [^ \t\n\x0B\f\r] 非空白字元 
\w 等於 [a-zA-Z_0-9] 数字或是英文字 
\W 等於 [^a-zA-Z_0-9] 非数字与英文字 

^ 表示每行的开头
$ 表示每行的结尾

2004年12月17日

一个小的WEB项目中的实现方法讨论

最近对一个别人的WEB项目进行维护,看到这样的实现方法:
1.只有一个Controller的servlet 类
2.一个Service接口
3.一些实现Service接口的类

Controller类负责进行控制,动态产生业务逻辑的类的实例(所有的类需要实现Service接口),然后通过
httpservletrequest.setAttribute(“USERLIST”, userList);向WEB端赋值,

具体的可以参考部分代码:
Controller 类(extends HttpServlet )


protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//service name,example for packagename.ServiceName
String serviceName = request.getParameter(Constant.SERVICE);
if (serviceName == null)
throw new ServletException("There isn't service parameter![?service=]");
String targetName = request.getParameter(Constant.TARGET);
//the targeted file name,example for /fileName.jsp
if (targetName == null)
throw new ServletException("There isn't target parameter![?target=]");
ServletContext servletcontext = getServletContext();
try {
//TODO:hashmap to reduce the generated instance?
Class serviceClass = Class.forName(serviceName);
Service service = (Service) serviceClass.newInstance();
service.execute(request, response, servletcontext);
} catch (ClassNotFoundException classnotfoundexception) {
throw new ServletException(classnotfoundexception.getMessage());
} catch (IllegalAccessException illegalaccessexception) {
throw new ServletException(illegalaccessexception.getMessage());
} catch (Exception exception) {
throw new ServletException(exception.getMessage());
}
forward(request, response, targetName);
}



Service 接口


public interface Service {
public abstract void execute(
HttpServletRequest httpservletrequest,
HttpServletResponse httpservletresponse,
ServletContext servletcontext)
throws Exception;
}



一个实现service的类(相当于业务类)


public class StartService implements Service {

public void execute(
HttpServletRequest httpservletrequest,
HttpServletResponse httpservletresponse,
ServletContext servletcontext)
throws Exception {
//test data
List userList = new ArrayList();
httpservletrequest.setAttribute("USERNAME", "TestUser");
httpservletrequest.setAttribute("USERLIST", userList);
}

}



JSP 页面文件


<%
String userName=(String)request.getAttribute("USERNAME");
List userList=(List)request.getAttribute("USERLIST");
%>




访问的时候:
/service.Controller?service=StartService&target=/StartPage.jsp


我现在想知道的
1.这种实现方案怎么样?为什么这么做,有什么好处
2.产生的service 类对象有没有必要用hashmap保存,以避免产生更多的对象


//TODO:hashmap to reduce the generated instance?
Class serviceClass = Class.forName(serviceName);
Service service = (Service) serviceClass.newInstance();
service.execute(request, response, servletcontext);
2004年12月15日

网页色彩设计点滴

 
大自然是彩色的。信息时代的快速到来,网络也开始变的多姿多彩。人们不再局限于简单的文字与图片,他们要求网页看上去漂亮,舒适。所以当代设计者不仅要掌握基本的网站制作技术,还需要掌握网站的风格,配色等设计艺术。其中色彩在网站设计中占据相当重要的地位。
    一、 色彩的一些基本概念

    首先了解一下色彩的一些基本概念。自然界中有好多好多种色彩,比如玫瑰是红色的,大海是蓝色的,桔子是橙色的……但是最基本的有三种(红,黄,蓝),其它的色彩都可以由这三种色彩调和而成。我们称这三种色彩为“三原色”。
    现实生活中的色彩可以分为彩色和非彩色。其中黑白灰属于非彩色系列。其它的色彩都属于彩色。任何一种彩色具备三个特征:色相,明度和纯度。其中非彩色只有明度属性。
    色相,指的是色彩的名称。这是色彩最基本的特征,是一种色彩区别于另一种色彩的最主要的因素。比如说紫色,绿色,黄色等等都代表了不同的色相。同一色相的色彩,调整一下亮度,或者纯度很容易搭配,比如,深绿,暗绿,草绿,亮绿。
    明度,也叫亮度,指的是色彩的明暗程度,明度越大,色彩越亮。比如一些购物,儿童类网站。用的是一些鲜亮的颜色,让人感觉绚丽多姿,生气勃勃。明度越低,颜色越暗。主要用于一些游戏类网站,充满神秘感;一些个人站长为了体现自身的个性,也可以运用一些暗色调来表达个人的一些孤僻,或者忧郁等性格。有明度差的色彩更容易调和。如紫色(#993399)跟黄色(#ffff00),暗红(#cc3300)跟草绿(#99cc00),暗蓝(#0066cc)跟橙色(#ff9933)等。图1中的(1)就是明度由高到低变化的例子。
 

 
归类于: A-程序开发 — dowei @ 11:25 am 评论(0)

2004年12月09日




千钧一发-Gattaca

http://us.imdb.com/title/tt0119177/
◆评  分:7.5/10(23,214 votes)
◆文      件:347M
◆视频尺寸:608×256
◆压缩格式:450K-2PASS
◆内容简介:
      這是一部迥異於時下光怪陸離,特效掛帥的科幻片傑作,片中沒有奇形怪狀的異形生物,冒險刺激的太空旅行,它甚至沒有震撼人心、製造氣氛的大型管樂。比較起來,《千鈞一髮》是一部科幻片中的清新小品,但它所透露出來意含的卻深刻細膩得多。

  在這個世界中,優良基因份子是社會菁英,而自然生產,沒經過優生學改進的人類則普遍被視為劣等人。

  傑若米(伊森霍克飾演)是自然的產物,但他的夢想野心卻是只有優生學下的人類才可以達成的 — 進入太空探險。

  為了進入太空總署—GATTACA,甚至被選為太空探險的一員,傑若米不惜改造自己的外型,向優良人種(朱德羅飾演)借身分來達成自己的目標。為了身分不被識破,他不能在太空總署裡留下自己的任何蛛絲馬跡,頭髮,血液,尿液,甚至皮膚屑。

  就在考選的前一週,一個任務指揮官在總署裡被謀殺了,看熱鬧的傑若米在現場不慎遺留下一根眼睫毛!這根眼睫毛不屬於總署裡任何一個人的(傑若米是冒充別人的身分在裡面接受訓練),也因此,傑若米要更加小心防備,才能避開重重的危機和嫌疑。

  我覺得很棒的是這部片所有的小細節都很細膩的被描繪出來,像傑若米每次打電腦時都會拿出刷子和瓶子來將自己掉落的皮膚屑掃起來,任何東西都是牽一髮而動全身的,一根小小的眼睫毛也能惹出這麼大的事端,甚至差點讓傑若米苦心的經營毀於一旦,非常寫實也令人捏把冷汗,中文片名也取得很好,有畫龍點睛之效。

  基因真的能代表一切嗎?有雄心壯志卻沒有先天條件的人難道就註定抱憾終生嗎?這就是這部片所要闡述的:沒有任何基因能決定人類精神。只要後天努力,就算沒有很好的先天條件,也是可以成功的。

  這部片雖然沒有時髦驚奇的異形怪物,但俊男美女組合令人賞心悅目,場景也非常特別新穎,每一幕都調度得非常優美流暢。最值得一提的是它的配樂,優美動聽,將全片的境界烘托提升得無與倫比,是麥可奈門電影配樂中我特愛的一張。

  唯一的小缺陷是片中出讓身分給傑若米的朱德羅(我忘了他片中的名字了),他這樣好的一個人卻有這麼悲慘的下場,實在是結束得令人感到有點不值與莫名其妙。(他為了讓傑若米永遠擁有他的身分而不惜讓自己消失在世界上…

  這部片是我一年前在美國看的,很可惜台灣沒有上檔,不過聽說台灣的CINEMAX在播,希望大家不要錯過哦!還有,片中男女主角因合演此片而共偕連理,真是絕配!

借刀杀人-Collateral


http://us.imdb.com/title/tt0369339/
◆评  分:7.6/10 (12,570 votes)
◆文  件:391MB
◆视频尺寸:640×256
◆压缩格式:2pass 450K

◆简  介:

◆剧情·扑朔迷离◆

  一个声名狼藉的跨国贩毒集团发觉自己将被联邦大陪审团指控,于是,他们丧心病狂的作出杀人灭口的决定。文森特(汤姆·克鲁斯)是一名冷酷无情的职业杀手。他受雇于贩毒集团只身来到洛杉矶,凭借出色的身手和凶残的手段文森特接连干掉了5位知情人,一切进行的似乎很顺利。

  马科斯(杰米·福克斯)是一个开了整整12年出租车的老司机,他每天同形形色色的乘客打交道,终日穿梭于喧闹浮躁的都市却仍能保持温和平静的心态。非常喜爱听古典音乐的他习惯了平凡的日子,直到他同满头银发的文森特相遇,平静的生活转瞬间变得惊心动魄。

  这是一个在错误的夜晚、错误的地点以及两个错误的人物之间发生的错误的故事。文森特将暗杀的目标从楼顶扔到了马科斯的车上,之后他大摇大摆的从楼里走出来,看到被突如其来的惨剧吓呆了的马科斯正惊恐万状的注视着他。随后,文森特劫持了马科斯和他的出租车闯入了茫茫黑夜去寻找下一个需要“解决”的目标……

  与此同时,洛杉矶警方和联邦调查局也已接到报案,并展开行动誓要将这一连环杀手绳之以法。一场殊死的较量在洛杉矶的大街上揭开了帷幕。然而,随着事态的逐步失控,马科斯和文森特都意识到,若想摆脱当前的困境唯有相互仰仗扶持,这种特殊的关系究竟能维持多久呢?
——————————————————————————–

◆靓汤·首尝反派◆

  在这部极具戏剧张力的心理惊悚影片中,年过40的汤姆·克鲁斯首度尝试在银幕上扮演反派,加之一袭银发的冷酷造型,可谓令关注他的万千影迷无限期待。

  该片编剧之一的斯图尔特·比蒂表示,其实汤姆·克鲁斯早有扮演反派之意,此次“意外”的尝试实属意料之中。对于片中文森特一角,比蒂形容他表面上是一个性格外向、待人亲切且颇具幽默感的“好人”。然而,如此讨好的外表下却隐藏着一颗无比冷酷的心,只要有利可图,随时随地都有可能将身边的人一枪结果。导演兼编剧的迈克尔·曼更是一针见血的说:“这个角色简直坏到骨子里,眼神就可以杀死人。”

  素有“靓汤”美誉的克鲁斯此次答应出演反派杀手,着实令迈克尔·曼感激不尽,而克鲁斯同样对该片抱有极大的兴趣,他甚至在答应出演《不可能的任务3》(Mission:Impossible 3)之前就爽快的答应同迈克尔·曼合作。同时,他们也决心以此片进军新一届的奥斯卡评选。
——————————————————————————–

◆撞车·自知之明◆

  由珍妮弗·洛佩兹和理查德·基尔主演的浪漫喜剧片《谈谈情,跳跳舞》原定于8月6日上映,其映期不偏不倚正巧同这部《借刀杀人》撞个正着。不久前,《谈》片发行商米拉麦克斯公司(Miramax)决定避其锋芒,将影片公映日期延后至10月15日,这不得不使各界猜测发行方对珍妮弗·洛佩兹的票房号召力没多大信心。同时,这种看似“自知之明”的举动也足见汤姆·克鲁斯的实力。

  源引《美国周刊》的分析是:“米拉麦克斯担心女观众们会去看汤姆,而不是珍妮弗。”而就此言论,米拉麦克斯的代表则解释说,该片试映后成为公司电影史上的头三甲影片,晚一点上映是考虑到更有希望获奖,而且不用和其他的影片挤在一起。

  双方各执一词,观众大可见仁见智。不过能够于“大战”前将实力不俗的对手逼退,确实可见《借刀杀人》的“可怕”。正如汤姆·克鲁斯自己形容的那样:“那是一段真正称得上刺激的车程,剧本的完整性完全可以同一部澎湃的钢琴曲与之合奏。”
——————————————————————————–

◆慷慨·爱心再现◆

  好莱坞的超级明星中,不乏仗义之人。汤姆·克鲁斯绝对是其中之一,贯有慷慨之名的他在拍摄《借刀杀人》之际,目睹了弱势人群的窘迫境遇后,再次出手相助,可谓爱心再现。

  在拍摄电影的片场附近,一群无家可归人们的可怜遭遇引起了汤姆·克鲁斯的同情。这群流浪者的居住条件之差让克鲁斯大为震惊。于是,他立刻打发助手去买了毯子、枕头、睡袋及外套等用品送给他们。众所周知,汤姆·克鲁斯的童年以及成名之路并不平坦,同时也充斥了无数苦难,或许正是这样的经历使他能够保有一颗爱心,并不时的帮助落难的人。可见生活中的他同此次扮演的那个惟利是图的冷血杀手格格不入。
——————————————————————————–

◆参展·双城任务◆

  该片将作为第八届都市世界电影节(Urbanworld Film Festival)的开幕影片,于8月4日在纽约的曼哈顿上映。 之后在8月6日正式在各大影院上映。

  都市世界电影节创办人斯坦西·斯派克斯(Stacy Spikes)不无夸赞地说:“《借刀杀人》是今年Urbanworld电影节最完美的开幕影片,它栩栩如生地描述了2004年‘都市’这个词的真正含意。都市是感性的,而绝非是种族的划分。” 为期5天的都市世界电影节将进行评委讨论,并放映动画片、纪录片和短片。届时将有为数众多的好莱坞巨星成为座上嘉宾。

  除了将在纽约大放异彩之外,《借刀杀人》还将出现在威尼斯的银幕上。在此前公布的61届威尼斯电影节非竞赛单元的影片名单中,该片也榜上有名。
——————————————————————————–

◆阵容·黑星双煞◆

  熟悉杰米·福克斯的观众一定对他在影片《再战星期天》(Any Given Sunday)和《阿里》(Ail)中的表演记忆犹新。此次他在片中出演出租车司机马科斯一角。这是杰米同迈克尔·曼的第二次合作(此前是《阿里》)。用迈克尔的话说:“整部电影在一夜之间横穿了整个洛杉矶,从韩国城的俱乐部到南部中心的雷莫特公园,我们随着文森特和马科斯一道作了一次惊险的旅程。”

  同时,出演本片的另一位黑人影星便是在《黑客帝国》中大出风头的女演员贾达·萍克特·史密斯,她在片中扮演一位上了杀手名单的助理律师。

2004年12月07日

 

网络最经典命令行
————————————————————————–



 
1.最基本,最常用的,测试物理网络的


  ping 192.168.0.8 -t ,参数-t是等待用户去中断测试


2.查看DNS、IP、Mac等


  A.Win98:winipcfg
  B.Win2000以上:Ipconfig/all


  C.NSLOOKUP:如查看河北的DNS
  C:\>nslookup
  Default Server: ns.hesjptt.net.cn
  Address: 202.99.160.68
  >server 202.99.41.2 则将DNS改为了41.2
  > pop.pcpop.com
  Server: ns.hesjptt.net.cn
  Address: 202.99.160.68


  Non-authoritative answer:
  Name: pop.pcpop.com
  Address: 202.99.160.212


3.网络信使


  Net send 计算机名/IP * (广播) 传送内容,注意不能跨网段
  net stop messenger 停止信使服务,也可以在面板-服务修改
  net start messenger 开始信使服务


4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)


  ping -a IP -t ,只显示NetBios名
  nbtstat -a 192.168.10.146 比较全的


5.netstat -a 显示出你的计算机当前所开放的所有端口


  netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等


6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址


  arp -a


7.在代理服务器端


  捆绑IP和MAC地址,解决局域网内盗用IP!:
  ARP -s 192.168.10.59 00 -50-ff-6c-08-75
  解除网卡的IP与MAC地址的绑定:
  arp -d 网卡IP


8.在网络邻居上隐藏你的计算机


  net config server /hidden:yes
  net config server /hidden:no 则为开启


9.几个net命令


  A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
  比如:查看这个IP上的共享资源,就可以
  C:\>net view 192.168.10.8
  在 192.168.10.8 的共享资源
  资源共享名 类型 用途 注释
  ————————————–
  网站服务 Disk
  命令成功完成。


  B.查看计算机上的用户帐号列表 net user
  C.查看网络链接 net use
  例如:net use z: \192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘
  D.记录链接 net session
  例如: C:\>net session
  计算机 用户名 客户类型 打开空闲时间
  ——————————————————————————-
  \192.168.10.110 ROME Windows 2000 2195 0 00:03:12


  \192.168.10.51 ROME Windows 2000 2195 0 00:00:39
  命令成功完成。


10.路由跟踪命令


  A.tracert pop.pcpop.com
  B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%


11.关于共享安全的几个命令


  A.查看你机器的共享资源 net share
  B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)
  net share c$ /d
  net share d$ /d
  net share ipc$ /d
  net share admin$ /d
  注意$后有空格。
  C.增加一个共享:
  c:\net share mymovie=e:\downloads\movie /users:1
  mymovie 共享成功。
  同时限制链接用户数为1人。


12.在DOS行下设置静态IP


  A.设置静态IP
  CMD
  netsh
  netsh>int
  interface>ip
  interface ip>set add “本地链接” static IP地址 mask gateway
  B.查看IP设置
  interface ip>show address


  Arp
  显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。


  语法
  arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]


  参数
  -a [InetAddr] [-N IfaceAddr]
  显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
  -g [InetAddr] [-N IfaceAddr]
  与 -a 相同。
  -d InetAddr [IfaceAddr]
  删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。
  -s InetAddr EtherAddr [IfaceAddr]
  向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
  /?
  在命令提示符显示帮助。
  注释
  InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
  物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。
  通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
  范例
  要显示所有接口的 ARP 缓存表,可键入:


  arp -a


  对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:


  arp -a -N 10.0.0.99


  要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:


  arp -s 10.0.0.80 00-AA-00-4F-2A-9C


  At
  计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。


  语法
  at [\ComputerName] [{[ID] [/delete] /delete [/yes]}]


  at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,...] /next:date[,...]}] command]


  参数
   \computername
  指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。
  ID
  指定指派给已计划命令的识别码。
  /delete
  取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。
  /yes
  删除已计划的事件时,对来自系统的所有询问都回答“是”。
  hours:minutes
  指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。
  /interactive
  对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。
  /every:
  在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。
  date
  指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。
  /next:
  在下一个指定日期(比如,下一个星期四)到来时运行 command。
  command
  指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。
  /?
  在命令提示符显示帮助。
  注释
  Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。


  使用 at
  使用 at 命令时,要求您必须是本地 Administrators 组的成员。
 

2004年12月06日

CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。工作模式如下:

CVS服务器(文件版本库) 
开发人员入门可以主要挑选2,6看就可以了,CVS的管理员则更需要懂的更多一些,最后还简单介绍了一些Windows下的cvs客户端使用,远程用户认证的选择,及与BUG跟踪系统等开发环境的集成问题。

CVS环境初始化:CVS环境的搭建 管理员
CVS的日常使用:日常开发中最常用的CVS命令, 开发人员 管理员
CVS的分支开发:项目按照不同进度和目标并发进行 管理员
CVS的用户认证:通过SSH的远程用户认证,安全,简单 管理员
CVSWEB:CVS的WEB访问界面大大提高代码版本比较的效率 管理员
CVS TAG:将$Header$加入代码注释中,方便开发过程的跟踪 开发人员
CVS vs VSS: CVS和Virsual SourceSafe的比较 开发人员 管理员
WinCVS: 通过SSH认证的WinCVS认证设置
基于CVSTrac的小组开发环境搭建:通过CVSTrac实现web界面的CVS用户管理及集成的BUG跟踪和WIKI交流。
一个系统20%的功能往往能够满足80%的需求,CVS也不例外,以下是CVS最常用的功能,可能还不到它全部命令选项的20%,更多的功能在实际应用过程中体会,你想用多少就学多少,不时回头看看经常有意外的收获。

CVS环境初始化
环境设置:指定CVS库的路径CVSROOT
tcsh
setenv CVSROOT /path/to/cvsroot
bash
CVSROOT=/path/to/cvsroot export CVSROOT

后面还提到远程CVS服务器的设置:
CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

初始化:CVS版本库的初始化。
cvs init

一个项目的首次导入
cvs import -m “write some comments here” project_name vendor_tag release_tag
执行后:会将所有源文件及目录导入到/path/to/cvsroot/project_name目录下
vender_tag: 开发商标记
release_tag: 版本发布标记

项目导出:将代码从CVS库里导出
cvs checkout project_name
cvs 将创建project_name目录,并将最新版本的源代码导出到相应目录中。这个checkout和Virvual SourceSafe中的check out不是一个概念,相对于Virvual SourceSafe的check out是cvs update, check in是cvs commit。

CVS的日常使用
注意:第一次导出以后,就不是通过cvs checkout来同步文件了,而是要进入刚才cvs checkout project_name导出的project_name目录下进行具体文件的版本同步(添加,修改,删除)操作。

将文件同步到最新的版本
cvs update
不制定文件名,cvs将同步所有子目录下的文件,也可以制定某个文件名/目录进行同步
cvs update file_name
最好每天开始工作前或将自己的工作导入到CVS库里前都要做一次,并养成“先同步 后修改”的习惯,和Virvual SourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是在commit之前解决,如果你修改过程中,有其他人修改并commit到了CVS 库中,CVS会通知你文件冲突,并自动将冲突部分用
>>>>>>
content on cvs server
<<<<<<
content in your file
>>>>>>
标记出来,由你确认冲突内容的取舍。
版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望由CVS来解决。

确认修改写入到CVS库里
cvs commit -m “write some comments here” file_name

注意:CVS的很多动作都是通过cvs commit进行最后确认并修改的,最好每次只修改一个文件。在确认的前,还需要用户填写修改注释,以帮助其他开发人员了解修改的原因。如果不用写-m “comments”而直接确认`cvs commit file_name` 的话,cvs会自动调用系统缺省的文字编辑器(一般是vi)要求你写入注释。
注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容:以方便其他开发人员能够很好的理解
不好的注释,很难让其他的开发人员快速的理解:比如: -m “bug fixed” 甚至 -m “”
好的注释,甚至可以用中文: -m “在用户注册过程中加入了Email地址校验”

修改某个版本注释:每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释:
cvs admin -m 1.3:”write some comments here” file_name

提示出错:
Warning: session_start(): Cannot send session cookie – headers already sent by (output started at…………) in /home/…………


在windows平台下调试正常,但是弄到linux下就出错。

后来发现在linux平台下,session_start()必须放在每页的最前面,前面甚至连个空格都不能有~所以,改~