프론트엔드 언어2017. 6. 18. 21:17


1. 단순정렬


function simpleSort(arr) {

var t;


for (var i=0; i<arr.length-1; i++) {

for (var j=i+1; j<arr.length; j++) {

if (arr[i] > arr[j]) {

t = arr[i];

arr[i] = arr[j];

arr[j] = t;

} // End of if

} // End of for // j

} // End of for // i


return arr;

}


console.log(simpleSort(new Array(3,1,4,2))); // 출력 1234




2. 버블정렬 


function bubbleSort(arr) {

var t;


for (var i=0; i<arr.length; i++) {

for (var j=0; j<arr.length-1; j++) {

if (arr[j] > arr[j+1]) {

t = arr[j+1];

arr[j+1] = arr[j];

arr[j] = t;

}

} // End of for // j

} // End of for // i


return arr;

}


console.log(bubbleSort(new Array(3,1,4,2))); // 출력 1234




3. 삽입정렬


function insertionSort(arr) {

var t;


for (var i=1; i<arr.length; i++) {

t = arr[i];

for (var j=i-1; j>=0; j--) {

if (arr[j] > t) {

arr[j+1] = arr[j];

} else {

break;

} // End of if

} // End of for // j

arr[j+1] = t;

} // End of for // i


return arr;

}


console.log(insertionSort(new Array(2,6,1,9,5))); // 출력 12569




4. 퀵정렬


function quickSort(arr) {


if (arr.length < 2) {

return arr;

}


var pivot = arr[Math.floor(arr.length/2)];


var middle = arr.filter(function (data) {

return data == pivot;

});


var low = quickSort(arr.filter(function (data) {

return data < pivot;

}));


var high = quickSort(arr.filter(function (data) {

return data > pivot;

}));

return low.concat(middle).concat(high);

}


console.log(quickSort(new Array(4,8,6,5,2,1,3,9,7))); // 출력 123456789





대부분의 경우 퀵정렬이 빠르지만 모든 경우에 고속으로 정렬이 가능한 방법은 없다.

그러므로 각각 정렬의 특징을 이해한 후 가장 적절한 방법을 선택해야 한다.




'프론트엔드 언어' 카테고리의 다른 글

jQuery Mobile ajax refresh Issue  (1) 2017.03.29
함수의 호출  (0) 2017.03.24
arguments  (0) 2017.03.24
클로저  (0) 2017.03.24
값으로서의 함수와 콜백  (0) 2017.03.24
Posted by EL2A
개념정리2017. 6. 18. 20:40

프로그래밍에서 연산속도는 실수보다 정수가 더 빠르다.


그러므로 정수로 해결이 가능한 부분은 가능한 정수를 사용하는 것이 바람직하다.


만약 실수를 사용하여 연산 중 속도에 문제가 생길 경우 '실수를 100배한 정수' 를 만들어 연산한 뒤, 최종적으로 결과는 100을 나누어 표시하면 더욱 빠르다.


하지만 연산할 때 정밀도가 달라질 수 있으므로 조심해야 한다.

'개념정리' 카테고리의 다른 글

상향식접근과 하향식접근  (0) 2017.06.18
방어적 코딩 기법  (0) 2017.03.23
리팩토링  (0) 2017.03.22
호스팅과 클라우드  (0) 2017.03.22
DDNS (Dynamic Domain Name Service)  (0) 2017.03.22
Posted by EL2A
개념정리2017. 6. 18. 20:31


하향식 접근

전체를 먼저 정하고 그 밑에 큰 기능등을 정한 뒤 그것들을 계속해서 세분화하여 프로그램을 구조화 시켜 가는 것.



상향식 접근

하향식 접근과는 반대로 각각의 기능이나 기술을 먼저 만든 뒤에 그것들을 모아서 전체 프로그램을 완성시켜 가는 것.




기본적으로 프로그램은 하향식 접근을 통하여 완성해 나가지만, 기능 또는 기술에 대한 확신이 부족할때는 해당부분만 상향식으로 접근해도 좋을것 같다.

'개념정리' 카테고리의 다른 글

고정 소수점 연산  (0) 2017.06.18
방어적 코딩 기법  (0) 2017.03.23
리팩토링  (0) 2017.03.22
호스팅과 클라우드  (0) 2017.03.22
DDNS (Dynamic Domain Name Service)  (0) 2017.03.22
Posted by EL2A
2017. 6. 18. 20:06






책소개


그림을 이용한 풍부한 예제를 통해 설명함으로써 어려운 내용을 보다 쉽게 이해할 수 있게 해준다. 프로그램 작성의 어느 한 부분에 대한 예만을 제시하는 것이 아니라 문제의 이해에서부터 프로그램을 디자인하고 알고리즘을 만들어 코딩을 하는 전 과정을 상세하게 단계별로 설명해 줌으로써 프로그램 작성의 모든 과정에 대한 이해를 돕는다.

