2016년 8월 31일 수요일

30day / DB / Transaction

http://www.slideshare.net/alexbaranau/transactions-over-hbase
  • Transaction 제어 : Transaction 이란 작업단위를 의미 

주요 용어
  1. commit : 실제 데이터베이스에 반영 
  2. rollback : 작업 취소 

JDBC 는 AUTO COMMIT 이 기본이다
Transaction 제어가 필요한 경우에는
AUTO COMMIT을 해제하고 수동 커밋 모드로 처리한다

onnection.setAutoCommit(false); <--수동 커밋 모드로 변경 
작업 단위 내에서 모든 작업이 정상 수행시
connection.commit(); 
문제 ( 에러 또는 예외 ) 가 발생
connection.rollback(); 
try {
    카드발급 & 포인트발급 
    commit
catch (Throwable t) { 
    rollback 
cs

  • 사례 ) 카드 발급과 동시에 일정한 포인트가 함께 발급되어야 한다 
if ( 카드 발급 후 문제가 발생하여 -> 포인트 발급 누락 ) {
 -> 발급된 카드 작업은 취소(rollback)되도록 처리 }
else if (카드 및 포인트 발급 작업이 모두 정상 수행) {
실제 데이터베이스에 반영(commit)하도록 트랜잭션(작업단위)을 제어한다 }
cs

2016년 8월 30일 화요일

29day / DB / Sequence

http://www.dbarepublic.com
  • 오라클 시퀀스(sequence) 
  1. 유일한 값을 생성해준다 
  2. 주로 primary key 값을 생성할 때 사용한다 
  3. 시퀀스는 일련의 번호를 순차적으로 증가시킨다 
  4. 테이블과 독립적으로 생성하고 저장된다 

시퀀스 생성: create sequence 시퀀스명 
create sequence seq_test; 
 
시퀀스 삭제  
drop sequence seq_test; 
cs

  • dual table
오라클에서 제공하는 기본 테이블 varchar2 타입의 컬럼하나로
구성된 테이블로 주로 함수 실행 용도로 많이 사용된다
dual table을 이용해 시퀀스를 증가시켜본다

시퀀스 증가 : 시퀀스명.nextval 
select seq_test.nextval from dual; 
cs

  • 참고) 시퀀스 현재값 : 시퀀스명.currval 
단독적으로 사용불가
반드시 하나의 세션(커넥션)안에서 nextval실행 후 currval를 실행해야한다.

select seq_test.currval from dual; 
cs


시퀀스 생성
create sequence memo_seq; 
시퀀스 제거
drop sequence memo_seq; 
cs


2016년 8월 29일 월요일

2016년 8월 28일 일요일

기초 튼튼 코드 튼튼 다 함께 프로그래밍

사진 출처 : 제이펍블로그

프로그래밍을 시작하는 이들을 위한 쉽고도 친절한 안내서!



목차

PART Ⅰ 프로그래밍으로의 초대 
CHAPTER 01 컴퓨터와 친하게 지내자2 

1.1 컴퓨터가 있는 생활2 

1.2 프로그래밍이란 무엇인가?7 
1.3 마음의 준비12 


CHAPTER 02 컴퓨터가 동작하는 원리21 

2.1 컴퓨터 완벽 해부21 

2.2 컴퓨터의 작업 방식28 
2.3 프로그램 완벽 해부36 


CHAPTER 03 프로그램을 한국어로 작성하자44 

3.1 프로그램이 만들어지는 과정44 

3.2 줄거리와 시나리오를 작성하기 위한 힌트56 
3.3 청소를 부탁해!62 
3.4 프로그램의 개념을 익히려면?70 


PART Ⅱ 프로그래밍의 기초 지식 

CHAPTER 04 ‘1 + 1’ 프로그램72 

4.1 값을 넣는 상자 ― 변수73 
4.2 상자의 크기 ― 데이터 타입77 
4.3 상자 사용법 ― 초기화86 
4.4 상자에 값 넣기 ― 대입/대입 연산자87 
4.5 Q&A90 


CHAPTER 05 계산 실패의 정체92 

5.1 계산에 사용하는 기호 ― 산술 연산/산술 연산자92 

