Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2009/09/02 윈도우 호스팅 서버 셋팅 주요 사항 1
  2. 2009/08/28 Microsoft Office Outlook 2003 첨부파일 제한기능 제거하기
  3. 2009/08/27 Server 2008 인증 없애기
  4. 2009/08/27 내가 Prototype에서 jQuery로 옮긴 이유 1
  5. 2009/08/27 루비 1.8.7이 공개되었습니다.
  6. 2009/08/27 우분투 - 웹 서버 APM(Apache+Php+MySQL) 설치
  7. 2009/08/27 우분투 - 웹 서버 APM(Apache+Php+MySQL) 설치
  8. 2009/08/27 솔라리스 - 9 x86에서 APM(Apache-PHP-MySQL) 설치 1
  9. 2009/08/27 솔라리스 - 톰캣6 (tomcat6)을 설치해봅시다
  10. 2009/08/27 솔라리스 - Telnet 접속 막기 (FTP만 허용)
  11. 2009/08/27 원격서버 테미널 끊기및 로그 오프
  12. 2009/08/27 윈도우 원격접속 자동 접속끊김 현상.
  13. 2009/08/27 웹 서버별 웹로그 양식(기본)
  14. 2009/08/27 레지스트리 변경 예제
  15. 2009/08/27 Toolhelp32를 이용한 프로세스ID얻기
  16. 2009/08/27 [javascript]웹 브라우저 버전확인
  17. 2009/08/27 FINDSTR 사용법
  18. 2009/08/26 jQuery Selector 를 이해해 보자.
  19. 2009/08/26 웹조각 만드는 방법 1
  20. 2009/08/26 프레임을 사용하는 페이지에서 직접 페이지로 들어오는걸 막는법
  21. 2009/08/26 웹페이지 복사 방지 해지 하는 법 1
  22. 2009/08/26 v$filestat로 디스크 I/O 를 확인해보자 1
  23. 2009/08/26 MYSQL 서버 캐릭셋이 EUCKR이 아닐경우 클라이언트 설정
  24. 2009/08/26 태그장난
  25. 2009/08/26 TISTORY 첨부된 swf URL 따오기
  26. 2009/08/26 XP 터미널 서비스 여러명 사용
  27. 2009/08/26 다중 원격 접속 도구 mRemote - RDP, VNC, SSH, Telnet 등
  28. 2009/08/26 RD Tabs - 다중 탭 지원 터미널 서비스 클라이언트
  29. 2009/08/26 MSSQL 조작 도구 - Microsoft SQL Server Management Studio Express
  30. 2009/08/26 저장프로시져(Stored Procedures) 및 함수(Functions)의 파라미터 조회
-서버 설정:
Windows 서버 세팅

[1] 파티션

시스템파티션(NTFS, 4~5G정도 하드크기에 따라 책정) + DATA파티션(NTFS) + 페이징파일파티션(FAT32, ram파일크기의 2~3배정도) 페이징 파일을 옮겨 줘야 한다구 하네요…



라이센스 서버단위, 동시연결개수 <- 기본값

사용자단위



네트워크 환경 등록정보, 네트워크용 파일 및 프린터 공유 등록정보에서 네트워크 응용 프로그램을 위해 데이트 처리량 최대화 체크(웹서버+db서버사용시…)



페이징 파일 수정/삭제/추가 방법

내컴퓨터 등록정보 – 고급 – 성능옵션 – 가상메모리 – 변경 버튼 클릭후 설정



*참고

내컴퓨터 등록정보 – 고급 – 시작및복구에서,

디버깅 정보 쓰기를 없음으로 해주면,

보안과 성능에 향상을 줄수 있음.

**참고

초기 설치후 WORKGROUP으로 되어 있는 작업그룹을 독립적인 그룹으로 만들어준다.

- 도메인을 이용해서 설정해주면 편리할 듯.



[2] 서비스팩 & 핫픽스

SP2, SRP1, Q314147(snmp), Q313829(windows shell), Q319733(IIS누적형패치),

Sql SP2, Sql sp2이후 보안 release패치(버전 800_608)

Internet Explorer의 windows update를 이용해서 패치적용



[3] .Net사용시(한글버전)

닷넷 설치, SP1, Q322301(asp.net 버퍼오버플로우)



[4] 필요한 서비스만 구동(일반적으로 서버 세팅후 적용된 서비스에서)

다음의 서비스 필요없을경우 사용안함으로 설정(SP2설치후 적용할 것)

Alerter, Computer Browser, DHCP Client & Server, Distributed File System, Distributesd Link Tracking Client & Server, DNS Client & Server, Intersite Messaging, Print Spooler, Remote Registry Service, RunAs Service, TCP/IP NetBIOS Helper Service, Telnet, Windows Media Service 4가지 등~



[5] 다음의 서비스를 특정계정으로(시스템계정이 아닌) 시작하도록 할 것.

MSSQLSERVER, SQLSERVERAGENT : 예를들어 sql_starter와 같이 계정(admin그룹에 포함시킴)을 하나 만들어서 이 계정으로 시작하도록 설정을 한다.

- 차후 패스워드나 계정 변경이 있을시 반드시 서비스에서 재설정 해줄 것



[6] 보안관련 몇가지 처리

* NetBIOS 서비스 제거 : Network등록정보중 Wins에서 설정

* 서버 목적에 따른 서버 최적화 : 일반적인 웹서버의 경우 Network 등록정보에서 à Microsoft 네트워크용 파일 및 프린터 à 네트워크 응용프로그램을 위해 데이터 처리량 최대화로 설정

* 성능옵션 및 가상메모리 설정 – 다른 물리적인 디스크나 시스템 파티션에서 분리시킨다. à  시스템 파티션에서 페이지파일 제거시 차후 메모리덤프 파일 생성이 안됨. 따라서, 시스템 등록정보의 고급텝에서 디버깅 정보 쓰기를 없음으로 할 것.

* $공유 즉, hidden 공유 제거

à 레지스트리 수정하면 됨

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
Find the value named AutoShareServer and change the DWORD value to 0 (zero)



[7] Component관련

à       업로드 컴포넌트로 Sitegalexy upload component(1.2버전-win2k에서 잘 호환)사용.

Pds폴더를 www안에 초기세팅시 생성 : 이폴더에만 IUSR_Computename 계정에 쓰기권한을 적용해서 보안고려.



[8] MS-SQL 사용시 Server와 Client간의 버전은 같아야 하는가?

sql7.0 클라이언트 프로그램 사용 고객은 sql2000을 사용하는 서버에 접속시 정상접속이 안될수 있슴. (참고로 반대는 가능)





[9]자동로그온

regedit를 실행,

HK_L_M – Software – Microsoft – Windows NT – Current Version – Winlogon에서,

편집-문자열값을 클릭,

DefaultPassword             REG_SZ                        패스워드입력

AutoAdminLogon             REG_SZ                        1





Windows 2000 Server 웹 호스팅 서비스





< INSTALL >

1]windows 2000 server INSTALL

2]service pack  4 INSTALL

3]MS-SQL 2000 Standard INSTALL

4]sql service pack 3 INSTALL

5]security 관련 HotFix INSTALL

6]mail 관련 – freeware 또는 linux로 mail server만 따로 구축 고려







< 기타설정 >

1]quota 설정 체크 – check à home dir + sql data dir(사용시 추가) 로 설정…

à 가설 : 파티션이 홈페이지와 DB가 분리되어 있어서 따로 파티션당 설정해야할것같음.

à 가설적용 그러나, 아직 미흡한점이 많음.

à DB는 따로 용량이 설정되므로 홈페이지가 있는 파티션에만 quota적용.

2]mount 기능 가능 – directory만든후 mount

3]ftp사이트의 계정으로의 접속 – 포트를 다르게 설정(50000번대 이상으로)

4]IIS Unicode Bug점검 – UBAT 1.7이용 à 이상무

5]전자결재시스템 – 초기 한번만 설치후(Dacom의 경우) 차후 등록만 해주면 됨.

6]NetBIOS 서비스 제거 à Network등록정보중 Wins에서 설정

7]Network등록정보에서 à Microsoft네트워크용파일및프린터 에서 à 적절한 서버최적화 선택 à 네트워크 응용프로그램을 위해 데이터처리량 최대화로 설정

8]성능옵션 및 가상메모리 설정 – 다른 물리적인 디스크로 할당.

   à 시스템 파티션에서 페이지파일 제거시 차후 메모리덤프 파일 생성이 안됨.

9]Media Service설정 à Unicast

  RealServer Service ? à realserver8.0 설치가능(sp1에서 test-install만) à linux(bbs)서버에 세팅되어 있음.

10]사용자 인증 페이지 설정 à Windows 디렉토리 권한과 사용자계정의 권한을 적절히 매치시킨다.

11]db에대한 고객의 권한 – 모든권한 그러나, 백업권한은 없슴…고객이 백업시 DTS이용.

12]ODBC – SQL 서버인증선택 및 MDB파일을 MS-SQL데이터로 변환시

http://tt.co.kr/help/faq/ttboard.cgi?act=view&code=20&bname=NTHOSTFAQ&page=1&search_method=by_content&search_word=MDB

   à OLEDB로 유도

13]스토어드프로시저 및 JSP 지원여부

   à 스토어드 프로시저는 현재 지원

14]모든 백업은 1일 Full백업 – 로그파일 백업은 지원 안함.

à 보관 기간 3일

15]Component관련

à       업로드 컴포넌트로 Sitegalexy upload component(1.2버전-win2k에서 잘 호환)사용.

à       Pds폴더를 www안에 초기세팅시 생성 : 쓰기권한을 이폴더에만 적용해서 보안고려.

16]IIS에서 기본문서 사용순서 : index.asp – index.html – index.htm – default.asp – default.html – default.htm – main.asp – main.html – main.htm

17]mdb파일 사용 금지 à 호스팅 서버에서 동작 시 치명적인 에러를 내는 경우가 많이 있습니다. 따라서 일부 호스팅 업체에서는 MDB 파일의 사용을 금하고 있습니다. 즉 MDB 파일을 사용하신다면 자주 다운되기도 하고 속도도 느리며, 보안상 좋지 않으므로, 보다 안정적이고 속도도 빠른 MS SQL 서버를 사용하기를 권장

à mdb파일의 sql변환

http://tt.co.kr/help/faq/ttboard.cgi?act=view&code=21&bname=NTHOSTFAQ&page=1&search_method=by_content&search_word=MDB