전체 9장과 부록으로 구성되어 있으며, 각 장은 그림을 곁들인 설명과 더불어 연습문제까지 포함하여 학습 효과를 높이고 상식 코너를 두어 지루하지 않도록 구성하였다. 부록으로는 좋은 알고리즘 VS, 나쁜 알고리즘, 프로그래밍 시 지켜야 할 8계명, 볼랜드 C++ 5.5 설치 등을 소개하였다.

[알라딘 제공]





목차


제0장. 프로그래밍을 시작하기전에 
01_ 알고리즘이 별건가? 
02_ 프로그램이 만들어지기까지 
03_ 프로그램 흐름이 한눈에 쏙 들어오는 순서도 
04_ C 언어 따라잡기 
05_ 프로그램 작성의 다섯 계명 

제1장. C 언어 기초 다지기 
01_ Hello world! 
02_ 변수와 정수 
03_ 수치형 
04_ 배열 
05_ 포인터 변수 
06_ 문자와 문자열 
07_ 계산 연산자 
08_ 기타 연산자 
09_ 파일 읽고 쓰기 
10_ 키보드 입력 
11_ 메모리 확보 
12_ 구조체 
상식_ 변수명 잘 붙이는 법 

제2장. 프로그램 흐름을 자유자재로 바꾸는 제어 
01_ 제어의 종류와 구조화 
02_ if 문 
03_ for 문과 while 문 
04_ 기타 제어문 
상식_ 구조화 이전의 프로그램 

제3장. 제어로 프로그램 주무르기 
01_ 1부터 5까지의 합 
02_ 배열에서 값 찾기 1 
03_ 배열에서 값 찾기 2 
04_ 평균 구하기 
05_ 막대 그래프 그리기 
06_ 두 문자열 연결하기 
07_ 역순으로 읽으면 
08_ 파일의 내용을 표시하기 
09_ 앞면? 뒷면? 동전 던지기 게임 
상식_ 스택과 큐 

제4장. 함수로 마술부리기 
01_ 함수란? 
02_ 함수의 정의와 사용 
03_ main( ) 함수 
04_ 함수의 특징 
05_ 함수의 활용 
06_ 함수의 재귀호출 
상식_ 함수의 포인터 

제5장. 문제 처리 절차 
01_ 문제 정리하기 
02_ 프로그램의 설계 
03_ 프로그램의 작성 1 
04_ 프로그램의 작성 2 
05_ 프로그램 정리하기 
06_ 테스트와 디버그 
07_ 완성 프로그램 
상식_ 상향식 하향식 접근 방식 

제6장. 라인 에디터로 맛보는 실용 프로그램 
01_ 구조 분석하기 
02_ 데이터 형식 정하기 1 
03_ 데이터 형식 정하기 2 
04_ 기본 설계의 결정 
05_ 메인 부분을 만든다 
06_ 세부 기능 작성 1 
07_ 세부 기능 작성 2 
08_ 완성 프로그램 
상식_ 처리에 걸리는 시간 

제7장. 실력이 쑥쑥! 고급 알고리즘 익히기 
01_ 소수 구하기 
02_ 소인수 분해 
03_ 최대 공약수 구하기 
04_ 연결 리스트 1 
05_ 연결 리스트 2 
상식_ 알고리즘의 고안 

제8장. 알고리즘의 양대 산맥, 정렬과 검색 
01_ 버블 정렬 
02_ 삽입 정렬 
03_ 쉘 정렬 
04_ 퀵 정렬 
05_ 이진 검색 
상식_ qsort( )와 bsearch( ) 

부록. 고급 프로그래밍 묘수 꽁수! 
부록1 : 좋은 알고리즘 VS. 나쁜 알고리즘 
부록2 : 프로그래밍시 지켜야 할 8계명 
부록3 : Borland C++ 5.5 설치 
부록4 : 프로그램을 짜다가 막히면 

용어해설 모음

[예스24 제공]





짝꿍이에게 빌렸던 책인데 두시간만에 술술 읽어졌다.

어려울수도 있는 알고리즘을 그림과 자세한 설명으로 매우 쉽게 설명되어 있다.

C언어로 쓰여져있으나 다른언어를 했다면 쉽게 이해할 수 있는 내용들로 이루어져 있고, 언어를 모르더라도 앞부분에서 딱 필요한만큼 C언어를 설명해준다.

난이도가 높지 않아 알고리즘 입문서로는 추천!


'' 카테고리의 다른 글

