Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2009/04/21 FSO example
  2. 2009/04/21 read/write configuration class (xml version)
  3. 2009/04/21 dbhelper class
  4. 2009/04/21 view source &asp coloring
  5. 2009/04/21 Class implementation for using webservices in ASP
  6. 2009/04/21 ASP JSON Utility
  7. 2009/04/21 fckeditor 이미지 업로드 시 한글명 깨지는 문제
  8. 2009/04/21 경고없이 창닫기
  9. 2009/04/21 HTML, js 소스정리기 - editplus plugin
  10. 2009/04/21 mssql의 my sql의 password() function과 비슷한 함수
  11. 2009/04/21 보안면에서나 성능면에서 exec보다 유리한 sp_executesql
  12. 2009/04/21 먼저 아래와 같이 c#을 작성하여 test.cs로 저장합니다.
  13. 2009/04/21 DeZend (PHP 디코딩)
  14. 2009/04/20 PHP 파일 업로드 용량 제한 3
  15. 2009/04/16 알아두면 좋은 DBCC 명령어
  16. 2009/04/16 jQuery, Prototype 그리고 Ajax
  17. 2009/04/16 Semantic Web
  18. 2009/04/16 Semantic Web
  19. 2009/04/16 드림위버에서 jQuery를 쉽게 쓰자
  20. 2009/04/16 자바스크립트 라이브러리 Jquery 플러그인
  21. 2009/04/15 Ajax Loading Image 로딩 이미지 Resource
  22. 2009/04/13 메인보드 정보를 알고 싶습니다. Serial.vbs
  23. 2009/04/13 웹페이지에서 MAC Address 구하는 컨트롤 v1,1,9,0 12
  24. 2009/04/12 유용한 온라인 툴(online tool)들
  25. 2009/04/12 리눅스용 프로그램들 ...[1원짜리]
  26. 2009/04/12 [리눅스] VI 에디터 사용방법 정리
  27. 2009/04/12 [DBMS] MSSQL 전체 백업, 이전(복구)
  28. 2009/04/12 [알고리즘] [1원짜리 팁] 외부 이미지 서버에 저장하기
  29. 2009/04/12 [서버운영] 웹 해킹 흔적을 찾는 간단한 find 명령어
  30. 2009/04/12 [HTML] 초간단 풍선도움말

FSO example

프로그래밍/Asp 2009/04/21 10:53

2001년도쯤에 작성한걸로 기억하는 코드인데 괴상한 목적으로 사용하지 않는게 좋고 관리를 목적으로 사용하려면 security validation정도는 해주시는 센스필요하구요. 잘 응용하고 파일전송을 안정적으로 할 수 있는 application을 개발하시면 웹하드 용도로도 괜찮을 것 같은데. 그냥 생각일 뿐입니다.

<%@ language=vbscript %>
<%
option explicit

On Error Resume Next

dim command

command = request.querystring("command")

select case command

 case "drives"
  call drivelist
 case "folders"
  call folderlist
 case "viewfile"
  call viewfile
 case "downfile"
  call downfile
 case "delfile"
  call delFile
 case "editfile"
  call editFile
 case "upload"
  call upload
 case "copyfile"
  call copyfile
 case "movefile"
  call movefile
 case "pastefile"
  call pastefile
 case "dumplist"
  call dumplist
 case else
  call drivelist
end select

if err.description <> "" then
 response.clear
 response.write "<script language=javascript> alert (""" & err.description & """); history.back();</script>"
 err.clear
end if

Function CalcByte(xspace)
 If xspace < 1024 Then
  CalcByte = xspace
 ElseIf xspace >= 1024 And xspace < 1048576 Then
  CalcByte = FormatNumber((xspace / 1024),2) & " K"
 ElseIf xspace >= 1048576  And xspace < 1073741824 Then
  CalcByte = FormatNumber((xspace / 1048576),2) & " M"
 ElseIf xspace >= 1073741824 then
  CalcByte = FormatNumber((xspace/1073741824),2) & "G"
 End If
End Function

Function FileAttributes(intAttribute)

select case intAttribute
 case 0
  FileAttributes = "Normal"
 case 1
  FileAttributes = "Read Only"
 case 2
  FileAttributes = "Hidden"
 case 4
  FileAttributes = "System"
 case 16
  FileAttributes = "Directory"
 case 32
  FileAttributes = "Archive"
 case 1024
  FileAttributes = "Alias"
 case 2048
  FileAttributes = "Compressed"
 case else
  FileAttributes = intAttribute
end select

End Function

Function xLeft(strTemp, intPoint)
 if Len(strTemp) <= intPoint then
  xLeft = strTemp
 else
  xLeft = mid(strTemp,1, intPoint) & "..."
 end if
End Function

Function  FileExists(strFilename)
Dim  FSO
Set  FSO  =  server.createobject("Scripting.FileSystemObject")
FileExists  =  FSO.FileExists(strFilename)
Set  FSO  =  Nothing
End  Function

Sub goBack(Msg)
response.clear
response.write "<html><body><form action=""" & request.servervariables("HTTP_REFERER") & """ method=post name=form1></form>"
response.write "<script language=javascript>"
if Msg <> "" then
 response.write " alert (""" & Msg & """);"
end if
response.write " document.form1.submit();</script>"
response.write "</body></html>"
if err.description = "" then
 response.end
end if
End Sub
Sub drivelist
dim fso
dim objDrive
dim drivetype(5)
dim strDriveTypeImg
dim strDriveLetter
dim strDriveName
dim intFreeSpace
dim intTotalSpace

drivetype(0) = "알 수 없음"
drivetype(1) = "<img src=""images/drivetype1.jpg"">"
drivetype(2) = "<img src=""images/drivetype2.jpg"">"
drivetype(3) = "<img src=""images/drivetype3.jpg"">"
drivetype(4) = "<img src=""images/drivetype4.jpg"">"
drivetype(5) = "RAM"

set fso = server.createobject("scripting.filesystemobject")
response.write "<table border=0 cellpadding=5 cellspacing=1 bgcolor=black align=center width=95% >"
response.write "<tr bgcolor=#eeeeee align=center><td>종류</td><td>드라이브 이름</td><td>공간(빈/총)</td></tr>"
for each objDrive in fso.drives

 strDriveTypeImg = drivetype(objDrive.drivetype)
 strDriveLetter = objDrive
 if objDrive.drivetype = 3 then

  if objDrive.isReady then
   strDriveName = objDrive.ShareName
   intFreeSpace = objDrive.FreeSpace
   intTotalSpace = objDrive.TotalSize
  else
   strDriveName = "연결안됨"
   intFreeSpace = 0
   intTotalSpace = 0
  end if

 else

  if objDrive.isReady then
   strDriveName = objDrive.VolumeName
   intFreeSpace = objDrive.FreeSpace
   intTotalSpace = objDrive.TotalSize
  else
   strDriveName = "비어있음"
   intFreeSpace = 0
   intTotalSpace = 0
  end if

 end if

 response.write "<tr bgcolor=white><td align=center>" & strDriveTypeImg & "</td><td align=center>"
 if objDrive.isReady then
  response.write "<a href=""?command=folders&folder=" & server.urlencode(strDriveLetter) & """>"
 end if
 response.write strDriveName & " (" & strDriveLetter & ")"
 if objDrive.isReady then
  response.write "</a>"
 end if
 response.write "</td><td>" & CalcByte(intFreeSpace) & " / " & CalcByte(intTotalSpace) & "</td></tr>"

next
response.write "</table>"
set fso = nothing


end sub

sub folderlist
dim fso
dim objFolder
dim objSubFolder
dim objFile
dim strName
dim intSize
dim strSort
dim strEditDate
dim strFolder
strFolder = request("folder")
response.write "<table border=0 cellpadding=5 cellspacing=0 align=center width=95% >"
response.write "<tr><td><img src=""images/move.jpg"" border=0 alt=""잘라내기"" style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=movefile';document.explorer.submit();""> <img src=""images/copy.jpg"" border=0 alt=""복사"" style=""cursor:hand;""  onclick=""javascript:document.explorer.action='?command=copyfile';document.explorer.submit();""> <img src=""images/paste.jpg"" border=0 alt=""붙여넣기"""
if request.cookies("webexplorer")("filelist") <> "" then
 response.write " style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=pastefile&folder=" & server.urlencode(strFolder) & "';document.explorer.submit();"""
end if
response.write "> <img src=""images/del.jpg"" border=0 alt=""삭제"" style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=delfile';document.explorer.submit();""> <img src=""images/viewfile.jpg"" border=0 alt=""대기작업보기"""
if request.cookies("webexplorer")("filelist") <> "" then
 response.write " style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=dumplist';document.explorer.submit();"""
end if
response.write "></td></tr>"
response.write"<tr><td align=center><form action=""?command=upload"" name=frmupload method=post enctype=multipart/form-data><input type=file name=ufile> <input type=hidden name=folder value=""" & strFolder & """><input type=button value=""파일올리기"" onclick=""uploadform()""></form></td></tr>"
response.write "</table>" & vbcrlf
response.write "<script language=""javascript"">" & vbcrlf
response.write "function uploadform()" & vbcrlf
response.write "{" & vbcrlf
response.write "if (document.frmupload.ufile.value == """") " & vbcrlf
response.write "  {" & vbcrlf
response.write " alert (""업로드할 파일을 선택해주십시요."");" & vbcrlf
response.write "  return false;" & vbcrlf
response.write "  }" & vbcrlf
response.write "document.frmupload.submit();" & vbcrlf
response.write "}" & vbcrlf
response.write "</script>" & vbcrlf
response.write "<form name=explorer method=post>"
response.write "<table border=0 cellpadding=5 cellspacing=1 bgcolor=black align=center width=95% >"
response.write "<tr bgcolor=#eeeeee align=center><td>&nbsp;</td><td>&nbsp;</td><td>이름</td><td>크기</td><td>종류</td><td>수정된 날짜</td></tr>"

set fso = server.createobject("scripting.filesystemobject")
set objFolder = fso.getfolder( strFolder & "\")

if objFolder.IsRootFolder then
 response.write "<tr bgcolor=white><td>&nbsp;</td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=drives"">..</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>"
else
 response.write "<tr bgcolor=white><td>&nbsp;</td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=folders&folder=" & server.urlencode(objFolder.ParentFolder) & """>..</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>"
end if


for each objSubFolder in objFolder.subfolders
 strName = objSubFolder.Name
 strSort = objSubFolder.Type
 strEditDate = objSubFolder.DateLastModified
 response.write "<tr bgcolor=white><td><input type=checkbox name=""" & objSubFolder & """></td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=folders&folder=" & server.urlencode(objSubFolder) & """>" & strName & "</a></td><td>&nbsp;</td><td>" & xLeft(strSort,5) & "</td><td>" & mid(strEditDate,1,10) & "</td></tr>"
next

set objSubFolder = nothing

for each objFile in objFolder.files
 strName = objFile.Name
 intSize = objFile.Size
 strSort = objFile.Type
 strEditDate = objFile.DateLastModified
 response.write "<tr bgcolor=white><td><input type=checkbox name=""" & objFile & """></td><td align=center><a href=""?command=downfile&file=" & server.urlencode(objFile) & """><img src=""images/unknownfiletype.jpg"" border=0></a></td><td><a href=""?command=viewfile&file=" & server.urlencode(objFile) & """>" & strName & "</a></td><td align=right>" & CalcByte(intSize) & "</td><td>" & xLeft(strSort,5) & "</td><td>" & mid(strEditDate,1,10) & "</td></tr>"
next

set objFile = nothing

set objFolder = nothing
set fso = nothing

response.write "</table>"
response.write "</form>"
end sub

Sub downFile()

Dim DownFileName
Dim xDownFileName
Dim fso
Dim file

DownFileName  =  Request("file")

If  Not  FileExists(DownFileName)  Then
        Err.Raise  3,  "한머리의  조언",  "해당  파일이  존재하지  않습니다."
        Exit  Sub
End  If

Response.Clear
Response.Buffer  =  true
Response.Expires  =  0
Response.ExpiresAbsolute  =  Now()  -  1
Response.AddHeader  "pragma",  "no-cache"
Response.AddHeader  "cache-control",  "private"
Response.CacheControl  =  "no-cache"

        xDownFileName  =  Mid(DownFileName,  InStrRev(DownFileName,  "\")  +  1,  Len(DownFileName)  -  InStrRev(DownFileName,  "\"))

Response.clear
Response.AddHeader  "Content-Disposition",  "  inline;  filename="  &  xDownFileName  &  ";"
Response.ContentType  =  "application/unknown"

set  fso  =  server.CreateObject("SiteGalaxyUpload.FileSystemObject")
set  file  =  fso.OpenBinaryFile(DownFileName,  1,  false)
Response.BinaryWrite  file.ReadAll
Response.End
set  file  =  nothing
set  fso  =  nothing

End Sub

Sub viewfile()
dim fso
set fso  = server.createobject("scripting.filesystemobject")
if fso.getfile(request("file")).size > 1048576 then
 Err.Raise  3,  "한머리의  조언",  "1M이상의 파일을 열 수 없습니다."
else
 response.write "<form action=""?command=editfile&file=" & server.urlencode(request("file")) & """ method=post>"
 response.write "<textarea name=editfile cols=65 rows=20>"
 response.write fso.opentextfile(request("file")).readall
 response.write "</textarea>"
 response.write "<input type=submit value=""수정하기""> <input type=reset>"
 response.write "</form>"
end if
set fso = nothing
End Sub

Sub editFile()
Dim fso

Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.opentextfile(request("file"),2).write request("editfile")
Set fso = Nothing
response.redirect "?command=folders&folder=" & server.urlencode(mid(request("file"),1,instrrev(request("file"),"\")-1))
End Sub

Sub delFile()
Dim key
Dim fso

Set fso = server.createobject("scripting.filesystemobject")
if request.form.count=0 then
 call goback("폴더나 파일을 선택해주십시요")
else
 for each key in request.form
  if fso.FolderExists(key) then
   fso.DeleteFolder(key)
  else
   fso.DeleteFile(key)
  end if
 next
 Set fso = Nothing

 call goback("요청하신 폴더및 파일이 삭제되었습니다.")
end if
End Sub

Sub upload()
dim uploadform
dim fso
dim fn

Set uploadform = Server.CreateObject("SiteGalaxyUpload.Form")

if uploadform.ContentDisposition <> "form-data" then
 err.raise 3,"한머리의 조언", "잘못된 파일 전송 포멧입니다. 관리자에게 연락해주세요"
 Exit Sub
end if

if uploadform.Item("ufile").Size > (1048576 * 5) then
 Err.Raise 3,"한머리의 조언", "5M이상의 파일을 업로드 할 수 없습니다."
 Exit Sub
end if

set fso = server.CreateObject("Scripting.FileSystemObject")
fn = uploadform.item("folder") & "\" & fso.GetFileName(uploadform("ufile").FilePath)
set fso = Nothing

uploadform("ufile").SaveAs(fn)

Set uploadform = Nothing

call goback("파일이 성공적으로 업로드되었습니다.")

End Sub

Sub copyFile()
dim Key
if request.form.count = 0 then
 call goback("폴더나 파일을 선택해주십시요.")
else
 Response.Cookies("webexplorer")("cmd")="copy"
 Response.Cookies("webexplorer")("filelist")=""
 For Each Key In request.form
  Response.Cookies("webexplorer")("filelist")=Request.Cookies("webexplorer")("filelist") & Key & "/"
 Next
 call goback("")
end if
End Sub

Sub moveFile()
dim Key
if request.form.count = 0 then
 call goback("폴더나 파일을 선택해주십시요.")
else
 Response.Cookies("webexplorer")("cmd")="move"
 Response.Cookies("webexplorer")("filelist")=""
 For Each Key In request.form
  Response.Cookies("webexplorer")("filelist")=Request.Cookies("webexplorer")("filelist") & Key & "/"
 Next
 call goback("")
end if
End Sub

Sub pasteFile()
dim fso
dim strFileList
dim i

if Request.Cookies("webexplorer")("cmd")="move" then
 strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
 Set fso = server.createobject("scripting.filesystemobject")
 For i = 0 to Ubound(strFileList)-1
  if fso.FolderExists(strFileList(i)) then
   fso.MoveFolder strFileList(i), request.querystring("folder") & "\"
  else
   fso.MoveFile strFileList(i), request.querystring("folder") & "\"
  end if
 Next
 set fso = Nothing
 response.cookies("webexplorer")("filelist")=""
 call goback("폴더 또는 파일 이동을 완료하였습니다.")
else
 strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
 Set fso = server.createobject("scripting.filesystemobject")
 For i = 0 to Ubound(strFileList)-1
  if fso.FolderExists(strFileList(i)) then
   fso.CopyFolder strFileList(i), request.querystring("folder") & "\"
  else
   fso.CopyFile strFileList(i), request.querystring("folder") & "\"
  end if
 Next
 set fso = Nothing
 call goback("폴더 또는 파일 복사를 완료하였습니다.")
end if
End Sub

Sub dumpList()
dim strFileList
dim i
Response.write "대기 작업 : " & Request.Cookies("webexplorer")("cmd") & "<br>"
strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
For i = 0 to Ubound(strFileList)
 response.write strFileList(i) & "<br>"
Next
End Sub
%>

2009/04/21 10:53 2009/04/21 10:53

<%
'Option Explicit

Class configs

Private mClassName
Private mConfigRootPath
Private mItems
Private mXmlRootNodeName
Private mConfigName

Private Sub Class_Initialize()
 mClassName = "configs class"
 mXmlRootNodeName = "configs"
 mConfigRootPath = server.mappath("./")
End Sub

Public Sub Load(configname)
 Dim xdom
 Dim i
 
 mConfigName = configname
 Set mItems = Server.CreateObject("scripting.dictionary")
 Set xdom = server.CreateObject("microsoft.xmldom")
 xdom.load mconfigrootpath & "\" & configname & ".xml"
 If xdom.parseerror.errorcode <> 0 Then
  Err.raise vbObjectError, mClassName, xdom.parseerror.reason
 Else
  if xdom.documentelement.nodename = mXmlRootNodeName Then
   For i=0 To xdom.documentelement.childnodes.length-1
    mItems.add xdom.documentelement.childnodes(i).nodename, xdom.documentelement.childnodes(i).text
   Next
  Else
   Err.raise vbObjectError, mClassName, "Invalid Configuration File"
  End If
 End If
 Set xdom = nothing
End Sub

Public Sub Save()
 Dim xdom
 Dim i

 Set xdom = server.CreateObject("microsoft.xmldom")
 xdom.load mconfigrootpath & "\" & mConfigName & ".xml"
 If xdom.parseerror.errorcode <> 0 Then
  Err.raise vbObjectError, mClassName, xdom.parseerror.reason
 Else
  if xdom.documentelement.nodename = mXmlRootNodeName Then
   For i= xdom.documentelement.childnodes.length-1 To 0 Step -1
    xdom.documentelement.removechild(xdom.documentelement.childnodes(i))
   Next
   Dim keys, items, newelement
   keys = mItems.keys()
   items = mItems.items()
   For i=0 To mItems.count-1
    Set newelement = xdom.createElement(keys(i))
    newelement.text = items(i)
    xdom.documentelement.appendchild newelement
    Set newelement = Nothing
   Next
   xdom.save mconfigrootpath & "\" & mConfigName & ".xml"
  Else
   Err.raise vbObjectError, mClassName, "Invalid Configuration File"
  End If
 End If
 Set xdom = nothing
 Set mItems = Nothing
End Sub

Public Sub Add(key, value)
 mItems.Add key, value
End Sub

Public Function Item(key)
 Item = mItems.Item(key)
End Function

End Class

'example.asp
'
'Dim a
'Set a = new configs
'a.load "example"
'response.write a.item("test1")
'a.add "test4", "33>3"
'a.save
'Set a = nothing

'example.xml
'
'<configs><test1>1111</test1><test2>2222</test2><test3>3333</test3></configs>
%>

2009/04/21 10:52 2009/04/21 10:52

dbhelper class

프로그래밍/Asp 2009/04/21 10:52

<!--METADATA TYPE= "typelib"  NAME= "ADODB Type Library"
      FILE="C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll"  -->
<%
 Class clsDBHelper
  Private DefaultConnString
  Private DefaultConnection
 
  private sub Class_Initialize()
   DefaultConnString = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=1;"
   Set DefaultConnection = Nothing
  End Sub

    '---------------------------------------------------
    ' SP를 실행하고, RecordSet을 반환한다.
    '---------------------------------------------------
    Public Function ExecSPReturnRS(spName, params, connectionString)
      If IsObject(connectionString) Then
        If connectionString is Nothing Then
          If DefaultConnection is Nothing Then
            Set DefaultConnection = CreateObject("ADODB.Connection")
            DefaultConnection.Open DefaultConnString       
          End If     
          Set connectionString = DefaultConnection
        End If
      End If
     
     Set rs = CreateObject("ADODB.RecordSet")
     Set cmd = CreateObject("ADODB.Command")

     cmd.ActiveConnection = connectionString
     cmd.CommandText = spName
     cmd.CommandType = adCmdStoredProc
     Set cmd = collectParams(cmd, params)
     'cmd.Parameters.Refresh

     rs.CursorLocation = adUseClient
     rs.Open cmd, ,adOpenStatic, adLockReadOnly
    
     For i = 0 To cmd.Parameters.Count - 1  
       If cmd.Parameters(i).Direction = adParamOutput OR cmd.Parameters(i).Direction = adParamInputOutput OR cmd.Parameters(i).Direction = adParamReturnValue Then
         If IsObject(params) Then    
           If params is Nothing Then
             Exit For        
           End If      
         Else
           params(i)(4) = cmd.Parameters(i).Value
         End If
       End If
     Next

     Set cmd.ActiveConnection = Nothing
     Set cmd = Nothing
     Set rs.ActiveConnection = Nothing

     Set ExecSPReturnRS = rs
    End Function

    '---------------------------------------------------
    ' SQL Query를 실행하고, RecordSet을 반환한다.
    '---------------------------------------------------
    Public Function ExecSQLReturnRS(strSQL, params, connectionString)
      If IsObject(connectionString) Then
        If connectionString is Nothing Then
          If DefaultConnection is Nothing Then
            Set DefaultConnection = CreateObject("ADODB.Connection")
            DefaultConnection.Open DefaultConnString       
          End If     
          Set connectionString = DefaultConnection
        End If
      End If
     
     Set rs = CreateObject("ADODB.RecordSet")
     Set cmd = CreateObject("ADODB.Command")

     cmd.ActiveConnection = connectionString
     cmd.CommandText = strSQL
     cmd.CommandType = adCmdText
     Set cmd = collectParams(cmd, params)
    
     rs.CursorLocation = adUseClient
     rs.Open cmd, , adOpenStatic, adLockReadOnly
    
     Set cmd.ActiveConnection = Nothing
     Set cmd = Nothing
     Set rs.ActiveConnection = Nothing
    
     Set ExecSQLReturnRS = rs
    End Function

    '---------------------------------------------------
    ' SP를 실행한다.(RecordSet 반환없음)
    '---------------------------------------------------
    Public Sub ExecSP(strSP,params,connectionString)
      If IsObject(connectionString) Then
        If connectionString is Nothing Then
          If DefaultConnection is Nothing Then
            Set DefaultConnection = CreateObject("ADODB.Connection")
            DefaultConnection.Open DefaultConnString       
          End If     
          Set connectionString = DefaultConnection
        End If
      End If
     
     Set cmd = CreateObject("ADODB.Command")

     cmd.ActiveConnection = connectionString
      cmd.CommandText = strSP
      cmd.CommandType = adCmdStoredProc
     Set cmd = collectParams(cmd, params)

     cmd.Execute , , adExecuteNoRecords
    
     For i = 0 To cmd.Parameters.Count - 1  
       If cmd.Parameters(i).Direction = adParamOutput OR cmd.Parameters(i).Direction = adParamInputOutput OR cmd.Parameters(i).Direction = adParamReturnValue Then
         If IsObject(params) Then    
           If params is Nothing Then
             Exit For        
           End If      
         Else
           params(i)(4) = cmd.Parameters(i).Value
         End If
       End If
     Next

     Set cmd.ActiveConnection = Nothing
     Set cmd = Nothing
    End Sub

    '---------------------------------------------------
    ' SP를 실행한다.(RecordSet 반환없음)
    '---------------------------------------------------
    Public Sub ExecSQL(strSQL,params,connectionString)     
      If IsObject(connectionString) Then
        If connectionString is Nothing Then
          If DefaultConnection is Nothing Then
            Set DefaultConnection = CreateObject("ADODB.Connection")
            DefaultConnection.Open DefaultConnString       
          End If     
          Set connectionString = DefaultConnection
        End If
      End If
     
     Set cmd = CreateObject("ADODB.Command")

     cmd.ActiveConnection = connectionString
     cmd.CommandText = strSQL
     cmd.CommandType = adCmdText
     Set cmd = collectParams(cmd, params)

     cmd.Execute , , adExecuteNoRecords

     Set cmd.ActiveConnection = Nothing
     Set cmd = Nothing
    End Sub

    '---------------------------------------------------
    ' 트랜잭션을 시작하고, Connetion 개체를 반환한다.
    '---------------------------------------------------
    Public Function BeginTrans(connectionString)
      If IsObject(connectionString) Then
        If connectionString is Nothing Then
          connectionString = DefaultConnString
        End If
      End If

      Set conn = Server.CreateObject("ADODB.Connection")
      conn.Open connectionString
      conn.BeginTrans
      Set BeginTrans = conn
    End Function

    '---------------------------------------------------
    ' 활성화된 트랜잭션을 커밋한다.
    '---------------------------------------------------
    Public Sub CommitTrans(connectionObj)
      If Not connectionObj Is Nothing Then
        connectionObj.CommitTrans
        connectionObj.Close
        Set ConnectionObj = Nothing
      End If
    End Sub

    '---------------------------------------------------
    ' 활성화된 트랜잭션을 롤백한다.
    '---------------------------------------------------
    Public Sub RollbackTrans(connectionObj)
      If Not connectionObj Is Nothing Then
        connectionObj.RollbackTrans
        connectionObj.Close
        Set ConnectionObj = Nothing
      End If
    End Sub

    '---------------------------------------------------
    ' 배열로 매개변수를 만든다.
    '---------------------------------------------------
    Public Function MakeParam(PName,PType,PDirection,PSize,PValue)
      MakeParam = Array(PName, PType, PDirection, PSize, PValue)
    End Function

    '---------------------------------------------------
    ' 매개변수 배열 내에서 지정된 이름의 매개변수 값을 반환한다.
    '--------------------------------------------------- 
    Public Function GetValue(params, paramName)
      For Each param in params
        If param(0) = paramName Then
          GetValue = param(4)
          Exit Function
        End If
      Next
    End Function

    Public Sub Dispose
  if (Not DefaultConnection is Nothing) Then
   if (DefaultConnection.State = adStateOpen) Then DefaultConnection.Close
   Set DefaultConnection = Nothing
  End if
    End Sub

    '---------------------------------------------------------------------------
    'Array로 넘겨오는 파라메터를 Parsing 하여 Parameter 객체를
    '생성하여 Command 객체에 추가한다.
    '---------------------------------------------------------------------------
    Private Function collectParams(cmd,argparams)
     If VarType(argparams) = 8192 or VarType(argparams) = 8204 or VarType(argparams) = 8209 then
      params = argparams
      For i = LBound(params) To UBound(params)
       l = LBound(params(i))
       u = UBound(params(i))
       ' Check for nulls.
       If u - l = 4 Then
       
        If VarType(params(i)(4)) = vbString Then
         If params(i)(4) = "" Then
          v = Null
         Else
          v = params(i)(4)
         End If
        Else
         v = params(i)(4)
        End If
        cmd.Parameters.Append cmd.CreateParameter(params(i)(0), params(i)(1), params(i)(2), params(i)(3), v)
       End If
      Next

      Set collectParams = cmd
      Exit Function
     Else
      Set collectParams = cmd
     End If
    End Function

 End Class
%>


2009/04/21 10:52 2009/04/21 10:52
interesting my example

<%

Sub viewCode(codefile)
response.write "<p style=""background-color=#eeeeee;"">"
set fso = server.createobject("scripting.filesystemobject")
set f = fso.opentextfile(server.mappath(codefile),1)
allViewCode = viewHTML(f.readall)
set f = nothing
response.write codingcolor(allviewcode,"brown")
response.write "</p>"
End Sub

'Coding부분을  찾아서  Coloring함수로...
function  CodingColor(strTemp,strFontColor)
          Dim  firstPos
          Dim  lastPos
          Dim  leftString
          Dim  midString
          Dim  rightString
          Dim  xmidString

          firstPos  =1
          lastPos  =  1
          do  until  lastPos  >=  len(strTemp)
                    firstPos  =  instr(lastPos,  strTemp,  "&lt;%")
                    if  firstPos  <=  0  then
                              exit  do
                    end  if
                    lastPos  =  instr(firstPos,  strTemp,  "%&gt;")
                    if  lastPos  <=  0  then
                              lastPos  =  len(strTemp)
                    end  if
                    lastPos  =  lastPos  +  len("%&gt;")  -  1
                    leftString  =  left(strTemp,firstPos-1)
                    midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                    rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                    xmidString  =  coloring(midString)
'                    strTemp  =  leftString  &  xmidString  &  rightString
'                    lastPos  =  firstPos  +  len(xmidString)-1
                    strTemp  =  leftString  &  "<span  style=color:"  &  strFontColor  &  ";>"  &  xmidString  &  "</span>"  &  rightString
                    lastPos  =  firstPos  +  len("<span  style=color:"  &  strFontColor  &  ";>"  &  xmidString  &  "</span>")-1
          loop

          CodingColor  =  strTemp
end  function

function  coloring(strViewCode)
          Dim  Reservedwords
          Dim  aryReservedword
          Dim  i
          Dim  strFunction
          Dim  aryFunction

          Reservedwords="And|Call|Case|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Erase|Error|Exit|Explicit|False|For|Function|If|Imp|In|Is|Loop|Mod|Next|Not|Nothing|Null|On|Option|Or|Private|Public|Randomize|ReDim|Resume|Select|Set|Step|Sub|Then|To|True|Until|Wend|While|Xor"
          aryReservedword=split(Reservedwords,"|")
          for  i  =  0  to  ubound(aryReservedword)
                    strViewCode  =  wordReplace(strViewCode,aryReservedword(i),"blue")
          next
         
          strFunction="Anchor|Array|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Dictionary|Document|Element|Err|Exp|FileSystemObject|Filter|Fix|Int|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetObject|Hex|History|Hour|InputBox|InStr|InstrRev|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Join|LBound|LCase|Left|Len|Link|LoadPicture|Location|Log|LTrim|RTrim|Trim|Mid|Minute|Month|MonthName|MsgBox|Navigator|Now|Oct|Replace|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|TextStream|TimeSerial|TimeValue|TypeName|UBound|UCase|VarType|Weekday|WeekDayName|Window|Year"
          aryFunction=split(strFunction,"|")
          for  i  =  0  to  ubound(aryFunction)
                    strViewCode  =  wordReplace(strViewCode,aryFunction(i),"red")
          next
          strviewcode  =  blockcomment(strviewcode,"""""magenta")
          strviewcode  =  linecomment(strviewcode,"'""green")
          coloring  =  linecomment(strviewcode,"Rem""green")
end  function

'HTML  보기에서  단어에  색상입히기
Function  wordReplace(strSearchWithin,strSearchFor,fontcolor)
          Dim  lngStartingPosition
          Dim  lngFoundPosition
          Dim  strReplaced
          Dim  ascBlank
        lngStartingPosition=1
        lngFoundPosition=InStr(lngStartingPosition,strSearchWithin,strSearchFor,1)
        do  while  lngFoundPosition  >  0
                    ascBlank=asc(Mid(strSearchWithin,lngFoundPosition-1,1))
                    if  (ascBlank>=48  and  ascBlank<=57)  or  (ascBlank>=65  and  ascBlank<=90)  or  (ascBlank>=97  and  ascBlank<=122)  then
                                        strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))
                    else
                              ascBlank=asc(Mid(strSearchWithin,lngFoundPosition+len(strSearchFor),1))
                              if  (ascBlank>=48  and  ascBlank<=57)  or  (ascBlank>=65  and  ascBlank<=90)  or  (ascBlank>=97  and  ascBlank<=122)  then
                                        strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))
                              else
                                        'found
                                        strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  "<font  color="  &  fontcolor  &  ">"  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))  &  "</font>"
                              end  if
                    end  if
                lngStartingPosition=lngFoundPosition+len(strSearchFor)
                lngFoundPosition=InStr(lngStartingPosition,strSearchWithin,strSearchFor,1)
        Loop 
        wordReplace=strReplaced  &  Mid(strSearchWithin,lngStartingPosition)  'catch the  last  one