5.2 티끌모아 태산 ― 계산 오차94 
5.3 식을 작성하는 방법에 따라 답이 변한다 ― 우선순위96 
5.4 원인은 보관 용기에 있다? ― 데이터 타입101 
5.5 답을 알 수 없는 나눗셈 ― 0으로 나누기104 
5.6 Q&A105


CHAPTER 06 프로그램의 흐름을 만들기108 

6.1 흐름의 방식은 세 종류 ― 제어 구조108 

6.2 ‘만약’인 경우의 프로그램 ― 조건 판단 구조114 
6.3 동일한 것의 반복 ― 반복 구조122 
6.4 흐름을 바꾸는 계기 ― 비교 연산/비교 연산자132 
6.5 함께 비교하기 ― 논리 연산/논리 연산자137 
6.6 Q&A142 


CHAPTER 07 데이터의 보관 용기145 

7.1 같은 종류의 상자를 나열해서 사용 ― 배열145 

7.2 상자를 가로와 세로로 나열하여 사용하기 ― 2차원 배열155 
7.3 관련 정보를 모아서 취급하기 ― 구조체/레코드164 
7.4 메모리의 번지를 이용하기 ― 포인터/주소169 
7.5 값에 이름을 붙여서 사용하기 ― 상수177 
7.6 중요한 데이터를 넣는 장소 ― 파일180 
7.7 Q&A184 


CHAPTER 08 프로그램을 부품화하기186 

8.1 부품이 된 프로그램 ― 함수186 

8.2 정보 전달 ― 인수197 
8.3 결과 수령 ― 반환값/리턴값204 
8.4 정보를 공유하는 방법 ― 지역 변수/전역 변수206 
8.5 Q&A209 

PART Ⅲ 다음 단계로 


CHAPTER 09 무엇을 만들지 생각해보자212 

9.1 콘솔 애플리케이션과 윈도우 애플리케이션212 
9.2 프로그램이 움직이는 계기214 
9.3 프로그램을 만드는 방법218 
9.4 웹 프로그램221 


CHAPTER 10 도구를 준비하자232 

10.1 프로그래밍 언어의 종류232 

10.2 여러 가지 프로그래밍 언어236 
10.3 C 프로그래밍에 필요한 도구249 
10.4 객체 지향 프로그래밍253


CHAPTER 11 한 발 앞으로 나아가자262 

11.1 프로그램이 생각대로 동작하지 않을 때262 

11.2 프로그래머의 마음가짐267 

  • 소개


하드웨어의 동작원리부터 설명을 하더니 차근차근 뜯어서 모두 설명해준다.
프로그래밍 언어가 하드웨어부터 소프트웨어로 그리고 프로그램으로 실행되기까지 모든 과정을
차근차근 물 흐르듯이 풀어나간다. 확실히 입문자에 맞춘 설명이다.
물론 개발 공부하는 학생들이나 초보개발자들조차도 도움될만한 유익한 책이다

  • 하드웨어부터 프로그램까지


이 책은 분명히 읽는 것보다 이해하는 것이 더 중요한 책이다.
이해만 된다면 두껍지 않은 책이지만 하드웨어부터 시작하여
프로그램이 실행되기까지 복잡하고 긴 흐름을 더욱 더 쉽게 파악할 수 있다.
거기다가 프로그래밍 언어에 대한 기초 설명과 그 이상의 것까지 살펴볼 수 있다.

"개발자를 준비하는 동생이나 후배에게 책 선물을 한다면 이 책만한 것도 없을 것, 목차부터 신기한 책"

2016년 8월 26일 금요일

27day / DB / Management

http://www.sitesbay.com
  • Database와 jdbc를 이용한 회원관리
SQL 과 JDBC 를 이용해 회원 정보를
CRUD(create,read,update,delete) 하는 어플리케이션을 구성해본다 

  • Application 구성
  1. TestMemberDAO
  2. MemberDAO
  3. MemberVO 
  4. Database
     
  참고)  DAO : Data Access Object : 데이터베이스 연동을 담당하는 객체
    VO : Value Object 
    DTO : Data Transfer Object 
  

Table 생성

  • Datatype
  1. varchar2(9) 문자열 데이터타입 / 9는 영문기준 9자 까지
  2. number 숫자 데이터 타입
  • 제약조건(constraint)
  1. primary key (pk, 주키) unique + not null
  2. not null(반드시 데이터가 있어야 한다)

CREATE TABLE typetest(
name VARCHAR2(9) primary key,
money NUMBER not null
)

  • insert
