4일의 휴식이 끝나고


아침에는 하는 일 없이 있다가

점심 먹은 이후 주어진 과제


오랜만에 자바였다..


어디서부터 시작해야 하는지

무엇을 해야하는 건지

전혀 감도 안 오고..


시작은 했지만

내가 하고 있는 게 맞는 건지

모르겠다.


언제까지나 도움만 받을 수도 없기에

너무 막막한 나머지 시작을 어떻게 해야하는 건지만


그리고 내가 하고 있는 게 맞는 건지 확신만이라도..


그래도 나름 확신은 갖고 퇴근 할 수 있었다.

변수는 말 그대로 변하는 수이다. 값을 넣을 수 있는 빈 그릇과 같다.



변수 선언하고 값 대입하기

변수를 사용하기 위해 어떤 형태의 자료를 저장할 것인지 정해야 한다. 이 형태를 변수의 '자료형'이라고 한다. 변수의 자료형을 선택했다면 변수의 이름도 정해주어야 한다. 이렇게 변수의 자료형을 선택하고 이름을 정하는 것을 '변수를 선언한다'라고 한다.


선언한 변수에는 자료형에 맞는 값을 대입할 수 있다.


코드

int level;

level = 10;

System.out.println(level);

int는 정수를 나타내는 자료형이고, level은 변수 이름이다.

= 기호는 프로그램에서는 '오른쪽 값을 왼쪽에 대입한다'는 의미로 사용한다.


결과



변수 초기화하기

코드

int level = 10;

System.out.println(level);

변수를 선언할 때 변수 값을 바로 대입할 수 있다. 변수에 처음 값을 대입하는 것을 '초기화'라고 한다. 

변수의 초기화는 변수 선언과 동시에 초기화를 할 수도 있고, 변수를 선언한 이후 대입할 값이 정해지는 시점에 초기화를 할 수도 있다.


결과


변수 이름 정하기

- 변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $, _만 사용할 수 있다.

- 변수 이름은 숫자로 시작할 수 없다.

- 자바에서 이미 사용 중인 예약어는 사용할 수 없다.


변수 이름은 프로그램에서 계속 사용하기 때문에 사용 목적에 맞게 의미를 잘 부여해서 만드는 것이 좋다. 

변수 길이에 제한이 없으므로 줄임말보다는 의미를 풀어서 쓰는 것이 프로그램을 작성하고 이해하는 데 편리하다.

카멜 표기법(camel notation) - 소문자로 시작하여 여러 단어로 만들 경우 중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용


'Hello, Java' 문장을 화면에 출력하는 프로그램 만들기

1. 첫 프로젝트 만들기

http://minimelody.tistory.com/151 - 자바 프로젝트 생성 참고


2. 첫 번째 클래스 만들기

자바 프로그램은 모두 클래스 기반으로 구성된다. 이클립스 화면에서 프로젝트를 선택하고 오른쪽 마우스를 클릭하면 메뉴가 나온다. 먼저 패키지(package)를 만들어야 하므로 New - Package를 선택한다.

* 클래스(class)란 객체를 소스 코드로 나타낸 것

* 패키지란 프로그램 소스의 묶음으로 클래스를 만드는 데 반드시 필요


3. 패키지 이름을 적고 Finish를 누른다.

* 패키지 이름은 항상 소문자로 쓴다.


4. 패키지 아래에 클래스를 만든다. 패키지를 선택하고 오른쪽 마우스 버튼을 클릭해서 New - Class 메뉴를 선택한다.


5. New Java Class 창이 나타난다. 클래스 이름을 적고 public static void main(String [] args) 항목을 선택하여 main( ) 함수를 추가하고 Finish 버튼을 누른다. main( ) 함수란 프로그램의 첫 시작점을 의미한다.


6. 클래스 파일이 만들어지면 소스 코드 몇 줄이 자동으로 생성된다. main( ) 함수 내부에 적혀 있는 // TO DO~ 문장을 지우고

System.out.println("Hello, Java");

를 작성한다.


7. 이클립스는 빌드 자동화(Build Automatically) 옵션이 기본으로 설정되어 있어서 파일을 저장하면(Ctrl + S) 자동으로 컴파일된다. 저장 후 Ctrl + F11을 눌러서 프로그램을 실행한다. 프로그램을 실행하면 이클립스 아래쪽의 콘솔(console) 창에서 실행 결과를 볼 수 있다.

* 빌드란 컴파일러가 소스 코드를 컴파일하여 실행 파일을 만드는 과정. 자바는 빌드 과정을 통해 .class 파일이 만들어진다.

* 컴파일은 프로그래밍 언어를 기계어로 번역해 주는 과정


주석으로 소스 코드 정보 표시하기

주석은 프로그램에 설명을 추가하거나 특정 코드가 컴파일되지 않도록 처리할 때 사용한다. 특히 소스 코드 설명을 주석으로 잘 작성해 놓으면 나중에 본인이나 다른 개발자가 프로그램을 볼 때 이해하기 쉽다.


- 한 줄 주석 표시하기

문장 앞에 // 표시를 하면 주석으로 처리되고 컴파일되지 않는다. 간단한 테스트 코드를 작성하거나 코드 바로 옆에서 설명을 하는 데 주로 쓰인다.


- 여러 줄 주석 표시하기

/*, */ 기호로 주석의 시작과 끝을 나타낼 수 있다. 코드의 여러 줄을 한꺼번에 주석 처리하거나 코드에 대해 길게 설명할 때 사용한다.


스프링은 버전에 따라 JDK의 제한이 있으므로 주의해야 한다.

- 5.x의 경우 JDK 1.8 이상

- 4.x의 경우 JDK 1.6 이상

- 3.x의 경우 JDK 1.5 이상


JDK 설치

http://minimelody.tistory.com/150에서 JDK 8 설치


Eclipse 설치

Eclipse는 https://www.eclipse.org/downloads를 이용해서 다운로드할 수 있다.


Eclipse 설치는 'Eclipse IDE for Java EE Developers' 항목으로 설치한다. 설치되는 동안 필요한 파일들은 자동으로 다운로드된다.


workspace의 UTF-8 설정

Window - Preferences - General - Workspace에서 확인/변경이 가능하다.


HTML, CSS, JSP 파일에 대한 설정 역시 'Web' 메뉴를 통해서 'UTF-8'을 사용하도록 설정한다.


Eclipse를 이용하는 경우 스프링 플러그인 설치

https://spring.io/tools에서 'See all versions'를 클릭하면 기존의 이클립스에 추가할 수 있는 플러그인들의 정보를 찾을 수 있다.


이클립스 버전에 해당하는 UPDATE SITES 내용을 복사한다.


이클립스의 Help 메뉴에서 Install New Software..를 선택한다.


Add를 선택하고 복사한 Update Sites의 내용을 추가한다.


Select All을 클릭하여 설치 항목을 모두 선택하고 설치를 진행한다.


플러그인의 설치가 완료되면 이클립스를 'Restart'하게 된다. 이클립스의 재시작 후에는 화면 오른쪽 상단에 'Perspective' 항목에 'Spring' 항목이 추가된 것을 확인할 수 있다.


Tomcat 9(8) 서버 설정

Tomcat을 사용할 때에는 http://tomcat.apache.org/whichversion.html 문서를 통해서 자신의 환경에 맞는 버전을 이용해야 한다.


http://tomcat.apache.org를 통해서 Tomcat 9.0 버전을 이용한다. 만약 Spring 4.x로 진행한다면 Tomcat 8.x 버전을 이용해도 무방하다. zip이나 tar.gz 등의 압축형태를 다운로드해서 C 드라이브 밑에 압축을 해제하고 사용한다.


Eclipse에서는 Window - Preferences 메뉴의 Server - Runtime Environments 항목을 통해서 추가한다. Add 버튼을 통해서 Apache Tomcat 9를 선택하고, Tomcat이 설치된 경로를 지정해준다.

