[설치] Hello, World!

프로그래밍/Android 2010. 5. 11. 16:06 Posted by galad
http://developer.android.com/sdk/installing.html

1. eclipse 받기
  3.4 이상 버젼 필요.
  Java 또는 RCP 버젼이 추천됨. 3.5 버젼인 경우엔 eclipse classic 추천.

2. Android SDK 받기
  받아서 설치하기. SDK Setup 실행해서 최신으로 업데이트함.
  환경변수 설정은 필요하면 하기.

3. ADT(Android Development Tool) plugin for eclipse 설치
  링크 참조

4. Adding Android Platforms and Other Components
  SDK Setup 실행해서 원하는 컴포넌트를 선택해서 업데이트 하기
  컴포넌트에 대한 설명은 링크 참조

5. SDK 둘러보기
  링크 참조

-> Hello World~로

'프로그래밍 > Android' 카테고리의 다른 글

[Hello,Android] 익명의 내부 클래스  (0) 2010.08.17
[Hello,Android] WebView 사용 시  (1) 2010.08.16
[Hello,Android] 기본팁  (0) 2010.06.08
[Hello,Android] Activity Lifecycle  (0) 2010.06.07
[설치] Hello, World!  (0) 2010.05.11

[unix] ftp 사용법

프로그래밍/Server 2010. 4. 21. 01:53 Posted by galad
http://user.chol.com/~wjkim43/cpjb/unixtelnetftp.htm

나. FTP 접속

 유닉스에서 파일을 공유하기 위한 명령어인 FTP(File Transfer Protocol)는 접속하려는 컴퓨터에 원격접속을 하여 파일을 복사한다. FTP를 사용하기 위해서는 몇 가지 필요한 것이 있다.
 접속하려는 컴퓨터의 사용권 즉 ID가 있어야 한다.
 파일을 복사하거나 복사해 넣으려는 컴퓨터의 파일시스템 IP 어드레스, 혹은 도메인명(DNS)을 알아야 한다.

 (1) FTP 실행
 FTP명령을 실행하는 것은 아주 간단하다.
 ftp[ip Address]  혹은, ftp[도메인명]
 예를 들어, ftp 203.255.208.22라고 입력하면 해당 IP 주소의 컴퓨터에 접속하게 된다. 또한  ftp sunsite.snu.ac.kr라고 입력하면 서울대학교의 SUN 사이트의 ftp 서버에 접속하게 된다.
 또한 위와 같이 IP주소와 도메인명을 적지 않고 단순히 ftp만을 실행하고 ftp프롬프트 상에서 명령어를 사용하여 접속할 수 있다.
 ftp
ftp>open sunsit.snu.ac.kr