영문운 9자까지, 한글은 3자까지 가능하다(선언)

insert into typetest(name,money) values('하하하',100);
insert into typetest(name,money) values('abcdefghi',100);

오라클 함수

  • product 총 수량
select count(*) from product;

  • product price의 최고가
select max(price) from product;

  • product price의 최저가
select min(price) from product;

  • product price의 평균가
select avg(price) from product;

  • product price의 평균가 반올림
select round(avg(price)) from product;
  • product price의 평균가 소수점 이하 올림
select ceil(avg(price)) from product;
  • product price의 평균가 소수점 이하 내림
select floor(avg(price)) from product;



정렬(오름차순)

  • 상품 가격 오름차순으로 product 정보를 조회
select id,name,maker,price from product order by price asc;

  • 상품 가격 내림차순으로 product 정보를 조회
select id,name,meker,price from product order by price desc;

  • maker가 삼성인 product의 id,name,price를 조회하되 price 내림차순으로 정렬
select id,name,price from product where id ='삼성' order by price desc;

  • price가 130 이하인 product의 정보를 조회
select id,name,maker,price from product where price <= 130;

  • price가 100을 초과하고 120 이하인 product 정보 조회
select id,name,maker,price from product where price > 100 and price <= 120;

  • maker의 종류를 조회
select distinct(maker) from product;

  • 특정 id에 해당하는 product 정보 유무 -> pk이므로 존재하면 1 아니면 0을 반환
select count(*) from product where id ='d';

2016년 8월 25일 목요일

26day / DB / JDBC

http://www.sitesbay.com
  • JDBC : Java Database Connectivity
자바 어플리케이션과 데이터베이스와의 연동을 위한 기술

Java Application - JDBC ---SQL-- Database 
  • JDBC 개발단계 
1. 드라이버 로딩 : 데이터베이스와 자바어플리케이션 연동을 위한 초기 정보를 적재
ex)
Class.forName(driverClassName); 
cs
2. 컨넥션 : 연동할 데이터베이스와의 연결
ex)
Connection con = DriverManager.getConnection(dbUrl,id,password);
cs
3. PreparedStatement: SQL 실행
ex)
String sql = "SELECT name FROM member WHERE id = ?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,"java"); 첫번째 물음표에 정보할당 
ResultSet rs = pstmt.executeQuery();
cs
4. ResultSet : 조회한 결과 정보 
ex)
if(rs.next()){  rs.next() : 결과행이 존재하면 true 
    rs.getString(1);  조회한 컬럼순서에 해당하는 데이터 반환 
or
    rs.getString("name");   조회 컬럼명에 해당하는 데이터 반환 
}
cs

2016년 8월 24일 수요일

25day / SE / Network


다수의 클라이언트를 수용하는 채팅 만들기

-> 간단히 말하자면 Chat + Thread라고 볼수있다.


  • Server 구현 사항
다수의 클라이언트와 지속적으로 통신한다
클라이언트의 메세지를 입력받아 접속한 모든 클라이언트에게 메세지를 출력한다


  • Client 구현 사항
Client는 두 개의 스레드가 필요하다
  1. Main thread :
  2. 콘솔에서 입력받아 서버로 메세지 출력하는 스레드
  3. ClientWorker Thread : 
  4. 서버에서 전송되는 메세지를 입력받아 콘솔에 출력하는 스레드

2016년 8월 23일 화요일

24day / SE / Network

  • 일방적인 채팅만들기
  1. 서버는 클라이언트의 접속을 대기한다( port : 5432 )
  2. 클라이언트는 접속 후 서버로 데이터를 한번 전송하고 종료된다
  3. 서버는 클라이언트가 보낸 데이터를 입력받아 자신의 콘솔에
  4. ip와 함께 출력한 후 다시 접속을 대기한다


  • Client

Socket(ip,port)
-> 서버에 접속한다
BufferedReader(InputStreamReader(System.in))
-> 키보드로 입력받아 버퍼에 담는다
PrintWriter(socket.getOutputStream)
-> 버퍼의 내용을 소켓을 통해 서버측으로 출력
close
-> 소켓 종료
cs


  • Server

