728x90

출처 : http://www.bloter.net/archives/176582

프로그래머가 되려면 무엇부터 해야 할까. 학원에 가면 되려나? 그럴 필요까지는 없다. 컴퓨터 1대만 있으면 프로그램을 짜는 언어를 배울 수 있기 때문이다.

프로그래밍 언어를 배우는 과정은 외국어 공부와 비슷하다. 일본어, 중국어, 영어 등 다양한 외국어가 있듯이 프로그래밍 언어도 여러 종류가 있다. 외국어를 가르치는 e러닝 사이트가 있는 것처럼, 프로그래밍도 온라인으로 배울 수 있다.

준비하기

먼저 공부할 프로그래밍 언어를 고르자. 외국어를 배울 때 영어, 중국어, 아랍어 등을 동시에 익히기 어려운 것처럼 일단 어떤 언어를 배울지 생각해야 한다. 개발자가 주로 사용하는 프로그래밍 언어는 C, C#, 오브젝트C, 자바(Java), HTML, PHP, 리눅스, MySQL 등 대략 50여개 정도다. 그 중 어떤 언어를 먼저 시작해야 할까?

C는 공대학생이 필수로 공부하는 언어다. C는 오래전에 생겼지만 그만큼 기본에 충실한 문법구조를 가지고 있다. 라틴어가 영어, 스페인어의 기초가 된 것처럼 C#, 자바, 오프젝트 C 같은 언어들은 C에서 파생됐다. 대부분의 언어는 비슷한 구조를 갖기 때문에 어느 언어든 하나를 제대로 공부해 놓으면 다른 언어를 활용하는데 무리가 없다.

배우기 쉬운 언어는 웹프로그래밍 언어이다. 웹프로그래밍 언어는 웹사이트 제작할 때 필요한 언어로, 많이 사용되는 것은 HTML, CSS, 자바스크립트가 있다.

mooc_logo

초급편 : 문법 배우기

프로그래밍을 배우기 위해서는 컴퓨터가 이해하는 문법을 먼저 배워야 한다. 영어를 배울 때 문장 구조가 주어, 동사, 목적어 순서대로 써야 한다는 규칙을 알아야 하는 것처럼 말이다. 어떤 언어든 문법을 공부하는 건 지루하고 어렵다. 다행히도 그런 걱정을 덜어주는 좋은 웹사이트들이 널렸다.

■ 웹사이트 제작 A부터 Z까지 ‘생활코딩

생활코딩은 웹사이트를 만들때 필요한 프로그래밍 정보를 제공해주는 웹사이트다. 용어를 자세하게 설명해주고 동영상 강의 자료도 풍부하다. 장점은 일단 웹사이트가 한국어로 구성됐다는 점이다. 뒤에 소개될 서비스는 대부분 영문 기반 웹사이트다. 생활코딩은 페이스북 그룹도 운영하고 있어 가입한 사용자끼리 피드백을 주고받으며 학습을 할 수 있다. 생활코딩 설립자 이고잉 님이 비정기적으로 오프라인으로 수업을 해 주기도 한다.

생활코딩 교육과정은 3부문으로 나뉜다. 생활코딩, 효도코딩, 생활표현 정보를 제공한다. 웹사이트 구축을 배우려면 ‘생활코딩’ 부분을 먼저 보면 된다. 처음 시작하는 사람은 첫 번째 챕터인 ‘웹서비스만들기’ 링크를 누르고 왼쪽 메뉴 순서대로 읽으면 된다. 간단한 오리엔테이션을 읽고 웹서비스를 만들기 위한 프로그램을 설치한다. 실습은 웹브라우저 내에서 하지 않고 자신의 컴퓨터에 설치된 프로그램을 통해 한다.

두 번째와 세 번째 챕터인 HTML과 CSS를 배우고 나면 자바스크립트부터는 조금 어려울 수 있다. 이해가 잘 되지 않는다면 일단 강좌가 안내하는대로 따라해 보고 결과화면이 제대로 나오는지만 확인해도 좋다. 초급자에게는 포기하지 않고 꾸준히 따라하는 것이 가장 좋기 때문이다. 현재까지 생활코딩만큼 이해하기 쉽게 만들어 놓은 웹사이트는 없는 것 같다. 생활코딩에서 제공하는 내용만 정확히 알게 되면 이후 다른 프로그래밍에 쉽게 도전할 수 있을 것이다.