TCP/IP가 보이는 그림책  (6) 2017.06.30
프로그래밍이 보이는 그림책  (0) 2017.06.28
명품 JAVA Programming  (2) 2017.06.18
실전프로젝트 반응형 웹퍼블리싱  (0) 2017.06.18
Posted by EL2A
2017. 6. 18. 19:38

 

 

 

 

 

 

책소개

 

십여 년에 걸친 자바의 개발 경험과 강의 경험을 모두 쏟아부은 자바 프로그래밍 책. 이번 개정판에서는 실무에 필요한 for-each 문, Calendar 클래스, MouseWheelEvent 등의 내용을 추가하였다. 또한 연습문제도 추가로 수록하였다. 2004년 JDK 1.5 버전 이후에 세상에 나온 제네릭(generics, 일반화)은 그 사용이 점점 늘고, 현재 제네릭 프로그래밍이라는 새로운 패러다임이 정착되고 있어서, 기존에 있던 ‘제레릭과 컬렉션’을 7장으로 옮기고 군더더기를 없애고 정성스럽게 수정하였다. 또한 책에서 다루는 이클립스와 JDK를 최신 버전으로 바꾸었고, 본문과 소스의 이해력을 높이기 위해 변화를 주었다.

전공자나 비전공자를 불문하고 다양한 독자들이 자바 언어를 배우기 쉽도록 책의 내용을 충실히 정리하고 적절한 예제를 준비하였다. 또한 쉽게 책을 접할 수 있도록 그림과 삽화를 삽입하였다. 각 절마다 Check Time 문제를 두어 배운 내용을 확인할 수 있도록 하였고, 연습문제는 이론문제와 실습문제로 나누었다. 연습문제는 홀수 번과 짝수 번을 유사한 문제로 꾸며서 짝수 번은 스스로 풀면서 반복 연습할 수 있도록 구성하였다. 또한 각 장마다 Open Challenge 문제를 두어 학생 스스로 연습할 수 있는 과정을 두었다.

[알라딘 제공]

 

 

 

목차

 

