본문 바로가기

반응형

Coding

(39)
OOP 02: JavaScript의 Prototype 이어서, 자바스크립트에서 프로토타입은 무엇이고 왜 사용해야 할까? Prototype이란? C++, Java처럼 클래스를 이용하는 객체지향 언어에서는 객체의 설계도라고 할 수 있는 클래스를 상속할 수 있다. 반면 자바스크립트는 클래스가 아닌 객체를 상속. 이때 상속은 프로토타입 체인이라고 부르는 구조로 구현되어있다. * ECMA6 표준에서 Class 문법이 추가되었지만 문법이 추가된 것일 뿐, 자바스크립트가 클래스 기반으로 바뀐것은 아님. 우리가 함수를 정의하면 두 가지 일이 동시에 이루어진다. 1. 해당 함수에 Constructor(생성자) 자격 부여됨. 2. 해당 함수의 Prototype Object 가 생성됨. * 생성된 함수와 함수의 Prototype Object 는 서로 참조함. 자바스크립트의 함..
Data Structure 01: Stack & Queue Stack & Queue : Linear data structure. Flexible size. 스택과 큐는 모두 선형 데이타 구조이고 사이즈가 유동적이라는 공통점이 있다. 각각의 특징을 살펴보면, Stack stack은 '쌓다'라는 뜻 그대로 맨 마지막에 넣은 데이터부터 꺼낼 수 있으므로 LIFO(Last In First Out)라고 함. 자료의 입력과 출력이 한 방향에서만 이루어지는 형태의 자료구조로 역순으로 데이터를 꺼내 쓰고 싶을 때 사용함. 활용 예: 다양한 에디터의 Undo/Redo 기능 같은 것. 자바스크립트에서 스택이 가지고 있는 Method는: Array.prototype.push() Array.prototype.pop() Pseudo code로 작성해 보기: //1. 입력: 빈 스택에 ..
OOP 01: 객체지향 프로그래밍의 컨셉 이번주는 객체지향 프로그래밍에 관해 공부 중. 객체와 프로토타입의 개념은 좀처럼 이해하기가 어려웠는데, 이후의 과제를 해내려면 꼭 알아야 할 내용이라서 주요 개념과 특징을 정리해본다. Object-Oriented Programming 이란? '객체지향프로그래밍' 이라고 하는데컴퓨터 프로그래밍의 패러다임 중 하나다. 인간이 세상을 인식하는 방식으로 접근한 프로그래밍 방법론이다. - 인간은 머릿속에 가진 특징을 가진 추상적 이미지로 세상을 인식함. 현실 세계의 여러 크기와 컬러의 사과를 사과라고 인식함. 그것이 클래스인가.. OOP의 구성으로는 Class와 Object(Class의 인스턴스), Method가 있다. Car 라는 클래스를 예를 들면, - Class: 자동차 생산을 위한 청사진(블루프린트, 원형..
Git 02. 개념과 주요 명령어 immersive prep 스프린트를 진행하면서 처음으로 같은 프로젝트를 함께 코딩하는 경험을 했다. 이전에 github 에서 풀리퀘스트 하는 방법을 정리했는데 그때는 혼자 작업을 위한 과정이었음. 앞으로도 자주 사용하게 될 깃에 대한 개념을 정리해본다. Git 이란? "Distributed Version Control System" 소스 관리를 위한 분산 버전 관리 시스템으로 편리한 버전관리, 백업, 협업을 위한 도구. - 작업 내용의 변화를 기록하고 특정 시점의 작업을 불러올 수 있어 버전 관리가 된다. - 작업물이 서버 저장소에만 있는 것이 아니라 각각의 로컬 저장소에 분산되어 있다. - 한 프로젝트의 코드를 여러 사람이 함께 작업 할 수 있도록 도와주고 공동작업 시 발생한 충돌을 처리해 준다. 그..
npm, Package.json npm npm은 Node Package Manager. 하나의 프로그램은 다양한 모듈이 합쳐져서 만들어지는데, 우리는 모든것을 스스로 만들지 않고 검증된 모듈을 가져다 사용하는 경우가 많다. 필요한 모듈을 다운로드할 수 있는 일종의 앱스토어. *npm과 같은 개념으로 페이스북이 내놓은 패키지 매니저 yarn도 존재함. Package.json 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있는 일종의 제품 카탈로그 같은 것. 협업을 할 때 코드와 함께 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다. package.json에서 필요하다고 하는 모듈을 npm을 이용해 다운받아 쓰면 됨. *npm install이 완료되면 no..
Javascript runtime, Node.js, NVM JavaScript runtime 런타임이란 프로그래밍 언어가 구동되는 환경. 즉 어떤 프로그래밍 언어가 동작할 수 있는 프로그램. 작성한 자바스크립트 코드가 실행되는 곳이 바로 자바스크립트 런타임. 대표적인 자바스크립트 런타임은 브라우저, Node.js 가 있다. Node.js Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임. 이벤트 기반, 논블로킹I/O 모델을 사용해 가볍고 효율적 이라고. 이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식. 블로킹과 논블로킹은 쉽게 말해 동기와 블로킹이 유사하고, 비동기와 논블로킹이 유사한 개념. NVM 설치 NVM은 Node Version Manager. Node는 다양한 버전이 존재하고, 그 버전들에 대응하기 위해 ..
[Reference] 현직 개발자들의 이야기 어제부터 현직 개발자들의 경험을 공유하는 영상들을 보고 있다. Reference & Special Session 내가 회사에서 만났던 개발자들과는 완전히 다른 느낌을 받았다. 조직의 구성원이면서도 개발자로서의 자신을 브랜딩 해나가는 사람들이랄까? 앞으로의 과정에서 좋은 레퍼런스가 될것 같다. 공통된 조언들 유저가 있는 프로젝트를 꼭 만들어 볼 것. 그 과정에서 배운것을 기록할 것. 자기회고. 프로젝트가 종료되었을 때 '내가 다시만든다면?' 이라는 질문을 던져볼 것. Error를 해결한 방법을 기록할 것. 영어는 기본. 영어로된 정보들을 많이 읽어볼 것. 추가 조언들 TypeScript 꼭 써봐라. //이 세 가지는 아직 뭔지 모르지만 기록해둠. Unit test 일찍 해볼수록 좋다. 로그를 꼭 남겨라. ..
꾸준히 하는 힘 블로그에 매일 공부한 것, 배운 것, 발견한 것들을 정리하는 일은 역시 쉽지 않다. 손가락을 다치고 나서 타이핑이 어렵다는 핑계로 어물쩡 며칠을 보내버렸다. 오늘 익힌 것들은 내일 마무리 정리 해야지. 오늘 코드스테이츠 Flex2기 오리엔테이션이 있었다. 일정이 다가올 수록 내가 이 과정을 잘할 수 있을까? 라는 두려움, 떨림, 설렘이 있었는데. 오늘 오리엔테이션을 마친 소감은.. 두려움이 매우 증폭되었다. 명상 배울 때 경험치를 쌓는 방법은 하기로 마음먹은 것을 같은 시간에 그냥 매일 해내는것. 매일의 내 몸의 컨디션과 외부의 사건 사고, 수 많은 변수들을 경험하며 계속 하다보면 그 수많은 조건 하에서도 앞으로 나아가는 지혜를 얻게 된다. 대부분의 일들도 이런 식. 하루키의 에세이 처럼. 뭐 그래도 두..