End  Function

'HTML  보기
function  viewHTML(strHTML)
          viewHTML    =  replace(replace(replace(replace(replace(replace(strHTML,"&","&amp;"),"<","&lt;"),">","&gt;"),"  ","&nbsp;  "),"          ","&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  "),vbcrlf,"<br>"  &  vbcrlf)
end  function

'줄단위  주석문  처리
function  linecomment(strTemp,  strCommentChar,  strFontColor)
          Dim  firstPos
          Dim  lastPos
          Dim  leftString
          Dim  midString
          Dim  rightString
          Dim  xmidString

          firstPos  =1
          lastPos  =  1
          do  until  lastPos  >=  len(strTemp)
                    firstPos  =  instr(lastPos,  strTemp,  strCommentChar)
                    if  firstPos  <=  0  then
                              exit  do
                    end  if
                    lastPos  =  instr(firstPos,  strTemp,  "<br>"  &  vbcrlf)  +  5
                    if  lastPos  <=  0  then
                              lastPos  =  len(strTemp)
                    end  if
                    'Single  Quotation  &  "Rem"  String  Exception  ("'",  "Rem")
                    If  not(mid(strTemp,  firstPos-1,  1)=""""  And  mid(strTemp,firstPos  +  Len(strCommentChar),1)="""")    Then
                              leftString  =  left(strTemp,firstPos-1)
                              midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                              rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                              xmidString  =  extractColor(midString)
                              strTemp  =  leftString  &  "<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>"  &  rightString
                              lastPos  =  instr(firstPos,  strTemp,  "<br>"  &  vbcrlf)  +  6
                    Else
                              lastPos  =  lastPos  +  1
                    End  If
          loop

          linecomment  =  strTemp
end  function

'블럭단위  주석문  처리
function  blockcomment(strTemp,  strCommentChar,  strFontColor)
          Dim  firstPos
          Dim  lastPos
          Dim  leftString
          Dim  midString
          Dim  rightString
          Dim  xmidString

          firstPos  =1
          lastPos  =  1
          do  until  lastPos  >=  len(strTemp)
                    firstPos  =  instr(lastPos,  strTemp,  strCommentChar)
                    if  firstPos  <=  0  then
                              exit  do
                    end  if
                    lastPos  =  instr(firstPos+len(strCommentChar),  strTemp,  strCommentChar)
                    if  lastPos  <=  0  then
                              lastPos  =  len(strTemp)
                    end  if
                    lastPos  =  lastPos  +  len(strCommentChar)-1
                    leftString  =  left(strTemp,firstPos-1)
                    midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                    rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                    xmidString  =  extractColor(midString)
                    strTemp  =  leftString  &  "<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>"  &  rightString
                    lastPos  =  firstPos  +  len("<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>")
          loop

          blockcomment  =  strTemp
end  function

function  extractColor(strColor)
          dim  exfirstPos
          dim  exlastPos
          Dim  xleftString
          Dim  xmidString
          Dim  xrightString

          extractColor  =  strColor
'          exit  function

          exfirstPos  =1
          exlastPos  =  1
          do  until  exlastPos  >=  len(strColor)
                    exfirstPos  =  instr(exlastPos,  strColor,  "<font  color=")
                    if  exfirstPos  <=  0  then
                              exit  do
                    end  if
                    exlastPos  =  instr(exfirstPos  +  11,  strColor,  ">")
                    if  exlastPos  <=  0  then
                              exit  do
                    end  if
                    xleftString  =  left(strColor,exfirstPos-1)
                    xmidString  =  mid(strColor,exfirstPos,exlastPos-exfirstPos+1)
                    xrightString  =  mid(strColor,exlastPos+1,len(strColor)-exlastPos)
                    strColor  =  xleftString  &  xrightString
                    exlastPos  =  exfirstPos-1
                    exfirstPos  =  exlastPos
          loop
          extractColor  =  replace(strColor,"</font>","")
end  function
%>

2009/04/21 10:51 2009/04/21 10:51

http://www.codeproject.com/KB/asp/aspcallwebservice.aspx


Introduction
Recently, I tried to use for the first time a webservice from an ASP page and I really had problems, after hours I could access to my webservice from ASP with Microsoft.XMLHTTP, but the code was not very easy (if it is your first time), so I decided to package the implementation in a simple vbscript class with a few properties that allow to access to a webservice.

The page that use the vbscript class is:
<!--#include virtual="/webservice.asp"-->
<html>
<head>
<title>testws</title>
</head>
<body>
<%
    dim ws
 
    set ws = new webservice
    ws.url = "http://localhost/yourwebservice.asmx"
    ws.method = "MethodName"
    ws.parameters.Add "ParamName1",1
    ws.parameters.Add "ParamName2",300
    ws.parameters.Add "ParamNameN",500
 
    ws.execute
    response.Write ws.response
 
    set ws = nothing
%>
</body>
</html>Like you can see, it is very simple to use; define the properties, call the execute method and the property response will return the information from webservice.

The class that implement the call to webservice is:
<%
option explicit
class WebService
  public Url
  public Method
  public Response
  public Parameters
 
  public function execute()
    dim xmlhttp
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    xmlhttp.open "POST", Url & "/" & Method, false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.send Parameters.toString
    response = xmlhttp.responseText
    set xmlhttp = nothing
  end function
  Private Sub Class_Initialize()
    Set Parameters = new wsParameters
  End Sub
  Private Sub Class_Terminate()
    Set Parameters = Nothing
  End Sub
End class
class wsParameters
  public mCol
  public function toString()
    dim nItem
    dim buffer
    buffer = ""
    for nItem = 1 to Count
      buffer = buffer & Item(nItem).toString & "&"
    next
    if right(buffer,1)="&" then
      buffer = left(buffer,len(buffer)-1)
    end if
    toString = buffer
  end function
  public sub Clear
    set mcol = nothing
    Set mCol = CreateObject("Scripting.Dictionary")
  end sub
  public sub Add(pKey,pValue)
    dim newParameter
 
    set newParameter = new wsParameter
    newParameter.Key = pKey
    newParameter.Value = pValue
    mCol.Add mCol.count+1, newParameter
 
    set newParameter = nothing
  end sub
  public function Item(nKey)
    set Item=mCol.Item(nKey)
  end function
  public function ExistsXKey(pKey)
    dim nItem
 
    for nItem = 1 to mcol.count
      if mCol.Item(nItem).key = pKey then
        ExistsXKeyword = true
        exit for
      end if
    next
  end function
  public sub Remove(nKey)
    mCol.Remove(nKey)
  end sub
  public function Count()
    Count=mCol.count
  end function
  Private Sub Class_Initialize()
    Set mCol = CreateObject("Scripting.Dictionary")
  End Sub
  Private Sub Class_Terminate()
    Set mCol = Nothing
  End Sub
end class
class wsParameter
   public Key
   public Value
   public function toString()
     toString = Key & "=" & Value
   end function
end class
%>
I hope that this small code of my implementation can help you, thanks, and if any question please send me an email.


License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author
asanoguera


 Estudie computacion desde los 12 años, a los 18 ya estaba trabajando en una empresa que desarrollaba soluciones para clinicas y laboratorios bioquimicos en QuickBasic y BTrieve, a los 21 comence a trabajar en una consultora que desarrollaba soluciones a medida para empresas en QBX, VB5 y MSAccess, tambien me desempeñé como programador senior durante 5 años en un ente gubernamental realizando analisis y desarrollando sistemas de gestion y estadisticas para la toma de decisiones en VB6, ASP y MS-SQL 2000, independientemente desarrolle varios proyectos y trabaje tambien para empresas en el extranjero en ASP/ASP.NET y MS-SQL 2000, actualmente desarrollo aplicaciones web en ASP.NET 2.0, Atlas, con WebServices y MS-SQL 2000
Occupation:  Web Developer
Location:   Argentina

2009/04/21 10:51 2009/04/21 10:51

<%
'**************************************************************************************************************
'* GAB_LIBRARY Copyright (C) 2003 - This file is part of GAB_LIBRARY
'* For license refer to the license.txt
'**************************************************************************************************************

'**************************************************************************************************************

'' @CLASSTITLE: JSON
'' @CREATOR: Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec
'' @CONTRIBUTORS: - Cliff Pruitt (opensource at crayoncowboy.com)
'' - Sylvain Lafontaine
'' @CREATEDON: 2007-04-26 12:46
'' @CDESCRIPTION: Comes up with functionality for JSON (http://json.org) to use within ASP.
'' Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures
'' @REQUIRES: -
'' @OPTIONEXPLICIT: yes
'' @VERSION: 1.4.1

'**************************************************************************************************************
class JSON

'private members
private output, innerCall

'public members
public toResponse ''[bool] should generated results be directly written to the response? default = false

'**********************************************************************************************************
'* constructor
'**********************************************************************************************************
public sub class_initialize()
newGeneration()
toResponse = false
end sub

'******************************************************************************************
'' @SDESCRIPTION: STATIC! takes a given string and makes it JSON valid
'' @DESCRIPTION: all characters which needs to be escaped are beeing replaced by their
'' unicode representation according to the
'' RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627
'' @PARAM: val [string]: value which should be escaped
'' @RETURN: [string] JSON valid string
'******************************************************************************************
public function escape(val)
dim cDoubleQuote, cRevSolidus, cSolidus
cDoubleQuote = &h22
cRevSolidus = &h5C
cSolidus = &h2F

dim i, currentDigit
for i = 1 to (len(val))
currentDigit = mid(val, i, 1)
if asc(currentDigit) > &h00 and asc(currentDigit) < &h1F then
currentDigit = escapequence(currentDigit)
elseif asc(currentDigit) >= &hC280 and asc(currentDigit) <= &hC2BF then
currentDigit = "\u00" + right(padLeft(hex(asc(currentDigit) - &hC200), 2, 0), 2)
elseif asc(currentDigit) >= &hC380 and asc(currentDigit) <= &hC3BF then
currentDigit = "\u00" + right(padLeft(hex(asc(currentDigit) - &hC2C0), 2, 0), 2)
else
select case asc(currentDigit)
case cDoubleQuote: currentDigit = escapequence(currentDigit)
case cRevSolidus: currentDigit = escapequence(currentDigit)
case cSolidus: currentDigit = escapequence(currentDigit)
end select
end if
escape = escape & currentDigit
next
end function

'******************************************************************************************************************
'' @SDESCRIPTION: generates a representation of a name value pair in JSON grammer
'' @DESCRIPTION: the generation is done fully recursive so the value can be a complex datatype as well. e.g.
'' toJSON("n", array(array(), 2, true), false) or toJSON("n", array(RS, dict, false), false), etc.
'' @PARAM: name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value
'' @PARAM: val [variant], [int], [float], [array], [object], [dictionary], [recordset]: value which needs
'' to be generated. Conversation of the data types (ASP datatype -> Javascript datatype):
'' NOTHING, NULL -> null, ARRAY -> array, BOOL -> bool, OBJECT -> name of the type,
'' MULTIDIMENSIONAL ARRAY -> generates a 1 dimensional array (flat) with all values of the multidim array
'' DICTIONARY -> valuepairs. each key is accessible as property afterwards
'' RECORDSET -> array where each row of the recordset represents a field in the array.
'' fields have properties named after the column names of the recordset (LOWERCASED!)
'' e.g. generate(RS) can be used afterwards r[0].ID
'' INT, FLOAT -> number
'' OBJECT with reflect() method -> returned as object which can be used within JavaScript
'' @PARAM: nested [bool]: is the value pair already nested within another? if yes then the {} are left out.
'' @RETURN: [string] returns a JSON representation of the given name value pair
'' (if toResponse is on then the return is written directly to the response and nothing is returned)
'******************************************************************************************************************
public function toJSON(name, val, nested)
if not nested and not isEmpty(name) then write("{")
if not isEmpty(name) then write("""" & escape(name) & """: ")
generateValue(val)
if not nested and not isEmpty(name) then write("}")
toJSON = output

if innerCall = 0 then newGeneration()
end function

'******************************************************************************************************************
'* generate
'******************************************************************************************************************
private function generateValue(val)
if isNull(val) then
write("null")
elseif isArray(val) then
generateArray(val)
elseif isObject(val) then
if val is nothing then
write("null")
elseif typename(val) = "Dictionary" then
generateDictionary(val)
elseif typename(val) = "Recordset" then
generateRecordset(val)
else
generateObject(val)
end if
else
'bool
dim varTyp
varTyp = varType(val)
if varTyp = 11 then
if val then write("true") else write("false")
'int, long, byte
elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then
write(cLng(val))
'single, double, currency
elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then
write(replace(cDbl(val), ",", "."))
else
write("""" & escape(val & "") & """")
end if
end if
generateValue = output
end function

'******************************************************************************************************************
'* generateArray
'******************************************************************************************************************
private sub generateArray(val)
dim item, i
write("[")
i = 0
'the for each allows us to support also multi dimensional arrays
for each item in val
if i > 0 then write(",")
generateValue(item)
i = i + 1
next
write("]")
end sub

'******************************************************************************************************************
'* generateDictionary
'******************************************************************************************************************
private sub generateDictionary(val)
dim keys, i
innerCall = innerCall + 1
write("{")
keys = val.keys
for i = 0 to uBound(keys)
if i > 0 then write(",")
toJSON keys(i), val(keys(i)), true
next
write("}")
innerCall = innerCall - 1
end sub

'******************************************************************************************************************
'* generateRecordset
'******************************************************************************************************************
private sub generateRecordset(val)
dim i
write("[")
while not val.eof
innerCall = innerCall + 1
write("{")
for i = 0 to val.fields.count - 1
if i > 0 then write(",")
toJSON lCase(val.fields(i).name), val.fields(i).value, true
next
write("}")
val.movenext()
if not val.eof then write(",")
innerCall = innerCall - 1
wend
write("]")
end sub

'******************************************************************************************************************
'* generateObject
'******************************************************************************************************************
private sub generateObject(val)
dim props
on error resume next
set props = val.reflect()
if err = 0 then
on error goto 0
innerCall = innerCall + 1
toJSON empty, props, true
innerCall = innerCall - 1
else
on error goto 0
write("""" & escape(typename(val)) & """")
end if
end sub

'******************************************************************************************************************
'* newGeneration
'******************************************************************************************************************
private sub newGeneration()
output = empty
innerCall = 0
end sub

'******************************************************************************************
'* JsonEscapeSquence
'******************************************************************************************
private function escapequence(digit)
escapequence = "\u00" + right(padLeft(hex(asc(digit)), 2, 0), 2)
end function

'******************************************************************************************
'* padLeft
'******************************************************************************************
private function padLeft(value, totalLength, paddingChar)
padLeft = right(clone(paddingChar, totalLength) & value, totalLength)
end function

'******************************************************************************************
'* clone
'******************************************************************************************
public function clone(byVal str, n)
dim i
for i = 1 to n : clone = clone & str : next
end function

'******************************************************************************************
'* write
'******************************************************************************************
private sub write(val)
if toResponse then
response.write(val)
else
output = output & val
end if
end sub

end class
%>

2009/04/21 10:50 2009/04/21 10:50

editor/dialog 폴더에 있는 fck_image.html을 열어 27 라인쯤에 있는

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

라는 부분을 아래와 같이 수정한다.

<meta http-equiv="Content-Language" content="ko">
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">


그럼 해결됩니다.

2009/04/21 10:48 2009/04/21 10:48

<script language="javascript">

  self.opener=self;

  self.close();
</script>


방법 2 : 프래임 속에있을때 닫는 법

<script language="javascript">

  top.opener=self;

  top.close();

</script>

2009/04/21 10:47 2009/04/21 10:47
htmlarg은?
에디트플러스2에 붙여쓸수 있는 태그 정리기 입니다.
복잡한 태그들과 php, js코드들을 정렬시켜줍니다.

실행파일 다운로드 : htmlarg.exe v2.0.2
소스코드 다운로드 : htmlarg.cpp


$2



$2
  1. htmlarg.exe를 다운로드를 받아 Editplus 폴더에 넣는다.
  2. 에디트 플러스를 실행,, 메뉴->도구->사용자 도구 구성
  3. 추가버튼을 눌러 위와 같이 프로그램을 추가한다.
  4. 텍스트 필터 사용에 꼭 체크한다
  5. 저장하고 사용



$2
[들여쓰기][코드들여쓰기] [태그리스트1] [태그리스트2] [태그리스트3] ($CurSel)
--------
ex) 2t D D D $(CurSel)
  • 들여쓰기
    0~9까지의 숫자, 탭문자를 이용하고 싶으면 t를 사용
  • 코드들여쓰기
    0~9까지의 숫자, 탭문자를 이용하고 싶으면 t를 사용
    코드 정렬을 안하려면 n을 사용한다
  • 태그리스트1
    들여쓰기할 태그 리스트, D를 이용하면 기본 태그를 사용한다.
    기본 목록은 tr,td,div,ol,ul,li 이다.
    추가하고 싶다면, D뒤에 컴마(,)를 이용 추가하면 가능하다.
    D를 없애고 직접 적어주는것도 가능하다.
  • 태그리스트2
    들여쓰기는 안하지만 한줄에 하나만 있어야할 태그 리스트.
    D를 이용하면 기본 태그를 사용한다.
    기본 목록은 html,head,body,title,meta,table,link,map,select 이다.
  • 태그리스트3
    정리를 안할 태그 리스트, D를 이용하면 기본 태그를 사용한다.
    기본 목록은 pre,style 이다.
    script와 ? 를 넣어두면 php와 jacsript가 html의 정렬과 상관없이 정렬된다.


$2
  • php javascript의 정렬
  • 주석제거, PHP코드 제거 기능 제거


$2
  • 2.0.1 : 정렬무시 기능 오작동 수정
  • 2.0.2 : 태그이름이 겹치는경우(ex link,li) 옵션이 무시되는 버그수정

출처 : http://www.killrain.net/channel/lab/dev.php?mode=view&no=310

2009/04/21 10:46 2009/04/21 10:46
USE TEMPDB
GO
declare @hash varbinary (255)
CREATE TABLE tempdb..h (id_num int, hash varbinary (255))
SET @hash = pwdencrypt('123') -- encryption
INSERT INTO tempdb..h (id_num,hash) VALUES (1,@hash)
SET @hash = pwdencrypt('123')
INSERT INTO tempdb..h (id_num,hash) VALUES (2,@hash)
SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 2
SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
SELECT * FROM tempdb..h
INSERT INTO tempdb..h (id_num,hash) 
VALUES (3,CONVERT(varbinary (255),
0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8))
SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 3
SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
SELECT * FROM tempdb..h
DROP TABLE tempdb..h
GO

Results

(1 row(s) affected)
(1 row(s) affected)
Success of check ------------------- 1 (1 row(s) affected)
id_num hash ----------- ------------------------------------------------------ 1 0x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195 2 0x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6 (2 row(s) affected)
(1 row(s) affected)
Success of check
-------------------
1
(1 row(s) affected)
id_num hash ----------- ------------------------------------------------------ 1 0x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195 2 0x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6 3 0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8 (3 row(s) affected)
2009/04/21 10:43 2009/04/21 10:43
프로그래밍을 하다보면 불가피하게 dynamic query를 사용해야하는 경우가 발생한다.

stored procedure를 사용하면서 exec statement를 사용하게 되는데 이렇게 되면 조금만 부주의해도 injection에 의한 공격이 허용되는 경우도 있고 같은 유형의 쿼리가 들어가도 미리 만들어진 실행계획을 이용하지 못하는 문제가 있어서 성능면에서 그 효과가 많이 줄어든다.

그에 반해 sp_executesql을 이용하게 되면 parameters를 이용할 수 있으므로 injection에 의한 공격에도 자유로울 수 있고 아래의 옮겨 놓은 ms sql의 도움말에 적혀 있듯이 비슷한 유형의 경우 기 실행계획을 이용하게 되는 경우가 있으니 상대적으로 성능면에서 유리한 면이 있고 이를 보고 일석이조라고 해야 하지 않을까 한다.

== 아래 == :: ms sql 도움말 옮김

sp_executesql

여러 번 사용할 수 있거나, 동적으로 만들어진 Transact-SQL문 또는 일괄 처리를 실행합니다. Transact-SQL문 또는 일괄 처리는 포함 매개 변수를 포함할 수 있습니다.

구문

sp_executesql [@stmt =] stmt[
   
{, [@params =] N'@parameter_name  data_type [,...n]' }
     {, [@param1 =] 'value1' [,...n] }
]

인수

[@stmt =] stmt

Transact-SQL문 또는 일괄 처리를 포함한 유니코드 문자열입니다. stmt는 암시적으로 ntext로 변환될 수 있는 변수 또는 유니코드 상수여야 합니다. + 연산자로 두 개의 문자열을 연결한 식 등과 같은 보다 복잡한 유니코드식은 사용할 수 없습니다. 문자 상수도 사용할 수 없습니다. 상수가 지정된 경우에는 N이라는 접두사가 있어야 합니다. 예를 들어, N'sp_who'라는 유니코드 상수는 사용할 수 있지만 'sp_who'는 사용할 수 없습니다. 문자열의 크기는 사용 가능한 데이터베이스 서버의 메모리의 용량에 따라서만 제한됩니다.

stmt는 변수 이름과 동일한 형식의 매개 변수를 포함할 수 있습니다. 예를 들면 다음과 같습니다.

N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'

stmt에 포함된 각 매개 변수에는 @params 매개 변수 정의 목록과 매개 변수 값 목록 모두에 해당되는 항목이 있어야 합니다.

[@params =] N'@parameter_name  data_type [,...n]'

stmt에 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 암시적으로 ntext로 변환될 수 있는 변수 또는 유니코드 상수여야 합니다. 각 매개 변수의 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. stmt에서 지정된 모든 매개 변수는 반드시 @params에서 정의되어야 합니다. stmt의 Transact-SQL문 또는 일괄 처리에 매개 변수가 없는 경우에는 @params가 필요하지 않습니다. 이 매개 변수의 기본값은 NULL입니다.

[@param1 =] 'value1'

매개 변수 문자열에서 정의된 첫번째 매개 변수의 값입니다. 값은 상수 또는 변수가 될 수 있습니다. stmt에 포함된 모든 매개 변수에 대해 제공되는 매개 변수 값이 있어야 합니다. stmt의 Transact-SQL문 또는 일괄 처리에 매개 변수가 없는 경우에는 값이 필요하지 않습니다.

n

추가 매개 변수의 값에 대한 자리 표시자입니다. 값은 상수 또는 변수만 가능합니다. 값은 함수 또는 연산자를 사용하여 작성된 표현식 등과 같이, 보다 복잡한 표현식이 될 수 없습니다.

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

SQL 문자열에 작성된 모든 SQL문에서 결과 집합을 반환합니다.

비고

sp_executesql은 일괄 처리, 이름의 범위 및 데이터베이스 컨텍스트면에서 EXECUTE와 동작이 동일합니다. sp_executesql stmt 매개 변수의 Transact-SQL문 또는 일괄 처리는 sp_executesql이 실행될 때까지 컴파일되지 않습니다. stmt의 내용은 sp_executesql이라는 일괄 처리의 실행 계획과 별도로 컴파일되고 실행됩니다. sp_executesql 일괄 처리는 sp_executesql을 호출하는 일괄 처리에서 선언된 변수를 참조할 수 없습니다. sp_executesql 일괄 처리의 로컬 커서 또는 변수는 sp_executesql을 호출하는 일괄 처리에는 보이지 않습니다. 데이터베이스 컨텍스트 내의 변경 사항은 sp_executesql문이 종료될 때까지만 지속됩니다.

문에 대한 매개 변수의 변경 사항이 변형뿐인 경우, Transact-SQL문을 여러 번 실행하기 위해 저장 프로시저 대신 sp_executesql을 사용할 수 있습니다. Transact-SQL문 자체에 상수가 남아 있으며 매개 변수 값만이 변경되었으므로 Microsoft® SQL Server™ 쿼리 최적화 프로그램이 첫번째 실행에 대해 생성된 실행 계획을 다시 사용할 확률이 높습니다.

참고   문의 문자열에 있는 개체 이름이 정식으로 규정되지 않은 경우에는 실행 계획이 다시 사용되지 않습니다.

sp_executesql은 Transact-SQL 문자열과 별도로 매개 변수 값의 설정을 지원합니다.

DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

/* Build the SQL string once.*/
SET @SQLString =
     N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint'
/* Execute the string with the first parameter value. */
SET @IntVariable = 35
EXECUTE sp_executesql @SQLString, @ParmDefinition,
                      @level = @IntVariable
/* Execute the same string with the second parameter value. */
SET @IntVariable = 32
EXECUTE sp_executesql @SQLString, @ParmDefinition,
                      @level = @IntVariable

sp_executesql에서 매개 변수를 대치할 수 있는 경우에는 EXECUTE문을 사용하여 문자열을 실행하는 데 있어서 다음과 같은 장점이 있습니다.

  • sp_executesql 문자열에 있는 Transact-SQL문의 실제 텍스트가 실행 사이에 변경되지 않으므로 쿼리 최적화 프로그램이 두 번째 실행의 Transact-SQL문과 첫번째 실행에 대해 생성된 실행 계획을 일치시킬 가능성이 있습니다. 따라서 SQL Server가 두 번째 문을 컴파일할 필요가 없습니다.

  • Transact-SQL 문자열이 단 한 번만 작성됩니다.

  • 정수 매개 변수는 자신의 기본 형식으로 지정됩니다. 유니코드를 캐스팅할 필요가 없습니다.
사용 권한

public 역할에 대한 기본 권한을 실행합니다.

예제
A. 단순 SELECT문 실행

다음은 @level이라는 포함 매개 변수를 포함한 단순 SELECT 문을 작성하고 실행하는 예제입니다.

execute sp_executesql 
          N'select * from pubs.dbo.employee where job_lvl = @level',
          N'@level tinyint',
          @level = 35
B. 동적으로 작성된 문자열 실행

다음은 sp_executesql을 사용하여 동적으로 작성된 문자열을 실행하는 예제입니다. 예로 든 저장 프로시저는 일 년 간의 판매 데이터를 파티션으로 분리하는데 사용되는 일련의 테이블에 데이터를 삽입하는 데 사용됩니다. 일 년의 각 달에는 다음과 같은 형식의 테이블이 한 개씩 있습니다.

CREATE TABLE May1998Sales
    (OrderID      INT      PRIMARY KEY,
    CustomerID      INT      NOT NULL,
    OrderDate      DATETIME   NULL
        CHECK (DATEPART(yy, OrderDate) = 1998),
    OrderMonth      INT
        CHECK (OrderMonth = 5),
    DeliveryDate   DATETIME   NULL,
        CHECK (DATEPART(mm, OrderDate) = OrderMonth)
    )

파티션으로 분리된 테이블에서 데이터를 검색하는 것에 관한 자세한 내용은 파티션으로 분리된 데이터로 보기 사용을 참조하십시오.

각 테이블의 이름은 달 이름의 첫 세 글자, 연도를 표시하는 네 자리 수 및 상수인 Sales로 구성됩니다. 이름은 주문 날짜에서 동적으로 작성될 수 있습니다.

/* Get the first three characters of the month name. */
SUBSTRING( DATENAME(mm, @PrmOrderDate), 1, 3) +
/* Concatenate the four-digit year; cast as character. */
CAST(DATEPART(yy, @PrmOrderDate) AS CHAR(4) ) +
/* Concatenate the constant 'Sales'. */
'Sales'

이러한 견본 저장 프로시저는 동적으로 INSERT 문을 작성하고 실행하여 새 주문을 올바른 테이블에 삽입합니다. 또한 반드시 데이터를 포함해야 하는 테이블의 이름을 작성하는 데 주문 날짜를 사용하며, 작성된 이름은 INSERT 문에 병합됩니다. 이는 sp_executesql의 단순한 예입니다. 여기에는 오류 확인 및 테이블 간에 주문 번호가 중복되지 않았는지를 확인하는 등의 업무 규칙 확인이 포함되지 않습니다.

CREATE PROCEDURE InsertSales @PrmOrderID INT, @PrmCustomerID INT,
                 @PrmOrderDate DATETIME, @PrmDeliveryDate DATETIME
AS
DECLARE @InsertString NVARCHAR(500)
DECLARE @OrderMonth INT

-- Build the INSERT statement.
SET @InsertString = 'INSERT INTO ' +
       /* Build the name of the table. */
       SUBSTRING( DATENAME(mm, @PrmOrderDate), 1, 3) +
       CAST(DATEPART(yy, @PrmOrderDate) AS CHAR(4) ) +
       'Sales' +
       /* Build a VALUES clause. */
       ' VALUES (@InsOrderID, @InsCustID, @InsOrdDate,' +
       ' @InsOrdMonth, @InsDelDate)'

/* Set the value to use for the order month because
   functions are not allowed in the sp_executesql parameter
   list. */
SET @OrderMonth = DATEPART(mm, @PrmOrderDate)

EXEC sp_executesql @InsertString,
     N'@InsOrderID INT, @InsCustID INT, @InsOrdDate DATETIME,
       @InsOrdMonth INT, @InsDelDate DATETIME',
     @PrmOrderID, @PrmCustomerID, @PrmOrderDate,
     @OrderMonth, @PrmDeliveryDate

GO

이 프로시저에서는 EXECUTE를 실행하는 것보다 sp_executesql을 실행하여 문자열을 실행하는 것이 더 효과적입니다. sp_executesql을 실행하는 경우, 각 개월별 테이블에 대해 한 개씩, 12 버전의 INSERT 문자열만이 생성됩니다. EXECUTE의 경우, 매개 변수 값이 다르므로 각 INSERT 문자열이 고유합니다. 두 가지 방법 모두 같은 수의 일괄 처리를 생성하지만 sp_executesql에 의해 생성된 INSERT 문자열의 유사성으로 인해 쿼리 최적화 프로그램이 실행 계획을 다시 사용할 확률이 높습니다.

2009/04/21 10:43 2009/04/21 10:43
먼저 아래와 같이 c#을 작성하여 test.cs로 저장합니다.

public class testvbscriptcallabledll
{
	public string testmethod()
	{
		return "this is a string returned from .net compiled library";
	}
}


콘솔에서 해당 경로로 이동 아래와 같이 컴파일 합니다.
csc /nologo /t:library test.cs
그리고 어셈블리에 등록 합니다.
regasm /nologo /codebase test.dll

그리고 아래와 같이 test.vbs를 작성합니다.


Dim f

Set f = CreateObject("testvbscriptcallabledll")
msgbox f.testmethod
Set f = Nothing




test.vbs를 실행합니다. :)
2009/04/21 10:40 2009/04/21 10:40
출처: http://blog.w2.ro/zend로 인코딩(?)되어 있는 프로그램을 소스로 바꿔주는 프로그램입니다.

저는 해봤는데 잘 됩니다.

남의 창작물을 도둑질하는 용도로만 사용 안되길 바랄 뿐입니다.

좋은 용도로 사용되길....
2009/04/21 10:38 2009/04/21 10:38

많은 분들이 PHP로파일업로드를 처리하면서 일정용량이나 대용량 파일의 업로드에 문제가 있는것 같습니다.
저도 같은 문제로 고민하던 중 외부의 도움을 얻어 해결했기에 조금이나마 도움이 되고자 적어 봅니다.

우선 저의 경우

정상적으로 레드헷 9.0과 PHP 4.2 버전을 설치하였고 파일 업로드 코드도 정상적으로 코딩하였습니다.
그런데 500k 이상의 파일에서 업로드가 되지 않는 현상이 일어났습니다.
500k이하의 파일은 정상적으로 올라가나 그 이상크기의 파일은 반응이 없거나 페이지를 찾을 수 없는 에러가 나거나 하였습니다.

누구나 그렇듯이 저도 php.ini의 파일 업로드 용량 설정 문제인것으로 생각하고 php.ini 파일에서파일업로드용량을 20메가로 늘려 주었습니다.
참고로 php.ini파일에서 용량과 관련하여 설정해 주어야 하는 부분은 5부분입니다.

file_uploads = On
파일 업로드를 허용할지 설정하는 부분으로 당연히 ON으로 되어 있어야 합니다.

upload_max_filesize = 20M
최대 업로드 파일 사이즈입니다. 원하시는 용량만큼 설정하시면 됩니다.

post_max_size = 20M
Post방식으로 넘겨질 최대 데이터 사이즈입니다.

max_execution_time = 300
최대 실행시간입니다. 대용량 파일일수록 시간이 많이 걸리니 당연 실행시간을 늘려 주어야 합니다. 0으로 세팅하면 무한대이니 알아서 적당히 세팅해 주십시요

memory_limit = 20M
잘 모르겠는데 여하튼 이부분도 같이 세팅되어야 합니다.


upload_max_filesize, post_max_size, memory_limit는 보통 같은 값으로 세팅을 하는데여. PHP메뉴얼에서 크기를 memory_limit > post_max_size > upload_man_filesize 로 해야 한다고 보았던것 같습니다.
즉 Memory_limit설정값이 post_max_size보다 커야하고 post_max_size는 upload_man_filesize보다 커야한다고여...
그런데 걍 같은 값으로 설정해도 문제가 없는듯 합니다.

이렇게 설정하셨으면 아파치를 재시동 합니다.

/etc/rc.d/init.d/httpd restart

재시동 후 PHP설정이 제대로 적용되었는지 phpinfo()로 확인해 봅니다.
그러면 위 설정값들이 적용된것을 확인할 수 있습니다.

그리고파일업로드를 다시 테스트 해 보십시요..
정상적으로 파일이 올라가나요?
된다면 좋겠지만 분명 않되시는 분들도 계실것입니다.
제가 그랬으니까요....

자 이제부터 대략 무지난감하죠...
우선파일업로드중 에러가 발생한 것이니 로그를 아파치의 에러로그를 살펴봐야 겠습니다.

vi /var/log/httpd/error_log

그럼 에러로그들이 쫙 있는데여....
다음과 같은 문장을 볼 수 있습니다.

[Thu Aug 12 17:56:31 2004] [error] [client xxx.xxx.xxx.xxx] Requested content-length of 818331 is larger than the configured limit of 524288, referer: http://xxx.xxx.xxx.xxx/form.htm

음 짧은 영어실력이지만 대충 읽어보면 다음과 같죠

8월 12일날 에러가 났는데 누구냐면 xxx.xxx.xxx.xxx야... 에러가 뭐라고 왔냐면 올리는 파일이 818331바이트인데 이게 524288 값으로 제한되어 있는 설정값보다 더 크다는 거지..

헉~~!

구럼 도대체 어느넘이 php.ini와 상관없이파일업로드를 방해하는 것인지가...?
찾아보았더니..

/etc/httpd/conf.d/php.conf

이넘을 열어보면

LimitRequestBody

라는 설정값이 있습니다.이넘의 초기값이 524288 이군여.. 이넘의 값을 대략 20메가 20000000 정도로 해보져....
당근 아파치 재시작...

그리고 파일을 업로드 해보면... ㅋ~~ 감동 .. 정상적으로 올라가는군여....
ㅋㅋㅋ
이상이 제가 해결한 방법이었습니다.
혹시파일업로드하시면서 도저히 일정용량 않된다 하시는분 저처럼 해 보시구여...
혹시라도 제 내용이 있으신 분들도 리플 달아주시면 아는한 최대로 수정하겠습니다.

참고 : 시스템 설치 방법에 따라 위에서 설정한 php.conf 파일이 없는 경우도 있습니다.
제가 노트북에 설치한 리눅스 시스템엔 php.conf 파일을 찾을 수 없었습니다.
그런데 이넘은파일업로드가 문제가 없어서 걍 잘 쓰고 있습니다.

2009/04/20 20:24 2009/04/20 20:24

============================================================================
1. DBCC CHECKALLOC

- 디스크 공간 할당 구조의 일관성을 검사
============================================================================

   DBCC CHECKALLOC
     ( '데이터베이스이름'
             [ , NOINDEX -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않음
                |
                 { -- 단일사용자모드에서만 사용가능
         REPAIR_ALLOW_DATA_LOSS  -- 일부데이터손실 될 수 있음
                     | REPAIR_FAST   -- 대충복구
                     | REPAIR_REBUILD   -- 모든복구작업수행 (인덱스다시생성)
                } ]
    )     [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ] -- 에러메시지 표시여부
                     [ , [ TABLOCK ] ]   -- 공유잠금 (여기서는 무시)
                     [ , [ ESTIMATEONLY ] ]   -- 명령의 실행에 필요한 tempdb 공간의 예상크기를 표시
                }
        ]



============================================================================
2. DBCC CHECKCATALOG

- 시스템 테이블의 일관성과 시스템 테이블 간의 일관성을 검사
============================================================================

 DBCC CHECKCATALOG
      ( '데이터베이스이름'
     )    
 [ WITH NO_INFOMSGS ]  
 


============================================================================
3. DBCC CHECKCONSTRAINTS

- 지정한 테이블에서 특정 제약 조건이나 모든 제약조건의 무결성을 검사
============================================================================

 DBCC CHECKCONSTRAINTS
      [( '테이블이름' | '제약조건' )]
 [ WITH { ALL_ERRORMSGS | ALL_CONSTRAINTS } ]


============================================================================
4. DBCC CHECKDB

- 지정한 데이터베이스에서 모든 개체의 할당과 구조적 무결성을 검사
- 데이터베이스안에 있는 모든 내용의 무결성을 검사
- 가장 안정한 복구문
- DBCC CHECKDB 문을 최근에 실행했다면 CHECKALLOC, CHECKTABLE 을 실행할 필요가 없다.
- 병렬로 검사 수행 ( 추적 플래그 2528 을 쓰면 병렬검사를 해제할수 있다 )

- 검사내용
 - 인덱스와 데이터 페이지가 제대로 연결되어있는가?
 - 인덱스 정렬순서가 제대로 인가?
 - 포인터가 일치하는가?
 - 각 페이지의 데이터가 적절한가?
 - 페이지 오프셋이 적절한가?
============================================================================

 DBCC CHECKDB
      ( '데이터베이스명'
              [ , NOINDEX   -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않도록 지정합니다.
                 | { REPAIR_ALLOW_DATA_LOSS
                     | REPAIR_FAST
                     | REPAIR_REBUILD
                    } ]
     )    
 [
  WITH { [ ALL_ERRORMSGS ] -- 개체당 오류수를 무제한으로 표시
                     [ , [ NO_INFOMSGS ] ] -- 모든 정보 메시지와 사용한 공간보고서를 표시안함
                     [ , [ TABLOCK ] ]  -- 공유테이블 잠금
                     [ , [ ESTIMATEONLY ] ]  -- DBCC CHECKDB 실행에 필요한 tempdb 공간의 예상크기와 지정된 다른 옵션을 모두 표시
                    [ , [ PHYSICAL_ONLY ] ]  -- 검사를 제한 (페이지와 레코드헤더의 실제구조의 무결성, 페이지의 개체ID 와 인덱스 ID 간의 일관성 및 할당구조로 검사를 제한
                    }
        ]



============================================================================
5. DBCC CHECKFILEGROUP

- 지정한 파일 그룹에서 현재 데이터 베이스에 있는 모든 테이블의 할당과 구조적 무결성을 검사
============================================================================

 DBCC CHECKFILEGROUP
      ( [ { 'filegroup' | filegroup_id } ]
         [ , NOINDEX ]
     )    
 [
  WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
                     [ , [ TABLOCK ] ]
                     [ , [ ESTIMATEONLY ] ]
                    }
        ]


============================================================================
6. DBCC CHECKIDENT

- 지정한 테이블의 현재 ID 값을 검사하고 필요하면 수정합니다.
============================================================================

 DBCC CHECKIDENT
      ( '테이블 이름'
          [ ,  { NORESEED
                      | { RESEED [ , new_reseed_value ] }
             }
          ]
     )


============================================================================
7. DBCC CHECKTABLE

- 지정한 테이블이나 인덱스된 뷰에 대해 데이터, 인덱스, text, ntext, image 페이지의 무결성을 검사합니다.
- 검사내용
 - 인덱스와 데이터 페이지가 제대로 연결되어 있는가?
 - 인덱스 정렬순서가 제대로 되어 있는가?
 - 포인터가 일치하는가?
 - 각 페이지의 데이터가 적절한가?
 - 페이지 오프셋이 적절한가?

- 테이블 잠금을 얻지 못하여 데이터 변경은 허용되지만 메타데이터의 변경을 방지하는 스키마 잠금을 허용
============================================================================

 DBCC CHECKTABLE
      ( '테이블이름' | '뷰명'

          [ ,  NOINDEX
              |  index_id   -- 인덱스 ID 번호
              | {  
    REPAIR_ALLOW_DATA_LOSS
                  |  REPAIR_FAST
                  |  REPAIR_REBUILD
    }
         ]

     )    
 [ WITH {
  [  ALL_ERRORMSGS
      |  NO_INFOMSGS
  ]
                [ , [ TABLOCK ] ]
                [ , [ ESTIMATEONLY ] ]
                [ , [ PHYSICAL_ONLY ] ]
               }
        ]


============================================================================
8. DBCC CLEANTABLE

- 삭제된 가변길이 열과 텍스트 열의 공간을 다시 사용
- ALTER TABLE DROP COLUMN 문을 사용하여 가변길이 열이나 text 열을 삭제한 후 공간을 반환하지만 고정길이 열이 삭제된 후에는 공간을 반환하지 않는다.

============================================================================

 DBCC CLEANTABLE
      ( { '데이터베이스이름' | 데이터베이스아이디 }
         , { '테이블이름' | 테이블아이디 | '뷰명' | 뷰아이디 }
         [ , batch_size ]  - 트랜잭션 당 처리되는 행 수 ( 값 지정 않으면 한 트랜잭션에서 전체테이블을 처리 )
     )



============================================================================
9. DBCC DBREINDEX

- 지정한 데이터베이스의 테이블에 대해 하나 이상의 인덱스를 다시 작성
- 시스템 테이블에 대해 사용할 수 없습니다.
============================================================================

 DBCC DBREINDEX
     (    
  [  'database.owner.table_name'   
               [ , index_name
    [ , fillfactor ]
   ]
         ]
     )    
 [ WITH NO_INFOMSGS ]


============================================================================
10. DBCC DBREPAIR

- 손상된 데이터베이스를 삭제합니다.
- 손상된 데이터베이스를 삭제할 경우에는 DROP DATABASE 를 사용하는 것이 좋습니다.

============================================================================



============================================================================
11. DBCC dllname(FREE)

- 지정한 확장 저장 프로시저의 동적 연결 라이브러리를 메모리에서 언로드합니다.

============================================================================

 DBCC DLL이름 ( FREE )


============================================================================
12. DBCC DROPCLEANBUFFERS

- 버퍼 풀에서 빈 버퍼를 모두 제거

============================================================================
 
 DBCC DROPCLEANBUFFERS



============================================================================
13. DBCC FREEPROCCACHE

- 프로시저 캐시에서 모든 요소를 제거
- 프로시저 캐시를 해제하면 임의 SQL 문이 캐시에서 다시 사용되지 않고 다시 컴파일됩니다.
============================================================================

 DBCC FREEPROCCACHE

============================================================================
14. DBCC INDEXDEFRAG

- 지정한 테이블이나 뷰의 클러스터된 인덱스와 보조 인덱스의 조각을 모음
- 인덱스 스캔성능을 향상시키기 위해 페이지의 물리적 순서가 왼쪽에서 오른쪽으로 잎 노드의 논리적 순서와 일치하다고 인덱스 잎 수준의 조각을 모음
============================================================================

 DBCC INDEXDEFRAG
      (
  { 데이터베이스이름 | 데이터베이스아이디 | 0 }
     ,  { 테이블이름 | 테이블아이디 | '뷰명' | 뷰아이디 }
            ,  { 인덱스이름 | 인덱스아이디 }
     )   


============================================================================
15. DBCC INPUTBUFFER

- 클라이언트에서 MSSQL 로 보낸 최종 명령문을 표시
- SP_WHO2 를 이용해서 spid 를 얻은후에 해당 spid 쿼리를 볼 수 있다.
- EventType, Parameters, EventInfo
============================================================================

 DBCC INPUTBUFFER (spid)


============================================================================
16. DBCC OPENTRAN

- 지정한 데이터베이스에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제된 트랜잭션에 대한 정보를 표시
============================================================================

 DBCC OPENTRAN
     (     { '데이터베이스이름' | 데이터베이스아이디} )
        [ WITH TABLERESULTS
             [ , NO_INFOMSGS ]
        ]


============================================================================
17. DBCC OUTPUTBUFFER

- 지정한 시스템 프로세스 ID 의 현재 출력버퍼를 16진수와 ASCII 형식으로 반환
============================================================================

 DBCC OUTPUTBUFFER ( spid )


============================================================================
18. DBCC PINTABLE / DBCC UNPINTABLE (해제)

- 테이블을 메모리에 고정 (플러시 하지 않음)
- 정말 자주 쓰이는 테이블의 경우
- 주의 : PINTABLE 은 성능을 향상시킬 수 있지만 주의해서 사용해야 합니다.
 커다란 테이블을 고정할 경우 많은 용량의 버퍼캐시를 사용하므로 다른 테이블에서 사용할 캐시가 부족하게 되어 성능저하가 발생 할 수 있음.

- UNPINTABLE 로 해제
============================================================================

 DBCC PINTABLE ( database_id , table_id )
 DBCC UNPINTABLE ( database_id , table_id )



============================================================================
19. DBCC PROCCACHE

- 프로시저 캐시에 대한 정보를 테이블 형식으로 반환
- SQL Server 성능 모니터는 프로시저 캐시에 대한 정보를 얻기위해 DBCC PROCCACHE 를 사용함
- 결과 집합

 num proc buffs    프로시저 캐시에 저장할 수 있는 저장 프로시저의 개수
 num proc buffs used   저장 프로시저를 보관하는 캐시 슬롯의 개수
 num proc buffs active   현재 실행 중인 저장 프로시저를 보관하는 캐시 슬롯의 개수
 proc cache size   프로시저 캐시의 전체 크기
 proc cache used   저장 프로시저를 보관하는 프로시저 캐시의 용량
 proc cache active   현재 실행 중인 저장 프로시저를 보관하는 프로시저 캐시의 용량

============================================================================

 DBCC PROCCACHE


============================================================================
20. DBCC SHOW_STATISTICS

- 지정한 테이블에서 특정 대상의 현재 배포 통계를 표시
- 결과집합

 Updated   통계가 마지막으로 업데이트된 날짜와 시간
 Rows    테이블의 행 수
 Rows Sampled   통계 정보를 위해 샘플링된 행 수
 Steps    배포 단계 수
 Density   첫 번째 인덱스 열 접두사의 선택도(자주 사용하지 않음)
 Average key length  첫 번째 인덱스 열 접두사의 평균 길이
 All density   인덱스 열 접두사 집합의 선택도(자주 사용함)
 Average length   인덱스 열 접두사 집합의 평균 길이
 Columns   전체 밀도 및 평균 길이가 표시되는 인덱스 열 접두사의 이름
 RANGE_HI_KEY   히스토그램 단계의 상위 바운드 값
 RANGE_ROWS   상위 바운드를 제외한 히스토그램 단계에 해당하는 예제의 행 수
 EQ_ROWS   히스토그램 단계의 상위 바운드 값과 동일한 예제의 행 수
 DISTINCT_RANGE_ROWS  상위 바운드를 제외한 히스토그램 단계에 있는 고유한 값 수
 AVG_RANGE_ROWS   상위 바운드(DISTINCT_RANGE_ROWS에 대해 RANGE_ROWS / DISTINCT_RANGE_ROWS > 0)를 제외한, 히스토그램 단계에 있는 중복 값의 평균 수
 
============================================================================
 
 DBCC SHOW_STATISTICS ( table , target )



============================================================================
21. DBCC SHOWCONTIG

- 지정한 테이블의 데이터와 인덱스에 대한 조각화 정보를 표시
- 인덱스가 심하게 조각난 경우에 조각난 정보를 감소시키는 방법
 - 클러스터된 인덱스를 삭제한 후 다시 만듬
 - DBCC INDEXDEFRAG | DBCC DBREINDEX 로 인덱스 다시 구성
- 결과집합

 Pages Scanned   테이블이나 인덱스의 페이지 수입니다.

 Extents Scanned  테이블이나 인덱스의 익스텐트 수입니다.

 Extent Switches  DBCC 문이 테이블이나 인덱스 페이지를 스캔하는 동안의 익스텐트 전환 횟수입니다.

 Avg. Pages per Extent  페이지 체인에서 익스텐트 당 페이지 수입니다.

 Scan Density [Best Count: Actual Count]
    Best count는 모든 데이터가 인접하여 있는 경우 이상적인 익스텐트 변경 횟수이고  
    Actual count는 실제 익스텐트 변경 횟수입니다. 스캔 밀도가 100이면 모든 데이터가 인접해 있고 100보다 작으면 일부 데이터가 조각화된 것입니다. 스캔 밀도는 % 단위입니다.

 Logical Scan Fragmentation
    인덱스의 잎 페이지 스캔에서 반환된 순서가 바뀐 페이지의 비율입니다. 이 값은 힙이나 텍스트 인덱스와는 관계가 없습니다.
    (순서가 바뀐 페이지란 IAM에 지정된 다음 페이지가 잎 페이지의 다음 페이지 포인터에서 가리키는 페이지와 다른 경우입니다.)

 Extent Scan Fragmentation
    인덱스의 잎 페이지 스캔에서 순서가 바뀐 익스텐트의 비율입니다. 이 값은 힙과는 관계가 없습니다.     (순서가 바뀐 익스텐트란 인덱스의 현재 페이지가 포함된 익스텐트가 물리적으로 이전 페이지가 포함된 익스텐트의 다음 익스텐트가 아닌 경우입니다. )

 Avg. Bytes free per page
    스캔된 페이지에서 사용 가능한 평균 바이트 수입니다. 이 값이 클수록 페이지의 채우기 비율이 낮으므로 값이 작을수록 좋습니다. 이 값은 행 크기에 따라 달라지며 행 크기가 크면 값이 커집니다.

 Avg. Page density (full) 평균 페이지 밀도입니다(단위: %). 이것은 행 크기를 고려한 값이므로 페이지의 채우기 비율을 더욱 정확하게 알 수 있습니다. 값이 클수록 좋습니다.

============================================================================

 DBCC SHOWCONTIG
     [    
  ( { table_name | table_id | view_name | view_id }
              [ , index_name | index_id ]
        )
     ]
      [ WITH {  ALL_INDEXES
                 |  FAST    -- 인덱스의 잎 또는 데이터 수준 페이지를 읽지 않음 (빠름)
   [ , ALL_INDEXES ]
                 |  TABLERESULTS   --결과를 추가 정보와 함께 행 집합으로 표시
   [ , { ALL_INDEXES } ]
                 [ , { FAST | ALL_LEVELS } ]
            }
     ]




============================================================================
22. DBCC SHRINKDATABASE

- 지정한 데이터베이스에서 데이터 파일의 크기를 축소시킴
- 파일 단위로 데이터 파일을 축소
- 데이터 파일과 로그파일의 대상 크기는 파일의 최소크기보다 작을수 없음
- NOTRUNCATE / TRUNCATEOLNY 는 데이터파일에는 적용되나 로그파일에는 적용되지 않는다.
============================================================================

 DBCC SHRINKDATABASE
      ( 데이터베이스이름 [ , 데이터베이스에 남겨둘 여유공간비율 ]

          [ , {   NOTRUNCATE  - 해제된 파일 공간을 데이터베이스 파일에서 보유
   |  TRUNCATEONLY  - 해제된 파일 공간을 운영체제에 반환
      }
  ]
     )



============================================================================
23. DBCC SHRINKFILE

- 관련 데이터베이스에 대해 지정한 데이터 파일이나 로그파일의 크기를 축소 시킴
============================================================================

 DBCC SHRINKFILE
      (  
  {
  파일이름 | 파일아이디 }
           { [ , 변경할크기 ]
               | [ ,
    {
     EMPTYFILE  -- 지정한 파일의 모든 데이터를 동일한 파일 그룹의 다른파일로 마이그레이션, 더 이상 데이터를 저장할 수 없음.
    |  NOTRUNCATE  -- 해제된 파일 공간을 파일에 보유
    |  TRUNCATEONLY  -- 해제된 파일 공간을 운영체제에 반환
    }
     ]
         }
     )



============================================================================
24. DBCC SQLPERF

- 모든 데이터베이스에서 트랜잭션 로그공간의 사용에 관한 통계를 제공


- DBCC SQLPERF(LOGSPACE)
 
 결과 집합
 
 Database Name   로그 통계가 표시될 데이터베이스의 이름입니다.
 Log Size(MB)   로그에 사용 가능한 실제 공간의 크기입니다. Microsoft�� SQL Server™는 내부 헤더 정보를 위해 적은 양의 디스크 공간을 예약하므로 이것은 로그 공간에 원래 할당된 크기보다 작습니다.
 Log Space Used (%)  로그 파일에서 현재 트랜잭션 로그 정보가 차지하는 비율입니다.
 Status    로그 파일의 상태입니다(항상 0임).


- DBCC SQLPERF(UMSSTATS) : This Option returns data about SQL Server thread management.

 결과 집합

 Statistic                        Value
 -------------------------------- ------------------------
 Scheduler ID                     0.0  
 num users                        18.0  -- This is the number of SQL Server threads currently in the scheduler.
 num runnable                     0.0  -- This is the number of actual SQL Server threads that are runnable.
 num workers                      13.0  -- This is the actual number of worker there are to process threads. (This is the size of the thread pool.)
 idle workers                     11.0  -- The number of workers that are currently idle.
 work queued                      0.0  
 cntxt switches                   2.2994396E+7 -- The number of context switches between runnable threads.
 cntxt switches(idle)             1.7793976E+7 -- The number of context switches to the idle thread.
 Scheduler ID                     1.0
 num users                        15.0
 num runnable                     0.0
 num workers                      13.0
 idle workers                     10.0
 work queued                      0.0
 cntxt switches                   2.4836728E+7
 cntxt switches(idle)             1.6275707E+7
 Scheduler ID                     2.0
 num users                        17.0
 num runnable                     0.0
 num workers                      12.0
 idle workers                     11.0
 work queued                      0.0
 cntxt switches                   1.1331447E+7
 cntxt switches(idle)             1.6273097E+7
 Scheduler ID                     3.0
 num users                        16.0
 num runnable                     0.0
 num workers                      12.0
 idle workers                     11.0
 work queued                      0.0
 cntxt switches                   1.1110251E+7
 cntxt switches(idle)             1.624729E+7
 Scheduler Switches               0.0
 Total Work                       3.1632352E+7



- DBCC SQLPERF(WAITSTATS) : This Option returns data about wait types for SQL Server  resources.

- DBCC SQLPERF(IOSTATS)  : This Option returns data about outstanding SQL Server  reads and writers.

- DBCC SQLPERF(RASTATS)  : SQL Server read-ahead activity

- DBCC SQLPERF(THREADS)  : I/O, CPU, and memory usage per SQL Server Thread.



============================================================================

 DBCC SQLPERF ( LOGSPACE )


============================================================================
25. DBCC TRACEON / TRACEOFF
 
- 지정한 추적플래그를 설정 / 해제

============================================================================

 DBCC TRACEON ( trace# [ ,...n ] )
 DBCC TRACEOFF ( trace# [ ,...n ] )


============================================================================
26. DBCC TRACESTATUS
 
- 추적 플래그의 상태를 표시
- DBCC TRACESTATUS(-1) 로 하면 모든 추적 플래그의 상태를 표시
============================================================================

 DBCC TRACESTATUS ( trace# [ ,...n ] )



============================================================================
27. DBCC UPDATEUSAGE
 
- sp_spaceused 시스템 저장프로시저에서 잘못된 공간 사용정보가 보고되도록 하는 sysindexes 테이블의 부정확성을 보고하고 수정
- 테이블과 클러스터된 인덱스에 대해 sysindexes 테이블의 rows, used, reserved, dpages 열을 수정함
============================================================================

 DBCC UPDATEUSAGE
     (     { 'database_name' | 0 }
          [ , { 'table_name' | 'view_name' }
          [ , { index_id | 'index_name' } ] ]
     )
      [
  WITH    
   [ COUNT_ROWS ]   -- sysindexes 의 rows 열이 테이블이나 뷰의 현재 행 개수로 업데이트되도록 지정함. 단 indid 가 0 또는 1 인 sysindexes 행에만 작용 (커다란테이블과 인덱스된 뷰의 성능에만 영향을 줌)
   [ , NO_INFOMSGS ]  -- 모든 정보 메시지를 표시하지 않음
        ]



============================================================================
28. DBCC USEROPTIONS
 
- 현재 연결에 활성화된 SET 옵션을 반환함
============================================================================

 DBCC USEROPTIONS


============================================================================
29. DBCC CACHESTATS
 
- 현재 버퍼캐시안에 있는 오프젝트에 대한 정보를 보여줌
 - hit rates
 - compiled objects and plans

- 결과집합
 - Hit Ratio : Displays the percentage of time that this particular object was found in SQL Server's cache.
     The bigger this number, the better

 - Object Count  : Displays the total number of objects of the specified type that are cached.

 - Avg. Cost : A value used by SQL Server that measures how long it takes to compile a plan, along with the amount of memory needed by the plan. This value is used by SQL Server to determine if the plan should be cached or not.

 - Avg. Pages  : Measures the total number of 8K pages used, on average, for cached objects.

 - LW Object Count, LW Avg Cost, WL Avg Stay, LW Ave Use :
   All these columns indicate how many of the specified objects have been removed from the cache by the Lazy Writer.
   The lower the figure, the better.


============================================================================

 DBCC CACHESTATS



============================================================================
30. DBCC ERRORLOG

- 현재의 에러로그를 TRUNCATE
- sp_cycle_errorlog 도 같은 역할
============================================================================

 DBCC ERRORLOG


============================================================================
31. DBCC FLUSHPROCINDB

- 지정한 데이터베이스에 있는 스토어드 프로시저 캐시를 지운다. (전체가아님)
============================================================================
 
 DBCC FLUSHPROCINDB (데이터베이스이름)


============================================================================
32. DBCC MEMORYSTATUS

- 버퍼 캐시안에 있는 메모리 상태를 보여줌
-
 Buffer Distribution
 Buffer Counts
 Procedure Cache
 Dynamic Memory Manager
 Global Memory Objects
 Query Memory Objects
 Optimization Queue

============================================================================
 
 DBCC MEMORYSTATUS


============================================================================
33. DBCC PAGE

- SQL Server 안에 저장된 데이터 페이지의 컨텐츠를 볼수 있는 명령
- View the data page structure

============================================================================
 
 DBCC PAGE (
   {dbid|dbname}
  ,  pagenum   - 페이지넘버
  [, print option ]  - 페이지 헤더 정보를 출력하는 옵션
       0 : This option causes DBCC PAGE to print out only the page header information. (default)
       1 : page header information, each row of information from the page, and then page's offset table.
       2 : the same as option 1, except a single block of information (rather then separating the individual rows)

  [, cache ]  - 0 : 디스크로부터 페이지 번호를 반환
        1 : 캐시로 부터 페이지 번호를 반환 (default)

  [, logical ]  - 0 : virtual page number
        1 : logical page number
    )



============================================================================
34. DBCC SQLMGRSTATS

- ad-hoc , prepared Transact-SQL 구문이 어떻게 캐싱이 되는 지를 알수 있도록 함
- 결과집합
 Memory Used (8k Pages) - 메모리 페이지의 사용량
 Number CSql Objects - 캐시된 전체 수
 Number False Hits - Hit 실패수 (적을수록 좋다)
============================================================================
 
 DBCC FLUSHPROCINDB (데이터베이스이름)


============================================================================
35. DBCC BUFFER

- This Command can be used to display buffer headers and pages from the buffer cache.

- ex )
 DBCC TRACEON (3604)
 DBCC BUFFER(master, 'sysobjects')
============================================================================
 
 DBCC BUFFER ( [dbid | dbname]
   [, objid | objname ]
   [, nbufs]  -- number of buffers to examine
   [, printopt ]
    -- 0 : print out only the buffer header and page header (default)
    -- 1 : print out each row separately and the offset table
    -- 2 : print out each row as a whole and the offset table
      )



============================================================================
36. DBCC BYTES

- This command can be used to dump out bytes from a specific address.

- ex )
 DBCC TRACEON (3604)
 DBCC BYTES (10000000, 100)
============================================================================

 DBCC BYTES (startaddress, length)


============================================================================
37. DBCC DBINFO

- Displays DBINFO structure form the specified database.

- ex )
 DBCC TRACEON (3604)
 DBCC DBINFO(master)
============================================================================

 DBCC DBINFO (dbname)


============================================================================
38. DBCC DBTABLE

- This command displays the contents of then DBTABLE structure.
- This parameter keeps track of how many users are in the database.

- ex )
 DBCC TRACEON (3604)
 DBCC DBTABLE (master)
