JavaScript 17

비동기 프로그래밍

비동기 프로그래밍 일반적으로 파일 I/O나 네트워크 I/O는 메모리 I/O보다 현저히 느리다. 예를 들어 파일 4개의 입출력을 하나씩 처리한다면, 처리 시간은 길어지고 CPU의 사용 효율성은 떨어지게 된다. 이를 개선하고자 비동기 프로그래밍을 사용하는데, 순차적으로 I/O를 처리하는 것이 아니라 I/O 처리 요청만 운영체제에 전달하고 CPU는 다른 연산을 수행한다. I/O 처리가 완료되면 운영체제에서 I/O 처리를 완료했다는 메시지를 전달받아 이후 작업을 처리하는 방식이다. 참고로, 비동기 프로그래밍은 I/O 처리 요청 순서와 별개로 처리를 완료하는 순서는 제각각이다. 따라서 개발자는 보장되지 않는 I/O 완료 처리를 고려해 프로그래밍을 해야 한다. Node.js는 모든 함수와 모듈이 비동기 프로그래밍을..

JavaScript/Node.js 2018.07.31

모놀리식 아키텍처와 마이크로서비스 아키텍처

모놀리식 아키텍처와 마이크로서비스 아키텍처 1. 모놀리식 아키텍처 - 널리 활용해 온 전통적인 아키텍처이다. - 하나의 애플리케이션 안에 모든 컴포넌트를 포함하는 구조이다. - 구조가 단순해 개발과 배포가 간편하다. 1) 모놀리식 아키텍처의 한계 - 분산 처리가 비효율적이다. 모놀리식 아키텍처는 모든 기능을 프로세스 하나 또는 코드 베이스로 개발하기 때문에 기능별로 분산 처리를 할 수 없다. 항상 전체를 같이 분산해야 한다. - 코드를 관리하기 어렵다. 코드 구조가 하나이기에 새로운 코드를 추가하려면 전체 코드를 이해해야 하고 코드를 추가할수록 구조가 복잡해진다. - 새로운 기술을 적용하기 어렵다. 특정 기능에 새로운 기능을 적용하고 싶어도 기능별로 코드가 독립적이지 않아 적용하기 쉽지 않다. 2) 개선..

JavaScript/Node.js 2018.07.31

express에서의 템플릿 엔진 사용

express에서의 템플릿 엔진 사용 node.js로 서버를 구현하고 클라이언트에게 보낼 웹페이지를 구현하는 과정에서, 대부분의 경우에는 HTML과 CSS를 사용한다. 그러나, jade나 pug등을 사용할 경우에는 html을 사용할 때와는 달리 템플릿 엔진을 사용해서 jade나 pug를 html로 렌더링해야 한다. 템플릿 엔진을 node.js에서 사용하는 자세한 방식은 아래의 링크를 통해서 확인할 수 있다. http://expressjs.com/ko/guide/using-template-engines.html

JavaScript/Node.js 2018.07.24

Node.js에서 MariaDB를 연결할 때에 생기는 문제

Node.js를 사용해서 서버를 구현하다보면 mysql 모듈을 사용해서 MySQL이나 MariaDB에 연결을 시켜서 데이터를 주고 받는 기능을 구현해야 할 때가 생긴다. 이 때에 흔히들 다음과 같은 에러 메세지를 마주하게 된다. 이 "ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server"라는 에러 메세지 통해서 알 수 있듯이 클라이언트 쪽에서 지원하지 않는 인증 모드를 사용하고 있어서 db 연결이 실패했다는 것이다. MySQL의 경우 5.7 버전 이전과 5.7 버전 이후 버전에서 사용하는 비밀번호 인증 방식이 다르기 때문에 생기는 문제로 아래와 같은 방식을 통해서 쉽게 문제 해결이 가능하..

JavaScript/Node.js 2018.07.24

리액트 네이티브의 위험과 단점

리액트 네이트비의 위험과 단점 모든 것이 그렇듯 리액트 네이티브도 단점이 없진 않다. 리액트 네이티브가 모든 앱 개발 프로젝트에 적합한 것은 아니니 진행하려는 (혹은 진행하는) 프로젝트에 리액트 네이티브의 도입이 적합한지 잘 판단하고 사용하기를 바란다. 이제 시작한 지 얼마 안 되다 보니 리액트 네이티브의 가장 큰 위험 요소는 다름 아닌 성숙도이다. iOS를 지원하는 버전은 2015년 3월에 공개되었고, 안드로이드의 경우는 같은 해 9월에 공개되었다. 문서들은 아직 미흡하지만 지속적으로 개선되고 있다. iOS와 안드로이드의 일부 기능들은 아직 지원하지 않고 있으며 커뮤니티에서는 여전히 어떻게 개발하는 것이 바람직한 방법인지 찾고 있는 중이다. 희망적인 뉴스는 아직 구현되지 않은 API를 누구나 직접 구현..

리액트 네이티브의 이점

리액트 네이티브의 이점 리액트 네이티브는 기존의 크로스 플랫폼 애플리케이션 개발 방법과는 눈에 띄는 차이점이 있다. 바로 대상 플랫폼의 표준 렌더링 API를 사용한다는 점이다. 자바스크립트, HTML, CSS를 사용하여 모바일 앱을 만드는 기존의 방법들은 웹뷰를 이용하여 렌더링한다. 이러한 기존 방식은 앱을 실행할 때 유난히 성능이 떨어지는 단점이 있다. 게다가, 대상 플랫폼의 UI 요소들을 대개 이용하지 않는다. 이러한 프레임워크들은 네이티브 UI 요소들을 흉내 내려 하지만 결과는 어색하기 일쑤이다. 애니메이션과 같이 아주 섬세한 부분에 대한 리버스 엔지니어링은 엄청나게 노력이 많이 들고 쉽게 구식이 되어버린다. 그에 반해, 리액트 네이티브는 작성한 마크업을 플랫폼에 따라 그에 상응하는 진짜 네이티브 ..