Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2011/11/23 Windows 2000 커맨드 명령어
  2. 2011/11/23 MS-WORD문서를 읽어 들이려면
  3. 2011/11/23 javascript - 자바스트립트 프린터( 프린트 컴포넌트 무료제공 )
  4. 2011/11/23 윈도우 DNS 백업&복구
  5. 2011/11/23 MS-SQL 함수정의
  6. 2011/11/23 MS-SQL 사용자 소유 권한 변경
  7. 2011/11/23 Ms-Sql LDF파일 용량 줄이기
  8. 2011/11/23 Ms-Sql 암호화, 복호화 (PwdEncrypt, PwdCompare)
  9. 2011/11/23 컴포넌트를 이용한 블로그 XML RSS 구현
  10. 2011/11/23 홈페이지 자동링크 함수
  11. 2011/11/23 HTML가져오기 1
  12. 2011/11/23 ASP 페이지를 엑셀로 불러올때 숫자를 문자 형태
  13. 2011/11/23 유용한 ASP소스
  14. 2011/11/19 윈도우7 테마 창 테두리 얇게/가늘게 만들기
  15. 2011/11/19 ASP - 드라이브 용량 알아내기
  16. 2011/11/19 ASP - URL Encode 엔코더
  17. 2011/11/19 ASP 파일 목록(리스트) 얻어오기
  18. 2011/11/19 마우스로 개체 이동 및 크기 변화, 자동 크기변화
  19. 2011/11/19 aspuploader가 유료라 찾은 Free ASP Upload입니다. 1
  20. 2011/11/19 group by와 distinct를 같이 쓸 때 속도 향상법
  21. 2011/11/19 table 구조에서 열(column) 단위로 숨기기
  22. 2011/11/19 [asp] server.urlencode + download
  23. 2011/11/19 우편번호 검색 API 사용예
  24. 2011/11/19 ASP에서 글씨를 그림으로 만들기 [ImageMagick 활용]
  25. 2011/11/15 압축 암호 해독 프로그램 - Ziperello 3
  26. 2011/11/14 리눅스 상에서 오라클 설치
  27. 2011/11/14 미디어 서비스 운영시 열어주어야할 포트
  28. 2011/11/14 Windows 개인사용자를 위한 MS Security Essentials
  29. 2011/11/14 윈도우7 원격제어 간단하게하기
  30. 2011/11/14 Windows Server 2008 R2로 업그레이드해야 하는 10가지 이유
Windows 2000 커맨드 명령어의 모든것

Windows 2000의 커멘드 명령어는 MS-DOS의 대부분의 기능을 유지시키거나 발전시켰다.
아래의 표의 내용은 MS-DOS에 없는 새로운 Windows 2000 명령, MS-DOS에서 변경된 명령, 사용할 수 없는 MS-DOS 명령들을 나타낸다.

Windows 2000의 새로운 명령

이 표는 MS-DOS에 없는 Windows 2000만의 시스템 명령을 나타낸다.

명령 기능
at 지정된 시간과 날짜에 컴퓨터에서 명령과 프로그램을 실행하도록 예약한다.
cacls 파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정한다.
convert 파일 시스템을 FAT나 FAT32에서 NTFS로 변환한다.
dosonly Command.com 프롬프트에서 MS-DOS 기반이 아닌 응용 프로그램을 시작할 수 없게 한다.
echoconfig MS-DOS 하위 시스템 Config.nt 파일을 읽을 때 메시지를 표시한다.
endlocal 환경 변수의 지역화를 끝낸다.
findstr 정규식을 사용하여 파일에서 텍스트를 검색한다.
ntcmdprompt TSR을 실행한 후나 MS-DOS 응용 프로그램 내에서 명령 프롬프트를 시작한 후에 Command.com 대신 Windows 2000 명령 인터프리터인 Cmd.exe를 실행한다.
popd 가장 최근의 pushd 명령으로 설정된 디렉터리로 변경한다.
pushd popd 명령에 사용할 수 있도록 현재 디렉터리를 저장한 다음 지정된 디렉터리로 변경한다.
setlocal 환경 변수의 지역화를 시작한다.
start 보조 창과 보조 창 고유의 메모리 공간에 지정된 프로그램이나 명령을 실행한다.
Title 명령 프롬프트 창의 제목을 설정한다.
&& 이 기호 뒤의 명령은 기호 앞의 명령이 성공한 경우에만 실행된다.
|| 이 기호 뒤의 명령은 기호 앞의 명령이 실패한 경우에만 실행된다.
& 명령줄의 여러 명령을 구분한다.
( ) 명령들을 그룹화한다.
^ 제어 문자. 명령 기호를 텍스트로 입력할 수 있도록 한다.
; 또는 , 매개 변수를 구분한다.

MS-DOS 명령 변경 사항

이 표는 변경되거나 성능이 향상된 MS-DOS 명령 목록이다.

명령 변경된 기능
chcp 전화면 모드 전용 코드 페이지를 변경한다.
cmd Cmd.exe는 Command.com을 대신한다.
del 새 스위치들이 더 많은 기능을 제공한다.
dir 새 스위치들이 더 많은 기능을 제공한다.
diskcomp /1/8 스위치를 지원하지 않는다.
diskcopy /1 스위치를 지원하지 않는다.
doskey 버퍼 입력을 받아들이는 모든 문자 기반 프로그램에서 사용할 수 있습니다. doskey는 여러 기능들이 향상되었습니다.
format 20.8MB 광드라이브를 지원한다. /b, /s/u 스위치를 지원하지 않는다.
label 볼륨 레이블에 ^ 및 & 기호를 사용할 수 있습니다.
mode 많은 변경 사항이 있습니다.
more 새 스위치들이 더 많은 기능을 제공한다.
path 명령 프롬프트에서 %PATH% 환경 변수는 현재 경로를 새 설정에 추가한다.
print /b, /c, /m, /p, /q, /s, /t/u 스위치를 지원하지 않는다.
prompt 앰퍼샌드($a), 괄호($c 및 $f)와 공백($s)을 프롬프트에 추가할 수 있도록 새 문자 조합을 허용한다.
recover 파일만 복구한다.
rmdir 새로운 /s 스위치는 파일과 하위 디렉터리를 포함하고 있는 디렉터리를 삭제한다.
sort TEMP 환경 변수가 필요하지 않는다. 파일 크기에 제한이 없다.
xcopy 새 스위치들이 더 많은 기능을 제공한다.

사용할 수 없는 MS-DOS 명령

명령 프롬프트에서 다음 MS-DOS 명령들은 사용할 수 없다.

명령 새로운 절차 또는 사용하지 않는 이유
assign Windows 2000에서는 지원되지 않는다.
backup 현재 지원되지 않는다.
choice 현재 지원되지 않는다.
ctty 현재 지원되지 않는다.
dblspace 지원되지 않는다.
defrag Windows 2000은 자동으로 디스크 사용을 최적화한다. 수동으로 디스크를 최적화하려면 내 컴퓨터에서 디스크를 마우스 오른쪽 단추로 눌러 등록 정보를 클릭한 다음 도구 탭에서 지금 조각 모음을 클릭한다.
deltree rmdir /s 명령으로 파일과 하위 디렉터리를 포함하고 있는 디렉터리를 삭제한다.
diskperf 현재 지원되지 않는다.
dosshell Windows 2000에서는 필요 없다.
drvspace Drvspace 프로그램은 현재 지원되지 않는다.
emm386 Windows 2000에서는 필요 없다.
fasthelp 이 MS-DOS 6.0 명령은 Windows 2000의 help 명령과 동일한다. Windows 2000은 온라인 명령 목록도 제공한다.
fdisk 디스크 관리로 Windows 2000에서 하드 디스크를 사용할 수 있도록 준비한다.
include MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
interlnk Interlnk 프로그램은 지원되지 않는다.
intersrv Intersrv 프로그램은 지원되지 않는다.
join 증가된 파티션 크기와 향상된 파일 시스템으로 드라이브를 조인할 필요가 없다.
memmaker Windows 2000은 자동으로 MS-DOS 하위 시스템의 메모리 사용을 최적화한다.
menucolor MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
menudefault MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
menuitem MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
mirror Windows 2000에서는 지원되지 않는다.
msav Msav 프로그램은 지원되지 않는다.
msbackup Windows 2000은 테이프 드라이브가 있는 컴퓨터를 위해(제어판의 관리 도구에서) 백업 유틸리티를 제공하며 테이프 드라이브가 없는 컴퓨터를 위해 xcopy 명령을 제공한다.
mscdex CD-ROM 드라이브를 사용하기 위해 MS-DOS 하위 시스템을 구성할 필요가 없다. Windows 2000은 MS-DOS 하위 시스템에 CD-ROM 드라이브 액세스를 제공한다.
msd 시스템 정보 스냅인을 사용한다. 시스템 정보를 시작하려면 시작, 실행을 클릭한 다음 msinfo32를 입력한다.
numlock 현재 지원되지 않는다.
power Power 유틸리티는 지원되지 않는다.
restore 현재 지원되지 않는다.
scandisk Scandisk 유틸리티는 지원되지 않는다.
smartdrv Windows 2000은 자동으로 MS-DOS 하위 시스템에 캐시 기능을 제공한다.
submenu MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
sys Windows 2000은 표준 1.2MB나 1.44MB 플로피 디스크에 적당하지 않는다.
undelete Windows 2000에서는 지원되지 않는다.
unformat Windows 2000에서는 지원되지 않는다.
vsafe Vsafe 프로그램은 지원되지 않는다.
2011/11/23 18:47 2011/11/23 18:47
OLE Automation을 이용