생활코딩의 장점은 PHP, MySQL, 리눅스 언어에 대한 교육도 함께 진행되는 점이다. 웹사이트 제작 방법을 알려주는 서비스들은 보통 HTML, CSS, 자바스트립트, 제이쿼리(jQuery)까지만 알려주는 게 대부분이다. 완성한 웹사이트를 어떻게 서버에 올리고, 다른 사람이 접근 할 수 있는 방법과 다양한 데이터를 통합하는 과정은 복잡하고 배워야 할 범위도 굉장히 넓기 때문이다. 웹프로그래밍 외에 데이터베이스나 운영체제에 대해 공부하고 싶은 사람도 이 서비스를 활용할 수 있다. 생활코딩은 iOS용 앱도 제공하고 있어 실습 이외에 내용 설명이나 동영상 시청은 모바일로 할 수 있다.

■ 따라하면서 배우는 웹프로그래밍 ‘코드카데미

코드카데미는 무료로 웹프로그래밍 언어를 배울 수 있는 서비스다. 이 웹사이트의 회원수는 1월 2400만명을 돌파했다. 코드카데미는 긴 설명 대신 쉬운 예제를 직접 따라하면서 프로그래밍을 익힐 수 있도록 도와준다. 문법을 배우기 전에 간단한 예문을 익히는 셈이다. 프로그래밍은 띄어쓰기 한 칸, 콤마 하나를 잘못 찍어 오류가 나기도 한다. 프로그래밍 수업시간에는 한 글자 한 글자 자신이 직접 타이핑하면서 자신이 입력하는 것이 어떤 화면을 나오게 하는지 파악하는 게 중요하다. 그런 의미에서 코드카데미는 핵심적인 기능을 직접 타이핑할 수 있어 좋다.

코드카데미 웹사이트에 들어가서 회원가입을 하고 오른쪽에 있는 ‘Learn’을 클릭하면 배울 수 있는 언어 종류가 나온다. 코드카데미에서 배울 수 있는 언어는 HTML, CSS, 자바스크립트, 제이쿼리, PHP, 파이썬, 루비가 있다. 가장 위에 있는 3개의 탭은 예제이다. 이 예제를 실행하기 위해서는 HTML, CSS, 자바스크립트를 알아야 하므로 웹프로그래밍에 대해 전혀 모르는 사람이라면 중간에 6칸으로 나와 있는 언어배우기로 시작하는 것이 좋다. 왼쪽 처음부터 순서대로 따라하면 된다. 왼쪽 창에 영어로 설명된 코드를 검은색 창에 그대로 따라 치고 ‘Save&Submit Code’를 누른다. 그러면 결과화면이 오른쪽 흰색 창에 나오고 ‘Next Lesson’ 버튼을 눌러 다음 단계로 넘어간다. 코드를 잘못 입력했을 때는 틀린 부분을 알려주므로 그에 맞게 수정하면 된다. 마치 게임하듯 여러 단계를 통과하면 마지막 단계에 가면 코스를 수료했다고 나온다. 코드카데미에 그룹 메뉴에 들어가면 해당 언어를 배우고 있는 다양한 사용자들과 함께 질문하고 토론할 수 있다.

codecademy_01

▲코드카데미 웹사이트

codecademy_02

▲코드카데미  실습 화면

■ 어린이용 코딩에서 아이폰 앱 개발 연습까지 ‘코드닷오아르지

코드닷오아르지(Code.org)는 2012년에 설립된 비영리단체로, 프로그래밍을 연습할 수 있도록 도와준다. 이 단체는 초등학생부터 프로그래밍을 배워야하다는 캠페인을 벌이며 공립학교에 프로그래밍 교과과목을 넣기 위해 대대적인 노력을 하고 있다. 또 여성 컴퓨터 공학도 육성에도 힘쓰면서 다양한 사람이 프로그래밍에 관심을 가질 수 있도록 도와준다. 12월에는 코드닷오아르지 홍보영상에 오바마 미국대통령이 격려 메세지를 보태 화제가 되기도 했다.

