2016년 9월 7일 수요일

2016년 9월 6일 화요일

2016년 9월 5일 월요일

2016년 9월 2일 금요일

32day / WEB / Javascript

  • 자바스크립트(JavaScript)란?
객체 기반의 스크립트 프로그래밍 언어이다. 웹브라우저 내에서 주로 사용되는
스크립트 언어로 분류가 되며 그저 단순한 용도로만 쓰이는 언어라는 인식이 좀 있으나
그건 옛날 얘기일뿐이다.  웹브라우저뿐만아니라 서버까지 지원하며 Javascript로
못하는 게 없구나 싶을 정도로 스크립트언어의 한계를 벗어나 영역을 늘려가고있으며
현재는 전세계적으로 가장 사랑을 받는 언어라고 볼 수 있다.

  • 사용방법
HTML 문서내에 <script> </script>영역 or .js파일로 불러올 수 있다.

  • HTML과의 관계
HTML 정적인 언어이다. 브라우저내에서 애플리케이션이 구동되거나
명령어를 입력하려면? 바로 스크립트 언어를 사용하면 된다.
Javasciprt를 통하여 쉽게 접할 수 있는 알림창, 경고창 등
HTML이 하지 못하는 동적인 구현을 지원해주게 되는 것이다.

  • Java와의 관계
Java와 Javascript는 그저 다른 언어일뿐이다.
Javascript가 Java에서 파생되었다거나 Java의 구성요소라고 생각하는 사람들이
꽤 많다. 물론 비슷한 구석도 많다. 하지만 전혀 다른 언어일뿐이고!

하지만!
앞으로 계속 사용하게될 MVC구조의 View에서 굉장히 큰 부분을 차지하게 될 것이며
Ajax, Jquery와 연계하여 교육과정에서 무수히 많이 사용하게 될 것이다.

2016년 9월 1일 목요일

31day / WEB / HTML


  • W3C (world wide web consortium) 
: 월드 와이드 웹을 위한 표준을 개발하고 장려하는 조직
  • HTML :  HyperText Markup Language 
  • HTTP : HyperText Transfer Protocol 
  • JavaScript : 웹 화면의 동작을 담당( 그 외 ajax 등 여러 기능을 지원)
  • CSS : 웹 화면 디자인 스타일을 담당 

  • WAS(Web Application Server)
http://www.prolifics.com

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님이 이벤트로 책을 배송해주신다고 집주소 적어가시고
이메일로도 이야기했는 데 책을 안보내주신다..속상하다ㅠㅠ