Life Developer
인생 개발자
Developer (136)
고차함수란?

겁나 어려운 개념이다.

 

자바스크립트를 배운다면 고차함수는 한번쯤 들어봤을 것이다.

 

안들어봤으면 뭐 그냥 소꿉장난 하신거라고 생각하시고 더 공부해라.

 

아무튼 자바스크립트를 함수형 프로그래밍에 알맞은 언어로 만들어주는 특성이 바로,

 

자바 스크립트가 고차함수개념을 받아들인다는 것이다.

 

고차함수는 자바스크립트에서 광범위 하게 사용된다.

 

이미 개념이뭔지 고차함수가 뭔지도 알기도 전에 계속 사용해왔을 것이다.

 

고차함수의 개념을 완전히 이해하기 위해서는 함수형 프로그래밍이 무엇인지, 퍼스트 클래스 함수가

 

무엇인지 이해를 해야한다.

 

 

함수형 프로그래밍이란 뭘까?

 

함수형 프로그래밍은 함수를 다른 함수의 파라미터로 넘길수도 있고 반환값으로 함수를 받을수도 있는

 

프로그래밍 형태를 말한다.

 

함수형 프로그래밍에서 우리는 함수라는 용어 하에서 모든것을 생각하고 코딩하게 된다.

'Developer' 카테고리의 다른 글

프로젝트 아키텍쳐  (0) 2020.08.03
함수형 프로그래밍  (0) 2020.08.03
인코딩이 무엇인가? 유니코드는 또 뭐야  (0) 2020.07.31
replace와 translate 차이점  (0) 2020.07.31
아스키코드란 무엇인가?  (0) 2020.07.31
  Comments,     Trackbacks
인코딩이 무엇인가? 유니코드는 또 뭐야

학원이나 학교에서 인코딩 인코딩 말만 들어본 사람 있을것이다.

 

뜻은 제대로 아는가?

 

나도 정확하게 몰랐다.

 

같이 정확히 알고 넘어가자.

 

인코딩이란 대충 뭘까?

 

인코딩을 검색하면 정보의 형태나 형식을 변환하는 처리 방식 이라고 나온다.

 

그리고 인코딩 종류도 많은것을 알수 있다.

 

생각해보면 mp3나 동영상파일도 가끔 인코딩 해야합니다. 라는 문구를 본적 있는것 같다.

 

옛날에 PMP 쓸때 mp4로 인코딩해서 넣거나 mkv인가 먼가 그걸로 한 기억이 있다.

 

뭔가 대충 감이온다. 무언가 모를 형식? 같은것을 바꾸는 것이라는 것을...

 

인코딩의 시초는 바로 ASCII라고 볼수있다.

 

ASCII 는 라틴 알파벳과 숫자, 특수문자를 7비트 이진수로 대응한 인코딩 기법을 사용했는데, 이름해서도 알수 있듯이

 

ASCII는 미국 표준 문자코드기 때문에 라틴 알파벳을 제외한, 한중일 언어와 그밨의 수많은 언어들에는 전혀 사용을

 

할수 없다. 그래서 ASCII를 사용할 수 없는 산업이나 국가에서는 저마다 고유한 인코딩 기법을 사용했고, 결국 다른

 

인코딩 기법을 사용하는 곳에서는 정보를 교류할수 없는 문제가 생겼다.

 

이 문제를 해결하기 위해 표준 문자 전송 처리방식인 유니코드가 개발되었다.

 

유니코드는 이 세상의 모든 문자 인코딩을 통일하기 위한 목적으로 개발되었는데 이런 원대한 꿈을 위해 대부분의

 

나라의 문자 뿐아니라, 기호, 이모티콘, 심지어는 마작 기호들 까지 포함하고 있다.

 

이런 유니코드 기법으로 개발된 인코딩도 많지만 그 중에서도 UTF-8이 가장 널리 사용되고 있으며, 오늘날 유니코드에

 

대한 인코딩을 말한다면 거진 UTF-8로 인식해도 큰 문제가 없다.

'Developer' 카테고리의 다른 글

함수형 프로그래밍  (0) 2020.08.03
고차함수란?  (0) 2020.07.31
replace와 translate 차이점  (0) 2020.07.31
아스키코드란 무엇인가?  (0) 2020.07.31
데이터베이스와 빅데이터의 차이점  (0) 2020.07.31
  Comments,     Trackbacks
replace와 translate 차이점