자바 애플리케이션 개발 환경

1. 데이터베이스 설치

① 오라클 데이터베이스 설치

② 사용자 계정 생성

③ 테이블 생성

2. 자바 설치

① 자바 설치 및 설정

3. 라이브러리 다운로드

① 마이바티스 라이브러리 다운로드

② JDBC 라이브러리 다운로드

4. 이클립스 설치

① 이클립스 설치 및 설정

5. 자바 프로젝트 생성

① 자바 프로젝트 생성

② 라이브러리 복사 및 빌드 경로 설정

③ 인코딩 설정


1. 데이터베이스 설치

① 오라클 데이터베이스 설치

http://minimelody.tistory.com/146와 동일하므로 PASS~


② 사용자 계정 생성

CREATE USER mybatis IDENTIFIED BY mybatis;

GRANT CONNECT, RESOURCE, DBA TO mybatis;

관리자 계정으로 접속하고 다음 명령어를 순서대로 실행하면, 사용자 계정을 생성하고 권한을 부여할 수 있다.


③ 테이블 생성

SHOP 테이블

컬럼명 

타입 

길이 

구분 

설명 

SHOP_NO

NUMBER 

 

기본키 

가게 번호 

SHOP_NAME

VARCHAR2 

100 

 

가게 이름 

SHOP_LOCATION 

CLOB 

 

 

가게 주소 

SHOP_STATUS 

VARCHAR2 

 

가게 상태 


TOY 테이블

컬럼명 

타입 

길이 

구분 

설명 

TOY_NO 

NUMBER 

 

기본키 

장난감 번호 

TOY_NAME 

VARCHAR2 

100 

 

장난감 이름 

TOY_PRICE 

NUMBER 

 

 

장난감 가격 

SHOP_NO 

NUMBER 

 

참조키 

장난감을 보유한 가게 번호 


/* 가게 테이블 생성 */

CREATE TABLE SHOP (

SHOP_NO NUMBER NOT NULL ENABLE,

SHOP_NAME VARCHAR2(100 BYTE),

SHOP_LOCATION CLOB,

SHOP_STATUS VARCHAR2(1 BYTE),

CONSTRAINT SHOP_PK PRIMARY KEY (SHOP_NO)

);


/* 가게 테이블 데이터 등록 */

INSERT INTO SHOP VALUES (1, 'Toy Store', 'A Tower Seocho dong', 'Y');

INSERT INTO SHOP VALUES (2, 'Play Store', 'B Tower Seocho dong', 'Y');

INSERT INTO SHOP VALUES (3, 'Mom Store', 'C Tower Seocho dong', 'Y');


/* 장난감 테이블 생성 */

CREATE TABLE TOY (

TOY_NO NUMBER NOT NULL ENABLE,

TOY_NAME VARCHAR2(100 BYTE),

TOY_PRICE NUMBER,

SHOP_NO NUMBER NOT NULL ENABLE,

CONSTRAINT TOY_PK PRIMARY KEY (TOY_NO)

);


/* 장난감 테이블 데이터 등록 */

INSERT INTO TOY VALUES (1, 'Lego (Model-A100)', 30000, 1);

INSERT INTO TOY VALUES (2, 'Lego (Model-A200)', 60000, 1);

INSERT INTO TOY VALUES (3, 'Lego (Model-A300)', 90000, 1);


COMMIT;


/* 가게 번호 시퀀스 생성 */

CREATE SEQUENCE SEQ_SHOP_NO INCREMENT BY 1 START WITH 4;

위와 같이 작성한 SQL 스크립트를 실행하고


SELECT * FROM SHOP;

SHOP 테이블과


SELECT * FROM TOY;

TOY 테이블에 등록한 초기 데이터를 확인할 수 있다


오라클 데이터베이스를 설치하면, 웹 애플리케이션에서 오라클 데이터베이스를 관리할 수 있는 웹 관리 콘솔이 함께 설치된다. 

관리자(SYSTEM) 계정에서

SELECT dbms_xdb.gethttpport FROM dual;

설치된 웹 관리 콘솔은 다음과 같이 8080 포트 번호를 기본 포트 번호로 사용한다. 8080 포트 번호는 아파치 톰캣에서 사용하는 기본 포트 번호와 동일한 포트 번호다. 동일한 포트 번호를 사용하면, 포트 번호 충돌로 인해 웹 서비스 실행이 안 되는 문제가 발생한다.


BEGIN

dbms_xdb.sethttpport(8081);

END;

다음 명령어를 실행하여 웹 관리 콘솔의 포트 번호를 8080에서 8081로 변경한다. 


변경한 웹 관리 콘솔의 포트 번호를 반영하기 위해서 반드시 오라클 데이터 베이스를 다시 시작해야 한다. 우선 오라클 데이터베이스를 정지하려면, 윈도우 메뉴에서 Oracle Database 11g Express Edition - Stop Database를 선택한다. 

오라클 데이터베이스를 다시 시작하려면, 윈도우 메뉴에서 Oracle Database 11g Express Edition - Start Database를 선택한다.



2. 자바 설치

① 자바 설치 및 설정

자바 설치 버전은 마이바티스 프로그래밍 개발 환경에 전반적인 영향을 미친다. 자바 설치 버전을 결정할 때 '이클립스 설치 버전, 아파치 톰캣 설치 버전', '스프링 라이브러리 버전', '마이바티스 라이브러리 버전', '마이바티스-스프링 라이브러리 버전', '기타 라이브러리 버전' 을 함께 고려해야 한다.


여기서는

이클립스 - 4.6 버전

아파치 톰캣 - 8.0.36 버전

마이바티스 라이브러리 - 3.4.1 버전

스프링 라이브러리 - 4.3.1 버전

마이바티스 - 스프링 연동 라이브러리 - 1.3.0 버전


이클립스 4.6 버전과 아파치 톰캣 8.0.36 버전은 자바 7 이상 버전이 필요하고, 마이바티스 3.4.1 버전과 스프링 4.3.1 버전은 자바 6 이상 버전이 필요하다. 마이바티스 - 스프링 연동 1.3.0 버전은 마이바티스 버전에 따라 자바 6이상 버전이 필요하다. 따라서 자바 7 버전 이상을 설치해야 한다.


http://minimelody.tistory.com/150에서 JDK 8 버전 설치 완료!



3. 라이브러리 다운로드

① 마이바티스 라이브러리 다운로드

https://github.com/mybatis/mybatis-3/releases에서 마이바티스 라이브러리를 다운로드한다. 마이바티스 3.4.1 버전을 사용한다.

* 마이바티스 라이브러리 3.2.0 이하 버전까지는 자바 5 버전에서 사용 가능하다. 반면에 마이바티스 라이브러리 3.2.0 이상 버전은 자바 6 이상 버전을 사용해야 한다.


다운로드한 mybatis-3.4.1.zip 압축 파일을 해제하면   mybatis-3.4.1.jar  파일이 있다.


② JDBC 라이브러리 다운로드

www.oracle.com/technetwork/database/features/jdbc/index-091264.html이나


오라클 데이터베이스가 이미 설치되어 있다면, JDBC 라이브러리를 별도로 다운로드 하지 않고 

C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib 에서   ojdbc6.jar파일을 찾아 사용할 수 있다.


마이바티스는 3.3.0 버전부터 기본 프록시 도구로 Javassist를 사용한다. 만일 다른 프록시 도구를 사용할 필요가 있는 경우 라이브러리를 추가로 다운로드해야 한다. 예를 들어 Cglib 프록시를 사용하는 경우 다음 URL 주소에서 CGLIB 라이브러리와 ASM 라이브러리를 다운로드할 수 있다. 