ServerSocket(port)
-> 클라이언트의 접속을 대기한다
accept() : Socket
-> 소켓을 통하여 클라이언트와 접속
BufferedReader(InputStreamReader(socket.getInputStream())
-> 클라이언트로부터 전달받는다
close
-> 소켓 종료
cs

2016년 8월 22일 월요일

23day / SE / Network

www.samos.aegean.gr

  • java 기반의 TCP/IP 프로토콜을 이용한 네트워크 프로그램 
주요 패키지 : java.net.*
주요 클래스 : java.net.ServerSocket
 java.net.Socket


  • Protocol : 약속 , 통신 규약 

  • TCP(Transmission Control Protocol) : 전송 제어 프로토콜 
  데이터 전달의 신뢰성이 높은 전송 제어 규약


  • IP(Internet Protocol) : 호스트 주소 지정 
ex) 127.0.0.1 : 자신의 컴퓨터 IP
192.168.0.54 : 강사 IP
--> DNS로 ip를 연결해서 클라이언트에게 서비스한다
     DNS(Domain Name System)   www.naver.com


  • Port : 가상의 연결단위 , 서비스 입구(번호) 

ex)    http://192.168.0.54:8888
     protocol     ip port

포트는 일반적으로 1~65535까지 사용
1024포트까지는 사용하는 경우가 많으므로 그 이후 포트를 지정해서 사용하면 된다

2016년 8월 21일 일요일

프로그래밍 시작하기 by kenu





세미나 주제
Hello World?
프로그램의 핵심
논리적으로 생각하기
컴퓨터와의 대화
생각대로 안될 때,
좋은 프로그래밍 습관


또 세미나를 보자마자 바로 신청을 했다!
거기다가 토요일에는 따로 스터디를 하고 있으니
일요일 세미나는 흔치 않아 기회다하고 신청하였고 의외로 인원도 소규모라
큰 기대는 하지 않고 참가를 하게 되었다.



처음에는 몰랐는 데 Java쪽으로 유명한 커뮤니티
okky.kr (오키) 의 대표 Kenu (허광남) 님이셨다.
영광의 마음으로 강의을 듣게 되었다.

기타) http://afreeca.com/kenuheo 채널을 운영 http://bit.ly/okdevtv


  • 주요 포커스
  1. 프로그래머가 무엇인지 (일반인을 기준으로 설명)
  2. 프로그래밍을 시작하기


  • 프로그래머란?
주로 일반인이 프로그래머를 어떻게 생각하는 지에 대한 환상과
편견들을 자세히 설명해주셨고
프로그래밍 언어의 흐름이나 역사 그리고 언어를 만든 개발자분들에 대한 설명
그리고 SI는 가지 않는 게 좋다며 SI에 대해서도 상세히 설명해주셨고
마지막으로는 커뮤니티 사이트들을 공유해주셨다.

기억에 남는 것은 최초의 프로그래머가 여자였다는 것과
재미로 말씀해주신 프로그래머 아내가 알아야 할 97가지
였는 데 검색을 해보면 자세히 나온다.


  • 프로그래밍 시작하기
 Hello World를 왜! 처음 쓰게 되는건지?
-> C언어 챕터 1 예제라고 한다.

프로그래밍의 핵심과 패턴 그리고 로직을 파악하는 것이 중요하다.

논리적으로 생각해야한다.

컴퓨터와 대화하는 것이다.

좋은 프로그래밍 습관을 가지자

버전관리 시스템을 꼭 사용하자

함께 만들자

일단 발표 자료를 받기는 했는 데 공유해도 되는 지 모르겠어서..
큰 제목만 써봤다.
특히 경험에서 우러나오는 좋은 조언들은 나중에 꼭 활용해서
좋은 개발자가 되야겠다는 생각을 동기를 더욱 더 강하게 가지게되었다.


  • 마무리

아쉬움이 남는 세미나였다. 뭔가 부족한 것 같기도 했는 데
그래도 얻은 건 있었다. 인상깊었던 건 백발의 노인분도 세미나를 보러 오셨다.
생활코딩 오프강의때도 중년층분들이 눈에 띄게 많았는데
어떻게 알고 오셨는 지 참 신기하다. 배워야 할 부분은 젊은 우리들보다
이런 분들이 더 적극적이라는 것이다.
IT에 나이의 장벽이 없는 것인가 나도 백세코딩 할 수 있을까 쉽다


