2010년 4월 25일 일요일

텍스트 에디터

데이지 에디트 : http://www.desyedit.com
아크로 에디트 : http://www.acrosoft.pe.kr
였었는데. 크림슨 에디터나 에디터 플러스 등등도 무료는 아니지만, 꽤나 널리 알려진 프로그램이죠.
관련 업무를 많이 하시는 분들은 http://www.multiedit.com/  http://sourceinsight.com/  등의 에디터들을 사용하시더군요.
근데 전 이런 작업 하는거도 아니구... 그냥 가끔 이런저런거 보는데 좀 메모장으로는 무리가 있더라구요.
예전엔 이지보드 만드셨던 홈페이지에서 이지패드를 쓰곤 했었는데..무
요번에 http://www.flos-freeware.ch 의 NotePAD2 를 알게 되었습니다.
근데 이거보다 좀 더 무시무시하고 예쁘고 좋은 녀석을 알게 되었네요.
NotePAD++ 인데요. 개인사용자에겐 무료로 배포 되는거 같네요.
제작사 홈페이지 : http://notepad-plus.sourceforge.net

2010년 4월 22일 목요일

우분투 인터넷이 안될때에..


root@bt:/# sudo dhclient
root@bt:/# dhcp방식으로 자동으로 IP를 다시 활당 받을때 하는 명령어

스프링 셋팅 모음

오늘은 순수하게 학습의 목적으로 Spring Framework를 이용한 개발 환경 구성하기를 해보겠습니다.

제가 간단하게나마 구성해 볼려는 것은 다음과 같습니다. 순수 공부목적의 설치이며 개발환경으로 사용하실 분은 각자의 회사 실정에 맞게 설치하시면 됩니다.

  • Eclipse IDE를 사용
  • Tomcat WAS/WEB Server를 사용
  • UTF-8 기반 개발환경
  • SVN 및 기타 버그 리포팅 시스템 연동
  • Spring Framework를 이용한 개발을 위한 구성
  • MySQL Database 기반 개발

1. JAVA Development Kit(JDK) 설치
http://java.sun.com/javase/downloads 에서 다운 받을 수 있습니다. 현재 JDK 6 Update 6가 최신버젼입니다.

사용자
설치시에 JAVA DB는 필요없겠네요.

사용자
시작 - 실행 - "cmd" - "java -version" 을 타이핑하여 위와같이 버젼이 정상적으로 나오는지 확인합시다.

2. Apache Tomcat 설치
http://tomcat.apache.org 에서 다운 받을 수 있습니다. 현재 가장 최신버젼은 6.0.16입니다.
사용자
톰캣은 Minimum으로 설치하셔도 괜찮습니다
.

사용자
공부의 목적이니 8080이 아닌 80을 쓰도록 하겠습니다. 관리자 암호는 1로 했습니다.

사용자
중요한건 여기서 톰캣을 실행하시면 안됩니다. 톰캣은 이클립스에서 연동하여 사용할 것입니다.


사용자
시작 - 설정 - 제어판 - 관리도구 - 서비스 에서 Apache Tomcat을 찾아 사용안함으로 바꿉니다.


3. Eclipse IDE 설치
http://www.eclipse.org/downloads 에서 다운 받습니다. 웹개발을 위해서 Eclipse IDE for Java EE Developers를 다운받으시면 됩니다.

압축되어있으며 그냥 압축을 풀기만 하시면 됩니다. 저는 압축을 풀어 C:\eclipse로 설치하였습니다.

eclipse.ini 파일을 열어 설정을 다음과 같이 변경합니다.

<PRE class=prettyprint>-showsplash
org
.eclipse.platform
--launcher.XXMaxPermSize=256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xverify:none
-XX:+UseParallelGC
-XX:PermSize=64M
-XX:MaxPermSize=128M
-XX:MaxNewSize=64M
-XX:NewSize=64M
-Xms128m
-Xmx512M
</PRE>

4. Eclipse 주요 플러그인 설치
Eclipse 자체에서 간단하게 플러그인을 추가 할 수 있습니다. Eclipse를 실행한 후 Help - Software Updates - Find and Install - Search for new features to install 을 선택하여 New Remote Site를 눌러 다음을 추가합니다.

Name : SpringIDE
URL : http://springide.org/updatesite

Name : Subversive
URL : http://download.eclipse.org/technology/subversive/0.7/update-site/

Name : SubversiveConnector
URL : http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/

사용자
위의 세가지를 추가한 후 Mylin, Mylin Extras, SpringIDE, Subversive, SubversiveConnector를 선택하여 Next를 누릅니다.

사용자
이후 확인창이 뜨는데 AJDT를 포함하고 SpringIDE의 Dependencies(이전 버젼의 Eclipse와 호환성을 위해 필요)는 제외합니다.