============================================================================

 DBCC DBTABLE ( [ dbid | dbname ] )


============================================================================
39. DBCC DES

- Prints the contents of the specified DES(descriptor).

- ex )
 DBCC TRACEON (3604)
 DBCC DES
============================================================================

 DBCC DES


============================================================================
40. DBCC IND

- Shows all pages in use by indexes of the specified table.

- ex )
 DBCC TRACEON (3604)
 DBCC IND (master, sysobjects, 0)
============================================================================

 DBCC IND ( [dbid | dbname] , [objid | objname], printopt )


============================================================================
41. DBCC LOG

- This command is used to view the transaction log for the specified database.

- ex )
 DBCC TRACEON (3604)
 DBCC LOG (master)
============================================================================

 DBCC LOG (
   [ dbid | dbname ]
   [, type ]  -- 0 : minimum infomation (operation, context, transaction id)
      -- 1 : more information ( plus flags, tags, row length, description )
      -- 2 : very detailed infomation (plus object name, index name, page id, slot id)
      -- 3 : full information about each operation
      -- 4 : full information about each operation plus hexadecimal dump of then current transaction log's row
      -- -1 : full information about each operaion plus hexadecimal dump of then current transaction log's row, plus Checkpoint Begin, DB version, Max XDESID
   )    