CHAPTER 01 자바 시작
1.1 컴퓨터와 프로그래밍
1.2 자바의 출현과 WORA 
1.3 자바의 진화 
1.4 자바 개발 환경 구축 
1.5 자바 프로그램 개발 
1.6 이클립스를 이용한 자바 프로그램 개발 
1.7 자바 응용프로그램의 종류 
1.8 자바의 특징 
요약 
Open Challenge 
연습문제 
CHAPTER 02 자바 기본 프로그래밍
2.1 자바 프로그램의 구조 
2.2 식별자 
2.3 자바의 데이터 타입 
2.4 자바에서 키 입력 
2.5 연산자 
2.6 조건문 
요약 
Open Challenge 
연습문제 
CHAPTER 03 반복문과 배열 그리고 예외 처리
3.1 반복문 
3.2 continue 문과 break 문 
3.3 배열 
3.4 다차원 배열 
3.5 main() 메소드의 인자 
3.6 자바의 예외 처리 
요약 
Open Challenge 
연습문제 
CHAPTER 04 클래스와 객체
4.1 객체 지향과 자바 
4.2 클래스 선언과 활용 
4.3 메소드 활용 
4.4 생성자(constructor) 
4.5 가비지와 가비지 컬렉션 
4.6 접근 지정자 
4.7 static 멤버 
4.8 final 
요약 
Open Challenge 
연습문제
CHAPTER 05 상속
5.1 상속의 개념 
5.2 클래스 상속과 객체 
5.3 상속과 접근 지정자 
5.4 상속과 생성자 
5.5 객체의 타입 변환 : 업캐스팅과 다운캐스팅 
5.6 메소드 오버라이딩 
5.7 추상 클래스 
5.8 인터페이스 
요약 
Open Challenge 
연습문제 
CHAPTER 06 패키지 개념과 자바 기본 패키지
6.1 패키지(Package) 
6.2 import와 클래스 경로 
6.3 패키지 만들기 
6.4 자바 JDK에서 제공하는 패키지 
6.5 Object 클래스 
6.6 Wrapper 클래스 
6.7 String 클래스 
6.8 StringBuffer 클래스 
6.9 StringTokenizer 클래스 
6.10 Math 클래스 
6.11 Calendar 클래스
요약 
Open Challenge 
연습문제 
CHAPTER 07 제네릭과 컬렉션
7.1 컬렉션과 제네릭 
7.2 제네릭 컬렉션 활용 
8.3 제네릭 만들기 
요약 
Open Challenge 
연습문제 
CHAPTER 08 입출력 스트림과 파일 입출력
8.1 자바의 입출력 스트림 
8.2 바이트 스트림과 파일 입출력 
8.3 문자 스트림과 파일 입출력 
8.4 버퍼 입출력과 파일 입출력 
8.5 File 클래스 
8.6 파일 복사 응용 프로그램 작성
요약 
Open Challenge 
연습문제 
CHAPTER 09 자바 GUI 기초, AWT와 스윙(Swing)
9.1 자바의 GUI 
9.2 자바 GUI 패키지 
9.3 스윙 GUI 프로그램 만들기 
9.4 컨테이너(Container)와 배치(Layout) 
9.5 FlowLayout 배치관리자 
9.6 BorderLayout 배치관리자 
9.7 GridLayout 배치관리자 
9.8 배치관리자 없는 컨테이너 
요약 
Open Challenge 
연습문제 
CHAPTER 10 자바의 이벤트 처리
10.1 이벤트 기반 프로그래밍(Event Driven Programming) 
10.2 이벤트 객체 
10.3 이벤트 리스너 
10.4 어댑터(Adapter) 클래스 
10.5 KeyEvent와 KeyListener 
10.6 MouseEvent와 MouseListener, MouseMotionListener 
요약 
Open Challenge 
연습문제 
CHAPTER 11 기본적인 스윙 컴포넌트와 활용
11.1 스윙 컴포넌트 소개 
11.2 JLabel, 레이블 컴포넌트 
11.3 JButton, 버튼 컴포넌트 
11.4 JCheckBox, 체크박스 컴포넌트 
11.5 JRadioButton, 라디오버튼 컴포넌트 
11.6 JTextField, 텍스트필드 컴포넌트 
11.7 JTextArea, 텍스트 영역 컴포넌트 
11.8 JList, 리스트 컴포넌트 
11.9 JComboBox, 콤보박스 컴포넌트 
11.10 JSlider, 슬라이더 컴포넌트 
요약 
Open Challenge 
연습문제 
CHAPTER 12 그래픽
12.1 스윙 컴포넌트 그리기 
12.2 Graphics 
12.3 도형 그리기와 칠하기 
12.4 이미지 그리기 
12.5 클리핑(Clipping) 
12.6 스윙의 페인팅 메커니즘 
요약 
Open Challenge 
연습문제 
CHAPTER 13 스레드와 멀티태스킹
13.1 멀티태스킹 
13.2 자바의 멀티스레딩 
13.3 스레드 만들기 
13.4 스레드 생명 주기와 스케줄링 
13.5 스레드 종료 
13.6 스레드 동기화(Thread Synchronization) 
13.7 wait(), notify(), notifyAll()을 이용한 스레드 동기화 
요약 
Open Challenge 
연습문제 
CHAPTER 14 고급 스윙 컴포넌트
14.1 메뉴 만들기
14.2 툴바 
14.3 툴팁 
14.4 다이얼로그 만들기 
14.5 팝업 다이얼로그 
14.6 파일 다이얼로그 
14.7 컬러 다이얼로그 
14.8 탭팬 
요약 
Open Challenge 
연습문제 
CHAPTER 15 애플릿과 멀티미디어
15.1 애플릿의 특징 
15.2 HTML 파일의 <applet> 태그 
15.3 Applet으로 AWT 애플릿 만들기 
15.4 JApplet으로 스윙 애플릿 만들기 
15.5 애플릿에 파라미터 전달하기 
15.6 애플릿의 보안에 따른 제약 
15.7 애플릿에서 오디오 다루기 
15.8 데스크톱 응용프로그램에서 오디오 다루기 
요약 
Open Challen<>추가되고 보완된 새로운 모습의 개정판! 
이 책은 출간된 지 1년 만에 우리나라 거의 모든 대학의 자바 강좌에서 쓰이는 베스트셀러로 각광받고 있다. 또한 일반 독자들 역시 자바 언어를 사용하여 주어진 과제를 해결하고 더 좋은 프로그램을 만들기 위해 이론과 실전을 모두 갖춘 실무서로 주저 없이 이 책을 찾고 있어, 컴퓨터 분야의 베스트셀러로 이름을 올리기도 하였다. 그럼에도 불구하고 초판에서 아쉬웠던 부분과 실무에서 사용하지 않은 일부 내용을 도려내는 등 다음과 같이 더 알찬 내용을 추가하였다. 
첫째, 실무에 필요한 for-each 문, Calendar 클래스, MouseWheelEvent 등의 내용을 추가하였다. 또한 연습문제도 추가로 수록하였다.
둘째, 2004년 JDK 1.5 버전 이후에 세상에 나온 제네릭(generics, 일반화)은 그 사용이 점점 늘고, 현재 제네릭 프로그래밍이라는 새로운 패러다임이 정착되고 있어서, 기존에 있던 ‘제레릭과 컬렉션’을 7장으로 옮기고 군더더기를 없애고 정성스럽게 수정하였다.
셋째, 책에서 다루는 이클립스와 JDK를 최신 버전으로 바꾸었고, 본문과 소스의 이해력을 높이기 위해 변화를 주었다.
십여 년에 걸친 자바의 개발 경험과 강의 경험을 모두 쏟아부은 책
전공자나 비전공자를 불문하고 다양한 독자들이 자바 언어를 배우기 쉽도록 책의 내용을 충실히 정리하고 적절한 예제를 준비하였다. 또한 쉽게 책을 접할 수 있도록 그림과 삽화를 삽입하였다. 각 절마다 Check Time 문제를 두어 배운 내용을 확인할 수 있도록 하였고, 연습문제는 이론문제와 실습문제로 나누었다. 연습문제는 홀수 번과 짝수 번을 유사한 문제로 꾸며서 짝수 번은 스스로 풀면서 반복 연습할 수 있도록 구성하였다. 또한 각 장마다 Open Challenge 문제를 두어 학생 스스로 연습할 수 있는 과정을 두었다.
이해하기 쉽고 가슴에 와 닿는 자바 프로그래밍 책
독자들의 마음을 헤아려 가려운 곳을 긁어주고, 필요한 순간에 적절한 지식을 제공하고, 쉽게 이해하고 스스로 학습할 수 있도록 그림 중심의 설명, 예제, 연습문제를 마련하는 등 모든 작업에 최선을 다하였다.
- Objectives : 학습 목표로 그 장에서 무엇을 배우는지를 제시하였다.
- CHECK TIME : 이미 배운 내용을 점검하기 위해 단답형식의 문제를 제시하였다.
- Tip : 학습한 내용의 보충 설명이나 참고 사항 등을 정리하였다.
잠깐! : 지나치기 쉬운 내용들을 환기시키기 위해 주의 사항 등을 설명하였다.
요약 : 배운 내용을 정리하기 쉽도록 주요 용어를 중심으로 주요 내용을 요약하였다.
- Open Challenge : 프로젝트 문제로 그 장에서 학습한 내용을 응용하여 프로그램을 작성할 수 있도록 하였다.
- 연습문제 : 배운 내용을 정확히 이해하고 있는지 스스로 검토하도록 하기 위한 ‘이론문제’와 이론을 바탕으로 실전 응용프로그램을 작성해보도록 하는 다양한 ‘실습문제’를 수록하였다.
- 본문을 쉽게 이해하도록 돕는 그림과 삽화 : 내용을 쉽게 이해하고 지루하지 않도록 그림과 삽화를 다양하게 사용하였다.
이 책의 내용
먼저, 1장에서는 자바가 태어난 배경과 그 발전 과정을 알아보고, 자바의 특징 및 자바가 사용되는 다양한 분야에 대해 알아본다. 2장에서는 자바 프로그램의 기본 구성과 그 요소에 대해 알아본다. 즉, 자바 프로그래밍을 위한 클래스, 변수, 메소드, 상수에 이름을 붙이고, 이들을 선언하는 방법에 대해 알아보고, 산술 연산자, 비트 연산자, 논리 연산자 등 연산자와 프로그램 제어를 위한 if, if-else, switch 등의 조건문에 대해 알아본다. 3장에서는 반복문과 배열에 대해 알아본다. 또한 배열을 다루다보면 인덱스가 배열의 범위를 벗어나는 경우가 생기는데, 이러한 예외 상황을 자바가 어떻게 처리하는지도 간단히 알아본다. 4장에서는 객체 지향 언어의 기본이라 할 수 있는 클래스와 객체에 대한 개념과 객체 생성 방법, 객체의 구성 등에 대해 다룬다. 5장에서는 상속의 개념을 설명하고, 서브 클래스를 작성하는 방법, 동적 바인딩 등의 내용을 설명한다. 또한 추상 클래스와 인터페이스에 대한 내용을 설명한다. 
6장에서는 패키지를 만들고 사용하는 방법을 자세히 설명한다. 또한 자바 응용프로그램 작성 시 많이 사용하는 JDK에서 제공하는 기본 패키지와 클래스의 사용에 대해 설명한다. 7장에서는 여러 개의 객체들을 저장하고 다루는 컬렉션에 대해 설명한다. 또한 코드의 재사용과 관련된 제네릭(generic)의 개념과 활용에 대해 설명한다. 8장에서는 자바에서의 입출력 스트림의 기본 개념을 설명한다. 또한 다양한 API를 소개하고 자바 응용프로그램이 키보드, 콘솔 등 여러 입출력 장치로부터 데이터를 입출력하거나 파일을 입출력하는 방법을 설명한다. 9장에서는 메뉴나 이미지, 그래픽을 이용하여 화면에 보여주고 사용자로부터 마우스를 이용한 다양한 입력을 받을 수 있는 GUI 방법을 소개한다. 그리고 자바와 스윙(Swing) 패키지를 대상으로 기본적인 GUI 응용프로그램을 작성하는 방법을 설명한다. 또한 자바 GUI의 기본 체제인 컨테이너와 컴포넌트의 구성을 이해하고 프레임을 만드는 방법과 컨테이너가 컴포넌트를 배치하는 여러 가지 방법 등을 다룬다. 10장에서는 어떤 이벤트가 발생하고, 이벤트를 처리하는 리스너는 어떻게 작성하며, 이벤트 리스너는 발생한 이벤트에 관한 정보를 어떻게 얻는지 등 제반 사항을 배운다. 
11장에서는 많이 사용되는 기본적인 스윙 컴포넌트들을 소개하며, Item 이벤트와 Change 이벤트를 활용하는 방법도 소개한다. 12장에서는 화면에 자유롭게 도형이나 이미지를 출력할 수 있는 Graphics의 기능을 이해하고 활용하는 방법을 다룬다. 13장에서는 스레드 개념, 스레드 만들기, JVM와 스레드, 스레드 변이, 스레드 동기화 등을 다룬다. 14장에서는 사용하기 쉬운 몇몇 고급 스윙 컴포넌트를 소개한다. 또한 응용프로그램을 작성하는 데 필수적인 메뉴, 툴바, 툴팁, 다양한 팝업 다이얼로그, 파일 입출력을 위한 파일 열기/저장 다이얼로그, 색상 선택을 위한 컬러 다이얼로그, 다수의 팬을 가지는 탭팬 등을 다룬다. 15장에서는 웹 브라우저 사용자들이 자바스크립트 등으로 구현하기 어려운 구조의 프로그램이나 자바스크립트보다 세련되고 활동적인 GUI를 구축하기 위해 활용되는 애플릿에 대해 배운다. 16장에서는 가장 많이 사용되는 TCP/IP 프로토콜에 대해 간단히 알아보고, 자바의 소켓을 이용하여 클라이언트와 서버가 어떻게 데이터를 주고받는지 알아보며, 프로그래밍하는 기법을 설명한다. 그리고 현재 우리가 가장 많이 접하는 웹과 관련된 URL 클래스를 이용한 네트워크 프로그래밍과 웹을 비롯한 기타 네트워크 응용프로그램의 기초가 되는 소켓 프로그래밍을 공부한다. 17장에서는 데이터베이스에 대해 간단히 알아본 후 자바의 JDBC를 이용하여 데이터베이스를 생성하고, 접속하고, 데이터를 생성·수정·삭제·검색 등을 수행하는 자바 응용프로그램을 작성하는 기법에 대해서 설명한다.

