Geon-Ho


  • 홈

  • 카테고리

  • About

  • 아카이브

  • 태그

함수형으로 전환하기[함수형 프로그래밍]

작성일 2018-01-17 | In JS

함수형으로 전환하기

더 읽어보기 »

연산자[Learning JavaScript]

작성일 2018-01-17 | In BOOK/JS

연산자

더 읽어보기 »

순수함수와 일급함수[함수형 프로그래밍]

작성일 2018-01-16 | In JS

함수형 프로그래밍

정의

  • 성공적인 프로그래밍을 위해 부수 효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임.
  • 부수 효과를 미워한다. -> 순수 함수를 만든다.
  • 조합성을 강조한다. -> 모듈화 수준을 높인다.
  • 순수 함수 -> 오류를 줄이고 잔정성을 높인다.
  • 모듈화 수준이 높다 -> 생산성을 높인다.
/* 순수함수 */

//항상 동일한 인자를 주면 동일한 값을 리턴한다.
function add(a,b) {
	return a + b;
}

//프로그래밍에 있어 c가 변경될 위험이 있으면 add2는 순수함수가 아니다.
//c가 상수일 경우는 순수함수
var c = 10;
function add2(a, b) {
	return a + b + c;
}

//부수효과가 없어야 한다.(외부의 인자가 함수 안에서 변경되면 안된다.)
var c = 20;
function add3() {
	c = b; //부수효과
    	return a + b;
}



var obj1 = { val : 10 }
function add4(obj, b) {
	obj.val += b; //부수효과 : obj의 val값을 변경한다.
}

//add4를 순수함수로 만든 것
var obj1 = { val : 10 }
function add5(obj, b) {
	return { val : obj.val + b } //obj.val을 참조만 할 뿐 변경하지 않는다.
}
  • 일급함수 : 함수를 값으로 다룰 수 있다.
/* 일급함수 */

//변수에 함수를 담을 수 있다.
var f1 = function(a) { return a * b };

//함수를 인자로 받아 return 한다.
function f3(f) {
	return f();
}

console.log( f3(function() { return 10;}) ); //10 : f3에 함수를 넘겼다.
console.log( f3(function() { return 20;}) ); //20 : f3에 함수를 넘겼다.

/* add_maker */

//함수를 리턴하는 함수
function add_maker(a) {
	return function(b) {
		return a + b;
	}
}

var add10 = add_maker(10);
console.log( add10(20)); // 30

//함수를 인자로 받아 사용자가 평가시점에 사용할 수 있다.
function f4(f1, f2, f3) {
	return f3(f1() + f2());
}

console.log(
	f4(
		function() { return 2; },
    		function() { return 1; }
    		function(a) { return a * a }
	)
);	// 9
  • 함수형 프로그래밍은 애플리케이션, 함수의 구성요소, 더 나아가서 언어 자체를 함수처럼 여기도록 만들고, 이러한 함수 개념을 가장 우선순위에 놓는다.
"함수형 사고방식은 문제의 해결 방법을 동사(함수)들로 구성(조합) 하는 것."
마이클 포커스[클로저 프로그래밍의 즐거움]
더 읽어보기 »

제어문[Learning JavaScript]

작성일 2018-01-15 | In BOOK/JS

제어문

더 읽어보기 »

프로그래머를 위한 '공부론'

작성일 2018-01-12 | In Scrap

어떻게 공부할까? 프로그래머를 위한「공부론」

더 읽어보기 »

난 정말 JAVA를 공부한 적이 없다구요-2

작성일 2018-01-11 | In BOOK/JAVA

클래스와 인스턴스

객체를 이루는 것은 데이터와 기능이다.

과일장수
1. 과일장수는 과일을 판다.
2. 과일장수는 사과 20개, 오렌지 10개를 보유하고 있다.
3. 과일장수의 과일판매 수익은 50,000원이다.
더 읽어보기 »

완전탐색

작성일 2018-01-10 | In Algorithm

완전탐색

그냥 다 해보기

  • 가능한 모든 경우의 수를 만들어보고 탐색하는 방법
  • 가능한 모든 경우의 수를 알아야 한다.
준규가 사는 나라는 ESM이라는 연도를 사용한다.
E는 최대값이 15, S는 28, M은 19이다.
15년 = 15 15 15
16년 = 1 16 16
가능한 경우의 수 : 15 X 28 X 19
더 읽어보기 »

순열

작성일 2018-01-10 | In Algorithm

순열

순열

  • 1 ~ N까지로 이루어진 수열

  • 크기는 항상 N이 되어야 하고, 겹치는 숫자가 존재하지 않음

  • 크기가 N인 순열은 총 N!개가 존재한다.

N= 3인 경우에 사전순
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

다음순열

1. A[i] > A[i-1]를 만족하는 가장 큰 i를 찾는다.
2. j >= i 이면서 A[j] > A[i-1]를 만족하는 가장 큰 j를 찾는다.
3. A[i-1]과 A[j]를 swap한다.
4. A[i]부터 순열을 뒤집는다.

모든순열

  • 모든 순열을 구하는 문제

순열의 순서

  • 어떤 순열이 몇 번째 순열인지 구하는 방법

배운점 : 이번 강의는 예시가 많아서 필기는 별로 못했다. 문제를 많이 풀어볼 것!

더 읽어보기 »

비트마스크

