Ubuntu에 subversion을 잘 설치해서 쓰다가.. svn+ssh가 안되어서 날려버렸다.. ;;

그래서 다 지우고 다시 설치하였는데.. 또 날리면 개고생할까봐.. 일단.. 적어놓는다..

apt-get remove subversion

apt-get install subversion

저장소 폴더 생성 -
mkdir /{your_path}/svn/

sudo groupadd {your_group}
sudo usermod -a -G {your_group} {your_account}

project 생성
cd {your_path}/svn/
sudo mkdir {project_name}
sudo chown -R {your_account}:{your_group} {project_name}
sudo chmod -R g+rws {project_name}

저장소 생성
sudo svnadmin create --fs-type fsfs /home/svn/{project_name}
cd /home/svn/{project_name}

svnserve -d -r /home/svn

ssh key 생성
ssh-keygen -b 1024 -N {password} -f {keyName}
cp {keyName.pub} ~/.ssh/authorized_keys

password / auth 설정

TEST
svn mkdir -m 'Created Test' --username yeory svn://localhost:3690/{project_name}/trunk
svn mkdir -m 'Created Test' --username yeory svn://localhost:3690/{project_name}/tags
svn mkdir -m 'Created Test' --username yeory svn://localhost:3690/{project_name}/brunch
svn rm -m 'Deleted Test directory' svn://localhost:3690/{project_name}/{folder_name}

확인
svn ls svn://localhost:3690/{project_name}/

출처 : http://www.ericmmartin.com/projects/simplemodal-demos/



압축파일내 index.html 실행화면

앞뒤 코드 다떼고 필요 소스만 남긴 후 실행 화면


간단해서 좋군요.. 이외에도 Form 간단한 알림창 등이 있는데 -
모두 js로 되어 있어서 script로 불러다 class로 사용하면 되네요..
중요한 것은 style이 잘 정의 되어 있어야 있어보이네요.. ㅋ

아래는 필요 부분만 남긴 소스..







	 or Demo
	
	
input title here

TEST

SimpleModal



각 기능별로 구분해 놓았고, 각 예제는 script load후에 불러다 쓰면 되게 전부 js로 빼 놓은것이 대부분입니다.
그렇지 않은 것은 코드가 워낙 간단한 것이구요..

점점 jQuery가 위대해 집니다..
(아파치 및 톰캣 설치는 생략)

1. httpd.conf 설정 (기본 서버 설정 파일)
 - 서버에서 사용할 모듈 및 전체 보안 설정 등을 관리.
  a. virtual host 및 mod_jk 설정하기.

아파치와 Tomcat을 이어주는 커넥터 파일임.
이 파일을 다운 받아 아파치 설치폴더내에 modules 폴더로 붙여넣습니다.

httpd.conf를 열어 보면 아래와 같은 내용이 있습니다.

~ 윗줄은 생략 ~
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
~ 아랫줄도 생략 ~

LoadModule을 추가해야 한다. LoadMoudle 하단에 아래줄을 추가합니다.
LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so

톰캣에 관한 내용을 httpd.conf에 직접 기술하여도 되나, 효율적인 관리를 위해 http-tomcat.conf라는 파일로 따로 관리 합니다.


아파치 설치 폴더/conf/extra 내에 빨간색 박스의 파일을 추가합니다.
하나는 톰캣, 하나는 가상 호스트 파일입니다,
이 두가지 모두 httpd.conf에 직접 기술하여도 되나 관리하기 쉽지않아서
따로 설정 파일로 빼두어 불러들이는 형식으로 관리합니다.

그리고 httpd.conf 하단에
# User home directories
#Include conf/extra/httpd-userdir.conf
# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

이런 구문이 있는데 conf 파일을 읽어들이는 부분입니다.
아래 부분을 추가해줍니다.
# Tomcat
Include conf/extra/httpd-tomcat.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf 




httpd.conf에 정의하는 부분은 끝입니다.
이제 각각의 설정파일을 세부적으로 설정해주어야 합니다.

2. httpd-tomcat.conf , workers.properties 설정.

# Where to find workers.properties
JkWorkersFile 아파치_설치_폴더/conf/workers.properties
# 따로 안빼도 되지만.. 관리 효율 증가를 위해.. properties로 뺐음.

# Where to put jk shared memory
JkShmFile     logs/mod_jk.shm

# Where to put jk logs
JkLogFile     "|아파치_설치_폴더/bin/rotatelogs.exe 로그_저장할_폴더/mod_jk_%Y-%m-%d.log 86400"
# 로그, 86400은 24시간 주기로 파일 생성하는 것.