(2) FTP 명령어
 ㉮ prompt
 mget이나 mput 명령으로 파일을 전송하고 받으려 할 때 파일마다 전송을 할 것인지를 묻고 사용자가 'y'를 입력해야만 파일을 전송하는데, prompt명령을 사용하면 이러한 과정이 없이 무조건 파일을 전송한다.

 ㉯ bye, quit
 ftp 접속을 끊고 프로그램을 종료한다.

 ㉰ close, disconnect
 ftp접속을 해제한다.

 ㉱ cd
 디렉토리를 바꾼다. 유닉스와 도스의 cd 명령과 같다.

 ㉲ ls
 파일의 리스트를 보여준다. 유닉스의 명령어인 ls 와 같다.

 ㉳ lcd
 로컬 디스크의 디렉토리를 바꾼다. 즉, 현재 사용중인 컴퓨터 내부의 하드디스크의 디렉토리를 변경한다.
 !
 쉘 프롬프트로 잠시 빠져 나간다. 대부분의 도스 응용프로그램의 기능 중 하나인 도스쉘과 같은 기능이다. 다시 FTP로 들어가려면 exit를 입력한다.

 ㉴ delete[remote file]
 리모트 접속한 컴퓨터의 파일을 삭제한다.

 ㉵ mdelete[remote file]
 리모트 접속한 컴퓨터의 파일을 한꺼번에 삭제한다.

 ㉶ bin
 ftp를 통해 전달되는 데이터의 형태는 ascii형태이다. 즉, 7비트로 데이터가 전송되는데, 일반 텍스트 이외의 파일은 대부분이 바이너리 파일로 8비트로 데이터를 전송해야 한다. 그래서 바이너리 형태의 데이터를 받으려면 bin 명령을 실행해야 한다.

 ㉷ ascii
 데이터의 전송을 바이너리에서 아스키형태로 변환한다.

 ㉸ hash on
 데이터의 전송상태를 보여준다. hash명령을 사용하지 않으면 데이터가 현재 얼마나 전송되고 있는지 알 수 없다. hash명령을 실행하고 데이터를 받거나 전송하면  # 이 증가하게 되어 전송되고 있는 상황을 보여준다.

 ㉹ get
 파일을 다운로드 받는 명령이다. get명령은 선택한 하나의 파일만을 다운 받는다.

 ㉺ mget
 파일을 여러 개를 동시에 다운 받을 때 사용하는 명령이다. get명령은 한 번에 하나의 파일만을 받을 수 있으나 m(multi)get명령은 와일드카드 즉 * 와 ~를 파일을 선택할 때 사용할 수 있어서 여러 개의 파일을 받을 수 있다.

 ㉻ put/mput
 put은 파일을 업로드하는 명령이다. 한 번에 하나의 파일만을 업로드한다. 현재 자신의 디스크의 파일을 원격 접속한 컴퓨터의 하드디스크에 파일을 복사한다. mput은 한꺼번에 여러 개의 파일을 업로드하는 명령이다. mget과 마찬가지로 와일드카드를 사용하여 파일을 업로드한다.

[json] org.json.* 사용하기