이 웹사이트는 프로그래밍 언어 이론을 공부하기보다는 몇 가지 예제를 주고 그대로 따라하는 도구를 제공하고 있다. 무엇보다 어린아이들이 게임을 하면서 프로그래밍 원리를 익힐 수 있도록 도와준다. 클릭과 드래그로 일단 원하는 결과물을 만들게 하고 그 결과물 안에 어떤 소스가 들어있는지 설명해주는 식이다. 성인들을 위한 아이폰 앱, 3D게임, 가상로봇 만들기도 체험할 수 있다. 프로그램을 따로 깔지 않아도 웹브라우저 안에서 바로 프로그래밍을 연습할 수 있어 편리하다 .

중급편 : 예문 익히기

기본적인 문법을 배웠으면 요즘 자주 사용되는 코드가 어떤 건지, 내가 쓴 코드가 무엇이 잘못되었는지 비교해봐야 한다. 영어 단어를 외울 때 자주 쓰는 표현을 같이 외우면 작문이나 회화할 때 도움이 된다. 프로그래밍 언어도 마찬가지다.

개발자는 보통 코드 몇 줄을 검색하고 그와 비슷한 코드와 비교하며 잘못된 점을 찾는다. 몇몇 웹사이트는 아예 자주 쓰는 코드를 모았다.

■ 검색한 코드를 웹에서 테스트한다, ‘런어블’ 

유튜브 동영상을 실시간으로 웹페이지에 업로드하고 싶다. 숙련된 개발자라면 코드를 스스로 짤 수 있을 것이다. 하지만 코드를 검색해서 쓰는 방법도 있다. ‘동영상 자동 받아오기 코드 php’ 라고 구글에서 검색하면 코드를 찾을 수 있다. 문제는 검색한 코드가 오류가 있거나 원하는 코드가 아닐때이다. 이럴 때는 원하는 코드가 나올 때까지 계속 검색하고 프로그래밍툴에 맞추어 수정하는 작업을 반복해야 한다. 다행히도 최근 이런 반복 과정을 없애주는 웹사이트가 나왔다. 이름 그대로 검색한 소스를 바로 ‘실행할 수 있는(Runnable)’ ‘런어블’이다.

런어블은 코드를 검색하고 테스트할 수 있는 웹사이트다. 소스를 검색하고, 검색한 소스를 바로 웹에서 실행할 수 있다. 런어블에서 ‘동영상 자동 받아오기 코드 php’라고 검색하면 완성된 소스가 검색되고, 웹브라우저에서 바로 실행하고 결과화면까지 볼 수 있다. 제공된 소스를 런어블 플랫폼 위에서 수정하면서 테스트할 수도 있다.

runable02

▲런어블 웹사이트

runable03

▲런어블 실습 화면

아마존 개발자였던 야시 쿠머가 개발한 이 웹사이트는 2013년 10월 공개됐다. 현재까지 이 웹사이트에 접속하는 개발자는 15만명이 넘는 것으로 알려져 있다. 명실상부 세계 최대 소스 저장창고로 자리매김한 것이다. 런어블은 특정 기능을 수행하기 위한 함수집합(API), 소프트웨어 개발도구(SDK), 프레임워크에 관련된 코드를 모아 저장하고 이를 사용자들이 검색할 수 있게 도와준다. 사용자는 검색뿐만 아니라 자신의 제작한 코드를 직접 올릴 수 있다. 처음에 1천여개 코드로 시작한 런어블은 올해 말께는 1천만개가 넘는 소스가 저장될 것으로 예상된다. C언어, C++, JAVA도 있다.

■ 코드계의 지식iN ‘스택오버플로우

구글에서 코드를 검색했을 때 가장 자주 뜨는 웹사이트가 하나 있다. 스택오버플로우다. 스택오버플로우는 2008년 만들어진 웹사이트로, 컴퓨터 프로그래밍 관련 다양한 주제에 대한 질문과 답변을 주고받을 수 있다. 네이버 지식iN 서비스와 비슷하지만, 주제가 컴퓨터 프로그래밍에 한정된 게 차이점이다. 전세계 개발자들이 애용하는 이 웹사이트의 회원은 190만명이 넘고, 550만건이 넘는 질문이 등록돼 있다. 스택오버플로우에 올라온 코드는 저작자표시-동일조건변경허락(BY-SA) CCL 조건을 지키면 누구나 가져다 고쳐 쓸 수 있다.

stackoverflow

▲스택오버플로우 웹사이트

고급편 : 실전 연습

