德川家康 - 不急!

{ Posted on 星期六, 七月 25, 2009 by Kaiser.XKw }
看到一篇好文章, 列舉了日本戰國時候的最終勝利者 - 德川家康, 來體現健康的重要性
 新的一年又啟,這代表著什麼呢?意味著去年的職場成績單終於在一月份放榜了(看看你的年終獎金就知道一切),又代表著,今年的業績目標又要開始衝刺,在地球村經濟型態之下,企業競爭日趨激烈,在競爭環境中維持高生產率和高利潤,才能使企業續存於全球化的市場之中。
 全球化人才互相取代,電腦取代人力,在職場的競爭中,個人的可取代性愈來愈高。在這種年復一年的背負著成長率,不停運轉的個人壓力鍋爐裡,專家們的研究分析結果顯示,壓力過鉅的工作環境造成員工經常請假、遲到,跟不上腳步的員工開始怠工,甚至辭職,此現象對公司生產力有負面影響。
 根據世界衛生組織的研究報告,憂鬱症將成為21世紀流行的病症,厭食、焦躁不安和精神緊張性嘔吐是患者的主要癥狀,其中的15%可能會以自殺了結生命。

德川家康 不急哲學!
 「人的一生如同揹著重擔行走長遠的路。此時最重要的一點是,切莫趕路。」這是德川家康的遺訓。縱觀家康一生,就贏在「不急」兩字。不急,不代表寂然不動、不代表遲鈍,而是該停時,讓心靜下來縱觀局勢,適時的關機再出發,該動時則有如鴨子劃水,看似輕鬆,其實已在悄悄移動─往有利於自己的方向移動。
 家康一生七十五年裡歷經滄桑,三歲時母親被迫改嫁;六歲時在政治交易中做了人質;八歲喪父成孤兒,生存的壓力,磨練出家康堅毅不屈的無比韌性。成年後選擇依附強國,成為卑微的侍臣,戰役中總擔任最危險的前鋒,充當盾牌或砲灰的角色,企圖在實戰中培養戰力。
 從無到有,由小而大,轉弱為強,其成功的主要關鍵在於穩健、等待與忍耐。從寄人籬下的人質到統一天下的霸主,德川家康足足等了五十五個年頭。整體來看德川集團,在戰國時期的大型企業集團中,算是個低成長安定經營的企業體,徹底強化組織的體質和結構,橫向積極網羅各方人才、建立幕僚團隊;縱向規劃完善制度、力使財務健全,使得三河小國由弱轉強。

成功之道 定、靜、安、慮、得
 「身體健康、壽命較長」就成為德川家康成功最簡單也最基本的法則,人生七十古來稀,古代醫療尚不昌明,因此,健康成為每個英雄的殺手,與他逐鹿天下的兩個對手都比他早死,織田信長在四十九歲就被屬下所暗殺,豐臣秀吉則死於六十一歲,德川家康則活了七十五歲。長命讓德川家康取得天下,也讓他的政權得以延續三百多年。善於爭取時間的經營模式,使得德川家康能像烏龜一樣緩步贏得政權,並且以時間培育出卓越的第二代領導人-德川秀忠,建構起安定的領導體制。
 早年困頓流離的家康,在變動的壓力汽鍋中,早養成一身「定、靜、安、慮、得」的功夫。生活簡樸、把獵鷹當成是他主要的運動,是德川家康長壽的主因,獵鷹是必須早起的運動,想要早起的就必須早睡,德川家康認為要能早睡、又能睡的好,最重要的是心情保持平靜,而早起於森林中運動對身體健康有相當的助益。對於飲食穿著,他不主張美食,平生以米飯為主,更忌奢侈,縱令是嚴冬天氣,還是拼湊舊衣以禦寒。

長期壓力 消耗戰力
 工作壓力不僅損害個人健康,同時也會破壞組織的健康,最終並導致經濟損失。美國職業壓力協會American Institute of Stress估計,壓力及其導致的疾病每年耗費美國企業3000多億美元。
 「健康」是展現個人價值戰力最重要的根本,同樣的,員工健康而長壽也是經營者必需擔起的社會責任。給予員工壓力時,適當的給予員工轉化壓力的途徑,一個有元氣和健康的團隊,才能為組織創造無窮的戰力資源。

VSS出现些小错误,处理之

{ Posted on 星期六, 七月 25, 2009 by Kaiser.XKw }
最近几天VSS老是出错, 常常说文件已经被打开, 导致小朋友无法check out, 在线有人在使用,又不能处理, 只好建一个job,每天晚上自动分析, 修复一下:
错误的原因不太清楚, 估计和VSS库太大使用的时间太久,导致一些文件关联出现了问题。 站台结构庞大, 所有的project都在这个库里面,天天都在用,重建实在是有些麻烦...
"C:\Program Files\Microsoft Visual SourceSafe\analyze.exe" -F -V3 -D "d:\webvss\data"
其实很简单,利用analyze.exe就好!!

关于BMP文件格式

{ Posted on 星期五, 七月 17, 2009 by Kaiser.XKw }
今天因签名图片无法写入Oracle的问题,发现是因为签名图片不符合标准的问题。
当初为了避免出現Oracle直接写入的方式有32K的限制这个问题,我规定了签名图片的格式为100*100 24位的bmp, 统一格式和大小 记得BMP格式大小计算很方便. 为100*100*(24/8) /1024 + 54 约= 29.3 K ,绝对不会大于32K,但是上傳介面沒有控制好大小...

网页特效-用层模拟可以拖动的小窗

{ Posted on 星期四, 七月 16, 2009 by Kaiser.XKw }
一段不错的代码,可以在页面上模拟窗口, 而且还可以将这些小窗口拖来拖去. 如果后续将其改为可以将最后的位置保存起来, 做个性化的页面肯定很受欢迎 <html>
<head>
<title>_xWin</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type='text/css'>
<!--
body{font-size:12px;}
a:visited{text-decoration:none;color:slategray;}
a:hover{text-decoration:underline;color:slategray;}
a:link{text-decoration:none;color:slategray;}
-->
</style>
<script language=JScript>
<!--
//可以打包为js文件;
var x0=0,y0=0,x1=0,y1=0;
var offx=6,offy=6;
var moveable=false;
var hover='orange',normal='#336699';//color;
var index=10000;//z-index;
//开始拖动;
function startDrag(obj)
{
if(event.button==1)
{
//锁定标题栏;
obj.setCapture();
//定义对象;
var win = obj.parentNode;
var sha = win.nextSibling;
//记录鼠标和层位置;
x0 = event.clientX;
y0 = event.clientY;
x1 = parseInt(win.style.left);
y1 = parseInt(win.style.top);
//记录颜色;
normal = obj.style.backgroundColor;
//改变风格;
obj.style.backgroundColor = hover;
win.style.borderColor = hover;
obj.nextSibling.style.color = hover;
sha.style.left = x1 + offx;
sha.style.top = y1 + offy;
moveable = true;
}
}
//拖动;
function drag(obj)
{
if(moveable)
{
var win = obj.parentNode;
var sha = win.nextSibling;
win.style.left = x1 + event.clientX - x0;
win.style.top = y1 + event.clientY - y0;
sha.style.left = parseInt(win.style.left) + offx;
sha.style.top = parseInt(win.style.top) + offy;
}
}
//停止拖动;
function stopDrag(obj)
{
if(moveable)
{
var win = obj.parentNode;
var sha = win.nextSibling;
var msg = obj.nextSibling;
win.style.borderColor = normal;
obj.style.backgroundColor = normal;
msg.style.color = normal;
sha.style.left = obj.parentNode.style.left;
sha.style.top = obj.parentNode.style.top;
obj.releaseCapture();
moveable = false;
}
}
//获得焦点;
function getFocus(obj)
{
if(obj.style.zIndex!=index)
{
index = index + 2;
var idx = index;
obj.style.zIndex=idx;
obj.nextSibling.style.zIndex=idx-1;
}
}
//最小化;
function min(obj)
{
var win = obj.parentNode.parentNode;
var sha = win.nextSibling;
var tit = obj.parentNode;
var msg = tit.nextSibling;
var flg = msg.style.display=="none";
if(flg)
{
win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
msg.style.display = "block";
obj.innerHTML = "0";
}
else
{
win.style.height = parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
obj.innerHTML = "2";
msg.style.display = "none";
}
}
//创建一个对象;
function xWin(id,w,h,l,t,tit,msg)
{
index = index+2;
this.id = id;
this.width = w;
this.height = h;
this.left = l;
this.top = t;
this.zIndex = index;
this.title = tit;
this.message = msg;
this.obj = null;
this.bulid = bulid;
this.bulid();
}
//初始化;
function bulid()
{
var str = ""
+ "<div id=xMsg" + this.id + " "
+ "style='"
+ "z-index:" + this.zIndex + ";"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "left:" + this.left + ";"
+ "top:" + this.top + ";"
+ "background-color:" + normal + ";"
+ "color:" + normal + ";"
+ "font-size:8pt;"
+ "font-family:Tahoma;"
+ "position:absolute;"
+ "cursor:default;"
+ "border:2px solid " + normal + ";"
+ "' "
+ "onmousedown='getFocus(this)'>"
+ "<div "
+ "style='"
+ "background-color:" + normal + ";"
+ "width:" + (this.width-2*2) + ";"
+ "height:20;"
+ "color:white;"
+ "' "
+ "onmousedown='startDrag(this)' "
+ "onmouseup='stopDrag(this)' "
+ "onmousemove='drag(this)' "
+ "ondblclick='min(this.childNodes[1])'"
+ ">"
+ "<span style='width:" + (this.width-2*12-4) + ";padding-left:3px;'>" + this.title + "</span>"
+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>"
+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='ShowHide(\""+this.id+"\",null)'>r</span>"
+ "</div>"
+ "<div style='"
+ "width:100%;"
+ "height:" + (this.height-20-4) + ";"
+ "background-color:white;"
+ "line-height:14px;"
+ "word-break:break-all;"
+ "padding:3px;"
+ "'>" + this.message + "</div>"
+ "</div>"
+ "<div id=xMsg" + this.id + "bg style='"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "top:" + this.top + ";"
+ "left:" + this.left + ";"
+ "z-index:" + (this.zIndex-1) + ";"
+ "position:absolute;"
+ "background-color:black;"
+ "filter:alpha(opacity=40);"
+ "'></div>";
document.body.insertAdjacentHTML("beforeEnd",str);
}
//显示隐藏窗口
function ShowHide(id,dis){
var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis
document.getElementById("xMsg"+id).style.display = bdisplay;
document.getElementById("xMsg"+id+"bg").style.display = bdisplay;
}
//modify by haiwa @ 2005-7-14
//http://www.51windows.Net
//-->
</script>

<script language='JScript'>
<!--
function initialize()
{
var a = new xWin("1",160,200,200,200,"窗口1","窗口1<br> Kaiser.XKw@gmail.com");
var b = new xWin("2",240,200,100,100,"窗口2","窗口2<br> http://xkwgod.blogspot.com");
var c = new xWin("3",200,160,250,50,"窗口3","窗口3<br> http://www.pyv.com.vn");
ShowHide("1","none");//隐藏窗口1
}
window.onload = initialize;
//-->
</script>
</head>
<base target="_blank">
<body onselectstart='return false' oncontextmenu='return false' >
<a onclick="ShowHide('1',null);return false;" href="">窗口1</a>
<a onclick="ShowHide('2',null);return false;" href="">窗口2</a>
<a onclick="ShowHide('3',null);return false;" href="">窗口3</a>
</body>
</html>

在线制作favicon的网站