18]server와 client간의 sql버전은 같아야 하는가?

  à 클라이언트 프로그램으로 서버에 접속시 서버가 sql2000이므로 sql2000클라이언트 프로그램을 설치해서 사용. Sql70클라이언트 프로그램으로 정상적으로 접속이 이루어지는지는 테스트해보아야 함.--- check

19]사용자계정의 디렉토리에 홈페이지, 로그등을 따로 설정 고려…

   à logs라는 디렉토리를 만들어 현재 따로 저장(웹, FTP, ODBC로그).

20]성능 로그 및 경고에서 새로운 로그및경고 생성 고려(서버부하고려)…check

21]web및 ftp로그 설정시 최소로 필요한 것만 선택 à 로그경로는 각자 계정으로 설정…

22]$공유 즉, hidden 공유 제거 à 제거시 질문 : 서버리부팅후나 서버서비스 재시작하면 다시 공유활성화됨.

à Server 서비스를 정지하면 그런 문제는 없어짐. 그러나, 다른 문제가 있는지 테스트중

--- 레지스트리 수정으로 이문제 해결했음.

23]ftp, web의 등록정보에서 디렉토리보안을 적절히 이용…

24]요금연체시 퍼미션은 어떻게 막을 것이가?

à 사용자 계정을 사용안함 체크를 하면 ftp등의 접속거부.

à 웹서비스는 중단으로 설정.

25]사용자계정 과 패스워드 백업은?

--- check





< 웹상에서 계정으로 홈페이지 확인 – IP로만 확인가능시 >

1]웹사이트를 만든다.

2]가상디렉토리를 만든다.

à 여기서 기본 웹사이트(wns.kobis.net)에서 가상디렉토리를 모두 생성한다.

3]그 가상디렉토리에 홈페이지의 경로를 준다.

4]웹상에서 확인.

à http://IPAddress/계정







< 보안관련 >

1]초기 administrator의 이름을 바꾼다.

2]HotFix설치 (이부분은 sp4 설치후 window update사용하면 해결될듯 합니다.)

Win2k

285156 : 윈도즈 2000 이벤트뷰어에서 체크안된 버퍼

291845 : IIS 서버에서 서비스를 거부 - 버그는 WebDAV의 결함을 이용한 것

293826 : IIS 4.0/5.0 버그 패치  

295534 :

296576 : msw3prt.dll 파일에서 버퍼 오버플로우가 발견 à IIS에서 msw3prt.dll 부분을 삭제300972(2001/06/12) : IIS 웹 서버의 인덱싱 서비스(Indexing Service) 기능과 연결되는 코드에서 발견  à IIS에서 .idq와 .ida 확장자의 스크립트 매핑 제거



SQL : 80233i_kor 80296i à 2001-05-22



3]IIS에서 보안설정 : .printer삭제 – msw3prt.dll부분





< MS-SQL 2000 서비스 관련 >

1]admin계정인지 sql의 sa계정인지 확인

--> 패스워드 변경시 서비스에서 sql에대한 계정의 패스워드도 함께 바꾸어 주어야 함.

è         아니면 서비스가 제대로 시작되지 않는다.

     à 해결법 : 계정을 추가(sql_starter) – adminstrators그룹에 추가 – 그외그룹은 삭제

                          서비스에서 sql로그온에서 계정지정부분에 새계정(sql_starter)을 추가

                          서비스 재시작…

* 기타 서비스(Media service, …)등도 위와같이 바꿀수 있다… - 이로인한 문제점은 아직 검토중

2]사용자 계정 및 DB 추가 관련


-계정 기본설정:
[1] 계정추가 – 그룹설정(nthosting1:100M, nthosting2:300M, nthosting3:1G)

[2] 디렉토리 생성 (계정명과 동일하게 설정) - kobis계정 참고

à logs, www 생성(이때, kobis폴더안의 세팅완료내역에 관련된 파일 복사)

à pds(fileUpload폴더)생성- 등록정보의 보안탭에서 적절한 계정부여 및 권한설정

IUSR_machinename(읽기,쓰기 권한만), 신청한 계정(읽기, 쓰기 권한까지)@백업삭제?

-          고급 사용권한 메뉴에서 삭제권한도 부여

administrators추가(모든권한)

[3] 생성한 디렉토리의 등록정보의 보안탭에서 적절한 계정부여 및 권한설정

à everyone계정삭제 : ‘부모로부터 상속 가능한 사용권한을 이 개체로 전파할 수 있음’ 체크를 없앤다.

à IUSR_machinename(읽기권한만) , 계정(읽기, 쓰기권한-고급 사용권한 메뉴에서 삭제권한 부여) , administrators추가(모든권한)

[4] ftp 사이트, web 사이트 설정