보통 컴포넌트를 이용하는 방법, Type Library를 사용하는 Early binding, IDispatch인터폐이스를

이용하는 late binding이 있습니다.

온라인상이라 다 설명하기는 빌더 Server탭에 있는 컴포넌트에 대해서만 설명드리겠습니다.

Server탭에 WordApplication 컴포넌트를 폼에 떨어드리시고 다음과 같이 코딩하세요

void __fastcall TForm1::OpenWordClick(TObject *Sender)
{
WordApplication1->Connect(); //워드개체와 연결
WordApplication1->Visible = true; //화면에 보이게
WordApplication1->Documents->Open(&TVariant("C:\\QFD.doc")); //파일불러오기
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CloseWordClick(TObject *Sender)
{
WordApplication1->Disconnect(); //워드개체 닫기
}
//---------------------------------------------------------------------------
2011/11/23 18:46 2011/11/23 18:46

// JavaScript Document
// Body에 object함수 호출
function object()
{
document.write("<object id='factory' style='display:none' classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814' codebase='http://www.meadroid.com/scriptx/smsx.cab'>");
document.write("</object>");
}

function printWindow()
{
factory.printing.header = "" // 머릿글
factory.printing.footer = "" // 바닥글
factory.printing.portrait = true // true 세로출력 , false 가로출력
factory.printing.leftMargin = 10
factory.printing.topMargin = 10
factory.printing.rightMargin = 10
factory.printing.bottomMargin = 10

factory.printing.Print( true, window ) // 대화상자 표시여부 / 출력될 프레임명
}

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

예)

<HEAD>

<SCRIPT language="javascript" src="FactoryPrint.js"></SCRIPT>

</HEAD>

<BODY>

<SCRIPT language="javascript">

object(); // <BODY> 바로밑에서 호출

</SCRIPT>

</BODY>

printWindow() 함수에서 셋팅을 한후

호출하면 프린트가 됨.

2011/11/23 18:46 2011/11/23 18:46

DNS 백업&복구

DNS백업
1. DNS 서비스 중지
2. regedit 실행
3. HKEY_LOCAL_MACHINE\SYSYEM\CirrentcControlSet\Servies\DNS 폴더를 내보내기 선택."DNS1"이라는 파일 이름으로 저장
4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\DNS Server 폴더를 내보내기 선택. "DNS2"라는 파일이름으로 저장
5. Windows\System32\DNS 디렉터리를 찾아서 확장자가 .dns인 모든파일복사
6. DNS 재시작.

DNS복구
1. 복사한 .dns확장자를 가진 파일을 Windows\System32\DNS에 복사
2. DNS서비스를 중지
3. .reg 확장자를 가진 두개의 파일을 클릭. 그리고 레지스트리에 설치 되었는지 확인.
4. DNS 서비스를 재시작.

2011/11/23 18:45 2011/11/23 18:45

MSSQL 함수 사용 및 예문들입니다.

환경은 MS-SQL2005 입니다
※ 문자열 함수 정리

1) Ascii() - 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer)
예) SELECT Ascii('abcd')

>> 결과는 a의 아스키 코드값인 97 반환

2) Char() - 정수 아스키 코드를 문자로 반환(Char)
예) SELECT Char(97)

>> 결과는 a 반환

3) Charindex() - 문자열에서 지정한 식의 위치를 반환
예) SELECT Charindex('b','abcde') >> 결과 : 2
SELECT Charindex('b','abcde',2) >> 결과 : 2
SELECT Charindex('b','abcde',3) >> 결과 : 0

-- 인수값이 3개일때 마지막은 abcde 에서의 문자열 검색 시작위치를 말하며
2인경우는 bcde 라는 문자열에 대해서 검색
3인 경우는 cde 라는 문자열에 대해서 검색 하게 된다.

4) Difference() - 두 문자식에 SUONDEX 값 간의 차이를 정수로 반환

예) SELECT Difference('a','b')

5) Left() - 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환

예) SELECT Left('abced',3) 결과 >> 3

6) Len() - 문자열의 길이 반환

예) SELECT Len('abced') 결과>>5

7) Lower() - 대문자를 소문자로 반환

예) SELECT Lower('ABCDE') 결과 >> abcde

8) Ltrim() - 문자열의 왼쪽 공백 제거

예) SELECT Ltrim(' AB CDE') 결과>> AB CDE

9)Nchar() - 지정한 정수 코드의 유니코드 문자 반환

예) SELECT Nchar(20) 결과 >>

10) Replace - 문자열에서 바꾸고 싶은 문자 다른 문자로 변환

예) SELECT Replace('abcde','a','1') 결과>>1bcde

11) Replicate() - 문자식을 지정한 횟수만큼 반복

예) SELECT Replicate('abc',3) 결과>> abcabcabc

12) Reverse() - 문자열을 역순으로 출력

예) SELECT Reverse('abcde') 결과>> edcba

13) Right() - 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )

예) SELECT Right('abcde',3) 결과>> cde

14)Rtrim() - 문자열의 오른쪽 공백 제거

예) SELECT Rtrim(' ab cde ') 결과>> ' ab cde' <-- 공백구분을위해 ' 표시

15) Space() - 지정한 수만큼의 공백 문자 반환

예) SELECT Space(10) 결과 >> ' ' -- 그냥 공백이 나옴

확인을 위해서 SELECT 'S'+Space(10)+'E' 결과 >> S E

16) Substring() - 문자,이진,텍스트 또는 이미지 식의 일부를 반환

예) SELECT Substring('abcde',2,3) 결과>> bcd

17)Unicode() - 식에 있는 첫번째 문자의 유니코드 정수 값을 반환

예)SELECT Unicode('abcde') 결과 >> 97

18)Upper() - 소문자를 대문자로 반환

예) SELECT Upper('abcde') 결과>> ABCDE

※ 기타 함수 Tip

19) Isnumeric - 해당 문자열이 숫자형이면 1 아니면 0을 반환

>> 숫자 : 1 , 숫자X :0

예) SELECT Isnumeric('30') 결과 >> 1

SELECT Isnumeric('3z') 결과 >> 0

20) Isdate() - 해당 문자열이 Datetime이면 1 아니면 0
>> 날짜 : 1 , 날짜 X :0
예) SELECT Isdate('20071231') 결과 >> 1

SELECT Isdate(getdate()) 결과 >> 1
SELECT Isdate('2007123') 결과 >> 0

SELECT Isdate('aa') 결과 >> 0

※ 날짜및 시간함수 정리

getdate() >> 오늘 날짜를 반환(datetime)

1> DateAdd() - 지정한 날짜에 일정 간격을 + 새 일정을 반환

예) SELECT Dateadd(s,2000,getdate())

2> Datediff() - 지정한 두 날짜의 간의 겹치는 날짜 및 시간 범위 반환

예)SELECT DateDiff(d,getdate(),(getdate()+31))

3> Datename() -지정한 날짜에 특정 날짜부분을 나타내는 문자열을 반환

예) SELECT Datename(d,getdate())

4> Datepart() -지정한 날짜에 특정 날짜부분을 나타내는 정수를 반환

예) SELECT Datepart(d,getdate())

>> Datename , Datepart 은 결과 값은 같으나 반환 값의 타입이 틀림.

5> Day() -지정한 날짜에 일 부분을 나타내는 정수를 반환

예) SELECT Day(getdate()) -- 일 반환

SELECT Month(getdate()) -- 월 반환

SELECT Year(getdate()) -- 년 반환

6> Getutcdate() -현재 UTC 시간을 나타내는 datetime 값을 반환

예) SELECT Getutcdate()

2011/11/23 18:44 2011/11/23 18:44
exec sp_changeobjectowner '소유자.테이블명','변경후소유자'
exec sp_changeobjectowner 'getmeout.mem_staff_rank_temp','dbo'
2011/11/23 18:44 2011/11/23 18:44
use testdb

-- DB 정보 보기
exec sp_helpdb testdb

-- LDF 파일 크기 줄이기 -- 트랜잭션 로그파일을 10메가로 생성
backup log testdb with TRUNCATE_ONLY
DBCC SHRINKFILE ([testdb_Log], 10)

-- MDF 파일 크기 줄이기
DBCC SHRINKDATABASE(testdb)

-- MS-SQL의 ldf 파일 용량 줄이기
-- 트랜잭션 로그파일 최소의 단위로 축소
backup log testdb with truncate_only

-- 트랜잭션 로그파일을 삭제
backup log testdb with no_log

-- 트랜잭션 로그파일을 10메가로 생성
dbcc shrinkfile (testdb_log, 10)

DBCC SHRINKFILE (file_name, target_size)
DBCC SHRINKDATABASE (database_name, target_percent)