CGLIB 3.2.4 : http://mvnrepository.com/artifact/cglib/cglib/3.2.4 -   cglib-3.2.4.jar

ASM 5.1 : http://mvnrepository.com/artifact/org.ow2.asm/asm/5.1 -   asm-5.1.jar


아파치 Log4j2 라이브러리는 https://logging.apache.org/log4j/2.x/download.html에서 다운로드할 수 있다.


apache-log4j-2.11.1-bin.zip 압축 파일을 해제하면, 

log4j-api-2.11.1.jar

log4j-core-2.11.1.jar

log4j-slf4j-impl-2.11.1.jar

가 자바 프로젝트에서 사용하는 라이브러리이다.



4. 이클립스 설치

① 이클립스 설치 및 설정

이클립스 버전 

 자바 버전

4.4 이상 버전 

1.7 이상 버전 

4.x ~ 4.3 이하 버전 

1.6 이상 버전 

3.x 버전 

1.5 이상 버전 

2.x 버전 

1.4 이상 버전 


http://www.eclipse.org/downloads/packages/release/neon/3에서 이클립스 4.6버전을 다운로드한다. 


다운로드한 eclipse-jee-neon-3-win32-x86_64.zip 압축 파일은 별도로 설치 과정 없이 압축 파일을 해제한 다음 바로 실행할 수 있다.

C:\Program Files\에 압축 해제한 eclipse를 위치한다. eclipse 내에 eclipse.exe 파일을 실행하면 이클립스가 실행된다.


처음 이클립스를 실행하면, Workspace Launcher 대화상자가 나타난다. 워크스페이스는 이클립스 설정 정보와 소스 코드를 저장한 공간을 말한다. Workspace Launcher 대화상자를 살펴보면, 사용자 계정 하위 경로가 워크스페이스 저장 경로로 지정된 것을 볼 수 있다. 워크스페이스 저장 경로를 변경할 필요가 있다면, Browser.. 버튼을 눌러 원하는 경로를 지정한 다음 OK 버튼을 누른다.



5. 자바 프로젝트 생성

① 자바 프로젝트 생성

이클립스 상단 메뉴바에서 File - New - Project 메뉴를 선택한다. New 대화상자가 나타나면, Java Project 항목을 선택한 다음 Next 버튼을 누른다.


New Java Project 대화상자가 나타나면, Project name 입력 항목에 프로젝트명을 입력한 다음 Finish 버튼을 누른다.


자바 프로젝트 생성을 완료하면 Package Explorer 뷰에서 자바 프로젝트를 확인할 수 있다.


② 라이브러리 복사 및 빌드 경로 설정

/chapter01/lib 디렉토리를 생성한 다음 앞서 다운로드한 라이브러리를 복사한다.


자바 프로젝트에 복사한 라이브러리를 빌드 경로에 등록한다. 자바 프로젝트를 선택한 다음 마우스 우측 버튼을 누른다. 항목 중 Properties 메뉴를 선택하면, Properties 대화상자가 나타난다. Properties 대화상자 좌측 목록 중 Java Build Path 항목을 선택하고 Libraries 탭을 선택한 다음 Add JARs... 버튼을 누르면, JAR Select 대화상자가 열린다. /chapter01/lib 디렉토리에 포함된 모든 라이브러리를 선택한 다음 OK 버튼을 눌러 빌드 경로 설정을 완료한다.


빌드 경로에 라이브러리를 등록하면, Referenced Libraries 목록에서 등록한 라이브러리를 확인할 수 있다.


③ 인코딩 설정

자바 프로젝트에서 소스 코드를 작성할 때 한글이 깨지는 것을 방지하기 위해서 인코딩을 UTF-8로 설정한다. 인코딩 설정은 Properties에서 지정할 수 있다. Properties 대화상자 좌측 목록 중 Resource 항목을 선택하면, 우측 영역이 바뀐다. 우측 Text file Encoding 영역에서 UTF-8을 선택한 다음 OK 버튼을 눌러 인코딩 설정을 완료한다.

자바 설치하기

자바를 설치한다는 것은 자바 JDK를 설치한다는 뜻이다. 

JDK는 Java Development Kit의 줄임말로 자바 프로그램을 개발하는 데 필요한 라이브러리와 플랫폼이 포함되어 있다.


1. www.oracle.com/technetwork/jaava/index.html 에 접속한 후 Java SE를 클릭


2. Java 로고를 선택하고 'Accept License Agreement'를 클릭하고 운영체제에 맞는 자바 설치 파일을 다운로드


3. 다운로드한 파일을 실행하고 Next 버튼을 누른다. 자바가 기본으로 설치될 폴더는 C:\Program Files\Java\jdk-10.0.2이다. Next 버튼을 눌러 진행


4. 사용자 정의 설치 창이 뜨면 다음 버튼을 눌러 설치를 계속 진행한다. 설치가 완료되면 Close



이클립스 설치하기

http://minimelody.tistory.com/152에서 최근 이클립스 설치!

오라클 공부도 시작! 한가지씩 쭉 공부해야하는 게 맞지만 상황이 상황인지라, 매일 하나씩 추가해나가는 걸 선택했다.

이번에 공부하게되는 DBMS는 오라클! 이후 MySQL과 MariaDB를 공부할까 고민 중..


오라클은 Personal, Standard ONE, Standard, Enterprise 네 개의 상용 에디션과 Express(XE) 무료 에디션이 있다.

비용이나 기능 면에서는 Personal < Standard ONE < Standard < Enterprise 순서로 비싸면서 기능이 높다고 보면 된다.


Oracle XE 11g R2 설치

1. 컴퓨터의 OS가 x64(=64bit)인지 x86(=32bit)인지 확인. 제어판의 [시스템 및 보안] > [시스템] 을 실행

2. http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads 주소에 접속해서 <Accept License Agreement>를 선택하고 자신에게 맞는 파일을 다운로드. 64bit용인 [Oracle Database Express Edition 11g Release 2 for Windows x64]를 클릭해서 다운로드한다. 다운로드 받은 파일은 OracleXE112_Win64.zip이다. 다운로드를 위해서는 오라클 사이트에 회원으로 가입되어 있어야 한다.

3. 다운로드 받은 파일의 압축을 푼다. 압축이 풀린 폴더를 확인하면 DISK 1 폴더 안에 Setup.exe 파일 확인

4. 'Setup.exe'를 더블클릭해서 설치를 진행한다. 잠시 후 설치 시작 화면이 나오면 <Next>를 클릭

5. [License Agreement]에서 <I accept the terms ~~~>를 선택하고 <Next>를 클릭

6. [Choose Destination Location]에서는 설치할 폴더를 지정하는데 기본값인 C:\oraclexe\ 폴더를 그대로 두고 <Next>를 클릭

7. [Specify Database Passwords]에서 Oracle의 관리자(SYS 및 SYSTEM) 비밀번호를 지정하고 <Next>를 클릭 (1q2w3e4r%T)

8. [Summary]에서 설정된 내용을 확인하고, <Install>을 클릭

9. [InstallShield Wizard Complete]에서 <Finish>를 클릭하여 Oracle의 설치를 완전히 완료!


설치가 완료되었으니, Oracle 접속해보기

10. Windows의 [시작] > [Oracle Database 11g Express Edition] > [Run SQL Command Line]을 선택

11. [Run SQL Command Line]이 실행되고 프롬프트가 'SQL>'로 나오는데, 이 곳에 SQL문을 입력하면 된다.

12. CONNECT SYSTEM 명령으로 관리자인 SYSTEM으로 접속. 설치할 때 설정한 비밀번호를 입력하고 Enter! 접속이 되면 SHOW USER 명령으로 현재 접속된 사용자를 확인 → USER is "SYSTEM"

13. EXIT 명령을 입력해서 접속을 종료


SQL Developer를 설치해서 편리하게 Oracle 사용

