본문 바로가기

분류 전체보기72

재귀(recursion)와 메모이제이션(Memoization) 오늘은 프리코스에서 이머시브로 넘어가는 과정 중에 진행했던 hiring assessment를 페어분과 함께 복습하는 시간을 가질 수 있었다. 그런데 내가 푼 방식이랑 페어분이 푼 방식이 달라 의문을 가졌는데 메모이제이션이라는 것을 들을 수 있었다. ✅ 재귀(recursion)란? 자기자신을 호출하는 함수 ✅ 메모이제이션(Memoization)란? 프로그래밍을 할 때 반복되는 결과를 메모리에 저장해서 다음에 같은 결과가 나올 때 빨리 실행하는 코딩 기법 바로 예시를 보자면 문제는 다음과 같았다. 나의 경우 function test6() { // 호출 될 때마다 다음 피보나치 수를 리턴하고 카운트를 저장한다. let count = 0; // 피보나치 수열 함수 function fibonacci(num) { .. 2021. 1. 13.
TIL_210112 📝 오늘 한 일 / 배운 것 🖋 KOANS koans라고 검색을 해보면 간화선이라고 한다. 이는 화두를 살펴 깨달음을 얻는 하나의 방편이라고 하는데...! (두둥탁!) 코드스테이츠가 추구하는 방향에 딱 맞는 단어라고 생각한다. 오늘은 화살표 함수, this키워드, apply call bind 메소드에 대해 공부했다. 하지만 단순히 주입식이 아닌 직접 문제를 풀어보고, 추가적으로 공부가 필요한 부분은 스스로 깨달을 수 있게 만들어진 koans! 코드스테이츠에서 날이 지날수록 힘은 많이 들지만, 그만큼 얻는 성취감은 배로 큰 것 같다. 아직 수료까지 몇 달이나 남았지만, 주도적인 공부를 통해 내 것을 만드는 습관을 기를것이다. 체력도 많이 필요할 것 같다.. 🙏 기억할 것 🖋 메소드 입력값이 있고, 그 입력.. 2021. 1. 13.
this ✅ this란? 함수 실행시 호출(invocation) 방법에 의해 결정되는 특별한 객체이다. this는 함수 실행시 결정이 되므로, 실행되는 맥락(execution context)에 따라 this는 다르게 결정된다. 모든 함수는 실행할 때마다 this라는 객체가 추가된다. arguments 객체와 함께 함수 내부로 암묵적으로 전달되는 것이다. 아무리 봐도 딱 한줄로 정의하기가 너무 어렵다. 이 말은 공부가 덜 되었다는 뜻! 우선 의식의 흐름대로 정리해보려고 한다. 함수 실행의 다섯가지 방법 함수 실행에는 다섯 가지 방법이 있다. 이때 this에게 있어서, '함수가 무엇인지?'가 중요한 것이 아니라, '어떻게 실행(호출)되는 것인지?'가 중요하기 때문에 함수 실행의 다섯가지 방법을 보도록 하자. 1. G.. 2021. 1. 12.
Destructuring (구조 분해 할당) 생각 오류 🌈 오늘의 교훈 정의를 잘 보자. 특히, 리턴 값이 어떤 형태인지! 구조 분해 할당을 아무 생각없이 예제를 볼 땐 넘어갔지만, 복습하다가 의문이 생겼다. const student = {grade: 'A', major: '기계공학과'}; const {major} = student; console.log(major); // '기계공학과' 이러한 결과가 나오는데 혼동이 생겼다. 객체를 destructuring하면 객체({major: '기계공학과'})가 나오는 줄 알았었다. 아주 큰 생각의 오류였다! 단지, 말 그대로 (객체라는)구조를 분해해서 (변수에)할당 하는 것..! const {major} = student 는 const major = '기계공학과' 와 같은 뜻이다. 단지 할당연산자(=) 왼쪽에는 (배열.. 2021. 1. 12.
관련 도구 (feat. NVM, NPM, package.json) ✅ NVM node.js의 버전관리를 위한 관리 매니저 프로그램 Node Version Manager의 약자로, 간단한 명령어로 node를 설치하고, 다양한 node version을 옮겨 다닐 수 있다. 우리가 node.js로 개발을 하다보면, 어떤 버전에서는 실행이 잘되는데 다른 버전에서는 오류가 발생할 수 있다. 그렇다면 우리는 오류가 발생한 node 버전을 설치하고 수정 ⬇ 이전 버전을 가기위해, 새로 설치한 node 버전을 지움 ⬇ 사용하던 node 버전을 다시 설치 아주 불편하다! 이를 해결해주는 것이 NVM이다. 굳이 node버전을 설치하고 지우고를 반복할 필요없이, 여러 node 버전을 옮겨 다니면서 작업을 할 수 있게 도와준다. 🖋 설치 및 사용 방법 1. NVM 설치 $ touch ~/... 2021. 1. 11.
Node.js ✅ Node.js란? 간단히 말하자면, JavaScript 런타임이다. 런타임은 어떤 프로그래밍 언어가 동작할 수 있는 프로그램을 뜻한다. 즉, Node.js는 자바스크립트를 구동시킬 수 있는 프로그램이란 뜻이다. 평소에 아무 생각없이 쓰고 있던 웹 브라우저(크롬, 파이어폭스 등..)도 런타임이다! Node.js 공식 사이트에서 내린 Node.js의 정의는 다음과 같다. Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생테계이기도 합니다. 그럼 왜 Node.js를 사용할까? 예전에는 자바.. 2021. 1. 11.
TIL_210111 📝 오늘 한 일 / 배운 것 🖋 JavaScript와 런타임 node.js immersive 과정을 시작하면서 처음 배우게 된 것이 node.js다. node.js는 JavaScript의 런타임 즉, JS를 구동할 수 있는 환경이다. 예를 들면, 웹 브라우저랑 같은 기능이다! 앞으로는 과제들을 node.js를 통해 테스트를 실행한다고 한다! 🖋 Git Workflow 지금까지 진행했던 과제들은 페어와 함께 진행했더라도 혼자서 코드를 짜고, 실행해보는 것이었다. 계산기 만들기, 유효성 검사, 클론 코딩 등.. 하지만 이제부턴 페어와 함께 정말로 협업을 진행할 것이고, 이를 위해 git을 이용한다고 한다. 프리코스에서는 코드스테이츠의 repository를 fork해와서 수정하고 add, commit, pus.. 2021. 1. 11.
ES6 문법 공부를 하면서 나도 모르게 편하게 사용되는 것들이, 알고보니 ES6이 도입되고나서부터 사용되는 것들이 정말 많았다. 아무 생각없이 사용하던 것들에 대해 복습 겸 공부 겸 개념정리 겸 es6 문법에 대해 정리를 해보려고 한다! ✅ ES6이란? ECMAScript 2015로도 알려져 있는 ECMAScript 6는 ECMAScript 표준의 가장 최신 버전이다. ES6는 새로운 언어 기능이 포함된 주요 업데이트이며, 2009년도에 표준화된 ES5 이후로 언어 기능에 대한 첫 업데이트라고 한다. 여기서 ECMAScript란? 자바스크립트 언어의 표준 규격을 의미 ES6은 새로운 기능들을 많이 추가했는데 이중에 자주 배웠던 것을 우선적으로 알아볼 것이다. ECMAScript 6 에 추가된 기능 let + cons.. 2021. 1. 9.
회원 가입 (feat. 유효성 검사) 유효성 검사(validation) 유효성 검사란, 간단히 말해 어떤 데이터의 값이 유효한지, 타당한지 확인하는 것을 의미한다. 평소에 아주 쉽게 접하는 회원 가입에서 유효성 검사를 이용한다고 한다. ID는 8 글자 이상(영문, 숫자만 포함) 비밀번호는 8 글자 이상(특수 문자, 영어, 숫자 3가지를 포함) 이메일은 꼭 이메일 형식(@를 꼭 입력!)과 같은 것들 등등.. 오늘은 지금까지 배웠던 HTML, CSS, JAVASCRIPT(+DOM)를 바탕으로 회원 가입 페이지를 만들면서 유효성 검사를 공부해보자. HTML, CSS로 UI구성(페이지 만들기) JAVASCRIPT로 유효성 함수 구현 UI 구성 요소에 함수 연결 조건을 만족하는 지 확인하는 피드백 추가 1. HTML,CSS로 UI구성(페이지 만들기).. 2021. 1. 9.
명령형 VS 선언형 프로그래밍 아직은 완벽한 개념을 이해하기 힘들어 간략하게만 정리해보려 한다. 이 사이트에서 설명을 잘해주는데 익숙하지가 않아 어렵게만 느껴진다 ㅠㅠ 이 사이트를 잘 번역해준 블로그를 많이 참고했다!(거의 복붙했다..) “You know, imperative programming is like how you do something, and declarative programming is more like what you do, or something.” 직역을 해보자면 명령형(imperative) 프로그래밍은 무엇을 어떻게 할 것인가에 가깝고, 선언형(declarative) 프로그래밍은 무엇을 할 것인가에 가깝다고 한다. 배우고 있는 자바스크립트 배열 예제를 통해 명령형 프로그래밍 방식과 선언형 프로그래밍 방식에 대.. 2021. 1. 8.
고차 함수_3 (feat. 추상화) ✅고차 함수란? 고차 함수(higher order function)는 함수를 인자(argument)로 받거나 함수를 리턴하는 함수를 말한다. 이 때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다. 그렇다면 우리는 왜 고차 함수를 사용해야 할까? ✅추상화(abstraction)란? 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것 즉, 요약 우리가 살면서 하는 지하철/버스 카드, 문자, 검색, 자동차 시동 걸기와 같은 모든 행동들은 단순해 보이지만 그 속에는 무수한 원인과 결과가 내포되어 있다. 하지만 우리는 신경쓸 필요가 없다. 왜냐하면 이러한 행동들은 전부 추상화의 결과이기 때문이다! 자바스크립트(외 많은 프로그래밍 언.. 2021. 1. 8.
고차 함수_2 (feat. 내장 고차 함수 filter, map) ✅고차 함수란? 고차 함수(higher order function)는 함수를 인자(argument)로 받거나 함수를 리턴하는 함수를 말한다. 이 때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다. 앞서 말했듯이 함수는 일급 객체라서 다음과 같은 특성을 갖는다. 변수에 할당(assignment)할 수 있다. 다른 함수의 인자(argument)로 전달될 수 있다. 다른 함수의 결과로서 리턴될 수 있다. 콜백 함수를 전달받은 함수는 이 콜백 함수를 호출(invoke)할 수 있다. caller는 조건에 따라 콜백 함수의 실행 여부를 결정할 수도 있고, 심지어 여러 번 실행할 수도 있다. 특히 콜백 함수는 어떤 작업이 완료되었을 때 호출되.. 2021. 1. 8.