============================================================================
42. DBCC PROCBUF

- This command displays procedure buffer headers and stored procedure headers from the procedure cache.

- ex )
 DBCC TRACEON (3604)
 DBCC PROCBUF (master, 'sp_help', 1, 0)
============================================================================

 DBCC PROCBUF (
    [ dbid | dbname ]
   , [ objid | objname ]
   , nbufs
   , printopt -- 0 : only the proc buff and proc header
      -- 1 : proc buff, proc header, and contents of buffer.
       )


============================================================================
43. DBCC PRTIPAGE

- This command prints the page number pointed to by each row on the specified index page.

- ex )
 DBCC TRACEON (3604)

 DECLARE @dbid  int
 , @objectid int
 select @dbid = DB_ID('master')
 select @objectid = object_id('sysobjects')

 DBCC PRTIPAGE (@dbid, @objectid, 1, 0)
============================================================================

 DBCC PRTIPAGE ( dbid, objid, indexid, indexpage )


============================================================================
44. DBCC PSS

- This command shows info about processes currently connected to the server.

- ex )
 DBCC TRACEON (3604)
 DBCC PSS
============================================================================

 DBCC PSS (
   suid
  , spid
  , printopt -- 0 : standard output
     -- 1 : all open DES's and current sequence tree
   )