추가로 Log4E를 설치하겠습니다. Log4J를 위한 로깅 구문을 손쉽게 핸들링 할 수 있습니다.

http://log4e.jayefem.de/ 에 무료 버젼을 제공하고 있습니다. http://log4e.jayefem.de/update 를 제공하고는 있으나 유료버젼만이 지원되며 무료버젼은 따로 다운받아 Eclipse설치 폴더에 덮어써야 합니다.

5. Eclipse UTF-8 기반으로 설정
Eclipse를 실행 후 Window - Preferences... 에 들어갑니다.

사용자
General - Content Types 이하 모든 파일의 Default encoding을 UTF-8로 변경합니다. 바로 하위 적용이 안되므로 일일이 하위로 내려가며 모두 설정해 주시면 됩니다.

사용자
Web and XML 밑의 모든 파일에 대해 Encoding을 UTF-8로 변경해 줍니다.


사용자
이건 덤이긴 한데 스펠링 체크 기능이 영어밖에 지원안하고 또한 별로 무의미한 기능이므로 끄겠습니다.


6. Spring Framework 및 준비물 다운로드
http://www.springframework.org/download 에서 스프링 프레임워크 최신판을 받겠습니다. 현재 2.5.4버젼이 최신버젼입니다. spring-framework-2.5.4-with-dependencies.zip 를 받으면 필요한 모든 파일이 들어있습니다.

http://dev.mysql.com/downloads/connector/j 에서 MySQL Connector를 다운 받습니다. 현재 5.1.6버젼이 최신버젼입니다. mysql-connector-java-5.1.6.zip 를 받으시면 됩니다.

7. 마치며
앞으로 좀더 필요한 이클립스 설정법들과 지금의 준비를 가지고 개발하는것들을 계속해서 강좌로 올리겠습니다.
또한 Mylin을 이용하여 Trac과 Bugzilla등과 연동하는것을 해볼려고 합니다. Spring을 완전 처음 접하시는 분들께 도움이 되길 바랍니다.

위에서 정리한 설정을 적용한 설정 파일을 공유합니다. UTF-8환경 외에는 손대지 않았으므로 깔끔하게 시작하실 수 있을것입니다. File - Import - General - Preferences 로 임포트 하시면 됩니다.


2010년 4월 21일 수요일

중급개발자가 되기 위해서는..

컴퓨터 프로그램의 오류(Error)는 크게 두 가지로 나뉘어진다.

구문오류 : 컴파일러가 잡아주는 프로그램 언어의 문법적 오류
논리오류 : 개발자의 잘못된 알고리즘에서 발생하는 오류 (찾아내기도 힘들고, 도구를 사용해도 불가능하다. 거의 죽음이다~.)

그러나, 신경쓰면 논리오류를 구문오류로 바꿀 수 있기도 하다.

if (NULL == 변수) {....}
매우 흔하게 나오는 실수이다. NULL과 같은 상수를 앞에 쓰면, 논리오류를 줄일 수 있다.
if (변수 = NULL) 로 써서, 한참 헤매는 상황을 피할 수 있다.

이런 것과 관련된 3가지 반드시 지켜야 할 사항이다. 이것만 잘 지켜도 중급개발자란 소리를 들을 수 있겠다.

1. const 키워드를 늘 사용한다.
바뀌지 말아야할 정보들에 대해서, 상수 선언을 한다.
void func( const int Count, char* const SzBuf){ ... }
함수를 사용할 때도, 항상 const를 사용함으로써, 버퍼의 주소위치가 바뀌는 것을 막아준다.
버퍼의 내용은 항상 변할 수 있더라도, 버퍼의 주소 위치를 고수하는 것이 좋다.
의외로 많이 하는 실수중의 하나이다.

2. __try { } __except { } 구문을 항상 사용한다.
문제가 생기더라도, 프로그램이 불완전 종료되지 않기를 바란다면...
반드시 __try __except  와 __try __finally 구문을 사용하여야 한다.