[알라딘 제공]

 

국비지원 교육받던 시절 이해하지는 못하더라도 처음부터 끝까지 다 읽고 모든 예제를 타이핑하고 실행했었음에도 처음엔 이 책이 참 어려웠다.

여러가지 개념들을 이해하기 쉽도록 여러가지 비유를 하며 설명을 해주었는데, 개념이해 보다 비유한 설명을 이해하는게 혼자서 해결하기에는 부담이 좀 있다.

 

'' 카테고리의 다른 글

TCP/IP가 보이는 그림책  (6) 2017.06.30
프로그래밍이 보이는 그림책  (0) 2017.06.28
알고리즘이 보이는 그림책  (0) 2017.06.18
실전프로젝트 반응형 웹퍼블리싱  (0) 2017.06.18
Posted by EL2A
2017. 6. 18. 19:34






책소개


'웹 표준이라는 약속'에 대한 이야기를 바탕으로, 누구나 쉽게 단계적으로 따라갈 수 있도록 HTML과 HTML5/CSS와 CSS3/Javascript와 jQuery까지 표준형 웹 제작을 위한 모든 도구들을 기본부터 활용까지 리드하는 책. PC와 스마트폰, 태블릿 등 사용자의 기기에 따라 유연하게 구현되는 차세대 웹 기술 '반응형 웹'을 소재로 하였다. 