============================================================================
45. DBCC RESOURCE

- This command shows the server's level RESOURCE, PERFMON, and DS_CONFIG information.
 RESOURCE - shows addresses of various data structures used by the server.
 PERFMON  - structure contains master..spt_monitor field info.
 DS_CONFIG - structure contains master..syscurconfigs field information.

- ex )
 DBCC TRACEON (3604)
 DBCC RESOURCE
============================================================================

 DBCC RESOURCE


============================================================================
46. DBCC TAB

- view the data pages structure (in comparison with DBCC PAGE, this command will return information about all data pages for viewed table, not only for particular number)

- ex )
 DBCC TRACEON (3604)

 DECLARE @dbid  int
 , @objectid int
 select @dbid = DB_ID('master')
 select @objectid = OBJECT_ID('sysdatabases')

 DBCC TAB (@dbid, @objectid)
============================================================================

 DBCC TAB(dbid, objid)

2009/04/16 00:18 2009/04/16 00:18

Prototype과 jQuery.. 아직도 어떤게 더 많이 사용되고 있는지는 잘 모릅니다. 하지만 개인적인 기분상 예전엔 Prototype을 많이 썼고 유명했는데 요즘은 jQuery가 더 많이 쓰이는 것 같은 느낌입니다.

개인적으로 jQuery를 조금씩 끄적거려 보고 있는 편이기도 하구요.

http://www.jquery.com

jQuery 공식 홈페이지 입니다. 현재 버전은 1.3.2 군요.

jQuery나 Prototype을 사용하면 JavaScript 개발이 더욱 편리해 집니다.

document.getElementById(‘test’) 같은 긴 함수 대신 $(‘test’) 를 사용할 수 있게 되는 것이죠. 그 외에도 Ajax관련 함수를 간편하게 사용 가능하며 브라우저 호환성 코드도 자체 지원하고 추가적인 UI효과를 위한 플러그인 라이브러리들도 많이 지원됩니다.

http://malsup.com/jquery/cycle/

이 링크를 한번 참조해 보시기 바랍니다. 좀더 액티브한 홈페이지를 만드는데 도움이 될 것입니다 ^^

이런걸 직접 구현하려고 하면 재미야 있을 수 있지만 시간이 오래 걸리겠죠? ^^;

2009/04/16 00:14 2009/04/16 00:14

미래의 웹은 시맨틱웹이며, 웹2.0은 시맨틱웹을 경제적 관점에서 본 말이다.

시맨틱웹이 보급되려는 시점에 웹2.0이라는 말이 나와 혼란을 주고 있다. 결론부터 내리자면 W3C나 팀 버너스 리가 제시하고 있는 차세대웹(NGWeb = Next Generation Web)은 1998년부터 확정되어 전개되고 있는 시맨틱웹 이다.