__try {
...
}
__except( filter(GetExceptionCode() ) {
...
}

int filter( const int code ) {
switch (code) {
case 111 : 계속하기전에 수정작업; return -1;
case 222 : 또 다른 작업; return -2;
default :   ... return -100;
}
}
GetExceptionInformation() 함수도 사용해본다.


3. 예외 상황이 발생할 것을 대비하고, 예외상황을 로그로 남기는 기능을 넣는다.
프로그램이 아무리 완벽해 보여도, 무슨 상황이 발생할 지 모르는 법.
디버깅을 위해서는 항상 예외상황을 로그가 남도록 프로그램을 작성한다.

자세한 사용법은 모두 MSDN을 참고하시면 됩니다.

2010년 4월 20일 화요일

Well Known Port

Well Known Port 

WELL KNOWN PORT NUMBERS

The Well Known Ports are assigned by the IANA and on most systems can only be used by system (or root) processes or by programs executed by privileged users.

Ports are used in the TCP RFC793 to name the ends of logical connections which carry long term conversations. For the purpose of providing services to unknown callers, a service contact port is defined. This list specifies the port used by the server process as its contact port. The contact port is sometimes called the "well-known port".

To the extent possible, these same port assignments are used with the UDP RFC768.

The range for assigned ports managed by the IANA is 0-1023.

Port Assignments:

tcpmux 1 TCP Port Service Multiplexer
compressnet 2 Management Utility
compressnet 3 Compression Process
echo 7 Echo
discard 9 Discard
systat 11 Active Users
daytime 13 Daytime (RFC 867)
qotd 17 Quote of the Day
msp 18 Message Send Protocol
chargen 19 Character Generator
ftp-data 20 File Transfer Default Data
ftp 21 File Transfer Control
ssh 22 SSH Remote Login Protocol
telnet 23 Telnet
smtp 25 Simple Mail Transfer
nsw-fe 27 NSW User System FE
msg-icp 29 MSG ICP
msg-auth 31 MSG Authentication
dsp 33 Display Support Protocol
time 37 Time
rap 38 Route Access Protocol
rlp 39 Resource Location Protocol
graphics 41 Graphics
name 42 Host Name Server
nameserver 42 Host Name Server
nicname 43 Who Is
mpm-flags 44 MPM FLAGS Protocol
mpm 45 Message Processing Module recv
mpm-snd 46 MPM default send
ni-ftp 47 NI FTP
auditd 48 Digital Audit Daemon
tacacs 49 Login Host Protocol (TACACS)
re-mail-ck 50 Remote Mail Checking Protocol
la-maint 51 IMP Logical Address Maintenance
xns-time 52 XNS Time Protocol
domain 53 Domain Name Server
xns-ch 54 XNS Clearinghouse
isi-gl 55 ISI Graphics Language
xns-auth 56 XNS Authentication
xns-mail 58 XNS Mail
ni-mail 61 NI MAIL
acas 62 ACA Services
whois++ 63 whois++
covia 64 Communications Integrator (CI)
tacacs-ds 65 TACACS-Database Service
sql*net 66 Oracle SQL*NET
bootps 67 Bootstrap Protocol Server
bootpc 68 Bootstrap Protocol Client
tftp 69 Trivial File Transfer
gopher 70 Gopher
deos 76 Distributed External Object Store
ettcp 78 vettcp
finger 79 Finger
http 80 World Wide Web HTTP
hosts2-ns 81 HOSTS2 Name Server
xfer 82 XFER Utility
mit-ml-dev 83 MIT ML Device
ctf 84 Common Trace Facility
mit-ml-dev 85 MIT ML Device
mfcobol 86 Micro Focus Cobol
kerberos 88 Kerberos
su-mit-tg 89 SU/MIT Telnet Gateway

 

 

 

[관련자료] 널리 알려진 포트 번호 보기

  PC의 모든 포트는 제한이 없어 어떤 프로그램이라도 자유롭게 데이터를 주고 받을 수 있다. 제한이 없는 만큼 밖에서 PC를 공격하는 프로그램이 밀고 들어와도 막을 방법이 없다. 방화벽(Firewall)은 열린 포트를 막아 밖에서 나쁜 프로그램이 침입하지 못하도록 한다. 물론 방화벽이 모든 인터넷 서비스를 막으면 안되니까 80(웹), 21(FTP)번 포트같이 자주 쓰고 믿을 수 있는 포트는 열어 놓는다. 방화벽은 밖에서 들어오는 공격도 막지만 안에서 밖으로 데이터를 보내지 못하도록 막는 일도 해 네트워크 안의 정보가 밖으로 새는 것을 막아준다.

자주 쓰는 프로그램, 서비스의 포트 번호

  포트 포워딩을 하려면 인터넷 서비스, 소프트웨어가 쓰는 포트 번호를 알아야 한다. 사람들이 많이 쓰는 네트워크 서비스, 메신저, P2P 프로그램의 포트 번호를 정리한다.

  ▲ 21번: FTP
  ▲ 22번: 보안 텔넷(SSH)
  ▲ 23번: 텔넷
  ▲ 25번: SMTP(메일 발송)
  ▲ 42번: 호스트 네임 서버
  ▲ 53번: 도메인 메인 서버
  ▲ 70번: 고퍼(Gopher)
  ▲ 79번: 핑거(Finger)
  ▲ 80번: 웹(HTTP)
  ▲ 88번: 커베로스 보안 규격
  ▲ 110번: POP3(메일 수신)
  ▲ 118, 156번: SQL 서비스
  ▲ 137~139번: NetBIOS(파일 서버)
  ▲ 161번: SNMP(네트워크 관리)
  ▲ 220번: IMAP3(일부 메일 서비스)
  ▲ 812, 987번: 버디버디
  ▲ 1214번: 카자
  ▲ 1720번: 넷미팅
  ▲ 1863, 6891~6900번: MSN 메신저
  ▲ 3389번: 터미널 서비스(원격 데스크톱)
  ▲ 4000번: ICQ
  ▲ 4000, 6112번: 배틀넷(디아블로, 스타크래스트, 워크래프트)
  ▲ 4662번: e동키(기본값)  ▲ 5500, 5800, 5900번: VNC
  ▲ 6257, 6699번: 윈MX(기본값)
  ▲ 6346번: 그누텔라
  ▲ 6699번: 냅스터
  ▲ 7674, 22321번: 소리바다 2
  ▲ 9292, 9999번: 구루구루
  ▲ 28290번: PDBOX

  여기에 나오지 않은 프로그램의 포트 번호는 소프트웨어 제조사에 물어보면 알 수 있다. 몇몇 프로그램은 정해진 포트 번호를 쓰지 않고 사용자가 마음대로 정하는 메뉴를 둔다. 그런 프로그램을 쓴다면 포트 번호를 10,000번보다 높은 숫자로 정하는 것이 좋다. 이렇게 하면 다른 프로그램과 포트가 충돌하는 문제가 생기지 않는다.

 

 

 

 

 

첨부1) P2P 프로그램이 사용하는 네트워크 포트