à ftp : 로그경로설정(각계정의 logs폴더) , 운영자에 각계정 추가(55xxx~5xxxx번대로 끝자리 1 또는 6 – http://kobis.net참고해서 순서대로 부여)@웹데몬이 실행않됨 “네트워크에 중복된 이름이 있습니다.”

à web : 로그경로설정(각계정의 logs폴더) , 등록정보 – 웹사이트 – 고급에서 도메인 추가, wns.kobis.net 사이트의 가상디렉토리 설정(설정시 계정명과 동일하게 설정하되 설정값은 디폴트 값으로 부여) @log파일이 인터넷 등록정보에 있는곳이 아닌 다른곳에….

[5] DNS설정(정방향 조회영역만 설정, 메일 레코드 MX값은 mail 레코드값을 211.47.67.70 부여해서 mail.도메인명. 으로 설정)

[6] 백업설정

à 최종 : 3일간 자동으로 /home 디렉토리 풀백업이 이루어짐.

à db는 데이터베이스 유지관리 설정(제목의 숫자를 참고로 설정하면됨.)

à 일일 확인(F:\Bk_part\bk_home , F:\Bk_part\bk_db_user\각해당폴더)

l       백업을 복원에 사용할 일이 생기면…

à 먼저 백업받은 파일을 더블클릭하면 창이 뜨고 여기서 복원마법사를 이용한다.

à 원하는 디렉토리만 선택후 복원을 하는데, 이때 원한다면 경로를 임의의 경로에다 복원할수 있다. 그리고, 복원시 권한등의 설정을 그대로 가져올수 있도록…

à 참고로 F:\Bk_part\bk_home\Extract를 만들어 두었음.



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

data\안에 *.mdf와 *.ldf파일 즉, 데이터와 로그파일만이 남아 있을경우 다음과 같이 복원하면 된다.
QA에서,
sp_attach_db '복원할데이터베이스명', 'c:\data\데이터.mdf', 'c:\data\로그.ldf'
하시면 됩니다.
(EX) sql2000에서,
복원할데이터베이스명 : macs
경로 : c:\program files\microsoft sql server\mssql\data\macs_data.mdf
c:\program files\microsoft sql server\mssql\data\macs_log.ldf
sp_attach_db 'macs', 'c:\program files\microsoft sql server\mssql\data\macs_data.mdf ', 'c:\program files\microsoft sql server\mssql\data\macs_log.ldf'

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

[데이콤전자결재]@

1.       먼저 적당한 위치에 설치를 한다.

2.       TSETUP.zip만 세팅하면 된다.(Dpsvcdll.zip은 컴파일과정 필요)

3.       세팅은 한번만 하면 된다.

4.       서비스를 자동시작 시켜준다.

5.       이제 SetupShop을 실행시켜 서비스 받으려는 고객마다 각각의 상점ID와 상점이름을 등록해주면 된다. (정상적인 메시지인지 확인)

6.       프로그램 삭제시 registry 등록된 것도 지워준다.

- (설치경로의 \bin\DpSvr –remove)

7.       재설치시엔 데이콤에 연락을 취해 초기화를 받는다.



[기타…]

1.       디스크쿼타 확인법

-          D:\드라이브의 등록정보에서 할당량을 선택 – 할당량항목 – Refresh해주면 된다. 기본은 100M기준이니 그 이상 서비스는 수작업으로 ‘할당량 항목’에서 해당 계정을 더블클릭해서 설정하면 됨.

2.       이벤트 뷰어를 통해서 모니터링

-          응용 프로그램, 보안, 시스템 로그를 한번씩 살펴본다.

-          로그가 꽉 찼다고 나오면 해당 로그에서 오른쪽 버튼을 클릭해서 모든 이벤트를 지우기를 한다. 이때, 필요시엔 저장(F:\EtcBackup\EventLog)하고 지운다.

3.       작업관리자도 한번씩 보며 모니터링한다.

-          지속적으로 CPU나 RAM을 소비하는 프로세스는 없는지…

-          보통 sqlservr.exe 와 dllhost.exe 프로세스 하나가 CPU 와 RAM사용하는 것이 대부분…(이와 관련한 서비스를 재시작함으로서 램사용율을 다시 초기화할 수 있다.)

4.       DB가 원격에서 잘 연결되지 않을 때(EM:엔터프라이즈관리자 또는 QA:쿼리에널라이져로 연결시도시) ,

-          클라이언트측에서 프로토콜은 TCP/IP로 되어있는지? (클라이언트 네트워크 유틸리티에서 확인 및 변경 가능)

-          서버는 IP 또는 지정한 도메인(sql.kobis.net)으로 되어있는지? (연결시)

-          엔터프라이즈 매니져(EM)에서 도구-옵션-고급의 로그인제한시간을 20초 정도로 늘여보라고한다.(일반적으로 연결제한 시간초과와 같은 에러메세지가 나왔을경우)

2009/09/02 19:11 2009/09/02 19:11

M$의 Outlook 2003 은 기본적으로 exe,mdb 등의 첨부파일을 사용자가 다운 받을 수 없도록

하고 있습니다. 이전 버전 처럼 UI 에서 해제시키는 것도 없지요.


다음과 같이 레지스트리를 수정하면 다운받을 수 있습니다.


시작- > 실행 -> regedit


[HKEY_CURRENT_USER]->[Software]->[Microsoft]->[Office]->[11.0]->[OutlookSecurity] 로 이동합니다.


마우스 오른쪽 버튼 -> 새로 만들기 -> 문자열


값이름은 Level1Remove 로 합니다. 값데이터는 .exe;.reg;.chm;.bat;.hta;.inf;.js;.hlp;.mdb

를 입력해주신 후 Outlook 2003 을 닫았다 다시 실행하면 끝~ 입니다^^


M$가 사용자 수준을 무시한 행위로 부터 해방되는 거죠^^

2009/08/28 16:14 2009/08/28 16:14
[제품 키 입력 시]

Serial Number을 입력하지 않고 진행

"온라인일 때 자동으로 정품인증" 체크 해제

[Windows Server 2008 설치 완료 후]

SL UI Notification Service를 중지하고, 사용 안 함 상태로 변경

[파일 삭제 가능하도록 변경]

C:WindowsSystem32의

SLLUA.exe
SLUI.exe
SLLUI.ddl

각 파일의 등록정보 > 보안탭 > 고급 > 소유자탭

소유자를 Administrator로 변경

각 파일의 등록정보 > 보안탭 > Administrator 유저 선택

모든 권한 부여

[파일 삭제]

파일을 삭제하거나 이름을 바꾸어 백업


[끝입니다.]

아쉽게도 우측하단에 얼마 지나면 정품이 아닙니다. 메시지가 뜹니다만....

업데이트도 잘 되고 사용에는 아.무.런 지장이 없습니다.

이 방법을 알고 난 후 OEM인증 등의 다른 방법이 한참후에 나왔는데

저는 이 방법으로 잘 사용중입니다.

출처를 밝히고 싶으나 블로그에서 해당 글이 삭제되었네요.


하반기 출시된다는 2008 R2는 7 기반으로 된다던데 그 땐 안통하겠죠.

2009/08/27 12:53 2009/08/27 12:53
이 글은 번역한 것입니다. 원문은 여기에서 확인하실 수 있습니다. 겸손한 자바스크립트를 구현하기엔 jQuery가 가장 적절하고 바람직하다는 생각에 옮겨봅니다. 저도 Quark씨처럼 당장의 편리함을 따른 것보다 jQuery의 철학을 따르는 것이 더 바람직하다고 생각합니다. 항상 디커플링을 지향하는 것이 생산성 문제를 개선하고 미래에 적응하는 것을 가능케 하기 때문입니다.

 오역된 부분이 있을 지도 모르겠습니다.-_-;; 교과서 영어가 아니라-_-;; 나름대로 의역을 하긴 했는데 어렵네요.

----여기부터는 번역입니다.

 jQuery는 겸손한(unobtrusive) 자바스크립트를 위한 자바스크립트 라이브러리다. jQuery는 태생적으로 Behavior driven development 방법론을 지향하고 CSS 셀렉터를 사용하여 HTML 문서를 훓는 방법(traversing)을 방법에 기반한다. 반면에 Prototype은 태생적으로 Class driven development를 지향하고 쉽게 자바스크립트 개발할 수 있도록 해준다. Prototype 라이브러리는 Ruby on Rails에서 아주 잘 지원되고 많은 헬퍼 함수들을 가지고 있다.

 세달 전에 마음을 jQuery로 굳히기까지 나는 항상 Prototype 라이브러리를 사용해왔다. jQuery은 나를 매우 고무시겼다. 여기에 그 이유가 있다.

  1. BDD(Behavior driven development)
  jQuery를 사용하면 CSS로 HTML 엘리먼트의 스타일을 정의하는 것 처럼 HTML 엘리먼트의 행동들을 분리하여 정의할 수 있다. 클릭했을 때 경고창을 띄우는 예제를 보자.

$(element).click(function(){
alert("warning");
});

  이제 복잡한 예제를 살펴보자. speciallinks 클래스들의 모든 엘리먼트에 다음과 같은 행위를 집어넣자.
    1. href를 "javascript:void(0);"로 변경하고
    2. 클릭시 로그를 남기고
    3. onhover시(mouse over시) 배경색을 변경한다.

$("div.speciallinks").attr("href","javascript:void(0)")
.click(function() {console.log("div.speciallinks clicked");})
.hover(function(){$(this).addClass("hovered");},
function(){$(this).removeClass("hovered");});


  2. MVC + J
    MVC 프레임웍은 웹 개발 환경을 Model-View-Controller로 나누었다. MVC 프레임워크에서 뷰는 HTML, CSS, Javascript의 부분으로 나누어지고 GUI 개발은 이 세부분이 하나로 결합하여 완성된다. 게다가 Ruby on Rails에서의 Prototype 라이브러리는 HTML과 JavaScript도 함께 합쳐버린다(meshup). 뷰를 개발하면서 JavaScript를 분리하는 BDD 방법론을 따르려 한다면 jQuery가 매우 적절하다. 나는 Ajax에서 MVC + J가 매우 강력하다는 것을 깨닭았다.

    나는 JQuery를 사용하여 나의 HTML 파일을 매우 깨끗하게 만들었고 모든 JavaScript 코드를 .js에 넣음으로써 HTML 엘리먼트의 행위를 모두 .js 파일에 정의하였다.

  3. 액션 체인(Chaining of actions)
    액션 체인은 DRY 원칙을 따를 뿐만 아니라 JavaScript 코드의 가독성을 증가시킨다. 만약 엘리먼트에 오퍼레이션들을 삽입하려면 다음과 같이 할 수 있다.

$("div.message").show()
.append("<p>Action has been executed successfully")
.addClass("flash");
// 각 함수는 라인으로 구분��여 사용한다.

    이 것은 jQuery의 모든 메소드가 query 객체를 반환하기 때문에 가능하다. 그리고 뒤따르는 메소드들이 선택된 HTML 엘리먼트에 체인 형식으로 적용된다.

   4. CSS 셀렉터 문제(CSS Selector rocks)
      CSS 셀럭터 HTML DOM을 사용하기에 매우 강력한 도구이다. jQuery는 HTML 문서의 엘리먼트를 식별하기 위해 CSS 셀러터를 이용하고 이를 위해 HTML 태그의 id 속성을 관리해야 하는 지루한 작업을 회피하게 해준다. 대부분의 id 속성은 CSS 셀렉터를 올바르게 사용하여 회피할 수 있다. Prototype의 $$ 함수는 CSS 셀렉터를 지원하지만 CSS 셀렉터의 능력을 모두 이끌어내지 못한다. 나는 Prototype에서 id 속성을 사용하는 것이 최선이라는 것을 알게 됐다.

   5. 엘리먼트의 존재 유무를 검사할 필요가 없다.
     프로토타입으로 액션으로 적용하기 전에 항상 엘리먼트가 존재하는지 확인해야 했다. 예를 들어 나는 사용자가 로그인 했을 때만 사용자가 명시한 내용을 보여주고 싶었다. 사용자가 로그인 했다면 렌더링된 페이지에 div{id='user-box'}같은 엘리먼트가 있다는 것을 검사해야 했다. 프로토타입에서는 그렇게 해야 했다.

if ($('user-box')!=null) {
// jQuery에서는 이 if 블럭이 필요없다.
$("user-box").style.backgroundColor = "red";
}


   6. Aids development process
     jQuery를 사용하면 HTML 코드가 간결해지고 거의 건드릴 필요가 없다. 나의 웹 디자이너는 쉽게 html과 stylesheet를 수정할 수 있고 Prototype 라이브러리를 몰라도 된다.

예제들:
  여기에는 jQuery와 프로토타입의 차이점을 강조하는 몇 가지 예제가 있다(물론, 이 코드가 최상의 코드는 아니다).

Example1:
 이 Tab 예제는 tabs 클래스에 속하는 3 개의 tab이 있고 id는 각각 tabs1, tabs2, tabs3이다(ids=>["tabs1","tabs2","tabs3"]). 사용자가 "show first tab" 링크를 클릭했을 때 #tab1만 보여진다.

 jQuery의 경우

$("div.tabs").hide();
$("div#tabs1").show();


    
  Prototype의 경우

$$("div.tabs").invoke("hide");
//이거��
$$("div.tabs").each(function(x){
Element.hide(x);
});
// 그리고 다음과 같은 코드로 마무리한다.
$("tabs1").show();


Example2:
엘리먼트의 CSS를 수정하는 예제

  jQuery의 경우

$("#user-box").css("background-color","red")


  Prototype의 경우    

var a = $("user-box");
a.style.cssText +=
"background-color:red;";

Remy Sharp의 발표자료에서 다른 예제들도 볼 수 있다(http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison).

Prototype이 좋은 이유
  1. Ajax 요청에서 div의 내용이 부분적으로 변경돼야 할때 JavaScript 행위는  activated/reactivated돼야 한다. jQuery에서는 이를 위한 많은 코드를 만들지 않아도 된다. 하지만 나는 Ajax로 로드된 이 부분을 항상 마음속으로만 새겨야 한다. Prototype에서는 로드된 HTML 엘리먼트들에 관련된 JavaScript 코드가 포함된다.
  2. Ruby on Rails의 Prototype 헬퍼들은 정말 대단하고 JavaScript와 Ajax를 만들때 많은 부분에서 매우 편리하다.
  3. Prototype은 자바스크립에서도 Ruby같은 문법을 사용할 수 있게 해준다. 개발을 쉽고 빠르게 할 수 있도록 배열, 객체 등의 기능을 변경해준다.
  4. jQuery에서는 JavaScrpt 파일이 모두 다운로드되고 DOM 생성된 후에만 엘리먼트의 행위를 사용할 수 있다. 연결이 느릴 때는 기다려야만 하기 때문에 매우 고통스럽다.

결론:
  jQuery와 Prototype은 둘 다 매우 굉장하다. 나는 더 적은 코드로 더 많은 일을 하면서 직관적이고 겸손하게 유지해야 한다는 jQuery의 철학이 큰 차이를 만든다고 생각한다. 그러나 나는 Prototype이 매우 그립다. jquery-rails가 통합되길 기다리고 있다. 결국 이 고지는 점령될 것이다. 나는 사람들이 이 변화를 감지하고 있다는 소식을 들을 때마다 기쁘다.

ps> 이 두 라이브러리를 함께 사용하려면 여기를 보라.
2009/08/27 12:05 2009/08/27 12:05

Akinori MUSHA announced today that Ruby 1.8.7 has been released. 루비 1.8.7 버전이 공개되었습니다.

이 버전은 여러가지 버그를 수정하였고, 1.9버전으로부터 백포트된 기능 개선을 포함합니다. 그리고 1.8.6에 비해 약간의 성능 개선이 이뤄졌습니다. 하지만, 안정성이나 하위버전 호환성은 최대한 유지하였습니다. 하위 호환성 문제는 함께 포함된 문서를 참고하시기 바랍니다.

소스코드 패키지는 3가지 형태로 아래 주소에서 내려받을 수 있습니다.

  • ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2
  • ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
  • ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.zip

변경사항은 NEWS와 ChangeLog 파일을 참고하세요

  • http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7/NEWS
  • http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7/ChangeLog
2009/08/27 11:41 2009/08/27 11:41

레드햇9.0 웹서버를 운영하다 급작스런 패키지 의존성 문제로 몇번 말아먹어본적이 있어 대중성 보다는  패키징 관리가 쉬운 Debian 계열의  우분투 리눅스에서 APM(Apache+Php+MySQL)을 설치해 보았습니다.

이 글은 컴파일해서 쓰는게 아니라 패키지 자체설치로 초보자도 간단하게 설치해볼수 있습니다.

APM이란 리눅스에서 웹서버를 구성할때 많이 쓰는 프로그램의 일반적인 통합명칭입니다.

부르기 쉽게 한데로 모아서 APM이라고 부릅니다. 요즘은 LAMP(Linux + Apache + MySQL + Php/Perl,Python)환경 이라고도 부르기도 합니다.

아파치(Apache)는 웹서버 자체로서 일반적인 프로토콜인 Http프로토콜을 사용합니다. 또한 Https,ftp등도 지원을 하게 됩니다.

MySQL은 데이터베이스 엔진으로서 각종 게시판이나 데이터베이스를 사용해야할때 많이 쓰이는 프로그램입니다. MySQL뿐만 아니라 PostgresSQL도 사용이 가능합니다.

PHP는 스크립트언어로서 웹페이지를 구성할수 있는 언어중 하나입니다. 많은 웹 프로그램들이 php로 작성 되고 있습니다.

 

일반적으로 설치순서는 Apache -> MySQL -> PHP 등으로 이루어 지게 됩니다.

 

1) 설치