중급과정을 넘어섰다면 이제 실전 회화 단계로 들어서야 한다. 인터넷에 많은 자료가 축적돼 있지만 그렇다고 인터넷에서 모든 프로그래밍에 대한 답을 찾을 순 없다. 그럴 땐 자신이 배운 문법과 경험을 활용해 이것저것 새로운 코드를 만들어봐야 할 것이다. 자신이 어떤 실력을 가지고 있는지 테스트할 수도 있고, 이제껏 사용하지 않았던 프로그래밍 언어를 배울 수도 있다.

■ 프로그래밍 실력을 측정해 보자, ‘해커미터

해커미터는 프로그래밍 실력을 테스트할 수 있는 웹사이트이다. 개발자 버전과 고용주 버전으로 가입해 사용할 수 있다. 개발자 버전으로 가입했다면 원하는 언어를 클릭하고 문제를 풀 수 있다. 특정 조건을 지키면서 제시된 결과가 나오도록 프로그래밍하면 된다. 수학문제 푸는 것과 비슷하다. 별도의 프로그램을 설치하지 않고 웹브라우저 위에서 바로 테스트할 수 있다. 테스트할 수 있는 언어로는 C, C++. 자바, 루비, 파이썬이 있다. 고용주로 가입하면 원하는 수준의 개발자들을 추천해주는 e메일을 받을 수 있다.

hackmeter_01

▲해커미터 문제 화면

hackmeter_02

▲해커미터 답안 제출 화면

■ 프로그래밍 전문 온라인 강의, 유다시티 & 코세라

프로그래밍 언어 문법, 사용법을 익히고 나서 더 배우고 싶은 이에게 유다시티와 코세라를 추천한다.

유다시티는 온라인 공개수업(MOOC)운동의 하나로, 유명 대학 강의를 대중에게 무료로 제공하는 서비스다. 2011년 컴퓨터과학 과목 중심으로 온라인 강의를 제공하면서 화제를 모았다. 유다시티가 초창기 개설한 ‘컴퓨터의 원리’는 30만명이 등록했고, 이 숫자는 현재까지 MOOC 중 최고 기록이다. 2012년에는 구글, 엔비디아, 마이크로소프트와 협력해 수업을 구성하기도 했다. 현재는 컴퓨터과학 분야 외에도 디자인, 생물학, 수학, 심리학 등 다양한 분야를 수강할 수 있다. 현재 제공되는 수업은 대부분이 유료다. 대학수업 현장을 찍어 보내는 것이 아닌, 인터넷 강의용으로 따로 제작하고 있다.

코세라도 세계 유명대학 강의를 무료로 제공해주는 교육 서비스다. 코세라는 컴퓨터, 통계학, 의료보건, 경제학, 인문학 등 다양한 분야의 온라인 강의를 제공하는데, 컴퓨터 관련 수업을 가장 많이 제공한다. 전체 560개 강의 중 100여개가 컴퓨터과학 관련 수업이다.

Posted by 앗뜨거
,
728x90

JDBC 프로그램의 일반적인 실행순서

1. JDBC 드라이버 로딩

2. 데이터베이스 커넥션 구함

3. 쿼리 실행을 위한 Statement 객체 생성

4. 쿼리실행

5. 쿼리실행 결과 사용

6. Statement 종료

7. 데이터베이스 커넥션 종료


예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import = "java.sql.*" %>
 
<!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=EUC-KR">
<title>회원 목록</title>
</head>
<body>
MEMBER 테이블의 내용
<table width="100%" border="1">
<tr>
    <td>이름</td><td>아이디</td><td>이메일</td>
