Development

    타입스크립트로 프로젝트를 시작하기 (Begin Typescript Project)

    타입스크립트로 프로젝트를 시작하기 (Begin Typescript Project)

    해당 포스팅은 아래의 기본적인 세팅은 되었다는 가정하에 작성합니다. NodeJS, NPM, TypeScript Compiler(tsc), ts-node, Visual Studio Code 타입 스크립트 프로젝트 만들기 타입스크립트로 개발할때는, Nodejs 프로젝트를 생성한 뒤, 개발 언어를 타입스크립트로 설정하는 형태로 진행한다. Nodejs 프로젝트를 생성하는 방식은 폴더를 하나 만들고, 해당 디렉토리에 package.json 파일을 만드는 것으로 시작한다. 보통 package.json 파일은 터미널에서 npm init 명령어로 생성한다. > mkdir project-typescript > cd project-typescript > npm init --y Wrote to /Users/soopiri/w..

    콜백지옥 (Callback Hell)과 비동기(async) 처리

    콜백지옥 (Callback Hell)과 비동기(async) 처리

    콜백 지옥 (Callback Hell) 콜백지옥이란, 콜백 함수를 익명 함수로 전달하는 과정이 반복되면서 코드 Depth가 알아보기 힘들만큼 깊어지는 상황을 이야기한다. 보통 EventHandler나 비동기 처리를 수행할 때 이런 형태가 많이 반복될 때가 있는데, 코드 Depth가 많이 길어지게 되고 가독성이 떨어지면서 수정하기도 두려운 상태가 된다. 아래의 코드를 통해 콜백 지옥을 맛보도록 하자. (a.k.a 앱등이 콜백지옥) setTimeout( (product) => { let appleProducts = product; console.log(appleProducts); setTimeout( (product) => { appleProducts += ", " + product; console.log(..

    호이스팅(Hoisting)을 쉽게 알아보자

    호이스팅(Hoisting)을 쉽게 알아보자

    let, var의 차이점에 대해 설명하실 수 있으신가요? Javascript의 호이스팅에 대해 설명하실 수 있나요? 개발자(특히 웹개발자) 면접에서 거의 단골 손님으로 등장하는 개념이다. Javascript를 사용하면서 너무나도 당연하게 사용해왔고 가끔씩은 개념을 모른 상태에서 경험했던 적도 있는 그런 개념이다. 이 글을 읽고 있는 여러분들이 만약 면접에서 이런 질문을 받게 된다면, 당황하지 말고 잘 답변할 수 있도록 내용을 쉽게 정리해보려 한다. Javascript를 통해 개발을 했던 사람들이라면, Javsciprt에서 변수를 선언하는 방법은 const, let ,var 세 가지가 있다는 것은 잘 알고 있을 것이다. 위 세가지를 간단하게 살펴보고 가자 Javascript 변수 선언 방식 var 중복 선..

    디자인 패턴을 이용하는 방법 (5)

    디자인 패턴을 이용하는 방법 (5)

    지난 포스팅에서는 디자인패턴을 활용하여 변화에 대비한 설계를 진행하는 방법에 대해 알아보았다. 이번 포스팅은 디자인 패턴을 이용하는 방법의 마지막 포스팅으로, 디자인 패턴을 고르는 방법과 디자인 패턴 사용 방법을 총 정리해보려고 한다. 디자인 패턴을 고르는 방법 GoF의 디자인 패턴에서 다루는 패턴은 20가지가 넘는다. 어떠한 문제 상황을 해결하기 위해 어떤 패턴을 써야할지 정확하게 판단하는 것은 분명 어려운 일이다. 특히 이런 디자인패턴이 생소한 개발자라면 더욱 어려울것이다. 지금부터 문제 해결에 적합한 패턴을 찾아내는 여러가지 접근 방법에 대해 알아보도록 하자. 패턴이 어떻게 문제를 해결하는지 파악하자 지금까지의 포스팅에서는 디자인 패턴이 어떻게 적합한 객체를 찾고, 객체의 크기를 결정하며, 어떻게 ..

    디자인 패턴을 이용하는 방법 (4)

    디자인 패턴을 이용하는 방법 (4)

    변화에 대비한 설계 지난 포스팅에서는 디자인 패턴의 재사용성에 대해 알아보았다. 디자인 패턴을 통해 재사용을 최대화 하기 위해서는 새로운 요구사항과 기존의 요구 사항에 발생한 변경을 예측하여 시스템 설계가 진화할 수 있도록 해야한다. 변화에 잘 대응하기 위한 소프트웨어를 설계하기 위해서는 미래에 일어날 변화를 어떻게 수용할 것인가를 미리 고려해야 한다. 변화를 수용하지 못하는 설계는 앞으로 재설계를 필요로 하게 된다. 이런 변경들은 클래스의 재설계와 재구현, 수정과 그에 따른 새로운 테스팅을 유발하는데, 재설계의 영향은 프로젝트의 여러 부분에 영향을 끼칠 수 있고, 예측하지 못한 변경은 많은 비용을 발생한다. ** 극 공감이다. 처음의 설계가 잘못되어 설계를 수정한다는 것이 어떻게 보면 프로그램의 근간을..