작성일 2018-01-10 | In Algorithm

비트마스트

비트연산

  • 비트연산을 사용해서 부분 집합을 표현할 수 있다.
  • &(and), (or), ~(not), ^(xor)
& : 둘다 1 일 경우 = 1
| : 둘다 0이 아닐 경우 = 1
^ : 다르면 = 1, 같으면 = 0
~ : 1이면 0으로, 0이면 1로 변환
더 읽어보기 »

성공과 실패를 결정하는 1%의 네트원크 원리-1

작성일 2018-01-09 | In BOOK/Network

HTTP 리퀘스트 메시지를 작성한다.

탐험 여행은 URL 입력부터 시작한다.

  • 브라우저는 몇 개의 클라이언트 기능을 겸비한 복합적인 클라이언트 소프트웨어
  • URL의 맨 앞에 있는 문자열은 엑세스하는 방법을 나타낸다.
  • 각종 URL의 형식
HTTP 프로토콜로 웹 서버에 엑세스하는 경우
http://user:password@www.cyber.co.kr:80/dir/file1.htm
user = 사용자명(생략가능)
password = 패스워드(생략가능)
www.cyber.co.kr = 웹 서버의 도메인명
:80 = 포트번호(생략가능)
/dir/file1.html = 파일의 경로명


FTP 프로토콜로 파일을 다운로드하거나 업로드하는 경우
ftp://user:password@ftp.cyber.co.kr:21/dir/file1.htm
user = 사용자명(생략가능)
password = 패스워드(생략가능)
ftp.cyber.co.kr = FTP 서버의 도메인명
:21 = 포트번호(생략가능)
/dir/file1.html = 파일의 경로명

브라우저는 먼저 URL을 해독한다.

  • 브라우저가 처음 하는 일은 웹 서버에 보내는 리퀘스트의 메시지를 작성하기 위해 URL을 해독하는 것이다.
  • URL의 요소
http: + // + 웹 서버명 + / + 디렉토리명 + / + .... + 파일명
웹 서버명 뒤 '/' 부터 '파일명'까지는 생략가능하다.

파일명을 생략한 경우

  • 다음과 같이 ‘/’로 끝나는 URL일 경우, ‘/dir/’의 다음에 써야 할 파일명을 생략한다는 것 이다.
http://www.lab.cyber.co.kr/dir/
  • 파일명을 쓰지 않으면 어느 파일에 엑세스해야 할지 모른다. 그래서 파일명을 생략할 때를 대비하여 파일명을 미리 서버측에 설정해 둔다.
http://www.lab.cyber.co.kr/dir/
=> http://www.lab.cyber.co.kr/dir/index.html 서버에 설정해둔 파일호출
  • 웹서버에 ‘whatisthis’라는 파일이 있으면 파일명으로 보고, ‘whatisthis’라는 디렉토리가 있으면 디렉토리명으로 보는 것이 통례이다.
http://www.lab.cyber.co.kr/whatisthis

HTTP의 기본 개념

  • URL해독 후 브라우저는 HTTP 프로토콜을 사용하여 웹 서버에 액세스를 한다.
  • HTTP 프로토콜은 클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것이다.
  • 클라이언트에서 서버를 향해 리퀘스트 메시지(‘무엇을’, ‘어떻게 해서’)를 보낸다.
리퀘스트 메시지 : [ 메소드(어떻게 해서) | URI(무엇을) ]
  • URI는 보통 페이지 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 URI로 쓴다.
  • http:로 시작하는 URL을 그대로도 쓸 수 있다. 엑세스 대상을 통칭하는 말이다.
  • 메소드에 의해 웹 서버에 어떤 동작을 하고 싶은지를 전달한다.
  • HTTP의 주요 메소드
메소드
HTTP의 버전
의미
1.0
1.1
GET
O
O
URI로 지정한 정보를 도출한다. 데이터를 그대로 반송한다.
POST
O
O
클라이언트에서 서버로 데이터를 송신한다.
HEAD
O
O
GET과 비슷. HTTP 메시지 헤더만 반송하고 데이터의 내용을 돌려보내지 않는다.
OPTIONS
O
통신 옵션을 통지하거나 조사할 때 사용한다.
PUT
△
O
URI로 지정한 서버의 파일을 치환한다.
DELETE
△
O
URI로 지정한 파일을 삭제한다.
TRACE
O
서버측에서 받은 리퀘스트 라인과 헤더를 그대로 클라이언트에 반송한다.
CONNECT
O
암호화한 메시지를 프록시로 전송할 때 이용한다.
  • 리퀘스트 메시지가 웹서버에 도착하면 웹 서버는 메시지 내용을 해독한다.
  • 그 후 요구에 따라 동작하고, 결과 데이터를 응답 메시지에 저장한다.
  • 응답 메시지의 맨 앞부분에는 스테이터스 코드가 있다.ex) 404 Not Found
  • 헤더 파일과 페이지의 데이터가 이어지고, 응답 메시지를 클라이언트에 반송한다.
  • 클라이언트에게 도착하여 브라우저가 메시지의 안에서 데이터를 추출하여 화면에 표시하면서 HTTP 동작이 끝난다.
더 읽어보기 »
1 2 3
Geon-Ho

Geon-Ho

Elegant theme for Jekyll.

27 포스트
11 카테고리
RSS
© 2018 Geon-Ho