# Set the jk log level [debug/error/info]
JkLogLevel    error
#로그 레벨
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
<Location /jkmanager/>
  JkMount jkstatus
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 xxx.xxx.xxx.xxx
</Location>
 #Allow From은 톰캣 접근을 허용할 IP를 지칭한다. 자기 자신과 서버 컴퓨터 IP를 적는다.

- worker.properties

worker.list=tm-router, jkstatus
worker.jkstatus.type=status

worker.tomcat.port=8809
  #주의 여기서 사용하는 port는 톰캣 설정 중 ajp13 포트임.
worker.tomcat.host=localhost
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

worker.tm-router.type=lb
worker.tm-router.balance_workers=tomcat

3. httpd-vhosts.cnf 설정.

<VirtualHost *:8787> #httpd.conf의 listner port와 같아야 함.
    ServerAdmin admin@localhost
    ServerName localhost (or your domain)
    DocumentRoot "아파치_설치_폴더/htdocs"
   
    ErrorLog  "|아파치_설치_폴더/bin/rotatelogs.exe 로그_찍을_폴더/tm-error_%Y-%m-%d.log 86400"
    CustomLog "|아파치_설치_폴더/bin/rotatelogs.exe 로그_찍을_폴더/tm-access_%Y-%m-%d.log 86400" combined

    Alias /app1 "D:/app/app1"
    # /app로 접속할 경우 d:/app/app1 폴더를 바라보게 설정하는 것. 미 설정시 htdocs를 바라본다.(기본 설정 되어있으니)
 
 <Directory "D:/app/app1">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
  </Directory>

 
  <Directory "아파치_설치_폴더/htdocs">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
  </Directory>

</VirtualHost>

설정은 모두 끝.
이제 서비스 등록 후 실행해서 로그를 살피면서 에러가 없는지 보아야 한다.

예상되는 에러는 Alias를 통해 우회시킨 폴더가 index 형태로 나오는 것.
권한이 없어 제대로 표시가 되지 않는 것.

index 형태로 나오는 것은 Directory 노드에 indexes를 제거하면 된다.



'Server' 카테고리의 다른 글

DIMM, RDIMM 등  (0) 2011.04.08
Win NT에 Apache 2.2 (Virtual host, Alias) + Tomcat 6.x 연동하기.  (0) 2010.03.31
Vitual host에 alias를 붙이니 오류가 났다..

virtual host이기 때문에 서버 설정을 바꾸는게 아니라 가상 호스트 설정만 바꾸어야 한다. (보안상..)

httpd-vhosts.conf 에서
Alias /yeory "D:/yeory/webapp1"  # Alias 설정.

<Directory "D:/yeory/webapp1">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
</Directory>


만약 가상호스팅을 하지 않고 단독으로 사용한다면 별수없이 서버 설정을 바꾸는게 맞다.
즉 httpd.conf의

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
적색 부분을 Allow from all 바꿔주면 된다.

그리고 자신의 WebRoot로 이동했을때 기본 페이지인 index.jsp, default.jsp 등이 보여지지 않으면 서버 설정을 수정하여야 한다.

<IfModule dir_module>
    DirectoryIndex index.html index.jsp default.jsp
</IfModule>

적색 부분 처럼 자신이 작성한 기본 페이지를 추가해주면 되는 것..

'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29


Eclipse에서 Web Project 생성.

Project Name : DWR-Test

dwr.jar 파일을 Project내의 WEB-INF/lib에 넣어준다.