p.s kenu님이 이벤트로 책을 배송해주신다고 집주소 적어가시고
이메일로도 이야기했는 데 책을 안보내주신다..속상하다ㅠㅠ

2016년 8월 20일 토요일

자바 개발자의 생존전략 by 한큐




네이버에서 유명한 남궁성의 코드초보스터디 카페에서 꽤나 자극적이고
댓글이 많은 유로 세미나를 발견하였다!

이런 책들을 읽으셨다니 IT책 수집중독인 내가 꼭 가보고 싶게 되었다
아무래도 흥미를 많이 끄는 내용이라 도저히 궁금해서 안갈수가 없었다!
서울에 병원도 들릴 겸 다니던 주말 학원에 양해를 구하고 참가하였다
가격은 3만원이라 평균가격에 비하여 비싼 편이지만 일단 가보기로 하였다.
위치는 신촌 토즈.. 참 멀다 ㅠㅠ 하지만 후회는 안한다 내용이 좋았다



  • 강의목차

  1. 강사소개
  2. 회사초기
  3. 이력서
  4. 면접
  5. 신입의 자세
  6. 수요가 많은 분야
  7. IT에서 정직원
  8. SI vs SM
  9. 초급이란
  10. 중급의 벽
  11. 헤드헌터
  12. 올바른 개발자의 자세
  13. 대기업과 중소기업의 차이
  14. 개발자의 세부직업
  15. 준비해야할것
  16. 점프


카페에 올라온 사진인데 나의 뒷통수가..

  • 강사소개

한큐님 또한 국비 출신이라 반가웠다. (내가 국비를 다니고 있어서 그런가보다)
여러 이유로 공부를 하지도 않았고 철 없던 시절이라 생각이 없었다고 하셨다.
수료를 하고도 몇 번을 재수강을 했다니 그래도 대단하다.
아마 그런 중복된 재수강으로 다져진게 아닐까 싶다.

지금은 프리랜서로 활약하시던 중 다른 계기로 이렇게 강사에도
도전을 하게 되었다고 한다.

  • 회사초기
아마 여기서부터 확 깨는 이야기가 많았다.
뭐 나는 okky에서 주워들은 것이 워낙 많으니 그렇게 놀랄 것은 없었지만
그래도 조금 더 심도 깊은 내용을 직접 들으니 도움이 되었다
회사 초기에 신입에 대한 기대치와 신입이 기대했던 역할의 매치가 어려운 것 같다.

  • 이력서
이력서를 어떻게 쓰면 좋을지! 많은 조언을 받았다.
KSUG세미나에서 들었던 것과는 많이 다른 것 같다.
아마 한큐님의 강의가 조금 더 SI에 가깝지 않나 싶다.

  • 면접
프리랜서를 하면서도 여러 면접을 통하여 사람을 보는 내공이 생긴다고 한다.
내가 다니는 학원에 강사님도 이런 이야기를 하셨는 데
결국 나중에 실력되는 개발자가 되지 않는 이상 신입 개발자 면접은
다른 분야의 면접과 다를게 없는 대한민국의 면접을 벗어나지 못하는 것 같다.
깨알같은 팁을 많이 들을 수 있어 좋았다. 모조리 적어놨다.

  • 신입의 자세
신입으로 취업을 하면 어떻게 대처를 하면 좋을지
어떤 공부를 하면 좋을지에 대하여 배울 수 있었다.
개인적으로 굉장히 끔찍했다. 취업조차 아직 버거운데 취업해서 조차
고통받는 개발자들이란...

  • 수요가 많은 분야
결국 우리나라는 스프링 공화국인 것 같다.
그저 Java가 짱이라는 내용이 아니였다.
어느 분야는 지금 뜨고 있으며 어느 분야는 지금 죽고 있는 지
왜 그런지 흐름을 상세히 알려주었다.

  • IT에서 정직원
왜 NHN, 카카오 같은 굴지의 기업도 개발자가 없어서 난리라는지
도저히 이해가 안갔었다. 물론 KSUG 세미나를 통해 더욱 이해가 안갔지만
왜 그런지 이제 알 것 같다.  정직원이 무조건 좋은 게 아니라는 걸
물론 정직원이 더 좋은 면도 있다. 정직원과 프리랜서는 다르다는 것뿐

  • SI vs SM