</tr>
<%
    //1. jdbc 드라이버 로딩
    Class.forName("com.mysql.jdbc.Driver");
 
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    
    try
    {
        String jdbcDriver = "jdbc:mysql://localhost:3306/chap12?" +
                "useUnicode=true&characterEncoding=euckr";
        String dbUser = "jspexam";
        String dbPass = "jspex";
 
        String query = "select * from MEMBER order by MEMBERID";
        
        //2.데이터베이스 커넥션 생성
        conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
        
        //3.Statements 생성 쿼리 실행을 위한
        stmt = conn.createStatement();
        
        //4.쿼리 실행
        rs = stmt.executeQuery(query);
        
        //5.쿼리 실행 결과 출력
        while(rs.next()){
%>
 
<tr>
    <td><%= rs.getString("NAME") %></td>
    <td><%= rs.getString("MEMBERID") %></td>
    <td><%= rs.getString("EMAIL") %></td>    
</tr>
<%
    }
    }
    catch(SQLException ex)
    {
        out.println(ex.getMessage());
        ex.printStackTrace();
    }
    finally
    {
        //6.사용한 Statement 종료
        if(rs != nulltry {rs.close();} catch(SQLException ex){}
        if(stmt != nulltry{stmt.close();}catch(SQLException ex){}
        
        //7.커넥션 종료
        if(conn != nulltry{conn.close();}catch(SQLException ex){}
    }
%>
</table>
</body>
</html>


자세한 내용은 최번균의 jsp2.2 웹프로그래밍 Chapter12  315 Page에 나와있다 




statement & preparedStatement


1. Statement 

String sqlstr = "SELECT name, memo FROM TABLE WHERE num = " + num 
Statement stmt = conn.credateStatement(); 
ResultSet rst = stmt.executeQuerey(sqlstr);

2. PreparedStatement 

String sqlstr = "SELECT name, memo FROM TABLE WHERE num = ? " 
PreparedStatement stmt = conn.prepareStatement(sqlstr); 
pstmt.setInt(1, num); 
ResultSet rst = pstmt.executeQuerey(); 

Posted by 앗뜨거
,
728x90

1. jstl 국제화태그 사용방법

1.톰뱃 7버전 JSTL 1.2 다운로드후 설치된 톰캣폴더의 lib 또는 현재 진행중인 WEB-INF/lib 밑에 넣어준다


javax.servlet.jsp.jstl-1.2.1.jar


javax.servlet.jsp.jstl-api-1.2.1.jar



2.리소스 번들 작성후 resource 폴더에 넣기

이클립스에서는 프로젝트 소스 디렉토리에 resource패키지를 생성한 뒤 넣기

이클립스가 아니라면 WEB-INF/classes/resource에 작성


예시>xxxxxx.properties 로 저장 (번들이름_언어_국가.properties 국가코드는 생략가능하고 영어는 언어국가 둘다 안씀)


1
2
3
4
TITLE = MadVirus's Learning JSP 2.2
GREETING = HI! I'm BK
VISITOR = your ID is {0}                  // {0} 이부분은 변경가능한 요소를 제공하는 위치
 


3. 사용할 jsp 파일 상단에

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" />



4. 예제파일


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    //fmt 국제화 태그 사용준비
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>   // c 코어 태그 사용준비
 
<fmt:setBundle basename="chap16.resource.message" var="message" />   <!-- 사실 var="message 는 없어도됨 없애면 밑에도 다 없애야됨  -->
<!-- var가 있으면 출력되지않고 key 값을 저장  var가 없으면 바로 출력-->
<fmt:message bundle="${message }" key="TITLE" var="title" />    
 
<!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=EUC-KR">
<title>${title }</title>
</head>
<body>
 
<fmt:message bundle="${message }" key="GREETING" />
<br>
<c:if test="${! empty param.id }">      <!-- 파라메터가 비어있지않으면 메시지 출력 -->
    <fmt:message bundle="${message }" key="VISITOR">
        <fmt:param value="${param.id }" />
    </fmt:message>    
</c:if>
</body>
</html>

결과물은 
HI! I'm BK 
가 나옵니다

만약 주소 맨 뒤에 ?id=aaa를 넣어주면
결과물은
HI! I'm BK 
your ID is aaa

2. jstl 국제화태그 태그 사용


1.메시지 처리 태그


2.숫자 및 날짜 포맷팅 처리 태그

- <fmt:formatNumber> 태그(태그가 숫자를 문자열로 변환)

- <fmt:parseNumber> 태그(문자열을 숫자로 변환)


- <fmt:formatDate> 태그 (날짜정보를 담고있는 객체를 포맷팅하여 출력)

- <fmt:parseDate> 태그 (문자열로 표시된 날짜 및 시간의 값을 java.util.Date 로 파싱해주는 기능)

- <fmt:timeZone> 태그와 <fmt:setTimeZone>태그 (각나라마다의 시간대 별로 시간을 처리할수 있는 기능)

Posted by 앗뜨거
,
728x90

파일 리스트 조회하기[이클립스]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.*;
 
public class CreateFile2 //파일 조회
{
    public static void main(String[] args)
    {
        String fname = "src/chap11/two";
        File f = new File(fname);
        
        File[] files = f.listFiles();
        
        for (int i = 0, j=0; i < files.length; i++)
        {
            if(files[i].getName().endsWith(".java"))        //끝에 .java 파일이 있으면 출력
            {
                System.out.println(j++ +1 +" . " + files[i].getName());
            }
        }
    }
}



결과



Posted by 앗뜨거
,
728x90

파일 입출력에서  if(var_byte == 10 || var_byte == 13) continue;    이부분이 왜 있는것인가 고민하다가 찾아보니 
아스키10번은 그줄의 맨 앞으로  13번은 바로 다음줄로 이동하는 코드였다 
그래서 저 코드가 나오면 다음코드를 읽지않고 바로 do{ 처음으로 가는것이다

ex> 

예를 들어....

 

Hi my name is _

 

... 라고 치고 _ 위치가 커서라고 치면....

 

Hi my name is

_

 

... 와 같이 커서가 다음 줄 첫번째 위치로 가려면 실제적으로

 

Hi my name is

                         _

 

... 와 같이 줄을 넘기고

 

Hi my name is

_

 

... 와 같이 옮긴 다음 줄의 처음으로 지이익 당기는 두단계로 이루어집니다.

 

여기서 다음 줄로 넘기는 것이 Line Feed 아스키코드 13 이고

옮기 다음 줄에서 제일 처음으로 지이익 당기는 것이 CR 아스키코드 10

... 이라고 생각하시면 무난하리라 생각됩니다.

 

printf 같은 곳에서 \n 의 개행문자로 위와 같은 동작을 하는데

문자는 \n 이지만 이에 대응되는 아스키코드는 CR+LF 라고 보아야 합니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.*;
 
public class Ex_Inputstream 
{
    
    public static void main(String[] args)
    {
        int var_byte=-1;
        
        System.out.println("값을 입력하세요 :");
        
        do
        {
            try
            {
                var_byte = System.in.read();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }    
            
             // 아스키코드 10=>     Line feed(줄 맨처음으로) 13=>다음줄로    
            if(var_byte == 10 || var_byte == 13) continue;        ← 이부분
            if(var_byte == -1) break;            
            System.out.println("읽은값 : "+(char)var_byte);            
        }
        while(true);
    }
 
}



알아본 김에 아스키코드표






Posted by 앗뜨거
,
728x90



출처 : http://blog.naver.com/judge41/140105495861


Posted by 앗뜨거
,
728x90

구글링을 통해 JAVA를 활용한 한글 인코딩 처리에 대해 자료를 찾아봤는데 정확하고 좋은 자료가 많지 않았다.


위 블로그에서는 자바에서 String은 UTF-8로 취급된다..고 언급하고 있다.

그러나 내가 해보니 JAVA 프로그램 소스 파일의 인코딩을 따라가는 것 같다.
소스파일이 MS949 방식이면 파일 입출력에서도 MS949 방식을 따른다.

따라서 인코딩 형식이 UTF-8 포맷의 소스파일에서 파일 입력과 출력을 MS949 형식으로 된 것을 하려면 이렇게 해야한다.




1
2
3
4
5
6
7
8
9
10
//파일 입력
FileInputStream fileInputStream = new FileInputStream(filePath);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "MS949");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
 
 
//파일 출력
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
OutputStreamWriter OutputStreamWriter = new OutputStreamWriter(fileOutputStream, "MS949");
BufferedWriter bufferedWriter = new BufferedWriter(OutputStreamWriter);

 
 
따라서 MS949 인코딩으로 된 텍스트 파일을 읽어서 UTF-8 로 저장하고 싶다면, 위에는 MS949, 아래엔 UTF-8로 입력부와 출력부를 잡아주면 된다.


Posted by 앗뜨거
,
728x90

출처 : 라임소프트 님의 블로그(http://raimsoft.com/xe/2997)

 

비주얼스튜디오에 비주얼 어시스트가 있다면, 이클립스에는 테마 플러그인이 있습니다.

 

하지만, 오늘은 플러그인을 사용하지 않고도 이클립스 테마를 변경하는 법을 알아보겠습니다.

http://www.eclipsecolorthemes.org/

바로 이클립스 테마 파일을 제공하는 사이트인데요

자신이 테마를 직접 변경하면서 확인할 수도 있고요.

만들어진 테마나, 인기 있는 테마들을 구경하면서 마음에 드는 것을 자신의 이클립스에 적용시킬 수 잇습니다.

 

 

사이트에서 볼 수 있는 테마들입니다.

주로 노트북 배터리 절약이나, 흰 바탕이 눈이 아프시다거나 소스가 눈이 쏙쏙 잘 들어오신다는 이유로

어두운 배경의 테마를 선호하시는 듯합니다.

xml 파일은 플러그인을 별도로 사용하셔야 하고요.

 

*.epf 파일을 받으실 경우에는 다음과 같은 방법으로 적용시키실 수 있습니다.

1. Project Explorer 에서 오른쪽 마우스 클릭

2. Import 메뉴뉴

3. General -> Preferences

4. Browse 로 원하는 테마를 선택한 후에 Finish 를 누르면 자동으로 적용된답니다.


Posted by 앗뜨거
,
728x90

mysql DATETIME형의 기본값으로 현재시간 설정

mysql에서 시간을 저장하는 컬럼에 현재시간을 기본으로 설정하려면 기본값을 CURRENT_TIMESTAMP로 하면 된다. CURRENT_TIMESTAMP를 기본값으로 하면 INSERT나 UPDATE시 now()를 쓰는 것과 같은 효과를 볼 수 있다.

하지만 DATETIME형의 경우 5.6버전 이후부터 CURRENT_TIMESTAMP를 사용할 수 있다.

5.5이하 버전에서 기본값으로 현재시간을 설정하려면 DATETIME형 대신 TIMESTAMP형을 사용한다. 저장하려는 시간이 아래 기간 안에 있다면 문제없이 쓸 수 있다.

'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

위 시간에 벗어나는 시간대를 저장해야 하고 INSERT시 현재값을 저장하려면 아래 방법 중 1개를 선택한다.
1. mysql 5.6버전 이상으로 업그레이드하고 DATETIME형을 사용, DEFAULT값을 CURRENT_TIMESTAMP로 한다.
2. 5.5버전 이하에서는 DATETIME형으로 선언하고, INSERT시 now()를 사용해서 시간을 수동으로 설정한다.


Posted by 앗뜨거
,
728x90


우선 톰켓 5.5* 이상 부터는 Connection Pool 설정시에 server.xml 과 web.xml 에 

별도로 내용을 설정할 필요없이 context.xml 설정만 하면 된다 . 

 

 

그래서 tomcat 6.0 에서는

 

conf 디렉토리의 context.xml에 파일에 설정하면된다.

server.xml에 설정하지 마라 안된다.

 

참고사이트  : http://webprogrammer.tistory.com/1288

http://disse77.tistory.com/65

 

<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
 
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->
  <Resource name="jdbc/SpringDS"
  auth="Container"
  type="javax.sql.DataSource"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost/디비명"
  username="아이디"
  password="사용자암호"
  maxActive="20"
  maxIdle="10"
  maxWait="3000"/>

</Context>

 

 

===>그리고 web.xml에 

<resource-ref>        
    <description>MySQL DB Connection</description>        
    <res-ref-name>jdbc/SpringDS</res-ref-name>        
    <res-type>javax.sql.DataSource</res-type>         
    <res-auth>Container</res-auth>    
</resource-ref>

 

와 같이 선언안해줘도 사용할수 있다.

 

 

 

===>스프링에서 사용하려면 아래와 같이 dataSource.xml에 선언해주면된다.

 

 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
     <property name="jndiName" value="java:comp/env/jdbc/SpringDS" />  
     <property name="resourceRef" value="true" /> 
 </bean>    


1. 첨부된 파일은 받는다. (Link)

dbcp.zip

 


2. 다음 순서대로 받은 파일들을 해당 폴더에 넣는다.

commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.2.jar

이 파일들을 자신이 이클립스에서 만들어둔 프로젝트/WebContent/WEB-INF/lib 폴더에 복사한다..

mysql-connector-java-3.0.14-production-bin.jar

그리고 위의 JDBC 라이브러리는 설치된 톰캣의 lib 폴더 안에 복사한다.

 

3. 프로젝트/WebContent/META-INF 폴더에 context.xml 파일을 생성한다. 

 

4. 프로젝트/WebContent/WEB-INF 폴더에 web.xml 파일의 web-app 태그 안에 코드를 추가한다.

 

5. DBCPTest.jsp 실행하기

 

6. 결과 화면



혹시 잘 안보이면 

pool.zip

그림캡쳐파일입니다.


출처 : http://youngman.kr/?p=1025





Posted by 앗뜨거
,