Service Name Protocol Port Description
당나귀
TCP 4661 서버 접근 포트(변경가능)
4662 자료 전송 포트(변경가능)
4242  
UDP 4672  
4665  
iMash TCP 5000  
BitTorrent TCP 6881  
6889  
소리바다 v.2 UDP 22321 hello message, bye message 사용 포트
7674 mp3를 검색
7675 mp3파일을 보내는 사람
WINMX TCP 6699  
UDP 6257  
Direct-Connect TCP 411-412  
UDP 411-412  
KaZaA TCP 1214  
Guntella-Morpheus TCP 6346-6347  
UDP 6346-6347  
GuRuGuRu TCP 9292  
8282  
31200  
파일 구리 TCP 9493  
Madster-Aimster TCP 23172  
9922  
HotLine TCP 5497  
5498  
5500-5503  
UDP 5499  
V-Share TCP 8404  
Maniac TCP 2000  
UDP 2010  
TCP 2222  
MiRC TCP 6667 Default
6665-6670 변경
7000  
Shareshare TCP 6399  
UDP 6777  
Bluster UDP 41170  
GoToMyPc TCP 8200  
Napster TCP 6600-6699  
4444  
5555  
6666  
7777  
8888  
8875  
첨부2) 메신저 프로그램 사용 포트
Service Name Server Port Description
MSN
64.4.130.0/24
207.46.104.0/24
207.46.106.0/24
207.46.107.0/24
207.46.108.0/24
207.46.110.0/24
TCP 1863 ,80 1863접속 시도 후 차단 되면 80 접속 시도
TCP 6891-6900 파일 전송
UDP 6901 음성채팅
UDP1863,5190 Microsoft Network Messenger
   
Yahoo 216.136.233.152/32
216.136.233.153/32
216.136.175.144/32
216.136.224.143/32
66.163.173.203/32
216.136.233.133/32
216.136.233.148/32
66.163.173.201/32
216.136.224.213/32
TCP 5050,5101 5050 접속 시도 후 차단 되어 있으면 Port 계속 변경
   
TCP 5000-5001 음성채팅
   
   
TCP 5100 화상채팅
   
   
Nate On 203.226.253.75/32
203.226.253.135/32
203.226.253.82/32
TCP 5004-5010 기본 포트 5004-5010 접속 시도후 차단되어 있으면 Port를 계속 변경
TCP80,83,7003 웹 컨텐츠 및 문자 보내기
Daum 211.233.29.78/32 TCP 8062  
SayClub 211.233.47.20/32    
AOL   TCP 5190 AOL Instant Messenger Also used by: ICQ
UDP 4000 ICQ_locator
Dreamwize 211.39.128.236/32
211.39.128.184/32
TCP 10000  
버디버디   TCP 810  
TCP 940  
TCP 950  
케이친구   TCP 7979  
천리안   TCP 1420  
TCP4949, 8989 파일 송수신
ICQ   TCP 5190  
UIN   TCP 8080  
Genile   TCP 10000