replace와 translate는 개발하다보면 아주 많이 쓴다.

 

replace나 translate 둘다 문자를 대체할때 사용을 하는데 예시를 보자.

 

이처럼 해당하는 문자를 모두 찾아 바꿔주는것이 replace이다.

 

그럼 translate는 뭘까?

 

 

translate('원래문자열','찾고싶은 문자들','찾고싶은 문자들의 순서와 바꾸고싶은 문자') 

 

이렇게 쓸수있다.

 

어렵다.

 

차근차근 보면 abcdefg라는 문자열에서 c, e, 1, 2, 3 문자를 하나하나 검색을한다.

 

처음은 c여서 봤는데 c가 포함되어있다. 그럼 이 c를 뭘로바꾸느냐? c 와 1 이 같은 위치니까 1로바꾼다.

 

그럼 ab1defg가 된다. 

 

그다음 e는 2로 변경되어 ab1d2fg가 된다.

 

그다음 1과 2와 3은 포함된게 없으니 생략된다. 여기서 포함되는게 있다면 1,2,3 이 3,4,5로 바뀌게된다!

 

그리고 그다음 중요한 포인트가 나온다. f와 g는 분명히 본래문자열에 포함되어있다.

 

그런데 세번째 파라미터에 대응할수 있는 문자가 없다.

 

그럼 무조건 삭제된다!!! 그래서 결과는 ab1d2fg가 아니라 ab1d2이다!!!

 

이것을 이용하여 주민등록번호 검사로직을 만들어보았다.

 

replace대신 사용해보았는데 유용한것 같다! (replace 몇번 쓸것을 한번으로 처리할수 있었다!!)

 

 

 

--입력할 때 '-'를 입력해도 되고 스페이스를 쳐도됨
select decode(substr(translate(:personnum,'1234567890- ','1234567890'),13,1), --:마지막으로 끝번호와 비교하여 검증결과 출력
                 decode(length(11-mod(sum(substr(translate(:personnum,'1234567890- ','1234567890'),rownum,1)-- '-'와 공백이 있을 시 없애고 각자리에 
                                                                    *decode((rownum+1),10,2,11,3,12,4,13,5,rownum+1)),11)),--곱셈처리(decode로 10초과시 숫자변경)하고 sum 후, 11로나눈 나머지를 11에서 뺌
                            2,  substr(11-mod(sum(substr(translate(:personnum,'1234567890- ','1234567890'),rownum,1)*decode((rownum+1),10,2,11,3,12,4,13,5,rownum+1)),11),2,1),
                            1,  11-mod(sum(substr(translate(:personnum,'1234567890- ','1234567890'),rownum,1)*decode((rownum+1),10,2,11,3,12,4,13,5,rownum+1)),11)),'검증완료','검증실패') result
from dual
connect by level<length(translate(:personnum,'1234567890- ','1234567890')); --11개

'Developer' 카테고리의 다른 글

고차함수란?  (0) 2020.07.31
인코딩이 무엇인가? 유니코드는 또 뭐야  (0) 2020.07.31
아스키코드란 무엇인가?  (0) 2020.07.31
데이터베이스와 빅데이터의 차이점  (0) 2020.07.31
Decode와 Case의 차이점  (0) 2020.07.29
  Comments,     Trackbacks
아스키코드란 무엇인가?

ASCII 코드가 뭘까?

 

문자를 숫자로 표현하는 약속을 말한다.

 

미국정보교환표준부호 - American Standard Code for Information Interchange 라고 번역한다.

 

 

여기서 DEC 과 Char를 눈여겨 보면된다.

 

예를들어 문자상수 'a'의 DEC는 뭘까? 찾아보니 97(decimal)이라고 써있다. 10진수로 97이라는 것이다.

 

'A'에 해당하는 값은 65라는 것도 표를 참고하면 알수있다.

 

1~9까지 'a'~'z' 까지 이어져있어서 외우기는 어렵지 않다.

 

a와 A는 많이 쓰니까 그냥 외우면 된다.

'Developer' 카테고리의 다른 글

인코딩이 무엇인가? 유니코드는 또 뭐야  (0) 2020.07.31
replace와 translate 차이점  (0) 2020.07.31
데이터베이스와 빅데이터의 차이점  (0) 2020.07.31
Decode와 Case의 차이점  (0) 2020.07.29
ORM이란?  (0) 2020.07.29
  Comments,     Trackbacks