14. http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/ 주소에 접속해서 SQL Developer를 다운로드한다. [Windows 64-bit with JDK 9 included]를 다운로드하면 된다.

15. 파일의 압축을 풀면 sqldeveloper 폴더가 생긴다. 이 폴더를 적당한 곳으로 이동시킨다. C:\sqldeveloper\ 폴더로 이동. 이 폴더 안에 sqldeveloper.exe 파일이 있는데, 이 파일을 자주 사용할 것이르모 마우스 오른쪽 버튼을 클릭한 후, [작업 표시줄에 고정]을 선택해서 작업 표시줄에 고정시킨다.

16. 작업 표시줄의 <SQL Developer> 아이콘을 클릭해서 실행

* SQL Developer를 처음에 실행할 경우 이전 환경 설정을 임포트하겠냐는 메시지가 나올 수 있는데, 이전에 설치한 적이 없으므로 그냥 <아니오>를 클릭하면 된다.

17. 초기 화면이 나왔을 때, [Oracle 사용 추적] 창이 나오면 그냥 <확인>을 클릭한다. 또, 초기 화면의 아래쪽의 <시작 시 표시> 체크박스도 끈다.

18. 아직 Oracle에 연결된 상태가 아니므로 새로운 연결을 생성해줘야 한다. 왼쪽 [접속] 창의 <+> 아이콘을 클릭해서 새로운 접속을 생성. [접속 이름]은 적당히 "db_system", [사용자 이름]은 관리자인 "system"을, [비밀번호]는 설치할 때 지정한 비밀번호를 입력하고 <비밀번호 저장>도 체크. 나머지는 그대로 두고 <테스트>를 클릭하면 왼쪽 아래 상태가 '성공'으로 바뀐다.

19. 이제 <저장>을 클릭하면 왼쪽 [접속] 창에 'db_system'의 접속이 추가. <접속>을 클릭해서 Oracle에 접속

20. 접속에 성공하면 [워크시트]가 열린다.

21. 간단히 SHOW USER; 명령을 입력하고 Ctrl + Enter를 눌러보면 USER이(가) "SYSTEM"입니다. 가 출력

22. 왼쪽 [접속] 창의 [접속] > [db_system]에서 마우스 오른쪽 버튼을 클릭한 후 [접속 해제]를 선택해서 접속을 끊는다. 또한 [db_system] 탭도 닫는다. 저장하겠냐는 메시지가 나오면 <아니오>를 클릭

23. SQL Developer도 종료


웹 환경으로 Oracle XE에 접속하기 위해서 기본적으로 자신의 컴퓨터만 가능하도록 설정되어 있는 것을 외부에서도 사용할 수 있도록 설정 변경

24. Windows의 [시작] > [Oracle Database 11g Express Edition] > [Run SQL Command Line]을 선택

25. CONNECT SYSTEM문으로 SYSTEM 사용자로 접속

26. EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); 명령문을 입력해서 설정을 허용

* PL/SQL procedure successfully completed.

27. EXIT 문을 입력해서 창을 닫는다.


샘플 데이터의 설치

오라클은 HR이라는 이름의 샘플 데이터베이스 사용자 계정을 제공하고 있다. 

1. SQL Developer를 실행해서 왼쪽의 [접속] > [db_system]를 더블클릭하여 접속한다.

2. 워크시트에 ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY hr; 를 입력한다. 제일 뒤에 hr은 HR 계정의 비밀번호를 새로 지정한 것이다.

3. 왼쪽 [접속] 창의 <+> 아이콘을 클릭해서 새로운 접속을 생성. [접속 이름]은 적당히 "db_hr", [사용자 이름]은 "hr"을, [비밀번호]는 앞에서 지정한 "hr"을 입력하고 <비밀번호 저장>도 체크. 나머지는 그대로 두고 <테스트>를 클릭하면 왼쪽 아래 상태가 '성공'으로 바뀐다.

4. <저장>과 <접속>을 클릭해서 HR 사용자로 접속

5. "db_hr" 탭의 [워크시트]에서 SELECT * FROM TAB; 문을 입력해서 HR 사용자의 테이블과 뷰를 확인. 8개의 테이블 및 뷰가 보일 것이다.

6. "db_system" 탭과 "db_hr" 탭을 닫는다. 변경사항을 저장하겠냐는 메시지 창이 나오면 <아니오>를 클릭한다.

7. SQL Developer를 종료한다.


설치 후에 확인할 사항

파일 탐색기를 열어서 'C:\oraclexe\app\oracle' 폴더 확인

admin - Oracle 서버의 관리자 관련 폴더 및 파일. 각 인스턴스 이름별로 구분되어 있으며 Oracle XE는 XE라는 이름으로 되어 있음

diag - DIAGNOSTIC(진단) 관련 폴더 및 파일

fast_recovery_area - 자동 백업/복원과 관련된 폴더 및 파일

oradata - 데이터베이스의 물리적인 파일(*.DBF)

product - Oracle 각 제품이 폴더별로 분리되어 저장됨


product 폴더에 여러 버전의 Oracle을 설치하면 각 버전별로 별도의 폴더로 분리되어서 실제 제품의 실행이나 운영과 관련된 파일들이 저장. 우리가 설치한 Oracle XE 11g R2는 C:\oraclexe\app\oracle\product\11.2.0\server\ 폴더에 관련 파일이 모두 저장


실습!

스키마 생성

SQL Developer를 실행

1. [접속] 창에 이전에 만들어 놓은 "db_system"이 보이는데, 여기서 마우스 오른쪽 버튼을 클릭한 후 [속성]을 클릭. 사용자 이름은 관리자인 system으로 설정되어 있고, 비밀번호를 입력. <접속>을 클릭하면 Oracle에 접속된다.

* '호스트 이름'의 localhost(=127.0.0.1)은 자신의 컴퓨터를 의미. Oracle 기본 포트는 1521을 사용한다. 포트는 컴퓨터의 가상의 연결 통로 개념으로, 0번부터 65535번까지 사용할 수 있다. 일반적으로 0~1023번까지는 운영체제 등에 의해 할당되어 있고, 그 이후는 응용프로그램별로 자신의 포트를 사용한다. Oracle은 기본적으로 1521번을 사용하며, MySQL/MariaDB는 3306번을, SQL Server는 1433번을 사용한다. 'SID'는 Oracle XE의 시스템 아이디인데, 설치하면 기본적으로 xe라는 이름으로 부여된다. 

2. [접속] 창의 "db_system"을 확장하고 제일 아래 [다른 사용자]에서 마우스 오른쪽 버튼을 클릭한 후 [사용자 생성]을 선택한다.

3. [사용자] 탭에서 사용자 이름(=스키마 이름)에 "Shop"을 입력하고, 비밀번호 지정. 기본 테이블스페이스는 "USERS"로, 임시 테이블스페이스는 "TEMP"로 선택

4. [부여된 롤] 탭을 클릭하고 'CONNECT'와 'RESOURCE'의 권한이 부여됨] 부분을 체크

* 롤(Role, 역할)은 사용자가 어떤 권한을 부여할지를 선택한다. 가장 높은 롤은 DBA이며, 일반적으로 사용자는 CONNECT, RESOURCE 두 개 롤을 부여하면 자신의 스키마에 대한 대부분의 작업을 할 수 있다.

5. [시스템 권한]은 그냥 두고, [할당량] 탭에서 USERS 테이블 스페이스의 할당량을 "10"으로, 단위를 "M"으로 입력. 이는 USERS 테이블 스페이스의 10MB까지 사용할 수 있다는 의미다.

6. [SQL] 탭을 클릭하면 지금까지 설정한 내용이 SQL문으로 만들어져 있다. 

7. <적용>을 클릭

8. [다른 사용자]에 SHOP 사용자(=스키마)가 생성된 것을 확인