2011/11/23 18:43 2011/11/23 18:43
Ms-Sql의 컬럼을 암호화하기 위한 내장함수가 있다.

-PwdEncrypt : 컬럼의 데이터를 암호화한다. ex. PwdEncrypt('암호화할 데이터')
-PwdCompare : 암호화한 데이터를 비교해서 확인한다. ex. PwdCompare('데이터', 암호화컬럼)

간단 예제

create table TEST (
password varchar(100)
);

테이블을 만든 후

insert into TEST values (PwdEncrypt('1111'));

데이터를 암호화하여 넣은 후 select해보자

select PwdCompare('1111', password) from TEST
결과 : 1

select PwdCompare('2222', password) from TEST
결과 : 0

PwdCompare의 결과는 1이나 0으로 리턴된다. 1이면 맞는거고 0이면 틀린것이다.
2011/11/23 18:43 2011/11/23 18:43
꼭 블로그가 아니더라도 XML RSS 는 이제 어느정도 대세가 되어가고 있는 듯합니다. 이제는 언론사나 커뮤니티 등에서도 RSS 가 나옵니다.. 그리고 #Reader나 Xpyder,FreeDemon 등의 RSS 구독기 또한 점차 넓게 사용되고 있습니다. 여기서는 이러한 XML RSS 를 구현하는 방법을 ASP 기반에서 XML 컴포넌트를 이용하여 구현하고자 합니다.

사실 RSS 를 구현할때 사실 단순히 텍스트 파일로 뿌려주고 ContentType 만 xml 로 선언해줘도 가능합니다. 그러나 조금은 다르게 해보고 싶다는 저의 호기심도 있고, 확장성과 향후 유지보수에 조금이라도 더 손쉽게 하기위해서 윈도우즈 2000 에 기본제공되어 있는 XML 관련 컴포넌트를 이용하여 구현해보았습니다. 물론 아래 소스는 지금 제 블로그 RSS 의 원형이 되고 있습니다.

한가지 주의 하실점은 XML 선언전에 어떠한 개행(\n) 이나 문자가 들어가서는 안됩니다. PHP 에서의 쿠키과 마찬가지 입니다.

<?xml version="1.0" encoding="EUC-KR" ?>
<%
Response.ContentType = "text/xml"
Set xmlPars = Server.CreateObject("Msxml2.DOMDocument")

' 여기서 부터 rss 정보를 담는다.
Set rss = xmlPars.CreateElement("rss")
rss.setAttribute "version", "2.0"
rss.setAttribute "xmlns:dc", "http://purl.org/dc/elements/1.1/"
rss.setAttribute "xmlns:sy", "http://purl.org/rss/1.0/modules/syndication/"
rss.setAttribute "xmlns:admin", "http://webns.net/mvcb/"
rss.setAttribute "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlPars.AppendChild(rss)

'<channel> 시작

Set Channel = xmlPars.CreateElement("channel")
rss.AppendChild(Channel)

'<title>정보
Set title = xmlPars.CreateElement("title")
Channel.AppendChild(title)
Channel.childnodes(0).text = "블로그 제목"

'<link>정보
Set channel_link = xmlPars.CreateElement("link")
Channel.AppendChild(channel_link)
Channel.childnodes(1).text = "블로그 주소"

'<description>정보
Set description = xmlPars.CreateElement("description")
Channel.AppendChild(description)
Channel.childnodes(2).text = "블로그 설명"

'<dc:language>정보
Set language = xmlPars.CreateElement("dc:language")
Channel.AppendChild(language)
Channel.childnodes(3).text = "ko"

'<image>정보
Set image = xmlPars.CreateElement("image")
Channel.AppendChild(image)

'이미지 정보에 들어갈 것들
set i_title = xmlPars.CreateElement("title")
set i_url = xmlPars.CreateElement("url")
set i_width = xmlPars.CreateElement("width")
set i_height = xmlPars.CreateElement("height")

image.AppendChild(i_title)
image.AppendChild(i_url)
image.AppendChild(i_width)
image.AppendChild(i_height)

image.childnodes(0).text = "이미지 제목"
image.childnodes(1).text = "이미지 경로"
image.childnodes(2).text = "이미지 가로 사이즈"
image.childnodes(3).text = "이미지 세로 사이즈"

' 여기서 부터는 포스트에 대해서 출력

' 우선 데이터를 읽어오자
SQL = "해당되는 포스트에 대한 쿼리문"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL,접근문자열,adOpenForwardOnly,adLockPessimistic,adCmdText

' 여기서 부터 루프를 돌리자.
Do until rs.EOF

'<item> 이라는 노드를 추가
Set item = xmlPars.CreateElement("item")
Channel.AppendChild(item)

' 여기서부터 해당 포스트의 세부 정보를 출력
set title = xmlPars.CreateElement("title") '
set link = xmlPars.CreateElement("link")
set description = xmlPars.CreateElement("description")
set dcdate = xmlPars.CreateElement("dc:date")
set dcsubject = xmlPars.CreateElement("dc:subject")

item.AppendChild(title)
item.AppendChild(link)
item.AppendChild(description)
item.AppendChild(dcdate)
item.AppendChild(dcsubject)

item.childnodes(0).text = rs("제목필드")
item.childnodes(1).text = rs("포스트 고유 url 필드")
item.childnodes(2).text = rs("내용 필드")
item.childnodes(3).text = rs("날짜")
item.childnodes(4).text = rs("포스트의 분류")

rs.movenext
loop

' 마지막으로 최종적으로 뿌려주자.
Response.Write xmlPars.xml

'마무리 ^^;

rs.close

set rs = nothing

Set xmlPars = nothing
%>

2011/11/23 18:42 2011/11/23 18:42
<%

Function RegExpContent(str)

Dim ptrn, repstr

ptrn = "((http|https|ftp|telnet|news):\/\/[a-z0-9-]+\.[][a-zA-Z0-9:&#@=_~%;\?\/

\.\+-]+)"

repstr = "<a href=""$1"" target=""_blank"">$1</a>"

RegExpContent = ReplaceEreg(ptrn, repstr, str)

End Function

Function ReplaceEreg(ptrn, repstr, str)

Dim regEx

Set regEx = New RegExp

regEx.Pattern = ptrn

regEx.IgnoreCase = True

regEx.Global = True

ReplaceEreg = regEx.Replace(str, repstr)

End Function

content = "다음은 asprun 홈페이지 주소이다. http://www.naver.com/ 기억해주세요"

content = RegExpContent(content)

content = "<pre>"& content &"</pre>"

response.write content

%>

2011/11/23 18:41 2011/11/23 18:41

<%
' ===========================
' Function to GetHTMLBin
' ===========================
Function GetHTMLBin(URLaddress)

Dim Http

Set Http = CreateObject("Microsoft.XMLHTTP")
Http.Open "GET", URLaddress, False
Http.Send
GetHTMLBin = Http.responseBody
Set Http = Nothing
End Function

' ===========================
' Function to BinToText
' ===========================
Function BinToText(varBinData, intDataSizeInBytes) ' as String

Const adFldLong = &H00000080
Const adVarChar = 200

Set objRS = CreateObject("ADODB.Recordset")
objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
objRS.Open
objRS.AddNew
objRS.Fields("txt").AppendChunk varBinData
BinToText = objRS("txt").Value
objRS.Close
Set objRS = Nothing

End Function

GetURL = trim(cizleUrl)&"?CHNL_ID="&trim(CHNL_ID)&"&CHNL_PWD="&trim(CHNL_PWD)&"&CHNL_CD="&trim(CHNL_CD)&"&USER_ID="&chk_id
HTMLBin = GetHTMLBin(GetURL)
html = BinToText(HTMLBin,32000)

Response.write html & "<BR>"
%>

2011/11/23 18:41 2011/11/23 18:41
ASP 페이지를 엑셀로 불러올때 숫자를 문자 형태

mso-number-format:\@

mso-number-format:"0\.000"

mso-number-format:\#\,\#\#0\.000

mso-number-format:"mm\/dd\/yy"

mso-number-format:"d\\-mmm\\-yyyy"

mso-number-format:Percent

ex)

CSS style sheet:

td.accountnum

{mso-number-format:\@}

<td class="accountnum">01070000<td>

2011/11/23 18:40 2011/11/23 18:40

'===================================================================
'== 설명 : 문장을 해당 자릿수만큼 <br>이 들어간 문장으로 변환
'== 이름 : MakeBr(Str,Pos)
'== 변수 : Str(String),Pos(Int)
'== 반환 : String
'===================================================================
Function MakeBr(Str,Pos)

Dim StrLen, TmpStr, i, Midcnt, Start, Surplus

StrLen = len(Str)

If (StrLen Mod Pos) = 0 then
MidCnt = Fix(StrLen/Pos)
Else
MidCnt = Fix(StrLen/Pos) + 1
End If

for i = 1 to MidCnt
if i = 1 then
TmpStr = TmpStr&Mid(Str,i,pos)&"<br>"
Else
TmpStr = TmpStr&Mid(Str,((i-1)*Pos)+1,pos)&"<br>"
End If
next

MakeBr = TmpStr
End Function