데이터베이스와 빅데이터의 차이점

빅데이터

 

말그대로 데이터 꾸러미라고 볼수있다. 

 

하지만 관리받지 않은 비 정형화된 데이터들이다.

 

데이터베이스도 같은 데이터를 사용한다.

 

그러나 차이점이 명확하다.

 

빅데이터 처럼 비 정형화된 데이터들을 목록화, 체계화를 한것이 데이터베이스다.

 

이러한 비 정형화된 데이터들을 목록으로 만들고 서로 관련이 되게끔 테이블도 생성하고,

 

이렇게 만들어진 정보가 바로 데이터베이스이다.

 

이러한 데이터베이스를 또 편하게 관리하게 해주는 것이 있는데 그것을 바로 데이터베이스 시스템이라고 한다.

 

그리고 이 데이터베이스 시스템을 이용해서 데이터들을 분석하고 저장한다.

 

대표적으로 MSSQL, MYSQL 등이 있다.

'Developer' 카테고리의 다른 글

replace와 translate 차이점  (0) 2020.07.31
아스키코드란 무엇인가?  (0) 2020.07.31
Decode와 Case의 차이점  (0) 2020.07.29
ORM이란?  (0) 2020.07.29
Spring 모듈(Core, Aop)  (0) 2020.07.29
  Comments,     Trackbacks
Decode와 Case의 차이점

Decode는 오라클에서 제공하는 조건 비교 함수이다.

 

즉, 다른 SQL에서는 사용이 불가능하다.

 

 

Case는 표준 SQL에서 이용하는 조건식으로 어느 SQL에서나 사용이 가능하다.

 

Decode는 동등비교만 되지만 Case는 Decode와는 다르게 동등비교 말고도 범위 조건으로 비교가 가능하기

 

때문에 범용성이 매우 좋다.

'Developer' 카테고리의 다른 글

아스키코드란 무엇인가?  (0) 2020.07.31
데이터베이스와 빅데이터의 차이점  (0) 2020.07.31
ORM이란?  (0) 2020.07.29
Spring 모듈(Core, Aop)  (0) 2020.07.29
Bean 등록 어노테이션  (0) 2020.07.29
  Comments,     Trackbacks
ORM이란?

ORM 은 Object Realation Mapping이다.

 

객체의 관계를 연결해주는 개념이다.

 

즉, 객체와 테이블 시스템을 변형 및 연결해주는 작업이라고 할수있다.

 

ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 대처할 수 있도록 해준다.

 

ORM을 객체 지향 프로그래밍 관점에서 생각해보면, 관계형 데이터베이스에 제약을 최대한 받지 않으면서,

 

객체를 클래스로 표현하는 것과 같이 관계형 데이터베이스를 객체처럼 쉽게 표현 또는 사용하자는 것이다.

'Developer' 카테고리의 다른 글

데이터베이스와 빅데이터의 차이점  (0) 2020.07.31
Decode와 Case의 차이점  (0) 2020.07.29
Spring 모듈(Core, Aop)  (0) 2020.07.29
Bean 등록 어노테이션  (0) 2020.07.29
JUnit 이란?  (0) 2020.07.29
  Comments,     Trackbacks
Spring 모듈(Core, Aop)

Spring Core

코어는 프래임웍의 가장 기본적인 요소로 DI를 이용해서 어플리케이션을 개발할 수 있는 환경을 제공해 준다. 다른 모든 기능들은 Core 위에 놓여지게 된다.

컨테이너라고 한다. BeanFactory(Core임)가 가장 조상임. (xml 읽어서 처리), 그 밑이 ApplicationFactory

 

Spring Aop : 이 모듈은 프레임워크가 관점지향형 프로그래밍을 할 수 있도록 한다. 스프링 프래임워크는 AOP를 쉽게 수 있도록 Aspect 라이브러리를 제공해 준다. 이 라이브러리를 이용하여 트렌잭션, 로깅, 성능 모니터링, 케시, 메소드 재수행, 예외 처리등을 쉽게 처리할 수 있다.

'Developer' 카테고리의 다른 글

Decode와 Case의 차이점  (0) 2020.07.29
ORM이란?  (0) 2020.07.29
Bean 등록 어노테이션  (0) 2020.07.29
JUnit 이란?  (0) 2020.07.29
application context(어플리케이션 콘텍스트)?  (0) 2020.07.29
  Comments,     Trackbacks