본문 바로가기

전체 글

(79)
어지러운 JavaScript 생태계 | Vanilla JS, ECMA, React의 관계 JavaScript를 어렵게 만드는 또다른 요인으로는, 복잡한 JavaScript 생태계가 있다. JavaScript는 뭐고, Vanilla JS는 또 무엇인지. 그리고 JavaScript 신문법이라고 ES6가 있다는데, 얘는 그러면 다른 JavaScript인가? 요새는 React, Vue같은 걸로 프론트엔드를 만든다는데, 그러면 JavaScript는 이제 안 쓰는 건지. 특히 비전공자입장에서는 이런 수많은 것들이 우리의 머리를 어지럽게 만든다. 그래서 나름대로의 비유를 통해 이러한 부분들을 이해해보고자 한다. 먼저 Vanilla JS는 한국어다. 그냥 한국어가 바로 Vanilla JS다. 어떠한 프레임워크와 라이브러리도 사용하지 않는 자연어로서의 한국어와 동등한 위상을 지니는 것이 바로 Vanilla ..
우리를 괴롭히는 JavaScript의 자료형 | var, let, const는 무엇이 다를까 JavaScript는 일본어과 같은 언어다. 쉬워보이면서도 그 속에 나름대로의 엄밀함 때문에, 중급까지 오르기는 쉬우나 생각보다 숙련자가 되기는 어렵기 때문이다. JavaScript를 어렵게 만드는 것은, EventListner의 존재도 있지만, 가장 첫 진입장벽은 다양한 자료형에 있는 것 같다. 프로그래밍을 건물을 짓는 것에 비유해볼 때, 각각의 변수들은 가장 작은 단위의 벽돌로 이해해볼 수 있을 것이다. 대부분의 언어는 이 벽돌에 대해서 차별점을 많이 두지는 않는데, JavaScript라는 언어는 이들에 대해 제법 개성적인 특징들을 부여해놓았다. 다양한 소재의 벽돌로 건물을 지을 수 있겠지만, JavaScript로 건물을 지을 때는, 3가지 소재의 벽돌을 사용하게 되는 것 같다. var을 클레이점토,..
CRUD를 중심으로 express와 django 웹프레임워크를 비교해본다 어느 웹 프레임워크를 사용하건 간에, CRUD를 중심으로 웹서비스를 구현하는 건 모두 똑같다. 그래서 하나의 웹프레임워크를 사용하는 것에 익숙해지면, 다른 웹프레임워크도 쉽게 익숙해질 수 있다. API를 설계하는 과정은 결국, GET/POST/PUT/DELETE 요청(읽기, 쓰기, 수정, 삭제)에서 모든 기능이 나오기 때문이다. 다만, 어떤 언어를 기반으로 하는가, 그리고 어떤 프레임워크를 중심으로 웹서비스를 구축하는가에 따라서 세부적인 부분들이 달라진다. 각 언어별로 대표적인 프레임워크들이 존재하지만, 개인적으로는 node.js와 python 환경의 프레임워크를 선호한다. java나 php 계열의 프레임워크가 안정성이 뛰어나다고 생각하지만, 안정성 이전에 스타트업쪽에 관심이 많은 나로서는, 서비스를 얼..
Node.js는 프레임워크인가 | Node.js에 대한 오해 다양한 웹프레임워크들이 존재한다. Python은 Django, Flask, 그리고 최근 대두되는 Fast API, Ruby의 Ruby on Rails, Java의 Spring 등등. 이와 동등한 위상으로 JavaScript에는 Node.js라는 웹프레임워크가 있는 것처럼 생각되어지곤 한다. 그러나 엄밀히 이야기하면, Node.js는 웹프레임워크가 아니다. 정확히 이야기하면 JavaScript(Node.js)의 웹프레임워크는 Express, Nest.js라 할 수 있다. 모두가 익숙하듯이, JavaScript는 웹페이지를 동적으로 만들기 위해 만들어졌다. 그래서 이 JavaScript를 읽어내기 위해선 크롬과 같은 웹브라우저가 필요했다. 헌데 이 크롬에 탑재된, JavaScript를 읽어내기 위한 엔진이 ..
React의 큰 틀에 대해서 생각해본다 Vanilla JS로 시작한 나에게 React는 자칫 생소한 프레임워크로 느껴졌다. HTML/CSS와 완전히 분리하여 로직을 작성하였던 Vanilla JS와 달리, React.js는 UI와 EventHandle을 거의 동시에 진행할 수 있다는 측면에서 매력적으로 느껴졌다. 우선 React 프레임워크는 index.js라는 접착제를 가지고 index.html에 첨부를 하는 구조로 이루어져 있다. 여기서 우리가 보는 UI는 단순히 한 화면이 아니라 여러 화면으로 이루어져 있을 수 있기 때문에 이들을 관리해줄 것이 필요하다. 그게 React Router DOM이다. 또한 다양한 UI의 요소들이 변화함에 따라, Event들이 발생하는데, 그렇게 많은 UI의 상태변화를 관리해주는 것이 Redux라는 라이브러리다. ..
Android 프로그래밍에 관해 코틀린 기반의 안드로이드 앱 프로그래밍의 전반적인 그림을 정리해봤다. 하나하나의 기능을 구현하는데 집중하는 강의들이 많아서 전반적인 그림을 정리한다면 앱 프로그래밍의 숲을 볼 수 있을 것이라 생각했다. Native 앱 개발 공부를 하다가 지금은 Flutter 기반의 크로스 플랫폼 개발에 초점을 두고 있는데, 실제로 Kotlin으로 앱을 간단히 구현해보다가, Flutter로 가보니 편의성이 이전과 확연히 다르다. 특히 두드러지는 부분은, 기존에는 XML로 UI를 구현하였는데, Flutter는 이와 달리 Dart라는 언어 하나로 모든 걸 구현하는것이 편리하였다. 또한 Dart로 만든 코드 자체도 Scaffold를 통해 '들여쓰기'로 직관적인 코드 작성이 가능해서 나와 같은 입문자에게는 더 편리하다는 생각이 ..
Django Web Framework는 어떻게 작동하는가 대부분의 강의와 서적이 전반적인 그림을 보여주기 보다 하나하나의 기능구현에 초점을 맞추고 있기 때문에, Django라는 프레임워크의 전반적인 작동방식을 정리해볼 필요가 있다고 느꼈다. 세세하게 그린다면, 소켓이나 WSGI와 같은 내용들도 들어가야 하지만, 프로덕트를 만든다는 관점에서는 그런 부분에 집중하지 않아도 된다고 생각한다. 폴 그레이엄이 '해커와 화가'에서 밝혔듯이, 내가 생각하는 개발자/프로그래머는 화가이다. 화가는 물감을 가지고 그림을 그리는 사람들이기 때문에 물감의 성분에 대해서는 자세히 알지 않아도 된다고 생각한다. 물론 더 좋은 그림을 그리기 위해서는 때로는 물감을 연구할 필요도 있다는 부분도 인정한다. 그러나 개발자/프로그래머는 건축가이지, 벽돌을 만드는 사람들이 아니다. 그런 관점에서..