' ##################################################################################
' 검색에서 selected
' ##################################################################################
Function getSelected(search,t)
if search = t then
getSelected ="selected"
end if
End function

' ##################################################################################
' checked
' ##################################################################################
Function getChecked(tag,y)
If tag = y then
getChecked = "checked"
End if
End function

' ##################################################################################
' 자동링크
' ##################################################################################

FUNCTION autolink(CONTENT)

DIm Re
Set re = New RegExp

' First Pass for http
re.Pattern = "(\w+):\/\/([^/:]+)(:\d*\b)?([^# \n<]*).*\n"
re.Pattern = "http://([0-9a-zA-Z./@:~?&=_-]+)"
re.Global = True
re.IgnoreCase = True

' ASP seems to be not supporting .MultiLine method.
're.MultiLine = True

CONTENT = re.Replace(CONTENT,"<a target=_blank href='http://$1'>http://$1</a>")

' Second Pass for mail
re.Pattern = "([_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*)@([0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)"
autolink = re.Replace(CONTENT,"<a href='mailto:$1@$3'>$1@$3</a>")

END FUNCTION

' ##################################################################################
' 문자열 체크 (리턴값:boolean)
' ##################################################################################
Function chkStrFlag(Val, chkStr)
Dim flag, MyPos

If Val = "" then
flag = false
Else
Mypos =Instr(Val,chkStr)
If MyPos = 0 then
flag=false
Else
flag=true
End If
End If

chkStrFlag = flag
End Function

'##################################################################################
' 문자열 체크 (공백이나 NULL값 체크)
' Val : 체크 값, r_Val (대체값)
'##################################################################################
Function replaceVal(val, r_Val)
Dim flag, MyPos

If (val = "") or IsNull(Val) then
replaceVal = r_Val
Else
replaceVal = val
End If
End Function

'##################################################################################
' 숫자값 자릿수만큼 문자로 변경 (공백이나 NULL값 체크)
' Val : 체크 값, chkLen 자릿수 , r_Val(대체값)
'##################################################################################
Function chkLenReplaceVal(val,chkLen, r_Val)
Dim chkCnt, MyPos
chkCnt = len(Cstr(val))

If chkCnt < chkLen then
chkLenReplaceVal = val

for i = 1 to (chkLen-chkCnt)
chkLenReplaceVal = r_Val&chkLenReplaceVal
next
Else
chkLenReplaceVal = val
End If

End Function

'##################################################################################
' 널값,""값 확인
' Val : 체크 값
' retun 값 : true, false
'##################################################################################
Function chkBlank(val)
If (val = "") or IsNull(Val) then
chkBlank = true
Else
chkBlank = false
End If
End Function

'##################################################################################
' 비교값 리턴
' Val : 체크 값
' retun 값 : true, false 또는 대치 문장
'##################################################################################
Function replaceStr(str, chkStr, replaceStr1, replaceStr2)
If str = chkStr then
replaceStr = replaceStr1
Else
replaceStr = replaceStr2
End If
End Function

'##################################################################################
' NULL값 만들기
' Val : 값
' retun 값 : NULL, 문장
'##################################################################################

Function makeNull(str)
If str="" or IsNull(str) then
makeNull = "NULL"
Else
makeNull = str
End IF
End Function

'##################################################################################
' HTML 태그 지우기 (정규식표현)
' 인자 : strHTML:문장, patrn : 패턴 문장
' retun 값 : String
'##################################################################################

Function stripHTML(strHTML, patrn)
Dim objRegExp, strOutput
Set objRegExp = New Regexp

objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = patrn

'objRegExp.Pattern = "<.+?>" '' 태그완전히없앰

strOutput = objRegExp.Replace(strHTML, "")

stripHTML = strOutput

Set objRegExp = Nothing
End Function

'##################################################################################
' 문자 잘라내기
'##################################################################################
Function CutString(Str,Length,Patten)
If Len(Str) > Length Then
CutString = Left(Str,Length-3) & patten
Else
CutString = Str
End If
End Function

별건 아니구요..그냥 가끔 디버깅시에 쓰는 함수에요
####################################################
Sub DbPrintErrMsg(obj)

Dim errLoop
For Each errLoop In obj.Errors
response.write "#############<br>"
response.write "Error Number: " & errLoop.Number & "<br>"
response.write "Description: " & errLoop.Description & "<br>"
response.write "Source: " & errLoop.Source & "<br>"
response.write "SQL State: " & errLoop.SQLState & "<br>"
response.write "Native Error: " & errLoop.NativeError & "<br>"
response.write "#############<br>"
Next
End Sub

########폼값 확인할때###################
Sub Prt_RequestForm(obj)

Dim item
For Each item In obj
response.write "#############<br>"
response.write item&" : " &obj(item)& "<br>"
response.write "#############<br>"
Next
End Sub
ex) Prt_RequestForm(Request.Form), Prt_RequestForm(Request.QueryString),
Prt_RequestForm(UploadForm)

첨부파일이 없습니다.
2011/11/23 18:40 2011/11/23 18:40
리눅스에 GNOME나 맥OS X들을 보면 창 테두리가 없거나 매우 가늘게 되어 있다. 그래서 그런지 창이 더 심플해보이고 넓어 보이기까지 한다. 하지만 윈도우7 테마는 테두리가 조금 두꺼워서인지 뚱뚱한 감이 있는데, 최대한 테두리를 가늘게 바꿔 보았다.

윈도우7 검색 부분에 "창 색" 치고 엔터를 누르면 바로 "창 색 및 모양" 설정으로 가진다
사용자 삽입 이미지
윈도우7 시작버튼-> 검색 부분에 "창 색"을 검색하면 "창 투명 효과 색 변경"이 검색되면 클릭하여 <고급 모양 설정> 그리고 테투리 안쪽 여백을 선택하여 크기를 0으로 바꿔준다..
2011/11/19 11:54 2011/11/19 11:54

<%
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set c_drive = fs.GetDrive("c:")
Set g_drive = fs.GetDrive("g:")
Set h_drive = fs.GetDrive("h:")

Dim cmax, gmax, hmax
Dim c, g, h
Dim cper, gper, hper
Dim cfmt, gfmt, hfmt
Dim gbyte
gbyte = 1024*1024*1024

' C, G, H 드라이브 총 용량
cmax = CInt(c_drive.TotalSize / gbyte)
gmax = CInt(g_drive.TotalSize / gbyte)
hmax = CInt(h_drive.TotalSize / gbyte)

' C, G, H 드라이브 남은 용량
c = CInt(c_drive.FreeSpace / gbyte)
g = CInt(g_drive.FreeSpace / gbyte)
h = CInt(h_drive.FreeSpace / gbyte)

'남은 비율 계산
div100 = cmax / 100
cper = CInt(c / div100)
div100 = gmax / 100
gper = CInt(g / div100)
div100 = hmax / 100
hper = CInt(h / div100)

'NTFS, FAT, FAT32등 드라이브 포멧형식
cfmt = c_drive.FileSystem
gfmt = g_drive.FileSystem
hfmt = h_drive.FileSystem

%>
<html>
<head>
<title> 하드 드라이브 용량 알아내기 </title>
</head>

<body style="font-size:9pt;">
<h1>하드 드라이브 용량 체크 예제</h1><p>

<b>C: 드라이브의 용량<b> : <%=cmax%> / <%=c%> GB [남은 비율:<%=cper%>%] 형식:<%=cfmt%><br>
<table border="0" height="50" style="font-size:9pt;" cellspacing="0">
<tr>
<td align="center" bgcolor="#FF0000" width="<%=600-(cper*6)%>">사용 용량(<%=cmax%>GB)</td>
<td align="center" bgcolor="#00FF00" width="<%=cper*6%>">사용 가능 용량(<%=c%>GB)</td>
</tr>
</table>
<p>
<b>G: 드라이브의 용량<b> : <%=gmax%> / <%=g%> GB [남은 비율:<%=gper%>%] 형식:<%=gfmt%><br>
<table border="0" height="50" style="font-size:9pt;" cellspacing="0">
<tr>
<td align="center" bgcolor="#FF0000" width="<%=600-(gper*6)%>">사용 용량(<%=gmax%>GB)</td>
<td align="center" bgcolor="#00FF00" width="<%=gper*6%>">사용 가능 용량(<%=g%>GB)</td>
</tr>
</table>
<p>
<b>H: 드라이브의 용량<b> : <%=hmax%> / <%=h%> GB [남은 비율:<%=hper%>%] 형식:<%=hfmt%><br>
<table border="0" height="50" style="font-size:9pt;" cellspacing="0">
<tr>
<td align="center" bgcolor="#FF0000" width="<%=600-(hper*6)%>">사용 용량(<%=cmax%>GB)</td>
<td align="center" bgcolor="#00FF00" width="<%=hper*6%>">사용 가능 용량(<%=h%>GB)</td>
</tr>
</table>
</body>
</html>

2011/11/19 11:47 2011/11/19 11:47

<html>
<head>
<title> URL encode </title>
</head>