프로그래밍/ETC 2010. 4. 20. 16:05 Posted by galad
public void testJson() {
        try {
            JSONStringer test1 = new JSONStringer();
            test1
                .object()
                    .key("key")
                    .value("value")
                .endObject();
           
            System.out.println(test1.toString());
           
            JSONStringer test2 = new JSONStringer();
            test2
                .array() // array 시작 [
                    .object() // object 시작 {
                        .key("key")
                        .value("value")
                        .key("key2")
                        .value("value2")
                    .endObject() // object 끝 }
                    .object()
                        .key("2key")
                        .value("2value")
                    .endObject()
                .endArray(); // array 끝 ]
           
            System.out.println(test2.toString());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

결과는
{"key":"value"}
[{"key":"value","key2":"value2"},{"2key":"2value"}]


[html] shortcut icon 붙이기

프로그래밍/Web 2010. 4. 15. 14:10 Posted by galad
http://msdn.microsoft.com/en-us/library/ms537656(VS.85).aspx

<head>
<link rel="SHORTCUT ICON" href="http://www.mydomain.com/myicon.ico"/>
<title>My Title</title>
</head>

[oracle] ' 포함한 쿼리

프로그래밍/DB 2010. 4. 9. 18:05 Posted by galad
SELECT COUNT(*) FROM PRODUCT_INFO WHERE PRODUCT_NAME LIKE '%''%' AND PRODUCT_ID LIKE 'H%'

'' 으로 '을 2개 넣으면 된다..

http://www.oracleclub.com/article/32632

'프로그래밍 > DB' 카테고리의 다른 글

[SQLite] Quick Start  (1) 2010.05.24
[oracle] 쿼리 결과를 파일로 출력하기  (0) 2010.05.20
[oracle] select 문을 이용한 update  (0) 2010.03.08
[oracle] 제약조건 확인하기  (0) 2010.02.25
[Toad] tab 간격 조정하기  (0) 2010.02.02
http://msdn.microsoft.com/ko-kr/library/cc817570.aspx

작업 중에 개발서버에서는 IE8에서 style이 제대로 먹는데, 스테이징서버에서는 안되는 현상이 발생.
도저히 원인을 알 수 없어서 httpWatch로 stream을 잡아보니,

스테이징에서는 헤더가
HTTP/1.1 200 OK
Date: Fri, 09 Apr 2010 06:58:34 GMT
Server: Apache
Content-Length: 6990
X-UA-Compatible: IE=EmulateIE7
P3P: CP='ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI'
Keep-Alive: timeout=10, max=2000
Connection: Keep-Alive
Content-Type: text/html;charset=UTF-8
이렇게 오는 것을 확인.

다른 건 제쳐두고 IE=EmulateIE7으로 오는게 아무래도 이상해서 구글링해보니 역시나...(위 링크 참고)
Windows Internet Explorer 7에서 올바르게 동작하는 기존 웹 페이지를 유지 관리하고 있으며, 최소한의 수정만으로 Windows Internet Explorer 8에서 동작하도록 이 웹 페이지를 업데이트해야 하는 경우

다음 헤더를 보내도록 서버를 구성합니다.

X-UA-Compatible: IE=EmulateIE7


X-UA-Compatible: IE=EmulateIE7 은 결국, IE8에서 IE7처럼 보여주게 하겠다는 뜻.
이러니 IE8에서 제대로 안 보여지는 스타일이 생기지...

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8"/>

메타 추가하니 잘 되더라...

원래는 서버 설정을 변경해야겠으나, 일단 디자인 깨지는 게 이 페이지 하나라서 이걸로 땜빵했음.

http://loved.pe.kr/entry/MS-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%88%B4-Expression-Web-SuperPreview

MS 브라우저 테스트 툴이란다...

http://blogs.msdn.com/xweb/default.aspx

ps. 덴장. 깔려있는 브라우져에 대해서만 테스트 가능한 거군..


http://www.my-debugbar.com/wiki/IETester/HomePage
이건 될려나... IE8이 깔려있어야 하긴 마찬가지인듯...

'프로그래밍 > Library' 카테고리의 다른 글

[ftp] FTP/SFTP/FTPS 의 차이점  (0) 2010.10.18
[eclipse] plug-ins  (0) 2010.08.17
[program] 프로파일러  (0) 2009.12.03
[Eclipse] Aptana Studio  (0) 2009.11.30
[Eclipse] 형상관리 plug-in  (0) 2009.11.30

[java] Convert Milliseconds to Date

프로그래밍/Java 2010. 3. 15. 19:13 Posted by galad
http://www.roseindia.net/java/java-conversion/MillisecondToDate.shtml


long yourmilliseconds = 1119193190;
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
Date resultdate = new Date(yourmilliseconds);
System.out.println(sdf.format(resultdate));

'프로그래밍 > Java' 카테고리의 다른 글

[java] 이미지 리사이즈  (0) 2010.07.23
[java] 소수점 자리수 / 천단위 콤마  (0) 2010.05.18
[java] invoke  (0) 2010.03.09
[java] getClass, getMethod, invoke  (0) 2010.01.22
[java] Pattern / Matcher  (0) 2010.01.22

[java] invoke

프로그래밍/Java 2010. 3. 9. 11:01 Posted by galad
String metaField = ProductConstant.FIELD_NAME_FOR_HD_DRM;
Class[] cParam = new Class[]{String.class}; // 메소드 얻을 때 사용할 파라미터 타입. 메소드명, 파라미터갯수 및 종류로 해당 메소드를 찾는다
Object[] oParam = new Object[]{hdProductDrmYn}; // 실제 invoke 시 사용할 파라미터값

Class cls = pi.getClass(); // 메소드를 invoke할 클래스

// 메소드 얻기 getMethod(메소드명, 파라미터타입) : get 메소드면 파라미터 필요없음
Method cMtd = cls.getMethod("set" + metaField.substring(0, 1).toUpperCase() + metaField.substring(1), cParam);

// invoke(invoke할 객체, 파라미터)
cMtd.invoke(pi, oParam);

'프로그래밍 > Java' 카테고리의 다른 글

[java] 소수점 자리수 / 천단위 콤마  (0) 2010.05.18
[java] Convert Milliseconds to Date  (0) 2010.03.15
[java] getClass, getMethod, invoke  (0) 2010.01.22
[java] Pattern / Matcher  (0) 2010.01.22
[java] 파일 관련  (0) 2010.01.07
/**
 * 전화번호 형식으로 바꾸기
 * 예)     02282342232 -> 02-8234-2232
 *         0312437845    -> 031-124-7845
 *         01071050616    -> 010-7105-0616
 * @param num
 * @return
 */
function phone_format(num){
    return num.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3");
}

'프로그래밍 > Web' 카테고리의 다른 글

[html] shortcut icon 붙이기  (0) 2010.04.15
[html] X-UA-Compatible: IE=EmulateIE7  (0) 2010.04.09
[javascript] DOM 스크립트  (0) 2010.01.15
[jstl] jstl 사용하기  (0) 2010.01.08
[jsp] jstl 설명  (0) 2010.01.08
UPDATE TBL_US_MEMBER
SET
OP_HP_NO = (SELECT REPLACE(OP_HP_NO, '-', '') FROM TBL_US_MEMBER A WHERE TBL_US_MEMBER.MBR_NO = A.MBR_NO)
WHERE MBR_CAT_CD = 'US000207'

'프로그래밍 > DB' 카테고리의 다른 글

[oracle] 쿼리 결과를 파일로 출력하기  (0) 2010.05.20
[oracle] ' 포함한 쿼리  (0) 2010.04.09
[oracle] 제약조건 확인하기  (0) 2010.02.25
[Toad] tab 간격 조정하기  (0) 2010.02.02
[ORACLE] 특수문자 입력  (0) 2009.10.21

[struts2] Workflow interceptor

프로그래밍/Framework 2010. 3. 2. 14:22 Posted by galad
Action이 ActionSupport 를 상속하고 있으면 Validateable 을 제대로 구현하지 않더라도 기본적인 것은 체크하는 듯...

form에 같은 이름의 input이 2개 있는데 - 배열로 받아야 할 듯 - Action에서는 하나만 처리하게 해놨더니

계속 예외가 발생하는데 원인을 알 수가 없어서 고생했음.

HttpWatcher 같은 걸로 확인할 때 참고할 것.

[oracle] 제약조건 확인하기

프로그래밍/DB 2010. 2. 25. 18:26 Posted by galad
SELECT  SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME,
               DECODE(B.CONSTRAINT_TYPE,
                                         'P','PRIMARY KEY',
                        'U','UNIQUE KEY',
                      'C','CHECK OR NOT NULL',
                                        'R','FOREIGN KEY') CONSTRAINT_TYPE, 
              A.CONSTRAINT_NAME   CONSTRAINT_NAME    
        FROM  USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B  
        WHERE  A.TABLE_NAME = UPPER('&table_name')  
            AND  A.TABLE_NAME = B.TABLE_NAME  
            AND  A.CONSTRAINT_NAME = B.CONSTRAINT_NAME  
        ORDER BY 1;  

'프로그래밍 > DB' 카테고리의 다른 글

[oracle] ' 포함한 쿼리  (0) 2010.04.09
[oracle] select 문을 이용한 update  (0) 2010.03.08
[Toad] tab 간격 조정하기  (0) 2010.02.02
[ORACLE] 특수문자 입력  (0) 2009.10.21
[Oracle] Toad 단축키  (0) 2009.08.22
http://www.itkuja.com/tt/108?TSSESSION=369b61cb290986c94201216056805511

find / -name "*rms*"
find (대상디렉토리) -옵션

[Toad] tab 간격 조정하기

프로그래밍/DB 2010. 2. 2. 14:18 Posted by galad
참고: http://www.asktoad.com/DWiki/doku.php/faq/answers/editor

기본설정에서는 탭이 이상하게 - 윗줄의 단어에 맞춰서 - 움직이게 되어있음

To resolve these problems, go to Edit → Editor Options and look under "General Options", under the "General Options" node, where there are several options related to tab stops. Unchecking "Auto indent" and "Tab to next column" will make the step size consistent. Unchecking "Insert TABs into text for TAB characters" and "Insert mixture of tab/space for optimal fill" will make TOAD use spaces instead of Tabs, which will prevent any problems where TOAD's tab stop difference is different from another program's.

'프로그래밍 > DB' 카테고리의 다른 글

[oracle] select 문을 이용한 update  (0) 2010.03.08
[oracle] 제약조건 확인하기  (0) 2010.02.25
[ORACLE] 특수문자 입력  (0) 2009.10.21
[Oracle] Toad 단축키  (0) 2009.08.22
[oracle10g] 페이징 시 rownum 사용하기  (0) 2009.04.06

[java] getClass, getMethod, invoke

프로그래밍/Java 2010. 1. 22. 15:22 Posted by galad
public static void setAllowedTypes(FileUploadInfo info, SubContentInfo sinfo) throws ContentException {
    log.debug("<< setAllowedTypes >> START");

    Class cls = info.getClass();
    Class scls = sinfo.getClass();
    Method[] mtd = cls.getDeclaredMethods(); // cls에 선언된 모든 메소드를 반환
    Pattern p = Pattern.compile("get_fileUpload_(\\d+)FileName"); // 패턴 설정. \d+ 는 정수 하나 이상(정규식)
    Matcher m = null;
    String mStr = null;
    String mType = null;
    String defExt = null;
    int i;

    for(i = 0; i < mtd.length; i++) { // 모든 메소드만큼 돌면서
        m = p.matcher(mtd[i].getName()); // 메소드명과 패턴을 비교
        if(m.find()) { // 매칭된 것이 발견되면
            try {
                // group으로 매칭된 내용(메소드명)을 받아서 그 메소드를 실행. 파일명을 얻음.
                mStr = FileUploadInfo.getValueOfMethod(info, m.group());
                if(mStr != null) { // 파일명이 존재하는 경우만
                    // group(1)으로 매칭된 번호를 얻어서 메소드 실행. 콘텐트 타입을 얻음.
                    mType = FileUploadInfo.getValueOfMethod(info, "get_fileUpload_" + m.group(1) + "ContentType");
                    // 기본 확장자 지정
                    defExt = "";
                    if(mType != null) {
                        defExt = mStr.substring(mStr.lastIndexOf(".") + 1);
                        defExt = defExt.toLowerCase().trim();
                       
                        log.debug("defExt = " + defExt);
                       
                        if("jpg".equals(defExt) ||
                           "gif".equals(defExt) ||
                           "xml".equals(defExt) ||
                           "xmp".equals(defExt) ||
                           "png".equals(defExt) ||
                           "zip".equals(defExt) ) {
                            // 진행
                        }else {
                            // 오류 발생
                            throw new ContentException("지원하지 않는 파일입니다.");
                        }
                    }
                   
                    Class[] cParam = new Class[]{String.class};
                    // 메소드를 찾는데, 메소드명이 "set...."이고 cParam형식을 파라미터로 갖는 메소드를 반환. null이면 파라미터 없는 메소드
                    // cParam이 Class 배열인 것은 파라미터가 여럿인 메소드가 있기 때문에.
                    // 여기서는 String을 파라미터로 갖는 set_fileUp.... 메소드를 반환.
                    Method cMtd = cls.getMethod("set_fileUpload_" + m.group(1) + "FileName", cParam);
                    Object[] oParam = new Object[]{mStr};
                    // FileUploadInfo에 등록
                    cMtd.invoke(info, oParam); // info의 set_fileUpload_XFileName 메소드를 실행. 파라미터는 oParam
                    // SubContentInfo에 등록
                    // 1. FileUPloadInfo의 FieldName을 찾는다.
                    cMtd = cls.getMethod("get_fileUpload_" + m.group(1) + "FieldName", null);
                    String tmpFieldName = (String)cMtd.invoke(info, null); // 업로드 파일명을 저장할 대상 필드명을 얻어서
                    // 2. SubContentInfo의 의 1번의 Method에 등록한다.
                    cMtd = scls.getMethod("set" + tmpFieldName.substring(0, 1).toUpperCase() + tmpFieldName.substring(1)  , cParam);
                    cMtd.invoke(sinfo, oParam); // 서브콘텐츠info에 저장함.

                }
            }
            catch (ContentException e) {
                log.debug("지원하지 않는 파일 예외 발생", e);
                throw e;
            }
            catch (Exception e) {
                    e.printStackTrace();
            }
        }
    }

}

public static String getValueOfMethod(Object obj, String methodName)
        throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    String str = "";
    Class cls = obj.getClass();
    Method mtd = cls.getMethod(methodName, null); // 넘겨받은 오브젝트의 클래스의 메소드를 얻어서
    str = (String)mtd.invoke(obj, null); // 메소드를 실행시킴.
    // 이때 파라미터로 받은 오브젝트는 메소드가 실행될 대상 오브젝트. 즉, obj의 메소드 mtd를 실행함.

    return str;
}

동적으로 움직이는 기능을 만들기 위해서는 필수적.

'프로그래밍 > Java' 카테고리의 다른 글

[java] Convert Milliseconds to Date  (0) 2010.03.15
[java] invoke  (0) 2010.03.09
[java] Pattern / Matcher  (0) 2010.01.22
[java] 파일 관련  (0) 2010.01.07
[java] thorws .....  (0) 2009.12.11

[java] Pattern / Matcher

프로그래밍/Java 2010. 1. 22. 15:02 Posted by galad
public class MatcherTest {

    /**
     */
    @Test
    public void testMatcher() {
        //Method[] mtd = cls.getDeclaredMethods(); // cls에 선언된 모든 메소드를 반환
        String mtd = "get_fileUpload_0FileName";
        Pattern p = Pattern.compile("get_fileUpload_(\\d+)(FileName)"); // 패턴 설정. \d+ 는 정수 하나 이상(정규식)
        Matcher m = null;
       
        m = p.matcher(mtd);
        if(m.find()) {
            System.out.println(m.group()); // matcher에서 매칭된 것 전체를 반환
            System.out.println(m.group(0)); // group() 과 같음.
            System.out.println(m.group(1)); // matcher에서 매칭된 것 중, pattern에서 첫 번째 ()로 묶인 것을 반환. 결과는 "0"
            System.out.println(m.group(2)); // matcher에서 매칭된 것 중, pattern에서 첫 번째 ()로 묶인 것을 반환. 결과는 "FileName"
        }
    }
}

Pattern.complie 과 정규식으로 패턴 설정.
matcher 로 그 매칭 결과를 받은 후, group 으로 매칭된 내용을 확인

'프로그래밍 > Java' 카테고리의 다른 글

[java] invoke  (0) 2010.03.09
[java] getClass, getMethod, invoke  (0) 2010.01.22
[java] 파일 관련  (0) 2010.01.07
[java] thorws .....  (0) 2009.12.11
[java] 소스 분석  (0) 2009.09.06

[javascript] DOM 스크립트

프로그래밍/Web 2010. 1. 15. 11:09 Posted by galad
9장 CSS와 DOM 연동하기를 읽으면서 간단 정리

1. DOM의 style 프로퍼티로는 외부 스타일 시트에서 선언한 style 객체 및 문서 내부의 미리 선언한 스타일 정보도 가져올 수 없다.
  오로지 인라인으로 선언된 style 속성의 정보만을 가져올 수 있음.

2. DOM으로 style 변경 시 기존 class 속성에 새 class 속성을 추가하고 싶을 때
  eleme.className += " newClass"; 이런 식으로 공백을 두고 추가.

Summary.
  DOM으로 style을 바꾸는 일이 얼마나 있을지는 모르겠음. 단, CSS에 정의되어 있는 class에 대한 정의를 이용해서 DOM으로 class를 변경하는 것 정도는 사용할지도 모르겠음.

10장 애니메이션 슬라이드쇼 만들기

1. setTimeout/clearTimeout
variable = setTimeout("function", interval);
clearTimeout(variable);

변수명 = setTimeout(함수, 인터벌(밀리초));
clearTimeout(변수명); // 위에서 설정한 timeout을 취소

movement = setTimeout("moveMessage()", 5000);

clearTimeout(movement);

2. parseInt
parseInt(string)

문자열을 정수로 반환
문자열 중 정수만 반환 : parseInt("39 degree") == 39

3. CSS: overflow
  overflow:visible --> 전체를 모두 표시. 내용을 포함하고 있는 요소 밖으로 삐져나가서 표시
  overflow:hidden --> 요소 밖으로 나간 것은 표시하지 않음
  overflow:scroll --> 요소 안의 것만 보이나 스크롤 바가 생김
  overflow:auto --> 내용이 클 경우 스크롤 바가 생김

4. 사용자 지정 프로퍼티
var elem = document.getElementById(elementID);

elem.movement = setTimeout(repeat, interval);

if(elem.movement) {
    clearTime(elem.movement);
}

elementID에 movement라는 프로퍼티를 추가.

5. @import
<style type="text/css" media="screen">
  @import url("styles/layout.css");
</style>

css파일 안에서도 사용가능
js도 가능.

11장 총정리

1. margin, padding
* {
    padding: 0;
    margin: 0;
}

전체 선택자로 마진과 패딩을 0으로 설정 -> 브라우저마다 제각각인 기본 스타일 문제를 해결

부록

DHTMLgoodies.com

'프로그래밍 > Web' 카테고리의 다른 글

[html] X-UA-Compatible: IE=EmulateIE7  (0) 2010.04.09
[javascript] 전화번호 형식으로 바꾸기  (0) 2010.03.08
[jstl] jstl 사용하기  (0) 2010.01.08
[jsp] jstl 설명  (0) 2010.01.08
[jsp] jstl 설치  (0) 2010.01.08

[jstl] jstl 사용하기

프로그래밍/Web 2010. 1. 8. 16:41 Posted by galad
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="test.model.*" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="c_rt" uri="http://java.sun.com/jstl/core_rt" %>

<%
    //List<FileBrowsingInfo> fileBrowsingInfoList = (List<FileBrowsingInfo>)request.getAttribute("fileBrowsingInfoList");
%>

<c_rt:set var="fileBrowsingInfoList" value='<%=request.getAttribute("fileBrowsingInfoList")%>' />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>파일 목록</title>
</head>
<body>

<c:forEach items="${fileBrowsingInfoList}" var="info">
    <c:if test="${info.uploadCompleted}">
    </c:if>
    <c:if test="${!info.uploadCompleted}">
    </c:if>

    <c:out value="${info.name}"></c:out>
    <br />
   
    <c:set var="childList" value="${info.childList}"></c:set>
    <c:forEach items="${childList}" var="childInfo">
        &nbsp;&nbsp;&nbsp;&nbsp;
        <c:out value="${childInfo.fileName}"></c:out>
        <br />
    </c:forEach>
</c:forEach>

</body>
</html>

1. jstl 사용시의 변수 scope이 스크립틀릿의 변수와는 약간 다르단다. http://lonelycat.tistory.com/389
  그래서 c_rt:set을 이용해서 변수 정의. (value 가 들어가는 자리에 표현식을 쓰기 위해서는 RT 기반의 태그를 사용해야 된다.)

2.
<c:out value="${info.name}"></c:out> 에서 info 클래스에 name에 대한 getter가 존재해서 사용가능.
  마찬가지로 <c:set var="childList" value="${info.childList}"></c:set> 에서도 childList에 대한 getter가 존재(getChildList).
  getter/setter 만 잘 맞춰주면 문제없는 듯.

3. <c:if test="${info.uploadCompleted}"> 또는 <c:if test="${!info.uploadCompleted}"> 처럼 boolean 형도 사용가능.
  uploadCompleted가 boolean으로, isUploadCompleted/setUploadCompleted의 get/set 메소드가 존재.

'프로그래밍 > Web' 카테고리의 다른 글

[javascript] 전화번호 형식으로 바꾸기  (0) 2010.03.08
[javascript] DOM 스크립트  (0) 2010.01.15
[jsp] jstl 설명  (0) 2010.01.08
[jsp] jstl 설치  (0) 2010.01.08
[servlet] 서블릿에서 jsp로 포워드하기  (0) 2010.01.07