web.xml에 아래 내용 추가.

     dwr-invoker                  org.directwebremoting.servlet.DwrServlet                        debug               true                 dwr-invoker         /dwr/* 


중간 파란색 부분은 dwr 버전이 1.x라면 uk.ltd로 시작하는것을 servlet-class로 적어주어야만 한다. 무조건.


dwr.xml 만들기.

                                                      

<dwr> 위에 아래 docType을 추가한다. (코드 하이라이터에서 docType을 빼버려서..)
 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

creator에 new라는 것은 객체를 만들어서 사용한다는 것이고.. HelloTest는 jsp나 html에서 객체의 이름으로 사용할 것을 적는당.
param의 class란 java파일이므로 class라 한 것이고... value의 dwr.test.SimpleText는 java파일의 경로를 적은 것.
hello란 것은 SimpleText Class의 메소드로 hello가 있다는 것을 정의해준 것.(그냥 쓸거 정의하면 됨..)

SimpleText.java 만들기

src 아래에 패키지 만들기를 통해 dwr.test를 만든 후 test 아래에 SimpleText class를 만든다.

package dwr.test;    public class SimpleText {            public String hello(String value){                   return "Hello ~ "+value;            } }

hello는 dwr.xml에서 정의한 것(자신이 쓸 메소드)과 일치시켜주면 된다.

이제 톰캣에 Project를 올리고 서버를 실행시킨후에
http://localhost:{your_port}/{your_app}/dwr/
위 주소로 들어가게 되면 dwr.xml에 정의했던 Class 목록이 나오게 된다.

위와 똑같이 했다면 이런 화면....

그리고 HelloTest를 눌러보면은.. 아래와 같이 나오게 된다..

위 그림에서 보면 script 구문이 3줄이 있다.
DWR이 알아서 저걸 만들어 준다는 것이다.
그리고 그 아래에는 Test를 할 수 있는 부분이 있다.

WebContent/index.jsp 만들기.


<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>   


send를 클릭하게 되면 JavaScript의 test() function이 호출이 된다.
test에서는 demo에 적혀진 text를 value로 저장해 DWR에서  정의한 객체(HelloTest)의 메소드(hello)를 호출한다.
그런데 hello 메서드를 보게 되면 매개변수가 하나 였는데 script내에서는 2개이다..

why? 

이를 callback function이라 하는데, return값이 있다면 return 값을 처리하는 함수이다.
왜 저렇게 쓰냐고 하면... 그냥 간단히 하기 위해서??
왜 복잡한지 궁금하다면..

function test(){     var value = dwr.util.getValue("demo");     HelloTest.hello(value, cb_function);}function cb_function(data){     dwr.util.setValue("here", data);}


이렇게 사용하느니 그냥 줄여서 사용한다 이거다. 

위 예제는 정말 간단하게 DWR 설명이 가능한 예제이다..
jsp -> Java로 가는 대부분의 과정을 DWR이 처리해주고 있다..

무분별한 사용은 금지..
데이터가 많을 경우 메모리 급상승 최악에는 서버가 죽어버린다..

아래 링크에서 확인할 수 있다.
http://javaora.tistory.com/109



'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29

jQuery('#grid_selector').jqGrid( options )

 options에 해당하는 속성들.

Property Description
url

tells us where to get the data. Typically this is a server-side function with a connection to a database which returns the appropriate information to be filled into the Body layer in the grid

- 데이터를 가지고 와야할 url을 지정하는 곳. DB연결 동시에 적합한 정보를 body부분의 grid에 채워주는 server-side 기능이다.

datatype

this tells jqGrid the type of information being returned so it can construct the grid. In this case we tell the grid that we expect xml data to be returned from the server, but other formats are possible. For a list of all available datatypes refer to API Methods

- grid가 생성될때 리턴된 정보의 타입을 적는 곳. 이 경우 서버로부터 xml 데이터를 가져와 처리가능하고 다른 형식(타입)도 가능하다. 자세한 것은 API 메소드 보고 알아서 하라.

mtype

tells us how to make the ajax call: either 'GET' or 'POST'. In this case we will use the GET method to retrieve data from the server

- GET 방식으로 호출할지 POST로 호출할지를 적는 곳. 대부분 GET으로 이용한다.

colNames

an array in which we place the names of the columns. This is the text that appears in the head of the grid (Header layer). The names are separated with commas

- 컬럼의 이름을 지정하는 곳. Header Layer에 표시된다.

colModel an array that describes the model of the columns. This is the most important part of the grid. Here I explain only the options used above. For the complete list of options see colModel API:
name
the name of the column. This name does not have to be the name from database table, but later we will see how we can use this when we have different data formats

- 컬럼의 이름. 이름은 DB Table의 이름이 될 수 없으며, 추후 서로 다른 타입의 데이터 타입의 정보를 가지고 있을때 어떻게 사용할 수 있는지 볼 수 있다.

index
the name passed to the server on which to sort the data (note that we could pass column numbers instead). Typically this is the name (or names) from database -- this is server-side sorting, so what you pass depends on what your server expects to receive

- 데이터 정렬을 위한 인덱스. (DB의 테이블의 컬럼명을 따른다.)

width
the width of the column, in pixels
align
the alignment of the column
sortable
specifies if the data in the grid can be sorted on this column; if false, clicking on the header has no effect
pager

defines that we want to use a pager bar to navigate through the records. This must be a valid html element; in our example we gave the div the id of "pager", but any name is acceptable. Note that the Navigation layer (the "pager" div) can be positioned anywhere you want, determined by your html; in our example we specified that the pager will appear after the Body layer.

- 여러 데이터를 페이지 bar 하기 위해 선언하는 것. 반드시 유효한 element 여야 한다.

Navigation layer( Div : pager ) 를 이용하여 원할때 어디서든지 사용 가능하다.

rowNum

sets how many records we want to view in the grid. This parameter is passed to the url for use by the server routine retrieving the data

- grid에 몇개의 데이터를 보여 줄 것인지 지정 하는 것.

rowList

an array to construct a select box element in the pager in which we can change the number of the visible rows. When changed during the execution, this parameter replaces the rowNum parameter that is passed to the url

- pager의 select box가 생성될때 배열로 볼수 있는 데이터의 수를 지정한다. 갯수가 바뀌어 실행이 되면 rowNum 파라미터가 자동적으로 바뀌게 되어 url로 전송이 되어 다시 데이터를 가져온다.

sortname

sets the initial sorting column. Can be a name or number. This parameter is added to the url for use by the server routine

- 초기화 될때 sort할 컬럼을 지정한다. 숫자 or 컬럼 이름일 수 있고, 서버 루틴 사용을 위한 파라미터에 추가되는 것(?)

sortorder

sets the sorting order. This parameter is added to the url

- 정렬 방법 (desc | asc)

viewrecords

defines whether we want to display the number of total records from the query in the pager bar

- 총 레코드 수를 pager bar에 표시할 것 인지 지정하는 것.

imgpath

the path to the images needed for the grid. The path should not end with '/'

- 생략

caption

sets the caption for the grid. If this parameter is not set the Caption layer will be not visible

- Grid의 제목을 설정하는 것. 이 부분이 없으면 제목은 보여지지 않는다.




* HTTP Status Code
  사용자가 HTTP나 파일 전송 프로토콜(FTP: File Transfer Protocol)을 통해  인터넷 정보 서비스(IIS: Internet Information Server를 실행하는 서버의  콘텐츠에 액세스 하려고 하면 IIs에서는 요청 상태를 나타대는 숫자 코드를  반환한다. 이 상태 코드는 IIS로그에 기록되고 웹 브라우저나 FTP 클라이  언트에도 표시될 수 있고 요청이 실패한 정확한 이유도 표시할 수 있다.


* 1xx - 정보 전달용
 이 상태 코드는 임시 응답을 나타낸다.
 클라이언트가 정식 응답을 받으려면
 하나 이상의 1xx 응답을 받을 준비가 되어 있어야 한다.

 100 : Continue 계속 작업한다.
 101 : Switching protocols 프로토콜을 전환한다.

 

* 2xx - 성공
 상태 코드의 이 클래스는 서버가 클라이언트 요정을 받아들였음을 나타냄.
 200 : OK, 에러없이 전송 성공
 201 : Created, POST 명령 실행 및 성공
 202 : Accepted, 서버가 클라이언트 명령을 받음
 203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부만  전송. 권한이 없는 정보이다.
 204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음
 205 : Reset content 내용을 다시 설정한다.
 206 : Partial content  일부 내용

 

* 3xx - 경로 변경
 클라이언트 브라우저는 요청을 처리하기 위해 좀더 조치를 취해야 한다.
 예를 들어, 브라우저는 서버에서 다른 페이지를 요청해야 하거나
 프록시 서버를 사용하여 요청을 반복해야 할 수 있다.

 300 : Multiple choices, 최근에 옮겨진 데이터를 요청
 301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음
 302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시개체 이동
 303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음
 304 : Not modified 웹페이지에서 요청만하고 자신의 브라우저의 캐쉬를 사용하는 경우 수정되지 않았다.
 305 : Use proxy
 307 : 임시 리디렉션

 

* 4xx - 클라이언트 오류
 오류가 발생하고 클라이언트에 문제가 있는 것으로 나타난다.
 예를 들어, 클라이언트가 존재하지 않은 페이지를 요청하거나 올바른 인증 정보를 제공하지 않을 수도 있다.
 400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음
 401 : Unauthorized, 클라이언트의 인증 실패  엑세스가 거부되었다
  IIS는 오류의 원인을 보다 구체적으로 나타내는  여러 다른 401 오류를 정의한다.
  이러한 특정 오류 코드는 브라우저에 표시되지만 IIS 로드에는 표시되지  않는다.
  401.1 : 로그온하지 못했다.
  401.2 : 서버 구성으로 인해 로그온하지 못했다.
  401.3 : 리소스의 ACL(Access Control List)에 의해 엑세스가 거부됨.
  401.4 : 필터에 의해 권한을 부여하지 못했다.
  401.5 : ISAPI/CGI 응용 프로그램에 의해 권한을 부여하지 못했다.
  401.7 : 웹 서버의 URL 인증 정책에 의해 엑세스가 거부되었다.   이 오류 코드는 IIS 6.0만 해당된다.
 402 : Payment required, 예약됨
 403 : Forbidden, 접근이 거부된 문서를 요청함
  IIS는 오류의 원인을 보다 구체적으로 나타내는 여러 다른 403 오류를  정의한다.
  403.1 : 실행 엑세스 금지
  403.2 : 읽기 엑세스 금지
  403.3 : 쓰기 엑세스 금지
  403.4 : SSL
 404 : Not found, 문서를 찾을 수 없음
 405 : Method not allowed, 리소스를 허용안함
 406 : Not acceptable, 허용할 수 없음
 407 : Proxy authentication required, 프록시 인증 필요
 408 : Request timeout, 요청시간이 지남
 409 : Conflict
 410 : Gone, 영구적으로 사용할 수 없음
 411 : Length required
 412 : Precondition failed, 전체조건 실패
 413 : Request entity too large,
 414 : Request-URI too long, URL이 너무 김
 415 : Unsupported media type

 

* 5xx - 서버 오류 - servlet이나 JSP의 요청을 서버가 처리 하지 못함
 500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시)
 501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을   요구함
 502 : Bad gateway, 서버의 과부하 상태
 503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태
 504 : Gateway timeout
 505 : HTTP version not supported

 

 

퍼갓땐 댓글을 남기시기 바랍니다.

최소한의 예의겠지요..

 


'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29

오늘 FireFox와 IE에서 Date 객체의 getYear()의 결과가 다른걸 발견했다.

FireFox는 3.6 IE는 8.0


FireFox에서 나온 결과인데 getYear()의 결과는 110이다.







IE에서의 결과인데 getYear()는 2010이다.
이넘이 왜 1900을 자동으로 더해버리는지는 모르겠지만....
이는 IE 7.0에서도 마찬가지 결과를 확인했다..





파폭인지 IE인지 구분해주어야해서 소스를 추가했는데 document.all 이다.
all element는 IE에서만 존재하는 것이므로 IE일 경우는 1이된다.
var temp = now.getYear();
var year = temp;
var ie = (document.all)?1:0;
if( ie == 0) year += 1900;



'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29


위와 같은 그림이 있는데 -
직장/집 을 선택하면 주소를 넣어야하고, 수신거부를 선택하면 패스되는 유효성 검사를 해보려하는데 -

html을 이용한 for문을 사용한 것, jQuery를 이용하는 것 2가지를 비교해보면..

if(frm.p_addressGubun.length > 0){
	var b = 0; 
	for(var i=0; i<frm.p_addressGubun.length; i++){
		// 직장-집 일 경우
		if(frm.p_addressGubun[i].checked && frm.p_addressGubun[i].value != '3'){
			b = 1; break;
		// 수신거부일 경우
		}else if(frm.p_addressGubun[i].checked && frm.p_addressGubun[i].value == '3'){
			b = 2; break;
		}
	}
	if(b == 0){
		alert("주소 구분을 선택해 주세요. 주소가 없는 경우 수신거부를 선택하십시오.");
		 return false;
	}else if(b == 1 && frm.p_zipCode.value == ""){
		 alert("주소를 입력하세요. 주소가 없는 경우 수신거부를 선택하십시오.");
		 return false;
	}
	return true;
}


위 코드를 jQuery 코드로 바꾸면.. 아래와 같다..
if(frm.p_addressGubun.length > 0){
	if($j(':radio[name="p_addressGubun"]:checked').length < 1){
		alert("주소 구분을 선택해 주세요. 주소가 없는 경우 수신거부를 선택하십시오.");
		return false;
	}
	}else if($(':radio[name="p_addressGubun"]:checked').val() != 3 && frm.p_zipCode.value == ""){
		 alert("주소를 입력하세요. 주소가 없는 경우 수신거부를 선택하십시오.");
		 return false;
	}
	return true;
}


정말 간단해 진다..
:radio -> elements 중 radio 버튼 들
[name="elements_name"] -> elements_name 을 가진
합치면 :radio[name="p_addressGubun"] -> p_addressGubun 이름을 가진 radio 버튼을 선택한다.
:checked 선택된 것만.


+ Recent posts