도서가 집필된 이후 제작되는 기간까지도 실무에 종사하는 전문가 그룹 및 웹 퍼블리싱을 공부하는 대학생 그룹을 상대로 폭넓은 베타 테스트를 진행하여 신뢰도를 높였으며, 기본편에서 시작하여 마지막 '프로젝트' 단계에까지 이르는 순차적인 진행을 통해 보다 효율적이고 친절한 표준형 반응형 웹 퍼블리싱 바이블이 되도록 구성하였다.

[알라딘 제공]




목차


시작하기 전에
1 쏟아지는 디바이스 시대, 이제는 반응형 웹이다!
2 프로젝트 진행에 필요한 설치 프로그램들
아이콕스 반응형 웹 페이지 미리보기
실습용 예제 소스 다운로드 안내
PARTⅠ 반응형 웹 사이트 마크업 (XHTML 구조)
01 반응형 웹 제작을 위한 XHTML 
01-1 HTML 기본 문법(BASIC HTML GRAMMAR)
01-2 기본 문서 구조(DOCUMENT STRUCTURE)
01-3 DTD 선언(DOCUMENT TYPE DEFINITION)
01-4 블록 요소(BLOCK ELEMENT)
01-5 인라인 요소(INLINE ELEMENT)
01-6 제목(TITLE)
01-7 단락(PARAGRAPH)
01-8 주소(ADDRESS)
01-9 구분선(HORIZONTAL LINE)
01-10 인용문(QUOTATION)
01-11 텍스트(TEXT)
01-12 이미지(IMAGE)
01-13 링크(LINK)
01-14 리스트(LIST)
01-15 테이블(TABLE)
01-16 폼(FORM)
01-17 그룹핑(GROUPING)
02 반응형 웹 제작을 위한 HTML5 
01-18 새로운 구조(NEW STRUCTURE)
01-19 새로운 태그(NEW TAG)
01-20 폼 요소(FORM FACTOR)
PARTⅡ 반응형 웹 사이트 디자인 (CSS 표현)
01 반응형 웹 제작을 위한 CSS 
02-1 CSS 기본 문법(BASIC CSS GRAMMAR)
02-2 선택자(SELECTOR)
02-3 서체(FONT)
02-4 문단(PARAGRAPH)
02-5 배경(BACKGROUND)
02-6 상자(BOX)
02-7 레이아웃(LAYOUT)
02-8 조건 주석문(CONDITIONAL COMMENT)
02 반응형 웹 제작을 위한 CSS3 
02-9 경계선(BORDER)
02-10 배경(BACKGROUNDS)
02-11 문자 효과(TEXT EFFECTS)
02-12 2차원 변형(2D TRANSFORM)
02-13 속성 전환(TRANSITION)
02-14 애니메이션(ANIMATION)
02-15 다단 편집(MULTIPLE COLUMN)
02-16 사용자 환경(USER INTERFACE)
PARTⅢ 반응형 웹 사이트 액션 제어 (JAVASCRIPT 동작)
01 반응형 웹 제작을 위한 JAVASCRIPT
03-1 선언문(DECLARATION)
03-2 변수 및 데이터 형(VARIABLES & DATA TYPE)
03-3 연산자(OPERATOR)
03-4 제어문(CONTROL STATEMENT)
03-5 객체(OBJECT)
03-6 함수(FUNCTION)
03-7 이벤트(EVENT)
03-8 브라우저 객체(BROWSER OBJECT MODEL) 
03-9 문서 객체(DOCUMENT OBJECT MODEL)
02 반응형 웹 제작을 위한 JQEURY(MOBILE)
03-10 제이쿼리 라이브러리(JQUERY LIBRARY)
03-11 선택자 및 속성(SELECTOR & ATTRIBUTE)
03-12 문서 객체 조작(DOM CONTROL)
03-13 이벤트(EVENT)
03-14 효과(EFFECT)
03-15 애니메이션(ANIMATION)
03-16 플러그인 활용(PLUG-IN)
03-17 제이쿼리 모바일(JQUERY MOBILE)
PARTⅣ 실전 PROJECT! - ICOX 반응형 페이지 제작
01 실전! 아이콕스 사이트 HTML5 마크업
04-1 기본 문서 구조 마크업
04-2 헤더 영역 마크업
04-3 신간추천 영역 마크업
04-4 메인 컨텐츠 영역 마크업
04-5 푸터 영역 마크업
04-6 유효성 검사
02 실전! 아이콕스 사이트 CSS3 디자인
04-7 전체 레이아웃 디자인
04-8 PC 버전 디자인
04-9 TABLET 버전 디자인
04-10 MOBILE 버전 디자인
04-11 IE9 이하 환경을 위한 디자인
03 실전! 아이콕스 사이트 JAVASCRIPT 제어
04-12 HEADER 영역 - PC/TABLET/MOBILE GNB
04-13 SECTION 영역 - CLICK & TOUCH 슬라이드 배너
04-14 CONTENT 영역 - 탭 메뉴(TAB MENU)
<부록> JAVASCRIPT 객체표