이 부분에 대해서도 okky에서 워낙 많은 고민상담글을 봐서
알고 있었지만 무엇이 좋은 지는 알것 같다.
하지만 SI나 SM 사람마다 선호 차이가 있지 않을까 싶다.

  • 초급이란
나는 신입과 초급이 같은 줄 알았다.
명쾌하게 알 수 있어서 좋았다.

  • 중급의 벽
학원 수료자 모두가 개발자를 하는 건 아니라는 말을 평소에
많이 들었었는 데 이 벽에서 많이 포기를 한다고 한다.
왜 중급의 벽에서 많이 포기하는 지 중급에서 무엇 때문에 한계를 만나는 지
알게 되었다.

  • 헤드헌터
참 재미있는 부분이였다. 헤드헌터라는 적을 어떻게 친구로 동료로 돌리는 지
어쩔 수 없는 공생관계라는 것. 아마 한큐님은 그냥 영업직을 했어도 어울릴 것 같다.
결국 코딩과 개발자로 엄청난 명성을 쌓는 게 아니라면 헤드헌터와의 줄다리기도
자신의 몸값을 위해 노력해야하는 게 아닐까?

  • 올바른 개발자의 자세
이 부분은 다른 세미나에서도 많이 들은 이야기이지만 어떻게 공부를 해라
어떤 인생을 살자 커뮤니티를 잘 활용하자
이런 이야기가 많이 중복되었는 데 색다른 내용이 많았다.
물론 인간관계 ! 남을 뒤에서 욕하지말자.
이것 하나만큼은 어디를 가나 나오는 내용이다.

  • 대기업과 중소기업의 차이
위의 IT에서 정직원이라는 내용과 중복되는 내용이기도 하다.
금액 비교와 커리어 등 어떤 차이가 있는 지 세부적으로 알 수 있었다.
결론은 능력된다면 둘다 경험해보는 게 좋을 것 같다.

  • 개발자의 세부직업
결국 설명으로 끝나는 내용인데 이들의 세부직업이 다 같이 모여서
하나의 프로젝트를 만들어가면서 어떤 업무 루틴으로 어떤 흐름으로
일을 나눠서 하는 지 우리 개발자들은 어떤 위치에서 어떤 역할을 하는 지
자세히 설명해주었다.

  • 준비
학원에서 배우는 내용과 언어는 무엇이지만
현업에서는 어떤 언어와 어떤 라이브러리 어떤 S/W를 쓰는 지 알려주었다.
돈 잘벌거나 개발을 좀 아는 회사는 인텔리J를 쓴다는 말이 많던데
결국 우리나라는 어쩔 수 없나보다.
하지만 이클립스도 대단한 IDE인건 사실.

  • 점프
이동! 결국 이동이다! 정직원이 되지 않는 이상
항상 두마리의 토끼를 잡기 위해 엄청난 노력을 하고 고난의 연속이라는 것!

토즈에 이렇게 사람이 많다니..

다른 세미나와 굉장히 다른 세미나였다.
한큐님은 직설적으로 모든 부분을 다 설명해주었고.
많은 청강자들이 있을 텐데 개인톡으로 궁금한 점이 무엇인지
강의에 반영하겠다고 사전에 개인 연락을 해왔다.
자극적인 내용이 많다고 생각했지만 결국 그게 현실인 것뿐이다.
SI가지마라 SI쓰래기다 하지만 그런 공간에서도 멋지게 일하는 개발자들이 있지 않을까
프리랜서 개발자는 생각도 해본 적이 없는 데 이렇게 좋은 강의로
접하고 듣게되어 좋았다.
워낙 개그맨처럼 말씀을 잘하시니 시간이 빠르게 갔다.
컨텐츠가 어떻게 될지는 모르겠지만 나중에 다른 컨텐츠가 또 있다면
더 들어볼만 하다.


가장 기억에 남는 말
내가 회사에서 어느 위치에 어떤 중요도를 가지고 있는 지 
어떤 새로운것을 배우고 있는 지 생각해본다. 
1주일 이상 배우는게 없다면 관두는게 낫다

그림으로 배우는 JAVA PROGRAMMING BASIC


Java Programming Basic

재미있게 배워보는 Java 언어 기초의 모든 것, 그림으로 배우는

  • 목 차



