목록정리/Question (24)
PracticeEveryday
ESLint - ESLint는 ES ( Ecoma Script )와 Lint 를 합친 것입니다. - Lint ( 혹은 Linter )는 에러가 난 코드에 표시를 달아주는 것을 뜻합니다. => 린트(lint) 또는 린터(linter)는 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag) 를 달아놓기 위한 도구들을 가리킨다. - 에러와 코딩 스타일을 잡아주기 때문에 여러 명이 코드를 작성하더라도 한 사람이 코딩한 것처럼 깔끔하게 만들어 줄 수 있습니다. - 린트를 통해 잡아내고 싶은 에러의 기준을 직접 설명할 수 있는데, 문법적인 오류만 잡아낼 수도 있으며 세미콜론 ( ; ) 사용과 같은 전반적인 코딩 스타일도 정해둘 수 있습니다. ESLint 사용법 1. npm ..
요약 - 객체지향 프로그래밍은 프로그래밍 산업이 발전할 떄 프로그램의 덩치가 커져가면서 생기는 문제점을 해결하기 위해 나온 하나의 관점이자 방법론입니다. - 기존의 방식으로는 변수들을 하나씩 관리하다 보니 변수명을 공유해서 써야 되는 문제들이 발생했기 떄문입니다. - 연관있는 이름들을 하나로 묶어주는 구조체라는 타입을 만드니 데이터를 중심으로 프로그래밍을 할 수 있었습니다. - 그렇다면 데이터와 함수를 한 데 묶어 관리하면 어떨까? => 이렇게 하니 하나의 큰 프로그래밍을 작은 문제를 해결하는 독립적인 단위로 만들 수 있게 되었습니다. => 이렇게 작은 단위로 관리를 할 수 있게 되니 개발과 유지 보수가 간편하게 된다는 장점을 알게 되었습니다. - 이러한 객체를 설계하고 찍어낼 수 있는 구조를 클래스라고..
객체지향 프로그래밍의 발전 - 이렇게 객체지향 프로그래밍이 정립되고 다음어져 C++같은 객체지향 프로그래밍을 할 수 있는 언어들이 등장하게 되었습니다. - 객체지향 프로그래밍은 완전 객체지향 패러다임을 지향하는 Java의 등장과 함께 프로그래밍 생태계에 주류 패러다임이 됩니다. - 이제 프로그래밍을 할 때 객체 지향은 너무나도 당연한 것이 되었습니다. - 모든 것이 객체이며, ' 객체 간의 관계 ' 를 중요시하며 객체를 만들어내는 관점으로 프로그래밍을 바라보게 되었고 객체 단위로 만들어지는 재사용 라이브러리나 모듈들로 인해서 기존 절차적 프로그래밍에 비해 훨씬 덩치를 키우기가 용이해졌습니다. - 그러나 객체지향은 언제나 복잡함이라는 것을 가지고 있는 개념이기에 Class와 Object만 쓴다고 나아지는 ..
- 독립된 객체를 조립해서 사용하는 방식은 레고와 같이 재사용이 가능한 객체들을 많이 만들어 놓는 것이 중요하다는 것을 알게 되고 객체의 재사용을 높이기 위해 OOP에는 아래와 같은 여러 개념들이 추가되게 됩니다. 외부에서 알 필요가 없는 것들은 숨겨 놓자 => 캡슐화 - 작은 문제를 해결하는 독립된 객체를 사용하게 되면서 객체의 모든 데이터에 접근을 해야하는 필요가 없다는 것을 깨닫게 되었습니다. - 내부의 데이터는 내부에서 알아서 조작할 수 있도록 하고 외부에서는 필요한 내용만 만들어 두는 것이 프로그램의 안정성과 사용성 측면에서 낫다는 것을 알게 됩니다. - 그래서 꼭 외부로 노출해야 되는 값과 내부에서만 사용하는 값을 구분하는 기능을 추가하도록 합니다. - 이를 데이터를 보호해주는 캡슐과 같은 것..
프롤로그 - 프로그래밍 세계에서 무언가를 학습하기 위해서는 그 이론 자체를 이해하기보다는 먼저 그 기술이 나오게 된 배경을 이해하는 것이 더 중요합니다. 그래야 새로운 변환점을 맞이했을 때 맥락에 맞게 내 것으로 만드는 것이 쉬워지기 때문입니다. - 프로그램 뿐 아니라 기술의 발전은 대략 다음과 같은 사이클로 돌아가게 됩니다. 1. 문제 인식 - 프로그램을 하다 보면 누구나 한 번쯤 겪을 법한 문제들이 쌓이기 시작하는 단계입니다. - 이 때 문제를 해결하기 위해 저마다 여러가지 해법들을 찾아보게 됩니다. 문제는 인식하여 공감대는 형성되었지만 이 문제를 해결하기 위한 최선의 방법은 아직 등장하지 않은 시기입니다. 2. 명명된 새로운 기술의 등장. - 여러가지 해법들이 쌓여가다 보면 모두가 합의할만한 이론이..
@types - 자바스크립트로 만들어진 써드 파티 라이브러리 ( jQuery, lodash, chart 등 )을 타입스크립트로 사용하기 위해서는 각 기능에 대한 타입이 정의되어 있어야 한다. // app.ts import $ from 'jquery'; $(document).ready(); - 위 코드는 작동하지 않는데 제이쿼리 라이브러리 내부에 타입에 대한 정의가 있지 않기 때문이다. 이 라이브러리를 들고와 사용할 때 타입스크립트 파일에서 타입 추론을 할 수 없기 때문에 @types 라는 라이브러리를 설치해 주어야 한다. - 대중적으로 사용되는 자바스크립트 라이브러리는 대부분 @types 라는 별칭으로 타입스크립트 추론이 가능한 보조 라이브러리를 제공하지만 이 라이브러리가 없는 경우 스스로 선언하는 방법..
3rd Party - 하드웨어 생산자와 소프트웨어 개발자의 관계를 나타낼 때 사용한다. 그 중 서드파티는 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자를 말한다. Ex ) 프로그래밍 개발과 개발자 사이에 플러그인, 라이브러리, 프레임워크 등을 서드파티로 볼 수 있다. 서비스와 사용자 사이에 서드파티는 응용 프로그램, 애플리케이션, 웹 서비스로 볼 수 있다. 개발자 측면 1. 하드웨어 생산자가 ' 직접 ' 소프트웨어를 개발하는 경우 : 퍼스트 파티 개발자. 2. 하드웨어 생산자인 기업과 자사간의 관계 ( 또는 하청업체 )에 속한 소프트웨어 개발자 : 세컨트 파티 개발자 3. 아무 관계 없는 제 3자 소프트 웨어 개발자 : 서드 파티 개발자 주로 편한 개발을 위해 플러그 인, 라이브러리, 프레임워크를..
이터레이터 vs 배열 const array = [1, 2, 3, 4]; const iterator = (() => { let num = 1; return { next: () => { return num > 4 ? { done: true } : { done: false, value: num++ }; }, }; })(); console.log(iterator.next()); // { done:false, value: 1 } console.log(array); // [1, 2, 3, 4] console.log(iterator.next()); // { done:false, value: 2 } - 이터레이터의 경우 생성하면 기본적으로 next 함수 하나만 있다고 생각하면 편하다. next 함수에는 done과 va..
유사 배열 vs 배열 - JavaScript의 유사 객체 배열은 배열처럼 보이지만 사실 key가 숫자이고 length 값을 가지고 있는 객체를 의미한다. // 유사 배열 const similarArray = { 0: "zero", 1: "one", 2: "two", length: 3, }; console.log(similarArray); // { '0': 'zero', '1': 'one', '2': 'two', '3': 'three', length: 3 } console.log(similarArray.length); // 3 // 배열 const arrr = [1, 2, 3]; console.log(arr); // [1, 2, 3] console.log(arr.length); // 3 - 배열같이 생겼지..
Internet vs WWW - 인터넷 !== WWW 인터넷 => TCP / IP 기반의 네트워크가 세계적으로 확대되어 연결된 네트워크들의 네트워크를 의미한다. 웹 => 웹은 HTML이라는 문서 형태와 HTTP라는 문저 전송 프로토콜, URL로 문서의 위치를 표시하는 시스템을 의미한다. 멀리 떨어진 사람에게 문서를 주고 받기 위해 만들어 졌다. ※ 웹보다 인터넷이 더 광범위한 범주이며, 인터넷으로 여러 기능들을 할 수 있지만 그 중에서 HTTP 프로토콜을 사용하여 소통하는 것이 웹이다! 웹과 인터넷의 차이 웹과 인터넷의 차이 인터넷은 웹( WWW = World Wide Web )이 아닙니다. 인터넷 TCP/IP 기반의 네트워크가 세계적으로 확대되어 연결된 네트워크들의 네트워크를..