* 사용자 이름, 테이블 이름 등에 대소문자를 구분하지 않는다


SHOP 스키마에 접속을 생성

9. [접속] 창의 왼쪽 위 <+> 모양의 [새 접속] 아이콘을 클릭해서 새로운 접속을 생성. 접속 이름은 "db_shop"으로, 사용자 이름은 "shop"으로, 비밀번호는 지정한 비밀번호 입력 후 <저장>, <접속>을 클릭

10. 열려 있는 워크시트 모두 닫기. [접속] 창의 "db_system"에서 마우스 오른쪽 버튼을 클릭한 후 [접속 해제]를 클릭해서 system 사용자로 접속된 것을 해제



오늘 자바 공부 시작!

대입 연산자

말 그대로 변수에 값을 대입하는 연산자. 이항 연산자 중 우선순위가 가장 낮은 연산자. 하나의 문장에 여러 연산자가 있을 때 모든 연산을 다 끝낸 후 마지막에 연산 결과를 변수에 대입하는 것이다. 


totalScore = mathScore + engScore;  //1. mathScore 값과 engScore 값을 더하여

                                                  //2. 총점을 의미하는 totalScore 변수에 대입함


부호 연산자

+, - 두 가지가 있다. 더하기, 빼기 연산에 쓰는 이항 연산자이면서 부호를 나타내는 단항 연산자로도 사용


int num = 10;


System.out.println(+num);  //값 10이 그대로 출력됨

System.out.println(-num);   //값 10에 -가 붙어서 -10이 출력되지만 num 값이 실제로 바뀌지는 않음

System.out.println(num);    //값 10이 그대로 출력됨


num = -num;                  //num 값을 음수로 바꿔서 다시 num에 대입함

System.out.println(num);    //값 -10이 출력됨


산술 연산자

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 이렇게 다섯 가지가 있다. 


증가/감소 연산자

단항 연산자. 연산자 앞이나 뒤에 사용하며 값을 1만큼 늘리거나 1만큼 줄인다. 


val = ++num;  //먼저 num 값이 1 증가한 후 val 변수에 대입

val = num++;  //val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 증가

val = --num;    //먼저 num 값이 1감소한 후 val 변수에 대입

val = num--;    //val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소


관계 연산자

항이 두 개인 이항 연산자. 두 개의 항 중 어느 것이 더 큰지, 작은지, 같은지 등의 여부를 검사. >, <, >=, <=, ==, !=

관계 연산자의 결과 값은 참(true) 또는 거짓(false)으로 반환. 두 값을 비교하여 결과 값을 반환하므로 비교 연산자라고도 부른다.


논리 연산자

주로 관계 연산자와 함께 사용. 관계 연산자의 우선순위가 논리 연산자보다 높으므로, 관계 연산자의 결과 값을 기반으로 논리 연산자의 결과 값을 계산

&&(논리 곱) - 두 항이 모두 참인 경우에만 결과 값이 참. 그렇지 않은 경우는 거짓

||(논리 합) - 두 항 중 하나의 항만 참이면 결과 값은 참. 두 항이 모두 거짓이면 결과 값은 거짓

!(부정) - 단항 연산자. 참인 경우는 거짓으로 바꾸고, 거짓인 경우는 참으로 바꾼다


논리 곱 연산과 논리 합 연산을 할 때 두 항을 모두 실행하지 않더라도 결과 값을 알 수 있는 경우에, 나머지 항은 실행되지 않는 것을 단락 회로 평가(Short Circuit Evaluation : SCE)라고 한다.


복합 대입 연산자

대입 연산자와 다른 연사자를 조합해 하나의 연산자처럼 사용하는 연산자. 산술 연산자, 비트 연산자와 함께 사용하여 코드를 간결하게 표현

+= : 두 항의 값을 더해서 왼쪽 항에 대입

-= : 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입

*= : 두 항의 값을 곱해서 왼쪽 항에 대입

/= : 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입

%= : 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입

<<= : 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입

>>= : 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입 (왼쪽에 채워지는 비트 값은 부호 비트와 동일)

>>>= : 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입 (왼쪽에 채워지는 비트 값은 0)

&= : 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입

|= : 두 항의 | 비트 연산 후 그 값을 왼쪽 항에 대입

^= : 두 항의 ^ 비트 연산 후 그 값을 왼쪽 항에 대입


조건 연산자

연산에 필요한 항의 개수가 세 개. 삼항 연산자라고 한다. 조건 연산은 주어진 조건식이 참인 경우와 거짓인 경우에 다른 결과 값이 나온다.


조건식 ? 결과1 : 결과2;

조건식이 참이면 결과1, 조건식이 거짓이면 결과2가 선택


비트 논리 연산자

&(AND) 연산자 : 두 개의 비트 값이 모두 1인 경우에만 연산의 결과 값이 1이 된다.

int num1 = 5;                    //num1 : 00000101

int num2 = 10;                  //num2 : 00001010

int result = num1 & num2;  //result : 00000000 = 0


|(OR) 연산자 : 비트 값이 하나라도 1이면 연산 결과 값이 1이 된다.

int num1 = 5;                  //num1 : 00000101

int num2 = 10;                //num2 : 00001010

int result = num1 | num2;  //result : 00001111 = 15


^(XOR) 연산자 : 같은 값이면 0, 다른 값이면 1의 결과 값을 갖는다.

int num1 = 5;                   //num1 : 00000101

int num2 = 10;                 //num2 : 00001010

int result = num1 ^ num2;  //result : 00001111 = 15


~(반전) 연산자 : 비트 값을 0은 1로, 1은 0으로 바꾸는 연산자

int num = 10;        //num : 00001010

int result = ~num;  //result : 11110101 = -11


비트 이동 연산자

<<연산자 : 왼쪽으로 비트를 이동하는 연산자

int num = 5;  //num : 00000101

num << 2;    //00010100 = 20


>>연산자 : 오른쪽으로 비트를 이동하는 연산자

int num = 10;  //num : 00001010

num >> 2;      //00000010 = 2


>>>연산자 : >> 연산과 동일하게 비트를 오른쪽으로 이동. 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0이 된다


연산자 우선순위

- 단항 연산자가 가장 높고 이항, 삼항 연산자 순서이다.

- 대입 연산자의 우선순위가 가장 낮다.

- 산술, 관계, 논리, 대입 연산자 순서로 우선순위를 가지며 ()의 우선순위가 가장 높다.


조건문이란?

주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것


if문과 if-else문

조건문의 가장 단순한 형식은 if문이다. if를 우리말로 해석하면 '만약 ~이라면'이다. if문을 사용하는 형태를 간단히 나타내면

if(조건식){

수행문; //조건식이 참일 경우에 이 문장을 수행

}

조건식에는 결과가 참, 거짓으로 판별되는 식이나 참, 거짓의 값을 가진 변수, 상수를 사용할 수 있다. 연산의 결과가 참, 거짓이 되는 관계 연산자를 자주 사용한다.


조건식을 만족하는 경우와 만족하지 않는 경우를 모두 나타낼 때는 if-else 문을 사용한다. if-else문은 '만약 ~이라면, 그렇지 않다면'으로 해석. 주어진 조건식이 '참'일 경우에 if문 블록 안에 있는 문장을 수행하고 '거짓'일 경우에는 else문 블록 안에 있는 문장을 수행한다. else문에는 '조건식'을 사용하지 않는다. 

if(조건식){

수행문1;  //조건식이 참일 경우에 이 문장을 수행

}

else{

수행문2;  //조건식이 거짓일 경우에 이 문장을 수행

}


if-else if-else문

if(조건식1){

수행문1;  //조건식1이 참일 경우에 수행함

} else if(조건식2){

수행문2;  //조건식2가 참일 경우에 수행함

} else if(조건식3){

수행문3;  //조건식3이 참일 경우에 수행함

} else {

수행문4;  //위의 조건이 모두 해당하지 않는 경우에 수행함

}