Lesson 01. 시작하기
이 장에서는 Java 언어를 사용하여 프로그램을 작성하는 방법을 학습합니다. Java 언어의 학습을 시작한지 얼마 안된 무렵은 생소한 프로그래밍 단어에 고생할지도 모릅니다. 그러나 이 장에서 다루는 키워드를 이해하게 되면, Java 언어의 이해도 편해질 것입니다. 하나씩 차근차근 나의 것으로 만들어보도록 합시다.
Lesson 02. Java의 기본
이전 장에서는 Java 코드를 입력한 후, 컴파일러와 인터프리터를 사용하여 프로그램을 실행시키는 방법을 배웠습니다. 그럼 앞으로 우리는 어떤 코드를 입력하면 좋을까요? 코드를 작성하여 프로그램을 만들기 위해선 Java 문법 규칙을 알아야 합니다. 이 장에서는 기본적인 Java 문법을 배워보도록 하겠습니다.
Lesson 03. 변수
제 3장에서는 문자나 숫자를 화면에 출력하는 방법을 배웠습니다. 문자나 숫자는 프로그래밍을 시작한지 얼마 되지 않은 분들에게도 그다지 위화감 없는 주제였으리라 생각합니다. 이 장에서는 드디어 프로그래밍 언어로서의 Java의 기능을 배우게 됩니다. 먼저, 가장 기본적인‘변수’에 대해 살펴봅시다.
Lesson 04. 식과 연산자
컴퓨터는 다양한 일을 할 수 있습니다. 이 때 필요한 기능이‘연산’입니다. Java 프로그램을 만들 때에도 연산은 빼 놓을 수 없는 기능 중 하나입니다. Java에서는 간단하게 연산을 수행할 수 있도록‘연산자’라는 기능을 제공합니다. 이 장에서는 다양한 연산자의 사용 방법을 배웁니다.
Lesson 05. 경우에 따른 처리
지금까지 작성했던 코드에서 각 문장들은 한 번에 하나씩 처리되고 있었습니다. 그러나 더 복잡한 처리를 하고 싶은 경우, 순차적으로 문장을 처리하는 것만으로는 부족할 수 있습니다. Java에는 여러 문장을 모아서 코드의 흐름을 제어하는 방법이 있습니다. 이 장에서는 특정 상황에 맞추어 코드의 흐름을 제어하는 문장을 배웁니다.
Lesson 06. 여러 번 반복하기
제 5장에서는 특정 상황에 맞추어 코드의 흐름을 제어하는 문장을 배웠습니다. Java에는 그 외에도 문장을 컨트롤하는 기능이 포함되어 있습니다. 이 기능은 ‘반복 문(루프 문)’이라고 합니다. 반복문을 사용하면 동일한 작업을 여러 번 반복할 수 있습니다. 이 장에서는 반복문에 대해 배웁니다.
Lesson 07. 배열
제 3장에서는 변수를 사용하여 특정 값을 저장하는 방법에 대해 배웠습니다. Java에는 이 외에도 동일한 형의 여러 값을 함께 저장하는‘배열’이라는 기능이 있습니다. 배열을 사용하면 많은 데이터를 처리하는 복잡한 코드를 깔끔하게 작성할 수 있습니다. 이 장에서는 배열의 원리에 대해 배워 보겠습니다.
Lesson 08. 클래스의 기본
지금까지 변수·배열 등 다양한 Java의 기능에 대해 배워 보았습니다. 이러한 기능들은 예로부터 다양한 프로그래밍 언어가 지원하고 있었습니다. 그러나 프로그램이 복잡해짐에 따라, 보다 효율적으로 프로그램을 작성하는 방법이 필요하게 되었습니다. 그러한 필요에 따라 새롭게 등장한 기능이 ‘클래스’입니다. 이 장에서는 클래스의 기본을 배웁니다.
Lesson 09. 클래스의 기능
8장에서는 클래스의 기본에 대해 학습했습니다. 그러나 클래스의 강력한 기능은 이 뿐만이 아닙니다. 견고한 프로그램의 작성을 돕기 위하여 클래스에는 다양한 기능이 준비되어 있습니다. 이 장에서는 클래스의 또 다른 강력한 기능에 대해 살펴봅니다.
Lesson 10. 클래스 이용
지금까지는 클래스와 그 강력한 기능을 확인하였습니다. 이 장에서는 클래스를 실제로 활용하는 방법을 학습하겠습니다. 클래스를 활용하면 실용적인 프로그램을 만들 수 있습니다. 이 장에서는 다양하게 변화하는 프로그램을 만들어 보겠습니다.
Lesson 11. 새로운 클래스
우리들은 8장에서 10장에 걸쳐 클래스의 다양한 기능을 학습했습니다. Java는 이미 설계된 클래스를 활용하여 새로운 클래스를 효율적으로 만들 수 있도록 지원합니다. 기존의 클래스를 이용하여 프로그램을 효율적으로 만들 수 있다는 것은 Java의 큰 장점입니다. 이 장에서는 새로운 클래스를 만드는 방법을 배워 보겠습니다.
Lesson 12. 인터페이스
이 장에서는 특수한 클래스에 대해 배워 보겠습니다. 이 장에서 배운 지식을 활용하면 클래스를 이용한 일관된 프로그래밍이 가능해집니다. 여기에서는 ‘추상 클래스’와‘인터페이스’라는 새로운 지식을 배워봅니다.
Lesson 13. 대규모 프로그램의 작성
지금까지 우리들은 소규모 프로그램을 여러 개 만들었습니다. 그러나 프로그램의 규모가 커지면 커질수록 코드에서는 더 많은 클래스를 다루어야 할 것입니다. 이 장에서는 큰 프로그램의 작성에 필요한 지식을 배웁니다.
Lesson 14. 예외와 입출력 처리
프로그램 실행 시에는 다양한 에러가 발생할 수 있습니다. Java는 프로그램 실행 중에 발생하는 오류에 대응하기 위한 ‘예외 처리’ 메커니즘을 제공합니다. 이 장에서는 이 예외 처리에 대해 배웁니다. 또한, 데이터의 읽기 및 쓰기를 위한‘입출력 처리’에 대해서도 학습해 보겠습니다.
Lesson 15. 스레드
지금까지 우리들이 작성한 프로그램은 그 수행 과정을 하나의 흐름으로 보고 추적할 수 있었습니다. Java는 이러한 처리 흐름을 코드에서 여러 개 만들 수 있도록 지원합니다. 이 장에서는, 처리의 흐름이기도 한 스레드를 여러 개 운영하는 방법을 배워 보겠습니다.
Lesson 16. 애플릿
Java를 사용해서‘애플릿’이라는 작은 프로그램을 만들 수 있습니다. 애플릿은 웹 브라우저 및 기타 환경에서 동작하는 그래픽컬한 프로그램입니다. 이 장에서는‘애플릿의 작성 순서’에 대해 학습해 보도록 하겠습니다.
목차 출처 : 영진닷컴블로그

  • 소개