<body>
<h2><font color='blue'>장인수</font></h2><br>
<%=Server.HTMLEncode("<h2><font color='blue'>장인수</font></h2>")%><p>
<%=Server.HTMLEncode("<%=Server.ScriptTimeout%\>")%><p>
<a href="ok.asp?width=<%=Server.URLEncode("50%오십")%>">50%</a><p>
<a href="ok.asp?width=50%오십">50%</a>

</body>
</html>

2011/11/19 11:46 2011/11/19 11:46

<%
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set folderObj = fs.GetFolder(Server.MapPath("."))
Set files = folderObj.Files
%>
<html>
<head>
<title> 파일 리스트 얻기 예제 </title>
</head>

<body>
<h2><%=Server.MapPath(".")%>디렉토리 목록</h2>
<table border="1" width="900" style="font-size:9pt;" cellpadding="2">
<tr>
<th>이름</th>
<th>크기</th>
<th>형식</th>
<th>생성 시각</th>
<th>마지막 엑세스 시간</th>
<th>마지막 수정 시간</th>
</tr>
<%
For Each file in files
%>

<tr>
<td><a href="<%=file.name%>"><%=file.name%></a></td>
<td><%=file.size%> byte</td>
<td><%=file.type%></td>
<td><%=file.DateCreated%></td>
<td><%=file.DateLastAccessed%></td>
<td><%=file.DateLastModified%></td>
</tr>
<%
Next
%>

</table>
</body>
</html>

2011/11/19 11:45 2011/11/19 11:45

마우스로 개체 이동 및 가로 크기 변화(좌우 개체)에다가

지정된 크기까지 줄여주는 함수를 추가했다.

사용법은 아래와 같다.

e_resize('rightview','leftview','right',400)

function e_resize(leftobjid,rightobjid,direction,limit)

수정 : 가속도 추가 및 함수 간결화

가속도 추가 - 처음엔 빠르다가 나중엔 느림

함수 간결화 - 입력 값을 6개에서 4개로 줄임

입력 값 감소로 인한 오류 발생 -> clreaTimeout 추가

var move=false

var x=0,y=0

function movespan(e){

if(move && movingspanobj!=null){

if(e){

//불여우용

x=e.pageX

y=e.pageY

}

else{

//ie용

x=window.event.clientX

y=window.event.clientY

}

try{

document.selection.empty()

}

catch(e){

window.getSelection().removeAllRanges();

}

//세로 이동

movingspanobj.style.top=y-distance_y

//movingspanobj.style.top=y-20

//가로 이동

movingspanobj.style.left=x-distance_x

//movingspanobj.style.left=((x-movingspanobj.offsetWidth/2)-150)

}

}

function e_resizespan(e){

if(move && movingspanobj!=null){

if(e){

//불여우용

x=e.pageX

}

else{

//ie용

x=window.event.clientX

}

try{

document.selection.empty()

}

catch(e){

window.getSelection().removeAllRanges();

}

//가로 이동

movingspanobj.style.left=x-distance_x

//movingspanobj.style.left=((x-movingspanobj.offsetWidth/2)-150)

var templeftwidth=leftspanwidth-(first_x-x)

var temprightwidth=rightspanwidth+(first_x-x)

//너비 변화

leftspanobj.style.width=templeftwidth

rightspanobj.style.width=temprightwidth

//내부 span 크기 조절

var objs=leftspanobj.getElementsByTagName('span')

for(var i=objs.length;i--;){

objs[i].style.width=templeftwidth

}

objs=rightspanobj.getElementsByTagName('span')

for(var i=objs.length;i--;){

objs[i].style.width=temprightwidth

}

//내부 img 크기 조절

objs=leftspanobj.getElementsByTagName('img')

for(var i=objs.length;i--;){

objs[i].style.width=templeftwidth

}

objs=rightspanobj.getElementsByTagName('img')

for(var i=objs.length;i--;){

objs[i].style.width=temprightwidth

}

}

}

var distance_x,distance_y,movingspanobj,leftspanobj,rightspanobj,leftspanwidth,rightspanwidth,first_x

var e_resize_timeout

document.onmousedown=new Function('move=true')

document.onmouseup=new Function('move=false;movingspanobj=null')

function movethis(spanobj){

if(window.event){

//ie용

x=window.event.clientX

y=window.event.clientY

}

else{

//불여우용

x=e.pageX

y=e.pageY

}

movingspanobj=spanobj

distance_x=x-movingspanobj.offsetLeft

distance_y=y-movingspanobj.offsetTop

movingspanobj.onmousemove=movespan

}

function e_resizethis(spanobj,leftobjid,rightobjid){

if(window.event){

//ie용

x=window.event.clientX

}

else{

//불여우용

x=e.pageX

}

first_x=x

movingspanobj=spanobj

leftspanobj=document.getElementById(leftobjid)

rightspanobj=document.getElementById(rightobjid)

distance_x=x-movingspanobj.offsetLeft

leftspanwidth=leftspanobj.offsetWidth

rightspanwidth=rightspanobj.offsetWidth

movingspanobj.onmousemove=e_resizespan

}

function e_resize(leftobjid,rightobjid,direction,limit){

clearTimeout(e_resize_timeout)

var movesize=0

leftspanobj=document.getElementById(leftobjid)

rightspanobj=document.getElementById(rightobjid)

if((leftspanobj.offsetWidth>limit && direction=='left') || (rightspanobj.offsetWidth>limit && direction=='right')){

if(direction=='left'){

movesize=Math.ceil(Math.abs(leftspanobj.offsetWidth-limit)/20)

leftspanobj.style.width=leftspanobj.offsetWidth-movesize

rightspanobj.style.width=rightspanobj.offsetWidth+movesize

}

else{

movesize=Math.ceil(Math.abs(rightspanobj.offsetWidth-limit)/20)

leftspanobj.style.width=leftspanobj.offsetWidth+movesize

rightspanobj.style.width=rightspanobj.offsetWidth-movesize

}

e_resize_timeout=setTimeout('e_resize("'+leftobjid+'","'+rightobjid+'","'+direction+'",'+limit+')',10)

}

}

2011/11/19 11:41 2011/11/19 11:41

무료인 줄 알았던 aspuploader가 굉장히 비싼 놈이란 걸 알고 나서 찾아 나섰더니

비슷하지만(순수 asp code로 만든 upload) 기능은 upload기능만 있는 무료 프로그램이 있네요.

upload기능만 있으면 되지 다른 거야 뭐...

어차피 다른 것들로 할 때도 구현해 줘야 했던 거니까 (용량 제한이나, 확장자 제한 같은 것들)

단점이라고까지 할 건 아닌 듯.

딱 upload기능만 있기 때문에 뭔가 더 설명할 필요를 못 느끼겠네요.

아래 주소로 가면 받을 수 있습니다.

http://www.freeaspupload.net/

2011/11/19 11:41 2011/11/19 11:41

select

name,

count(distinct ip) visitcount

from member

group by name

위와 같은 query에서 group by와 distinct가 동시에 일어난다.

이렇게 썼을 때 32초 걸리던 query가 27초 걸리도록 줄일 수 있었다.

(DB에서 1초를 넘어 섰다는 건 이미 문제가 있는 거지만 통계 페이지라 일단 통과)

select

name,

count(*) visitcount

from (

select distinct

name,

ip

from member

) a

group by name

distinct를 먼저 한 후에 group by를 했을 때 약간 더 빨랐다.

15~6% 정도...

mssql에서 index 다 태운 상황이었다. (최소한 분석기에서 index 없다는 얘기는 없을 정도)

2011/11/19 11:39 2011/11/19 11:39

display:none;visibility:collapse

ie 기준으로 일부에서는 display:none만 되고 일부에서는 visibility:collapse만 된다.

그래서 두 개 다 쓰니 원하는 대로 된다.

colgroup이나 col tag에 쓰면 된다.

-- 수정 --

실제로 동시에 사용하게 되면 ie8에서는 안 먹는다.

ie8에서 display:none이 안 먹어서 찾은 건데...

none인데 보여주는 건 뭐냐고.

visibility 단독으로 사용하면 된다.

그래서 이렇게 했다.

.hidecol1{display:none}

.hidecol2{visibility:collapse}

function showgroup(id){

if(document.all && (navigator.appVersion.indexOf("MSIE 6.0")>=0 || navigator.appVersion.indexOf("MSIE 7.0")>=0)){

$('colgroup[id!=basic]').addClass('hidecol1')

$('#'+id).removeClass('hidecol1')

}

else{

$('colgroup[id!=basic]').addClass('hidecol2')

$('#'+id).removeClass('hidecol2')

}

}

-- 수정 2 --

위 수정 방식으로 하면 작동은 하는데 7 이하에서 잔상이 남는 현상이 생긴다.

왜 생기는지도 모르겠고 어떻게 없애야 하는지도 모르겠어서

전체 td에 class를 지정해고 class로 선택해서 숨기도록 했다.

위 방법과 비교해도 속도가 상당히 느리다.

var currentclass='player'

function showgroup(targetclass){

$('.'+currentclass).hide()

$('.'+targetclass).show()

currentclass=targetclass

}