수행문5;  //if-else if-else문이 끝난 후 수행함

하나의 상황에 여러 조건을 비교하는 경우 사용한다.


조건문과 조건 연산자

if(a > b) max = a;

else max = b;


----->


max = (a>b) ? a : b;

if-else문으로 구현한 코드가 가독성이 더 좋지만, 간단한 조건문이고 선택이 두 가지만 있는 경우에는 종종 조건 연산자도 사용한다


switch-case문

if(조건식1){

수행문1;

}

else if(조건식2){

수행문2;

}

else if(조건식3){

수행문3;

}

else {

수행문4;

}


----->


switch(조건){

case 값1 : 수행문1;

break;

case 값2 : 수행문2;

break;

case 값3 : 수행문3;

break;

default : 수행문4;

}

if-else if문을 살펴보면 모든 조건을 만족하지 않을 경우에 맨 마지막 else문이 수행된다. switch-case문에서는 default문이 그런 역할을 한다. 주어진 값이 어떤 case에도 해당하지 않으면 맨 마지막 default문을 수행한다. break문은 switch-case문의 수행을 멈추고 빠져나가도록 만든다.

* switch-case문에서는 default문은 생략할 수 있다.


주로 조건이 하나의 변수 값이나 상수 값으로 구분되는 경우 사용. 조건이 10 < age < 20과 같이 복잡한 식으로 이루어진다면, switch-case문이 적합하지 않다.


case문 동시에 사용하기

case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day = 31;

break;

case 4 : case 6 : case 9 : case 11 : day = 30;

break;

case 2 : day = 28;

break;


switch-case문에서 break문의 역할

break문은 switch-case문의 수행을 멈추고 빠져나가도록 만든다. 조건에 맞는 수행문을 수행한 후에 switch-case문을 빠져나올 수 있도록 break문을 꼭 사용한다.


case문에 문자열 사용하기

자바 7부터 case 값에 문자열을 사용할 수 있다. 원래는 문자열을 사용할 수 없었기 때문에 equals() 메서드라는 것을 이용해야 했다.


반복문이란?

반복되는 일을 처리하기 위해 사용하는 것이 '반복문'이다. 반복문의 종류에는 while문, do-while문, for문 이렇게 세 가지가 있다.


while문

조건식이 참인 동안 수행문을 반복해서 수행.

while(조건식){

수행문1;

}

수행문2;

어떠한 조건식을 만족하는 동안 중괄호 {} 안의 수행문을 반복해서 처리한다.


while문이 무한이 반복되는 경우

while(true){

...

}


do-while문

{} 안의 문장을 무조건 한 번 수행한 후에 조건식을 검사한다. 조건이 만족하는지 여부를 마지막에 검사한다. 

do{

수행문1;

...

} while(조건식);

수행문2;


for문

for문의 기본 구조

for(초기화식; 조건식; 증감식){

수행문;

}

초기화식은 for문이 시작할 때 딱 한 번만 수행하며 사용할 변수를 초기화한다. 조건식에서 언제까지 반복 수행할 것인지 구현한다. 증감식에서 반복 횟수나 for문에서 사용하는 변수 값을 1만큼 늘리거나 줄인다.


int num;

for(num = 1; num <= 5; num++){

System.out.println(num);

}

1. 처음 for문이 시작할 때 출력할 숫자인 num을 1로 초기화한다.

2. 조건식 num <= 5를 검사했을 때 num은 1이므로 참이다.

3. 조건식이 참이기 때문에 for문의 System.out.println(num);을 수행하고 1을 출력한다.

4. 증감식 num ++를 수행하여 num 값은 2가 된다.

5. 조건식 num <= 5를 검사했을 때 num 값은 2이므로 참이다.

6. 조건식이 참이기 때문에 for문의 System.out.println(num);을 수행하고 2를 출력한다.

7. 증감식 num ++를 수행하여 num 값은 3이 된다.

...

final. 조건식 num <= 5를 검사했을 때 num 값은 6이므로 거짓이다. for문이 끝난다.


* 초기화 부분과 증감식 부분도 콤마(,)로 구분하여 여러 문장을 사용할 수 있다. i = 1, sum = 0으로 두 개의 변수를 초기화할 수 있다.


for문 요소 생략하기

for문을 구성하는 요소는 코드가 중복되거나 논리 흐름상 사용할 필요가 없을 때 생략할 수 있다.


초기화식 생략

int i = 0;

for(  ; i < 5; i++){

...

}

이미 이전에 다른 곳에서 변수가 초기화되어 중복으로 초기화할 필요가 없을 때 초기화 부분을 생략


조건식 생략

for(i = 0;  ; i++){

sum += i;

if(sum > 200) break;

}

어떤 연산 결과 값이 나왔을 때 바로 for문의 수행을 멈추려면 조건식을 생략하고 for문 안에 if문을 사용하면 된다.


증감식 생략

for(i = 0; i < 5; ) {

...

i = (++i) % 10;

}

증감식의 연산이 복잡하거나 다른 변수의 연산 결과 값에 좌우된다면 증감식을 생략하고 for문 안에 쓸 수 있다.


요소 모두 생략

for(  ;  ;  ){

...

}

모든 요소를 생략하고 무한 반복하는 경우에 사용


중첩된 반복문

for(2단 ~ 9단){

for(1 ~ 9){ 


}

}

외부 for문의 초기화 값이 dan = 2이므로 구구단 2단부터 시작한다. 그리고 내부 for문으로 들어가면 초기화 값 times = 1부터 시작해 1씩 증가하면서 9보다 작거나 같을 때까지 곱한다. times 값이 10이 되면 내부 for문은 끝나고 외부 for문으로 돌아간다. 외부 for문에서 dan++를 수행하고 증가한 단의 값이 9보다 작은지 확인한다. 9보다 작으므로 다시 내부 for문으로 들어와 1부터 9까지 곱한다. 


각 반복문을 언제, 어떤 경우에 사용하는 것이 가장 좋을까? 반복 횟수가 정해진 경우에는 for문을 사용하는 것이 좋다. 수행문을 반드시 한 번 이상 수행해야 하는 경우에는 do-while문이 적합하다. 조건의 참/거짓에 따라 반복문이 수행하는 경우에는 while문을 사용




* 개발자 로드맵 추가

안드로이드 - 팀노바 (회사 다니면서는 절대 안됨), 한빛미디어, 깡쌤 8.0 안드로이드 (안드로이드는 빨리 변해서 최신 버전 책)

책 추천 : ECMAScript6, Learning JavaScript


가만히 생각해보면 국비지원 받고 바로 개발자라고 나온다는 게 말이 안된다. 자바, 오라클, JDBC, HTML, CSS, JS, jQuery, JSP&Servlet, Ajax, 마이바티스, Spring을 6개월만에 배웠다. 미친짓이지.. 그나마 강사님을 잘 만나서 기초적인 기반을 잡아놓은 상태라 무엇을 공부해야할지 파악하게 해준 것만으로도 내가 행운아라는 것을.. 현재 내가 나온 학원의 다른 지점을 다닌 친구의 얘기를 들어보니..


그 지점이 고용노동부 우수훈련기관으로 지정되면 뭐하나.. 안은 썩어있는데.. 가장 기초가 될 수 있는 자바와 오라클부터 제대로된 기본기 없이 가르친다는데..

결국 프로젝트는 해야할테고.. 그 프로젝트에 맞춰 취업도 해야한다. 그리고 못하면 내탓이 된다. 그래서 야근 야근.. 야근도 내탓이 된다.


이게 과연 단시간 안에 가능한 일인걸까? 어쩌면 이게 다들 말도 안된다는 걸 느끼면서도 그냥 묵묵히 남들처럼 살아가는 걸지도.