그림으로 배우는 시리즈는 워낙 다양하게 준비가 되어있다.
물론 굉장한 베스트 시리즈는 아니지만 기본은 하는 시리즈는 아닐까 생각이 든다.
일단 번역서이지만 그렇게 거슬리거나 번역이나 신경쓰이는 오탈자는 딱히
기억에 나지 않는다. Mana Takahashi라는 일본의 저자가 쓴 책이며
페이지수는 551페이지이지만 본문의 글씨들이 큰 편이고 책도 굉자히 작다.
또한 그림이 많아 술술 넘어갈수있으니 페이지의 압박은 없을 수 있다.


  • 입문 || 초보용으로는 최고!

물론 이 책은 꾸준히 다 보거나 몇회 이상 정독한 것은 아니다.
하지만 다양한 그림으로 거부감없이 접근할 수 있었으며 확실히 그림의 영향으로
이해에 도움을 주었다. 글씨도 굉장히 크고 책도 작아서 부담을 느낄 수 없다.
특히 입문시기에는 막상 독학을 시작하려고 산 책에 시련을 겪는 경우가 많은 데
가볍게 시작할 수 있는 자신감을 기를 수 있다.

  • 모자란 깊이
입문 또는 초보용으로는 굉장히 뛰어난 반면에 하나하나 내용의 깊이나 설명.
전체적인 Java에 대한 깊이는 떨어진다. 나는 Java를 무조건 한 권으로 마무리 해버리겠다.
하시는 분들에게는 어울리지 않고 더욱 더 나아간 공부는 인터넷을 통하여
습득을 하던가 해야한다.

"책으로 Java 공부를 해야겠는 데 거부감이 드시는 분들에게 입문용으로 추천해드립니다"