2011/11/19 11:38 2011/11/19 11:38
한글 파일을 다운로드 할 때 한글이 깨지는 경우가 생긴다.
이때 파일이름에 server.urlencode를 하면 한글이 깨지지 않는다.
그러나 확장자 뒤에 [1] 혹은 [2] 혹은 [3] 같은 숫자가 붙는다.
원인은 확장자 앞의 .
해결책은 파일 이름과 확장자를 따로 구분해서 파일 이름만 server.urlencode 하기
Response.AddHeader "Content-Disposition","attachment; filename=" & server.urlencode(left(fileName,len(filename)-4)) & right(filename,4)
이런 식으로.
물론 instrrev를 써서 점의 위치를 알아내서 나누는 방법도 있을 수 있고
split을 써서 .을 구분자로 해서 배열 처리하는 방법도 있겠다.
어느 것이 편할 지는 개발자 맘대로.
2011/11/19 11:37 2011/11/19 11:37

우편번호를 찾을 읍/면/동을 입력하세요.

<form method=post action=http://biz.epost.go.kr/KpostPortal/openapi target=postframe>

<input type=hidden name=regkey value=신청하면발급해주는문자열>

<input type=hidden name=target value=post>

<input type=text name=query>

<input type=submit value=검색>

</form>

<iframe name=postframe id=postframe width=600 height=300 frameborder=0 scrolling=yes></iframe>

2011/11/19 11:37 2011/11/19 11:37

ImageMagick는 방대한 옵션을 가진 사용하기 까다로운 도구이다.

그 중에서도 한글 표현을 위해서는 좀 더 까다로운 과정을 거쳐야 한다.


1. 일단 ImageMagick을 설치하자.

http://www.imagemagick.org/script/binary-releases.php#windows

내려 받아서 서버에 설치하면 된다.

물론 ASP니까 VBScript!용 OLE 어쩌구를 선택하고 설치한다.

사용자 삽입 이미지

2. 한글을 표현하려면 두 가지에 주의해야 한다.

-font와 -encoding (-encoding은 중요하지 않다. 변경)

예제)

%@Language="VBScript!" CODEPAGE="65001"%

<%option explicit%>

<%

response.charset="utf-8"

session.codepage="65001"

response.codepage="65001"

Response.ContentType="text/html;charset=UTF-8"

Dim objImg

Set objImg = Server.CreateObject("ImageMagickObject.MagickImage.1")

objImg.Convert "-background=lightblue","-fill=blue","-font=Gulim-&-GulimChe-&-Dotum-&-DotumChe","-encoding=Unicode","-pointsize=36","-size=320x","caption:한글 Test입니다.",server.mappath("test.jpg")

Set objImg = Nothing

%>

<img src=test.jpg>


흔히 gulim.ttf 정도를 쓰면 폰트 파일이 지정이 되는데 2008부터는 폰트 파일 이름이 달라서 고생 좀 했다.

서버 시스템의 폰트 이름을 확인하려면 아래 명령어를 실행하면 된다.

설치할 때 Path를 잡아 주지 않았다면 설치된 폴더에서 실행하자.

convert -list font | more

처음에는 자체 포스트스크립트 폰트(한글 미지원)가 나오고, 이후 시스템에 설치되어 있는 폰트들이 나온다.

-family로 지정해서 사용하는 방법은 실패했다.

-font 방법이 성공해서 더 이상 실험해 보지 않는다.


-encoding이 unicode일 때 이미지 생성할 때 1분 12초가 걸렸고, wansung일 때 1분 8초가 걸렸다.

이 정도는 유의미한 차이가 없다고 볼 수 있고, 둘 다 느리기는 마찬가지다.

참고로, 예제의 짧은 문장이 아니라 200자가 넘는 상당히 긴 문장으로 실험을 했다.


Malgun-Gothic으로 -font를 변경하니 1초만에 결과물이 나온다.

예제의 Gulim-&-GulimChe-&-Dotum-&-DotumChe를 Malgun-Gothic으로 바꿔서 사용하시길.

2008에서 실험한 결과임을 상기하고 2003 이하에서는 각자 실험해서 사용하시길.


2011/11/19 11:36 2011/11/19 11:36

① Open을 클릭하여 암호풀기를 원하는 파일을 선택한다.
사용자 삽입 이미지


사용자 삽입 이미지



② 압축된 zip 파일을 다 읽으면 Ok.
사용자 삽입 이미지



③ 압축된 파일들중 하나를 선택한다. (어차피 압축된 파일들의 암호는 하나이다)
사용자 삽입 이미지



④ 비밀번호를 푸는 세가지 방법중 한가지를 선택한 후 NEXT.
사용자 삽입 이미지


  • Brute-Force Attack : 컴퓨터로 암호를 해독하기 위해 가능한 모든 키를 하나하나 추론해 보는 시도
  • Dictionary Attack : 비밀키 암호 알고리듬의 키를 사용할 경우 적용 가능한 공격 방법이다
  • Template-Based Attack : 템플릿 기반의 Brute-Force Attack 일종



⑤ 암호의 구성 단위를 선택 후 NEXT.
사용자 삽입 이미지



※ 대부분 사람들이 숫자와 영소문자의 조합으로만 암호를 만든다
  • 암호가 숫자로만 구성이 되었다면 5분 안쪽에,
  • 암호가 숫자와 영소문자의 조합이면 몇분더,
  • 암호가 특수문자 및 공백을 포함한 모든 문자의 조합으로 만들었다면 암호를 푸는데 2~3주 이상의 시간을 쉼없이 암호 해독 프로그램을 실행 시켜야 될지도 모른다



⑥ 자~ 이제 Star를 클릭하여 본격적으로 암호를 풀어보자.
사용자 삽입 이미지



⑦ 암호는 "123415" (숫자로만 구성된 암호라 몇분 걸리지 않고 풀렸다)
사용자 삽입 이미지
2011/11/15 19:01 2011/11/15 19:01

리눅스 상에서 오라클 설치

# centOS 설치

- centOS 설치시에 xwindow 설치

# 패키지 설치

# yum -y install binutils compat-db control-center gcc gcc-c++ \
glibc glibc-common gnome-libs libstdc++ libstdc++-devel make \
pdksh sysstat xscreensaver compat-libstdc++-33 libaio-devel \
unixODBC unixODBC-devel

# 오라클 계정 설정

# groupadd dba

# useradd -d /oracle -g dba oracle

# passwd oracle

# chmod 755 -R /oracle

# chown -R oracle.dba /oracle

# /etc/sysctl.conf 파일 수정 및 적용

# vi /etc/sysctl.conf

-> 아래 내용 추가

### oracle ###
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576

# /sbin/sysctl -p

-> 위 명령어로 /etc/sysctl.conf 파일에서 추가한 내용 적용

# /etc/security/limits.conf 파일에서 실행되는 프로세스 수 제한

# vi /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

# /etc/pam.d/login 파일에 /lib/security/pam_limits.so 관련 내용 추가

# vi /etc/pam.d/login

-> 맨 아래 줄에 아래 내용 추가

session required /lib/security/pam_limits.so

# oracle 계정의 .bash_profile에서 환경 변수 수정

# vi /oracle/.bash_profile

export ORACLE_BASE=/oracle
export ORACLE_SID=ORCL
export ORACLE_HOME=$ORACLE_BASE/product
export PATH=$PATH:$ORACLE_HOME/bin
export DISPLAY=:0.

# 오라클 계정으로 su 후 파일 압축풀기

# su oracle

# unzip linux_11gR2_database_1of2.zip

# unzip linux_11gR2_database_2of2.zip

# chown -R oracle.dba database

# 압축을 풀면 database라는 디렉토리가 생성되고 runInstaller를 실행한다

- database 디렉토리는 ORACLE_HOME에 있어야 한다

# startx

- Xwindows로 부팅이 되면 터미널에서 runInstaller 파일을 실행

# ./runInstaller

# 오라클 자동 시작 설정

- /etc/oratab 파일에서 맨 아래 내용의 N을 Y로 변경

orcl:/oracle/11g:Y

# 리스너 파일 링크

# ln -s /oracle/product/bin/lsnrctl /usr/bin/lsnrctl

# 오라클 자동실행 스크립트

#!/bin/bash
ORA_HOME="/oracle/product"
ORA_OWNER="oracle"

if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle Startup: failed"
exit 1
fi

case "$1" in
start)
echo -n "Oracle Start: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
echo -n "ORACLE Shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
esac
exit 0

2011/11/14 16:25 2011/11/14 16:25
미디어 서비스는 크게 RTSP와 MMS 이 두가지로 사용되는데 이 서비스의 간략한 설명과 사용되는 포트를 알아보도록하겠습니다.

RTSP[Real Time Streaming Protocol]는 리얼 플레이어로 유명한 리얼 네트워크사와 넷스케이프, BMm 콜롬비아 대학이 공동 개발 참여하여 표준화한 것으로 IETF2326에 정의 되어 있습니다. 주로 인터넷에서 서비스되는 VOD 서비스로 일시정지, 뒤로 가기, 앞으로 가기 등을 지원하는 실시간 스트리밍 서비스를 말합니다. 이 프로토콜에서 사용되는 포트는 RTSPT 를 사용하신다면 TCP port 554를 RTSPU 를 사용하신다면 TCP port 554, UDP port 5005, UDP port 5004를 열어주시면 됩니다.