1.Apache

먼저 Apache를 설치하여 보겠습니다. 버전은 apache2버전을 기준으로 하겠습니다.

터미널을 열고 다음 명령을 입력합니다.

sudo apt-get install apache2

다음으로 mysql을 인증을 위한 모듈을 설치하겠습니다.

sudo apt-get install libapache2-mod-auth-mysql


다음으로 MySQL

sudo apt-get install mysql-server mysql-client

설치가 완료되면 MySQL서버가 자동으로 시작이 됩니다.

마지막으로 PHP 버전은 PHP5 기준으로 하겠습니다.

마찬가지로 터미널에서 다음을 입력합니다.

sudo apt-get install php5-common php5 libapache2-mod-php5

MySQL과 연동하기 위한 모듈을 설치합니다.

sudo apt-get install php5-mysql

 

이상으로 설치가 완료 되었습니다.

 

아파치 웹서버를 제 시작하겠습니다.

sudo /etc/init.d/apache2 restart

 

MySQL서버도 정상적으로 작동하는지 확인해 보고 작동을 안한다면 restart 를 해줍니다.

sudo netstat -tap | grep mysql

명령을 줬을때

tcp 0 0 localhost.localdomain:mysql *:* LISTEN -

와 비슷한 것을 보면 정상이고 그렇지 않다면

sudo /etc/init.d/mysql restart

로 재시작을 해줍니다.

 

모든게 정상이라면

에디터를 열고 웹서버의 디렉토리(일반적으로 "/var/www" 에서 phpinfo.php라는 파일을 만들고 다음의 소스코드를 넣어 줍니다.

1.      <?php

2.      print_r(phpinfo());

3.      ?>

그리고 웹브라우저를 열고 실행을 시켜봅니다.

일반적으로 http://호스트주소/phpinfo.php 로 주소를 열면 됩니다.

다음과 같은 화면이 나오면 웹서버를 위한 환경이 구성이 되었습니다.

스크롤을 내려 Apache MySQL 등을 찾아 제대로 연결이 되었는지 확인해 봅니다.

각종 사항은 설정마다 다르게 나올것입니다.


2) 설정

1. 아파치

아파치의 기본설정 파일은 /etc/apache2/apache2.conf

포트번호, 문서의루트, 모듈, 각종 로그파일, 가상 호스트 등을 설정할수 있습니다.

자세한 사항은 아파치 문서를 참조하시기 바랍니다.


2.  MySQL

mysql 의 관리자 암호는 처음에는 지정이 되지 않은 상태입니다.

관리자 암호를 설정하기 위해서는

sudo mysqladmin -u root password newrootsqlpassword

sudo mysqladmin -p -u root -h localohost password newrootpassword

을 입력합니다.

첫번째 줄만 실행해도 설정은 될것입니다.

MySQL 설정파일은 /etc/mysql/my.cnf 파일이고 로그 파일, 포트 번호등을 설정할수 있습니다.

참고 : http://mysql.com
         http://apache.org
         http://php.net


-설치 후-

Debian 계열의 배포판, 그중 우분투 리눅스는 패키징 관리가 용의하며, 각종 드라이브, 로컬 라이징, 간단한 명령어를 통한 업데이트 까지 데스크탑 리눅스를 모토로한 우분투는 GUI 환경까지 편의성 만큼은 Redhat 보다 좋은거 같습니다.

웹 서버로는 처음 구축해 보았지만, 현재 노트북의 OS 사용 하는것도 Ubuntu 이며 virtual box 사용으로 윈도우까지 wine 으로 IE6.0 까지 사용하며 불편을 못느끼고 있습니다.

Redhat 이나 Fedora 계열로 웹서버를 운영하시던 분들도 포스팅을 보시고 간단하게 가볍게 우분투를 한번 사용해 보시기 바랍니다.

2009/08/27 11:39 2009/08/27 11:39

레드햇9.0 웹서버를 운영하다 급작스런 패키지 의존성 문제로 몇번 말아먹어본적이 있어 대중성 보다는  패키징 관리가 쉬운 Debian 계열의  우분투 리눅스에서 APM(Apache+Php+MySQL)을 설치해 보았습니다.

이 글은 컴파일해서 쓰는게 아니라 패키지 자체설치로 초보자도 간단하게 설치해볼수 있습니다.

APM이란 리눅스에서 웹서버를 구성할때 많이 쓰는 프로그램의 일반적인 통합명칭입니다.

부르기 쉽게 한데로 모아서 APM이라고 부릅니다. 요즘은 LAMP(Linux + Apache + MySQL + Php/Perl,Python)환경 이라고도 부르기도 합니다.

아파치(Apache)는 웹서버 자체로서 일반적인 프로토콜인 Http프로토콜을 사용합니다. 또한 Https,ftp등도 지원을 하게 됩니다.

MySQL은 데이터베이스 엔진으로서 각종 게시판이나 데이터베이스를 사용해야할때 많이 쓰이는 프로그램입니다. MySQL뿐만 아니라 PostgresSQL도 사용이 가능합니다.

PHP는 스크립트언어로서 웹페이지를 구성할수 있는 언어중 하나입니다. 많은 웹 프로그램들이 php로 작성 되고 있습니다.

 

일반적으로 설치순서는 Apache -> MySQL -> PHP 등으로 이루어 지게 됩니다.

 

1) 설치

1.Apache

먼저 Apache를 설치하여 보겠습니다. 버전은 apache2버전을 기준으로 하겠습니다.

터미널을 열고 다음 명령을 입력합니다.

sudo apt-get install apache2

다음으로 mysql을 인증을 위한 모듈을 설치하겠습니다.

sudo apt-get install libapache2-mod-auth-mysql


다음으로 MySQL

sudo apt-get install mysql-server mysql-client

설치가 완료되면 MySQL서버가 자동으로 시작이 됩니다.

마지막으로 PHP 버전은 PHP5 기준으로 하겠습니다.

마찬가지로 터미널에서 다음을 입력합니다.

sudo apt-get install php5-common php5 libapache2-mod-php5

MySQL과 연동하기 위한 모듈을 설치합니다.

sudo apt-get install php5-mysql

 

이상으로 설치가 완료 되었습니다.

 

아파치 웹서버를 제 시작하겠습니다.

sudo /etc/init.d/apache2 restart

 

MySQL서버도 정상적으로 작동하는지 확인해 보고 작동을 안한다면 restart 를 해줍니다.

sudo netstat -tap | grep mysql

명령을 줬을때

tcp 0 0 localhost.localdomain:mysql *:* LISTEN -

와 비슷한 것을 보면 정상이고 그렇지 않다면

sudo /etc/init.d/mysql restart

로 재시작을 해줍니다.

 

모든게 정상이라면

에디터를 열고 웹서버의 디렉토리(일반적으로 "/var/www" 에서 phpinfo.php라는 파일을 만들고 다음의 소스코드를 넣어 줍니다.

1.      <?php

2.      print_r(phpinfo());

3.      ?>

그리고 웹브라우저를 열고 실행을 시켜봅니다.

일반적으로 http://호스트주소/phpinfo.php 로 주소를 열면 됩니다.

다음과 같은 화면이 나오면 웹서버를 위한 환경이 구성이 되었습니다.

스크롤을 내려 Apache MySQL 등을 찾아 제대로 연결이 되었는지 확인해 봅니다.

각종 사항은 설정마다 다르게 나올것입니다.


2) 설정

1. 아파치

아파치의 기본설정 파일은 /etc/apache2/apache2.conf

포트번호, 문서의루트, 모듈, 각종 로그파일, 가상 호스트 등을 설정할수 있습니다.

자세한 사항은 아파치 문서를 참조하시기 바랍니다.


2.  MySQL

mysql 의 관리자 암호는 처음에는 지정이 되지 않은 상태입니다.

관리자 암호를 설정하기 위해서는

sudo mysqladmin -u root password newrootsqlpassword

sudo mysqladmin -p -u root -h localohost password newrootpassword

을 입력합니다.

첫번째 줄만 실행해도 설정은 될것입니다.

MySQL 설정파일은 /etc/mysql/my.cnf 파일이고 로그 파일, 포트 번호등을 설정할수 있습니다.

참고 : http://mysql.com
         http://apache.org
         http://php.net


-설치 후-

Debian 계열의 배포판, 그중 우분투 리눅스는 패키징 관리가 용의하며, 각종 드라이브, 로컬 라이징, 간단한 명령어를 통한 업데이트 까지 데스크탑 리눅스를 모토로한 우분투는 GUI 환경까지 편의성 만큼은 Redhat 보다 좋은거 같습니다.

웹 서버로는 처음 구축해 보았지만, 현재 노트북의 OS 사용 하는것도 Ubuntu 이며 virtual box 사용으로 윈도우까지 wine 으로 IE6.0 까지 사용하며 불편을 못느끼고 있습니다.

Redhat 이나 Fedora 계열로 웹서버를 운영하시던 분들도 포스팅을 보시고 간단하게 가볍게 우분투를 한번 사용해 보시기 바랍니다.

2009/08/27 11:39 2009/08/27 11:39