다들 그렇게 살아가니까. 나또한 일단 그렇게 살아가기로 약속을 해놓은 상태이니.. 

그나마 야근을 하더라도 내가 관심있게 해볼 수 있는 일을 하면서 사람답게 대우해주는 곳을 가게 된 것 같아 다행이다.


미친짓 시작해본다. 어떤 식으로 프로그래밍을 공부하는 게 좋을까? 여러가지를 시도해봤지만 인강은 나와 전혀 맞지 않는다. 보다보면 졸림.. 그렇다고 강사님 자료만 파기에는 약간의 무리가 있어 나만의 공부방식을 찾던 중.. 책 한 권씩 독파해나갈 것! 그래서 오늘부터 하루 1권을 목표로 시작해본다. 


https://github.com/minimelody/java-basic-study

해당 공부를 하면서 정리한 깃허브 저장소


자바 설치하기

자바를 설치한다는 것은 자바 JDK를 설치한다는 뜻. JDK는 Java Development Kit의 줄임말로 자바 프로그램을 개발하는 데 필요한 라이브러리와 플랫폼이 포함되어 있다. 자바 프로그램을 실행하기 위해서는 자바 실행 환경인 JRE, Java Runtime Environment만 있으면 되지만, 자바 프로그램을 만들기 위해서는 반드시 JDK가 있어야 한다.


1. www.oracle.com/technetwork/java/index.html에서 다운로드. 사이트에 접속한 후 [Software Downloads → JavaSE] 메뉴를 클릭

2. Java 로고를 선택하고 'Accept License Agreement'를 클릭하고 컴퓨터 운영체제에 맞는 자바 설치 파일을 다운로드

3. 다운로드한 파일을 실행하고 Next. 자바가 기본으로 설치될 폴더는 C:\Program Files\Java\jdk-10.0.2

4. 사용자 정의 설치 창이 뜨면 [다음] 버튼을 눌러 설치를 계속 진행한다. 설치가 완료되면 Close


이클립스 설치하기

자바 프로그래밍을 하는 데 꼭 필요한 통합 개발 환경 IDE, Integrated Development Environment인 이클립스를 설치해야 한다. 이클립스를 사용하여 자바 코드를 작성하고 컴파일하고 실행할 수 있다.


1. www.eclipse.org에 접속하여 [Download]를 클릭하고 들어간 화면에서 [Download 64 bit] 버튼을 클릭

2. 설치 파일을 실행. 맨 위에 있는 Eclipse IDE for Java Developers를 선택한다. [INSTALL] 버튼을 클릭하면 이클립스가 설치된다

3. Licenses 창이 나오면 [Accept]를 누른다. 설치가 끝나면 [LAUNCH] 버튼을 눌러 이클립스를 실행

4. 이클립스를 실행하면 워크스페이스를 지정하는 창이 나타난다. 워크스페이스(workspace)는 개발할 프로그램이 저장될 디렉터리 위치이다. [Browse] 버튼을 눌러 작업할 공간인 워크스페이스를 변경할 수 있다.

* 워크스페이스를 변경하려면 [File → Switch Workspace → Other]에서 수정

5. 워크스페이스를 선택한 후 [Launch]를 누르고, [Welcome] 탭을 닫으면 작업 공간이 나타난다. 이제 자바 프로그래밍 시작!


http://itpangpang.xyz/140

본격 시작하기에 앞서 인코딩부터 맞춰줘야 겠다. 깃허브에 올리면서 한글 깨짐으로 다시 커밋했다.


'Hello, Java' 문장을 화면에 출력하는 프로그램 만들기

1. 첫 프로젝트 만들기

자바로 프로그램을 만들려면 먼저 프로젝트(project]를 생성해야 한다. [File → New] 메뉴를 누르고 [Java Project]를 선택한다. 프로젝트는 개발자가 만드는 하나의 프로그램 단위라고 생각하면 된다.

2. Project name : 항목에 first라고 입력. 이름을 적고 [Next] 버튼을 누르고, Create module-info.java file 체크 상자를 눌러 해제 후 Finish

* 프로젝트명은 낙타표기법(소문자로 시작, 구분마다 첫글자는 대문자)!

3. 첫 번째 클래스 만들기

자바 프로그램은 모두 클래스 기반으로 구성. first 프로젝트를 선택하고 오른쪽 마우스를 클릭하면 메뉴가 나온다. 먼저 패키지(package)를 만들어야 하므로 [New → Package]를 선택

4. 패키지 이름은 hello라 적고 [Finish]를 누른다. 패키지명은 항상 소문자

5. 패키지 아래에 클래스를 만든다. hello 패키지를 선택하고 오른쪽 마우스 버튼을 클릭해서 [New → Class] 메뉴를 선택

6. 클래스 이름은 HelloJava라고 정한다. public static void main(String[] args) 항목을 선택하여 main() 함수를 추가하고 [Finish] 버튼을 누른다. main() 함수란 프로그램의 첫 시작점을 의미

* 클래스명은 파스칼표기법(첫글자가 대문자, 구분마다 첫글자는 대문자)

7. main() 함수 내부에 적혀 있는 // TODO~ 문장을 지우고 소스 코드 작성

8. 컴파일하기

컴파일은 프로그래밍 언어를 기계어로 번역해 주는 과정. 이클립스는 빌드 자동화 옵션이 기본으로 설정되어 있어서 파일을 저장(Ctrl + S)하면 자동으로 컴파일된다.

* 빌드란 컴파일러가 소스 코드를 컴파일하여 실행 파일을 만드는 과정. .class 파일이 만들어진다.

* 빌드 자동화 옵션은 [Project - Build Automatically]에서 설정. 기본 값으로 선택되어 있으므로 그냥 사용

9. 프로그램 실행하기

프로그램을 실행하는 단축키는 Ctrl + F11이다. 반드시 빌드한 후 프로그램을 실행한다. 프로그램을 실행하면 Console 창에서 실행 결과를 볼 수 있다. 

* 중간에 Select resources to save 창이 나오면 [OK} 버튼을 누른다.


http://cofived.tistory.com/17

http://postitforhooney.tistory.com/entry/GitConfigEclipse-%EA%B9%83-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0

두 포스팅의 도움으로 이클립스에서 깃허브에 프로젝트를 올리는 방법을 알았다. 아무리 공부를 해도 결국 나중에 또다시 까먹는다. 그래서 어디든 기억할 수 있는 곳을 만드는 것이 좋은데, 처음 학원 다닐 때는 깃허브 사용법을 잘 몰라서 티스토리에 정리를 했었다. 그러나 지금 와서 다시 보니 무슨 소리인지 하나도 모르겠다. 그래서 선택하게 된 것이 소스코드만 정리하는 깃허브이다.


주석으로 소스 코드 정보 표시하기

주석은 프로그램에 설명을 추가하거나 특정 코드가 컴파일되지 않도록 처리할 때 사용한다. 특히 소스 코드 설명을 주석으로 잘 작성해 놓으면 나중에 본인이나 다른 개발자가 프로그램을 볼 때 이해하기 쉽다. 주석은 한 줄로 표시할 수도 있고 여러 줄로 표시할 수도 있다.

- 한 줄 주석 표시하기 : 문장 앞에 // 표시를 하면 주석으로 처리되고 컴파일되지 않는다. 

- 여러 줄 주석 표시하기 : /*, */ 기호로 주석의 시작과 끝을 나타낼 수 있다. 


변수 선언하고 값 대입하기 

= 기호는 수학에서 오른쪽과 왼쪽이 같다는 의미이지만 프로그램에서는 '오른쪽 값을 왼쪽에 대입한다'는 의미로 사용한다.


변수 초기화하기

