探索與發現

          研究java技術

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 109 評論 :: 0 Trackbacks

          #

          dll
          http://blog.rameshbhaskar.com/2008/12/05/re-compiling-the-ajaxcontroltoolkit/

          For example, styles from that post for IE7 and Firefox would be:

          .jasons_modalBackground {
              position:fixed;
              top:0px;
              bottom:0px;
              left:0px;
              right:0px;
              overflow:hidden;
              padding:0;
              margin:0;
              background-color:#000;
              filter:alpha(opacity=50);
              opacity:0.5;
              z-index:1000;
          }




          ModalPopup Demonstration
          http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ModalPopup/ModalPopup.aspx




          http://blogs.visoftinc.com/archive/2008/03/13/Modal-UpdateProgress-for-UpdatePanel-Revisited.aspx

          posted @ 2009-06-04 22:38 蜘蛛 閱讀(198) | 評論 (0)編輯 收藏

          Recently come across yet another SQL statement that required me to check if the denomiator is 0, otherwise the statement returns a devide by zero error.

          Naturally, if this was the statement:

          SELECT Expression1/Expression2 FROM Table1

          You would do something like:

          SELECT Expression1/(CASE Expression2=0 THEN XX ELSE Expression2 END) FROM Table1

          This might be OK if Expression2 is small, however a better way I discovered is to use a combination of ISNULL and NULLIF
          Then it would look like:

          SELECT Expression1/ ISNULL( NULLIF(Expression2,0), XX) FROM Table1

          Note: you can set the XX to be either NULL or 1 or something else depending on the application of this statement.

          posted @ 2009-06-03 23:51 蜘蛛 閱讀(228) | 評論 (0)編輯 收藏

          http://wssdeploy.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26234


          Announcing public availability of WssDeploy – a remote deployment and debugging tool for SharePoint  developers
          http://www.portalsolutions.net/Blog/Lists/Posts/Post.aspx?ID=53

          posted @ 2009-06-03 22:39 蜘蛛 閱讀(166) | 評論 (0)編輯 收藏

          http://blogs.technet.com/mhass/archive/2007/08/20/sharepoint-3-0-wsp-deployment-scripts.aspx
          posted @ 2009-06-03 22:16 蜘蛛 閱讀(180) | 評論 (0)編輯 收藏

          pstools工具使用方法  
          本篇文章是基于pstools 1.6版本。pstools是sysinternals出的一個功能強大的nt/2k遠程管理工具包。
          它的主頁為http://www.sysinternals.com/
          下載地址為http://www.sysinternals.com/files/Pstools.zip
          (1)psexec
          psexec是一個遠程執行工具,你可以像使用telnet一樣使用它。
          它的使用格式為:
          psexec \\遠程機器ip [-u username [-p password]] [-c [-f]] [-i][-d] program [arguments]
          它的參數有:
          -u后面跟用戶名 -p后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          -c <[路徑]文件名>:拷貝文件到遠程機器并運行(注意:運行結束后文件會自動刪除)
          -d 不等待程序執行完就返回,(比如要讓遠程機器運行tftp服務端的時候使用,不然psexec命令會一直等待tftp程序結束才會返回)
          -i 在遠程機器上運行一個名為psexesvc進程,(到底什么用弄不明白)
           

          假設我在遠程機器ip有一個賬號,賬號名是:abc   密碼是:123
          比如想要用telnet一樣在遠程系統上執行命令可以打:
          psexec \\遠程機器ip -u abc -p 123 cmd
          如果想要遠程機器執行本地c:\srm.exe文件可以打:
          psexec \\遠程機器ip -u abc -p 123 -c c:\srm.exe
          如果想要讓遠程機器執行本地上tftp服務端,(假設tftp服務端在本地c:\tftp32.exe),可以打:
          psexec \\遠程機器ip -u abc -p 123 -c c:\tftp32.exe -d
           
          (后面例子不再重復-u和-p的用法)
           
           
           
          (2)psservice
          psservice是一個服務管理程序。
          它的使用格式為:
          psservice [\\遠程機器ip [-u username] [-p password]] <command> <options>
          它的參數只有:
          -u 后面跟用戶名 -p后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          它的command有:
          query [服務名]:顯示某一服務的狀態,如不填服務名則顯示所有服務的狀態。
          config <服務名>:顯示某一服務的配置。
          start <服務名>:啟動某一服務。
          stop <服務名>:停止某一服務。
          testart <服務名>:停止某一服務并重新啟動它。
          pause <服務名>:暫停某一服務。
          cont <服務名>:恢復暫停的服務。
          depend <服務名>:顯示某一服務依存關系。
          find <服務名>:在網絡種搜尋指定的服務。
           

          比如你想查看在遠程機器上的telnet服務的狀態可以打:
          psservice \\遠程機器ip query tlntsvr     (tlntsvr為telnet服務的服務名)
          比如你查看遠程機器上的telnet服務的配置可以打:
          psservice \\遠程機器ip config tlntsvr
          比如你想啟動遠程機器上的telnet服務可以打:
          psservice \\遠程機器ip start tlntsvr
          其他用法以此類推。
           
           
           
          (3)pssuspend
          pssuspend是一個暫時停止進程的軟件
            
           
          2009-4-22 23:57   回復此發言  

          2 pstools說明書(中文版)
          它的使用格式為:
          pssuspend [-r] [\\遠程機器ip [-u username] [-p password]] <process name | process id>
          它有三個參數:
          -u:后面跟用戶名 -p:后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          -r:恢復進程。
           

          比如要暫時停止一個pid號為999,名稱為srm.exe的進程可以打:
          pssuspend \\遠程機器ip 999   或   pssuspend \\遠程機器ip srm
          如果想要恢復它就可以打pssuspend -r \\遠程機器ip 999 或   pssuspend -r \\遠程機器ip srm
           
           
           
          (4)psinfo
          psinfo是一個搜集機器軟硬件信息的工具,它可以獲得操作系統信息,硬件信息和軟件信息。
          它的使用格式為:
          psinfo [-h] [-s] [-d] [-c] [\\遠程機器ip [-u username [-p password]]]
          它的參數有:
          -u:后面跟用戶名 -p:后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          -h:是顯示它安裝了哪些補丁包
          -s:是顯示它裝了哪些軟件
          -d:是顯示磁盤信息。
           

          比如我只想看遠程機器的軟硬件信息和只用打:
          psinfo \\遠程機器ip
          假如我還想看看它裝了哪些補丁包可以打
          psinfo -h \\遠程機器ip
          假如我還想看看它磁盤信息可以打:
          psinfo -d \\遠程機器ip
          如果我想看它裝了哪些軟件可以打:
          psinfo -s \\遠程機器ip
          簡單吧.
           
           
           
          (5)pslist
          pslist是一個查看進程的程序。
          它的使用格式為:
          pslist [-d] [-m] [-x][-t][-s [n] [-r n] [\\遠程機器ip [-u username] [-p password]] [name | pid]
          它的參數有:
          -u:后面跟用戶名 -p:后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          -s:是使用任務管理器模式實時查看進程,可以按ESC鍵退出。
          -r <秒數>:是和-s連用的一個參數,它用來指定任務管理器模式是的刷新間隔。(默認的刷新間隔為1秒)
          -d:示各個進程的cpu使用信息。
          -m:顯示各個進程的存儲器使用信息。
          -x:非常詳細顯示進程的所有信息。
          -t:以樹型方式顯示進程。
           

          比如要查看遠程機器ip上的進程的cpu使用信息可以打:
          pslist -d \\遠程機器ip
          比如要查看一個pid號為999,名稱為srm.exe進程的存儲器使用信息可以打:
          pslist -m \\遠程機器ip 999 或 pslist -m \\遠程機器ip srm
          比如要以任務管理器模式實時查看61.12.23.4上進程情況,并且刷新間隔為3秒可以打:
          pslist -s -n 3 \\遠程機器ip
           
           
           
          (6)psuptime
          psuptime是一個了解遠程機器運行了多久的命令。
          使用它只需要打:psuptime \\遠程機器ip
           
           
           
          (7)psshutdown
          psshutdown是一個遠程關機命令。
          它的使用格式為:
          psshutdown [[-s | -r | -k [-t nn][-m "消息"][-f]] -a | -l | -o] [\\遠程機器ip]
           
            
           
          2009-4-22 23:57   回復此發言  

          3 pstools說明書(中文版)

          它的參數有:
          -a:取消以前執行的關機指令。
          -t:離關機還有多少秒。(默認是20秒)
          -s:關閉機器。
          -m:是要顯示的信息。
          -f:是關機是不保存運行的程序。
          -r:表示重啟。
          -l:表示鎖定電腦。
          -o:表示注銷用戶。
           

          比如我想讓遠程機器30秒后關閉并顯示(要關機了,請保存文件)則打:
          psshutdown -t 30 -s -m "要關機了,請保存文件" \\遠程機器ip
          如果是要重起的話打:
          psshutdown -t 30 -m "要關機了,請保存文件" -r \\遠程機器ip
          如果要取消剛才的指令可以打:
          psshutdown -a \\遠程機器ip
          其他參數以此類推。
           
           
           
          (8)psfile
          psfile是一個顯示機器上的會話和有什么文件被網絡中的用戶的打開的命令。
          它的使用格式為:
          psfile [\\遠程機器ip [-u Username [-p Password]]] [[Id | path] [-c]]
          它的參數有:
          -u 后面跟用戶名 -p后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
          -c:關閉會話或文件
           

          比如我想看看遠程機器上的會話和被遠程用戶打開的文件可以打:
          psfile \\遠程機器ip
          接著就會顯示
          [33] C:\WINNT
            User:   ADMINISTRATOR
            Locks: 0
            Access: Read
          [63] \PIPE\srvsvc
            User:   ADMINISTRATOR
            Locks: 0
            Access: Read Write
          接著我想關閉id為33,路徑為c:\winnt的這個會話可以打
          psfile \\遠程機器ip 33 -c   或   psfile \\遠程機器ip c:\winnt -c
           
           
           
          (9)psloggedon
          psloggedon是一個顯示目前誰登陸的機器的命令。
          它的參數只有:
          -l只顯示本地登陸用戶而不顯示其它的網絡登陸用戶
          -x不顯示登陸時間
          比如說要顯示遠程機器現在登陸的用戶可以打:
          psloggedon \\遠程機器ip
           
           
           
          (10)psgetsid
          psgetsid是一個遠程獲取賬號sid信息的工具。
          它的使用格式為:
          psgetsid [\\遠程機器ip [-u username [-p password]]] [account]
          它的參數有
          -u 后面跟用戶名 -p后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。(如果沒有-p參數,則輸入命令后會要求你輸入密碼)
           

          比如要看遠程機器上賬號名為abc的sid信息可以打:
          psgetsid \\遠程機器ip abc
           
           
           
          (11)pskill
          pskill是一個殺除進程的程序。
          它的使用格式為:
          pskill [\\遠程機器ip [-u username] [-p password]] <process name | process id>
           

          比如要殺除一個pid號為999,名稱為srm.exe的進程可以打:
          pskill \\遠程機器ip 999   或   pskill \\遠程機器ip srm
           
           
           
          (12)psloglist
          psloglist
          psloglist是一個查看系統事件記錄的程序。
          它的使用格式為:
          psloglist [\\遠程機器ip [-u username [-p password]]] [-s [-t delimiter]] [-n # | -d #][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy][-f filter] [-l event log file] <eventlog> 
          它的參數有:
          -u 后面跟用戶名 -p后面是跟密碼的,如果建立ipc連接后這兩個參數則不需要。
          -c:顯示事件之后清理事件記錄
          -l <事件記錄文件名>:用于查看事件記錄文件
          -n <n>:只顯示最近的n條系統事件記錄。
          -d <n>:只顯示n天以前的系統事件記錄
          -a mm/dd/yy:顯示mm/dd/yy以后的系統事件記錄
          -b mm/dd/yy:顯示mm/dd/yy以前的系統事件記錄
          -f <事件類型>:只顯示指定的事件類型的系統事件記錄。
          -x:顯示事件數據代碼
          -r:從舊到新排列(如不加則默認是從新到舊排列)
          -s:以一個事件為一行的格式顯示,中間默認以逗號格開各個信息。
          -t <字符>:這個參數和-s連用,以來改變-s中默認的逗號。
           

          如果我想看遠程機器的系統事件記錄只用打:
          psloglist \\遠程機器ip 123
          比如我想看最近的10條error類型的記錄可以打:
          psloglist \\遠程機器ip -n 10 -f error
          posted @ 2009-06-03 21:26 蜘蛛 閱讀(259) | 評論 (0)編輯 收藏

          MOSS2007-學習筆記-備忘錄-單點登錄設置(2)
          http://www.cnblogs.com/panda/archive/2009/02/10/1387296.html
          posted @ 2009-05-29 08:14 蜘蛛 閱讀(527) | 評論 (2)編輯 收藏

          net use ipipc$ " " /user:" " 建立IPC空鏈接

          net use ipipc$ "密碼" /user:"用戶名" 建立IPC非空鏈接

          net use h: ipc$ "密碼" /user:"用戶名" 直接登陸后映射對方C:到本地為H:

          net use h: ipc$ 登陸后映射對方C:到本地為H:

          net use ipipc$ /del 刪除IPC鏈接

          net use h: /del 刪除映射對方到本地的為H:的映射

          net user 用戶名 密碼 /add 建立用戶

          net user guest /active:yes 激活guest用戶

          net user 查看有哪些用戶

          net user 帳戶名 查看帳戶的屬性

          net localgroup administrators 用戶名 /add 把“用戶”添加到管理員中使其具有管理員權限,注意:administrator后加s用復數

          net start 查看開啟了哪些服務

          net start 服務名  開啟服務;(如:net start telnet, net start schedule)

          net stop 服務名 停止某服務

          net time 目標ip 查看對方時間

          net time 目標ip /set 設置本地計算機時間與“目標IP”主機的時間同步,加上參數/yes可取消確認信息

          net view 查看本地局域網內開啟了哪些共享

          net view ip 查看對方局域網內開啟了哪些共享

          net config 顯示系統網絡設置

          net logoff 斷開連接的共享

          net pause 服務名 暫停某服務

          net send ip "文本信息" 向對方發信息

          net ver 局域網內正在使用的網絡連接類型和信息

          net share 查看本地開啟的共享

          net share ipc$ 開啟ipc$共享

          net share ipc$ /del 刪除ipc$共享

          net share c$ /del 刪除C:共享

          net user guest 12345 用guest用戶登陸后用將密碼改為12345

          net password 密碼 更改系統登陸密碼

          netstat -a 查看開啟了哪些端口,常用netstat -an

          netstat -n 查看端口的網絡連接情況,常用netstat -an

          netstat -v 查看正在進行的工作

          netstat -p 協議名 例:netstat -p tcq/ip 查看某協議使用情況(查看tcp/ip協議使用情況)

          netstat -s 查看正在使用的所有協議使用情況

          nbtstat -A ip 對方136到139其中一個端口開了的話,就可查看對方最近登陸的用戶名(03前的為用戶名)-注意:參數-A要大寫

          tracert -參數 ip(或計算機名) 跟蹤路由(數據包),參數:“-w數字”用于設置超時間隔。

          ping ip(或域名) 向對方主機發送默認大小為32字節的數據,參數:“-l[空格]數據包大小”;“-n發送數據次數”;“-t”指一直ping。

          ping -t -l 65550 ip 死亡之ping(發送大于64K的文件并一直ping就成了死亡之ping)

          ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用參數“/all”顯示全部配置信息

          tlist -t 以樹行列表顯示進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

          kill -F 進程名 加-F參數后強制結束某進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

          del -F 文件名 加-F參數后就可刪除只讀文件,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔文件,/A-R、/A-H、/A-S、/A-A表示刪 除除只讀、隱藏、系統、存檔以外的文件。例如“DEL/AR *.*”表示刪除當前目錄下所有只讀文件,“DEL/A-S *.*”表示刪除當前目錄下除系統文件以外的所有文件




          >net use H: \\192.168.1.20\downloads /user:admin p@ssword

          net use * /d


          posted @ 2009-05-19 08:00 蜘蛛 閱讀(18929) | 評論 (4)編輯 收藏

          http://www.cnblogs.com/zhengyongfeng/archive/2009/03/29/1424680.html
          posted @ 2009-05-16 08:20 蜘蛛 閱讀(160) | 評論 (0)編輯 收藏

          C#正則表達式

           

          只能輸入數字:"^[0-9]*$"。
          只能輸入n位的數字:"^\d{n}$"。
          只能輸入至少n位的數字:"^\d{n,}$"。
          只能輸入m~n位的數字:。"^\d{m,n}$"
          只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
          只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
          只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
          只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。
          只能輸入非零的負整數:"^\-[1-9][]0-9"*$。
          只能輸入長度為3的字符:"^.{3}$"。
          只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"。
          只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"。
          只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"。
          只能輸入由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。
          只能輸入由數字、26個英文字母或者下劃線組成的字符串:"^\w+$"。
          驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下劃線。
          驗證是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
          只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
          驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
          驗證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
          驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
          驗證身份證號(15位或18位數字):"^\d{15}|\d{18}$"。
          驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
          驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
          利用正則表達式限制網頁表單里的文本框輸入內容:

          用正則表達式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

          用正則表達式限制只能輸入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF] /g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

          用正則表達式限制只能輸入數字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

          用正則表達式限制只能輸入數字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

          得用正則表達式從URL地址中提取文件名的javascript程序,如下結果為page1

          s="http://www.9499.net/page1.htm"
          s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
          alert(s)

          匹配雙字節字符(包括漢字在內):[^\x00-\xff]

          應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

          String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

          匹配空行的正則表達式:\n[\s| ]*\r

          匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/

          匹配首尾空格的正則表達式:(^\s*)|(\s*$)

          String.prototype.trim = function()
          {
              return this.replace(/(^\s*)|(\s*$)/g, "");
          }

          利用正則表達式分解和轉換IP地址:

          下面是利用正則表達式匹配IP地址,并將IP地址轉換成對應數值的Javascript程序:

          function IP2V(ip)
          {
          re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達式
          if(re.test(ip))
          {
          return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
          }
          else
          {
          throw new Error("Not a valid IP address!")
          }
          }

          不過上面的程序如果不用正則表達式,而直接用split函數來分解可能更簡單,程序如下:

          var ip="10.100.20.168"
          ip=ip.split(".")
          alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
          符號解釋:

          字符
          描述

          \
          將下一個字符標記為一個特殊字符、或一個原義字符、或一個 向后引用、或一個八進制轉義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。

          ^
          匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。

          $
          匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。

          *
          匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。

          +
          匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。

          ?
          匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價于 {0,1}。

          {n}
          n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

          {n,}
          n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。

          {n,m}
          m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。請注意在逗號和兩個數之間不能有空格。

          ?
          當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。

          .
          匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。

          (pattern)
          匹配 pattern 并獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號字符,請使用 '\(' 或 '\)'。

          (?:pattern)
          匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式。

          (?=pattern)
          正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。

          (?!pattern)
          負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始

          x|y
          匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

          [xyz]
          字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

          [^xyz]
          負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

          [a-z]
          字符范圍。匹配指定范圍內的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字符。

          [^a-z]
          負值字符范圍。匹配任何不在指定范圍內的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字符。

          \b
          匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

          \B
          匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

          \cx
          匹配由 x 指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字符。

          \d
          匹配一個數字字符。等價于 [0-9]。

          \D
          匹配一個非數字字符。等價于 [^0-9]。

          \f
          匹配一個換頁符。等價于 \x0c 和 \cL。

          \n
          匹配一個換行符。等價于 \x0a 和 \cJ。

          \r
          匹配一個回車符。等價于 \x0d 和 \cM。

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

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

          \t
          匹配一個制表符。等價于 \x09 和 \cI。

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

          \w
          匹配包括下劃線的任何單詞字符。等價于'[A-Za-z0-9_]'。

          \W
          匹配任何非單詞字符。等價于 '[^A-Za-z0-9_]'。

          \xn
          匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價于 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。.

          \num
          匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字符。

          \n
          標識一個八進制轉義值或一個向后引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向后引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。

          \nm
          標識一個八進制轉義值或一個向后引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向后引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個后跟文字 m 的向后引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。

          \nml
          如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。

          \un
          匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, \u00A9 匹配版權符號 (?)。

          posted @ 2009-05-16 06:54 蜘蛛 閱讀(198) | 評論 (0)編輯 收藏

          由于近期項目的需要,我開始學習MOSS編程,剛開始接觸的時候覺的特別的別扭,覺的沒有自己全新創建的web application來的自由,但是MOSS還是有很多優點的,這篇我先說下自定義webpart的部署問題。

              如何創建webpart我并不想在這篇中講,具體我會另外寫一篇關于webpart開發的文章。

              MOSS中的webpart與普通.net控件的不同點:

                 1:webpart一般都是以類庫的形式出現,它是沒有前端可視化頁面的,類似于asp.net中的自定義控件。

                 2:兩者繼承的基類不同:

                     1):asp.net控件的基類:System.Web.UI.WebControls.WebControl;

                     2):webpart的基類:System.Web.UI.WebControls.WebParts.WebPart;

                 3:兩者生成的文件不同,下面幾個是asp.net控件所不包含的:

                     1):密鑰文件;

                     2):每個 Web 部件都應有一個 .webpart 文件,還有一個描述 Web 部件的 XML 文件。這是webpart獨有的特征。

                 4:MOSS中的webpart部署并不像asp.net網站中的一樣,控件和網站程序放在一起然后部署就行,我總結以個幾點應該注意的地方:

                    1>:首先把生成的webpart的dll文件復制到sharepoint網站對應的目錄中,而程序集的部署分以下幾種方式:

                       1):bin目錄,在創建一個web application時,會選擇一個端口,此時在IIS中就會創建一個對應端口的網站目錄:Inetpub"wwwroot"wss"VirtualDirectories"20983,在這個目錄下面有兩個文件夾:_app_bin,bin,將編譯好的程序集放進任何一個目錄即可;

                       2):全局程序集緩存:全局程序集緩存使各個應用能夠共享程序集,它會被.Net運行時自動加載。它的位置在:[System Drive]"Windows"Assemply。 因為它會強命名程序集,所有具體開發時不推薦這種方式。

                       3).指定目錄,參考第一條,bin,_app_bin,這兩個文件夾都可以用來部署程序集,MOSS還支持指定目錄方式,這需要在Web.Config中進行配置。在<configuration>節下進行配置:

             <runtime>
                
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                   
          <probing privatePath="bin;_app_bin;CustomBin" />
                
          </assemblyBinding>
             
          </runtime>

                     小結:其實上面的方式一和方式三是同一原理,實際上可以說是兩種方式。還有一點就是如果想手工復制程序集到sharepoint網站的bin,這里有兩種簡單的方式:

                              1:選擇項目-屬性-生成-更改輸出路徑到sharepoint網站的bin即可;

                              2:選擇項目-屬性-生成事件-增加生成事件:

          copy "$(TargetPath)" "E:"Inetpub"wwwroot"wss"VirtualDirectories"20983"bin"

                    

                     BIN目錄的優點和缺點:

                             1:優點。它是一個單獨信任位置,默認的,代碼訪問安全級別非常低。如果想讓webpart正常運行,一般都需要開發人員顯示的提升BIN目錄的信任級別。一個BIN目錄對應一個web application,這樣我們可以為不同的web application創建不同的獨立代碼。

                            2:缺點。如果想在另外一個web 應用中應用此webpart,則需要重新部署。

                    全局程序集緩存的優點和缺點:

                            1:優點。它是經過簽名的程序集,信任級別最高,屬于完全信任。因為它部署于全局位置,所有能夠被所有web應用所共享。

                            2:缺點。由于它是完全信任,所以它失去了相應的防御措施。

                     2>:設置特殊安全屬性,如果是采用部署到bin的方式,則會存在安全性問題,如不做處理則會出現如圖一的情況。

           

                       原因:默認情況下bin 目錄的代碼訪問安全權限很低,對存儲的webpart具有特殊的安全約束,Web 部件在執行時不會自動授予完全信任代碼權限。我們可以手工來設置這些屬性。

                             1:在web.config文件中有一個配置節trust level,是控制信任級別的,我們可以更改此配置節來提升bin目錄的安全性:trust level=Full。

                             2:在生成的程序集文件 assembly添加一句 [assembly: AllowPartiallyTrustedCallers()]

                       小結:上面方法一般性地提升了信任級別,所以會授予您可能不需要的任何新權限,這樣就不如另一種創建新信任策略文件的方法安全。創建一個新的信任策略文件,將 web.config 文件指向該新文件。這種方法較為復雜,但是可以更為精確地設置 Web 部件的權限屬性。[引用MSDN],

                    3>:注冊控件。控件的注冊離不開web.config文件,找到SharePoint節點,在最下面添加如下信息: (Assembly,Version,Culture,PublicKeyToken的查看方式可以通過.Net Reflector。 )

          <SafeControl Assembly="WebParts.Samples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="WebParts.Samples" TypeName="*" Safe="True" />

              </SafeControls>

           

                    4>:導入到Webpart部件庫。網站操作-網站設置-修改所有網站設置-庫-web部件-新建-選中剛才創建的webpart-點擊“導入庫”-在頁面中添加webpart即可。

            總結:

                 本文總結了些webpart部署時對于新手的一些困惑,雖然沒有比較深入的地方,但是學會部署webpart是MOSS編程的基本功。希望大家指點。

            注:

                本文所講的環境均為MOSS 2007。

          posted @ 2009-05-16 06:52 蜘蛛 閱讀(757) | 評論 (0)編輯 收藏

          僅列出標題
          共9頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 
          主站蜘蛛池模板: 徐州市| 许昌县| 平阴县| 辛集市| 涡阳县| 定日县| 寿阳县| 峨眉山市| 深泽县| 淮安市| 灵璧县| 吉水县| 永修县| 舟山市| 荥阳市| 瓮安县| 册亨县| 垫江县| 盐亭县| 鸡东县| 于田县| 瓮安县| 鲁山县| 灌云县| 盐亭县| 汪清县| 华池县| 东乡县| 红河县| 郑州市| 江口县| 灯塔市| 洪雅县| 荃湾区| 林州市| 博兴县| 金堂县| 宣恩县| 新丰县| 天峻县| 泸西县|