웹2.0(Web 2.0)은 초창기 웹을 1.0이라 생각하고 다음 세대 웹을 2.0으로 구분한 것인데, 이 낱말은 경제적 관점에서 만들어졌다. 시맨틱웹이 RSS 등을 통해 점차 구현되기 시작하자 오라일리(O'Reilly Media, www.oreilly.com)는 2004년 10월 5일부터 일주일 동안 미국 샌프란시스코에서 '웹2.0컨퍼런스(www.web2con.com)'를 개최한다. 이때부터 퍼진 웹2.0 용어는 시맨틱웹의 다른 낱말로 이해되고 있다.

기본적으로 웹2.0과 시맨틱웹은 목적지가 거의 동일하다. 다만 시맨틱웹이 목적지를 향한 기술에 관심을 두고 있다면 웹2.0은 시맨틱웹의 기술을 어떻게 응용하여 경제와 인간생활에 적용시킬 것인가에 관심을 두고 있다는 정도의 차이가 있다

정리하자면 차세대 웹이라는 의미로 '웹2.0'을 사용하는 것은 큰 무리가 없으나 컴퓨터끼리 대화하고 자동화된 지능형 웹을 뜻할 때는 '시맨틱웹'으로 표현하는 것이 좀더 정확한 사용법이 될 것이다.


시맨틱웹은 자동화처리를 위해 숨은자료를 적극 활용하고 있다.

기계끼리 일을 처리하려면 기계끼리 서로 대화를 나누고 대화 내용을 이해할 수 있어야 한다. 이를 위해선 컴퓨터가 이해할 수 있는 언어로 웹을 구성해야 한다. RDF, 온톨로지(Ontology, 존재론), OWL(Ontology Web Language, 존재론 웹언어) 등은 이를 위해 논의되고 있는 기술이다. 현재 시맨틱웹은 W3C를 중심으로 숨은자료(meta data, 메타데이터)를 통해 정보의 의미를 이해하고 처리하도록 하는 자원 설명 기술과 지식 설명 기술이 결합된 연구방향이 한 줄기를 이루고 있다. W3C는 RDF 기반의 온톨로지(Ontology) 기술에 관심을 가지고 있다. 다른 한 줄기는 ISO를 중심으로 XTM 언어를 이용한 정보와 지식의 분산 처리, 통합 관리 등에 중점을 두는 방향이다. ISO 쪽은 토픽맵(Topic Maps) 기술에 중점을 두고 있다. 토픽맵은 ISO/IEC 13250 표준으로 XML 기반의 XTM(XML Topic Maps)이라는 언어를 사용해 정보와 지식의 분산 관리를 지원한다. 이 중에서 현재 가장 활발하게 논의되고 있고 실제로 사용하고 있는 기술은 숨은자료(메타데이터)를 이용한 자동화처리 부분이다.

빠르고 강력하며 확장성이 좋은 Ajax

HTML만으로 구현하기 어려운 복잡하고 정교한 작업을 구현해줌으로써 좀더 윤택한 사이트를 꾸며주는 인터넷 기술을 RIA(Rich Internet Application)라고 한다. 가장 대중적인 윤택인터넷응용(RIA) 기술로 매크로미디어사의 플래시와 마이크로소프트의 액티브엑스, 자바애플릿 기술을 들 수 있다. 플렉스(Flex), 위젯(Widget), 대시보드(Dash Board)를 비롯한 불여우(Firefox)의 확장도 RIA 기술로 분류할 수 있다. 그런데 구글이 Ajax를 활용하면서 빠른 속도로 Ajax 기술이 전파됨에 따라 기존 RIA 개발사의 영향력이 약해지고 있다. 대신 XML과 자바스크립트를 활용한 기술이 큰 흐름을 형성하며 떠오르고 있다. Ajax와 같은 기술은 빠른 속도와 강력한 기능 외에도 표준과 개방성, 확장성이 좋다는 것이 큰 장점이다. XML 자료를 주고받기 때문에 자료 관리가 쉬워지고 자동화가 쉽다는 점도 장점이다.

액티브엑스는 강력하지만 윈도와 익스플로러에서만 동작하는 폐쇄성 문제가 있으며, 플래시는 덩치가 크고 느리며 무겁다. 자바애플릿은 자바가상머신을 설치해야 하는 문제가 있다. 이들 기술로 웹표준을 준수하거나 다양한 기계, 다양한 브라우저와 호환성을 갖추기는 쉽지 않다. 반면 XML을 이용하는 Ajax는 기기나 브라우저에 구애받지 않으며 웹표준을 준수하기 쉽다. 호환성, 확장성도 좋다.


시맨틱 웹 기술은 사람의 머리 속에 있는 언어에 대한 이해를 컴퓨터 언어로 표현하고 이것을 컴퓨터가 사용할 수 있게 만드는 것인데, 특별한 분산환경을 갖춘 웹에 구현하자는 것이다. 이 것은 기계가 정보검색과 같은 사람의 요구를 더 잘 이해하고 적절하게 반응하기 위해서이다. 사람과 기계 사이에 진정한 커뮤니케이션이 가능하기 위해서는 사람이 이해하는 수준으로 기계도 언어를 이해할 수 있어야 한다. 사람들이 언어를 이해하는 방식을 보통 개념화라고 하는데, 즉 사람들은 세상에 있는 각각의 사물이나 사건들을 경험하면서 이 들 속에 들어있는 특징을 파악해서 언어로 개념화한다. 이렇게 컴퓨터에서도 사람이 갖고 있는 개념과 같은 것을 일종의 데이터베이스 형태로 만드는 기술을 온톨로지 기술 이라고 부른다.

온톨로지는 자연어의 기계 번역과 인공지능 분야에서 활용되며, 최근에는 특정 분야의 인터넷 자원과 그 사이의 관계를 기술하는 온톨로지를 사용하는 시맨틱 웹과 이것에서 파생된 시맨틱 웹 서비스 등의 핵심 요소로서 주목받고 있다.


시맨틱 웹 언어

시맨틱 웹에서 Subject, Predicate, Object는 XML의 URI 형태로 표현되며, 이는 웹 환경에 산재한 자원에 대한 온톨로지를 기술하는데 목적이 있다. 현재 시맨틱 웹 온톨로지를  기술하는 표준 언어로 W3C에서 제안한 RDF, OWL 그리고 ISO에서 제안한 TopicMaps 등이 있으나 국지적으로는 N3, N-Triple 또는 인공지능 분야에서 예전부터 쓰이던 KIF 형태로도 온톨로지가 작성된다


대중적으로 가장 널리 알려진 시맨틱 웹의 활용 예는 RSS 이다. RSS(RDF Site Summary) 첫 버전인 0.9와 1.0은 바로 RDF로 작성되어 있다. 이후 버전에서는 RDF를 사용하지 않으며 이름도 Really Simple Syndication 또는 Rich Site Summary로 혼재되어 사용되고 있다.

2006년 현재 시맨틱 웹을 시맨틱 웹 서비스(OWL-S, WSDL-S), 시맨틱 PDM/PLM, 기존 KMS 시스템의 시맨틱 웹화, 바이오 인포매틱스 등으로 응용하려는 연구가 진행중이다. 그리고 웹 2.0의 정보 공유 수단으로 시맨틱 웹 온톨로지가 주목받는 중이다.

원본 주소 ‘http://ko.wikipedia.org/wiki/%EC%8B%9C%EB%A7%A8%ED%8B%B1_%EC%9B%B9’

==========================
RDF(Resource Description Framework)은 월드 와이드 웹 컨소시엄에서 정의한, 웹상의 자원의 정보를 표현하기 위한 XML 규격이다.

==========================


RSS 혹은 Really Simple Syndication (직역하면 매우 간단한 배급)은 XML 기반의 문서 표준으로 다음과 같은 세부 표준을 갖고 있다.

Rich Site Summary (RSS 0.9x and RSS 2.0)
RDF Site Summary (RSS 0.9 and 1.0) (RDF: Resource Description Framework)
RSS는 뉴스나 블로그 사이트에서 주로 사용하는 컨텐츠 표현 방식이다. 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다. 예로, 모질라 파이어폭스의 라이브 북마크나 한RSS 등의 RSS 리더 프로그램에서 읽을 수 있다.

RSS가 등장하기 전에는 원하는 정보를 얻기 위해 해당 사이트를 직접 방문하여야 했으나, RSS 관련 프로그램(혹은 서비스)을 이용하여 자동 수집이 가능해졌기 때문에 사용자는 각각의 사이트 방문 없이 최신 정보들만 골라 한 자리에서 볼 수 있다.

또한 RSS 는 포드캐스팅과 같은 미디어 배포의 용도로도 사용된다. RSS 2.0 의 〈enclosure〉태그 내에 MP3 나 MOV 등의 미디어 파일을 첨부하여 배포하면, 포드캐스팅 클라이언트 등에서 미디어 파일을 인식하고 사용자에게 들려주거나 자신의 포터블 미디어 플레이어로 옮겨준다.

RSS 2.0은 공식적으로 완료된 것으로 선언되었으며, 하버드 대학교가 저작권을 보유하고 있다.

RSS 파일들은 표준 XML 기반 파일로서, 웹 콘텐트를 신디케이트 및 모으는 방식을 제공합니다. 이 파일에는 콘텐트에 대한 정보를 설명하는 메타데이터, 콘텍스트, 데이터 특성이 포함되어 있습니다. RSS 파일들을 사용하여, 웹 사이트에서 헤드라인, 링크, 아티클 요약을 제공하는 데이터 피드가 만들어집니다. 이 파일들은 로고, 사이트 링크, 인풋 박스, 여러 뉴스 아이템들을 포함한 정보 채널을 기술하고 있습니다. 기타 웹 사이트들은 이러한 정보를 자신들의 페이지와 자동으로 결합하거나, 피드를 사용하여 사이트에 실시간 뉴스 헤드라인을 제공합니다. 이러한 기술을 사용하여 해당 웹 사이트에 실시간 정보 배포가 가능해집니다.


==========================

✓ OWL의 사전적 의미

웹상에서 첨단의 웹 검색, 소프트웨어 에이전트 및 지식 관리 기능을 제공하는 온톨로지를 발간 및 공유하기 위한 시멘틱 웹 생성 언어. 자원 기술 프레임워크(RDF)의 확장 언어로 개발된 것으로 DAML+OIL 언어로부터 시작되었다. 웹 온톨로지 언어(OWL)는 웹 온톨로지와 그에 관련된 지식을 정의하는 언어로 추론 시스템에 축적된 명제들을 정의하며, 클래스 및 그 구성원 간의 관계를 기술하고, 구문적으로 정의되지 않은 사실의 논리적 유추를 가능하게 하는 클래스 및 속성과 이에 적용할 수 있는 제약 사항의 집합으로 되어 있다.

✓ OWL란?

OWL 웹 온톨로지 언어는 단지 사람에게 정보를 표시하는데 그치지 않고 정보의 내용을 직접 처리할 수 있는 어플리케이션을 구현하는데 활용될 수 있도록 설계된 언어이다. OWL은 풍부한 어휘(vocabulary)와 형식적 의미론(formal semantics)을 포함하고 있기 때문에 기계 해석이 가능한 웹 컨텐트를 저작하는데 있어 XML, RDF 및 RDF 스키마(RDF-S)보다 뛰어나다. OWL은 표현력이 서로 다른 세 개의 하위 언어 - OWL Lite, OWL DL, OWL Full - 로 구성되어 있다. 후자로 갈수록 표현력이 더 크다.

✓ OWL 소개

OWL은 문서에 포함된 정보를 어플리케이션을 이용하여 자동 처리하고자 할 때 활용하는 언어이다. OWL을 이용하면 임의의 어휘를 구성하는 용어(term)의 의미와 용어들 간의 관계를 명시적으로 표현할 수 있다. 이와 같이 용어와 용어들 간의 관계를 표현한 것을 온톨로지(Ontology)라 한다. OWL은 XML, RDF, RDF-S 보다 더 많은 의미 표현 수단을 제공하므로, 웹 상에서 기계가 해석할 수 있는 컨텐트를 작성하는데 있어 이들 언어보다 뛰어나다. OWL은 DAML+OIL 웹 온톨로지 언어로부터 파생된 언어이다. OWL에는 DAML+OIL의 설계 및 활용 경험으로부터 습득된 지식이 반영되어 있다.

✓ 왜 OWL인가?

시맨틱 웹은 웹의 미래에 대한 비전이다. 시맨틱 웹에서 정보는 명시적인 의미를 부여받게 되는데, 이를 통해 기계는 좀 더 쉽게 웹 상에 존재하는 정보들을 자동으로 처리하고 통합할 수 있다. 시맨틱 웹은 사용자 정의 태그 스키마를 정의할 수 있는 XML과 유연하게 데이터를 표현할 수 있는 RDF를 바탕으로 구축된다. 시맨틱 웹의 구현에 있어 RDF 바로 윗 계층에 필요한 것이 웹 문서에 포함된 용어의 의미를 형식적으로 기술할 수 있는 온톨로지 언어이다. 기계를 이용하여 웹 문서를 대상으로 유용한 추론 기능을 수행하려면 RDF 스키마가 제공하는 기초적인 의미 표현력을 뛰어넘는 언어가 필요하다.

2009/04/16 00:11 2009/04/16 00:11

미래의 웹은 시맨틱웹이며, 웹2.0은 시맨틱웹을 경제적 관점에서 본 말이다.

시맨틱웹이 보급되려는 시점에 웹2.0이라는 말이 나와 혼란을 주고 있다. 결론부터 내리자면 W3C나 팀 버너스 리가 제시하고 있는 차세대웹(NGWeb = Next Generation Web)은 1998년부터 확정되어 전개되고 있는 시맨틱웹 이다.

웹2.0(Web 2.0)은 초창기 웹을 1.0이라 생각하고 다음 세대 웹을 2.0으로 구분한 것인데, 이 낱말은 경제적 관점에서 만들어졌다. 시맨틱웹이 RSS 등을 통해 점차 구현되기 시작하자 오라일리(O'Reilly Media, www.oreilly.com)는 2004년 10월 5일부터 일주일 동안 미국 샌프란시스코에서 '웹2.0컨퍼런스(www.web2con.com)'를 개최한다. 이때부터 퍼진 웹2.0 용어는 시맨틱웹의 다른 낱말로 이해되고 있다.

기본적으로 웹2.0과 시맨틱웹은 목적지가 거의 동일하다. 다만 시맨틱웹이 목적지를 향한 기술에 관심을 두고 있다면 웹2.0은 시맨틱웹의 기술을 어떻게 응용하여 경제와 인간생활에 적용시킬 것인가에 관심을 두고 있다는 정도의 차이가 있다

정리하자면 차세대 웹이라는 의미로 '웹2.0'을 사용하는 것은 큰 무리가 없으나 컴퓨터끼리 대화하고 자동화된 지능형 웹을 뜻할 때는 '시맨틱웹'으로 표현하는 것이 좀더 정확한 사용법이 될 것이다.


시맨틱웹은 자동화처리를 위해 숨은자료를 적극 활용하고 있다.

기계끼리 일을 처리하려면 기계끼리 서로 대화를 나누고 대화 내용을 이해할 수 있어야 한다. 이를 위해선 컴퓨터가 이해할 수 있는 언어로 웹을 구성해야 한다. RDF, 온톨로지(Ontology, 존재론), OWL(Ontology Web Language, 존재론 웹언어) 등은 이를 위해 논의되고 있는 기술이다. 현재 시맨틱웹은 W3C를 중심으로 숨은자료(meta data, 메타데이터)를 통해 정보의 의미를 이해하고 처리하도록 하는 자원 설명 기술과 지식 설명 기술이 결합된 연구방향이 한 줄기를 이루고 있다. W3C는 RDF 기반의 온톨로지(Ontology) 기술에 관심을 가지고 있다. 다른 한 줄기는 ISO를 중심으로 XTM 언어를 이용한 정보와 지식의 분산 처리, 통합 관리 등에 중점을 두는 방향이다. ISO 쪽은 토픽맵(Topic Maps) 기술에 중점을 두고 있다. 토픽맵은 ISO/IEC 13250 표준으로 XML 기반의 XTM(XML Topic Maps)이라는 언어를 사용해 정보와 지식의 분산 관리를 지원한다. 이 중에서 현재 가장 활발하게 논의되고 있고 실제로 사용하고 있는 기술은 숨은자료(메타데이터)를 이용한 자동화처리 부분이다.

빠르고 강력하며 확장성이 좋은 Ajax

HTML만으로 구현하기 어려운 복잡하고 정교한 작업을 구현해줌으로써 좀더 윤택한 사이트를 꾸며주는 인터넷 기술을 RIA(Rich Internet Application)라고 한다. 가장 대중적인 윤택인터넷응용(RIA) 기술로 매크로미디어사의 플래시와 마이크로소프트의 액티브엑스, 자바애플릿 기술을 들 수 있다. 플렉스(Flex), 위젯(Widget), 대시보드(Dash Board)를 비롯한 불여우(Firefox)의 확장도 RIA 기술로 분류할 수 있다. 그런데 구글이 Ajax를 활용하면서 빠른 속도로 Ajax 기술이 전파됨에 따라 기존 RIA 개발사의 영향력이 약해지고 있다. 대신 XML과 자바스크립트를 활용한 기술이 큰 흐름을 형성하며 떠오르고 있다. Ajax와 같은 기술은 빠른 속도와 강력한 기능 외에도 표준과 개방성, 확장성이 좋다는 것이 큰 장점이다. XML 자료를 주고받기 때문에 자료 관리가 쉬워지고 자동화가 쉽다는 점도 장점이다.

액티브엑스는 강력하지만 윈도와 익스플로러에서만 동작하는 폐쇄성 문제가 있으며, 플래시는 덩치가 크고 느리며 무겁다. 자바애플릿은 자바가상머신을 설치해야 하는 문제가 있다. 이들 기술로 웹표준을 준수하거나 다양한 기계, 다양한 브라우저와 호환성을 갖추기는 쉽지 않다. 반면 XML을 이용하는 Ajax는 기기나 브라우저에 구애받지 않으며 웹표준을 준수하기 쉽다. 호환성, 확장성도 좋다.


시맨틱 웹 기술은 사람의 머리 속에 있는 언어에 대한 이해를 컴퓨터 언어로 표현하고 이것을 컴퓨터가 사용할 수 있게 만드는 것인데, 특별한 분산환경을 갖춘 웹에 구현하자는 것이다. 이 것은 기계가 정보검색과 같은 사람의 요구를 더 잘 이해하고 적절하게 반응하기 위해서이다. 사람과 기계 사이에 진정한 커뮤니케이션이 가능하기 위해서는 사람이 이해하는 수준으로 기계도 언어를 이해할 수 있어야 한다. 사람들이 언어를 이해하는 방식을 보통 개념화라고 하는데, 즉 사람들은 세상에 있는 각각의 사물이나 사건들을 경험하면서 이 들 속에 들어있는 특징을 파악해서 언어로 개념화한다. 이렇게 컴퓨터에서도 사람이 갖고 있는 개념과 같은 것을 일종의 데이터베이스 형태로 만드는 기술을 온톨로지 기술 이라고 부른다.

온톨로지는 자연어의 기계 번역과 인공지능 분야에서 활용되며, 최근에는 특정 분야의 인터넷 자원과 그 사이의 관계를 기술하는 온톨로지를 사용하는 시맨틱 웹과 이것에서 파생된 시맨틱 웹 서비스 등의 핵심 요소로서 주목받고 있다.


시맨틱 웹 언어

시맨틱 웹에서 Subject, Predicate, Object는 XML의 URI 형태로 표현되며, 이는 웹 환경에 산재한 자원에 대한 온톨로지를 기술하는데 목적이 있다. 현재 시맨틱 웹 온톨로지를  기술하는 표준 언어로 W3C에서 제안한 RDF, OWL 그리고 ISO에서 제안한 TopicMaps 등이 있으나 국지적으로는 N3, N-Triple 또는 인공지능 분야에서 예전부터 쓰이던 KIF 형태로도 온톨로지가 작성된다


대중적으로 가장 널리 알려진 시맨틱 웹의 활용 예는 RSS 이다. RSS(RDF Site Summary) 첫 버전인 0.9와 1.0은 바로 RDF로 작성되어 있다. 이후 버전에서는 RDF를 사용하지 않으며 이름도 Really Simple Syndication 또는 Rich Site Summary로 혼재되어 사용되고 있다.

2006년 현재 시맨틱 웹을 시맨틱 웹 서비스(OWL-S, WSDL-S), 시맨틱 PDM/PLM, 기존 KMS 시스템의 시맨틱 웹화, 바이오 인포매틱스 등으로 응용하려는 연구가 진행중이다. 그리고 웹 2.0의 정보 공유 수단으로 시맨틱 웹 온톨로지가 주목받는 중이다.

원본 주소 ‘http://ko.wikipedia.org/wiki/%EC%8B%9C%EB%A7%A8%ED%8B%B1_%EC%9B%B9’

==========================
RDF(Resource Description Framework)은 월드 와이드 웹 컨소시엄에서 정의한, 웹상의 자원의 정보를 표현하기 위한 XML 규격이다.

==========================


RSS 혹은 Really Simple Syndication (직역하면 매우 간단한 배급)은 XML 기반의 문서 표준으로 다음과 같은 세부 표준을 갖고 있다.

Rich Site Summary (RSS 0.9x and RSS 2.0)
RDF Site Summary (RSS 0.9 and 1.0) (RDF: Resource Description Framework)
RSS는 뉴스나 블로그 사이트에서 주로 사용하는 컨텐츠 표현 방식이다. 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다. 예로, 모질라 파이어폭스의 라이브 북마크나 한RSS 등의 RSS 리더 프로그램에서 읽을 수 있다.

RSS가 등장하기 전에는 원하는 정보를 얻기 위해 해당 사이트를 직접 방문하여야 했으나, RSS 관련 프로그램(혹은 서비스)을 이용하여 자동 수집이 가능해졌기 때문에 사용자는 각각의 사이트 방문 없이 최신 정보들만 골라 한 자리에서 볼 수 있다.

또한 RSS 는 포드캐스팅과 같은 미디어 배포의 용도로도 사용된다. RSS 2.0 의 〈enclosure〉태그 내에 MP3 나 MOV 등의 미디어 파일을 첨부하여 배포하면, 포드캐스팅 클라이언트 등에서 미디어 파일을 인식하고 사용자에게 들려주거나 자신의 포터블 미디어 플레이어로 옮겨준다.

RSS 2.0은 공식적으로 완료된 것으로 선언되었으며, 하버드 대학교가 저작권을 보유하고 있다.

RSS 파일들은 표준 XML 기반 파일로서, 웹 콘텐트를 신디케이트 및 모으는 방식을 제공합니다. 이 파일에는 콘텐트에 대한 정보를 설명하는 메타데이터, 콘텍스트, 데이터 특성이 포함되어 있습니다. RSS 파일들을 사용하여, 웹 사이트에서 헤드라인, 링크, 아티클 요약을 제공하는 데이터 피드가 만들어집니다. 이 파일들은 로고, 사이트 링크, 인풋 박스, 여러 뉴스 아이템들을 포함한 정보 채널을 기술하고 있습니다. 기타 웹 사이트들은 이러한 정보를 자신들의 페이지와 자동으로 결합하거나, 피드를 사용하여 사이트에 실시간 뉴스 헤드라인을 제공합니다. 이러한 기술을 사용하여 해당 웹 사이트에 실시간 정보 배포가 가능해집니다.


==========================

✓ OWL의 사전적 의미

웹상에서 첨단의 웹 검색, 소프트웨어 에이전트 및 지식 관리 기능을 제공하는 온톨로지를 발간 및 공유하기 위한 시멘틱 웹 생성 언어. 자원 기술 프레임워크(RDF)의 확장 언어로 개발된 것으로 DAML+OIL 언어로부터 시작되었다. 웹 온톨로지 언어(OWL)는 웹 온톨로지와 그에 관련된 지식을 정의하는 언어로 추론 시스템에 축적된 명제들을 정의하며, 클래스 및 그 구성원 간의 관계를 기술하고, 구문적으로 정의되지 않은 사실의 논리적 유추를 가능하게 하는 클래스 및 속성과 이에 적용할 수 있는 제약 사항의 집합으로 되어 있다.

✓ OWL란?

OWL 웹 온톨로지 언어는 단지 사람에게 정보를 표시하는데 그치지 않고 정보의 내용을 직접 처리할 수 있는 어플리케이션을 구현하는데 활용될 수 있도록 설계된 언어이다. OWL은 풍부한 어휘(vocabulary)와 형식적 의미론(formal semantics)을 포함하고 있기 때문에 기계 해석이 가능한 웹 컨텐트를 저작하는데 있어 XML, RDF 및 RDF 스키마(RDF-S)보다 뛰어나다. OWL은 표현력이 서로 다른 세 개의 하위 언어 - OWL Lite, OWL DL, OWL Full - 로 구성되어 있다. 후자로 갈수록 표현력이 더 크다.

✓ OWL 소개

OWL은 문서에 포함된 정보를 어플리케이션을 이용하여 자동 처리하고자 할 때 활용하는 언어이다. OWL을 이용하면 임의의 어휘를 구성하는 용어(term)의 의미와 용어들 간의 관계를 명시적으로 표현할 수 있다. 이와 같이 용어와 용어들 간의 관계를 표현한 것을 온톨로지(Ontology)라 한다. OWL은 XML, RDF, RDF-S 보다 더 많은 의미 표현 수단을 제공하므로, 웹 상에서 기계가 해석할 수 있는 컨텐트를 작성하는데 있어 이들 언어보다 뛰어나다. OWL은 DAML+OIL 웹 온톨로지 언어로부터 파생된 언어이다. OWL에는 DAML+OIL의 설계 및 활용 경험으로부터 습득된 지식이 반영되어 있다.

✓ 왜 OWL인가?

시맨틱 웹은 웹의 미래에 대한 비전이다. 시맨틱 웹에서 정보는 명시적인 의미를 부여받게 되는데, 이를 통해 기계는 좀 더 쉽게 웹 상에 존재하는 정보들을 자동으로 처리하고 통합할 수 있다. 시맨틱 웹은 사용자 정의 태그 스키마를 정의할 수 있는 XML과 유연하게 데이터를 표현할 수 있는 RDF를 바탕으로 구축된다. 시맨틱 웹의 구현에 있어 RDF 바로 윗 계층에 필요한 것이 웹 문서에 포함된 용어의 의미를 형식적으로 기술할 수 있는 온톨로지 언어이다. 기계를 이용하여 웹 문서를 대상으로 유용한 추론 기능을 수행하려면 RDF 스키마가 제공하는 기초적인 의미 표현력을 뛰어넘는 언어가 필요하다.

2009/04/16 00:11 2009/04/16 00:11
드림위버에서 jQuery를 쉽고, 빠르게 코딩할 수 있는 확장기능이 있어 소개해 드립니다. 코드 컬러링, 스니핏, 코드 힌트 등을등을 제공하고 있습니다.
사용자 삽입 이미지

지원하는 드림위버 버전은 다음과 같습니다.
- Dreamweaver CS3, 8, MX2004, and MX. Windows and Mac seem work fine.




 
2009/04/16 00:08 2009/04/16 00:08

자바스크립트 라이브러리 Jquery 플러그인

 -Jquery 플러그인 모음 이거한방이면 끝..!! :
   http://www.seek-blog.com/41065/14090/240-plugins-jquery.html

 -light box(이미지 미리보기,pre,next) :
   http://leandrovieira.com/projects/jquery/lightbox/

 -이미지 스크롤 : 
   http://benjaminsterling.com/2007/09/09/jquery-jqgalscroll-photo-gallery/

 -이미지 싸이클 : 
   http://www.malsup.com/jquery/cycle/

 -BlockUI Plugin(processing,처리중 등등,confirm) : 
   http://www.malsup.com/jquery/block/#element

 -UI Modal : 
   http://jquery.com/demo/thickbox/

 -플래쉬 플러그인 삽입 :
   http://jquery.lukelutman.com/plugins/flash/#examples

 -Photo Slider Tutorial :
   http://opiefoto.com/articles/photoslider#example

 -jScrollPane :
    http://kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html

 -Accessible News Slider  :
    http://www.reindel.com/accessible_news_slider/#examples

 - unobtrusive tabs(탭메뉴) : 
    http://stilbuero.de/jquery/tabs/#fragment-29
    http://www.sunsean.com/idTabs/#t3

 -jQuery Ajax Link Checker : 
   http://troy.dyle.net/linkchecker/

 -jQuery Form Plugin  :
  http://malsup.com/jquery/form/#code-samples

 -jquery.suggest, an alternative jQuery based autocomplete library(자동완성)
  http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/
  http://nodstrum.com/2007/09/19/autocompleter/

 -jlook(폼객체 리뉴얼)  :

  http://envero.org/jlook/

 -jQuery - LinkedSelect(멀티 select) :

  http://www.msxhost.com/jquery/linked-selects/json/

 -Masked Input Plugin    : (입력포맷 확인)
  http://digitalbush.com/projects/masked-input-plugin
  http://www.appelsiini.net/projects/jeditable/default.html

 -Overlabel with JQuery(박스안에 워터마킹처리)  :
   http://scott.sauyet.com/Javascript/Demo/Overlabel/

 -Styling an input type="file"(파일찾기 이미지 처리)
   http://www.quirksmode.org/dom/inputfile.html

 -jQuery UI Datepicker v3.0 Examples(달력)
  http://marcgrabanski.com/code/ui-datepicker/

 -jQuery Validation Plugin(폼체크,포커싱)
  http://jquery.bassistance.de/validate/demo-test/ 
  http://www.texotela.co.uk/code/jquery/focusfields/
 
 -jQuery columnHover plugin(컬럼 하이라이트/컬럼 컨트롤)
  http://p.sohei.org/stuff/jquery/columnhover/demo/demo.html
  http://p.sohei.org/stuff/jquery/columnmanager/demo/demo.html

 -tablesorterDocumentation(테이블 순서)
  http://tablesorter.com/docs/index.html 

 -jQuery Accordion Demo(컨테이너 예제)
  http://jquery.bassistance.de/accordion/?p=1.1.1

 -jQPanView based in jQuery 1.1(이미지 확대보기)
  http://projects.sevir.org/storage/jpanview/index.html

 -jQuery Impromptu(confirm,alert 등등)
  http://trentrichardson.com/Impromptu/

 -jqGrid Examples(그리드)
  http://trirand.com/jqgrid/jqgrid.html#

 -Toggle HTML-Elements with jQuery
  http://jquery.andreaseberhard.de/toggleElements/

 -UI/Sortables(테이블 위치변경 ^^)
  http://docs.jquery.com/UI/Sortables

 -뉴스 슬라이더(부분보기,전체보기)
  http://www.reindel.com/accessible_news_slider/

 -로컬 스크롤러
  http://www.freewebs.com/flesler/jQuery.LocalScroll/

 -핫키 테스트
  http://jshotkeys.googlepages.com/test-static.html

 -슬라이더
  http://docs.jquery.com/UI/Slider/slider

 -쇼핑카트
  http://www.mimul.com/pebble/default/2007/10/30/1193753340000.html

 -테이블 소트
  http://www.mimul.com/pebble/default/2007/11/06/1194348600000.html

 -이미지 나중에 로딩시키기
  http://www.mimul.com/pebble/default/2007/11/10/1194695220000.html

 -오토탭(입력시 폼객체 자동넘김)
  http://dev.lousyllama.com/autotab/

 -실시간 폼객체 수정
  http://www.appelsiini.net/projects/jeditable/custom.html

 -프린트
  http://www.designerkamal.com/jPrintArea/#
 -차트
  http://www.reach1to1.com/sandbox/jquery/jqchart/

 -CSS Dock Menu (Jquery + CSS)
  후니넷에서 보삼
 -툴팁
  http://www.codylindley.com/blogstuff/js/jtip/

 -XML데이터 뿌리기
  http://blog.reindel.com/src/jquery_browse/
  http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html
  http://www.mimul.com/pebble/default/2006/11/05/1162710000000.html

 -Clearing Form

  http://www.learningjquery.com/2007/08/clearing-form-data

 --암호 복잡성 체크

  http://phiras.googlepages.com/PasswordStrengthMeter.html

 --Form Serialize

  http://dev.jquery.com/wiki/Plugins/FastSerialize

 --GetString 퍼라미터 가져오기
  http://www.mathias-bank.de/2006/10/28/jquery-plugin-geturlparam/

 --검색 후 콤보생성(ajax with combo) 아주 유용함
  http://extjs.com/deploy/ext/examples/form/forum-search.html
  http://extjs.com/deploy/ext/examples/grid/edit-grid.html-->그리드

 --파일 업로드(input=file) 리폼
  http://www.appelsiini.net/projects/filestyle/demo.html

Jquery Best
 http://www.spicyexpress.net/general/jquerry-at-it-best-downloadable-jquerry-plugins-and-widgets-for-you-2/

웹디자인 템플릿트(2.0)
 -http://www.templateworld.com/free_templates.html

----------------------------------------
Jquery tag cloud
http://www.ajaxrain.com/tagcloud.php
Jquery 기본설명
http://www.zzbb.kr/34
----------------------------------------

^^Star Rater(순위) --활용가능성 높음
http://www.m3nt0r.de/devel/raterDemo/

^^ AJAX CALLING --활용가능성 높음
http://cgaskell.wordpress.com/2006/11/02/jquery-ajax-call-and-result-xml-parsing/

--AJAX 아이디 중복체크 - 활용가능성 아주높음
http://www.shawngo.com/gafyd/index.html

^^ jQuery framework plugins which provide a way to sort and nest elements in web applications, using drag-and-drop(테이블드래그앤드랍) --활용가능성 중간
http://code.google.com/p/nestedsortables/

^^Simple tableSorter(리스트 정렬) 활용가능성 중간
http://motherrussia.polyester.se/docs/tablesorter/

^^Cookie 활용가능성 높음
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/

^^태깅 --그냥한번보자..ㅎ
http://www.alcoholwang.cn/jquery/jTaggingDemo.htm

^^죽이는 어코디언 메뉴
http://dev.portalzine.de/index?/Horizontal_Accordion--print

^^ AJAX Indicator 이미지
http://qureyoon.blogspot.com/2006/11/make-your-own-loading-gif.html

----------------------------------------
2007.12.28 찾은것
----------------------------------------
http://rikrikrik.com/jquery/quicksearch/#usage
http://nadiaspot.com/jquery/confirm/#examples
http://host.sonspring.com/portlets/
http://jquery.andreaseberhard.de/toggleElements/
http://www.getintothis.com/pub/projects/rb_menu/
http://icon.cat/software/iconDock/0.8b/dock.html
http://www.nuernberg.de/internet/portal/index.html
http://rikrikrik.com/jquery/shortkeys/#examples
http://rikrikrik.com/jquery/pager/#examples
http://famspam.com/facebox/ --라이트박스같은것
http://www.andreacfm.com/
http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/ --autocomplete
http://www.gcmingati.net/wordpress/wp-content/lab/jquery/newsticker/jq-liscroll/scrollanimate.html - 뉴스 스크롤
http://d-scribe.de/webtools/jquery-pagination/demo.htm# --페이징
http://tinymce.moxiecode.com/example_full.php?example=true --Open Source WYSWYG 웹 에디터
http://www.laptoptips.ca/projects/tinymce-advanced/ --Open Source WYSWYG 웹 에디터 advanced
http://extjs.com/ -또다른 RIA JAVASCRIPT 프레임워크
http://www.digital-web.com/extras/jquery_crash_course/ -jquery로 만든 비행 예약 시스템 데모(Passenger Management )
http://markc.renta.net/jquery/ --jquery 간단예제
http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html?page=2 -jquery와 XML
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/  -쿠키 플러그인
http://jquery.com/files/demo/dl-done.html --간단한 어코디언 메뉴
http://mjslib.org/doc/legacy/fieldgroup.html --폼필드 컨트롤
http://extjs.com/deploy/dev/examples/tree/two-trees.html --트리
http://www.amcharts.com/column/ - 차트(바로 사용^^)
http://particletree.com/features/rediscovering-the-button-element/ - 버튼 스타일링
http://www.i-marco.nl/weblog/jquery-accordion-menu/ - 실용성 높은 어코디언 메뉴


http://www.sastgroup.com/jquery/240-plugins-jquery
http://jquery.bassistance.de/jquery-getting-started.html

2009/04/16 00:05 2009/04/16 00:05

웹 2.0 스타일의 로딩 애니메이션 gif (또는 다른 타입의 이미지)를 구할 수 있는 사이트들과 자바스크립트 프레임워크를 사용하여 Loading  패널을 구현할 수 있게 하는 정보들을 모은 사이트들입니다.

사용자 삽입 이미지

http://www.ajaxload.info/

JQuery 를 사용하여 Loading 패널을 띄우기

http://docs.jquery.com/Ajax/load

YAHOO YUI 를 사용하여 Loading Panel 만들기
http://developer.yahoo.com/yui/examples/container/panel-loading.html

GIF loading images
http://www.webscriptlab.com/

Load Info GIF Generator
http://www.loadinfo.net/

2009/04/15 23:55 2009/04/15 23:55

저도 예전에 비슷한 생각을 해서 뒤적 거려 본적이 있습니다..


--------------------------------------------------------------------------------------------------------------------------------

결론적으로 요약해 드리면 바이오스에 답이 있습니다. 대부분의 PC는 바이오스를 가지고 있습니다. 여기서 하드웨어에 대한 설정을 하게 되는데요 , 장치 내부적인 데이터를 직접 컨트롤 할 수도 있습니다. CPU 클럭서 부터 팬속도 , 비디오 섀도 설정등등 많은 부분을 처리할 수도 있죠.


그런데 예전에는 운영체제가 직접 바이오스에 접근하기는 어려웠습니다. 하지만 각종 메모리의 개발등으로 FlashRom과 같은 매체를 이용하는 NVRM이 제작가능해 지면서 부터.

바이오스 정보의 가공및 처리가 용이해 졌습니다.   바이오스나 피시를 컨트롤 하는 기능들이 NVRM에 탑재 되었으니까요.....


옛날 구형 피시들도 바이오스에 특정 정보들은 메모리상에 특정 영역에 기본적으로 할당 되었습니다.

이영역에서 정보를 읽어 오기만 하며 바이오스의 데이터를 알수 있었지만, 기본적인 정보들로 구성 되었으므로 보다 세세한 정보를 알아내기는 어려 웠습니다.  운영체제와 하드웨어의 운영체제랄 수 있는 바이오스와의 정보 교류를 위해 SMBIOS것이 생긴 이후 부터 운영체제와 바이오스가 보다 디테일한 정보를 주고 받게 됩니다. 동작은 기존 BIOS 처럼 메모리상에 데이터를 올려 주는 방식입니다.


aida32 / Sandra에서 하드웨어 정보를 뽑아내는 방법은 BIOS 메모리영역과 SMBIOS의 메모리 영역을 읽음으로써 해당 정보를 뽑아내게 됩니다.

SMBIOS의 데이터 내용은 메인보드 밴더사에 따라 제공하는 정보는 각기 차이가 있습니다.


아래에 운영체제가 직접 BIOS에 엑세스하여 메인보드 시리얼을 뽑도록 하는 스크립트를 붙여 두겠습니다.


사용법 ) 1. 아래 점선안에 스크립트를 복사하여 메모장에 붙여 넣는다.

                 2. 다른이름으로 저장을 누른 후에

                     파일명: Serial.vbs    파일형식 : 모든 형식을 선택후 저장

                 3. 생성된 Serial.vbs 를 실행 하면 알림창에 시리얼 값이 표시된다.

-------------------------------------------------------------------------------------------------------------------------------

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colBIOS = objWMIService.ExecQuery _
    ("Select * from Win32_BIOS")

For each objBIOS in colBIOS
    Wscript.Echo "Serial Number: " & objBIOS.SerialNumber
Next

--------------------------------------------------------------------------------------------------------------------------------

2009/04/13 17:35 2009/04/13 17:35
사용자 삽입 이미지
웹페이지에서 MAC Address 구하는 ActiveX 컨트롤입니다.
웹에서 인증 처리할 때 아이디, 암호와 같이 사용하면 좋을 것 같습니다.
기능:
1. 맥어드레스 구하기 - 네트워크 카드가 여러 개 일 경우 모두 구함(한 줄에 하나씩)
2. 컴퓨터 이름 구하기
3. 작업 그룹 구하기

사용법은 아래와 같습니다.

<SCRIPT language=JavaScript for="auth" event=OnError(ErrMsg)>
    alert("에러 발생:" + ErrMsg);
</SCRIPT>

<OBJECT id="auth" classid="clsid:7C159314-7E2C-4E6E-B580-5DF25610F581" codebase="./AuthByMAC.cab#Version=1,1,9,0">
    <PARAM name=copyright value="http://isulnara.com">
</OBJECT>

<SCRIPT LANGUAGE="JavaScript">
<!--
    alert("맥어드레스: " + auth.MAC);
    alert("컴퓨터 이름: " + auth.ComputerName);
    alert("작업그룹: " + auth.WorkGroup);
//-->
</SCRIPT>


누구나 무료로 사용할 수 있습니다.

[데모 페이지]
[다운로드]




업데이트 사항(v1,1,9,0)
------------------------
+OnError(ErrMsg) 이벤트 추가
+몇몇 컴퓨터에서 Error Code 1 나오던 버그 해결

출처 : http://isulnara.com/
2009/04/13 15:51 2009/04/13 15:51
온라인상에 툴이 있을 경우 비교적 빨리 테스트해 볼 수 있어서 좋습니다.
제가 유용하게 사용하는 온라인 도구들을 모아 보았습니다.(링크#1)
여러분들도 유용하게 사용하는 온라인 도구들이 있으면 코멘트로 달아 공유해 주시면 고맙겠습니다.

phpSniff
http://phpsniff.sourceforge.net/
클라이언트 브라우저의 여러가지 정보를 보여줍니다.

BrowserSpy
http://gemal.dk/browserspy/
클라이언트의 브라우저 뿐만 아니라 설치되어 있는 플러그인과 플레이어 등에 대한 정보도 보여줍니다.

CSS Validator, HTML Validator
http://jigsaw.w3.org/css-validator/
http://validator.w3.org/
CSS 및 HTML이 W3C 권장사항에 맞는지 검사해 줍니다.

W3C Tools
http://www.w3.org/QA/Tools/
그밖의 여러가지 W3C 유효성 검사 도구들이 있습니다.

CheckDNS
http://www.checkdns.net/quickcheckdomainf.aspx
네임서버 설정이 제대로 되었는지 확인해 볼 수 있습니다.

DNS Tools
http://dns-tools.domaintools.com/
도메인과 아이피에 대한 간단한 Ping, Traceroute 그리고  DNS lookup 테스트를 할 수 있습니다.

Link Popularity Checker
http://www.pagerank.net/link-popularity-checker/
Google, AOL, AltaVista, AllTheWeb 그리고 Yahoo!에서의 사이트 순위를 다른 상대적 비교 사이트들의 목록속에서 보여줍니다.

SELF SEO
http://www.selfseo.com/
SEO(검색엔진최적화) 도구, Internet 도구 그리고 Webmaster 도구들로 나뉘어진 많은 온라인 툴들이 있습니다.
여러 검색엔진에서의 사이트 순위를 보여주는 도구라던가 아이피 주소로 간단하게 국가를 알아내는 도구, 자신의 아이피를 바로 보여주는 도구들이 유용할 거 같습니다.

Speed Test
http://www.dslreports.com/speedtest?flash=1
인터넷 속도를 측정해 주는 데가 많은데 이곳이 플래시로 비교적 깔끔하게 처리했습니다.

Whois Source
http://www.whois.sc/
모두가 알고 있듯이 도메인 네임과 아이피 정보를 보여줍니다.

String Conversion
http://www.qindex.info/Q_drctry/webtools/StringConversion.php
제가 만든건데 주로 즉석에서 문자열을 변환해서 볼때 사용합니다.

Editing Webpages
http://www.qindex.info/Q_drctry/webtools/EditingWebpage.php
이것도 제가 만든건데 즉석에서 HTML, CSS 그리고 JavaScript를 테스트해 볼때 사용합니다.
2009/04/12 17:46 2009/04/12 17:46
노트북에 리눅스를 깔아 사용중 입니다.
제 경우는 일반적인 웹 작업을 위해 프로그램 뿐만 아니라 그래픽이나 기타 미디어 제작 부분등도 거의 노트북에서 작업 합니다.
기회가 되면 리눅스용 프로그램 리스트를 정리 할려고 했는데 이미 잘 정리된 사이트가 있군요. 리눅스 데스크탑 사용 하시는 분들은 참고 해 보세요.


Windows Software Linux Equivalent/Alternative
3D Studio Max
    K-3D ( http://www.k-3d.org/ )
    Wings 3D ( http://www.wings3d.com/ )
    Art of Illusion ( http://www.artofillusion.org/ )
    Blender ( http://www.blender.org/ )
 
ACDSee
    KuickShow ( http://kuickshow.sourceforge.net/ )
    ShowImg ( http://www.jalix.org/projects/showimg/ )
    Gwenview ( http://gwenview.sourceforge.net/ )
    GQview ( http://gqview.sourceforge.net/ )
    Eye of GNOME ( http://www.gnome.org/projects/eog/ )
 
Adobe Acrobat Reader
    okular ( http://kpdf.kde.org/okular/ )
    Xpdf ( http://www.foolabs.com/xpdf/ )
    Evince ( http://www.gnome.org/projects/evince/ )
    ePDFView ( http://trac.emma-soft.com/epdfview/ )
    KPDF ( http://kpdf.kde.org/ )
 
Adobe Audition
    Audacity ( http://audacity.sourceforge.net/ )
 
Adobe Illustrator
    Skencil ( http://www.skencil.org/ )
    Inkscape ( http://www.inkscape.org/ )
    Karbon14 ( http://www.koffice.org/karbon/ )
    Xara Xtreme for Linux ( http://www.xaraxtreme.org/ )
 
Adobe PageMaker
    Scribus ( http://www.scribus.net/ )
 
Adobe PhotoAlbum
    F-Spot ( http://f-spot.org/Main_Page )
    KPhotoAlbum ( http://www.kphotoalbum.org/ )
    digiKam ( http://www.digikam.org/ )
 
Adobe Photoshop
    CinePaint ( http://www.cinepaint.org/ )
    Krita ( http://www.koffice.org/krita/ )
    GIMP ( http://www.gimp.org/ )
    
Adobe Premier
    PiTiVi ( http://www.pitivi.org/wiki/Main_Page )
    LiVES ( http://lives.sourceforge.net/ )
    Kino ( http://www.kinodv.org/ )
    Cinelerra ( http://cvs.cinelerra.org/ )
    kdenlive ( http://kdenlive.sourceforge.net/ )
    Jahshaka ( http://www.jahshaka.org/ )
 
Ant Movie
    Catalog Moviefly ( https://savannah.nongnu.org/projects/lmc/ )
 
AOL Instant Messenger (AIM)
    Kopete ( http://kopete.kde.org/ )
    Pidgin ( http://pidgin.im )
 
APC PowerChute
    Network UPS Tools ( http://www.networkupstools.org/ )
    Apcupsd ( http://www.apcupsd.com/ )
    PowerD ( http://power.sourceforge.net/ )
 
CDex
    Sound Juicer ( http://www.burtonini.com/blog/computers/sound-juicer )
    Rubyripper ( http://wiki.hydrogenaudio.org/index.php?title=Rubyripper )
    ripperX ( http://ripperx.sourceforge.net/ )
    Grip ( http://nostatic.org/grip/ )
    KAudioCreator ( http://www.icefox.net/programs/?program=KAudioCreator )
 
Collectorz
    aviManager ( http://avimanager.sourceforge.net/ )
    GCstar ( http://www.gcstar.org/ )
    Tellico ( http://periapsis.org/tellico/ )
    Alexandria ( http://alexandria.rubyforge.org/ )
    Griffith ( http://griffith.vasconunes.net/ )
    vMovieDB ( http://vmoviedb.sourceforge.net/ )
    Katalog ( http://salvaste.altervista.org/ )
 
Dreamweaver
    Quanta Plus ( http://quanta.kdewebdev.org/ )
    Geany ( http://geany.uvena.de )
    Nvu ( http://www.nvu.com/index.php )
    Screem ( http://www.screem.org/ )
    KompoZer ( http://www.kompozer.net/ )
    Bluefish ( http://bluefish.openoffice.nl/index.html )
 
DVDShrink
    k9copy ( http://k9copy.sourceforge.net/ )
    OGMRip ( http://ogmrip.sourceforge.net/ )
    Thoggen ( http://thoggen.net/ )
    xdvdshrink ( http://dvdshrink.sourceforge.net/ )
    DVD Rip-O-Matic ( http://dvdripomatic.sourceforge.net )
    qVamps ( http://vamps.sourceforge.net/ )
    dvd::rip ( http://www.exit1.org/dvdrip/ )
    AcidRip ( http://untrepid.com/acidrip/ )
 
Everest
    HardInfo ( http://hardinfo.berlios.de/web/HomePage )
 
Finale
    Lilypond ( http://www.lilypond.org )
    Denemo ( http://denemo.sourceforge.net/index.html )
    Rosegarden ( http://www.rosegardenmusic.com/ )
    NoteEdit ( http://noteedit.berlios.de/ )
    Brahms ( http://brahms.sourceforge.net/ )
 
Flash
    F4L ( http://f4l.sourceforge.net/ )
 
Forte
    Agent Pan ( http://pan.rebelbase.com/ )
 
FruityLoops
    LMMS ( http://lmms.sourceforge.net/ )
    Hydrogen ( http://www.hydrogen-music.org/ )
 
Google Desktop Search
    Google Desktop ( http://desktop.google.com/linux/index.html )
    Beagle ( http://beagle-project.org/ )
 
Guitar Pro
    TuxGuitar ( http://www.tuxguitar.com.ar/home.html )
 
iTunes
    Banshee ( http://banshee-project.org/Main_Page )
    aTunes ( http://www.atunes.org/ )
    Quod Libet ( http://www.sacredchao.net/quodlibet )
    SongBird ( http://www.songbirdnest.com )
    Exaile ( http://www.exaile.org/ )
    Amarok ( http://amarok.kde.org/ )
    Listen ( http://listengnome.free.fr/ )
    Rhythmbox ( http://www.gnome.org/projects/rhythmbox/ )
    gtkpod ( http://www.gtkpod.org/ )
 
Legacy Family Tree
    GRAMPS ( http://gramps-project.org/ )
 
LimeWire
    FrostWire ( http://www.frostwire.com/ )
 
Meal Master
    krecipe ( http://krecipes.sourceforge.net/ )
    Gourmet Recipe Manager ( http://grecipe-manager.sourceforge.net/ )
 
Microsoft Access
    Kexi ( http://www.koffice.org/kexi/ )
    knoda ( http://www.knoda.org )
    GNOME-DB ( http://www.gnome-db.org/ )
 
Microsoft Excel
    KSpread ( http://www.koffice.org/kspread/ )
    Open Calc ( http://www.openoffice.org/product/calc.html )
    Gnumeric ( http://www.gnome.org/projects/gnumeric/ )
 
Microsoft Frontpage
    Quanta Plus ( http://quanta.kdewebdev.org/ )
    Nvu ( http://www.nvu.com/index.php )
    KompoZer ( http://www.kompozer.net/ )
    Bluefish ( http://bluefish.openoffice.nl/index.html )    
 
Microsoft HyperTerminal
    minicom ( http://alioth.debian.org/projects/minicom/ )
    GtkTerm ( http://freshmeat.net/projects/gtkterm/ )
 
Microsoft Internet Explorer
    Epiphany ( http://www.gnome.org/projects/epiphany/ )
    Opera ( http://www.opera.com/download/ )
    Firefox ( http://www.mozilla.com/firefox/ )
    Konqueror ( http://www.konqueror.org/ )
 
Microsoft Money
    KMyMoney ( http://kmymoney2.sourceforge.net/ )
    GNUcash ( http://www.gnucash.org/ )
    Gnofin ( http://gnofin.sourceforge.net/ )
    Grisbi ( http://www.grisbi.org/ )
 
Microsoft Office
    GNOME Office ( http://www.gnome.org/gnome-office/ )
    KOffice ( http://www.koffice.org/ )
    OpenOffice ( http://www.openoffice.org/ )
 
Microsoft OneNote
    BasKet ( http://basket.kde.org/ )
 
Microsoft Outlook (Express)
    Thunderbird ( http://www.mozilla.com/thunderbird/ )
    Evolution ( http://www.gnome.org/projects/evolution/ )
 
Microsoft Powerpoint
    Open Office Impress ( http://www.openoffice.org/product/impress.html )
    KPresenter ( http://www.koffice.org/kpresenter/ )
 
Microsoft Project
    KPlato ( http://www.koffice.org/kplato/ )
    OpenProj ( http://openproj.org/openproj )
    GanttProject ( http://ganttproject.sourceforge.net/ )
    Planner ( http://live.gnome.org/Planner )
    TaskJuggler ( http://www.taskjuggler.org/ )
 
Microsoft Visio
    Dia ( http://www.gnome.org/projects/dia/ )
    Kivio ( http://www.koffice.org/kivio/ )
 
Microsoft Windows Media Center
    Freevo ( http://freevo.sourceforge.net/ )
    Elisa Media Center ( http://www.fluendo.com/elisa/ )
    MythTV ( http://www.mythtv.org )
    LinuxMCE ( http://www.linuxmce.com/ )
 
Microsoft Word
    Open Office Writer ( http://www.openoffice.org/product/writer.html )
    AbiWord ( http://www.abisource.com/ )
    Kword ( http://www.koffice.org/kword/ )
 
mIRC
    Konversation ( http://konversation.kde.org/ )
    KVIrc ( http://www.kvirc.net/ )
    BitchX ( http://www.bitchx.org/ )
    Xchat ( http://www.xchat.org/ )
    ChatZilla! ( http://chatzilla.hacksrus.com/ )
    irssi ( http://www.irssi.org/ )
    Pidgin ( http://pidgin.im )
 
Mp3tag
    Kid3 ( http://kid3.sourceforge.net/ )
    Pinkytagger ( http://pinkytagger.sourceforge.net/ )
    EasyTAG ( http://easytag.sourceforge.net/ )
    Cowbell ( http://more-cowbell.org/ )
    Audio Tag Tool ( http://pwp.netcabo.pt/paol/tagtool/ )
 
MSN messenger
    Mercury Messenger ( http://www.mercury.to/ )
    Kopete ( http://kopete.kde.org/ )
    aMSN ( http://amsn-project.net/ )
    Pidgin ( http://pidgin.im )
 
Mudbox
    SharpConstruct ( http://sharp3d.sourceforge.net )
 
Nero Burning Rom
    X-CD-Roast ( http://www.xcdroast.org/ )
    Brasero ( http://perso.orange.fr/bonfire/index.htm )
    GnomeBaker ( http://gnomebaker.sourceforge.net/ )
    Graveman! ( http://graveman.tuxfamily.org/ )
    K3b ( http://www.k3b.org/ )
 
NetMeeting
    Ekiga ( http://www.gnomemeeting.org/ )
 
NetStumbler
    Kismet ( http://www.kismetwireless.net/ )
    SWScanner ( http://www.swscanner.org/ )
 
NewzCrawler
    RSSOwl ( http://www.rssowl.org/ )
    Liferea ( http://liferea.sourceforge.net/ )
    BasKet ( http://basket.kde.org/ )
    Akregator ( http://akregator.kde.org/ )
    Blam ( http://www.cmartin.tk/blam.html )
    Straw ( http://www.gnome.org/projects/straw/ )
 
Notepad
    leafpad ( http://tarot.freeshell.org/leafpad/ )
    NEdit ( http://www.nedit.org/ )
    jEdit ( http://www.jedit.org/ )
    Kate ( http://kate-editor.org/ )
    gedit ( http://www.gnome.org/projects/gedit/ )
    Scribes ( http://scribes.sourceforge.net/ )
    tpad ( http://tclpad.sourceforge.net/ )
 
OrangeCD Catalog
    GWhere ( http://www.gwhere.org )
 
Origin
    SciGraphica ( http://scigraphica.sourceforge.net/ )
 
Partition Magic
    Partimage ( http://www.partimage.org/Main_Page )
    GParted ( http://gparted.sourceforge.net/ )
    QtParted ( http://qtparted.sourceforge.net )
 
    Picasa F-Spot ( http://f-spot.org/Main_Page )
    KPhotoAlbum ( http://www.kphotoalbum.org/ )
    digiKam ( http://www.digikam.org/ )
 
Pro Tools
    Ardour ( http://www.ardour.org )
 
Quicken
    KMyMoney ( http://kmymoney2.sourceforge.net/ )
    GNUcash ( http://www.gnucash.org/ )
    Gnofin ( http://gnofin.sourceforge.net/ )
    Grisbi ( http://www.grisbi.org/ )
 
SoulSeek
    Nicotine ( http://nicotine.thegraveyard.org/ )
    Nicotine-Plus ( http://nicotine-plus.sourceforge.net/ )
 
SoundForge
    ReZound ( http://rezound.sourceforge.net/ )
 
TexnicCenter 
Total Commander
    GNOME Commander ( http://www.nongnu.org/gcmd/ )
    xfe ( http://roland65.free.fr/xfe/ )
    Tux Commander ( http://tuxcmd.sourceforge.net/ )
    Midnight Commander ( http://www.ibiblio.org/mc/ )
    Krusader ( http://krusader.sourceforge.net/ )
 
Traktor
    DJ Mixxx ( http://mixxx.sourceforge.net/ )
 
Videora
    thin liquid film ( http://thinliquidfilm.org/ )
 
Winamp
    Audacious ( http://audacious-media-player.org/Main_Page )
    Amarok ( http://amarok.kde.org/ )
    XMMS ( http://www.xmms.org/ )
 
Windows Media Player
    KPlayer ( http://kplayer.sourceforge.net/ )
    VideoLAN ( http://www.videolan.org/ )
    xine ( http://xinehq.de/ )
    mplayer ( http://www.mplayerhq.hu/design7/news.html )
 
Windows Movie Maker
    PiTiVi ( http://www.pitivi.org/wiki/Main_Page )
    LiVES ( http://lives.sourceforge.net/ )
    Open Movie Editor ( http://openmovieeditor.sourceforge.net/HomePage )
    Avidemux ( http://fixounet.free.fr/avidemux/ )
    Cinelerra ( http://cvs.cinelerra.org/ )
    kdenlive ( http://kdenlive.sourceforge.net/ )
 
WinIso ISO
    Master ( http://littlesvr.ca/isomaster/ )
    KIso ( http://kiso.sourceforge.net/ )
 
WinMerge
    KDiff3 ( http://kdiff3.sourceforge.net/ )
    Meld ( http://meld.sourceforge.net/ )
    xxdiff ( http://furius.ca/xxdiff/ )
    Kile ( http://kile.sourceforge.net/ )
 
WinTV
    XdTV ( http://xawdecode.sourceforge.net/ )
    tvtime ( http://tvtime.sourceforge.net/ )
 
WS_FTP
    gFTP ( http://gftp.seul.org/ )
    FireFTP ( http://fireftp.mozdev.org/ )
 
Zbrush
    SharpConstruct ( http://sharp3d.sourceforge.net )
 
ZoneAlarm
    Guarddog ( http://www.simonzone.com/software/guarddog/ )
    Firestarter ( http://www.fs-security.com/ )
2009/04/12 17:40 2009/04/12 17:40
-- 하드디스크를 털다보니 예전에 공부할때 썻던게 보이네요..
-- 그냥 가져다 붙여놓은것인지.. 편집을한것인지.. 원작자는 모릅니다..ㅡㅜ
-- 어째튼 vi 때문에 고민하시는 분들께는 도움이될지도 모른다는생각에 공개합니다.
-- 글을올리고나니 쫌 깨지는부분이 있어서 txt 파일로도 첨부합니다.(훨씬깨끗.ㅡㅡ)
---------------------------------------------------------------------------------------------------------------------

vi 에디터 
            1 Cursor 위치를 변경하는 명령들
            2 vi 명령들
            3 자세한 정보를 가져 오려면...
             
  명령을 잘 활용하는 방법은 'man' 명령을 이용하는 것입니다.
  UNIX 명령에 좀 익숙 하신분들은 'man' 명령을 활용 하십시오.
 
1.
                      vi Cursor Positioning 
    - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -
    :1G (go                                                            :
    :                      /\  ^b (back                                :
    :                      ||                    /\  ^u (up          :
    |----------------------||--------------------||--------------------|
    |H (home                                                          |
    |                              k                  O (open        |
    |I            i (insert        /\    a (append    P (put        A |
    |                              |                                  |
    |O <--------- h <-------  you are here  -------> l -------------->$|
    |                              |                                  |
    |M (middle    (backspace      \/    (space bar    p(put          |
    |                              j                  o (open        |
    |            Y (yank                        /string              |
    |                                            n repeat last search |
    |L (last                                      . repeat last command|
    |----------------------||--------------------||--------------------|
    :                      ||                    \/  ^d (down        :
    :                      \/  ^f (forward                            :
    :\$G (go                                                          :
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - "
 
 
2. vi 명령들 
                  1 Cursor를 옮기는 여러가지 방법
                  2 화면을 옮기는 여러가지 방법
                  3 한 화면 안에서 cursor를 옮기는 방법
                  4 한 line 안에서 cursor를 옮기는 방법
                  5 검색 
                  6 vi를 빠져나가는 방법 
                  7 삽입 mode 
                  8 Yanking : (Copying
                  9 Deleting 
                10 Putting 
                11 Interactive edit : (search and replace
                12 Global 명령
                13 Reading in files 
                14 여러 화일의 edit
                15 Miscellancenous commands 
 
1 Cursor를 옮기는 여러가지 방법 
                                      k(-
                                        /\ 
                                        ||
                        h(bs    <-----      ----->  l(sp
                                        ||
                                        \/
                                      j(+
        h,j,k 와 i 를 이용하영 간단히 키보를 누르면 cursor의 위치가 변 
        경됩니다.
        (에 있는 키를 선택하여도 됩니다.
        bs : BackSpace                      sp : SPace bar "
 
2 화면을 옮기는 여러가지 방법 
                  ^f  -  (FORWARD 화면을 one page 앞으로 옮김
                  ^b  -  (BACKWARD 화면을 one page 뒤으로 옮김
                  ^d  -  (DOWN 화면을 반 page 앞으로 옮김
                  ^u  -  (UP 화면을 반 page 뒤으로 옮김
              ^  는 키보드의 ctrl 를 나타내는 것입니다."
 
3 한 화면 안에서 cursor를 옮기는 방법 
            H  -  HOME, 한 화면의 top line으로 옮긴다.
            M  -  MIDDLE, 한 화면의 중간으로 옮긴다.
            L  -  LAST, 한 화면의 마지막  line으로옮긴다.
            G  -  GOTO,  화일의 마지막  line으로 옮긴다.
            nG -  GOTO nth line the file (or :n
            ^G -  GIVES file status 
              ^  는 키보드의 ctrl 를 나타내는 것입니다."
 
4 한 line 안에서 cursor를 옮기는 방법 
                      w  -  WORD, 한단어 앞으로
                      b  -  BACKWARD, 한단어  뒤로
                      e  -  END, 현재 cursor가 위치한 맨 뒤로
                      o  -  zero, line의 맨 앞으로 (or ^
                      $  -  end, line의 맨뒤로"
 
5 검색 
        /pattern -  scan (/ 'pattern'이라는글자를 현재 cursor가
                    위치한 곳의 다음 단어를 검색
        ?pattern -  scan (? 'pattern'이라는 글자를 현재 cursor가
                    위치한 곳의 앞 단어를 검색
        n    -  앞쪽에서 입력했었던 문자 'pattern' 의 다음단어를 검색
        N    -  앞쪽에서 입력했었던 문자 'pattern' 의 다음 앞 단어를 
                  검색"
 
6 vi를 빠져나가는 방법 
          :q!  -  화일의 내용을 저장하지 않고 exit
          :w  -  WRITE, vi를 빠져나가지 않으면서 내용을 저장
          :wq  -  WRITE and QUIT, vi를 빠져나가면서  내용을 저장
          ZZ  -  :wq의 명령과 같다."
 
7 삽입 mode 
            i  -  INSERT, cursor 위치 부터 문자 삽입
            I  -  INSERT, line의 맨 앞부터 문자 삽입
            a  -  APPEND, cursor 다음 위치 부터 문자 삽입
            A  -  APPEND, cursor 위치한 line의 끝부터 문자 삽입
            o  -  OPEN line, 현재의 line 다음에 line 삽입
            O  -  OPEN line, 현재의 line 앞에 line 삽입
            r  -  REPLACE, 한 문자만을 대치 (does not require ESC
            R  -  REPLACE, ESC 키가 입력될때 까지 대치 
            cw  -  CHANGE word, cursor가 위치한 곳의 단어 끝까지 대치
                    (cnw - change n number of words
            C  -  CHANGE, cursor가 위치한 곳에서 line 끝까지 대치
            u  -  UNDOES, 마지막 명령의 취소
            U  -  UNDOES, line전체를 원 상태로 복구
Note :  INSERT mode 를 만든는 모든 문자(i, a, o,r, c, s <대문자 포
        함>를 사용하는 경우 insert mode에서 입력 한 내용을  취소하고
        자 하면, ESC 를 누르고 undo를 수행하는 u를 입력하면 된다.
Note :  ESC (escape key 는 삽입(insert를 중지 시키고 명령어 mode로 
        돌아가는 키이다."
 
8 Yanking : (Copying 
        Y  -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        yy -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        nY -  YANKS n , n line을 사용자가 보이지 않는 buffer에 저장"
 
9 Deleting 
        x  -  deletes, 문자 하나를 삭제 (also 'd sp'
        dw  - DELETES words, 문자 하나를 삭제 
        D  -  DELETES, cursor가 있는 곳에서 부터 line끝 까지 삭제 
        dd  -  DELETES lines, line하나를 삭제 하고 보이지 않는 buffer
              에 저장
        ndd -  DELETES n, n line을 삭제 하고 보이지 않는 buffer에 저장
              (i.e., 10dd deletes 10 lines"
 
10 Putting 
        p  -  PUTS, cursor가 위치한 다음 line에 보이지 않는 buffer의
              내용을 삽입
        P  -  PUTS, cursor가 위치한 앞 line에 보이지 않는 buffer의
              내용을 삽입
        xp -  cursor 가 위치한 문자와 다음 문자를 교환"
 
11 Interactive edit : (search and replace 
        /pattern -  find, pattern이라는 문자를 검색
        cw      -  change word, 단어를 대치 (cw. dw, r, s, etc.
        n        -  find, 앞에서 검색했던 'pattern'이라는 문자를 검색
                    하는 반복 명령
        N        -  find, 앞에서 검색했던 'pattern'이라는 문자를 역순
                    으로 검색 하는 반복 명령"
 
12 Global 명령 
                Global replacement 
                :1,\$s/string1/string2/g
                1 line부터 끝까지 string1 를 string2 로 대치
        e.g.,  :1,\$s/sun/SUN/
                      Global delete 
                :g/pattern/d
                1 line부터 끝까지 pattern 을 제거
        e.g.,  :g/###/d (to delete lines inserted by cc file.c | & 
                error-v"
 
13 Reading in files 
        :r  file2 - cursor가 위치한 다음 line에 file2를 삽입"
 
14 여러 화일의 edit 
        :w      -  다른 화일을 읽기전에 현재의 화일을 저장 (file1
        :e file2  -  두번째 file을 edit하기 위해 load (file2
        :w      -  두번째 화일을 저장 (file2
        :e #    - original file 을 수정하기 위해 load (file1
        example:w              /* file1을 빠져 나가기전에 저장*/
                :e file2        /* file2 load  */
                        \"x4Y  /* buffer 'x'에 file2의 top 4 line을 
                                  저장 */
                :e #            /* file1 을 load (no changes */
                        \"xP    /* buffer 'x'에 저장 되어 있는 내용을 
                                  put */"
 
15 Miscellancenous commands 
        :! cmd  -  editor안에서 shell command를 수행 하고자 할때
        ~      -  (tilde or 'wavy', 대문자를 소문자로 소문자를 대문자
                    로 교환
        %      -  한 line안에서 (,,{,},[,]를 검색
        mx      -  문자 x에 현재 위치를 표시
        d'x    -  문자 x에 표시된 위치 부터 현재 cursor 위치 까지 삭
                    제
        ^V      -  allows for insertion of control characters (e.g., 
                  ^L
        ?string -  scan (/ backward for 'pattern'
        :n,m w file -  n line에서 m line까지 내용을  file 이라는 이름 
                      으록 (e.g., 15,25 w file
        J      -  JOINS, cusor가 있는 line과 다음 line을 join 
        :set ai -  editor 가 자동적으로 insert tabs을 삽입
        :set list -  special characters 를 보여줌
                    (i.e., non-printable characters
        :set nows -  stop wraparound search
        :set ts=n -  set tab stops to be other than the default (8
        :set wm=n -  set wrap margin (automatic carriage return insert 
                    at n"
2009/04/12 17:36 2009/04/12 17:36
master 및 기타 db 모두 옮긴다고 삽질을 좀 했습니다.
저같은 분을 위해 적어봤습니다. MSSQL 2000에서 한것이라
2005에서는 약간 달라질수 있으나 기본 개념은 변하지 않았으니
특별히 문제가 되는 부분은 없을겁니다.

전제사항
백업 된 데이터에서 이전 또는 복구 하기 위해서는
쿼리 분석기에서 select @@version 또는 exec master.dbo.xp_msver 쿼리 결과등을 통해 보여지는
MSSQL 백업시의 MSSQL과 이전대상의 MSSQL 버젼이 동일해야 한다.
서비스팩이 다르면 서비스팩도 동일해야 한다.
이 부분때문에 제가 삽질을 좀했습니다 ㅡㅡ;;

1. 원본 백업
    쿼리 브라우저에서 아래의 쿼리 형태를 실행
    BACKUP DATABASE master TO DISK = 'D:/sqlbackup/master.backup' WITH INIT;
    BACKUP DATABASE model TO DISK = 'D:/sqlbackup/model.backup' WITH INIT;
    BACKUP DATABASE msdb TO DISK = 'D:/sqlbackup/msdb.backup' WITH INIT;
    BACKUP DATABASE Northwind TO DISK = 'D:/sqlbackup/Northwind.backup' WITH INIT;
    BACKUP DATABASE pubs TO DISK = 'D:/sqlbackup/pubs.backup' WITH INIT;
    BACKUP DATABASE web1 TO DISK = 'D:/sqlbackup/web1.backup' WITH INIT;
    BACKUP DATABASE Web2 TO DISK = 'D:/sqlbackup/Web2.backup' WITH INIT;
    ....

2. cmd 실행후
    2001 인 경우 : C:\Program Files\Microsoft SQL Server\MSSQL\Binn 디렉토리로 이동
    2005 인 경우 : C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn 디렉토리로 이동

3. MS SQL 관련서비스 모두 종료
    cmd 명령어 => net stop mssqlserver
    SQLEXPRESS 의 경우 net stop "SQL Server (SQLEXPRESS)"

4. sqlservr -m 또는 net start mssqlserver /m 명령 실행
    SQLEXPRESS 의 경우 net start "SQL Server (SQLEXPRESS)" /m 으로 실행

5. SQL 접속
    2000 인 경우 : 쿼리 분석기
    2005 인 경우 : cmd => sqlcmd -E 명령 실행

6. master 디비 복원
    RESTORE DATABASE master FROM DISK = 'D:/sqlbackup/master.backup';
    복원이 정상적으로 되면 sql 이 종료 됩니다.

7. SQL Server 다시 실행

8. 기타 데이터베이스 복구
    - 백업화일로 복구하는 경우
    RESTORE DATABASE model FROM DISK = 'D:/sqlbackup/model.backup';
    RESTORE DATABASE msdb FROM DISK = 'D:/sqlbackup/msdb.backup';
    RESTORE DATABASE Northwind FROM DISK = 'D:/sqlbackup/Northwind.backup';
    RESTORE DATABASE pubs FROM DISK = 'D:/sqlbackup/pubs.backup';
    RESTORE DATABASE web1 FROM DISK = 'D:/sqlbackup/web1.backup';
    RESTORE DATABASE Web2 FROM DISK = 'D:/sqlbackup/Web2.backup';
    ...

    - mdf ldf 파일로 복구하는 경우
    해당 db의 mdf ldf 을
    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data(2000) 또는
    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data(2005) 로
    복사해 붙여넣기 한다음

    exec sp_attach_db 'DB명'
    ,'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DB명.mdf',
    'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DB명_log.ldf'
    를 실행
2009/04/12 17:33 2009/04/12 17:33
전 PHP에서 외부 웹페이지를 가져올 때 file_get_contents라는 함수를 즐겨쓰는데, 이 놈이 이미지까지 해결해 주더군요. 여기까진 다 아시겠고... :)

위 함수로 해결 안되는 것이 헤더인데요, 마임타입이라던지 잡다한 놈을 얻기 위해서 소켓을 열어서 헤더를 파싱해서 사용하시는 분이 많더군요(PHP Q&A게시판에서 자주 나온다고 할까나...)

1원짜리 팁은 바로 이것입니다.

$http_response_header

이 넘이 있다는 사실을 지금까진 몰랐는데, 상당히 재미있는 놈이더군요. 일단, PHP에서 미리 정의된 변수로, file_get_contents로 외부 페이지던 동영상이던 읽어오면 위 변수에는 헤더가 저장이 됩니다.

메뉴얼을 링크해놨는데, 뭐 이런 식으로 나온다고 하네요.

<?php
file_get_contents("http://example.com");
var_dump($http_response_header);
?>

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}

전 외부 이미지와 마임타입을 가져오기 위해서 다음과 같이 이용합니다.

$a = file_get_contents($imageUrl);
foreach($http_response_header as $item)
{
    if(preg_match('/Content-Type/', $item))
    {
        $contentType = trim(preg_replace('/.+:/', '', $item));
        continue;
    }
}
2009/04/12 17:29 2009/04/12 17:29
만약
 웹서버의 로그 파일이
 /var/log/httpd 폴더에 있다면

 아래와 같은 find 명령어로
 해킹 및 침투 흔적을 찾아 보세요


 find /var/log/httpd -type f -print | xargs grep 'dir=http'


 만약 수두룩하게 로그 기록이 화면에 표시 된다면
 서버 어딘가에 백도어 및 해킹툴이 숨겨져 있을 가능성이
 매우 높습니다.

 물론 로그 파일에서 'dir=http' 라는 내용이 꼭 해킹의 흔적은 아닙니다만
 90% 이상의 웹 해킹이 .. 저런식으로 해서 다른 서버에 있는 해킹툴을 가져오거나
 프로그램을 실행하고 .. 그러더군요


 이런식의 해킹, 특히 최근에(아직까지도) 가장 흔한 제로보드 해킹을 막으려면
 mod_security 라는 모듈을 아파치에 설치 해서 사용하시면
 매우 유용합니다.

 mod_security 설치 및 사용법은
 인터넷 침해사고 대응 지원 센터 홈페이지  http://www.krcert.or.kr/index.jsp
 에서

 [ 공개 웹 방화벽을 이용한 홈페이지 보안 ] 을 참고 하세요
2009/04/12 17:28 2009/04/12 17:28
마우스 올리면 나오는 글인데
되도록이면 귀찮지 않게 간단히 쓰고 싶은분을 위한 100원짜리팁
(입력시 <br>을 넣으면 풍선 도움말에서 줄바꿔서 나옵니다.)

------------자료 입력---------------
1. 어드민에서의 입력문
<input name="clinic15" size="60" type="text" value="<? echo"$row[clinic15]" ?>">
(입력시 예 : 회사:A클리닉<br>장소:강남<br>직종:비뇨기과)

[풍선도움말에서 보여질때]
                        회사:A클릭닉
                        장소:강남
                        직종:비뇨기과

--------------사용-------------------
2. 변수 $test
<?
//퀘리로 값을 불러 들일때 추가할 구문 <br>을 \n 으로 바꿔준다.
$compare_br="<(br|BR|Br|bR)( )*>";
$test=ereg_replace($compare_br,chr(10),$test);
?>


3.홈페이지 아무데나 붙여서 사용하세요.
<a href=http://A병원><Acronym Title='<? echo"$test"; ?>'>A병원</Acronym></a>


--------
갑자기 운영팀에서 리스트에서 설명이 뜨면 좋겠다는 말에
스쿨에서 뒤져서 여기저기 짜집기해서 대충 만들어 줬더니 무척 신기해 하더군요..ㅡ,ㅡ;;
스크립트 덕지덕지 붙이는것도 귀차니즘 때문에 힘들고 해서
다른분들 소스 짜집기 했습니다.
귀차니즘에 걸리신 분들은 대충 붙여 넣기 해서 쓰세요..
변수명은 자신에 맞게 바꾸시기 바랍니다.^^;;
2009/04/12 17:20 2009/04/12 17:20