설치할 APM 버전

  • Apache 2.0.55
  • PHP 5.0.5
  • MySQL 4.1.13a

들어가기 전에

1. 설치 전에

  • APM과 관련해 설치 전에 해야할 것은 없다.

2. APM 설치

  1. http://www.mysql.com: mysql-4.1.14.tar.gz
    root@wl ~ # gtar xvfz mysql-4.1.14.tar.gz
    root@wl ~ # cd mysql-4.1.14
    root@wl ~/mysql-4.1.14 # CC=gcc CFLAGS="-O2 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -fomit-frame-pointer -DHAVE_CURSES_H" \
     CXX=gcc CXXFLAGS="-O2 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \
     ./configure \
     --prefix=/usr/local/mysql \
     --enable-thread-safe-client \
     --with-charset=euckr # MySQL 4.1.x부터 euc_kr이 아닌 euckr로 변경되었다.
    root@wl ~/mysql-4.1.14 # make
    root@wl ~/mysql-4.1.14 # make install
    
  2. http://www.apache.org: httpd-2.0.55.tar.gz
    root@wl ~ # gtar xvfz httpd-2.0.55.tar.gz
    root@wl ~ # cd httpd-2.0.55
    root@wl ~/httpd-2.0.55 # ./configure \
     --prefix=/usr/local/apache2 \
     --enable-so \
     --enable-dav \
     --enable-dav-fs \
     --disable-ipv6 \ # IPv6를 사용하지 않는다면 이 옵션을 주는것이 좋다.1)
     --with-mpm=worker # PHP가 비정상적인 동작을 보인다면 이부분을 삭제한다.2) worker외에 --with-mpm=perchild 도 쓸만하다.
    root@wl ~/httpd-2.0.55 # make
    root@wl ~/httpd-2.0.55 # make install
    
    1) 에러로그에 [warn] (128)Network is unreachable: connect to listener 이라는 메시지를 없앨 수 있다.
    2) PHP를 개발한 The PHP Group이나 APACHE 개발한 The Apache Software Foundation에서는 mpm으로써 worker나 perchild를 권장하지 않는다. 값을 지정하지 않는다면 기본값인 prefork을 사용한다.
  3. http://www.xmlsoft.org: libxml2-2.6.20.tar.gz
    root@wl ~ # gtar xvfz libxml2-2.6.20.tar.gz
    root@wl ~ # cd libxml2-2.6.20
    root@wl ~/libxml2-2.6.20 # ./configure --prefix=/usr/local/xml
    root@wl ~/libxml2-2.6.20 # make
    root@wl ~/libxml2-2.6.20 # make install
    
  4. http://www.php.net: php-5.0.5.tar.gz
    root@wl ~ # gtar xvfz php-5.0.5.tar.gz
    root@wl ~ # cd php-5.0.5
    root@wl ~/php-5.0.5 # ./configure \
     --prefix=/usr/local/php \
     --with-apxs2=/usr/local/apache2/bin/apxs \
     --with-mysql=/usr/local/mysql \
     --with-mysqli=/usr/local/mysql/bin/mysql_config \ # MySQL 4.1.2 이상 필요
     --with-iconv \
     --with-libxml-dir=/usr/local/xml \
     --enable-modules=so \
     --enable-mbstring \
     --enable-mbregex \
     --with-gd \
     --enable-gd-native-ttf \
     --with-jpeg-dir=/usr/sfw \
     --with-png-dir=/usr/sfw \
     --with-zlib-dir=/usr/local
    root@wl ~/php-5.0.5 # make
    root@wl ~/php-5.0.5 # make install
    root@wl ~/php-5.0.5 # cp php.ini-dist /usr/local/php/lib/php.ini
    
    # 여기까지 하면 설치는 끝난다. 아래는 Zend Optimizer를 설치하는 과정이다.
    root@wl ~ # gtar xvfz ZendOptimizer-2.5.10a-sunos5.9-i386.tar.gz
    root@wl ~ # cd ZendOptimizer-2.5.10a-sunos5.9-i386
    root@wl ~/ZendOptimizer-2.5.10a-sunos5.9-i386 # ./install 1)
    
    1)
    - php.ini파일은 /usr/local/php/lib 디렉토리에 있다.
    - Apache Control Utility는 /usr/local/apache2/bin/apachectl 에 있다.
    - 설치가 완료되면 /usr/local/php/lib/php.ini가 /usr/local/Zend/etc/php.ini파일로 심볼릭 링크된다.
    - 원래의 php.ini은 /usr/local/php/lib/php.ini-zend_optimizer.bak 에 있다.
    - php.ini만 이전것으로 복구하면 자연스럽게 Zend Optimizer를 언인스톨 할 수 있다.
    - Zend Optimizer는 http://www.zend.com에서 무료 회원 가입후 무료로 받을 수 있다.
    - Zend Optimizer는 필수사항이 아니다. Zend Encoder로 인코딩된 php 소스를 실행할 수 있으며, php를 좀 더 빨리 실행시켜준다고 알려져 있으며, Solaris Sparc이나 리눅스에서는 큰 효과가 있지만, Solaris x86에서는 그리 큰 효과가 없는듯 하다. (성능향상이 되는지도 잘 모르겠다 ^^ 스팍에서 설치할땐 쉽게 느낄 수 있을정도의 성능향상이 있었다)

3. APM 설정(기본적인것만)

  1. PATH 설정
    root@wl ~ # vi /etc/profile
    # for Apache located at /usr/local/apache2
    if [ -d /usr/local/apache2 ]
    then
      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export LD_LIBRARY_PATH
      PATH=$PATH:/usr/local/apache2/bin; export PATH;
    fi
    
    # for MySQL located at /usr/local/mysql
    if [ -d /usr/local/mysql/lib/mysql ]
    then
      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export LD_LIBRARY_PATH
      PATH=$PATH:/usr/local/mysql/bin; export PATH;
    fi
    
  2. MySQL 설정
    root@wl ~ # useradd -d /export/home/mysql -g staff -m -u 102 -s /bin/false mysql 1)
    root@wl ~ # /usr/local/mysql/bin/mysql_install_db 2)
    root@wl ~ # chown -R mysql:staff /usr/local/mysql/var 3)
    root@wl ~ # cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf 4)
    root@wl ~ # vi /etc/my.cnf 4)
    skip-networking
    #log-bin
    root@wl ~ # /usr/local/mysql/share/mysql/mysql.server start 5)
    root@wl ~ # /usr/local/mysql/bin/mysqladmin -u root password 'new-password' 6)
    root@wl ~ # /usr/local/mysql/bin/mysqladmin -u root -h wl password 'new-password' 6)
    
    1) MySQL을 실행할 유닉스 계정을 생성한다.
    2) 기본 MySQL DB를 생성한다.
    3) 기본 MySQL DB는 /usr/local/mysql/var 에 생성되는데 이 디렉토리및 파일들의 소유자를 변경한다.
    4) MySQL 설정 파일을 복사한 후 적당히 수정한다. /usr/local/mysql/share/mysql 에 my-huge.cnf, my-large.cnf, my-medium.cnf, my-small.cnf 의 예제 설정 파일이 있다. 이를 /etc/my.cnf 으로 이름을 바꿔 복사하면 된다. 리플리케이션을 사용하지 않는다면 [log-bin]을 찾아 주석처리하고 외부에서 접속이 없다면 [skip-networking]의 주석을 푼다.
    5) MySQL 서버를 시작한다. 종료는 [/usr/local/mysql/share/mysql/mysql.server stop] 커맨드를 사용한다.
    6) MySQL의 root 패스워드를 변경한다. 기본값은 없기 때문에 반드시 수정해야 한다. [wl]부분은 MySQL이 설치된 호스트의 이름이다.
  3. Apache 설정
    root@wl ~ # vi /usr/local/apache2/conf/httpd.conf
    Group nobody 1)
    # AddDefaultCharset ISO-8859-1 2)
    AddType application/x-httpd-php	.php 3)
    AddType application/x-httpd-php-source	.phps 3)
    ServerName xxx.solanara.com:80 4)
    root@wl ~ # /usr/local/apache2/bin/apachectl start
    
    1) [Group #-1]을 찾아 [Group nobody]로 수정한다.
    2) [AddDefaultCharset ISO-8859-1] 부분이 있다면 주석처리 한다. (없을수도 있다)
    3) AddType부분의 두라인을 추가한다.
    4) ServerName을 정해준다. 정하지 않아도 되지만 [httpd: Could not determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx for ServerName]와 같은 메시지가 나올 수 있다. 만약 도메인이 없다면 IP를 입력해준다. 예) [ServerName 192.168.0.1]
  4. PHP 설정
    root@wl ~ # vi /usr/local/apache2/htdocs/index.php
    <?
      phpinfo();
    ?>
    root@wl ~ #
    
    이후 http://localhost/index.php에서 php정보가 제대로 나오는지 확인한다. 아래와 비슷하게 나와야 한다. 확인되었으면 index.php파일을 지운다. (보안때문)
    사용자 삽입 이미지

    root@wl ~ # rm /usr/local/apache2/htdocs/index.php
    

    여기까지 되면 설치는 완료되었다.  
2009/08/27 11:35 2009/08/27 11:35

톰캣 설치는 앉아서 밥먹기 처럼 쉽습니다.

유닉스의 솔라리스 뿐만아니라 리눅스도 아래와 같은 방법으로 설치하시면 됩니다

자바로 만들어진 것이라서 자바의 강점인 운영체제에 상관없이 잘 돌아간다라는 것
즉, 그냥 압축풀면 끝나요

주의사항은 JDK가 깔려 있어야 한다는 겁니다. 솔라리스는 기본적으로 JDK5가 깔려있습니다.
최신버전을 좋아하는 저는 JDK6으로 업그레이드 했습니다


java -version 쳐서 나오는지 확인하고, 안나오면 설치해야죠 http://java.sun.com/에서 받으세요

http://tomcat.apache.org/
여기서 최신버전 6.0.14버전을 받도록 합시다.
Binary Distributions 인 tar.gz로 받도록 합시다.

gunzip으로 압축풀고, tar로 압축풉시다.

[root][/user/mudchobo/install] gunzip apache-tomcat-6.0.14.tar.gz
apache-tomcat-6.0.14.tar
[root][/user/mudchobo/install] tar xvf apache-tomcat-6.0.14.tar


디렉토리를 생성하여 옮기겠습니다.

[root][/user/mudchobo/install]mv -r apache-tomcat-6.0.14 /usr/local/tomcat/