변수를 선언할 때 변수 값을 바로 대입할 수도 있다. 변수에 처음 값을 대입하는 것을 '초기화'라고 한다. 초기화는 언제 해야 할까? 변수 선언과 동시에 초기화를 할 수도 있고, 변수를 선언한 이후 대입할 값이 정해지는 시점에 초기화를 할 수도 있다.


변수 이름 정하기

변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $, _만 사용할 수 있다. 변수 이름은 숫자로 시작할 수 없다. 자바에서 이미 사용 중인 예약어는 사용할 수 없다. 사용 목적에 맞게 의미를 잘 부여해서 만드는 것이 좋다. 변수 길이에 제한이 없으므로 줄임말보다는 의미를 풀어서 쓰는 것이 프로그램을 작성하고 이해하는 데 편리하다. 변수 이름은 대부분 소문자로 시작하며 여러 단어로 변수 이름을 만들 경우 중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용한다.


정수 자료형

양수, 음수, 0을 나타내는 데 사용한다. byte형(1바이트), short형(2바이트), int형(4바이트), long형(8바이트)이 있다.

각 표현할 수 있는 수의 범위는

byte형은 -128 ~ 127, short형은 -32,768 ~ 32,767, int형은 가장 많이 사용하는 자료형으로 -2,147,483,648 ~ 2,147,483,647

long형은 -2^63 ~ 2^63-1이며 "long num = 12345678900L;"처럼 식별자인 L이나 l을 사용해야한다. int형 범위를 넘지 않는다면 식별자가 필요 없다.


문자 자료형 - char형(2바이트)

문자를 컴퓨터 내부에서 표현할 때 0과 1의 조합으로 나타내야 한다. 특정 정수값으로 약속한다. 문자를 정해진 코드 값으로 변환하는 것을 '문자 인코딩'이라고 한다. 반대로 코드 값을 다시 문자로 변환하는 것을 '문자 디코딩'이라고 한다. 가장 기본이 되는 문자 인코딩은 아스키 코드.

- 문자를 int형으로 변환하여 출력하면 그 문자에 해당하는 정수 값을 알 수 있다.

- 문자형 변수에 정수 값을 대입하면 그 정수 값에 해당하는 문자가 출력된다.

- 정수형 변수를 문자형으로 변환하여 출력하면 그 정수 값에 해당하는 문자가 출력된다.


유니코드 값을 직접 사용할 수 있다. 유니코드란 전 세계의 모든 문자를 처리할 수 있도록 만든 표준 문자 전산 처리 방식이다.

http://unicode.org/charts/PDF/UAC00.pdf


char형은 음수 값을 표현할 수 없다. 

- char형으로 선언한 변수에 음수 값을 대입하면 오류가 발생한다. 

- 음수 값을 대입한 정수형을 char형으로 출력하면 물음표(?)가 출력된다.


실수 자료형

float형과 double형이 있다. float형은 부호 1비트, 지수부 8비트, 가수부 23비트로 총 32비트(4바이트)를 사용한다. double형은 부호 1비트, 지수부 11비트, 가수부 52비트로 총 64비트(8바이트)를 사용한다. double형을 기본으로 사용한다. float형으로 대입되는 값은 F 또는 f를 숫자 뒤에 붙여서 식별해주어야 한다.

* 부동 소수점 방식 : 실수 값 0.1은 1.0x10^-1으로도 표현할 수 있다. 이처럼 가수 부분(1.0)과 지수 부분(-1)을 나누어서 실수를 나타내는 방식


논리 자료형 - boolean형(1바이트)

어떤 변수의 참(true), 거짓(false)의 값을 나타내는 데 사용한다. 


상수 선언하기

항상 변하지 않는 값을 '상수(constant)'라고 한다. final 예약어를 사용해 선언한다. 상수 이름은 대문자를 주로 사용하고, 여러 단어를 연결하는 경우에 _기호를 사용하면 좋다. 한 번 선언한 상수는 변하지 않기 때문에 선언과 동시에 값을 지정하는 것이 좋다. 가끔은 선언만 하고 사용하기 전에 값을 지정하기도 한다.


리터럴

프로그램에서 사용하는 모든 숫자, 문자, 논리값(true, false)를 일컫는다. 리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓인다.


형 변환이란?

형 변환은 크게 묵시적 형 변환(자동 형 변환)과 명시적 형 변환(강제 형 변환) 두 가지로 구별해서 생각할 수 있다.

1. 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.

2. 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.


정수 : byte(1바이트) → short(2바이트) / char(2바이트) → int(4바이트) → long(8바이트) → 실수 : float(4바이트) → double(8바이트)

화살표 방향과 반대로 형 변환을 하려면 강제로 변환해야 한다. long형이 8바이트이고 float형이 4바이트인데 자동 형 변환이 되는 이유는 실수가 정수보다 표현 범위가 더 넓고 정밀하기 때문이다. 화살표 방향으로 형 변환이 이루어질 때는 자료 손실이 없지만, 그 반대인 경우에는 자료 손실이 발생할 수 있다.


묵시적 형 변환 (자동 형 변환)

바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우

byte bNum = 10;

int iNum = bNum;  //byte형 변수 bNum 값을 int형 변수 iNum에 대입함

bNum의 크기는 1바이트이고 iNum의 크기는 4바이트이므로 자료 손실 없이 bNum에 들어 있는 값이 모두 iNum에 저장


덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우

int iNum2 = 20;

float fNum = iNum2;

두 변수의 크기가 같은 4바이트라도 float형인 fNum이 더 정밀하게 데이터를 표현할 수 있으므로 실수형인 float형으로 변환


연산 중에 자동 변환되는 경우

int iNum = 20;

float fNum = iNum;

double dNum;

dNum = fNum + iNum;

fNum + iNum 연산에서 int형이 float형으로 변환되고, 두 변수를 더한 결과 값이 dNum에 대입되면서 double형으로 변환


명시적 형 변환 (강제 형 변환)

바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우

int iNum = 10;

byte bNum = (byte)iNum;  //강제로 형을 바꾸려면 바꿀 형을 괄호로 써서 명시해야 함

이 경우는 대입된 값 10을 1바이트 안에 표현할 수 있으므로 자료손실이 없지만,

int iNum = 1000;

byte bNum = (byte)iNum;  //-24

이 경우처럼 byte형이 표현할 수 있는 범위를 넘는 경우에는 자료 손실이 발생


더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우

double dNum = 3.14;

int iNum2 = (int)dNum;  //실수 자료형 double을 정수 자료형 int로 형 변환

실수의 소수점 이하 부분이 생략되고 정수 부분만 대입



하루 한 권 끝내기는 무리 ㅠ..

그저 매일 꾸준히 하는 것을 목표로 오늘은 여기서 끝!



프론트엔드

HTML, CSS 부터 시작

자바스크립트 - 바닐라 자바스크립트 (라이브러리가 없는)

 - 투두리스트

 - 인터랙션

jQuery, 리액트

백엔드

Node js, express

이를 통해 작은 서버를 만들어서 웹사이트를 구현



HTML5 Programming, CSS, JavaScript, 자바스크립트 객체지향 프로그래밍, jQuery, ECMAScript 6, Node.js, React, Vue.js

Java의 정석(jdk 1.8버전), 자바 객체지향, 자바 웹 프로그래밍(struts) - 개정판 : 프로젝트로 배우는 자바 웹 프로그래밍, 최범균의 JSP 2.3 웹 프로그래밍, 

코드로 배우는 스프링 웹 프로젝트, 최범균의 Spring 4.0, 토비의 Spring 3.1, 오라클, MySQL


진짜.. 공부할게 너무 많다 ㅠㅠ

그래도 일하면서 일도 배우고, 공부도 꾸준히 하다보면 

언젠가는 원하는 서비스도 척척 만들고, 원하는 방식으로 살 수 있지 않을까 ㅠ?


+ Recent posts