[인터넷 교보문고 제공]




책 두께만큼 내용도 얕다. 

얇은 책 한권에 HTML, CSS, JAVASCRIPT, JQuery 뿐만 아니라 반응형웹까지 담겨있다.

가볍게 기초적인 부분을 쑥 훑어보기엔 좋은 책

'' 카테고리의 다른 글

TCP/IP가 보이는 그림책  (6) 2017.06.30
프로그래밍이 보이는 그림책  (0) 2017.06.28
알고리즘이 보이는 그림책  (0) 2017.06.18
명품 JAVA Programming  (2) 2017.06.18
Posted by EL2A
알고리즘(CF)2017. 6. 18. 10:43

Given an array of integers, find the maximal absolute difference between any two of its adjacent elements.




Example

For inputArray = [2, 4, 1, 0], the output should be
arrayMaximalAdjacentDifference(inputArray) = 3.




Code

function arrayMaximalAdjacentDifference(inputArray) {

    

}

'알고리즘(CF)' 카테고리의 다른 글

22. avoidObstacles  (1) 2017.06.20
21. isIPv4Address  (1) 2017.06.19
19. areEquallyStrong  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
Posted by EL2A
알고리즘(CF)2017. 6. 18. 10:42

Call two arms equally strong if the heaviest weights they each are able to lift are equal.