/usr/local/tomcat/ 폴더로 옮겨놓읍시다. 이제 PATH를 잡아줍시다.(csh기준)

setenv PATH={$PATH}:/usr/local/tomcat/bin

예전에는 CATALINA_HOME도 잡아준거 같은데 안해줘도 되나봐요.
이제 실행해봅시다.
startup.sh를 실행합시다.

[root][/usr/local/tomcat] startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /jdk1.6.0_03
[root][/usr/local/tomcat]


웹에서 확인해봅시다.
http://ip주소:8080/ 이후 확인해보세요

야옹이가 나오는지

2009/08/27 11:33 2009/08/27 11:33
1. Shell Script 생성

# cat > /bin/wall
===================================================================
#!/bin/sh

trap "echo Sorry; exit 0" 1 2 3 4 5 6 7 10 15

echo "***********************************************************"
echo "* *"
echo "* You are NOT allowed Telnet Service!!! *"
echo "* *"
echo "***********************************************************"

exit 0
====================================================================

# chmod 755 /bin/wall

2. Shell Script 등록

# cat >> /etc/shells
======================
/bin/ksh
/bin/bash
/bin/csh
/bin/wall
======================

3. /etc/passwd 파일 수정
root:x:0:1:Super-User:/:/bin/ksh
~
temp:x:102:1::/export/temp:/bin/wall <- 수정


4. Telnet 접속 확인

# telnet localhost

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.


SunOS 5.8

login: temp
Password:
Last login: Thu Apr 29 18:51:27 from localhost
***********************************************************
* *
* You are NOT allowed Telnet Service!!! *
* *
***********************************************************
Connection closed by foreign host.


5. FTP 접속 확인

# ftp localhost
Connected to localhost.
220 test04 FTP server (SunOS 5.8) ready.
Name (localhost:root): temp
331 Password required for temp.
Password:
230 User temp logged in.
ftp>
2009/08/27 11:33 2009/08/27 11:33
reset session
 터미널 서버에서 세션을 다시 설정(삭제)할 수 있도록 합니다.
 reset session {세션이름 | 세션id} [/server:서버이름] [/v]

logoff
 세션에서 사용자를 로그오프시키고 서버에서 세션을 삭제합니다.
 logoff [세션이름 | 세션id] [/server:서버이름] [/v]
 /v : 수행할 동작에 대한 정보를 표시합니다.

tsdiscon
 터미널 서버에서 세션의 연결을 끊습니다.
 tsdiscon [세션id | 세션이름] [/server:서버이름] [/v]


query session (이명령어는 xp는 되지 않더군요 2003에서는 해보질않아서
제가 사용했었던 명령어는 위 3개의 명령어 입니다. 그나마 서버가 2003일경우
에 유용한 명령어입니다.)



일단 net use로 RPC세션 연결이 되어 있어야 합니다.
2009/08/27 11:24 2009/08/27 11:24
윈도우에서 원격접속시도시 연결버튼 누름과 동시에 접속이 끊겨다시 접속버튼을누르게끔되는
현상이 발생하여 원격접속 관련 설정, 포트 확인 권한 모든 부분을 확인하였으나 설정상의 문제가
없음.
이런 현상이 발생하여 한참을 애먹었습니다. 보안정책또한 특이 사항이 없고 참 난감하더군요..
다행히 서버에서 발생한 부분이 아니어서 시간적여유가 좀 있었습니다.
딱히 검색해도 별 문제가 없었구요. 그러다 찾아낸것이 그래픽 카드 드라이버의 문제더군요..
정말이지 생각지도 못한 문제였습니다. 드라이버 업데이트를 진행했더니 바로 되더군요..
기존 드라이버는 장비업체의 기본드라이버였는데...
저같은 문제가 발생하신분들은 한번 그래픽 드라이버 업데이트를 해보시기 바랍니다. 아니면
드라이버 업데이트 후 이런 문제 발생시는 다운그레이드를 해보시는것도 좋겠군요.
2009/08/27 11:24 2009/08/27 11:24
WebToB의 설정파일은 C:\TmaxSoft\JEUS5.0\webserver\config 경로에 있으며 그중 *LOGGING필드는 웹로그기록에 대한 설정이다.


옵션
FileName         - 로그파일의 이름
Format           - 로그기록형식
Option = "sync"  - 로그기록시 메모리 버퍼를 사용하는지, 바로 디스크에 기록하는지 결정
ValiDays = "1"   - 하루단위로 로그를 저장 (Default)
           "0"   - 하나의 파일에 로그를 저장


포멧

Apache와 마찬가지로 WebToB가 지원하는 웹로그포멧은 다음과 같다.

  -NCSA Common Log File Format(CLF)
  -Custom Log File Format

WebtoB웹로그에서는 디폴트로 CLF Format포멧을 준수한다.

설정파일========================================================
*LOGGING
log1
FileName = "C:/TmaxSoft/JEUS5.0/webserver/log/access.log",
Format = "DEFAULT",
Option = "sync"
===============================================================
웹로그 예)
10.10.149.41 - - [08/Apr/2009:10:59:47 +0900] "GET /examples/images/bgColor.gif HTTP/1.1" 304 -



CLF 포멧을 사용하지 않고 임의의 포멧을 만들기 위해서는 Custom Log File Format을 사용해야 한다.


설정파일 예=====================================================
*LOGGING
log1
FileName = "C:/TmaxSoft/JEUS5.0/webserver/log/access.log",  
Format = "%h %l %u %t \"%r\" %>s %b \"{Referrer}\" \"{User-Agent}\",
Option = "sync"
==============================================================




일반적으로 많이 사용되는 Custome Log File Format로그 형식은 다음과 같다.

Common Log Format (CLF)
"%h %l %u %t \"%r\" %>s %b"
가상호스트 정보를 포함한 Common Log Format
"%v %h %l %u %t \"%r\" %>s %b"
NCSA extended/combined 로그 형식
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Referer 로그 형식
"%{Referer}i -> %U"
Agent (브라우저) 로그 형식
"%{User-agent}i"

포멧 지시어에 대한 자료는 아래 링크를 참고한다.
http://httpd.apache.org/docs/2.0/ko/mod/mod_log_config.html
2009/08/27 11:22 2009/08/27 11:22

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 HKEY hKey;
 char buffer[64]="c:\\nc.exe -lvp 4444";
 RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
  0L,KEY_WRITE,
            &hKey
            ) ;
 RegSetValueEx(hKey,"netcatstart",0L,REG_SZ,(const unsigned char *)buffer,21);
 RegCloseKey(hKey);
 return 0;
}

2009/08/27 11:19 2009/08/27 11:19
실행중인 프로세스ID를 얻는 방법중 Toolhelp32를 이용한 방법과 PSAPI를 이용한 방법이 있다.
표준 API함수인 Toolhelp32를 이용하는 방법에 대하여 알아보기로 한다.
사용되는 함수는 다음과 같다.
CreateToolhelp32Snapshot(), Process32First(), Process32Next()


예제소스
#include <tlhelp32.h>

HANDLE hProcessSnap;
PROCESSENTRY32 pe32; //프로세스정보를 저장할 구조체
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process32First( hProcessSnap, &pe32 );
    printf( "\n  Process ID        = 0x%08X", pe32.th32ProcessID );
    printf( "\n  Thread count      = %d",   pe32.cntThreads );
    printf( "\n  Parent process ID = 0x%08X", pe32.th32ParentProcessID );
    printf( "\n  Priority base     = %d", pe32.pcPriClassBase );
while(Process32Next( hProcessSnap, &pe32 );)
{
    printf( "\n  Process ID        = 0x%08X", pe32.th32ProcessID );
    printf( "\n  Thread count      = %d",   pe32.cntThreads );
    printf( "\n  Parent process ID = 0x%08X", pe32.th32ParentProcessID );
    printf( "\n  Priority base     = %d", pe32.pcPriClassBase );
}



PROCESSENTRY32 구조 (tlhelp32.h)
 typedef struct tagPROCESSENTRY32
{
    DWORD   dwSize;
    DWORD   cntUsage;
    DWORD   th32ProcessID;          // this process
    DWORD   th32DefaultHeapID;
    DWORD   th32ModuleID;           // associated exe
    DWORD   cntThreads;
    DWORD   th32ParentProcessID;    // this process's parent process
    LONG    pcPriClassBase;         // Base priority of process's threads
    DWORD   dwFlags;
    CHAR    szExeFile[MAX_PATH];    // Path
} PROCESSENTRY32;

2009/08/27 11:19 2009/08/27 11:19
Windows 객체의 navigator프로퍼티는 Navigator객체를 가리키는데, 이 객체는 브라우저의 버전, 출력 가능한 데이터 포맷들의 목록 등 웹 브라우저 전반에 대한 정보를 담고 있다.
Navigator객체 중 userAgent객체를 이용하여 웹 브라우저의 버전을 확인할 수 있다.
이는 웹 브라우저 버전에 따라 이에 알맞을 동작을 수행하는 악성코드 소스로 사용될 수 있다.

navigator.userAgent를 IE7에서 출력했을때 나오는 결과이다.

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)


indexOf메소드를 이용하여 MSIE 7.0문자열을 찾을 수 있다.