{ Posted on 星期四, 七月 16, 2009 by Kaiser.XKw }
如果你要自定义自己blog的favicon,有一个很不错网站可以很方面的让你自己动手制作一个

美化Blogger - 代碼的顯示

{ Posted on 星期四, 七月 16, 2009 by Kaiser.XKw }
前段时间贴上的代码很不好看, 扩充了一下原本的模版,增加对代码的特殊显示。 首先在如下位置贴上一段对Code标签的样式定义
然后修改其中的参数 使用该样式的时候,在相关代码前后加上<code></code> 即可出现下面效果啰 CODE {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 10pt;
color:#FB6204;
overflow:auto;
background: #f0f0f0 url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ-qxNSE3Wz6EbeAPRxHA8dScD_R1Ha-Xoc3_cw5X-uH17h6-VHaMp0u_e_qvEbqLp2wOKVmFsGsju3nC2yDZ2UFd3Xl7mHcnHO3vDiTEMyqUJI7KCQGpdkt_R4Nq27o9KUhvNrFGwswY/) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
line-height: 1.2em;
}

]]></b:skin>
</head>

网页特效 - 不错的菜单效果

{ Posted on 星期四, 七月 16, 2009 by Kaiser.XKw }
看到一个不错的菜单效果,简单,以后可以用在程式上: <style>
/* 先把这个 xmenu 的样式放到css里 */
.xmenu td{font-size:12px;font-family:verdana,arial;font-weight:bolder;color:#ffffff;border:1px solid

#336699;background:#336699;filter:blendtrans(duration=0.5);cursor:hand;text-align:center;}
</style>

<script>
/*
这是把事件动作绑定到菜单上的函数
*/
function attachXMenu(objid){
var tds=objid.getElementsByTagName('td');
for(var i=0;i<tds.length;i++){
with(tds[i]){
onmouseover=function(){
with(this){
filters[0].apply();
style.background='#66CCFF'; //这是鼠标移上去时的背景颜色
style.border='1px solid #ffffff'; //边框
style.color='black'; //文字颜色
filters[0].play();
}
}
onmouseout=function(){
with(this){
filters[0].apply();
style.background='#336699'; //这是鼠标离开时的背景颜色
style.border='1px solid #336699'; //边框
style.color='#ffffff'; //文字颜色
filters[0].play();
}
}
}
}
}
</script>

<!--菜单从这里开始, 注意要把class设置成和css里相同的, 还要为它设一个id-->
<table class="xmenu" id="xmenu0" width="500" cellpadding="1" cellspacing="4" border="0" bgcolor="#336699"

align="center">
<tr>
<td>Menu1</td>
<td>Menu2</td>
<td>Menu3</td>
<td>Menu4</td>
<td>Menu5</td>
<td>Menu6</td>
</tr>
</table>

<script>attachXMenu(xmenu0); //在上面这个table结束的地方执行事件动作的绑定, 这里的这个xmenu0就是那个table的

id</script>

<!--下面这个是竖排的-->



<table class="xmenu" id="xmenu1" width="100" cellpadding="1" cellspacing="4" border="0" bgcolor="#336699"

align="center">
<tr><td>Menu1</td></tr>
<tr><td>Menu2</td></tr>
<tr><td>Menu3</td></tr>
<tr><td>Menu4</td></tr>
<tr><td>Menu5</td></tr>
<tr><td>Menu6</td></tr>
</table>
<script>attachXMenu(xmenu1);</script>

网页特效 - 模拟QQ菜单

{ Posted on 星期三, 七月 15, 2009 by Kaiser.XKw }
<STYLE type="text/css">
A:link { COLOR: #000000; FONT-SIZE: 12px; TEXT-DECORATION: none}
A:visited { COLOR: #000000; FONT-SIZE: 12px; TEXT-DECORATION: none}
A:hover { COLOR: #006CD9; FONT-SIZE: 12px; TEXT-DECORATION: none}
BODY { FONT-SIZE: 12px;}
TD { FONT-SIZE: 12px; line-height: 150%}
</style>
<script language="JavaScript">
<!--
function showitem(id,name)
{
return ("<span><a href='"+id+"' target=_blank>"+name+"</a></span><br>")
}
function switchQBar(number)
{
var i = QBar.opentitle;
QBar.opentitle=number;
var id1,id2,id1b,id2b
if (number!=i && outlooksmoothstat==0){
if (number!=-1)
{
if (i==-1){
id2="blankdiv";
id2b="blankdiv";
}
else{
id2="outlookdiv"+i;
id2b="outlookdivin"+i;
document.all("outlooktitle"+i).style.border="1px none navy";
document.all("outlooktitle"+i).style.background=QBar.maincolor;
document.all("outlooktitle"+i).style.color="#ffffff";
document.all("outlooktitle"+i).style.textalign="center";
}
id1="outlookdiv"+number
id1b="outlookdivin"+number
document.all("outlooktitle"+number).style.border="1px none white";
document.all("outlooktitle"+number).style.background=QBar.maincolor; //title
document.all("outlooktitle"+number).style.color="#ffffff";
document.all("outlooktitle"+number).style.textalign="center";
smoothout(id1,id2,id1b,id2b,0);
}
else
{
document.all("blankdiv").style.display="";
document.all("blankdiv").sryle.height="100%";
document.all("outlookdiv"+i).style.display="none";
document.all("outlookdiv"+i).style.height="0%";
document.all("outlooktitle"+i).style.border="1px none navy";
document.all("outlooktitle"+i).style.background=QBar.maincolor;
document.all("outlooktitle"+i).style.color="#ffffff";
document.all("outlooktitle"+i).style.textalign="center";
}
}
}
function smoothout(id1,id2,id1b,id2b,stat)
{
if(stat==0){
tempinnertext1=document.all(id1b).innerHTML;
tempinnertext2=document.all(id2b).innerHTML;
document.all(id1b).innerHTML="";
document.all(id2b).innerHTML="";
outlooksmoothstat=1;
document.all(id1b).style.overflow="hidden";
document.all(id2b).style.overflow="hidden";
document.all(id1).style.height="0%";
document.all(id1).style.display="";
setTimeout("smoothout('"+id1+"','"+id2+"','"+id1b+"','"+id2b+"',"+QBar.inc+")",QBar.timedalay);
}
else
{
stat+=QBar.inc;
if (stat>100)
stat=100;
document.all(id1).style.height=stat+"%";
document.all(id2).style.height=(100-stat)+"%";
if (stat<100)
setTimeout("smoothout('"+id1+"','"+id2+"','"+id1b+"','"+id2b+"',"+stat+")",QBar.timedalay);
else
{
document.all(id1b).innerHTML=tempinnertext1;
document.all(id2b).innerHTML=tempinnertext2;
outlooksmoothstat=0;
document.all(id1b).style.overflow="auto";
document.all(id2).style.display="none";
}
}
}
function getOutLine()
{
outline="<table "+QBar.otherclass+">";
for (i=0;i<(QBar.titlelist.length);i++)
{
outline+="<tr><td name=outlooktitle"+i+" id=outlooktitle"+i+" ";
if (i!=QBar.opentitle)
outline+=" nowrap align=center style='cursor:hand;background-color:"+QBar.maincolor+";color:#ffffff;height:20;border:1 none navy' ";
else
outline+=" nowrap align=center style='cursor:hand;background-color:"+QBar.maincolor+";color:white;height:20;border:1 none white' ";
outline+=QBar.titlelist[i].otherclass
outline+=" onclick='switchQBar("+i+")'><span class=smallFont>";
outline+=QBar.titlelist[i].title+"</span></td></tr>";
outline+="<tr><td name=outlookdiv"+i+" valign=top align=center id=outlookdiv"+i+" style='width:100%"
if (i!=QBar.opentitle)
outline+=";display:none;height:0%;";
else
outline+=";display:;height:100%;";
outline+="'><div name=outlookdivin"+i+" id=outlookdivin"+i+" style='overflow:auto;width:100%;height:100%'>";
for (j=0;j<QBar.itemlist[i].length;j++)
outline+=showitem(QBar.itemlist[i][j].key,QBar.itemlist[i][j].title);
outline+="</div></td></tr>"
}
outline+="</table>"
return outline
}
function show()
{
var outline;
outline="<div id=QBarDiv name=QBarDiv style='width=100%;height:100%'>"
outline+=QBar.getOutLine();
outline+="</div>"
document.write(outline);
}
function theitem(intitle,instate,inkey)
{
this.state=instate;
this.otherclass=" nowrap ";
this.key=inkey;
this.title=intitle;
}
function addtitle(intitle)
{
QBar.itemlist[QBar.titlelist.length]=new Array();
QBar.titlelist[QBar.titlelist.length]=new theitem(intitle,1,0);
return(QBar.titlelist.length-1);
}
function additem(intitle,parentid,inkey)
{
if (parentid>=0 && parentid<=QBar.titlelist.length)
{
QBar.itemlist[parentid][QBar.itemlist[parentid].length]=new theitem(intitle,2,inkey);
QBar.itemlist[parentid][QBar.itemlist[parentid].length-1].otherclass=" nowrap align=left style='height:5' ";
return(QBar.itemlist[parentid].length-1);
}
else
additem=-1;
}
function outlook()
{
this.titlelist=new Array();
this.itemlist=new Array();
this.divstyle="style='height:100%;width:100%;overflow:auto' align=center";
this.otherclass="border=0 cellspacing='0' cellpadding='0' style='height:100%;width:100%'valign=middle align=center ";
this.addtitle=addtitle;
this.additem=additem;
this.starttitle=-1;
this.show=show;
this.getOutLine=getOutLine;
this.opentitle=this.starttitle;
this.reflesh=outreflesh;
this.timedelay=50;
this.inc=10;
this.maincolor = "#336699"
}
function outreflesh()
{
document.all("QBarDiv").innerHTML=QBar.getOutLine();
}
function locatefold(foldname)
{
if (foldname=="")
foldname = QBar.titlelist[0].title
for (var i=0;i<QBar.titlelist.length;i++)
{
if(foldname==QBar.titlelist[i].title)
{
QBar.starttitle=i;
QBar.opentitle=i;
}
}
}
var QBar=new outlook();
var tempinnertext1,tempinnertext2,outlooksmoothstat
outlooksmoothstat = 0;


var t;
t=QBar.addtitle('技术文档')
QBar.additem('Web开发',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('数据库',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
t=QBar.addtitle('计算机技术')
QBar.additem('操作系统',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('网络安全',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('小技巧',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('硬件相关',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
t=QBar.addtitle('文摘')
QBar.additem('求职 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('杂文 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('生活 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('人生 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('健康 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('知识 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('爱情 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('幽默笑话 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('寓言 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('教育 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('散文 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
t=QBar.addtitle('技术文档2')
QBar.additem('Web开发',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('数据库',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
t=QBar.addtitle('计算机技术2')
QBar.additem('操作系统',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('网络安全',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('小技巧',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('硬件相关',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
t=QBar.addtitle('文摘2')
QBar.additem('求职 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('杂文 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('生活 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('人生 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('健康 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('知识 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('爱情 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('幽默笑话 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('寓言 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('教育 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
QBar.additem('散文 ',t,'<a href="http://xkwgod.blogspot.com" target="_blank" rel="external">http://xkwgod.blogspot.com</a>')
//-->
</script>

<table id=mnuList style="WIDTH:150px;HEIGHT: 100%" cellspacing=0 cellpadding=0 align=center border=0>
<tr>
<td bgcolor=#F0F0E5 id=QBarShow style="HEIGHT: 100%" valign=top align=middle name="QBarShow">
<script language="JavaScript">
<!--
locatefold("")
QBar.show()
//-->
</script>
</td>
</tr>
</table>

一个好玩的视觉游戏2 - 唯心所见、境由心生

{ Posted on 星期三, 七月 15, 2009 by Kaiser.XKw }
顏色的錯覺 ---你相信圖中的A,B兩個方塊是同一個顏色嗎? 我用小畫家把周圍的顏色擦掉後,現在看出來了嗎? 視覺暫留或視覺疲勞? 你看到白色線條交叉處的跳躍小點了嗎?什麼顏色?你認為這是視覺暫留或視覺疲勞?

修改服务器配置,让asp.net文件后缀名随心所欲

{ Posted on 星期三, 七月 15, 2009 by Kaiser.XKw }
Tags :

有的网站出于各种各样的原因,在IIS中修改了动态页面的默认后缀,asp时代就有人在服务器上修改配置,把html后缀的文件当作asp文件来解析:也就是说,asp程序(后缀为.asp)可以保存为一个.htm后缀的文件放到服务器上WEB目录下,而服务器照样将之当作asp程序来解释处理,生成结果。这样对访问者来说,还以为网站全是html页面,而且经常更新呢(感觉没什么必要是吗?错了,最起码的一个好处:搜索引擎可是优先收录html页面哦,这样的话站点将很容易被人在搜索引擎中搜索到) 服务器上修改解析asp文件的后缀很容易,在IIS服务管理器 -&gt; 站点属性 -&gt; 主目录 -&gt;配置 -&gt; 应用程序映射中进行修改即可。如果有配置服务器支持PHP的经验,那就更清楚怎么回事了。 可是对asp.net就不行了,同样的办法,修改应用程序映射后,仍然没有得到预期的结果,文件什么内容,返回的就是什么内容,而不是当作asp.net程序来处理了。 其实主要是还差一点点,那就是没有在C:\windows\microsoft.net\framework\v1.1.4322\config\machine.config(windows2003下的路径,不同的操作系统路径稍有不同)中配置特定后缀的文件的HTTP处理程序,配置步骤(假设我们要增加一个映射,将后缀为.aaa的文件当作.aspx页面来处理。) 先在IIS服务管理器中停掉internet信息服务,然后用记事本打开C:\windows\microsoft.net\frameworl\v1.1.4322\config\machine.config,查找"*.aspx",能找到这么一行: <span ><strong>&lt;add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/&gt;</strong></span> .aspx文件的解析就是这么配置的,同样的道理,我们只要再增加一行,将其中的*.aspx改为*.aaa就行了: <strong><span >&lt;add verb="*" path="*.aaa" type="System.Web.UI.PageHandlerFactory"/&gt;</span></strong> 然后启动internet信息服务,就可以将任意的aspx文件修改为后缀为.aaa的文件了。 最后说一点,<span >如果是IIS6(也就是windows2003自带的IIS),还得在IIS的站点属性 -&gt; HTTP头 -&gt; MIME类型中增加一个.aaa的MIME类型</span>,不然遇到.aaa的请求时将首先被IIS给拦截掉,没办法显示的。

10条有益的涉世忠告

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }

如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色!

  1. 买个闹钟,以便按时叫醒你。贪睡和不守时,都将成为你工作和事业上的绊脚石,任何时候都一样。不仅要学会准时,更要学会提前。就如你坐车去某地,沿途的风景很美,你忍不住下车看一看,后来虽然你还是赶到了某地,却不是准时到达。“闹钟”只是一种简单的标志和提示,真正灵活、实用的时间,掌握在每个人的心中。

  2. 如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表现出不满的情绪。记住,不做则已,要做就要做好。

  3. 每个人都有孤独的时候。要学会忍受孤独,这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了,到了一个陌生的环境,面对形形色色的人和事,一下子不知所措起来,有时连一个可以倾心说话的地方也没有。这时,千万别浮躁,学会静心,学会忍受孤独。在孤独中思考,在思考中成熟,在成熟中升华。不要因为寂寞而乱了方寸,而去做无聊无益的事情,白白浪费了宝贵的时间。

  4.走运时要做好倒霉的准备。有一天,一只狐狸走到一个葡萄园外,看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着,无法进去。于是它一狠心绝食三日,减肥之后,终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时,发觉自己吃得太饱,怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。饱带干粮,晴带雨伞,点滴积累,水到渠成。有的东西今天似乎一文不值,但有朝一日也许就会身价百倍。

  5. 不要像玻璃那样脆弱。有的人眼睛总盯着自己,所以长不高看不远;总是喜欢怨天尤人,也使别人无比厌烦。没有苦中苦,哪来甜中甜?不要像玻璃那样脆弱,而应像水晶一样透明,太阳一样辉煌,腊梅一样坚强。既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒。

  6.管住自己的嘴巴。不要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下班后和你的那些同事朋友喝酒聊天可不是件好事,因为,这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的,尤其是议论别人的短处,这些会降低你的人格。

  7. 机会从不会“失掉”,你失掉了,自有别人会得到。不要凡事在天,守株待兔,更不要寄希望于“机会”。机会只不过是相对于充分准备而又善于创造机会的人而言的。也许,你正为失去一个机会而懊悔、埋怨的时候,机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会,就要创造机会,有了机会,就要巧妙地抓住。

  8.若电话老是不响,你该打出去。很多时候,电话会给你带来意想不到的收获,它不是花瓶,仅仅成为一种摆设。交了新朋友,别忘了老朋友,朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑,往往助你的事业更上一个台阶。

  9.千万不要因为自己已经到了结婚年龄而草率结婚。想结婚,就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。

  10. 写出你一生要做的事情,把单子放在皮夹里,经常拿出来看。人生要有目标,要有计划,要有提醒,要有紧迫感。一个又一个小目标串起来,就成了你一生的大目标。生活富足了,环境改善了,不要忘了皮夹里那张看似薄薄的单子。

使.NET程序只运行单一实例

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
有时你会想只运行一个程序首次运行时的实例,那么你如何才能确保只有一个.NET的程序运行在你的机器上呢?多任务操作系统在很多方面都很有用,但是有时你只需要在某一时间内运行一个实例,例如,如果程序需要使用很多的资源或者需要排它地存取某一个资源。在这种情况下,你可能想确认当另一个实例启动时,它会检查是否有另一个实例正在运行。如果是,则将自身关闭。本文中,我会告诉大家如何去实现它。 最简单的方法是使用mutex对像。例如,在以下的代码中,Form的构造函数中创建了一个mutex对象,然后 试着去存取它。如果WaitOne()返回true,那么当前线程就已经拥有了mutex,如果返回false则mutex已经被另一个线程所拥有。 程序代码 using System;
using System.Windows.Forms;
using System.Threading;
class TestApp : Form
{
Mutex mutex;
TestApp()
{
Text = "Single Instance!";
mutex = new Mutex(false, "SINGLE_INSTANCE_MUTEX");
if (!mutex.WaitOne(0, false))
{
mutex.Close();
mutex = null;
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
mutex.ReleaseMutex();
base.Dispose(disposing);
}
static void Main()
{
TestApp objApp = new TestApp();
if (objApp.mutex != null)
{
Application.Run(objApp);
}
else
{
MessageBox.Show("Instance already running");
objApp.Dispose();
}
}
}
另一个办法是在当前的进程列表中去查找是否有从当前EXE运行的进程,思路和第一种方式是类似的,只是将mutext换成进程查找而已,下面只给出进程查找的核心代码: 程序代码 public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName (current.ProcessName);
//遍历正在有相同名字运行的例程
foreach (Process process in processes)
{
//忽略现有的例程
if (process.Id != current.Id)
{
//确保例程从EXE文件运行
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
//返回另一个例程实例
return process;
}
}
}
//没有其它的例程,返回Null
return null;
}

老妈和老婆掉到水里...搞笑

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
孟子:   从小死了老爸,老妈拉扯我不容易,为了让我健康成长,又搬了三次的家,给我吃好的穿好的为得就是让我有出息。   老妈和老婆落水当然先救老妈了,万恶淫为首,百善孝为先嘛!老婆死了我可以再找一个,老妈死了可不能再找一个,再找一个那就是後妈了。听说後妈没几个好的。   ——————「世上只有妈妈好,没妈的孩子像根草。老妈,我来救你了」。扑通一声孟子跳下了水。 周幽王:   老婆和老妈落水了当然得先救老婆了。想当年俺为了逗亲爱的褒姒笑一笑,连江山都不要了,连自己的小命都不要了,何况是老妈?   再说这死老太婆在立太子的时侯老是偏向俺弟弟,害得俺差点都没当成太子。   ————「情深深雨蒙蒙,我对你的爱很深,褒姒我来救你了。」周幽王扑通一声跳进了水里。 刘备:   兄弟如手足,老婆如衣服,衣服破尚可补,手足断安可续?只要俺二弟和三弟没掉水里就行了,其它人俺可不管他。   —————「老婆,老妈。你们死的好惨呀!」刘备一头栽在河边上嚎嚎大哭起来。 曹操:   宁叫我负天下人,休叫天下人负我。管它是老婆还是老妈了,只要不是我掉水里就行了。   —————「轻轻的我走了,正如我轻轻的来,我挥一挥手,不带走一片云彩。」曹操哼著诗提著剑慢慢的走远了。 屈原:   这个世界太黑暗了,这个国家太腐败了,活著也没啥意思,不如都死了乾净,沧浪之水清兮,可以濯吾缨,沧浪之水浊兮,可以濯吾足。(来自辽一网情感在线)   投身于河水中倒是一个挺好的归宿。   --------「现在的一片天,是肮脏的一片天,星星在文明的天空里再也看不见老婆,老妈,我和你们一起死」屈原一边唱著一边跳进了水里。 庄子:   生又何欢,死又何哀?其始而本无生;非徒无生也,而本无形;非徒无形也。   老妈和老婆死了就死好了,不过是从有形的元气状态回到了无形的元气状态,有啥好伤心的呢?救他们干啥呢?谁都不救啦!   —————「对面的女孩看过来,看过来,看过来。」庄子分开著双腿像簸箕一样坐著,手中拿著一个瓦缶,边敲边唱,看著老婆和老妈慢慢地淹没在水中,满脸快快乐乐的样子。 和砷:   老婆和老妈落水就落水吧,反正我爱的是钱,钱就是我的老婆,钱就是我的亲妈。   我说老婆和老妈呀,你们就不能穿差一点的衣服再掉到河里呀,可惜了你们头上的那些金钗手饰呀!   -----------「有啥你别有病,没啥你别没钱。」和呻一边看著他老婆和老妈慢慢地沉下去一边叹息著。 王勃:   手心手背都是肉,老婆是自己最爱的人,老妈是自己最亲的人,怎么办呢?不管它,先跳下去,看看离谁最近就先救谁吧。   王勃扑通一声跳了下去。   ---------「不好,我忘了自己不会游泳了。」王勃咕噜噜地喝了几口水,也慢慢地沉了下去。一代才子王勃就是因为此事溺水而死的。 孙悟空:   俺是从石头缝里蹦出来的,没有老妈。所以不存在老妈落水的问题;俺是个和尚,没有老婆。所以不存在老婆落水的问题。   不存在老妈落水的问题,也不存在老婆落水的问题,就更不会存在老妈和老婆同时落水的问题。   这个问题也不知道是哪个猪头想出来的,简直比俺师弟猪八戒还蠢。 我说: 为了防止这种情况发生,我会教会我老婆游泳的,并且不让她们有同时的落水的可能,呵呵,防范于未然...

13个零件的智力测试题

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
原题: 有13个零件,外表完全一样,但有一个是不合格品,其重量和其它的不同,且轻重不知。请你用天平称3次,把它找出来(此题难度较大,只要能做出来,便说明智力非凡。时间不限)。 注:如果你没见过这个测试题的话,可以先别看答案,自己做做看,看看能做出来吗?Good Luck! (反选见答案) 答案: 把零件分为4.4.5三份,然后把两个4放在天平两头, (1)如果平衡,那不合格的在剩下的5个中,把那8个合格品当做样本,放3个在天平左边,从有次品的5个中取3个放右边和左边合格品做比较,如果平衡,那坏的就在剩下的两个中,随便拿一个和合格品做对比称,平衡就是最后剩下的那个是次品,不平衡就是称的那个是次品。如果放上去的3个不平衡,那说明放上去的有一个是次品,记住是比合格品重还是轻,把三个当中任意两个拿上去称,如果刚才是比合格品重的话,那重的那个就是次品,反之一样,如果平衡,剩下的那个就是次品。 (2)如果放上去的不平衡,那剩下的5个就是合格品,记住刚才不平衡的谁轻谁重,把5个合格品放在天平左边,取2个轻的,3个重的放右边,如果是右边重,那么次品就在3个重的里面,和上面一样,三个中任取2个放天平左右两边,看哪个重哪个就是次品,因为他比合格品重。反之一样在轻的里面。如果还是平衡,说明剩下的还有一个重的就是合格品,那说明次品就是比合格品轻,所以把两个轻的放两头,看看谁轻就谁是次品。

世界不是天才创造----有哲理的故事

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
从网上看到的这个小故事,要想成功-情商与智商都很重要

老华组织在座的12个人玩一个猜数字的游戏。。游戏规则是这样的:每人给出一个从0到100之间的数字。把所有人的数字求算术平均值。谁选的数字最接近这个算术平均值的2/3,谁就赢得整场游戏。
这是个很有趣的游戏,建议大家每个人都再仔细读一下题,想一想,试一下?选一个数,写一个理由,然后再往后看。
分析一下过程
我们来分析一下这个游戏里的每个人。如果每个人都是真的随机的选择的话,大家平均值应该在50左右。50的2/3应该是33.3,对吗?很多人都写了33.3。(当然还有很多人没有想到这一步)
不过多想一步,如果你写了33.3,难道其他的人不会想得和你一样,也写33.3吗?如果这样,你应该写22.2。如果继续想下去,大家的平均值应该越来越小,就是这样。。。
50
33.33333333
22.22222222
14.81481481
9.87654321
6.58436214
4.38957476
2.926383173
1.950922116
….
最后,把问题想得非常地复杂的人的答案是0。
这是我们那天的结果
30
98.16
32
50
12
33.3
22
8
8.2
18
28.68
37
所有的平均数:31.445,它的三分之二是20.96333333。选22的人获胜。
世界不是由天才创造的
老华的很多次游戏表明,无论是什么样的群体,最终的获胜的数字,都在22左右徘徊。群体决策的结果和天才的想法总是有些格格不入。这个游戏告诉我们,这个世界不是由天才决定的。在众人决策的过程中,赢得游戏的人,都是比别人多想一步的人,而不是多想两步或更多步的人。
游戏中的人
这个游戏里面,选择不同的数,或许就代表了不同的人。
先说选超过66.67 的人。在开始游戏的时候,我悄悄对Wendy说,“肯定不会有人选超过66.67的数字的,要是谁要是写了,一定是没动脑子的”。就算是所有人都写 100,获胜的数字也才66.67。结果出来,第二个报出的数字就是98.16。我窃笑。他解释写这个数字的原因是因为没听清楚题。慢着,先别就这样放过这个现象。在现实社会里面,没听清楚规则的人不是比比皆是吗?比方说,做产品的人认为质优价廉用户就会买,而实际上,花高价买差产品的人大有人在,我们不能指望所有的用户都和和业内人士有一样的判别力,一样的了解规则,对吗?
再说选0的。或许这个结果很多人想都想不到,但老华组织的游戏里面,几乎每次都有选零的,而且越理性的群体,选零的比例越高。比如微软研究院30个人里面高达3个人选零。选零的人,沉浸于自己对世界了解的快感中,却知之者甚少。很可惜,在每次游戏里面,比一般人想一步的人就不多,想两步的人更少,经过重重地归迭代到达0的最终境界的人少之又少,我们只好轻叹一声,说,你是天才,但是你赢得不了游戏。或许原本他们在写0的时候,本来也就清楚的知道自己不可能赢得游戏,而他们就是用这种近似自杀的方式向世界宣称,“我放弃获奖,因为我是天才。我可以接受没有奖励,但我不能接受大家不认为我聪明”。我们假想一下,如果天才的理论有机会向每一个参与者传播,让他们理解,跟随天才的选择,说不定他还有一线获胜的机会,不过让每个人了解,从古到今就不曾在天才在世的时候实现过。天才不是疯了,就是穷困潦倒。
然后我们来说选33.3的。他们是正常的,平凡的人。就像数以百万计的洗发水的使用者或者报纸的阅读者一样,再正常和普通不过。在明白无误的规则面前,按照规则办事,用思考指导行动,却不多想更多。33.3的人是社会的大多数,在他们前面,有引领世界的0和推动世界的22;在他的后面,有大量的选择随机数的更平凡的人。是33们,奠定了这个社会的基调。
再说赢得游戏的22。他们也遵循规则,但是比规则前进了一步,不多不少,刚刚好一步。他们提出的方案让大多数人(33)感觉的有道理,却不像天才(0)提出的解决方案那么晦涩难懂。我们假设,如果布鲁诺要是发现一个新的号称是绕地球旋转的星星或许能为他赢得终生的荣誉和财富,但如果走得像推翻地心说,宣扬日心说那般的接近真理,得来的就是8年的监禁和熊熊的烈火了。
社会上除了这些种类,还有很多,在游戏里也在出现。比如说选50 的。他在公布答案之前就解释说,“我知道这个数字肯定会非常小,趋近于0,而我就是想说一个大一点的数字,把平均值拉大,看看是会不会左右游戏的结果”。这叫做“搅局的”或者说“损人不利己”的。现实社会里面有吗?大有人在呀。
天才的悲哀就在于,他搞懂了规则,却没有搞懂人。他自己想明白了,就想当然的以为别人也会想明白。他不但错误的忽略了只想到33的人的存在,更忽略了没有思考的,或者存心不按规则玩的人的存在。毕竟,这个世界不是一个只有天才的世界。
最后说一说8.2,就是我了。我对8.2的分析是,这个人有一点点天才的倾向,却又不能像选0的天才一样潇洒的放弃冠军的奖励;他希望赢得游戏,却又过高的估计了大众思考的步伐; 8.2被天才斥责有太多功利心,却被22嘲笑过于“自作聪明”,算是一个摇摆在理想和现实之间的人。自嘲一下罢了。?
天才的选择
对于这个社会,必然有看得比别人稍微透彻些的,离真理更近些的,我们姑且称之为天才吧。这些已经窥探到天机的天才,在现实世界里面,选零还是选22,这是个问题。
选零,就注定了要放弃大多数人的认可。这认可可能是名声,可能是钱。选零的人,适合当教授,适合当评论者,不合适自己来做商业。
如果你本来想选0,却又为了迎合大众选了22,就注定了你要伪装的傻一些,要被业内人士批判,会被选0或者8的人认为不紧跟潮流。大家看一看现在大凡成功的公司,从美国的软件业网络业巨头们,到中国的门户和成功网站,哪个躲得过选0的人的指指点点?或者说,选22的人是易中天,会用通俗(甚至有些错误)的方式讲史,而选0的人就是严肃的历史学家。通俗文学,流行音乐和热门网站,在大众和同行两个世界里面有完全不同的声名,大多是因为这样。
没有选0的人,这个世界何以进步?选零的天才们艰难的拖着这个世界前行。我对他们表示敬佩。只可惜,他们获得的只有一小部分人的敬佩。对于选22个人,帮助了无数选33的人改善了生活,他们也获得了巨大的商业成功。没有22,世界怎么可能从33过渡到更小的数字去呢?我对他们也表示尊敬。
世界毕竟不是由天才创造的。
===================
其实,简而言之,选0的人只有智商没有情商,从22到0之间的选择就是情商的正序排列.

在线播放器代码大全

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
Tags :

1.avi格式
<object id="video" width="400" height="200" border="0" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">
<param name="ShowDisplay" value="0">
<param name="ShowControls" value="1">
<param name="AutoStart" value="1">
<param name="AutoRewind" value="0">
<param name="PlayCount" value="0">
<param name="Appearance value="0 value=""">
<param name="BorderStyle value="0 value=""">
<param name="MovieWindowHeight" value="240">
<param name="MovieWindowWidth" value="320">
<param name="FileName" value="file:///D/work/vod/Mbar.avi">
<embed width="400" height="200" border="0" showdisplay="0" showcontrols="1" autostart="1" autorewind="0" playcount="0" moviewindowheight="240" moviewindowwidth="320" filename="file:///D/work/vod/Mbar.avi" src="Mbar.avi">
</embed>
</object>

2.mpg格式

<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="239" height="250">
<param name="Appearance" value="0">
<param name="AutoStart" value="-1">
<param name="AllowChangeDisplayMode" value="-1">
<param name="AllowHideDisplay" value="0">
<param name="AllowHideControls" value="-1">
<param name="AutoRewind" value="-1">
<param name="Balance" value="0">
<param name="CurrentPosition" value="0">
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<param name="EnablePositionControls" value="-1">
<param name="EnableSelectionControls" value="0">
<param name="EnableTracker" value="-1">
<param name="Filename" value="../../../mpeg/halali.mpg" valuetype="ref">
<param name="FullScreenMode" value="0">
<param name="MovieWindowSize" value="0">
<param name="PlayCount" value="1">
<param name="Rate" value="1">
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="ShowControls" value="-1">
<param name="ShowDisplay" value="-1">
<param name="ShowPositionControls" value="0">
<param name="ShowTracker" value="-1">
<param name="Volume" value="-480">
</object>


3.rm格式

<OBJECT ID=video1 CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT=288 WIDTH=352>

<param name="_ExtentX" value="9313">
<param name="_ExtentY" value="7620">
<param name="AUTOSTART" value="0">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="0">
<param name="SRC" value="rtsp://203.207.131.35/vod/dawan-a.rm";>
<param name="CONTROLS" value="ImageWindow">
<param name="CONSOLE" value="Clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000"><embed SRC type="audio/x-pn-realaudio-plugin" CONSOLE="Clip1" CONTROLS="ImageWindow" HEIGHT="288" WIDTH="352" AUTOSTART="false">

</OBJECT>

4.wmv格式

<object id="NSPlay" width=200 height=180 classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="
http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject" align="right" hspace="5">
<!-- ASX File Name -->
<param name="AutoRewind" value=1>
<param name="FileName" value="xxxxxx.wmv">
<!-- Display Controls -->

<param name="ShowControls" value="1">
<!-- Display Position Controls -->

<param name="ShowPositionControls" value="0">
<!-- Display Audio Controls -->

<param name="ShowAudioControls" value="1">
<!-- Display Tracker Controls -->

<param name="ShowTracker" value="0">
<!-- Show Display -->

<param name="ShowDisplay" value="0">
<!-- Display Status Bar -->

<param name="ShowStatusBar" value="0">
<!-- Diplay Go To Bar -->

<param name="ShowGotoBar" value="0">
<!-- Display Controls -->

<param name="ShowCaptioning" value="0">
<!-- Player Autostart -->

<param name="AutoStart" value=1>
<!-- Animation at Start -->

<param name="Volume" value="-2500">
<param name="AnimationAtStart" value="0">
<!-- Transparent at Start -->

<param name="TransparentAtStart" value="0">
<!-- Do not allow a change in display size -->

<param name="AllowChangeDisplaySize" value="0">
<!-- Do not allow scanning -->

<param name="AllowScan" value="0">
<!-- Do not show contect menu on right mouse click -->

<param name="EnableContextMenu" value="0">
<!-- Do not allow playback toggling on mouse click -->
<param name="ClickToPlay" value="0">
</object>

最简单的播放代码

<embed src="
http://wmt2.aboutmedia.com.tw/Aboutmedia/warner/mtv/naying-021011_01v_120k.wmv";;
autostart="true" loop="true" width="200" height="150" >
把这个网址
http://wmt2.aboutmedia.com.tw/Aboutmedia/warner/mtv/naying-021011_01v_120k.wmv换成你要看的电影就行了


有图像的rm格式:

<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA height=288 id=video1 width=305 VIEWASTEXT>
<param name=_ExtentX value=5503>
<param name=_ExtentY value=1588>
<param name=AUTOSTART value=-1>
<param name=SHUFFLE value=0>
<param name=PREFETCH value=0>
<param name=NOLABELS value=0>
<param name=SRC value=http://media.cdut.edu.cn/ram/new/xiaoxin1.ram>
<param name=CONTROLS value=Imagewindow,StatusBar,ControlPanel>
<param name=CONSOLE value=RAPLAYER>
<param name=LOOP value=0>
<param name=NUMLOOP value=0>
<param name=CENTER value=0>
<param name=MAINTAINASPECT value=0>
<param name=BACKGROUNDCOLOR value=#000000>
</OBJECT>

无图像的rm格式:如相声,歌曲。。。

<object ID=video2 WIDTH=300 HEIGHT=62 CLASSID=CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA>
<param name=_ExtentX value=9657>
<param name=_ExtentY value=847>
<param name=AUTOSTART value=-1>
<param name=SHUFFLE value=0>
<param name=PREFETCH value=0>
<param name=NOLABELS value=0>
<param name=SRC value=http://210.242.69.206/ramgen/broadcast/BCC/encoder/hipop.rm>
<param name=CONTROLS value=StatusBar,controlpanel>
<param name=CONSOLE value=Clip1>
<param name=LOOP value=0>
<param name=NUMLOOP value=0>
<param name=CENTER value=0>
<param name=MAINTAINASPECT value=0>
<param name=BACKGROUNDCOLOR value=#000000>
</object>
最简单的media格式的播放器。。自动识别有无图像,但是版本是你机器的!
<embed src=mms://61.175.132.221/tv/mtv/f4/makeawish.wmv width=200 height=200 autostart=true loop=true></embed>
有图像的media播放器,自动调用网上的插件。
<object id=nstv classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 width=280 height=265 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application/x-oleobject>
<param name=URL value=http://202.99.11.42/xiangsheng/ymjr.wma>
<PARAM NAME=UIMode value=full><PARAM NAME=AutoStart value=true>
<PARAM NAME=Enabled value=true>
<PARAM NAME=enableContextMenu value=false>
<param name=WindowlessVideo value=true></object>
无图像的media播放器。。。同上。
<object id=nstv classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 width=280 height=60 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application/x-oleobject>
<param name=URL value=http://202.99.11.42/xiangsheng/ymjr.wma>
<PARAM NAME=UIMode value=full><PARAM NAME=AutoStart value=true>
<PARAM NAME=Enabled value=true>
<PARAM NAME=enableContextMenu value=false>
</object>
只是界面不同的media的调插件播放器。。建议不用这个,,你可以看!
<embed src=http://av.wanwa.com/fileroot/AV/Ramfiles/23809.ram type=audio/x-pn-realaudio-plugin console=Clip1 controls=ControlPanel,StatusBar height=60 width=275 autostart=true></embed>


在线播放r m格式视频代码:

<object id="player" name="player" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="400" height="272">
<param name="_ExtentX" value="18415">
<param name="_ExtentY" value="9102">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="
http://www.xiaoqiong.com/ftp/up/bz.rm">
<param name="CONTROLS" value="Imagewindow">
<param name="CONSOLE" value="clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object><br>
<object ID="RP2" CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" WIDTH="400" HEIGHT="57">
<param name="_ExtentX" value="18415">
<param name="_ExtentY" value="1005">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="
http://www.xiaoqiong.com/ftp/up/bz.rm">
<PARAM NAME="CONTROLS" VALUE="ControlPanel,StatusBar">
<param name="CONSOLE" value="clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>


CSS 字体放大镜效果

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
Tags :

<style type="text/css">
<!--
a {
float:left;
margin:5px 1px 0 1px;
width:20px;
height:20px;
color:#999;
font:12px/20px 宋体;
text-align:center;
text-decoration:none;
border:1px solid orange;
}
a:hover {
position:relative;
margin:0 -9px 0 -9px;
padding:0 5px;
width:30px;
height:30px;
font:bold 16px/30px 宋体;
color:#000;
border:1px solid black;
background:#eee;
}
-->
</style>
<div>
<a href="#">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#">4</a>
<a href="#">5</a>
<a href="#">6</a>
<a href="#">7</a>
<a href="#">8</a>
<a href="#">9</a>
<a href="#">10</a>
</div>

一个好玩的视觉游戏 - 唯心所见、境由心生

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
几天前看到的一个好玩的视觉游戏,把它收藏起来了, 因为同样的图片,不同的人不同的看法, 究竟这个人是在顺时针还是逆时针转动呢?第一眼看上去,你会很笃定地下一个结论,因为一切看似很明显。但是,如果你看了别人的回帖,会发现事情并非那么简单,有人和你完全不同,而且和你一定确信。对此,网上已经有人给出了答案: 在图中的这个瞬间,由于人像是全黑的,所以是由你的大脑来给人像做判断。从上图可以看出来,同一个位置,你的大脑可以分析出两种不同的结果来,一种是左腿支撑,一种是右腿支撑。这完全取决于你第一眼看上去,你的大脑在那一瞬间如何判断人像的体态,于是人像就有不同的旋转方式。 更好玩的是,当你能看出两种旋转方式以后,还可以进一步玩下去,感觉相当神奇。 如果精神高度集中,就可以让人像左右摆动,根本绕不出一个完整的圈子。要它顺时针转,她就顺时针,要她逆时针,她就逆时针,仿佛你的思维可以控制图片的转动一样。 这个游戏最好玩的地方在于,你只能自己玩,然后你和别人说你的感受,他们一开始会绝对不相信。但是,你又没有办法把你看到的景象用任何方式记录下来,给别人做个证明,因为那只存在于你的脑子里。但是,一旦别人也适应了,能看到这一点的时候,他们会无条件地赞同你,仿佛你们分享了天地间的一大秘密。 唯心主义者应该非常喜欢这个例子 -- 唯心所见、境由心生

常用的正则表达式

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
Tags :

在脚本程序的写作中,正则表达式是经常用到的,但是正则表达式书写困难,可读性很差也是大家所知道的,今天写email的正则表达式时,由于经常写不对,后来决定google一下,看看网上有没有现成的,结果发现网上已经提供了很多的常用的正则表达式了,不需要自己写的,而且应该是验证过的吧。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$


下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。

* 匹配前面的子表达式零次或多次。

+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。

{n} n 是一个非负整数,匹配确定的n 次。

{n,} n 是一个非负整数,至少匹配n 次。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

(?!pattern) 负向预查,与(?=pattern)作用相反

x|y 匹配 x 或 y。

[xyz] 字符集合。

[^xyz] 负值字符集合。

[a-z] 字符范围,匹配指定范围内的任意字符。

[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。

\b 匹配一个单词边界,也就是指单词和空格间的位置。

\B 匹配非单词边界。

\cx 匹配由x指明的控制字符。

\d 匹配一个数字字符。等价于 [0-9]。

\D 匹配一个非数字字符。等价于 [^0-9]。

\f 匹配一个换页符。等价于 \x0c 和 \cL。

\n 匹配一个换行符。等价于 \x0a 和 \cJ。

\r 匹配一个回车符。等价于 \x0d 和 \cM。

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

\t 匹配一个制表符。等价于 \x09 和 \cI。

\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。

\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。

Windows CMD 命令说明大全

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }

很详细的 CMD 命令 资料

winver检查Windows版本
dxdiag检查DirectX信息
mem.exe显示内存使用情况
Sndvol32音量控制程序
sfc.exe系统文件检查器
gpedit.msc 组策略
regedit.exe 注册表
Msconfig.exe 系统配置实用程序
cmd.exe CMD命令提示符
chkdsk.exe Chkdsk磁盘检查
mem.exe显示内存使用情况
gpedit.msc 组策略
regedit.exe 注册表
Msconfig.exe 系统配置实用程序
cmd.exe CMD命令提示符
services.msc 服务
lusrmgr.msc 本地账户管理
drwtsn32 系统医生
cleanmgr 整理
iexpress 木马捆绑工具,系统自带
mmc 控制台
dcpromo 活动目录安装
ntbackup 系统备份和还原
rononce -p 15秒关机
taskmgr 任务管理器
conf 启动netmeeting
devmgmt.msc 设备管理器
diskmgmt.msc NT的磁盘管理器
compmgmt.msc 计算机管理
winchat 局域网聊天
dvdplay DVD播放器
mplayer2 简易widnows media player
mspaint 画图板
nslookup 网络管理的工具
syskey 系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
wupdmgr WIDNOWS Update
Clipbrd 剪贴板查看器
Odbcad32 ODBC数据源管理器
Nslookup IP地址侦测器

开始 运行 命令 集锦

wmimgmt.msc----打开windows管理体系结构(WMI)
wupdmgr--------windows更新程序
wscript--------windows脚本宿主设置
write----------写字板
winmsd---------系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows media player
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕“讲述人”
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介(安装完成后出现的漫游xp程序)
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------垃圾整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活 lusrmgr.msc----本机用户和组 logoff---------注销命令
iexpress-------木马捆绑工具,系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
gpedit.msc-----组策略

CMD运行指令

开始→运行→CMD→键入以下命令即可:

gpedit.msc-----组策略                
sndrec32-------录音机
Nslookup-------IP地址侦测器             
explorer-------打开资源管理器
logoff---------注销命令               
tsshutdn-------60秒倒计时关机命令
lusrmgr.msc----本机用户和组             
services.msc---本地服务设置
oobe/msoobe /a----检查XP是否激活           
notepad--------打开记事本
cleanmgr-------垃圾整理  
compmgmt.msc---计算机管理                
net start messenger----开始信使服务
net stop messenger-----停止信使服务
conf-----------启动netmeeting            
dvdplay--------DVD播放器
charmap--------启动字符映射表        
diskmgmt.msc---磁盘管理实用程序
calc-----------启动计算器              
dfrg.msc-------磁盘碎片整理程序
chkdsk.exe-----Chkdsk磁盘检查            
devmgmt.msc--- 设备管理器
regsvr32 /u *.dll----停止dll文件运行         
drwtsn32------ 系统医生
rononce -p ----15秒关机               
dxdiag---------检查DirectX信息
regedt32-------注册表编辑器             
Msconfig.exe---系统配置实用程序
rsop.msc-------组策略结果集             
mem.exe--------显示内存使用情况
regedit.exe----注册表                
winchat--------XP自带局域网聊天
progman--------程序管理器              
winmsd---------系统信息
perfmon.msc----计算机性能监测程序          
winver---------检查Windows版本
sfc /scannow-----扫描错误并复原           
winipcfg-------IP配置
taskmgr-----任务管理器(2000/xp/2003)       
command--------cmd
fsmgmt.msc 共享文件夹                
netstat -an----查看端口
osk 屏幕键盘                     
install.asp----修改注册网页
eventvwr.msc 时间查看器
secpol.msc 本地安全设置
services.msc 服务

accwiz.exe > 辅助工具向导 
acsetups.exe > acs setup dcom server executable 
actmovie.exe > 直接显示安装工具 
append.exe > 允许程序打开制定目录中的数据 
arp.exe > 显示和更改计算机的ip与硬件物理地址的对应列表 
at.exe > 计划运行任务 
atmadm.exe > 调用管理器统计 
attrib.exe > 显示和更改文件和文件夹属性 
autochk.exe > 检测修复文件系统 
autoconv.exe > 在启动过程中自动转化系统 
autofmt.exe > 在启动过程中格式化进程 
autolfn.exe > 使用长文件名格式 
bootok.exe > boot acceptance application for registry 
bootvrfy.exe > 通报启动成功 
cacls.exe > 显示和编辑acl 
calc.exe > 计算器 
cdplayer.exe > cd播放器 
change.exe > 与终端服务器相关的查询 
charmap.exe > 字符映射表 
chglogon.exe > 启动或停用会话记录 
chgport.exe > 改变端口(终端服务) 
chgusr.exe > 改变用户(终端服务) 
chkdsk.exe > 磁盘检测程序 
chkntfs.exe > 磁盘检测程序 
cidaemon.exe > 组成ci文档服务 
cipher.exe > 在ntfs上显示或改变加密的文件或目录 
cisvc.exe > 索引内容 
ckcnv.exe > 变换cookie 
cleanmgr.exe > 磁盘清理 
cliconfg.exe > sql客户网络工具 
clipbrd.exe > 剪贴簿查看器 
clipsrv.exe > 运行clipboard服务 
clspack.exe > 建立系统文件列表清单 
cluster.exe > 显示域的集群 
_cmd_.exe > 没什么好说的! 
cmdl32.exe > 自动下载连接管理 
cmmgr32.exe > 连接管理器 
cmmon32.exe > 连接管理器监视 
cmstp.exe > 连接管理器配置文件安装程序 
comclust.exe > 集群 
comp.exe > 比较两个文件和文件集的内容* 
compact.exe > 显示或改变ntfs分区上文件的压缩状态 
conime.exe > ime控制台 
control.exe > 控制面板 
convert.exe > 转换文件系统到ntfs 
convlog.exe > 转换iis日志文件格式到ncsa格式 
cprofile.exe > 转换显示模式 
cscript.exe > 较本宿主版本 
csrss.exe > 客户服务器runtime进程 
csvde.exe > 日至格式转换程序 
dbgtrace.exe > 和terminal server相关 
dcomcnfg.exe > dcom配置属性 
dcphelp.exe > ? 
dcpromo.exe > ad安装向导 
ddeshare.exe > dde共享 
ddmprxy.exe > 
debug.exe > 就是debug啦! 
dfrgfat.exe > fat分区磁盘碎片整理程序 
dfrgntfs.exe > ntfs分区磁盘碎片整理程序 
dfs_cmd_.exe > 配置一个dfs树 
dfsinit.exe > 分布式文件系统初始化 
dfssvc.exe > 分布式文件系统服务器 
diantz.exe > 制作cab文件 
diskperf.exe > 磁盘性能计数器 
dllhost.exe > 所有com+应用软件的主进程 
dllhst3g.exe > 
dmadmin.exe > 磁盘管理服务 
dmremote.exe > 磁盘管理服务的一部分 
dns.exe > dns applications dns 
doskey.exe > 命令行创建宏 
dosx.exe > dos扩展 
dplaysvr.exe > 直接运行帮助 
drwatson.exe > 华生医生错误检测 
drwtsn32.exe > 华生医生显示和配置管理 
dtcsetup.exe > installs mdtc 
dvdplay.exe > dvd播放 
dxdiag.exe > direct-x诊断工具 
edlin.exe > 命令行的文本编辑器(历史悠久啊!) 
edlin.exe > 命令行的文本编辑器(历史悠久啊!) 
esentutl.exe > ms数据库工具 
eudcedit.exe > type造字程序 
eventvwr.exe > 事件查看器 
evnt_cmd_.exe > event to trap translator; configuration tool 
evntwin.exe > event to trap translator setup 
exe2bin.exe > 转换exe文件到二进制 
expand.exe > 解压缩 
extrac32.exe > 解cab工具 
fastopen.exe > 快速访问在内存中的硬盘文件 
faxcover.exe > 传真封面编辑 
faxqueue.exe > 显示传真队列 
faxsend.exe > 发送传真向导 
faxsvc.exe > 启动传真服务 
fc.exe > 比较两个文件的不同 
find.exe > 查找文件中的文本行 
findstr.exe > 查找文件中的行 
finger.exe > 一个用户并显示出统计结果 
fixmapi.exe > 修复mapi文件 
flattemp.exe > 允许或者禁用临时文件目录 
fontview.exe > 显示字体文件中的字体 
forcedos.exe > forces a file to start in dos mode. 强制文件在dos模式下运行 
freecell.exe > popular windows game 空当接龙 
ftp.exe > file transfer protocol used to transfer files over a network conne
ction 就是ftp了 
gdi.exe > graphic device interface 图形界面驱动 
grovel.exe > 
grpconv.exe > program manager group convertor 转换程序管理员组 
help.exe > displays help for windows 2000 commands 显示帮助 
hostname.exe > display hostname for machine. 显示机器的hostname 
ie4uinit.exe > ie5 user install tool ie5用户安装工具 
ieshwiz.exe > customize folder wizard 自定义文件夹向导 
iexpress.exe > create and setup packages for install 穿件安装包 
iisreset.exe > restart iis admin service 重启iis服务 
internat.exe > keyboard language indicator applet 键盘语言指示器 
ipconfig.exe > windows 2000 ip configuration. 察看ip配置 
ipsecmon.exe > ip security monitor ip安全监视器 
ipxroute.exe > ipx routing and source routing control program ipx路由和源路由控制程序 
irftp.exe > setup ftp for wireless communication 无线连接 
ismserv.exe > intersite messaging service 安装或者删除service control manage 
r中的服务 
jdbgmgr.exe > microsoft debugger for java 4 java4的调试器 
jetconv.exe > convert a jet engine database 转换jet engine数据库 
jetpack.exe > compact jet database. 压缩jet数据库 
jview.exe > command-line loader for java java的命令行装载者 
krnl386.exe > core component for windows 2000 2000的核心组件 
label.exe > change label for drives 改变驱动器的卷标 
lcwiz.exe > license compliance wizard for local or remote systems. 许可证符合 
向导 
ldifde.exe > ldif cmd line manager ldif目录交换命令行管理 
licmgr.exe > terminal server license manager 终端服务许可协议管理 
lights.exe > display connection status lights 显示连接状况 
llsmgr.exe > windows 2000 license manager 2000许可协议管理 
llssrv.exe > start the license server 启动许可协议服务器 
lnkstub.exe > 
locator.exe > rpc locator 远程定位 
lodctr.exe > load perfmon counters 调用性能计数 
logoff.exe > log current user off. 注销用户 
lpq.exe > displays status of a remote lpd queue 显示远端的lpd打印队列的状态, 
显示被送到基于unix的服务器的打印任务 
lpr.exe > send a print job to a network printer. 重定向打印任务到网络中的打印 
机。通常用于unix客户打印机将打印任务发送给连接了打印设备的nt的打印机服务器。 

lsass.exe > lsa executable and server dll 运行lsa和server的dll 
lserver.exe > specifies the new dns domain for the default server 指定默认se 
rver新的dns域 
os2.exe > an os/2 warp server (os2 /o) os/2 
os2srv.exe > an os/2 warp server os/2 
os2ss.exe > an os/2 warp server os/2 
osk.exe > on screen keyboard 屏幕键盘 
packager.exe > windows 2000 packager manager 对象包装程序 
pathping.exe > combination of ping and tracert 包含ping和tracert的程序 
pax.exe > is a posix program and path names used as arguments must be specif 
ied in posix format. use "//c/users/default" instead of "c:usersdefault." 
启动便携式存档互换 (pax) 实用程序 
pentnt.exe > used to check the pentium for the floating point division error
. 检查pentium的浮点错误 
perfmon.exe > starts windows performance monitor 性能监视器 
ping.exe > packet internet groper 验证与远程计算机的连接 
posix.exe > used for backward compatibility with unix 用于兼容unix 
print.exe > cmd line used to print files 打印文本文件或显示打印队列的内容。 
progman.exe > program manager 程序管理器 
proquota.exe > profile quota program 
psxss.exe > posix subsystem application posix子系统应用程序 
qappsrv.exe > displays the available application terminal servers on the net 
work 
在网络上显示终端服务器可用的程序 
qprocess.exe > display information about processes local or remote 在本地或远 
程显示进程的信息(需终端服务) 
query.exe > query termserver user process and sessions 查询进程和对话 
quser.exe > display information about a user logged on 显示用户登陆的信息(需 
终端服务) 
qwinsta.exe > display information about terminal sessions. 显示终端服务的信息 

rasadmin.exe > start the remote access admin service 启动远程访问服务 
rasautou.exe > creates a ras connection 建立一个ras连接 
rasdial.exe > dial a connection 拨号连接 
ras.exe > starts a ras connection 运行ras连接 
rcp.exe > copies a file from and to a rcp service. 在 windows 2000 计算机和运 
行远程外壳端口监控程序 rshd 的系统之间复制文件 
rdpclip.exe > rdpclip allows you to copy and paste files between a terminal 
session and client console session. 再终端和本地复制和粘贴文件 
recover.exe > recovers readable information from a bad or defective disk 从坏 
的或有缺陷的磁盘中恢复可读取的信息。 
redir.exe > starts the redirector service 运行重定向服务 
regedt32.exe > 32-bit register service 32位注册服务 
regini.exe > modify registry permissions from within a script 用脚本修改注册 
许可 
register.exe > register a program so it can have special execution character 
istics. 注册包含特殊运行字符的程序 
regsvc.exe > 
regsvr32.exe > registers and unregister's dll's. as to how and where it regi 
ster's them i dont know. 注册和反注册dll 
regtrace.exe > options to tune debug options for applications failing to dum 
p trace statements 
trace 设置 
regwiz.exe > registration wizard 注册向导 
remrras.exe > 
replace.exe > replace files 用源目录中的同名文件替换目标目录中的文件。 
reset.exe > reset an active section 重置活动部分 
rexec.exe > runs commands on remote hosts running the rexec service. 在运行 
rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机 
上的用户名,只有安装了 tcp/ip 协议后才可以使用该命令。 
risetup.exe > starts the remote installation service wizard. 运行远程安装向导 
服务 
route.exe > display or edit the current routing tables. 控制网络路由表 
routemon.exe > no longer supported 不再支持了! 
router.exe > router software that runs either on a dedicated dos or on an os 
. 检查pentium的浮点错误 
perfmon.exe > starts windows performance monitor 性能监视器 
ping.exe > packet internet groper 验证与远程计算机的连接 
posix.exe > used for backward compatibility with unix 用于兼容unix 
print.exe > cmd line used to print files 打印文本文件或显示打印队列的内容。 
progman.exe > program manager 程序管理器 
proquota.exe > profile quota program 
psxss.exe > posix subsystem application posix子系统应用程序 
qappsrv.exe > displays the available application terminal servers on the net 
work 
在网络上显示终端服务器可用的程序 
qprocess.exe > display information about processes local or remote 在本地或远 
程显示进程的信息(需终端服务) 
query.exe > query termserver user process and sessions 查询进程和对话 
quser.exe > display information about a user logged on 显示用户登陆的信息(需 
终端服务) 
qwinsta.exe > display information about terminal sessions. 显示终端服务的信息 

rasadmin.exe > start the remote access admin service 启动远程访问服务 
rasautou.exe > creates a ras connection 建立一个ras连接 
rasdial.exe > dial a connection 拨号连接 
ras.exe > starts a ras connection 运行ras连接 
rcp.exe > copies a file from and to a rcp service. 在 windows 2000 计算机和运 
行远程外壳端口监控程序 rshd 的系统之间复制文件 
rdpclip.exe > rdpclip allows you to copy and paste files between a terminal 
session and client console session. 再终端和本地复制和粘贴文件 
recover.exe > recovers readable information from a bad or defective disk 从坏 
的或有缺陷的磁盘中恢复可读取的信息。 
redir.exe > starts the redirector service 运行重定向服务 
regedt32.exe > 32-bit register service 32位注册服务 
regini.exe > modify registry permissions from within a script 用脚本修改注册 
许可 
register.exe > register a program so it can have special execution character 
istics. 注册包含特殊运行字符的程序 
regsvc.exe > 
regsvr32.exe > registers and unregister's dll's. as to how and where it regi 
ster's them i dont know. 注册和反注册dll 
regtrace.exe > options to tune debug options for applications failing to dum 
p trace statements 
trace 设置 
regwiz.exe > registration wizard 注册向导 
remrras.exe > 
replace.exe > replace files 用源目录中的同名文件替换目标目录中的文件。 
reset.exe > reset an active section 重置活动部分 
rexec.exe > runs commands on remote hosts running the rexec service. 在运行 
rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机 
上的用户名,只有安装了 tcp/ip 协议后才可以使用该命令。 
risetup.exe > starts the remote installation service wizard. 运行远程安装向导 
服务 
route.exe > display or edit the current routing tables. 控制网络路由表 
routemon.exe > no longer supported 不再支持了! 
router.exe > router software that runs either on a dedicated dos or on an os

小问题,大智慧

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }

问题一,
如果你家附近有一家餐厅,东西又贵又难吃,桌上还爬着蟑螂,你会因为它很近很方便,就一而再、再而三地光临吗?
回答:你一定会说,这是什么烂问题,谁那么笨,花钱买罪受?
可同样的情况换个场合,自己或许就做类似的蠢事。
不少男女都曾经抱怨过他们的情人或配偶品性不端,三心二意,不负责任。明知在一起没什么好的结果,怨恨已经比爱还多,但却“不知道为什么”还是要和他搅和下去,分不了手。说穿了,只是为了不甘,为了习惯,这不也和光临餐厅一样?
做人,为什么要过于执著?!
  
问题二,
如果你不小心丢掉100块钱,只知道它好像丢在某个你走过的地方,你会花200块钱的车费去把那100块找回来吗?
回答:一个超级愚蠢的问题。
可是,相似的事情却在人生中不断发生。做错了一件事,明知自己有问题,却怎么也不肯认错,反而花加倍的时间来找藉口,让别人对自己的印象大打折扣。被人骂了一句话,却花了无数时间难过,道理相同。为一件事情发火,不惜损人不利已,不惜血本,不惜时间,只为报复,不也一样无聊?
失去一个人的感情,明知一切已无法挽回,却还是那么伤心,而且一伤心就是好几年,还要借酒消愁,形销骨立。其实这样一点用也没有,只是损失更多。
做人,干吗为难自己?!
  
问题三,
你会因为打开报纸发现每天都有车祸,就不敢出门吗?
回答:这是个什么烂问题?当然不会,那叫因噎废食。
然而,有不少人却曾说:现在的离婚率那么高,让我都不敢谈恋爱了。说得还挺理所当然。也有不少女人看到有关的诸多报道,就对自己的另一半忧心忡忡,这不也是类似的反应?所谓乐观,就是得相信:虽然道路多艰险,我还是那个会平安过马路的人,只要我小心一点,不必害怕过马路。
做人,先要相信自己。
  
问题四,
你相信每个人随便都可以成功立业吗?
回答:当然不会相信。
但据观察,有人总是在听完成功人士绞尽脑汁的建议,比如说,多读书,多练习之后,问了另一个问题?那不是很难?
我们都想在3分钟内学好英文,在5分钟内解决所有难题,难道成功是那么容易的吗?改变当然是难的。成功只因不怕困难,所以才能出类拔萃。
有一次坐在出租车上,听见司机看到自己前后都是高档车,兀自感叹:“唉,为什么别人那么有钱,我的钱这么难赚?”
我心血来潮,问他:“你认为世上有什么钱是好赚的?”他答不出来,过了半晌才说:好像都是别人的钱比较好赚。
其实任何一个成功者都是艰辛取得。我们实在不该抱怨命运。
做人,依靠自己!
  
问题五,
你认为完全没有打过篮球的人,可以当很好的篮球教练吗?
回答:当然不可能,外行不可能领导内行。
可是,有许多人,对某个行业完全不了解,只听到那个行业好赚,就马上开起业来了。
我看过对穿着没有任何口味、或根本不在乎穿着的人,梦想却是开间服装店;不知道电脑怎么开机的人,却想在网上做生意,结果道听途说,却不反省自己是否专业能力不足,只抱怨时不我与。
做人,量力而行。
  
问题六,
相似但不相同的问题:你是否认为,篮球教练不上篮球场,闭着眼睛也可以主导一场完美的胜利?
回答:有病啊,当然是不可能的。
可是却有不少朋友,自己没有时间打理,却拼命投资去开咖啡馆,开餐厅,开自己根本不懂的公司,火烧屁股一样急着把辛苦积攒的积蓄花掉,去当一个稀里糊涂的投资人。亏的总是比赚的多,却觉得自己是因为运气不好,而不是想法出了问题。
做人,记得反省自己。
  
问题七,
你宁可永远后悔,也不愿意试一试自己能否转败为胜?
解答:恐怕没有人会说:“对,我就是这样的孬种”吧。
然而,我们却常常在不该打退堂鼓时拼命打退堂鼓,为了恐惧失败而不敢尝试成功。
以关颖珊赢得2000年世界花样滑冰冠军时的精彩表现为例:她一心想赢得第一名,然而在最后一场比赛前,她的总积分只排名第三位,在最后的自选曲项目上,她选择了突破,而不是少出错。在4分钟的长曲中,结合了最高难度的三周跳,并且还大胆地连跳了两次。她也可能会败得很难看,但是她毕竟成功了。
她说:“因为我不想等到失败,才后悔自己还有潜力没发挥。”
一个中国伟人曾说;胜利的希望和有利情况的恢复,往往产生于再坚持一下的努力之中。
做人,何妨放手一搏。
  
问题八,
你的时间无限,长生不老,所以最想做的事,应该无限延期?
回答:不,傻瓜才会这样认为。
然而我们却常说,等我老了,要去环游世界;等我退休,就要去做想做的事情;等孩子长大了,我就可以……
我们都以为自己有无限的时间与精力。其实我们可以一步一步实现理想,不必在等待中徒耗生命。如果现在就能一步一步努力接近,我们就不会活了半生,却出现自己最不想看到的结局。
做人,要活在当下。f

如何用正确的方法管理高效率的开发团队(经典75问)

{ Posted on 星期二, 七月 14, 2009 by Kaiser.XKw }
1. 你们的项目组使用源代码管理工具了么?
MVM:应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。

2. 你们的项目组使用缺陷管理系统了么?
MVM:应该用。ClearQuest太复杂,我的推荐是BugZilla。
3. 你们的测试组还在用Word写测试用例么?
MVM:不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。

4. 你们的项目组有没有建立一个门户网站?
MVM:要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。

5. 你们的项目组用了你能买到最好的工具么?
MVM:应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。

6. 你们的程序员工作在安静的环境里么?
MVM:需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。

7. 你们的员工每个人都有一部电话么?
MVM:需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:“某某某电话”。《人件》里面就强烈谴责这种做法。

8. 你们每个人都知道出了问题应该找谁么?
MVM:应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。

9. 你遇到过有人说“我以为…”么?
MVM:要消灭“我以为”。Never assume anything。

10. 你们的项目组中所有的人都坐在一起么?
MVM:需要。我反对Virtual Team,也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起,好处多得不得了。

11. 你们的进度表是否反映最新开发进展情况?
MVM:应该反映。但是,应该用Baseline的方法来管理进度表:维护一份稳定的Schedule,再维护一份最新更改。Baseline的方法也应该用于其它的Spec。Baseline是变更管理里面的一个重要手段。

12. 你们的工作量是先由每个人自己估算的么?
MVM:应该让每个人自己估算。要从下而上估算工作量,而不是从上往下分派。除非有其他原因,比如政治任务工期固定等。

13. 你们的开发人员从项目一开始就加班么?
MVM:不要这样。不要一开始就搞疲劳战。从项目一开始就加班,只能说明项目进度不合理。当然,一些对日软件外包必须天天加班,那属于剥削的范畴。

14. 你们的项目计划中Buffer Time是加在每个小任务后面的么?
MVM:不要。Buffer Time加在每个小任务后面,很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。

15. 值得再多花一些时间,从95%做到100%好
MVM:值得,非常值得。尤其当项目后期人困马乏的时候,要坚持。这会给产品带来质的区别。

16. 登记新缺陷时,是否写清了重现步骤?
MVM:要。这属于Dev和Test之间的沟通手段。面对面沟通需要,详细填写Repro Steps也需要。

17. 写新代码前会把已知缺陷解决么?
MVM:要。每个人的缺陷不能超过10个或15个,否则必须先解决老的bug才能继续写新代码。

18. 你们对缺陷的轻重缓急有事先的约定么?
MVM:必须有定义。Severity要分1、2、3,约定好:蓝屏和Data Lost算Sev 1,Function Error算Sev 2,界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。

19. 你们对意见不一的缺陷有三国会议么?
MVM:必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。

20. 所有的缺陷都是由登记的人最后关闭的么?
MVM:Bug应该由Opener关闭。Dev不能私自关闭Bug。

21. 你们的程序员厌恶修改老的代码么?
MVM:厌恶是正常的。解决方法是组织Code Review,单独留出时间来。XP也是一个方法。

22. 你们项目组有Team Morale Activity么?
MVM:每个月都要搞一次,吃饭、唱歌、Outing、打球、开卡丁车等等,一定要有。不要剩这些钱。

23. 你们项目组有自己的Logo么?
MVM:要有自己的Logo。至少应该有自己的Codename。

24. 你们的员工有印有公司Logo的T-Shirt么?
MVM:要有。能增强归属感。当然,T-Shirt要做的好看一些,最好用80支的棉来做。别没穿几次就破破烂烂的。

25. 总经理至少每月参加次项目组会议
MVM:要的。要让team member觉得高层关注这个项目。

26. 你们是给每个Dev开一个分支么?
MVM:反对。Branch的管理以及Merge的工作量太大,而且容易出错。

27. 有人长期不Check-In代码么?
MVM:不可以。对大部分项目来说,最多两三天就应该Check-In。

28. 在Check-In代码时都填写注释了么?
MVM:要写的,至少一两句话,比如“解决了Bug No.225”。如果往高处拔,这也算做“配置审计”的一部分。

29. 有没有设定每天Check-In的最后期限?
MVM:要的,要明确Check-In Deadline。否则会Build Break。

30. 你们能把所有源码一下子编译成安装文件吗?
MVM:要的。这是每日编译(Daily Build)的基础。而且必须要能够做成自动的。

31. 你们的项目组做每日编译么?
MVM:当然要做。有三样东西是软件项目/产品开发必备的:1. bug management; 2. source control; 3. daily build。

32. 你们公司有没有积累一个项目风险列表?
MVM:要。Risk Inventory。否则,下个项目开始的时候,又只能拍脑袋分析Risk了。

33. 设计越简单越好
MVM:越简单越好。设计时候多一句话,将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management。

34. 尽量利用现有的产品、技术、代码
MVM: 千万别什么东西都自己Coding。BizTalk和Sharepoint 就是最好的例子,有这两个作为基础,可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML,而不是自己去Parse一个文 本文件;尽量用RegExp,而不是自己从头操作字符串,等等等等。这就是“软件复用”的体现。

35. 你们会隔一段时间就停下来夯实代码么?
MVM:要。最好一个月左右一次。传言去年年初Windows 组在Stevb的命令下停过一个月增强安全。Btw,“夯”这个字念“hang”,第一声。

36. 你们的项目组每个人都写Daily Report么?
MVM:要写。五分钟就够了,写10句话左右,告诉自己小组的人今天我干了什么。一则为了沟通,二则鞭策自己(要是游手好闲一天,自己都会不好意思写的)。

37. 你们的项目经理会发出Weekly Report么?
MVM:要。也是为了沟通。内容包括目前进度,可能的风险,质量状况,各种工作的进展等。

38. 你们项目组是否至少每周全体开会一次?
MVM:要。一定要开会。程序员讨厌开会,但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code。

39. 你们项目组的会议、讨论都有记录么?
MVM:会前发meeting request和agenda,会中有人负责主持和记录,会后有人负责发meeting minutes,这都是effective meeting的要点。而且,每个会议都要形成agreements和action items。

40. 其他部门知道你们项目组在干什么么?
MVM:要发一些Newsflash给整个大组织。Show your team’s value。否则,当你坐在电梯里面,其他部门的人问:“你们在干嘛”,你回答“ABC项目”的时候,别人全然不知,那种感觉不太好。

41. 通过Email进行所有正式沟通
MVM:Email的好处是免得抵赖。但也要避免矫枉过正,最好的方法是先用电话和当面说,然后Email来确认。

42. 为项目组建立多个Mailing Group
MVM: 如果在AD+Exchange里面,就建 Distribution List。比如,我会建ABC Project Core Team,ABC Project Dev Team,ABC Project All Testers,ABC Project Extended Team等等。这样发起Email来方便,而且能让该收到email的人都收到、不该收到不被骚扰。

43. 每个人都知道哪里可以找到全部的文档么?
MVM:应该每个人都知道。这叫做知识管理(Knowledge Management)。最方便的就是把文档放在一个集中的File Share,更好的方法是用Sharepoint。

44. 你做决定、做变化时,告诉大家原因了么?
MVM: 要告诉大家原因。Empower team member的手段之一是提供足够的information,这是MSF一开篇的几个原则之一。的确如此,tell me why是人之常情,tell me why了才能有understanding。中国人做事喜欢搞限制,限制信息,似乎能够看到某一份文件的人就是有身份的人。大错特错。权威、权力,不在于 是不是能access information/data,而在于是不是掌握资源。

45. Stay agile and expect change
MVM:要这样。需求一定会变的,已经写好的代码一定会被要求修改的。做好心理准备,对change不要抗拒,而是expect change。

46. 你们有没有专职的软件测试人员?
MVM:要有专职测试。如果人手不够,可以peer test,交换了测试。千万别自己测试自己的。

47. 你们的测试有一份总的计划来规定做什么和怎么做么?
MVM:这就是Test Plan。要不要做性能测试?要不要做Usability测试?什么时候开始测试性能?测试通过的标准是什么?用什么手段,自动的还是手动的?这些问题需要用Test Plan来回答。

48. 你是先写Test Case然后再测试的么?
MVM:应该如此。应该先设计再编程、先test case再测试。当然,事情是灵活的。我有时候在做第一遍测试的同时补上test case。至于先test case再开发,我不喜欢,因为不习惯,太麻烦,至于别人推荐,那试试看也无妨。

49. 你是否会为各种输入组合创建测试用例?
MVM:不要,不要搞边界条件组合。当心组合爆炸。有很多test case工具能够自动生成各种边界条件的组合——但要想清楚,你是否有时间去运行那么多test case。

50. 你们的程序员能看到测试用例么?
MVM:要。让Dev看到Test Case吧。我们都是为了同一个目的走到一起来的:提高质量。

51. 你们是否随便抓一些人来做易用性测试?
MVM:要这么做。自己看自己写的程序界面,怎么看都是顺眼的。这叫做审美疲劳——臭的看久了也就不臭了,不方便的永久了也就习惯了。

52. 你对自动测试的期望正确么?
MVM:别期望太高。依我看,除了性能测试以外,还是暂时先忘掉“自动测试”吧,忘掉WinRunner和LoadRunner吧。对于国内的软件测试的现状来说,只能“矫枉必须过正”了。

53. 你们的性能测试是等所有功能都开发完才做的么?
MVM:不能这样。性能测试不能被归到所谓的“系统测试”阶段。早测早改正,早死早升天。

54. 你注意到测试中的杀虫剂效应了么?
MVM:虫子有抗药性,Bug也有。发现的新Bug越来越少是正常的。这时候,最好大家交换一下测试的area,或者用用看其他工具和手法,就又会发现一些新bug了。

55. 你们项目组中有人能说出产品的当前整体质量情况么?
MVM:要有。当老板问起这个产品目前质量如何,Test Lead/Manager应该负责回答。

56. 你们有单元测试么?
MVM:单元测试要有的。不过没有单元测试也不是不可以,我做过没有单元测试的项目,也做成功了——可能是侥幸,可能是大家都是熟手的关系。还是那句话,软件工程是非常实践、非常工程、非常灵活的一套方法,某些方法在某些情况下会比另一些方法好,反之亦然。

57. 你们的程序员是写完代码就扔过墙的么 ?
MVM:大忌。写好一块程序以后,即便不做单元测试,也应该自己先跑一跑。虽然有了专门的测试人员,做开发的人也不可以一点测试都不做。微软还有Test Release Document的说法,程序太烂的话,测试有权踢回去。

58. 你们的程序中所有的函数都有输入检查么?
MVM:不要。虽然说做输入检查是write secure code的要点,但不要做太多的输入检查,有些内部函数之间的参数传递就不必检查输入了,省点功夫。同样的道理,未必要给所有的函数都写注释。写一部分主要的就够了。

59. 产品有统一的错误处理机制和报错界面么?
MVM: 要有。最好能有统一的error message,然后每个error message都带一个error number。这样,用户可以自己根据error number到user manual里面去看看错误的具体描述和可能原因,就像SQL Server的错误那样。同样,ASP.NET也要有统一的Exception处理。可以参考有关的Application Block。

60. 你们有统一的代码书写规范么?
MVM:要有。Code Convention很多,搞一份来发给大家就可以了。当然,要是有FxCop这种工具来检查代码就更好了。

61. 你们的每个人都了解项目的商业意义么?
MVM: 要。这是Vision的意思。别把项目只当成工作。有时候要想着自己是在为中国某某行业的信息化作先驱者,或者时不时的告诉team member,这个项目能够为某某某国家部门每年节省多少多少百万的纳税人的钱,这样就有动力了。平凡的事情也是可以有个崇高的目标的。

62. 产品各部分的界面和操作习惯一致么?
MVM:要这样。要让用户觉得整个程序好像是一个人写出来的那样。

63. 有可以作为宣传亮点的Cool Feature么?
MVM:要。这是增强团队凝聚力、信心的。而且,“一俊遮百丑”,有亮点就可以掩盖一些问题。这样,对于客户来说,会感觉产品从质量角度来说还是acceptable的。或者说,cool feature或者说亮点可以作为质量问题的一个事后弥补措施。

64. 尽可能缩短产品的启动时间
MVM:要这样。软件启动时间(Start-Up time)是客户对性能好坏的第一印象。

65. 不要过于注重内在品质而忽视了第一眼的外在印象
MVM:程序员容易犯这个错误:太看重性能、稳定性、存储效率,但忽视了外在感受。而高层经理、客户正相反。这两方面要兼顾,协调这些是PM的工作。

66. 你们根据详细产品功能说明书做开发么?
MVM:要这样。要有设计才能开发,这是必须的。设计文档,应该说清楚这个产品会怎么运行,应该采取一些讲故事的方法。设计的时候千万别钻细节,别钻到数据库、代码等具体实现里面去,那些是后面的事情,一步步来不能着急。

67. 开始开发和测试之前每个人都仔细审阅功能设计么?
MVM:要做。Function Spec review是用来统一思想的。而且,review过以后形成了一致意见,将来再也没有人可以说“你看,当初我就是反对这么设计的,现在吃苦头了吧”

68. 所有人都始终想着The Whole Image么?
MVM:要这样。项目里面每个人虽然都只是在制造一片叶子,但每个人都应该知道自己在制造的那片叶子所在的树是怎么样子的。我反对软件蓝领,反对过分的把软件制造看成流水线、车间。参见第61条。

69. Dev工作的划分是单纯纵向或横向的么?
MVM:不能单纯的根据功能模块分,或者单纯根据表现层、中间层、数据库层分。我推荐这么做:首先根据功能模块分,然后每个“层”都有一个Owner来Review所有人的设计和代码,保证consistency。

70. 你们的程序员写程序设计说明文档么?
MVM:要。不过我听说微软的程序员1999年以前也不写。所以说,写不写也不是绝对的,偷懒有时候也是可以的。参见第56条。

71. 你在招人面试时让他写一段程序么?
MVM:要的。我最喜欢让人做字符串和链表一类的题目。这种题目有很多循环、判断、指针、递归等,既不偏向过于考算法,也不偏向过于考特定的API。

72. 你们有没有技术交流讲座?
MVM:要的。每一两个礼拜搞一次内部的Tech Talk或者Chalk Talk吧。让组员之间分享技术心得,这笔花钱送到外面去培训划算。

73. 你们的程序员都能专注于一件事情么?
MVM: 要让程序员专注一件事。例如说,一个部门有两个项目和10个人,一种方法是让10个人同时参加两个项目,每个项目上每个人都花50%时间;另一种方法是5 个人去项目A,5个人去项目B,每个人都100%在某一个项目上。我一定选后面一种。这个道理很多人都懂,但很多领导实践起来就把属下当成可以任意拆分的 资源了。

74. 你们的程序员会夸大完成某项工作所需要的时间么?
MVM:会的,这是常见的,尤其会在项目后期夸大做某个change所需要的时间,以次来抵制change。解决的方法是坐下来慢慢磨,磨掉程序员的逆反心理,一起分析,并把估算时间的颗粒度变小。

75. 尽量不要用Virtual Heads
MVM: 最好不要用Virtual Heads。Virtual heads意味着resource is not secure,shared resource会降低resource的工作效率,容易增加出错的机会,会让一心二用的人没有太多时间去review spec、review design。一个dedicated的人,要强过两个只能投入50%时间和精力的人。我是吃过亏的:7个part time的tester,发现的Bug和干的活,加起来还不如两个full-time的。参见第73条。73条是针对程序员的,75条是针对 Resource Manager的。