Call two people equally strong if their strongest arms are equally strong (the strongest arm can be both the right and the left), and so are their weakest arms.

Given your and your friend's arms' lifting capabilities find out if you two are equally strong.




Example

  • For yourLeft = 10yourRight = 15friendsLeft = 15 and friendsRight = 10, the output should be
    areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) = true;
  • For yourLeft = 15yourRight = 10friendsLeft = 15 and friendsRight = 10, the output should be
    areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) = true;
  • For yourLeft = 15yourRight = 10friendsLeft = 15 and friendsRight = 9, the output should be
    areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) = false.





Code

function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {

  

}


'알고리즘(CF)' 카테고리의 다른 글

21. isIPv4Address  (1) 2017.06.19
20. arrayMaximalAdjacentDifference  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
16. areSimilar  (1) 2017.06.17
Posted by EL2A
백엔드 언어2017. 6. 18. 00:31


자바 웹 개발자로써의 학습을 기준으로 두고 작성하였습니다.




1. 단기 속성 과정


 1) 이클립스

 2) HTML, CSS, JAVASCRIPT

 3) 자바, JSP, 서블릿

 4) 스프링 프레임워크

 5) 마이바티스 프레임워크


-> 우리나라 현실에서는 순서대로 이정도만 해도 취업해서 개발자가 될 수 있다. 하지만 이후에 아래의 장기 과정을 밟아야 한다고 생각한다.




2. 장기 과정


※ 별표기준

★★★★★  깊이가 매우 깊게 반드시 알아야 한다.

★★★★    반드시 알아야 하지만 적당히 깊어도 된다.

★★★       한단계 성장하려면 알아야 한다.

★★         반드시 알 필요는 없지만 알면 좋다.

★            몰라도 먹고 사는데 지장 없다.


1) 통합개발도구,IDE (★★★★)

 -> 이클립스, 인텔리 J 등


2) 자바 (★★★★★)

 -> 자바로 시작해서 자바로 끝낸다라고 할만큼 제일 중요하다.


3) JSP, 서블릿 (★★★★)

 -> JSP 보다도 서블릿이 더 중요하다. 서블릿의 라이프 사이클과 매커니즘 이해가 필요하다.


4) 빌드 도구 (★★★)

 -> ANT, 메이븐 등

 -> 통합개발도구들이 잘 돼있어서 몰라도 되지만 어떻게 해서 빌드가 되고 배포가 되는지 아는것도 필요하다.


5) 버전관리도구 (★★★★)

 -> GIT, SVN 등


6) 테스트 주도 개발과 리팩토링 (★★★★)

 -> TDD 같은 방식을 몸에 익혀놓고 습관을 들이면 나중에 수많은 에러의 예방으로 돌아온다.

 -> 처음에는 UI 없는 예제 또는 데이터베이스 없는 예제를 통해서 하는것이 좋다.


7) HTML, CSS, JAVASCRIPT (+JQuery) (★★★)

 -> 백엔드만을 전문적으로 한다면 별 두개가 맞다고 생각하지만, 프론트엔드도 일정부분 필요한 환경이라면 별 네개까지 올라갈 수 있다고 생각한다.


8) OOP, 디자인패턴 (★★★)


9) JDBC, Spring JDBC (★★★★★)

 -> Callback interface, Class 개념 이해


10) Mybatis, ORM, JPA, Hibernate (★★★★)

 -> Mybatis 는 ORM 이 아니며 학습비용이 낮다.

 -> ORM은 학습비용이 매우 높다. 상대적으로 높은 수준이 아니라 엄청나게 높다.




순서는 중요하지 않으며 웹개발자로써 하나씩 알아가야 한다.

'백엔드 언어' 카테고리의 다른 글

DAO(Data Access Object) 패턴  (0) 2017.06.19
다형성(Polymorphism)  (0) 2017.06.19
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
JSTL 사용법  (0) 2017.03.24
Json-Simple 추가 및 사용법  (0) 2017.03.24
Posted by EL2A