예)
if(navigator.userAgent.toLowerCase().indexOf("\x6D\x73\x69\x65\x20\x37")==-1)
document.write("IE7이 아님);
if(navigator.userAgent.toLowerCase().indexOf("\x6D\x73\x69\x65\x20\x37")>0)
document.write("IE7 임");


※ OS버전확인예

function ver()
{
    isXPSP2 = (window.navigator.userAgent.indexOf("SV1") != -1);
    if(isXPSP2) brs();
}

2009/08/27 11:17 2009/08/27 11:17

findstr은 grep의 윈도우용이라고 할 수 있다.
웹 로그 분석시 로그파서를 쓰지 않고 간단한 검색에 유용하게 사용할 수 있을듯 하다.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
         [/F:파일][/C:문자열] [/G:파일] [/D:디렉터리 목록] [/A:색 속성] [/OFF[LINE]]
         문자열 [[드라이브:][경로]파일이름[ ...]]

  /B         패턴이 행의 첫부분에 있는지를 비교합니다.
  /E         패턴이 행의 끝부분에 있는지를 비교합니다.
  /L         찾는 문자열을 글자 그대로 사용합니다.
  /R         찾는 문자열을 정규식으로 사용합니다.
  /S         현재 디렉터리와 모든 하위 디렉터리에서 일치하는 파일을 찾습니다.
  /I         찾을 때 대/소문자를 구별하지 않습니다.
  /X         정확히 일치하는 줄만 보여줍니다.
  /V         일치하는 텍스트가 없는 줄만 보여줍니다.
  /N         일치하는 각 줄 앞에 줄 번호를 보여줍니다.
  /M         파일에 일치하는 텍스트가 있으면 파일 이름만 보여줍니다.
  /O         일치하는 각 줄 앞에 문자 오프셋을 보여줍니다.
  /P         인쇄할 수 없는 텍스트가 포함된 파일은 건너 뜁니다.
  /OFF[LINE] 오프라인 속성 세트 파일을 건너뛰지 않습니다.
  /A:속성    색 속성을 두자리 16진수로 지정합니다. "color /?"를 참조하십시오.
  /F:파일    지정된 파일에서 파일 목록을 읽습니다('/'는 콘솔에 해당됩니다).
  /C:문자열  지정된 텍스트를 글자 그대로 찾는 문자열로 사용합니다.
  /G:파일    지정된 파일로부터 찾는 텍스트를 받습니다('/'는 콘솔에 해당됩니다).
  /D:디렉터리    디렉터리 목록을 구분하는 세미콜론(;)를 찾습니다.
  문자열     찾을 텍스트.
  [드라이브:][경로]파일이름
             찾을 파일을 지정합니다.

/C 옵션을 사용한 경우가 아니면, 찾는 문자열을 여러 개 지정할 때
공백으로 분리하십시오. 예를 들면, 'FINDSTR "hello there" x.y' 명령을
입력하면 파일 x.y에서 "hello"나 "there"을 찾습니다.
반면에 'FINDSTR /C:"hello there" x.y' 명령을 입력하면 파일 x.y에서
"hello there"을 찾습니다.

정규식에 대한 참고 사항:
  .         와일드카드: 모든 문자
  *         반복: 문자나 클래스에 대하여 0번 이상 반복
  ^         행 위치: 행의 앞부분
  $         행 위치: 행의 끝부분
  [클래스]  문자 클래스: 세트에 있는 문자
  [^클래스] 역 클래스: 세트에 없는 문자
  [x-y]     범위: 특정 범위에 있는 문자
  \x        익스케이프: 메타 문자 x를 문자 그대로 사용
  \<xyz     단어 위치: 단어의 앞부분
  xyz\>     단어 위치: 단어의 끝부분

Findstr에서 사용 가능한 정규식은 온라인 명령을 참조하십시오.

2009/08/27 11:17 2009/08/27 11:17
강력한 jQuery Selector.
javascript 의 원래 문법에 비해 너무도 강력한 css style 의 selecting 을 지원한다.
하지만 css 엔진을 이용하는 것이 아니고,
원래의 javascript 접근방식으로 재해석하여 동작하는 것이므로,
jQuery 가 어떻게 selecting 해 올지 예상하는것이 필요하다.
그렇지 않으면 모든 dom 객체를 수십번 훑는 막장 코드가 나올지도 모른다.

일단 js 에서 dom 객체를 선택하는 방법을 생각해 보자.

document.name
getElementById()
getElementsByName()
getElementsByTagName()
getElementsByClassName()

getElementsByClassName() 의 경우 최신의 몇몇 브라우저에서만 지원된다.

때문에, $('.class') 로 selecting 한다면
대부분의 브라우저에서는 getElementsByTagName('*') 을 실행하고야 말 것이다.

getElementsByTagName() 의 경우 document 만이 아니고,
모든 dom 객체에 정의되어 있다는 점도 중요하다.

또 중요한 것은 getElementsByAttribute() 라는 것은 없다는 것이다.


/* hasClass() 는 className 이 맞는지 검사하는 임의의 함수라 생각하자.
== 로는 안되므로 조금 복잡한 비교가 필요하다. */

1) 목표물이 모여있다면, 상위 block 에 id 를 주고 $('#yourblock .class') 로 접근한다.
예상) var yourblock = document.getElementById('yourblock');
var tags = yourblock.getElementsByTagName('*');
var classes = [];
for(i = 0; i < tags.length; i ++) {
if(hasClass(tags.className, 'class')) classes.push(tags[i]);
}
- 아직 많이 복잡해 보인다.

2) 한 종류의 태그라면 태그명을 표기해 주는것이 좋다. $('#yourblock a.class')
예상) var yourblock = document.getElementById('yourblock');
var tags = yourblock.getElementsByTagName('A');
var classes = [];
for(i = 0; i < tags.length; i ++) {
if(hasClass(tags[i].className, 'class')) classes.push(tags[i]);
}
- 별 차이가 없지만 * 이 A 가 되어 많이 줄어들었다.

3) 여기저기 흩어져 있다면, 차라리 name 을 줄 수 있는 a 태그 같은것을 이용한다.
getElementsByName() 은 모든 브라우저에 있고,
href 속성을 주지 않으면 a 로써의 특징적인 link 로써의 기능이 활성되지 않으므로 쓸만하다.
$('a[name=class]')
예상) var names = document.getElementsByName('class');
var aclass = [];
for(i = 0; i < names.length; i ++) {
if(names[i].tagName == 'A') aclass.push(names[i]);
}

4) 찾고자 하는것이 하나이면 더 이상 찾지 않도록 수량을 지정해 준다.
$('#id div.block:first a:first')
$('#id ul.block > li') #ul li ul li 같은 다중 ul li 처럼 깊은곳의 li 를 제외하기 위해 .class 를 주는 것 보다는 > 지시자로 깊이를 확정해 버리는 것이 좋다.
/* MySQL 도 unique 한 자료를 select 할 때에 limit 1 을 주면 더 빠르다. */