MMS[Microsoft Media Server]는 단어 그대로 마이크로 소프트에서 제공하는 미디어 서비스입니다. 윈도 미디어 서비스의 유니캐스트 데이터를 전송하는데 쓰입니다. 이서비스에서 사용되는 포트는 MMST 를 사용하신다면 TCP port 1755를 MMSU를 사용하신다면 TCP port 1755, UDP port 1755를 열어 주시면 됩니다.
2011/11/14 16:24 2011/11/14 16:24
Windows OS 를 사용하면서 바이러스에 고생을 하는것은 누구나 한두번을 경험하게 된다.
그래서 백신을 찾게 되는데, 가격에 부담이 되고 무료백신을 사용하자니 믿음이 가지 않고 고민이 된다.

이럴때 Microsoft 사에서 제공하는 MS Security Essentials 를 사용해 보는것도 좋은 대안이다.
일단 Windows 정품사용자에게 제공되고 OS 제작사에서 제공해서 믿을만 하고
결정적으로 무료 제공이다.

아래는 MSSE(Microsoft Security Essentials) 홈페이지에서 제공하는 내용이다.

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

Microsoft Security Essentials 정보

Microsoft Security Essentials는 바이러스, 스파이웨어 및 기타 악성 소프트웨어로부터 PC를 안전하게 지키는 실시간 보호를 제공합니다.

Microsoft Security Essentials는 설치가 간단하고, 사용하기 편리하며, 최신 기술로 PC 보호를 유지하는 Microsoft의 무료* 소프트웨어입니다. 녹색으로 표시되는 한 PC는 안전합니다.

Microsoft Security Essentials는 백그라운드에서 조용히 효율적으로 실행되므로 중단이나 긴 대기 시간 없이 Windows 기반 PC를 사용할 수 있습니다.

Microsoft 맬웨어 보호 센터에서 자세한 내용 보기

Microsoft Security Essentials가 보호할 수 있는 모든 신종 위협 요소에 대한 정보, 정의 및 분석을 Microsoft 맬웨어 보호 센터 (영어로만 제공)에서 확인하세요.

기업에 보안이 필요하신가요?
Microsoft Forefront Client Security로 컴퓨터 보호

*Microsoft Security Essentials를 설치하려면 PC가 Windows 정품을 실행하고 있어야 합니다. 정품에 대한 자세한 내용
===========================================================================================================

개인적으로 사용하고 있는데 업데이트도 방법도 윈도우 업데이트 방법과 유사해서 사용도 편리하다.
그리고 보안 룰에 대한 제공도 꾸준히 업데이트되는데 지금까지 보안때문에 문제된적이 없었다.

Windows 를 사용하고 기존백신에 불신을 가지신 분들은 한번 사용해 볼만하다.

홈페이지 링크
http://www.microsoft.com/security_essentials/default.aspx

2011/11/14 16:23 2011/11/14 16:23

현재 네이트온으로는 윈도우7의 원격지원을 행할수가없다(단, 사용자 계정 컨트롤을 해제하면 가능하다. 해제후 재부팅 사용후 원래대로 돌려놓고 재부팅의 과정은 불가피하다)
윈도우7은 별로 복잡하지 않는 방법으로도 원격 지원을 받을수 있다.(32bit/64bit 모두)
Xp에서 윈도우7. 윈도우7 에서 윈도우7 원격제어 모두 가능하다.

1. 제어판 > 모든 제어판 항목 > 문제해결 로 들어가서 좌측에 "친구에게 도움요청" 클릭
- 제어판에서 보기 기준 을 작은아이콘 으로 하면 문제해결 아이콘을 바로 클릭할수있고, 보기기준범주 로 한경우는 시스템보안 범주에 문제 찾기 및 해결 을 클릭하면 좌측으로 친구에게 도움요청 링크가 보인다.

사용자 삽입 이미지


2. 새로운 사용자에게 도움요청 클릭
- 다른 사용자의 도움요청에 응할 경우라면 하단에 원격지원으로 다른 사용지 지원 을 클릭하여 받은 도움요청 파일과 임호를 넣거나 간단 연결을 이용하면 제어가능

사용자 삽입 이미지

3. 새로운 사용자에게 도움요청 클릭시 도움 요청 종류가 총 3가지가 뜬다.
- 이 도움요청을 파일로저장 : 파일로 저장하고 개인 메일이나, 메신져등으로 전송. (지금은 이 방법으로 진행하여 설명하기로 한다)
- 전자메일을 사용하여 도움요청 : 도움요청파일을 바로 메일로 전송(해당 컴퓨터에 메일 클라이언트가 설정 되어있어야 한다)
- 간단한 연결 사용 : 도와주는 상대방도 간단 연결을 사용할수있다면 이메뉴를 클릭.

사용자 삽입 이미지


4. 이 도움 요청을 파일로 저장 : 찾기 편한 곳으로 선택하여 저장한다. ( 필자는 바탕화면에 저장)
- 초대.msrcIncident 이라는 파일이 저장된다.

사용자 삽입 이미지


5. 해당 파일을 저장하면 바로 윈도우 원격지원 세션창이 뜨는데 이창을 닫으면 원격제어가 종료 되고, 그 첫화면으로 도우미에게 도움 요충 파일과 암호를 알려주세요 라는 문구와 함게 암호가 나온다.

사용자 삽입 이미지


6. 저장한 파일을 전송하고 제어 를 해줄 도우미에게 암호를 알려준다.
- 도우미는 해당 파일을 더블릭하고 암호를 입력하면 제어를 할수있다.
- 원격제어 창에서 채트 라는 메뉴를 클릭하면 채팅 도 가능하다.(채팅/파일보내기 모두 가능하다.)

7. 파일을 받은 도우미는 받은 파일을 더블클릭하면 암호 입력창을 볼수있고 암호를 입력시 원격제어 요청 상태가 되고, 도움을 요청한 사용자가 해당 요청을 허가하면 바로 원격제어가 가능해진다.
2011/11/14 16:22 2011/11/14 16:22

Windows Server 2008 R2로 업그레이드해야 하는 10가지 이유

기업이 운영 비용을 줄이고 업무 효율성을 높일 수 있도록 개발된Windows Server 2008 R2는 기업 전반의
다양한 자원들에 대해 보다 강화된 관리 능력을 제공할 것입니다. 또한 전력 소비를 줄이고 경비를 절감함으로
써 보다 높은 에너지 효율과 성능을 제공하도록 설계되었습니다. 더불어 향상된 지점 기능과 새로운 원격 액세
스 능력, 유연한 서버 관리 기능을 제공하며, 클라이언트와 서버 컴퓨터에 대한 마이크로소프트의 가상화 전략
을 확대합니다.

1. 강력한 하드웨어와 확장 기능들
Windows Server 2008 R2는Windows Server 2008과 동일한 하드웨어 기반에서 보다 잘 운영되도록 설계되었
고, R2는 64비트 아키텍처로 완벽하게 이동할 수 있는 최초의Windows Server 운영 체제입니다
먼저 CPU 지원 능력을 확대하여 고객이 논리 프로세서를 최대 256개까지 운영할 수 있게 해 줍니다.
또한 SLAT(Second Level Translation)을 지원하기 때문에 R2는 최신AMD CPU에서 발견할 수 있는
Enhanced Page Tables 기능과Intel의 최신 프로세스에서 제공되는 유사한Nested Page Tables
기능도 사용할 수 있습니다.
R2 서버가 훨씬 강화된 메모리 관리 능력을 제공.
Windows Server 2008 R2의 Hyper-V는 호스트 컴퓨터에서 최대 64개까지 논리 CPU에 액세스할 수
있습니다.
이러한 능력은 새로운 멀티코어 시스템의 이점을 활용할 수 있게 해 주며, 이는 동시에 각 호스트당
가상 컴퓨터 통합 비율이 보다 향상되었음을 의미하기도 합니다.
2. 전력 소비 감소
서버 상에 있는 프로세서들의 사용 수준을 모니터링하고 그 결과에 맞춰 작업에 필요한 수준으로 전력을 제
한하도록 프로세서의 성능 상태를 수시로 조정하였습니다. Windows Server 2008 R2는 서버와 서버 CPU
전력 소비량을 관리하고 모니터링하는 보다 정밀한 기능을 추가하고 이런 기능을 새로운 전원 기반 그룹
정책 설정을 통해 데스크톱에까지 확장함으로써 절전 기능을 더욱 향상시켰습니다.

3. Windows Server 2008 R2의Hyper-V™

