728x90
반응형

분류 전체보기 155

[TIPS] JEST - 제스트, 테스트 All-in-one 패키지

Jest는 최근 많이 사용하는 테스트 패키지 ( 혹은 프레임워크 ) 이다. mocha, chai 에 대해 포스팅을 하려고 하다가, 최근에 jest에 대해 알게되어 toy problem을 준비할 겸, 한 번 연습해보았다. 이전에 코드스테이츠 프리코스 마지막 Hiring assessment에서 티리온 라니스터에게 굴욕을 겪었던 걸 떠올리며, 안될 때 내가 원하는 테스트 케이스를 기준으로 돌려보기 위해 jest를 사용해봤다. 여담으로 HA를 패스 못해서 인풋을 달라고 요청하였더니 그럴 순 없다는 답변을 받았다. 아마 언젠가는 스스로 테스트 툴을 학습하고 내가 생각하는 테스트 케이스로 테스트를 해보길 원했기 때문은 아닐까. ( 그랬다면 성공했다. ) Jest 제스트를 사용하기에 앞서, 설치를 하고 몇 가지 설정..

TIPS 2020.09.12

[Data Structure] Hash table - 해시테이블, 객체

해쉬테이블은 파이썬에서 사용하는 dictionary, 자바스크립트에서 사용하는 객체와 같다. string 형태의 key와 값을 받아 저장하고, key를 알고 있으면 O(1)의 시간복잡도로 value를 가져올 수 있는 엄청난 자료구조이다! 개념을 명확히 알면 나중에 응용할 때에 더욱 빛을 발하는 자료구조이니 반드시 알아두자. Hash function ( 해시 함수 ) 해시함수는 입력받는 key에 따라 특정 index를 반환하는 함수이다. 같은 key에 대해 항상 같은 index를 반환하여야 하고, 최대한 일관성을 유지하는 것이 좋다. 위의 해시함수는 문자열 'cat'이 입력되면 항상 1을 반환하고, 'dog'이 입력되면 2를 반환한다. 이렇게 반환된 index에 입력된 key, value 가 해시테이블에 ..

Algorithm 2020.09.12

20200911

IM 2주가 지났다. 점점 빡세지는 게 체감된다. 모르는 것도 많고, 알아야 할 건 더 많다. 그러다보니 다른 사람에게 이전만큼 시간을 할애해서 설명하거나 하는 게 쉽지않다. 내가 힘들다고 다른 사람을 힘들게 하면 안될텐데... 이번 주말 이용해서 다시 스스로를 다잡아야겠다. 9월 11일 (금) Today I Learned 오늘은 subclass dance party를 마무리했다. 간단한 html과 css를 이용해 이미지로 좀 있어보이게 만들었다 자식 클래스를 복붙하고 이름 바꾸고 약간의 가공작업을 더해 조금 더 있어보이게 만들었다. Tomorrow I'll Learn 오늘 건너뛴 스터디 몰아서 진행

Today I Learned 2020.09.11

[Algorithm] divide and conquer, quick sort - 분할정복, 퀵정렬

오늘은 분할정복과 퀵정렬에 대해 이야기를 해볼까 한다. 지난번 알고리즘에서 재귀함수를 설명했는데, 재귀함수야 말로 분할정복의 가장 대표적인 예이다. 문제를 base case와 recursive case로 나누어서 생각하고, 가장 최소 단위가 해결이 될 때 전체가 해결되도록 하기 때문이다. [ Hello Coding, 그림으로 개념을 이해하는 알고리즘 ]의 챕터 4에 나오는 내용으로 설명을 시작해본다 Divide and conquer ( 분할 정복 ) 한자로 번역이 되니까 어려워보인다. 조금 말을 쉽게하자면, "쪼개고 쪼개서 하나씩 해결하자" 이다. 아래의 그림은 책의 예제이다. 여러분이 농부이고, 위의 그림과 같은 농장을 가지고 있다고 가정한다. 이 농장을 똑같이 생긴 정사각형 토지로 나누고 싶습니다. ..

Algorithm 2020.09.11

[Data Structure] Linked List - 링크드 리스트 ( 연결 리스트 )

링크드 리스트는 기본적인 노드 개념을 처음으로 학습하게 되는 자료구조이다. 링크드 리스트는 하나의 노드가 자신의 값과 다음 노드를 가리키는 포인터, 이 두 가지만 가지고 있다. 따라서, 한 번 지나간 노드는 이전 노드로 돌아갈 수 없다는 게 포인트이다. Linked List ( 링크드 리스트 / 연결 리스트 ) 위에서 언급했고, 위 그림에서 볼 수 있듯이 가장 기본이 되는 개념은 노드이다. 하나의 노드는 value와 next 두가지로 이루어져 있다. class Node { constructor(value) { this.value = value; this.next = null; } } 링크드 리스트는 이 노드의 연결로 이루어진 자료구조이다. 이 노드의 next에 새로운 노드를 넣어줌으로써 노드간에 연결이 ..

Algorithm 2020.09.10

20200909

오늘은 좀 느긋한 하루를 보낼 수 있었다. 물론 내용은 느긋하지 않았지만 페어 프로그래밍이 일정에서 빠진 것만으로 시간을 조금 자유롭게 쓸 수 있다는 느낌을 받았다. 그럼에도 딴짓하느라 시간을 썼지만 ㅎㅎ 9월 09일 (수) Today I Learned 오늘은 OOP에 대해 공부하였다 객체 지향 프로그래밍은 역시 쉽지 않았다. 객체를 기준으로 상속이 이뤄지고, 클래스도 객체로 이해하니까 좀 더 접근이 쉬웠다. __proto__ 는 두고두고 익혀야겠다. Tomorrow I'll Learn 재훈님과 페어 프로그래밍

Today I Learned 2020.09.09

[JavaScript] OOP in JavaScript - 자바스크립트의 객체 지향 프로그래밍

OOP ( 객체 지향 프로그래밍 ) 은 말 그대로 객체 단위로 쪼개서 프로그래밍을 하자는 것이다. 어떤 이는 이 개념이 단순히 프로그램을 잘게 쪼개는 걸로 오해하여 너무 많은 클래스를 만들어서 협업하는 동료를 힘들게 하기도 한다고 한다. 자바스크립트에서는 너무나 많은 객체가 있다. 그래서 조금 다르게 표현하면 OOP를 이해하기 편할 거다. OOP in JavaScript ( 자바스크립트의 추상화 프로그래밍 ) 객체 지향 프로그래밍 이라는 말 자체가 Object Oriented Programming 을 직역한 거다. 좀 더 쉽게 이해하자면 그냥 현실 세계의 무언가를 추상화하여 부품단위로 쪼개 넣어준 뒤 하나로 합치듯 구성하는 것이다. 스마트폰을 예 들어 보자. 스마트폰을 구성하고 있는 보편적인, 공통적인 ..

JavaScript 2020.09.09

[Algorithm] Recursion - 재귀

Loops may achieve a performance gain for your program. Recursion may achieve a performance gain for your programmer. Choose which is more important in your situation! : 루프는 프로그램의 성능을 향상시킵니다. 재귀는 프로그래머의 실력을 향상시킵니다. 상황에 따라 더 적합한 걸 선택하세요! Recursion ( 재귀 ) 재귀는 반복문과 그 역할을 서로 바꿀 수 있다. 재귀를 쓰면 복잡한 코드가 조금 더 간결해보이는 효과를 나타낸다. 피보나치를 구현해보자. 반복문: const fib1 = (n) => { if ( n < 3 ) { return n === 0 ? 0 : 1; } ..

Algorithm 2020.09.08
728x90
반응형