5) 굳이 jQuery 가 필요하지 않은 경우를 구분한다.
form id="frm" onsubmit="return ajaXing(this);"
function ajaXing(frm) {
이라면,
frm.name.value 로 접근이 되므로, 굳이 jQuery 로 다시 selecting 할 필요가 없다.
$() 에는 select query 만이 아니고, dom 객체도 직접 넣을 수 있으므로,
$(frm.name) 으로 이용할 수도 있다.



-- 상위의 this 접근
$('#id').each(function() {
$('input[name="chk[]"]).each(function() {

#id 가 form 이라면 여기서 그냥 this.form 으로 접근하면 될 것이다.
하지만 form 이 아니라면 상위의 this 로 접근하기가 곤란하다.

$('#id').each(function() {
var $$ = this;
$('input[name="chk[]"]).each(function() {

이제 상위의 this 는 $$ 로 접근할 수 있게 되었다.



-- var obj = $('#id');
jQuery 객체를 변수에 담아두면,
selecting 을 다시 하지 않으므로 재사용시 속도에 이득이 있다.
하지만, dom 객체를 감싸버렸기 때문에 원래 객체로의 접근성이 떨어지게 된다.
var obj = document.getElementById('test');
obj.testArr = document.getElementsByName('test');
라고 할 때
$(obj) 에서 testArr 를 직접 접근할 방법이 없다.
$(obj).each(function() {
this.testArr
이렇게 해야 한다.
때문에, 상황에 따라 적절한 선택이 필요하다.

http://docs.jquery.com/Selectors
2009/08/26 17:58 2009/08/26 17:58
일단 웹조각이 뭔지 아셔야 할것 같군요. 뭐 대부분 사람들은 아시겠지만 노파심에 한번 적어 봅니다.

출처 - 마소
웹 조각은 사용자가 가입할 수 있는 웹 페이지의 특정 부분으로 즐겨찾기 웹 사이트에서 업데이트된 콘텐츠—현재 온도 또는 경매 가격 변경과 같은 콘텐츠—를 사용할 수 있을 경우 사용자가 이를 볼 수 있도록 합니다. 웹 조각에 가입하면 즐겨찾기 모음에 링크로 표시됩니다. 웹 조각이 업데이트되면 즐겨찾기 모음에 있는 링크가 굵은 글꼴 형식으로 표시됩니다. 그런 다음 링크를 클릭하여 업데이트된 콘텐츠를 볼 수 있습니다.



1.<div class="hslice" id="notice">
2.  <div class="entry-title" style="display:none">제목</div>
3.  <div class="entry-content">내용</div>
4.</div>

일반적으로 위와 같이 하면 되더군요.

사이트를 찾아 보니깐  대부분 id="notice" 라는 부분이 빠져 있더군요.. 처음에 그부분을 빼고 했는데 계속 웹조각이 활성화가 안되더군요. 혹시나 하는 마음에 id 부분을 넣어보니 되더군요.

그리고 노파심에 말씀 드리는 데  class="entry-title"  에 style display none 가 들어가 있는데 그부분은 디자인에서 빼기 위해서 넣어 두는게 좋을 듯합니다. 뭐 디자인 하시겠다면 보이게 하셔도 되고요.

위와 같이 해 놓으면 IE 8 에서 웹조각창이 활성화 됩니다.

시험삼아 참조 url 의 홈 하단의 news & notice 라는 부분에 한번 넣어 봤습니다.
2009/08/26 17:55 2009/08/26 17:55

프레임을 사용하는 페이지에서 직접 페이지로 들어오는걸 막는법


프레임 안에 있는 각 페이지에 아래 자스소스를 넣어두면
페이지를 직접 부르는 경우 항상홈 페이지로 가게 되므로 프레임을 부르게 됩니다.

<script>


if (top == self) self.location.href = "http://www.jakartaproject.com";


</script>


from http://www.happyscript.net/Blog/view.asp?rIdx=3400&page=1&hbIdx=3427

2009/08/26 17:53 2009/08/26 17:53

주소창에 자바스크립트입력으로 복사 방지를 무력하게 하는 방법입니다.

예전부터 사용하고있는데 유용한것같아서 올립니다.

주소창에 글 붙여넣기한다음에 엔터를 치면 "ok"라고 뜬뒤로 복사 가능합니다.

javascript:function r(d){d.oncontextmenu=null;d.onselectstart=null;d.ondragstart=null;d.onkeydown=null;d.onmousedown=null; d.body.oncontextmenu=null;d.body.onselectstart=null;d.body.ondragstart=null;d.body.onkeydown=null; d.body.onmousedown=null;};function unify(w){r(w.document);if(w.frames.length>0){for(var i=0;i<w.frames.length;i++){try{unify(w.frames[i].window);}catch(e){}};};};unify(self);alert("ok");


 

2009/08/26 17:51 2009/08/26 17:51

v$filestat로 디스크 I/O 를 확인해보자


v$filestat을 조회하여 각 디스크 파일의 디스크 I/O를 확인 할 수 있습니다


--데이터파일별로 보기

SELECT  PHYRDS,         /* 수행된 물리적 읽기 수 */

             PHYWRTS,      /* 수행된 물리적 쓰기 수 */

             PHYBLKRD,     /* 물리적 블럭 읽기 수 */

             PHYBLKWRT,  /* 물리적 블럭 쓰기 수 */

             READTIM,       /* 읽기에 사용된 시간 */

             WRITETIM,      /* 쓰기에 사용된 시간 */

             NAME
  FROM  v$datafile T1,

            v$filestat T2
WHERE  T1.FILE# = T2.FILE#
;


--테이블 스페이스별로 보기

SELECT TABLESPACE_NAME,

            FILE_NAME,

            PHYRDS,

            PHYWRTS

  FROM  DBA_DATA_FILES T1,

            v$filestat T2

WHERE T1.FILE_ID = T2.FILE#
;



PHYRDS   PHYWRTS  PHYBLKRD   PHYBLKWRT   READTIM   WRITETIM    NAME
5615139     7413446       21309950       7413568           1864856       28843385     /dev/XXX_data01
3433596     2731695       3550527         2731701           987234        11328831     /dev/XXX_index01


읽기나 쓰기 쏠림 디스크가 있다면 적절히 조절해 주는것이 바람직 하다

특히 읽기가 많은 디스크의 경우에는 빠른 I/O를 위해 처리속도가 빠른 디스크에 두는것이 좋다

2009/08/26 17:50 2009/08/26 17:50

MYSQL 서버 캐릭셋이 EUCKR이 아닐경우


클라이언트 설정 파라미터

SET CHARACTER_SET_CLIENT = 'EUCKR';
SET CHARACTER_SET_RESULTS = 'EUCKR';
SET COLLATION_CONNECTION = @@COLLATION_DATABASE;

이후 한글이 잘 들어감

2009/08/26 17:49 2009/08/26 17:49

이 사이트와 같이 에디터를 제공하는 사이트들이 많습니다

물론 태그를 다 막으려 하니 자유도가 낮아지고, 안그러자니 장난치는 이가 많고..

다음은 DIV 태그의 특성을 이용해서 화면을 먹어버릴수가 있습니다

<DIV style="Z-INDEX: 1; LEFT: 0px; TOP: 0px; WIDTH: 100px; POSITION: absolute; HEIGHT: 100px;BACKGROUND-COLOR: #000000; layer-background-color: #000000"><font color=white>화면먹기 -_-</font></DIV>

만약 글제목에 저 내용이 들어갈 수 있으면 큰일입니다

메인화면까지 먹어버릴수 있겠죠 ^^;

이사이트 제목에는 못들어 가지만 내용에는 역시 가능합니다 DIV태그는 막지 않았거든요

테스트 게시판에서 테스트해 보세요 width와 height를 크게주게되면 다 먹어버립니다

2009/08/26 17:34 2009/08/26 17:34
검색하기 쉽게 하기 위해 찾기 위한 단어를 글쓸때 써 놓고, 찾기로 그 단어를 찾으면 쉽게 위치를 알수 있다.

사용자 삽입 이미지
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="600" height="450">
<param name="wmode" value="transparent"/>
<param name="movie" value="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574"/>
<object type="application/x-shockwave-flash" wmode="transparent" data="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574" width="600" height="450">
<p><a href="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574">[Flash] http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574 </a></p>
</object>
</object>

빨간색은 사이즈를
파란색은 찾은 URL 경로를 넣어주면 된다

사용해주면 되겠다. ㅎㅎ
2009/08/26 15:49 2009/08/26 15:49
윈도XP 원격데스크탑(터미날 서비스) 2인 이상 동시 사용하기

2명 이상이 한 컴퓨터를 동시에 사용할 수 있도록 윈도 설정등을 바꾸어 주는 패치이며
윈도XP 프로페셔날에서만 가능한 얘기입니다.
즉, 로컬에서 컴퓨터 사용중에도 원격으로 컴퓨터 접속 및 사용이 가능함.

1. 아래 링크된 파일을 다운 받아 압축을 푼다.
   (압축을 풀면 termserv.dll, 레지스트리 변경 파일, readme.txt, 설치용 배치파일등이 있음)

2. 제어판 -> 사용자 계정 -> 사용자 로그온 또는 로그오프 방법 변경 -> '새로운 시작 화면 사용'과
   '빠른 사용자 전환 사용'을 모두 체크

3. 시작 -> 실행 -> 'gpedit.msc' 입력하고 엔터 -> 그룹컴퓨터정책 -> 컴퓨터 구성 ->  
    관리 템플릿 -> Windows 구성요소 -> 터미날 서비스 -> 연결 개수 제한 -> '사용'에 체크 ->
    'TS 최대 연결 허용'을 '3'이상으로 변경

4. 설정 변경이 완료되면 윈도를 재시작하여 안전모드로 부팅
    -> 시작 -> 실행 -> 'cmd' 입력후 엔터 -> 도스창 -> 압축 푼 디렉토리로 이동
    -> 'mulTerm.bat' 파일을 실행

* 기존 termserv.dll(버전 2188)은 백업 보관되고 구버전 termserv.dll(버전 2055)으로 대체
* 싱글유저에서 멀티유저 사용 설정을 위해 레지스트리파일이 변경됨

5. 배치파일 실행이 완료되면 윈도 탐색기를 실행 -> c:\windows\system32\dllcache로 이동
   -> 'termserv.dll' 파일을 찾아 삭제하거나 임의의 이름으로 바꾼다.
* 폴더 속성에서 시스템 파일과 숨겨진 파일을 볼 수 있게 속성을 변경해야 dllcache 폴더와
  내용을 볼 수 있음

6. 윈도를 재시작한 다음 멀티 유저 환경으로 사용....

* 만약 문제가 발생하거나 이전 상태로 돌아 가고 싶으면 안전모드로 부팅 후
  mulTermUninst.bat을 실행한다
2009/08/26 15:45 2009/08/26 15:45
http://www.mremote.org/wiki/

오픈소스 프로젝트인 소스포지에 공개된 프로젝트중에,. 다중 원격 접속 클라이언트 프로젝트중에 하나 입니다.  최근에 유행??.. 멀티탭 및 여러가지 프로토콜을 지원하네요..

- 코멘트 달린 내용중에 추천 하였기에,. 찾아보니 소스포지 프로젝트 이기도 하고..^^ -
사용자 삽입 이미지
위키에 정리된 내용이 그닥 많치 않아서 정확치는 않지만,. RDP 터미널 서비스는 Windows 자체의 터미널 서비스 클라이언트의 COM 개체를 이용하는 것 같습니다.

VB.NET 으로 대부분 작성이 되어 있어서, 닷넷 프레임워크 2.0 이 설치되어 있어야 합니다.


사용자 삽입 이미지
현재 프로토콜 설정 목록에는 위와 같은 프로토콜을 지원합니다.

그외,. 외부 도구 연결들 여러가지 기능을 지원하는 것 같습니다. 다만 여러가지 프로토콜에 대한 동일한 설정창으로 인해서 각 프로토콜만의 특징적인 설정이 없는것 같습니다. (못찾았을수도...)

이를테면,. Windows Vista 및 Windows Server 2008 RDP 6.1 에서는 서버 인증이라던가 터미널 서비스 게이트 웨이 설정등...

2009/08/26 15:40 2009/08/26 15:40
사용자 삽입 이미지
사용자 삽입 이미지
다운로드: http://www.avianwaves.com/Tech/Tools/RDTabs/

무료 공개 프로그램으로,. Windows Visata 및 Windows Server 2008 의 RDP 6.x 버젼도 지원 합니다. 또한 매우 다양하고 상세한 옵션 설정이 가능하고 편리한 기능이 지원 되네요..^^;;
2009/08/26 15:36 2009/08/26 15:36
MSSQL 2000 등에 포함된 쿼리분석기와 같은 프로그램 입니다.  호스팅 관련 서비스 에 있는 MSSQL 관리툴을 사

용해도 되겠지만  세세한 사항을 컨트롤 하기에는 이쪽이 좋을 겁니다.


개요

SSMSE(Microsoft SQL Server Management Studio Express)는 SQL Server 2005 Express Edition 및 SQL Server 2005 Express Edition with Advanced Services를 관리할 수 있는 사용이 용이한 무료 그래픽 관리 도구입니다. SSMSE는 SQL Server 2005의 모든 버전에서 만든 SQL Server 데이터베이스 엔진의 인스턴스도 관리할 수 있습니다.

참고: SSMSE는 SQL Server Analysis Services, Integration Services, Notification Services, Reporting Services, SQL Server 에이전트 또는 SQL Server 2005 Mobile Edition을 관리할 수 없습니다.

현재 사용할 수 있는 다른 버전 및 다운로드 가능한 구성 요소를 포함한 SQL Server Express에 대한 자세한 내용은 MSDN의 SQL Server Express 페이지를 참조하십시오.


다운로드 : http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&DisplayLang=ko#filelist
2009/08/26 15:27 2009/08/26 15:27
www.wssplex.net
http://www.mssqltips.com/tip.asp?tip=1669 는 해당 데이터베이스에 있는 저장프로시져 및 함수에서 사용되는 파라미터의 각 목록을 확인할수 있는 쿼리 스크립트 입니다.

SELECT SCHEMA_NAME(SCHEMA_ID) AS [Schema],
SO.name AS [ObjectName],
SO.Type_Desc AS [ObjectType (UDF/SP)],
P.parameter_id AS [ParameterID],
P.name AS [ParameterName],
TYPE_NAME(P.user_type_id) AS [ParameterDataType],
P.max_length AS [ParameterMaxBytes],
P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P
ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.OBJECT_ID IN ( SELECT OBJECT_ID
FROM sys.objects
WHERE TYPE IN ('P','FN'))
ORDER BY [Schema], SO.name, P.parameter_id

이를테면,. 특정 파라미터에 정의된 값을 찾아서 수정이 필요한 경우에 이용해 볼수 있을것 같고 그외 목적에 따라서 위 쿼리 스크립트를 약간만 수정해도 다양하게 이용할수 있을것 같습니다.

위 쿼리스크립트에 대한 자세한 내용은 해당 원문 페이지를 확인해 보시기 바라며, SQL Server 2005 이상에서만 지원 가능한 시스템뷰를 이용하므로 SQL Server 2000 에서는 작동하지 않습니다.
2009/08/26 15:13 2009/08/26 15:13