Windows Server 2008 R2는 마이크로소프트의 가상화 기술인 Hyper-V™에 대한 예상 업데이트도 감안하였
습니다.
새로운 Hyper-V™는 기존의 가상 컴퓨터 관리 능력을 증진시키고 특히 서버 마이그레이션과 관련해 구체적
인 IT 문제들을 해결할 수 있도록 설계되었습니다.
Hyper-V™는 Windows Server 2008 R2의 Live Migration을 위해 활성화된 기능입니다. Hyper-V version 1.0
을 통해 Windows Server 2008은Quick Migration이 가능했고, 이는 몇 초가 안 되는 중단 시간 동안 실제 호
스트들 간에 신속하게 가상 컴퓨터들을 이동할 있게 해 주었습니다. 그러나 이러한 수 초의 시간에도 특정한
상황에서는 충분히 문제가 발생할 수 있습니다. 가상 컴퓨터를 호스트하는 서버로 클라이언트를 연결하는
상황이 그러한 예입니다. 그러나 Live Migration 기능을 활용하면 실제 대상 간의 이동이 수 밀리초 안에 이루
어집니다. 이는 마이그레이션 작업이 접속 중인 사용자들에게는 느껴지지 않게 되었다는 것을 의미합니다.
Hyper-V를 위해 System Center Virtual Machine Manager를 설치한 고객은 새로운 VM 기반 성능 및 자원
최적화 기능과 장애 조치 클러스터를 위해 업데이트된 지원 기능들을 비롯해, 추가적인 관리 및 오케스트레이
션 기능을 활용할 수 있을 것입니다.
새로운 Hyper-V™는 또한 중요한 성능 개선 내용들도 선보입니다. 앞서 언급한대로 최대 64개까지 논리 프로
세서를 활용할 수 있으며 SLAT(Second Level Translation)을 위한 호스트 지원 기능을 통해 해당 CPU 성능
을 보강할 수 있습니다. 더불어 VM이 재부팅 이나 VHD로부터의 부팅 없이 바로 저장소를 추가, 제거할 수 있
게 되었습니다.

4. VDI를 통한 데스크톱 비용 절감

Windows Server 2008 R2는 향상된 VDI(Virtual Desktop Integration) 기능을 제공하여 터미널 서비스 기능을
확장함으로써 특정 비즈니스 프로그램을 직원들의 원격지 데스크톱으로 전달할 수 있게 해 줍니다. VDI를 사
용하면 원격 데스크톱 서비스가 컴퓨터에 전송하는 프로그램들을 로컬 컴퓨터의 시작 메뉴에서 해당 기기에
설치되어 있는 프로그램과 함께 언제든 바로 사용할 수 있습니다. 이는 데스크톱 가상화 능력을 향상시키고
보다 뛰어난 응용 프로그램 가상화 기능을 제공합니다.
데스크톱 가상화는 강화된 개별 관리 기능, Windows 7의 가상화 데스크톱과 응용 프로그램의 거의 보이지
않는 통합 능력, 보다 나은 오디오 및 그래픽 성능, 뛰어난 웹 액세스 업데이트 기능 등을 비롯해 다양한 기능
들을 활용할 수 있게 해 줄 것입니다.
VDI는 가상화된 자원들을 보다 효율적으로 사용할 수 있게 해 주고 새롭고 강력한 가상화 관리 기능들은 물론
로컬에 있는 주변 하드웨어 장치들과의 보다 나은 통합 능력을 제공합니다.

5. 보다 효율적이면서도 더욱 쉬워진 서버 관리 기능

• 향상된 데이터센터 전력 소비 및 관리 능력
• 원격으로 설치 가능한 Server Manager(서버 관리자)를 비롯한 향상된 원격 관리 기능
• 업데이트되고 보다 간편해진 Active Directory Domain Services 및 Active Directory Federated Services
를 통한 향상된 ID 관리 기능

6. 어디서든 가능한 원격 액세스

Windows Server 2008 R2는DirectAccess라고 불리는 새로운 유형의 연결 기능을 소개하고 있습니다. 이는
원격 사용자들이 일반적 인 VPN 연결과 클라이언트 소프트웨어를 요구하지 않고 유연하게 기업 리소스에
액세스할 수 있게 해 주는 강력한 기능입니다.
Windows Server 2008에 포함된 기술들을 사용하여 마이크로소프트는 관리자들이 기본적인 DirectAccess
연결이 가능하도록 Windows 7 클라이언트와 R2 모두에 SSTP와 IPv6를 구성하고, 관리 정책 및 NAP을 비롯
한 추가 R2 관리 및 보안 도구들을 활용해 해당 연결을 확장할 수 있는 간편한 관리 마법사를 추가하였습니
다.

7. 향상된 지점 성능 및 관리 기능

많은 지점 IT 아키텍처가 상대적으로 낮은 대역폭을 가지고 있습니다. 느린 WAN 연결은 본사 콘텐츠에 액세
스하기 위해 대기해야 하는 지점 직원들의 업무 생산성에 영향을 미치고, 지점 대역폭 할당을 위한 비용은 전
체 기업 IT 비용의 33%나 되는 많은 부분을 차지하기도 합니다. 이러한 문제를 해결하기 위해Windows
Server 2008 R2는BranchCache™라고 불리는 기능을 도입하였는데, 이는 WAN 사용률을 줄이고 네트워크 응
용 프로그램의 응답 능력을 향상시킵니다.
BranchCache™로 인해, 이제 기업 네트워크 상에 존재하는 데이터에 대한 액세스를 요청한 클라이언트는 만
약 해당 파일이 전에 요청된 적이 있었을 경우 로컬(지점) 네트워크 상에 존재하는 해당 파일로 연결됩니다.
파일이 로컬에 저장되어 있다면 이제 클라이언트는 바로 고속 액세스가 가능해진 것입니다. 그리고 그러한 파
일들은 보다 큰 지점을 위한BranchCache™ 서버나 로컬 Windows 7 PC 상에 저장 가능합니다.

8. SMB에 대한 간편한 관리

Windows Server 2008 R2에서 마이크로소프트는 SMB와 미드마켓(mid-marke) 고객에 보다 집중하고 있습
니다. 이러한 관심은 해당 고객들에게 Small Business Server에서 Windows Essential Business Server 및
현재의 Windows Server 2008 Standard에 이르기까지 마이크로소프트 제품에 대한 다양한 선택 기회를 제공
합니다. 모든 SKU는 새로운 관리 도구들을 갖추게 되어 SMB IT 전문가들이 보다 쉽게 IT 환경을 운영해 갈
수 있게 해 줍니다.
Active Directory의 새 Active Directory Administration Center가 그러한 예입니다. 모든 이종의 관리 GUI들이
이제 하나의 인터페이스 안에서 호스트되고, 모두PowerShell을 기반으로 합니다. 또한Best Practice
Analyzers도 빼놓을 수 없는데, 마이크로소프트는 이를 모든 서버 역할에 확장하여 모든 서버 구성이 최신 기
술 정보에 부합하게 그 구성을 유지할 수 있도록 하였습니다.
끝으로 매우 중요한 새Windows Server Backup 유틸리티 기능이 있습니다. 이 업데이트된 백업 응용 프로그
램은 시스템 상태 운영 지원 등을 비롯해 백업 작업을 설계하는 데 필요한 보다 세분화된 지원 기능들을 포함
하도록 업그레이드 되었습니다. 또한 보다 빠른 운영 속도와 보다 적은 디스크 공간 활용을 위해 최적화되었
습니다.

9. 가장 강력한 웹 및 응용 프로그램 서버

Windows Server 2008 R2에는 이를 최고의 Windows Server 응용 프로그램 플랫폼으로 만들 다양한 업데이
트들이 포함되어 있습니다
이 가운데서 가장 중요한 것 중 하나가 새로운 Internet Information Services 7.5 (IIS 7.5)입니다.
업데이트된 웹 서버에는 확장된 IIS Manager를 통해 관리 작업을 간소화하는 기능들이 포함되어 있으며, 이
는 IIS PowerShell Provider를 구현하고 Server Core에서 .NET을 활용할 수 있게 해 줍니다. IIS 7.5는 또한
구성 로깅 및 전용 Best Practice Analyzer등을 비롯한 새로운 지원 및 문제 해결 기능들을 통합합니다. 끝으
로 마이크로소프트는 URLScan 3.0 (현재 Request Filter Module로 알려져 있음)을 비롯해 Windows Server
2008과 관련해 자주 사용되는 몇 개의 선택적인 확장 기능들을 통합하였 습니다.

10. 저장소가 아닌 데이터 관리

저장소 관리는 단순한 디스크 관리가 아닙니다. IDC*에 따르면 저장소 볼륨은 2008년에서 2012년 사이에 연
성장률 51%를 기록하며 갈수록 늘어날 것입니다. 경쟁력을 유지하기 위해 기업은 디스크 관리가 아닌 데이터
관리를 시작해야 합니다. Windows Server 2008 R2는 IT 관리자들에게 새로운 FCI (File Classification
Infrastructure)와 함께 이러한 이니셔티브를 위한 도구들을 제공합 니다. 이 새로운 기능은 기존의 공유 파일
아키텍처에 확장 가능한 자동 분류 메커니즘을 구현합니다. 이로 인해 IT 관리자들은 전체적인 사용자 지정
분류 내용을 기준으로 특정 파일로 특정 작업을 연결할 수 있습니다. FCI는 또한 파트너에게도 확장 가능한
데 이는 Windows Server 2008 R2 사용자들이 머지 않아 ISV들이 제공할 FCI에서도 추가적인 기능들을 기대
할 수 있다는 뜻입니다.

2011/11/14 16:20 2011/11/14 16:20